[pkg-bacula-commits] [bacula] 01/01: Imported Upstream version 7.0.5

Carsten Leonhardt cl-guest at moszumanska.debian.org
Mon Jul 20 12:12:11 UTC 2015


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

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

commit 481637df11e34b98adcba1772babbe25541cc670
Author: Carsten Leonhardt <leo at debian.org>
Date:   Mon Jul 20 14:11:26 2015 +0200

    Imported Upstream version 7.0.5
    
    Changes from upstream:
    src/lib/sha1.{h,c}: (#658326) remove, DFSG-nonfree, RFC 3174
---
 .gitignore                                         |    35 +-
 ABOUT-NLS                                          |   986 -
 AUTHORS                                            |    45 +-
 ChangeLog                                          |   978 +-
 CheckList                                          |    61 -
 LICENSE                                            |   256 +-
 LICENSE-FAQ                                        |   116 +
 Makefile.in                                        |    45 +-
 README                                             |     2 +-
 ReleaseNotes                                       |  1613 +-
 autoconf/Make.common.in                            |    18 +-
 autoconf/aclocal.m4.save                           |     1 +
 autoconf/bacula-macros/db.m4                       |    70 +-
 autoconf/config.guess                              |   489 +-
 autoconf/config.h.in                               |    23 +-
 autoconf/config.h.in.save                          |  1152 -
 autoconf/config.sub                                |   292 +-
 autoconf/configure.in                              |   685 +-
 autoconf/gettext-macros/iconv.m4                   |     2 +-
 autoconf/gnome-macros/Makefile                     |   254 -
 autoconf/gnome-macros/Makefile.am                  |    42 -
 autoconf/gnome-macros/Makefile.in                  |   254 -
 autoconf/gnome-macros/aclocal-include.m4           |    16 -
 autoconf/gnome-macros/autogen.sh                   |   207 -
 autoconf/gnome-macros/compiler-flags.m4            |   109 -
 autoconf/gnome-macros/curses.m4                    |   318 -
 autoconf/gnome-macros/gnome-bonobo-check.m4        |   166 -
 autoconf/gnome-macros/gnome-common.m4              |    14 -
 autoconf/gnome-macros/gnome-fileutils.m4           |   414 -
 autoconf/gnome-macros/gnome-ghttp-check.m4         |    14 -
 autoconf/gnome-macros/gnome-gnorba-check.m4        |    35 -
 autoconf/gnome-macros/gnome-guile-checks.m4        |   134 -
 autoconf/gnome-macros/gnome-libgtop-check.m4       |   217 -
 autoconf/gnome-macros/gnome-objc-checks.m4         |    83 -
 autoconf/gnome-macros/gnome-orbit-check.m4         |    33 -
 autoconf/gnome-macros/gnome-print-check.m4         |    63 -
 autoconf/gnome-macros/gnome-pthread-check.m4       |    18 -
 autoconf/gnome-macros/gnome-support.m4             |    68 -
 autoconf/gnome-macros/gnome-undelfs.m4             |    22 -
 autoconf/gnome-macros/gnome-vfs.m4                 |   126 -
 autoconf/gnome-macros/gnome-x-checks.m4            |    80 -
 autoconf/gnome-macros/gnome-xml-check.m4           |    32 -
 autoconf/gnome-macros/gnome.m4                     |   130 -
 autoconf/gnome-macros/gperf-check.m4               |    79 -
 autoconf/gnome-macros/linger.m4                    |    28 -
 autoconf/gnome-macros/need-declaration.m4          |    42 -
 autoconf/install-sh                                |    35 +-
 autoconf/libtool/libtool.m4                        |   340 +-
 autoconf/libtool/ltdl.m4                           |    11 +-
 autoconf/libtool/ltoptions.m4                      |    19 +-
 autoconf/libtool/ltversion.m4                      |    10 +-
 autoconf/ltmain.sh                                 |   134 +-
 autoconf/who_and_what_of_libtool_patch             |    13 -
 code-changes                                       |     2 -
 configure                                          |  1157 +-
 examples/conf/defaultconfig                        |     1 -
 examples/conf/gnome-console.conf                   |    10 -
 examples/conf/kernsconfig                          |     1 -
 examples/nagios/check_bacula/Makefile.in           |     2 +-
 examples/nagios/check_bacula/authenticate.c        |    26 +-
 examples/nagios/check_bacula/check_bacula.c        |   258 +-
 examples/python/DirStartUp.py                      |   102 -
 examples/python/FDStartUp.py                       |    74 -
 examples/python/SDStartUp.py                       |    56 -
 manpages/Makefile.in                               |     6 +-
 manpages/bacula-bgnome-console.1                   |    45 -
 manpages/bacula-bwxconsole.1                       |    45 -
 manpages/bacula-dir.8                              |     5 +-
 manpages/bacula-fd.8                               |     8 +-
 manpages/bacula-sd.8                               |     3 +
 manpages/bacula-tray-monitor.1                     |     4 +-
 manpages/bacula.8                                  |     6 +-
 manpages/bconsole.8                                |    11 +-
 manpages/bcopy.8                                   |     8 +-
 manpages/bextract.8                                |     4 +-
 manpages/bls.8                                     |     6 +-
 manpages/bpluginfo.8                               |    10 +-
 manpages/bregex.8                                  |     8 +-
 manpages/bscan.8                                   |    12 +-
 manpages/btape.8                                   |     9 +-
 manpages/btraceback.8                              |     6 +-
 platforms/rpms/redhat/bacula-bat.spec.in           |    74 +-
 platforms/rpms/redhat/bacula-docs.spec.in          |     4 +-
 platforms/rpms/redhat/bacula-mtx.spec.in           |    14 +-
 platforms/rpms/redhat/bacula.spec.in               |   629 +-
 platforms/rpms/{redhat => suse}/bacula-bat.spec.in |    78 +-
 .../rpms/{redhat => suse}/bacula-docs.spec.in      |     4 +-
 platforms/rpms/{redhat => suse}/bacula-mtx.spec.in |    14 +-
 platforms/rpms/{redhat => suse}/bacula.spec.in     |   606 +-
 po/Makefile.in.in                                  |     4 +-
 po/POTFILES.in                                     |   751 +-
 po/bacula.pot                                      | 18018 +-----------
 po/de.po                                           | 20877 +++-----------
 po/es.po                                           | 27241 ++++++++-----------
 po/es_AR.po                                        |  1674 +-
 po/fi.po                                           |  1659 +-
 po/fr.po                                           | 23216 +++++-----------
 po/it.po                                           |  1650 +-
 po/nl.po                                           | 18643 +------------
 po/pl.po                                           |  1338 +-
 po/sv.po                                           | 18020 +-----------
 po/uk.po                                           | 19059 +------------
 projects                                           |  1292 -
 release/config                                     |    35 +-
 release/makeall                                    |    17 -
 release/makedocsonly                               |    56 +
 release/makedocsrel                                |     7 +-
 release/makewinrel                                 |    69 -
 release/package-list                               |     8 +
 release/pushtags                                   |    25 +-
 scripts/Makefile.in                                |     6 +-
 scripts/bacula-tray-monitor.desktop.in             |    10 -
 scripts/bacula.desktop.gnome1.consolehelper.in     |    10 -
 scripts/bacula.desktop.gnome1.in                   |    10 -
 scripts/bacula.desktop.gnome1.xsu.in               |    10 -
 scripts/bacula.desktop.gnome2.consolehelper.in     |    10 -
 scripts/bacula.desktop.gnome2.in                   |    10 -
 scripts/bacula.desktop.gnome2.xsu.in               |    10 -
 scripts/defaultconfig                              |     1 -
 scripts/disk-changer.in                            |   277 +-
 scripts/mtx-changer.in                             |   125 +-
 scripts/set-gnome1.4                               |    18 -
 scripts/set-gnome2                                 |    16 -
 scripts/wxconsole.console_apps.in                  |     3 -
 scripts/wxconsole.desktop.consolehelper.in         |    10 -
 scripts/wxconsole.desktop.xsu.in                   |    10 -
 scripts/wxconsole.pamd                             |     7 -
 src/baconfig.h                                     |    85 +-
 src/bacula.h                                       |    44 +-
 src/bc_types.h                                     |    32 +-
 src/c                                              |    27 +-
 src/c.scr                                          |     8 -
 src/cats/bdb_dbi.h                                 |    80 -
 src/cats/bdb_ingres.h                              |    76 -
 src/cats/bdb_mysql.h                               |    27 +-
 src/cats/bdb_postgresql.h                          |    27 +-
 src/cats/bdb_priv.h                                |    29 +-
 src/cats/bdb_sqlite.h                              |    31 +-
 src/cats/bvfs.c                                    |   450 +-
 src/cats/bvfs.h                                    |   117 +-
 src/cats/cats.c                                    |    46 +-
 src/cats/cats.h                                    |    35 +-
 src/cats/cats_dummy.c                              |    34 +-
 src/cats/create_bacula_database.in                 |    15 +
 src/cats/create_ingres_database.in                 |    32 -
 src/cats/create_mysql_database.in                  |    15 +
 src/cats/create_postgresql_database.in             |    17 +-
 src/cats/create_sqlite3_database.in                |    15 +
 src/cats/dbi.c                                     |  1490 -
 src/cats/delete_catalog_backup.in                  |    15 +
 src/cats/drop_bacula_database.in                   |    15 +
 src/cats/drop_bacula_tables.in                     |    15 +
 src/cats/drop_ingres_database.in                   |    17 -
 src/cats/drop_ingres_tables.in                     |    63 -
 src/cats/drop_mysql_database.in                    |    15 +
 src/cats/drop_mysql_tables.in                      |    15 +
 src/cats/drop_postgresql_database.in               |    15 +
 src/cats/drop_postgresql_tables.in                 |    15 +
 src/cats/drop_sqlite3_database.in                  |    15 +
 src/cats/drop_sqlite3_tables.in                    |    15 +
 src/cats/grant_bacula_privileges.in                |    15 +
 src/cats/grant_ingres_privileges.in                |    72 -
 src/cats/grant_mysql_privileges.in                 |    15 +
 src/cats/grant_postgresql_privileges.in            |    15 +
 src/cats/grant_sqlite3_privileges.in               |    15 +
 src/cats/ingres.c                                  |  1113 -
 src/cats/ingres.in                                 |     8 -
 src/cats/install-default-backend.in                |    18 +-
 src/cats/make_bacula_tables.in                     |    15 +
 src/cats/make_catalog_backup.in                    |    15 +
 src/cats/make_catalog_backup.in.patch              |    12 -
 src/cats/make_catalog_backup.pl.in                 |    35 +-
 src/cats/make_ingres_catalog_backup.in             |    67 -
 src/cats/make_ingres_tables.in                     |   508 -
 src/cats/make_mysql_tables.in                      |    15 +
 src/cats/make_postgresql_tables.in                 |    17 +-
 src/cats/make_sqlite3_tables.in                    |    15 +
 src/cats/myingres.c                                |   912 -
 src/cats/myingres.h                                |    97 -
 src/cats/myingres.sc                               |   854 -
 src/cats/myingres.sh                               |   109 -
 src/cats/mysql.c                                   |    42 +-
 src/cats/mysql.in                                  |    15 +
 src/cats/postgresql.c                              |   107 +-
 src/cats/postgresql.in                             |    15 +
 src/cats/protos.h                                  |    41 +-
 src/cats/restore_ingres_catalog_backup.in          |    52 -
 src/cats/sql.c                                     |    63 +-
 src/cats/sql_cmds.c                                |   292 +-
 src/cats/sql_cmds.h                                |   115 +-
 src/cats/sql_create.c                              |   125 +-
 src/cats/sql_delete.c                              |    45 +-
 src/cats/sql_find.c                                |    55 +-
 src/cats/sql_get.c                                 |   152 +-
 src/cats/sql_glue.c                                |    35 +-
 src/cats/sql_glue.h                                |    31 +-
 src/cats/sql_list.c                                |    71 +-
 src/cats/sql_update.c                              |    89 +-
 src/cats/sqlite.c                                  |    57 +-
 src/cats/sqlite.in                                 |    15 +
 src/cats/update_bacula_tables.in                   |    15 +
 src/cats/update_ingres_tables.in                   |    12 -
 src/cats/update_mysql_tables.in                    |    16 +
 src/cats/update_postgresql_tables.in               |    16 +
 src/cats/update_sqlite3_tables.in                  |    16 +
 src/ch.h                                           |    26 +-
 src/cl                                             |    28 -
 src/console/authenticate.c                         |    49 +-
 src/console/conio.c                                |    44 +-
 src/console/conio.h                                |    26 +-
 src/console/console.c                              |   131 +-
 src/console/console_conf.c                         |    33 +-
 src/console/console_conf.h                         |    26 +-
 src/count-lines                                    |     9 -
 src/dird/Makefile.in                               |    20 +-
 src/dird/admin.c                                   |    26 +-
 src/dird/authenticate.c                            |    81 +-
 src/dird/autoprune.c                               |    52 +-
 src/dird/backup.c                                  |   375 +-
 src/dird/bacula-dir.conf.in                        |   112 +-
 src/dird/bsr.c                                     |    47 +-
 src/dird/bsr.h                                     |    26 +-
 src/dird/catreq.c                                  |   163 +-
 src/dird/dir_plugins.c                             |    50 +-
 src/dird/dir_plugins.h                             |    68 +-
 src/dird/dird.c                                    |   103 +-
 src/dird/dird.h                                    |    41 +-
 src/dird/dird_conf.c                               |   124 +-
 src/dird/dird_conf.h                               |    58 +-
 src/dird/expand.c                                  |    26 +-
 src/dird/fd_cmds.c                                 |   146 +-
 src/dird/getmsg.c                                  |    58 +-
 src/dird/inc_conf.c                                |    29 +-
 src/dird/job.c                                     |   414 +-
 src/dird/jobq.c                                    |    98 +-
 src/dird/jobq.h                                    |    26 +-
 src/dird/mac.c                                     |   893 +
 src/dird/mac_sql.c                                 |   760 +
 src/dird/migrate.c                                 |  1441 -
 src/dird/mountreq.c                                |    26 +-
 src/dird/msgchan.c                                 |   148 +-
 src/dird/newvol.c                                  |    38 +-
 src/dird/next_vol.c                                |    82 +-
 src/dird/protos.h                                  |    70 +-
 src/dird/pythondir.c                               |   484 -
 src/dird/recycle.c                                 |    26 +-
 src/dird/restore.c                                 |   166 +-
 src/dird/run_conf.c                                |    82 +-
 src/dird/scheduler.c                               |    97 +-
 src/dird/ua.h                                      |    35 +-
 src/dird/ua_acl.c                                  |    51 +-
 src/dird/ua_cmds.c                                 |   555 +-
 src/dird/ua_dotcmds.c                              |   470 +-
 src/dird/ua_input.c                                |    70 +-
 src/dird/ua_label.c                                |   106 +-
 src/dird/ua_output.c                               |    75 +-
 src/dird/ua_prune.c                                |   184 +-
 src/dird/ua_purge.c                                |   157 +-
 src/dird/ua_query.c                                |    28 +-
 src/dird/ua_restore.c                              |   184 +-
 src/dird/ua_run.c                                  |   951 +-
 src/dird/ua_select.c                               |   411 +-
 src/dird/ua_server.c                               |    40 +-
 src/dird/ua_status.c                               |   350 +-
 src/dird/ua_tree.c                                 |   132 +-
 src/dird/ua_update.c                               |    71 +-
 src/dird/vbackup.c                                 |   167 +-
 src/dird/verify.c                                  |    92 +-
 src/filed/Makefile.in                              |    37 +-
 src/filed/accurate.c                               |    82 +-
 src/filed/acl.c                                    |    66 +-
 src/filed/acl.h                                    |    26 +-
 src/filed/authenticate.c                           |    92 +-
 src/filed/backup.c                                 |   155 +-
 src/filed/bacula-fd.conf.in                        |     1 +
 src/filed/estimate.c                               |    31 +-
 src/filed/fd_plugins.c                             |   140 +-
 src/filed/fd_plugins.h                             |    62 +-
 src/filed/filed.c                                  |   186 +-
 src/filed/filed.h                                  |    36 +-
 src/filed/filed_conf.c                             |   126 +-
 src/filed/filed_conf.h                             |    36 +-
 src/filed/heartbeat.c                              |    56 +-
 src/filed/job.c                                    |   813 +-
 src/filed/protos.h                                 |    30 +-
 src/filed/pythonfd.c                               |   271 -
 src/filed/restore.c                                |   184 +-
 src/filed/restore.h                                |    24 +-
 src/filed/status.c                                 |   375 +-
 src/filed/verify.c                                 |    38 +-
 src/filed/verify_vol.c                             |    62 +-
 src/filed/xattr.c                                  |    39 +-
 src/filed/xattr.h                                  |    26 +-
 src/fileopts.h                                     |    30 +-
 src/filetypes.h                                    |    28 +-
 src/findlib/Makefile.in                            |     5 +-
 src/findlib/bfile.c                                |   572 +-
 src/findlib/bfile.h                                |    43 +-
 src/findlib/drivetype.c                            |    26 +-
 src/findlib/enable_priv.c                          |   167 -
 src/findlib/{attribs.c => file_attrs.c}            |   437 +-
 src/findlib/{create_file.c => file_create.c}       |    77 +-
 src/findlib/find.c                                 |    83 +-
 src/findlib/find.h                                 |    26 +-
 src/findlib/find_one.c                             |   106 +-
 src/findlib/fstype.c                               |    26 +-
 src/findlib/{mkpath.c => makepath.c}               |    50 +-
 src/findlib/match.c                                |    58 +-
 .../tray-monitor.h => findlib/priv.c}              |    36 +-
 src/findlib/protos.h                               |    30 +-
 src/findlib/savecwd.c                              |   129 -
 src/findlib/savecwd.h                              |    51 -
 src/findlib/testresults.txt                        |    44 -
 src/gcc-Wall                                       |    40 -
 src/host.h.in                                      |    24 +-
 src/jcr.h                                          |    72 +-
 src/lib/Makefile.in                                |    41 +-
 src/lib/address_conf.c                             |   210 +-
 src/lib/address_conf.h                             |    29 +-
 src/lib/alist.c                                    |    26 +-
 src/lib/alist.h                                    |    42 +-
 src/lib/attr.c                                     |    42 +-
 src/lib/attr.h                                     |    26 +-
 src/lib/base64.c                                   |    28 +-
 src/lib/base64.h                                   |    26 +-
 src/lib/berrno.c                                   |    32 +-
 src/lib/berrno.h                                   |    29 +-
 src/lib/bget_msg.c                                 |    28 +-
 src/lib/binflate.c                                 |    31 +-
 src/lib/bits.h                                     |    41 +-
 src/lib/bnet.c                                     |   340 +-
 src/lib/bnet_server.c                              |    95 +-
 src/lib/bpipe.c                                    |    56 +-
 src/lib/bpipe.h                                    |    26 +-
 src/lib/breg.c                                     |    87 +-
 src/lib/breg.h                                     |    44 +-
 src/lib/bregex.c                                   |    40 +-
 src/lib/bregex.h                                   |    43 +-
 src/lib/bsnprintf.c                                |    63 +-
 src/lib/bsock.c                                    |   309 +-
 src/lib/bsock.h                                    |   106 +-
 src/lib/bsys.c                                     |   153 +-
 src/lib/btime.c                                    |    74 +-
 src/lib/btime.h                                    |    41 +-
 src/lib/btimers.c                                  |    28 +-
 src/lib/btimers.h                                  |    26 +-
 src/lib/cram-md5.c                                 |    43 +-
 src/lib/crc32.c                                    |    26 +-
 src/lib/crypto.c                                   |    54 +-
 src/lib/crypto.h                                   |    35 +-
 src/lib/daemon.c                                   |    27 +-
 src/lib/devlock.c                                  |    34 +-
 src/lib/devlock.h                                  |    30 +-
 src/lib/dlist.c                                    |    31 +-
 src/lib/dlist.h                                    |    36 +-
 src/lib/edit.c                                     |    44 +-
 src/lib/fnmatch.c                                  |    10 +-
 src/lib/fnmatch.h                                  |     1 -
 src/lib/gconsole                                   |     8 -
 src/lib/guid_to_name.c                             |    36 +-
 src/lib/guid_to_name.h                             |    30 +-
 src/lib/hmac.c                                     |    43 +-
 src/lib/htable.c                                   |    42 +-
 src/lib/htable.h                                   |    26 +-
 src/lib/ini.c                                      |    87 +-
 src/lib/ini.h                                      |    53 +-
 src/lib/jcr.c                                      |   126 +-
 src/lib/lex.c                                      |    54 +-
 src/lib/lex.h                                      |    32 +-
 src/lib/lib.h                                      |    26 +-
 src/lib/lockmgr.c                                  |   368 +-
 src/lib/lockmgr.h                                  |    70 +-
 src/lib/md5.c                                      |    38 +-
 src/lib/md5.h                                      |    26 +-
 src/lib/mem_pool.c                                 |    47 +-
 src/lib/mem_pool.h                                 |    26 +-
 src/lib/message.c                                  |   279 +-
 src/lib/message.h                                  |    72 +-
 src/lib/mntent_cache.c                             |    26 +-
 src/lib/mntent_cache.h                             |    26 +-
 src/lib/mutex_list.h                               |    41 +-
 src/lib/openssl.c                                  |    32 +-
 src/lib/openssl.h                                  |    26 +-
 src/lib/parse_conf.c                               |    54 +-
 src/lib/parse_conf.h                               |    34 +-
 src/lib/plugins.c                                  |    58 +-
 src/lib/plugins.h                                  |    40 +-
 src/lib/priv.c                                     |    30 +-
 src/lib/protos.h                                   |    74 +-
 src/lib/pythonlib.c                                |   358 -
 src/lib/pythonlib.h                                |    60 -
 src/lib/queue.c                                    |    26 +-
 src/lib/queue.h                                    |    26 +-
 src/lib/rblist.c                                   |    52 +-
 src/lib/rblist.h                                   |    26 +-
 src/lib/res.c                                      |    30 +-
 src/lib/runscript.c                                |    52 +-
 src/lib/runscript.h                                |    40 +-
 src/lib/rwlock.c                                   |    28 +-
 src/lib/rwlock.h                                   |    26 +-
 src/lib/scan.c                                     |    38 +-
 src/lib/sellist.c                                  |   235 +-
 src/lib/sellist.h                                  |    54 +-
 src/lib/serial.c                                   |    30 +-
 src/lib/serial.h                                   |    34 +-
 src/lib/signal.c                                   |    65 +-
 src/lib/smartall.c                                 |    46 +-
 src/lib/smartall.h                                 |    30 +-
 src/lib/status.h                                   |   202 +-
 src/lib/tls.c                                      |    72 +-
 src/lib/tls.h                                      |    28 +-
 src/lib/tree.c                                     |    33 +-
 src/lib/tree.h                                     |    38 +-
 src/lib/util.c                                     |    37 +-
 src/lib/var.c                                      |    30 +-
 src/lib/var.h                                      |    26 +-
 src/lib/waitq.h                                    |    26 +-
 src/lib/watchdog.c                                 |    32 +-
 src/lib/watchdog.h                                 |    26 +-
 src/lib/workq.c                                    |    35 +-
 src/lib/workq.h                                    |    26 +-
 src/plugins/dir/Makefile.in                        |     5 +-
 src/plugins/dir/example-plugin-dir.c               |    32 +-
 src/plugins/fd/Makefile.in                         |     3 +-
 src/plugins/fd/bpipe-fd.c                          |    90 +-
 src/plugins/fd/example-plugin-fd.c                 |    30 +-
 src/plugins/fd/fd_common.h                         |    32 +-
 src/plugins/fd/test-deltaseq-fd.c                  |    64 +-
 src/plugins/fd/test-plugin-fd.c                    |    62 +-
 src/plugins/sd/Makefile.in                         |    10 +-
 src/plugins/sd/example-plugin-sd.c                 |    48 +-
 src/plugins/sd/main.c                              |    40 +-
 src/qt-console/README                              |    10 +-
 src/qt-console/bat.h                               |    26 +-
 src/qt-console/bat_conf.cpp                        |    32 +-
 src/qt-console/bat_conf.h                          |    29 +-
 src/qt-console/bcomm/dircomm.cpp                   |   120 +-
 src/qt-console/bcomm/dircomm.h                     |    32 +-
 src/qt-console/bcomm/dircomm_auth.cpp              |    58 +-
 src/qt-console/clients/clients.cpp                 |    40 +-
 src/qt-console/clients/clients.h                   |    28 +-
 src/qt-console/console/console.cpp                 |    74 +-
 src/qt-console/console/console.h                   |    32 +-
 src/qt-console/fileset/fileset.cpp                 |    44 +-
 src/qt-console/fileset/fileset.h                   |    28 +-
 src/qt-console/help/help.cpp                       |    28 +-
 src/qt-console/help/help.h                         |    32 +-
 src/qt-console/job/job.cpp                         |    92 +-
 src/qt-console/job/job.h                           |    28 +-
 src/qt-console/jobgraphs/jobplot.cpp               |    50 +-
 src/qt-console/jobgraphs/jobplot.h                 |    30 +-
 src/qt-console/joblist/joblist.cpp                 |    42 +-
 src/qt-console/joblist/joblist.h                   |    30 +-
 src/qt-console/joblog/joblog.cpp                   |    52 +-
 src/qt-console/joblog/joblog.h                     |    28 +-
 src/qt-console/jobs/jobs.cpp                       |    51 +-
 src/qt-console/jobs/jobs.h                         |    28 +-
 src/qt-console/label/label.cpp                     |    30 +-
 src/qt-console/label/label.h                       |    30 +-
 src/qt-console/main.cpp                            |    39 +-
 src/qt-console/mainwin.cpp                         |    77 +-
 src/qt-console/mainwin.h                           |    34 +-
 src/qt-console/mediaedit/mediaedit.cpp             |    38 +-
 src/qt-console/mediaedit/mediaedit.h               |    28 +-
 src/qt-console/mediainfo/mediainfo.cpp             |    46 +-
 src/qt-console/mediainfo/mediainfo.h               |    28 +-
 src/qt-console/medialist/medialist.cpp             |    66 +-
 src/qt-console/medialist/medialist.h               |    28 +-
 src/qt-console/medialist/mediaview.cpp             |    68 +-
 src/qt-console/medialist/mediaview.h               |    28 +-
 src/qt-console/mount/mount.cpp                     |    30 +-
 src/qt-console/mount/mount.h                       |    30 +-
 src/qt-console/pages.cpp                           |    44 +-
 src/qt-console/pages.h                             |    28 +-
 src/qt-console/relabel/relabel.cpp                 |    30 +-
 src/qt-console/relabel/relabel.h                   |    30 +-
 src/qt-console/restore/brestore.cpp                |    62 +-
 src/qt-console/restore/prerestore.cpp              |    38 +-
 src/qt-console/restore/restore.cpp                 |    56 +-
 src/qt-console/restore/restore.h                   |    40 +-
 src/qt-console/restore/restoretree.cpp             |    76 +-
 src/qt-console/restore/restoretree.h               |    30 +-
 src/qt-console/run/estimate.cpp                    |    32 +-
 src/qt-console/run/prune.cpp                       |    30 +-
 src/qt-console/run/run.cpp                         |    40 +-
 src/qt-console/run/run.h                           |    36 +-
 src/qt-console/run/runcmd.cpp                      |    38 +-
 src/qt-console/select/select.cpp                   |    28 +-
 src/qt-console/select/select.h                     |    19 +-
 src/qt-console/select/textinput.cpp                |    30 +-
 src/qt-console/select/textinput.h                  |    17 +-
 src/qt-console/status/clientstat.cpp               |    28 +-
 src/qt-console/status/clientstat.h                 |    28 +-
 src/qt-console/status/dirstat.cpp                  |    34 +-
 src/qt-console/status/dirstat.h                    |    28 +-
 src/qt-console/status/storstat.cpp                 |    36 +-
 src/qt-console/status/storstat.h                   |    28 +-
 src/qt-console/storage/content.cpp                 |    58 +-
 src/qt-console/storage/content.h                   |    28 +-
 src/qt-console/storage/storage.cpp                 |    58 +-
 src/qt-console/storage/storage.h                   |    28 +-
 src/qt-console/tray-monitor/authenticate.cpp       |    30 +-
 src/qt-console/tray-monitor/tray-monitor.cpp       |    57 +-
 src/qt-console/tray-monitor/tray-monitor.h         |    30 +-
 src/qt-console/tray-monitor/tray-ui.h              |    53 +-
 src/qt-console/tray-monitor/tray_conf.cpp          |    28 +-
 src/qt-console/tray-monitor/tray_conf.h            |    26 +-
 src/qt-console/util/comboutil.cpp                  |    26 +-
 src/qt-console/util/comboutil.h                    |    28 +-
 src/qt-console/util/fmtwidgetitem.cpp              |    64 +-
 src/qt-console/util/fmtwidgetitem.h                |    42 +-
 src/stored/Makefile.in                             |    92 +-
 src/stored/acquire.c                               |   306 +-
 src/stored/ansi_label.c                            |    51 +-
 src/stored/append.c                                |   107 +-
 src/stored/askdir.c                                |   198 +-
 src/stored/authenticate.c                          |   189 +-
 src/stored/autochanger.c                           |   257 +-
 src/stored/bacula-sd.conf.in                       |   127 +-
 src/stored/bcopy.c                                 |    42 +-
 src/stored/bextract.c                              |    41 +-
 src/stored/block.c                                 |   881 +-
 src/stored/block.h                                 |    54 +-
 src/stored/block_util.c                            |   674 +
 src/stored/bls.c                                   |    67 +-
 src/stored/bscan.c                                 |    96 +-
 src/stored/bsr.h                                   |    26 +-
 src/stored/btape.c                                 |   140 +-
 src/stored/butil.c                                 |    71 +-
 src/stored/dev.c                                   |  1939 +-
 src/stored/dev.h                                   |   240 +-
 src/stored/device.c                                |   204 +-
 src/stored/dircmd.c                                |   349 +-
 src/stored/dvd.c                                   |   825 -
 src/stored/ebcdic.c                                |    30 +-
 src/stored/fd_cmds.c                               |   122 +-
 src/stored/file_dev.c                              |   384 +
 src/stored/file_dev.h                              |    30 +
 src/stored/job.c                                   |   213 +-
 src/stored/label.c                                 |   450 +-
 src/stored/lock.c                                  |   329 +-
 src/stored/lock.h                                  |    88 +-
 src/stored/match_bsr.c                             |    48 +-
 src/stored/mount.c                                 |   274 +-
 src/stored/os.c                                    |   415 +
 src/stored/parse_bsr.c                             |   609 +-
 src/stored/protos.h                                |   120 +-
 src/stored/pythonsd.c                              |   282 -
 src/stored/read.c                                  |   191 +-
 src/stored/{read_record.c => read_records.c}       |    55 +-
 src/stored/record.c                                |    28 +-
 src/stored/record.h                                |    47 +-
 src/stored/record_read.c                           |   273 +
 src/stored/record_util.c                           |   295 +
 src/stored/record_write.c                          |   353 +
 src/stored/reserve.c                               |   477 +-
 src/stored/reserve.h                               |    29 +-
 src/stored/scan.c                                  |    40 +-
 src/stored/sd_plugins.c                            |   121 +-
 src/stored/sd_plugins.h                            |    97 +-
 src/stored/spool.c                                 |   166 +-
 src/stored/status.c                                |   253 +-
 src/stored/stored.c                                |    61 +-
 src/stored/stored.h                                |    51 +-
 src/stored/stored_conf.c                           |    53 +-
 src/stored/stored_conf.h                           |    37 +-
 src/stored/tape_dev.c                              |  1000 +
 src/stored/tape_dev.h                              |    39 +
 src/stored/{mac.c => vbackup.c}                    |   109 +-
 src/stored/vol_mgr.c                               |   227 +-
 src/stored/vol_mgr.h                               |    32 +-
 src/stored/{vtape.c => vtape_dev.c}                |   175 +-
 src/stored/{vtape.h => vtape_dev.h}                |    48 +-
 src/stored/wait.c                                  |   101 +-
 src/streams.h                                      |    28 +-
 src/tabs                                           |     5 -
 src/tools/Makefile.in                              |    22 +-
 src/tools/assert_macro.h                           |    28 +-
 src/tools/bbatch.c                                 |    48 +-
 src/tools/bpluginfo.c                              |    48 +-
 src/tools/bregex.c                                 |    28 +-
 src/tools/bregtest.c                               |    48 +-
 src/tools/bsmtp.c                                  |    47 +-
 src/tools/bvfs_test.c                              |    40 +-
 src/tools/bwild.c                                  |    30 +-
 src/tools/cats_test.c                              |    72 +-
 src/tools/dbcheck.c                                |    36 +-
 src/tools/drivetype.c                              |    32 +-
 src/tools/fstype.c                                 |    30 +-
 src/tools/ing_test.c                               |    34 +-
 src/tools/testfind.c                               |    35 +-
 src/tools/testls.c                                 |    29 +-
 src/tray-monitor/Makefile.in                       |   107 -
 src/tray-monitor/TODO                              |     3 -
 src/tray-monitor/authenticate.c                    |   202 -
 src/tray-monitor/generic.xpm                       |    45 -
 src/tray-monitor/tray-monitor.c                    |  1187 -
 src/tray-monitor/tray-monitor.conf.in              |    29 -
 src/tray-monitor/tray_conf.c                       |   388 -
 src/tray-monitor/tray_conf.h                       |   129 -
 src/version.h                                      |    59 +-
 src/win32/External-mingw-w64                       |    72 -
 src/win32/External-mingw32                         |    71 -
 src/win32/External-msvc                            |    59 -
 src/win32/Makefile                                 |   127 -
 src/win32/Makefile.full                            |   109 -
 src/win32/Makefile.inc.in                          |   129 -
 src/win32/Makefile.rules                           |    76 -
 src/win32/Makefile.template                        |    74 -
 src/win32/README.mingw                             |   349 -
 src/win32/README.vc8                               |   246 -
 src/win32/bacula.sln                               |   403 -
 src/win32/bacula/bacula.vcproj                     |   225 -
 src/win32/build-cross-mingw-w64                    |   134 -
 src/win32/build-depkgs-mingw-w64                   |   298 -
 src/win32/build-depkgs-mingw32                     |   564 -
 src/win32/build-depkgs-msvc.cmd                    |   419 -
 src/win32/build-msvc.cmd                           |     7 -
 src/win32/build-win32-cross-tools                  |   554 -
 src/win32/cats/Makefile                            |   104 -
 src/win32/cats/bacula_cats.def                     |   184 -
 src/win32/cats/bacula_cats/bacula_cats.vcproj      |    94 -
 src/win32/cats/cats_mysql/cats_mysql.vcproj        |   428 -
 .../cats/cats_postgresql/cats_postgresql.vcproj    |   432 -
 src/win32/cats/cats_sqlite3/cats_sqlite3.vcproj    |   421 -
 src/win32/cats/create_mysql_database.cmd           |    14 -
 src/win32/cats/create_postgresql_database.cmd      |    23 -
 src/win32/cats/create_postgresql_database.sql      |     2 -
 src/win32/cats/create_sqlite3_database.cmd         |     6 -
 src/win32/cats/delete_catalog_backup.cmd           |     5 -
 src/win32/cats/drop_mysql_database.cmd             |    14 -
 src/win32/cats/drop_mysql_tables.cmd               |    14 -
 src/win32/cats/drop_mysql_tables.sql               |    26 -
 src/win32/cats/drop_postgresql_database.cmd        |    14 -
 src/win32/cats/drop_postgresql_tables.cmd          |    14 -
 src/win32/cats/drop_postgresql_tables.sql          |    22 -
 src/win32/cats/drop_sqlite3_database.cmd           |     7 -
 src/win32/cats/drop_sqlite3_tables.cmd             |     8 -
 src/win32/cats/grant_mysql_privileges.cmd          |    14 -
 src/win32/cats/grant_mysql_privileges.sql          |     5 -
 src/win32/cats/grant_postgresql_privileges.cmd     |    15 -
 src/win32/cats/grant_postgresql_privileges.sql     |    37 -
 src/win32/cats/grant_sqlite3_privileges.cmd        |     7 -
 src/win32/cats/make_def                            |    79 -
 src/win32/cats/make_mysql_catalog_backup.cmd       |    41 -
 src/win32/cats/make_mysql_tables.cmd               |    14 -
 src/win32/cats/make_mysql_tables.sql               |   357 -
 src/win32/cats/make_postgresql_catalog_backup.cmd  |    41 -
 src/win32/cats/make_postgresql_tables.cmd          |    14 -
 src/win32/cats/make_postgresql_tables.sql          |   380 -
 src/win32/cats/make_sqlite3_catalog_backup.cmd     |    38 -
 src/win32/cats/make_sqlite3_tables.cmd             |     7 -
 src/win32/cats/make_sqlite3_tables.sql             |   384 -
 src/win32/compat/Makefile                          |    62 -
 src/win32/compat/alloca.h                          |     0
 src/win32/compat/arpa/inet.h                       |     0
 src/win32/compat/compat.cpp                        |  2750 --
 src/win32/compat/compat.h                          |   460 -
 src/win32/compat/dirent.h                          |     0
 src/win32/compat/dlfcn.h                           |    42 -
 src/win32/compat/getopt.c                          |   187 -
 src/win32/compat/getopt.h                          |    51 -
 src/win32/compat/grp.h                             |     0
 src/win32/compat/mingwconfig.h                     |   400 -
 src/win32/compat/ms_atl.h                          |    53 -
 src/win32/compat/mswinver.h                        |    35 -
 src/win32/compat/netdb.h                           |     0
 src/win32/compat/netinet/in.h                      |     0
 src/win32/compat/netinet/tcp.h                     |     0
 src/win32/compat/print.cpp                         |   745 -
 src/win32/compat/pwd.h                             |     0
 src/win32/compat/stdint.h                          |     3 -
 src/win32/compat/strings.h                         |     0
 src/win32/compat/sys/file.h                        |     2 -
 src/win32/compat/sys/ioctl.h                       |     1 -
 src/win32/compat/sys/mtio.h                        |   277 -
 src/win32/compat/sys/socket.h                      |     0
 src/win32/compat/sys/stat.h                        |     1 -
 src/win32/compat/sys/time.h                        |     0
 src/win32/compat/sys/wait.h                        |     0
 src/win32/compat/syslog.h                          |    32 -
 src/win32/compat/unistd.h                          |     3 -
 src/win32/compat/winapi.c                          |   217 -
 src/win32/compat/winhost.h                         |    61 -
 src/win32/compat/winsock.h                         |     4 -
 src/win32/console/Makefile                         |    54 -
 src/win32/console/console.vcproj                   |   293 -
 src/win32/cygwin.NET.bashrc                        |    63 -
 src/win32/dird/Makefile                            |   112 -
 src/win32/dird/bacula.rc                           |     1 -
 src/win32/dird/dird.vcproj                         |  1118 -
 src/win32/dird/main.cpp                            |    36 -
 src/win32/dird/service.cpp                         |    36 -
 src/win32/dird/who.h                               |    44 -
 src/win32/filed/Makefile                           |   105 -
 src/win32/filed/bacula-fd.manifest                 |    21 -
 src/win32/filed/bacula.rc                          |     1 -
 src/win32/filed/baculafd.vcproj                    |   610 -
 src/win32/filed/main.cpp                           |    36 -
 src/win32/filed/plugins/Makefile                   |   112 -
 src/win32/filed/plugins/api.c                      |   146 -
 src/win32/filed/plugins/api.h                      |   302 -
 src/win32/filed/plugins/bpipe-fd.c                 |   564 -
 src/win32/filed/plugins/bpipe-fd.def               |    15 -
 src/win32/filed/plugins/comadmin.h                 |   876 -
 src/win32/filed/plugins/dbi_node.c                 |   292 -
 src/win32/filed/plugins/exchange-fd.c              |   522 -
 src/win32/filed/plugins/exchange-fd.def            |    15 -
 src/win32/filed/plugins/exchange-fd.h              |   166 -
 src/win32/filed/plugins/file_node.c                |   236 -
 src/win32/filed/plugins/node.c                     |   127 -
 src/win32/filed/plugins/node.h                     |   186 -
 src/win32/filed/plugins/root_node.c                |   162 -
 src/win32/filed/plugins/service_node.c             |   229 -
 src/win32/filed/plugins/storage_group_node.c       |   511 -
 src/win32/filed/plugins/store_node.c               |   249 -
 src/win32/filed/service.cpp                        |    36 -
 src/win32/filed/trayMonitor.cpp                    |    36 -
 src/win32/filed/vss.cpp                            |   250 -
 src/win32/filed/vss.h                              |   182 -
 src/win32/filed/vss_Vista.cpp                      |     4 -
 src/win32/filed/vss_W2K3.cpp                       |    13 -
 src/win32/filed/vss_XP.cpp                         |     4 -
 src/win32/filed/vss_generic.cpp                    |   898 -
 src/win32/filed/who.h                              |    41 -
 src/win32/full_win32_installer/ConfigPage1.nsh     |   294 -
 src/win32/full_win32_installer/ConfigPage2.nsh     |   454 -
 src/win32/full_win32_installer/DumpLog.nsh         |    46 -
 src/win32/full_win32_installer/InstallType.ini     |    56 -
 src/win32/full_win32_installer/InstallType.nsh     |   102 -
 src/win32/full_win32_installer/Start.bat           |     5 -
 src/win32/full_win32_installer/Stop.bat            |     5 -
 src/win32/full_win32_installer/WriteTemplates.ini  |    48 -
 src/win32/full_win32_installer/bacula-dir.conf.in  |   380 -
 src/win32/full_win32_installer/bacula-fd.conf.in   |    44 -
 src/win32/full_win32_installer/bacula-logo.bmp     |   Bin 26046 -> 0 bytes
 src/win32/full_win32_installer/bacula-sd.conf.in   |   115 -
 src/win32/full_win32_installer/bat.conf.in         |    10 -
 src/win32/full_win32_installer/bconsole.conf.in    |    10 -
 src/win32/full_win32_installer/build-installer.cmd |    70 -
 src/win32/full_win32_installer/bwx-console.conf.in |    10 -
 src/win32/full_win32_installer/client.conf.in      |    11 -
 src/win32/full_win32_installer/installer.vcproj    |   154 -
 src/win32/full_win32_installer/storage.conf.in     |    10 -
 src/win32/full_win32_installer/winbacula.nsi       |  1466 -
 src/win32/lib/Makefile                             |   169 -
 src/win32/lib/bacula32.def                         |   795 -
 src/win32/lib/bacula64.def                         |   782 -
 src/win32/lib/make_def                             |    30 -
 src/win32/lib/make_def64                           |    30 -
 src/win32/libbac/Makefile                          |   111 -
 src/win32/libbac/libbac.vcproj                     |  1733 --
 src/win32/libbac/msvc/bacula.def                   |   510 -
 src/win32/libwin32/aboutDialog.cpp                 |    81 -
 src/win32/libwin32/aboutDialog.h                   |    49 -
 src/win32/libwin32/bacula.bmp                      |   Bin 3126 -> 0 bytes
 src/win32/libwin32/bacula.ico                      |   Bin 766 -> 0 bytes
 src/win32/libwin32/bacula.rc                       |   149 -
 src/win32/libwin32/error.ico                       |   Bin 766 -> 0 bytes
 src/win32/libwin32/idle.ico                        |   Bin 766 -> 0 bytes
 src/win32/libwin32/main.cpp                        |   687 -
 src/win32/libwin32/protos.h                        |    60 -
 src/win32/libwin32/res.h                           |    51 -
 src/win32/libwin32/running.ico                     |   Bin 766 -> 0 bytes
 src/win32/libwin32/saving.ico                      |   Bin 766 -> 0 bytes
 src/win32/libwin32/service.cpp                     |   601 -
 src/win32/libwin32/statusDialog.cpp                |   175 -
 src/win32/libwin32/statusDialog.h                  |    56 -
 src/win32/libwin32/trayMonitor.cpp                 |   274 -
 src/win32/libwin32/trayMonitor.h                   |    69 -
 src/win32/libwin32/warn.ico                        |   Bin 766 -> 0 bytes
 src/win32/libwin32/win32.h                         |    41 -
 src/win32/makeall                                  |     7 -
 src/win32/patches/binutils_texinfo_version.patch   |    31 -
 src/win32/patches/dvd+rw-tools.patch               |   264 -
 src/win32/patches/mingw-utils.patch                |  6670 -----
 src/win32/patches/mt.patch                         |  1689 --
 src/win32/patches/mtx-msvc1.patch                  |    75 -
 src/win32/patches/mtx-msvc2.patch                  |    40 -
 src/win32/patches/mtx.patch                        |  1576 --
 src/win32/patches/nsis.patch                       |   428 -
 src/win32/patches/openssl-w64.patch                |  2663 --
 src/win32/patches/openssl.patch                    |   309 -
 src/win32/patches/pcre.patch                       |   130 -
 src/win32/patches/postgresql.patch                 |   123 -
 src/win32/patches/pthreads-w64.patch               |   970 -
 src/win32/patches/pthreads.patch                   |    95 -
 src/win32/patches/sed.patch                        |    15 -
 src/win32/patches/sed_msc.patch                    |   927 -
 src/win32/patches/sqlite.patch                     |   162 -
 src/win32/patches/sqlite_msc.patch                 |   768 -
 src/win32/patches/wx.sed                           |     9 -
 src/win32/patches/wx1.patch                        |    37 -
 src/win32/patches/wx2.patch                        |    22 -
 src/win32/patches/wxWidgets.patch                  |    67 -
 src/win32/patches/zlib.patch                       |   150 -
 src/win32/pebuilder/Makefile.in                    |    55 -
 src/win32/pebuilder/README                         |    13 -
 src/win32/pebuilder/bacula/bacula.inf              |    37 -
 src/win32/pebuilder/bacula/bacula_nu2menu.xml      |    19 -
 src/win32/scripts/Makefile                         |    39 -
 src/win32/scripts/bsleep.c                         |    23 -
 src/win32/scripts/bsleep.vcproj                    |   199 -
 src/win32/scripts/disk-changer.cmd                 |   201 -
 src/win32/scripts/dvd-handler.cmd                  |   387 -
 src/win32/scripts/mtx-changer.cmd                  |   189 -
 src/win32/stored/Makefile                          |   163 -
 src/win32/stored/bacula.rc                         |     1 -
 src/win32/stored/baculasd.vcproj                   |   396 -
 src/win32/stored/bcopy/bcopy.vcproj                |   230 -
 src/win32/stored/bextract/bextract.vcproj          |   229 -
 src/win32/stored/bls/bls.vcproj                    |   229 -
 src/win32/stored/bscan/bscan.vcproj                |   229 -
 src/win32/stored/btape/btape.vcproj                |   228 -
 src/win32/stored/main.cpp                          |    36 -
 src/win32/stored/mtops.cpp                         |  1175 -
 src/win32/stored/postest/postest.cpp               |   299 -
 src/win32/stored/postest/postest.vcproj            |   213 -
 src/win32/stored/service.cpp                       |    36 -
 src/win32/stored/storelib/storelib.vcproj          |   827 -
 src/win32/stored/trayMonitor.cpp                   |    36 -
 src/win32/stored/who.h                             |    44 -
 src/win32/tools/Makefile                           |   107 -
 src/win32/tools/ScsiDeviceList.cpp                 |   363 -
 src/win32/tools/ScsiDeviceList.h                   |   169 -
 src/win32/tools/bsmtp/bsmtp.vcproj                 |   229 -
 src/win32/tools/dbcheck/dbcheck.vcproj             |   293 -
 src/win32/tools/drivetype/drivetype.vcproj         |   228 -
 src/win32/tools/fstype/fstype.vcproj               |   230 -
 src/win32/tools/scsilist.cpp                       |   119 -
 src/win32/tools/scsilist/scsilist.vcproj           |   216 -
 src/win32/tools/testfind/testfind.vcproj           |   289 -
 src/win32/tools/testls/testls.vcproj               |   229 -
 src/win32/win32_installer/ConfigPage1.nsh          |   294 -
 src/win32/win32_installer/ConfigPage2.nsh          |   455 -
 src/win32/win32_installer/DumpLog.nsh              |    46 -
 src/win32/win32_installer/InstallType.ini          |    56 -
 src/win32/win32_installer/InstallType.nsh          |    93 -
 src/win32/win32_installer/Makefile                 |   147 -
 src/win32/win32_installer/Readme.txt               |    48 -
 src/win32/win32_installer/Start.bat                |     5 -
 src/win32/win32_installer/Stop.bat                 |     5 -
 src/win32/win32_installer/WriteTemplates.ini       |    30 -
 src/win32/win32_installer/bacula-dir.conf.in       |   380 -
 src/win32/win32_installer/bacula-fd.conf.in        |    44 -
 src/win32/win32_installer/bacula-logo.bmp          |   Bin 26046 -> 0 bytes
 src/win32/win32_installer/bacula-sd.conf.in        |   115 -
 src/win32/win32_installer/bat.conf.in              |    10 -
 src/win32/win32_installer/bconsole.conf.in         |    10 -
 src/win32/win32_installer/build-installer.cmd      |    70 -
 src/win32/win32_installer/bwx-console.conf.in      |    10 -
 src/win32/win32_installer/client.conf.in           |    11 -
 src/win32/win32_installer/installer.vcproj         |   154 -
 src/win32/win32_installer/storage.conf.in          |    10 -
 src/win32/win32_installer/tray-monitor.conf.in     |    30 -
 src/win32/win32_installer/winbacula.nsi            |  1029 -
 src/win32/win64_installer/ConfigPage1.nsh          |   294 -
 src/win32/win64_installer/ConfigPage2.nsh          |   455 -
 src/win32/win64_installer/DumpLog.nsh              |    46 -
 src/win32/win64_installer/InstallType.ini          |    56 -
 src/win32/win64_installer/InstallType.nsh          |   102 -
 src/win32/win64_installer/Makefile                 |   176 -
 src/win32/win64_installer/Readme.txt               |    52 -
 src/win32/win64_installer/Start.bat                |     5 -
 src/win32/win64_installer/Stop.bat                 |     5 -
 src/win32/win64_installer/WriteTemplates.ini       |    30 -
 src/win32/win64_installer/bacula-dir.conf.in       |   380 -
 src/win32/win64_installer/bacula-fd.conf.in        |    44 -
 src/win32/win64_installer/bacula-logo.bmp          |   Bin 26046 -> 0 bytes
 src/win32/win64_installer/bacula-sd.conf.in        |   115 -
 src/win32/win64_installer/bat.conf.in              |    10 -
 src/win32/win64_installer/bconsole.conf.in         |    10 -
 src/win32/win64_installer/bwx-console.conf.in      |    10 -
 src/win32/win64_installer/client.conf.in           |    11 -
 src/win32/win64_installer/installer.vcproj         |   154 -
 src/win32/win64_installer/storage.conf.in          |    10 -
 src/win32/win64_installer/tray-monitor.conf.in     |    30 -
 src/win32/win64_installer/winbacula.nsi            |   993 -
 src/win32/winapi.h                                 |   215 -
 src/win32/wx-console/Makefile                      |    87 -
 src/win32/wx-console/bwx-console.manifest          |    21 -
 src/win32/wx-console/w32api.h                      |    11 -
 src/win32/wx-console/wx-console.vcproj             |   352 -
 src/wx-console/BUILD                               |    14 -
 src/wx-console/CHANGELOG                           |   252 -
 src/wx-console/Makefile.in                         |   148 -
 src/wx-console/TODO                                |    92 -
 src/wx-console/authenticate.c                      |   170 -
 src/wx-console/bwx-console.conf.in                 |    10 -
 src/wx-console/bwx-console.ico                     |   Bin 766 -> 0 bytes
 src/wx-console/console_conf.c                      |   344 -
 src/wx-console/console_conf.h                      |   104 -
 src/wx-console/console_thread.cpp                  |   563 -
 src/wx-console/console_thread.h                    |    90 -
 src/wx-console/csprint.h                           |    57 -
 src/wx-console/main.cpp                            |   129 -
 src/wx-console/marked.xpm                          |    39 -
 src/wx-console/partmarked.xpm                      |    39 -
 src/wx-console/unmarked.xpm                        |    39 -
 src/wx-console/wx-console_private.h                |    23 -
 src/wx-console/wx-console_private.rc               |     8 -
 src/wx-console/wxbconfigfileeditor.cpp             |   156 -
 src/wx-console/wxbconfigfileeditor.h               |    59 -
 src/wx-console/wxbconfigpanel.cpp                  |   313 -
 src/wx-console/wxbconfigpanel.h                    |   123 -
 src/wx-console/wxbhistorytextctrl.cpp              |   156 -
 src/wx-console/wxbhistorytextctrl.h                |    77 -
 src/wx-console/wxblistctrl.cpp                     |   101 -
 src/wx-console/wxblistctrl.h                       |    87 -
 src/wx-console/wxbmainframe.cpp                    |   875 -
 src/wx-console/wxbmainframe.h                      |   178 -
 src/wx-console/wxbrestorepanel.cpp                 |  2463 --
 src/wx-console/wxbrestorepanel.h                   |   244 -
 src/wx-console/wxbtableparser.cpp                  |   137 -
 src/wx-console/wxbtableparser.h                    |   113 -
 src/wx-console/wxbtreectrl.cpp                     |   117 -
 src/wx-console/wxbtreectrl.h                       |    90 -
 src/wx-console/wxbutils.cpp                        |   381 -
 src/wx-console/wxbutils.h                          |   213 -
 src/wx-console/wxwin16x16.xpm                      |    25 -
 unaccepted-projects                                |    32 -
 921 files changed, 49351 insertions(+), 241462 deletions(-)

diff --git a/.gitignore b/.gitignore
index d558258..682e5dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,7 +6,7 @@
 # *.[oa]
 # *~
 
-# 
+#
 *.la
 *.a
 *.o
@@ -93,6 +93,7 @@ oldtxt
 kerns-bs-config
 libtool
 config.status.lineno
+win32
 
 # autoconf/
 autoconf/autom4te.cache
@@ -170,6 +171,8 @@ po/*.mo
 po/*.gmo
 
 # scripts/
+scripts/bs_alert
+scripts/bsg_persist
 scripts/breload
 scripts/make_catalog_backup.pl
 scripts/bacula_config
@@ -295,6 +298,7 @@ src/cats/.libs
 src/cats/libbacsql.a
 
 # src/console/
+src/console/bbconsjson
 src/console/console.conf
 src/console/test-console.conf
 src/console/test-bconsole.conf
@@ -309,6 +313,7 @@ src/console/static-bconsole
 src/console/.libs
 
 # src/dird/
+src/dird/bdirjson
 src/dird/1
 src/dird/2
 src/dird/3
@@ -324,6 +329,7 @@ src/dird/filelist.exc
 src/dird/.libs
 
 # src/filed/
+src/filed/bfdjson
 src/filed/Makefile
 src/filed/bacula-fd
 src/filed/bacula-fd.conf
@@ -376,7 +382,7 @@ src/lib/libbaccfg.a
 src/lib/libbacpy.a
 
 # src/plugins/dir/
-src/plugins/dir/*.o   
+src/plugins/dir/*.o
 src/plugins/dir/*.so
 src/plugins/dir/main
 src/plugins/dir/Makefile
@@ -434,6 +440,18 @@ src/qt-console/Makefile.mingw32
 src/qt-console/Makefile.mingw32.Debug
 src/qt-console/Makefile.mingw32.Release
 src/qt-console/bat.pro.mingw32
+src/qt-console/Makefile.mingw64
+src/qt-console/Makefile.mingw64.Debug
+src/qt-console/Makefile.mingw64.Release
+src/qt-console/moc64/
+src/qt-console/tray-monitor/Makefile.mingw64
+src/qt-console/tray-monitor/Makefile.mingw64.Debug
+src/qt-console/tray-monitor/Makefile.mingw64.Release
+src/qt-console/tray-monitor/moc32/
+src/qt-console/tray-monitor/moc64/
+src/qt-console/tray-monitor/ui32/
+src/qt-console/tray-monitor/ui64/
+src/qt-console/ui64/
 
 # src/qt-console/clients/
 src/qt-console/clients/.*.swp
@@ -492,6 +510,7 @@ src/qt-console/ts/bat_fr.qm
 src/qt-console/ts/bat_de.qm
 
 # src/stored/
+src/stored/bsdjson
 src/stored/1
 src/stored/2
 src/stored/Makefile
@@ -523,6 +542,7 @@ src/stored/unmount-simulator
 src/stored/.libs
 
 # src/tools/
+src/tools/find_bad_jobmedia.pl
 src/tools/ing_test
 src/tools/bregex
 src/tools/bwild
@@ -542,6 +562,7 @@ src/tools/grow
 src/tools/.libs
 src/tools/bvfs_test
 src/tools/bpluginfo
+src/tools/timelimit
 
 # src/tray-monitor/
 src/tray-monitor/tray-monitor.conf
@@ -571,6 +592,7 @@ src/win32/debug
 src/win32/release32
 src/win32/release64
 src/win32/dll
+src/win32/build.log
 
 # src/win32
 src/win32*.user
@@ -778,6 +800,15 @@ src/wx-console/bwx-console.conf
 src/wx-console/.libs
 
 # updatedb/
+updatedb/update_mysql_tables_1014_to_1015
+updatedb/update_mysql_tables_1015_to_1016
+updatedb/update_mysql_tables_12_to_13
+updatedb/update_mysql_tables_13_to_14
+updatedb/update_mysql_tables_14_to_1014
+updatedb/update_postgresql_tables_1014_to_1015
+updatedb/update_postgresql_tables_12_to_13
+updatedb/update_postgresql_tables_13_to_14
+updatedb/update_postgresql_tables_14_to_1014
 updatedb/update_mysql_tables_12_to_14
 updatedb/update_postgresql_tables_12_to_14
 updatedb/update_sqlite3_tables_12_to_14
diff --git a/ABOUT-NLS b/ABOUT-NLS
deleted file mode 100644
index ed3565a..0000000
--- a/ABOUT-NLS
+++ /dev/null
@@ -1,986 +0,0 @@
-1 Notes on the Free Translation Project
-***************************************
-
-Free software is going international!  The Free Translation Project is
-a way to get maintainers of free software, translators, and users all
-together, so that free software will gradually become able to speak many
-languages.  A few packages already provide translations for their
-messages.
-
-   If you found this `ABOUT-NLS' file inside a distribution, you may
-assume that the distributed package does use GNU `gettext' internally,
-itself available at your nearest GNU archive site.  But you do _not_
-need to install GNU `gettext' prior to configuring, installing or using
-this package with messages translated.
-
-   Installers will find here some useful hints.  These notes also
-explain how users should proceed for getting the programs to use the
-available translations.  They tell how people wanting to contribute and
-work on translations can contact the appropriate team.
-
-   When reporting bugs in the `intl/' directory or bugs which may be
-related to internationalization, you should tell about the version of
-`gettext' which is used.  The information can be found in the
-`intl/VERSION' file, in internationalized packages.
-
-1.1 Quick configuration advice
-==============================
-
-If you want to exploit the full power of internationalization, you
-should configure it using
-
-     ./configure --with-included-gettext
-
-to force usage of internationalizing routines provided within this
-package, despite the existence of internationalizing capabilities in the
-operating system where this package is being installed.  So far, only
-the `gettext' implementation in the GNU C library version 2 provides as
-many features (such as locale alias, message inheritance, automatic
-charset conversion or plural form handling) as the implementation here.
-It is also not possible to offer this additional functionality on top
-of a `catgets' implementation.  Future versions of GNU `gettext' will
-very likely convey even more functionality.  So it might be a good idea
-to change to GNU `gettext' as soon as possible.
-
-   So you need _not_ provide this option if you are using GNU libc 2 or
-you have installed a recent copy of the GNU gettext package with the
-included `libintl'.
-
-1.2 INSTALL Matters
-===================
-
-Some packages are "localizable" when properly installed; the programs
-they contain can be made to speak your own native language.  Most such
-packages use GNU `gettext'.  Other packages have their own ways to
-internationalization, predating GNU `gettext'.
-
-   By default, this package will be installed to allow translation of
-messages.  It will automatically detect whether the system already
-provides the GNU `gettext' functions.  If not, the included GNU
-`gettext' library will be used.  This library is wholly contained
-within this package, usually in the `intl/' subdirectory, so prior
-installation of the GNU `gettext' package is _not_ required.
-Installers may use special options at configuration time for changing
-the default behaviour.  The commands:
-
-     ./configure --with-included-gettext
-     ./configure --disable-nls
-
-will, respectively, bypass any pre-existing `gettext' to use the
-internationalizing routines provided within this package, or else,
-_totally_ disable translation of messages.
-
-   When you already have GNU `gettext' installed on your system and run
-configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl.a' file and
-will decide to use this.  This might not be desirable.  You should use
-the more recent version of the GNU `gettext' library.  I.e. if the file
-`intl/VERSION' shows that the library which comes with this package is
-more recent, you should use
-
-     ./configure --with-included-gettext
-
-to prevent auto-detection.
-
-   The configuration process will not test for the `catgets' function
-and therefore it will not be used.  The reason is that even an
-emulation of `gettext' on top of `catgets' could not provide all the
-extensions of the GNU `gettext' library.
-
-   Internationalized packages usually have many `po/LL.po' files, where
-LL gives an ISO 639 two-letter code identifying the language.  Unless
-translations have been forbidden at `configure' time by using the
-`--disable-nls' switch, all available translations are installed
-together with the package.  However, the environment variable `LINGUAS'
-may be set, prior to configuration, to limit the installed set.
-`LINGUAS' should then contain a space separated list of two-letter
-codes, stating which languages are allowed.
-
-1.3 Using This Package
-======================
-
-As a user, if your language has been installed for this package, you
-only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination.  Here `LL' is an ISO 639 two-letter language code,
-and `CC' is an ISO 3166 two-letter country code.  For example, let's
-suppose that you speak German and live in Germany.  At the shell
-prompt, merely execute `setenv LANG de_DE' (in `csh'),
-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-This can be done from your `.login' or `.profile' file, once and for
-all.
-
-   You might think that the country code specification is redundant.
-But in fact, some languages have dialects in different countries.  For
-example, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The
-country code serves to distinguish the dialects.
-
-   The locale naming convention of `LL_CC', with `LL' denoting the
-language and `CC' denoting the country, is the one use on systems based
-on GNU libc.  On other systems, some variations of this scheme are
-used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
-locales supported by your system for your country by running the command
-`locale -a | grep '^LL''.
-
-   Not all programs have translations for all languages.  By default, an
-English message is shown in place of a nonexistent translation.  If you
-understand other languages, you can set up a priority list of languages.
-This is done through a different environment variable, called
-`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-for the purpose of message handling, but you still need to have `LANG'
-set to the primary language; this is required by other parts of the
-system libraries.  For example, some Swedish users who would rather
-read translations in German than English for when Swedish is not
-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
-
-   Special advice for Norwegian users: The language code for Norwegian
-bokma*l changed from `no' to `nb' recently (in 2003).  During the
-transition period, while some message catalogs for this language are
-installed under `nb' and some older ones under `no', it's recommended
-for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
-older translations are used.
-
-   In the `LANGUAGE' environment variable, but not in the `LANG'
-environment variable, `LL_CC' combinations can be abbreviated as `LL'
-to denote the language's main dialect.  For example, `de' is equivalent
-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-(Portuguese as spoken in Portugal) in this context.
-
-1.4 Translating Teams
-=====================
-
-For the Free Translation Project to be a success, we need interested
-people who like their own language and write it well, and who are also
-able to synergize with other translators speaking the same language.
-Each translation team has its own mailing list.  The up-to-date list of
-teams can be found at the Free Translation Project's homepage,
-`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
-area.
-
-   If you'd like to volunteer to _work_ at translating messages, you
-should become a member of the translating team for your own language.
-The subscribing address is _not_ the same as the list itself, it has
-`-request' appended.  For example, speakers of Swedish can send a
-message to `sv-request at li.org', having this message body:
-
-     subscribe
-
-   Keep in mind that team members are expected to participate
-_actively_ in translations, or at solving translational difficulties,
-rather than merely lurking around.  If your team does not exist yet and
-you want to start one, or if you are unsure about what to do or how to
-get started, please write to `translation at iro.umontreal.ca' to reach the
-coordinator for all translator teams.
-
-   The English team is special.  It works at improving and uniformizing
-the terminology in use.  Proven linguistic skill are praised more than
-programming skill, here.
-
-1.5 Available Packages
-======================
-
-Languages are not equally supported in all packages.  The following
-matrix shows the current state of internationalization, as of April
-2005.  The matrix shows, in regard of each package, for which languages
-PO files have been submitted to translation coordination, with a
-translation percentage of at least 50%.
-
-     Ready PO files       af am ar az be bg bs ca cs cy da de el en en_GB
-                        +-------------------------------------------------+
-     GNUnet             |                                                 |
-     a2ps               |             []                [] [] []     []   |
-     aegis              |                                  ()             |
-     ant-phone          |                                  ()             |
-     anubis             |                                  []             |
-     ap-utils           |                                                 |
-     aspell             |                         []    [] []        []   |
-     bash               |                      []          []             |
-     batchelor          |                                  []             |
-     bfd                |                                                 |
-     bibshelf           |                                  []             |
-     binutils           |                               []                |
-     bison              |                               [] []             |
-     bluez-pin          | []                      []       [] []          |
-     clisp              |                                  []    []       |
-     console-tools      |                         []       []             |
-     coreutils          |                []    []       [] []             |
-     cpio               |                                                 |
-     cpplib             |                      []       [] []             |
-     darkstat           |                []             () []             |
-     dialog             |                      [] [] [] [] [] []          |
-     diffutils          |                      [] []    [] [] []          |
-     doodle             |                                  []             |
-     e2fsprogs          |                         []       []             |
-     enscript           |                      []       [] []        []   |
-     error              |                      []       [] []        []   |
-     fetchmail          |                      [] ()    [] [] []          |
-     fileutils          |                               [] []             |
-     findutils          |                      []       []    []          |
-     flex               |                      []       [] []             |
-     fslint             |                                  []             |
-     gas                |                                                 |
-     gawk               |                      []       [] []             |
-     gbiff              |                                  []             |
-     gcal               |                      []                         |
-     gcc                |                                  []             |
-     gettext-examples   | []                   []          [] []          |
-     gettext-runtime    |             []       []       [] []             |
-     gettext-tools      |                      []          []             |
-     gimp-print         |                         []    [] []        []   |
-     gip                |                                                 |
-     gliv               |                                  []             |
-     glunarclock        |                                                 |
-     gmult              | []                               []             |
-     gnubiff            |                                  ()             |
-     gnucash            |                         []       () ()     []   |
-     gnucash-glossary   |                               [] ()             |
-     gpe-aerial         |                         []       []             |
-     gpe-beam           |                         []       []             |
-     gpe-calendar       |                         []       []             |
-     gpe-clock          |                         []       []             |
-     gpe-conf           |                         []       []             |
-     gpe-contacts       |                                                 |
-     gpe-edit           |                         []                      |
-     gpe-go             |                         []                      |
-     gpe-login          |                         []       []             |
-     gpe-ownerinfo      |                         []       []             |
-     gpe-sketchbook     |                         []       []             |
-     gpe-su             |                         []       []             |
-     gpe-taskmanager    |                         []       []             |
-     gpe-timesheet      |                         []                      |
-     gpe-today          |                         []       []             |
-     gpe-todo           |                         []       []             |
-     gphoto2            |                         []    [] []        []   |
-     gprof              |                               [] []             |
-     gpsdrive           |                                  ()    ()       |
-     gramadoir          | []                               []             |
-     grep               | []          [] []    []          [] []          |
-     gretl              |                                                 |
-     gsasl              |                                  []             |
-     gss                |                                                 |
-     gst-plugins        | []       []          [] []       []        []   |
-     gstreamer          | []                   [] []       []        []   |
-     gtick              | []                               ()             |
-     gtkspell           |             []                   [] []          |
-     hello              |                      []       [] [] []          |
-     id-utils           |                               [] []             |
-     impost             |                                                 |
-     indent             |                      []          []             |
-     iso_3166           |                                                 |
-     iso_3166_1         |                      [] []    [] [] []          |
-     iso_3166_2         |                                                 |
-     iso_3166_3         |                                  []             |
-     iso_4217           |                                                 |
-     iso_639            |                                                 |
-     jpilot             |                         []                      |
-     jtag               |                                                 |
-     jwhois             |                                                 |
-     kbd                |                         []    [] [] []          |
-     latrine            |                                  ()             |
-     ld                 |                               []                |
-     libc               |                      [] []    [] [] []          |
-     libextractor       |                                                 |
-     libgpewidget       |                         []    [] []             |
-     libgsasl           |                                                 |
-     libiconv           | []                   []       [] [] []          |
-     libidn             |                                                 |
-     lifelines          |                               [] ()             |
-     lilypond           |                                  []             |
-     lingoteach         |                                                 |
-     lynx               |                      [] []    [] []             |
-     m4                 |                         []    [] [] []          |
-     mailutils          |                      []                         |
-     make               |                               [] []             |
-     man-db             |                      [] ()    [] []             |
-     minicom            |                         []       []             |
-     mysecretdiary      |                               [] []             |
-     nano               |                      [] ()       []             |
-     nano_1_0           |                      [] ()    [] []             |
-     opcodes            |                                  []             |
-     parted             |                      [] []    [] []             |
-     psmisc             |                                                 |
-     ptx                |                      []       [] []             |
-     pwdutils           |                                                 |
-     python             |                                                 |
-     radius             |                      []                         |
-     recode             |             []       []       [] [] []          |
-     rpm                |                         []    []                |
-     screem             |                                                 |
-     scrollkeeper       |          [] []       [] [] [] [] []        []   |
-     sed                |                      []          []             |
-     sh-utils           |                               [] []             |
-     shared-mime-info   |                         [] []                   |
-     sharutils          |                      [] []    [] [] []          |
-     silky              |                                                 |
-     skencil            |                               [] ()             |
-     sketch             |                               [] ()             |
-     solfege            |                                  []             |
-     soundtracker       |                               [] []             |
-     sp                 |                                  []             |
-     stardict           |                         []                      |
-     tar                |                                                 |
-     texinfo            |                               [] []             |
-     textutils          |                      []       [] []             |
-     tin                |                                  ()        ()   |
-     tp-robot           |                                  []             |
-     tuxpaint           | []                   [] []    [] [] []     []   |
-     unicode-han-tra... |                                                 |
-     unicode-transla... |                                                 |
-     util-linux         |                      [] []    [] []             |
-     vorbis-tools       |             []          []    []           []   |
-     wastesedge         |                                  ()             |
-     wdiff              |                      []       [] []        []   |
-     wget               |                []    []       [] [] []     []   |
-     xchat              |                      []          [] []     []   |
-     xkeyboard-config   |                                                 |
-     xpad               |                                                 |
-                        +-------------------------------------------------+
-                          af am ar az be bg bs ca cs cy da de el en en_GB
-                          10  0  0  2  7  4  0 41 43  3 52 90 20  1  15
-
-                          eo es et eu fa fi fr  ga gl he hr hu id is it
-                        +-----------------------------------------------+
-     GNUnet             |                                               |
-     a2ps               |       []       [] []                       () |
-     aegis              |                                               |
-     ant-phone          |                   []                          |
-     anubis             |                   []                          |
-     ap-utils           |                   []                          |
-     aspell             |                   []  []                      |
-     bash               | [] []             []              []          |
-     batchelor          |                   []  []                      |
-     bfd                |    []                                         |
-     bibshelf           |    []                 []                   [] |
-     binutils           |    []             []                          |
-     bison              |    [] []          []  []             []    [] |
-     bluez-pin          | []             [] []  []          [] []       |
-     clisp              |    []             []                          |
-     console-tools      |                                               |
-     coreutils          |    [] []       [] []  []                      |
-     cpio               |    []             []                          |
-     cpplib             |    []             []                          |
-     darkstat           |    []             ()  []          [] []       |
-     dialog             |    [] [] []    [] []  []          []       [] |
-     diffutils          | [] []          [] []  [] [] []    [] []    [] |
-     doodle             |                       []                   [] |
-     e2fsprogs          |    []             []                       [] |
-     enscript           |                   []           []             |
-     error              |    []          [] []  []          []          |
-     fetchmail          |    []                                         |
-     fileutils          |    [] []          []  []          []       [] |
-     findutils          |    [] []          []  []                   [] |
-     flex               |    []             []  []                      |
-     fslint             |                   []                          |
-     gas                |    []             []                          |
-     gawk               |    []             []  []    []                |
-     gbiff              |                   []                          |
-     gcal               |    []             []                          |
-     gcc                |    []                                         |
-     gettext-examples   |    []             []  []                   [] |
-     gettext-runtime    |    []          [] []  []             []    [] |
-     gettext-tools      |    []             []                       [] |
-     gimp-print         |    []             []                          |
-     gip                |    []    []       []                          |
-     gliv               |                   ()                          |
-     glunarclock        |                []     []          []          |
-     gmult              |          []       []                       [] |
-     gnubiff            |                   ()                       () |
-     gnucash            |    []                             ()       [] |
-     gnucash-glossary   |    []                                      [] |
-     gpe-aerial         |    []             []                          |
-     gpe-beam           |    []             []                          |
-     gpe-calendar       |    []             []              [] []       |
-     gpe-clock          |    []          [] []                          |
-     gpe-conf           |                   []                          |
-     gpe-contacts       |                   []                          |
-     gpe-edit           |                   []                 []       |
-     gpe-go             |    []             []                          |
-     gpe-login          |    []             []              []          |
-     gpe-ownerinfo      |    []          [] []              [] []       |
-     gpe-sketchbook     |    []             []                          |
-     gpe-su             |    []          [] []                          |
-     gpe-taskmanager    |    []          [] []                          |
-     gpe-timesheet      |    []             []  []             []       |
-     gpe-today          |    []          [] []  []                      |
-     gpe-todo           |    []             []                 []       |
-     gphoto2            |    []          [] []              []       [] |
-     gprof              |    []             []                 []       |
-     gpsdrive           |    ()             ()              []       () |
-     gramadoir          |                   []  []                      |
-     grep               |    [] [] []    [] []  [] [] [] [] [] []    [] |
-     gretl              |    []             []                       [] |
-     gsasl              |          []       []  []                      |
-     gss                |                   []                          |
-     gst-plugins        |                   []              []       [] |
-     gstreamer          |                                            [] |
-     gtick              |          []    [] []  []                   [] |
-     gtkspell           | [] []    []       []  []                   [] |
-     hello              | [] [] [] [] [] [] []  [] [] [] [] [] []    [] |
-     id-utils           |                   []              [] []    [] |
-     impost             |                   []  []                      |
-     indent             | [] [] [] []    [] []  [] []       [] []    [] |
-     iso_3166           | []             [] []                          |
-     iso_3166_1         |    []    []    [] []  []          [] []       |
-     iso_3166_2         |                   []                          |
-     iso_3166_3         |                   []                          |
-     iso_4217           |       []       []        []                   |
-     iso_639            | []          [] [] []                          |
-     jpilot             |    []             []                          |
-     jtag               |                   []                          |
-     jwhois             |    []             []              [] []    [] |
-     kbd                |    []             []                          |
-     latrine            |                   []  []                   [] |
-     ld                 |    []             []                          |
-     libc               |    []          [] []     []       []          |
-     libextractor       |                                               |
-     libgpewidget       |    []             []  []          [] []       |
-     libgsasl           |                   []  []                      |
-     libiconv           | [] [] []       [] []  [] []    [] [] []    [] |
-     libidn             |                   []                       [] |
-     lifelines          |                   ()                          |
-     lilypond           |                   []                          |
-     lingoteach         |                   []                 []    [] |
-     lynx               |       []                          []       [] |
-     m4                 |                   []  [] []          []       |
-     mailutils          |    []             []                          |
-     make               |    []          [] []  [] [] [] []             |
-     man-db             |    ()                                         |
-     minicom            |    []          [] []              []          |
-     mysecretdiary      |    []             []                 []       |
-     nano               |    []    []    () []                       [] |
-     nano_1_0           |    []             []     []          []    [] |
-     opcodes            |    []             []                          |
-     parted             |    []             []     []                [] |
-     psmisc             |          []                                [] |
-     ptx                | [] [] []       [] []  [] []       [] []       |
-     pwdutils           |                                               |
-     python             |                                               |
-     radius             |    []             []                          |
-     recode             | [] []             []     [] []    [] []    [] |
-     rpm                |                   []                          |
-     screem             |                                               |
-     scrollkeeper       |    []          []                 []          |
-     sed                |    [] []          []  []          []          |
-     sh-utils           |    [] []       [] []  []          []       [] |
-     shared-mime-info   | [] []    []    [] []              []          |
-     sharutils          |    [] []       [] []     []       []       [] |
-     silky              |                   []                          |
-     skencil            |    []             []                          |
-     sketch             |    []             []                          |
-     solfege            |                                            [] |
-     soundtracker       |    []             []                       [] |
-     sp                 |                   []                          |
-     stardict           |                                   []          |
-     tar                |    [] []          []  []                   [] |
-     texinfo            | []                []        []                |
-     textutils          |    []             []  [] []       []          |
-     tin                |       []          ()                          |
-     tp-robot           |                   []              []          |
-     tuxpaint           |    []          [] []  []    []    [] [] [] [] |
-     unicode-han-tra... |                                               |
-     unicode-transla... |                   []  []                      |
-     util-linux         |    [] []       [] []              []       [] |
-     vorbis-tools       |    []             []                          |
-     wastesedge         |                   ()                          |
-     wdiff              |    [] []          []  [] []       [] []    [] |
-     wget               |    [] [] []    [] []  [] []    [] []       [] |
-     xchat              |    []    []    [] []                       [] |
-     xkeyboard-config   |                                               |
-     xpad               |    []                 []          []          |
-                        +-----------------------------------------------+
-                          eo es et eu fa fi fr  ga gl he hr hu id is it
-                          13 85 21 15  2 35 115 45 17  8  6 40 27  1 45
-
-                          ja ko ku lg lt lv mk mn ms mt nb nl nn no nso
-                        +-----------------------------------------------+
-     GNUnet             |                                               |
-     a2ps               |    ()                   []       []    ()     |
-     aegis              |                                  ()           |
-     ant-phone          |                                  []           |
-     anubis             |                         []    [] []           |
-     ap-utils           |                                               |
-     aspell             |                      []          []           |
-     bash               |                                  []           |
-     batchelor          |                                  []           |
-     bfd                |                                               |
-     bibshelf           |                                               |
-     binutils           |                                               |
-     bison              |                         []    [] []           |
-     bluez-pin          |                                  []           |
-     clisp              |                                  []           |
-     console-tools      |                                               |
-     coreutils          | []                               []           |
-     cpio               |                                               |
-     cpplib             |                                               |
-     darkstat           |                         []       []           |
-     dialog             |                                  []           |
-     diffutils          | []                      []       []           |
-     doodle             |                                               |
-     e2fsprogs          |                                               |
-     enscript           |                                  []           |
-     error              |                                  []           |
-     fetchmail          | []                               []           |
-     fileutils          | []       []                                   |
-     findutils          |                                  []           |
-     flex               |    []                            []           |
-     fslint             |                                  []           |
-     gas                |                                               |
-     gawk               | []                               []           |
-     gbiff              |                                  []           |
-     gcal               |                                               |
-     gcc                |                                               |
-     gettext-examples   | []                               []           |
-     gettext-runtime    | [] []                            []           |
-     gettext-tools      | [] []                                         |
-     gimp-print         | []                               []           |
-     gip                |                                  []           |
-     gliv               |                                  []           |
-     glunarclock        |                         []       []           |
-     gmult              | []                                            |
-     gnubiff            |                                               |
-     gnucash            | ()                            () []           |
-     gnucash-glossary   |                                  []           |
-     gpe-aerial         |                                  []           |
-     gpe-beam           |                                  []           |
-     gpe-calendar       |                                  []           |
-     gpe-clock          |                                  []           |
-     gpe-conf           |                                  []           |
-     gpe-contacts       |                                               |
-     gpe-edit           |                                  []           |
-     gpe-go             |                                  []           |
-     gpe-login          |                                  []           |
-     gpe-ownerinfo      |                                  []           |
-     gpe-sketchbook     |                                  []           |
-     gpe-su             |                                  []           |
-     gpe-taskmanager    |       []                         []           |
-     gpe-timesheet      |                                  []           |
-     gpe-today          |                                  []           |
-     gpe-todo           |                                  []           |
-     gphoto2            | []                               []           |
-     gprof              |                                               |
-     gpsdrive           | ()                               ()    ()     |
-     gramadoir          |                                  ()           |
-     grep               | []                            [] []           |
-     gretl              |                                               |
-     gsasl              |                                  []           |
-     gss                |                                               |
-     gst-plugins        |                                  []           |
-     gstreamer          |                                  []           |
-     gtick              |                                  []           |
-     gtkspell           |                      []          []           |
-     hello              | [] []          []       []    [] [] [] []     |
-     id-utils           |                                  []           |
-     impost             |                                               |
-     indent             | []                               []           |
-     iso_3166           |                                  []           |
-     iso_3166_1         |                                  []    []     |
-     iso_3166_2         |                                  []           |
-     iso_3166_3         |                                  []           |
-     iso_4217           | []                   []          []           |
-     iso_639            | []                               [] []        |
-     jpilot             | ()                               ()    ()     |
-     jtag               |                                               |
-     jwhois             |                                  []           |
-     kbd                |                                  []           |
-     latrine            |                                  []           |
-     ld                 |                                               |
-     libc               | [] []                         [] []    []     |
-     libextractor       |                                               |
-     libgpewidget       |                                  []           |
-     libgsasl           |                                  []           |
-     libiconv           |                                  []           |
-     libidn             |                                               |
-     lifelines          |                                  []           |
-     lilypond           |                                  []           |
-     lingoteach         |                                  []           |
-     lynx               | []                               []           |
-     m4                 | []                               []           |
-     mailutils          |                                               |
-     make               | [] []                            []           |
-     man-db             | ()                                            |
-     minicom            | []                                            |
-     mysecretdiary      |                                  []           |
-     nano               |                         []    []              |
-     nano_1_0           |                         []    []    []        |
-     opcodes            |                                  []           |
-     parted             | []                                  []        |
-     psmisc             |                               [] []           |
-     ptx                |                               [] []    []     |
-     pwdutils           |                                               |
-     python             |                                               |
-     radius             |                                               |
-     recode             |                                  []           |
-     rpm                | [] []                                         |
-     screem             | []                                            |
-     scrollkeeper       |                               [] [] []        |
-     sed                | []                               []           |
-     sh-utils           | []                            []              |
-     shared-mime-info   |    []                         [] [] []        |
-     sharutils          | []                               []           |
-     silky              |                                  []           |
-     skencil            |                                               |
-     sketch             |                                               |
-     solfege            |                                  []    []     |
-     soundtracker       |                                               |
-     sp                 | ()                                            |
-     stardict           |                   []             []           |
-     tar                | []                               []           |
-     texinfo            | []                            [] []           |
-     textutils          | [] []                         []              |
-     tin                |                                               |
-     tp-robot           |                                  []           |
-     tuxpaint           | [] []       []          []       [] []        |
-     unicode-han-tra... |                                               |
-     unicode-transla... |                                               |
-     util-linux         | []                               []           |
-     vorbis-tools       |                                  []           |
-     wastesedge         |                                  []           |
-     wdiff              |                         []    []              |
-     wget               | []                               []           |
-     xchat              |    []          [] []             []           |
-     xkeyboard-config   |                                  []           |
-     xpad               |                                  []           |
-                        +-----------------------------------------------+
-                          ja ko ku lg lt lv mk mn ms mt nb nl nn no nso
-                          33 11  1  1  1  2  2  3 11  0 15 96  7  5  0
-
-                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
-                        +-------------------------------------------------+
-     GNUnet             |                                                 |
-     a2ps               |       ()     []      [] []       []    [] []    |
-     aegis              |                      () ()                      |
-     ant-phone          |                      []                         |
-     anubis             |       []             [] []                      |
-     ap-utils           |       ()                                        |
-     aspell             |                      [] []                      |
-     bash               |              []      [] []                      |
-     batchelor          |                      []                         |
-     bfd                |                                                 |
-     bibshelf           |                                                 |
-     binutils           |                         []                []    |
-     bison              |       []     []      [] []                []    |
-     bluez-pin          |       []     []   [] [] []    []       [] []    |
-     clisp              |                         []                      |
-     console-tools      |                         []                      |
-     coreutils          |       []                []       []       []    |
-     cpio               |       []                                  []    |
-     cpplib             |                                                 |
-     darkstat           |       []     []      []       []       [] []    |
-     dialog             |       [] []  []   [] [] [] []                   |
-     diffutils          |       []     []      [] []             [] []    |
-     doodle             |                                     []          |
-     e2fsprogs          |       []                                  []    |
-     enscript           |              []      [] []                []    |
-     error              |              []      []       []                |
-     fetchmail          |       []     ()         []    []    []          |
-     fileutils          |       []             [] []       []       []    |
-     findutils          |       [] []          []       []       [] []    |
-     flex               |       []     []      [] []                []    |
-     fslint             |              []      []                []       |
-     gas                |                                                 |
-     gawk               |       []     []      []                   []    |
-     gbiff              |                      []                         |
-     gcal               |                                           []    |
-     gcc                |                                                 |
-     gettext-examples   |       []             [] []    []       [] []    |
-     gettext-runtime    |       []             [] []    [] []    [] []    |
-     gettext-tools      |       []             [] []    [] []    [] []    |
-     gimp-print         |                               []          []    |
-     gip                |                   []          []       []       |
-     gliv               |              []      []       []                |
-     glunarclock        |              []      [] []    []       [] []    |
-     gmult              |              []   [] []                []       |
-     gnubiff            |                      ()                   []    |
-     gnucash            |       () []             []    []          []    |
-     gnucash-glossary   |          []                   []          []    |
-     gpe-aerial         |          []  []      [] []             [] []    |
-     gpe-beam           |          []  []      [] []             [] []    |
-     gpe-calendar       |          []  []      [] []    []       [] []    |
-     gpe-clock          |          []  []      [] []    []       [] []    |
-     gpe-conf           |          []  []      [] []    []          []    |
-     gpe-contacts       |                      [] []                []    |
-     gpe-edit           |          []  []      [] []    []       [] []    |
-     gpe-go             |              []      [] []             [] []    |
-     gpe-login          |          []  []      [] []    []       [] []    |
-     gpe-ownerinfo      |          []  []      [] []    []       [] []    |
-     gpe-sketchbook     |          []  []      [] []    []       [] []    |
-     gpe-su             |          []  []      [] []    []       [] []    |
-     gpe-taskmanager    |          []  []      [] []    []       [] []    |
-     gpe-timesheet      |          []  []      [] []    []       [] []    |
-     gpe-today          |          []  []      [] []    []       [] []    |
-     gpe-todo           |          []  []      [] []    []       [] []    |
-     gphoto2            |                      []       []       [] []    |
-     gprof              |              []      []                   []    |
-     gpsdrive           |                      []                         |
-     gramadoir          |                               []                |
-     grep               |       [] []  []      [] []       []    []       |
-     gretl              |       []                                        |
-     gsasl              |       []             []             [] [] []    |
-     gss                |       []             []                   []    |
-     gst-plugins        | []                                  [] [] []    |
-     gstreamer          |                         []          [] [] []    |
-     gtick              |                      [] []                []    |
-     gtkspell           |              []   [] [] []    []       []       |
-     hello              |       []     []      [] []    []       [] []    |
-     id-utils           |              []      [] []                []    |
-     impost             |                                                 |
-     indent             |              []      [] []    []       [] []    |
-     iso_3166           |          []                []       [] [] []    |
-     iso_3166_1         |                               [] [] [] []       |
-     iso_3166_2         |                                                 |
-     iso_3166_3         |                      []    []          []       |
-     iso_4217           |                            []          []       |
-     iso_639            |                            []          [] []    |
-     jpilot             |                                                 |
-     jtag               |                               []                |
-     jwhois             |       []     []      [] ()                ()    |
-     kbd                |       []             []                   []    |
-     latrine            |                      []                   []    |
-     ld                 |                                           []    |
-     libc               |       []     []         []    []          []    |
-     libextractor       |                      []                         |
-     libgpewidget       |          []  []      []       []       [] []    |
-     libgsasl           |       []             []                []       |
-     libiconv           |       []     []   [] [] []    [] [] [] [] []    |
-     libidn             |       []                                  ()    |
-     lifelines          |       []                                  []    |
-     lilypond           |                                           []    |
-     lingoteach         |              []                                 |
-     lynx               |              []         []                []    |
-     m4                 |       []     []      [] []                []    |
-     mailutils          |       []             [] []                      |
-     make               |       []     []         []                []    |
-     man-db             |                      []                   []    |
-     minicom            |       []     []      [] []                      |
-     mysecretdiary      |              []      [] []                []    |
-     nano               |              []      []                   []    |
-     nano_1_0           |       []             [] []                []    |
-     opcodes            |                      []                   []    |
-     parted             |       [] []  []                           []    |
-     psmisc             |       []             []                         |
-     ptx                |       [] []  []      [] []                []    |
-     pwdutils           |       []                                        |
-     python             |                                                 |
-     radius             |       []                []                      |
-     recode             |       []     []      [] []       []       []    |
-     rpm                |       [] []             []                []    |
-     screem             |                                                 |
-     scrollkeeper       |       []             [] []    []    [] [] []    |
-     sed                |       [] []  []      [] []    []       [] []    |
-     sh-utils           |                         []       []    []       |
-     shared-mime-info   |          []  []                     [] [] []    |
-     sharutils          |                         []             [] []    |
-     silky              |                               []                |
-     skencil            |          []  []                           []    |
-     sketch             |          []  []                           []    |
-     solfege            |                                                 |
-     soundtracker       |                               []          []    |
-     sp                 |                                                 |
-     stardict           |                         []    []                |
-     tar                |       []             [] []                []    |
-     texinfo            |       []             [] []                []    |
-     textutils          |                         []       []       []    |
-     tin                |                                                 |
-     tp-robot           |                         []                      |
-     tuxpaint           |       [] []  []      []       []    [] [] []    |
-     unicode-han-tra... |                                                 |
-     unicode-transla... |                                                 |
-     util-linux         |              []         []                []    |
-     vorbis-tools       |                      [] []                      |
-     wastesedge         |                                                 |
-     wdiff              |       []     []      [] []    []          []    |
-     wget               |       [] []  []      [] []    [] []    [] []    |
-     xchat              |                         []    [] [] [] [] []    |
-     xkeyboard-config   |                                                 |
-     xpad               |                                                 |
-                        +-------------------------------------------------+
-                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
-                           1  0 48 30  58    6 79 71  5 45 13 12 50 86  0
-
-                          tg th tk tr uk ven vi wa xh zh_CN zh_TW zu
-                        +--------------------------------------------+
-     GNUnet             |                                            |  0
-     a2ps               |          [] []     []                      | 19
-     aegis              |                                            |  0
-     ant-phone          |          []                                |  4
-     anubis             |          []                                |  9
-     ap-utils           |             ()                             |  1
-     aspell             |             []     [] []                   | 13
-     bash               |                                            | 10
-     batchelor          |          []        []                      |  7
-     bfd                |                                            |  1
-     bibshelf           |                    []                      |  5
-     binutils           |          []                                |  6
-     bison              |          []                                | 17
-     bluez-pin          |          [] []     [] []     []            | 24
-     clisp              |                                            |  7
-     console-tools      |          []                                |  4
-     coreutils          |          []                                | 16
-     cpio               |          []        []                      |  6
-     cpplib             |          []        []                      |  7
-     darkstat           |                    []        ()    ()      | 15
-     dialog             |          [] []     []                      | 25
-     diffutils          |          []        []        []    []      | 28
-     doodle             |                    []                      |  5
-     e2fsprogs          |          []                                |  8
-     enscript           |          []                                | 12
-     error              |          []        []              []      | 16
-     fetchmail          |          []                                | 12
-     fileutils          |          []                  []    []      | 18
-     findutils          |          []        []                      | 17
-     flex               |          []        []                      | 15
-     fslint             |                    []                      |  7
-     gas                |          []                                |  3
-     gawk               |          []                                | 14
-     gbiff              |                                            |  4
-     gcal               |          []                                |  5
-     gcc                |          []                                |  3
-     gettext-examples   |          [] []     []        []            | 20
-     gettext-runtime    |          [] []     []        []    []      | 25
-     gettext-tools      |          [] []               []            | 17
-     gimp-print         |             []                             | 11
-     gip                |                    []                      |  8
-     gliv               |          []                                |  6
-     glunarclock        |                    [] []                   | 13
-     gmult              |          []        []        []            | 13
-     gnubiff            |                    []                      |  3
-     gnucash            |          ()                        []      | 10
-     gnucash-glossary   |                                    []      |  8
-     gpe-aerial         |                    []        []            | 13
-     gpe-beam           |                    []        []            | 13
-     gpe-calendar       |                    [] []     []    []      | 18
-     gpe-clock          |          []        [] []     []            | 17
-     gpe-conf           |                    []        []            | 12
-     gpe-contacts       |                    []        []            |  6
-     gpe-edit           |          []        [] []           []      | 15
-     gpe-go             |          []        []                      | 11
-     gpe-login          |          []        [] []     []    []      | 18
-     gpe-ownerinfo      |          []        []        []    []      | 19
-     gpe-sketchbook     |          []        []                      | 14
-     gpe-su             |          []        []        []            | 16
-     gpe-taskmanager    |          []        []        []            | 17
-     gpe-timesheet      |          []        []        []    []      | 17
-     gpe-today          |          []        [] []     []    []      | 19
-     gpe-todo           |                    [] []           []      | 16
-     gphoto2            |             []               []            | 17
-     gprof              |          []        []                      | 10
-     gpsdrive           |                                            |  2
-     gramadoir          |                    []                      |  6
-     grep               |          [] []     []              []      | 32
-     gretl              |                                            |  4
-     gsasl              |                    []        []            | 12
-     gss                |                    []                      |  5
-     gst-plugins        |             []     []                      | 16
-     gstreamer          |          [] []     []                      | 14
-     gtick              |                    []                      | 11
-     gtkspell           |                    [] []     []            | 20
-     hello              |          [] []     []        []            | 37
-     id-utils           |          []        []                      | 13
-     impost             |                    []                      |  3
-     indent             |          []        []        []            | 24
-     iso_3166           |       [] []        []                      | 12
-     iso_3166_1         |          []           []                   | 20
-     iso_3166_2         |                                            |  2
-     iso_3166_3         |                       []     []            |  8
-     iso_4217           |          []        []                      | 10
-     iso_639            |                    [] []                   | 12
-     jpilot             |          [] []               []            |  6
-     jtag               |                                            |  2
-     jwhois             |          []        []              []      | 12
-     kbd                |          []        []                      | 12
-     latrine            |          []        []                      |  8
-     ld                 |          []                                |  5
-     libc               |          []                  []            | 22
-     libextractor       |                                            |  1
-     libgpewidget       |                    [] []                   | 17
-     libgsasl           |                    []                      |  7
-     libiconv           |          [] []     [] []     []            | 32
-     libidn             |                    []        []            |  5
-     lifelines          |                                            |  4
-     lilypond           |          []                                |  5
-     lingoteach         |                                            |  5
-     lynx               |          [] []                             | 14
-     m4                 |                    []        []            | 17
-     mailutils          |             []                             |  7
-     make               |          []                  []            | 18
-     man-db             |                                            |  5
-     minicom            |                                            | 11
-     mysecretdiary      |          []        []                      | 12
-     nano               |                                            | 11
-     nano_1_0           |          [] []                             | 17
-     opcodes            |          []                                |  7
-     parted             |          [] []               []            | 17
-     psmisc             |                    []                      |  7
-     ptx                |          []                  []            | 23
-     pwdutils           |                                            |  1
-     python             |                                            |  0
-     radius             |             []                             |  6
-     recode             |          []        []                      | 22
-     rpm                |          [] []                             | 11
-     screem             |                                            |  1
-     scrollkeeper       |          [] []                             | 23
-     sed                |          []        []                      | 19
-     sh-utils           |          []                                | 15
-     shared-mime-info   |             []               []            | 19
-     sharutils          |          []        []              []      | 20
-     silky              |                                            |  3
-     skencil            |                                            |  6
-     sketch             |                                            |  6
-     solfege            |                                            |  4
-     soundtracker       |          []                                |  8
-     sp                 |          []                                |  3
-     stardict           |             []     []        []    []      | 10
-     tar                |          [] []                             | 13
-     texinfo            |          []                  []            | 14
-     textutils          |          []                  []    []      | 17
-     tin                |                                            |  1
-     tp-robot           |                              []    []      |  7
-     tuxpaint           |          []        [] []     []            | 34
-     unicode-han-tra... |                                            |  0
-     unicode-transla... |                                            |  2
-     util-linux         |          [] []                             | 17
-     vorbis-tools       |             []                             | 10
-     wastesedge         |                                            |  1
-     wdiff              |          []        []                      | 22
-     wget               |          [] []               []    []      | 31
-     xchat              |             []     []        []            | 22
-     xkeyboard-config   |                                            |  1
-     xpad               |                    []                      |  5
-                        +--------------------------------------------+
-       72 teams           tg th tk tr uk ven vi wa xh zh_CN zh_TW zu
-      147 domains          0  0  1 78 29  0  71 16  0  41    20    0  1711
-
-   Some counters in the preceding matrix are higher than the number of
-visible blocks let us expect.  This is because a few extra PO files are
-used for implementing regional variants of languages, or language
-dialects.
-
-   For a PO file in the matrix above to be effective, the package to
-which it applies should also have been internationalized and
-distributed as such by its maintainer.  There might be an observable
-lag between the mere existence a PO file and its wide availability in a
-distribution.
-
-   If April 2005 seems to be old, you may fetch a more recent copy of
-this `ABOUT-NLS' file on most GNU archive sites.  The most up-to-date
-matrix with full percentage details can be found at
-`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
-
-1.6 Using `gettext' in new packages
-===================================
-
-If you are writing a freely available program and want to
-internationalize it you are welcome to use GNU `gettext' in your
-package.  Of course you have to respect the GNU Library General Public
-License which covers the use of the GNU `gettext' library.  This means
-in particular that even non-free programs can use `libintl' as a shared
-library, whereas only free software can use `libintl' as a static
-library or use modified versions of `libintl'.
-
-   Once the sources are changed appropriately and the setup can handle
-the use of `gettext' the only thing missing are the translations.  The
-Free Translation Project is also available for packages which are not
-developed inside the GNU project.  Therefore the information given above
-applies also for every other Free Software Project.  Contact
-`translation at iro.umontreal.ca' to make the `.pot' files available to
-the translation teams.
-
diff --git a/AUTHORS b/AUTHORS
index 7fdeccb..a0b66c2 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,10 +1,12 @@
 
-This file contains a list of the people who have contributed code, programs or
-documentation to the Bacula project.  Thanks to all of you.  Without your 
-participation, Bacula would not be the success it is today.
+This file contains a list of the people who have contributed code,
+programs or documentation to the Bacula project.  Thanks to all of
+you.  Without your participation, Bacula would not be the success it
+is today.
 
-If you have made a contribution and do not find your
-name on this list, please send a note to me: kern at sibbald.com
+If you have made a contribution and do not find your name on this
+list, please send a note to license at bacula.org or to the person from
+whom you received the distribution.
 
 Contributors:
 
@@ -25,14 +27,14 @@ Attila Fülöp
 Ben Walton
 Bernd Frick
 Bill Moran
-Bastian Friedrich                               
+Bastian Friedrich
 Carlos A. Molina G
 Carsten Paeth
 Chris Lee
 Christian Masopust
 Christopher Hull
 Craig Miskell
-Dan Langille   
+Dan Langille
 Daniele Eccher
 David Boyes
 David Duchscher
@@ -51,10 +53,11 @@ Frank Sweetser
 Graham Keeling
 Grzegorz Grabowski
 Howard Thomson
-Jaime Ventura                      
+Jaime Ventura
 James Harper
 Jan Kesten
 jgorig
+Jim Raney
 Joakim Tjernlund
 Joao Henrique Freitas
 John Goerzen
@@ -62,14 +65,15 @@ John Kodis
 John Walker
 Jorj Bauer
 Jose Herrera
-Jose Luis Tallon 
-Jo Simoens   
-Juan Luis Frances    
-Juergen Lock                                    
+Jose Luis Tallon
+Josip Almasi
+Jo Simoens
+Juan Luis Frances
+Juergen Lock
 Karl Cunningham
 Kern Sibbald
 Kjetil Torgrim Homme
-Landon Fuller   
+Landon Fuller
 Laurent Papier
 Lukas Nykryn
 Lorenz Schori
@@ -77,15 +81,16 @@ Luca Berra
 Lucas B. Cohen
 Lucas Di Pentima
 Ludovic Strappazon
-Marc Cousin                       
+Marc Cousin
 Marc Schiffbauer
+Marcin Haba
 Marco van Wieringen
 Martin Schmid
-Martin Simmons                       
+Martin Simmons
 Meno Abels
 Michael Renner
 Michael -buk- Scherer
-Michael Stapelberg                        
+Michael Stapelberg
 Michel Meyers
 Morgan
 Nic Bellamy
@@ -98,16 +103,18 @@ Philippe Chauvat
 Phil Stracchino
 Preben Guldberg
 Riccardo Ghetta
-Richard Mortimer                        
+Richard Mortimer
 Robert Nelson
+Robert Oschwald
 Rudolf Cejka
 Russel Howe
 Scott Bailey
 Sergey Svishchev
+Simone Caronni
 Stefan Reddig
-Thomas Glatthor                          
+Thomas Glatthor
 Thorsten Enge
-Tim Oberfoell   
+Tim Oberfoell
 Tomas Cameron
 Tullio Andreatta
 Ulrich Leodolter
diff --git a/ChangeLog b/ChangeLog
index 0e175d0..6d79a28 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,236 @@
-              Changelog on version 5.2.13
+              Changelog on version 7.0.5
 
+Release version 7.0.5
+
+28Jul14
+ - Fix #547 by adding .schedule command
+
+27Jul14
+ - Update AUTHORS
+ - Fix bug #2079 with patch from Robert Oschwald
+
+26Jul14
+ - Fix orphaned file descriptors during errors
+ - Yet another client==NULL
+ - Improve FD and SD cancel
+ - Jim Raney's TLS patch
+ - Update AUTHORS
+ - Fix bug #1679 pool overrides not shown in manual run display
+ - Attempt to avoid client==NULL
+
+23Jul14
+ - Fix for bug #2082 (hopefully)
+
+22Jul14
+ - Fix seg fault in jobq.c
+
+14Jul14
+ - make stop after first error
+
+12Jul14
+ - Increase status schedule days from 500 to 3000
+ - Remove bad cherry-pick
+ - Fix compiler warning
+ - Allow options create_postgresql_database from patch in bug #2075 by roos
+ - Fix bug #2074 crashes when no conf file present
+
+10Jul14
+ - Set pthread id in jcr at beginning so the job can be canceled.
+ - Fix possible heartbeat interval timing problems
+
+08Jul14
+ - Fix some errors reported by valgrind. May fix the problem with bsmtp command.
+ - Ensure b_sterror() is using the correct size of input buffer
+
+07Jul14
+ - Fix possible seg fault
+
+04Jul14
+ - Fix segfault when trying to stop the bnet_server thread in terminate_stored()
+
+03Jul14
+ - Fix bad link bug #2076
+
+02Jul14
+ - Fix compilation of bsock.c when TLS is not available
+
+27Jun14
+ - Correct L suffix to be LL
+ - Fix bad copy/migrate data header
+
+26Jun14
+ - On termination shutdown thread server
+
+23Jun14
+ - baculum: Updated README file
+ - baculum: Update English language texts
+ - baculum: Saving auth file for web server HTTP Basic auth
+ - baculum: Added directory for web server logs
+ - baculum: Added example Lighttpd configuration for Baculum and sample web 
+  server auth file
+ - Expanded auth error message
+ - baculum: Support for web servers which do not provide direct info about HTTP 
+  Basic auth
+
+15Jun14
+ - Fix limit bandwidth calculation
+ - Eliminate strcpy() from bsmtp
+
+12Jun14
+ - Fix for configuring sudo option for bconsole access
+ - Display correct NextPool overrides + use Job NextPool in restore if available
+
+09Jun14
+ - Fix Bacula to work with newer Windows pthreads library
+
+17May14
+ - Fix bug #180 ERR=success in btape when tape error
+
+Bugs fixed/closed since last release:
+1679 180 2074 2075 2076 2079 2082 547
+
+====
+
+Release version 7.0.4
+02Jun14
+ - Better error handling for cancel command
+
+01Jun14
+ - Fix compiler warning + simplify some #ifdefs
+
+22May14
+ - Fix copy/migration to second SD
+
+19May14
+ - Fix calls to sl.set_string()
+ - Improve sellist code
+
+=====
+
+Release version 7.0.3
+12May14
+ - Fix error handling in do_alist_prompt
+ - Tighten error condition handling in sellist
+ - Add new cancel test
+
+06May14
+ - Update LICENSE and LICENSE-FAQ
+
+03May14
+ - Also update autoconf/aclocal.m4
+ - Reschedule on error caused EndTime to be incorrect -- fixes bug #2029
+ - Flush console queued job messages -- should fix bug #2054
+ - Attempt to fix FreeBSD echo/printf, bug #2048
+ - Update to newer libtool + config.guess
+ - Recompile configure
+ - Apply fix supplied for acl.c in bug #2050
+
+01May14
+ - Fix a SD seg fault that occurs with over committed drives
+
+28Apr14
+ - Clear bvfs cache and set debug options available only for admin
+ - Moved auth params to curl opts
+ - Filtred single results for restricted consoles
+
+27Apr14
+ - Removed unnecessary debug
+ - Changed e-mail address in gettext file
+ - Support for customized and restricted consoles
+
+15Apr14
+ - Misc changes for rpm building (made by Louis)
+
+13Apr14
+ - Updated requirements for Baculum
+
+12Apr14
+ - Apply fix for bug 2049: wrong drive selected
+
+11Apr14
+ - Fix #2047 about bthread_cond_wait_p not declared
+
+09Apr14
+ - Fix Bacula bug #2044 -- fix Makefile for bplugininfo linking
+ - Fix Bacula bug #2046 -- sellist limited to 10000
+ - Fix Bacula bug #2045 -- multiply defined daemon_event
+ - Fix Bacula bug #2020 overflow in btape -- Andreas Koch
+
+Bugs fixed/closed since last release:
+2020 2029 2044 2045 2046 2047 2048 2050 2054
+
+
+Release version 7.0.2
+02Apr14
+ - Remove more vestiges of libbacpy
+ - Put back @PYTHON@ path in configure
+ - Fix improper string in parser
+ - Remove libbacpy from rpm spec files
+ - Fix linking check_bacula
+ - Fix new SD login in check_bacula
+ - Tweek docs build process
+
+Release version 7.0.1
+31Mar14
+ - Remove old plugin-test
+ - Update po files
+ - Enable installation of the bpluginfo utility
+ - More tray-monitor updates
+ - Add Simone Caronii to AUTHORS
+ - Align command line switches in manpages.
+ - Apply upgrade to config.guess
+ - Remove bgnome-console and bwx-console leftovers.
+ - Update tray-monitor header also for new bsock calls
+ - Attempt to fix nagios to use new bsock calls
+ - Update tray-monitor to new bsock calls
+
+==========
+Release version 7.0.0
+
+24Mar14
+ - Add Josip Almasi to AUTHORS
+ - [PATCH] Support for restricted consoles in BAT config
+ - [PATCH] Fix for free director directive
+ - [PATCH] Fix auto-select restricted console for director in bconsole
+ - Realign output display
+ - Update ua_output.c from Branch-6.7
+ - Add some missing Branch-6.7 updates
+ - Added needed empty directories to Baculum
+ - Fix for support PostgreSQL, MySQL and SQLite
+ - Framework adjusting to Baculum database connections
+ - Framework fix for lower case tables names in MySQL
+ - Fix for Baculum SQLite support
+ - Initial commit Baculum
+ - Add Marcin to AUTHORS file
+ - Strip trailing blanks
+ - Update copyright year
+ - Update LICENSE and header files
+ - Remove old file
+ - Add new header in misc files
+ - Remove tray-monitor bwx-console manual installation
+ - Remove FD python and examples
+ - Fixup spec files
+ - Remove pythonlib from lib
+ - Update package-list
+ - Fix SDCallsClient daemon synchronization
+ - Add debug code + make 127.0.0.1 same as localhost for tls tests
+ - Fix multiple DIRs in console
+ - Make failure for bat to connect to DIR non-fatal
+ - Fix bat style to one that works
+ - Take disk-changer from Branch-6.7
+ - Simplify Version output
+ - Fix FDVersion for SD Calls Client test
+ - Update accurate test
+ - Update differential test
+ - Add new regress timing scripts
+ - Improve plugin make clean
+ - Implement regress FORCE_SDCALLS
+ - Remove win32 tray-monitor and wx-console directories
+ - Remove regress-config need only regress-config.in
+ - Add configure archivedir
+ - Improve SQL failure reporting
+ - Major backport from BEE to community
+ - Add copyright to mtx-changer.in
 
 Release version 5.2.13
 
@@ -29,7 +260,7 @@ Release version 5.2.13
  - Fix update_postgresql_tables 10 to 11
 
 30Jan13
- - Clean after building doc binaries requested by Willem vd Akker for Debian 
+ - Clean after building doc binaries requested by Willem vd Akker for Debian
   build
 
 29Jan13
@@ -189,7 +420,7 @@ Version 5.2.11
  - Simplify safer delete code using a single regex
 
 08Sep12
- - Clean up error message generation during update attributes -- should fix bug 
+ - Clean up error message generation during update attributes -- should fix bug
   #1823
  - Eliminate heartbeat error messages. Fixes bug #1925
 
@@ -285,7 +516,7 @@ 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 
+ - Ensure cancel status is set for canceled duplicate jobs -- partial fix for
    bug #1851
  - Enhance Win32 error messages -- fixes bug #1879
 
@@ -294,7 +525,7 @@ Version 5.2.8
  - 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 
+ - 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
@@ -400,7 +631,7 @@ Version 5.2.7
  - Fix bug #1853: bacula-sd dead but pid file exists.
 
 23Mar12
- - Fix bug #1841 estimate command level=differential goes wrong in accurate 
+ - Fix bug #1841 estimate command level=differential goes wrong in accurate
   mode.
 
 22Mar12
@@ -408,7 +639,7 @@ Version 5.2.7
  - Fix bug #1848 bsock.c:335 Socket has errors=1 on call to client
 
 10Mar12
- - Force the re-initialization of BaseJobOpts, AccurateOpts and VerifyOpts 
+ - Force the re-initialization of BaseJobOpts, AccurateOpts and VerifyOpts
   between two Include{}
 
 08Mar12
@@ -516,7 +747,7 @@ Version 5.2.4
  - Back out bad MinValue patch
 
 14Jan12
- - Fix bug #1810 use single quotes instead of double quotes for MinValue and 
+ - Fix bug #1810 use single quotes instead of double quotes for MinValue and
   MaxValue in catalog
 
 11Jan12
@@ -524,7 +755,7 @@ Version 5.2.4
  - Set job status to running when restore job really starts
 
 10Jan12
- - Remove ifdeffing that turned off JS_Warning status -- must have been missed 
+ - Remove ifdeffing that turned off JS_Warning status -- must have been missed
   test code
  - Add support for soname setting in libtool.
 
@@ -768,7 +999,7 @@ Version 5.2.1
  - Lower some messages from level M_ERROR to M_WARNING in acl/xatttr.
 
 07Sep11
- - Fix spooldata and ignoreduplicates run command options to use JCR instead of 
+ - Fix spooldata and ignoreduplicates run command options to use JCR instead of
   the Job resource.
 
 30Aug11
@@ -824,7 +1055,7 @@ Version 5.2.0rc1
 - Fix #1602 about Uninstall /S that should not prompt for user interaction
 
 05Jul11
-- Change JobFiles display from %f to %F in RunScript because %f was already 
+- Change JobFiles display from %f to %F in RunScript because %f was already
   affected to Fileset name
 
 28Jun11
@@ -834,7 +1065,7 @@ Version 5.2.0rc1
 21Jun11
 - Solaris make doesn't like comments in make rules.
 - Fix OSX acl regression test.
-- Storing the result in a local variable from sql_num_fields saves us a lot of 
+- Storing the result in a local variable from sql_num_fields saves us a lot of
   callbacks.
 
 15Jun11
@@ -854,7 +1085,7 @@ Version 5.2.0rc1
 - Fix small memory leak when job get canceled.
 
 01Jun11
-- Fix small memory leak in dbcheck not calling free_pool_memory for name 
+- Fix small memory leak in dbcheck not calling free_pool_memory for name
   variable.
 - Remove global variable shadowing by local variable.
 
@@ -881,7 +1112,7 @@ Version 5.2.0rc1
 - AC_CHECK_DECL doesn't seem to work so lets do it somewhat differently.
 
 13May11
-- First attempt at fixing bug #1735 where acls on OSX doesn't seem to reach the 
+- First attempt at fixing bug #1735 where acls on OSX doesn't seem to reach the
   backup.
 
 10May11
@@ -890,7 +1121,7 @@ Version 5.2.0rc1
 04May11
 - Don't force job duplicate checking on copy and migration jobs.
 - Simplify the code path in migration and copy jobs
-- Allow duplicate job check override from run cmdline for migrate and copy 
+- Allow duplicate job check override from run cmdline for migrate and copy
   jobs.
 - Initialize spool_data_set as boolean.
 - Add stat packet size to encode/decode_ routines to detect compile differences
@@ -910,7 +1141,7 @@ Version 5.2.0rc1
 21Apr11
 - Use user arguments when upgrading catalog
 - Change all sm_checks into Dsm_check for performance reasons
-- Free database results on class destruction (e.g. when reference count == 
+- Free database results on class destruction (e.g. when reference count ==
   0)
 
 20Apr11
@@ -1004,7 +1235,6 @@ Version 5.2.0rc1
 - Comment out unused variables in tray-monitor
 - Fix uninitialized variable in bat
 - Fix lock race conditions in bug #1675
-- Add missing code for rename incomplete to rerunning
 - Rename incomplete to rerunning for clarity
 
 23Feb11
@@ -1021,7 +1251,6 @@ Version 5.2.0rc1
 - Add %h option in runscript to get client address
 
 21Feb11
-- Rework Incomplete job intereaction with Base and Accurate
 - Fix seg fault during cancel in SD
 
 19Feb11
@@ -1054,7 +1283,7 @@ Version 5.2.0rc1
 - Use old list_result() in db_list_xxx for good formating
 
 04Feb11
-- Increase Windows backup/restore privileges possible fix to Virtual Disk 
+- Increase Windows backup/restore privileges possible fix to Virtual Disk
   ticket
 
 05Feb11
@@ -1063,10 +1292,10 @@ Version 5.2.0rc1
 
 03Feb11
 - Add configure magic for detecting getpagesize
-- Implement mntent_cache on top of the new htable code using a small htable big 
+- Implement mntent_cache on top of the new htable code using a small htable big
   buffer of 128 Kb to start with.
-- Added support to htable for giving a hint on the number of pages to allocate 
-  for the buffer used for hash_mallocs so we can have htables without the 
+- Added support to htable for giving a hint on the number of pages to allocate
+  for the buffer used for hash_mallocs so we can have htables without the
   previous default of 10 Mb.
 
 05Feb11
@@ -1076,20 +1305,20 @@ Version 5.2.0rc1
 - Add patch from bug #1574 for Scientific Linux spec
 - Apply patches from bug #1672 to clean up configuration
 - Check if volume name is valid in select_media_dbr()
-- Small change to exporting functions not found in include files on some 
-  platforms. Wrap it as one extern "C" block just like its done on most platforms 
+- Small change to exporting functions not found in include files on some
+  platforms. Wrap it as one extern "C" block just like its done on most platforms
   in the proper include files.
-- Fixed some compile errors in IRIX and TRU64 xattr code which is kind of hard 
-  to test without a proper platform. Compiled it now using some tricks on an 
-  other platform defining it is the given platform and fix the compile errors 
+- Fixed some compile errors in IRIX and TRU64 xattr code which is kind of hard
+  to test without a proper platform. Compiled it now using some tricks on an
+  other platform defining it is the given platform and fix the compile errors
   that way using a fake header file.
 
 04Feb11
 - Improve bat stability by checking if page valid
 - Fix segfault with print_memory_pool_stats()
-- Drop last SQL_INC leftovers. Due to backend abstraction there is no need to 
-  include backend specific include files anywhere then in the backend driver 
-  which use now per backend specific include directives. SQL_INC is not set by 
+- Drop last SQL_INC leftovers. Due to backend abstraction there is no need to
+  include backend specific include files anywhere then in the backend driver
+  which use now per backend specific include directives. SQL_INC is not set by
   configure anymore and should not be used anymore.
 
 03Feb11
@@ -1114,22 +1343,22 @@ Version 5.2.0rc1
 - Fix bad character in cats/sql_cmds.c
 
 31Jan11
-- Removed old queries from sql_cmds.[ch] which are no longer referenced and 
+- Removed old queries from sql_cmds.[ch] which are no longer referenced and
   thus polluting the namespace for no obvious reason.
 - Fix possible core-dump as seen in regression testing
 
 28Jan11
 - Ensure that we always close the transaction in db_big_sql_query()
-- Implement db_big_sql_query() that uses cursor on PostgreSQL and limit memory 
+- Implement db_big_sql_query() that uses cursor on PostgreSQL and limit memory
   usage in db_list_xxx
 - Detect mount/junction points and ignore junctions in Windows
 
 25Jan11
-- Added set_db_type function to set global debug symbol removed when doing 
-  class based catalog backends. Coding is a bit different as we need get_db_type 
-  which needs a bdb class so we have to set it as part of the loop over all 
-  catalogs. This way we may set the global variable a couple of times but the 
-  code frees the global variable if needed so other then being somewhat overkill 
+- Added set_db_type function to set global debug symbol removed when doing
+  class based catalog backends. Coding is a bit different as we need get_db_type
+  which needs a bdb class so we have to set it as part of the loop over all
+  catalogs. This way we may set the global variable a couple of times but the
+  code frees the global variable if needed so other then being somewhat overkill
   no harm is done.
 - Drop removed catalog function prototype.
 - Fix logic inversion.
@@ -1162,7 +1391,7 @@ Version 5.2.0rc1
 - Fix #1685 about JobBytes counter when using Accurate/BaseJobs with checksum
 
 12Jan11
-- Ignore replace=xx for directories. Corrects (not total solution) ticket 2317 
+- Ignore replace=xx for directories. Corrects (not total solution) ticket 2317
   and bug #1444
 - Add restore replace=never test ticket 2317
 - Add replace=xxx on restore command line
@@ -1211,14 +1440,14 @@ Version 5.2.0rc1
 - Fix compiler warning.
 
 19Dec10
-- Set proper status of autochanger slots with 0 on startup -- no volume rather 
+- Set proper status of autochanger slots with 0 on startup -- no volume rather
   than unknown
 
 14Dec10
 - Add indentation in lsmark command output
 
 17Dec10
-- Change SELECT count(*) to SELECT 1 .. LIMIT 1 to speed up PostgreSQL and 
+- Change SELECT count(*) to SELECT 1 .. LIMIT 1 to speed up PostgreSQL and
   Innodb in is_volume_purged()
 
 01Dec10
@@ -1232,14 +1461,14 @@ Version 5.2.0rc1
 - Fix end plugin stream index
 
 16Dec10
-- Add missing switch values although the code works this is cleaner. Give 
-  better error when trying to restore a particular type of acl on a filesystem 
+- Add missing switch values although the code works this is cleaner. Give
+  better error when trying to restore a particular type of acl on a filesystem
   without support for those types of acls.
 
 15Dec10
-- Added support for NFSv4 ACLs added to FreeBSD 8.1. Some small updates to some 
+- Added support for NFSv4 ACLs added to FreeBSD 8.1. Some small updates to some
   comments of other ACL implementations.
-- Added additional extended attributes used under FreeBSD for the storage of 
+- Added additional extended attributes used under FreeBSD for the storage of
   ACLs.
 
 14Dec10
@@ -1279,7 +1508,7 @@ Version 5.2.0rc1
 - Prepare for adding high bits to Stream
 - Use new FO_xxx bits in backup/restore and plugins
 - Define new stream bits
-- Separate definitions of streams, filetypes, and fileoptions to separate 
+- Separate definitions of streams, filetypes, and fileoptions to separate
   files
 - Rename bEventVssSnapshotLetters to bEventPrepareSnapshot
 - rename plugin->len to plugin->file_len
@@ -1389,7 +1618,7 @@ Version 5.2.0rc1
 - Set daemon name and host name to zero
 
 05Nov10
-- Permit to get Where/RegexWhere from Plugin and give access to Accurate 
+- Permit to get Where/RegexWhere from Plugin and give access to Accurate
   data
 - Allow Plugin command without argument
 - Fix compilation problem on win64
@@ -1419,18 +1648,18 @@ Version 5.2.0rc1
 - Use start-stop-daemon handler to run daemons as bacula:bacula
 
 26Sep10
-- Reverted the change of TRU64 to OSF1 for the OS detection rules. Although 
+- Reverted the change of TRU64 to OSF1 for the OS detection rules. Although
   Compaq/HP renamed OSF1 to TRU64 lets leave it for now.
-- Fix new IRIX xattr code. Be a bit smarter when freeing data and do it in the 
+- Fix new IRIX xattr code. Be a bit smarter when freeing data and do it in the
   exception handler (e.g. after the goto label)
 - Fix some trivial errors and implemented the restore of IRIX xattrs.
 - Added first try at supporting IRIX extended attributes.
 
 25Sep10
-- Added configure logic for detecting the TRU64 extended attributes interface. 
-  Also made the acl and xattr configure logic use the HAVE_XXX_OS_TRUE variable 
-  which is set by BA_CHECK_OPSYS macro so we only check for a certain interface 
-  that we know only exist on a certain platform when we are running on that 
+- Added configure logic for detecting the TRU64 extended attributes interface.
+  Also made the acl and xattr configure logic use the HAVE_XXX_OS_TRUE variable
+  which is set by BA_CHECK_OPSYS macro so we only check for a certain interface
+  that we know only exist on a certain platform when we are running on that
   platform. This should make the configure output much cleaner.
 
 24Sep10
@@ -1484,30 +1713,30 @@ Version 5.2.0rc1
 
 23Sep10
 - Add missing new stream definitions.
-- Added xattr interface found in AIX 6.x and higher which mimics the Linux/OSF 
-  interface but has just a bit different named functions and the error codes 
-  are somewhat different so its not a perfect match to extend the generic 
-  interface (which is named generic now instead of the linux interface as it 
+- Added xattr interface found in AIX 6.x and higher which mimics the Linux/OSF
+  interface but has just a bit different named functions and the error codes
+  are somewhat different so its not a perfect match to extend the generic
+  interface (which is named generic now instead of the linux interface as it
   used by Linux and OSX).
 - Added configure support for the AIX extended attributes interface.
-- Added extra check for Solaris xattr support so we don't get false positives 
+- Added extra check for Solaris xattr support so we don't get false positives
   on other os-es (AIX) etc.
 
 22Sep10
-- First compiling version of AIX 5.3 and later acl code using the new aclx_get 
+- First compiling version of AIX 5.3 and later acl code using the new aclx_get
   and aclx_put interface.
-- AIX also supports setmntent/getmntent so use that instead of much more 
-  complicated other interface which is left for AIX systems that might not 
+- AIX also supports setmntent/getmntent so use that instead of much more
+  complicated other interface which is left for AIX systems that might not
   support the setmntent/getmntent interface.
 
 17Sep10
 - Handle the old stream using the old system call just to be safe for now.
 
 16Sep10
-- First steps for adding new interface for acls added to AIX 5.3 and later. 
-  Added 2 new streams and basic code to handle these streams. Next step is the 
+- First steps for adding new interface for acls added to AIX 5.3 and later.
+  Added 2 new streams and basic code to handle these streams. Next step is the
   actual implementation.
-- Rewrote ACL configure logic to be somewhat better readable in the same style 
+- Rewrote ACL configure logic to be somewhat better readable in the same style
   as the new xattr configure logic.
 
 22Sep10
@@ -1524,7 +1753,7 @@ Version 5.2.0rc1
 - Add skeleton of new bat run dialogs
 
 18Sep10
-- Fix getmntinfo handling on FreeBSD as it seems its the same as OSX (no real 
+- Fix getmntinfo handling on FreeBSD as it seems its the same as OSX (no real
   surprise).
 
 10Sep10
@@ -1535,19 +1764,19 @@ Version 5.2.0rc1
 - Tweack project file to mark Item 7 done
 
 30Aug10
-- Fix the insert_autokey_record functions to be 64bit compliant. This fixes a 
-  long standing bug in the postgresql code where the id was converted using 
+- Fix the insert_autokey_record functions to be 64bit compliant. This fixes a
+  long standing bug in the postgresql code where the id was converted using
   atoi which is now changed into a str_to_int64.
 
 17Aug10
-- When moving zlib into its seperate ZLIBS variable forgot to update the stored 
-  Makefile.in which still uses FDLIBS. But as FDLIBS now only contains libraries 
-  explicitly needed for building the filed this doesn't work. This should fix 
-  that. This is mostly a problem on Solaris like operating system as the linker 
+- When moving zlib into its seperate ZLIBS variable forgot to update the stored
+  Makefile.in which still uses FDLIBS. But as FDLIBS now only contains libraries
+  explicitly needed for building the filed this doesn't work. This should fix
+  that. This is mostly a problem on Solaris like operating system as the linker
   doesn't load all dependency libs and gives unresolved symbols.
 
 20Sep10
-- Fix bug #1623 about indexes that are already created or deleted in postgresql 
+- Fix bug #1623 about indexes that are already created or deleted in postgresql
   upgrade process.
 - First cut of bat rerun a Job from Jobs Run
 - Allow sorting of more bat media columns
@@ -1590,7 +1819,7 @@ Version 5.2.0rc1
 
 12Aug10
 - Make third argument of DEVICE::d_ioctl optionnal to emulate varg
-- Use SMARTALLOC+memset instead of overload new/delete that doesn't work in 
+- Use SMARTALLOC+memset instead of overload new/delete that doesn't work in
   bat
 
 02Sep10
@@ -1704,9 +1933,9 @@ Version 5.2.0rc1
 - Fix #1600 about problems with Accurate code on MySQL
 
 26Jun10
-- Fix bug #1587 if you have clients with different catalogs configured, both 
+- Fix bug #1587 if you have clients with different catalogs configured, both
   catalogs contains all clients after a reload or restart of the dir
-- Fix bug #1577 During migration: ERROR in block.c:950 Failed ASSERT: dev->is_open() 
+- Fix bug #1577 During migration: ERROR in block.c:950 Failed ASSERT: dev->is_open()
   by moving and commenting out the ASSERT()
 
 24Jun10
@@ -1747,7 +1976,7 @@ Version 5.2.0rc1
 - Attempt to fix duplicate job kill seg fault
 - Replace pthread_kill by my_thread_send_signal() in jcr.c
 - Fix postgresql error in grant script
-- fix #1595 about batch mode detection problem for postgresql with non standard 
+- fix #1595 about batch mode detection problem for postgresql with non standard
   install dir
 - Add TestName to gdb traceback
 - Fix accurate code
@@ -1767,7 +1996,7 @@ Version 5.2.0rc1
 
 11Jun10
 - Add new upgrade script from DB vers 12 to 13
-- Add BDB_VERSION for scripts + prepare update 11 to 12 + automate BDB_VERSION 
+- Add BDB_VERSION for scripts + prepare update 11 to 12 + automate BDB_VERSION
   checking
 
 09Jun10
@@ -1784,7 +2013,7 @@ Version 5.2.0rc1
 
 01Jun10
 - Fix segfault on "cancel jobid=" command
-- Create table with jobids as a temporary table and move the sql definition to 
+- Create table with jobids as a temporary table and move the sql definition to
   sql_cmds.c. We use a default query for all databases but Ingres.
 - Update makefiles for new libtool revision
 - Simplify libtool revision and use VERSION as default
@@ -1794,7 +2023,7 @@ Version 5.2.0rc1
 - Convert all Jmsg on the watchdog thread to Qmsg
 
 30May10
-- Don't set socket buffer size unless explicite set by users. Suggested change 
+- Don't set socket buffer size unless explicite set by users. Suggested change
   from bug #1493
 - Fix bug #1554 Windows installer doesn't honor /S flag
 
@@ -1806,10 +2035,10 @@ Version 5.2.0rc1
 
 27May10
 - Fix bug #1581 ASSERTs in src/dird/jobq.c can never trigger
-- Removed workaround for bug in Ingres with insert into tables with sequences 
-  from the batch insert temporary table. Added comment to the Ingres make table 
-  script to document the bug numbers which should be fixed in the Ingres 
-  version to be able to run batch inserts and currently known patch numbers for 
+- Removed workaround for bug in Ingres with insert into tables with sequences
+  from the batch insert temporary table. Added comment to the Ingres make table
+  script to document the bug numbers which should be fixed in the Ingres
+  version to be able to run batch inserts and currently known patch numbers for
   Solaris x86 and Linux x86_64.
 
 25May10
@@ -1827,23 +2056,23 @@ Version 5.2.0rc1
 - Do not use mtime with basejobs
 
 18May10
-- Optimize the selection process for saving either AFS or Native ACLS by 
-  keeping track of the filesystem we are doing a backup of. This way we don't 
-  have to check if a filesystem is still either AFS or not as when we know if 
-  it is all files on the same filesystem are either AFS or not. We also clear 
-  the native save flag when a filesystem says it doesn't support acls so we 
+- Optimize the selection process for saving either AFS or Native ACLS by
+  keeping track of the filesystem we are doing a backup of. This way we don't
+  have to check if a filesystem is still either AFS or not as when we know if
+  it is all files on the same filesystem are either AFS or not. We also clear
+  the native save flag when a filesystem says it doesn't support acls so we
   don't keep on trying saving acls on filesystem that don't support them.
 
 16May10
-- Added preliminary AFS acl support. The code may need some testing on a real 
-  AFS enabled server as most of the code was written using information available 
+- Added preliminary AFS acl support. The code may need some testing on a real
+  AFS enabled server as most of the code was written using information available
   on the Internet. The code compiles and links on Linux using OpenAFS 1.4.
-- Added fstype rewrite code so we have a uniform way of retrieving the fstype 
-  on Linux and OSF1 without the need to add code for each new filesystem added 
+- Added fstype rewrite code so we have a uniform way of retrieving the fstype
+  on Linux and OSF1 without the need to add code for each new filesystem added
   to a OS.
 
 14May10
-- First stab at a simple script to dump the content of the complete Ingres 
+- First stab at a simple script to dump the content of the complete Ingres
   bacula database for disaster recovery purposes.
 
 10May10
@@ -1873,10 +2102,10 @@ Version 5.2.0rc1
 - Fix RestoreObject for PostgreSQL
 
 01May10
-- Move some AC_MSG_RESULT macros around so the configure output looks somewhat 
+- Move some AC_MSG_RESULT macros around so the configure output looks somewhat
   cleaner.
-- Move libz out of FDLIBS into a seperate variable as we need it for libbac.so 
-  now too as it also has libz compiled functions. This way we keep the FDLIBS 
+- Move libz out of FDLIBS into a seperate variable as we need it for libbac.so
+  now too as it also has libz compiled functions. This way we keep the FDLIBS
   cleaner with only extra libs need for the Filed to compile.
 - Fix RestoreObject schema on PostgreSQL
 - Fix insertion of RestoreObject
@@ -1887,9 +2116,9 @@ Version 5.2.0rc1
 - Rework sql queries for update copies
 
 30Apr10
-- Don't hardcode temporary table creation as some backend have a somewhat 
+- Don't hardcode temporary table creation as some backend have a somewhat
   different SQL syntax.
-- Added missing column in Ingres database definition for new database object as 
+- Added missing column in Ingres database definition for new database object as
   reported by Stefan.
 
 28Apr10
@@ -1898,9 +2127,9 @@ Version 5.2.0rc1
 - Fix File and Job Retention in show pool command
 
 27Apr10
-- Add Polish translation. This translation project is sponsored by Inteos Sp. z 
+- Add Polish translation. This translation project is sponsored by Inteos Sp. z
   o.o. based in Warsaw, PL.
-- Change Ingres query filter to set a realy early timestamp instead of an empty 
+- Change Ingres query filter to set a realy early timestamp instead of an empty
   string which doesn't seem to work on all Ingres versions.
 - Add new file I missed from James' plugin patch
 
@@ -1915,19 +2144,19 @@ Version 5.2.0rc1
 - Put attr.c debug on dbglvl
 
 24Apr10
-- Use lwps cmd in dbx and no threads as it seems to give some strange side 
-  effects e.g. doesn't work and lwps seems to always work. So lwps it is 
+- Use lwps cmd in dbx and no threads as it seems to give some strange side
+  effects e.g. doesn't work and lwps seems to always work. So lwps it is
   then.
 - Fix #1559 problem when restoring pruned jobs with a regexp
-- Do some work on the btraceback on Solaris, we test to see what debugger is 
-  available and we prefer the debuggers in this order: dbx, gdb, mdb. Also 
-  enchanced the dbx bactrace somewhat that it always dumps all available 
-  threads (e.g. we also changed from lwp to threads for dbx). We also print 
-  some variables that the gdb script also dumps on a bactrace. Hopefully we get 
-  some better dumps using this. The mdb is used as a last resort as it should 
-  be always installed on a Solaris box (dbx and gdb may not) but at the moment 
-  I'm still trying to find out how to get some more understandable dumps from 
-  mdb as its rather rudimentary and more a crash debugger then a source code 
+- Do some work on the btraceback on Solaris, we test to see what debugger is
+  available and we prefer the debuggers in this order: dbx, gdb, mdb. Also
+  enchanced the dbx bactrace somewhat that it always dumps all available
+  threads (e.g. we also changed from lwp to threads for dbx). We also print
+  some variables that the gdb script also dumps on a bactrace. Hopefully we get
+  some better dumps using this. The mdb is used as a last resort as it should
+  be always installed on a Solaris box (dbx and gdb may not) but at the moment
+  I'm still trying to find out how to get some more understandable dumps from
+  mdb as its rather rudimentary and more a crash debugger then a source code
   debugger.
 - Fix for bug #1560 bcopy cannot find Volume
 - Add beef
@@ -1942,31 +2171,31 @@ Version 5.2.0rc1
 - Fix cancel crash bug #1551
 
 21Apr10
-- A timestamp can only be assigned to a timestamp in Ingres unless we convert 
-  it inline. But why should we the code to get Timestamps is already there so 
+- A timestamp can only be assigned to a timestamp in Ingres unless we convert
+  it inline. But why should we the code to get Timestamps is already there so
   change it and we are allright.
 - For Ingres always enable batch mode inserts.
 - reindent some Ingres DECLARE queries so they are better readable.
-- Lets not use the mdb->transaction bool but create a private one named mdb->explicit_commit 
-  as mdb->transaction is used by the bacula core and we need a private setting 
+- Lets not use the mdb->transaction bool but create a private one named mdb->explicit_commit
+  as mdb->transaction is used by the bacula core and we need a private setting
   for Ingres.
-- Lets have a single exit from db_write_batch_file_records where we always drop 
+- Lets have a single exit from db_write_batch_file_records where we always drop
   the temporary batch table.
 - Fix job_metadata name problem
 - Allow traceback with gdb on Solaris
 
 20Apr10
-- Implement IS_NUM for Ingres by using eqsqlda.h IISQ_ values for numeric types 
+- Implement IS_NUM for Ingres by using eqsqlda.h IISQ_ values for numeric types
   supported by Ingres.
 - Correct Pool display in SD status. Fixes bug #1541
 - Add performance notes in make_xxx_tables.in files
 
 19Apr10
-- Fix Ingres problems with queries with have both an LIMIT and OFFSET clause as 
-  we need to reorder this query for Ingres to be understandable we need some 
-  more regexp magic for now. Lets make things exentsible and allow for multiple 
-  regexps all being fired on a query transforming it into the query to execute. 
-  Dropped the encoding check which is for postgresql but not interesting for 
+- Fix Ingres problems with queries with have both an LIMIT and OFFSET clause as
+  we need to reorder this query for Ingres to be understandable we need some
+  more regexp magic for now. Lets make things exentsible and allow for multiple
+  regexps all being fired on a query transforming it into the query to execute.
+  Dropped the encoding check which is for postgresql but not interesting for
   Ingres now we use VARBYTE and not VARCHAR.
 - Fix cancel crash reported by Stephen Thompson
 - Check if sql backend is thread-safe
@@ -1991,9 +2220,9 @@ Version 5.2.0rc1
 
 17Apr10
 - Update Ingres temporary table definitions with new datatypes and lengths.
-- Added extra check to scream when we encounter a database datatype which we 
-  don't support yet. This should never happen as we should implement new 
-  datatypes when we use them in the schema but some defensive programming 
+- Added extra check to scream when we encounter a database datatype which we
+  don't support yet. This should never happen as we should implement new
+  datatypes when we use them in the schema but some defensive programming
   doesn't hurt.
 - Some small indent changes.
 - Possible fix for big-files-test
@@ -2001,41 +2230,41 @@ Version 5.2.0rc1
 - Add back line accidentally deleted -- fixes verify-vol tests
 - Remove inappropriate comments and unused line
 - Fix badly named index
-- First stab at rewriting the ingres database schema to allow bigger path and 
-  filenames up to the current limit of 32000 bytes. Also reindented the database 
-  definitions to the Bacula standards which make it somewhat easier to read. 
-  Implemented the retrieval of some additional datatypes in the ingres backend 
+- First stab at rewriting the ingres database schema to allow bigger path and
+  filenames up to the current limit of 32000 bytes. Also reindented the database
+  definitions to the Bacula standards which make it somewhat easier to read.
+  Implemented the retrieval of some additional datatypes in the ingres backend
   now we switched some types from VARCHAR to VARBYTE.
 
 16Apr10
 - Remove closelog() in bpipe fixes bug #1536
 - Convert restore object to use STREAM_RESTORE_OBJECT; cleaner code
-- For now the Ingres type is not TEXT but VARCHAR(256) so lets define the 
+- For now the Ingres type is not TEXT but VARCHAR(256) so lets define the
   temporary table that way.
-- Seperate some basejob queries into sql_cmds.c so the code is cleaner and we 
+- Seperate some basejob queries into sql_cmds.c so the code is cleaner and we
   can specify the Ingres specific definition of a temporary table.
-- Remove some strange includes halve way this file which seems to be some 
+- Remove some strange includes halve way this file which seems to be some
   copied code from the top of the file.
 - Fix RestoreObject make_sqlite3_table.in syntax
 
 15Apr10
-- DISTINCT ON postgresql queries won't work on Ingres so try if the MySQL 
+- DISTINCT ON postgresql queries won't work on Ingres so try if the MySQL
   queries do any better on Ingres.
-- Small changes to btraceback script so on solaris we don't get strange errors 
-  as PNAME is not a single binary name and that doesn't work to great for doing 
+- Small changes to btraceback script so on solaris we don't get strange errors
+  as PNAME is not a single binary name and that doesn't work to great for doing
   a gcore.
 - Add install and uninstall of btraceback.mdb script
 
 14Apr10
 - Remove bad index tips on mysql creation script
 - Apply James' patch with my restore object changes
-- Add vss_close_backup_session after find_files + add object_name to restore 
+- Add vss_close_backup_session after find_files + add object_name to restore
   object
 
 13Apr10
-- Ingres doesn't understand a query string with ORDER BY LastWritten IS NULL,LastWritten 
-  DESC,MediaId and we must rewrite it to ORDER BY IFNULL(LastWritten, '') 
-  DESC,MediaId which we now do by using an array with the correct order statement 
+- Ingres doesn't understand a query string with ORDER BY LastWritten IS NULL,LastWritten
+  DESC,MediaId and we must rewrite it to ORDER BY IFNULL(LastWritten, '')
+  DESC,MediaId which we now do by using an array with the correct order statement
   per backend in sql_cmds just as some of the other database specific queries.
 
 12Apr10
@@ -2049,8 +2278,8 @@ Version 5.2.0rc1
 10Apr10
 - Extract restore object and send to FD first cut
 - Add Ingres RestoreObject SQL changes
-- Rename sql_insert_id into sql_insert_autokey_record so things are somewhat 
-  cleaner in name and things don't seem to imply we are just a mysql_insert_id 
+- Rename sql_insert_id into sql_insert_autokey_record so things are somewhat
+  cleaner in name and things don't seem to imply we are just a mysql_insert_id
   replacement, which we are not.
 
 09Apr10
@@ -2081,10 +2310,10 @@ Version 5.2.0rc1
 - Start RESTORE_OBJECT code
 
 08Apr10
-- Fixed postgresql grant script which I seem to have updated while I thought I 
-  updated the Ingres one. Also added a missing entry as reported by Martin 
+- Fixed postgresql grant script which I seem to have updated while I thought I
+  updated the Ingres one. Also added a missing entry as reported by Martin
   Simmons.
-- First attempt at using mdb on Solaris instead of dbx which isn't standard on 
+- First attempt at using mdb on Solaris instead of dbx which isn't standard on
   most current Solaris versions.
 - fix grant_postgresql_privileges doesn t grant permissions on jobhisto_jobid_seq
 - Add back something that for whatever reason got lost on last big merge.
@@ -2100,41 +2329,41 @@ Version 5.2.0rc1
 05Apr10
 - Added empty db_check_backend_thread_safe to dbi backend.
 - Change cryptic aop name
-- Make sql_insert_id a atomic function which executes the insert query and when 
-  that succeeds retrieves the id the database used for storing the inserted 
-  record. Some databases want this to be atomic (e.g. without a COMMIT in 
+- Make sql_insert_id a atomic function which executes the insert query and when
+  that succeeds retrieves the id the database used for storing the inserted
+  record. Some databases want this to be atomic (e.g. without a COMMIT in
   between.) Coding wise this is also much cleaner.
 - Drop have_insert_id in mdb as its always true for all backends.
-- Lets call it COMMIT and not END as that seems to be the counterpart of BEGIN 
-  for transactions. Updated Ingres lock queries to only start a transaction as 
+- Lets call it COMMIT and not END as that seems to be the counterpart of BEGIN
+  for transactions. Updated Ingres lock queries to only start a transaction as
   the current SQL is not valid Ingres SQL.
 
 04Apr10
-- First attempt at making things multi-threaded and make it possible to have 
-  multiple connections to the database without having the dreaded ERR=E_LQ002E 
-  The 'execute immediate' query has been issued outside of a DBMS session. This 
+- First attempt at making things multi-threaded and make it possible to have
+  multiple connections to the database without having the dreaded ERR=E_LQ002E
+  The 'execute immediate' query has been issued outside of a DBMS session. This
   compiles but seems to give some problems so into the debugger it is.
-- Use -lq.1 -lcompat.1 as shared libraries instead of linking with -lingres 
-  which is a static library. Also need to change generated code of esqlcc a bit 
+- Use -lq.1 -lcompat.1 as shared libraries instead of linking with -lingres
+  which is a static library. Also need to change generated code of esqlcc a bit
   to get things to link with the IIsqlca function.
-- As we have a multithreaded application let tell that to esqlcc so it can 
+- As we have a multithreaded application let tell that to esqlcc so it can
   optimize for that.
 - Fix bscan segfault with new comment field
 
 03Apr10
-- Creating a database as an other user and giving grants doesn't seem to work 
-  for Ingres. Strange so for now create everything using the -u${db_user} 
-  option. This is something that needs to be investigated as it should be 
+- Creating a database as an other user and giving grants doesn't seem to work
+  for Ingres. Strange so for now create everything using the -u${db_user}
+  option. This is something that needs to be investigated as it should be
   possible to have an different owner of the database.
 - Create user in the right database for Ingres.
-- Do all Ingres operations as the user invoking the script just as for all the 
-  other databases. The grant script will make sure the db_user will have the 
+- Do all Ingres operations as the user invoking the script just as for all the
+  other databases. The grant script will make sure the db_user will have the
   proper access rights to the database tables and sequences.
 - Fix username argument to sql for Ingres grants.
 - Replace ASSERT in block.c with fail Job
 - Make the Ingres grant script work.
 - Use uint32_t for max_concurrent_jobs
-- Fix grant script to set grants on correct sequence names and not PostgreSQL 
+- Fix grant script to set grants on correct sequence names and not PostgreSQL
   names.
 - Add new item to projects
 
@@ -2142,10 +2371,10 @@ Version 5.2.0rc1
 - Fix bug #1542 File Daemon outputs usage message to stdout instead of stderr
 - Apply James' rename events patch
 - Apply James' plugin patch
-- Added limit_filter which rewrites queries which use the LIMIT functions into 
-  something Ingres can understand. Removed all static functions from the 
-  myingres.sh file as they are no longer an exported interface (we can always 
-  put that back when we have the need to export more functions). Some other 
+- Added limit_filter which rewrites queries which use the LIMIT functions into
+  something Ingres can understand. Removed all static functions from the
+  myingres.sh file as they are no longer an exported interface (we can always
+  put that back when we have the need to export more functions). Some other
   rewrites of the code to make it somewhat cleaner.
 
 01Apr10
@@ -2166,7 +2395,7 @@ Version 5.2.0rc1
 
 27Mar10
 - Fix compiler warning.
-- Fix database locking calling db_lock and returning from function without 
+- Fix database locking calling db_lock and returning from function without
   calling db_unlock.
 - Apply James' wide char patch
 - Patch from James
@@ -2206,7 +2435,7 @@ Version 5.2.0rc1
 - syntax fix, test improved, empty results fixed
 - Add read_vol_list mutex to lockmgr prio
 - Fix #1527 about deadlock during migration
-- When including term.h we don't need prototypes for tgetent, tgetnum and 
+- When including term.h we don't need prototypes for tgetent, tgetnum and
   tgetstr as they are defined in term.h on Solaris.
 
 10Mar10
@@ -2237,8 +2466,8 @@ Version 5.2.0rc1
 - Fix bug #1524 verify fails after adding or removing files
 - Fix bug 1523.
 - Apply fix suggested by Andreas in bug #1502 for mediaview column sort problem
-- Lets not generate the ingres code automatically when the .sc or .sh files 
-  changes as it seems these files get outdated on some systems and then this 
+- Lets not generate the ingres code automatically when the .sc or .sh files
+  changes as it seems these files get outdated on some systems and then this
   rule kicks in on systems that don't have the esqlcc ingres compiler installed.
 
 04Mar10
@@ -2249,18 +2478,18 @@ Version 5.2.0rc1
 
 05Mar10
 - This adds sql debugging to these classes that Eric wrote.
-- This is a 1/2 fix of the issue. It allows for the sorting of the two non 
-  graphic columns, but still does not allow for sorting the graphic columns. 
-  The issue is with last. By setting the sort value, you are setting the value 
-  on the last. To experiment with what I mean, use the set background that I 
+- This is a 1/2 fix of the issue. It allows for the sorting of the two non
+  graphic columns, but still does not allow for sorting the graphic columns.
+  The issue is with last. By setting the sort value, you are setting the value
+  on the last. To experiment with what I mean, use the set background that I
   have commented out in this commit.
 
 04Mar10
 - Create AddExclude entry point for plugins
 
 03Mar10
-- Lets generate ingres code by calling esqlcc and not esqlc as we want c++ 
-  code. Replaced some strncpy by bstrncpy calls. Add dependency in Makefile of 
+- Lets generate ingres code by calling esqlcc and not esqlc as we want c++
+  code. Replaced some strncpy by bstrncpy calls. Add dependency in Makefile of
   generated code on it source file.
 - Another file to add James' code to get VssObject
 - Add James' code to get VssObject
@@ -2268,7 +2497,7 @@ Version 5.2.0rc1
 - Display AllowCompress warning message only if compression used in FileSet
 
 01Mar10
-- Added comment on dbi backend needing a recent version of libdbi from CVS as 
+- Added comment on dbi backend needing a recent version of libdbi from CVS as
   the version currently released 0.8.3 wont work for compiling the code.
 - Add Warning check to SQL
 - Fix readline to use TERM_LIB found for conio
@@ -2316,8 +2545,8 @@ Version 5.2.0rc1
 - Added patch from Stefan Reddig -- improved ingres db test
 - Added patch from Stefan Reddig -- added some checks, db test prog
 - bug report 1505
-- This version fixes an issue where the console window would start out not 
-  docked. It is fixed by initiating the variables in the Pages class with a 
+- This version fixes an issue where the console window would start out not
+  docked. It is fixed by initiating the variables in the Pages class with a
   constructor.
 
 19Feb10
@@ -2342,7 +2571,7 @@ Version 5.2.0rc1
 - Avoid error message if git not installed
 
 15Feb10
-- Apply fix to previous fix of Copy problem. Fix proposed by reporter of bug 
+- Apply fix to previous fix of Copy problem. Fix proposed by reporter of bug
   #1476
 - Set default Allow Duplicate Jobs = yes
 - Better cancel + fix Allow Dups code
@@ -2367,7 +2596,7 @@ Version 5.2.0rc1
 - Add code to check and prevent setting StorageId to zero
 
 12Feb10
-- Lets call the Ingres version of the tables also version 12 as it already has 
+- Lets call the Ingres version of the tables also version 12 as it already has
   all the new tables introduced in version 12 on the other backends.
 - First cut at fixing AllowDuplicateJobs bugs
 - Fix bug #1501 -t does not print errors
@@ -2384,7 +2613,7 @@ Version 5.2.0rc1
 
 10Feb10
 - Work around SQLite3 bug in bat submitted by Andreas Piesk a.piesk at gmx.net
-- Move shared object numbers into version.h + use -release for libtool rather 
+- Move shared object numbers into version.h + use -release for libtool rather
   than -version-info
 - Make mtx-changer errors clearer
 - Check for existence of mtx-changer.conf in mtx-changer script
@@ -2407,7 +2636,7 @@ Version 5.2.0rc1
 
 07Feb10
 - Fix Mysql database upgrade.
-- Fix bug #1488 -- create delivery_error() subroutine to avoid recursion and 
+- Fix bug #1488 -- create delivery_error() subroutine to avoid recursion and
   race conditions in messages.c
 - Upgrade cats lib also to 5.1.0
 
@@ -2416,7 +2645,7 @@ Version 5.2.0rc1
 - Move msg trace into subroutine
 - Move bat help files into help subdirectory
 - Add bat help files to Win64 installer
-- Win -- add help files to installer + stop any running bacula-fd before 
+- Win -- add help files to installer + stop any running bacula-fd before
   install
 - Fix bug #1481 -- bat consumes all console file descriptors
 - Update date on win32 rc file
@@ -2436,7 +2665,7 @@ Version 5.2.0rc1
 - Implement new "purge volume action" command to trigg ActionOnPurge.
 - Disable action_on_purge message in Storage
 - Change db_get_media_ids() to use more MEDIA_DBR info in search
-- Remove qmake-qt4 code so tht alternate qt4 build works. Fixes build problems 
+- Remove qmake-qt4 code so tht alternate qt4 build works. Fixes build problems
   in bug #1468
 - Make configure.in changes recommended by Markus Elfring
 - Patch from checks multple CNs when using TLS
@@ -2448,10 +2677,10 @@ Version 5.2.0rc1
 - Fix seg fault in SQlite driver
 
 29Jan10
-- - fixed the database/table scripts - db_user was missing - updated database 
-  schema - fixed missing statements in sql*.h - since there is a db_type for 
-  Ingres now, there have to be 5, not 4, members in the arrays - worked alot on 
-  myingres.c - queries seems to be working, but the first INSERT fails with a 
+- - fixed the database/table scripts - db_user was missing - updated database
+  schema - fixed missing statements in sql*.h - since there is a db_type for
+  Ingres now, there have to be 5, not 4, members in the arrays - worked alot on
+  myingres.c - queries seems to be working, but the first INSERT fails with a
   segfault
 - Remove old bdb files + change DQUEUE to use dlist
 - Change copyright date
@@ -2489,7 +2718,7 @@ Release version 5.0.3
 - Fix compilation problem with zlib
 
 02Aug10
-- Remove comments field from tls-duplicate-job-test -- add back next database 
+- Remove comments field from tls-duplicate-job-test -- add back next database
   upgrade
 
 01Aug10
@@ -2590,9 +2819,9 @@ Release version 5.0.3
 - Fix SD crash due to mismatched lock/unlock in error condition
 
 26Jun10
-- Fix bug #1587 if you have clients with different catalogs configured, both 
+- Fix bug #1587 if you have clients with different catalogs configured, both
   catalogs contains all clients after a reload or restart of the dir
-- Fix bug #1577 During migration: ERROR in block.c:950 Failed ASSERT: dev->is_open() 
+- Fix bug #1577 During migration: ERROR in block.c:950 Failed ASSERT: dev->is_open()
   by moving and commenting out the ASSERT()
 
 23Jun10
@@ -2627,7 +2856,7 @@ Release version 5.0.3
 18Jun10
 - Attempt to fix duplicate job kill seg fault
 - Replace pthread_kill by my_thread_send_signal() in jcr.c
-- fix #1595 about batch mode detection problem for postgresql with non standard 
+- fix #1595 about batch mode detection problem for postgresql with non standard
   install dir
 - Fix accurate code
 - Add TestName to gdb traceback
@@ -2767,18 +2996,18 @@ Release Version 5.0.2
 - Fix bug #1524 verify fails after adding or removing files
 - Fix bug 1523.
 - Apply fix suggested by Andreas in bug #1502 for mediaview column sort problem
-- Lets not generate the ingres code automatically when the .sc or .sh files 
-  changes as it seems these files get outdated on some systems and then this 
+- Lets not generate the ingres code automatically when the .sc or .sh files
+  changes as it seems these files get outdated on some systems and then this
   rule kicks in on systems that don't have the esqlcc ingres compiler installed.
 - Fix CentOS detection in regression get-os script
 
 05Mar10
 - Create subroutines to add exclusion for plugins
 - This adds sql debugging to these classes that Eric wrote.
-- This is a 1/2 fix of the issue. It allows for the sorting of the two non 
-  graphic columns, but still does not allow for sorting the graphic columns. 
-  The issue is with last. By setting the sort value, you are setting the value 
-  on the last. To experiment with what I mean, use the set background that I 
+- This is a 1/2 fix of the issue. It allows for the sorting of the two non
+  graphic columns, but still does not allow for sorting the graphic columns.
+  The issue is with last. By setting the sort value, you are setting the value
+  on the last. To experiment with what I mean, use the set background that I
   have commented out in this commit.
 
 03Mar10
@@ -2786,7 +3015,7 @@ Release Version 5.0.2
 - Display AllowCompress warning message only if compression used in FileSet
 
 01Mar10
-- Added comment on dbi backend needing a recent version of libdbi from CVS as 
+- Added comment on dbi backend needing a recent version of libdbi from CVS as
   the version currently released 0.8.3 wont work for compiling the code.
 - Add Warning check to SQL
 - Fix readline to use TERM_LIB found for conio
@@ -2878,7 +3107,7 @@ Release Version 4.0.1
 - Switch to AGPLv3
 
 22Jul10
-- Clear class buffer in operator new + add safe_free and correct some calls to 
+- Clear class buffer in operator new + add safe_free and correct some calls to
   use it
 - Really free free pool memory before sm_dump
 - Garbage collect memory pool at end of job and before sm_dump
@@ -2890,7 +3119,7 @@ Release Version 4.0.1
 - Add exclude code + fix a few orphaned buffers
 
 19Jul10
-- Fix malloc of wrong size causing buffer overrun on restore with Windows 
+- Fix malloc of wrong size causing buffer overrun on restore with Windows
   plugins
 - Fix free of unallocated buffer in win plugin code
 - Add debug info to smartall.c for buffer overrun
@@ -2970,7 +3199,7 @@ Release Version 4.0.0
 Release Version 4.0.0-RC3
 
 19Jun10
-- Move some AC_MSG_RESULT macros around so the configure output looks somewhat 
+- Move some AC_MSG_RESULT macros around so the configure output looks somewhat
   cleaner.
 - Save any dumps during regression to dumps directory
 - Fix crash from rw_lock/unlock miss match
@@ -2980,7 +3209,7 @@ Release Version 4.0.0-RC3
 
 18Jun10
 - Fix postgresql error in grant script
-- fix #1595 about batch mode detection problem for postgresql with non standard 
+- fix #1595 about batch mode detection problem for postgresql with non standard
   install dir
 - Fix accurate code
 
@@ -2997,7 +3226,7 @@ Release Version 4.0.0-RC3
 - Fix restore object compression flag -- James
 
 11Jun10
-- Add BDB_VERSION for scripts + prepare update 11 to 12 + automate BDB_VERSION 
+- Add BDB_VERSION for scripts + prepare update 11 to 12 + automate BDB_VERSION
   checking
 
 07Jun10
@@ -3024,7 +3253,7 @@ Release Version 4.0.0-RC3
 - Fix problem with BaseJob and Accurate FileSet options on client side
 
 12May10
-- Adjusted path handling to make 'where' work. 'where' is basically ignored. a 
+- Adjusted path handling to make 'where' work. 'where' is basically ignored. a
   'regexwhere' that affects plugin paths will probably still break things
 
 11May10
@@ -3034,15 +3263,15 @@ Release Version 4.0.0-RC3
 10May10
 - memory leak fixes
 - make tocharstring() report line and file correctly for sm_alloc
-- use free instead of delete to free memory allocated with wcsdup remove DOS 
+- use free instead of delete to free memory allocated with wcsdup remove DOS
   EOLs
 - Free some memory allocated in find_filespec
 - plugin: Use smartalloc in find_filespec
-- update find_filespec to allocate it's own memory and not retain any pointers 
+- update find_filespec to allocate it's own memory and not retain any pointers
   from the caller
 
 08May10
-- remove GUID from the writer 'directory' name. Rely on the name of the instance_{GUID} 
+- remove GUID from the writer 'directory' name. Rely on the name of the instance_{GUID}
   dummy file instead
 - add some deletes back in now that find_filespec does the expected
 - Clean some stale code and superfluous debugging output
@@ -3069,29 +3298,29 @@ Release Version 4.0.0-RC1
 - Fix xml_name in plugin
 
 03May10
-- Fix case order in vss_writer to resolve crash at the end of the writer 
+- Fix case order in vss_writer to resolve crash at the end of the writer
   backup
 - Fix segfault when loading Plugins
 
 01May10
 - Fix insertion of RestoreObject
 - Fix RestoreObject schema on PostgreSQL
-- Use lwps cmd in dbx and no threads as it seems to give some strange side 
-  effects e.g. doesn't work and lwps seems to always work. So lwps it is 
+- Use lwps cmd in dbx and no threads as it seems to give some strange side
+  effects e.g. doesn't work and lwps seems to always work. So lwps it is
   then.
-- Do some work on the btraceback on Solaris, we test to see what debugger is 
-  available and we prefer the debuggers in this order: dbx, gdb, mdb. Also 
-  enchanced the dbx bactrace somewhat that it always dumps all available 
-  threads (e.g. we also changed from lwp to threads for dbx). We also print 
-  some variables that the gdb script also dumps on a bactrace. Hopefully we get 
-  some better dumps using this. The mdb is used as a last resort as it should 
-  be always installed on a Solaris box (dbx and gdb may not) but at the moment 
-  I'm still trying to find out how to get some more understandable dumps from 
-  mdb as its rather rudimentary and more a crash debugger then a source code 
+- Do some work on the btraceback on Solaris, we test to see what debugger is
+  available and we prefer the debuggers in this order: dbx, gdb, mdb. Also
+  enchanced the dbx bactrace somewhat that it always dumps all available
+  threads (e.g. we also changed from lwp to threads for dbx). We also print
+  some variables that the gdb script also dumps on a bactrace. Hopefully we get
+  some better dumps using this. The mdb is used as a last resort as it should
+  be always installed on a Solaris box (dbx and gdb may not) but at the moment
+  I'm still trying to find out how to get some more understandable dumps from
+  mdb as its rather rudimentary and more a crash debugger then a source code
   debugger.
 - Remove RestoreObjects when pruning Jobs
 - Fix File and Job Retention in show pool command
-- Add Polish translation. This translation project is sponsored by Inteos Sp. z 
+- Add Polish translation. This translation project is sponsored by Inteos Sp. z
   o.o. based in Warsaw, PL.
 - Fix bug #1538 Start Scripts return incorrect value
 - Fix bug #1564 init scripts not LSB compliant
@@ -3145,7 +3374,7 @@ Release Version 4.0.0-RC1
 - Add File and Line info to rw_lock for lmgr
 
 27Mar10
-- Fix database locking calling db_lock and returning from function without 
+- Fix database locking calling db_lock and returning from function without
   calling db_unlock.
 
 26Mar10
@@ -3186,30 +3415,30 @@ Release Version 4.0.0-RC1
 - Fix bug #1524 verify fails after adding or removing files
 - Fix bug 1523.
 - Apply fix suggested by Andreas in bug #1502 for mediaview column sort problem
-- Lets not generate the ingres code automatically when the .sc or .sh files 
-  changes as it seems these files get outdated on some systems and then this 
+- Lets not generate the ingres code automatically when the .sc or .sh files
+  changes as it seems these files get outdated on some systems and then this
   rule kicks in on systems that don't have the esqlcc ingres compiler installed.
 - Fix CentOS detection in regression get-os script
 
 05Mar10
 - Create subroutines to add exclusion for plugins
 - This adds sql debugging to these classes that Eric wrote.
-- This is a 1/2 fix of the issue. It allows for the sorting of the two non 
-  graphic columns, but still does not allow for sorting the graphic columns. 
-  The issue is with last. By setting the sort value, you are setting the value 
-  on the last. To experiment with what I mean, use the set background that I 
+- This is a 1/2 fix of the issue. It allows for the sorting of the two non
+  graphic columns, but still does not allow for sorting the graphic columns.
+  The issue is with last. By setting the sort value, you are setting the value
+  on the last. To experiment with what I mean, use the set background that I
   have commented out in this commit.
 
 03Mar10
 - Fix configure.in
-- Lets generate ingres code by calling esqlcc and not esqlc as we want c++ 
-  code. Replaced some strncpy by bstrncpy calls. Add dependency in Makefile of 
+- Lets generate ingres code by calling esqlcc and not esqlc as we want c++
+  code. Replaced some strncpy by bstrncpy calls. Add dependency in Makefile of
   generated code on it source file.
 - Fix OpenSSL 1.x problem in crypto.c on Fedora 12
 - Display AllowCompress warning message only if compression used in FileSet
 
 01Mar10
-- Added comment on dbi backend needing a recent version of libdbi from CVS as 
+- Added comment on dbi backend needing a recent version of libdbi from CVS as
   the version currently released 0.8.3 wont work for compiling the code.
 - Add Warning check to SQL
 - Fix readline to use TERM_LIB found for conio
@@ -3241,22 +3470,22 @@ Release Version 4.0.0-RC1
 - Replace MIN by code as recommended by Marco to avoid compiler warning
 - Make script more portable
 - Add Fedora 11 and 12 build tags.
-- Lets close the Ingres cursor otherwise the code complains the cursor is still 
+- Lets close the Ingres cursor otherwise the code complains the cursor is still
   open when we try to reuse it.
-- Fix segv when indicator field is null. Also added some extra checks around 
+- Fix segv when indicator field is null. Also added some extra checks around
   free calls so we don't try to free null pointers.
-- Changed strcpy to bstrncpy and sprintf to bsnprintf and changed the bsnprintf 
+- Changed strcpy to bstrncpy and sprintf to bsnprintf and changed the bsnprintf
   format.
 - Small indent changes
 
 20Feb10
-- Sync between master and this branch as some ingres changes did go into master 
+- Sync between master and this branch as some ingres changes did go into master
   but not into this branch.
-- Remove include file that makes the compile complain and doesn't seem to be 
+- Remove include file that makes the compile complain and doesn't seem to be
   used as removing makes the code compile ok.
 - Some small indent changes.
 - Reindented myingres.sc to Bacula "style" and regenerated myingres.c
-- Merged in rejects from previous patch and regenerated new myingres.c from 
+- Merged in rejects from previous patch and regenerated new myingres.c from
   myingres.sc using esqlc. Changed sprintf into snprintf.
 - Added patch from Stefan Reddig -- fixed date types, errmsg
 - Added patch from Stefan Reddig -- improved ingres db test
@@ -3269,8 +3498,8 @@ Release Version 4.0.0-RC1
 - Remove mysql version variable.
 - Enable readline support.
 - bug report 1505
-- This version fixes an issue where the console window would start out not 
-  docked. It is fixed by initiating the variables in the Pages class with a 
+- This version fixes an issue where the console window would start out not
+  docked. It is fixed by initiating the variables in the Pages class with a
   constructor.
 
 19Feb10
@@ -3284,22 +3513,22 @@ Release Version 4.0.0-RC1
 - Replace MIN by code as recommended by Marco to avoid compiler warning
 - Make script more portable
 - Add Fedora 11 and 12 build tags.
-- Lets close the Ingres cursor otherwise the code complains the cursor is still 
+- Lets close the Ingres cursor otherwise the code complains the cursor is still
   open when we try to reuse it.
-- Fix segv when indicator field is null. Also added some extra checks around 
+- Fix segv when indicator field is null. Also added some extra checks around
   free calls so we don't try to free null pointers.
-- Changed strcpy to bstrncpy and sprintf to bsnprintf and changed the bsnprintf 
+- Changed strcpy to bstrncpy and sprintf to bsnprintf and changed the bsnprintf
   format.
 - Small indent changes
 
 20Feb10
-- Sync between master and this branch as some ingres changes did go into master 
+- Sync between master and this branch as some ingres changes did go into master
   but not into this branch.
-- Remove include file that makes the compile complain and doesn't seem to be 
+- Remove include file that makes the compile complain and doesn't seem to be
   used as removing makes the code compile ok.
 - Some small indent changes.
 - Reindented myingres.sc to Bacula "style" and regenerated myingres.c
-- Merged in rejects from previous patch and regenerated new myingres.c from 
+- Merged in rejects from previous patch and regenerated new myingres.c from
   myingres.sc using esqlc. Changed sprintf into snprintf.
 - Added patch from Stefan Reddig -- fixed date types, errmsg
 - Added patch from Stefan Reddig -- improved ingres db test
@@ -3312,8 +3541,8 @@ Release Version 4.0.0-RC1
 - Remove mysql version variable.
 - Enable readline support.
 - bug report 1505
-- This version fixes an issue where the console window would start out not 
-  docked. It is fixed by initiating the variables in the Pages class with a 
+- This version fixes an issue where the console window would start out not
+  docked. It is fixed by initiating the variables in the Pages class with a
   constructor.
 
 19Feb10
@@ -3779,7 +4008,7 @@ Release Version 5.0.0
 - update
 
 09Nov09
-- Optimize SQL to determine file selection with directories. It is enabled for 
+- Optimize SQL to determine file selection with directories. It is enabled for
   ascii path.
 
 07Nov09
@@ -3840,7 +4069,7 @@ Release Version 5.0.0
 - update bat on win32 project file
 
 27Oct09
-- Small fix to Eric great patch for readline commandcompletion so it also 
+- Small fix to Eric great patch for readline commandcompletion so it also
   compiles on non gcc compilers.
 - Add readline completion for commands and argument
 
@@ -3874,7 +4103,7 @@ Release Version 5.0.0
 - Disallow Qmsg when despooling
 - Fix Qmsg race condition reported by Eric
 - add test for bad messages ressource
-- bat: Display a nice graphic on media usage depending on the average size for 
+- bat: Display a nice graphic on media usage depending on the average size for
   this mediatype.
 
 22Oct09
@@ -3887,12 +4116,12 @@ Release Version 5.0.0
 - Make new configure per Marco's request
 - bat: add new Expired button in MediaView
 - fix vtape test
-- Redirect errors to /dev/null and only run uname -p on Linux where we know it 
+- Redirect errors to /dev/null and only run uname -p on Linux where we know it
   works. This is probably the most portable way of doing things.
 
 20Oct09
-- Add MediaView form that displays the Media list in a QTableWidget. It permits 
-  to search and sort media. Rename current "Media" tab to "Pool" as it displays 
+- Add MediaView form that displays the Media list in a QTableWidget. It permits
+  to search and sort media. Rename current "Media" tab to "Pool" as it displays
   Pools
 - Permit to use MediaId or VolumeName in MediaEdit panel
 - add StringList to handle locations, volstatus and mediatypes
@@ -3911,7 +4140,7 @@ Release Version 5.0.0
 18Oct09
 - update fr.po
 - Added acl and xattr regression tests for FreeBSD
-- Use getfattr and setfattr on Linux not attr as that is a XFS tool which works 
+- Use getfattr and setfattr on Linux not attr as that is a XFS tool which works
   too but is not native.
 - Don't enable SUN compiler by default and make the configdir configurable.
 - Add test when ActionOnPurge=None Add test for update volume=xxx actiononpurge=yyy
@@ -3921,7 +4150,7 @@ Release Version 5.0.0
 - update regress
 
 17Oct09
-- Ensure that Ubuntu /var/run is created in init.d scripts suggested by nick 
+- Ensure that Ubuntu /var/run is created in init.d scripts suggested by nick
   <nick at fisk.me.uk>
 - Implement Dan's suggestion to avoid IPv6 problems
 - Add makeall for release
@@ -3936,7 +4165,7 @@ Release Version 5.0.0
 - Add Marco's run regression wrapper script
 - Possible fix for problem with Volume in another drive
 - Make new configure from Marco's configure.in
-- Try to unmount by running the unmount command specified in the config on file 
+- Try to unmount by running the unmount command specified in the config on file
   and dvd devices.
 - Fix switching read device reported by Nicolae Mihalache <mache at abcpages.com>
 
@@ -3947,7 +4176,7 @@ Release Version 5.0.0
 - Add comments to fileregexp test
 - Add more debug in filregexp test
 - Eliminate compiler warning
-- Fix bug #1391 Job status improperly set due to subtle variable overload 
+- Fix bug #1391 Job status improperly set due to subtle variable overload
   problem
 
 14Oct09
@@ -3962,7 +4191,7 @@ Release Version 5.0.0
 - Fix #1352 about double free with regexp and big filenames on windows
 
 11Oct09
-- Small update to cache the current attrspace we are saving and make a private 
+- Small update to cache the current attrspace we are saving and make a private
   copy of that string representation.
 - Change acl and xattr errors from Qmsg to Jmsg
 - Add comment
@@ -3983,29 +4212,29 @@ Release Version 5.0.0
 - fix bash/sh problem in disk-changer.in
 - Fix some comments
 - remove old db_get_int_handler()
-- Add support when extattr_get_file is supported but extattr_get_link is 
+- Add support when extattr_get_file is supported but extattr_get_link is
   not.
 - Regenerated config.h.in
 
 08Oct09
-- Implement transfer and listall command in mtx-changer and disk-changer 
+- Implement transfer and listall command in mtx-changer and disk-changer
   scripts
 - Add new autochanger command to get all information about content
 
 07Oct09
-- As things are no longer as generic rename the generic to the linux interface 
+- As things are no longer as generic rename the generic to the linux interface
   (b.t.w. OSX also implements this interface)
-- Just as with serializing first unserialize all xattr structures in memory and 
+- Just as with serializing first unserialize all xattr structures in memory and
   then walk that list for restoring them.
 - delete the alist in the destroy function
-- Implement the extattr xBSD interface Moved some code around to be able to 
-  reuse the encoding and decoding for both the extattr and xattr interface Use 
-  an alist for storing the xattr list so we don't have to count the number of 
+- Implement the extattr xBSD interface Moved some code around to be able to
+  reuse the encoding and decoding for both the extattr and xattr interface Use
+  an alist for storing the xattr list so we don't have to count the number of
   xattr first
-- Use extattr interface for all xBSD filesystems. Added OpenBSD also to the 
+- Use extattr interface for all xBSD filesystems. Added OpenBSD also to the
   mix.
-- As it seems FreeBSD doesn't have the llistxattr or listxattr interface as 
-  Linux, OSX and NetBSD have but has an interface named extattr. This is a 
+- As it seems FreeBSD doesn't have the llistxattr or listxattr interface as
+  Linux, OSX and NetBSD have but has an interface named extattr. This is a
   first breakdown to implement that interface.
 
 05Oct09
@@ -4040,7 +4269,7 @@ Release Version 5.0.0
 - Implement console 'timeout' feature using bacula socket timers
 - revert the update_bacula_table script change with bad indexes
 - Add index modification in update_sqlite/sqlite3/postgresql scripts
-- Remove the inx4 index for SQLite2/3 (FilenameId, PathId) on File table. 
+- Remove the inx4 index for SQLite2/3 (FilenameId, PathId) on File table.
   Replace it by an index over (JobId, PathId, FilenameId).
 
 28Sep09
@@ -4063,9 +4292,9 @@ Release Version 5.0.0
 - Fix Alpha ifdefing -- should fix bug #1359
 
 22Sep09
-- Remove the file_fp_idx index for Postgresql (FilenameId, PathId) on File 
-  table. It is useless for common usage, and causes performance issues. This 
-  index fragments over the time and the update cost grows very quickly. (This 
+- Remove the file_fp_idx index for Postgresql (FilenameId, PathId) on File
+  table. It is useless for common usage, and causes performance issues. This
+  index fragments over the time and the update cost grows very quickly. (This
   index is not present on Mysql schema)
 
 21Sep09
@@ -4140,14 +4369,14 @@ Release Version 5.0.0
 09Sep09
 - Keep valgrind happy
 - Fix Exclude Dir Containing ignored when scanning the top_level dir
-- Update the new exclude-dir-test with multiple Include {} section and different 
+- Update the new exclude-dir-test with multiple Include {} section and different
   Exclude Dir Contain directive.
 - Add patch for #1370
-- Fix #1370 about the implementation of the "Exclude Dir Containing" option on 
+- Fix #1370 about the implementation of the "Exclude Dir Containing" option on
   FD.
 - Add new exclude-dir-test
 - Add patch for 3.0.2 release
-- Fix #1369 about segfault when using ExcludeDirContaining before defining 
+- Fix #1369 about segfault when using ExcludeDirContaining before defining
   Options{} block.
 - Verify if the Exclude Dir Containing directive does his job
 - Add a regress script for Exclude Dir Containing option
@@ -4160,15 +4389,15 @@ Release Version 5.0.0
 
 07Sep09
 - fix compilation warning
-- Make output of new commands .lsdir/.lsfile more usable. Fix Bvfs with new 
+- Make output of new commands .lsdir/.lsfile more usable. Fix Bvfs with new
   db_list object
 - Fix header defines
-- Remove some #ifdef-ed code and make it just as the acl and xattr code use a 
+- Remove some #ifdef-ed code and make it just as the acl and xattr code use a
   const bool to enable the code.
 - Redone comments
-- Move restore struct defintions to seperate include file. Small change to 
+- Move restore struct defintions to seperate include file. Small change to
   acl.h and xattr.h to use define inline with other header files.
-- Move finderinfo restore into seperate function so we can use cleaner coding 
+- Move finderinfo restore into seperate function so we can use cleaner coding
   in the restore loop.
 - Loose #ifdef and use const bool wrapper for some cleaner coding.
 - Added support for acl and xattr regression test on Solaris
@@ -4195,7 +4424,7 @@ Release Version 5.0.0
 03Sep09
 - btape: Add speed command
 - btape: Add speed information on qfill and raw command
-- Commit patch for: Fix bug #1355 Director crashes with double free in Accurate 
+- Commit patch for: Fix bug #1355 Director crashes with double free in Accurate
   SQL query
 - Include file,blk in btape fill output
 - Create exit_code for fill with multiple tapes
@@ -4211,7 +4440,7 @@ Release Version 5.0.0
 - Attempt to fix SQLite3 seg fault in list routines
 - Merge master with SF
 - Update tape tests for hardware certification
-- Rename .lsdirs/.lsfiles/.update to .bvfs_xxx to avoid confusion with future 
+- Rename .lsdirs/.lsfiles/.update to .bvfs_xxx to avoid confusion with future
   commands
 - Update tape tests for hardware certification
 - Eliminate xattr.c compiler warning
@@ -4219,9 +4448,9 @@ Release Version 5.0.0
 31Aug09
 - Prohibit copy and assignment in db_list_ctx
 - Use new db_list_ctx class instead of bad POOLMEM*
-- Exclude OSX resource forks from saving using the xattr code Exclude OSX acl 
-  data from saving using the xattr code when normal acl mode is also enabled. 
-  Make excluding certain xattr in the generic functions somewhat easier for 
+- Exclude OSX resource forks from saving using the xattr code Exclude OSX acl
+  data from saving using the xattr code when normal acl mode is also enabled.
+  Make excluding certain xattr in the generic functions somewhat easier for
   certain OS specific attributes.
 - Fix Win32/64 build
 
@@ -4254,12 +4483,12 @@ Release Version 5.0.0
 - Test of git commit.
 - bat: fix variable name
 - bat: Simplify the code to make TableWidget in read-only
-- Free Volume in several places. Fixes virtual-changer problem and possibly bug 
+- Free Volume in several places. Fixes virtual-changer problem and possibly bug
   #1346.
 - Add SD Volume debug code
 
 22Aug09
-- Don't print different filesystem. Will not descend message if directory 
+- Don't print different filesystem. Will not descend message if directory
   explicitly excluded
 - capitalize bytes in message
 
@@ -4275,57 +4504,57 @@ Release Version 5.0.0
 - in status slots command, unlock db just after sql query
 
 19Aug09
-- Add BWEBCONF env variable to specify the bweb.conf path without touching the 
+- Add BWEBCONF env variable to specify the bweb.conf path without touching the
   Bweb.pm file with lighttpd
 - Fix bat crash due to alignment diff in bat and core code
 - Fix acl-xattr-test by using attr
-- Add BWEBCONF env variable to specify the bweb.conf path without touching the 
+- Add BWEBCONF env variable to specify the bweb.conf path without touching the
   Bweb.pm file with lighttpd
 - Ensure that timestamp put in SQL log
 
 15Aug09
-- prevent status page from requesting status before it has been brought to the 
+- prevent status page from requesting status before it has been brought to the
   front
 - Move global acquire lock to lock by device
 - Restrict acquire to one job at a time
 - Fix acquire.c locking
 - Try to fix acquire not to block during despooling
 - Add fullname parameter to btime in order to debug regress script.
-- No need to flush the members of the xattr link cache as they are not dynamically 
+- No need to flush the members of the xattr link cache as they are not dynamically
   created. Small oversight from my side, was thinking I had a memory leak.
 - fix couple of segfault in acl/xattr code
 - Eliminate git pull in config_dart
-- Some small fixes to the counting and some small relayout of small code 
+- Some small fixes to the counting and some small relayout of small code
   sniplets.
-- Lets first output statistics before freeing them. Saves a rather stupid 
+- Lets first output statistics before freeing them. Saves a rather stupid
   segmentation fault.
 - Fix merge conflict leftover
-- Add all acl and xattr related variables which are either global or already 
-  part of the JCR into a simple structure and reference that from the JCR 
+- Add all acl and xattr related variables which are either global or already
+  part of the JCR into a simple structure and reference that from the JCR
   structure.
 
 14Aug09
-- Some small fixes to the counting and some small relayout of small code 
+- Some small fixes to the counting and some small relayout of small code
   sniplets.
-- Lets first output statistics before freeing them. Saves a rather stupid 
+- Lets first output statistics before freeing them. Saves a rather stupid
   segmentation fault.
 - Ignore regress time.out file
 - Fix merge conflict leftover
-- Add all acl and xattr related variables which are either global or already 
-  part of the JCR into a simple structure and reference that from the JCR 
+- Add all acl and xattr related variables which are either global or already
+  part of the JCR into a simple structure and reference that from the JCR
   structure.
 - fix compilation problem reported by Dan
 - Correct spelling of writing -- reported by Dan
-- Loose void pointer and use C++ supported declaration elsewhere defined 
+- Loose void pointer and use C++ supported declaration elsewhere defined
   structure.
-- Move global variables into jcr private xattr data structure so we can have 
+- Move global variables into jcr private xattr data structure so we can have
   parallel saves of xattr on solaris.
 
 13Aug09
 - update lock manager to get better traces
 - Fix files wiped out by merge
 - Missed commiting one file last time
-- bat: Add a re-run button on job info page, that allows to run the selected 
+- bat: Add a re-run button on job info page, that allows to run the selected
   job with the same properties (level, pool, etc...)
 - bat: small fix on hrule
 - fix missing copyright
@@ -4337,13 +4566,13 @@ Release Version 5.0.0
 - Add .lsfiles, .lsdirs, .update command to interface user with bvfs object
 - More comments
 - Update virtual regress comments
-- bat: fix sql with volreadtime volwritetime bat: add drive=0 in update slots 
+- bat: fix sql with volreadtime volwritetime bat: add drive=0 in update slots
   command
-- bat: Put the content panel as a child of the Storage item bat: use slot 
+- bat: Put the content panel as a child of the Storage item bat: use slot
   selection in update slots command and in label command
 
 11Aug09
-- bat: fix volreadtime/volwritetime and messages in stderr about unknown 
+- bat: fix volreadtime/volwritetime and messages in stderr about unknown
   slots
 - Change backup-acl to acl-xattr-test and make it skip if acl/xattr not installed
 - Use tmp instead of /tmp + fix strip-test so diff works
@@ -4375,33 +4604,32 @@ Release Version 5.0.0
 - Small change to comments
 - Added comment on entry points
 - Added missing ENOENT switch case.
-- Fix problem with counting xattr and returning a non-ok on count 0, also added 
-  some extra comment and make sure the xattr_value_list is initialized to NULL 
+- Fix problem with counting xattr and returning a non-ok on count 0, also added
+  some extra comment and make sure the xattr_value_list is initialized to NULL
   and checked on bail_out.
 - Loose default_stream parameter.
 - Changed snprintf to bsnprintf
 - Use bstrncpy instead of strncpy
 - Fixed Jmsg4 to Mmsg4
-- Added support for counting xattr errors and only print a limited set of 
-  errors but count all. The lower level functions now store there error message 
+- Added support for counting xattr errors and only print a limited set of
+  errors but count all. The lower level functions now store there error message
   in jcr->errmsg so the upper level routines have access to them.
-- Added support for counting acl errors and only print a limited set of errors 
-  but count all. The lower level functions now store there error message in 
+- Added support for counting acl errors and only print a limited set of errors
+  but count all. The lower level functions now store there error message in
   jcr->errmsg so the upper level routines have access to them.
 - Small changes to ifdef layout.
 - Drop unneeded target for libbacfind.a
-- Moved the berrno as a local variable of the function and not a local context 
+- Moved the berrno as a local variable of the function and not a local context
   variable. Same as previous change for acl.c
-- Make sure it compiles and moved the berrno as a local variable of the function 
+- Make sure it compiles and moved the berrno as a local variable of the function
   and not a local context variable. Moved tri-state enum to protos.h
-- Moved list of supported xattr to start of per OS implementation like in 
+- Moved list of supported xattr to start of per OS implementation like in
   acl.c
 - Imported patch from older git tree.
 - bat: init storage content view
 
 08Aug09
 - Fix cats.h date
-- Start adding Incomplete Job status
 - bat: display a Warning symbole when having Errors>0 and Status=T
 - Add data end tracking an attribute spooling
 - Fix compiler warning in bvfs code
@@ -4410,8 +4638,8 @@ Release Version 5.0.0
 - Ignore src/tools/bvfs_test
 
 07Aug09
-- bvfs: Add example to list files versions bvfs: Fix directory listing bvfs: 
-  Add limit/offset implementation to save resources on director bvfs: Create 
+- bvfs: Add example to list files versions bvfs: Fix directory listing bvfs:
+  Add limit/offset implementation to save resources on director bvfs: Create
   cache tables on the fly when using Bvfs object (for testing)
 - Bvfs: Create cache tables when updating the cache if they don't exist
 
@@ -4421,7 +4649,7 @@ Release Version 5.0.0
 - add user handler to print directory add -j, -p to bvfs_test tool
 - Document FT_DELETED FileIndex=0 special value in database Schema
 - Add the rest of files for new Bvfs
-- Add a new Bvfs class that implements brestore instant navigation cache inside 
+- Add a new Bvfs class that implements brestore instant navigation cache inside
   Bacula. Works for Mysql, Postgresql and Sqlite3
 - bat: fix compiler warning for unreferenced argument
 - fix mysql case problem in bweb/bresto
@@ -4440,7 +4668,7 @@ Release Version 5.0.0
 - Apply patch for regress from Frank Sweester
 - connect button from mediainfo to real actions
 - bat fill mediainfo fields
-- bat: Go to the media info panel when double-click on job page or media 
+- bat: Go to the media info panel when double-click on job page or media
   list
 
 03Aug09
@@ -4533,7 +4761,7 @@ Release Version 5.0.0
 - Remove docs from spec
 - Split docs into bacula-docs.spec
 - Move bat and mtx to their own spec files
-- found a bug. Joblist page would not come up unless dockPage was called when 
+- found a bug. Joblist page would not come up unless dockPage was called when
   page was opened with initial paramaters.
 
 01Aug09
@@ -4551,7 +4779,7 @@ Release Version 5.0.0
 31Jul09
 - Split docs out of bacula.spec
 - Insert the tabbed widgets as opposed to adding to the end.
-- Don't dock the page for dirstat and restore tree until the page selector tree 
+- Don't dock the page for dirstat and restore tree until the page selector tree
   widget is clicked.
 - I like this sorting method better.
 - Update bacula.spec
@@ -4598,7 +4826,7 @@ Release Version 5.0.0
 - Attempt to fix SQLite seg fault problem
 - Fix Expired option in media list to select Used media
 - Set selection items on top.
-- this should resolve issues that people are having with this splitter. If you 
+- this should resolve issues that people are having with this splitter. If you
   try to make it too large, it just snaps back.
 
 23Jul09
@@ -4614,7 +4842,7 @@ Release Version 5.0.0
 - Modify setJobStatus so cancel has same priority as fatal errors
 - Fix Solaris compiler warning in signal.c
 - Change selection behavior in the director status screen.
-- Do not restore spliiter settings if the settings do not contain settings for 
+- Do not restore spliiter settings if the settings do not contain settings for
   that splitter.
 - This is committing most of the patch received from Eric.
 
@@ -4627,7 +4855,7 @@ Release Version 5.0.0
 - es.po merged with bacula.pot 3.0.2
 
 19Jul09
-- This is the change that may be used in the future to resolve the issue with 
+- This is the change that may be used in the future to resolve the issue with
   text input required during a console communication.
 - Final changes
 - Add es lingua
@@ -4653,7 +4881,7 @@ Release Version 5.0.0
 
 16Jul09
 - Remove print and save menu
-- Simplify the main screen, removing the status dir console icon and the "go 
+- Simplify the main screen, removing the status dir console icon and the "go
   back" one
 - fix spell
 - fix case problem in field name
@@ -4670,11 +4898,11 @@ Release Version 5.0.0
 - Fix #1323 about a problem when mounting a requested volume during a restore.
 - Use the read as primary color in bweb
 - Fix script for vtape tests
-- Fix graph_font parameter to work with graph module Avoid warning messages in 
+- Fix graph_font parameter to work with graph module Avoid warning messages in
   apache log with graph module
 - Update
 - update INSTALL file
-- update apache section in INSTALL file and try to choose better color for 
+- update apache section in INSTALL file and try to choose better color for
   graphs.
 - Fix Spanish files translated
 
@@ -4684,7 +4912,7 @@ Release Version 5.0.0
 - Make CONF::init header and .c file agree about types
 - update
 - update cloud project
-- Force the client_encoding to SQL_ASCII when database is already using this 
+- Force the client_encoding to SQL_ASCII when database is already using this
   mode.
 - Fix #1335 about postgresql error message during copy session
 - Add documentation about new restore menu
@@ -4721,7 +4949,7 @@ Release Version 5.0.0
 09Jul09
 - More changes in es.po (37%)
 - add --with-hostname to ./configure
-- Changed ACL_OTHER into ACL_OTHER_OBJ as IRIX doesn't seem to have ACL_OTHER. 
+- Changed ACL_OTHER into ACL_OTHER_OBJ as IRIX doesn't seem to have ACL_OTHER.
   Fixes bug #1333
 
 06Jul09
@@ -4739,14 +4967,14 @@ Release Version 5.0.0
 
 03Jul09
 - Correct registered trademark notice
-- Should fix the first part #1323 about the restore option "List Jobs where a 
+- Should fix the first part #1323 about the restore option "List Jobs where a
   given File is saved" wich display deleted files
 
 02Jul09
 - Add estimate accurate doc
 - add accurate=yes/no test for estimate
 - Update help page with accurate=yes/no
-- Add estimate accurate=yes/no ebl Change the code to check jcr->accurate and 
+- Add estimate accurate=yes/no ebl Change the code to check jcr->accurate and
   not jcr->job->accurate
 - Add estimate test
 - Make estimate command accurate compatible. Should fix #1318
@@ -4781,17 +5009,17 @@ Release Version 5.0.0
 - Added symbols required for win32 build
 
 25Jun09
-- Modify xattr.c and acl.c not to fail the job on errors. This should fix bug 
+- Modify xattr.c and acl.c not to fail the job on errors. This should fix bug
   #1305.
 
 23Jun09
-- Fix 2 rather big bugs in the xattr and acl code and fix a small memory leak 
+- Fix 2 rather big bugs in the xattr and acl code and fix a small memory leak
   on a particular code path for Linux xattr/acl handling.
 - update newfeature with project 37
 - Update FileSetId when initializing job.
 - fix compilation problem
 - add a note about /sys/class/scsi_tape/nst0/default_compression, fix #1314
-- Add '*' when volume is online when displaying volume list in restore. Should 
+- Add '*' when volume is online when displaying volume list in restore. Should
   complete project 31.
 
 21Jun09
@@ -4802,12 +5030,12 @@ Release Version 5.0.0
 - Fix bat install for 3.x
 
 19Jun09
-- Add a boolean to console class to allow for the warning popup, except in 
-  cases where I want to prevent the popup. So far this is only for purging 
+- Add a boolean to console class to allow for the warning popup, except in
+  cases where I want to prevent the popup. So far this is only for purging
   jobs.
 - Correct a misspelling in a relatively trivial spot.
-- Add job type and first volume of the job to the 4th pane the version table. 
-  This is so that when looking at what version to restore with copy jobs the 
+- Add job type and first volume of the job to the 4th pane the version table.
+  This is so that when looking at what version to restore with copy jobs the
   user can make a better decision as to which job to restore from
 
 18Jun09
@@ -4833,20 +5061,20 @@ Release Version 5.0.0
 - Add a previous page button to the button bar.
 
 13Jun09
-- Add feature in pages to have a console command that does not set the console 
+- Add feature in pages to have a console command that does not set the console
   current. Then also use that feature in joblist to purge or delete a job.
-- Add a stringlist and a foreach after populating to at least acknowledge to 
-  the user that a new fileset. Bat would not show the fileset until the database 
+- Add a stringlist and a foreach after populating to at least acknowledge to
+  the user that a new fileset. Bat would not show the fileset until the database
   table had the fileset which was not until used.
 
 12Jun09
 - Remove non-portable code referencing pthread_t fixes bug #1308.
 - Remove non-portable code referencing pthread_t
-- Create patch that may fix bug #1298 and bug #1304, which causes an SD crash 
+- Create patch that may fix bug #1298 and bug #1304, which causes an SD crash
   after canceling a job.
 
 11Jun09
-- When looking at what got backed up from a windows differential, found a bug 
+- When looking at what got backed up from a windows differential, found a bug
   where it would create many "Bases". This fixes it subtly.
 
 09Jun09
@@ -4857,7 +5085,7 @@ Release Version 5.0.0
 - Commit migrate patch for bug #1303
 
 05Jun09
-- Improve error messages when a migration sql query is used and correct the 
+- Improve error messages when a migration sql query is used and correct the
   problem identified in bug #1303 with starting Job names containing spaces.
 - Fix #1306 when building static bconsole
 
@@ -4870,11 +5098,11 @@ Release Version 5.0.0
 - update
 
 01Jun09
-- Setting actions up like this I think is better. No restore from job or time 
+- Setting actions up like this I think is better. No restore from job or time
   if more than one job selected.
-- Add columns for first media and volume count. Change some semantics of how 
+- Add columns for first media and volume count. Change some semantics of how
   signals execute functions when a selection list is changed.
-- Prevent warnings from showing as dialog boxes that can interupt multiple 
+- Prevent warnings from showing as dialog boxes that can interupt multiple
   operations performed in a foreach.
 
 31May09
@@ -4882,7 +5110,7 @@ Release Version 5.0.0
 
 30May09
 - A fix for mysql database sql syntax.
-- Add columns to the tree to show read/write time, scratch pool, recycle 
+- Add columns to the tree to show read/write time, scratch pool, recycle
   count.
 - Somehow I was losing the refresh jobs action. This should keep it in.
 
@@ -4892,26 +5120,26 @@ Release Version 5.0.0
 
 28May09
 - Correct incorrect placement of trap for m_firstpopulated.
-- There was an issue with empty directories. The director would print node xxx 
-  has no children and bat would interpret that as a directory. This fixes it 
+- There was an issue with empty directories. The director would print node xxx
+  has no children and bat would interpret that as a directory. This fixes it
   but it may not be the best solution.
 - update
 
 27May09
-- Make sure that vtape directory is created during -tape tests ebl change grep 
+- Make sure that vtape directory is created during -tape tests ebl change grep
   -e to grep -E to make source-addr-test working as expected
 - Simplify mysql bresto part. Should be faster, but need tests
 
 26May09
 - On vacation I am having a little fun !!
 - Add documentation for new directives DirSourceAddress and FDSourceAddress
-- Apply Steve Polyack patch to add DirSourceAddress and FDSourceAddress directives. 
+- Apply Steve Polyack patch to add DirSourceAddress and FDSourceAddress directives.
   That permits to choose the outgoing interface.
 - make fileregexp-test working with git repository
 
 25May09
-- Apply Marco's patch: mvw Allow acl and xattr to be explicitly enabled and 
-  fail the configure if we are asked to enable acl or xattr support and the OS 
+- Apply Marco's patch: mvw Allow acl and xattr to be explicitly enabled and
+  fail the configure if we are asked to enable acl or xattr support and the OS
   doesn't support acls or xattrs.
 - Add more Spanish site modifications
 
@@ -4923,7 +5151,7 @@ Release Version 5.0.0
 - Disable scratchpool-pool-test because it hangs
 - Rework printed message when files are purged on restore
 - Turn off useless End of file message during restore.
-- When doing a tree selection restore, look at the PurgedFiles column in the 
+- When doing a tree selection restore, look at the PurgedFiles column in the
   first JobId, and if non-zero, the Job was purged, so do not do selection
 - Yet another try to get qmake to install bat correctly
 
@@ -4932,7 +5160,7 @@ Release Version 5.0.0
 
 20May09
 - Add Spanish directory
-- Fix race in director job start which was allowing the number of concurrent 
+- Fix race in director job start which was allowing the number of concurrent
   jobs to exceed the maximum
 
 19May09
@@ -4942,14 +5170,14 @@ Release Version 5.0.0
 - update
 - Fix #1029 about resolution address order. Thanks to David.
 - Add patch for #1029
-- During jcr destruction hold jcr_chaing lock only for minimum time necessary. 
+- During jcr destruction hold jcr_chaing lock only for minimum time necessary.
   This should fix the SD deadlock in bug #1287.
-- Simplify messages printed by SD when reserve fails. This should fix bug 
+- Simplify messages printed by SD when reserve fails. This should fix bug
   #1285
 - Add sleep in vtape changer to simulate real hardware
 
 17May09
-- speed up mysql to compute restore table ebl speed up mysql when computing 
+- speed up mysql to compute restore table ebl speed up mysql when computing
   media list ebl fix media list display ebl fix bresto problem with drag&drop
 
 16May09
@@ -4960,20 +5188,20 @@ Release Version 5.0.0
 - Back out unwanted change. Should fix problem reported by Yuri
 - add index on temporary table to speed up mysql part during restore
 - Fix display of / on bfileview
-- Yet another attempt to get qmake to generate valid Makefiles that installs 
+- Yet another attempt to get qmake to generate valid Makefiles that installs
   the binaries. It seems to require the binary to exist at qmake time
-- Apply fix to sql_cmds.c suggested by Ulrich Leodolter <ulrich.leodolter at 
+- Apply fix to sql_cmds.c suggested by Ulrich Leodolter <ulrich.leodolter at
   obvsg.at> which prevents restore by file selection from using Copy jobs.
 - fix drag&drop
 
 14May09
-- Add new nagios_plugin_check_bacula.tgz from Masopust, Christian <christian.masopust 
+- Add new nagios_plugin_check_bacula.tgz from Masopust, Christian <christian.masopust
   at siemens.com>
-- Reduce bconsole help to fit in 80 columns kes Add bconsole @help command kes 
+- Reduce bconsole help to fit in 80 columns kes Add bconsole @help command kes
   Fix Show FileSet command to handle spaces
 - Allow specification of base daemon resource name. --with-basename=<name>
 - Fix bat to automatically use installed bat.conf
-- bat not installed even if configured. Fix by working around apparent bug in 
+- bat not installed even if configured. Fix by working around apparent bug in
   qmake
 
 13May09
@@ -5002,7 +5230,7 @@ Release Version 5.0.0
 - small fix
 
 05May09
-- ebl Make working the "compute with directories" option --This line, and those 
+- ebl Make working the "compute with directories" option --This line, and those
   below, will be ignored--
 
 04May09
@@ -5022,13 +5250,13 @@ Release Version 5.0.0
 - Update
 - update
 - Only define winapi's for 32 bit build. Already defined for 64 bit apparently...
-- Change GetComputerName to GetComputerNameEx so that in a cluster we get the 
-  name of the vserver instead of the local machine. Added prototypes for 
+- Change GetComputerName to GetComputerNameEx so that in a cluster we get the
+  name of the vserver instead of the local machine. Added prototypes for
   GetComputerNameEx which appear to be missing.
 
 02May09
 - 3.0.1
-- Don't run backup at same time as restore to avoid deadlock in concurrent 
+- Don't run backup at same time as restore to avoid deadlock in concurrent
   test
 
 01May09
@@ -5046,9 +5274,9 @@ Release Version 5.0.0
 - Add bypool option
 - add bypool option
 - Fix error message
-- Fix bug #1282 Setting job.Priority in python crashes director by checking if 
+- Fix bug #1282 Setting job.Priority in python crashes director by checking if
   string addr is NULL. Not tested.
-- Fix bug #1281 allow all on restore command line to restore pruned JobIds 
+- Fix bug #1281 allow all on restore command line to restore pruned JobIds
   without prompting.
 - Add vectorized bat image
 
@@ -5056,14 +5284,14 @@ Release Version 5.0.0
 - Check for job_canceled() in fd_plugin code
 - Update Win32/64 table creation to have new DB version 11 format
 - Remove illegal Options in Exclude of default Win32/64 bacula-dir.conf
-- This is the fix to http://bugs.bacula.org/view.php?id=1276. The select class 
-  was just not working with the new requirements of setting and clearing the 
+- This is the fix to http://bugs.bacula.org/view.php?id=1276. The select class
+  was just not working with the new requirements of setting and clearing the
   notify.
 
 27Apr09
-- Fix bug #1274 where a migration job can be canceled like the original job by 
+- Fix bug #1274 where a migration job can be canceled like the original job by
   the MaxRunTime directive.
-- Added fix for bug #1275 where acl or xattr data is saved for virtual filenames 
+- Added fix for bug #1275 where acl or xattr data is saved for virtual filenames
   generated by filed plugins.
 
 26Apr09
@@ -5071,7 +5299,7 @@ Release Version 5.0.0
 - Permits to eject Used tape
 - update ScriptAlias
 - Remove Reposition info message
-- Fix platform scripts not to clean configured files during 'make clean' use 
+- Fix platform scripts not to clean configured files during 'make clean' use
   'make distclean' to clean everything.
 
 25Apr09
@@ -5086,7 +5314,7 @@ Release Version 5.0.0
 
 16Apr09
 - Add additional mysql connection debug code
-- Fix bug #1246 Sometimes access denied with VSS enabled. UCS conversion cache 
+- Fix bug #1246 Sometimes access denied with VSS enabled. UCS conversion cache
   was not properly flushed at the end of a Job
 
 15Apr09
@@ -5113,7 +5341,7 @@ Release Version 5.0.0
 - Test postgresql encoding at the start of the test
 
 11Apr09
-- Modify insertion of read Volumes in SD to be done before the drive reservation. 
+- Modify insertion of read Volumes in SD to be done before the drive reservation.
   This ensures that a Volume to be read will not be reserved for writing.
 - Clean old patchnotes
 - Turn developer back on
diff --git a/CheckList b/CheckList
deleted file mode 100644
index a373777..0000000
--- a/CheckList
+++ /dev/null
@@ -1,61 +0,0 @@
-
-             Release Check List
-
-Assume release is in bacula/base bacula/gui bacula/docs bacula/rescue
-
-- Build it for Win32 and on Win64
-#  No longer done
-#  - Build it on Solaris and run regression tests
-# - Build it on FreeBSD and run regression tests
-- Update ChangeLog (add release date)
-- Update ReleaeNotes
-- Do a svn commit
-#     ./makerel <branch-name> <local-branch-source-dir> <release>
-- Run ./makerel Branch-2.0 branch-2.0 2.0.x
-- Run the regression tests on the new bacula
-  directory that is created.  Run regression on
-  Linux.
-- Run the production version over night in production.
-- Manually test Win32 version
-  (with Robert's work, it is now possible to run the
-   Regression scripts).
-- Write final ReleaseNotes
-- If everything is good
-- cd bacula
-# The below needs to be updated more
-- Run    
-  cd base
-  svn update
-  cd ../gui
-  svn update
-  cd ../docs
-  svn update
-     cd manual
-     make tex
-     latex bacula.tex
-     (make sure the above finishes.  If it stops and asks
-      what to do, correct the problem).
-      cd ..
-  cd ../rescue
-  svn update
-  cd ..
-  ./makerel base 2.0.x
-  ./makeguirel gui 2.0.x
-  ./makedocsrel docs 2.0.x
-  ./makerescuerel rescue 2.0.x
-  cd base/win32
-  make
-  cp release/winbacula-2.0.x.exe $HOME/bacula
-  cd $HOME/bacula
-  ./sign winbacula-2.0.x.exe
-
-- Upload everything to appropriate part of Source Forge
-  and release it.  I use releaseforge 
-- After releasing everything.
-- Either download everything and compare the signatures,
-  or simply check the upload sizes of everything.
-- cd docs/manual
-  make
-- Upload new release doc to web site.
-  Upload bacula.pdf to web site.
-- Update news on web site.
diff --git a/LICENSE b/LICENSE
index 3fb3657..ae5618b 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,197 +1,64 @@
 
-History:
-The original Bacula code was Copyright Kern Sibbald and John Walker.
-After November 2004, it became Copyright Kern Sibbald, and finally,
-the copyright was transferred to the Free Software Foundation Europe
-on 15 November 2006. The license was changed from GPLv2 to AGPLv3
-on 24 July 2010.
-
-Trademark:
-The name Bacula is a registered trademark of Kern Sibbald.
-
-===================================
-
-License:
-For the most part, Bacula is licensed under the AGPL version 3. This
-code is listed under Copyright Free Software Foundation Europe e.V.
-What follows is the addition(s) to the AGPL version 3 license, that
-applies to code that is copyrighted by the Free Software Foundation
-Europe e.V.
-
-Linking: 
-As a special exception to the AGPLv3, the Bacula Project gives
-permission to link the code of its release of Bacula with the OpenSSL
-project's "OpenSSL" library (or with modified versions of it that use
-the same license as the "OpenSSL" library), and distribute the linked
-executables.  You must obey the GNU Affero General Public License in all
-respects for all of the code used other than "OpenSSL".
-
-As a special exception to the AGPLv3, the Bacula Project gives
-permission to link the code of its release of the Bacula Win32 File
-daemon with the Microsoft supplied Volume Shadow Copy (VSS) libraries
-and distribute the linked executables.  You must obey the GNU General
-Public License in all respects for all of the code used other than for
-the Microsoft VSS code, where you must obey their license terms.
-
-The Bacula Project gives permission for plugins with AGPLv3 compatible
-licenses to be loaded and distributed with the Bacula executables as
-long as the combined work is distributed under the terms listed in the 
-Bacula LICENSE file.  A full list of AGPLv3 compatible licenses can be
-found at: http://www.fsf.org/licensing/licenses/.  If you wish to load
-or distribute plugins with different licensing terms please contact
-the Bacula Project at: license at bacula.org
-             
-===================================
-
-
-What follows is information from the authors of the code:
-
-License:
-To the best of our knowledge, all code used in Bacula, which is 
-copyrighted by a third party, has licenses that are compatible
-with the OpenSSL license, and so given the exception that we have 
-made to the AGPLv3 above, Bacula can be freely linked and distributed
-with the OpenSSL libraries.
-
-Intellectual Property rights:
-Recipient understands that although each Contributor to Bacula grants
-the licenses to its Contributions set forth herein, no assurances are
-provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity.
-Each Contributor disclaims any liability to Recipient for claims
-brought by any other entity based on infringement of intellectual
-property rights or otherwise.  As a condition to exercising the rights
-and licenses granted hereunder, each Recipient hereby assumes sole
-responsibility to secure any other intellectual property rights
-needed, if any.  For example, if a third party patent license is
-required to allow Recipient to distribute the Program, it is
-Recipient's responsibility to acquire that license before distributing
-the Program.
-
-Copyrights:
-Each Contributor to Bacula represents that to its knowledge it has
-sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.
-
-Code falling under the above conditions will be marked as follows:
-
-   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 plus additions
-   that are listed 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.
-
-
-Windows:
-Certain source code used to build the Windows version of the
-Bacula File daemon is copyrighted and or trademarked by Microsoft
-and may contain Microsoft intellectual property (examples:
-Microsoft VC++, the source to the VSS libraries, the Microsoft C
-runtime libraries).  As such we cannot and do not distribute that
-software.  We are permitted however to distribute Bacula with the
-necessary Microsoft libraries in binary form.
-
-You may obtain the parts that we cannot distribute as follows.  The
-Microsoft compiler available for purchase, and Microsoft provides a free
-version of the compiler.  The source code and libraries are available for
-download from Microsoft public Web servers.  We have documented in the
-src/win32 directory the URLs from which we obtained the library source, and
-how we build the Windows File daemon and many users have succeeded in doing
-so themselves.  Our intention is to respect as closely as possible Open
-Source practices while maintaining full respect for proprietary and
-copyrighted code.
-
-GPLv2 or later license:
- src/tools/bsmtp.c
-    Copyright (C) 1997 Ralf S. Engelschall, All Rights Reserved.
-  (note, bsmtp.c does not use OpenSSL, nor is it used with the code
-   of any other part of Bacula)
-
-3 clause BSD License notice for inclusion with the binary:              
- src/lib/fnmatch.c
-   * Copyright (c) 1989, 1993, 1994
-   *      The Regents of the University of California.  All rights reserved.
- src/lib/fnmatch.h
-   * Copyright (c) 1992, 1993
-   *      The Regents of the University of California.  All rights reserved.
-
-Permissive licenses:
- src/lib/var.c/h
-   **  OSSP var - Variable Expansion
-   **  Copyright (c) 2001-2002 Ralf S. Engelschall <rse at engelschall.com>
-   **  Copyright (c) 2001-2002 The OSSP Project (http://www.ossp.org/)
-   **  Copyright (c) 2001-2002 Cable & Wireless Deutschland (http://www.cw.com/de/)
-
- src/lib/bsnprintf.c
-   * Copyright Patrick Powell 1995
-
- src/bregex.c/h
-   * Copyright (c) 1991 Tatu Ylonen, Espoo, Finland
-
- src/lib/sha1.c/h
-   Copyright (C) The Internet Society (2001).  All Rights Reserved.
-
- src/win32/compat/getopt.c
-   "... licensed under IBM copyrights to use the IBM-provided source code 
-   in any way he or she deems fit ..."
-
- src/win32/compat/sys/mtio.h (LGPL)
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-   
-
-Bacula can be enabled with data encryption and/or communications
-encryption. If this is the case, you will be including OpenSSL code that
-that contains cryptographic software written by Eric Young
-(eay at cryptsoft.com) and also software written by Tim Hudson
-(tjh at cryptsoft.com).
-
-There are parts of Bacula that are licensed under the LGPL so
-that those files may be used in proprietary code to interface with
-Bacula.
-
-Finally there are parts of Bacula that are in the public domain.
-             
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER
-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.
-
-=====================================
-
-
-The entire AGPL is reproduced below, in the manuals distributed with the
-Bacula documentation and can also be found online on the GNU web site
-as well as at www.bacula.org. You may also obtain a copy of the
-AGPL (or LGPL) by writing to: Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+             Last revision: 06 May 2014
+
+Bacula is licensed under the GNU Affero General Public License, version
+3.0 as published by the Free Software Foundation, Inc. ("AGPLv3").
+
+Additional Terms on the work licensed herein, pursuant to Section 7 of Affero
+General Public License are as follows:
+
+  1. The name Bacula is a registered trademark of Kern Sibbald, and Kern
+     Sibbald hereby declines to grant a trademark license to "Bacula"
+     pursuant to AGPLv3, Section 7(e) without a separate agreement with Kern
+     Sibbald.
+
+  2. Pursuant to AGPLv3, Section 7(a), in addition to the warranty and
+     liability disclaimers already found in AGPLv3, the copyright holders
+     specifically disclaim any liability for accusations of patent
+     infringement by any third party.
+
+  3. Pursuant to AGPLv3, Section 7(b), the portions of the file AUTHORS that
+     are deemed to be specified reasonable legal notices and/or author
+     attributions shall be preserved in redistribution of source code and/or
+     modifications thereof. Furthermore, when the following notice appears in
+     a source code file, it must be preserved when source code is conveyed
+     and/or propagated:
+
+       Copyright (C) 20xx-2014 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.
+
+       You may use this file and others of this release according to the
+       license defined in the LICENSE file, which includes the Affero General
+       Public License, v3.0 ("AGPLv3") and some additional permissions and
+       terms pursuant to its AGPLv3 Section 7.
+
+       Bacula® is a registered trademark of Kern Sibbald.
+
+Additional Permissions on the work licensed herein, pursuant to Section 7 of
+AGPLv3 are as follows:
+
+1. As a special exception to the AGPLv3, the copyright holders give
+   permission to link the code of its release of Bacula with the OpenSSL
+   project's "OpenSSL" library (or with modified versions of it that use the
+   same license as the "OpenSSL" library), and distribute the linked
+   executables.  You must follow the requirements of AGPLv3 in all respects
+   for all of the code used other than "OpenSSL".
+
+2. As a special exception to the AGPLv3, the copyright holders give
+   permission to link the code of its release of the Bacula Win32 File daemon
+   with the Microsoft supplied Volume Shadow Copy (VSS) libraries and
+   distribute the linked executables.  You must follow the requirements of
+   the AGPLv3 in all respects for all of the code used other than for the
+   Microsoft VSS code.
+
+######################################################################
+The entire AGPL is below, in the manuals distributed with the Bacula
+documentation and can also be found online on the GNU web site at
+www.bacula.org. You may also obtain a copy of the AGPL (or LGPL) by writing
+to: Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA
 
 
                     GNU AFFERO GENERAL PUBLIC LICENSE
@@ -855,6 +722,3 @@ specific requirements.
 if any, to sign a "copyright disclaimer" for the program, if necessary.
 For more information on this, and how to apply and follow the GNU AGPL, see
 <http://www.gnu.org/licenses/>.
-
-
-===========================================
diff --git a/LICENSE-FAQ b/LICENSE-FAQ
new file mode 100644
index 0000000..f9026b2
--- /dev/null
+++ b/LICENSE-FAQ
@@ -0,0 +1,116 @@
+
+             Affero General Public License
+History:
+The original Bacula code was Copyright Kern Sibbald and John Walker.
+After November 2004, it became Copyright Kern Sibbald, and finally,
+the copyright was transferred to the Free Software Foundation Europe
+on 15 November 2006. The license was changed from GPLv2 to AGPLv3
+on 24 July 2010.
+
+Trademark:
+The name Bacula is a registered trademark of Kern Sibbald.
+
+"Fair use" of the trademark is permitted following standard customs
+that any prominent use (e.g.  cover of a book) or the first use of
+the name Bacula will include a trademark symbol.  If you fork the
+Bacula project and make any significant changes to the functionality
+of Bacula, to avoid confusion between your fork and Bacula, you must
+give your fork another name.  You are not required to remove all
+references to Bacula in the source code or "fair uses" in the
+documentation.
+
+===================================
+
+What follows is information from the authors of the code:
+
+License:
+To the best of our knowledge, all code used in Bacula, which is
+copyrighted by a third party, has licenses that are compatible
+with the OpenSSL license, and so given the exceptions that we have
+made to the AGPLv3 above, Bacula can be freely linked and distributed
+with the OpenSSL libraries, and in binary form with the Microsoft
+VSS libraries.
+
+Intellectual Property rights:
+Recipient understands that although each Contributor to Bacula grants
+the licenses to its Contributions set forth herein, no assurances are
+provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity.
+Each Contributor disclaims any liability to Recipient for claims
+brought by any other entity based on infringement of intellectual
+property rights or otherwise.  As a condition to exercising the rights
+and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights
+needed, if any.  For example, if a third party patent license is
+required to allow Recipient to distribute the Program, it is
+Recipient's responsibility to acquire that license before distributing
+the Program.
+
+Copyrights:
+Each Contributor to Bacula represents that to its knowledge it has
+sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.
+
+Other Licenses used in some source files:
+
+GPLv2 or later license:
+ src/tools/bsmtp.c
+    Copyright (C) 1997 Ralf S. Engelschall, All Rights Reserved.
+  (note, bsmtp.c does not use OpenSSL, nor is it used with the code
+   of any other part of Bacula)
+
+3 clause BSD License notice for inclusion with the binary:
+ src/lib/fnmatch.c
+   * Copyright (c) 1989, 1993, 1994
+   *      The Regents of the University of California.  All rights reserved.
+ src/lib/fnmatch.h
+   * Copyright (c) 1992, 1993
+   *      The Regents of the University of California.  All rights reserved.
+
+Permissive licenses:
+ src/lib/var.c/h
+   **  OSSP var - Variable Expansion
+   **  Copyright (c) 2001-2002 Ralf S. Engelschall <rse at engelschall.com>
+   **  Copyright (c) 2001-2002 The OSSP Project (http://www.ossp.org/)
+   **  Copyright (c) 2001-2002 Cable & Wireless Deutschland (http://www.cw.com/de/)
+
+ src/lib/bsnprintf.c
+   * Copyright Patrick Powell 1995
+
+ src/bregex.c/h
+   * Copyright (c) 1991 Tatu Ylonen, Espoo, Finland
+
+ src/lib/sha1.c/h
+   Copyright (C) The Internet Society (2001).  All Rights Reserved.
+
+ src/win32/compat/getopt.c
+   "... licensed under IBM copyrights to use the IBM-provided source code
+   in any way he or she deems fit ..."
+
+ src/win32/compat/sys/mtio.h (LGPL)
+   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+
+
+Bacula can be enabled with data encryption and/or communications
+encryption. If this is the case, you will be including OpenSSL code that
+that contains cryptographic software written by Eric Young
+(eay at cryptsoft.com) and also software written by Tim Hudson
+(tjh at cryptsoft.com).
+
+There are parts of Bacula that are licensed under the LGPL so
+that those files may be used in proprietary code to interface with
+Bacula.
+
+Finally there are parts of Bacula that are in the public domain.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER
+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.
diff --git a/Makefile.in b/Makefile.in
index 5483fe3..89da091 100755
--- a/Makefile.in
+++ b/Makefile.in
@@ -19,8 +19,7 @@ dummy:
 
 # --client-only directories
 fd_subdirs = src scripts src/lib src/findlib src/filed \
-       @READLINE_SRC@ @BAT_DIR@ @TRAY_MONITOR_DIR@ @WX_DIR@ \
-       src/console @FD_PLUGIN_DIR@
+       @READLINE_SRC@ @BAT_DIR@ src/console @FD_PLUGIN_DIR@
 
 # Non-client-only directores
 subdirs =    src/cats @DIRD_DIR@ @STORED_DIR@ src/tools
@@ -45,7 +44,7 @@ all: Makefile
 	@for I in ${all_subdirs}; \
 	  do (cd $$I; echo "==>Entering directory `pwd`"; \
 	      $(MAKE) DESTDIR=$(DESTDIR) $@ || (echo ""; echo ""; echo "  ====== Error in `pwd` ======"; \
-			    echo ""; echo ""; exit 1;)); \
+			    echo ""; echo ""; false ) || false) || exit 1; \
 	done
 
 depend:
@@ -56,7 +55,7 @@ bacula-fd: Makefile
 	@for I in ${fd_subdirs}; \
 	  do (cd $$I; echo "==>Entering directory `pwd`"; \
 	      $(MAKE) DESTDIR=$(DESTDIR) all || (echo ""; echo ""; echo "   ====== Error in `pwd` ======"; \
-			    echo ""; echo ""; exit 1;)); \
+			    echo ""; echo ""; false ) || false) || exit 1; \
 	done
 
 #-------------------------------------------------------------------------
@@ -115,31 +114,6 @@ installdirs:
 	   chgrp $(dir_group) $(DESTDIR)$(working_dir); \
 	fi
 
-gnomedirs:
-	$(MKDIR) $(DESTDIR)/usr/share/pixmaps
-	$(MKDIR) $(DESTDIR)/usr/share/gnome/apps/System
-	$(MKDIR) $(DESTDIR)/usr/share/applications
-	$(MKDIR) $(DESTDIR)/etc/security/console.apps
-	$(MKDIR) $(DESTDIR)/etc/pam.d
-
-install-menu: gnomedirs
-	${INSTALL_DATA} scripts/bacula.png $(DESTDIR)/usr/share/pixmaps/bacula.png
-	${INSTALL_DATA} scripts/bacula.desktop.gnome1 $(DESTDIR)/usr/share/gnome/apps/System/bacula.desktop
-	${INSTALL_DATA} scripts/bacula.desktop.gnome2 $(DESTDIR)/usr/share/applications/bacula.desktop
-
-install-menu-xsu: gnomedirs
-	${INSTALL_DATA} scripts/bacula.png $(DESTDIR)/usr/share/pixmaps/bacula.png
-	${INSTALL_DATA} scripts/bacula.desktop.gnome1.xsu $(DESTDIR)/usr/share/gnome/apps/System/bacula.desktop
-	${INSTALL_DATA} scripts/bacula.desktop.gnome2.xsu $(DESTDIR)/usr/share/applications/bacula.desktop
-
-install-menu-consolehelper: gnomedirs
-	${INSTALL_DATA} scripts/bacula.png $(DESTDIR)/usr/share/pixmaps/bacula.png
-	${INSTALL_DATA} scripts/bacula.desktop.gnome1.consolehelper $(DESTDIR)/usr/share/gnome/apps/System/bacula.desktop
-	${INSTALL_DATA} scripts/bacula.desktop.gnome2.consolehelper $(DESTDIR)/usr/share/applications/bacula.desktop
-	${INSTALL_DATA} scripts/gnome-console.console_apps $(DESTDIR)/etc/security/console.apps/gnome-console
-	${INSTALL_DATA} scripts/gnome-console.pamd $(DESTDIR)/etc/pam.d/gnome-console
-	ln -s $(DESTDIR)/usr/bin/consolehelper $(DESTDIR)/usr/bin/gnome-console
-
 install: installdirs
 	@for I in $(doc_files) ; do $(INSTALL_DATA) $$I $(DESTDIR)${docdir}; done
 	@for I in $(all_subdirs); do (cd $$I && $(MAKE) DESTDIR=$(DESTDIR) $@ || exit 1); done
@@ -171,19 +145,6 @@ uninstall-autostart-fd:
 uninstall-autostart-sd:
 	(cd platforms && $(MAKE) DESTDIR=$(DESTDIR) $@ || exit 1)
 
-uninstall-menu:
-	$(RMF) $(DESTDIR)/usr/share/pixmaps/bacula.png
-	$(RMF) $(DESTDIR)/usr/share/gnome/apps/System/bacula.desktop
-	$(RMF) $(DESTDIR)/usr/share/applications/bacula.desktop
-
-uninstall-menu-consolehelper:
-	$(RMF) $(DESTDIR)/usr/share/pixmaps/bacula.png
-	$(RMF) $(DESTDIR)/usr/share/gnome/apps/System/bacula.desktop
-	$(RMF) $(DESTDIR)/usr/share/applications/bacula.desktop
-	$(RMF) $(DESTDIR)/etc/security/console.apps/gnome-console
-	$(RMF) $(DESTDIR)/etc/pam.d/gnome-console
-	$(RMF) $(DESTDIR)/usr/bin/gnome-console
-
 Makefile: Makefile.in
 	cd $(topdir) \
 	    && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
diff --git a/README b/README
index 8ac5920..01912f7 100644
--- a/README
+++ b/README
@@ -52,7 +52,7 @@ To start it (as a developer). This is not appropriate if you
 are installing Bacula.
 
    ./startit
-   ./console (or ./gnome-console)
+   ./console
 
 To stop it:
 
diff --git a/ReleaseNotes b/ReleaseNotes
index 8ae7b58..20ca3dc 100644
--- a/ReleaseNotes
+++ b/ReleaseNotes
@@ -1,291 +1,156 @@
 
-               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.
+               Release Notes for Bacula 7.0.5
+
+Release version 7.0.5
+This is an important bug fix release to version 7.0.4.  Since it fixes several
+major problems.  We recommend that everyone upgrade to this version.
+
+28Jul14
+ - Fix #547 by adding .schedule command
+ - Update AUTHORS
+ - Fix bug #2079 with patch from Robert Oschwald
+ - Fix orphaned file descriptors during errors
+ - Yet another client==NULL
+ - Improve FD and SD cancel
+ - Jim Raney's TLS patch
+ - Fix bug #1679 pool overrides not shown in manual run display
+ - Attempt to avoid client==NULL
+ - Fix for bug #2082 (hopefully)
+ - Fix seg fault in jobq.c
+ - make stop after first error
+ - Increase status schedule days from 500 to 3000
+ - Remove bad cherry-pick
+ - Fix compiler warning
+ - Allow options create_postgresql_database from patch in bug #2075 by roos
+ - Fix bug #2074 crashes when no conf file present
+ - Set pthread id in jcr at beginning so the job can be canceled.
+ - Fix possible heartbeat interval timing problems
+ - Fix some errors reported by valgrind. May fix the problem with bsmtp command.
+ - Ensure b_sterror() is using the correct size of input buffer
+ - Fix possible seg fault
+ - Fix segfault when trying to stop the bnet_server thread in terminate_stored()
+ - Fix bad link bug #2076
+ - Fix compilation of bsock.c when TLS is not available
+ - Correct L suffix to be LL
+ - Fix bad copy/migrate data header
+ - On termination shutdown thread server
+ - baculum: Updated README file
+ - baculum: Update English language texts
+ - baculum: Saving auth file for web server HTTP Basic auth
+ - baculum: Added directory for web server logs
+ - baculum: Added example Lighttpd configuration for Baculum and sample web 
+   server auth file
+ - Expanded auth error message
+ - baculum: Support for web servers which do not provide direct info about HTTP 
+   Basic auth
+ - Fix limit bandwidth calculation
+ - Eliminate strcpy() from bsmtp
+ - Fix for configuring sudo option for bconsole access
+ - Display correct NextPool overrides + use Job NextPool in restore if available
+ - Fix Bacula to work with newer Windows pthreads library
+ - Fix bug #180 ERR=success in btape when tape error
 
 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
+1679 180 2074 2075 2076 2079 2082 547
 
-=======================================================
 
-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.
+Release version 7.0.4
+This is a bug fix release to version 7.0.3.  We recommend that
+everyone upgrade to this version.
 
- 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.
+The main fixes are to make copy/migration to a second SD work, and
+to cleanup some of the inconsistencies in the cancel command which 
+could confuse the user.
 
-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
+02Jun14
+ - Better error handling for cancel command
+ - Fix compiler warning + simplify some #ifdefs
+ - Fix copy/migration to second SD
+ - Fix calls to sl.set_string()
+ - Improve sellist code
 
-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()
+=============================================================
+Release version 7.0.3
+This is a bug fix release to version 7.0.2. We recommend that
+everyone using version 7.0.2 upgrade to this version.
+
+12May14
+ - Fix error handling in do_alist_prompt
+ - Tighten error condition handling in sellist
+ - Add new cancel test
+ - Update LICENSE and LICENSE-FAQ
+ - Also update autoconf/aclocal.m4
+ - Reschedule on error caused EndTime to be incorrect -- fixes bug #2029
+ - Flush console queued job messages -- should fix bug #2054
+ - Attempt to fix FreeBSD echo/printf, bug #2048
+ - Update to newer libtool + config.guess
+ - Recompile configure
+ - Apply fix supplied for acl.c in bug #2050
+ - Fix a SD seg fault that occurs with over committed drives
+ - Clear bvfs cache and set debug options available only for admin
+ - Moved auth params to curl opts
+ - Filtred single results for restricted consoles
+ - Removed unnecessary debug
+ - Changed e-mail address in gettext file
+ - Support for customized and restricted consoles
+ - Misc changes for rpm building (made by Louis)
+ - Updated requirements for Baculum
+ - Apply fix for bug 2049: wrong drive selected
+ - Fix #2047 about bthread_cond_wait_p not declared
+ - Fix Bacula bug #2044 -- fix Makefile for bplugininfo linking
+ - Fix Bacula bug #2046 -- sellist limited to 10000
+ - Fix Bacula bug #2045 -- multiply defined daemon_event
+ - Fix Bacula bug #2020 overflow in btape -- Andreas Koch
 
 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.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+2020 2029 2044 2045 2046 2047 2048 2050 2054
+
+
+===================================================================
+Release version 7.0.2
+This is a minor update since version 7.0.1 that is mostly cleanup.
+However, there is one annoying bug concerning shell expansion of
+config directory names that is fixed, and there is at least one
+syntax error in building the full docs that appears on some systems
+that is also fixed.
+
+02Apr14
+ - Remove more vestiges of libbacpy
+ - Put back @PYTHON@ path in configure
+ - Fix improper string in parser
+ - Remove libbacpy from rpm spec files
+ - Fix linking check_bacula
+ - Fix new SD login in check_bacula
+ - Tweak docs build process
+
+
+Release version 7.0.1
+This is a minor update since version 7.0.0 that is mostly cleanup.
+
+31Mar14
+ - Remove old plugin-test
+ - Update po files
+ - Enable installation of the bpluginfo utility
+ - More tray-monitor updates
+ - Add Simone Caronii to AUTHORS
+ - Align command line switches in manpages.
+ - Apply upgrade to config.guess
+ - Remove bgnome-console and bwx-console leftovers.
+ - Update tray-monitor header also for new bsock calls
+ - Attempt to fix nagios to use new bsock calls
+ - Update tray-monitor to new bsock calls
+
+========================================
+Release 7.0.0
+
+ Bacula code: Total files = 713 Total lines = 305,722
+ The diff between Bacula 5.2.13 and Bacula 7.0.0 is 622,577 lines,
+ which represents very large change.
+
+This is a major new release with many new features and a
+number of changes. Please take care to test this code carefully
+before putting it into production.  Although the new features
+have been tested, they have not run in a production environment.
 
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 For packagers, if you change options, naming, and the way 
@@ -294,1095 +159,117 @@ 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.
+Please note that the documentation has significantly changed.
+You will need additional packages to build it such as inkscape.
+Please see the README and README.pct files in the docs directory.
+The packages come with pre-build English pdf and html files,
+which are located in the docs/docs/manuals/en/pdf-and-html directory.
 
- 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
+Packagers: please note that the Bacula LICENSE has changed, it is still
+AGPLv3 and still open source. A new requirement has been added which
+requires other projects using the source to keep the acreditations.
 
-
-====================================================================
-
-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.
+Packagers: please note that the docs license has changed. It is now 
+licensed: Creative Commons Attribution-ShareAlike 4.0 International
+This is a common open source license.
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 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.
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-If you are upgrading directly from 5.0.3 to this version, please see the
-important notices below for version 5.2.3, particularly
-the database upgrade and the difference in packaging the
-SQL shared libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-If you store .bsr or .mail files in the Bacula working
-directory, please be aware that they will all be deleted
-each time the Director starts.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-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.
-
-New Feature:
- - The restore tree cd command accepts wild cards within each
-   part of a path. Wild cards apply only to a single part at a
-   time: i.e. cd a*/b*/xx* will match abc/bcd/xxfxx
-   but */xx* will not match the above filename.
-
-Changes since 5.2.5:
-
-17Feb12
- - Fix old exchange-fd plugin Accurate checkFile code.
- - Insert the slot field as a numeric field.
- - Fix #1831 by dropping the table before creating it
- - Make cd accept wildcards
- - Remove bad optimization from Accurate code
- - Lock read acquire in SD to prevent to read jobs getting the same thing
- - Implement more robust check in other drives for tape slot wanted
- - Fix lost dcr point -- memory loss in Copy/Migration + possible confusion
- - Ensure that bvfs SQL link is not shared
- - Fix error printing in acl and xattr code.
- - Backport better error debug output for sd plugins.
- - Add wait on bad connection for security
- - Make mtx-changer more fault tolerant
- - Fix 32/64 bit problems in SD sscanf commands
- - Skip certain filesystem types on some platforms.
- - Allow BVFS to browse and restore Base jobs
- - Add error message to .bvfs_clear_cache command
- - Fix plugin bug with multiple simultaneous jobs
-
-Bugs fixed/closed since last release:
-1831
-
-===============================================================
-
-General:
---------
-The 5.2.5 version is a bug fix release.
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-If you are upgrading directly from 5.0.3 to this version, please see the
-important notices below for version 5.2.3, particularly
-the database upgrade and the difference in packaging the
-SQL shared libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-If you store .bsr or .mail files in the Bacula working
-directory, please be aware that they will all be deleted
-each time the Director starts.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-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.4:
-
-25Jan12
- - Disable usage of JS_Warning waiting for a more complete implementation
- - Removed old sd plugins which doesn't work anymore.
- - Adapt sample-query.sql for Warning job status
- - Fix location of Qt dlls for Win64 build
- - Fix MediaView::getSelection
-
-Bugs fixed/closed since last release:
-1824 (1814 1806 1818 non-bugs)
-
-=============================================================
-General:
---------
-The 5.2.4 version is a bug fix release.
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-If you are upgrading directly from 5.0.3 to this version, please see the
-important notices below for version 5.2.3, particularly
-the database upgrade and the difference in packaging the
-SQL shared libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-If you store .bsr or .mail files in the Bacula working
-directory, please be aware that they will all be deleted
-each time the Director starts.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-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.
-
-Most important changes since 5.2.3:
-- Fix LZO detection so that it correctly detects presense of header
-  files.
-- Switch the way we handle shared object versioning.
-- Backport Enterprise spec files to platforms/rpms
-- Switch to using Qt 4.7.4 (you must download new 
-  depkgs-qt-24Dec11.tar.gz
-- Update depkgs to depkgs-24Dec11.tar.gz
-- Enhancements to File daemon and Storage daemon plugins
-- Compiler warning cleanups
-- xattr fixes
-- Cleanup old files in the working directory when the Director starts
-
-Changes since 5.2.3:
-
-18Jan12
- - Prepare for adding IPv6 to Windows in the future
- - Fix bug #1822 Schedule run line parsing fails if value is keyword
- - Revert to 5.0 size computation in accurate elements, may fix #1821
- - Mark that a file was found in the accurate list in the ff_pkt with a
-   variable
- - Definitive fix for MySQL MaxValue problem bug #1810
- - Initialize delta_seq to -1 because 0 means that we have already a version
- - Adapt bfileview for bvfs tables
- - Set job status to running when restore job really starts
- - Remove ifdeffing that turned off JS_Warning status -- must have been missed 
-  test code
- - Add support for soname setting in libtool.
- - Fix bug #1815
- - Fix systemd pid files.
- - Limit migration/copy jobs to starting 100 at a time
- - Avoid conflict with PAGE_SIZE define
- - Send previous Job name during Incremental/Differential to the FD
- - Fix bug #1811 Filed fails to backup more then one xattr.
- - system.posix_acl_default is also an acl stored as xattr
- - Fix bug #1807
- - Add configure for new redhat spec files
- - Backport Enterprise spec files
- - Fix bad memset() reported by clang
- - Test new plugin function in bpipe and test plugin
- - Try to fix openssl problem with signal
- - Add BSOCK::set_killable()
- - Set directory attributes when using Replace=Never when Bacula creates them
- - Use RestoreObject type in Catalog
- - Add new features in plugin
- - Add helper for ini files
- - Implement run accurate=yes/no
- - Add .bvfs_clear_cache
- - Add Accurate and MaxRunSchedTime in Schedule resource
- - Fix bug #1802 configure code to detect LZO is broken
- - Fix bug #1806 failure to save second and more xattr.
- - Add second xattr to show bug 1806
- - Fix seg fault in plugin event loop
- - Fix #3210 about slow restore with bvfs
-
-Bugs fixed/closed since last release:
-1802 1806 1807 1810 1811 1815 1821 1822 3210
-
-
-==============================================================
-
-General:
---------
-The 5.2.3 version is an bug fix release.
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-If you are upgrading directly from 5.0.3 to this version, please see the
-important notices below for version 5.2.2, particularly
-the database upgrade and the difference in packaging the
-SQL shared libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-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.2:
-
- - Revert patch from Ben to not compress man pages on Solaris fix #1801
- - Fix bug #3322 don't poll when operator is labeling tapes
- - bvfs: Fix mysql REGEXP operator
- - Fix Mysql 5.5.18 symbol lookup
- - fix utf8/iso8859 problems
- - Fix #3419, update stats problem
- - Fix cats_test to use the new method names.
- - Update accurate code to use 1 byte instead of 3
- - Fix segfault in accurate code
- - Fix compilation warning on FreeBSD
-
-Bugs fixed/closed since last release:
-1801 3322 3419
-
-
-================================================================
-Version 5.2.2
-
-General:
---------
-The 5.2.2 version is an important bug fix release. It contains also some
-additions and performance improvements. 
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-If you are upgrading directly from 5.0.3 to this version, please see the
-important notices below for version 5.2.1, particularly
-the database upgrade and the difference in packaging the
-SQL shared libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-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.2
- Director and Storage daemons. There should be no need to upgrade older File
- Daemons.
-
-Changes since 5.2.1:
------------------
- - Implement -t option for Bat
- - Require correct Qt version 4.6.2 or later to build bat
- - Get new lib/plugins.h
- - Pull new SD plugin files from Master
- - Fix script to set mode of cats scripts
- - Add Systemd configure options
- - Split messages line by line before sending it to syslog() fix #3325
- - Fix bvfs_restore on MySQL
- - Fix #3308 where a SMTP problem can block the director
- - Change locking scheme of the mountpoint cache.
- - Enhance mountcache with rescan option after interval.
- - Add %D option to edit_job_code, simplify callbacks on director side
- - Move Zdeflate and Zinflate to seperate file.
- - Put libraries in the correct order for non shared libs.
- - Remove last traces of @SQL_BINDIR@ and @DB_TYPE@
- - Fix bug #1774
- - Move batch insert detection into db.m4
- - bat: try to fix offset button problem when clicking too much on previous
- - bvfs: Use single transaction for each job during update
- - Add missing bwild & bregex man8 pages
- - Fix compilation issue of wx-console #1778
- - bvfs: fix filter for pattern= bvfs parameter
- - Improve speed of BVFS with SQLite, Thanks to J.Starek
- - bvfs: add clear_cache function
- - bvfs: Handle windows drive when building path hierarchy
-
-Closed Bugs Since 5.2.1
------------------------
-1774 1778 3308 3325
-
-
-================================================================
-
-Version 5.2.1
-
-The 5.2.1 version is a major release since the last version 5.0.3.
-It includes well over 299,387 lines of changes made by 20 contributors,
-lots of bug fixes (see below), 1,851 software commits,and a 
-number of important new features:
-
-Version 5.2.0 was short lived, because Marco (thanks) found
-a number of last minute bugs. So the first official release of 5.2
-is 5.2.1.
-
-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.1
- Director and Storage daemons. There should be no need to upgrade older File
- Daemons.
-
-5.2.1 New Features:
------------------
-- LZO Compression
-- New Tray Monitor
-- Purge Migration Job
-- Changes in Bvfs (Bacula Virtual FileSystem)
-- Changes in the Pruning Algorithm
-- Ability to Verify any specified Job
-- Additions to RunScript variables
-- Additions to the Plugin API
-- ACL enhancements
-- XATTR enhancements
-- Class Based Database Backend Drivers
-- Hash List Enhancements
-
-Some of the above are described below; all the above are
-described in more detail in the New Features chapter of the
-manual.
-
-Closed Bugs since 5.0.3:
----------------------
-1389 1444 1448 1466 1467 1468 1476 1481 1486 1488 1493 1494 1497 1499 1501
-1502 1504 1509 1511 1513 1516 1524 1526 1527 1532 1536 1538 1541 1542 1549
-1551 1553 1554 1558 1559 1560 1564 1567 1568 1569 1571 1574 1577 1581 1582
-1584 1587 1594 1595 1600 1601 1602 1603 1604 1606 1608 1610 1612 1623 1624
-1633 1643 1648 1655 1661 1664 1666 1669 1672 1675 1684 1685 1695 1696 1699
-1700 1703 1735 1741 1749 1751 1761 1762 1764 1768 1770 1771 2710
-
-Note on bug 1612 where Bacula does not save a checksum for hard links during
-full backup, but expects one during accurate differential backups. You need
-a Full backup with the 5.2.x code to have these checksums in the Catalog.
-Doing Incr/Diff over a 5.0.x Full backup will still display lot of errors.
-
-
-
-================== Warning !!!!!! ==========================
-
- The new pruning algorithm will not allow pruning of jobs that are essential to
- restore since the last Full backup. This is, of course, correct and desirable,
- but it is different from older Bacula versions that could inappropriately
- prune jobs. Pruning of volumes is not affected.
-
-Building Bat:
--------------
-To build Bat, you need Qt4 version 4.6.2.  If you build with any other
-version it is likely not to work.  If you do not have version 4.6.2, on
-your system, you can download the Bacula depkgs_qt version 16Dec10.
-
-Packaging the SQL backend:
---------------------------
-The main Bacula Director code is independent of the SQL backend
-in this version. This means that the Bacula Director can be packaged
-by itself, then each of the different SQL backends supported can
-be packaged separately.  It is possible to build all the DB backends
-at the same time.
-
-- configure can be run with multiple database configure options.
-   --with-sqlite3
-   --with-mysql
-   --with-postgresql
-
-Order of testing for database is
-- postgresql
-- mysql
-- sqlite3
-
-Each configured backend generates a libbaccats-<backend_name>-<version>.so
-A dummy catalog library is created named libbaccats-version.so
-
-At configure time the first detected backend is used as the so called default
-backend and at install time the dummy libbaccats-<version>.so is replaced with
-the default backend type.
-
-If you configure all three backends you get three backend libraries and the
-postgresql gets installed as the default.  When you want to switch the default
-you can copy one of the three backend libraries over the
-libbaccats-<version>.so e.g.
-
-cp libbaccats-postgresql-<version>.so libbaccats-<version>.so
-
-And update the default backend in the following files:
-
-create_bacula_database
-drop_bacula_database
-drop_bacula_tables
-grant_bacula_privileges
-make_bacula_tables
-make_catalog_backup
-update_bacula_tables 
-
-New Catalog format in version 5.2.0 and greater
------------------------------------------------
-This release of Bacula uses a new catalog format. We provide a set of
-scripts that permit to convert a 5.0.x (version 12) catalog to 5.2.1 (version
-14).  The Bacula project rpm spec files have been modified to
-detect the database change and do the upgrade for you.  We strongly
-recommend that you save a copy of your existing database before upgrading
-using rpms.
-
-The simplest way to upgrade the database assuming you are building from
-source (i.e. manually):
-1. Stop any current version of Bacula from running.
-2. Save a copy of your existing database.
-3. Configure, build, and install the 5.2.1 version of Bacula
-   Note the new ./configure options in the manuals see the link
-   at the bottom of this file.
-4. cd <your-scripts-installation-directory>
-5. ./update_bacula_tables
-6. If you have multiple catalogs, edit the update_bacula_tables
-   script and put the name of another database, and then
-   execute the script again. Repeat this until all Bacula
-   catalogs have been updated.
-7. Start the new Bacula.  If everything worked, it should
-   not print any error messages.
-
-If you start from scratch, you don't need to run the update_bacula_tables
-script because the create_bacula_tables script automatically creates the new
-table format.  However, if you are using a version of Bacula older than 5.0.0
-(e.g.  3.0.3) then you need to run the update_bacula_tables script that will
-be found in the <bacula>/src/cats directory after you run the ./configure
-command.  As mentioned above, before running this script, please backup your
-catalog database, and when you do running it, be sure shutdown Bacula and be
-aware that running the script can take some time depending on your database
-size.
-
-================================================================
-
-Changes:
-
-Speed and Memory Usage Enhancements:
-- Implement LZO compression algorithm (need lzo2 headers to activate this option)
-- New Pruning algoritm -- safer and faster
-- Use of PostgreSQL cursor when doing large queries, should reduce the
-  memory usage during restore and accurate backups.
-- limit command in some list commands
-- Bacula Virtual File System for fast catalog access
-- Faster crc32 algorithm
-
-Security Enhancements:
-- Additional security against injection of illegal characters
-- Fix possible fnmatch problem
-
-Features Enhancements:
-- Improvements in ACL and xattr handling on additional platforms:
-  AIX, Darwind, FreeBSD, HPUX, IRIX, Solaris, Tru64
-- Tray monitor for Windows
-- New SQL backend and ./configure that permits building multiple catalog
-  backends in one build, and has the main Bacula core code totally independent
-  of the SQL backend, which should simplify packaging (only the
-  libbacsql.so/dll needs to be changed to switch from one database backend
-  to another (e.g. MySQL to PostgreSQL).
-- Indent lsmark during restore
-- Disable batch insert config item
-- Director selection option in bconsole
-- restorejob command in bconsole
-- Many additional features for bat such as "brestore" panel
-- The old bat version browser has been turned off since it does not
-  work correctly and the brestore panel provides the same functionality
-- Improved hash table for hard links
-- Additional script variable editing such as %b (JobBytes), %F (JobFiles) 
-  and %h (Client Address)
-
-Other Enhancements:
-- Includes better handling for Windows repares points, mount points, and 
-  junction points.
-- New database format
-- Many new plugin API features
-- Improved memory handling for restores
-- Significant stability enhancements to bat
-- xattr/ACL restore failure are now printed as Warning
-- A few path name length limits in Windows have been removed.
-
-
-===========================================================================
-
-The 5.0.3 version is significant bug fix update to version 5.0.2.
-It includes new code and some new features.
-There is no database change since prior versions of 5.0.
-
-Note, if you are running 5.0.0, read the 5.0.1 and 5.0.2 release notes below in
-  the 5.0.1 release section.
-  Important!!!
-
-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.0.3
- Director and Storage daemons. There should be no need to upgrade older File
- Daemons.
-
-Changes and New Features:
-- If a VSS (Windows) snapshot fails, the whole Job is failed, previously
-  it printed a warning message and continued.
-- New editing codes %b = Job Bytes and %f = Job Files for runscripts
-- Any non-Bacula project plugins (i.e. third party plugins) 
-  must be upgraded to specify AGPLv3 in place of the GPLv2 used previously 
-  for the PLUGIN_LICENSE.
-- The bat Media page text columns can be sorted by clicking on the column.
-- If possible, the SD will automatically update the catalog Volume size if 
-  it does not match the Volume size. The mismatch between the Volume sizes
-  typically occurs when the FD has a comm line drop or the FD crashes.
-
-
-Bug fixes
-1538 1554 1564 1567 1568 1569 1571 1577 1581 1582 1587 1594 1595 1606 1610
-
-- Change license from GPLv2 to AGPLv3
-- Make Win32 no filesystem change more explicit
-- Backport Branch-4.0 release to Branch-5.0
-- Massive backport from Branch-5.1 to Branch-5.0
-- Fix postgresql catalog creation when version is not on the first line
-- Fix bug #1610 handle empty xattr values on Linux and xBSD.
-- Garbage collect memory pool at end of job and before sm_dump
-- Add xattr seg fault protection suggested by Marco for bug #1610
-- Add archlinux to os.m4
-- More fixes for 32/64 bit problems in smartall
-- Fix 32/64 bit problem in smartalloc dump routine
-- Fix bad copy/paste in commit c88dccb88 prably a seg fault
-- Add .dump and .exit commands for daemons
-- Make SD automatically fix the Volume size in the Catalog when out of sync
-- Use Pmsg in smartall.c rather than printf for tracing Windows
-- Up maximum block size to 20M
-- Fix for TLS bugs #1568 and #1599
-- Improve comm line error handling for TLS, may fix bug #1568 and #1599
-- Fix problem when sending Cancel event to plugin
-- Convert all Jmsg on the watchdog thread to Qmsg
-- Fix SD crash due to mismatched lock/unlock in error condition
-- Fix bug #1587 if you have clients with different catalogs configured, both 
-  catalogs contains all clients after a reload or restart of the dir
-- Fix bug #1577 During migration: ERROR in block.c:950 Failed ASSERT: dev->is_open() 
-  by moving and commenting out the ASSERT()
-- Skip HB kill in FD if HB thread terminated
-- Fix crash from unequal volume_lock/unlock calls
-- New prunning algorithm -- should be more accurate
-- Save any dumps during regression to dumps directory
-- Fix crash from rw_lock/unlock miss match
-- Attempt to fix duplicate job kill seg fault
-- Replace pthread_kill by my_thread_send_signal() in jcr.c
-- fix #1595 about batch mode detection problem for postgresql with non standard 
-  install dir
-- Fix #1594 about prune copy jobs
-- Apply literal string fix in printf submitted by Luca Berra
-- Fix bug #1582 Restore from multiple storage daemons breaks subsequent backups
-- Fix segfault on "cancel jobid=" command
-- Fix bug #1554 Windows installer doesn't honor /S flag
-- Remove pool zap code that breaks 2drive-concurrent-test
-- Fix #1571 and install libraries with 755 perms
-- Fix bug #1581 ASSERTs in src/dird/jobq.c can never trigger
-- Fix problem with BaseJob and Accurate FileSet options on client side
-- Fix for bug #1569 deadlock/crash in Dir
-- Fix segfault when loading Plugins
-- Fix #1567 about display of long volume names truncated during restore
-- Added new bacula-libs package.
-- Fix bug #1538 Start Scripts return incorrect value
-- Fix bug #1564 init scripts not LSB compliant
-
-See ChangeLog for more details.
-
-=============================================================================
-
-
-============= Release 5.0.2 ========================
-
-Changes since 5.0.1
--------------------
-
-Bug fixes
-1502 1511 1517 1524 1527 1532 1536 1541 1549 1551 1553 1559 1560
-
-- Probable fix for SD crash bug #1553
-- Fix #1559 problem when restoring pruned jobs with a regexp
-- Fix for bug #1560 bcopy cannot find Volume
-- Fix cancel crash bug #1551
-- Check if sql backend is thread-safe
-- Correct Pool display in SD status. Fixes bug #1541
-- Fix cancel crash reported by Stephen Thompson
-- Rewind on close to fix #1549
-- Remove closelog() in bpipe fixes bug #1536
-- Fix #1517 about missing Base level in .level command
-- Replace ASSERT in block.c with fail Job
-- Fix database locking calling db_lock and returning from function without
-  calling db_unlock.
-- Add missing db_unlock to bvfs_update_cache.
-- Fix #1532 about permission on binaries
-- Fix #1527 about deadlock during migration
-- Another fix for OpenSSLv1
-- Add -lrt to Solaris links
-- Fix tls.c for OpenSSLv1
-- Fix #1511 when trying to insert more than 50.000 directories in bvfs
-- Fix plugin load not to stop if one plugin bad -- pointed out by James
-- Remove --without-qwt from configure statement.
-- Second correct fix to bug #1524 verify fails after adding or removing files
-- Fix bug #1524 verify fails after adding or removing files
-- Apply fix suggested by Andreas in bug #1502 for mediaview column sort problem
-- Fix OpenSSL 1.x problem in crypto.c on Fedora 12
-- Display AllowCompress warning message only if compression used in FileSet
-
-=============================================================================
-
-
-============= Release 5.0.1 ========================
-
-!!!!!!!!!!!!!!! NOTE FOR 5.0.0 USERS !!!!!!!!!!!!!!!!!!!!
-The Allow Duplicate Jobs directive has been significantly 
-reworked, and the default value has changed. See below.
-
-Truncate On Purge has been totally rewritten. See the new
-features section of the manual.
-
-When Volume Poll Interval is set in the SD DEVICE configuration,
-(default 5 mins), after a certain number of polling tries (approx
-10) polling will stop and the operator will be asked to
-resolve the problem.  Previously there was no limit, and an
-error message could be produced at each poll attempt.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-Changes since 5.0.0
--------------------
-- We believe that we have resolved most of the problems
-  concerning canceled or failed jobs being "stuck" in the
-  Director.  There is one outstanding problem in the SD when
-  canceling jobs that we will fix in the next major release.
-  If you see jobs that seem to be stuck, in general issuing
-  a cancel command in bconsole should now make them go away.
-
-Directives:
-- The default for "Allow Duplicate Jobs" has been changed from 
-  no to yes.  If you use this directive, please check your
-  conf file, and note the next two items !!!!!!!!!!!!!!!!!!!
-- AllowHigherDuplicates disabled. It did not work as documented   
-    and was confusing.
-- New directive "CancelLowerLevelDuplicates" See New Features
-  section in the manual.
-- Truncate on Purge rewritten.  See New Features section in the manual.
-
-Bug fixes:
-1448 1466 1467 1468 1476 1481 1486 1488 1494 1497 
-1499 1501 1505 1509 1513
-
-- Ensure SD asks for help when looping even if poll set. Fixes bug #1513.
-- Fix three-pool regress bug
-- Modify bacula.spec fixes bug #1505
-- This version fixes an issue where the console window would start out
-  docked. It is fixed by initiating the variables in the Pages class wi
-  constructor.
-- Fix make_catalog_backup.pl fails when catalog db is on other host
-- Apply MacOSX installer patch from bug #1509
-- Apply fix to previous fix of Copy problem. Fix proposed by reporter o
-  #1476
-- Fix bug #1501 -t does not print errors
-- Apply SQLite3 update fix from bug #1497
-- Apply bashism fix for diskchanger.in script from bug #1499
-- Apply rpm fix for Sci Linux from bug #1494
-- Take most recent Ukranian po from bug #1448
-- Probable fix for Copy/Migration bug #1476
-- Fix bug #1488 -- avoid recursion and race conditions in messages.c
-- Upgrade cats library also to 5.0.0
-- Fix missing console page in bat
-- Add bat help files to Window install
-- Improve Windows upgrade to ensure old FD is shutdown
-- Fix bug #1481 -- bat consumes all console file descriptors
-- Backport truncate on purge from 5.1.x
-- Fix bug #1486 -- bat doesn't show any errors on command-line
-- Update the bsock error URL
-- Correct .my.cnf umask in make_catalog_backup.pl
-- Apply fix for dbcheck use by make_catalog_backup.pl
-- Fix seg fault in bscan from new comment field
-- Allow multiple CNs when using TLS
-- Fix seg fault in SQlite driver
-- Make shared libs version the same as the Bacula release version
-- Remove file_index sequential check
-- Fix #1466 about Bogus pruning message
-
-For Packagers:
-1.  The default query.sql file is now, except for some comments, empty.
-The old file, which we no longer support (it is impossible or difficult to
-make it work on every backend, and the queries are mostly contributed) can
-be found in <bacula-source>/examples/sample-query.sql.  The sample file is
-not installed by the Makefiles
-
-2.  When you install the mtx-changer script, you must also install
-mtx-changer.conf if it does not exist.  This new file (mtx-changer.conf) is
-required for mtx-changer to work, but it is a user configurable file, so on
-any update, any existing file should not be overwritten.
-
-3.  Bat should be built on every platform that is capabable of running Qt.
-However, the Qt code is changing rather quickly and is not always
-compatible from version to version.  We have built and verified bat on Qt
-4.3.4.  We strongly recommend that you do not build and distribute bat with
-any other version of Qt unless you personally test it.  To build against Qt
-4.3.4, download the depkgs-qt package from the Bacula Source Forge download
-location, read the README file and follow the instructions.
-
-If you are building for Bacula version 5.0.0, please ensure that you do not
-have qmake-qt4 loaded on your system.  If you do, either remove it or
-rename it before trying to build bat.  If you do not, bat will probably be
-built using the shared objects on your system.  For Bacula 5.0.1 and later,
-this problem (bug) does not exist.
-
-depkgs-qt does not install Qt on your system, nor does it interfere with
-you having any other version of Qt installed on your system.  Once you
-build bat with depkgs-qt, it should *not* use the Qt shared objects, but
-rather they will be linked into the program.  After fully installing bat
-(make install), you can run "ldd bat" to see what shared objects it will
-use.  If any Qt shared objects are referenced, something has gone wrong.
-
-4.  Unless absolutely necessary, we recommend that you do not define any
-special library environment variables that apply to the ./configure -- for
-example: LIBDIR=/...  ./configure <your-options> is strongly discouraged.
-Doing so, could potentially cause Bacula to be linked against the wrong
-shared objects.
-
-5.  The Bacula project strongly recommends that you install Bacula into a
-single directory, with a few minor exceptions such as the MySQL or
-PostgreSQL databases.  Preferrably this should be /opt/bacula.  The full
-recommendation is:
-
-#!/bin/sh
-# Recommended configure script for Bacula
-prefix=/opt/bacula
-email=xxx at yyy.zz
-CFLAGS="-g -O2 -Wall" \
-  ./configure \
-    --sbindir=${prefix}/bin \
-    --sysconfdir=${prefix}/etc \
-    --docdir=${prefix}/html \
-    --htmldir=${prefix}/html \
-    --with-working-dir=${prefix}/working \
-    --with-pid-dir=${prefix}/working \
-    --with-subsys-dir=${prefix}/working \
-    --with-scriptdir=${prefix}/scripts \
-    --with-plugindir=${prefix}/plugins \
-    --libdir=${prefix}/lib \
-    --enable-smartalloc \
-    --enable-tray-monitor \
-    --enable-bat \
-    --with-mysql \
-    --with-dump-email=${email} \
-    --with-job-email=${email} \
-    --with-smtp-host=localhost \
-    --with-baseport=9101
-
-Obviously, the email, and some of the minor options (mysql, postgresql,
-...) can be changed to suit your distribution, but the directory names
-defined above are strongly recommended, and over time the default values in
-the bacula-dir.conf and bacula-sd.conf will reflect these choices.
-
-If you have any questions about this or would like a detailed document
-describing our recommendations including packaging requirements, please
-send an email to the bacula-devel list.
-
-6.  Starting with Bacula version 3.0.0 up to Bacula 5.0.0, the shared
-libraries that Bacula uses by default are named xxx-1.0.0.  Starting with
-Bacula 5.0.1, we are going to name the libraries using the Bacula version.
-So in Bacula 5.0.1, the libraries will be named xxx-5.0.1.  With future
-versions, the last digit may or may not change when we distribute patch
-updates (i.e.  the last digit of the version changes).  This will depend on
-whether or not we have changed something in the library.  Hopefully this
-new procedure will resolve some of the incompatibility problems between
-different versions of the shared objects.
-
-7.  The default build option for bconsole is conio (my own little console
-routines).  I did this because some years ago, readline was very difficult
-to maintain -- it and where it was found seemed to change on every release.
-This generated at the time a number of support problems.  It seems to me
-that since then there have been very few problems with readline.  As a
-consequence, I have no problem if you want to make bconsole with readline
-enabled.  It will actually give some very nice new bconsole command
-completion functionality that Eric has written.  Bottom line: feel free to
-use readline or not as you please.
-
-==========================================================
-
-
-
-Release Notes for Bacula 5.0.0
-
-Release Numbering:
------------------------------------------------------------
-You might be wondering why this release jumps from 3.0.x to 
-5.0.0 thus skipping version 4.0.0.  We have done this for 
-several reasons: first, we wanted a way of distinguishing
-the numbering system for the Bacula System Enterprise version
-and the Bacula Project version.  So, to do so, we have decided
-that the first number of the Bacula Project version will always
-be odd, and the first number of the Enterprise version will always
-be even. Thus the Bacula Project now moves from 3.0.x to 5.0.x.
-In addition, we want to keep the Bacula Project version larger
-than the Enterprise version to indicate that the Bacula Project
-version is more advanced or has more features than the 
-Enterprise version. For memory, the current Enterprise version
-is 2.6.1, and the next release (in a few months -- before June 2010)
-will be version 4.0.0.
-
-Warning:
---------------------------------------------------------------
-Please note the three Warnings below before doing any install or
-upgrade.
-       
-
-Changes since 3.0.3a (the last Bacula Project release):
--------------------------------------------------------
-
-Bug fixes:
-1337 1351 1352 1354 1357 1361 1367 1369 1370 1373 
-1376 1391 1403 1409 1420 1422 1427 1428 1431 1450 
-1454 1455 1458 1456
-
-Fixed:
- - Problem that locks the Director when the SMTP server wasn't 
-   responding to the bsmtp program 
- - Restore's dir command shows incorrect file sizes 
- - Fix various problems with the reload command   
- - Fix problems with conio
- - Eliminate several deadlocks or potential race conditions from SD
-
-Enhancements:
- - Project 5: Truncate volume after purge
- - Project 6: File Deduplication using Base Jobs 
- - Project 10: Restore from Multiple Storage Daemons
- - Project 11: AllowCompression per Device
- - Project 23: Add Maximum Concurent Jobs for Devices to balance load 
-   between drives
- - Add Accurate Fileset Options to configure accurate detection. Can use 
-   checksum verification for example.
- - Allow FD to keep root read but drop write permission (CAP)
- - Secure handling of passwords for catalog backup
- - Add Tab-completion for Bconsole when using Readline
- - Add Bvfs API to query the catalog without building a memory tree
- - Add new speed test to btape program
- - Add new Bat screens (Autochanger content, Job view, Media view, ...)
- - Windows version of Bat
- - Added Spanish Bacula translation   
- - New bconsole -u nnn option to have timeout on commands
- - Allow Migrate, Copy, and Virtual Full to read and write
-   to the same Pool
- - show disabled   -- shows disabled Jobs
- - Add Pool File and Job retention periods (take precedence over Client)
- - Many ACL improvements
- - Level added to FD status Job entry
- - Allow turning on/off Block Checksum per device
- - Set Device Poll interval to 5 minutes -- previously did not poll
- - Implement lock manager with bad order protection
-
-Compatibility:
-As always, both the Director and Storage daemon must be upgraded at
-the same time, and on any given machine, you must run only one version
-of Bacula. This means that on the Director and Storage daemon machines,
-you *must* upgrade your File daemon as well.
-
-Older 3.0.x and possibly 2.4.x File Daemons are compatible with the 5.0.0
-Director and Storage daemons. There should be no need to upgrade older File
-Daemons immediately. However, we recommend that you do so as soon
-as is reasonable for your situation.
-
-================== Warning !!!!!! ==========================
-
-New Catalog format in version 5.0.0 (3.1.9 or later)
------------------------------------------------------
-
-This release of Bacula uses a new catalog format. We provide a set of
-scripts that permit to convert a 3.0.x (version 11) catalog to 5.0.0 (version
-12).  The Bacula project rpms distributed on Source Forge will automatically
-detect the database change and do the upgrade for you.  We strongly
-recommend that you save a copy of your existing database before upgrading
-using rpms.
-
-The simplest way to upgrade the database assuming you are building from
-source:
-1. Stop any current version of Bacula from running.
-2. Save a copy of your existing database.
-3. Configure, build, and install the 5.0.0 version of Bacula
-   Note the new ./configure options in the manuals see the link
-   at the bottom of this file.
-4. cd <your-scripts-installation-directory>
-5. ./update_bacula_tables
-6. If you have multiple catalogs, edit the update_bacula_tables
-   script and put the name of another database, and then
-   execute the script again. Repeat this until all Bacula
-   catalogs have been updated.
-7. Start the new Bacula.  If everything worked, it should
-   not print any error messages.
-
-If you start from scratch, you don't need to run the update_bacula_tables
-script because the create_bacula_tables script automatically creates the new
-table format.  However, if you are using a version of Bacula older than 3.1.9
-(e.g.  3.0.3) then you need to run the update_bacula_tables script that will
-be found in the <bacula>/src/cats directory after you run the ./configure
-command.  As mentioned above, before running this script, please backup your
-catalog database, and when you do running it, be sure shutdown Bacula and be
-aware that running the script can take some time depending on your database
-size.
-================================================================
-
-
-================== Warning !!!!!! ==========================
-If you upgrade a previous Win32 client installation, you must
-first stop the File daemon, then uninstall it before attempting
-the upgrade. If you do not do so, the upgrade will probably
-fail and you will need to manually find and run the 
-Uninstall.exe file, before you can upgrade to the new version.
-This is because the file locations are different.  If you want
-to save your previous bacula-fd.conf file, please do so before
-uninstalling it.
-================================================================
-
-================== Warning !!!!!! ==========================
-Due to permissions problems on Windows Vista and later systems,
-we no longer require SYSTEM or Administrator permissions to 
-access the binaries and configuation files.  If you wish
-to restrict access to these files, please see the New Features
-section of the manual for how to set access control lists.
-================================================================
-
-Note, the Win32 Installer no longer installs the Bacula Servers
-(Director and Storage daemon). See the New Features section of
-the manual for more details.
-
-============ Documentation improvements needed ==================
-
-Note!!!!! The 5.0.0+ documentation has a number of known problems:
-
-1. We have reduced the number of manuals, which has fixed many
-   of the broken links found in the old 3.0.x version, but there
-   are still some that need fixing.
-
-2. Integration of the 3.0.x features into the main manuals has
-   not yet been done.
-
-The documentation will not be completed in the near future due to lack
-manpower.  If you are unhappy with this situation as we are, we suggest
-you help by submitting patches to the documentation.  Thanks.
-=====
-
-
-This release includes large number of new features and changes.
-It should be more or less compatible with previous xx.conf files
-and File daemons providing that you are not using any of the new
-features.
-
-Please see the New Features chapter of the new manual, which documents
-some but not all the new features (we are still working on it):
-
-http://www.bacula.org/5.0.x-manuals/en/main/main/New_Features_in_5_0_1.html
-  
-The ChangeLog has more details.
+As always, both the Director and Storage daemon(s) must be upgraded at
+the same time. Any File daemon running on the same machine as a Director
+or Storage daemon must be of the same version.
+
+Older File Daemons should be compatible with the 7.0.0 Director and Storage
+daemons.  There should be no need to upgrade older File Daemons.
+
+The following are new directives, commands and features:
+- New Baculum web GUI interface.  See the gui/baculum directory.
+- Directive fdstorageaddress in Client
+- Directive SD Calls Client in Client
+- Directive Maximum Bandwidth per Job in Client
+- Directive FD Storage Address in Storage
+- Directive Maximum Spawned Jobs in Job
+- setbandwidth command in bconsole
+- Progress meter with FD in status dir
+- LastDay of month in schedule
+- sixth 6th week in month in schedule
+- Improvements in bconsole SQL calls
+- Allow list and ranges in cancel as well as the keyword: all
+- truncate command in bconsole
+- prune expired volumes?
+- New hardlink performance enhancements
+- restart command
+- restore optimizespeed=yes|no for hardlinks default yes
+- PkiCipher and PkiDigest in FD Client item
+ Cipher aes128, aes192, aes256, blowfish
+ Digest md5, sha1, sha256
+- Maximum Bandwidth Per Job in FD Client resource
+- Maximum Bandwidth Per Job in FD Director Resource
+- .bvfs_decode_lstat
+- DisableCommand in FD Director resource
+- DisableCommand in FD Client resource
+- status scheduled bconsole command with the following options:
+   days=nn (0-500 default 10); limit=nn (0-2000 default 100)
+   time=YYYY-MM-DD HH:MM:SS
+   schedule=xxx job=xxx
+- NextPool in Run override
+- Directive NextPool in Job
+
+Please see the New Features chapter of the manual for more
+details.
+
+The following features or directives have been removed:
+- Win32
+- tray-monitor
+- wx_console
+- Removed cats DBI driver
+- Python
+
+Detailed changes:
+=================
+24Mar14
+ - Add Josip Almasi to AUTHORS
+ - [PATCH] Support for restricted consoles in BAT config
+ - [PATCH] Fix for free director directive
+ - [PATCH] Fix auto-select restricted console for director in bconsole
+ - Realign output display
+ - Update ua_output.c from Branch-6.7
+ - Add some missing Branch-6.7 updates
+ - Added needed empty directories to Baculum
+ - Fix for support PostgreSQL, MySQL and SQLite
+ - Framework adjusting to Baculum database connections
+ - Framework fix for lower case tables names in MySQL
+ - Fix for Baculum SQLite support
+ - Initial commit Baculum
+ - Add Marcin to AUTHORS file
+ - Strip trailing blanks
+ - Update copyright year
+ - Update LICENSE and header files
+ - Remove old file
+ - Add new header in misc files
+ - Remove tray-monitor bwx-console manual installation
+ - Remove FD python and examples
+ - Fixup spec files
+ - Remove pythonlib from lib
+ - Update package-list
+ - Fix SDCallsClient daemon synchronization
+ - Add debug code + make 127.0.0.1 same as localhost for tls tests
+ - Fix multiple DIRs in console
+ - Make failure for bat to connect to DIR non-fatal
+ - Fix bat style to one that works
+ - Take disk-changer from Branch-6.7
+ - Simplify Version output
+ - Fix FDVersion for SD Calls Client test
+ - Update accurate test
+ - Update differential test
+ - Add new regress timing scripts
+ - Improve plugin make clean
+ - Implement regress FORCE_SDCALLS
+ - Remove win32 tray-monitor and wx-console directories
+ - Remove regress-config need only regress-config.in
+ - Add configure archivedir
+ - Improve SQL failure reporting
+ - First cut backport BEE to community
+ - Add copyright to mtx-changer.in
diff --git a/autoconf/Make.common.in b/autoconf/Make.common.in
index 17467bb..7d91340 100644
--- a/autoconf/Make.common.in
+++ b/autoconf/Make.common.in
@@ -2,6 +2,20 @@
 # This file is pulled in by all the Unix Bacula Makefiles
 #   so it has all the "common" definitions
 #
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 DATE="@DATE@"
 LSMDATE=@LSMDATE@
@@ -47,7 +61,7 @@ RMF = $(RM) -f
 CP = @CP@
 SED = @SED@
 AWK = @AWK@
-ECHO = @ECHO@
+ECHO = ${ECHO:-/bin/echo}
 CMP = @CMP@
 TBL = @TBL@
 AR = @AR@
@@ -87,8 +101,6 @@ LIBS = @LIBS@
 WRAPLIBS = @WRAPLIBS@
 DINCLUDE = @DINCLUDE@
 DLIB = @DLIB@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_INC = @PYTHON_INCDIR@
 OPENSSL_LIBS = @OPENSSL_LIBS@
 DLLIBS = @LIBADD_DLOPEN@
 
diff --git a/autoconf/aclocal.m4.save b/autoconf/aclocal.m4.save
index 8188873..de6977d 100644
--- a/autoconf/aclocal.m4.save
+++ b/autoconf/aclocal.m4.save
@@ -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 0055e22..1afdee3 100644
--- a/autoconf/bacula-macros/db.m4
+++ b/autoconf/bacula-macros/db.m4
@@ -21,7 +21,7 @@ AC_HELP_STRING([--with-dbi@<:@=DIR@:>@], [Include DBI support. DIR is the DBD ba
            else
               DBI_LIBDIR=/usr/lib
            fi
-           DBI_BINDIR=/usr/bin      
+           DBI_BINDIR=/usr/bin
         elif test -f $prefix/include/dbi/dbi.h; then
            DBI_INCDIR=$prefix/include
            if test -d $prefix/lib64; then
@@ -29,7 +29,7 @@ AC_HELP_STRING([--with-dbi@<:@=DIR@:>@], [Include DBI support. DIR is the DBD ba
            else
               DBI_LIBDIR=$prefix/lib
            fi
-           DBI_BINDIR=$prefix/bin      
+           DBI_BINDIR=$prefix/bin
         else
            AC_MSG_RESULT(no)
            AC_MSG_ERROR(Unable to find dbi.h in standard locations)
@@ -150,7 +150,7 @@ AC_HELP_STRING([--with-dbi@<:@=DIR@:>@], [Include DBI support. DIR is the DBD ba
 AC_SUBST(DBI_LIBS)
 AC_SUBST(DBI_INCLUDE)
 AC_SUBST(DBI_BINDIR)
-AC_SUBST(DBI_DBD_DRIVERDIR)  
+AC_SUBST(DBI_DBD_DRIVERDIR)
 
 ])
 
@@ -176,7 +176,7 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
            elif test -f /usr/bin/mysql; then
               MYSQL_BINDIR=/usr/bin
               if test -f /usr/lib64/mysql/libmysqlclient_r.a \
-                  -o -f /usr/lib64/mysql/libmysqlclient_r.so; then  
+                  -o -f /usr/lib64/mysql/libmysqlclient_r.so; then
                   MYSQL_LIBDIR=/usr/lib64/mysql
               elif test -f /usr/lib/mysql/libmysqlclient_r.a \
                   -o -f /usr/lib/mysql/libmysqlclient_r.so; then
@@ -187,7 +187,7 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
            elif test -f /usr/local/bin/mysql; then
               MYSQL_BINDIR=/usr/local/bin
               if test -f /usr/local/lib64/mysql/libmysqlclient_r.a \
-                  -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then  
+                  -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then
                   MYSQL_LIBDIR=/usr/local/lib64/mysql
               elif test -f /usr/local/lib/mysql/libmysqlclient_r.a \
                   -o -f /usr/local/lib/mysql/libmysqlclient_r.so; then
@@ -209,6 +209,18 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
               else
                   MYSQL_LIBDIR=$withval/lib/mysql
               fi
+           elif test -f $prefix/lib/mysql55/bin/mysql; then
+              MYSQL_BINDIR=$prefix/lib/mysql55/bin
+              if test -f $prefix/lib/mysql55/mysql/libmysqlclient_r.a \
+                  -o -f $prefix/lib/mysql55/mysql/libmysqlclient_r.so; then
+                  MYSQL_LIBDIR=$prefix/lib/mysql55/mysql
+              fi
+           elif test -f $prefix/lib/mysql51/bin/mysql; then
+              MYSQL_BINDIR=$prefix/lib/mysql51/bin
+              if test -f $prefix/lib/mysql51/mysql/libmysqlclient_r.a \
+                  -o -f $prefix/lib/mysql51/mysql/libmysqlclient_r.so; then
+                  MYSQL_LIBDIR=$prefix/lib/mysql51/mysql
+              fi
            else
               AC_MSG_RESULT(no)
               AC_MSG_ERROR(Unable to find mysql in standard locations)
@@ -275,14 +287,14 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
                  SQLITE_LIBDIR=/usr/lib64
               else
                  SQLITE_LIBDIR=/usr/lib
-              fi                 
+              fi
            elif test -f $withval/bin/sqlite3; then
               SQLITE_BINDIR=$withval/bin
               if test -d $withval/lib64; then
                  SQLITE_LIBDIR=$withval/lib64
               else
                  SQLITE_LIBDIR=$withval/lib
-              fi                 
+              fi
            else
               AC_MSG_RESULT(no)
               AC_MSG_ERROR(Unable to find sqlite in standard locations)
@@ -292,7 +304,7 @@ AC_HELP_STRING([--with-dbi-driver@<:@=DRIVER@:>@], [Suport for DBI driver. DRIVE
            else
               DB_PROG_LIB=$SQLITE_LIBDIR/libsqlite3.a
            fi
-        ;;                
+        ;;
         *)
            AC_MSG_RESULT(no)
            AC_MSG_ERROR(Unable to set DBI driver. $withval is not supported)
@@ -352,7 +364,7 @@ AC_HELP_STRING([--with-mysql@<:@=DIR@:>@], [Include MySQL support. DIR is the My
            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  
+                      -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
@@ -423,6 +435,36 @@ AC_HELP_STRING([--with-mysql@<:@=DIR@:>@], [Include MySQL support. DIR is the My
                  MYSQL_LIBDIR=$withval/lib
               fi
               MYSQL_BINDIR=$withval/bin
+           elif test -f $withval/mysql.h; then
+              dnl MacPorts on OSX has a special MySQL Layout. See #2079
+              MYSQL_INCDIR=$withval
+              AC_MSG_NOTICE(Got with-mysql variable $MYSQL_INCDIR checking MySQL version)
+              case $MYSQL_INCDIR in
+                 *mysql55*)
+                     AC_MSG_NOTICE(Assuming MacPorts MySQL 5.5 variant installed)
+                     dnl with-mysql given contains mysql55 - assuming OSX MacPorts MySQL55 variant
+                     if test -f $prefix/lib/mysql55/mysql/libmysqlclient_r.a \
+                          -o -f $prefix/lib/mysql55/mysql/libmysqlclient_r.so; then
+                        AC_MSG_NOTICE(Found MySQL 5.5 library in $prefix/lib/mysql55/mysql)
+                        MYSQL_LIBDIR=$prefix/lib/mysql55/mysql
+                     fi
+                     MYSQL_BINDIR=$prefix/lib/mysql55/bin
+                 ;;
+                 *mysql51*)
+                     AC_MSG_NOTICE(Assuming MacPorts MySQL 5.1 variant installed)
+                     dnl with-mysql contains mysql51 - assuming OSX MacPorts MySQL51 variant
+                     if test -f $prefix/lib/mysql51/mysql/libmysqlclient_r.a \
+                          -o -f $prefix/lib/mysql51/mysql/libmysqlclient_r.so; then
+                        AC_MSG_NOTICE(Found MySQL 5.1 library in $prefix/lib/mysql55/mysql)
+                        MYSQL_LIBDIR=$prefix/lib/mysql51/mysql
+                     fi
+                     MYSQL_BINDIR=$prefix/lib/mysql51/bin
+                 ;;
+              esac
+              if test -z "${MYSQL_LIBDIR}" ; then
+                 AC_MSG_RESULT(no)
+                 AC_MSG_ERROR(MySQL $withval - unable to find MySQL libraries)
+              fi
            else
               AC_MSG_RESULT(no)
               AC_MSG_ERROR(Invalid MySQL directory $withval - unable to find mysql.h under $withval)
@@ -613,7 +655,7 @@ AC_HELP_STRING([--with-embedded-mysql@<:@=DIR@:>@], [Include MySQL support. DIR
 AC_SUBST(MYSQL_LIBS)
 AC_SUBST(MYSQL_INCLUDE)
 AC_SUBST(MYSQL_BINDIR)
-  
+
 ])
 
 AC_DEFUN([BA_CHECK_INGRES_DB],
@@ -631,7 +673,7 @@ AC_HELP_STRING([--with-ingres@<:@=DIR@:>@], [Include Ingres support. DIR is the
         elif test -f ${II_SYSTEM}/ingres/files/eqdefc.h; then
            INGRES_INCDIR=${II_SYSTEM}/ingres/files
            INGRES_LIBDIR=${II_SYSTEM}/ingres/lib
-           INGRES_BINDIR=${II_SYSTEM}/ingres/bin      
+           INGRES_BINDIR=${II_SYSTEM}/ingres/bin
         else
            AC_MSG_RESULT(no)
            AC_MSG_ERROR(Unable to find eqdefc.h in standard locations)
@@ -701,7 +743,7 @@ AC_HELP_STRING([--with-sqlite3@<:@=DIR@:>@], [Include SQLite3 support. DIR is th
            else
               SQLITE_LIBDIR=/usr/lib
            fi
-           SQLITE_BINDIR=/usr/bin      
+           SQLITE_BINDIR=/usr/bin
         elif test -f $prefix/include/sqlite3.h; then
            SQLITE_INCDIR=$prefix/include
            if test -d $prefix/lib64; then
@@ -709,7 +751,7 @@ AC_HELP_STRING([--with-sqlite3@<:@=DIR@:>@], [Include SQLite3 support. DIR is th
            else
               SQLITE_LIBDIR=$prefix/lib
            fi
-           SQLITE_BINDIR=$prefix/bin      
+           SQLITE_BINDIR=$prefix/bin
         else
            AC_MSG_RESULT(no)
            AC_MSG_ERROR(Unable to find sqlite3.h in standard locations)
@@ -784,7 +826,7 @@ AC_HELP_STRING([--with-sqlite3@<:@=DIR@:>@], [Include SQLite3 support. DIR is th
 AC_SUBST(SQLITE_LIBS)
 AC_SUBST(SQLITE_INCLUDE)
 AC_SUBST(SQLITE_BINDIR)
-  
+
 ])
 
 
diff --git a/autoconf/config.guess b/autoconf/config.guess
index e3a2116..b79252d 100755
--- a/autoconf/config.guess
+++ b/autoconf/config.guess
@@ -1,14 +1,12 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2009-06-10'
+timestamp='2013-06-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -17,26 +15,22 @@ timestamp='2009-06-10'
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per at bothner.com>.
-# Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
 #
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
+# Originally written by Per Bothner.
 #
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches at gnu.org.
+
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -56,8 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -139,12 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	eval $set_cc_for_build
+	cat <<-EOF > $dummy.c
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	LIBC=gnu
+	#endif
+	EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	;;
+esac
+
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:NetBSD:*:*)
 	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
 	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
 	# switched to ELF, *-*-netbsd* would select the old
 	# object file format.  This provides both forward
@@ -180,7 +194,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		fi
 		;;
 	    *)
-	        os=netbsd
+		os=netbsd
 		;;
 	esac
 	# The OS release
@@ -201,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
 	echo "${machine}-${os}${release}"
 	exit ;;
+    *:Bitrig:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+	exit ;;
     *:OpenBSD:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
 	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -223,7 +241,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
 		;;
 	*5.*)
-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
 		;;
 	esac
 	# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -269,7 +287,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit ;;
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
     Alpha\ *:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# Should we change UNAME_MACHINE based on the output of uname instead
@@ -295,12 +316,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	echo s390-ibm-zvmoe
 	exit ;;
     *:OS400:*:*)
-        echo powerpc-ibm-os400
+	echo powerpc-ibm-os400
 	exit ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
 	echo arm-acorn-riscix${UNAME_RELEASE}
 	exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
 	echo arm-unknown-riscos
 	exit ;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -333,6 +354,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
 	eval $set_cc_for_build
 	SUN_ARCH="i386"
@@ -391,23 +415,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint${UNAME_RELEASE}
 	exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
 	echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
+	exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint${UNAME_RELEASE}
 	exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
     m68k:machten:*:*)
 	echo m68k-apple-machten${UNAME_RELEASE}
 	exit ;;
@@ -477,8 +501,8 @@ EOF
 	echo m88k-motorola-sysv3
 	exit ;;
     AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
 	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
 	then
 	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -491,7 +515,7 @@ EOF
 	else
 	    echo i586-dg-dgux${UNAME_RELEASE}
 	fi
- 	exit ;;
+	exit ;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
 	echo m88k-dolphin-sysv3
 	exit ;;
@@ -548,7 +572,7 @@ EOF
 		echo rs6000-ibm-aix3.2
 	fi
 	exit ;;
-    *:AIX:*:[456])
+    *:AIX:*:[4567])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
@@ -591,52 +615,52 @@ EOF
 	    9000/[678][0-9][0-9])
 		if [ -x /usr/bin/getconf ]; then
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH="hppa2.0n" ;;
+			  64) HP_ARCH="hppa2.0w" ;;
 			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
+			esac ;;
+		    esac
 		fi
 		if [ "${HP_ARCH}" = "" ]; then
 		    eval $set_cc_for_build
-		    sed 's/^              //' << EOF >$dummy.c
+		    sed 's/^		//' << EOF >$dummy.c
 
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
 
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
 
-                  switch (cpu)
-              	{
-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-              	    switch (bits)
-              		{
-              		case 64: puts ("hppa2.0w"); break;
-              		case 32: puts ("hppa2.0n"); break;
-              		default: puts ("hppa2.0"); break;
-              		} break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-              	    puts ("hppa2.0"); break;
-              #endif
-              	default: puts ("hppa1.0"); break;
-              	}
-                  exit (0);
-              }
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
 EOF
 		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -727,22 +751,22 @@ EOF
 	exit ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
 	echo c1-convex-bsd
-        exit ;;
+	exit ;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
 	if getsysinfo -f scalar_acc
 	then echo c32-convex-bsd
 	else echo c2-convex-bsd
 	fi
-        exit ;;
+	exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
 	echo c34-convex-bsd
-        exit ;;
+	exit ;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
 	echo c38-convex-bsd
-        exit ;;
+	exit ;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
 	echo c4-convex-bsd
-        exit ;;
+	exit ;;
     CRAY*Y-MP:*:*:*)
 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
@@ -766,14 +790,14 @@ EOF
 	exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
     5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -785,34 +809,39 @@ EOF
 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
 	exit ;;
     *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
 	    amd64)
 		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	esac
 	exit ;;
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
 	exit ;;
+    *:MINGW64*:*)
+	echo ${UNAME_MACHINE}-pc-mingw64
+	exit ;;
     *:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
 	exit ;;
+    i*:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
     i*:windows32*:*)
-    	# uname -m includes "-pc" on this system.
-    	echo ${UNAME_MACHINE}-mingw32
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
 	exit ;;
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
 	exit ;;
-    *:Interix*:[3456]*)
-    	case ${UNAME_MACHINE} in
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
 	    x86)
 		echo i586-pc-interix${UNAME_RELEASE}
 		exit ;;
-	    EM64T | authenticamd | genuineintel)
+	    authenticamd | genuineintel | EM64T)
 		echo x86_64-unknown-interix${UNAME_RELEASE}
 		exit ;;
 	    IA64)
@@ -845,45 +874,81 @@ EOF
 	exit ;;
     *:GNU:*:*)
 	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
 	exit ;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
 	exit ;;
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     arm*:Linux:*:*)
 	eval $set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_EABI__
 	then
-	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	else
-	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+	    fi
 	fi
 	exit ;;
     avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     cris:Linux:*:*)
-	echo cris-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
 	exit ;;
     crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
 	exit ;;
     frv:Linux:*:*)
-    	echo frv-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
 	exit ;;
     ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
 	eval $set_cc_for_build
@@ -901,123 +966,65 @@ EOF
 	#endif
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
 	;;
-    or32:Linux:*:*)
-	echo or32-unknown-linux-gnu
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
+    or1k:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+    or32:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     padre:Linux:*:*)
-	echo sparc-unknown-linux-gnu
+	echo sparc-unknown-linux-${LIBC}
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-${LIBC}
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
+	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+	  *)    echo hppa-unknown-linux-${LIBC} ;;
 	esac
 	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-${LIBC}
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-${LIBC}
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-${LIBC}
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-${LIBC}
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
+	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
 	exit ;;
     sh64*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
+	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
 	exit ;;
     x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     xtensa*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-		;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^LIBC/{
-		s: ::g
-		p
-	    }'`"
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-	;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
 	# earlier versions are messed up and put the nodename in both
@@ -1025,11 +1032,11 @@ EOF
 	echo i386-sequent-sysv4
 	exit ;;
     i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
 	# I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
+	# Use sysv4.2uw... so that sysv4* matches it.
 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
 	exit ;;
     i*86:OS/2:*:*)
@@ -1061,7 +1068,7 @@ EOF
 	fi
 	exit ;;
     i*86:*:5:[678]*)
-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
 	case `/bin/uname -X | grep "^Machine"` in
 	    *486*)	     UNAME_MACHINE=i486 ;;
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
@@ -1089,13 +1096,13 @@ EOF
 	exit ;;
     pc:*:*:*)
 	# Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i586.
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
 	# Note: whatever this is, it MUST be the same as what config.sub
 	# prints for the "djgpp" host, or else GDB configury will decide that
 	# this is a cross-build.
 	echo i586-pc-msdosdjgpp
-        exit ;;
+	exit ;;
     Intel:Mach:3*:*)
 	echo i386-pc-mach3
 	exit ;;
@@ -1130,8 +1137,8 @@ EOF
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
 	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
 	OS_REL='.3'
 	test -r /etc/.relid \
@@ -1174,10 +1181,10 @@ EOF
 		echo ns32k-sni-sysv
 	fi
 	exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel at ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel at ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
     *:UNIX_System_V:4*:FTX*)
 	# From Gerald Hewes <hewes at openmarket.com>.
 	# How about differentiating between stratus architectures? -djm
@@ -1203,11 +1210,11 @@ EOF
 	exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
 	if [ -d /usr/nec ]; then
-	        echo mips-nec-sysv${UNAME_RELEASE}
+		echo mips-nec-sysv${UNAME_RELEASE}
 	else
-	        echo mips-unknown-sysv${UNAME_RELEASE}
+		echo mips-unknown-sysv${UNAME_RELEASE}
 	fi
-        exit ;;
+	exit ;;
     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
 	echo powerpc-be-beos
 	exit ;;
@@ -1220,6 +1227,9 @@ EOF
     BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
 	echo i586-pc-haiku
 	exit ;;
+    x86_64:Haiku:*:*)
+	echo x86_64-unknown-haiku
+	exit ;;
     SX-4:SUPER-UX:*:*)
 	echo sx4-nec-superux${UNAME_RELEASE}
 	exit ;;
@@ -1246,9 +1256,21 @@ EOF
 	exit ;;
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
+	eval $set_cc_for_build
+	if test "$UNAME_PROCESSOR" = unknown ; then
+	    UNAME_PROCESSOR=powerpc
+	fi
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		case $UNAME_PROCESSOR in
+		    i386) UNAME_PROCESSOR=x86_64 ;;
+		    powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		esac
+	    fi
+	fi
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
 	exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1262,7 +1284,10 @@ EOF
     *:QNX:*:4*)
 	echo i386-pc-qnx
 	exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
 	echo nse-tandem-nsk${UNAME_RELEASE}
 	exit ;;
     NSR-?:NONSTOP_KERNEL:*:*)
@@ -1307,13 +1332,13 @@ EOF
 	echo pdp10-unknown-its
 	exit ;;
     SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
+	echo mips-sei-seiux${UNAME_RELEASE}
 	exit ;;
     *:DragonFly:*:*)
 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
 	exit ;;
     *:*VMS:*:*)
-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
 	case "${UNAME_MACHINE}" in
 	    A*) echo alpha-dec-vms ; exit ;;
 	    I*) echo ia64-dec-vms ; exit ;;
@@ -1331,11 +1356,11 @@ EOF
     i*86:AROS:*:*)
 	echo ${UNAME_MACHINE}-pc-aros
 	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
 esac
 
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
 eval $set_cc_for_build
 cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
@@ -1353,11 +1378,11 @@ main ()
 #include <sys/param.h>
   printf ("m68k-sony-newsos%s\n",
 #ifdef NEWSOS4
-          "4"
+	"4"
 #else
-	  ""
+	""
 #endif
-         ); exit (0);
+	); exit (0);
 #endif
 #endif
 
diff --git a/autoconf/config.h.in b/autoconf/config.h.in
index 4ce9ed2..33b04f1 100644
--- a/autoconf/config.h.in
+++ b/autoconf/config.h.in
@@ -383,6 +383,12 @@
 /* Define to 1 if you have the `fchdir' function. */
 #undef HAVE_FCHDIR
 
+/* Define to 1 if you have the `fchmod' function. */
+#undef HAVE_FCHMOD
+
+/* Define to 1 if you have the `fchown' function. */
+#undef HAVE_FCHOWN
+
 /* Define to 1 if you have the 'fchownat' function. */
 #undef HAVE_FCHOWNAT
 
@@ -404,6 +410,9 @@
 /* Define to 1 if you have the 'fstatat' function. */
 #undef HAVE_FSTATAT
 
+/* Define to 1 if you have the `futimes' function. */
+#undef HAVE_FUTIMES
+
 /* Define to 1 if you have the 'futimesat' function. */
 #undef HAVE_FUTIMESAT
 
@@ -449,6 +458,9 @@
 /* Define to 1 if you have the `getmntinfo' function. */
 #undef HAVE_GETMNTINFO
 
+/* Define to 1 if you have the `getnameinfo' function. */
+#undef HAVE_GETNAMEINFO
+
 /* Set if have getpagesize */
 #undef HAVE_GETPAGESIZE
 
@@ -476,10 +488,7 @@
 /* Define to 1 if you have the <grp.h> header file. */
 #undef HAVE_GRP_H
 
-/* Set if you have GTK 4.2 or greater loaded */
-#undef HAVE_GTK_2_4
-
-/* Define if you have the iconv() function. */
+/* Define to 1 if you have the `iconv()' function. */
 #undef HAVE_ICONV
 
 /* Define to 1 if you have the `inet_ntop' function. */
@@ -510,6 +519,9 @@
 /* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
 #undef HAVE_LANGINFO_CODESET
 
+/* Define to 1 if you have the `lchmod' function. */
+#undef HAVE_LCHMOD
+
 /* Define to 1 if you have the `lchown' function. */
 #undef HAVE_LCHOWN
 
@@ -549,9 +561,6 @@
 /* Define to 1 if you have the `sun' library (-lsun). */
 #undef HAVE_LIBSUN
 
-/* Define to 1 if you have the `util' library (-lutil). */
-#undef HAVE_LIBUTIL
-
 /* Defines if your system have the libutil.h header file */
 #undef HAVE_LIBUTIL_H
 
diff --git a/autoconf/config.h.in.save b/autoconf/config.h.in.save
deleted file mode 100644
index ecafd61..0000000
--- a/autoconf/config.h.in.save
+++ /dev/null
@@ -1,1152 +0,0 @@
-/* autoconf/config.h.in.  Generated from autoconf/configure.in by autoheader.  */
-/* ------------------------------------------------------------------------- */
-/* --                     CONFIGURE SPECIFIED FEATURES                    -- */
-/* ------------------------------------------------------------------------- */
-   
-/* Define if you want to use MySQL as Catalog database */
-#undef USE_MYSQL_DB
-
-/* Define if you want SmartAlloc debug code enabled */
-#undef SMARTALLOC
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef daddr_t
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef major_t
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef minor_t
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#undef ssize_t
-
-/* Define if you want to use PostgreSQL */
-#undef HAVE_POSTGRESQL
-
-/* Define if you want to use MySQL */
-#undef HAVE_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
-
-/* Define if you want to use SQLite3 */
-#undef HAVE_SQLITE3
-
-/* ------------------------------------------------------------------------- */
-/* --                     CONFIGURE DETECTED FEATURES                     -- */
-/* ------------------------------------------------------------------------- */
-
-/* Define if you need function prototypes */
-#undef PROTOTYPES
-
-/* 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
-
-/* 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
-
-/* Define to use 4.4BSD and OSF1 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.  */
-#undef HAVE_UTIME_H
-
-/* Data types */
-#undef HAVE_U_INT
-#undef HAVE_INTXX_T
-#undef HAVE_U_INTXX_T
-#undef HAVE_UINTXX_T
-#undef HAVE_INT64_T
-#undef HAVE_U_INT64_T
-#undef HAVE_INTMAX_T
-#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 */
-#undef _PATH_BACULA_PIDDIR
-
-/* LOCALEDIR */
-#undef LOCALEDIR
-
-/* 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
-
-/* File daemon specif libraries */
-#undef FDLIBS
-
-/* Path to Sendmail program */
-#undef SENDMAIL_PATH
-
-/* What kind of signals we have */
-#undef HAVE_POSIX_SIGNALS
-#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
-#undef HAVE_CYGWIN
-#undef HAVE_OSF1_OS
-#undef HAVE_DARWIN_OS
-
-/* Set to correct scanf value for long long int */
-#undef lld
-#undef llu
-
-#undef HAVE_READLINE 
-#undef HAVE_PYTHON
-
-#undef HAVE_GMP
-
-#undef HAVE_CWEB
-
-#undef HAVE_FCHDIR
-
-#undef HAVE_GETOPT_LONG
-
-#undef HAVE_LIBSM
-
-/* Check for thread safe routines */
-#undef HAVE_LOCALTIME_R
-#undef HAVE_READDIR_R
-#undef HAVE_STRERROR_R
-#undef HAVE_GETHOSTBYNAME_R
-
-#undef HAVE_STRTOLL
-#undef HAVE_INET_PTON
-
-#undef HAVE_SOCKLEN_T
-
-#undef HAVE_OLD_SOCKOPT
-#undef USE_THR_SETCONCURRENCY
- 
-/* Defined if Gtk+-2.4 or greater is present */
-#undef HAVE_GTK_2_4
-
-/* Needed on HP-UX/g++ systems to support long long ints (int64) */
-#undef _INCLUDE_LONGLONG
-
-/* Define to system config directory */
-#undef SYSCONFDIR
-
-/* Define if OPENSSL is available */
-#undef HAVE_OPENSSL
-
-/* Define if comm encryption should be enabled */
-#undef HAVE_TLS
-
-/* Define if data encryption should be enabled */
-#undef HAVE_CRYPTO
-
-/* Define the LOCALEDIR if a translation */
-#undef LOCALEDIR
-
-/* 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
-
-/* 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 translation of program messages to the user's native
-   language is requested. */
-#undef ENABLE_NLS
-
-/* 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
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the <argz.h> header file. */
-#undef HAVE_ARGZ_H
-
-/* Define to 1 if you have the <arpa/nameser.h> header file. */
-#undef HAVE_ARPA_NAMESER_H
-
-/* Define to 1 if you have the `asprintf' function. */
-#undef HAVE_ASPRINTF
-
-/* Define to 1 if you have the <assert.h> header file. */
-#undef HAVE_ASSERT_H
-
-/* 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
-
-/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
-   the CoreFoundation framework. */
-#undef HAVE_CFPREFERENCESCOPYAPPVALUE
-
-/* Define to 1 if you have the `chflags' function. */
-#undef HAVE_CHFLAGS
-
-/* Set if Bacula conio support enabled */
-#undef HAVE_CONIO
-
-/* Define if encryption support should be enabled */
-#undef HAVE_CRYPTO
-
-/* Define to 1 if you have the <curses.h> header file. */
-#undef HAVE_CURSES_H
-
-/* Define if the GNU dcgettext() function is already present or preinstalled.
-   */
-#undef HAVE_DCGETTEXT
-
-/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
-   don't. */
-#undef HAVE_DECL_FEOF_UNLOCKED
-
-/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
-   you don't. */
-#undef HAVE_DECL_FGETS_UNLOCKED
-
-/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
-   don't. */
-#undef HAVE_DECL_GETC_UNLOCKED
-
-/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
-   */
-#undef HAVE_DECL_TZNAME
-
-/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL__SNPRINTF
-
-/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL__SNWPRINTF
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
-   */
-#undef HAVE_DIRENT_H
-
-/* 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
-
-/* 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
-
-/* Define to 1 if you have the 'extattr_get_link' function. */
-#undef HAVE_EXTATTR_GET_LINK
-
-/* Define to 1 if you have the 'extattr_list_file' function. */
-#undef HAVE_EXTATTR_LIST_FILE
-
-/* Define to 1 if you have the 'extattr_list_link' function. */
-#undef HAVE_EXTATTR_LIST_LINK
-
-/* Define to 1 if you have the 'extattr_namespace_to_string' function. */
-#undef HAVE_EXTATTR_NAMESPACE_TO_STRING
-
-/* Define to 1 if you have the 'extattr_set_file' function. */
-#undef HAVE_EXTATTR_SET_FILE
-
-/* Define to 1 if you have the 'extattr_set_link' function. */
-#undef HAVE_EXTATTR_SET_LINK
-
-/* Define to 1 if you have the 'extattr_string_to_namespace' function. */
-#undef HAVE_EXTATTR_STRING_TO_NAMESPACE
-
-/* Extended acl support */
-#undef HAVE_EXTENDED_ACL
-
-/* Define to 1 if you have the `fchdir' function. */
-#undef HAVE_FCHDIR
-
-/* Define to 1 if you have the 'fchownat' function. */
-#undef HAVE_FCHOWNAT
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `fdatasync' function. */
-#undef HAVE_FDATASYNC
-
-/* Define to 1 if you have the `fork' function. */
-#undef HAVE_FORK
-
-/* Define to 1 if you have the `fseeko' function. */
-#undef HAVE_FSEEKO
-
-/* Define to 1 if you have the 'fstatat' function. */
-#undef HAVE_FSTATAT
-
-/* Define to 1 if you have the 'futimesat' function. */
-#undef HAVE_FUTIMESAT
-
-/* Define to 1 if you have the `fwprintf' function. */
-#undef HAVE_FWPRINTF
-
-/* 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
-
-/* Define to 1 if you have the `geteuid' function. */
-#undef HAVE_GETEUID
-
-/* Define to 1 if you have the `getgid' function. */
-#undef HAVE_GETGID
-
-/* Define to 1 if you have the `gethostbyname2' function. */
-#undef HAVE_GETHOSTBYNAME2
-
-/* Define to 1 if you have the `gethostbyname_r' function. */
-#undef HAVE_GETHOSTBYNAME_R
-
-/* Define to 1 if you have the `gethostid' function. */
-#undef HAVE_GETHOSTID
-
-/* Define to 1 if you have the `gethostname' function. */
-#undef HAVE_GETHOSTNAME
-
-/* Define to 1 if you have the `getmntent' function. */
-#undef HAVE_GETMNTENT
-
-/* 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
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the `getuid' function. */
-#undef HAVE_GETUID
-
-/* 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
-
-/* Set if you have GTK 4.2 or greater loaded */
-#undef HAVE_GTK_2_4
-
-/* Define if you have the iconv() function. */
-#undef HAVE_ICONV
-
-/* Define to 1 if you have the `inet_ntop' function. */
-#undef HAVE_INET_NTOP
-
-/* Define to 1 if you have the `inet_pton' function. */
-#undef HAVE_INET_PTON
-
-/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
-#undef HAVE_INTMAX_T
-
-/* 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>. */
-#undef HAVE_INTTYPES_H
-
-/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
-   declares uintmax_t. */
-#undef HAVE_INTTYPES_H_WITH_UINTMAX
-
-/* Set if ioctl request is unsigned long int */
-#undef HAVE_IOCTL_ULINT_REQUEST
-
-/* Whether to enable IPv6 support */
-#undef HAVE_IPV6
-
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#undef HAVE_LANGINFO_CODESET
-
-/* Define to 1 if you have the `lchown' function. */
-#undef HAVE_LCHOWN
-
-/* 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
-
-/* Define if you have libcap */
-#undef HAVE_LIBCAP
-
-/* 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 `util' library (-lutil). */
-#undef HAVE_LIBUTIL
-
-/* Defines if your system have the libutil.h header file */
-#undef HAVE_LIBUTIL_H
-
-/* Set to enable libwraper support */
-#undef HAVE_LIBWRAP
-
-/* Define to 1 if you have the `xnet' library (-lxnet). */
-#undef HAVE_LIBXNET
-
-/* 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
-
-/* Define to 1 if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define to 1 if you have the `localtime_r' function. */
-#undef HAVE_LOCALTIME_R
-
-/* Define if you have the 'long double' type. */
-#undef HAVE_LONG_DOUBLE
-
-/* 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
-
-/* Define to 1 if you have the `mempcpy' function. */
-#undef HAVE_MEMPCPY
-
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the <mtio.h> header file. */
-#undef HAVE_MTIO_H
-
-/* Define to 1 if you have the `munmap' function. */
-#undef HAVE_MUNMAP
-
-/* Define to 1 if you have the `nanosleep' function. */
-#undef HAVE_NANOSLEEP
-
-/* 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 `nl_langinfo' function. */
-#undef HAVE_NL_LANGINFO
-
-/* Define to 1 if you have the <nl_types.h> header file. */
-#undef HAVE_NL_TYPES_H
-
-/* Define to 1 if you have the 'nvlist_next_nvpair' function. */
-#undef HAVE_NVLIST_NEXT_NVPAIR
-
-/* Define to 1 if you have the 'openat' function. */
-#undef HAVE_OPENAT
-
-/* Define if OpenSSL library is available */
-#undef HAVE_OPENSSL
-
-/* Define if the OpenSSL library is export-contrained to 128bit ciphers */
-#undef HAVE_OPENSSL_EXPORT_LIBRARY
-
-/* Set if have OpenSSL version 1.x */
-#undef HAVE_OPENSSLv1
-
-/* Define to 1 if you have the `posix_fadvise' function. */
-#undef HAVE_POSIX_FADVISE
-
-/* 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
-
-/* Set if have PQisthreadsafe */
-#undef HAVE_PQISTHREADSAFE
-
-/* Set if have PQputCopyData */
-#undef HAVE_PQ_COPY
-
-/* Define to 1 if you have the `prctl' function. */
-#undef HAVE_PRCTL
-
-/* Define to 1 if you have the `putenv' function. */
-#undef HAVE_PUTENV
-
-/* Define to 1 if you have the <pwd.h> header file. */
-#undef HAVE_PWD_H
-
-/* Define to 1 if you have the `readdir_r' function. */
-#undef HAVE_READDIR_R
-
-/* Set to enable readline support */
-#undef HAVE_READLINE
-
-/* Define to 1 if you have the <regex.h> header file. */
-#undef HAVE_REGEX_H
-
-/* Define if sa_len field exists in struct sockaddr */
-#undef HAVE_SA_LEN
-
-/* 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
-
-/* Define to 1 if you have the `setlocale' function. */
-#undef HAVE_SETLOCALE
-
-/* Define to 1 if you have the `setpgid' function. */
-#undef HAVE_SETPGID
-
-/* 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
-
-/* Define to 1 if you have the `setsid' function. */
-#undef HAVE_SETSID
-
-/* Define to 1 if you have the 'setxattr' function. */
-#undef HAVE_SETXATTR
-
-/* Define if the SHA-2 family of digest algorithms is available */
-#undef HAVE_SHA2
-
-/* 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
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#undef HAVE_STDDEF_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
-   uintmax_t. */
-#undef HAVE_STDINT_H_WITH_UINTMAX
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `stpcpy' function. */
-#undef HAVE_STPCPY
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
-/* Define to 1 if you have the `strerror' function. */
-#undef HAVE_STRERROR
-
-/* Define to 1 if you have the `strerror_r' function. */
-#undef HAVE_STRERROR_R
-
-/* Define to 1 if you have the `strftime' function. */
-#undef HAVE_STRFTIME
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strncmp' function. */
-#undef HAVE_STRNCMP
-
-/* Define to 1 if you have the `strncpy' function. */
-#undef HAVE_STRNCPY
-
-/* Define to 1 if you have the `strtoll' function. */
-#undef HAVE_STRTOLL
-
-/* Define to 1 if you have the `strtoul' function. */
-#undef HAVE_STRTOUL
-
-/* 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 a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_BLOCKS
-
-/* 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 a 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. */
-#undef HAVE_ST_BLKSIZE
-
-/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use
-   `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
-#undef HAVE_ST_BLOCKS
-
-/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use
-   `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
-
-/* Defines if your system have the sys/attr.h header file */
-#undef HAVE_SYS_ATTR_H
-
-/* Define to 1 if you have the <sys/bitypes.h> header file. */
-#undef HAVE_SYS_BITYPES_H
-
-/* 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/capability.h> header file. */
-#undef HAVE_SYS_CAPABILITY_H
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
-   */
-#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
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#undef HAVE_SYS_IOCTL_H
-
-/* Define to 1 if you have the <sys/mtio.h> header file. */
-#undef HAVE_SYS_MTIO_H
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
-   */
-#undef HAVE_SYS_NDIR_H
-
-/* Defines if your system have the sys/nvpair.h header file */
-#undef HAVE_SYS_NVPAIR_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* 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
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-#undef HAVE_SYS_SOCKIO_H
-
-/* Defines if your system have the sys/statvfs.h header file */
-#undef HAVE_SYS_STATVFS_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/tape.h> header file. */
-#undef HAVE_SYS_TAPE_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Defines if your system have the sys/xattr.h header file */
-#undef HAVE_SYS_XATTR_H
-
-/* Define to 1 if you have the `tcgetattr' function. */
-#undef HAVE_TCGETATTR
-
-/* Define to 1 if you have the <termcap.h> header file. */
-#undef HAVE_TERMCAP_H
-
-/* Define to 1 if you have the <termios.h> header file. */
-#undef HAVE_TERMIOS_H
-
-/* Define to 1 if you have the <term.h> header file. */
-#undef HAVE_TERM_H
-
-/* Define if TLS support should be enabled */
-#undef HAVE_TLS
-
-/* 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 have the `tsearch' function. */
-#undef HAVE_TSEARCH
-
-/* Defind to 1 if compiler has typeof */
-#undef HAVE_TYPEOF
-
-/* Define to 1 if you don't have `tm_zone' but do have the external array
-   `tzname'. */
-#undef HAVE_TZNAME
-
-/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
-#undef HAVE_UINTMAX_T
-
-/* Define to 1 if the system has the type `uintptr_t'. */
-#undef HAVE_UINTPTR_T
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the 'unlinkat' function. */
-#undef HAVE_UNLINKAT
-
-/* Define if you have the 'unsigned long long' type. */
-#undef HAVE_UNSIGNED_LONG_LONG
-
-/* Set if utime.h exists */
-#undef HAVE_UTIME_H
-
-/* Define to 1 if you have the <varargs.h> header file. */
-#undef HAVE_VARARGS_H
-
-/* Set if va_copy exists */
-#undef HAVE_VA_COPY
-
-/* Define to 1 if you have the `vfprintf' function. */
-#undef HAVE_VFPRINTF
-
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#undef HAVE_VSNPRINTF
-
-/* Define if you have the 'wchar_t' type. */
-#undef HAVE_WCHAR_T
-
-/* Define to 1 if you have the `wcslen' function. */
-#undef HAVE_WCSLEN
-
-/* Define if you have the 'wint_t' type. */
-#undef HAVE_WINT_T
-
-/* Extended Attributes support */
-#undef HAVE_XATTR
-
-/* Define to 1 if you have the <zlib.h> header file. */
-#undef HAVE_ZLIB_H
-
-/* Define to 1 if you have the `__argz_count' function. */
-#undef HAVE___ARGZ_COUNT
-
-/* Define to 1 if you have the `__argz_next' function. */
-#undef HAVE___ARGZ_NEXT
-
-/* Define to 1 if you have the `__argz_stringify' function. */
-#undef HAVE___ARGZ_STRINGIFY
-
-/* Define to 1 if you have the `__fsetlocking' function. */
-#undef HAVE___FSETLOCKING
-
-/* Define as const if the declaration of iconv() needs const. */
-#undef ICONV_CONST
-
-/* Define if integer division by zero raises signal SIGFPE. */
-#undef INTDIV0_RAISES_SIGFPE
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-#undef LT_OBJDIR
-
-/* 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. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* 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
-
-/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
-#undef PRI_MACROS_BROKEN
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* Define to 1 if the `setpgrp' function takes no argument. */
-#undef SETPGRP_VOID
-
-/* The size of `char', as computed by sizeof. */
-#undef SIZEOF_CHAR
-
-/* The size of `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of `int *', as computed by sizeof. */
-#undef SIZEOF_INT_P
-
-/* The size of `long int', as computed by sizeof. */
-#undef SIZEOF_LONG_INT
-
-/* The size of `long long int', as computed by sizeof. */
-#undef SIZEOF_LONG_LONG_INT
-
-/* The size of `short int', as computed by sizeof. */
-#undef SIZEOF_SHORT_INT
-
-/* Define as the maximum value of type 'size_t', if the system doesn't define
-   it. */
-#undef SIZE_MAX
-
-/* Set if you want Smartalloc enabled */
-#undef SMARTALLOC
-
-/* 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 */
-#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. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-#undef TM_IN_SYS_TIME
-
-/* 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
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#undef _FILE_OFFSET_BITS
-
-/* Define to make fseeko etc. visible, on some hosts. */
-#undef _LARGEFILE_SOURCE
-
-/* Define for large files, on AIX-style hosts. */
-#undef _LARGE_FILES
-
-/* Set if you want Lock Manager enabled */
-#undef _USE_LOCKMGR
-
-/* 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 `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-#undef inline
-#endif
-
-/* Define to `unsigned long' if <sys/types.h> does not define. */
-#undef ino_t
-
-/* Define to the type of a signed integer type wide enough to hold a pointer,
-   if such a type exists, and if the system does not define it. */
-#undef intptr_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef major_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef minor_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef mode_t
-
-/* Define to `long int' if <sys/types.h> does not define. */
-#undef off_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
-
-/* Define as the type of the result of subtracting two pointers, if the system
-   doesn't define it. */
-#undef ptrdiff_t
-
-/* Define to empty if the C compiler doesn't support this keyword. */
-#undef signed
-
-/* Define to `unsigned int' 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
-
-/* Define to unsigned long or unsigned long long if <stdint.h> and
-   <inttypes.h> don't define. */
-#undef uintmax_t
-
-/* Define to the type of an unsigned integer type wide enough to hold a
-   pointer, if such a type exists, and if the system does not define it. */
-#undef uintptr_t
diff --git a/autoconf/config.sub b/autoconf/config.sub
index eb0389a..9633db7 100755
--- a/autoconf/config.sub
+++ b/autoconf/config.sub
@@ -1,44 +1,40 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2009-06-11'
+timestamp='2013-08-10'
 
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
 # (at your option) any later version.
 #
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
 
 
-# Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches at gnu.org.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
 # Otherwise, we print the canonical config type on stdout and succeed.
 
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
 # that are meaningful with *any* GNU software.
@@ -72,8 +68,7 @@ Report bugs and patches to <config-patches at gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -120,13 +115,18 @@ esac
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
   *)
     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
     if [ $basic_machine != $1 ]
@@ -149,12 +149,12 @@ case $os in
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
+	-apple | -axis | -knuth | -cray | -microblaze*)
 		os=
 		basic_machine=$1
 		;;
-        -bluegene*)
-	        os=-cnk
+	-bluegene*)
+		os=-cnk
 		;;
 	-sim | -cisco | -oki | -wec | -winbond)
 		os=
@@ -170,10 +170,10 @@ case $os in
 		os=-chorusos
 		basic_machine=$1
 		;;
- 	-chorusrdb)
- 		os=-chorusrdb
+	-chorusrdb)
+		os=-chorusrdb
 		basic_machine=$1
- 		;;
+		;;
 	-hiux*)
 		os=-hiuxwe2
 		;;
@@ -218,6 +218,12 @@ case $os in
 	-isc*)
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
 		;;
+	-lynx*178)
+		os=-lynxos178
+		;;
+	-lynx*5)
+		os=-lynxos5
+		;;
 	-lynx*)
 		os=-lynxos
 		;;
@@ -242,20 +248,27 @@ case $basic_machine in
 	# Some are omitted here because they have special meanings below.
 	1750a | 580 \
 	| a29k \
+	| aarch64 | aarch64_be \
 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
 	| am33_2.0 \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+	| arc | arceb \
+	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+	| avr | avr32 \
+	| be32 | be64 \
 	| bfin \
-	| c4x | clipper \
+	| c4x | c8051 | clipper \
 	| d10v | d30v | dlx | dsp16xx \
+	| epiphany \
 	| fido | fr30 | frv \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
+	| le32 | le64 \
 	| lm32 \
 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep | metag \
+	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
 	| mips64 | mips64el \
@@ -273,32 +286,45 @@ case $basic_machine in
 	| mipsisa64r2 | mipsisa64r2el \
 	| mipsisa64sb1 | mipsisa64sb1el \
 	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipsr5900 | mipsr5900el \
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
 	| moxie \
 	| mt \
 	| msp430 \
-	| nios | nios2 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 | nios2eb | nios2el \
 	| ns16k | ns32k \
-	| or32 \
+	| open8 \
+	| or1k | or32 \
 	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
 	| pyramid \
+	| rl78 | rx \
 	| score \
 	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
-	| v850 | v850e \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
 	| we32k \
-	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| x86 | xc16x | xstormy16 | xtensa \
 	| z8k | z80)
 		basic_machine=$basic_machine-unknown
 		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
-		# Motorola 68HC11/12.
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
 		basic_machine=$basic_machine-unknown
 		os=-none
 		;;
@@ -308,6 +334,21 @@ case $basic_machine in
 		basic_machine=mt-unknown
 		;;
 
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
 	# We use `pc' rather than `unknown'
 	# because (1) that's what they normally are, and
 	# (2) the word "unknown" tends to confuse beginning users.
@@ -322,25 +363,30 @@ case $basic_machine in
 	# Recognize the basic CPU types with company name.
 	580-* \
 	| a29k-* \
+	| aarch64-* | aarch64_be-* \
 	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
+	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| clipper-* | craynv-* | cydra-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
+	| le32-* | le64-* \
 	| lm32-* \
 	| m32c-* | m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
 	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| microblaze-* | microblazeel-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
@@ -358,28 +404,34 @@ case $basic_machine in
 	| mipsisa64r2-* | mipsisa64r2el-* \
 	| mipsisa64sb1-* | mipsisa64sb1el-* \
 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipsr5900-* | mipsr5900el-* \
 	| mipstx39-* | mipstx39el-* \
 	| mmix-* \
 	| mt-* \
 	| msp430-* \
-	| nios-* | nios2-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* | nios2eb-* | nios2el-* \
 	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
 	| pyramid-* \
-	| romp-* | rs6000-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
 	| tron-* \
-	| v850-* | v850e-* | vax-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
 	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
 	| xstormy16-* | xtensa*-* \
 	| ymp-* \
 	| z8k-* | z80-*)
@@ -404,7 +456,7 @@ case $basic_machine in
 		basic_machine=a29k-amd
 		os=-udi
 		;;
-    	abacus)
+	abacus)
 		basic_machine=abacus-unknown
 		;;
 	adobe68k)
@@ -474,11 +526,20 @@ case $basic_machine in
 		basic_machine=powerpc-ibm
 		os=-cnk
 		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	c90)
 		basic_machine=c90-cray
 		os=-unicos
 		;;
-        cegcc)
+	cegcc)
 		basic_machine=arm-unknown
 		os=-cegcc
 		;;
@@ -510,7 +571,7 @@ case $basic_machine in
 		basic_machine=craynv-cray
 		os=-unicosmp
 		;;
-	cr16)
+	cr16 | cr16-*)
 		basic_machine=cr16-unknown
 		os=-elf
 		;;
@@ -668,7 +729,6 @@ case $basic_machine in
 	i370-ibm* | ibm*)
 		basic_machine=i370-ibm
 		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
 	i*86v32)
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-sysv32
@@ -726,8 +786,15 @@ case $basic_machine in
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
+	microblaze*)
+		basic_machine=microblaze-xilinx
+		;;
+	mingw64)
+		basic_machine=x86_64-pc
+		os=-mingw64
+		;;
 	mingw32)
-		basic_machine=i386-pc
+		basic_machine=i686-pc
 		os=-mingw32
 		;;
 	mingw32ce)
@@ -762,10 +829,18 @@ case $basic_machine in
 	ms1-*)
 		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
 		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
 	mvs)
 		basic_machine=i370-ibm
 		os=-mvs
 		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
 	ncr3000)
 		basic_machine=i486-ncr
 		os=-sysv4
@@ -830,6 +905,12 @@ case $basic_machine in
 	np1)
 		basic_machine=np1-gould
 		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
@@ -912,9 +993,10 @@ case $basic_machine in
 		;;
 	power)	basic_machine=power-ibm
 		;;
-	ppc)	basic_machine=powerpc-unknown
+	ppc | ppcbe)	basic_machine=powerpc-unknown
 		;;
-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+	ppc-* | ppcbe-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
 	ppcle | powerpclittle | ppc-le | powerpc-little)
 		basic_machine=powerpcle-unknown
@@ -939,7 +1021,11 @@ case $basic_machine in
 		basic_machine=i586-unknown
 		os=-pw32
 		;;
-	rdos)
+	rdos | rdos64)
+		basic_machine=x86_64-pc
+		os=-rdos
+		;;
+	rdos32)
 		basic_machine=i386-pc
 		os=-rdos
 		;;
@@ -1008,6 +1094,9 @@ case $basic_machine in
 		basic_machine=i860-stratus
 		os=-sysv4
 		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	sun2)
 		basic_machine=m68000-sun
 		;;
@@ -1064,20 +1153,8 @@ case $basic_machine in
 		basic_machine=t90-cray
 		os=-unicos
 		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
-		;;
 	tile*)
-		basic_machine=tile-unknown
+		basic_machine=$basic_machine-unknown
 		os=-linux-gnu
 		;;
 	tx39)
@@ -1147,6 +1224,9 @@ case $basic_machine in
 	xps | xps100)
 		basic_machine=xps100-honeywell
 		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
 	ymp)
 		basic_machine=ymp-cray
 		os=-unicos
@@ -1244,9 +1324,12 @@ esac
 if [ x"$os" != x"" ]
 then
 case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
+	# First match some system type aliases
+	# that might get confused with valid system types.
 	# -solaris* is a basic system type, with this one exception.
+	-auroraux)
+		os=-auroraux
+		;;
 	-solaris1 | -solaris1.*)
 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
 		;;
@@ -1268,21 +1351,22 @@ case $os in
 	# -sysv* is not here because it comes later, after sysvr4.
 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
 	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-	      | -kopensolaris* \
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* | -plan9* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
 	      | -aos* | -aros* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -openbsd* | -solidbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* \
 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1290,7 +1374,7 @@ case $os in
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1329,7 +1413,7 @@ case $os in
 	-opened*)
 		os=-openedition
 		;;
-        -os400*)
+	-os400*)
 		os=-os400
 		;;
 	-wince*)
@@ -1378,7 +1462,7 @@ case $os in
 	-sinix*)
 		os=-sysv4
 		;;
-        -tpf*)
+	-tpf*)
 		os=-tpf
 		;;
 	-triton*)
@@ -1414,15 +1498,14 @@ case $os in
 	-aros*)
 		os=-aros
 		;;
-	-kaos*)
-		os=-kaos
-		;;
 	-zvmoe)
 		os=-zvmoe
 		;;
 	-dicos*)
 		os=-dicos
 		;;
+	-nacl*)
+		;;
 	-none)
 		;;
 	*)
@@ -1445,10 +1528,10 @@ else
 # system, and we'll never get to this point.
 
 case $basic_machine in
-        score-*)
+	score-*)
 		os=-elf
 		;;
-        spu-*)
+	spu-*)
 		os=-elf
 		;;
 	*-acorn)
@@ -1460,8 +1543,23 @@ case $basic_machine in
 	arm*-semi)
 		os=-aout
 		;;
-        c4x-* | tic4x-*)
-        	os=-coff
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	c8051-*)
+		os=-elf
+		;;
+	hexagon-*)
+		os=-elf
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
 		;;
 	# This must come before the *-dec entry.
 	pdp10-*)
@@ -1481,14 +1579,11 @@ case $basic_machine in
 		;;
 	m68000-sun)
 		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
 		;;
 	m68*-cisco)
 		os=-aout
 		;;
-        mep-*)
+	mep-*)
 		os=-elf
 		;;
 	mips*-cisco)
@@ -1497,6 +1592,9 @@ case $basic_machine in
 	mips*-*)
 		os=-elf
 		;;
+	or1k-*)
+		os=-elf
+		;;
 	or32-*)
 		os=-coff
 		;;
@@ -1515,7 +1613,7 @@ case $basic_machine in
 	*-ibm)
 		os=-aix
 		;;
-    	*-knuth)
+	*-knuth)
 		os=-mmixware
 		;;
 	*-wec)
diff --git a/autoconf/configure.in b/autoconf/configure.in
index 1237328..47d45de 100644
--- a/autoconf/configure.in
+++ b/autoconf/configure.in
@@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script.
 dnl
 dnl require a recent autoconf
 AC_PREREQ(2.61)
-AC_INIT([bacula], m4_esyscmd([sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' ../src/version.h src/version.h 2> /dev/null | tr -d '\n']))
+AC_INIT([bacula], m4_esyscmd([sed -n -e 's/^#define VERSION.*"\(.*\)"$/\1/p' ../src/version.h src/version.h 2> /dev/null | tr -d '\n']))
 AC_CONFIG_SRCDIR(src/version.h)
 
 BUILD_DIR=`pwd`
@@ -16,14 +16,6 @@ AC_SUBST(TOP_DIR)
 AC_CONFIG_AUX_DIR(${BUILD_DIR}/autoconf)
 AC_CONFIG_HEADERS(src/config.h:autoconf/config.h.in)
 
-dnl minimal Win32 stuff for "make clean"
-WIN32BUILDDIR=${BUILD_DIR}/src/win32
-WIN32MAINDIR=${BUILD_DIR}
-WIN32TOPDIR=${TOP_DIR}	  
-AC_SUBST(WIN32BUILDDIR)
-AC_SUBST(WIN32MAINDIR)
-AC_SUBST(WIN32TOPDIR)
-
 dnl search for true and false programs.
 AC_PATH_PROGS(TRUEPRG, true, :)
 AC_PATH_PROGS(FALSEPRG, false, :)
@@ -35,30 +27,34 @@ if test "x$BACULA" != x; then
    post_host=`echo -${BACULA} | tr 'A-Z ' 'a-z-'`
 fi
 BACULA=${BACULA:-Bacula}
-VERSION=`sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
-DATE=`sed -n -e 's/^.*[ \t]*BDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
-LSMDATE=`sed -n -e 's/^.*LSMDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
-BDB_VERSION=`sed -n -e 's/^.*BDB_VERSION \(.*\)$/\1/p' ${srcdir}/src/cats/cats.h`
-AC_SUBST(VERSION)dnl 
-AC_SUBST(DATE)dnl 
-AC_SUBST(LSMDATE)dnl 
+VERSION=`sed -n -e 's/^#define VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+RELEASE=`sed -n -e 's/^#define RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+DATE=`sed -n -e 's/^#define BDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+LSMDATE=`sed -n -e 's/^#define LSMDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+BDB_VERSION=`sed -n -e 's/^#define BDB_VERSION \(.*\)$/\1/p' ${srcdir}/src/cats/cats.h`
+DEPKGS_VERSION=`sed -n -e 's/^#define DEPKGS_VERSION \(.*\)$/\1/p' ${srcdir}/src/cats/cats.h`
+DEPKGS_QT_VERSION=`sed -n -e 's/^#define DEPKGS_QT_VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+BQT_VERSION=`sed -n -e 's/^#define BQT_VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+AC_SUBST(VERSION)dnl
+AC_SUBST(DATE)dnl
+AC_SUBST(LSMDATE)dnl
 AC_SUBST(BACULA)dnl
 AC_SUBST(post_host)dnl
 AC_SUBST(BDB_VERSION)dnl
+AC_SUBST(DEPKGS_QT_VERSION)dnl
+AC_SUBST(DEPKGS_VERSION)dnl
+AC_SUBST(BQT4_VERSION)dnl
 
 dnl src/lib
 dnl can be overwritten by specific values from version.h
 LIBBAC_LT_RELEASE=`sed -n -e 's/^#.*LIBBAC_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
 LIBBACCFG_LT_RELEASE=`sed -n -e 's/^#.*LIBBACCFG_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
-LIBBACPY_LT_RELEASE=`sed -n -e 's/^#.*LIBBACPY_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
 
 LIBBAC_LT_RELEASE=${LIBBAC_LT_RELEASE:-$VERSION}
 LIBBACCFG_LT_RELEASE=${LIBBACCFG_LT_RELEASE:-$VERSION}
-LIBBACPY_LT_RELEASE=${LIBBACPY_LT_RELEASE:-$VERSION}
 
 AC_SUBST(LIBBAC_LT_RELEASE)dnl
 AC_SUBST(LIBBACCFG_LT_RELEASE)dnl
-AC_SUBST(LIBBACPY_LT_RELEASE)dnl
 
 dnl src/cats
 dnl can be overwritten by specific values from version.h
@@ -130,23 +126,17 @@ AC_PATH_PROG(DVDRWFORMAT, dvd+rw-format, dvd+rw-format)
 AC_PATH_PROG(PKGCONFIG, pkg-config, pkg-config)
 AC_PATH_PROG(QMAKE, qmake, none)
 AC_PATH_PROG(GMAKE, gmake, none)
-AC_ARG_VAR(WXCONFIG, [wx-config command. On some systems, you must set it to wx-config-2.6 to use wxWidgets 2.6.])
-if test "x$WXCONFIG" = x; then
-   WXCONFIG=wx-config
-fi
-AC_PATH_PROG(WXCONFIG, ${WXCONFIG}, ${WXCONFIG})
-AC_ARG_VAR(WXFLAGS, [Parameters to pass to wx-config (e.g. --unicode=no).])
 AC_PATH_PROG(CDRECORD, cdrecord, cdrecord)
 AC_PATH_PROG(PIDOF, pidof, pidof)
 AC_PROG_AWK
 # Some AWK programs fail, so test it and warn the user
-if echo xfoo | $AWK 'BEGIN { prog=ARGV[1]; ARGC=1 } 
+if echo xfoo | $AWK 'BEGIN { prog=ARGV[1]; ARGC=1 }
       { if ((prog == $2) || (("(" prog ")") == $2) ||
       (("[" prog "]") == $2) ||
       ((prog ":") == $2)) { print $1 ; exit 0 } }' xfoo>/dev/null; then :;
 else
   AC_MSG_ERROR([!!!!!!!!! WARNING !!!!!!!!!!!!!!
-   The regex engine of $AWK is too broken to be used you 
+   The regex engine of $AWK is too broken to be used you
    might want to install GNU AWK.
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!])
 fi
@@ -318,7 +308,7 @@ libdir=`eval echo ${libdir}`
 includedir=`eval echo ${includedir}`
 localedir=`eval echo ${datarootdir}/locale`
 AC_DEFINE_UNQUOTED(SYSCONFDIR, "$sysconfdir")
-AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir") 
+AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir")
 
 dnl ------------------------------------------------------------------
 dnl If the user has not set --sbindir, we set our default as /sbin
@@ -349,7 +339,7 @@ if test x$docdir = x'/usr/share/doc/' ; then
    docdir=`eval echo ${docdir}bacula`
 fi
 
-	    
+	
 AC_PATH_PROGS(MSGFMT, msgfmt, no)
 if test "$MSGFMT" = "no"
 then
@@ -362,21 +352,16 @@ fi
 
 support_smartalloc=yes
 support_readline=yes
+support_lzo=yes
 support_conio=yes
-support_gnome=no
 support_bat=no
-support_wx_console=no
-support_tray_monitor=no
 support_tls=no
 support_crypto=no
-gnome_version=
-wx_version=
 support_static_tools=no
 support_static_fd=no
 support_static_sd=no
 support_static_dir=no
 support_static_cons=no
-support_python=no
 build_client_only=no
 build_dird=yes
 build_stored=yes
@@ -389,32 +374,13 @@ dnl CHECKING COMMAND LINE OPTIONS
 dnl --------------------------------------------------------------------------
 
 dnl -------------------------------------------
-dnl gnome -- no longer supported
-dnl -------------------------------------------
-AC_ARG_ENABLE(gnome,
-   AC_HELP_STRING([--enable-gnome], [enable build of bgnome-console GUI @<:@default=no@:>@]),
-   [
-       if test x$enableval = xyes; then
-	  support_gnome=yes
-       fi
-   ]
-)
-
-GNOME_DIR=
-if test x$support_gnome = xyes; then
-   AC_MSG_ERROR(bgnome-console no longer supported)
-   AC_MSG_ERROR(--enable-gnome option no longer supported)
-fi
-# AC_SUBST(GNOME_DIR)
-
-dnl -------------------------------------------
 dnl bat (default off)
 dnl -------------------------------------------
 AC_ARG_ENABLE(bat,
    AC_HELP_STRING([--enable-bat], [enable build of bat Qt4 GUI @<:@default=no@:>@]),
    [
        if test x$enableval = xyes; then
-	  AC_DEFINE(HAVE_BAT, 1, [Set if Bacula bat Qt4 GUI support enabled]) 
+	  AC_DEFINE(HAVE_BAT, 1, [Set if Bacula bat Qt4 GUI support enabled])
 	  support_bat=yes
        fi
    ]
@@ -431,9 +397,9 @@ if test x$support_bat = xyes; then
    fi
 fi
 
-dnl 
+dnl
 dnl  The qwt library was used with bat, but that is no longer the case
-dnl 
+dnl
 got_qwt=no
 QWT_INC=
 QWT_LDFLAGS=
@@ -458,13 +424,13 @@ dnl		    QWT="qwt"
 dnl		 fi
 dnl		 ;;
 dnl	      esac
-dnl	  ]    
+dnl	  ]
 dnl    )
 
 dnl    dnl
 dnl    dnl Search in standard places, or --with-qwt not specified
 dnl    dnl
-dnl    if test $no_qwt = no; then 
+dnl    if test $no_qwt = no; then
 dnl	  if test x$QWT_INC = x; then
 dnl	     for root in /usr /usr/local; do
 dnl		for ver in qwt qwt5 qwt-qt4; do
@@ -500,69 +466,6 @@ AC_SUBST(QWT_LDFLAGS)
 AC_SUBST(QWT_LIB)
 AC_SUBST(QWT)
 
-dnl -------------------------------------------
-dnl bwx-console (default off)
-dnl -------------------------------------------
-AC_ARG_ENABLE(bwx-console,
-   AC_HELP_STRING([--enable-bwx-console], [enable build of wxWidgets console @<:@default=no@:>@]),
-   [
-       if test x$enableval = xyes; then
-	  support_wx_console=yes
-       fi
-   ]
-)
-
-WX_DIR=
-if test x$support_wx_console = xyes; then
-   abc=`$WXCONFIG $WXFLAGS --cppflags`
-   pkg=$?
-   if test $pkg = 0; then
-      wx_version="wxWidgets `$WXCONFIG $WXFLAGS --release`"
-      WXCONS_CPPFLAGS=`$WXCONFIG $WXFLAGS --cppflags`
-      WXCONS_LDFLAGS=`$WXCONFIG $WXFLAGS --libs`
-
-      AC_SUBST(WXCONS_CPPFLAGS)
-      AC_SUBST(WXCONS_LDFLAGS)
-      WX_DIR="src/wx-console"
-   else
-      echo " "
-      echo "wx-config program not found. bwx-console disabled."
-      echo " "
-      support_wx_console=no
-   fi
-fi
-AC_SUBST(WX_DIR)
-
-dnl -------------------------------------------
-dnl tray-monitor (default off)
-dnl -------------------------------------------
-AC_ARG_ENABLE(tray-monitor,
-   AC_HELP_STRING([--enable-tray-monitor], [enable build of Gnome tray monitor (compatible with KDE @<:@default=no@:>@]),
-   [
-       if test x$enableval = xyes; then
-	  support_tray_monitor=yes
-       fi
-   ]
-)
-
-TRAY_MONITOR_DIR=
-if test x$support_tray_monitor = xyes; then
-   abc=`$PKGCONFIG --exists gtk+-2.0`
-   pkg=$?
-   if test $pkg = 0; then
-      TRAY_MONITOR_CPPFLAGS=`$PKGCONFIG --cflags gtk+-2.0`
-      TRAY_MONITOR_LDFLAGS=`$PKGCONFIG --libs gtk+-2.0`
-      AC_SUBST(TRAY_MONITOR_CPPFLAGS)
-      AC_SUBST(TRAY_MONITOR_LDFLAGS)
-      TRAY_MONITOR_DIR=src/tray-monitor
-      abc=`$PKGCONFIG --atleast-version=2.4 gtk+-2.0`
-      pkg=$?
-      if test $pkg = 0; then
-	 AC_DEFINE(HAVE_GTK_2_4, 1, [Set if you have GTK 4.2 or greater loaded])
-      fi
-   fi
-fi
-AC_SUBST(TRAY_MONITOR_DIR)
 
 dnl -------------------------------------------
 dnl smartalloc (default off)
@@ -605,7 +508,7 @@ AC_ARG_ENABLE(static-tools,
    [
        if test x$enableval = xyes; then
 	  if test x$use_libtool = xyes; then
-	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
+	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools,
   please rerun configure with --disable-libtool])
 	  fi
 	  support_static_tools=yes
@@ -627,7 +530,7 @@ AC_ARG_ENABLE(static-fd,
    [
        if test x$enableval = xyes; then
 	  if test x$use_libtool = xyes; then
-	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
+	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools,
   please rerun configure with --disable-libtool])
 	  fi
 	  support_static_fd=yes
@@ -649,7 +552,7 @@ AC_ARG_ENABLE(static-sd,
    [
        if test x$enableval = xyes; then
 	  if test x$use_libtool = xyes; then
-	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
+	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools,
   please rerun configure with --disable-libtool])
 	  fi
 	  support_static_sd=yes
@@ -671,7 +574,7 @@ AC_ARG_ENABLE(static-dir,
    [
        if test x$enableval = xyes; then
 	  if test x$use_libtool = xyes; then
-	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
+	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools,
   please rerun configure with --disable-libtool])
 	  fi
 	  support_static_dir=yes
@@ -693,7 +596,7 @@ AC_ARG_ENABLE(static-cons,
    [
        if test x$enableval = xyes; then
 	  if test x$use_libtool = xyes; then
-	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
+	     AC_MSG_ERROR([Libtool is enabled, not compatible with static tools,
   please rerun configure with --disable-libtool])
 	  fi
 	  support_static_cons=yes
@@ -702,16 +605,10 @@ AC_ARG_ENABLE(static-cons,
 )
 
 STATIC_CONS=
-STATIC_GNOME_CONS=
-STATIC_WX_CONS=
 if test x$support_static_cons = xyes; then
    STATIC_CONS="static-bconsole"
-   STATIC_GNOME_CONS="static-bgnome-console"
-   STATIC_WX_CONS="static-bwx-console"
 fi
 AC_SUBST(STATIC_CONS)
-AC_SUBST(STATIC_GNOME_CONS)
-AC_SUBST(STATIC_WX_CONS)
 
 dnl -------------------------------------------
 dnl client_only  (default off)
@@ -784,18 +681,18 @@ AC_ARG_ENABLE(conio,
        fi
    ]
 )
-  
+
 
 dnl ---------------------------------------------------
 dnl Check for IPv6 support
 dnl ---------------------------------------------------
 dnl this allows you to turn it completely off
 support_ipv6=yes
-AC_ARG_ENABLE(ipv6,   
+AC_ARG_ENABLE(ipv6,
    AC_HELP_STRING([--enable-ipv6], [enable ipv6 support @<:@default=yes@:>@]),
    [
        if test x$enableval = xno; then
-	  support_ipv6=no  
+	  support_ipv6=no
        fi
    ]
 )
@@ -812,7 +709,7 @@ if test x$support_ipv6 = xyes; then
 fi
 
 TERM_LIB=""
-AC_CHECK_HEADER(curses.h, [ 
+AC_CHECK_HEADER(curses.h, [
     AC_CHECK_LIB(tinfo, tgetent, [ TERM_LIB="-ltinfo" ], [
       AC_CHECK_LIB(ncurses, tgetent, [ TERM_LIB="-lncurses" ], [
 	AC_CHECK_LIB(termcap, tgetent, [ TERM_LIB="-ltermcap" ])
@@ -821,7 +718,7 @@ AC_CHECK_HEADER(curses.h, [
   ],
   [  AC_CHECK_HEADERS(curses.h)
      AC_CHECK_HEADER(term.h,
-       [ AC_CHECK_LIB(curses, tgetent, 
+       [ AC_CHECK_LIB(curses, tgetent,
 	 [ TERM_LIB="-lcurses" ] )
        ])
   ])
@@ -835,7 +732,7 @@ if test x$support_conio = xyes; then
       CONS_SRC="conio.c"
       got_conio="yes"
       support_readline=no
-      AC_DEFINE(HAVE_CONIO, 1, [Set if Bacula conio support enabled]) 
+      AC_DEFINE(HAVE_CONIO, 1, [Set if Bacula conio support enabled])
    else
       echo " "; echo "Required libraries not found. CONIO turned off ..."; echo " "
    fi
@@ -854,9 +751,6 @@ AC_ARG_ENABLE(readline,
        fi
    ]
 )
-if test x$TERM_LIB = x ; then
-   support_readline=no
-fi
 
 got_readline="no"
 READLINE_SRC=
@@ -877,14 +771,14 @@ if test x$support_readline = xyes; then
 		CONS_LDFLAGS="-L${with_readline}/lib"
 		with_readline="${with_readline}/include/readline"
 	     else
-		with_readline="/usr/include/readline" 
+		with_readline="/usr/include/readline"
 	     fi
 
-	     AC_CHECK_HEADER(${with_readline}/readline.h, 
+	     AC_CHECK_HEADER(${with_readline}/readline.h,
 		[
 		    AC_DEFINE(HAVE_READLINE, 1, [Set to enable readline support])
-		    CONS_LIBS="-lreadline -lhistory $TERM_LIB"
-		    got_readline="yes"	 
+		    CONS_LIBS="-lreadline -lhistory ${TERM_LIB}"
+		    got_readline="yes"	
 		], [
 		    echo " "
 		    echo "readline.h not found. readline turned off ..."
@@ -895,20 +789,20 @@ if test x$support_readline = xyes; then
 	  esac
       ],[
 	 dnl check for standard readline library
-	 AC_CHECK_HEADER(/usr/include/readline/readline.h, 
+	 AC_CHECK_HEADER(/usr/include/readline/readline.h,
 	    [
 		AC_DEFINE(HAVE_READLINE, 1, [Set to enable readline support])
 		got_readline="yes"
 		CONS_INC="-I/usr/include/readline"
-		CONS_LIBS="-lreadline $TERM_LIB"
+		CONS_LIBS="-lreadline ${TERM_LIB}"
 	    ], [
 		dnl Did not find standard library, so try Bacula's default
-		AC_CHECK_HEADER(${TOP_DIR}/depkgs/readline/readline.h, 
+		AC_CHECK_HEADER(${TOP_DIR}/depkgs/readline/readline.h,
 		    [
 			AC_DEFINE(HAVE_READLINE, 1, [Set to enable readline support])
-			got_readline="yes"   
+			got_readline="yes"
 			CONS_INC="-I${TOP_DIR}/depkgs/readline"
-			CONS_LIBS="-lreadline -lhistory $TERM_LIB"
+			CONS_LIBS="-lreadline -lhistory ${TERM_LIB}"
 			CONS_LDFLAGS="-L${TOP_DIR}/depkgs/readline"
 			PRTREADLINE_SRC="${TOP_DIR}/depkgs/readline"
 		    ], [
@@ -919,7 +813,7 @@ if test x$support_readline = xyes; then
 		)
 	    ]
 	 )
-      ]    
+      ]
    )
 fi
 
@@ -935,102 +829,14 @@ MAKE_SHELL=/bin/sh
 AC_SUBST(MAKE_SHELL)
 AC_HEADER_STAT
 AC_HEADER_DIRENT
-AC_CHECK_FUNCS(strcasecmp select setenv putenv tcgetattr lstat lchown)
+AC_CHECK_FUNCS(strcasecmp select setenv putenv tcgetattr)
+AC_CHECK_FUNCS(lstat lchown lchmod futimes fchmod fchown)
 AC_CHECK_FUNCS(nanosleep nl_langinfo)
 AC_CHECK_HEADERS(varargs.h)
 
 dnl End of readline/conio stuff
 dnl -----------------------------------------------------------------------
 
-dnl -----------------------------------------------------------------------
-dnl  Check for Python support
-dnl
-AC_MSG_CHECKING(for Python support)
-AC_ARG_WITH(python,
-   AC_HELP_STRING([--with-python@<:@=DIR@:>@], [Include Python support. DIR is the Python base install directory, default is to search through a number of common places for the Python files.]),
-   [
-       PYTHON_INCDIR= 
-       PYTHON_LIBS=
-       if test "$withval" != "no"; then
-	  if test "$withval" = "yes"; then
-	     if test -e /usr/bin/python-config ; then
-		PYTHON_INCDIR=`/usr/bin/python-config --includes`
-		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 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
-			    PYTHON_LIBS="-L$python_root/lib64/${ver}/config -l${ver}"
-			 else
-			    PYTHON_LIBS="-L$python_root/lib/${ver}/config -l${ver}"
-			 fi
-			 break 
-		      fi
-		   done
-		done
-
-		if test x$PYTHON_INCDIR = x; then
-		   if test -f $prefix/include/Python.h; then
-		      PYTHON_INCDIR=-I$prefix/include
-		      if test -d $prefix/lib64/config; then
-			 PYTHON_LIBS="-L$prefix/lib64/config -lpython"
-		      else
-			 PYTHON_LIBS="-L$prefix/lib/config -lpython"
-		      fi
-		   else
-		      AC_MSG_RESULT(no)
-		      AC_MSG_ERROR(Unable to find Python.h in standard locations)
-		   fi
-		fi
-	     fi
-	  else
-	     if test -e $withval/bin/python-config ; then
-		PYTHON_INCDIR=`$withval/bin/python-config --includes`
-		PYTHON_LIBS=`$withval/bin/python-config --libs`
-	     elif test -f $withval/Python.h; then
-		PYTHON_INCDIR=-I$withval
-		PYTHON_LIBS="-L$withval/config -lpython"
-	     elif test -f $withval/include/Python.h; then
-		PYTHON_INCDIR=-I$withval/include
-		if test -d $withval/lib64/config; then
-		   PYTHON_LIBS="-L$withval/lib64/config -lpython"
-		else
-		   PYTHON_LIBS="-L$withval/lib/config -lpython"
-		fi
-	     elif test -f $withval/include/python/Python.h; then
-		PYTHON_INCDIR=-I$withval/include/python
-		if test -d $withval/lib64/python/config; then
-		   PYTHON_LIBS="-L$withval/lib64/python/config -lpython"
-		else
-		   PYTHON_LIBS="-L$withval/lib/python/config -lpython"
-		fi
-	     else
-		AC_MSG_RESULT(no)
-		AC_MSG_ERROR(Invalid Python directory $withval - unable to find Python.h under $withval)
-	     fi
-	  fi
-
-	  AC_DEFINE([HAVE_PYTHON], 1)
-	  AC_MSG_RESULT(yes)
-	  support_python=yes
-	  AC_MSG_NOTICE(checking for more Python libs)
-	  saved_LIBS="$LIBS"; LIBS=
-	  AC_SEARCH_LIBS(shm_open, [rt])
-	  AC_CHECK_LIB(util, openpty)
-	  PYTHON_LIBS="$PYTHON_LIBS $LIBS"
-	  LIBS="$saved_LIBS"
-       else
-	  AC_MSG_RESULT(no)
-       fi
-   ],[
-       AC_MSG_RESULT(no)
-   ]
-)
-AC_SUBST(PYTHON_LIBS)
-AC_SUBST(PYTHON_INCDIR)
-
 dnl
 dnl Find where sockets are (especially for Solaris)
 dnl Do this before the TCP Wrappers test since tcp wrappers
@@ -1045,7 +851,7 @@ AC_CHECK_FUNC(socket,
 dnl -----------------------------------------------------------
 dnl Check whether user wants TCP wrappers support (default off)
 dnl -----------------------------------------------------------
-TCPW_MSG="no" 
+TCPW_MSG="no"
 WRAPLIBS=""
 AC_ARG_WITH(tcp-wrappers,
    AC_HELP_STRING([--with-tcp-wrappers@<:@=DIR@:>@], [enable tcpwrappers support]),
@@ -1056,7 +862,7 @@ AC_ARG_WITH(tcp-wrappers,
 	  AC_SEARCH_LIBS(nanosleep, [rt])
 	  AC_MSG_CHECKING(for libwrap)
 	  AC_TRY_LINK(
-	     [ 
+	     [
 	       #include <sys/types.h>
 	       #include <tcpd.h>
 	       int deny_severity = 0;
@@ -1067,7 +873,7 @@ AC_ARG_WITH(tcp-wrappers,
 	     ], [
 		 AC_MSG_RESULT(yes)
 		 AC_DEFINE(HAVE_LIBWRAP, 1, [Set to enable libwraper support])
-		 TCPW_MSG="yes" 
+		 TCPW_MSG="yes"
 		 LIBS="$saved_LIBS"
 		 WRAPLIBS="-lwrap"
 	     ], [
@@ -1085,7 +891,7 @@ AC_ARG_WITH(tcp-wrappers,
 		   ], [
 		      AC_MSG_RESULT(yes)
 		      AC_DEFINE(HAVE_LIBWRAP, 1, [Set to enable libwraper support])
-		      TCPW_MSG="yes" 
+		      TCPW_MSG="yes"
 		      LIBS="$saved_LIBS"
 		      WRAPLIBS="-lwrap"
 		   ], [
@@ -1098,6 +904,7 @@ AC_ARG_WITH(tcp-wrappers,
    ]
 )
 
+
 dnl -----------------------------------------------------------
 dnl Check whether OpenSSL is available
 dnl -----------------------------------------------------------
@@ -1216,11 +1023,11 @@ AC_SEARCH_LIBS(dlopen, [dl])
 dnl ------------------------------------------
 dnl Where to place working dir
 dnl ------------------------------------------
-working_dir=`eval echo ${prefix}/opt/bacula/working`
+working_dir=`eval echo /opt/bacula/working`
 AC_ARG_WITH(working-dir,
    AC_HELP_STRING([--with-working-dir=PATH], [specify path of Bacula working directory]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	 working_dir=$withval
        fi
    ]
@@ -1235,7 +1042,7 @@ archivedir=/tmp
 AC_ARG_WITH(archivedir,
    AC_HELP_STRING([--with-archivedir=PATH], [specify path of SD archive directory]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  archivedir=$withval
        fi
    ]
@@ -1250,7 +1057,7 @@ basename=`hostname`
 AC_ARG_WITH(basename,
    AC_HELP_STRING([--with-basename=RESNAME], [specify base resource name for daemons]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  basename=$withval
        fi
    ]
@@ -1289,7 +1096,7 @@ scriptdir=`eval echo ${sysconfdir}`
 AC_ARG_WITH(scriptdir,
    AC_HELP_STRING([--with-scriptdir=PATH], [specify path of Bacula scripts directory]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  scriptdir=$withval
        fi
    ]
@@ -1301,11 +1108,11 @@ AC_SUBST(scriptdir)
 dnl ------------------------------------------
 dnl Where to place bsrdir (bsr files)
 dnl ------------------------------------------
-bsrdir=`eval echo ${prefix}/opt/bacula/bsr`
+bsrdir=`eval echo /opt/bacula/bsr`
 AC_ARG_WITH(bsrdir,
    AC_HELP_STRING([--with-bsrdir=PATH], [specify path of Bacula bsrs directory]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  bsrdir=$withval
        fi
    ]
@@ -1314,13 +1121,13 @@ AC_ARG_WITH(bsrdir,
 AC_SUBST(bsrdir)
 
 dnl ------------------------------------------
-dnl Where to place logdir (bsr files)
+dnl Where to place logdir
 dnl ------------------------------------------
-logdir=`eval echo ${prefix}/opt/bacula/log`
+logdir=`eval echo /opt/bacula/log`
 AC_ARG_WITH(logdir,
    AC_HELP_STRING([--with-logdir=PATH], [specify path of Bacula logs directory]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  logdir=$withval
        fi
    ]
@@ -1336,7 +1143,7 @@ plugindir=`eval echo ${libdir}`
 AC_ARG_WITH(plugindir,
    AC_HELP_STRING([--with-plugindir=PATH], [specify path of Bacula plugins directory]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  plugindir=$withval
        fi
    ]
@@ -1351,7 +1158,7 @@ dump_email=root at localhost
 AC_ARG_WITH(dump-email,
    AC_HELP_STRING([--with-dump-email=EMAIL], [dump email address]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  dump_email=$withval
        fi
    ]
@@ -1366,7 +1173,7 @@ job_email=root at localhost
 AC_ARG_WITH(job-email,
    AC_HELP_STRING([--with-job-email=EMAIL], [job output email address]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  job_email=$withval
        fi
    ]
@@ -1381,7 +1188,7 @@ smtp_host=localhost
 AC_ARG_WITH(smtp_host,
    AC_HELP_STRING([--with-smtp-host=HOST], [SMTP mail host address]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  smtp_host=$withval
        fi
    ]
@@ -1396,7 +1203,7 @@ piddir=/var/run
 AC_ARG_WITH(pid-dir,
    AC_HELP_STRING([--with-pid-dir=PATH], [specify location of Bacula pid files]),
    [
-       if test "x$withval" != "xno" ; then   
+       if test "x$withval" != "xno" ; then
 	  piddir=$withval
        fi
    ]
@@ -1419,7 +1226,7 @@ fi
 AC_ARG_WITH(subsys-dir,
    AC_HELP_STRING([--with-subsys-dir=PATH], [specify location of Bacula subsys file]),
    [
-       if test "x$withval" != "xno" ; then   
+       if test "x$withval" != "xno" ; then
 	  subsysdir=$withval
        fi
    ]
@@ -1434,7 +1241,7 @@ baseport=9101
 AC_ARG_WITH(baseport,
    AC_HELP_STRING([--with-baseport=PORT], [specify base port address for daemons]),
    [
-       if test "x$withval" != "xno" ; then   
+       if test "x$withval" != "xno" ; then
 	  baseport=$withval
        fi
    ]
@@ -1456,7 +1263,7 @@ dir_password=
 AC_ARG_WITH(dir-password,
    AC_HELP_STRING([--with-dir-password=PASSWORD], [specify Director's password]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  dir_password=$withval
        fi
    ]
@@ -1475,7 +1282,7 @@ fd_password=
 AC_ARG_WITH(fd-password,
    AC_HELP_STRING([--with-fd-password=PASSWORD], [specify Client's password]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  fd_password=$withval
        fi
    ]
@@ -1494,7 +1301,7 @@ sd_password=
 AC_ARG_WITH(sd-password,
    AC_HELP_STRING([--with-sd-password=PASSWORD], [specify Storage daemon's password]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  sd_password=$withval
        fi
    ]
@@ -1513,7 +1320,7 @@ mon_dir_password=
 AC_ARG_WITH(mon-dir-password,
    AC_HELP_STRING([--with-mon-dir-password=PASSWORD], [specify Director's password used by the monitor]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  mon_dir_password=$withval
        fi
    ]
@@ -1532,7 +1339,7 @@ mon_fd_password=
 AC_ARG_WITH(mon-fd-password,
    AC_HELP_STRING([--with-mon-fd-password=PASSWORD], [specify Client's password used by the monitor]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  mon_fd_password=$withval
        fi
    ]
@@ -1551,7 +1358,7 @@ mon_sd_password=
 AC_ARG_WITH(mon-sd-password,
    AC_HELP_STRING([--with-mon-sd-password=PASSWORD], [specify Storage daemon's password used by the monitor]),
    [
-       if test "x$withval" != "xno" ; then     
+       if test "x$withval" != "xno" ; then
 	  mon_sd_password=$withval
        fi
    ]
@@ -1580,7 +1387,7 @@ db_name=bacula
 AC_ARG_WITH(db_name,
    AC_HELP_STRING([--with-db-name=DBNAME], [specify database name @<:@default=bacula@:>@]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	  db_name=$withval
        fi
    ]
@@ -1591,7 +1398,7 @@ db_user=bacula
 AC_ARG_WITH(db_user,
    AC_HELP_STRING([--with-db-user=UNAME], [specify database user @<:@default=bacula@:>@]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	  db_user=$withval
        fi
    ]
@@ -1602,7 +1409,7 @@ db_password=
 AC_ARG_WITH(db_password,
    AC_HELP_STRING([--with-db-password=PWD], [specify database password @<:@default=*none*@:>@]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	  db_password=$withval
        fi
    ]
@@ -1630,7 +1437,7 @@ dir_user=
 AC_ARG_WITH(dir_user,
    AC_HELP_STRING([--with-dir-user=USER], [specify user for Director daemon]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	   dir_user=$withval
        fi
    ]
@@ -1640,7 +1447,7 @@ dir_group=
 AC_ARG_WITH(dir_group,
    AC_HELP_STRING([--with-dir-group=GROUP], [specify group for Director daemon]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	  dir_group=$withval
        fi
    ]
@@ -1650,7 +1457,7 @@ sd_user=
 AC_ARG_WITH(sd_user,
    AC_HELP_STRING([--with-sd-user=USER], [specify user for Storage daemon]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	  sd_user=$withval
        fi
    ]
@@ -1660,7 +1467,7 @@ sd_group=
 AC_ARG_WITH(sd_group,
    AC_HELP_STRING([--with-sd-group=GROUP], [specify group for Storage daemon]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	  sd_group=$withval
        fi
    ]
@@ -1670,7 +1477,7 @@ fd_user=
 AC_ARG_WITH(fd_user,
    AC_HELP_STRING([--with-fd-user=USER], [specify user for File daemon]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	  fd_user=$withval
        fi
    ]
@@ -1680,7 +1487,7 @@ fd_group=
 AC_ARG_WITH(fd_group,
    AC_HELP_STRING([--with-fd-group=GROUP], [specify group for File daemon]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	  fd_group=$withval
        fi
    ]
@@ -1700,7 +1507,7 @@ SBINPERM=0750
 AC_ARG_WITH(sbin-perm,
    AC_HELP_STRING([--with-sbin-perm=MODE], [specify permissions for sbin binaries @<:@default=0750@:>@]),
    [
-       if test "x$withval" != "x" ; then   
+       if test "x$withval" != "x" ; then
 	  SBINPERM=$withval
        fi
    ]
@@ -1740,12 +1547,6 @@ BA_CHECK_MYSQL_DB
 
 BA_CHECK_SQLITE3_DB
 
-#BA_CHECK_INGRES_DB
-
-#BA_CHECK_DBI_DB
-
-#BA_CHECK_DBI_DRIVER
-
 dnl -------------------------------------------
 dnl If no batch insert backend are enable set
 dnl variable to None
@@ -1844,7 +1645,7 @@ if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then
    CFLAGS="$CCOPTS"
 fi
 
-dnl A few others 
+dnl A few others
 AC_EXEEXT
 
 dnl See if we can use 64 bit file addresses
@@ -1899,7 +1700,7 @@ AC_STRUCT_ST_BLOCKS
 AC_STRUCT_TIMEZONE
 
 dnl --------------------------------------------------------------------------
-dnl Check for utime.h structure 
+dnl Check for utime.h structure
 dnl --------------------------------------------------------------------------
 AC_CACHE_CHECK(for utime.h, ba_cv_header_utime_h,
    [
@@ -1966,7 +1767,7 @@ test $ba_cv_header_ioctl_req_t = yes && AC_DEFINE(HAVE_IOCTL_ULINT_REQUEST, 1, [
 
 dnl Note: it is more correct to use AC_LANG(C++) but some of the older
 dnl   *BSD systems still use old style C prototypes, which are wrong with
-dnl   compiled with a C++ compiler. 
+dnl   compiled with a C++ compiler.
 AC_LANG(C)
 
 dnl --------------------------------------------------------------------------
@@ -2026,7 +1827,7 @@ if test $fstype = no; then
       AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX
    )
 fi
-if test $fstype = no; then  
+if test $fstype = no; then
    AC_TRY_CPP(
       [
 	  #include <mntent.h>
@@ -2034,10 +1835,10 @@ if test $fstype = no; then
       AC_DEFINE(FSTYPE_MNTENT) fstype=4.3BSD
    )
 fi
-if test $fstype = no; then  
+if test $fstype = no; then
    AC_EGREP_HEADER(f_type;, sys/mount.h, AC_DEFINE(FSTYPE_STATFS) fstype=4.4BSD/OSF1)
 fi
-if test $fstype = no; then  
+if test $fstype = no; then
    AC_TRY_CPP(
       [
 	  #include <sys/mount.h>
@@ -2114,7 +1915,7 @@ AC_CACHE_CHECK([for intmax_t type], ac_cv_have_intmax_t,
 	      intmax_t a; a = 1;
 	  ], [
 	      ac_cv_have_intmax_t="yes"
-	  ], [ 
+	  ], [
 	      AC_TRY_COMPILE(
 		 [
 		     #include <stdint.h>
@@ -2127,7 +1928,7 @@ AC_CACHE_CHECK([for intmax_t type], ac_cv_have_intmax_t,
 		 ]
 	      )
 	  ]
-       )       
+       )
    ]
 )
 if test "x$ac_cv_have_intmax_t" = "xyes" ; then
@@ -2144,7 +1945,7 @@ AC_CACHE_CHECK([for u_intmax_t type], ac_cv_have_u_intmax_t,
 	      u_intmax_t a; a = 1;
 	  ], [
 	      ac_cv_have_u_intmax_t="yes"
-	  ], [ 
+	  ], [
 	      AC_TRY_COMPILE(
 		 [
 		     #include <stdint.h>
@@ -2184,7 +1985,7 @@ if test "x$ac_cv_have_intxx_t" = "xyes" ; then
    AC_DEFINE(HAVE_INTXX_T)
    have_intxx_t=1
 fi
-   
+
 AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t,
    [
        AC_TRY_COMPILE(
@@ -2204,7 +2005,7 @@ if test "x$ac_cv_have_int64_t" = "xyes" ; then
    AC_DEFINE(HAVE_INT64_T)
    have_int64_t=1
 fi
-   
+
 AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t,
    [
        AC_TRY_COMPILE(
@@ -2264,7 +2065,7 @@ then
       ], [
 	  AC_MSG_RESULT(no)
       ]
-   ) 
+   )
 fi
 
 if test -z "$have_u_intxx_t" ; then
@@ -2274,7 +2075,7 @@ if test -z "$have_u_intxx_t" ; then
 	     [
 		 #include <sys/types.h>
 	     ], [
-		 uint8_t a; uint16_t b; 
+		 uint8_t a; uint16_t b;
 		 uint32_t c; a = b = c = 1;
 	     ], [
 		ac_cv_have_uintxx_t="yes"
@@ -2297,7 +2098,7 @@ then
       [
 	  #include <sys/bitypes.h>
       ], [
-	  int64_t a; u_int64_t b; 
+	  int64_t a; u_int64_t b;
 	  a = b = 1;
       ], [
 	  AC_DEFINE(HAVE_U_INT64_T)
@@ -2306,7 +2107,7 @@ then
       ], [
 	  AC_MSG_RESULT(no)
       ]
-   ) 
+   )
 fi
 
 if (test -z "$have_uintxx_t" && \
@@ -2317,7 +2118,7 @@ then
       [
 	  #include <sys/bitypes.h>
       ], [
-	  uint8_t a; uint16_t b; 
+	  uint8_t a; uint16_t b;
 	  uint32_t c; a = b = c = 1;
       ], [
 	  AC_DEFINE(HAVE_UINTXX_T)
@@ -2325,7 +2126,7 @@ then
       ], [
 	  AC_MSG_RESULT(no)
       ]
-   ) 
+   )
 fi
 
 dnl --------------------------------------------------------------------------
@@ -2365,7 +2166,7 @@ AC_CHECK_FUNCS(strtoll, [AC_DEFINE(HAVE_STRTOLL)])
 AC_CHECK_FUNCS(posix_fadvise)
 AC_CHECK_FUNCS(fdatasync)
 
-AC_CHECK_FUNCS(chflags) 
+AC_CHECK_FUNCS(chflags)
 
 AC_CHECK_FUNCS(snprintf vsnprintf gethostid fseeko)
 
@@ -2402,6 +2203,8 @@ AC_CHECK_FUNC(gethostbyname_r,
 AC_CHECK_FUNCS(inet_pton, [AC_DEFINE(HAVE_INET_PTON)])
 AC_CHECK_FUNCS(inet_ntop, [AC_DEFINE(HAVE_INET_NTOP)])
 AC_CHECK_FUNCS(gethostbyname2, [AC_DEFINE(HAVE_GETHOSTBYNAME2)])
+AC_CHECK_FUNCS(getnameinfo, [AC_DEFINE(HAVE_GETNAMEINFO)])
+
 
 dnl ----------------------------
 dnl check sa_len of sockaddr
@@ -2500,24 +2303,6 @@ fi
 AC_SUBST(ZLIBS)
 
 dnl
-dnl Check for lzo
-dnl
-have_lzo=no
-AC_CHECK_HEADER(lzo/lzoconf.h, 
-[
-   AC_CHECK_HEADER(lzo/lzo1x.h,
-   [
-      AC_CHECK_LIB(lzo2, lzo1x_1_compress,
-      [
-	 LZOLIBS="-llzo2"
-	 AC_DEFINE(HAVE_LZO,1,[Define to 1 if you have LZO compression])
-	 have_lzo=yes
-      ])
-   ])
-])
-AC_SUBST(LZOLIBS)
-
-dnl
 dnl Check if we have AFS on this system
 dnl
 AFS_CFLAGS=""
@@ -2624,6 +2409,75 @@ fi
 AC_SUBST(AFS_CFLAGS)
 AC_SUBST(AFS_LIBS)
 
+dnl ---------------------------------------------------
+dnl Check for lzo support/directory (default on)
+dnl ---------------------------------------------------
+dnl this allows you to turn it completely off
+
+AC_ARG_ENABLE(lzo,
+   AC_HELP_STRING([--disable-lzo], [disable lzo support @<:@default=yes@:>@]),
+   [
+       if test x$enableval = xno; then
+	  support_lzo=no
+       fi
+   ]
+)
+
+LZO_INC=
+LZO_LIBS=
+LZO_LDFLAGS=
+
+have_lzo="no"
+if test x$support_lzo = xyes; then
+   AC_ARG_WITH(lzo,
+      AC_HELP_STRING([--with-lzo@<:@=DIR@:>@], [specify lzo library directory]),
+      [
+	  case "$with_lzo" in
+	  no)
+	     :
+	     ;;
+	  yes|*)
+	     if test -f ${with_lzo}/include/lzo/lzoconf.h; then
+		LZO_INC="-I${with_lzo}/include"
+		LZO_LDFLAGS="-L${with_lzo}/lib"
+		with_lzo="${with_lzo}/include"
+	     else
+		with_lzo="/usr/include"
+	     fi
+
+	     AC_CHECK_HEADER(${with_lzo}/lzo/lzoconf.h,
+		[
+		    AC_DEFINE(HAVE_LZO, 1, [Define to 1 if you have LZO compression])
+		    LZO_LIBS="${LZO_LDFLAGS} -lzo2"
+		    have_lzo="yes"	
+		], [
+		    echo " "
+		    echo "lzoconf.h not found. lzo turned off ..."
+		    echo " "
+		]
+	     )
+	     ;;
+	  esac
+      ],[
+	 AC_CHECK_HEADER(lzo/lzoconf.h,
+	 [
+	    AC_CHECK_HEADER(lzo/lzo1x.h,
+	    [
+	       AC_CHECK_LIB(lzo2, lzo1x_1_compress,
+	       [
+		 LZO_LIBS="-llzo2"
+		 AC_DEFINE(HAVE_LZO,1,[Define to 1 if you have LZO compression])
+		 have_lzo=yes
+	       ])
+	    ])
+	 ])
+      ])
+fi
+
+AC_SUBST(LZO_INC)
+AC_SUBST(LZO_LIBS)
+
+
 dnl
 dnl Check for ACL support and libraries
 dnl
@@ -2767,7 +2621,7 @@ if test x$support_acl = xyes -o x$support_acl = xauto; then
    fi
 
    if test x$support_acl = xyes -a $have_acl != yes; then
-      AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
+      AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found,
   please either load the acl libraries or rerun configure without --enable-acl])
    else
       if test $have_acl = yes; then
@@ -2814,7 +2668,7 @@ if test x$support_xattr = xyes -o x$support_xattr = xauto; then
 	     AC_DEFINE([HAVE_EXTATTR_LIST_LINK],1,[Define to 1 if you have the 'extattr_list_link' function.])
 	 ]
       )
-   
+
       if test $have_xattr = no; then
 	 AC_CHECK_FUNCS(extattr_get_file extattr_set_file extattr_list_file,
 	    [
@@ -2825,7 +2679,7 @@ if test x$support_xattr = xyes -o x$support_xattr = xauto; then
 	    ]
 	 )
       fi
-   
+
       if test $have_xattr = yes; then
 	 have_extattr_string_in_libc=no
 	 AC_CHECK_FUNCS(extattr_namespace_to_string extattr_string_to_namespace,
@@ -2956,7 +2810,7 @@ if test x$support_xattr = xyes -o x$support_xattr = xauto; then
    fi
 
    if test x$support_xattr = xyes -a $have_xattr != yes; then
-      AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
+      AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found,
   please either load the xattr libraries or rerun configure without --enable-xattr])
    else
       if test $have_xattr = yes; then
@@ -3039,7 +2893,6 @@ dnl
 dnl PFILES are platform specific files
 PFILES="platforms/Makefile"
 PSCMD="ps -e"
-WIN32=
 MACOSX=
 COMPRESS_MANPAGES=yes
 
@@ -3049,8 +2902,8 @@ aix)
    PSCMD="ps -e -o pid,comm"
    PFILES="${PFILES} \
       platforms/aix/Makefile"
-   TAPEDRIVE="/dev/rmt0.1" 
-  ;;	 
+   TAPEDRIVE="/dev/rmt0.1"
+  ;;	
 alpha)
    DISTVER=`uname -r`
    PTHREAD_LIB="-lpthread -lexc"
@@ -3078,13 +2931,6 @@ bsdi)
        platforms/bsdi/bacula-dir"
    largefile_support="yes"
   ;;
-cygwin)
-   DISTVER=`uname -a |awk '{print $3}'`
-   TAPEDRIVE="/dev/nrst0"
-   WIN32=win32
-   WCFLAGS="-mwindows"
-   WLDFLAGS="-mwindows"
-  ;;
 darwin)
    DISTVER=`uname -r`
    TAPEDRIVE="/dev/nst0"
@@ -3126,7 +2972,7 @@ debian)
 	 platforms/ubuntu/bacula-fd \
 	 platforms/ubuntu/bacula-sd \
 	 platforms/ubuntu/bacula-dir"
-   else 
+   else
       PFILES="${PFILES} \
 	 platforms/debian/Makefile \
 	 platforms/debian/bacula-fd \
@@ -3313,7 +3159,7 @@ unknown)
 *)
   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
   ;;
-esac  
+esac
 
 dnl -------------------------------------------
 dnl systemd (default off)
@@ -3357,7 +3203,6 @@ AC_DEFINE_UNQUOTED(lld, "$lld")
 AC_DEFINE_UNQUOTED(llu, "$llu")
 AC_SUBST(TAPEDRIVE)
 AC_SUBST(PSCMD)
-AC_SUBST(WIN32)
 AC_SUBST(MACOSX)
 AC_SUBST(DISTNAME)
 AC_SUBST(DISTVER)
@@ -3379,7 +3224,7 @@ if test "x${subsysdir}" = "x${sbindir}" ; then
    echo " "
    echo " "
    exit 1
-fi 
+fi
 
 AC_OUTPUT([autoconf/Make.common \
 	   Makefile \
@@ -3393,22 +3238,12 @@ AC_OUTPUT([autoconf/Make.common \
 	   scripts/devel_bacula \
 	   scripts/Makefile \
 	   scripts/logrotate \
-	   scripts/bacula.desktop.gnome1 \
-	   scripts/bacula.desktop.gnome2 \
-	   scripts/bacula.desktop.gnome1.consolehelper \
-	   scripts/bacula.desktop.gnome2.consolehelper \
-	   scripts/bacula.desktop.gnome1.xsu \
-	   scripts/bacula.desktop.gnome2.xsu \
 	   scripts/mtx-changer \
 	   scripts/disk-changer \
 	   scripts/dvd-handler \
 	   scripts/dvd-simulator \
-	   scripts/bacula-tray-monitor.desktop \
 	   scripts/logwatch/Makefile \
 	   scripts/logwatch/logfile.bacula.conf \
-	   scripts/wxconsole.console_apps \
-	   scripts/wxconsole.desktop.consolehelper \
-	   scripts/wxconsole.desktop.xsu \
 	   scripts/bat.desktop \
 	   scripts/bat.desktop.xsu \
 	   scripts/bat.desktop.consolehelper \
@@ -3417,16 +3252,10 @@ AC_OUTPUT([autoconf/Make.common \
 	   src/host.h \
 	   src/console/Makefile \
 	   src/console/bconsole.conf \
-	   src/qt-console/tray-monitor/tray-monitor.pro \
-	   src/qt-console/tray-monitor/tray-monitor.conf \
 	   src/qt-console/bat.conf \
 	   src/qt-console/bat.pro \
 	   src/qt-console/bat.pro.mingw32 \
 	   src/qt-console/install_conf_file \
-	   src/wx-console/Makefile \
-	   src/wx-console/bwx-console.conf \
-	   src/tray-monitor/Makefile \
-	   src/tray-monitor/tray-monitor.conf \
 	   src/dird/Makefile \
 	   src/dird/bacula-dir.conf \
 	   src/lib/Makefile \
@@ -3470,7 +3299,6 @@ AC_OUTPUT([autoconf/Make.common \
 	   src/plugins/fd/Makefile \
 	   src/plugins/sd/Makefile \
 	   src/plugins/dir/Makefile \
-	   src/win32/Makefile.inc \
 	   po/Makefile.in \
 	   updatedb/update_mysql_tables_9_to_10 \
 	   updatedb/update_sqlite3_tables_9_to_10 \
@@ -3489,7 +3317,11 @@ AC_OUTPUT([autoconf/Make.common \
 	   platforms/rpms/redhat/bacula-bat.spec \
 	   platforms/rpms/redhat/bacula-docs.spec \
 	   platforms/rpms/redhat/bacula-mtx.spec \
-	   $PFILES ],  
+	   platforms/rpms/suse/bacula.spec \
+	   platforms/rpms/suse/bacula-bat.spec \
+	   platforms/rpms/suse/bacula-docs.spec \
+	   platforms/rpms/suse/bacula-mtx.spec \
+	   $PFILES ],
      [ ]
 )
 
@@ -3503,6 +3335,7 @@ if test "${support_bat}" = "yes" ; then
    touch bat
    chmod 755 bat
    rm -f Makefile
+   rm -rf moc32 obj32
    $QMAKE
    ${MAKE:-make} clean
    cd ${BUILD_DIR}
@@ -3522,9 +3355,9 @@ chmod 755 install_conf_file build-depkgs-qt-console
 cd ${BUILD_DIR}
 
 cd scripts
-chmod 755 bacula btraceback mtx-changer
+chmod 755 bacula btraceback mtx-changer storage-ctl bsg_persist
 chmod 755 dvd-handler dvd-simulator
-chmod 755 bconsole mtx-changer devel_bacula logrotate
+chmod 755 bconsole disk-changer devel_bacula logrotate
 cd ..
 
 c=updatedb
@@ -3558,8 +3391,6 @@ chmod 755 $c/mysql
 
 chmod 755 $c/install-default-backend
 
-chmod 755 src/win32/build-depkgs-mingw32
-
 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
    largefile_support="yes"
 fi
@@ -3589,74 +3420,70 @@ ${MAKE:-make} clean
 echo "
 Configuration on `date`:
 
-   Host:		     ${host}${post_host} -- ${DISTNAME} ${DISTVER}
-   Bacula version:	     ${BACULA} ${VERSION} (${DATE})
-   Source code location:     ${srcdir}
-   Install binaries:	     ${sbindir}
-   Install libraries:	     ${libdir}
-   Install config files:     ${sysconfdir}
-   Scripts directory:	     ${scriptdir}
-   Archive directory:	     ${archivedir}
-   Working directory:	     ${working_dir}
-   PID directory:	     ${piddir}
-   Subsys directory:	     ${subsysdir}
-   Man directory:	     ${mandir}
-   Data directory:	     ${datarootdir}
-   Plugin directory:	     ${plugindir}
-   C Compiler:		     ${CC} ${CCVERSION}
-   C++ Compiler:	     ${CXX} ${CXXVERSION}
-   Compiler flags:	     ${WCFLAGS} ${CFLAGS} 
-   Linker flags:	     ${WLDFLAGS} ${LDFLAGS}
-   Libraries:		     ${LIBS}
-   Statically Linked Tools:  ${support_static_tools}
-   Statically Linked FD:     ${support_static_fd}
-   Statically Linked SD:     ${support_static_sd}
-   Statically Linked DIR:    ${support_static_dir}
-   Statically Linked CONS:   ${support_static_cons}
-   Database backends:	     ${db_backends}
-   Database port:	     ${db_port}
-   Database name:	     ${db_name}
-   Database user:	     ${db_user}
- 
-   Job Output Email:	     ${job_email}
-   Traceback Email:	     ${dump_email}
-   SMTP Host Address:	     ${smtp_host}
- 
-   Director Port:	     ${dir_port}
-   File daemon Port:	     ${fd_port}
-   Storage daemon Port:      ${sd_port}
- 
-   Director User:	     ${dir_user}
-   Director Group:	     ${dir_group}
-   Storage Daemon User:      ${sd_user}
-   Storage DaemonGroup:      ${sd_group}
-   File Daemon User:	     ${fd_user}
-   File Daemon Group:	     ${fd_group}
- 
-   Large file support:	     $largefile_support
-   Bacula conio support:     ${got_conio} ${CONS_LIBS}
-   readline support:	     ${got_readline} ${PRTREADLINE_SRC}
-   TCP Wrappers support:     ${TCPW_MSG} ${WRAPLIBS}
-   TLS support: 	     ${support_tls}
-   Encryption support:	     ${support_crypto} 
-   ZLIB support:	     ${have_zlib}
-   LZO support: 	     ${have_lzo}
-   enable-smartalloc:	     ${support_smartalloc} 
-   enable-lockmgr:	     ${support_lockmgr}
-   bat support: 	     ${support_bat}
-   enable-gnome:	     ${support_gnome} ${gnome_version}
-   enable-bwx-console:	     ${support_wx_console} ${wx_version}
-   enable-tray-monitor:      ${support_tray_monitor}
-   client-only: 	     ${build_client_only}
-   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}
-   systemd support:	     ${support_systemd} ${SYSTEMD_UNITDIR}
-   Batch insert enabled:     ${batch_insert_db_backends}
+   Host:		    ${host}${post_host} -- ${DISTNAME} ${DISTVER}
+   Bacula version:	    ${BACULA} ${VERSION} (${DATE})
+   Source code location:    ${srcdir}
+   Install binaries:	    ${sbindir}
+   Install libraries:	    ${libdir}
+   Install config files:    ${sysconfdir}
+   Scripts directory:	    ${scriptdir}
+   Archive directory:	    ${archivedir}
+   Working directory:	    ${working_dir}
+   PID directory:	    ${piddir}
+   Subsys directory:	    ${subsysdir}
+   Man directory:	    ${mandir}
+   Data directory:	    ${datarootdir}
+   Plugin directory:	    ${plugindir}
+   C Compiler:		    ${CC} ${CCVERSION}
+   C++ Compiler:	    ${CXX} ${CXXVERSION}
+   Compiler flags:	    ${WCFLAGS} ${CFLAGS}
+   Linker flags:	    ${WLDFLAGS} ${LDFLAGS}
+   Libraries:		    ${LIBS}
+   Statically Linked Tools: ${support_static_tools}
+   Statically Linked FD:    ${support_static_fd}
+   Statically Linked SD:    ${support_static_sd}
+   Statically Linked DIR:   ${support_static_dir}
+   Statically Linked CONS:  ${support_static_cons}
+   Database backends:	    ${db_backends}
+   Database port:	    ${db_port}
+   Database name:	    ${db_name}
+   Database user:	    ${db_user}
+
+   Job Output Email:	    ${job_email}
+   Traceback Email:	    ${dump_email}
+   SMTP Host Address:	    ${smtp_host}
+
+   Director Port:	    ${dir_port}
+   File daemon Port:	    ${fd_port}
+   Storage daemon Port:     ${sd_port}
+
+   Director User:	    ${dir_user}
+   Director Group:	    ${dir_group}
+   Storage Daemon User:     ${sd_user}
+   Storage DaemonGroup:     ${sd_group}
+   File Daemon User:	    ${fd_user}
+   File Daemon Group:	    ${fd_group}
+
+   Large file support:	    $largefile_support
+   Bacula conio support:    ${got_conio} ${CONS_LIBS}
+   readline support:	    ${got_readline} ${PRTREADLINE_SRC}
+   TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
+   TLS support: 	    ${support_tls}
+   Encryption support:	    ${support_crypto}
+   ZLIB support:	    ${have_zlib}
+   LZO support: 	    ${have_lzo}
+   enable-smartalloc:	    ${support_smartalloc}
+   enable-lockmgr:	    ${support_lockmgr}
+   bat support: 	    ${support_bat}
+   client-only: 	    ${build_client_only}
+   build-dird:		    ${build_dird}
+   build-stored:	    ${build_stored}
+   Plugin support:	    ${have_plugins}
+   AFS support: 	    ${have_afs}
+   ACL support: 	    ${have_acl}
+   XATTR support:	    ${have_xattr}
+   systemd support:	    ${support_systemd} ${SYSTEMD_UNITDIR}
+   Batch insert enabled:    ${batch_insert_db_backends}
 
   " > config.out
 
diff --git a/autoconf/gettext-macros/iconv.m4 b/autoconf/gettext-macros/iconv.m4
index 654c415..bb2f513 100644
--- a/autoconf/gettext-macros/iconv.m4
+++ b/autoconf/gettext-macros/iconv.m4
@@ -56,7 +56,7 @@ AC_DEFUN([AM_ICONV_LINK],
     fi
   ])
   if test "$am_cv_func_iconv" = yes; then
-    AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+    AC_DEFINE(HAVE_ICONV, 1, [Define to 1 if you have the `iconv()' function.])
   fi
   if test "$am_cv_lib_iconv" = yes; then
     AC_MSG_CHECKING([how to link with libiconv])
diff --git a/autoconf/gnome-macros/Makefile b/autoconf/gnome-macros/Makefile
deleted file mode 100644
index a8037c3..0000000
--- a/autoconf/gnome-macros/Makefile
+++ /dev/null
@@ -1,254 +0,0 @@
-# Generated automatically from Makefile.in by configure.
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
-
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-SHELL = /bin/sh
-
-srcdir = .
-top_srcdir = ..
-prefix = /usr/local
-exec_prefix = ${prefix}
-
-bindir = ${exec_prefix}/bin
-sbindir = ${exec_prefix}/sbin
-libexecdir = ${exec_prefix}/libexec
-datadir = ${prefix}/share
-sysconfdir = ${prefix}/etc
-sharedstatedir = ${prefix}/com
-localstatedir = ${prefix}/var
-libdir = ${exec_prefix}/lib
-infodir = ${prefix}/info
-mandir = ${prefix}/man
-includedir = ${prefix}/include
-oldincludedir = /usr/include
-
-DESTDIR =
-
-pkgdatadir = $(datadir)/bacula
-pkglibdir = $(libdir)/bacula
-pkgincludedir = $(includedir)/bacula
-
-top_builddir = ..
-
-ACLOCAL = aclocal -I macros
-AUTOCONF = autoconf
-AUTOMAKE = automake
-AUTOHEADER = autoheader
-
-INSTALL = /usr/bin/install -c
-INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_SCRIPT = ${INSTALL_PROGRAM}
-transform = s,x,x,
-
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-CATALOGS = 
-CATOBJEXT = .gmo
-CC = gcc
-DATADIRNAME = share
-GENCAT = 
-GMOFILES = 
-GMSGFMT = /usr/bin/msgfmt
-GNOMEGNORBA_LIBS = -rdynamic -lgnorba -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lnsl -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgtk -lgdk -lgmodule -ldl -lXi -lXext -lX11 -lgnome -lgnomesupport -lesd -laudiofile -lm -ldb1 -lglib
-GNOMEUI_LIBS = -rdynamic -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgtk -lgdk -lgmodule -ldl -lXi -lXext -lX11 -lgnome -lgnomesupport -lesd -laudiofile -lm -ldb1 -lglib
-GNOME_APPLETS_LIBS = 
-GNOME_CAPPLET_LIBS = 
-GNOME_CONFIG = /usr/bin/gnome-config
-GNOME_DOCKLETS_LIBS = 
-GNOME_INCLUDEDIR = -I/usr/include/gnome-1.0 -DNEED_GNOMESUPPORT_H -I/usr/lib/gnome-libs/include -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/include/orbit-1.0 -I/usr/include/gtk-1.2 -I/usr/X11R6/include
-GNOME_LIBDIR = -rdynamic -L/usr/lib -L/usr/X11R6/lib
-GNOME_LIBS = -lgnome -lgnomesupport -lesd -laudiofile -lm -ldb1 -lglib
-GNORBA_CFLAGS = -I/usr/include/gnome-1.0 -DNEED_GNOMESUPPORT_H -I/usr/lib/gnome-libs/include -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/include/orbit-1.0 -I/usr/include/gtk-1.2 -I/usr/X11R6/include
-GNORBA_LIBS = -rdynamic -L/usr/lib -L/usr/X11R6/lib -lgnorba -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lnsl -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgtk -lgdk -lgmodule -ldl -lXi -lXext -lX11 -lgnome -lgnomesupport -lesd -laudiofile -lm -ldb1 -lglib
-GTKXMHTML_LIBS = -rdynamic -lgtkxmhtml -lXpm -ljpeg -lpng -lz -lSM -lICE -lgtk -lgdk -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm
-GTK_CFLAGS = -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include
-GTK_CONFIG = /usr/bin/gtk-config
-GTK_LIBS = -lSM -lICE -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm
-GT_NO = 
-GT_YES = #YES#
-INCLUDE_LOCALE_H = #include <locale.h>
-INSTOBJEXT = .mo
-INTLDEPS = 
-INTLLIBS = 
-INTLOBJS = 
-MAKEINFO = makeinfo
-MKINSTALLDIRS = ./mkinstalldirs
-MSGFMT = /usr/bin/msgfmt
-ORBIT_CFLAGS = -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/include/orbit-1.0
-ORBIT_CONFIG = /usr/bin/orbit-config
-ORBIT_IDL = /usr/bin/orbit-idl
-ORBIT_LIBS = -L/usr/lib -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lglib -lnsl -lm
-PACKAGE = bacula
-POFILES = 
-POSUB = po
-PTHREAD_LIB = -lpthread
-RANLIB = ranlib
-USE_INCLUDED_LIBINTL = no
-USE_NLS = yes
-VERSION = 0.1
-XPM_LIBS = -lXpm
-ZVT_LIBS = -rdynamic -lzvt -lutil -lSM -lICE -lgdk_imlib -lgtk -lgdk -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm
-cflags_set = yes
-cxxflags_set = @cxxflags_set@
-l = 
-
-MACROS =    aclocal-include.m4				  compiler-flags.m4				  curses.m4					  gnome-bonobo-check.m4				  gnome-fileutils.m4				  gnome-ghttp-check.m4				  gnome-gnorba-check.m4				  gnome-guile-checks.m4				  gnome-libgtop-check.m4			  gnome-objc-checks.m4				  gnome-orbit-check.m4				  gnome-print-check.m4				  gnome-pthread-check.m4			  gnome-support.m4				  gnome-undelfs.m4				  gnome-vfs.m4					  gnome-x-checks.m4				  gnome-xml-check.m4				  gnome.m4					  gperf-check.m4				  linger.m4 [...]
-
-
-EXTRA_DIST = $(MACROS) gnome-common.m4 gnome-gettext.m4 autogen.sh
-MAINTAINERCLEANFILES = macros.dep
-
-#gnome_aclocaldir = $(datadir)/aclocal/gnome-macros
-
-#gnome_aclocal_DATA = $(MACROS) gnome-macros.dep gnome-common.m4 	gnome-gettext.m4 autogen.sh
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = ../config.h
-CONFIG_CLEAN_FILES = 
-DATA =  $(gnome_aclocal_DATA)
-
-DIST_COMMON =  Makefile.am Makefile.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = gtar
-GZIP_ENV = --best
-all: all-redirect
-.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
-	cd $(top_srcdir) && $(AUTOMAKE) --gnu macros/Makefile
-
-Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status $(BUILT_SOURCES)
-	cd $(top_builddir) \
-	  && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-
-install-gnome_aclocalDATA: $(gnome_aclocal_DATA)
-	@$(NORMAL_INSTALL)
-	$(mkinstalldirs) $(DESTDIR)$(gnome_aclocaldir)
-	@list='$(gnome_aclocal_DATA)'; for p in $$list; do \
-	  if test -f $(srcdir)/$$p; then \
-	    echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(gnome_aclocaldir)/$$p"; \
-	    $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(gnome_aclocaldir)/$$p; \
-	  else if test -f $$p; then \
-	    echo " $(INSTALL_DATA) $$p $(DESTDIR)$(gnome_aclocaldir)/$$p"; \
-	    $(INSTALL_DATA) $$p $(DESTDIR)$(gnome_aclocaldir)/$$p; \
-	  fi; fi; \
-	done
-
-uninstall-gnome_aclocalDATA:
-	@$(NORMAL_UNINSTALL)
-	list='$(gnome_aclocal_DATA)'; for p in $$list; do \
-	  rm -f $(DESTDIR)$(gnome_aclocaldir)/$$p; \
-	done
-tags: TAGS
-TAGS:
-
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = macros
-
-distdir: $(DISTFILES)
-	here=`cd $(top_builddir) && pwd`; \
-	top_distdir=`cd $(top_distdir) && pwd`; \
-	distdir=`cd $(distdir) && pwd`; \
-	cd $(top_srcdir) \
-	  && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu macros/Makefile
-	@for file in $(DISTFILES); do \
-	  d=$(srcdir); \
-	  if test -d $$d/$$file; then \
-	    cp -pr $$d/$$file $(distdir)/$$file; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-	    || cp -p $$d/$$file $(distdir)/$$file || :; \
-	  fi; \
-	done
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
-check-am: all-am
-check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-exec-am:
-install-exec: install-exec-am
-
-install-data-am: install-gnome_aclocalDATA
-install-data: install-data-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
-uninstall-am: uninstall-gnome_aclocalDATA
-uninstall: uninstall-am
-all-am: Makefile $(DATA)
-all-redirect: all-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
-	$(mkinstalldirs)  $(DESTDIR)$(gnome_aclocaldir)
-
-
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f Makefile $(CONFIG_CLEAN_FILES)
-	-rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
-maintainer-clean-generic:
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-mostlyclean-am:  mostlyclean-generic
-
-mostlyclean: mostlyclean-am
-
-clean-am:  clean-generic mostlyclean-am
-
-clean: clean-am
-
-distclean-am:  distclean-generic clean-am
-
-distclean: distclean-am
-
-maintainer-clean-am:  maintainer-clean-generic distclean-am
-	@echo "This command is intended for maintainers to use;"
-	@echo "it deletes files that may require special tools to rebuild."
-
-maintainer-clean: maintainer-clean-am
-
-.PHONY: uninstall-gnome_aclocalDATA install-gnome_aclocalDATA tags \
-distdir info-am info dvi-am dvi check check-am installcheck-am \
-installcheck install-exec-am install-exec install-data-am install-data \
-install-am install uninstall-am uninstall all-redirect all-am all \
-installdirs mostlyclean-generic distclean-generic clean-generic \
-maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-
-
-macros.dep: Makefile.am
-	@echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=macros/%)' > $@
-
-#gnome-macros.dep: Makefile.am
-#	@echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=$(gnome_aclocaldir)/%)' > $@
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/autoconf/gnome-macros/Makefile.am b/autoconf/gnome-macros/Makefile.am
deleted file mode 100644
index f5cc043..0000000
--- a/autoconf/gnome-macros/Makefile.am
+++ /dev/null
@@ -1,42 +0,0 @@
-## Please update this variable if any new macros are created
-
-MACROS=						\
-  aclocal-include.m4				\
-  compiler-flags.m4				\
-  curses.m4					\
-  gnome-bonobo-check.m4				\
-  gnome-fileutils.m4				\
-  gnome-ghttp-check.m4				\
-  gnome-gnorba-check.m4				\
-  gnome-guile-checks.m4				\
-  gnome-libgtop-check.m4			\
-  gnome-objc-checks.m4				\
-  gnome-orbit-check.m4				\
-  gnome-print-check.m4				\
-  gnome-pthread-check.m4			\
-  gnome-support.m4				\
-  gnome-undelfs.m4				\
-  gnome-vfs.m4					\
-  gnome-x-checks.m4				\
-  gnome-xml-check.m4				\
-  gnome.m4					\
-  gperf-check.m4				\
-  linger.m4					\
-  need-declaration.m4				
-
-EXTRA_DIST=$(MACROS) gnome-common.m4 gnome-gettext.m4 autogen.sh
-MAINTAINERCLEANFILES=macros.dep
-
- at MAINT@macros.dep: Makefile.am
- at MAINT@	@echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=macros/%)' > $@
-
-if INSIDE_GNOME_COMMON
-gnome_aclocaldir = $(datadir)/aclocal/gnome-macros
-
-gnome-macros.dep: Makefile.am
-	@echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=$(gnome_aclocaldir)/%)' > $@
-
-gnome_aclocal_DATA = $(MACROS) gnome-macros.dep gnome-common.m4 \
-	gnome-gettext.m4 autogen.sh
-
-endif
diff --git a/autoconf/gnome-macros/Makefile.in b/autoconf/gnome-macros/Makefile.in
deleted file mode 100644
index 111a372..0000000
--- a/autoconf/gnome-macros/Makefile.in
+++ /dev/null
@@ -1,254 +0,0 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
-
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-SHELL = @SHELL@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DESTDIR =
-
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-
-top_builddir = ..
-
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
-CC = @CC@
-DATADIRNAME = @DATADIRNAME@
-GENCAT = @GENCAT@
-GMOFILES = @GMOFILES@
-GMSGFMT = @GMSGFMT@
-GNOMEGNORBA_LIBS = @GNOMEGNORBA_LIBS@
-GNOMEUI_LIBS = @GNOMEUI_LIBS@
-GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@
-GNOME_CAPPLET_LIBS = @GNOME_CAPPLET_LIBS@
-GNOME_CONFIG = @GNOME_CONFIG@
-GNOME_DOCKLETS_LIBS = @GNOME_DOCKLETS_LIBS@
-GNOME_INCLUDEDIR = @GNOME_INCLUDEDIR@
-GNOME_LIBDIR = @GNOME_LIBDIR@
-GNOME_LIBS = @GNOME_LIBS@
-GNORBA_CFLAGS = @GNORBA_CFLAGS@
-GNORBA_LIBS = @GNORBA_LIBS@
-GTKXMHTML_LIBS = @GTKXMHTML_LIBS@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_CONFIG = @GTK_CONFIG@
-GTK_LIBS = @GTK_LIBS@
-GT_NO = @GT_NO@
-GT_YES = @GT_YES@
-INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
-INSTOBJEXT = @INSTOBJEXT@
-INTLDEPS = @INTLDEPS@
-INTLLIBS = @INTLLIBS@
-INTLOBJS = @INTLOBJS@
-MAKEINFO = @MAKEINFO@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-MSGFMT = @MSGFMT@
-ORBIT_CFLAGS = @ORBIT_CFLAGS@
-ORBIT_CONFIG = @ORBIT_CONFIG@
-ORBIT_IDL = @ORBIT_IDL@
-ORBIT_LIBS = @ORBIT_LIBS@
-PACKAGE = @PACKAGE@
-POFILES = @POFILES@
-POSUB = @POSUB@
-PTHREAD_LIB = @PTHREAD_LIB@
-RANLIB = @RANLIB@
-USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-XPM_LIBS = @XPM_LIBS@
-ZVT_LIBS = @ZVT_LIBS@
-cflags_set = @cflags_set@
-cxxflags_set = @cxxflags_set@
-l = @l@
-
-MACROS =    aclocal-include.m4				  compiler-flags.m4				  curses.m4					  gnome-bonobo-check.m4				  gnome-fileutils.m4				  gnome-ghttp-check.m4				  gnome-gnorba-check.m4				  gnome-guile-checks.m4				  gnome-libgtop-check.m4			  gnome-objc-checks.m4				  gnome-orbit-check.m4				  gnome-print-check.m4				  gnome-pthread-check.m4			  gnome-support.m4				  gnome-undelfs.m4				  gnome-vfs.m4					  gnome-x-checks.m4				  gnome-xml-check.m4				  gnome.m4					  gperf-check.m4				  linger.m4 [...]
-
-
-EXTRA_DIST = $(MACROS) gnome-common.m4 gnome-gettext.m4 autogen.sh
-MAINTAINERCLEANFILES = macros.dep
-
- at INSIDE_GNOME_COMMON_TRUE@gnome_aclocaldir = $(datadir)/aclocal/gnome-macros
-
- at INSIDE_GNOME_COMMON_TRUE@gnome_aclocal_DATA = $(MACROS) gnome-macros.dep gnome-common.m4 	gnome-gettext.m4 autogen.sh
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = ../config.h
-CONFIG_CLEAN_FILES = 
-DATA =  $(gnome_aclocal_DATA)
-
-DIST_COMMON =  Makefile.am Makefile.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = gtar
-GZIP_ENV = --best
-all: all-redirect
-.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
-	cd $(top_srcdir) && $(AUTOMAKE) --gnu macros/Makefile
-
-Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status $(BUILT_SOURCES)
-	cd $(top_builddir) \
-	  && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-
-install-gnome_aclocalDATA: $(gnome_aclocal_DATA)
-	@$(NORMAL_INSTALL)
-	$(mkinstalldirs) $(DESTDIR)$(gnome_aclocaldir)
-	@list='$(gnome_aclocal_DATA)'; for p in $$list; do \
-	  if test -f $(srcdir)/$$p; then \
-	    echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(gnome_aclocaldir)/$$p"; \
-	    $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(gnome_aclocaldir)/$$p; \
-	  else if test -f $$p; then \
-	    echo " $(INSTALL_DATA) $$p $(DESTDIR)$(gnome_aclocaldir)/$$p"; \
-	    $(INSTALL_DATA) $$p $(DESTDIR)$(gnome_aclocaldir)/$$p; \
-	  fi; fi; \
-	done
-
-uninstall-gnome_aclocalDATA:
-	@$(NORMAL_UNINSTALL)
-	list='$(gnome_aclocal_DATA)'; for p in $$list; do \
-	  rm -f $(DESTDIR)$(gnome_aclocaldir)/$$p; \
-	done
-tags: TAGS
-TAGS:
-
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = macros
-
-distdir: $(DISTFILES)
-	here=`cd $(top_builddir) && pwd`; \
-	top_distdir=`cd $(top_distdir) && pwd`; \
-	distdir=`cd $(distdir) && pwd`; \
-	cd $(top_srcdir) \
-	  && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu macros/Makefile
-	@for file in $(DISTFILES); do \
-	  d=$(srcdir); \
-	  if test -d $$d/$$file; then \
-	    cp -pr $$d/$$file $(distdir)/$$file; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-	    || cp -p $$d/$$file $(distdir)/$$file || :; \
-	  fi; \
-	done
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
-check-am: all-am
-check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-exec-am:
-install-exec: install-exec-am
-
-install-data-am: install-gnome_aclocalDATA
-install-data: install-data-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
-uninstall-am: uninstall-gnome_aclocalDATA
-uninstall: uninstall-am
-all-am: Makefile $(DATA)
-all-redirect: all-am
-install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
-	$(mkinstalldirs)  $(DESTDIR)$(gnome_aclocaldir)
-
-
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f Makefile $(CONFIG_CLEAN_FILES)
-	-rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
-maintainer-clean-generic:
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-mostlyclean-am:  mostlyclean-generic
-
-mostlyclean: mostlyclean-am
-
-clean-am:  clean-generic mostlyclean-am
-
-clean: clean-am
-
-distclean-am:  distclean-generic clean-am
-
-distclean: distclean-am
-
-maintainer-clean-am:  maintainer-clean-generic distclean-am
-	@echo "This command is intended for maintainers to use;"
-	@echo "it deletes files that may require special tools to rebuild."
-
-maintainer-clean: maintainer-clean-am
-
-.PHONY: uninstall-gnome_aclocalDATA install-gnome_aclocalDATA tags \
-distdir info-am info dvi-am dvi check check-am installcheck-am \
-installcheck install-exec-am install-exec install-data-am install-data \
-install-am install uninstall-am uninstall all-redirect all-am all \
-installdirs mostlyclean-generic distclean-generic clean-generic \
-maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-
-
-macros.dep: Makefile.am
-	@echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=macros/%)' > $@
-
- at INSIDE_GNOME_COMMON_TRUE@gnome-macros.dep: Makefile.am
- at INSIDE_GNOME_COMMON_TRUE@	@echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=$(gnome_aclocaldir)/%)' > $@
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/autoconf/gnome-macros/aclocal-include.m4 b/autoconf/gnome-macros/aclocal-include.m4
deleted file mode 100644
index 43f9dbc..0000000
--- a/autoconf/gnome-macros/aclocal-include.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-# aclocal-include.m4
-# 
-# This macro adds the name macrodir to the set of directories
-# that `aclocal' searches for macros.  
-
-# serial 1
-
-dnl AM_ACLOCAL_INCLUDE(macrodir)
-AC_DEFUN([AM_ACLOCAL_INCLUDE],
-[
-	AM_CONDITIONAL(INSIDE_GNOME_COMMON, false)
-
-	test -n "$ACLOCAL_FLAGS" && ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
-
-	for k in $1 ; do ACLOCAL="$ACLOCAL -I $k" ; done
-])
diff --git a/autoconf/gnome-macros/autogen.sh b/autoconf/gnome-macros/autogen.sh
deleted file mode 100644
index 71f7dfc..0000000
--- a/autoconf/gnome-macros/autogen.sh
+++ /dev/null
@@ -1,207 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-DIE=0
-
-if [ -n "$GNOME2_PATH" ]; then
-	ACLOCAL_FLAGS="-I $GNOME2_PATH/share/aclocal $ACLOCAL_FLAGS"
-	PATH="$GNOME2_PATH/bin:$PATH"
-	export PATH
-fi
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`autoconf' installed to compile $PKG_NAME."
-  echo "Download the appropriate package for your distribution,"
-  echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
-  DIE=1
-}
-
-(grep "^AC_PROG_INTLTOOL" $srcdir/configure.in >/dev/null) && {
-  (intltoolize --version) < /dev/null > /dev/null 2>&1 || {
-    echo 
-    echo "**Error**: You must have \`intltoolize' installed to compile $PKG_NAME."
-    echo "Get ftp://ftp.gnome.org/pub/GNOME/stable/sources/intltool/intltool-0.10.tar.gz"
-    echo "(or a newer version if it is available)"
-    DIE=1
-  }
-}
-
-(grep "^AM_PROG_XML_I18N_TOOLS" $srcdir/configure.in >/dev/null) && {
-  (xml-i18n-toolize --version) < /dev/null > /dev/null 2>&1 || {
-    echo 
-    echo "**Error**: You must have \`xml-i18n-toolize' installed to compile $PKG_NAME."
-    echo "Get ftp://ftp.gnome.org/pub/GNOME/stable/sources/xml-i18n-tools/xml-i18n-tools-0.9.tar.gz"
-    echo "(or a newer version of xml-i18n-tools or intltool if it is available)"
-    DIE=1
-  }
-}
-
-(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
-    echo
-    echo "**Error**: You must have \`libtool' installed to compile $PKG_NAME."
-    echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz"
-    echo "(or a newer version if it is available)"
-    DIE=1
-  }
-}
-
-#grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && {
-#  grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
-#  (gettext --version) < /dev/null > /dev/null 2>&1 || {
-#    echo
-#    echo "**Error**: You must have \`gettext' installed to compile $PKG_NAME."
-#    echo "Get ftp://ftp.gnu.org/pub/gnu/gettext/gettext-0.10.39.tar.gz"
-#    echo "(or a newer version if it is available)"
-#    DIE=1
-#  }
-#}
-
-#grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && {
-#  grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
-#  (gettext --version) < /dev/null > /dev/null 2>&1 || {
-#    echo
-#    echo "**Error**: You must have \`gettext' installed to compile $PKG_NAME."
-#    echo "Get ftp://ftp.gnu.org/pub/gnu/gettext/gettext-0.10.39.tar.gz"
-#    echo "(or a newer version if it is available)"
-#    DIE=1
-#  }
-#}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: You must have \`automake' installed to compile $PKG_NAME."
-  echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
-  echo "(or a newer version if it is available)"
-  DIE=1
-  NO_AUTOMAKE=yes
-}
-
-
-# if no automake, don't bother testing for aclocal
-test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
-  echo
-  echo "**Error**: Missing \`aclocal'.  The version of \`automake'"
-  echo "installed doesn't appear recent enough."
-  echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz"
-  echo "(or a newer version if it is available)"
-  DIE=1
-}
-
-if test "$DIE" -eq 1; then
-  exit 1
-fi
-
-if test -z "$*"; then
-  echo "**Warning**: I am going to run \`configure' with no arguments."
-  echo "If you wish to pass any to it, please specify them on the"
-  echo \`$0\'" command line."
-  echo
-fi
-
-case $CC in
-xlc )
-  am_opt=--include-deps;;
-esac
-
-for coin in `find $srcdir -name configure.in -print`
-do 
-  dr=`dirname $coin`
-  if test -f $dr/NO-AUTO-GEN; then
-    echo skipping $dr -- flagged as no auto-gen
-  else
-    echo processing $dr
-    macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin`
-    ( cd $dr
-      macrosdir=`find . -name macros -print`
-      for i in $macrodirs; do
-	if test -f $i/gnome-gettext.m4; then
-	  DELETEFILES="$DELETEFILES $i/gnome-gettext.m4"
-	fi
-      done
-
-      echo "deletefiles is $DELETEFILES"
-      aclocalinclude="$ACLOCAL_FLAGS"
-      for k in $aclocalinclude; do
-  	if test -d $k; then
-	  if [ -f $k/gnome.m4 -a "$GNOME_INTERFACE_VERSION" = "1" ]; then
-	    rm -f $DELETEFILES
-	  fi
-        fi
-      done
-      for k in $macrodirs; do
-  	if test -d $k; then
-          aclocalinclude="$aclocalinclude -I $k"
-	  if [ -f $k/gnome.m4 -a "$GNOME_INTERFACE_VERSION" = "1" ]; then
-	    rm -f $DELETEFILES
-	  fi
-        fi
-      done
-      if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then
-	if grep "sed.*POTFILES" configure.in >/dev/null; then
-	  : do nothing -- we still have an old unmodified configure.in
-	else
-	  echo "Creating $dr/aclocal.m4 ..."
-	  test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
-	  echo "Running gettextize...  Ignore non-fatal messages."
-	  echo "no" | gettextize --force --copy
-	  echo "Making $dr/aclocal.m4 writable ..."
-	  test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
-        fi
-      fi
-      if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then
-	echo "Creating $dr/aclocal.m4 ..."
-	test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
-	echo "Running gettextize...  Ignore non-fatal messages."
-	echo "no" | gettextize --force --copy
-	echo "Making $dr/aclocal.m4 writable ..."
-	test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
-      fi
-      if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then
-        echo "Running intltoolize..."
-	intltoolize --copy --force --automake
-      fi
-      if grep "^AM_PROG_XML_I18N_TOOLS" configure.in >/dev/null; then
-        echo "Running xml-i18n-toolize..."
-	xml-i18n-toolize --copy --force --automake
-      fi
-      if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "Running libtoolize..."
-	  libtoolize --force --copy
-	fi
-      fi
-      echo "Running aclocal $aclocalinclude ..."
-      aclocal $aclocalinclude || {
-	echo
-	echo "**Error**: aclocal failed. This may mean that you have not"
-	echo "installed all of the packages you need, or you may need to"
-	echo "set ACLOCAL_FLAGS to include \"-I \$prefix/share/aclocal\""
-	echo "for the prefix where you installed the packages whose"
-	echo "macros were not found"
-	exit 1
-      }
-
-      if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
-	echo "Running autoheader..."
-	autoheader || { echo "**Error**: autoheader failed."; exit 1; }
-      fi
-      echo "Running automake --gnu $am_opt ..."
-      automake --add-missing --gnu $am_opt ||
-	{ echo "**Error**: automake failed."; exit 1; }
-      echo "Running autoconf ..."
-      autoconf || { echo "**Error**: autoconf failed."; exit 1; }
-    ) || exit 1
-  fi
-done
-
-conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
-
-if test x$NOCONFIGURE = x; then
-  echo Running $srcdir/configure $conf_flags "$@" ...
-  $srcdir/configure $conf_flags "$@" \
-  && echo Now type \`make\' to compile $PKG_NAME || exit 1
-else
-  echo Skipping configure process.
-fi
diff --git a/autoconf/gnome-macros/compiler-flags.m4 b/autoconf/gnome-macros/compiler-flags.m4
deleted file mode 100644
index 63f8e2e..0000000
--- a/autoconf/gnome-macros/compiler-flags.m4
+++ /dev/null
@@ -1,109 +0,0 @@
-dnl GNOME_COMPILE_WARNINGS
-dnl Turn on many useful compiler warnings
-dnl For now, only works on GCC
-AC_DEFUN([GNOME_COMPILE_WARNINGS],[
-  AC_ARG_ENABLE(compile-warnings, 
-    [  --enable-compile-warnings=[no/minimum/yes]	Turn on compiler warnings.],,enable_compile_warnings=minimum)
-
-  AC_MSG_CHECKING(what warning flags to pass to the C compiler)
-  warnCFLAGS=
-  if test "x$GCC" != xyes; then
-    enable_compile_warnings=no
-  fi
-
-  if test "x$enable_compile_warnings" != "xno"; then
-    if test "x$GCC" = "xyes"; then
-      case " $CFLAGS " in
-      *[\ \	]-Wall[\ \	]*) ;;
-      *) warnCFLAGS="-Wall -Wunused" ;;
-      esac
-
-      ## -W is not all that useful.  And it cannot be controlled
-      ## with individual -Wno-xxx flags, unlike -Wall
-      if test "x$enable_compile_warnings" = "xyes"; then
-	warnCFLAGS="$warnCFLAGS -Wmissing-prototypes -Wmissing-declarations"
-      fi
-    fi
-  fi
-  AC_MSG_RESULT($warnCFLAGS)
-
-  AC_ARG_ENABLE(iso-c,
-    [  --enable-iso-c          Try to warn if code is not ISO C ],,
-    enable_iso_c=no)
-
-  AC_MSG_CHECKING(what language compliance flags to pass to the C compiler)
-  complCFLAGS=
-  if test "x$enable_iso_c" != "xno"; then
-    if test "x$GCC" = "xyes"; then
-      case " $CFLAGS " in
-      *[\ \	]-ansi[\ \	]*) ;;
-      *) complCFLAGS="$complCFLAGS -ansi" ;;
-      esac
-
-      case " $CFLAGS " in
-      *[\ \	]-pedantic[\ \	]*) ;;
-      *) complCFLAGS="$complCFLAGS -pedantic" ;;
-      esac
-    fi
-  fi
-  AC_MSG_RESULT($complCFLAGS)
-  if test "x$cflags_set" != "xyes"; then
-    CFLAGS="$CFLAGS $warnCFLAGS $complCFLAGS"
-    cflags_set=yes
-    AC_SUBST(cflags_set)
-  fi
-])
-
-dnl For C++, do basically the same thing.
-
-AC_DEFUN([GNOME_CXX_WARNINGS],[
-  AC_ARG_ENABLE(cxx-warnings, 
-    [  --enable-cxx-warnings=[no/minimum/yes]	Turn on compiler warnings.],,enable_cxx_warnings=minimum)
-
-  AC_MSG_CHECKING(what warning flags to pass to the C++ compiler)
-  warnCXXFLAGS=
-  if test "x$GCC" != xyes; then
-    enable_compile_warnings=no
-  fi
-  if test "x$enable_cxx_warnings" != "xno"; then
-    if test "x$GCC" = "xyes"; then
-      case " $CXXFLAGS " in
-      *[\ \	]-Wall[\ \	]*) ;;
-      *) warnCXXFLAGS="-Wall -Wno-unused" ;;
-      esac
-
-      ## -W is not all that useful.  And it cannot be controlled
-      ## with individual -Wno-xxx flags, unlike -Wall
-      if test "x$enable_cxx_warnings" = "xyes"; then
-	warnCXXFLAGS="$warnCXXFLAGS -Wmissing-prototypes -Wmissing-declarations -Wshadow -Woverloaded-virtual"
-      fi
-    fi
-  fi
-  AC_MSG_RESULT($warnCXXFLAGS)
-
-   AC_ARG_ENABLE(iso-cxx,
-     [  --enable-iso-cxx          Try to warn if code is not ISO C++ ],,
-     enable_iso_cxx=no)
-
-   AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler)
-   complCXXFLAGS=
-   if test "x$enable_iso_cxx" != "xno"; then
-     if test "x$GCC" = "xyes"; then
-      case " $CXXFLAGS " in
-      *[\ \	]-ansi[\ \	]*) ;;
-      *) complCXXFLAGS="$complCXXFLAGS -ansi" ;;
-      esac
-
-      case " $CXXFLAGS " in
-      *[\ \	]-pedantic[\ \	]*) ;;
-      *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;;
-      esac
-     fi
-   fi
-  AC_MSG_RESULT($complCXXFLAGS)
-  if test "x$cxxflags_set" != "xyes"; then
-    CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS"
-    cxxflags_set=yes
-    AC_SUBST(cxxflags_set)
-  fi
-])
diff --git a/autoconf/gnome-macros/curses.m4 b/autoconf/gnome-macros/curses.m4
deleted file mode 100644
index 5307e13..0000000
--- a/autoconf/gnome-macros/curses.m4
+++ /dev/null
@@ -1,318 +0,0 @@
-dnl Curses detection: Munged from Midnight Commander's configure.in
-dnl
-dnl What it does:
-dnl =============
-dnl
-dnl - Determine which version of curses is installed on your system
-dnl   and set the -I/-L/-l compiler entries and add a few preprocessor
-dnl   symbols 
-dnl - Do an AC_SUBST on the CURSES_INCLUDEDIR and CURSES_LIBS so that
-dnl   @CURSES_INCLUDEDIR@ and @CURSES_LIBS@ will be available in
-dnl   Makefile.in's
-dnl - Modify the following configure variables (these are the only
-dnl   curses.m4 variables you can access from within configure.in)
-dnl   CURSES_INCLUDEDIR - contains -I's and possibly -DRENAMED_CURSES if
-dnl                       an ncurses.h that's been renamed to curses.h
-dnl                       is found.
-dnl   CURSES_LIBS       - sets -L and -l's appropriately
-dnl   CFLAGS            - if --with-sco, add -D_SVID3 
-dnl   has_curses        - exports result of tests to rest of configure
-dnl
-dnl Usage:
-dnl ======
-dnl 1) Add lines indicated below to acconfig.h
-dnl 2) call AC_CHECK_CURSES after AC_PROG_CC in your configure.in
-dnl 3) Instead of #include <curses.h> you should use the following to
-dnl    properly locate ncurses or curses header file
-dnl
-dnl    #if defined(USE_NCURSES) && !defined(RENAMED_NCURSES)
-dnl    #include <ncurses.h>
-dnl    #else
-dnl    #include <curses.h>
-dnl    #endif
-dnl
-dnl 4) Make sure to add @CURSES_INCLUDEDIR@ to your preprocessor flags
-dnl 5) Make sure to add @CURSES_LIBS@ to your linker flags or LIBS
-dnl
-dnl Notes with automake:
-dnl - call AM_CONDITIONAL(HAS_CURSES, test "$has_curses" = true) from
-dnl   configure.in
-dnl - your Makefile.am can look something like this
-dnl   -----------------------------------------------
-dnl   INCLUDES= blah blah blah $(CURSES_INCLUDEDIR) 
-dnl   if HAS_CURSES
-dnl   CURSES_TARGETS=name_of_curses_prog
-dnl   endif
-dnl   bin_PROGRAMS = other_programs $(CURSES_TARGETS)
-dnl   other_programs_SOURCES = blah blah blah
-dnl   name_of_curses_prog_SOURCES = blah blah blah
-dnl   other_programs_LDADD = blah
-dnl   name_of_curses_prog_LDADD = blah $(CURSES_LIBS)
-dnl   -----------------------------------------------
-dnl
-dnl
-dnl The following lines should be added to acconfig.h:
-dnl ==================================================
-dnl
-dnl /*=== Curses version detection defines ===*/
-dnl /* Found some version of curses that we're going to use */
-dnl #undef HAS_CURSES
-dnl    
-dnl /* Use SunOS SysV curses? */
-dnl #undef USE_SUNOS_CURSES
-dnl 
-dnl /* Use old BSD curses - not used right now */
-dnl #undef USE_BSD_CURSES
-dnl 
-dnl /* Use SystemV curses? */
-dnl #undef USE_SYSV_CURSES
-dnl 
-dnl /* Use Ncurses? */
-dnl #undef USE_NCURSES
-dnl 
-dnl /* If you Curses does not have color define this one */
-dnl #undef NO_COLOR_CURSES
-dnl 
-dnl /* Define if you want to turn on SCO-specific code */
-dnl #undef SCO_FLAVOR
-dnl 
-dnl /* Set to reflect version of ncurses *
-dnl  *   0 = version 1.*
-dnl  *   1 = version 1.9.9g
-dnl  *   2 = version 4.0/4.1 */
-dnl #undef NCURSES_970530
-dnl
-dnl /*=== End new stuff for acconfig.h ===*/
-dnl 
-
-
-AC_DEFUN([AC_CHECK_CURSES],[
-	search_ncurses=true
-	screen_manager=""
-	has_curses=false
-
-	CFLAGS=${CFLAGS--O}
-
-	AC_SUBST(CURSES_LIBS)
-	AC_SUBST(CURSES_INCLUDEDIR)
-
-	AC_ARG_WITH(sco,
-	  [  --with-sco              Use this to turn on SCO-specific code],[
-	  if test x$withval = xyes; then
-		AC_DEFINE(SCO_FLAVOR)
-		CFLAGS="$CFLAGS -D_SVID3"
-	  fi
-	])
-
-	AC_ARG_WITH(sunos-curses,
-	  [  --with-sunos-curses     Used to force SunOS 4.x curses],[
-	  if test x$withval = xyes; then
-		AC_USE_SUNOS_CURSES
-	  fi
-	])
-
-	AC_ARG_WITH(osf1-curses,
-	  [  --with-osf1-curses      Used to force OSF/1 curses],[
-	  if test x$withval = xyes; then
-		AC_USE_OSF1_CURSES
-	  fi
-	])
-
-	AC_ARG_WITH(vcurses,
-	  [  --with-vcurses[=incdir] Used to force SysV curses],
-	  if test x$withval != xyes; then
-		CURSES_INCLUDEDIR="-I$withval"
-	  fi
-	  AC_USE_SYSV_CURSES
-	)
-
-	AC_ARG_WITH(ncurses,
-	  [  --with-ncurses[=dir]  Compile with ncurses/locate base dir],
-	  if test x$withval = xno ; then
-		search_ncurses=false
-	  elif test x$withval != xyes ; then
-		CURSES_LIBS="$LIBS -L$withval/lib -lncurses"
-		CURSES_INCLUDEDIR="-I$withval/include"
-		search_ncurses=false
-		screen_manager="ncurses"
-		AC_DEFINE(USE_NCURSES)
-		AC_DEFINE(HAS_CURSES)
-		has_curses=true
-	  fi
-	)
-
-	if $search_ncurses
-	then
-		AC_SEARCH_NCURSES()
-	fi
-
-
-])
-
-
-AC_DEFUN([AC_USE_SUNOS_CURSES], [
-	search_ncurses=false
-	screen_manager="SunOS 4.x /usr/5include curses"
-	AC_MSG_RESULT(Using SunOS 4.x /usr/5include curses)
-	AC_DEFINE(USE_SUNOS_CURSES)
-	AC_DEFINE(HAS_CURSES)
-	has_curses=true
-	AC_DEFINE(NO_COLOR_CURSES)
-	AC_DEFINE(USE_SYSV_CURSES)
-	CURSES_INCLUDEDIR="-I/usr/5include"
-	CURSES_LIBS="/usr/5lib/libcurses.a /usr/5lib/libtermcap.a"
-	AC_MSG_RESULT(Please note that some screen refreshs may fail)
-])
-
-AC_DEFUN([AC_USE_OSF1_CURSES], [
-       AC_MSG_RESULT(Using OSF1 curses)
-       search_ncurses=false
-       screen_manager="OSF1 curses"
-       AC_DEFINE(HAS_CURSES)
-       has_curses=true
-       AC_DEFINE(NO_COLOR_CURSES)
-       AC_DEFINE(USE_SYSV_CURSES)
-       CURSES_LIBS="-lcurses"
-])
-
-AC_DEFUN([AC_USE_SYSV_CURSES], [
-	AC_MSG_RESULT(Using SysV curses)
-	AC_DEFINE(HAS_CURSES)
-	has_curses=true
-	AC_DEFINE(USE_SYSV_CURSES)
-	search_ncurses=false
-	screen_manager="SysV/curses"
-	CURSES_LIBS="-lcurses"
-])
-
-dnl AC_ARG_WITH(bsd-curses,
-dnl [--with-bsd-curses         Used to compile with bsd curses, not very fancy],
-dnl 	search_ncurses=false
-dnl	screen_manager="Ultrix/cursesX"
-dnl	if test $system = ULTRIX
-dnl	then
-dnl	    THIS_CURSES=cursesX
-dnl        else
-dnl	    THIS_CURSES=curses
-dnl	fi
-dnl
-dnl	CURSES_LIBS="-l$THIS_CURSES -ltermcap"
-dnl	AC_DEFINE(HAS_CURSES)
-dnl	has_curses=true
-dnl	AC_DEFINE(USE_BSD_CURSES)
-dnl	AC_MSG_RESULT(Please note that some screen refreshs may fail)
-dnl	AC_MSG_WARN(Use of the bsdcurses extension has some)
-dnl	AC_MSG_WARN(display/input problems.)
-dnl	AC_MSG_WARN(Reconsider using xcurses)
-dnl)
-
-	
-dnl
-dnl Parameters: directory filename cureses_LIBS curses_INCLUDEDIR nicename
-dnl
-AC_DEFUN([AC_NCURSES], [
-    if $search_ncurses
-    then
-        if test -f $1/$2
-	then
-	    AC_MSG_RESULT(Found ncurses on $1/$2)
- 	    CURSES_LIBS="$3"
-	    CURSES_INCLUDEDIR="$4"
-	    search_ncurses=false
-	    screen_manager=$5
-            AC_DEFINE(HAS_CURSES)
-            has_curses=true
-	    AC_DEFINE(USE_NCURSES)
-	fi
-    fi
-])
-
-AC_DEFUN([AC_SEARCH_NCURSES], [
-    AC_CHECKING("location of ncurses.h file")
-
-    AC_NCURSES(/usr/include, ncurses.h, -lncurses,, "ncurses on /usr/include")
-    AC_NCURSES(/usr/include/ncurses, ncurses.h, -lncurses, -I/usr/include/ncurses, "ncurses on /usr/include/ncurses")
-    AC_NCURSES(/usr/local/include, ncurses.h, -L/usr/local/lib -lncurses, -I/usr/local/include, "ncurses on /usr/local")
-    AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses -lncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses")
-
-    AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib -lncurses, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses")
-
-    AC_NCURSES(/usr/include/ncurses, curses.h, -lncurses, -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses")
-
-    dnl
-    dnl We couldn't find ncurses, try SysV curses
-    dnl
-    if $search_ncurses 
-    then
-        AC_EGREP_HEADER(init_color, /usr/include/curses.h,
-	    AC_USE_SYSV_CURSES)
-	AC_EGREP_CPP(USE_NCURSES,[
-#include <curses.h>
-#ifdef __NCURSES_H
-#undef USE_NCURSES
-USE_NCURSES
-#endif
-],[
-	CURSES_INCLUDEDIR="$CURSES_INCLUDEDIR -DRENAMED_NCURSES"
-        AC_DEFINE(HAS_CURSES)
-	has_curses=true
-        AC_DEFINE(USE_NCURSES)
-        search_ncurses=false
-        screen_manager="ncurses installed as curses"
-])
-    fi
-
-    dnl
-    dnl Try SunOS 4.x /usr/5{lib,include} ncurses
-    dnl The flags USE_SUNOS_CURSES, USE_BSD_CURSES and BUGGY_CURSES
-    dnl should be replaced by a more fine grained selection routine
-    dnl
-    if $search_ncurses
-    then
-	if test -f /usr/5include/curses.h
-	then
-	    AC_USE_SUNOS_CURSES
-        fi
-    else
-        # check for ncurses version, to properly ifdef mouse-fix
-	AC_MSG_CHECKING(for ncurses version)
-	ncurses_version=unknown
-cat > conftest.$ac_ext <<EOF
-[#]line __oline__ "configure"
-#include "confdefs.h"
-#ifdef RENAMED_NCURSES
-#include <curses.h>
-#else
-#include <ncurses.h>
-#endif
-#undef VERSION
-VERSION:NCURSES_VERSION
-EOF
-        if (eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC |
-  egrep "VERSION:" >conftest.out 2>&1; then
-changequote(,)dnl
-            ncurses_version=`cat conftest.out|sed -e 's/^[^"]*"//' -e 's/".*//'`
-changequote([,])dnl
-	fi
-	rm -rf conftest*
-        AC_MSG_RESULT($ncurses_version)
-	case "$ncurses_version" in
-changequote(,)dnl
-	4.[01])
-changequote([,])dnl
-            AC_DEFINE(NCURSES_970530,2)
-            ;;
-	1.9.9g)
-            AC_DEFINE(NCURSES_970530,1)
-            ;;
-	1*)
-            AC_DEFINE(NCURSES_970530,0)
-            ;;
-	esac
-    fi
-])
-
-
-
-
-
diff --git a/autoconf/gnome-macros/gnome-bonobo-check.m4 b/autoconf/gnome-macros/gnome-bonobo-check.m4
deleted file mode 100644
index daa109c..0000000
--- a/autoconf/gnome-macros/gnome-bonobo-check.m4
+++ /dev/null
@@ -1,166 +0,0 @@
-# Configure paths for Bonobo
-# Miguel de Icaza, 99-04-12
-# Stolen from Chris Lahey	99-2-5
-# stolen from Manish Singh again
-# stolen back from Frank Belew
-# stolen from Manish Singh
-# Shamelessly stolen from Owen Taylor
-
-dnl AM_PATH_BONOBO ([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
-dnl Test for Bonobo, and define BONOBO_CFLAGS and BONOBO_LIBS
-dnl
-AC_DEFUN([AM_PATH_BONOBO],
-[
-dnl 
-dnl Get the cflags and libraries from the gnome-config script
-dnl
-AC_ARG_WITH(bonobo-prefix,[  --with-bonobo-prefix=PFX   Prefix where Bonobo is installed (optional)],
-            bonobo_prefix="$withval", bonobo_prefix="")
-AC_ARG_WITH(bonobo-exec-prefix,[  --with-bonobo-exec-prefix=PFX Exec prefix where Bonobo is installed (optional)],
-            bonobo_exec_prefix="$withval", bonobo_exec_prefix="")
-AC_ARG_ENABLE(bonobotest, [  --disable-bonobotest       Do not try to compile and run a test Bonobo program],
-		    , enable_bonobotest=yes)
-
-  if test x$bonobo_exec_prefix != x ; then
-     bonobo_args="$bonobo_args --exec-prefix=$bonobo_exec_prefix"
-     if test x${GNOME_CONFIG+set} != xset ; then
-        GNOME_CONFIG=$bonobo_exec_prefix/bin/gnome-config
-     fi
-  fi
-  if test x$bonobo_prefix != x ; then
-     bonobo_args="$bonobo_args --prefix=$bonobo_prefix"
-     if test x${GNOME_CONFIG+set} != xset ; then
-        GNOME_CONFIG=$bonobo_prefix/bin/gnome-config
-     fi
-  fi
-
-  AC_PATH_PROG(GNOME_CONFIG, gnome-config, no)
-  min_bonobo_version=ifelse([$1], ,0.1.0,$1)
-  AC_MSG_CHECKING(for BONOBO - version >= $min_bonobo_version)
-  no_bonobo=""
-  if test "$GNOME_CONFIG" = "no" ; then
-    no_bonobo=yes
-  else
-    BONOBO_CFLAGS=`$GNOME_CONFIG $bonoboconf_args --cflags bonobo bonobox`
-    BONOBO_LIBS=`$GNOME_CONFIG $bonoboconf_args --libs bonobo bonobox`
-
-    bonobo_major_version=`$GNOME_CONFIG $bonobo_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    bonobo_minor_version=`$GNOME_CONFIG $bonobo_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-    bonobo_micro_version=`$GNOME_CONFIG $bonobo_config_args --version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-    if test "x$enable_bonobotest" = "xyes" ; then
-      ac_save_CFLAGS="$CFLAGS"
-      ac_save_LIBS="$LIBS"
-      CFLAGS="$CFLAGS $BONOBO_CFLAGS"
-      LIBS="$LIBS $BONOBO_LIBS"
-dnl
-dnl Now check if the installed BONOBO is sufficiently new. (Also sanity
-dnl checks the results of gnome-config to some extent
-dnl
-      rm -f conf.bonobotest
-      AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <bonobo.h>
-
-static char*
-my_strdup (char *str)
-{
-  char *new_str;
-  
-  if (str)
-    {
-      new_str = malloc ((strlen (str) + 1) * sizeof(char));
-      strcpy (new_str, str);
-    }
-  else
-    new_str = NULL;
-  
-  return new_str;
-}
-
-int main ()
-{
-  int major, minor, micro;
-  char *tmp_version;
-
-  system ("touch conf.bonobotest");
-  bonobo_object_get_type ();
-  return 0;
-}
-
-],, no_bonobo=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-       CFLAGS="$ac_save_CFLAGS"
-       LIBS="$ac_save_LIBS"
-     fi
-  fi
-  if test "x$no_bonobo" = x ; then
-     AC_MSG_RESULT(yes)
-     ifelse([$2], , :, [$2])     
-  else
-     AC_MSG_RESULT(no)
-     if test "$GNOME_CONFIG" = "no" ; then
-       echo "*** The gnome-config script installed by GNOME-LIBS could not be found"
-       echo "*** If BONOBO was installed in PREFIX, make sure PREFIX/bin is in"
-       echo "*** your path, or set the GNOME_CONFIG environment variable to the"
-       echo "*** full path to gnome-config."
-     else
-       if test -f conf.bonobotest ; then
-        :
-       else
-          echo "*** Could not run BONOBO test program, checking why..."
-          CFLAGS="$CFLAGS $BONOBO_CFLAGS"
-          LIBS="$LIBS $BONOBO_LIBS"
-          AC_TRY_LINK([
-#include <stdio.h>
-#include <bonobo/gnome-object.h>
-],      [ return 0; ],
-        [ echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding BONOBO or finding the wrong"
-          echo "*** version of BONOBO. If it is not finding BONOBO, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-	  echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
-        [ echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means BONOBO was incorrectly installed"
-          echo "*** or that you have moved BONOBO since it was installed. In the latter case, you"
-          echo "*** may want to edit the gnome-config script: $GNOME_CONFIG" ])
-          CFLAGS="$ac_save_CFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     BONOBO_CFLAGS=""
-     BONOBO_LIBS=""
-     ifelse([$3], , :, [$3])
-  fi
-  AC_SUBST(BONOBO_CFLAGS)
-  AC_SUBST(BONOBO_LIBS)
-  rm -f conf.bonobotest
-])
-
-AC_DEFUN([BONOBO_CHECK], [
-	AM_PATH_BONOBO(0.1.0,,[AC_MSG_ERROR(BONOBO not found)])
-])
-
-AC_DEFUN([AM_BONOBO_USES_OAF],
-[
-	AC_REQUIRE([AM_PATH_BONOBO])
-
-	AC_MSG_CHECKING(if Bonobo uses OAF)
-	if ( gnome-config --libs bonobo | grep oaf ) > /dev/null 2>&1 ; then
-	  using_oaf="yes"
-	  AC_DEFINE(BONOBO_USES_OAF)
-	else
-	  using_oaf="no"
-	fi
-
-	AC_MSG_RESULT("$using_oaf")
-
-	AM_CONDITIONAL(BONOBO_USES_OAF, test x"using_oaf" = "xyes")
-])
diff --git a/autoconf/gnome-macros/gnome-common.m4 b/autoconf/gnome-macros/gnome-common.m4
deleted file mode 100644
index 83bb00d..0000000
--- a/autoconf/gnome-macros/gnome-common.m4
+++ /dev/null
@@ -1,14 +0,0 @@
-# gnome-common.m4
-# 
-# This only for packages that are not in the GNOME CVS tree.
-
-dnl GNOME_COMMON_INIT
-
-AC_DEFUN([GNOME_COMMON_INIT],
-[
-	GNOME_ACLOCAL_DIR="$GNOME_COMMON_MACROS_DIR"
-	AC_SUBST(GNOME_ACLOCAL_DIR)
-
-	ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
-])
-
diff --git a/autoconf/gnome-macros/gnome-fileutils.m4 b/autoconf/gnome-macros/gnome-fileutils.m4
deleted file mode 100644
index a8456f2..0000000
--- a/autoconf/gnome-macros/gnome-fileutils.m4
+++ /dev/null
@@ -1,414 +0,0 @@
-dnl
-dnl GNOME_FILEUTILS_CHECKS
-dnl
-dnl checks that are needed for the diskusage applet.
-dnl
-
-AC_DEFUN([GNOME_FILEUTILS_CHECKS],
-[	
-AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \
-mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \
-sys/filsys.h sys/fs_types.h sys/fs/s5param.h)
-
-AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \
-getcwd getmntinfo gettimeofday isascii lchown \
-listmntent memcpy mkfifo strchr strerror strrchr vprintf)
-
-dnl Set some defaults when cross-compiling
-
-if test x$cross_compiling = xyes ; then
-	case "$host_os" in
-	linux*)
-	  fu_cv_sys_mounted_getmntent1=yes
-	  fu_cv_sys_stat_statfs2_bsize=yes
-	  ;;
-	sunos*)
-	  fu_cv_sys_stat_statfs4=yes
-	  ;;
-	freebsd*)
-	  fu_cv_sys_stat_statfs2_bsize=yes
-	  ;;
-	osf*)
-	  fu_cv_sys_stat_statfs3_osf1=yes
-	  ;;
-	esac
-fi
-
-# Determine how to get the list of mounted filesystems.
-list_mounted_fs=
-
-# If the getmntent function is available but not in the standard library,
-# make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX).
-AC_FUNC_GETMNTENT
-
-# This test must precede the ones for getmntent because Unicos-9 is
-# reported to have the getmntent function, but its support is incompatible
-# with other getmntent implementations.
-
-# NOTE: Normally, I wouldn't use a check for system type as I've done for
-# `CRAY' below since that goes against the whole autoconf philosophy.  But
-# I think there is too great a chance that some non-Cray system has a
-# function named listmntent to risk the false positive.
-
-if test -z "$list_mounted_fs"; then
-# Cray UNICOS 9
-AC_MSG_CHECKING([for listmntent of Cray/Unicos-9])
-AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent,
-[fu_cv_sys_mounted_cray_listmntent=no
-AC_EGREP_CPP(yes,
-[#ifdef _CRAY
-yes
-#endif
-], [test $ac_cv_func_listmntent = yes \
-&& fu_cv_sys_mounted_cray_listmntent=yes]
-)
-]
-)
-AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
-if test $fu_cv_sys_mounted_cray_listmntent = yes; then
-list_mounted_fs=found
-AC_DEFINE(MOUNTED_LISTMNTENT)
-fi
-fi
-
-if test $ac_cv_func_getmntent = yes; then
-
-# This system has the getmntent function.
-# Determine whether it's the one-argument variant or the two-argument one.
-
-if test -z "$list_mounted_fs"; then
-# 4.3BSD, SunOS, HP-UX, Dynix, Irix
-AC_MSG_CHECKING([for one-argument getmntent function])
-AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1,
-[test $ac_cv_header_mntent_h = yes \
-&& fu_cv_sys_mounted_getmntent1=yes \
-|| fu_cv_sys_mounted_getmntent1=no])
-AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
-if test $fu_cv_sys_mounted_getmntent1 = yes; then
-list_mounted_fs=found
-AC_DEFINE(MOUNTED_GETMNTENT1)
-fi
-fi
-
-if test -z "$list_mounted_fs"; then
-# SVR4
-AC_MSG_CHECKING([for two-argument getmntent function])
-AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2,
-[AC_EGREP_HEADER(getmntent, sys/mnttab.h,
-fu_cv_sys_mounted_getmntent2=yes,
-fu_cv_sys_mounted_getmntent2=no)])
-AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
-if test $fu_cv_sys_mounted_getmntent2 = yes; then
-list_mounted_fs=found
-AC_DEFINE(MOUNTED_GETMNTENT2)
-fi
-fi
-
-if test -z "$list_mounted_fs"; then
-AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
-fi
-
-fi
-
-if test -z "$list_mounted_fs"; then
-# DEC Alpha running OSF/1.
-AC_MSG_CHECKING([for getfsstat function])
-AC_CACHE_VAL(fu_cv_sys_mounted_getsstat,
-[AC_TRY_LINK([
-#include <sys/types.h>
-#include <sys/mount.h>
-#include <sys/fs_types.h>],
-[struct statfs *stats;
-int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ],
-fu_cv_sys_mounted_getsstat=yes,
-fu_cv_sys_mounted_getsstat=no)])
-AC_MSG_RESULT($fu_cv_sys_mounted_getsstat)
-if test $fu_cv_sys_mounted_getsstat = yes; then
-list_mounted_fs=found
-AC_DEFINE(MOUNTED_GETFSSTAT)
-fi
-fi
-
-if test -z "$list_mounted_fs"; then
-# AIX.
-AC_MSG_CHECKING([for mntctl function and struct vmount])
-AC_CACHE_VAL(fu_cv_sys_mounted_vmount,
-[AC_TRY_CPP([#include <fshelp.h>],
-fu_cv_sys_mounted_vmount=yes,
-fu_cv_sys_mounted_vmount=no)])
-AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
-if test $fu_cv_sys_mounted_vmount = yes; then
-list_mounted_fs=found
-AC_DEFINE(MOUNTED_VMOUNT)
-fi
-fi
-
-if test -z "$list_mounted_fs"; then
-# SVR3
-AC_MSG_CHECKING([for FIXME existence of three headers])
-AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp,
-[AC_TRY_CPP([
-#include <sys/statfs.h>
-#include <sys/fstyp.h>
-#include <mnttab.h>],
-fu_cv_sys_mounted_fread_fstyp=yes,
-fu_cv_sys_mounted_fread_fstyp=no)])
-AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
-if test $fu_cv_sys_mounted_fread_fstyp = yes; then
-list_mounted_fs=found
-AC_DEFINE(MOUNTED_FREAD_FSTYP)
-fi
-fi
-
-if test -z "$list_mounted_fs"; then
-# 4.4BSD and DEC OSF/1.
-AC_MSG_CHECKING([for getmntinfo function])
-AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo,
-[
-ok=
-if test $ac_cv_func_getmntinfo = yes; then
-AC_EGREP_HEADER(f_type;, sys/mount.h,
-ok=yes)
-fi
-test -n "$ok" \
-&& fu_cv_sys_mounted_getmntinfo=yes \
-|| fu_cv_sys_mounted_getmntinfo=no
-])
-AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
-if test $fu_cv_sys_mounted_getmntinfo = yes; then
-list_mounted_fs=found
-AC_DEFINE(MOUNTED_GETMNTINFO)
-fi
-fi
-
-# FIXME: add a test for netbsd-1.1 here
-
-if test -z "$list_mounted_fs"; then
-# Ultrix
-AC_MSG_CHECKING([for getmnt function])
-AC_CACHE_VAL(fu_cv_sys_mounted_getmnt,
-[AC_TRY_CPP([
-#include <sys/fs_types.h>
-#include <sys/mount.h>],
-fu_cv_sys_mounted_getmnt=yes,
-fu_cv_sys_mounted_getmnt=no)])
-AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
-if test $fu_cv_sys_mounted_getmnt = yes; then
-list_mounted_fs=found
-AC_DEFINE(MOUNTED_GETMNT)
-fi
-fi
-
-if test -z "$list_mounted_fs"; then
-# SVR2
-AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab])
-AC_CACHE_VAL(fu_cv_sys_mounted_fread,
-[AC_TRY_CPP([#include <mnttab.h>],
-fu_cv_sys_mounted_fread=yes,
-fu_cv_sys_mounted_fread=no)])
-AC_MSG_RESULT($fu_cv_sys_mounted_fread)
-if test $fu_cv_sys_mounted_fread = yes; then
-list_mounted_fs=found
-AC_DEFINE(MOUNTED_FREAD)
-fi
-fi
-
-if test -z "$list_mounted_fs"; then
-AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
-# FIXME -- no need to abort building the whole package
-# Cannot build mountlist.c or anything that needs its functions
-fi
-
-AC_CHECKING(how to get filesystem space usage)
-space=no
-
-# Perform only the link test since it seems there are no variants of the
-# statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
-# because that got a false positive on SCO OSR5.  Adding the declaration
-# of a `struct statvfs' causes this test to fail (as it should) on such
-# systems.  That system is reported to work fine with STAT_STATFS4 which
-# is what it gets when this test fails.
-if test $space = no; then
-# SVR4
-AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
-[AC_TRY_LINK([#include <sys/types.h>
-#include <sys/statvfs.h>],
-[struct statvfs fsd; statvfs (0, &fsd);],
-fu_cv_sys_stat_statvfs=yes,
-fu_cv_sys_stat_statvfs=no)])
-if test $fu_cv_sys_stat_statvfs = yes; then
-space=yes
-AC_DEFINE(STAT_STATVFS)
-fi
-fi
-
-if test $space = no; then
-# DEC Alpha running OSF/1
-AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
-AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
-[AC_TRY_RUN([
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/mount.h>
-int main ()
-{
-struct statfs fsd;
-fsd.f_fsize = 0;
-return (statfs (".", &fsd, sizeof (struct statfs)));
-}],
-fu_cv_sys_stat_statfs3_osf1=yes,
-fu_cv_sys_stat_statfs3_osf1=no,
-fu_cv_sys_stat_statfs3_osf1=no)])
-AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
-if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
-space=yes
-AC_DEFINE(STAT_STATFS3_OSF1)
-fi
-fi
-
-if test $space = no; then
-# AIX
-AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
-member (AIX, 4.3BSD)])
-AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
-[AC_TRY_RUN([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-#ifdef HAVE_SYS_VFS_H
-#include <sys/vfs.h>
-#endif
-int main ()
-{
-struct statfs fsd;
-fsd.f_bsize = 0;
-return (statfs (".", &fsd));
-}],
-fu_cv_sys_stat_statfs2_bsize=yes,
-fu_cv_sys_stat_statfs2_bsize=no,
-fu_cv_sys_stat_statfs2_bsize=no)])
-AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
-if test $fu_cv_sys_stat_statfs2_bsize = yes; then
-space=yes
-AC_DEFINE(STAT_STATFS2_BSIZE)
-fi
-fi
-
-if test $space = no; then
-# SVR3
-AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
-AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
-[AC_TRY_RUN([#include <sys/types.h>
-#include <sys/statfs.h>
-int main ()
-{
-struct statfs fsd;
-return (statfs (".", &fsd, sizeof fsd, 0));
-}],
-fu_cv_sys_stat_statfs4=yes,
-fu_cv_sys_stat_statfs4=no,
-fu_cv_sys_stat_statfs4=no)])
-AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
-if test $fu_cv_sys_stat_statfs4 = yes; then
-space=yes
-AC_DEFINE(STAT_STATFS4)
-fi
-fi
-
-if test $space = no; then
-# 4.4BSD and NetBSD
-AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
-member (4.4BSD and NetBSD)])
-AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
-[AC_TRY_RUN([#include <sys/types.h>
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-int main ()
-{
-struct statfs fsd;
-fsd.f_fsize = 0;
-return (statfs (".", &fsd));
-}],
-fu_cv_sys_stat_statfs2_fsize=yes,
-fu_cv_sys_stat_statfs2_fsize=no,
-fu_cv_sys_stat_statfs2_fsize=no)])
-AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
-if test $fu_cv_sys_stat_statfs2_fsize = yes; then
-space=yes
-AC_DEFINE(STAT_STATFS2_FSIZE)
-fi
-fi
-
-if test $space = no; then
-# Ultrix
-AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
-AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
-[AC_TRY_RUN([#include <sys/types.h>
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-#ifdef HAVE_SYS_FS_TYPES_H
-#include <sys/fs_types.h>
-#endif
-int main ()
-{
-struct fs_data fsd;
-/* Ultrix's statfs returns 1 for success,
-0 for not mounted, -1 for failure.  */
-return (statfs (".", &fsd) != 1);
-}],
-fu_cv_sys_stat_fs_data=yes,
-fu_cv_sys_stat_fs_data=no,
-fu_cv_sys_stat_fs_data=no)])
-AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
-if test $fu_cv_sys_stat_fs_data = yes; then
-space=yes
-AC_DEFINE(STAT_STATFS2_FS_DATA)
-fi
-fi
-
-if test $space = no; then
-# SVR2
-AC_TRY_CPP([#include <sys/filsys.h>],
-AC_DEFINE(STAT_READ_FILSYS) space=yes)
-fi
-
-if test -n "$list_mounted_fs" && test $space != no; then
-DF_PROG="df"
-# LIBOBJS="$LIBOBJS fsusage.o"
-# LIBOBJS="$LIBOBJS mountlist.o"
-fi
-
-# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
-# If <sys/vfs.h> exists and struct statfs has a member named f_spare,
-# enable the work-around code in fsusage.c.
-AC_MSG_CHECKING([for statfs that truncates block counts])
-AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
-[AC_TRY_COMPILE([
-#if !defined(sun) && !defined(__sun)
-choke -- this is a workaround for a Sun-specific problem
-#endif
-#include <sys/types.h>
-#include <sys/vfs.h>],
-[struct statfs t; long c = *(t.f_spare);],
-fu_cv_sys_truncating_statfs=yes,
-fu_cv_sys_truncating_statfs=no,
-)])
-if test $fu_cv_sys_truncating_statfs = yes; then
-AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS)
-fi
-AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
-
-AC_CHECKING(for AFS)
-test -d /afs && AC_DEFINE(AFS)
-])
diff --git a/autoconf/gnome-macros/gnome-ghttp-check.m4 b/autoconf/gnome-macros/gnome-ghttp-check.m4
deleted file mode 100644
index 0ecacaa..0000000
--- a/autoconf/gnome-macros/gnome-ghttp-check.m4
+++ /dev/null
@@ -1,14 +0,0 @@
-AC_DEFUN([GNOME_GHTTP_CHECK],[
-	AC_REQUIRE([GNOME_INIT_HOOK])
-	GHTTP_LIB=
-	AC_CHECK_FUNC(connect,,[
-	  AC_CHECK_LIB(socket,connect,
-		GHTTP_LIB="-lsocket $GHTTP_LIB",,$GHTTP_LIB)])
-	AC_CHECK_FUNC(gethostbyname,,[
- 	  AC_CHECK_LIB(nsl,gethostbyname,
-		GHTTP_LIB="-lnsl $GHTTP_LIB",,$GHTTP_LIB)])
-	AC_CHECK_LIB(ghttp, ghttp_request_new, 
-		GHTTP_LIB="-lghttp $GHTTP_LIB",GHTTP_LIB="",-L$gnome_prefix $GHTTP_LIB)
-	AC_SUBST(GHTTP_LIB)
-	AC_PROVIDE([GNOME_GHTTP_CHECK])
-])
diff --git a/autoconf/gnome-macros/gnome-gnorba-check.m4 b/autoconf/gnome-macros/gnome-gnorba-check.m4
deleted file mode 100644
index dbac0a6..0000000
--- a/autoconf/gnome-macros/gnome-gnorba-check.m4
+++ /dev/null
@@ -1,35 +0,0 @@
-dnl
-dnl GNOME_GNORBA_HOOK (script-if-gnorba-found, failflag)
-dnl
-dnl if failflag is "failure" it aborts if gnorba is not found.
-dnl
-
-AC_DEFUN([GNOME_GNORBA_HOOK],[
-	GNOME_ORBIT_HOOK([],$2)
-	AC_CACHE_CHECK([for gnorba libraries],gnome_cv_gnorba_found,[
-		gnome_cv_gnorba_found=no
-		if test x$gnome_cv_orbit_found = xyes; then
-			GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`"
-			GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`"
-			if test -n "$GNORBA_LIBS"; then
-				gnome_cv_gnorba_found=yes
-			fi
-		fi
-	])
-	AM_CONDITIONAL(HAVE_GNORBA, test x$gnome_cv_gnorba_found = xyes)
-	if test x$gnome_cv_orbit_found = xyes; then
-		$1
-		GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`"
-		GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`"
-		AC_SUBST(GNORBA_CFLAGS)
-		AC_SUBST(GNORBA_LIBS)
-	else
-	    	if test x$2 = xfailure; then
-			AC_MSG_ERROR(gnorba library not installed or installation problem)
-	    	fi
-	fi
-])
-
-AC_DEFUN([GNOME_GNORBA_CHECK], [
-	GNOME_GNORBA_HOOK([],failure)
-])
diff --git a/autoconf/gnome-macros/gnome-guile-checks.m4 b/autoconf/gnome-macros/gnome-guile-checks.m4
deleted file mode 100644
index 102351c..0000000
--- a/autoconf/gnome-macros/gnome-guile-checks.m4
+++ /dev/null
@@ -1,134 +0,0 @@
-dnl
-dnl GNOME_CHECK_GUILE (failflag)
-dnl
-dnl if failflag is "fail" then GNOME_CHECK_GUILE will abort if guile is not found.
-dnl
-
-AC_DEFUN([GNOME_CHECK_GUILE],
-[
-dnl	AC_MSG_WARN([Withval is: $withval])
-	guile_msg = 'Huh?'
-if test x$withval = xno ; then
-	guile_msg = 'disabled'
-	GUILE_LIBS=
-	GUILE_INCS=
-	AC_SUBST(GUILE_LIBS)
-	AC_SUBST(GUILE_INCS)
-	AM_CONDITIONAL(GUILE, /bin/false)
-else
-	guile_msg="no"
-
-	saved_ldflags="$LDFLAGS"
-	saved_cppflags="$CPPFLAGS"
-	LDFLAGS="$LDFLAGS $GNOME_LIBDIR"
-
-	AC_CHECK_LIB(qthreads,qt_null,[
-		QTTHREADS_LIB="-lqthreads"
-	],[
-		AC_CHECK_LIB(qt, qt_null, QTTHREADS_LIB="-lqt")
-	],$LIBS)
-	AC_SUBST(QTTHREADS_LIB)
-
-	AC_CHECK_LIB(termcap,main,TERMCAP_LIB="-ltermcap")
-	AC_CHECK_LIB(readline,main,READLINE_LIB="-lreadline",,$TERMCAP_LIB)
-
-	AC_SUBST(TERMCAP_LIB)
-	AC_SUBST(READLINE_LIB)
-
-	if test "x$cross_compiling" = "xyes" ; then
-	  name_build_guile="$target_alias-guile-config"
-	else
-	  name_build_guile="guile-config"
-	fi
-
-	AC_CHECK_PROG(BUILD_GUILE, $name_build_guile, yes, no)
-
-	if test "x$BUILD_GUILE" = "xyes"; then
-	    AC_MSG_CHECKING(whether $name_build_guile works)
-	    if test x`$name_build_guile --version >/dev/null 2>&1 || \
-		echo no` = xno; then
-		BUILD_GUILE=no
-	    fi
-	    AC_MSG_RESULT($BUILD_GUILE)
-	else
-
-	    if test "x$cross_compiling" = "xyes" ; then
-		name_build_guile="$target_alias-build-guile"
-	    else	
-		name_build_guile="build-guile"
-	    fi
-
-	    AC_CHECK_PROG(BUILD_GUILE, $name_build_guile, yes, no)
-
-	    if test "x$BUILD_GUILE" = "xyes"; then
-		AC_MSG_CHECKING(whether $name_build_guile works)
-		if test x`$name_build_guile --version >/dev/null 2>&1 || \
-	 	    echo no` = xno; then
-		    BUILD_GUILE=no
-		fi
-		AC_MSG_RESULT($BUILD_GUILE)
-	    fi
-	fi
-
-	AC_CHECK_LIB(m, sin)
-
-	if test "x$BUILD_GUILE" = "xyes"; then
-		AC_MSG_CHECKING(for guile libraries)
-		GUILE_LIBS="`$name_build_guile link`"
-		AC_MSG_RESULT($GUILE_LIBS)
-		AC_MSG_CHECKING(for guile headers)
-		GUILE_INCS="`$name_build_guile compile`"
-		AC_MSG_RESULT($GUILE_INCS)
-	else
-		GUILE_LIBS="$GNOME_LIBDIR"
-		GUILE_INCS="$GNOME_INCLUDEDIR"
-		AC_CHECK_LIB(rx, main, GUILE_LIBS="-lrx $GUILE_LIBS")
-		AC_CHECK_LIB(qt, qt_null, GUILE_LIBS="-lqt $GUILE_LIBS")
-		AC_CHECK_LIB(dl, dlopen, GUILE_LIBS="-ldl $GUILE_LIBS")
-		AC_CHECK_LIB(nsl, t_accept, GUILE_LIBS="$GUILE_LIBS -lnsl")
-		AC_CHECK_LIB(socket, socket, GUILE_LIBS="$GUILE_LIBS -lsocket")
-		GUILE_LIBS="-lguile $GUILE_LIBS $QTTHREADS_LIB $READLINE_LIB $TERMCAP_LIB"
-	fi
-
-	AC_SUBST(GUILE_LIBS)
-	AC_SUBST(GUILE_INCS)
-
-	saved_LIBS="$LIBS"
-	LIBS="$LIBS $GUILE_LIBS"
-	CPPFLAGS="$saved_cppflags $GUILE_INCS"
-
-	AC_MSG_CHECKING(whether guile works)
-	AC_TRY_LINK([
-		#include <libguile.h>
-		#include <guile/gh.h>
-	],[
-		gh_eval_str("(newline)");
-		scm_boot_guile(0,NULL,NULL,NULL);
-	],[
-		ac_cv_guile_found=yes
-		AC_DEFINE(HAVE_GUILE)
-	],[
-		ac_cv_guile_found=no
-	])
-	AC_MSG_RESULT($ac_cv_guile_found)
-
-	guile_msg=$ac_cv_guile_found
-
-	if test x$ac_cv_guile_found = xno ; then
-		if test x$1 = xfail ; then
-		  AC_MSG_ERROR(Can not find Guile on this system)
-		else
-		  AC_MSG_WARN(Can not find Guile on this system)
-		fi
-		ac_cv_guile_found=no
-		GUILE_LIBS= GUILE_INCS=
-	fi
-
-	LIBS="$saved_LIBS"
-	LDFLAGS="$saved_ldflags"
-	CPPFLAGS="$saved_cppflags"
-
-	AC_SUBST(GUILE_LIBS)
-	AM_CONDITIONAL(GUILE, test x$ac_cv_guile_found = xyes)
-fi
-])
diff --git a/autoconf/gnome-macros/gnome-libgtop-check.m4 b/autoconf/gnome-macros/gnome-libgtop-check.m4
deleted file mode 100644
index 1b4e174..0000000
--- a/autoconf/gnome-macros/gnome-libgtop-check.m4
+++ /dev/null
@@ -1,217 +0,0 @@
-dnl
-dnl LIBGTOP_CHECK_TYPE
-dnl
-dnl Improved version of AC_CHECK_TYPE which takes into account
-dnl that we need to #include some other header files on some
-dnl systems to get some types.
-
-dnl AC_LIBGTOP_CHECK_TYPE(TYPE, DEFAULT)
-AC_DEFUN([AC_LIBGTOP_CHECK_TYPE],
-[AC_REQUIRE([AC_HEADER_STDC])dnl
-AC_MSG_CHECKING(for $1)
-AC_CACHE_VAL(ac_cv_type_$1,
-[AC_EGREP_CPP(dnl
-changequote(<<,>>)dnl
-<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl
-changequote([,]), [#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-
-/* For Tru64 */
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
-AC_MSG_RESULT($ac_cv_type_$1)
-if test $ac_cv_type_$1 = no; then
-  AC_DEFINE($1, $2)
-fi
-])
-
-dnl
-dnl GNOME_LIBGTOP_TYPES
-dnl
-dnl some typechecks for libgtop.
-dnl
-
-AC_DEFUN([GNOME_LIBGTOP_TYPES],
-[
-	AC_CHECK_HEADERS(sys/bitypes.h)
-	AC_LIBGTOP_CHECK_TYPE(u_int64_t, unsigned long long int)
-	AC_LIBGTOP_CHECK_TYPE(int64_t, signed long long int)
-])
-
-dnl
-dnl GNOME_LIBGTOP_HOOK (minversion, script-if-libgtop-enabled, failflag)
-dnl
-dnl if failflag is "fail" then GNOME_LIBGTOP_HOOK will abort if LibGTop
-dnl is not found. 
-dnl
-
-AC_DEFUN([GNOME_LIBGTOP_HOOK],
-[	
-	AC_REQUIRE([GNOME_LIBGTOP_TYPES])
-
-	AC_SUBST(LIBGTOP_LIBDIR)
-	AC_SUBST(LIBGTOP_INCLUDEDIR)
-	AC_SUBST(LIBGTOP_EXTRA_LIBS)
-	AC_SUBST(LIBGTOP_LIBS)
-	AC_SUBST(LIBGTOP_INCS)
-	AC_SUBST(LIBGTOP_NAMES_LIBS)
-	AC_SUBST(LIBGTOP_NAMES_INCS)
-	AC_SUBST(LIBGTOP_MAJOR_VERSION)
-	AC_SUBST(LIBGTOP_MINOR_VERSION)
-	AC_SUBST(LIBGTOP_MICRO_VERSION)
-	AC_SUBST(LIBGTOP_VERSION)
-	AC_SUBST(LIBGTOP_VERSION_CODE)
-	AC_SUBST(LIBGTOP_SERVER_VERSION)
-	AC_SUBST(LIBGTOP_INTERFACE_AGE)
-	AC_SUBST(LIBGTOP_BINARY_AGE)
-	AC_SUBST(LIBGTOP_BINDIR)
-	AC_SUBST(LIBGTOP_SERVER)
-
-	dnl Get the cflags and libraries from the libgtop-config script
-	dnl
-	AC_ARG_WITH(libgtop,
-	[  --with-libgtop=PFX      Prefix where LIBGTOP is installed (optional)],
-	libgtop_config_prefix="$withval", libgtop_config_prefix="")
-	AC_ARG_WITH(libgtop-exec,
-	[  --with-libgtop-exec=PFX Exec prefix where LIBGTOP is installed (optional)],
-	libgtop_config_exec_prefix="$withval", libgtop_config_exec_prefix="")
-
-	if test x$libgtop_config_exec_prefix != x ; then
-	  libgtop_config_args="$libgtop_config_args --exec-prefix=$libgtop_config_exec_prefix"
-	  if test x${LIBGTOP_CONFIG+set} != xset ; then
-	    LIBGTOP_CONFIG=$libgtop_config_exec_prefix/bin/libgtop-config
-	  fi
-	fi
-	if test x$libgtop_config_prefix != x ; then
-	  libgtop_config_args="$libgtop_config_args --prefix=$libgtop_config_prefix"
-	  if test x${LIBGTOP_CONFIG+set} != xset ; then
-	    LIBGTOP_CONFIG=$libgtop_config_prefix/bin/libgtop-config
-	  fi
-	fi
-
-	AC_PATH_PROG(LIBGTOP_CONFIG, libgtop-config, no)
-	dnl IMPORTANT NOTICE:
-	dnl   If you increase this number here, this means that *ALL*
-	dnl   modules will require the new version, even if they explicitly
-	dnl   give a lower number in their `configure.in' !!!
-	real_min_libgtop_version=1.0.0
-	min_libgtop_version=ifelse([$1], ,$real_min_libgtop_version,$1)
-	dnl I know, the following code looks really ugly, but if you want
-	dnl to make changes, please test it with a brain-dead /bin/sh and
-	dnl with a brain-dead /bin/test (not all shells/tests support the
-	dnl `<' operator to compare strings, that's why I convert everything
-	dnl into numbers and test them).
-	min_libgtop_major=`echo $min_libgtop_version | \
-	  sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-	min_libgtop_minor=`echo $min_libgtop_version | \
-	  sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-	min_libgtop_micro=`echo $min_libgtop_version | \
-	  sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-	test x$min_libgtop_micro = x && min_libgtop_micro=0
-	real_min_libgtop_major=`echo $real_min_libgtop_version | \
-	  sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-	real_min_libgtop_minor=`echo $real_min_libgtop_version | \
-	  sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-	real_min_libgtop_micro=`echo $real_min_libgtop_version | \
-	  sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-	test x$real_min_libgtop_micro = x && real_min_libgtop_micro=0
-	dnl You cannot require a version less then $real_min_libgtop_version,
-	dnl so you don't need to update each `configure.in' when it's increased.
-	if test $real_min_libgtop_major -gt $min_libgtop_major ; then
-	  min_libgtop_major=$real_min_libgtop_major
-	  min_libgtop_minor=$real_min_libgtop_minor
-	  min_libgtop_micro=$real_min_libgtop_micro
-	elif test $real_min_libgtop_major = $min_libgtop_major ; then
-	  if test $real_min_libgtop_minor -gt $min_libgtop_minor ; then
-	    min_libgtop_minor=$real_min_libgtop_minor
-	    min_libgtop_micro=$real_min_libgtop_micro
-	  elif test $real_min_libgtop_minor = $min_libgtop_minor ; then
-	    if test $real_min_libgtop_micro -gt $min_libgtop_micro ; then
-	      min_libgtop_micro=$real_min_libgtop_micro
-	    fi
-	  fi
-	fi
-	min_libgtop_version="$min_libgtop_major.$min_libgtop_minor.$min_libgtop_micro"
-	AC_MSG_CHECKING(for libgtop - version >= $min_libgtop_version)
-	no_libgtop=""
-	if test "$LIBGTOP_CONFIG" = "no" ; then
-	  no_libgtop=yes
-	else
-	  configfile=`$LIBGTOP_CONFIG --config`
-	  libgtop_major_version=`$LIBGTOP_CONFIG --version | \
-	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-	  libgtop_minor_version=`$LIBGTOP_CONFIG --version | \
-	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-	  libgtop_micro_version=`$LIBGTOP_CONFIG --version | \
-	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-	  if test $libgtop_major_version != $min_libgtop_major ; then 
-	    no_libgtop=mismatch
-	  else 
- 	    test $libgtop_minor_version -lt $min_libgtop_minor && no_libgtop=yes
-	    if test $libgtop_minor_version = $min_libgtop_minor ; then
-	      test $libgtop_micro_version -lt $min_libgtop_micro && no_libgtop=yes
-	    fi
-	  fi
-	  . $configfile
-	fi
-	if test x$no_libgtop = x ; then
-	  AC_DEFINE(HAVE_LIBGTOP)
-	  AC_DEFINE_UNQUOTED(LIBGTOP_VERSION, "$LIBGTOP_VERSION")
-	  AC_DEFINE_UNQUOTED(LIBGTOP_VERSION_CODE, $LIBGTOP_VERSION_CODE)
-	  AC_DEFINE_UNQUOTED(LIBGTOP_MAJOR_VERSION, $LIBGTOP_MAJOR_VERSION)
-	  AC_DEFINE_UNQUOTED(LIBGTOP_MINOR_VERSION, $LIBGTOP_MINOR_VERSION)
-	  AC_DEFINE_UNQUOTED(LIBGTOP_MICRO_VERSION, $LIBGTOP_MICRO_VERSION)
-	  AC_DEFINE_UNQUOTED(LIBGTOP_SERVER_VERSION, $LIBGTOP_SERVER_VERSION)
-	  AC_MSG_RESULT(yes)
-	  dnl Note that an empty true branch is not valid sh syntax.
-	  ifelse([$2], [], :, [$2])
-	else
-	  AC_MSG_RESULT(no)
-	  if test "$no_libgtop"x = mismatchx; then
-	    AC_MSG_ERROR(LibGTop major version mismatch $libgtop_major_version != $min_libgtop_major)
-	  fi
-	  if test "x$3" = "xfail"; then
-	    AC_MSG_ERROR(LibGTop >= $min_libgtop_version not found)
-	  else
-	    AC_MSG_WARN(LibGTop >= $min_libgtop_version not found)
-	  fi
-	fi
-
-	AM_CONDITIONAL(HAVE_LIBGTOP, test x$no_libgtop != xyes)
-])
-
-AC_DEFUN([GNOME_INIT_LIBGTOP],[
-	GNOME_LIBGTOP_HOOK($1,[ifelse([$3], [], :, [$3])],$2)
-])
-
-dnl
-dnl GNOME_LIBGTOP_DOCU
-dnl
-dnl checks whether the documentation of LibGTop is installed
-dnl
-
-AC_DEFUN([GNOME_LIBGTOP_DOCU],
-[
-	AC_REQUIRE([GNOME_LIBGTOP_HOOK])
-
-	helpdir="$LIBGTOP_DATADIR/gnome/help/libgtop"
-
-	AC_MSG_CHECKING(whether you have the LibGTop Documentation)
-
-	if test -f "$helpdir/C/topic.dat" ; then
-	  have_libgtop_docu=yes
-	  AC_DEFINE(HAVE_LIBGTOP_DOCU)
-	else
-	  have_libgtop_docu=no
-	fi
-
-	AC_MSG_RESULT($have_libgtop_docu)
-
-	AM_CONDITIONAL(HAVE_LIBGTOP_DOCU, test x$have_libgtop_docu = xyes)
-])
-
diff --git a/autoconf/gnome-macros/gnome-objc-checks.m4 b/autoconf/gnome-macros/gnome-objc-checks.m4
deleted file mode 100644
index c69acb0..0000000
--- a/autoconf/gnome-macros/gnome-objc-checks.m4
+++ /dev/null
@@ -1,83 +0,0 @@
-AC_DEFUN([GNOME_CHECK_OBJC],
-[
-dnl Look for an ObjC compiler.
-dnl FIXME: extend list of possible names of ObjC compilers.
-  AC_CHECK_PROGS(OBJC, $OBJC egcs, "")
-  if test "x$OBJC" = "x" ; then
-    AC_CHECK_PROGS(OBJC, $OBJC egcc, "")
-    if test "x$OBJC" = "x" ; then
-      AC_CHECK_PROGS(OBJC, $OBJC gcc, "")
-    fi
-  fi
-
-  AC_REQUIRE([GNOME_PTHREAD_CHECK])
-
-  OBJC_LIBS="-lobjc $PTHREAD_LIB"
-  AC_CHECK_FUNC(sched_yield,,[
-    AC_CHECK_LIB(rt,sched_yield,
-      OBJC_LIBS="$OBJC_LIBS -lrt",[
-      AC_CHECK_LIB(posix4,sched_yield,
-        OBJC_LIBS="$OBJC_LIBS -lposix4",, 
-        $OBJC_LIBS)],
-      $OBJC_LIBS)])
-  AC_SUBST(OBJC_LIBS)
-
-  AC_CACHE_CHECK([if Objective C compiler ($OBJC) works],
-		 ac_cv_prog_objc_works, [
-    if test -n "$OBJC"; then
-      cat > conftest.m <<EOF
-#include <objc/Object.h>
- at interface myRandomObj : Object
-{
-}
- at end
- at implementation myRandomObj
- at end
-int main () {
-  /* No, you are not seeing double.  Remember that square brackets
-     are the autoconf m4 quotes.  */
-  id myid = [[myRandomObj alloc]];
-  [[myid free]];
-  return 0;
-}
-EOF
-
-      $OBJC $CFLAGS -o conftest $LDFLAGS conftest.m $OBJC_LIBS 1>&AC_FD_CC 2>&1
-      result=$?
-      rm -f conftest*
-
-      if test $result -eq 0; then
-        ac_cv_prog_objc_works=yes
-      fi
-    else
-      ac_cv_prog_objc_works=no
-    fi
-  ])
-
-  AM_CONDITIONAL(OBJECTIVE_C, test x$ac_cv_prog_objc_works = xyes)
-  dnl Also set the shell variable OBJECTIVE_C to "yes" or "no".
-  OBJECTIVE_C=$ac_cv_prog_objc_works
-])
-
-AC_DEFUN([GNOME_INIT_OBJC],
-[
-	AC_MSG_CHECKING(for an obGnomeConf.sh)
-	my_gnome_libdir=`$GNOME_CONFIG --libdir`
-	if test -f $my_gnome_libdir/obGnomeConf.sh; then
-	    . $my_gnome_libdir/obGnomeConf.sh
-	    AC_MSG_RESULT(found $my_gnome_libdir)
-	    ac_cv_have_gnome_objc=yes
-	else
-	    AC_MSG_RESULT(not found)
-	    AC_MSG_WARN(Could not find the obGnomeConf.sh file that is generated by gnome-objc install)
-	    ac_cv_have_gnome_objc=no
-	fi
-	
-	dnl Add a conditional on whether or not we have gnome-objc
-	AM_CONDITIONAL(HAVE_GNOME_OBJC, test x$ac_cv_have_gnome_objc = xyes)
-	HAVE_GNOME_OBJC=$ac_cv_have_gnome_objc
-
-	AC_SUBST(OBGNOME_INCLUDEDIR)
-	AC_SUBST(OBGNOME_LIBS)
-	AC_SUBST(OBGTK_LIBS)
-])
diff --git a/autoconf/gnome-macros/gnome-orbit-check.m4 b/autoconf/gnome-macros/gnome-orbit-check.m4
deleted file mode 100644
index 54bf33a..0000000
--- a/autoconf/gnome-macros/gnome-orbit-check.m4
+++ /dev/null
@@ -1,33 +0,0 @@
-dnl
-dnl GNOME_ORBIT_HOOK (script-if-orbit-found, failflag)
-dnl
-dnl if failflag is "failure" it aborts if orbit is not found.
-dnl
-
-AC_DEFUN([GNOME_ORBIT_HOOK],[
-	AC_PATH_PROG(ORBIT_CONFIG,orbit-config,no)
-	AC_PATH_PROG(ORBIT_IDL,orbit-idl,no)
-	AC_CACHE_CHECK([for working ORBit environment],gnome_cv_orbit_found,[
-		if test x$ORBIT_CONFIG = xno -o x$ORBIT_IDL = xno; then
-			gnome_cv_orbit_found=no
-		else
-			gnome_cv_orbit_found=yes
-		fi
-	])
-	AM_CONDITIONAL(HAVE_ORBIT, test x$gnome_cv_orbit_found = xyes)
-	if test x$gnome_cv_orbit_found = xyes; then
-		$1
-		ORBIT_CFLAGS=`orbit-config --cflags client server`
-		ORBIT_LIBS=`orbit-config --use-service=name --libs client server`
-		AC_SUBST(ORBIT_CFLAGS)
-		AC_SUBST(ORBIT_LIBS)
-	else
-    		if test x$2 = xfailure; then
-			AC_MSG_ERROR(ORBit not installed or installation problem)
-    		fi
-	fi
-])
-
-AC_DEFUN([GNOME_ORBIT_CHECK], [
-	GNOME_ORBIT_HOOK([],failure)
-])
diff --git a/autoconf/gnome-macros/gnome-print-check.m4 b/autoconf/gnome-macros/gnome-print-check.m4
deleted file mode 100644
index 968fcc0..0000000
--- a/autoconf/gnome-macros/gnome-print-check.m4
+++ /dev/null
@@ -1,63 +0,0 @@
-# Configure paths for GNOME-PRINT
-# Chris Lahey	99-2-5
-# stolen from Manish Singh again
-# stolen back from Frank Belew
-# stolen from Manish Singh
-# Shamelessly stolen from Owen Taylor
-
-dnl AM_PATH_GNOME_PRINT([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
-dnl Test for GNOME-PRINT, and define GNOME_PRINT_CFLAGS and GNOME_PRINT_LIBS
-dnl
-AC_DEFUN([AM_PATH_GNOME_PRINT],
-[
-  min_version=ifelse([$1],,0.21,$1)
-
-  gnome_print_ok=""
-
-  AC_PATH_PROG(GNOME_CONFIG, gnome-config, no)
-  if test "$GNOME_CONFIG" = "no" ; then
-    AC_MSG_RESULT(gnome-config is missing, check your gnome installation)
-  else
-    AC_MSG_CHECKING(for GNOME-PRINT - version >= $min_version)
-    if `$GNOME_CONFIG --libs print > /dev/null 2>&1`; then
-      rqmajor=`echo "$min_version" | sed -e 's/cvs-//' | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
-      rqminor=`echo "$min_version" | sed -e 's/cvs-//' | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
-      major=`$GNOME_CONFIG --modversion print | sed -e 's/gnome-print-//' | sed -e 's/cvs-//' | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
-      minor=`$GNOME_CONFIG --modversion print | sed -e 's/gnome-print-//' | sed -e 's/cvs-//' | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
-      if test "$major" -ge "$rqmajor"; then
-        if test "$major" -gt "$rqmajor"; then
-          AC_MSG_RESULT("found $major.$minor")
-          gnome_print_ok="yes"
-        else
-          if test "$minor" -ge "$rqminor"; then
-            AC_MSG_RESULT("found $major.$minor")
-            gnome_print_ok="yes"
-          else
-            AC_MSG_RESULT("you have $major.$minor")
-          fi
-        fi
-      else
-        AC_MSG_RESULT("you have $major.$minor")
-      fi
-    else
-      AC_MSG_RESULT("did not find any version")
-    fi
-  fi
-
-  if test "x$gnome_print_ok" != "x" ; then
-    GNOME_PRINT_CFLAGS=`$GNOME_CONFIG --cflags print`
-    GNOME_PRINT_LIBS=`$GNOME_CONFIG --libs print`
-    ifelse([$2], , :, [$2])
-  else
-     GNOME_PRINT_CFLAGS=""
-     GNOME_PRINT_LIBS=""
-     ifelse([$3], , :, [$3])
-  fi
-
-  AC_SUBST(GNOME_PRINT_CFLAGS)
-  AC_SUBST(GNOME_PRINT_LIBS)
-])
-
-AC_DEFUN([GNOME_PRINT_CHECK], [
-	AM_PATH_GNOME_PRINT($1,,[AC_MSG_ERROR(GNOME-PRINT not found or wrong version)])
-])
diff --git a/autoconf/gnome-macros/gnome-pthread-check.m4 b/autoconf/gnome-macros/gnome-pthread-check.m4
deleted file mode 100644
index 5a1afee..0000000
--- a/autoconf/gnome-macros/gnome-pthread-check.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-dnl
-dnl And better, use gthreads instead...
-dnl
-
-AC_DEFUN([GNOME_PTHREAD_CHECK],[
-	PTHREAD_LIB=""
-	AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
-		[AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
-		    [AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
-			[AC_CHECK_LIB(pthread, __pthread_attr_init_system, PTHREAD_LIB="-lpthread",
-				[AC_CHECK_FUNC(pthread_create)]
-			)]
-		    )]
-		)]
-	)
-	AC_SUBST(PTHREAD_LIB)
-	AC_PROVIDE([GNOME_PTHREAD_CHECK])
-])
diff --git a/autoconf/gnome-macros/gnome-support.m4 b/autoconf/gnome-macros/gnome-support.m4
deleted file mode 100644
index 2c1d049..0000000
--- a/autoconf/gnome-macros/gnome-support.m4
+++ /dev/null
@@ -1,68 +0,0 @@
-dnl GNOME_SUPPORT_CHECKS
-dnl    Check for various support functions needed by the standard
-dnl    Gnome libraries.  Sets LIBOBJS, might define some macros.
-dnl    This should only be used when building the Gnome libs; 
-dnl    Gnome clients should not need this macro.
-AC_DEFUN([GNOME_SUPPORT_CHECKS],[
-  # we need an `awk' to build `gnomesupport.h'
-  AC_REQUIRE([AC_PROG_AWK])
-
-  # this should go away soon
-  need_gnome_support=yes
-
-  save_LIBOBJS="$LIBOBJS"
-  LIBOBJS=
-
-  AC_CHECK_FUNCS(getopt_long,,LIBOBJS="$LIBOBJS getopt.o getopt1.o")
-
-  # for `scandir'
-  AC_HEADER_DIRENT
-
-  # copied from `configure.in' of `libiberty'
-  vars="program_invocation_short_name program_invocation_name sys_errlist"
-  for v in $vars; do
-    AC_MSG_CHECKING([for $v])
-    AC_CACHE_VAL(gnome_cv_var_$v,
-      [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;],
-		   [eval "gnome_cv_var_$v=yes"],
-		   [eval "gnome_cv_var_$v=no"])])
-    if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then
-      AC_MSG_RESULT(yes)
-      n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-      AC_DEFINE_UNQUOTED($n)
-    else
-      AC_MSG_RESULT(no)
-    fi
-  done
-
-  AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen)
-  AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf)
-
-  AC_CHECK_FUNCS(realpath,,LIBOBJS="$LIBOBJS canonicalize.o")
-
-  # to include `error.c' error.c has some HAVE_* checks
-  AC_CHECK_FUNCS(vprintf doprnt strerror_r)
-  AM_FUNC_ERROR_AT_LINE
-
-  # This is required if we declare setreuid () and setregid ().
-  AC_TYPE_UID_T
-
-  # see if we need to declare some functions.  Solaris is notorious for
-  # putting functions into the `libc' but not listing them in the headers
-  AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h)
-  GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize)
-  GCC_NEED_DECLARATION(scandir,[
-#ifdef HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-])
-
-  # Turn our LIBOBJS into libtool objects.  This is gross, but it
-  # requires changes to autoconf before it goes away.
-  LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'`
-  AC_SUBST(need_gnome_support)
-  AC_SUBST(LTLIBOBJS)
-
-  LIBOBJS="$save_LIBOBJS"
-  AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes)
-])
diff --git a/autoconf/gnome-macros/gnome-undelfs.m4 b/autoconf/gnome-macros/gnome-undelfs.m4
deleted file mode 100644
index fe031cd..0000000
--- a/autoconf/gnome-macros/gnome-undelfs.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-dnl GNOME_UNDELFS_CHECKS
-dnl    Check for ext2fs undel support.
-dnl    Set shell variable ext2fs_undel to "yes" if we have it,
-dnl    "no" otherwise.  May define USE_EXT2FSLIB for cpp.
-dnl    Will set EXT2FS_UNDEL_LIBS to required libraries.
-
-AC_DEFUN([GNOME_UNDELFS_CHECKS], [
-  ext2fs_undel=no
-  EXT2FS_UNDEL_LIBS=
-  AC_CHECK_HEADERS(linux/ext2_fs.h)
-  if test x$ac_cv_header_linux_ext2_fs_h = xyes
-  then
-    AC_CHECK_HEADERS(ext2fs/ext2fs.h, , , [#include <stdio.h>
-#include <linux/ext2_fs.h>])
-    if test x$ac_cv_header_ext2fs_ext2fs_h = xyes
-    then
-      AC_DEFINE(USE_EXT2FSLIB)
-      ext2fs_undel=yes
-      EXT2FS_UNDEL_LIBS="-lext2fs -lcom_err"
-    fi
-  fi
-])
diff --git a/autoconf/gnome-macros/gnome-vfs.m4 b/autoconf/gnome-macros/gnome-vfs.m4
deleted file mode 100644
index 6dce307..0000000
--- a/autoconf/gnome-macros/gnome-vfs.m4
+++ /dev/null
@@ -1,126 +0,0 @@
-dnl GNOME_VFS_CHECKS
-dnl   Check for various functions needed by libvfs.
-dnl   This has various effects:
-dnl     Sets GNOME_VFS_LIBS to libraries required
-dnl     Sets termnet  to true or false depending on whether it is required.
-dnl        If yes, defines USE_TERMNET.
-dnl     Sets vfs_flags to "pretty" list of vfs implementations we include.
-dnl     Sets shell variable use_vfs to yes (default, --with-vfs) or
-dnl        "no" (--without-vfs).
-dnl     Calls AC_SUBST(mcserv), which is either empty or "mcserv".
-
-dnl Private define
-AC_DEFUN([GNOME_WITH_VFS],[
-  dnl FIXME: network checks should probably be in their own macro.
-  AC_CHECK_LIB(nsl, t_accept)
-  AC_CHECK_LIB(socket, socket)
-
-  have_socket=no
-  AC_CHECK_FUNCS(socket, have_socket=yes)
-  if test $have_socket = no; then
-    # socket is not in the default libraries.  See if it's in some other.
-    for lib in bsd socket inet; do
-      AC_CHECK_LIB($lib, socket, [
-	  LIBS="$LIBS -l$lib"
-	  have_socket=yes
-	  AC_DEFINE(HAVE_SOCKET)
-	  break])
-    done
-  fi
-
-  have_gethostbyname=no
-  AC_CHECK_FUNC(gethostbyname, have_gethostbyname=yes)
-  if test $have_gethostbyname = no; then
-    # gethostbyname is not in the default libraries.  See if it's in some other.
-    for lib in bsd socket inet; do
-      AC_CHECK_LIB($lib, gethostbyname, [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break])
-    done
-  fi
-
-  vfs_flags="tarfs"
-  use_net_code=false
-  if test $have_socket = yes; then
-      AC_STRUCT_LINGER
-      AC_CHECK_FUNCS(pmap_set, , [
-	 AC_CHECK_LIB(rpc, pmap_set, [
-	   LIBS="-lrpc $LIBS"
-	  AC_DEFINE(HAVE_PMAP_SET)
-	  ])])
-      AC_CHECK_FUNCS(pmap_getport pmap_getmaps rresvport)
-      dnl add for source routing support setsockopt
-      AC_CHECK_HEADERS(rpc/pmap_clnt.h, , , [
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <rpc/rpc.h>
-#include <rpc/pmap_prot.h>
-					    ])
-      vfs_flags="$vfs_flags, mcfs, ftpfs, fish"
-      use_net_code=true
-  fi
-
-  dnl
-  dnl Samba support
-  dnl
-  smbfs=""
-  SAMBAFILES=""
-  AC_ARG_WITH(samba,
-  	  [--with-samba	            Support smb virtual file system],[
-  	  if test "x$withval" != "xno"; then
-  		  AC_DEFINE(WITH_SMBFS)
-	          vfs_flags="$vfs_flags, smbfs"
-		  smbfs="smbfs.o"
-		  SAMBAFILES="\$(SAMBAFILES)"
-  	  fi
-  ])
-  AC_SUBST(smbfs)
-  AC_SUBST(SAMBAFILES)
-  
-  dnl
-  dnl The termnet support
-  dnl
-  termnet=false
-  AC_ARG_WITH(termnet,
-	  [--with-termnet             If you want a termified net support],[
-	  if test x$withval = xyes; then
-		  AC_DEFINE(USE_TERMNET)
-		  termnet=true		
-	  fi
-  ])
-
-  TERMNET=""
-  AC_DEFINE(USE_VFS)
-  if $use_net_code; then
-     AC_DEFINE(USE_NETCODE)
-  fi
-  mcserv=
-  if test $have_socket = yes; then
-     mcserv="mcserv"
-     if $termnet; then
-	TERMNET="-ltermnet"
-     fi
-  fi
-
-  AC_SUBST(TERMNET)
-  AC_SUBST(mcserv)
-
-dnl FIXME:
-dnl GNOME_VFS_LIBS=
-
-])
-
-AC_DEFUN([GNOME_VFS_CHECKS],[
-	use_vfs=yes
-	AC_ARG_WITH(vfs,
-		[--with-vfs		   Compile with the VFS code],
-		use_vfs=$withval
-	)
-	case $use_vfs in
-		yes) 	GNOME_WITH_VFS;;
-		no) 	use_vfs=no;;
-		*)   	use_vfs=no;;
-			dnl Should we issue a warning?
-	esac
-])
-
-
diff --git a/autoconf/gnome-macros/gnome-x-checks.m4 b/autoconf/gnome-macros/gnome-x-checks.m4
deleted file mode 100644
index 1e397ef..0000000
--- a/autoconf/gnome-macros/gnome-x-checks.m4
+++ /dev/null
@@ -1,80 +0,0 @@
-dnl GNOME_X_CHECKS
-dnl
-dnl Basic X11 related checks for X11.  At the end, the following will be
-dnl defined/changed:
-dnl   GTK_{CFLAGS,LIBS}      From AM_PATH_GTK
-dnl   CPPFLAGS		     Will include $X_CFLAGS
-dnl   GNOME_HAVE_SM	     `true' or `false' depending on whether session
-dnl                          management is available.  It is available if
-dnl                          both -lSM and X11/SM/SMlib.h exist.  (Some
-dnl                          Solaris boxes have the library but not the header)
-dnl   XPM_LIBS               -lXpm if Xpm library is present, otherwise ""
-dnl
-dnl The following configure cache variables are defined (but not used):
-dnl   gnome_cv_passdown_{x_libs,X_LIBS,X_CFLAGS}
-dnl
-AC_DEFUN([GNOME_X_CHECKS],
-[
-	AM_PATH_GTK(1.2.0,,AC_MSG_ERROR(GTK not installed, or gtk-config not in path))
-	dnl Hope that GTK_CFLAGS have only -I and -D.  Otherwise, we could
-	dnl   test -z "$x_includes" || CPPFLAGS="$CPPFLAGS -I$x_includes"
-	dnl
-	dnl Use CPPFLAGS instead of CFLAGS because AC_CHECK_HEADERS uses
-	dnl CPPFLAGS, not CFLAGS
-        CPPFLAGS="$CPPFLAGS $GTK_CFLAGS"
-
-        saved_ldflags="$LDFLAGS"
-        LDFLAGS="$LDFLAGS $GTK_LIBS"
-
-	gnome_cv_passdown_x_libs="$GTK_LIBS"
-	gnome_cv_passdown_X_LIBS="$GTK_LIBS"
-	gnome_cv_passdown_X_CFLAGS="$GTK_CFLAGS"
-	gnome_cv_passdown_GTK_LIBS="$GTK_LIBS"
-
-        LDFLAGS="$saved_ldflags $GTK_LIBS"
-
-dnl We are requiring GTK >= 1.1.1, which means this will be fine anyhow.
-	USE_DEVGTK=true
-
-dnl	AC_MSG_CHECKING([whether to use features from (unstable) GTK+ 1.1.x])
-dnl	AC_EGREP_CPP(answer_affirmatively,
-dnl	[#include <gtk/gtkfeatures.h>
-dnl	#ifdef GTK_HAVE_FEATURES_1_1_0
-dnl	   answer_affirmatively
-dnl	#endif
-dnl	], dev_gtk=yes, dev_gtk=no)
-dnl	if test "$dev_gtk" = "yes"; then
-dnl	   USE_DEVGTK=true
-dnl	fi
-dnl	AC_MSG_RESULT("$dev_gtk")
-
-	GNOME_HAVE_SM=true
-	case "$GTK_LIBS" in
-	 *-lSM*)
-	    dnl Already found it.
-	    ;;
-	 *)
-	    dnl Assume that if we have -lSM then we also have -lICE.
-	    AC_CHECK_LIB(SM, SmcSaveYourselfDone,
-	        [GTK_LIBS="-lSM -lICE $GTK_LIBS"],GNOME_HAVE_SM=false,
-		$x_libs -lICE)
-	    ;;
-	esac
-
-	if test "$GNOME_HAVE_SM" = true; then
-	   AC_CHECK_HEADERS(X11/SM/SMlib.h,,GNOME_HAVE_SM=false)
-	fi
-
-	if test "$GNOME_HAVE_SM" = true; then
-	   AC_DEFINE(HAVE_LIBSM)
-	fi
-
-	XPM_LIBS=""
-	AC_CHECK_LIB(Xpm, XpmFreeXpmImage, [XPM_LIBS="-lXpm"], , $x_libs)
-	AC_SUBST(XPM_LIBS)
-
-	AC_REQUIRE([GNOME_PTHREAD_CHECK])
-        LDFLAGS="$saved_ldflags"
-
-	AC_PROVIDE([GNOME_X_CHECKS])
-])
diff --git a/autoconf/gnome-macros/gnome-xml-check.m4 b/autoconf/gnome-macros/gnome-xml-check.m4
deleted file mode 100644
index 1caad10..0000000
--- a/autoconf/gnome-macros/gnome-xml-check.m4
+++ /dev/null
@@ -1,32 +0,0 @@
-dnl
-dnl GNOME_XML_HOOK (script-if-xml-found, failflag)
-dnl
-dnl If failflag is "failure", script aborts due to lack of XML
-dnl 
-dnl Check for availability of the libxml library
-dnl the XML parser uses libz if available too
-dnl
-
-AC_DEFUN([GNOME_XML_HOOK],[
-	AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
-	if test "$GNOME_CONFIG" = no; then
-		if test x$2 = xfailure; then
-			AC_MSG_ERROR(Could not find gnome-config)
-		fi
-	fi
-	GNOME_XML_CFLAGS=`$GNOME_CONFIG --cflags xml`
-	AC_SUBST(GNOME_XML_CFLAGS)
-	AC_CHECK_LIB(xml, xmlNewDoc, [
-		$1
-		GNOME_XML_LIB=`$GNOME_CONFIG --libs xml`
-	], [
-		if test x$2 = xfailure; then 
-			AC_MSG_ERROR(Could not link sample xml program)
-		fi
-	], `$GNOME_CONFIG --libs xml`)
-	AC_SUBST(GNOME_XML_LIB)
-])
-
-AC_DEFUN([GNOME_XML_CHECK], [
-	GNOME_XML_HOOK([],failure)
-])
diff --git a/autoconf/gnome-macros/gnome.m4 b/autoconf/gnome-macros/gnome.m4
deleted file mode 100644
index 2d23de8..0000000
--- a/autoconf/gnome-macros/gnome.m4
+++ /dev/null
@@ -1,130 +0,0 @@
-dnl
-dnl GNOME_INIT_HOOK (script-if-gnome-enabled, [failflag], [additional-inits])
-dnl
-dnl if failflag is "fail" then GNOME_INIT_HOOK will abort if gnomeConf.sh
-dnl is not found. 
-dnl
-
-AC_DEFUN([GNOME_INIT_HOOK],[
-	AC_SUBST(GNOME_LIBS)
-	AC_SUBST(GNOMEUI_LIBS)
-	AC_SUBST(GNOMEGNORBA_LIBS)
-	AC_SUBST(GTKXMHTML_LIBS)
-	AC_SUBST(ZVT_LIBS)
-	AC_SUBST(GNOME_LIBDIR)
-	AC_SUBST(GNOME_INCLUDEDIR)
-
-	AC_ARG_WITH(gnome-includes,
-	[  --with-gnome-includes   Specify location of GNOME headers],[
-	CFLAGS="$CFLAGS -I$withval"
-	])
-	
-	AC_ARG_WITH(gnome-libs,
-	[  --with-gnome-libs       Specify location of GNOME libs],[
-	LDFLAGS="$LDFLAGS -L$withval"
-	gnome_prefix=$withval
-	])
-
-	AC_ARG_WITH(gnome,
-	[  --with-gnome            Specify prefix for GNOME files],
-		if test x$withval = xyes; then
-	    		want_gnome=yes
-	    		dnl Note that an empty true branch is not
-			dnl valid sh syntax.
-	    		ifelse([$1], [], :, [$1])
-        	else
-	    		if test "x$withval" = xno; then
-	        		want_gnome=no
-	    		else
-	        		want_gnome=yes
-	    			LDFLAGS="$LDFLAGS -L$withval/lib"
-	    			CFLAGS="$CFLAGS -I$withval/include"
-	    			gnome_prefix=$withval/lib
-	    		fi
-  		fi,
-		want_gnome=yes)
-
-	if test "x$want_gnome" = xyes; then
-
-	    AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
-	    if test "$GNOME_CONFIG" = "no"; then
-	      no_gnome_config="yes"
-	    else
-	      AC_MSG_CHECKING(if $GNOME_CONFIG works)
-	      if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
-	        AC_MSG_RESULT(yes)
-	        GNOME_GNORBA_HOOK([],$2)
-	        GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome`"
-	        GNOMEUI_LIBS="`$GNOME_CONFIG --libs-only-l gnomeui`"
-	        GNOMEGNORBA_LIBS="`$GNOME_CONFIG --libs-only-l gnorba gnomeui`"
-	        GTKXMHTML_LIBS="`$GNOME_CONFIG --libs-only-l gtkxmhtml`"
-		ZVT_LIBS="`$GNOME_CONFIG --libs-only-l zvt`"
-	        GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
-	        GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
-                $1
-	      else
-	        AC_MSG_RESULT(no)
-	        no_gnome_config="yes"
-              fi
-            fi
-
-	    if test x$exec_prefix = xNONE; then
-	        if test x$prefix = xNONE; then
-		    gnome_prefix=$ac_default_prefix/lib
-	        else
- 		    gnome_prefix=$prefix/lib
-	        fi
-	    else
-	        gnome_prefix=`eval echo \`echo $libdir\``
-	    fi
-	
-	    if test "$no_gnome_config" = "yes"; then
-              AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
-	      if test -f $gnome_prefix/gnomeConf.sh; then
-	        AC_MSG_RESULT(found)
-	        echo "loading gnome configuration from" \
-		     "$gnome_prefix/gnomeConf.sh"
-	        . $gnome_prefix/gnomeConf.sh
-	        $1
-	      else
-	        AC_MSG_RESULT(not found)
- 	        if test x$2 = xfail; then
-	          AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
- 	        fi
-	      fi
-            fi
-	fi
-
-	if test -n "$3"; then
-	  n="$3"
-	  for i in $n; do
-	    AC_MSG_CHECKING(extra library \"$i\")
-	    case $i in 
-	      applets)
-		AC_SUBST(GNOME_APPLETS_LIBS)
-		GNOME_APPLETS_LIBS=`$GNOME_CONFIG --libs-only-l applets`
-		AC_MSG_RESULT($GNOME_APPLETS_LIBS);;
-	      docklets)
-		AC_SUBST(GNOME_DOCKLETS_LIBS)
-		GNOME_DOCKLETS_LIBS=`$GNOME_CONFIG --libs-only-l docklets`
-		AC_MSG_RESULT($GNOME_DOCKLETS_LIBS);;
-	      capplet)
-		AC_SUBST(GNOME_CAPPLET_LIBS)
-		GNOME_CAPPLET_LIBS=`$GNOME_CONFIG --libs-only-l capplet`
-		AC_MSG_RESULT($GNOME_CAPPLET_LIBS);;
-	      *)
-		AC_MSG_RESULT(unknown library)
-	    esac
-            EXTRA_INCLUDEDIR=`$GNOME_CONFIG --cflags $i`
-            GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR $EXTRA_INCLUDEDIR"
-	  done
-	fi
-])
-
-dnl
-dnl GNOME_INIT ([additional-inits])
-dnl
-
-AC_DEFUN([GNOME_INIT],[
-	GNOME_INIT_HOOK([],fail,$1)
-])
diff --git a/autoconf/gnome-macros/gperf-check.m4 b/autoconf/gnome-macros/gperf-check.m4
deleted file mode 100644
index 3869459..0000000
--- a/autoconf/gnome-macros/gperf-check.m4
+++ /dev/null
@@ -1,79 +0,0 @@
-dnl
-dnl AC_PROG_GPERF (MINIMUM-VERSION)
-dnl
-dnl Check for availability of gperf.
-dnl Abort if not found or if current version is not up to par.
-dnl
-
-AC_DEFUN([AC_PROG_GPERF],[
-	AC_PATH_PROG(GPERF, gperf, no)
-	if test "$GPERF" = no; then
-		AC_MSG_ERROR(Could not find gperf)
-	fi
-	min_gperf_version=ifelse([$1], ,2.7,$1)
-	AC_MSG_CHECKING(for gperf - version >= $min_gperf_version)
-	gperf_major_version=`$GPERF --version | \
-		sed 's/GNU gperf \([[0-9]]*\).\([[0-9]]*\)/\1/'`
-	gperf_minor_version=`$GPERF --version | \
-		sed 's/GNU gperf \([[0-9]]*\).\([[0-9]]*\)/\2/'`
-	no_gperf=""
-dnl
-dnl Now check if the installed gperf is sufficiently new.
-dnl
-	AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static char*
-my_strdup (char *str)
-{
-  char *new_str;
-  
-  if (str)
-    {
-      new_str = malloc ((strlen (str) + 1) * sizeof(char));
-      strcpy (new_str, str);
-    }
-  else
-    new_str = NULL;
-  
-  return new_str;
-}
-
-int 
-main ()
-{
-  char  *tmp_version;
-  
-  int    major;
-  int    minor;
-
-  /* HP/UX 9 (%@#!) writes to sscanf strings */
-  tmp_version = my_strdup("$min_gperf_version");
-  if (sscanf(tmp_version, "%d.%d", &major, &minor) != 2) {
-    printf ("%s, bad version string\n", "$min_gperf_version");
-    return 1;
-  }
-
-  if (($gperf_major_version > major) ||
-      (($gperf_major_version == major) && ($gperf_minor_version >= minor))) {
-    return 0;
-  } else {
-    printf ("\n");
-    printf ("*** An old version of gperf ($gperf_major_version.$gperf_minor_version) was found.\n");
-    printf ("*** You need a version of gperf newer than %d.%d.%d.  The latest version of\n",
-	       major, minor);
-    printf ("*** gperf is always available from ftp://ftp.gnu.org.\n");
-    printf ("***\n");
-    return 1;
-  }
-}
-],,no_gperf=yes,[/bin/true])
-	if test "x$no_gperf" = x ; then
-		AC_MSG_RESULT(yes)
-	else
-		AC_MSG_RESULT(no)
-	fi
-
-])
diff --git a/autoconf/gnome-macros/linger.m4 b/autoconf/gnome-macros/linger.m4
deleted file mode 100644
index f1c7060..0000000
--- a/autoconf/gnome-macros/linger.m4
+++ /dev/null
@@ -1,28 +0,0 @@
-dnl
-dnl Check for struct linger
-dnl
-AC_DEFUN([AC_STRUCT_LINGER], [
-av_struct_linger=no
-AC_MSG_CHECKING(struct linger is available)
-AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/socket.h>
-
-struct linger li;
-
-int main ()
-{
-    li.l_onoff = 1;
-    li.l_linger = 120;
-    return 0;
-}
-],[
-AC_DEFINE(HAVE_STRUCT_LINGER)
-av_struct_linger=yes
-],[
-av_struct_linger=no
-],[
-av_struct_linger=no
-])
-AC_MSG_RESULT($av_struct_linger)
-])
diff --git a/autoconf/gnome-macros/need-declaration.m4 b/autoconf/gnome-macros/need-declaration.m4
deleted file mode 100644
index 8a217b8..0000000
--- a/autoconf/gnome-macros/need-declaration.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-dnl See whether we need a declaration for a function.
-dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES])
-AC_DEFUN([GCC_NEED_DECLARATION],
-[AC_MSG_CHECKING([whether $1 must be declared])
-AC_CACHE_VAL(gcc_cv_decl_needed_$1,
-[AC_TRY_COMPILE([
-#include <stdio.h>
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-$2],
-[char *(*pfn) = (char *(*)) $1],
-eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")])
-if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then
-  AC_MSG_RESULT(yes)
-  gcc_need_declarations="$gcc_need_declarations $1"
-  gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  AC_DEFINE_UNQUOTED($gcc_tr_decl)
-else
-  AC_MSG_RESULT(no)
-fi
-])dnl
-
-dnl Check multiple functions to see whether each needs a declaration.
-dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES])
-AC_DEFUN([GCC_NEED_DECLARATIONS],
-[for ac_func in $1
-do
-GCC_NEED_DECLARATION($ac_func, $2)
-done
-]
-)
diff --git a/autoconf/install-sh b/autoconf/install-sh
index 6781b98..377bb86 100755
--- a/autoconf/install-sh
+++ b/autoconf/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-11-20.07; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,7 +35,7 @@ scriptversion=2009-04-28.21; # UTC
 # FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
@@ -156,6 +156,10 @@ while test $# -ne 0; do
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
+	# Protect names problematic for 'test' and other utilities.
+	case $dst_arg in
+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
+	esac
 	shift;;
 
     -T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
   done
 fi
 
@@ -194,13 +202,17 @@ if test $# -eq 0; then
     echo "$0: no input file specified." >&2
     exit 1
   fi
-  # It's OK to call `install-sh -d' without argument.
+  # It's OK to call 'install-sh -d' without argument.
   # This can happen when creating conditional directories.
   exit 0
 fi
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@ fi
 
 for src
 do
-  # Protect names starting with `-'.
+  # Protect names problematic for 'test' and other utilities.
   case $src in
-    -*) src=./$src;;
+    -* | [=\(\)!]) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@ do
       echo "$0: no destination specified." >&2
       exit 1
     fi
-
     dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
 
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
@@ -347,7 +354,7 @@ do
 	      if test -z "$dir_arg" || {
 		   # Check for POSIX incompatibilities with -m.
 		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writeable bit of parent directory when it shouldn't.
+		   # other-writable bit of parent directory when it shouldn't.
 		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
 		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
 		   case $ls_ld_tmpdir in
@@ -385,7 +392,7 @@ do
 
       case $dstdir in
 	/*) prefix='/';;
-	-*) prefix='./';;
+	[-=\(\)!]*) prefix='./';;
 	*)  prefix='';;
       esac
 
@@ -403,7 +410,7 @@ do
 
       for d
       do
-	test -z "$d" && continue
+	test X"$d" = X && continue
 
 	prefix=$prefix$d
 	if test -d "$prefix"; then
diff --git a/autoconf/libtool/libtool.m4 b/autoconf/libtool/libtool.m4
index d812584..d7c043f 100644
--- a/autoconf/libtool/libtool.m4
+++ b/autoconf/libtool/libtool.m4
@@ -1,8 +1,8 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -11,8 +11,8 @@
 
 m4_define([_LT_COPYING], [dnl
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -146,6 +146,8 @@ AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
 
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
 _LT_DECL([], [host_alias], [0], [The host system])dnl
 _LT_DECL([], [host], [0])dnl
 _LT_DECL([], [host_os], [0])dnl
@@ -637,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
 configured by $[0], generated by m4_PACKAGE_STRING.
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
@@ -801,6 +803,7 @@ AC_DEFUN([LT_LANG],
 m4_case([$1],
   [C],			[_LT_LANG(C)],
   [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
   [Java],		[_LT_LANG(GCJ)],
   [Fortran 77],		[_LT_LANG(F77)],
   [Fortran],		[_LT_LANG(FC)],
@@ -822,6 +825,31 @@ m4_defun([_LT_LANG],
 ])# _LT_LANG
 
 
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
 # _LT_LANG_DEFAULT_CONFIG
 # -----------------------
 m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -852,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
        m4_ifdef([LT_PROG_GCJ],
 	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
 
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
 AC_PROVIDE_IFELSE([LT_PROG_RC],
   [LT_LANG(RC)],
   [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -954,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -962,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	rm -rf libconftest.dylib*
 	rm -f conftest.*
       fi])
+
     AC_CACHE_CHECK([for -exported_symbols_list linker flag],
       [lt_cv_ld_exported_symbols_list],
       [lt_cv_ld_exported_symbols_list=no
@@ -973,6 +1012,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	[lt_cv_ld_exported_symbols_list=no])
 	LDFLAGS="$save_LDFLAGS"
     ])
+
     AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
       [lt_cv_ld_force_load=no
       cat > conftest.c << _LT_EOF
@@ -990,7 +1030,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1035,8 +1077,8 @@ _LT_EOF
 ])
 
 
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
 # Checks for linker and compiler features on darwin
 m4_defun([_LT_DARWIN_LINKER_FEATURES],
 [
@@ -1047,6 +1089,8 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
   else
     _LT_TAGVAR(whole_archive_flag_spec, $1)=''
   fi
@@ -1268,7 +1312,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -1280,9 +1324,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*)
+	    LD="${LD-ld} -m elf32lppclinux"
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64-*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -1301,7 +1355,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -1330,14 +1387,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD="${LD-ld} -64"
@@ -1414,13 +1484,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -1600,6 +1670,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -1626,7 +1701,8 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
@@ -1639,7 +1715,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
@@ -2185,7 +2261,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -2194,7 +2270,7 @@ aix3*)
   ;;
 
 aix[[4-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -2259,7 +2335,7 @@ beos*)
   ;;
 
 bsdi[[45]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -2398,7 +2474,7 @@ m4_if([$1], [],[
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -2406,10 +2482,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -2417,7 +2489,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
+    freebsd[[23]].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -2435,7 +2507,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -2454,18 +2526,8 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -2526,7 +2588,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[[3-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -2542,7 +2604,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -2579,9 +2641,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2625,6 +2687,18 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -2644,7 +2718,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -2713,7 +2787,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2738,7 +2812,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -2762,7 +2836,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -2793,7 +2867,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2803,7 +2877,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -3184,10 +3258,6 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -3225,12 +3295,12 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
   else
@@ -3645,6 +3715,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -3977,7 +4048,7 @@ m4_if([$1], [CXX], [
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -4041,7 +4112,7 @@ m4_if([$1], [CXX], [
 	    ;;
 	esac
 	;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
 	;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -4229,7 +4300,9 @@ m4_if([$1], [CXX], [
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
       ;;
     esac
   else
@@ -4274,7 +4347,7 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -4321,18 +4394,33 @@ m4_if([$1], [CXX], [
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	  ;;
+        *Intel*\ [[CF]]*Compiler*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	  ;;
+	*Portland\ Group*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -4492,13 +4580,18 @@ m4_if([$1], [CXX], [
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*) ;;
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
     *)
       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
       _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   *)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -4517,7 +4610,6 @@ m4_if([$1], [CXX], [
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_direct_absolute, $1)=no
   _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
   _LT_TAGVAR(hardcode_libdir_separator, $1)=
   _LT_TAGVAR(hardcode_minus_L, $1)=no
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -4562,6 +4654,9 @@ dnl Note also adjust exclude_expsyms for C++ above.
   openbsd*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   esac
 
   _LT_TAGVAR(ld_shlibs, $1)=yes
@@ -4768,8 +4863,7 @@ _LT_EOF
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
 	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
@@ -4784,7 +4878,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -4961,6 +5055,7 @@ _LT_EOF
 	if test "$aix_use_runtimelinking" = yes; then
 	  shared_flag="$shared_flag "'${wl}-G'
 	fi
+	_LT_TAGVAR(link_all_deplibs, $1)=no
       else
 	# not using gcc
 	if test "$host_cpu" = ia64; then
@@ -5064,6 +5159,7 @@ _LT_EOF
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
 	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
@@ -5110,10 +5206,6 @@ _LT_EOF
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -5126,7 +5218,7 @@ _LT_EOF
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5165,7 +5257,6 @@ _LT_EOF
       fi
       if test "$with_gnu_ld" = no; then
 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
 	_LT_TAGVAR(hardcode_direct, $1)=yes
 	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
@@ -5269,7 +5360,7 @@ _LT_EOF
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -5607,9 +5698,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
 _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
     [Flag to hardcode $libdir into a binary during linking.
     This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
@@ -5767,7 +5855,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -6137,7 +6224,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         esac
         ;;
 
-      freebsd[[12]]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
 	# switch to ELF
         _LT_TAGVAR(ld_shlibs, $1)=no
@@ -6153,9 +6240,6 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(ld_shlibs, $1)=yes
         ;;
 
-      gnu*)
-        ;;
-
       haiku*)
         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
@@ -6317,7 +6401,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -6898,12 +6982,18 @@ public class foo {
   }
 };
 _LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
 ])
 
 _lt_libdeps_save_CFLAGS=$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
 
 dnl Parse the compiler output and extract the necessary
@@ -7100,7 +7190,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7233,7 +7322,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7420,6 +7508,77 @@ CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_GCJ_CONFIG
 
 
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
 # _LT_LANG_RC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
@@ -7489,6 +7648,13 @@ dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
 
 
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
 # LT_PROG_RC
 # ----------
 AC_DEFUN([LT_PROG_RC],
diff --git a/autoconf/libtool/ltdl.m4 b/autoconf/libtool/ltdl.m4
index 42e07e9..1ef84a5 100644
--- a/autoconf/libtool/ltdl.m4
+++ b/autoconf/libtool/ltdl.m4
@@ -1,6 +1,6 @@
 # ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*-
 #
-#   Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc.
+#   Copyright (C) 1999-2006, 2007, 2008, 2011 Free Software Foundation, Inc.
 #   Written by Thomas Tanner, 1999
 #
 # This file is free software; the Free Software Foundation gives
@@ -493,7 +493,7 @@ AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
     # at 6.2 and later dlopen does load deplibs.
     lt_cv_sys_dlopen_deplibs=yes
     ;;
-  netbsd*)
+  netbsd* | netbsdelf*-gnu)
     lt_cv_sys_dlopen_deplibs=yes
     ;;
   openbsd*)
@@ -553,12 +553,19 @@ AC_CACHE_CHECK([which extension is used for runtime loadable modules],
 [
 module=yes
 eval libltdl_cv_shlibext=$shrext_cmds
+module=no
+eval libltdl_cv_shrext=$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
+if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_SHARED_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
+    [Define to the shared library suffix, say, ".dylib".])
+fi
 ])# LT_SYS_MODULE_EXT
 
 # Old name:
diff --git a/autoconf/libtool/ltoptions.m4 b/autoconf/libtool/ltoptions.m4
index 17cfd51..5d9acd8 100644
--- a/autoconf/libtool/ltoptions.m4
+++ b/autoconf/libtool/ltoptions.m4
@@ -326,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
 # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
 	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS="$lt_save_ifs"
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
     [pic_mode=default])
 
 test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
diff --git a/autoconf/libtool/ltversion.m4 b/autoconf/libtool/ltversion.m4
index 9c7b5d4..07a8602 100644
--- a/autoconf/libtool/ltversion.m4
+++ b/autoconf/libtool/ltversion.m4
@@ -9,15 +9,15 @@
 
 # @configure_input@
 
-# serial 3293 ltversion.m4
+# serial 3337 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.4])
-m4_define([LT_PACKAGE_REVISION], [1.3293])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4'
-macro_revision='1.3293'
+[macro_version='2.4.2'
+macro_revision='1.3337'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/autoconf/ltmain.sh b/autoconf/ltmain.sh
index 5ddcc79..a356aca 100644
--- a/autoconf/ltmain.sh
+++ b/autoconf/ltmain.sh
@@ -1,9 +1,9 @@
 
-# libtool (GNU libtool) 2.4
+# libtool (GNU libtool) 2.4.2
 # Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
@@ -41,6 +41,7 @@
 #       --quiet, --silent    don't print informational messages
 #       --no-quiet, --no-silent
 #                            print informational messages (default)
+#       --no-warn            don't display warning messages
 #       --tag=TAG            use configuration variables from tag TAG
 #   -v, --verbose            print more informational messages than default
 #       --no-verbose         don't print the extra informational messages
@@ -69,7 +70,7 @@
 #         compiler:		$LTCC
 #         compiler flags:		$LTCFLAGS
 #         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4
+#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
 #         automake:	$automake_version
 #         autoconf:	$autoconf_version
 #
@@ -79,9 +80,9 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.4
+VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
 TIMESTAMP=""
-package_revision=1.3293
+package_revision=1.3337
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -136,15 +137,10 @@ progpath="$0"
 
 : ${CP="cp -f"}
 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="grep -E"}
-: ${FGREP="grep -F"}
-: ${GREP="grep"}
-: ${LN_S="ln -s"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="sed"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
@@ -387,7 +383,7 @@ case $progpath in
      ;;
   *)
      save_IFS="$IFS"
-     IFS=:
+     IFS=${PATH_SEPARATOR-:}
      for progdir in $PATH; do
        IFS="$save_IFS"
        test -x "$progdir/$progname" && break
@@ -771,8 +767,8 @@ func_help ()
 	s*\$LTCFLAGS*'"$LTCFLAGS"'*
 	s*\$LD*'"$LD"'*
 	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
 	p
 	d
      }
@@ -1052,6 +1048,7 @@ opt_finish=false
 opt_help=false
 opt_help_all=false
 opt_silent=:
+opt_warning=:
 opt_verbose=:
 opt_silent=false
 opt_verbose=false
@@ -1120,6 +1117,10 @@ esac
 			opt_silent=false
 func_append preserve_args " $opt"
 			;;
+      --no-warning|--no-warn)
+			opt_warning=false
+func_append preserve_args " $opt"
+			;;
       --no-verbose)
 			opt_verbose=false
 func_append preserve_args " $opt"
@@ -2059,7 +2060,7 @@ func_mode_compile ()
     *.[cCFSifmso] | \
     *.ada | *.adb | *.ads | *.asm | \
     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
       func_xform "$libobj"
       libobj=$func_xform_result
       ;;
@@ -2428,7 +2429,6 @@ The following components of LINK-COMMAND are treated specially:
   -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
   -shared           only do dynamic linking of libtool libraries
   -shrext SUFFIX    override the standard shared library file extension
-  -soname SONAME    override the standard shared object name
   -static           do not do any dynamic linking of uninstalled libtool libraries
   -static-libtool-libs
                     do not do any dynamic linking of libtool libraries
@@ -3202,11 +3202,13 @@ func_mode_install ()
 
       # Set up the ranlib parameters.
       oldlib="$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
 
       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
 
       if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
       fi
 
       # Do each command in the postinstall commands.
@@ -3471,7 +3473,7 @@ static const void *lt_preloaded_setup() {
 	  # linked before any other PIC object.  But we must not use
 	  # pic_flag when linking with -static.  The problem exists in
 	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
 	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
 	  *-*-hpux*)
 	    pic_flag_for_symtable=" $pic_flag"  ;;
@@ -3983,14 +3985,17 @@ func_exec_program_core ()
 # launches target application with the remaining arguments.
 func_exec_program ()
 {
-  for lt_wr_arg
-  do
-    case \$lt_wr_arg in
-    --lt-*) ;;
-    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-    esac
-    shift
-  done
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
   func_exec_program_core \${1+\"\$@\"}
 }
 
@@ -5058,9 +5063,15 @@ void lt_dump_script (FILE* f)
 {
 EOF
 	    func_emit_wrapper yes |
-              $SED -e 's/\([\\"]\)/\\\1/g' \
-	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
-
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
             cat <<"EOF"
 }
 EOF
@@ -5423,11 +5434,6 @@ func_mode_link ()
 	  prev=
 	  continue
 	  ;;
-        soname)
-	  soname_spec="$arg"
-	  prev=
-	  continue
-	  ;;
 	weak)
 	  func_append weak_libs " $arg"
 	  prev=
@@ -5649,7 +5655,8 @@ func_mode_link ()
 	continue
 	;;
 
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
 	func_append compiler_flags " $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
@@ -5747,11 +5754,6 @@ func_mode_link ()
 	continue
 	;;
 
-      -soname)
-	prev=soname
-	continue
-	;;
-
       -static | -static-libtool-libs)
 	# The effects of -static are defined in a previous loop.
 	# We used to do the same as -all-static on platforms that
@@ -6122,7 +6124,10 @@ func_mode_link ()
 	case $pass in
 	dlopen) libs="$dlfiles" ;;
 	dlpreopen) libs="$dlprefiles" ;;
-	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	link)
+	  libs="$deplibs %DEPLIBS%"
+	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+	  ;;
 	esac
       fi
       if test "$linkmode,$pass" = "lib,dlpreopen"; then
@@ -6158,7 +6163,8 @@ func_mode_link ()
 	lib=
 	found=no
 	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
 	  if test "$linkmode,$pass" = "prog,link"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
@@ -6441,19 +6447,19 @@ func_mode_link ()
 	    # It is a libtool convenience library, so add in its objects.
 	    func_append convenience " $ladir/$objdir/$old_library"
 	    func_append old_convenience " $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+	      if $opt_preserve_dup_deps ; then
+		case "$tmp_libs " in
+		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+		esac
+	      fi
+	      func_append tmp_libs " $deplib"
+	    done
 	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
 	    func_fatal_error "\`$lib' is not a convenience library"
 	  fi
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    deplibs="$deplib $deplibs"
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-	      esac
-	    fi
-	    func_append tmp_libs " $deplib"
-	  done
 	  continue
 	fi # $pass = conv
 
@@ -6842,7 +6848,7 @@ func_mode_link ()
 	         test "$hardcode_direct_absolute" = no; then
 		add="$dir/$linklib"
 	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$dir"
+		add_dir="-L$absdir"
 		# Try looking first in the location we're being installed to.
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
@@ -7327,6 +7333,7 @@ func_mode_link ()
 	  # which has an extra 1 added just for fun
 	  #
 	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
 	  darwin|linux|osf|windows|none)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
@@ -7345,6 +7352,9 @@ func_mode_link ()
 	    revision="$number_minor"
 	    lt_irix_increment=no
 	    ;;
+	  *)
+	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+	    ;;
 	  esac
 	  ;;
 	no)
@@ -7443,7 +7453,7 @@ func_mode_link ()
 	  versuffix="$major.$revision"
 	  ;;
 
-	linux)
+	linux) # correct to gnu/linux during the next big refactor
 	  func_arith $current - $age
 	  major=.$func_arith_result
 	  versuffix="$major.$age.$revision"
@@ -8031,6 +8041,11 @@ EOF
 
       # Test again, we may have decided not to build it any more
       if test "$build_libtool_libs" = yes; then
+	# Remove ${wl} instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
 	if test "$hardcode_into_libs" = yes; then
 	  # Hardcode the library paths
 	  hardcode_libdirs=
@@ -8061,7 +8076,7 @@ EOF
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) func_apped perm_rpath " $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
@@ -8069,11 +8084,7 @@ EOF
 	  if test -n "$hardcode_libdir_separator" &&
 	     test -n "$hardcode_libdirs"; then
 	    libdir="$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
 	  fi
 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
 	    # We should set the runpath_var.
@@ -9163,6 +9174,8 @@ EOF
 	    esac
 	  done
 	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=$func_to_tool_file_result
 	eval cmds=\"$old_archive_cmds\"
 
 	func_len " $cmds"
@@ -9272,7 +9285,8 @@ EOF
 	      *.la)
 		func_basename "$deplib"
 		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		func_resolve_sysroot "$deplib"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
 		test -z "$libdir" && \
 		  func_fatal_error "\`$deplib' is not a valid libtool archive"
 		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
diff --git a/autoconf/who_and_what_of_libtool_patch b/autoconf/who_and_what_of_libtool_patch
index 3156f59..70eff1e 100644
--- a/autoconf/who_and_what_of_libtool_patch
+++ b/autoconf/who_and_what_of_libtool_patch
@@ -111,9 +111,6 @@ Small walk trough of libtool patch (what in there ...)
       - libtool-install and libtool-uninstall target only called when libtool is used
       - install include files when using libtool
 
-- src/gnome2-console/Makefile.in
-   - added support for libtool
-
 - src/lib/Makefile.in
    - added support for libtool
       - use dynamic generation of names of object files
@@ -164,16 +161,6 @@ Small walk trough of libtool patch (what in there ...)
       - updated to use libtool when defined and have depend on correct archive type
       - extra libtool-clean target only called when libtool is used
 
-- src/tray-monitor/Makefile.in
-   - added support for libtool
-      - updated to use libtool when defined and have depend on correct archive type
-      - extra libtool-clean target only called when libtool is used
-
-- src/wx-console/Makefile.in
-   - added support for libtool
-      - updated to use libtool when defined and have depend on correct archive type
-      - extra libtool-clean target only called when libtool is used
-
 Todo:
 
 - check if install of libs and includes also goes nicely when you don't do things like --prefix=/opt/ELMbacula
diff --git a/code-changes b/code-changes
deleted file mode 100755
index ebc7843..0000000
--- a/code-changes
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-git diff Release-5.0.3..Branch-5.2  -- | grep '[+-]' | wc -l
diff --git a/configure b/configure
index 21b2a51..3a80aab 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.12.
+# Generated by GNU Autoconf 2.68 for bacula 7.0.2.
 #
 #
 # 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.12'
-PACKAGE_STRING='bacula 5.2.12'
+PACKAGE_VERSION='7.0.2'
+PACKAGE_STRING='bacula 7.0.2'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -615,7 +615,6 @@ COMPRESS_MANPAGES
 DISTVER
 DISTNAME
 MACOSX
-WIN32
 PSCMD
 TAPEDRIVE
 SYSTEMD_UNITDIR
@@ -628,9 +627,10 @@ DINCLUDE
 DEBUG
 FDLIBS
 CAP_LIBS
+LZO_LIBS
+LZO_INC
 AFS_LIBS
 AFS_CFLAGS
-LZOLIBS
 ZLIBS
 LIBOBJS
 X_EXTRA_LIBS
@@ -689,8 +689,6 @@ archivedir
 working_dir
 OPENSSL_INC
 OPENSSL_LIBS
-PYTHON_INCDIR
-PYTHON_LIBS
 READLINE_SRC
 CONS_LDFLAGS
 CONS_LIBS
@@ -701,19 +699,11 @@ STORED_DIR
 DIR_TOOLS
 DIRD_DIR
 ALL_DIRS
-STATIC_WX_CONS
-STATIC_GNOME_CONS
 STATIC_CONS
 STATIC_DIR
 STATIC_SD
 STATIC_FD
 TTOOL_LDFLAGS
-TRAY_MONITOR_DIR
-TRAY_MONITOR_LDFLAGS
-TRAY_MONITOR_CPPFLAGS
-WX_DIR
-WXCONS_LDFLAGS
-WXCONS_CPPFLAGS
 QWT
 QWT_LIB
 QWT_LDFLAGS
@@ -827,8 +817,6 @@ ARFLAGS
 AWK
 PIDOF
 CDRECORD
-WXFLAGS
-WXCONFIG
 GMAKE
 QMAKE
 PKGCONFIG
@@ -867,9 +855,11 @@ CC
 LIBBACFIND_LT_RELEASE
 LIBBACCATS_LT_RELEASE
 LIBBACSQL_LT_RELEASE
-LIBBACPY_LT_RELEASE
 LIBBACCFG_LT_RELEASE
 LIBBAC_LT_RELEASE
+BQT4_VERSION
+DEPKGS_VERSION
+DEPKGS_QT_VERSION
 BDB_VERSION
 post_host
 BACULA
@@ -878,9 +868,6 @@ DATE
 VERSION
 FALSEPRG
 TRUEPRG
-WIN32TOPDIR
-WIN32MAINDIR
-WIN32BUILDDIR
 TOP_DIR
 BUILD_DIR
 target_alias
@@ -938,10 +925,7 @@ enable_rpath
 with_libiconv_prefix
 with_libintl_prefix
 with_included_gettext
-enable_gnome
 enable_bat
-enable_bwx_console
-enable_tray_monitor
 enable_smartalloc
 enable_lockmgr
 enable_static_tools
@@ -956,7 +940,6 @@ enable_conio
 enable_ipv6
 enable_readline
 with_readline
-with_python
 with_tcp_wrappers
 with_openssl
 with_working_dir
@@ -999,6 +982,8 @@ enable_largefile
 with_x
 enable_afs
 with_afsdir
+enable_lzo
+with_lzo
 enable_acl
 enable_xattr
 with_systemd
@@ -1015,8 +1000,6 @@ CXX
 CXXFLAGS
 CCC
 CPP
-WXCONFIG
-WXFLAGS
 CXXCPP
 XMKMF'
 
@@ -1561,7 +1544,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.12 to adapt to many kinds of systems.
+\`configure' configures bacula 7.0.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1630,7 +1613,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of bacula 5.2.12:";;
+     short | recursive ) echo "Configuration of bacula 7.0.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1647,11 +1630,7 @@ Optional Features:
   --enable-includes       enable installing of include files [default=no]
   --disable-nls           do not use Native Language Support
   --disable-rpath         do not hardcode runtime library paths
-  --enable-gnome          enable build of bgnome-console GUI [default=no]
   --enable-bat            enable build of bat Qt4 GUI [default=no]
-  --enable-bwx-console    enable build of wxWidgets console [default=no]
-  --enable-tray-monitor   enable build of Gnome tray monitor (compatible with
-                          KDE [default=no]
   --enable-smartalloc     enable smartalloc debugging support [default=no]
   --enable-lockmgr        enable lock manager support [default=no]
   --enable-static-tools   enable static tape tools [default=no]
@@ -1669,13 +1648,14 @@ Optional Features:
   --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-lzo           disable lzo support [default=yes]
   --disable-acl           disable acl support [default=auto]
   --disable-xattr         disable xattr support [default=auto]
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic              try to use only PIC/non-PIC objects [default=use
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                           both]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-sysroot=DIR Search for dependent libraries within DIR
@@ -1687,9 +1667,6 @@ Optional Packages:
   --without-libintl-prefix     don't search for libintl in includedir and libdir
   --with-included-gettext use the GNU gettext library included here
   --with-readline[=DIR]   specify readline library directory
-  --with-python[=DIR]     Include Python support. DIR is the Python base
-                          install directory, default is to search through a
-                          number of common places for the Python files.
   --with-tcp-wrappers[=DIR]
                           enable tcpwrappers support
   --with-openssl[=DIR]    Include OpenSSL support. DIR is the OpenSSL base
@@ -1745,6 +1722,7 @@ Optional Packages:
                           number of common places for the SQLite3 files.
   --with-x                use the X Window System
   --with-afsdir[=DIR]     Directory holding AFS includes/libs
+  --with-lzo[=DIR]        specify lzo library directory
   --with-systemd[=UNITDIR]
                           Include systemd support. UNITDIR is where systemd
                           system .service files are located, default is to ask
@@ -1761,9 +1739,6 @@ Some influential environment variables:
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
   CPP         C preprocessor
-  WXCONFIG    wx-config command. On some systems, you must set it to
-              wx-config-2.6 to use wxWidgets 2.6.
-  WXFLAGS     Parameters to pass to wx-config (e.g. --unicode=no).
   CXXCPP      C++ preprocessor
   XMKMF       Path to xmkmf, Makefile generator for X Window System
 
@@ -1833,7 +1808,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-bacula configure 5.2.12
+bacula configure 7.0.2
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2763,7 +2738,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.12, which was
+It was created by bacula $as_me 7.0.2, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -3154,13 +3129,6 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 ac_config_headers="$ac_config_headers src/config.h:autoconf/config.h.in"
 
 
-WIN32BUILDDIR=${BUILD_DIR}/src/win32
-WIN32MAINDIR=${BUILD_DIR}
-WIN32TOPDIR=${TOP_DIR}
-
-
-
-
 for ac_prog in true
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -3260,18 +3228,20 @@ if test "x$BACULA" != x; then
    post_host=`echo -${BACULA} | tr 'A-Z ' 'a-z-'`
 fi
 BACULA=${BACULA:-Bacula}
-VERSION=`sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
-DATE=`sed -n -e 's/^.* \t*BDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
-LSMDATE=`sed -n -e 's/^.*LSMDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
-BDB_VERSION=`sed -n -e 's/^.*BDB_VERSION \(.*\)$/\1/p' ${srcdir}/src/cats/cats.h`
+VERSION=`sed -n -e 's/^#define VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+RELEASE=`sed -n -e 's/^#define RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+DATE=`sed -n -e 's/^#define BDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+LSMDATE=`sed -n -e 's/^#define LSMDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+BDB_VERSION=`sed -n -e 's/^#define BDB_VERSION \(.*\)$/\1/p' ${srcdir}/src/cats/cats.h`
+DEPKGS_VERSION=`sed -n -e 's/^#define DEPKGS_VERSION \(.*\)$/\1/p' ${srcdir}/src/cats/cats.h`
+DEPKGS_QT_VERSION=`sed -n -e 's/^#define DEPKGS_QT_VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
+BQT_VERSION=`sed -n -e 's/^#define BQT_VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
 
 LIBBAC_LT_RELEASE=`sed -n -e 's/^#.*LIBBAC_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
 LIBBACCFG_LT_RELEASE=`sed -n -e 's/^#.*LIBBACCFG_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
-LIBBACPY_LT_RELEASE=`sed -n -e 's/^#.*LIBBACPY_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
 
 LIBBAC_LT_RELEASE=${LIBBAC_LT_RELEASE:-$VERSION}
 LIBBACCFG_LT_RELEASE=${LIBBACCFG_LT_RELEASE:-$VERSION}
-LIBBACPY_LT_RELEASE=${LIBBACPY_LT_RELEASE:-$VERSION}
 
 
 LIBBACSQL_LT_RELEASE=`sed -n -e 's/^#.*LIBBACSQL_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
@@ -5682,52 +5652,6 @@ $as_echo "no" >&6; }
 fi
 
 
-
-if test "x$WXCONFIG" = x; then
-   WXCONFIG=wx-config
-fi
-# Extract the first word of "${WXCONFIG}", so it can be a program name with args.
-set dummy ${WXCONFIG}; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_WXCONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $WXCONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_WXCONFIG="$WXCONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_WXCONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_WXCONFIG" && ac_cv_path_WXCONFIG="${WXCONFIG}"
-  ;;
-esac
-fi
-WXCONFIG=$ac_cv_path_WXCONFIG
-if test -n "$WXCONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WXCONFIG" >&5
-$as_echo "$WXCONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
 # Extract the first word of "cdrecord", so it can be a program name with args.
 set dummy cdrecord; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -5937,8 +5861,8 @@ esac
 
 
 
-macro_version='2.4'
-macro_revision='1.3293'
+macro_version='2.4.2'
+macro_revision='1.3337'
 
 
 
@@ -6653,6 +6577,11 @@ else
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -6679,7 +6608,8 @@ else
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
@@ -6692,7 +6622,7 @@ else
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
@@ -7080,10 +7010,6 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -7121,12 +7047,12 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
   else
@@ -7761,13 +7687,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -7914,6 +7840,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK '"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -8202,7 +8129,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -8218,9 +8145,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*)
+	    LD="${LD-ld} -m elf32lppclinux"
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64-*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -8239,7 +8176,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -8302,7 +8242,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -8313,7 +8253,20 @@ sparc*-*solaris*)
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD="${LD-ld} -64"
@@ -8953,7 +8906,13 @@ else
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&5
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&5
@@ -8964,6 +8923,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
 if ${lt_cv_ld_exported_symbols_list+:} false; then :
@@ -8996,6 +8956,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
 $as_echo_n "checking for -force_load linker flag... " >&6; }
 if ${lt_cv_ld_force_load+:} false; then :
@@ -9017,7 +8978,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&5
@@ -9293,7 +9256,22 @@ fi
 
 # Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
-  withval=$with_pic; pic_mode="$withval"
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS="$lt_save_ifs"
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
   pic_mode=default
 fi
@@ -9371,6 +9349,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+
+
+
+
 test -z "$LN_S" && LN_S="ln -s"
 
 
@@ -9830,7 +9812,9 @@ lt_prog_compiler_static=
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       lt_prog_compiler_wl='-Xlinker '
-      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
       ;;
     esac
   else
@@ -9874,7 +9858,7 @@ lt_prog_compiler_static=
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -9921,18 +9905,33 @@ lt_prog_compiler_static=
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl='-Wl,'
 	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fPIC'
+	  lt_prog_compiler_static='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fpic'
+	  lt_prog_compiler_static='-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -10294,7 +10293,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   hardcode_direct=no
   hardcode_direct_absolute=no
   hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
   hardcode_libdir_separator=
   hardcode_minus_L=no
   hardcode_shlibpath_var=unsupported
@@ -10338,6 +10336,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   openbsd*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
   esac
 
   ld_shlibs=yes
@@ -10544,8 +10545,7 @@ _LT_EOF
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec=
-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
 	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
@@ -10560,7 +10560,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -10737,6 +10737,7 @@ _LT_EOF
 	if test "$aix_use_runtimelinking" = yes; then
 	  shared_flag="$shared_flag "'${wl}-G'
 	fi
+	link_all_deplibs=no
       else
 	# not using gcc
 	if test "$host_cpu" = ia64; then
@@ -10924,6 +10925,7 @@ fi
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
 	enable_shared_with_static_runtimes=yes
+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	old_postinstall_cmds='chmod 644 $oldlib'
@@ -10969,6 +10971,7 @@ fi
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
   else
     whole_archive_flag_spec=''
   fi
@@ -10997,10 +11000,6 @@ fi
       hardcode_shlibpath_var=no
       ;;
 
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -11013,7 +11012,7 @@ fi
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct=yes
       hardcode_minus_L=yes
@@ -11052,7 +11051,6 @@ fi
       fi
       if test "$with_gnu_ld" = no; then
 	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld='+b $libdir'
 	hardcode_libdir_separator=:
 	hardcode_direct=yes
 	hardcode_direct_absolute=yes
@@ -11193,7 +11191,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
       link_all_deplibs=yes
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -11676,11 +11674,6 @@ esac
 
 
 
-
-
-
-
-
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
@@ -11770,7 +11763,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -11779,7 +11772,7 @@ aix3*)
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -11844,7 +11837,7 @@ beos*)
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -11983,7 +11976,7 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -11991,10 +11984,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -12002,7 +11991,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -12020,7 +12009,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -12039,18 +12028,8 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -12111,7 +12090,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -12127,7 +12106,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -12164,9 +12143,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -12229,6 +12208,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -12248,7 +12239,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -12317,7 +12308,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -12342,7 +12333,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -12366,7 +12357,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -12397,7 +12388,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -12407,7 +12398,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -13332,7 +13323,6 @@ export_dynamic_flag_spec_CXX=
 hardcode_direct_CXX=no
 hardcode_direct_absolute_CXX=no
 hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_flag_spec_ld_CXX=
 hardcode_libdir_separator_CXX=
 hardcode_minus_L_CXX=no
 hardcode_shlibpath_var_CXX=unsupported
@@ -13916,6 +13906,7 @@ fi
   hardcode_shlibpath_var_CXX=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
   else
     whole_archive_flag_spec_CXX=''
   fi
@@ -13960,7 +13951,7 @@ fi
         esac
         ;;
 
-      freebsd[12]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
 	# switch to ELF
         ld_shlibs_CXX=no
@@ -13976,9 +13967,6 @@ fi
         ld_shlibs_CXX=yes
         ;;
 
-      gnu*)
-        ;;
-
       haiku*)
         archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         link_all_deplibs_CXX=yes
@@ -14140,7 +14128,7 @@ fi
         inherit_rpath_CXX=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -14636,6 +14624,7 @@ _lt_libdeps_save_CFLAGS=$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
 
 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -14999,7 +14988,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -15063,7 +15052,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
 	;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -15425,13 +15414,18 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*) ;;
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
     *)
       export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
       exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
   *)
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -15578,8 +15572,6 @@ esac
 
 
 
-
-
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
@@ -15605,7 +15597,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -15614,7 +15606,7 @@ aix3*)
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -15679,7 +15671,7 @@ beos*)
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -15816,7 +15808,7 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -15824,10 +15816,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -15835,7 +15823,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -15853,7 +15841,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -15872,18 +15860,8 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -15944,7 +15922,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -15960,7 +15938,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -15997,9 +15975,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -16062,6 +16040,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -16081,7 +16071,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -16150,7 +16140,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -16175,7 +16165,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -16199,7 +16189,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -16230,7 +16220,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -16240,7 +16230,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -16379,6 +16369,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
+
         ac_config_commands="$ac_config_commands libtool"
 
 
@@ -21766,21 +21758,16 @@ fi
 
 support_smartalloc=yes
 support_readline=yes
+support_lzo=yes
 support_conio=yes
-support_gnome=no
 support_bat=no
-support_wx_console=no
-support_tray_monitor=no
 support_tls=no
 support_crypto=no
-gnome_version=
-wx_version=
 support_static_tools=no
 support_static_fd=no
 support_static_sd=no
 support_static_dir=no
 support_static_cons=no
-support_python=no
 build_client_only=no
 build_dird=yes
 build_stored=yes
@@ -21789,24 +21776,6 @@ batch_insert_db_backends=""
 support_lockmgr=no
 
 
-# Check whether --enable-gnome was given.
-if test "${enable_gnome+set}" = set; then :
-  enableval=$enable_gnome;
-       if test x$enableval = xyes; then
-	  support_gnome=yes
-       fi
-
-
-fi
-
-
-GNOME_DIR=
-if test x$support_gnome = xyes; then
-   as_fn_error $? "bgnome-console no longer supported" "$LINENO" 5
-   as_fn_error $? "--enable-gnome option no longer supported" "$LINENO" 5
-fi
-# AC_SUBST(GNOME_DIR)
-
 # Check whether --enable-bat was given.
 if test "${enable_bat+set}" = set; then :
   enableval=$enable_bat;
@@ -21846,69 +21815,6 @@ no_qwt=no
 
 
 
-# Check whether --enable-bwx-console was given.
-if test "${enable_bwx_console+set}" = set; then :
-  enableval=$enable_bwx_console;
-       if test x$enableval = xyes; then
-	  support_wx_console=yes
-       fi
-
-
-fi
-
-
-WX_DIR=
-if test x$support_wx_console = xyes; then
-   abc=`$WXCONFIG $WXFLAGS --cppflags`
-   pkg=$?
-   if test $pkg = 0; then
-      wx_version="wxWidgets `$WXCONFIG $WXFLAGS --release`"
-      WXCONS_CPPFLAGS=`$WXCONFIG $WXFLAGS --cppflags`
-      WXCONS_LDFLAGS=`$WXCONFIG $WXFLAGS --libs`
-
-
-
-      WX_DIR="src/wx-console"
-   else
-      echo " "
-      echo "wx-config program not found. bwx-console disabled."
-      echo " "
-      support_wx_console=no
-   fi
-fi
-
-
-# Check whether --enable-tray-monitor was given.
-if test "${enable_tray_monitor+set}" = set; then :
-  enableval=$enable_tray_monitor;
-       if test x$enableval = xyes; then
-	  support_tray_monitor=yes
-       fi
-
-
-fi
-
-
-TRAY_MONITOR_DIR=
-if test x$support_tray_monitor = xyes; then
-   abc=`$PKGCONFIG --exists gtk+-2.0`
-   pkg=$?
-   if test $pkg = 0; then
-      TRAY_MONITOR_CPPFLAGS=`$PKGCONFIG --cflags gtk+-2.0`
-      TRAY_MONITOR_LDFLAGS=`$PKGCONFIG --libs gtk+-2.0`
-
-
-      TRAY_MONITOR_DIR=src/tray-monitor
-      abc=`$PKGCONFIG --atleast-version=2.4 gtk+-2.0`
-      pkg=$?
-      if test $pkg = 0; then
-
-$as_echo "#define HAVE_GTK_2_4 1" >>confdefs.h
-
-      fi
-   fi
-fi
-
 
 # Check whether --enable-smartalloc was given.
 if test "${enable_smartalloc+set}" = set; then :
@@ -22045,17 +21951,11 @@ fi
 
 
 STATIC_CONS=
-STATIC_GNOME_CONS=
-STATIC_WX_CONS=
 if test x$support_static_cons = xyes; then
    STATIC_CONS="static-bconsole"
-   STATIC_GNOME_CONS="static-bgnome-console"
-   STATIC_WX_CONS="static-bwx-console"
 fi
 
 
-
-
 # Check whether --enable-client-only was given.
 if test "${enable_client_only+set}" = set; then :
   enableval=$enable_client_only;
@@ -22388,9 +22288,6 @@ if test "${enable_readline+set}" = set; then :
 
 fi
 
-if test x$TERM_LIB = x ; then
-   support_readline=no
-fi
 
 got_readline="no"
 READLINE_SRC=
@@ -22422,7 +22319,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
 
 $as_echo "#define HAVE_READLINE 1" >>confdefs.h
 
-		    CONS_LIBS="-lreadline -lhistory $TERM_LIB"
+		    CONS_LIBS="-lreadline -lhistory ${TERM_LIB}"
 		    got_readline="yes"
 
 else
@@ -22448,7 +22345,7 @@ $as_echo "#define HAVE_READLINE 1" >>confdefs.h
 
 		got_readline="yes"
 		CONS_INC="-I/usr/include/readline"
-		CONS_LIBS="-lreadline $TERM_LIB"
+		CONS_LIBS="-lreadline ${TERM_LIB}"
 
 else
 
@@ -22461,7 +22358,7 @@ $as_echo "#define HAVE_READLINE 1" >>confdefs.h
 
 			got_readline="yes"
 			CONS_INC="-I${TOP_DIR}/depkgs/readline"
-			CONS_LIBS="-lreadline -lhistory $TERM_LIB"
+			CONS_LIBS="-lreadline -lhistory ${TERM_LIB}"
 			CONS_LDFLAGS="-L${TOP_DIR}/depkgs/readline"
 			PRTREADLINE_SRC="${TOP_DIR}/depkgs/readline"
 
@@ -22695,7 +22592,7 @@ fi
 
 fi
 
-for ac_func in strcasecmp select setenv putenv tcgetattr lstat lchown
+for ac_func in strcasecmp select setenv putenv tcgetattr
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -22707,7 +22604,7 @@ _ACEOF
 fi
 done
 
-for ac_func in nanosleep nl_langinfo
+for ac_func in lstat lchown lchmod futimes fchmod fchown
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -22719,215 +22616,29 @@ _ACEOF
 fi
 done
 
-for ac_header in varargs.h
+for ac_func in nanosleep nl_langinfo
 do :
-  ac_fn_c_check_header_mongrel "$LINENO" "varargs.h" "ac_cv_header_varargs_h" "$ac_includes_default"
-if test "x$ac_cv_header_varargs_h" = xyes; then :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_VARARGS_H 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
 
 fi
-
-done
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python support" >&5
-$as_echo_n "checking for Python support... " >&6; }
-
-# Check whether --with-python was given.
-if test "${with_python+set}" = set; then :
-  withval=$with_python;
-       PYTHON_INCDIR=
-       PYTHON_LIBS=
-       if test "$withval" != "no"; then
-	  if test "$withval" = "yes"; then
-	     if test -e /usr/bin/python-config ; then
-		PYTHON_INCDIR=`/usr/bin/python-config --includes`
-		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 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
-			    PYTHON_LIBS="-L$python_root/lib64/${ver}/config -l${ver}"
-			 else
-			    PYTHON_LIBS="-L$python_root/lib/${ver}/config -l${ver}"
-			 fi
-			 break
-		      fi
-		   done
-		done
-
-		if test x$PYTHON_INCDIR = x; then
-		   if test -f $prefix/include/Python.h; then
-		      PYTHON_INCDIR=-I$prefix/include
-		      if test -d $prefix/lib64/config; then
-			 PYTHON_LIBS="-L$prefix/lib64/config -lpython"
-		      else
-			 PYTHON_LIBS="-L$prefix/lib/config -lpython"
-		      fi
-		   else
-		      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-		      as_fn_error $? "Unable to find Python.h in standard locations" "$LINENO" 5
-		   fi
-		fi
-	     fi
-	  else
-	     if test -e $withval/bin/python-config ; then
-		PYTHON_INCDIR=`$withval/bin/python-config --includes`
-		PYTHON_LIBS=`$withval/bin/python-config --libs`
-	     elif test -f $withval/Python.h; then
-		PYTHON_INCDIR=-I$withval
-		PYTHON_LIBS="-L$withval/config -lpython"
-	     elif test -f $withval/include/Python.h; then
-		PYTHON_INCDIR=-I$withval/include
-		if test -d $withval/lib64/config; then
-		   PYTHON_LIBS="-L$withval/lib64/config -lpython"
-		else
-		   PYTHON_LIBS="-L$withval/lib/config -lpython"
-		fi
-	     elif test -f $withval/include/python/Python.h; then
-		PYTHON_INCDIR=-I$withval/include/python
-		if test -d $withval/lib64/python/config; then
-		   PYTHON_LIBS="-L$withval/lib64/python/config -lpython"
-		else
-		   PYTHON_LIBS="-L$withval/lib/python/config -lpython"
-		fi
-	     else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-		as_fn_error $? "Invalid Python directory $withval - unable to find Python.h under $withval" "$LINENO" 5
-	     fi
-	  fi
-
-	  $as_echo "#define HAVE_PYTHON 1" >>confdefs.h
-
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	  support_python=yes
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for more Python libs" >&5
-$as_echo "$as_me: checking for more Python libs" >&6;}
-	  saved_LIBS="$LIBS"; LIBS=
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing shm_open" >&5
-$as_echo_n "checking for library containing shm_open... " >&6; }
-if ${ac_cv_search_shm_open+:} 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 shm_open ();
-int
-main ()
-{
-return shm_open ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' rt; 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_shm_open=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_shm_open+:} false; then :
-  break
-fi
 done
-if ${ac_cv_search_shm_open+:} false; then :
-
-else
-  ac_cv_search_shm_open=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_shm_open" >&5
-$as_echo "$ac_cv_search_shm_open" >&6; }
-ac_res=$ac_cv_search_shm_open
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
 
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5
-$as_echo_n "checking for openpty in -lutil... " >&6; }
-if ${ac_cv_lib_util_openpty+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lutil  $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 openpty ();
-int
-main ()
-{
-return openpty ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_util_openpty=yes
-else
-  ac_cv_lib_util_openpty=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_util_openpty" >&5
-$as_echo "$ac_cv_lib_util_openpty" >&6; }
-if test "x$ac_cv_lib_util_openpty" = xyes; then :
+for ac_header in varargs.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "varargs.h" "ac_cv_header_varargs_h" "$ac_includes_default"
+if test "x$ac_cv_header_varargs_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBUTIL 1
+#define HAVE_VARARGS_H 1
 _ACEOF
 
-  LIBS="-lutil $LIBS"
-
-fi
-
-	  PYTHON_LIBS="$PYTHON_LIBS $LIBS"
-	  LIBS="$saved_LIBS"
-       else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       fi
-
-else
-
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-
 fi
 
+done
 
 
 
@@ -23224,6 +22935,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 
 
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL" >&5
 $as_echo_n "checking for OpenSSL... " >&6; }
 
@@ -23486,7 +23198,7 @@ if test "$ac_res" != no; then :
 fi
 
 
-working_dir=`eval echo ${prefix}/opt/bacula/working`
+working_dir=`eval echo /opt/bacula/working`
 
 # Check whether --with-working-dir was given.
 if test "${with_working_dir+set}" = set; then :
@@ -23570,7 +23282,7 @@ fi
 
 
 
-bsrdir=`eval echo ${prefix}/opt/bacula/bsr`
+bsrdir=`eval echo /opt/bacula/bsr`
 
 # Check whether --with-bsrdir was given.
 if test "${with_bsrdir+set}" = set; then :
@@ -23585,7 +23297,7 @@ fi
 
 
 
-logdir=`eval echo ${prefix}/opt/bacula/log`
+logdir=`eval echo /opt/bacula/log`
 
 # Check whether --with-logdir was given.
 if test "${with_logdir+set}" = set; then :
@@ -24874,12 +24586,6 @@ fi
 
 
 
-#BA_CHECK_INGRES_DB
-
-#BA_CHECK_DBI_DB
-
-#BA_CHECK_DBI_DRIVER
-
 if test -z "${batch_insert_db_backends}"; then
    batch_insert_db_backends="None"
 fi
@@ -28715,6 +28421,19 @@ _ACEOF
 fi
 done
 
+for ac_func in getnameinfo
+do :
+  ac_fn_c_check_func "$LINENO" "getnameinfo" "ac_cv_func_getnameinfo"
+if test "x$ac_cv_func_getnameinfo" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETNAMEINFO 1
+_ACEOF
+ $as_echo "#define HAVE_GETNAMEINFO 1" >>confdefs.h
+
+fi
+done
+
+
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr has a sa_len field" >&5
 $as_echo_n "checking for struct sockaddr has a sa_len field... " >&6; }
@@ -29402,69 +29121,6 @@ if test x$ZLIBS = x-lz; then
 fi
 
 
-have_lzo=no
-ac_fn_c_check_header_mongrel "$LINENO" "lzo/lzoconf.h" "ac_cv_header_lzo_lzoconf_h" "$ac_includes_default"
-if test "x$ac_cv_header_lzo_lzoconf_h" = xyes; then :
-
-   ac_fn_c_check_header_mongrel "$LINENO" "lzo/lzo1x.h" "ac_cv_header_lzo_lzo1x_h" "$ac_includes_default"
-if test "x$ac_cv_header_lzo_lzo1x_h" = xyes; then :
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzo1x_1_compress in -llzo2" >&5
-$as_echo_n "checking for lzo1x_1_compress in -llzo2... " >&6; }
-if ${ac_cv_lib_lzo2_lzo1x_1_compress+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-llzo2  $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 lzo1x_1_compress ();
-int
-main ()
-{
-return lzo1x_1_compress ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lzo2_lzo1x_1_compress=yes
-else
-  ac_cv_lib_lzo2_lzo1x_1_compress=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_lzo2_lzo1x_1_compress" >&5
-$as_echo "$ac_cv_lib_lzo2_lzo1x_1_compress" >&6; }
-if test "x$ac_cv_lib_lzo2_lzo1x_1_compress" = xyes; then :
-
-	 LZOLIBS="-llzo2"
-
-$as_echo "#define HAVE_LZO 1" >>confdefs.h
-
-	 have_lzo=yes
-
-fi
-
-
-fi
-
-
-
-fi
-
-
-
-
 AFS_CFLAGS=""
 AFS_LIBS=""
 support_afs=auto
@@ -29593,6 +29249,135 @@ fi
 
 
 
+
+# Check whether --enable-lzo was given.
+if test "${enable_lzo+set}" = set; then :
+  enableval=$enable_lzo;
+       if test x$enableval = xno; then
+	  support_lzo=no
+       fi
+
+
+fi
+
+
+LZO_INC=
+LZO_LIBS=
+LZO_LDFLAGS=
+
+have_lzo="no"
+if test x$support_lzo = xyes; then
+
+# Check whether --with-lzo was given.
+if test "${with_lzo+set}" = set; then :
+  withval=$with_lzo;
+	  case "$with_lzo" in
+	  no)
+	     :
+	     ;;
+	  yes|*)
+	     if test -f ${with_lzo}/include/lzo/lzoconf.h; then
+		LZO_INC="-I${with_lzo}/include"
+		LZO_LDFLAGS="-L${with_lzo}/lib"
+		with_lzo="${with_lzo}/include"
+	     else
+		with_lzo="/usr/include"
+	     fi
+
+	     as_ac_Header=`$as_echo "ac_cv_header_${with_lzo}/lzo/lzoconf.h" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "${with_lzo}/lzo/lzoconf.h" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+
+
+$as_echo "#define HAVE_LZO 1" >>confdefs.h
+
+		    LZO_LIBS="${LZO_LDFLAGS} -lzo2"
+		    have_lzo="yes"
+
+else
+
+		    echo " "
+		    echo "lzoconf.h not found. lzo turned off ..."
+		    echo " "
+
+
+fi
+
+
+	     ;;
+	  esac
+
+else
+
+	 ac_fn_c_check_header_mongrel "$LINENO" "lzo/lzoconf.h" "ac_cv_header_lzo_lzoconf_h" "$ac_includes_default"
+if test "x$ac_cv_header_lzo_lzoconf_h" = xyes; then :
+
+	    ac_fn_c_check_header_mongrel "$LINENO" "lzo/lzo1x.h" "ac_cv_header_lzo_lzo1x_h" "$ac_includes_default"
+if test "x$ac_cv_header_lzo_lzo1x_h" = xyes; then :
+
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzo1x_1_compress in -llzo2" >&5
+$as_echo_n "checking for lzo1x_1_compress in -llzo2... " >&6; }
+if ${ac_cv_lib_lzo2_lzo1x_1_compress+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-llzo2  $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 lzo1x_1_compress ();
+int
+main ()
+{
+return lzo1x_1_compress ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_lzo2_lzo1x_1_compress=yes
+else
+  ac_cv_lib_lzo2_lzo1x_1_compress=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_lzo2_lzo1x_1_compress" >&5
+$as_echo "$ac_cv_lib_lzo2_lzo1x_1_compress" >&6; }
+if test "x$ac_cv_lib_lzo2_lzo1x_1_compress" = xyes; then :
+
+		 LZO_LIBS="-llzo2"
+
+$as_echo "#define HAVE_LZO 1" >>confdefs.h
+
+		 have_lzo=yes
+
+fi
+
+
+fi
+
+
+
+fi
+
+
+
+fi
+
+fi
+
+
+
+
+
 support_acl=auto
 # Check whether --enable-acl was given.
 if test "${enable_acl+set}" = set; then :
@@ -30614,7 +30399,6 @@ WLDFLAGS=
 
 PFILES="platforms/Makefile"
 PSCMD="ps -e"
-WIN32=
 MACOSX=
 COMPRESS_MANPAGES=yes
 
@@ -30653,13 +30437,6 @@ bsdi)
        platforms/bsdi/bacula-dir"
    largefile_support="yes"
   ;;
-cygwin)
-   DISTVER=`uname -a |awk '{print $3}'`
-   TAPEDRIVE="/dev/nrst0"
-   WIN32=win32
-   WCFLAGS="-mwindows"
-   WLDFLAGS="-mwindows"
-  ;;
 darwin)
    DISTVER=`uname -r`
    TAPEDRIVE="/dev/nst0"
@@ -30955,7 +30732,6 @@ _ACEOF
 
 
 
-
 MCOMMON=./autoconf/Make.common
 
 
@@ -30972,7 +30748,7 @@ if test "x${subsysdir}" = "x${sbindir}" ; then
    exit 1
 fi
 
-ac_config_files="$ac_config_files autoconf/Make.common Makefile manpages/Makefile scripts/btraceback scripts/bconsole scripts/bacula scripts/bacula-ctl-dir scripts/bacula-ctl-fd scripts/bacula-ctl-sd scripts/devel_bacula scripts/Makefile scripts/logrotate scripts/bacula.desktop.gnome1 scripts/bacula.desktop.gnome2 scripts/bacula.desktop.gnome1.consolehelper scripts/bacula.desktop.gnome2.consolehelper scripts/bacula.desktop.gnome1.xsu scripts/bacula.desktop.gnome2.xsu scripts/mtx-changer  [...]
+ac_config_files="$ac_config_files autoconf/Make.common Makefile manpages/Makefile scripts/btraceback scripts/bconsole scripts/bacula scripts/bacula-ctl-dir scripts/bacula-ctl-fd scripts/bacula-ctl-sd scripts/devel_bacula scripts/Makefile scripts/logrotate scripts/mtx-changer scripts/disk-changer scripts/dvd-handler scripts/dvd-simulator scripts/logwatch/Makefile scripts/logwatch/logfile.bacula.conf scripts/bat.desktop scripts/bat.desktop.xsu scripts/bat.desktop.consolehelper scripts/bat. [...]
 
 ac_config_commands="$ac_config_commands default"
 
@@ -31495,7 +31271,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.12, which was
+This file was extended by bacula $as_me 7.0.2, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -31561,7 +31337,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.12
+bacula config.status 7.0.2
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
@@ -31696,6 +31472,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -31778,7 +31555,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -31850,7 +31626,6 @@ with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
 allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
 no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
@@ -31889,6 +31664,7 @@ _LTECHO_EOF'
 # Quote evaled strings.
 for var in SHELL \
 ECHO \
+PATH_SEPARATOR \
 SED \
 GREP \
 EGREP \
@@ -31939,7 +31715,6 @@ with_gnu_ld \
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
 exclude_expsyms \
 include_expsyms \
@@ -31973,7 +31748,6 @@ with_gnu_ld_CXX \
 allow_undefined_flag_CXX \
 no_undefined_flag_CXX \
 hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_flag_spec_ld_CXX \
 hardcode_libdir_separator_CXX \
 exclude_expsyms_CXX \
 include_expsyms_CXX \
@@ -32087,22 +31861,12 @@ do
     "scripts/devel_bacula") CONFIG_FILES="$CONFIG_FILES scripts/devel_bacula" ;;
     "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
     "scripts/logrotate") CONFIG_FILES="$CONFIG_FILES scripts/logrotate" ;;
-    "scripts/bacula.desktop.gnome1") CONFIG_FILES="$CONFIG_FILES scripts/bacula.desktop.gnome1" ;;
-    "scripts/bacula.desktop.gnome2") CONFIG_FILES="$CONFIG_FILES scripts/bacula.desktop.gnome2" ;;
-    "scripts/bacula.desktop.gnome1.consolehelper") CONFIG_FILES="$CONFIG_FILES scripts/bacula.desktop.gnome1.consolehelper" ;;
-    "scripts/bacula.desktop.gnome2.consolehelper") CONFIG_FILES="$CONFIG_FILES scripts/bacula.desktop.gnome2.consolehelper" ;;
-    "scripts/bacula.desktop.gnome1.xsu") CONFIG_FILES="$CONFIG_FILES scripts/bacula.desktop.gnome1.xsu" ;;
-    "scripts/bacula.desktop.gnome2.xsu") CONFIG_FILES="$CONFIG_FILES scripts/bacula.desktop.gnome2.xsu" ;;
     "scripts/mtx-changer") CONFIG_FILES="$CONFIG_FILES scripts/mtx-changer" ;;
     "scripts/disk-changer") CONFIG_FILES="$CONFIG_FILES scripts/disk-changer" ;;
     "scripts/dvd-handler") CONFIG_FILES="$CONFIG_FILES scripts/dvd-handler" ;;
     "scripts/dvd-simulator") CONFIG_FILES="$CONFIG_FILES scripts/dvd-simulator" ;;
-    "scripts/bacula-tray-monitor.desktop") CONFIG_FILES="$CONFIG_FILES scripts/bacula-tray-monitor.desktop" ;;
     "scripts/logwatch/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/logwatch/Makefile" ;;
     "scripts/logwatch/logfile.bacula.conf") CONFIG_FILES="$CONFIG_FILES scripts/logwatch/logfile.bacula.conf" ;;
-    "scripts/wxconsole.console_apps") CONFIG_FILES="$CONFIG_FILES scripts/wxconsole.console_apps" ;;
-    "scripts/wxconsole.desktop.consolehelper") CONFIG_FILES="$CONFIG_FILES scripts/wxconsole.desktop.consolehelper" ;;
-    "scripts/wxconsole.desktop.xsu") CONFIG_FILES="$CONFIG_FILES scripts/wxconsole.desktop.xsu" ;;
     "scripts/bat.desktop") CONFIG_FILES="$CONFIG_FILES scripts/bat.desktop" ;;
     "scripts/bat.desktop.xsu") CONFIG_FILES="$CONFIG_FILES scripts/bat.desktop.xsu" ;;
     "scripts/bat.desktop.consolehelper") CONFIG_FILES="$CONFIG_FILES scripts/bat.desktop.consolehelper" ;;
@@ -32111,16 +31875,10 @@ do
     "src/host.h") CONFIG_FILES="$CONFIG_FILES src/host.h" ;;
     "src/console/Makefile") CONFIG_FILES="$CONFIG_FILES src/console/Makefile" ;;
     "src/console/bconsole.conf") CONFIG_FILES="$CONFIG_FILES src/console/bconsole.conf" ;;
-    "src/qt-console/tray-monitor/tray-monitor.pro") CONFIG_FILES="$CONFIG_FILES src/qt-console/tray-monitor/tray-monitor.pro" ;;
-    "src/qt-console/tray-monitor/tray-monitor.conf") CONFIG_FILES="$CONFIG_FILES src/qt-console/tray-monitor/tray-monitor.conf" ;;
     "src/qt-console/bat.conf") CONFIG_FILES="$CONFIG_FILES src/qt-console/bat.conf" ;;
     "src/qt-console/bat.pro") CONFIG_FILES="$CONFIG_FILES src/qt-console/bat.pro" ;;
     "src/qt-console/bat.pro.mingw32") CONFIG_FILES="$CONFIG_FILES src/qt-console/bat.pro.mingw32" ;;
     "src/qt-console/install_conf_file") CONFIG_FILES="$CONFIG_FILES src/qt-console/install_conf_file" ;;
-    "src/wx-console/Makefile") CONFIG_FILES="$CONFIG_FILES src/wx-console/Makefile" ;;
-    "src/wx-console/bwx-console.conf") CONFIG_FILES="$CONFIG_FILES src/wx-console/bwx-console.conf" ;;
-    "src/tray-monitor/Makefile") CONFIG_FILES="$CONFIG_FILES src/tray-monitor/Makefile" ;;
-    "src/tray-monitor/tray-monitor.conf") CONFIG_FILES="$CONFIG_FILES src/tray-monitor/tray-monitor.conf" ;;
     "src/dird/Makefile") CONFIG_FILES="$CONFIG_FILES src/dird/Makefile" ;;
     "src/dird/bacula-dir.conf") CONFIG_FILES="$CONFIG_FILES src/dird/bacula-dir.conf" ;;
     "src/lib/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib/Makefile" ;;
@@ -32164,7 +31922,6 @@ do
     "src/plugins/fd/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/fd/Makefile" ;;
     "src/plugins/sd/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/sd/Makefile" ;;
     "src/plugins/dir/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/dir/Makefile" ;;
-    "src/win32/Makefile.inc") CONFIG_FILES="$CONFIG_FILES src/win32/Makefile.inc" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
     "updatedb/update_mysql_tables_9_to_10") CONFIG_FILES="$CONFIG_FILES updatedb/update_mysql_tables_9_to_10" ;;
     "updatedb/update_sqlite3_tables_9_to_10") CONFIG_FILES="$CONFIG_FILES updatedb/update_sqlite3_tables_9_to_10" ;;
@@ -32183,6 +31940,10 @@ do
     "platforms/rpms/redhat/bacula-bat.spec") CONFIG_FILES="$CONFIG_FILES platforms/rpms/redhat/bacula-bat.spec" ;;
     "platforms/rpms/redhat/bacula-docs.spec") CONFIG_FILES="$CONFIG_FILES platforms/rpms/redhat/bacula-docs.spec" ;;
     "platforms/rpms/redhat/bacula-mtx.spec") CONFIG_FILES="$CONFIG_FILES platforms/rpms/redhat/bacula-mtx.spec" ;;
+    "platforms/rpms/suse/bacula.spec") CONFIG_FILES="$CONFIG_FILES platforms/rpms/suse/bacula.spec" ;;
+    "platforms/rpms/suse/bacula-bat.spec") CONFIG_FILES="$CONFIG_FILES platforms/rpms/suse/bacula-bat.spec" ;;
+    "platforms/rpms/suse/bacula-docs.spec") CONFIG_FILES="$CONFIG_FILES platforms/rpms/suse/bacula-docs.spec" ;;
+    "platforms/rpms/suse/bacula-mtx.spec") CONFIG_FILES="$CONFIG_FILES platforms/rpms/suse/bacula-mtx.spec" ;;
     "$PFILES") CONFIG_FILES="$CONFIG_FILES $PFILES" ;;
     "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
 
@@ -32800,8 +32561,8 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -32855,6 +32616,9 @@ SHELL=$lt_SHELL
 # An echo program that protects backslashes.
 ECHO=$lt_ECHO
 
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=$host_alias
 host=$host
@@ -33156,10 +32920,6 @@ no_undefined_flag=$lt_no_undefined_flag
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
@@ -33502,10 +33262,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
 
@@ -33744,6 +33500,7 @@ if test "${support_bat}" = "yes" ; then
    touch bat
    chmod 755 bat
    rm -f Makefile
+   rm -rf moc32 obj32
    $QMAKE
    ${MAKE:-make} clean
    cd ${BUILD_DIR}
@@ -33759,9 +33516,9 @@ chmod 755 install_conf_file build-depkgs-qt-console
 cd ${BUILD_DIR}
 
 cd scripts
-chmod 755 bacula btraceback mtx-changer
+chmod 755 bacula btraceback mtx-changer storage-ctl bsg_persist
 chmod 755 dvd-handler dvd-simulator
-chmod 755 bconsole mtx-changer devel_bacula logrotate
+chmod 755 bconsole disk-changer devel_bacula logrotate
 cd ..
 
 c=updatedb
@@ -33795,8 +33552,6 @@ chmod 755 $c/mysql
 
 chmod 755 $c/install-default-backend
 
-chmod 755 src/win32/build-depkgs-mingw32
-
 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
    largefile_support="yes"
 fi
@@ -33821,74 +33576,70 @@ ${MAKE:-make} clean
 echo "
 Configuration on `date`:
 
-   Host:		     ${host}${post_host} -- ${DISTNAME} ${DISTVER}
-   Bacula version:	     ${BACULA} ${VERSION} (${DATE})
-   Source code location:     ${srcdir}
-   Install binaries:	     ${sbindir}
-   Install libraries:	     ${libdir}
-   Install config files:     ${sysconfdir}
-   Scripts directory:	     ${scriptdir}
-   Archive directory:	     ${archivedir}
-   Working directory:	     ${working_dir}
-   PID directory:	     ${piddir}
-   Subsys directory:	     ${subsysdir}
-   Man directory:	     ${mandir}
-   Data directory:	     ${datarootdir}
-   Plugin directory:	     ${plugindir}
-   C Compiler:		     ${CC} ${CCVERSION}
-   C++ Compiler:	     ${CXX} ${CXXVERSION}
-   Compiler flags:	     ${WCFLAGS} ${CFLAGS}
-   Linker flags:	     ${WLDFLAGS} ${LDFLAGS}
-   Libraries:		     ${LIBS}
-   Statically Linked Tools:  ${support_static_tools}
-   Statically Linked FD:     ${support_static_fd}
-   Statically Linked SD:     ${support_static_sd}
-   Statically Linked DIR:    ${support_static_dir}
-   Statically Linked CONS:   ${support_static_cons}
-   Database backends:	     ${db_backends}
-   Database port:	     ${db_port}
-   Database name:	     ${db_name}
-   Database user:	     ${db_user}
-
-   Job Output Email:	     ${job_email}
-   Traceback Email:	     ${dump_email}
-   SMTP Host Address:	     ${smtp_host}
-
-   Director Port:	     ${dir_port}
-   File daemon Port:	     ${fd_port}
-   Storage daemon Port:      ${sd_port}
-
-   Director User:	     ${dir_user}
-   Director Group:	     ${dir_group}
-   Storage Daemon User:      ${sd_user}
-   Storage DaemonGroup:      ${sd_group}
-   File Daemon User:	     ${fd_user}
-   File Daemon Group:	     ${fd_group}
-
-   Large file support:	     $largefile_support
-   Bacula conio support:     ${got_conio} ${CONS_LIBS}
-   readline support:	     ${got_readline} ${PRTREADLINE_SRC}
-   TCP Wrappers support:     ${TCPW_MSG} ${WRAPLIBS}
-   TLS support: 	     ${support_tls}
-   Encryption support:	     ${support_crypto}
-   ZLIB support:	     ${have_zlib}
-   LZO support: 	     ${have_lzo}
-   enable-smartalloc:	     ${support_smartalloc}
-   enable-lockmgr:	     ${support_lockmgr}
-   bat support: 	     ${support_bat}
-   enable-gnome:	     ${support_gnome} ${gnome_version}
-   enable-bwx-console:	     ${support_wx_console} ${wx_version}
-   enable-tray-monitor:      ${support_tray_monitor}
-   client-only: 	     ${build_client_only}
-   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}
-   systemd support:	     ${support_systemd} ${SYSTEMD_UNITDIR}
-   Batch insert enabled:     ${batch_insert_db_backends}
+   Host:		    ${host}${post_host} -- ${DISTNAME} ${DISTVER}
+   Bacula version:	    ${BACULA} ${VERSION} (${DATE})
+   Source code location:    ${srcdir}
+   Install binaries:	    ${sbindir}
+   Install libraries:	    ${libdir}
+   Install config files:    ${sysconfdir}
+   Scripts directory:	    ${scriptdir}
+   Archive directory:	    ${archivedir}
+   Working directory:	    ${working_dir}
+   PID directory:	    ${piddir}
+   Subsys directory:	    ${subsysdir}
+   Man directory:	    ${mandir}
+   Data directory:	    ${datarootdir}
+   Plugin directory:	    ${plugindir}
+   C Compiler:		    ${CC} ${CCVERSION}
+   C++ Compiler:	    ${CXX} ${CXXVERSION}
+   Compiler flags:	    ${WCFLAGS} ${CFLAGS}
+   Linker flags:	    ${WLDFLAGS} ${LDFLAGS}
+   Libraries:		    ${LIBS}
+   Statically Linked Tools: ${support_static_tools}
+   Statically Linked FD:    ${support_static_fd}
+   Statically Linked SD:    ${support_static_sd}
+   Statically Linked DIR:   ${support_static_dir}
+   Statically Linked CONS:  ${support_static_cons}
+   Database backends:	    ${db_backends}
+   Database port:	    ${db_port}
+   Database name:	    ${db_name}
+   Database user:	    ${db_user}
+
+   Job Output Email:	    ${job_email}
+   Traceback Email:	    ${dump_email}
+   SMTP Host Address:	    ${smtp_host}
+
+   Director Port:	    ${dir_port}
+   File daemon Port:	    ${fd_port}
+   Storage daemon Port:     ${sd_port}
+
+   Director User:	    ${dir_user}
+   Director Group:	    ${dir_group}
+   Storage Daemon User:     ${sd_user}
+   Storage DaemonGroup:     ${sd_group}
+   File Daemon User:	    ${fd_user}
+   File Daemon Group:	    ${fd_group}
+
+   Large file support:	    $largefile_support
+   Bacula conio support:    ${got_conio} ${CONS_LIBS}
+   readline support:	    ${got_readline} ${PRTREADLINE_SRC}
+   TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
+   TLS support: 	    ${support_tls}
+   Encryption support:	    ${support_crypto}
+   ZLIB support:	    ${have_zlib}
+   LZO support: 	    ${have_lzo}
+   enable-smartalloc:	    ${support_smartalloc}
+   enable-lockmgr:	    ${support_lockmgr}
+   bat support: 	    ${support_bat}
+   client-only: 	    ${build_client_only}
+   build-dird:		    ${build_dird}
+   build-stored:	    ${build_stored}
+   Plugin support:	    ${have_plugins}
+   AFS support: 	    ${have_afs}
+   ACL support: 	    ${have_acl}
+   XATTR support:	    ${have_xattr}
+   systemd support:	    ${support_systemd} ${SYSTEMD_UNITDIR}
+   Batch insert enabled:    ${batch_insert_db_backends}
 
   " > config.out
 
diff --git a/examples/conf/defaultconfig b/examples/conf/defaultconfig
index d3e9053..ca941ab 100755
--- a/examples/conf/defaultconfig
+++ b/examples/conf/defaultconfig
@@ -13,7 +13,6 @@ CFLAGS="-g -Wall" \
     --with-pid-dir=$HOME/bacula/bin/working \
     --with-subsys-dir=$HOME/bacula/bin/working \
     --enable-smartalloc \
-    --enable-gnome \
     --enable-static-tools \
     --with-mysql=$HOME/mysql \
     --with-working-dir=$HOME/bacula/bin/working \
diff --git a/examples/conf/gnome-console.conf b/examples/conf/gnome-console.conf
deleted file mode 100644
index f5e70f1..0000000
--- a/examples/conf/gnome-console.conf
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Kern's Production Bacula User Agent Configuration File
-#
-
-Director {
-  Name = HeadMan
-  DIRport = 9101
-  address = "localhost"
-  Password = ""  # Console password
-}
diff --git a/examples/conf/kernsconfig b/examples/conf/kernsconfig
index c8edf89..62eca38 100755
--- a/examples/conf/kernsconfig
+++ b/examples/conf/kernsconfig
@@ -7,7 +7,6 @@ CFLAGS="-g -O2 -Wall" ./configure \
     --sysconfdir=$HOME/bacula/bin \
     --with-pid-dir=$HOME/bacula/bin/working \
     --with-subsys-dir=$HOME/bacula/bin/working \
-    --enable-gnome \
     --enable-smartalloc \
     --with-mysql=$HOME/mysql \
     --with-working-dir=$HOME/bacula/working \
diff --git a/examples/nagios/check_bacula/Makefile.in b/examples/nagios/check_bacula/Makefile.in
index 235efbf..5c22e2a 100644
--- a/examples/nagios/check_bacula/Makefile.in
+++ b/examples/nagios/check_bacula/Makefile.in
@@ -70,7 +70,7 @@ devclean: realclean
 	(cd $(srcdir); $(RMF) Makefile)
 
 install: all
-	$(INSTALL_PROGRAM) check_bacula $(DESTDIR)$(sbindir)/check_bacula
+	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) check_bacula $(DESTDIR)$(sbindir)/check_bacula
 
 uninstall:
 	(cd $(DESTDIR)$(sbindir); $(RMF) check_bacula)
diff --git a/examples/nagios/check_bacula/authenticate.c b/examples/nagios/check_bacula/authenticate.c
index c209990..691b5cf 100644
--- a/examples/nagios/check_bacula/authenticate.c
+++ b/examples/nagios/check_bacula/authenticate.c
@@ -13,7 +13,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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,12 +50,14 @@ static char DIRhello[]    = "Hello %s calling\n";
 /* Response from Director */
 static char DIROKhello[]   = "1000 OK:";
 
-/* Commands sent to Storage daemon and File daemon and received
- *  from the User Agent */
-static char SDFDhello[]    = "Hello Director %s calling\n";
+/* Commands sent to Storage daemon */
+static char SDhello[]     = "Hello SD: Bacula Director %s calling\n";
+
+/* Commands sent to  File daemon */
+static char FDhello[]     = "Hello Director %s calling\n";
 
 /* Response from SD */
-static char SDOKhello[]   = "3000 OK Hello\n";
+static char SDOKhello[]  = "3000 OK Hello";
 /* Response from FD */
 static char FDOKhello[] = "2000 OK Hello";
 
@@ -76,7 +78,7 @@ int authenticate_director(BSOCK *dir, char *dirname, char *password)
 
    /* Timeout Hello after 5 mins */
    btimer_t *tid = start_bsock_timer(dir, 60 * 5);
-   bnet_fsend(dir, DIRhello, bashed_name);
+   dir->fsend(DIRhello, bashed_name);
 
    if (!cram_md5_respond(dir, password, &tls_remote_need, &compatible) ||
        !cram_md5_challenge(dir, password, tls_local_need, compatible)) {
@@ -85,7 +87,7 @@ int authenticate_director(BSOCK *dir, char *dirname, char *password)
    }
 
    Dmsg1(6, ">dird: %s", dir->msg);
-   if (bnet_recv(dir) <= 0) {
+   if (dir->recv() <= 0) {
       stop_bsock_timer(tid);
       return 0;
    }
@@ -114,7 +116,7 @@ int authenticate_storage_daemon(BSOCK *sd, char *sdname, char* password)
    bash_spaces(dirname);
    /* Timeout Hello after 5 mins */
    btimer_t *tid = start_bsock_timer(sd, 60 * 5);
-   if (!bnet_fsend(sd, SDFDhello, dirname)) {
+   if (!sd->fsend(SDhello, dirname)) {
       stop_bsock_timer(tid);
       return 0;
    }
@@ -124,13 +126,13 @@ int authenticate_storage_daemon(BSOCK *sd, char *sdname, char* password)
       return 0;
    }
    Dmsg1(116, ">stored: %s", sd->msg);
-   if (bnet_recv(sd) <= 0) {
+   if (sd->recv() <= 0) {
       stop_bsock_timer(tid);
       return 0;
    }
    Dmsg1(110, "<stored: %s", sd->msg);
    stop_bsock_timer(tid);
-   if (strncmp(sd->msg, SDOKhello, sizeof(SDOKhello)) != 0) {
+   if (strncmp(sd->msg, SDOKhello, strlen(SDOKhello)) != 0) {
       return 0;
    }
    return 1;
@@ -153,7 +155,7 @@ int authenticate_file_daemon(BSOCK *fd, char *fdname, char *password)
    bash_spaces(dirname);
    /* Timeout Hello after 5 mins */
    btimer_t *tid = start_bsock_timer(fd, 60 * 5);
-   if (!bnet_fsend(fd, SDFDhello, dirname)) {
+   if (!fd->fsend(FDhello, dirname)) {
       stop_bsock_timer(tid);
       return 0;
    }
@@ -163,7 +165,7 @@ int authenticate_file_daemon(BSOCK *fd, char *fdname, char *password)
       return 0;
    }
    Dmsg1(116, ">filed: %s", fd->msg);
-   if (bnet_recv(fd) <= 0) {
+   if (fd->recv() <= 0) {
       stop_bsock_timer(tid);
       return 0;
    }
diff --git a/examples/nagios/check_bacula/check_bacula.c b/examples/nagios/check_bacula/check_bacula.c
index 58d6997..1546da7 100644
--- a/examples/nagios/check_bacula/check_bacula.c
+++ b/examples/nagios/check_bacula/check_bacula.c
@@ -2,13 +2,11 @@
  *
  *   Nagios Plugin check_bacula
  *
- *     Christian Masopust, (c)2005
- *
- *     Version $Id: check_bacula.c,v 1.0 2005/02/25
+ *     Christian Masopust, (c)2005-2012
  */
 
 /*
-   Copyright (C) 2005 Christian Masopust
+   Copyright (C) 2005-2012 Christian Masopust
 
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -73,7 +71,7 @@ static void usage()
 
 /*********************************************************************
  *
- *	   Main Bacula Tray Monitor -- User Interface Program
+ *         Main Bacula Tray Monitor -- User Interface Program
  *
  */
 int main(int argc, char *argv[])
@@ -114,38 +112,38 @@ int main(int argc, char *argv[])
 
       switch (ch) {
 
-		  case 'H':
-		  	strcpy (host, optarg);
-		  	break;
-
-		  case 'D':
-		  	strcpy (daemon, optarg);
-		  	break;
-
-		  case 'M':
-		  	strcpy (monitorname, optarg);
-		  	break;
-
-		  case 'P':
-		  	port = atoi(optarg);
-		  	break;
-
-		  case 'K':
-		  	strcpy (pw, optarg);
-		  	break;
-
-		  case 'd':
-		 	debug_level = atoi(optarg);
-		 	if (debug_level <= 0) {
-		 	   debug_level = 1;
-		 	}
-		 	break;
-
-      	  case 'h':
-      	  case '?':
-      	  default:
-			 usage();
-			 exit(1);
+                  case 'H':
+                        strcpy (host, optarg);
+                        break;
+
+                  case 'D':
+                        strcpy (daemon, optarg);
+                        break;
+
+                  case 'M':
+                        strcpy (monitorname, optarg);
+                        break;
+
+                  case 'P':
+                        port = atoi(optarg);
+                        break;
+
+                  case 'K':
+                        strcpy (pw, optarg);
+                        break;
+
+                  case 'd':
+                        debug_level = atoi(optarg);
+                        if (debug_level <= 0) {
+                           debug_level = 1;
+                        }
+                        break;
+
+          case 'h':
+          case '?':
+          default:
+                         usage();
+                         exit(1);
       }
    }
    argc -= optind;
@@ -171,65 +169,65 @@ int main(int argc, char *argv[])
    /* director ?  */
    if (strcmp (daemon, "dir") == 0) {
 
-	   if (port != 0)
-	   	 s_dird.DIRport = port;
-	   else
-	   	 s_dird.DIRport = 9101;
+           if (port != 0)
+                 s_dird.DIRport = port;
+           else
+                 s_dird.DIRport = 9101;
 
-	   s_dird.address  = host;
-	   s_dird.password = sig;
-	   s_dird.hdr.name = monitorname;
+           s_dird.address  = host;
+           s_dird.password = sig;
+           s_dird.hdr.name = monitorname;
 
-	   mitem.type = R_DIRECTOR;
-	   mitem.resource = &s_dird;
-	   mitem.D_sock = NULL;
+           mitem.type = R_DIRECTOR;
+           mitem.resource = &s_dird;
+           mitem.D_sock = NULL;
 
    } else if (strcmp (daemon, "sd") == 0) {
 
-	   if (port != 0)
-	   	 s_stored.SDport = port;
-	   else
-	   	 s_stored.SDport = 9103;
+           if (port != 0)
+                 s_stored.SDport = port;
+           else
+                 s_stored.SDport = 9103;
 
-	   s_stored.address = host;
-	   s_stored.password = sig;
-	   s_stored.hdr.name = monitorname;
+           s_stored.address = host;
+           s_stored.password = sig;
+           s_stored.hdr.name = monitorname;
 
-	   mitem.type = R_STORAGE;
-	   mitem.resource = &s_stored;
-	   mitem.D_sock = NULL;
+           mitem.type = R_STORAGE;
+           mitem.resource = &s_stored;
+           mitem.D_sock = NULL;
 
    } else if (strcmp (daemon, "fd") == 0) {
 
-	   if (port != 0)
-	   	 s_filed.FDport = port;
-	   else
-	   	 s_filed.FDport = 9102;
+           if (port != 0)
+                 s_filed.FDport = port;
+           else
+                 s_filed.FDport = 9102;
 
-	   s_filed.address = host;
-	   s_filed.password = sig;
-	   s_filed.hdr.name = monitorname;
+           s_filed.address = host;
+           s_filed.password = sig;
+           s_filed.hdr.name = monitorname;
 
-	   mitem.type = R_CLIENT;
-	   mitem.resource = &s_filed;
-	   mitem.D_sock = NULL;
+           mitem.type = R_CLIENT;
+           mitem.resource = &s_filed;
+           mitem.D_sock = NULL;
 
    } else {
 
-	   usage();
-	   exit(1);
+           usage();
+           exit(1);
    }
 
 
    if (mitem.type == R_DIRECTOR)
-	   retcode = docmd(&mitem, ".status dir current\n", answer);
+           retcode = docmd(&mitem, ".status dir current\n", answer);
    else
-	   retcode = docmd(&mitem, ".status current\n", answer);
+           retcode = docmd(&mitem, ".status current\n", answer);
 
 
    if (mitem.D_sock) {
-	 bnet_sig(mitem.D_sock, BNET_TERMINATE); /* send EOF */
-	 bnet_close(mitem.D_sock);
+         mitem.D_sock->signal(BNET_TERMINATE); /* send EOF */
+         mitem.D_sock->close();
    }
 
    printf ("%s\n", answer);
@@ -269,7 +267,7 @@ int docmd(monitoritem* item, const char* command, char *answer) {
    int stat;
    char num;
    const char *dname;
-   
+
    dname = "";
 
    if (!item->D_sock) {
@@ -280,34 +278,37 @@ int docmd(monitoritem* item, const char* command, char *answer) {
 
       switch (item->type) {
       case R_DIRECTOR:
-		 dird = (DIRRES*)item->resource;
-		 item->D_sock = bnet_connect(NULL, 0, 0, 0, "Director daemon", dird->address, NULL, dird->DIRport, 0);
-		 dname = "Director";
-		 break;
+                 dird = (DIRRES*)item->resource;
+                 item->D_sock = new_bsock();
+                 item->D_sock->connect(NULL, 0, 0, 0, "Director daemon", dird->address, NULL, dird->DIRport, 0);
+                 dname = "Director";
+                 break;
       case R_CLIENT:
-		 filed = (CLIENT*)item->resource;
-		 item->D_sock = bnet_connect(NULL, 0, 0, 0, "File daemon", filed->address, NULL, filed->FDport, 0);
-		 dname = "FileDaemon";
-		 break;
+                 filed = (CLIENT*)item->resource;
+                 item->D_sock = new_bsock();
+                 item->D_sock->connect(NULL, 0, 0, 0, "File daemon", filed->address, NULL, filed->FDport, 0);
+                 dname = "FileDaemon";
+                 break;
       case R_STORAGE:
-		 stored = (STORE*)item->resource;
-		 item->D_sock = bnet_connect(NULL, 0, 0, 0, "Storage daemon", stored->address, NULL, stored->SDport, 0);
-		 dname = "StorageDaemon";
-		 break;
+                 stored = (STORE*)item->resource;
+                 item->D_sock = new_bsock();
+                 item->D_sock->connect(NULL, 0, 0, 0, "Storage daemon", stored->address, NULL, stored->SDport, 0);
+                 dname = "StorageDaemon";
+                 break;
       default:
-		 printf("Error, currentitem is not a Client, a Storage or a Director..\n");
-		 return STATE_UNKNOWN;
+                 printf("Error, currentitem is not a Client, a Storage or a Director..\n");
+                 return STATE_UNKNOWN;
       }
 
       if (item->D_sock == NULL) {
-      		 sprintf (answer, "BACULA CRITICAL - Cannot connect to %s!", dname);
-		 return STATE_CRITICAL;
+                 sprintf (answer, "BACULA CRITICAL - Cannot connect to %s!", dname);
+                 return STATE_CRITICAL;
       }
 
       if (!authenticate_daemon(item)) {
-	 	sprintf (answer, "BACULA CRITICAL - Cannot authenticate to %s: %s", dname, item->D_sock->msg);
-	 	item->D_sock = NULL;
-	 	return STATE_CRITICAL;
+                sprintf (answer, "BACULA CRITICAL - Cannot authenticate to %s: %s", dname, item->D_sock->msg);
+                item->D_sock = NULL;
+                return STATE_CRITICAL;
       }
 
    }
@@ -316,46 +317,46 @@ int docmd(monitoritem* item, const char* command, char *answer) {
       writecmd(item, command);
 
    while(1) {
-      if ((stat = bnet_recv(item->D_sock)) >= 0) {
-
-	/* welcome message of director */
-	if ((item->type == R_DIRECTOR) && (strncmp(item->D_sock->msg, "Using ", 6) == 0))
-		continue;
-
-	if (sscanf(item->D_sock->msg, OKqstatus, &num) != 1) {
-		/* Error, couldn't find OK */
-		sprintf (answer, "BACULA CRITICAL - %s Status: %s", dname, item->D_sock->msg);
-		return STATE_CRITICAL;
-	} else {
-		sprintf (answer, "BACULA OK - %s Status OK", dname);
-		return STATE_OK;
-	}
+      if ((stat = item->D_sock->recv()) >= 0) {
+
+        /* welcome message of director */
+        if ((item->type == R_DIRECTOR) && (strncmp(item->D_sock->msg, "Using ", 6) == 0))
+                continue;
+
+        if (sscanf(item->D_sock->msg, OKqstatus, &num) != 1) {
+                /* Error, couldn't find OK */
+                sprintf (answer, "BACULA CRITICAL - %s Status: %s", dname, item->D_sock->msg);
+                return STATE_CRITICAL;
+        } else {
+                sprintf (answer, "BACULA OK - %s Status OK", dname);
+                return STATE_OK;
+        }
       }
       else if (stat == BNET_SIGNAL) {
-	 	if (item->D_sock->msglen == BNET_EOD) {
-	    	strcpy(answer, "BACULA WARNING - << EOD >>");
-	    	return STATE_WARNING;
-	 }
-	 else if (item->D_sock->msglen == BNET_SUB_PROMPT) {
-	    strcpy(answer, "BACULA WARNING - BNET_SUB_PROMPT signal received.");
-	    return STATE_WARNING;
-	 }
-	 else if (item->D_sock->msglen == BNET_HEARTBEAT) {
-	    bnet_sig(item->D_sock, BNET_HB_RESPONSE);
-	 }
-	 else {
-		sprintf(answer, "BACULA WARNING - Unexpected signal received : %s ", bnet_sig_to_ascii(item->D_sock));
-	 }
+                if (item->D_sock->msglen == BNET_EOD) {
+                strcpy(answer, "BACULA WARNING - << EOD >>");
+                return STATE_WARNING;
+         }
+         else if (item->D_sock->msglen == BNET_SUB_PROMPT) {
+            strcpy(answer, "BACULA WARNING - BNET_SUB_PROMPT signal received.");
+            return STATE_WARNING;
+         }
+         else if (item->D_sock->msglen == BNET_HEARTBEAT) {
+            item->D_sock->signal(BNET_HB_RESPONSE);
+         }
+         else {
+                sprintf(answer, "BACULA WARNING - Unexpected signal received : %s ", bnet_sig_to_ascii(item->D_sock));
+         }
       }
       else { /* BNET_HARDEOF || BNET_ERROR */
-		 strcpy(answer, "BACULA CRITICAL - ERROR: BNET_HARDEOF or BNET_ERROR");
-		 item->D_sock = NULL;
-		 return STATE_CRITICAL;
+                 strcpy(answer, "BACULA CRITICAL - ERROR: BNET_HARDEOF or BNET_ERROR");
+                 item->D_sock = NULL;
+                 return STATE_CRITICAL;
       }
 
-      if (is_bnet_stop(item->D_sock)) {
-		 item->D_sock = NULL;
-		 return STATE_WARNING;
+      if (item->D_sock->is_stop()) {
+                 item->D_sock = NULL;
+                 return STATE_WARNING;
       }
    }
 }
@@ -364,7 +365,6 @@ void writecmd(monitoritem* item, const char* command) {
    if (item->D_sock) {
       item->D_sock->msglen = strlen(command);
       pm_strcpy(&item->D_sock->msg, command);
-      bnet_send(item->D_sock);
+      item->D_sock->send();
    }
 }
-
diff --git a/examples/python/DirStartUp.py b/examples/python/DirStartUp.py
deleted file mode 100644
index a6f3995..0000000
--- a/examples/python/DirStartUp.py
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-# Bacula Python interface script for the Director
-#
-
-# You must import both sys and bacula
-import sys, bacula
-
-# This is the list of Bacula daemon events that you
-#  can receive.
-class BaculaEvents(object):
-  def __init__(self):
-     # Called here when a new Bacula Events class is
-     #  is created. Normally not used 
-     noop = 1
-
-  def JobStart(self, job):
-     """
-       Called here when a new job is started. If you want
-       to do anything with the Job, you must register
-       events you want to receive.
-     """
-     events = JobEvents()         # create instance of Job class
-     events.job = job             # save Bacula's job pointer
-     job.set_events(events)       # register events desired
-     sys.stderr = events          # send error output to Bacula
-     sys.stdout = events          # send stdout to Bacula
-     jobid = job.JobId; client = job.Client
-     numvols = job.NumVols 
-     job.JobReport="Python Dir JobStart: JobId=%d Client=%s NumVols=%d\n" % (jobid,client,numvols) 
-
-  # Bacula Job is going to terminate
-  def JobEnd(self, job):    
-     jobid = job.JobId
-     client = job.Client 
-     job.JobReport="Python Dir JobEnd output: JobId=%d Status=%s Client=%s.\n" % (jobid, job.JobStatus, client) 
-
-  # Called here when the Bacula daemon is going to exit
-  def Exit(self, job):
-      print "Daemon exiting."
-     
-bacula.set_events(BaculaEvents()) # register daemon events desired
-
-"""
-  There are the Job events that you can receive.
-"""
-class JobEvents(object):
-  def __init__(self):
-     # Called here when you instantiate the Job. Not
-     # normally used
-     noop = 1
-
-  def JobInit(self, job):
-     noop = 1
-     if (job.JobId < 2):
-        startid = job.run("run kernsave")
-        job.JobReport = "Python started new Job: jobid=%d\n" % startid
-     print "name=%s version=%s conf=%s working=%s" % (bacula.Name, bacula.Version, bacula.ConfigFile, bacula.WorkingDir)
-
-  def JobRun(self, job):
-     noop = 1
-
-  def NewVolume(self, job):
-     jobid = job.JobId
-     client = job.Client 
-     numvol = job.NumVols;
-     print job.CatalogRes
-     job.JobReport = "JobId=%d Client=%s NumVols=%d" % (jobid, client, numvol)
-     job.JobReport="Python before New Volume set for Job.\n"
-     Vol = "TestA-%d" % numvol
-     job.JobReport = "Exists=%d TestA-%d" % (job.DoesVolumeExist(Vol), numvol)
-     job.VolumeName="TestA-%d" % numvol 
-     job.JobReport="Python after New Volume set for Job.\n"  
-     return 1
-
-  def VolumePurged(self, job):
-     noop = 1
-
-  # Pass output back to Bacula
-  def write(self, text):
-     self.job.write(text)
-
-  # Open file to be backed up. file is the filename
-  #  NOT YET IMPLEMENTED
-  def open(self, file):
-     print "Open %s called" % file
-     self.fd = open('m.py', 'rb')
-     jobid = self.job.JobId
-     print "Open: JobId=%d" % jobid
-
-  # Read file data into Bacula memory buffer (mem)
-  #  return length read. 0 => EOF, -1 => error
-  #  NOT YET IMPLEMENTED
-  def read(self, mem):
-     print "Read called\n"
-     len = self.fd.readinto(mem)
-     print "Read %s bytes into mem.\n" % len
-     return len
-
-  # Close file
-  #  NOT YET IMPLEMENTED
-  def close(self):
-     self.fd.close()
diff --git a/examples/python/FDStartUp.py b/examples/python/FDStartUp.py
deleted file mode 100644
index 4d53e33..0000000
--- a/examples/python/FDStartUp.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# Bacula Python interface script for the File Daemon
-#
-# You must import both sys and bacula
-import sys, bacula
-
-# This is the list of Bacula daemon events that you
-#  can receive.
-class BaculaEvents(object):
-  def __init__(self):
-     # Called here when a new Bacula Events class is
-     #  is created. Normally not used 
-     noop = 1
-
-  def JobStart(self, job):
-     """
-       Called here when a new job is started. If you want
-       to do anything with the Job, you must register
-       events you want to receive.
-     """
-     events = JobEvents()         # create instance of Job class
-     events.job = job             # save Bacula's job pointer
-     job.set_events(events)       # register events desired
-     sys.stderr = events          # send error output to Bacula
-     sys.stdout = events          # send stdout to Bacula
-     jobid = job.JobId
-     client = job.Client
-     job.JobReport="Python FD JobStart: JobId=%d Client=%s \n" % (jobid,client)
-     return 1
-
-  # Bacula Job is going to terminate
-  def JobEnd(self, job):    
-     jobid = job.JobId
-     client = job.Client 
-     job.JobReport="Python FD JobEnd output: JobId=%d Client=%s.\n" % (jobid, client)
-     
-
-  # Called here when the Bacula daemon is going to exit
-  def Exit(self):
-      noop = 1
-     
-bacula.set_events(BaculaEvents()) # register daemon events desired
-
-"""
-  There are the Job events that you can receive.
-"""
-class JobEvents(object):
-  def __init__(self):
-     # Called here when you instantiate the Job. Not
-     # normally used
-     noop = 1
-
-  # Pass output back to Bacula
-  def write(self, text):
-     self.job.write(text)
-
-  # Open file to be backed up. file is the filename
-  def Python_open(self, file):
-     print "Open %s called" % file
-     self.fd = open(file, 'rb')
-     jobid = self.job.JobId
-     print "Open: %s" % file
- 
-  # Read file data into Bacula memory buffer (mem)
-  #  return length read. 0 => EOF, -1 => error
-  def Python_read(self, mem):
-     print "Read called\n"
-     len = self.fd.readinto(mem)
-     print "Read %s bytes into mem.\n" % len
-     return len
-
-  # Close file
-  def Python_close(self):
-     self.fd.close()
diff --git a/examples/python/SDStartUp.py b/examples/python/SDStartUp.py
deleted file mode 100644
index 1f08bed..0000000
--- a/examples/python/SDStartUp.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# Bacula Python interface script for the Storage Daemon
-#
-# You must import both sys and bacula
-import sys, bacula
-
-# This is the list of Bacula daemon events that you
-#  can receive.
-class BaculaEvents(object):
-  def __init__(self):
-     # Called here when a new Bacula Events class is
-     #  is created. Normally not used 
-     noop = 1
-
-  def JobStart(self, job):
-     """
-       Called here when a new job is started. If you want
-       to do anything with the Job, you must register
-       events you want to receive.
-     """
-     events = JobEvents()         # create instance of Job class
-     events.job = job             # save Bacula's job pointer
-     job.set_events(events)       # register events desired
-     sys.stderr = events          # send error output to Bacula
-     sys.stdout = events          # send stdout to Bacula
-     jobid = job.JobId
-     client = job.Client
-     job.JobReport="Python SD JobStart: JobId=%d Client=%s \n" % (jobid,client)
-     return 1
-
-  # Bacula Job is going to terminate
-  def JobEnd(self, job):    
-     jobid = job.JobId
-     client = job.Client 
-     job.JobReport="Python SD JobEnd output: JobId=%d Client=%s.\n" % (jobid, client)
-#    print "Python SD JobEnd\n"  
-     
-
-  # Called here when the Bacula daemon is going to exit
-  def Exit(self):
-      noop = 1
-     
-bacula.set_events(BaculaEvents()) # register daemon events desired
-
-"""
-  There are the Job events that you can receive.
-"""
-class JobEvents(object):
-  def __init__(self):
-     # Called here when you instantiate the Job. Not
-     # normally used
-     noop = 1
-
-  # Pass output back to Bacula
-  def write(self, text):
-     self.job.write(text)
diff --git a/manpages/Makefile.in b/manpages/Makefile.in
index bbbc6ae..929a97f 100644
--- a/manpages/Makefile.in
+++ b/manpages/Makefile.in
@@ -6,12 +6,10 @@
 
 MAN8 = bacula.8 bacula-dir.8 bacula-fd.8 bacula-sd.8 \
        bconsole.8 bcopy.8 bextract.8 bls.8 bscan.8 btape.8 \
-       btraceback.8 dbcheck.8 bwild.8 bregex.8 
+       btraceback.8 dbcheck.8 bwild.8 bregex.8 bpluginfo.8
 
-MAN1 = bacula-tray-monitor.1 bacula-bwxconsole.1 bsmtp.1 bat.1
+MAN1 = bsmtp.1 bat.1
       
-# bacula-bgnome-console.1
-
 all:
 
 nothing:
diff --git a/manpages/bacula-bgnome-console.1 b/manpages/bacula-bgnome-console.1
deleted file mode 100644
index daf85c6..0000000
--- a/manpages/bacula-bgnome-console.1
+++ /dev/null
@@ -1,45 +0,0 @@
-.\"                                      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 BGNOME\-CONSOLE 1 "April 24, 2007" "Kern Sibbald" "Network backup, recovery and verification"
-.\" Please adjust this date whenever revising the manpage.
-.\"
-.\" Some roff macros, for reference:
-.\" .nh        disable hyphenation
-.\" .hy        enable hyphenation
-.\" .ad l      left justify
-.\" .ad b      justify to both left and right margins
-.\" .nf        disable filling
-.\" .fi        enable filling
-.\" .br        insert line break
-.\" .sp <n>    insert n+1 empty lines
-.\" for manpage-specific macros, see man(7)
-.SH NAME
- bgnome\-console \- Bacula's management Console, GUI version.
-.br
-.SH DESCRIPTION
-This manual page documents briefly the
-.B bgnome\-console
-command, the Gnome GUI version of the Bacula administration console.
-.sp 2
-.PP
-.\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invoke bold face and italics, 
-.\" respectively.
-The Console allows the administrator or user to communicate with the
-Bacula Director. This is the Gnome version. It will also run under KDE.
-.PP
-This Gnome GUI interface is for the moment far from complete but is quite
-functional, having all the capabilities of the shell Console plus a number
-of GUI extensions that make interaction easier with point and click.
-.BR
-.SH SEE ALSO
-.BR bacula\-dir (8),
-.BR bls (1),
-.BR bextract (1).
-.br
-.SH AUTHOR
-This manual page was written by Jose Luis Tallon
-.nh 
-<jltallon at adv\-solutions.net>.
diff --git a/manpages/bacula-bwxconsole.1 b/manpages/bacula-bwxconsole.1
deleted file mode 100644
index e4ad3b5..0000000
--- a/manpages/bacula-bwxconsole.1
+++ /dev/null
@@ -1,45 +0,0 @@
-.\"                                      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 BWX-CONSOLE 1 "24 April 2007" "Kern Sibbald" "Network backup, recovery and verification"
-.\" Please adjust this date whenever revising the manpage.
-.\"
-.SH NAME
- bwx-console \- Bacula's management Console
-.SH SYNOPSIS
-.B bwx-console
-.RI [options]
-.br
-.SH DESCRIPTION
-This manual page documents briefly the
-.B bwx-console
-command, the wxWidgets version of the Bacula administration console.
-.PP
-.SH OPTIONS
-bwx-console [\-s] [\-c config_file] [\-d debug_level] [-t]
-.TP
-.B \-c <config>
-Specify configuration file.
-.TP
-.B \-d <nn>
-Set debug level to \fInn\fP.
-.TP
-.B \-s
-No signals.
-.TP
-.B \-t
-Test config mode: read configuration and exit.
-.TP
-.B \-?
-Show version and usage of program.
-.SH SEE ALSO
-.BR bacula-dir (8),
-.BR bacula-bgnome-console (1)
-.BR bls (1),
-.BR bextract (1).
-.br
-.SH AUTHOR
-This manual page was written by Jose Luis Tallon
-.nh 
-<jltallon at adv\-solutions.net>.
diff --git a/manpages/bacula-dir.8 b/manpages/bacula-dir.8
index 50056e8..e3664b6 100644
--- a/manpages/bacula-dir.8
+++ b/manpages/bacula-dir.8
@@ -18,7 +18,7 @@ This manual page documents briefly the
 command.
 .br
 Bacula's Director Daemon acts as the controller of the
-network backup system: it is responsible for scheduling and 
+network backup system: it is responsible for scheduling and
 coordinating backups across the network.
 .SH OPTIONS
 .TP
@@ -37,6 +37,9 @@ Run in foreground (for debugging).
 .BI \-g\  group
 Set the group/gid to run as.
 .TP
+.BI \-m
+Print kaboom output (for debugging).
+.TP
 .BI \-r\  job
 Run <job>.
 .TP
diff --git a/manpages/bacula-fd.8 b/manpages/bacula-fd.8
index 2dfbf9e..6a4d7fb 100644
--- a/manpages/bacula-fd.8
+++ b/manpages/bacula-fd.8
@@ -21,7 +21,7 @@ Bacula's File Daemon acts as the interface between the Bacula
 network backup system and the filesystems to be backed up: it is
 responsible for reading/writing/verifying the files to be
 backup'd/verified/restored. Network transfer can optionally be
-compressed. 
+compressed.
 .SH OPTIONS
 .TP
 .BI \-c\   file
@@ -39,12 +39,12 @@ Run in foreground (for debugging).
 .BI \-g\  group
 Set the group/gid to run as.
 .TP
-.BI \-p
-Proceed inspite of I/O errors
-.TP
 .BI \-k
 Keep readall permission when dropping privileges.
 .TP
+.BI \-m
+Print kaboom output (for debugging).
+.TP
 .BI \-s
 No signals (for debugging).
 .TP
diff --git a/manpages/bacula-sd.8 b/manpages/bacula-sd.8
index 6dd36dc..aed27a3 100644
--- a/manpages/bacula-sd.8
+++ b/manpages/bacula-sd.8
@@ -40,6 +40,9 @@ Set the group/gid to run as.
 .BI \-p
 Proceed in spite of I/O errors
 .TP
+.BI \-m
+Print kaboom output (for debugging)
+.TP
 .BI \-s
 No signals (for debugging).
 .TP
diff --git a/manpages/bacula-tray-monitor.1 b/manpages/bacula-tray-monitor.1
index 811a4e4..39a2869 100644
--- a/manpages/bacula-tray-monitor.1
+++ b/manpages/bacula-tray-monitor.1
@@ -25,6 +25,9 @@ Specify configuration file.
 .B \-d <nn>
 Set debug level to \fInn\fP.
 .TP
+.B \-dt
+Print timestamp in debug output.
+.TP
 .B \-t
 Test config mode: read configuration and exit.
 .TP
@@ -32,7 +35,6 @@ Test config mode: read configuration and exit.
 Show version and usage of program.
 .SH SEE ALSO
 .BR bacula-dir (8),
-.BR bacula-wxconsole (1)
 .BR bls (1),
 .BR bextract (1).
 .br
diff --git a/manpages/bacula.8 b/manpages/bacula.8
index da498c3..fd05604 100644
--- a/manpages/bacula.8
+++ b/manpages/bacula.8
@@ -6,7 +6,7 @@
 .\" TP hanging label
 .TH Bacula 8 "The Network Backup Solution"
 .SH NAME
-Bacula \- The Network Backup Solution            
+Bacula \- The Network Backup Solution
 .SH SYNOPSIS
 .B bacula-dir \- Director
 .br
@@ -63,7 +63,7 @@ in some of the documentation, the File daemon is referred to as
 the Client (for example in Bacula's configuration file).  In
 addition to Unix/Linux File daemons, there is a Windows File
 daemon (normally distributed in binary format).  The Windows File
-daemon runs on all currently known Windows versions (2K, 2003,  XP, 
+daemon runs on all currently known Windows versions (2K, 2003,  XP,
 and Vista).
 
 .LP
@@ -91,7 +91,7 @@ and SQLite3, one of which must be chosen when building Bacula.
 .SH OPTIONS
 See the HTML/PDF documentation at:
 .br
- <http://www.bacula.org>          
+ <http://www.bacula.org>
 .br
 for details of the command line options.
 
diff --git a/manpages/bconsole.8 b/manpages/bconsole.8
index a765b2e..b536783 100644
--- a/manpages/bconsole.8
+++ b/manpages/bconsole.8
@@ -18,6 +18,12 @@ command.
 .PP
 .SH OPTIONS
 .TP
+.BI \-D\  dir
+Select a Director.
+.TP
+.BI \-l
+List defined Directors.
+.TP
 .BI \-c\  config
 Specify configuration file.
 .TP
@@ -33,6 +39,9 @@ No conio (for scripting).
 .B \-s
 No signals (for debugging).
 .TP
+.b \-u\  nn
+Set command execution timeout to \fInn\fP seconds.
+.TP
 .B \-t
 Test the configuration file and report errors.
 .TP
@@ -45,5 +54,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/bcopy.8 b/manpages/bcopy.8
index 5a1a5b2..df8e456 100644
--- a/manpages/bcopy.8
+++ b/manpages/bcopy.8
@@ -8,9 +8,9 @@
 .SH NAME
  bcopy \- Bacula's 'Copy from tape'
 .SH SYNOPSIS
-.B bcopy 
+.B bcopy
 .RI [ options ]
-.I input-archive 
+.I input-archive
 .I output-archive
 .br
 .SH DESCRIPTION
@@ -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 invoke 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.
@@ -59,5 +59,5 @@ Set verbose mode.
 .br
 .SH AUTHOR
 This manual page was written by Jose Luis Tallon
-.nh 
+.nh
 <jltallon at adv\-solutions.net>.
diff --git a/manpages/bextract.8 b/manpages/bextract.8
index 0a1b0c5..ee7b9aa 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 invoke 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.
@@ -59,5 +59,5 @@ Specify volume names.
 .br
 .SH AUTHOR
 This manual page was written by Jose Luis Tallon
-.nh 
+.nh
 <jltallon at adv\-solutions.net>.
diff --git a/manpages/bls.8 b/manpages/bls.8
index f155392..f413f82 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 invoke 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.
@@ -59,7 +59,7 @@ List jobs.
 .TP
 .BI \-k
 List blocks.
-.TP 
+.TP
 .I (no \-j or \-k option)
 List saved files
 .TP
@@ -80,5 +80,5 @@ Set verbose mode.
 .br
 .SH AUTHOR
 This manual page was written by Jose Luis Tallon
-.nh 
+.nh
 <jltallon at adv\-solutions.net>.
diff --git a/manpages/bpluginfo.8 b/manpages/bpluginfo.8
index 683d5e6..fbf6b37 100644
--- a/manpages/bpluginfo.8
+++ b/manpages/bpluginfo.8
@@ -17,7 +17,7 @@ bpluginfo \- Bacula Plugin information utility
 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 
+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.
@@ -35,17 +35,17 @@ A summary of options is included below.
 Show usage of the program.
 .TP
 .BI \-v
-Verbose information printing all available data from the plugin, including 
+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 
+Option incompatible with
 .B -f
 option.
 .TP
 .BI \-f
-Display information about implemented API functions. 
+Display information about implemented API functions.
 .TP
 .BI \-a\ <api>
 You can supply the plugin initialization function with a particular Bacula
@@ -68,7 +68,7 @@ This is an example of bplufinfo usage with verbose option (-v) and default plugi
 .RS
 .nf
 
-\fB$ bpluginfo -v bpipe-fd.so 
+\fB$ bpluginfo -v bpipe-fd.so
 
 Plugin type:            File Daemon plugin
 Plugin magic:           *FDPluginData*
diff --git a/manpages/bregex.8 b/manpages/bregex.8
index 2e9e4c8..6004d8d 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 invoke 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.
@@ -45,9 +45,9 @@ Set debug level to \fInn\fP.
 Print timestamp in debug output
 .TP
 .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 regular expression 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. 
+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 regular expression 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.
 .TP
-.BI \-n 
+.BI \-n
 Print lines that do not match
 .TP
 .BI \-l
@@ -57,5 +57,5 @@ Suppress lines numbers.
 .br
 .SH AUTHOR
 This manual page was written by Bruno Friedmann
-.nh 
+.nh
 <bruno at ioda\-net.ch>.
diff --git a/manpages/bscan.8 b/manpages/bscan.8
index e6ff005..fe7520a 100644
--- a/manpages/bscan.8
+++ b/manpages/bscan.8
@@ -18,21 +18,21 @@ The purpose of bscan is to read (scan) a Bacula Volume and to recreate
 or update the database contents with the information found on the Volume.
 This is done in a non-destructive way. This permits restoring database
 entries that have been lost by pruning, purging, deleting, or a database
-corruption problem.        
- 
+corruption problem.
+
 .LP
 Normally, it should not be necessary to run the bscan command because
 the database is self maintaining, and most corrupted databases can be
 repaired by the tools provided by the database vendors.
 In addition, if you have maintained bootstrap files during backups, you
-should be able to recover all your data from the bootstrap file    
+should be able to recover all your data from the bootstrap file
 without needed an up to date catalog.
 
 .B bscan
 command.
 .PP
 .\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invoke 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.
@@ -99,7 +99,7 @@ Specify working directory (default from conf file)
 .br
 .SH AUTHOR
 This manual page was written by Jose Luis Tallon
-.nh 
+.nh
 <jltallon at adv\-solutions.net>,
 for the Debian GNU/Linux system (but may be used by others).
- 
+
diff --git a/manpages/btape.8 b/manpages/btape.8
index dff8d0e..2188ce2 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 invoke 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.
@@ -38,9 +38,6 @@ Set debug level to \fInn\fP.
 .BI \-p
 Proceed inspite of I/O errors.
 .TP
-.B \-t
-Open the default tape device.
-.TP
 .B \-s
 No signals (for debugging).
 .TP
@@ -57,7 +54,7 @@ backspace file
 .TP
 .B bsr
 backspace record
-.TP 
+.TP
 .B cap
 list device capabilities
 .TP
@@ -139,5 +136,5 @@ quick fill command
 .br
 .SH AUTHOR
 This manual page was written by Jose Luis Tallon
-.nh 
+.nh
 <jltallon at adv\-solutions.net>.
diff --git a/manpages/btraceback.8 b/manpages/btraceback.8
index 3a76d47..dc8de3c 100644
--- a/manpages/btraceback.8
+++ b/manpages/btraceback.8
@@ -9,8 +9,8 @@
  btraceback \- wrapper script around gdb and bsmtp
 
 .SH SYNOPSIS
-.B btraceback 
-.I /path/to/binary 
+.B btraceback
+.I /path/to/binary
 .I pid
 
 .SH DESCRIPTION
@@ -61,7 +61,7 @@ the GDB command batch used to output a stack trace
 .RE
 
 .SH AUTHOR
-This manual page was written by Lucas B. Cohen 
+This manual page was written by Lucas B. Cohen
 .nh
 <lbc at members.fsf.org>
 .SH SEE ALSO
diff --git a/platforms/rpms/redhat/bacula-bat.spec.in b/platforms/rpms/redhat/bacula-bat.spec.in
index 21e6384..ecfcb73 100644
--- a/platforms/rpms/redhat/bacula-bat.spec.in
+++ b/platforms/rpms/redhat/bacula-bat.spec.in
@@ -1,20 +1,27 @@
 #
 # Bacula RPM spec file
 #
-# Copyright (C) 2000-2012 Bacula Systems SA
+# Copyright (C) 2000-2014 Bacula Systems SA
+#
 
 # Platform Build Configuration
 
 # basic defines for every build
-%define _release           1
+%define _release           @RELEASE@
 %define _version           @VERSION@
-%define depkgs_qt_version  24Dec11
+%define depkgs_qt_version  @DEPKGS_QT_VERSION@
 %define product            bacula
+%define base_package_name %{product}
+
+# Don't strip binaries
+%define __os_install_post %{nil}
+%define __debug_install_post %{nil}
+%define debug_package %{nil}
 
-# this is the QT version in depkgs_qt
-%define qt4ver             4.7.4
+# this is the Qt version in depkgs_qt
+%define qt4ver             @BQT_VERSION@
 
-%define _packager Kern Sibbald <kern at baculasystems.com>
+%define _packager Kern Sibbald <kern at sibbald.com>
 
 %define manpage_ext gz
 
@@ -30,6 +37,8 @@
 %define _subsysdir     /opt/bacula/working
 %define sqlite_bindir  /opt/bacula/sqlite
 %define _mandir        /usr/share/man
+%define docs_dir       /opt/bacula/docs
+%define archive_dir    /opt/bacula/archive
 %define sysconf_dir    /opt/bacula/etc
 %define script_dir     /opt/bacula/scripts
 %define working_dir    /opt/bacula/working
@@ -90,8 +99,11 @@
 exit 1
 %endif
 
+%define sqlite 0
+%{?build_sqlite:%define sqlite 1}
+
 Summary: Bacula - The Network Backup Solution
-Name: %{product}-bat
+Name: %{base_package_name}-bat
 Version: %{_version}
 Release: %{_release}
 Group: System Environment/Daemons
@@ -116,7 +128,7 @@ Requires: libgcc
 Requires: libpng
 Requires: libstdc++
 Requires: zlib
-Requires: %{product}-libs
+Requires: %{base_package_name}-libs
 
 %if %{suse}
 Requires: freetype2
@@ -161,7 +173,7 @@ This is the Bacula Administration Tool (bat) graphical user interface package.
 It is an add-on to the client or server packages.
 
 # Don't strip symbols
-%define debug_package %{nil} 
+%define debug_package %{nil}
 
 # Must explicitly enable debug pkg on SuSE
 # but not in opensuse_bs
@@ -206,7 +218,7 @@ cd ${cwd}
 %endif
 
 # hostname is the build hostname, so use XXX_HOSTNAME_XXX for Address parameter
-sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.conf.in src/qt-console/bat.conf.in src/tray-monitor/tray-monitor.conf.in 
+sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.conf.in src/qt-console/bat.conf.in
 
 # Main Bacula configuration with bat
 %configure \
@@ -214,6 +226,8 @@ sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.con
         --sbindir=%{_sbindir} \
         --sysconfdir=%{sysconf_dir} \
         --mandir=%{_mandir} \
+        --docdir=%{docs_dir} \
+        --with-archivedir=%{archive_dir} \
         --with-scriptdir=%{script_dir} \
         --with-working-dir=%{working_dir} \
         --with-plugindir=%{script_dir} \
@@ -273,6 +287,8 @@ ln -sf consolehelper $RPM_BUILD_ROOT/usr/bin/bat
 %attr(-, root, %{daemon_group}) %{_sbindir}/bat
 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bat.conf
+%attr(-, root, %{daemon_group}) %{docs_dir}/*.html
+%attr(-, root, %{daemon_group}) %{docs_dir}/*.png
 /usr/share/pixmaps/bat_icon.png
 /usr/share/applications/bat.desktop
 
@@ -303,19 +319,21 @@ fi
 %post
 if [ -d %{sysconf_dir} ]; then
    cd %{sysconf_dir}
-   for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
-      pass=`openssl rand -base64 33`
-      for file in *.conf; do
-         sed "s@${string}@${pass}@g" $file > $file.new
-         cp -f $file.new $file; rm -f $file.new
-      done
-   done
-# put actual hostname in conf file
-   host=`hostname`
-   string="XXX_HOSTNAME_XXX"
+   if [ ! -f .rpm.sed ]; then
+       (umask 0177
+        echo "# This file is used to ensure that all passwords will" > .rpm.sed
+        echo "# match between configuration files"                  >> .rpm.sed
+       )
+       for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+           pass=`openssl rand -base64 33`
+           echo "s@${string}@${pass}@g" >> .rpm.sed
+       done
+   fi
+   host=`hostname -s`
    for file in *.conf; do
-      sed "s@${string}@${host}@g" $file >$file.new
-      cp -f $file.new $file; rm -f $file.new
+      sed -f .rpm.sed $file > $file.new
+      sed "s at XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
+      rm -f $file.new
    done
 fi
 /sbin/ldconfig
@@ -325,17 +343,5 @@ fi
 rm -rf $RPM_BUILD_DIR/depkgs-qt
 
 %changelog
-* Sun Oct 03 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix bug 1639
-* Sun Mar 14 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- Fix for QT mkspecs location on FC12
-- allow user to build without embedded static QT
-* Sat Feb 27 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add dependency on bacula-libs
-* Sat Feb 13 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- create file to allow bat to run nonroot with kdesu
-- add dependency information
-* Sat Jan 30 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix consolehelper/xsu for suse packages
 * Sat Aug 1 2009 Kern Sibbald <kern at sibbald.com>
 - Split bat into separate bacula-bat.spec
diff --git a/platforms/rpms/redhat/bacula-docs.spec.in b/platforms/rpms/redhat/bacula-docs.spec.in
index e6f3b2f..2c24b06 100644
--- a/platforms/rpms/redhat/bacula-docs.spec.in
+++ b/platforms/rpms/redhat/bacula-docs.spec.in
@@ -1,12 +1,12 @@
 #
 # Bacula RPM spec file
 #
-# Copyright (C) 2000-2012 Bacula Systems SA
+# Copyright (C) 2000-2014 Bacula Systems SA
 
 # Platform Build Configuration
 
 # basic defines for every build
-%define _release           1
+%define _release           @RELEASE@
 %define _version           @VERSION@
 %define product            bacula
 %define _packager Kern Sibbald <kern at sibbald.com>
diff --git a/platforms/rpms/redhat/bacula-mtx.spec.in b/platforms/rpms/redhat/bacula-mtx.spec.in
index 44e5fbc..eee1c7b 100644
--- a/platforms/rpms/redhat/bacula-mtx.spec.in
+++ b/platforms/rpms/redhat/bacula-mtx.spec.in
@@ -1,19 +1,23 @@
 #
 # Bacula RPM spec file
 #
-# Copyright (C) 2000-2012 Bacula Systems SA
+# Copyright (C) 2000-2014 Bacula Systems SA
 
 # Platform Build Configuration
 
 # basic defines for every build
-%define _release           1
+%define _release           @RELEASE@
 %define _version           @VERSION@
 %define product            bacula
-%define depkgs_version     24Dec11
-%define _packager Kern Sibbald <kern at baculasystems.com>
-
+%define depkgs_version     @DEPKGS_VERSION@
+%define _packager Kern Sibbald <kern at sibbald.com>
 %define manpage_ext gz
 
+# Don't strip binaries
+%define __os_install_post %{nil}
+%define __debug_install_post %{nil}
+%define debug_package %{nil}
+
 %define single_dir 0
 %{?single_dir_install:%define single_dir 1}
 
diff --git a/platforms/rpms/redhat/bacula.spec.in b/platforms/rpms/redhat/bacula.spec.in
index 603ac9f..b9a1697 100644
--- a/platforms/rpms/redhat/bacula.spec.in
+++ b/platforms/rpms/redhat/bacula.spec.in
@@ -1,19 +1,26 @@
 # Bacula RPM spec file
 #
-# Copyright (C) 2000-2012 Bacula Systems SA
+# Copyright (C) 2000-2014 Bacula Systems SA
+#
 
 # Platform Build Configuration
 
 # basic defines for every build
-%define _release           1
+%define _release           @RELEASE@
 %define _version           @VERSION@
 %define product            bacula
-%define _packager Kern Sibbald <kern at baculasystems.com>
-%define depkgs_version 24Dec11
+%define _packager Kern Sibbald <kern at sibbald.com>
+%define depkgs_version @DEPKGS_VERSION@
+
+# Don't strip binaries
+%define __os_install_post %{nil}
+%define __debug_install_post %{nil}
+%define debug_package %{nil}
 
 %define postgres_version 8
 %define pgre84 0
 %{?build_rhel5:%define pgre84 1}
+%{?build_el5:%define pgre84 1}
 %if %{pgre84}
 %define postgres_package postgresql84
 %define postgres_server_package postgresql84-server
@@ -35,12 +42,15 @@
 %define _subsysdir     /opt/bacula/working
 %define sqlite_bindir  /opt/bacula/sqlite
 %define _mandir        /usr/share/man
+%define docs_dir       /opt/bacula/docs
+%define archive_dir    /opt/bacula/archive
 %define sysconf_dir    /opt/bacula/etc
 %define script_dir     /opt/bacula/scripts
 %define working_dir    /opt/bacula/working
 %define pid_dir        /opt/bacula/working
 %define plugin_dir     /opt/bacula/plugins
 %define lib_dir        /opt/bacula/lib
+%define log_dir        /opt/bacula/log
 %else
 %define _prefix        /usr
 %define _sbindir       %_prefix/sbin
@@ -54,6 +64,7 @@
 %define pid_dir        /var/run
 %define plugin_dir     %_libdir/bacula/plugins
 %define lib_dir        %_libdir/bacula/lib
+%define log_dir        %_libdir/bacula/log
 %endif
 
 # Daemon user:group Don't change them unless you know what you are doing
@@ -66,168 +77,20 @@
 
 %define depkgs ../depkgs
 
-# probems with mandriva build: 
+# probems with mandriva build:
 # nothing provides libbonobo2_0-devel, nothing provides libbonoboui2_0-devel
 
-# set Macros by opensuse_bs, see http://en.opensuse.org/Build_Service/cross_distribution_package_how_to
-#openSUSE 11.1          %if 0%{?suse_version} == 1110  
-#openSUSE 11.0          %if 0%{?suse_version} == 1100   
-#openSUSE 10.3          %if 0%{?suse_version} == 1030   
-#openSUSE 10.2          %if 0%{?suse_version} == 1020   
-#SUSE Linux 10.1        %if 0%{?suse_version} == 1010   
-#SUSE Linux 10.0        %if 0%{?suse_version} == 1000   
-#SUSE Linux 9.3         %if 0%{?suse_version} == 930    
-#SLES 9                 %if 0%{?sles_version} == 9      also set: %if 0%{?suse_version} == 910
-#SLE 10                 %if 0%{?sles_version} == 10     also set: %if 0%{?suse_version} == 1010
-#SLE 11                 %if 0%{?sles_version} == 11     also set: %if 0%{?suse_version} == 1110
-#CentOS 5               %if 0%{?centos_version} == 501  
-#RHEL 4                 %if 0%{?rhel_version} == 406    
-#RHEL 5                 %if 0%{?rhel_version} == 501    
-#Fedora 6 with Extras   %if 0%{?fedora_version} == 6    
-#Fedora 7 with Extras   %if 0%{?fedora_version} == 7    
-#Fedora 8 with Extras   %if 0%{?fedora_version} == 8    
-#Fedora 9 with Extras   %if 0%{?fedora_version} == 9    
-#Fedora 10 with Extras  %if 0%{?fedora_version} == 10   
-#Mandriva 2006          %if 0%{?mandriva_version} == 2006       
-#Mandriva 2007          %if 0%{?mandriva_version} == 2007       
-#Mandriva 2008          %if 0%{?mandriva_version} == 2008       
-
-
-%if 0%{?opensuse_bs}
-# am I running in opensuse build service?
-# TODO: seems to make problems
-
-# Build Service: Determine Distribution
-
-%ifarch x86_64
- %define build_x86_64 1
-%endif
-
-
-%if 0%{?fedora_version} || 0%{?rhel_version} || 0%{?centos_version}
-BuildRequires: GConf2-devel
-BuildRequires: freetype-devel
-BuildRequires: libtermcap-devel
-BuildRequires: shadow-utils
-%endif
-
-
-%if 0%{?mandriva_version} == 2007
-%define build_mdv 1
-%define _dist "Mandriva 2007"
-%endif
-
-%if 0%{?fedora_version} == 8
-%define build_fc8 1
-%define _dist "Fedora Core 8"
-BuildRequires: redhat-release
-%endif
-
-%if 0%{?fedora_version} == 9
-%define build_fc9 1
-%define _dist "Fedora Core 9"
-BuildRequires: redhat-release
-%endif
-
-
-%if 0%{?fedora_version} == 10
-%define build_fc9 1
-%define _dist "Fedora Core 10"
-BuildRequires: PolicyKit-gnome
-BuildRequires: fedora-release
-%endif
-
-%if 0%{?fedora_version} == 11
-%define build_fc9 1
-%define _dist "Fedora Core 11"
-BuildRequires: PolicyKit-gnome
-BuildRequires: fedora-release
-%endif
-
-%if 0%{?rhel_version} == 501
-%define build_rhel5 1
-%define _dist "Red Hat Enterprise Linux Server release 5"
-BuildRequires: redhat-release
-%endif
-
-%if 0%{?rhel_version} == 406
-%define build_rhel4 1
-%define _dist "Red Hat Enterprise Linux Server release 4"
-BuildRequires: redhat-release
-%endif
-
-
-%if 0%{?centos_version} == 501
-%define build_centos5 1
-%define _dist "CentOS 5"
-BuildRequires: redhat-release
-%endif
-
-
-%if 0%{?suse_version} == 1020
-%define build_su102 1
-%define _dist "OpenSUSE 10.2"
-BuildRequires: suse-release
-%endif
-
-
-%if 0%{?suse_version} == 1030
-%define build_su103 1
-%define _dist "OpenSUSE 10.3"
-BuildRequires: suse-release
-%endif
-
-%if 0%{?suse_version} == 1100
-%define build_su110 1
-%define _dist "SUSE 11"
-BuildRequires: suse-release
-%endif
-
-
-%if 0%{?suse_version} == 1110
-%define build_su111 1
-%define _dist "SUSE 11"
-%endif
-
-%if 0%{?suse_version} == 1120
-%define build_su112 1
-%define _dist "SUSE 11"
-%endif
-
-
-%if 0%{?sles_version} == 9
-%define build_su9 1
-%define _dist "SLES 9"
-%endif
-
-
-%if 0%{?sles_version} == 10
-%define build_su10 1
-%define _dist "SLE 10"
-%endif
-
-
-%if 0%{?sles_version} == 11
-%define build_su111 1
-%define _dist "SLES 11"
-%endif
-
-%endif 
-# opensuse-bs?
-
-
-# any patches for this release
-# be sure to check the setup section for patch macros
-
 #--------------------------------------------------------------------------
 # it should not be necessary to change anything below here for a release
 # except for patch macros in the setup section
 #--------------------------------------------------------------------------
 
+%define base_package_name %{product}
+
 %{?contrib_packager:%define _packager %{contrib_packager}}
 
 Summary: Bacula - The Network Backup Solution
-Name: %{product}
+Name: %{base_package_name}
 Version: %{_version}
 Release: %{_release}
 Group: System Environment/Daemons
@@ -238,15 +101,15 @@ Vendor: The Bacula Team
 Packager: %{_packager}
 Prefix: %{_prefix}
 
-Source0: http://www.prdownloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
 # opensuse build service changes the release itself
 # what happens if the release is not 1? DSB
+Source0: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.tar.gz
+Source1: http://www.prdownloads.sourceforge.net/bacula/%{product}-%{version}.tar.gz
 %if 0%{?opensuse_bs}
-Source1: Release_Notes-%{version}-1.tar.gz
+Source2: Release_Notes-%{version}-1.tar.gz
 %else
-Source1: Release_Notes-%{version}-%{release}.tar.gz
+Source2: Release_Notes-%{version}-%{release}.tar.gz
 %endif
-Source2: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.tar.gz
 
 # define the basic package description
 %define blurb Bacula - The Leading Open Source Backup Solution.
@@ -275,28 +138,12 @@ Source2: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.
 %define rh9 0
 %{?build_rh9:%define rh9 1}
 # Fedora Core build
-%define fc1 0
-%{?build_fc1:%define fc1 1}
-%define fc3 0
-%{?build_fc3:%define fc3 1}
-%define fc4 0
-%{?build_fc4:%define fc4 1}
-%define fc5 0
-%{?build_fc5:%define fc5 1}
-%define fc6 0
-%{?build_fc6:%define fc6 1}
-%define fc7 0
-%{?build_fc7:%define fc7 1}
-%define fc8 0
-%{?build_fc8:%define fc8 1}
-%define fc9 0
-%{?build_fc9:%define fc9 1}
-%define fc10 0
-%{?build_fc10:%define fc10 1}
-%define fc11 0
-%{?build_fc11:%define fc11 1}
-%define fc12 0
-%{?build_fc12:%define fc12 1}
+%define fc16 0
+%{?build_fc16:%define fc16 1}
+%define fc17 0
+%{?build_fc17:%define fc17 1}
+%define fc18 0
+%{?build_fc18:%define fc18 1}
 # Whitebox Enterprise build
 %define wb3 0
 %{?build_wb3:%define wb3 1}
@@ -307,11 +154,16 @@ Source2: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.
 %define rhel4 0
 %{?build_rhel4:%define rhel4 1}
 %{?build_rhel4:%define fc3 1}
+%{?build_el4:%define rhel4 1}
+%{?build_el4:%define fc3 1}
 %define rhel5 0
 %{?build_rhel5:%define rhel5 1}
 %{?build_rhel5:%define fc6 1}
+%{?build_el5:%define rhel5 1}
+%{?build_el5:%define fc6 1}
 %define rhel6 0
 %{?build_rhel6:%define rhel6 1}
+%{?build_el6:%define rhel6 1}
 # CentOS build
 %define centos3 0
 %{?build_centos3:%define centos3 1}
@@ -349,6 +201,10 @@ Source2: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.
 %{?build_su111:%define su111 1}
 %define su112 0
 %{?build_su112:%define su112 1}
+%define su120 0
+%{?build_su120:%define su120 1}
+%define su131 0
+%{?build_su131:%define su131 1}
 # Mandrake builds
 %define mdk 0
 %{?build_mdk:%define mdk 1}
@@ -366,11 +222,11 @@ Source2: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.
 %define rhat 1
 %endif
 %define fed 0
-%if %{fc1} || %{fc3} || %{fc4} || %{fc5} || %{fc6} || %{fc7} || %{fc8} || %{fc9} || %{fc10} || %{fc11} || %{fc12}
+%if %{fc16} || %{fc17} || %{fc18}
 %define fed 1
 %endif
 %define suse 0
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111} || %{su112}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111} || %{su112} || %{su120} || %{su131}
 %define suse 1
 %endif
 %define rhel 0
@@ -390,7 +246,7 @@ exit 1
 %endif
 
 # distribution-specific directory for logwatch
-%if %{wb3} || %{rh7} || %{rh8} || %{rh9} || %{fc1} || %{fc3} || %{fc4}
+%if %{wb3} || %{rh7} || %{rh8} || %{rh9}
 %define logwatch_dir /etc/log.d
 %else
 %define logwatch_dir /etc/logwatch
@@ -429,7 +285,7 @@ exit 1
 %{?build_x86_64:%define x86_64 1}
 
 # check what distribution we are
-%if %{fc1} || %{fc3} || %{fc4} || %{fc5} || %{fc7} || %{fc8} || %{fc9} || %{fc10} || %{fc11} || %{fc12}
+%if %{fc16} || %{fc17} || %{fc18}
 %define _dist %(grep Fedora /etc/redhat-release)
 %endif
 %if %{centos5} || %{centos4} || %{centos3}
@@ -476,7 +332,7 @@ BuildRequires: sysconfig
 
 # should we turn on python support
 %define python 0
-%{?build_python:%define python 1}
+%{?build_python:%define python 0}
 
 # should we enable tcp wrappers support
 %define tcpwrappers 1
@@ -502,7 +358,7 @@ BuildRequires: sysconfig
 
 BuildRequires: gcc, gcc-c++, make, autoconf
 BuildRequires: glibc, glibc-devel
-BuildRequires: ncurses-devel, perl, readline-devel
+BuildRequires: ncurses-devel, readline-devel
 BuildRequires: libstdc++-devel, zlib-devel
 BuildRequires: openssl-devel
 BuildRequires: libacl-devel
@@ -523,12 +379,6 @@ BuildRequires: libstdc++-static-devel
 BuildRequires: glibc-static-devel
 %endif
 
-%if %{suse}
-BuildRequires: termcap
-%else
-BuildRequires: libtermcap-devel
-%endif
-
 %if %{mysql} && ! %{suse}
 BuildRequires: mysql-devel
 %endif
@@ -572,9 +422,6 @@ Requires: glibc, readline, %{name}-libs
 
 %if %{suse}
 Conflicts: bacula
-Requires: termcap
-%else
-Requires: libtermcap
 %endif
 
 %if %{mysql}
@@ -644,12 +491,6 @@ Provides: %{product}-libs
 Requires: libstdc++, zlib, openssl
 Requires: glibc, readline, %{name}-libs
 
-%if %{suse}
-Requires: termcap
-%else
-Requires: libtermcap
-%endif
-
 %if %{python}
 Requires: python >= %{pyver}
 %endif
@@ -665,7 +506,7 @@ Requires: python >= %{pyver}
 %{blurb7}
 %{blurb8}
 
-This is the File daemon (Client) only package. It includes the command line 
+This is the File daemon (Client) only package. It includes the command line
 console program.
 %if %{python}
 This build includes python scripting support.
@@ -713,9 +554,6 @@ Group: System Environment/Daemons
 
 This package installs the shared libraries used by many bacula programs.
 
-# Don't strip symbols
-%define debug_package %{nil} 
-
 # Must explicitly enable debug pkg on SuSE
 # but not in opensuse_bs
 #%if %{suse} && ! 0%{?opensuse_bs}
@@ -723,19 +561,28 @@ This package installs the shared libraries used by many bacula programs.
 #%endif
 
 %prep
-%setup
-%setup -T -D -b 1
+%setup -T    -b 0 -n depkgs
+%setup -T    -b 1 -n %{product}-%{version}
+%setup -T -D -b 2 -n %{product}-%{version}
 # extract depkgs
-%if %{sqlite}
-%setup -T -D -b 2
-%endif
+
 
 %build
 
 %if %{suse}
-export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap -L/usr/lib64/termcap"
+#export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap -L/usr/lib64/termcap"
 %endif
 
+# You can use a cache for depkgs
+# tar xfz depkgs*gz -C ~/
+# cd ~/depkgs
+# touch %{depkgs_version}       # depkgs version
+
+if [ -f $HOME/depkgs/%{depkgs_version} ]; then
+   rm -rf %{depkgs}
+   ln -s $HOME/depkgs %{depkgs}
+fi
+
 cwd=${PWD}
 %if %{sqlite}
 cd %{depkgs}
@@ -743,12 +590,18 @@ make sqlite3
 cd ${cwd}
 %endif
 
+cd %{depkgs}
+make lzo
+export LDFLAGS="${LDFLAGS} -L${PWD}/lzo/lib"
+export CPPFLAGS="${CPPFLAGS} -I${PWD}/lzo/include"
+cd ${cwd}
+
 # hostname is the build hostname, so use XXX_HOSTNAME_XXX for Address parameter
-sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.conf.in src/qt-console/bat.conf.in src/tray-monitor/tray-monitor.conf.in 
+sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.conf.in src/qt-console/bat.conf.in
 
 %if %{sqlite}
 # patches for the bundled sqlite scripts
-sed -i s:.SQL_BINDIR.:/opt/bacula/sqlite: src/cats/*_sqlite3_*.in
+sed -i s:.SQLITE_BINDIR.:/opt/bacula/sqlite: src/cats/*_sqlite3_*.in
 
 # patch the bacula-dir init script to remove sqlite service
 %if %{suse}
@@ -769,6 +622,8 @@ export LDFLAGS="${LDFLAGS} -L/usr/lib64/mysql"
 export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
 %endif
 
+export BACULA="Bacula"
+
 # Main Bacula configuration
 %configure \
         --prefix=%{_prefix} \
@@ -777,13 +632,11 @@ export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
         --mandir=%{_mandir} \
         --with-scriptdir=%{script_dir} \
         --with-working-dir=%{working_dir} \
-        --with-plugindir=%{script_dir} \
+        --with-plugindir=%{plugin_dir} \
+        --with-logdir=%{log_dir} \
         --with-pid-dir=%{pid_dir} \
         --with-subsys-dir=%{_subsysdir} \
         --enable-smartalloc \
-        --disable-gnome \
-        --disable-bwx-console \
-        --disable-tray-monitor \
         --disable-conio \
         --enable-readline \
 %if %{mysql}
@@ -802,7 +655,7 @@ export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
 %if %{client_only}
         --enable-client-only \
 %endif
-%if %{rh7} || %{rh8} || %{rh9} || %{fc1} || %{fc3} || %{wb3} 
+%if %{rh7} || %{rh8} || %{rh9}
         --disable-batch-insert \
 %endif
         --with-tcp-wrappers  \
@@ -825,7 +678,7 @@ export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
 make -j3
 
 %install
- 
+
 cwd=${PWD}
 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
 mkdir -p $RPM_BUILD_ROOT/etc/init.d
@@ -848,8 +701,10 @@ make DESTDIR=$RPM_BUILD_ROOT install
 # Remove docs for programs that are depreciated
 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bgnome-console.1.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bwxconsole.1.%{manpage_ext}
-rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-tray-monitor.1.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{script_dir}/gconsole
+# Storage-ctl packaged in shstore rpm
+rm -f $RPM_BUILD_ROOT%{script_dir}/storage-ctl
+rm -f $RPM_BUILD_ROOT%{script_dir}/storage-ctl.conf
 
 # fixme - make installs the mysql scripts for sqlite build
 %if %{sqlite}
@@ -900,6 +755,10 @@ cp -p scripts/logrotate $RPM_BUILD_ROOT/etc/logrotate.d/bacula
 # install the updatedb scripts
 cp -p updatedb/* $RPM_BUILD_ROOT%{script_dir}/updatedb/
 
+# install specific scripts
+
+# install special upgrade script, except for sqlite3
+
 %if ! %{client_only}
 # install the sample-query.sql file
 cp -p examples/sample-query.sql $RPM_BUILD_ROOT%{script_dir}/sample-query.sql
@@ -929,8 +788,10 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bls.8.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bscan.8.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/btape.8.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/dbcheck.8.%{manpage_ext}
+rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bregex.8.%{manpage_ext}
+rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bwild.8.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bsmtp.1.%{manpage_ext}
-
+rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bpluginfo.8.gz
 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula
 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula_config
 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula-ctl-dir
@@ -942,9 +803,10 @@ rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
 rm -rf $RPM_BUILD_ROOT%{script_dir}/updatedb
 rm -f $RPM_BUILD_ROOT%{script_dir}/bconsole
-rm -f $RPM_BUILD_ROOT%{script_dir}/bpipe-fd.so
 rm -f $RPM_BUILD_ROOT%{script_dir}/mtx-changer.conf
 rm -f $RPM_BUILD_ROOT%{_sbindir}/bacula
+rm -f $RPM_BUILD_ROOT%{_sbindir}/bpluginfo
+
 %endif
 
 %clean
@@ -966,8 +828,7 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %attr(-, root, %{daemon_group}) %{script_dir}/drop_mysql_tables
 %attr(-, root, %{daemon_group}) %{script_dir}/update_mysql_tables
 %attr(-, root, %{daemon_group}) %{script_dir}/grant_mysql_privileges
-%attr(-, root, %{daemon_group}) %{script_dir}/startmysql
-%attr(-, root, %{daemon_group}) %{script_dir}/stopmysql
+%{_libdir}/libbaccats*
 %{_libdir}/libbacsql*
 %endif
 
@@ -983,6 +844,7 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %{sqlite_bindir}/libsqlite3.a
 %{sqlite_bindir}/sqlite3.h
 %{sqlite_bindir}/sqlite3
+%{_libdir}/libbaccats*
 %{_libdir}/libbacsql*
 %endif
 
@@ -991,12 +853,13 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %if %{postgresql}
 %files postgresql
 %defattr(-,root,root)
-%attr(-, root, %{daemon_group}) %{script_dir}/create_postgresql_database
-%attr(-, root, %{daemon_group}) %{script_dir}/drop_postgresql_database
-%attr(-, root, %{daemon_group}) %{script_dir}/make_postgresql_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/drop_postgresql_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/update_postgresql_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/grant_postgresql_privileges
+%attr(755, root, %{daemon_group}) %{script_dir}/create_postgresql_database
+%attr(755, root, %{daemon_group}) %{script_dir}/drop_postgresql_database
+%attr(755, root, %{daemon_group}) %{script_dir}/make_postgresql_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/drop_postgresql_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/update_postgresql_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/grant_postgresql_privileges
+%{_libdir}/libbaccats*
 %{_libdir}/libbacsql*
 %endif
 
@@ -1005,15 +868,16 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %if ! %{client_only}
 %attr(-, root, %{daemon_group}) %dir %{script_dir}
 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
+#%attr(-, %{director_daemon_user}, %{daemon_group}) %dir %{log_dir}
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula_config
 %attr(-, root, %{daemon_group}) %{script_dir}/bconsole
-%attr(-, root, %{daemon_group}) %{script_dir}/create_bacula_database
-%attr(-, root, %{daemon_group}) %{script_dir}/drop_bacula_database
-%attr(-, root, %{daemon_group}) %{script_dir}/grant_bacula_privileges
-%attr(-, root, %{daemon_group}) %{script_dir}/make_bacula_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/drop_bacula_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/update_bacula_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/create_bacula_database
+%attr(755, root, %{daemon_group}) %{script_dir}/drop_bacula_database
+%attr(755, root, %{daemon_group}) %{script_dir}/grant_bacula_privileges
+%attr(755, root, %{daemon_group}) %{script_dir}/make_bacula_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/drop_bacula_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/update_bacula_tables
 %attr(-, root, %{daemon_group}) %{script_dir}/make_catalog_backup
 %attr(-, root, %{daemon_group}) %{script_dir}/make_catalog_backup.pl
 %attr(-, root, %{daemon_group}) %{script_dir}/delete_catalog_backup
@@ -1024,10 +888,11 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-dir
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-fd
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-sd
-%attr(-, root, %{daemon_group}) %{script_dir}/bpipe-fd.so
+%attr(-, root, %{daemon_group}) %{plugin_dir}/bpipe-fd.so
 %attr(-, root, %{daemon_group}) /etc/init.d/bacula-dir
 %attr(-, root, %{daemon_group}) /etc/init.d/bacula-fd
 %attr(-, root, %{daemon_group}) %{_sbindir}/dbcheck
+%attr(-, root, %{daemon_group}) %{_sbindir}/bpluginfo
 %attr(-, root, %{storage_daemon_group}) %{script_dir}/dvd-handler
 %attr(-, root, %{storage_daemon_group}) /etc/init.d/bacula-sd
 %attr(-, root, %{storage_daemon_group}) %{script_dir}/mtx-changer
@@ -1042,23 +907,23 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bconsole.conf
 %attr(-, root, %{daemon_group}) %config(noreplace) %{logwatch_dir}/conf/logfiles/bacula.conf
 %attr(-, root, %{daemon_group}) %config(noreplace) %{logwatch_dir}/conf/services/bacula.conf
-%attr(-, root, %{daemon_group}) %config(noreplace) %{script_dir}/query.sql
 %attr(-, root, %{daemon_group}) %{script_dir}/sample-query.sql
 
 %attr(-, %{storage_daemon_user}, %{daemon_group}) %dir %{working_dir}
 
-%{_sbindir}/bacula-dir
+%attr(-, root, %{daemon_group}) %{_sbindir}/bacula-dir
+%attr(-, root, %{daemon_group}) %{_sbindir}/bacula-sd
+%attr(-, root, %{daemon_group}) %{_sbindir}/btraceback
+%attr(-, root, %{daemon_group}) %{_sbindir}/bconsole
+%attr(-, root, %{daemon_group}) %{_sbindir}/bsmtp
+%attr(-, root, %{daemon_group}) %{_sbindir}/bscan
+%attr(-, root, %{daemon_group}) %{_sbindir}/btape
+
 %{_sbindir}/bacula-fd
-%{_sbindir}/bacula-sd
 %{_sbindir}/bacula
 %{_sbindir}/bcopy
 %{_sbindir}/bextract
 %{_sbindir}/bls
-%{_sbindir}/bscan
-%{_sbindir}/btape
-%{_sbindir}/btraceback
-%{_sbindir}/bconsole
-%{_sbindir}/bsmtp
 %{_sbindir}/bregex
 %{_sbindir}/bwild
 %{_mandir}/man8/bacula-fd.8.%{manpage_ext}
@@ -1073,8 +938,12 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %{_mandir}/man8/btape.8.%{manpage_ext}
 %{_mandir}/man8/btraceback.8.%{manpage_ext}
 %{_mandir}/man8/dbcheck.8.%{manpage_ext}
+%{_mandir}/man8/bregex.8.%{manpage_ext}
+%{_mandir}/man8/bwild.8.%{manpage_ext}
 %{_mandir}/man1/bsmtp.1.%{manpage_ext}
 %{_mandir}/man1/bat.1.%{manpage_ext}
+%{_mandir}/man8/bpluginfo.8.gz
+
 %_prefix/share/doc/*
 
 # opensuse build service changes the release itself
@@ -1123,12 +992,12 @@ if [ -s %{working_dir}/bacula.db ] && [ -s %{sqlite_bindir}/sqlite3 ];then
 
 %if %{postgresql}
 %pre postgresql
-DB_VER=`echo 'select * from Version;' | psql bacula 2>/dev/null | tail -3 | head -1`
+DB_VER=`echo 'SELECT * FROM Version LIMIT 1;' | su - postgres -c 'psql bacula' 2>/dev/null | tail -3 | head -1`
 %endif
 
 %if ! %{client_only}
 if [ -n "$DB_VER" ] && [ "$DB_VER" -lt "12" ]; then
-    echo "This bacula upgrade will update a bacula database from version 12 to 13."
+    echo "This bacula upgrade will update a bacula database from version 12 to 1014."
     echo "You appear to be running database version $DB_VER. You must first update"
     echo "your database to version 12 and then install this upgrade. The alternative"
     echo "is to use %{script_dir}/drop_%{db_backend}_tables to delete all your your current"
@@ -1225,19 +1094,21 @@ fi
 
 if [ -d %{sysconf_dir} ]; then
    cd %{sysconf_dir}
-   for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
-      pass=`openssl rand -base64 33`
-      for file in *.conf; do
-         sed "s@${string}@${pass}@g" $file > $file.new
-         cp -f $file.new $file; rm -f $file.new
-      done
-   done
-# put actual hostname in conf file
-   host=`hostname`
-   string="XXX_HOSTNAME_XXX"
+   if [ ! -f .rpm.sed ]; then
+       (umask 0177
+        echo "# This file is used to ensure that all passwords will" > .rpm.sed
+        echo "# match between configuration files"                  >> .rpm.sed
+       )
+       for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+           pass=`openssl rand -base64 33`
+           echo "s@${string}@${pass}@g" >> .rpm.sed
+       done
+   fi
+   host=`hostname -s`
    for file in *.conf; do
-      sed "s@${string}@${host}@g" $file >$file.new
-      cp -f $file.new $file; rm -f $file.new
+      sed -f .rpm.sed $file > $file.new
+      sed "s at XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
+      rm -f $file.new
    done
 fi
 
@@ -1247,30 +1118,29 @@ fi
 #check, if mysql can be called successfully at all
 if mysql 2>/dev/null bacula -e 'select * from Version;' ; then
 
-# test for an existing database
-# note: this ASSUMES no password has been set for bacula database
-DB_VER=`mysql 2>/dev/null bacula -e 'select * from Version;'|tail -n 1`
-
-# grant privileges and create tables if they do not exist
-if [ -z "$DB_VER" ]; then
-    echo "Hmm, it doesn't look like you have an existing database."
-    echo "Granting privileges for MySQL user bacula..."
-    %{script_dir}/grant_mysql_privileges
-    echo "Creating MySQL bacula database..."
-    %{script_dir}/create_mysql_database
-    echo "Creating bacula tables..."
-    %{script_dir}/make_mysql_tables
-
-# check to see if we need to upgrade a 3.x database
-elif [ "$DB_VER" -lt "13" ]; then
-    echo "This release requires an upgrade to your bacula database."
-    echo "Backing up your current database..."
-    mysqldump -f --opt bacula | bzip2 > %{working_dir}/bacula_backup.sql.bz2
-    echo "Upgrading bacula database ..."
-    %{script_dir}/update_mysql_tables
-    echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
-
-fi
+  # test for an existing database
+  # note: this ASSUMES no password has been set for bacula database
+  DB_VER=`mysql 2>/dev/null bacula -e 'select * from Version;'|tail -n 1`
+
+  # grant privileges and create tables if they do not exist
+  if [ -z "$DB_VER" ]; then
+      echo "Hmm, it doesn't look like you have an existing database."
+      echo "Granting privileges for MySQL user bacula..."
+      %{script_dir}/grant_mysql_privileges
+      echo "Creating MySQL bacula database..."
+      %{script_dir}/create_mysql_database
+      echo "Creating bacula tables..."
+      %{script_dir}/make_mysql_tables
+
+  elif [ "$DB_VER" -ge "12" -a "$DB_VER" -lt "1015" ]; then
+      echo "This release requires an upgrade to your bacula database."
+      echo "Backing up your current database..."
+      mysqldump -f --opt bacula | bzip2 > %{working_dir}/bacula_backup.sql.bz2
+      echo "Upgrading bacula database ..."
+      %{script_dir}/update_mysql_tables
+      echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
+
+  fi
 fi
 %endif
 
@@ -1279,7 +1149,7 @@ fi
 if [ -s %{working_dir}/bacula.db ]; then
         DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite3 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
         # check to see if we need to upgrade a 3.x database
-        if [ "$DB_VER" -lt "13" ] && [ "$DB_VER" -ge "12" ]; then
+        if [ "$DB_VER" -le "13" ] && [ "$DB_VER" -ge "12" ]; then
                 echo "This release requires an upgrade to your bacula database."
                 echo "Backing up your current database..."
                 echo ".dump" | %{sqlite_bindir}/sqlite3 %{working_dir}/bacula.db | bzip2 > %{working_dir}/bacula_backup.sql.bz2
@@ -1300,51 +1170,54 @@ fi
 
 %if %{postgresql}
 # check if psql can be called successfully at all
-if echo 'select * from Version;' | psql bacula 2>/dev/null; then
-
-# test for an existing database
-# note: this ASSUMES no password has been set for bacula database
-DB_VER=`echo 'select * from Version;' | psql bacula 2>/dev/null | tail -3 | head -1`
-
-# grant privileges and create tables if they do not exist
-if [ -z "$DB_VER" ]; then
-    echo "Hmm, doesn't look like you have an existing database."
-    echo "Creating PostgreSQL bacula database..."
-    %{script_dir}/create_postgresql_database
-    echo "Creating bacula tables..."
-    %{script_dir}/make_postgresql_tables
-    echo "Granting privileges for PostgreSQL user bacula..."
-    %{script_dir}/grant_postgresql_privileges
-
-# check to see if we need to upgrade a 5.0.x database
-elif [ "$DB_VER" -lt "13" ]; then
-    echo "This release requires an upgrade to your bacula database."
-    echo "Backing up your current database..."
-    pg_dump bacula | bzip2 > %{working_dir}/bacula_backup.sql.bz2
-    echo "Upgrading bacula database ..."
-    %{script_dir}/update_postgresql_tables
-    echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
-        
-fi
+if echo 'select * from Version;' | su - postgres -c 'psql bacula' 2>/dev/null; then
+
+  # test for an existing database
+  # note: this ASSUMES no password has been set for bacula database
+  DB_VER=`echo 'SELECT * FROM Version LIMIT 1;' | su - postgres -c 'psql bacula' 2>/dev/null | tail -3 | head -1`
+
+  # grant privileges and create tables if they do not exist
+  if [ -z "$DB_VER" ]; then
+      echo "Hmm, doesn't look like you have an existing database."
+      echo "Creating PostgreSQL bacula database..."
+      su - postgres -c %{script_dir}/create_postgresql_database
+      echo "Creating bacula tables..."
+      su - postgres -c %{script_dir}/make_postgresql_tables
+      echo "Granting privileges for PostgreSQL user bacula..."
+      su - postgres -c %{script_dir}/grant_postgresql_privileges
+
+  elif [ "$DB_VER" -ge "12" -a "$DB_VER" -lt "1015" ]; then
+      echo "This release requires an upgrade to your bacula database."
+      echo "Backing up your current database..."
+      su - postgres -c 'pg_dump bacula' | bzip2 > %{working_dir}/bacula_backup.sql.bz2
+      echo "Upgrading bacula database ..."
+      su - postgres -c %{script_dir}/update_postgresql_tables
+      echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
+      echo "Granting privileges for PostgreSQL user bacula..."
+      su - postgres -c %{script_dir}/grant_postgresql_privileges
+
+  fi
 fi
 %endif
 
 %if ! %{client_only}
 if [ -d %{sysconf_dir} ]; then
    cd %{sysconf_dir}
-   for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
-      pass=`openssl rand -base64 33`
-      for file in *.conf; do
-         sed "s@${string}@${pass}@g" $file > $file.new
-         cp -f $file.new $file; rm -f $file.new
-      done
-   done
-# put actual hostname in conf file
-   host=`hostname`
-   string="XXX_HOSTNAME_XXX"
+   if [ ! -f .rpm.sed ]; then
+       (umask 0177
+        echo "# This file is used to ensure that all passwords will" > .rpm.sed
+        echo "# match between configuration files"                  >> .rpm.sed
+       )
+       for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+           pass=`openssl rand -base64 33`
+           echo "s@${string}@${pass}@g" >> .rpm.sed
+       done
+   fi
+   host=`hostname -s`
    for file in *.conf; do
-      sed "s@${string}@${host}@g" $file >$file.new
-      cp -f $file.new $file; rm -f $file.new
+      sed -f .rpm.sed $file > $file.new
+      sed "s at XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
+      rm -f $file.new
    done
 fi
 %endif
@@ -1372,6 +1245,8 @@ fi
 %files client
 %defattr(-,root,root)
 %attr(-, root, %{daemon_group}) %dir %{script_dir}
+%attr(-, root, %{daemon_group}) %dir %{plugin_dir}
+#%attr(-, root, %{daemon_group}) %dir %{log_dir}
 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
 %{script_dir}/bacula-ctl-fd
 /etc/init.d/bacula-fd
@@ -1387,6 +1262,7 @@ fi
 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.gdb
 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.dbx
 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.mdb
+%attr(-, root, %{daemon_group}) %{plugin_dir}/bpipe-fd.so
 %{_sbindir}/bconsole
 %{_mandir}/man8/bacula-fd.8.%{manpage_ext}
 %{_mandir}/man8/bacula.8.%{manpage_ext}
@@ -1426,19 +1302,21 @@ fi
 
 if [ -d %{sysconf_dir} ]; then
    cd %{sysconf_dir}
-   for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
-      pass=`openssl rand -base64 33`
-      for file in *.conf; do
-         sed "s@${string}@${pass}@g" $file > $file.new
-         cp -f $file.new $file; rm -f $file.new
-      done
-   done
-# put actual hostname in conf file
-   host=`hostname`
-   string="XXX_HOSTNAME_XXX"
+   if [ ! -f .rpm.sed ]; then
+       (umask 0177
+        echo "# This file is used to ensure that all passwords will" > .rpm.sed
+        echo "# match between configuration files"                  >> .rpm.sed
+       )
+       for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+           pass=`openssl rand -base64 33`
+           echo "s@${string}@${pass}@g" >> .rpm.sed
+       done
+   fi
+   host=`hostname -s`
    for file in *.conf; do
-      sed "s@${string}@${host}@g" $file >$file.new
-      cp -f $file.new $file; rm -f $file.new
+      sed -f .rpm.sed $file > $file.new
+      sed "s at XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
+      rm -f $file.new
    done
 fi
 
@@ -1454,7 +1332,6 @@ fi
 %{_libdir}/libbac.*
 %{_libdir}/libbaccfg*
 %{_libdir}/libbacfind*
-%{_libdir}/libbacpy*
 
 %post libs
 /sbin/ldconfig
@@ -1485,81 +1362,3 @@ echo "The database update scripts were installed to %{script_dir}/updatedb"
 %endif
 
 %changelog
-* Sun Mar 07 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove --without-qwt from configure statement
-* Sat Feb 27 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- move shared libraries into bacula-libs package
-* Sat Feb 20 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove deprecated mysql4 and mysql5 build defines
-- add build support for tcpwrappers
-- remove bacula_config file for client only build
-- remove requirements for database server packages
-- enable readline support
-- add fc11 and fc12
-* Sat Feb 13 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- 5.0.1
-- fix client only build
-- clean up requirements for termcap
-- query.sql now empty by default so we install sample-query.sql along side it
-- remove old nobuild_mtx switch
-* Sun Feb 07 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix mysql database upgrade
-* Fri Feb 05 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix permissions of dbcheck
-- misc. cleanup
-* Sat Jan 30 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- 5.0.0
-- add su112 and fc10 builds, remove doc package declaration.
-- fix source path for logwatch files.
-- restore static bundled build of sqlite (who took that out?) and remove use
-- of system sqlite. we don't support use of sqlite2.
-- upgrade database from version 11 to 12.
-* Mon Aug 10 2009 Philipp Storz <philipp.storz at dass-it.de>
-- changes to work with opensuse build service
-* Sat Aug 1 2009 Kern Sibbald <kern at sibbald.com>
-- Split docs into separate bacula-docs.spec, bacula-bat.spec and bacula-mtx.spec
-- removed build of rescue, gnome console and wxconsole
-* Sat Jun 20 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- Fix bat install which is now handled by make and uses shared libs
-* Sat May 16 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix libxml dependency for rh7 per Pasi Kärkkäinen <pasik at iki.fi>
-* Mon May 04 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- Fix post ldconfig problem in client only build
-* Sun May 03 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove more files installed by client-only build not needed by client package
-- remove libbacsql files from client package
-* Sat May 02 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- 3.0.1
-- update for new docs configuration
-* Sat Apr 25 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add switch to pass Distribution tag
-* Sun Apr 5 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- 3.0.0 release
-- database update version 10 to 11
-- make now installs docs so we rm from buildroot
-- add shared libs in %_libdir and other misc new files
-* Wed Dec 31 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add su111 target
-* Sat Nov 08 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- set paths for QT using pkgconfig
-* Sat Oct 11 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- release 2.4.3 update depkgs to 11Sep08 remove file nmshack from mtx package
-* Sun Sep 07 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- adjust /opt/bacula install
-- add build switch to supress rescue package
-* Sun Aug 24 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add support for install to /opt/bacula
-* Sun Aug 17 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove libtermcap dependancy for FC9
-* Mon Aug 04 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix bat dependencies
-* Sat Jun 28 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add su110 target
-* Sat May 24 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add fc9 target
-* Sun Mar 30 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- FHS compatibility changes
-* Sat Feb 16 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove fix for false buffer overflow detection with glibc >= 2.7
-* Sat Feb 09 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix for false buffer overflow detection with glibc >= 2.7
diff --git a/platforms/rpms/redhat/bacula-bat.spec.in b/platforms/rpms/suse/bacula-bat.spec.in
similarity index 84%
copy from platforms/rpms/redhat/bacula-bat.spec.in
copy to platforms/rpms/suse/bacula-bat.spec.in
index 21e6384..62a3dae 100644
--- a/platforms/rpms/redhat/bacula-bat.spec.in
+++ b/platforms/rpms/suse/bacula-bat.spec.in
@@ -1,20 +1,25 @@
 #
 # Bacula RPM spec file
 #
-# Copyright (C) 2000-2012 Bacula Systems SA
+# Copyright (C) 2000-2014 Bacula Systems SA
 
 # Platform Build Configuration
 
 # basic defines for every build
-%define _release           1
+%define _release           @RELEASE@
 %define _version           @VERSION@
-%define depkgs_qt_version  24Dec11
+%define depkgs_qt_version  @DEPKGS_QT_VERSION@
 %define product            bacula
 
-# this is the QT version in depkgs_qt
-%define qt4ver             4.7.4
+# Don't strip binaries
+%define __os_install_post %{nil}
+%define __debug_install_post %{nil}
+%define debug_package %{nil}
 
-%define _packager Kern Sibbald <kern at baculasystems.com>
+# this is the Qt version in depkgs_qt
+%define qt4ver             @BQT_VERSION@
+
+%define _packager Kern Sibbald <kern at sibbald.com>
 
 %define manpage_ext gz
 
@@ -30,6 +35,8 @@
 %define _subsysdir     /opt/bacula/working
 %define sqlite_bindir  /opt/bacula/sqlite
 %define _mandir        /usr/share/man
+%define docs_dir       /opt/bacula/docs
+%define archive_dir    /opt/bacula/archive
 %define sysconf_dir    /opt/bacula/etc
 %define script_dir     /opt/bacula/scripts
 %define working_dir    /opt/bacula/working
@@ -90,8 +97,13 @@
 exit 1
 %endif
 
+%define sqlite 0
+%{?build_sqlite:%define sqlite 1}
+
+%define base_package_name bacula
+
 Summary: Bacula - The Network Backup Solution
-Name: %{product}-bat
+Name: %{base_package_name}-bat
 Version: %{_version}
 Release: %{_release}
 Group: System Environment/Daemons
@@ -114,9 +126,13 @@ Requires: openssl
 Requires: fontconfig
 Requires: libgcc
 Requires: libpng
+%if 0%{?suse_version} > 1210
+Requires: libstdc++.6
+%else
 Requires: libstdc++
+%endif
 Requires: zlib
-Requires: %{product}-libs
+Requires: %{base_package_name}-libs
 
 %if %{suse}
 Requires: freetype2
@@ -161,7 +177,7 @@ This is the Bacula Administration Tool (bat) graphical user interface package.
 It is an add-on to the client or server packages.
 
 # Don't strip symbols
-%define debug_package %{nil} 
+%define debug_package %{nil}
 
 # Must explicitly enable debug pkg on SuSE
 # but not in opensuse_bs
@@ -206,7 +222,7 @@ cd ${cwd}
 %endif
 
 # hostname is the build hostname, so use XXX_HOSTNAME_XXX for Address parameter
-sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.conf.in src/qt-console/bat.conf.in src/tray-monitor/tray-monitor.conf.in 
+sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.conf.in src/qt-console/bat.conf.in
 
 # Main Bacula configuration with bat
 %configure \
@@ -214,6 +230,8 @@ sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.con
         --sbindir=%{_sbindir} \
         --sysconfdir=%{sysconf_dir} \
         --mandir=%{_mandir} \
+        --docdir=%{docs_dir} \
+        --with-archivedir=%{archive_dir} \
         --with-scriptdir=%{script_dir} \
         --with-working-dir=%{working_dir} \
         --with-plugindir=%{script_dir} \
@@ -273,6 +291,8 @@ ln -sf consolehelper $RPM_BUILD_ROOT/usr/bin/bat
 %attr(-, root, %{daemon_group}) %{_sbindir}/bat
 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bat.conf
+%attr(-, root, %{daemon_group}) %{docs_dir}/*.html
+%attr(-, root, %{daemon_group}) %{docs_dir}/*.png
 /usr/share/pixmaps/bat_icon.png
 /usr/share/applications/bat.desktop
 
@@ -303,19 +323,21 @@ fi
 %post
 if [ -d %{sysconf_dir} ]; then
    cd %{sysconf_dir}
-   for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
-      pass=`openssl rand -base64 33`
-      for file in *.conf; do
-         sed "s@${string}@${pass}@g" $file > $file.new
-         cp -f $file.new $file; rm -f $file.new
-      done
-   done
-# put actual hostname in conf file
-   host=`hostname`
-   string="XXX_HOSTNAME_XXX"
+   if [ ! -f .rpm.sed ]; then
+       (umask 0177
+        echo "# This file is used to ensure that all passwords will" > .rpm.sed
+        echo "# match between configuration files"                  >> .rpm.sed
+       )
+       for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+           pass=`openssl rand -base64 33`
+           echo "s@${string}@${pass}@g" >> .rpm.sed
+       done
+   fi
+   host=`hostname -s`
    for file in *.conf; do
-      sed "s@${string}@${host}@g" $file >$file.new
-      cp -f $file.new $file; rm -f $file.new
+      sed -f .rpm.sed $file > $file.new
+      sed "s at XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
+      rm -f $file.new
    done
 fi
 /sbin/ldconfig
@@ -325,17 +347,5 @@ fi
 rm -rf $RPM_BUILD_DIR/depkgs-qt
 
 %changelog
-* Sun Oct 03 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix bug 1639
-* Sun Mar 14 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- Fix for QT mkspecs location on FC12
-- allow user to build without embedded static QT
-* Sat Feb 27 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add dependency on bacula-libs
-* Sat Feb 13 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- create file to allow bat to run nonroot with kdesu
-- add dependency information
-* Sat Jan 30 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix consolehelper/xsu for suse packages
 * Sat Aug 1 2009 Kern Sibbald <kern at sibbald.com>
 - Split bat into separate bacula-bat.spec
diff --git a/platforms/rpms/redhat/bacula-docs.spec.in b/platforms/rpms/suse/bacula-docs.spec.in
similarity index 97%
copy from platforms/rpms/redhat/bacula-docs.spec.in
copy to platforms/rpms/suse/bacula-docs.spec.in
index e6f3b2f..2c24b06 100644
--- a/platforms/rpms/redhat/bacula-docs.spec.in
+++ b/platforms/rpms/suse/bacula-docs.spec.in
@@ -1,12 +1,12 @@
 #
 # Bacula RPM spec file
 #
-# Copyright (C) 2000-2012 Bacula Systems SA
+# Copyright (C) 2000-2014 Bacula Systems SA
 
 # Platform Build Configuration
 
 # basic defines for every build
-%define _release           1
+%define _release           @RELEASE@
 %define _version           @VERSION@
 %define product            bacula
 %define _packager Kern Sibbald <kern at sibbald.com>
diff --git a/platforms/rpms/redhat/bacula-mtx.spec.in b/platforms/rpms/suse/bacula-mtx.spec.in
similarity index 92%
copy from platforms/rpms/redhat/bacula-mtx.spec.in
copy to platforms/rpms/suse/bacula-mtx.spec.in
index 44e5fbc..eee1c7b 100644
--- a/platforms/rpms/redhat/bacula-mtx.spec.in
+++ b/platforms/rpms/suse/bacula-mtx.spec.in
@@ -1,19 +1,23 @@
 #
 # Bacula RPM spec file
 #
-# Copyright (C) 2000-2012 Bacula Systems SA
+# Copyright (C) 2000-2014 Bacula Systems SA
 
 # Platform Build Configuration
 
 # basic defines for every build
-%define _release           1
+%define _release           @RELEASE@
 %define _version           @VERSION@
 %define product            bacula
-%define depkgs_version     24Dec11
-%define _packager Kern Sibbald <kern at baculasystems.com>
-
+%define depkgs_version     @DEPKGS_VERSION@
+%define _packager Kern Sibbald <kern at sibbald.com>
 %define manpage_ext gz
 
+# Don't strip binaries
+%define __os_install_post %{nil}
+%define __debug_install_post %{nil}
+%define debug_package %{nil}
+
 %define single_dir 0
 %{?single_dir_install:%define single_dir 1}
 
diff --git a/platforms/rpms/redhat/bacula.spec.in b/platforms/rpms/suse/bacula.spec.in
similarity index 69%
copy from platforms/rpms/redhat/bacula.spec.in
copy to platforms/rpms/suse/bacula.spec.in
index 603ac9f..792f760 100644
--- a/platforms/rpms/redhat/bacula.spec.in
+++ b/platforms/rpms/suse/bacula.spec.in
@@ -1,19 +1,25 @@
 # Bacula RPM spec file
 #
-# Copyright (C) 2000-2012 Bacula Systems SA
+# Copyright (C) 2000-2014 Bacula Systems SA
 
 # Platform Build Configuration
 
 # basic defines for every build
-%define _release           1
+%define _release           @RELEASE@
 %define _version           @VERSION@
 %define product            bacula
-%define _packager Kern Sibbald <kern at baculasystems.com>
-%define depkgs_version 24Dec11
+%define _packager Kern Sibbald <kern at sibbald.com>
+%define depkgs_version @DEPKGS_VERSION@
+
+# Don't strip binaries
+%define __os_install_post %{nil}
+%define __debug_install_post %{nil}
+%define debug_package %{nil}
 
 %define postgres_version 8
 %define pgre84 0
 %{?build_rhel5:%define pgre84 1}
+%{?build_el5:%define pgre84 1}
 %if %{pgre84}
 %define postgres_package postgresql84
 %define postgres_server_package postgresql84-server
@@ -35,12 +41,15 @@
 %define _subsysdir     /opt/bacula/working
 %define sqlite_bindir  /opt/bacula/sqlite
 %define _mandir        /usr/share/man
+%define docs_dir       /opt/bacula/docs
+%define archive_dir    /opt/bacula/archive
 %define sysconf_dir    /opt/bacula/etc
 %define script_dir     /opt/bacula/scripts
 %define working_dir    /opt/bacula/working
 %define pid_dir        /opt/bacula/working
 %define plugin_dir     /opt/bacula/plugins
 %define lib_dir        /opt/bacula/lib
+%define log_dir        /opt/bacula/log
 %else
 %define _prefix        /usr
 %define _sbindir       %_prefix/sbin
@@ -54,6 +63,7 @@
 %define pid_dir        /var/run
 %define plugin_dir     %_libdir/bacula/plugins
 %define lib_dir        %_libdir/bacula/lib
+%define log_dir        %_libdir/bacula/log
 %endif
 
 # Daemon user:group Don't change them unless you know what you are doing
@@ -66,168 +76,20 @@
 
 %define depkgs ../depkgs
 
-# probems with mandriva build: 
+# probems with mandriva build:
 # nothing provides libbonobo2_0-devel, nothing provides libbonoboui2_0-devel
 
-# set Macros by opensuse_bs, see http://en.opensuse.org/Build_Service/cross_distribution_package_how_to
-#openSUSE 11.1          %if 0%{?suse_version} == 1110  
-#openSUSE 11.0          %if 0%{?suse_version} == 1100   
-#openSUSE 10.3          %if 0%{?suse_version} == 1030   
-#openSUSE 10.2          %if 0%{?suse_version} == 1020   
-#SUSE Linux 10.1        %if 0%{?suse_version} == 1010   
-#SUSE Linux 10.0        %if 0%{?suse_version} == 1000   
-#SUSE Linux 9.3         %if 0%{?suse_version} == 930    
-#SLES 9                 %if 0%{?sles_version} == 9      also set: %if 0%{?suse_version} == 910
-#SLE 10                 %if 0%{?sles_version} == 10     also set: %if 0%{?suse_version} == 1010
-#SLE 11                 %if 0%{?sles_version} == 11     also set: %if 0%{?suse_version} == 1110
-#CentOS 5               %if 0%{?centos_version} == 501  
-#RHEL 4                 %if 0%{?rhel_version} == 406    
-#RHEL 5                 %if 0%{?rhel_version} == 501    
-#Fedora 6 with Extras   %if 0%{?fedora_version} == 6    
-#Fedora 7 with Extras   %if 0%{?fedora_version} == 7    
-#Fedora 8 with Extras   %if 0%{?fedora_version} == 8    
-#Fedora 9 with Extras   %if 0%{?fedora_version} == 9    
-#Fedora 10 with Extras  %if 0%{?fedora_version} == 10   
-#Mandriva 2006          %if 0%{?mandriva_version} == 2006       
-#Mandriva 2007          %if 0%{?mandriva_version} == 2007       
-#Mandriva 2008          %if 0%{?mandriva_version} == 2008       
-
-
-%if 0%{?opensuse_bs}
-# am I running in opensuse build service?
-# TODO: seems to make problems
-
-# Build Service: Determine Distribution
-
-%ifarch x86_64
- %define build_x86_64 1
-%endif
-
-
-%if 0%{?fedora_version} || 0%{?rhel_version} || 0%{?centos_version}
-BuildRequires: GConf2-devel
-BuildRequires: freetype-devel
-BuildRequires: libtermcap-devel
-BuildRequires: shadow-utils
-%endif
-
-
-%if 0%{?mandriva_version} == 2007
-%define build_mdv 1
-%define _dist "Mandriva 2007"
-%endif
-
-%if 0%{?fedora_version} == 8
-%define build_fc8 1
-%define _dist "Fedora Core 8"
-BuildRequires: redhat-release
-%endif
-
-%if 0%{?fedora_version} == 9
-%define build_fc9 1
-%define _dist "Fedora Core 9"
-BuildRequires: redhat-release
-%endif
-
-
-%if 0%{?fedora_version} == 10
-%define build_fc9 1
-%define _dist "Fedora Core 10"
-BuildRequires: PolicyKit-gnome
-BuildRequires: fedora-release
-%endif
-
-%if 0%{?fedora_version} == 11
-%define build_fc9 1
-%define _dist "Fedora Core 11"
-BuildRequires: PolicyKit-gnome
-BuildRequires: fedora-release
-%endif
-
-%if 0%{?rhel_version} == 501
-%define build_rhel5 1
-%define _dist "Red Hat Enterprise Linux Server release 5"
-BuildRequires: redhat-release
-%endif
-
-%if 0%{?rhel_version} == 406
-%define build_rhel4 1
-%define _dist "Red Hat Enterprise Linux Server release 4"
-BuildRequires: redhat-release
-%endif
-
-
-%if 0%{?centos_version} == 501
-%define build_centos5 1
-%define _dist "CentOS 5"
-BuildRequires: redhat-release
-%endif
-
-
-%if 0%{?suse_version} == 1020
-%define build_su102 1
-%define _dist "OpenSUSE 10.2"
-BuildRequires: suse-release
-%endif
-
-
-%if 0%{?suse_version} == 1030
-%define build_su103 1
-%define _dist "OpenSUSE 10.3"
-BuildRequires: suse-release
-%endif
-
-%if 0%{?suse_version} == 1100
-%define build_su110 1
-%define _dist "SUSE 11"
-BuildRequires: suse-release
-%endif
-
-
-%if 0%{?suse_version} == 1110
-%define build_su111 1
-%define _dist "SUSE 11"
-%endif
-
-%if 0%{?suse_version} == 1120
-%define build_su112 1
-%define _dist "SUSE 11"
-%endif
-
-
-%if 0%{?sles_version} == 9
-%define build_su9 1
-%define _dist "SLES 9"
-%endif
-
-
-%if 0%{?sles_version} == 10
-%define build_su10 1
-%define _dist "SLE 10"
-%endif
-
-
-%if 0%{?sles_version} == 11
-%define build_su111 1
-%define _dist "SLES 11"
-%endif
-
-%endif 
-# opensuse-bs?
-
-
-# any patches for this release
-# be sure to check the setup section for patch macros
-
 #--------------------------------------------------------------------------
 # it should not be necessary to change anything below here for a release
 # except for patch macros in the setup section
 #--------------------------------------------------------------------------
 
+%define base_package_name %{product}
+
 %{?contrib_packager:%define _packager %{contrib_packager}}
 
 Summary: Bacula - The Network Backup Solution
-Name: %{product}
+Name: %{base_package_name}
 Version: %{_version}
 Release: %{_release}
 Group: System Environment/Daemons
@@ -238,15 +100,15 @@ Vendor: The Bacula Team
 Packager: %{_packager}
 Prefix: %{_prefix}
 
-Source0: http://www.prdownloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
 # opensuse build service changes the release itself
 # what happens if the release is not 1? DSB
+Source0: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.tar.gz
+Source1: http://www.prdownloads.sourceforge.net/bacula/%{product}-%{version}.tar.gz
 %if 0%{?opensuse_bs}
-Source1: Release_Notes-%{version}-1.tar.gz
+Source2: Release_Notes-%{version}-1.tar.gz
 %else
-Source1: Release_Notes-%{version}-%{release}.tar.gz
+Source2: Release_Notes-%{version}-%{release}.tar.gz
 %endif
-Source2: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.tar.gz
 
 # define the basic package description
 %define blurb Bacula - The Leading Open Source Backup Solution.
@@ -275,28 +137,12 @@ Source2: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.
 %define rh9 0
 %{?build_rh9:%define rh9 1}
 # Fedora Core build
-%define fc1 0
-%{?build_fc1:%define fc1 1}
-%define fc3 0
-%{?build_fc3:%define fc3 1}
-%define fc4 0
-%{?build_fc4:%define fc4 1}
-%define fc5 0
-%{?build_fc5:%define fc5 1}
-%define fc6 0
-%{?build_fc6:%define fc6 1}
-%define fc7 0
-%{?build_fc7:%define fc7 1}
-%define fc8 0
-%{?build_fc8:%define fc8 1}
-%define fc9 0
-%{?build_fc9:%define fc9 1}
-%define fc10 0
-%{?build_fc10:%define fc10 1}
-%define fc11 0
-%{?build_fc11:%define fc11 1}
-%define fc12 0
-%{?build_fc12:%define fc12 1}
+%define fc16 0
+%{?build_fc16:%define fc16 1}
+%define fc17 0
+%{?build_fc17:%define fc17 1}
+%define fc18 0
+%{?build_fc18:%define fc18 1}
 # Whitebox Enterprise build
 %define wb3 0
 %{?build_wb3:%define wb3 1}
@@ -307,11 +153,16 @@ Source2: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.
 %define rhel4 0
 %{?build_rhel4:%define rhel4 1}
 %{?build_rhel4:%define fc3 1}
+%{?build_el4:%define rhel4 1}
+%{?build_el4:%define fc3 1}
 %define rhel5 0
 %{?build_rhel5:%define rhel5 1}
 %{?build_rhel5:%define fc6 1}
+%{?build_el5:%define rhel5 1}
+%{?build_el5:%define fc6 1}
 %define rhel6 0
 %{?build_rhel6:%define rhel6 1}
+%{?build_el6:%define rhel6 1}
 # CentOS build
 %define centos3 0
 %{?build_centos3:%define centos3 1}
@@ -366,7 +217,7 @@ Source2: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.
 %define rhat 1
 %endif
 %define fed 0
-%if %{fc1} || %{fc3} || %{fc4} || %{fc5} || %{fc6} || %{fc7} || %{fc8} || %{fc9} || %{fc10} || %{fc11} || %{fc12}
+%if %{fc16} || %{fc17} || %{fc18}
 %define fed 1
 %endif
 %define suse 0
@@ -390,7 +241,7 @@ exit 1
 %endif
 
 # distribution-specific directory for logwatch
-%if %{wb3} || %{rh7} || %{rh8} || %{rh9} || %{fc1} || %{fc3} || %{fc4}
+%if %{wb3} || %{rh7} || %{rh8} || %{rh9}
 %define logwatch_dir /etc/log.d
 %else
 %define logwatch_dir /etc/logwatch
@@ -429,7 +280,7 @@ exit 1
 %{?build_x86_64:%define x86_64 1}
 
 # check what distribution we are
-%if %{fc1} || %{fc3} || %{fc4} || %{fc5} || %{fc7} || %{fc8} || %{fc9} || %{fc10} || %{fc11} || %{fc12}
+%if %{fc16} || %{fc17} || %{fc18}
 %define _dist %(grep Fedora /etc/redhat-release)
 %endif
 %if %{centos5} || %{centos4} || %{centos3}
@@ -502,7 +353,7 @@ BuildRequires: sysconfig
 
 BuildRequires: gcc, gcc-c++, make, autoconf
 BuildRequires: glibc, glibc-devel
-BuildRequires: ncurses-devel, perl, readline-devel
+BuildRequires: ncurses-devel, readline-devel
 BuildRequires: libstdc++-devel, zlib-devel
 BuildRequires: openssl-devel
 BuildRequires: libacl-devel
@@ -523,12 +374,6 @@ BuildRequires: libstdc++-static-devel
 BuildRequires: glibc-static-devel
 %endif
 
-%if %{suse}
-BuildRequires: termcap
-%else
-BuildRequires: libtermcap-devel
-%endif
-
 %if %{mysql} && ! %{suse}
 BuildRequires: mysql-devel
 %endif
@@ -572,9 +417,6 @@ Requires: glibc, readline, %{name}-libs
 
 %if %{suse}
 Conflicts: bacula
-Requires: termcap
-%else
-Requires: libtermcap
 %endif
 
 %if %{mysql}
@@ -644,12 +486,6 @@ Provides: %{product}-libs
 Requires: libstdc++, zlib, openssl
 Requires: glibc, readline, %{name}-libs
 
-%if %{suse}
-Requires: termcap
-%else
-Requires: libtermcap
-%endif
-
 %if %{python}
 Requires: python >= %{pyver}
 %endif
@@ -665,7 +501,7 @@ Requires: python >= %{pyver}
 %{blurb7}
 %{blurb8}
 
-This is the File daemon (Client) only package. It includes the command line 
+This is the File daemon (Client) only package. It includes the command line
 console program.
 %if %{python}
 This build includes python scripting support.
@@ -713,9 +549,6 @@ Group: System Environment/Daemons
 
 This package installs the shared libraries used by many bacula programs.
 
-# Don't strip symbols
-%define debug_package %{nil} 
-
 # Must explicitly enable debug pkg on SuSE
 # but not in opensuse_bs
 #%if %{suse} && ! 0%{?opensuse_bs}
@@ -723,19 +556,28 @@ This package installs the shared libraries used by many bacula programs.
 #%endif
 
 %prep
-%setup
-%setup -T -D -b 1
+%setup -T    -b 0 -n depkgs
+%setup -T    -b 1 -n %{product}-%{version}
+%setup -T -D -b 2 -n %{product}-%{version}
 # extract depkgs
-%if %{sqlite}
-%setup -T -D -b 2
-%endif
+
 
 %build
 
 %if %{suse}
-export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap -L/usr/lib64/termcap"
+#export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap -L/usr/lib64/termcap"
 %endif
 
+# You can use a cache for depkgs
+# tar xfz depkgs*gz -C ~/
+# cd ~/depkgs
+# touch %{depkgs_version}       # depkgs version
+
+if [ -f $HOME/depkgs/%{depkgs_version} ]; then
+   rm -rf %{depkgs}
+   ln -s $HOME/depkgs %{depkgs}
+fi
+
 cwd=${PWD}
 %if %{sqlite}
 cd %{depkgs}
@@ -743,12 +585,18 @@ make sqlite3
 cd ${cwd}
 %endif
 
+cd %{depkgs}
+make lzo
+export LDFLAGS="${LDFLAGS} -L${PWD}/lzo/lib"
+export CPPFLAGS="${CPPFLAGS} -I${PWD}/lzo/include"
+cd ${cwd}
+
 # hostname is the build hostname, so use XXX_HOSTNAME_XXX for Address parameter
-sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.conf.in src/qt-console/bat.conf.in src/tray-monitor/tray-monitor.conf.in 
+sed -i s/hostname/basename/ src/console/bconsole.conf.in src/dird/bacula-dir.conf.in src/qt-console/bat.conf.in
 
 %if %{sqlite}
 # patches for the bundled sqlite scripts
-sed -i s:.SQL_BINDIR.:/opt/bacula/sqlite: src/cats/*_sqlite3_*.in
+sed -i s:.SQLITE_BINDIR.:/opt/bacula/sqlite: src/cats/*_sqlite3_*.in
 
 # patch the bacula-dir init script to remove sqlite service
 %if %{suse}
@@ -769,6 +617,8 @@ export LDFLAGS="${LDFLAGS} -L/usr/lib64/mysql"
 export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
 %endif
 
+export BACULA="Bacula"
+
 # Main Bacula configuration
 %configure \
         --prefix=%{_prefix} \
@@ -777,11 +627,11 @@ export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
         --mandir=%{_mandir} \
         --with-scriptdir=%{script_dir} \
         --with-working-dir=%{working_dir} \
-        --with-plugindir=%{script_dir} \
+        --with-plugindir=%{plugin_dir} \
+        --with-logdir=%{log_dir} \
         --with-pid-dir=%{pid_dir} \
         --with-subsys-dir=%{_subsysdir} \
         --enable-smartalloc \
-        --disable-gnome \
         --disable-bwx-console \
         --disable-tray-monitor \
         --disable-conio \
@@ -802,7 +652,7 @@ export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
 %if %{client_only}
         --enable-client-only \
 %endif
-%if %{rh7} || %{rh8} || %{rh9} || %{fc1} || %{fc3} || %{wb3} 
+%if %{rh7} || %{rh8} || %{rh9}
         --disable-batch-insert \
 %endif
         --with-tcp-wrappers  \
@@ -825,7 +675,7 @@ export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}"
 make -j3
 
 %install
- 
+
 cwd=${PWD}
 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
 mkdir -p $RPM_BUILD_ROOT/etc/init.d
@@ -850,6 +700,9 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bgnome-console.1.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-bwxconsole.1.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bacula-tray-monitor.1.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{script_dir}/gconsole
+# Storage-ctl packaged in shstore rpm
+rm -f $RPM_BUILD_ROOT%{script_dir}/storage-ctl
+rm -f $RPM_BUILD_ROOT%{script_dir}/storage-ctl.conf
 
 # fixme - make installs the mysql scripts for sqlite build
 %if %{sqlite}
@@ -900,6 +753,8 @@ cp -p scripts/logrotate $RPM_BUILD_ROOT/etc/logrotate.d/bacula
 # install the updatedb scripts
 cp -p updatedb/* $RPM_BUILD_ROOT%{script_dir}/updatedb/
 
+# install specific scripts
+
 %if ! %{client_only}
 # install the sample-query.sql file
 cp -p examples/sample-query.sql $RPM_BUILD_ROOT%{script_dir}/sample-query.sql
@@ -929,6 +784,8 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bls.8.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bscan.8.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/btape.8.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man8/dbcheck.8.%{manpage_ext}
+rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bregex.8.%{manpage_ext}
+rm -f $RPM_BUILD_ROOT%{_mandir}/man8/bwild.8.%{manpage_ext}
 rm -f $RPM_BUILD_ROOT%{_mandir}/man1/bsmtp.1.%{manpage_ext}
 
 rm -f $RPM_BUILD_ROOT%{script_dir}/bacula
@@ -942,7 +799,6 @@ rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
 rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
 rm -rf $RPM_BUILD_ROOT%{script_dir}/updatedb
 rm -f $RPM_BUILD_ROOT%{script_dir}/bconsole
-rm -f $RPM_BUILD_ROOT%{script_dir}/bpipe-fd.so
 rm -f $RPM_BUILD_ROOT%{script_dir}/mtx-changer.conf
 rm -f $RPM_BUILD_ROOT%{_sbindir}/bacula
 %endif
@@ -966,8 +822,7 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %attr(-, root, %{daemon_group}) %{script_dir}/drop_mysql_tables
 %attr(-, root, %{daemon_group}) %{script_dir}/update_mysql_tables
 %attr(-, root, %{daemon_group}) %{script_dir}/grant_mysql_privileges
-%attr(-, root, %{daemon_group}) %{script_dir}/startmysql
-%attr(-, root, %{daemon_group}) %{script_dir}/stopmysql
+%{_libdir}/libbaccats*
 %{_libdir}/libbacsql*
 %endif
 
@@ -983,6 +838,7 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %{sqlite_bindir}/libsqlite3.a
 %{sqlite_bindir}/sqlite3.h
 %{sqlite_bindir}/sqlite3
+%{_libdir}/libbaccats*
 %{_libdir}/libbacsql*
 %endif
 
@@ -991,12 +847,13 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %if %{postgresql}
 %files postgresql
 %defattr(-,root,root)
-%attr(-, root, %{daemon_group}) %{script_dir}/create_postgresql_database
-%attr(-, root, %{daemon_group}) %{script_dir}/drop_postgresql_database
-%attr(-, root, %{daemon_group}) %{script_dir}/make_postgresql_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/drop_postgresql_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/update_postgresql_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/grant_postgresql_privileges
+%attr(755, root, %{daemon_group}) %{script_dir}/create_postgresql_database
+%attr(755, root, %{daemon_group}) %{script_dir}/drop_postgresql_database
+%attr(755, root, %{daemon_group}) %{script_dir}/make_postgresql_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/drop_postgresql_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/update_postgresql_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/grant_postgresql_privileges
+%{_libdir}/libbaccats*
 %{_libdir}/libbacsql*
 %endif
 
@@ -1005,15 +862,16 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %if ! %{client_only}
 %attr(-, root, %{daemon_group}) %dir %{script_dir}
 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
+#%attr(-, %{director_daemon_user}, %{daemon_group}) %dir %{log_dir}
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula_config
 %attr(-, root, %{daemon_group}) %{script_dir}/bconsole
 %attr(-, root, %{daemon_group}) %{script_dir}/create_bacula_database
-%attr(-, root, %{daemon_group}) %{script_dir}/drop_bacula_database
-%attr(-, root, %{daemon_group}) %{script_dir}/grant_bacula_privileges
-%attr(-, root, %{daemon_group}) %{script_dir}/make_bacula_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/drop_bacula_tables
-%attr(-, root, %{daemon_group}) %{script_dir}/update_bacula_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/drop_bacula_database
+%attr(755, root, %{daemon_group}) %{script_dir}/grant_bacula_privileges
+%attr(755, root, %{daemon_group}) %{script_dir}/make_bacula_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/drop_bacula_tables
+%attr(755, root, %{daemon_group}) %{script_dir}/update_bacula_tables
 %attr(-, root, %{daemon_group}) %{script_dir}/make_catalog_backup
 %attr(-, root, %{daemon_group}) %{script_dir}/make_catalog_backup.pl
 %attr(-, root, %{daemon_group}) %{script_dir}/delete_catalog_backup
@@ -1024,7 +882,7 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-dir
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-fd
 %attr(-, root, %{daemon_group}) %{script_dir}/bacula-ctl-sd
-%attr(-, root, %{daemon_group}) %{script_dir}/bpipe-fd.so
+%attr(-, root, %{daemon_group}) %{plugin_dir}/bpipe-fd.so
 %attr(-, root, %{daemon_group}) /etc/init.d/bacula-dir
 %attr(-, root, %{daemon_group}) /etc/init.d/bacula-fd
 %attr(-, root, %{daemon_group}) %{_sbindir}/dbcheck
@@ -1042,23 +900,23 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %attr(-, root, %{daemon_group}) %config(noreplace) %{sysconf_dir}/bconsole.conf
 %attr(-, root, %{daemon_group}) %config(noreplace) %{logwatch_dir}/conf/logfiles/bacula.conf
 %attr(-, root, %{daemon_group}) %config(noreplace) %{logwatch_dir}/conf/services/bacula.conf
-%attr(-, root, %{daemon_group}) %config(noreplace) %{script_dir}/query.sql
 %attr(-, root, %{daemon_group}) %{script_dir}/sample-query.sql
 
 %attr(-, %{storage_daemon_user}, %{daemon_group}) %dir %{working_dir}
 
-%{_sbindir}/bacula-dir
+%attr(-, root, %{daemon_group}) %{_sbindir}/bacula-dir
+%attr(-, root, %{daemon_group}) %{_sbindir}/bacula-sd
+%attr(-, root, %{daemon_group}) %{_sbindir}/btraceback
+%attr(-, root, %{daemon_group}) %{_sbindir}/bconsole
+%attr(-, root, %{daemon_group}) %{_sbindir}/bsmtp
+%attr(-, root, %{daemon_group}) %{_sbindir}/bscan
+%attr(-, root, %{daemon_group}) %{_sbindir}/btape
+
 %{_sbindir}/bacula-fd
-%{_sbindir}/bacula-sd
 %{_sbindir}/bacula
 %{_sbindir}/bcopy
 %{_sbindir}/bextract
 %{_sbindir}/bls
-%{_sbindir}/bscan
-%{_sbindir}/btape
-%{_sbindir}/btraceback
-%{_sbindir}/bconsole
-%{_sbindir}/bsmtp
 %{_sbindir}/bregex
 %{_sbindir}/bwild
 %{_mandir}/man8/bacula-fd.8.%{manpage_ext}
@@ -1073,6 +931,8 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
 %{_mandir}/man8/btape.8.%{manpage_ext}
 %{_mandir}/man8/btraceback.8.%{manpage_ext}
 %{_mandir}/man8/dbcheck.8.%{manpage_ext}
+%{_mandir}/man8/bregex.8.%{manpage_ext}
+%{_mandir}/man8/bwild.8.%{manpage_ext}
 %{_mandir}/man1/bsmtp.1.%{manpage_ext}
 %{_mandir}/man1/bat.1.%{manpage_ext}
 %_prefix/share/doc/*
@@ -1123,12 +983,12 @@ if [ -s %{working_dir}/bacula.db ] && [ -s %{sqlite_bindir}/sqlite3 ];then
 
 %if %{postgresql}
 %pre postgresql
-DB_VER=`echo 'select * from Version;' | psql bacula 2>/dev/null | tail -3 | head -1`
+DB_VER=`echo 'SELECT * FROM Version LIMIT 1;' | su - postgres -c 'psql bacula' 2>/dev/null | tail -3 | head -1`
 %endif
 
 %if ! %{client_only}
 if [ -n "$DB_VER" ] && [ "$DB_VER" -lt "12" ]; then
-    echo "This bacula upgrade will update a bacula database from version 12 to 13."
+    echo "This bacula upgrade will update a bacula database from version 12 to 1014."
     echo "You appear to be running database version $DB_VER. You must first update"
     echo "your database to version 12 and then install this upgrade. The alternative"
     echo "is to use %{script_dir}/drop_%{db_backend}_tables to delete all your your current"
@@ -1225,19 +1085,21 @@ fi
 
 if [ -d %{sysconf_dir} ]; then
    cd %{sysconf_dir}
-   for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
-      pass=`openssl rand -base64 33`
-      for file in *.conf; do
-         sed "s@${string}@${pass}@g" $file > $file.new
-         cp -f $file.new $file; rm -f $file.new
-      done
-   done
-# put actual hostname in conf file
-   host=`hostname`
-   string="XXX_HOSTNAME_XXX"
+   if [ ! -f .rpm.sed ]; then
+       (umask 0177
+        echo "# This file is used to ensure that all passwords will" > .rpm.sed
+        echo "# match between configuration files"                  >> .rpm.sed
+       )
+       for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+           pass=`openssl rand -base64 33`
+           echo "s@${string}@${pass}@g" >> .rpm.sed
+       done
+   fi
+   host=`hostname -s`
    for file in *.conf; do
-      sed "s@${string}@${host}@g" $file >$file.new
-      cp -f $file.new $file; rm -f $file.new
+      sed -f .rpm.sed $file > $file.new
+      sed "s at XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
+      rm -f $file.new
    done
 fi
 
@@ -1247,30 +1109,29 @@ fi
 #check, if mysql can be called successfully at all
 if mysql 2>/dev/null bacula -e 'select * from Version;' ; then
 
-# test for an existing database
-# note: this ASSUMES no password has been set for bacula database
-DB_VER=`mysql 2>/dev/null bacula -e 'select * from Version;'|tail -n 1`
-
-# grant privileges and create tables if they do not exist
-if [ -z "$DB_VER" ]; then
-    echo "Hmm, it doesn't look like you have an existing database."
-    echo "Granting privileges for MySQL user bacula..."
-    %{script_dir}/grant_mysql_privileges
-    echo "Creating MySQL bacula database..."
-    %{script_dir}/create_mysql_database
-    echo "Creating bacula tables..."
-    %{script_dir}/make_mysql_tables
-
-# check to see if we need to upgrade a 3.x database
-elif [ "$DB_VER" -lt "13" ]; then
-    echo "This release requires an upgrade to your bacula database."
-    echo "Backing up your current database..."
-    mysqldump -f --opt bacula | bzip2 > %{working_dir}/bacula_backup.sql.bz2
-    echo "Upgrading bacula database ..."
-    %{script_dir}/update_mysql_tables
-    echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
-
-fi
+  # test for an existing database
+  # note: this ASSUMES no password has been set for bacula database
+  DB_VER=`mysql 2>/dev/null bacula -e 'select * from Version;'|tail -n 1`
+
+  # grant privileges and create tables if they do not exist
+  if [ -z "$DB_VER" ]; then
+      echo "Hmm, it doesn't look like you have an existing database."
+      echo "Granting privileges for MySQL user bacula..."
+      %{script_dir}/grant_mysql_privileges
+      echo "Creating MySQL bacula database..."
+      %{script_dir}/create_mysql_database
+      echo "Creating bacula tables..."
+      %{script_dir}/make_mysql_tables
+
+  elif [ "$DB_VER" -ge "12" -a "$DB_VER" -lt "1015" ]; then
+      echo "This release requires an upgrade to your bacula database."
+      echo "Backing up your current database..."
+      mysqldump -f --opt bacula | bzip2 > %{working_dir}/bacula_backup.sql.bz2
+      echo "Upgrading bacula database ..."
+      %{script_dir}/update_mysql_tables
+      echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
+
+  fi
 fi
 %endif
 
@@ -1279,7 +1140,7 @@ fi
 if [ -s %{working_dir}/bacula.db ]; then
         DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite3 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
         # check to see if we need to upgrade a 3.x database
-        if [ "$DB_VER" -lt "13" ] && [ "$DB_VER" -ge "12" ]; then
+        if [ "$DB_VER" -le "13" ] && [ "$DB_VER" -ge "12" ]; then
                 echo "This release requires an upgrade to your bacula database."
                 echo "Backing up your current database..."
                 echo ".dump" | %{sqlite_bindir}/sqlite3 %{working_dir}/bacula.db | bzip2 > %{working_dir}/bacula_backup.sql.bz2
@@ -1300,51 +1161,54 @@ fi
 
 %if %{postgresql}
 # check if psql can be called successfully at all
-if echo 'select * from Version;' | psql bacula 2>/dev/null; then
-
-# test for an existing database
-# note: this ASSUMES no password has been set for bacula database
-DB_VER=`echo 'select * from Version;' | psql bacula 2>/dev/null | tail -3 | head -1`
-
-# grant privileges and create tables if they do not exist
-if [ -z "$DB_VER" ]; then
-    echo "Hmm, doesn't look like you have an existing database."
-    echo "Creating PostgreSQL bacula database..."
-    %{script_dir}/create_postgresql_database
-    echo "Creating bacula tables..."
-    %{script_dir}/make_postgresql_tables
-    echo "Granting privileges for PostgreSQL user bacula..."
-    %{script_dir}/grant_postgresql_privileges
-
-# check to see if we need to upgrade a 5.0.x database
-elif [ "$DB_VER" -lt "13" ]; then
-    echo "This release requires an upgrade to your bacula database."
-    echo "Backing up your current database..."
-    pg_dump bacula | bzip2 > %{working_dir}/bacula_backup.sql.bz2
-    echo "Upgrading bacula database ..."
-    %{script_dir}/update_postgresql_tables
-    echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
-        
-fi
+if echo 'select * from Version;' | su - postgres -c 'psql bacula' 2>/dev/null; then
+
+  # test for an existing database
+  # note: this ASSUMES no password has been set for bacula database
+  DB_VER=`echo 'SELECT * FROM Version LIMIT 1;' | su - postgres -c 'psql bacula' 2>/dev/null | tail -3 | head -1`
+
+  # grant privileges and create tables if they do not exist
+  if [ -z "$DB_VER" ]; then
+      echo "Hmm, doesn't look like you have an existing database."
+      echo "Creating PostgreSQL bacula database..."
+      su - postgres -c %{script_dir}/create_postgresql_database
+      echo "Creating bacula tables..."
+      su - postgres -c %{script_dir}/make_postgresql_tables
+      echo "Granting privileges for PostgreSQL user bacula..."
+      su - postgres -c %{script_dir}/grant_postgresql_privileges
+
+  elif [ "$DB_VER" -ge "12" -a "$DB_VER" -lt "1015" ]; then
+      echo "This release requires an upgrade to your bacula database."
+      echo "Backing up your current database..."
+      su - postgres -c 'pg_dump bacula' | bzip2 > %{working_dir}/bacula_backup.sql.bz2
+      echo "Upgrading bacula database ..."
+      su - postgres -c %{script_dir}/update_postgresql_tables
+      echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
+      echo "Granting privileges for PostgreSQL user bacula..."
+      su - postgres -c %{script_dir}/grant_postgresql_privileges
+
+  fi
 fi
 %endif
 
 %if ! %{client_only}
 if [ -d %{sysconf_dir} ]; then
    cd %{sysconf_dir}
-   for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
-      pass=`openssl rand -base64 33`
-      for file in *.conf; do
-         sed "s@${string}@${pass}@g" $file > $file.new
-         cp -f $file.new $file; rm -f $file.new
-      done
-   done
-# put actual hostname in conf file
-   host=`hostname`
-   string="XXX_HOSTNAME_XXX"
+   if [ ! -f .rpm.sed ]; then
+       (umask 0177
+        echo "# This file is used to ensure that all passwords will" > .rpm.sed
+        echo "# match between configuration files"                  >> .rpm.sed
+       )
+       for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+           pass=`openssl rand -base64 33`
+           echo "s@${string}@${pass}@g" >> .rpm.sed
+       done
+   fi
+   host=`hostname -s`
    for file in *.conf; do
-      sed "s@${string}@${host}@g" $file >$file.new
-      cp -f $file.new $file; rm -f $file.new
+      sed -f .rpm.sed $file > $file.new
+      sed "s at XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
+      rm -f $file.new
    done
 fi
 %endif
@@ -1372,6 +1236,8 @@ fi
 %files client
 %defattr(-,root,root)
 %attr(-, root, %{daemon_group}) %dir %{script_dir}
+%attr(-, root, %{daemon_group}) %dir %{plugin_dir}
+#%attr(-, root, %{daemon_group}) %dir %{log_dir}
 %attr(-, root, %{daemon_group}) %dir %{sysconf_dir}
 %{script_dir}/bacula-ctl-fd
 /etc/init.d/bacula-fd
@@ -1387,6 +1253,7 @@ fi
 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.gdb
 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.dbx
 %attr(-, root, %{daemon_group}) %{script_dir}/btraceback.mdb
+%attr(-, root, %{daemon_group}) %{plugin_dir}/bpipe-fd.so
 %{_sbindir}/bconsole
 %{_mandir}/man8/bacula-fd.8.%{manpage_ext}
 %{_mandir}/man8/bacula.8.%{manpage_ext}
@@ -1426,19 +1293,21 @@ fi
 
 if [ -d %{sysconf_dir} ]; then
    cd %{sysconf_dir}
-   for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
-      pass=`openssl rand -base64 33`
-      for file in *.conf; do
-         sed "s@${string}@${pass}@g" $file > $file.new
-         cp -f $file.new $file; rm -f $file.new
-      done
-   done
-# put actual hostname in conf file
-   host=`hostname`
-   string="XXX_HOSTNAME_XXX"
+   if [ ! -f .rpm.sed ]; then
+       (umask 0177
+        echo "# This file is used to ensure that all passwords will" > .rpm.sed
+        echo "# match between configuration files"                  >> .rpm.sed
+       )
+       for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+           pass=`openssl rand -base64 33`
+           echo "s@${string}@${pass}@g" >> .rpm.sed
+       done
+   fi
+   host=`hostname -s`
    for file in *.conf; do
-      sed "s@${string}@${host}@g" $file >$file.new
-      cp -f $file.new $file; rm -f $file.new
+      sed -f .rpm.sed $file > $file.new
+      sed "s at XXX_HOSTNAME_XXX@${host}@g" $file.new > $file
+      rm -f $file.new
    done
 fi
 
@@ -1454,7 +1323,6 @@ fi
 %{_libdir}/libbac.*
 %{_libdir}/libbaccfg*
 %{_libdir}/libbacfind*
-%{_libdir}/libbacpy*
 
 %post libs
 /sbin/ldconfig
@@ -1485,81 +1353,3 @@ echo "The database update scripts were installed to %{script_dir}/updatedb"
 %endif
 
 %changelog
-* Sun Mar 07 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove --without-qwt from configure statement
-* Sat Feb 27 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- move shared libraries into bacula-libs package
-* Sat Feb 20 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove deprecated mysql4 and mysql5 build defines
-- add build support for tcpwrappers
-- remove bacula_config file for client only build
-- remove requirements for database server packages
-- enable readline support
-- add fc11 and fc12
-* Sat Feb 13 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- 5.0.1
-- fix client only build
-- clean up requirements for termcap
-- query.sql now empty by default so we install sample-query.sql along side it
-- remove old nobuild_mtx switch
-* Sun Feb 07 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix mysql database upgrade
-* Fri Feb 05 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix permissions of dbcheck
-- misc. cleanup
-* Sat Jan 30 2010 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- 5.0.0
-- add su112 and fc10 builds, remove doc package declaration.
-- fix source path for logwatch files.
-- restore static bundled build of sqlite (who took that out?) and remove use
-- of system sqlite. we don't support use of sqlite2.
-- upgrade database from version 11 to 12.
-* Mon Aug 10 2009 Philipp Storz <philipp.storz at dass-it.de>
-- changes to work with opensuse build service
-* Sat Aug 1 2009 Kern Sibbald <kern at sibbald.com>
-- Split docs into separate bacula-docs.spec, bacula-bat.spec and bacula-mtx.spec
-- removed build of rescue, gnome console and wxconsole
-* Sat Jun 20 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- Fix bat install which is now handled by make and uses shared libs
-* Sat May 16 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix libxml dependency for rh7 per Pasi Kärkkäinen <pasik at iki.fi>
-* Mon May 04 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- Fix post ldconfig problem in client only build
-* Sun May 03 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove more files installed by client-only build not needed by client package
-- remove libbacsql files from client package
-* Sat May 02 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- 3.0.1
-- update for new docs configuration
-* Sat Apr 25 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add switch to pass Distribution tag
-* Sun Apr 5 2009 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- 3.0.0 release
-- database update version 10 to 11
-- make now installs docs so we rm from buildroot
-- add shared libs in %_libdir and other misc new files
-* Wed Dec 31 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add su111 target
-* Sat Nov 08 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- set paths for QT using pkgconfig
-* Sat Oct 11 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- release 2.4.3 update depkgs to 11Sep08 remove file nmshack from mtx package
-* Sun Sep 07 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- adjust /opt/bacula install
-- add build switch to supress rescue package
-* Sun Aug 24 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add support for install to /opt/bacula
-* Sun Aug 17 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove libtermcap dependancy for FC9
-* Mon Aug 04 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix bat dependencies
-* Sat Jun 28 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add su110 target
-* Sat May 24 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- add fc9 target
-* Sun Mar 30 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- FHS compatibility changes
-* Sat Feb 16 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- remove fix for false buffer overflow detection with glibc >= 2.7
-* Sat Feb 09 2008 D. Scott Barninger <barninger at fairfieldcomputers.com>
-- fix for false buffer overflow detection with glibc >= 2.7
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index 9ff8751..61e4f52 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -386,9 +386,7 @@ depend:
 gen-potfiles:
 	echo "# List of source files containing translatable strings." > POTFILES.in
 	echo "# To generate this file, type 'make gen-potfiles'" >> POTFILES.in
-	cd .. && find -name "*.c" >> po/POTFILES.in
-	cd .. && find -name "*.h" >> po/POTFILES.in
-	cd .. && find -name "*.cpp" >> po/POTFILES.in
+	cd .. && git ls-files *.c *.h *.cpp >> po/POTFILES.in
 
 # Tell versions [3.59,3.63) of GNU make not to export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 95f07f6..b5e4e33 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,561 +1,194 @@
 # List of source files containing translatable strings.
 # To generate this file, type 'make gen-potfiles'
-./src/dird/jobq.c
-./src/dird/ua_select.c
-./src/dird/bsr.c
-./src/dird/ua_server.c
-./src/dird/verify.c
-./src/dird/admin.c
-./src/dird/dird.c
-./src/dird/ua_acl.c
-./src/dird/inc_conf.c
-./src/dird/ua_query.c
-./src/dird/newvol.c
-./src/dird/expand.c
-./src/dird/recycle.c
-./src/dird/ua_purge.c
-./src/dird/vbackup.c
-./src/dird/ua_output.c
-./src/dird/ua_dotcmds.c
-./src/dird/next_vol.c
-./src/dird/ua_cmds.c
-./src/dird/ua_tree.c
-./src/dird/dird_conf.c
-./src/dird/getmsg.c
-./src/dird/ua_restore.c
-./src/dird/fd_cmds.c
-./src/dird/ua_label.c
-./src/dird/scheduler.c
-./src/dird/run_conf.c
-./src/dird/ua_update.c
-./src/dird/migrate.c
-./src/dird/ua_prune.c
-./src/dird/autoprune.c
-./src/dird/ua_run.c
-./src/dird/dir_plugins.c
-./src/dird/backup.c
-./src/dird/restore.c
-./src/dird/ua_status.c
-./src/dird/ua_input.c
-./src/dird/pythondir.c
-./src/dird/job.c
-./src/dird/authenticate.c
-./src/dird/catreq.c
-./src/dird/mountreq.c
-./src/dird/msgchan.c
-./src/tray-monitor/tray_conf.c
-./src/tray-monitor/tray-monitor.c
-./src/tray-monitor/authenticate.c
-./src/stored/reserve.c
-./src/stored/bls.c
-./src/stored/dircmd.c
-./src/stored/parse_bsr.c
-./src/stored/ansi_label.c
-./src/stored/append.c
-./src/stored/vol_mgr.c
-./src/stored/label.c
-./src/stored/status.c
-./src/stored/read_record.c
-./src/stored/bextract.c
-./src/stored/bcopy.c
-./src/stored/dvd.c
-./src/stored/butil.c
-./src/stored/vtape.c
-./src/stored/acquire.c
-./src/stored/askdir.c
-./src/stored/record.c
-./src/stored/read.c
-./src/stored/autochanger.c
-./src/stored/stored.c
-./src/stored/device.c
-./src/stored/fd_cmds.c
-./src/stored/mount.c
-./src/stored/mac.c
-./src/stored/pythonsd.c
-./src/stored/spool.c
-./src/stored/lock.c
-./src/stored/sd_plugins.c
-./src/stored/stored_conf.c
-./src/stored/dev.c
-./src/stored/bscan.c
-./src/stored/scan.c
-./src/stored/job.c
-./src/stored/ebcdic.c
-./src/stored/btape.c
-./src/stored/authenticate.c
-./src/stored/match_bsr.c
-./src/stored/wait.c
-./src/stored/block.c
-./src/lib/dlist.c
-./src/lib/plugins.c
-./src/lib/htable.c
-./src/lib/workq.c
-./src/lib/base64.c
-./src/lib/sha1.c
-./src/lib/pythonlib.c
-./src/lib/watchdog.c
-./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
-./src/lib/message.c
-./src/lib/bnet_server.c
-./src/lib/tree.c
-./src/lib/btime.c
-./src/lib/bpipe.c
-./src/lib/lockmgr.c
-./src/lib/crypto.c
-./src/lib/cram-md5.c
-./src/lib/priv.c
-./src/lib/openssl.c
-./src/lib/util.c
-./src/lib/bregex.c
-./src/lib/hmac.c
-./src/lib/save/devlock.c
-./src/lib/devlock.c
-./src/lib/daemon.c
-./src/lib/tls.c
-./src/lib/jcr.c
-./src/lib/res.c
-./src/lib/parse_conf.c
-./src/lib/mntent_cache.c
-./src/lib/queue.c
-./src/lib/crc32.c
-./src/lib/alist.c
-./src/lib/bsnprintf.c
-./src/lib/mem_pool.c
-./src/lib/berrno.c
-./src/lib/serial.c
-./src/lib/bnet.c
-./src/lib/md5.c
-./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
-./src/lib/runscript.c
-./src/lib/lex.c
-./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
-./src/win32/scripts/bsleep.c
-./src/win32/filed/plugins/dbi_node.c
-./src/win32/filed/plugins/api.c
-./src/win32/filed/plugins/service_node.c
-./src/win32/filed/plugins/root_node.c
-./src/win32/filed/plugins/exchange-fd.c
-./src/win32/filed/plugins/node.c
-./src/win32/filed/plugins/bpipe-fd.c
-./src/win32/filed/plugins/store_node.c
-./src/win32/filed/plugins/storage_group_node.c
-./src/win32/filed/plugins/file_node.c
-./src/findlib/savecwd.c
-./src/findlib/mkpath.c
-./src/findlib/attribs.c
-./src/findlib/fstype.c
-./src/findlib/drivetype.c
-./src/findlib/enable_priv.c
-./src/findlib/create_file.c
-./src/findlib/bfile.c
-./src/findlib/find.c
-./src/findlib/match.c
-./src/findlib/find_one.c
-./src/plugins/sd/main.c
-./src/plugins/sd/example-plugin-sd.c
-./src/plugins/fd/test-plugin-fd.c
-./src/plugins/fd/example-plugin-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
-./src/cats/myingres.c
-./src/cats/sql_get.c
-./src/cats/bvfs.c
-./src/cats/sql_find.c
-./src/cats/sqlite.c
-./src/cats/ingres.c
-./src/cats/sql.c
-./src/cats/sql_cmds.c
-./src/cats/postgresql.c
-./src/cats/sql_glue.c
-./src/cats/sql_update.c
-./src/cats/sql_list.c
-./src/cats/dbi.c
-./src/cats/cats_dummy.c
-./src/cats/sql_delete.c
-./src/cats/cats.c
-./src/cats/mysql.c
-./src/wx-console/console_conf.c
-./src/wx-console/authenticate.c
-./src/console/console.c
-./src/console/console_conf.c
-./src/console/conio.c
-./src/console/authenticate.c
-./src/tools/gigaslam.c
-./src/tools/testls.c
-./src/tools/bvfs_test.c
-./src/tools/bbatch.c
-./src/tools/ing_test.c
-./src/tools/grow.c
-./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
-./src/tools/smtp-orig.c
-./src/tools/cats_test.c
-./src/tools/bsmtp.c
-./src/tools/dbcheck.c
-./src/filed/verify.c
-./src/filed/accurate.c
-./src/filed/status.c
-./src/filed/pythonfd.c
-./src/filed/heartbeat.c
-./src/filed/xattr.c
-./src/filed/fd_plugins.c
-./src/filed/filed.c
-./src/filed/filed_conf.c
-./src/filed/acl.c
-./src/filed/verify_vol.c
-./src/filed/backup.c
-./src/filed/restore.c
-./src/filed/job.c
-./src/filed/estimate.c
-./src/filed/authenticate.c
-./examples/nagios/check_bacula/check_bacula.c
-./examples/nagios/check_bacula/authenticate.c
-./src/dird/jobq.h
-./src/dird/protos.h
-./src/dird/dird.h
-./src/dird/dird_conf.h
-./src/dird/ua.h
-./src/dird/bsr.h
-./src/dird/dir_plugins.h
-./src/fileopts.h
-./src/config.h
-./src/bc_types.h
-./src/tray-monitor/tray-monitor.h
-./src/tray-monitor/tray_conf.h
-./src/baconfig.h
-./src/bacula.h
-./src/stored/lock.h
-./src/stored/reserve.h
-./src/stored/protos.h
-./src/stored/dev.h
-./src/stored/stored.h
-./src/stored/vtape.h
-./src/stored/bsr.h
-./src/stored/block.h
-./src/stored/sd_plugins.h
-./src/stored/stored_conf.h
-./src/stored/record.h
-./src/ch.h
-./src/version.h
-./src/lib/tree.h
-./src/lib/var.h
-./src/lib/mutex_list.h
-./src/lib/message.h
-./src/lib/bmtio.h
-./src/lib/protos.h
-./src/lib/watchdog.h
-./src/lib/queue.h
-./src/lib/lex.h
-./src/lib/openssl.h
-./src/lib/status.h
-./src/lib/rwlock.h
-./src/lib/base64.h
-./src/lib/htable.h
-./src/lib/dlist.h
-./src/lib/waitq.h
-./src/lib/bregex.h
-./src/lib/attr.h
-./src/lib/guid_to_name.h
-./src/lib/fnmatch.h
-./src/lib/rblist.h
-./src/lib/save/devlock.h
-./src/lib/plugins.h
-./src/lib/bits.h
-./src/lib/pythonlib.h
-./src/lib/breg.h
-./src/lib/alist.h
-./src/lib/smartall.h
-./src/lib/md5.h
-./src/lib/lib.h
-./src/lib/mem_pool.h
-./src/lib/btime.h
-./src/lib/workq.h
-./src/lib/tcpd.h
-./src/lib/tls.h
-./src/lib/sha1.h
-./src/lib/btimers.h
-./src/lib/bpipe.h
-./src/lib/berrno.h
-./src/lib/runscript.h
-./src/lib/mntent_cache.h
-./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
-./src/win32/compat/dlfcn.h
-./src/win32/compat/strings.h
-./src/win32/compat/sys/time.h
-./src/win32/compat/sys/ioctl.h
-./src/win32/compat/sys/stat.h
-./src/win32/compat/sys/wait.h
-./src/win32/compat/sys/mtio.h
-./src/win32/compat/sys/file.h
-./src/win32/compat/sys/socket.h
-./src/win32/compat/mswinver.h
-./src/win32/compat/compat.h
-./src/win32/compat/arpa/inet.h
-./src/win32/compat/pwd.h
-./src/win32/compat/winsock.h
-./src/win32/compat/mingwconfig.h
-./src/win32/compat/dirent.h
-./src/win32/compat/alloca.h
-./src/win32/compat/grp.h
-./src/win32/compat/unistd.h
-./src/win32/compat/syslog.h
-./src/win32/compat/netdb.h
-./src/win32/compat/ms_atl.h
-./src/win32/stored/who.h
-./src/win32/winapi.h
-./src/win32/wx-console/w32api.h
-./src/win32/libwin32/protos.h
-./src/win32/libwin32/statusDialog.h
-./src/win32/libwin32/aboutDialog.h
-./src/win32/libwin32/res.h
-./src/win32/libwin32/trayMonitor.h
-./src/win32/libwin32/win32.h
-./src/win32/tools/ScsiDeviceList.h
-./src/win32/filed/who.h
-./src/win32/filed/plugins/api.h
-./src/win32/filed/plugins/node.h
-./src/win32/filed/plugins/exchange-fd.h
-./src/win32/filed/plugins/comadmin.h
-./src/win32/filed/vss.h
-./src/findlib/bfile.h
-./src/findlib/protos.h
-./src/findlib/find.h
-./src/findlib/savecwd.h
-./src/plugins/fd/fd_common.h
-./src/host.h
-./src/cats/sql_glue.h
-./src/cats/sql_cmds.h
-./src/cats/protos.h
-./src/cats/bdb_mysql.h
-./src/cats/bvfs.h
-./src/cats/bdb_postgresql.h
-./src/cats/bdb_sqlite.h
-./src/cats/bdb_ingres.h
-./src/cats/bdb_priv.h
-./src/cats/myingres.h
-./src/cats/bdb_dbi.h
-./src/cats/cats.h
-./src/wx-console/wxbconfigfileeditor.h
-./src/wx-console/wxbmainframe.h
-./src/wx-console/wxbutils.h
-./src/wx-console/wxbrestorepanel.h
-./src/wx-console/console_conf.h
-./src/wx-console/wxbhistorytextctrl.h
-./src/wx-console/console_thread.h
-./src/wx-console/wxbconfigpanel.h
-./src/wx-console/wx-console_private.h
-./src/wx-console/wxbtableparser.h
-./src/wx-console/wxblistctrl.h
-./src/wx-console/wxbtreectrl.h
-./src/wx-console/csprint.h
-./src/console/console_conf.h
-./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
-./src/qt-console/status/clientstat.h
-./src/qt-console/status/storstat.h
-./src/qt-console/status/dirstat.h
-./src/qt-console/tray-monitor/tray-ui.h
-./src/qt-console/tray-monitor/ui/ui_run.h
-./src/qt-console/tray-monitor/tray-monitor.h
-./src/qt-console/tray-monitor/tray_conf.h
-./src/qt-console/jobs/jobs.h
-./src/qt-console/job/job.h
-./src/qt-console/util/comboutil.h
-./src/qt-console/util/fmtwidgetitem.h
-./src/qt-console/mediainfo/mediainfo.h
-./src/qt-console/select/select.h
-./src/qt-console/select/textinput.h
-./src/qt-console/ui32/ui_run.h
-./src/qt-console/ui32/ui_clientstat.h
-./src/qt-console/ui32/ui_joblog.h
-./src/qt-console/ui32/ui_storage.h
-./src/qt-console/ui32/ui_prerestore.h
-./src/qt-console/ui32/ui_mediaview.h
-./src/qt-console/ui32/ui_mount.h
-./src/qt-console/ui32/ui_runrestore.h
-./src/qt-console/ui32/ui_mediainfo.h
-./src/qt-console/ui32/ui_job.h
-./src/qt-console/ui32/ui_jobs.h
-./src/qt-console/ui32/ui_estimate.h
-./src/qt-console/ui32/ui_select.h
-./src/qt-console/ui32/ui_clients.h
-./src/qt-console/ui32/ui_brestore.h
-./src/qt-console/ui32/ui_runcmd.h
-./src/qt-console/ui32/ui_main.h
-./src/qt-console/ui32/ui_textinput.h
-./src/qt-console/ui32/ui_storstat.h
-./src/qt-console/ui32/ui_console.h
-./src/qt-console/ui32/ui_medialist.h
-./src/qt-console/ui32/ui_label.h
-./src/qt-console/ui32/ui_prefs.h
-./src/qt-console/ui32/ui_content.h
-./src/qt-console/ui32/ui_joblist.h
-./src/qt-console/ui32/ui_prune.h
-./src/qt-console/ui32/ui_help.h
-./src/qt-console/ui32/ui_restore.h
-./src/qt-console/ui32/ui_fileset.h
-./src/qt-console/ui32/ui_dirstat.h
-./src/qt-console/ui32/ui_restoretree.h
-./src/qt-console/ui32/ui_relabel.h
-./src/qt-console/ui32/ui_mediaedit.h
-./src/qt-console/qstd.h
-./src/qt-console/win32/qplatformdefs.h
-./src/qt-console/joblist/joblist.h
-./src/qt-console/label/label.h
-./src/qt-console/mainwin.h
-./src/qt-console/pages.h
-./src/qt-console/bcomm/dircomm.h
-./src/qt-console/relabel/relabel.h
-./src/qt-console/console/console.h
-./src/qt-console/clients/clients.h
-./src/qt-console/run/run.h
-./src/qt-console/bat_conf.h
-./src/qt-console/storage/storage.h
-./src/qt-console/storage/content.h
-./src/qt-console/joblog/joblog.h
-./src/qt-console/bat.h
-./src/qt-console/mediaedit/mediaedit.h
-./src/qt-console/restore/restoretree.h
-./src/qt-console/restore/restore.h
-./src/qt-console/fileset/fileset.h
-./src/qt-console/jobgraphs/jobplot.h
-./src/qt-console/mount/mount.h
-./src/jcr.h
-./src/filed/protos.h
-./src/filed/acl.h
-./src/filed/filed_conf.h
-./src/filed/filed.h
-./src/filed/xattr.h
-./src/filed/fd_plugins.h
-./src/filed/restore.h
-./autoconf/confdefs.h
-./autoconf/acconfig.h
-./examples/nagios/check_bacula/check_bacula.h
-./src/win32/dird/service.cpp
-./src/win32/dird/main.cpp
-./src/win32/compat/compat.cpp
-./src/win32/compat/print.cpp
-./src/win32/stored/service.cpp
-./src/win32/stored/mtops.cpp
-./src/win32/stored/postest/postest.cpp
-./src/win32/stored/trayMonitor.cpp
-./src/win32/stored/main.cpp
-./src/win32/libwin32/statusDialog.cpp
-./src/win32/libwin32/service.cpp
-./src/win32/libwin32/aboutDialog.cpp
-./src/win32/libwin32/trayMonitor.cpp
-./src/win32/libwin32/main.cpp
-./src/win32/tools/scsilist.cpp
-./src/win32/tools/ScsiDeviceList.cpp
-./src/win32/filed/vss_Vista.cpp
-./src/win32/filed/service.cpp
-./src/win32/filed/vss.cpp
-./src/win32/filed/vss_W2K3.cpp
-./src/win32/filed/vss_generic.cpp
-./src/win32/filed/trayMonitor.cpp
-./src/win32/filed/vss_XP.cpp
-./src/win32/filed/main.cpp
-./src/wx-console/wxbconfigfileeditor.cpp
-./src/wx-console/wxbtableparser.cpp
-./src/wx-console/wxbrestorepanel.cpp
-./src/wx-console/wxbutils.cpp
-./src/wx-console/console_thread.cpp
-./src/wx-console/wxbconfigpanel.cpp
-./src/wx-console/wxbhistorytextctrl.cpp
-./src/wx-console/wxblistctrl.cpp
-./src/wx-console/wxbtreectrl.cpp
-./src/wx-console/main.cpp
-./src/wx-console/wxbmainframe.cpp
-./src/qt-console/help/help.cpp
-./src/qt-console/medialist/mediaview.cpp
-./src/qt-console/medialist/medialist.cpp
-./src/qt-console/release/qrc_main.cpp
-./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
-./src/qt-console/tray-monitor/authenticate.cpp
-./src/qt-console/tray-monitor/tray_conf.cpp
-./src/qt-console/qstd.cpp
-./src/qt-console/jobs/jobs.cpp
-./src/qt-console/job/job.cpp
-./src/qt-console/util/fmtwidgetitem.cpp
-./src/qt-console/util/comboutil.cpp
-./src/qt-console/debug/qrc_main.cpp
-./src/qt-console/mediainfo/mediainfo.cpp
-./src/qt-console/select/textinput.cpp
-./src/qt-console/select/select.cpp
-./src/qt-console/joblist/joblist.cpp
-./src/qt-console/pages.cpp
-./src/qt-console/label/label.cpp
-./src/qt-console/bcomm/dircomm_auth.cpp
-./src/qt-console/bcomm/dircomm.cpp
-./src/qt-console/relabel/relabel.cpp
-./src/qt-console/console/console.cpp
-./src/qt-console/clients/clients.cpp
-./src/qt-console/run/runcmd.cpp
-./src/qt-console/run/prune.cpp
-./src/qt-console/run/run.cpp
-./src/qt-console/run/estimate.cpp
-./src/qt-console/mainwin.cpp
-./src/qt-console/storage/content.cpp
-./src/qt-console/storage/storage.cpp
-./src/qt-console/bat_conf.cpp
-./src/qt-console/joblog/joblog.cpp
-./src/qt-console/mediaedit/mediaedit.cpp
-./src/qt-console/restore/brestore.cpp
-./src/qt-console/restore/restoretree.cpp
-./src/qt-console/restore/restore.cpp
-./src/qt-console/restore/prerestore.cpp
-./src/qt-console/fileset/fileset.cpp
-./src/qt-console/jobgraphs/jobplot.cpp
-./src/qt-console/main.cpp
-./src/qt-console/mount/mount.cpp
+autoconf/acconfig.h
+autoconf/confdefs.h
+examples/nagios/check_bacula/check_bacula.h
+src/baconfig.h
+src/bacula.h
+src/bc_types.h
+src/cats/bdb_mysql.h
+src/cats/bdb_postgresql.h
+src/cats/bdb_priv.h
+src/cats/bdb_sqlite.h
+src/cats/bvfs.h
+src/cats/cats.h
+src/cats/protos.h
+src/cats/sql_cmds.h
+src/cats/sql_glue.h
+src/ch.h
+src/console/conio.h
+src/console/console_conf.h
+src/console/func.h
+src/dird/bsr.h
+src/dird/dir_plugins.h
+src/dird/dird.h
+src/dird/dird_conf.h
+src/dird/jobq.h
+src/dird/protos.h
+src/dird/ua.h
+src/filed/acl.h
+src/filed/fd_plugins.h
+src/filed/filed.h
+src/filed/filed_conf.h
+src/filed/protos.h
+src/filed/restore.h
+src/filed/xattr.h
+src/fileopts.h
+src/filetypes.h
+src/findlib/bfile.h
+src/findlib/find.h
+src/findlib/protos.h
+src/jcr.h
+src/lib/address_conf.h
+src/lib/alist.h
+src/lib/attr.h
+src/lib/base64.h
+src/lib/berrno.h
+src/lib/bits.h
+src/lib/bmtio.h
+src/lib/bpipe.h
+src/lib/breg.h
+src/lib/bregex.h
+src/lib/bsock.h
+src/lib/btime.h
+src/lib/btimers.h
+src/lib/crypto.h
+src/lib/devlock.h
+src/lib/dlist.h
+src/lib/fnmatch.h
+src/lib/guid_to_name.h
+src/lib/htable.h
+src/lib/ini.h
+src/lib/lex.h
+src/lib/lib.h
+src/lib/lockmgr.h
+src/lib/md5.h
+src/lib/mem_pool.h
+src/lib/message.h
+src/lib/mntent_cache.h
+src/lib/mutex_list.h
+src/lib/openssl.h
+src/lib/parse_conf.h
+src/lib/plugins.h
+src/lib/protos.h
+src/lib/queue.h
+src/lib/rblist.h
+src/lib/runscript.h
+src/lib/rwlock.h
+src/lib/sellist.h
+src/lib/serial.h
+src/lib/sha1.h
+src/lib/smartall.h
+src/lib/status.h
+src/lib/tcpd.h
+src/lib/tls.h
+src/lib/tree.h
+src/lib/var.h
+src/lib/waitq.h
+src/lib/watchdog.h
+src/lib/workq.h
+src/plugins/fd/fd_common.h
+src/qt-console/bat.h
+src/qt-console/bat_conf.cpp
+src/qt-console/bat_conf.h
+src/qt-console/bcomm/dircomm.cpp
+src/qt-console/bcomm/dircomm.h
+src/qt-console/bcomm/dircomm_auth.cpp
+src/qt-console/clients/clients.cpp
+src/qt-console/clients/clients.h
+src/qt-console/console/console.cpp
+src/qt-console/console/console.h
+src/qt-console/fileset/fileset.cpp
+src/qt-console/fileset/fileset.h
+src/qt-console/help/help.cpp
+src/qt-console/help/help.h
+src/qt-console/job/job.cpp
+src/qt-console/job/job.h
+src/qt-console/jobgraphs/jobplot.cpp
+src/qt-console/jobgraphs/jobplot.h
+src/qt-console/joblist/joblist.cpp
+src/qt-console/joblist/joblist.h
+src/qt-console/joblog/joblog.cpp
+src/qt-console/joblog/joblog.h
+src/qt-console/jobs/jobs.cpp
+src/qt-console/jobs/jobs.h
+src/qt-console/label/label.cpp
+src/qt-console/label/label.h
+src/qt-console/main.cpp
+src/qt-console/mainwin.cpp
+src/qt-console/mainwin.h
+src/qt-console/mediaedit/mediaedit.cpp
+src/qt-console/mediaedit/mediaedit.h
+src/qt-console/mediainfo/mediainfo.cpp
+src/qt-console/mediainfo/mediainfo.h
+src/qt-console/medialist/medialist.cpp
+src/qt-console/medialist/medialist.h
+src/qt-console/medialist/mediaview.cpp
+src/qt-console/medialist/mediaview.h
+src/qt-console/mount/mount.cpp
+src/qt-console/mount/mount.h
+src/qt-console/pages.cpp
+src/qt-console/pages.h
+src/qt-console/qstd.cpp
+src/qt-console/qstd.h
+src/qt-console/relabel/relabel.cpp
+src/qt-console/relabel/relabel.h
+src/qt-console/restore/brestore.cpp
+src/qt-console/restore/prerestore.cpp
+src/qt-console/restore/restore.cpp
+src/qt-console/restore/restore.h
+src/qt-console/restore/restoretree.cpp
+src/qt-console/restore/restoretree.h
+src/qt-console/run/estimate.cpp
+src/qt-console/run/prune.cpp
+src/qt-console/run/run.cpp
+src/qt-console/run/run.h
+src/qt-console/run/runcmd.cpp
+src/qt-console/select/select.cpp
+src/qt-console/select/select.h
+src/qt-console/select/textinput.cpp
+src/qt-console/select/textinput.h
+src/qt-console/status/clientstat.cpp
+src/qt-console/status/clientstat.h
+src/qt-console/status/dirstat.cpp
+src/qt-console/status/dirstat.h
+src/qt-console/status/storstat.cpp
+src/qt-console/status/storstat.h
+src/qt-console/storage/content.cpp
+src/qt-console/storage/content.h
+src/qt-console/storage/storage.cpp
+src/qt-console/storage/storage.h
+src/qt-console/testprogs/examp/main.cpp
+src/qt-console/testprogs/examp/mainwindow.cpp
+src/qt-console/testprogs/examp/mainwindow.h
+src/qt-console/testprogs/putz/main.cpp
+src/qt-console/testprogs/putz/putz.cpp
+src/qt-console/testprogs/putz/putz.h
+src/qt-console/tray-monitor/authenticate.cpp
+src/qt-console/tray-monitor/tray-monitor.cpp
+src/qt-console/tray-monitor/tray-monitor.h
+src/qt-console/tray-monitor/tray-ui.h
+src/qt-console/tray-monitor/tray_conf.cpp
+src/qt-console/tray-monitor/tray_conf.h
+src/qt-console/util/comboutil.cpp
+src/qt-console/util/comboutil.h
+src/qt-console/util/fmtwidgetitem.cpp
+src/qt-console/util/fmtwidgetitem.h
+src/qt-console/win32/qplatformdefs.h
+src/stored/block.h
+src/stored/bsr.h
+src/stored/dev.h
+src/stored/file_dev.h
+src/stored/lock.h
+src/stored/protos.h
+src/stored/record.h
+src/stored/reserve.h
+src/stored/sd_plugins.h
+src/stored/stored.h
+src/stored/stored_conf.h
+src/stored/tape_dev.h
+src/stored/vol_mgr.h
+src/stored/vtape_dev.h
+src/streams.h
+src/tools/assert_macro.h
+src/version.h
diff --git a/po/bacula.pot b/po/bacula.pot
index 2166b6e..faf9132 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: 2013-02-19 18:26+0100\n"
+"POT-Creation-Date: 2014-07-29 18:18+0200\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"
@@ -17,17993 +17,465 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/dird/jobq.c:74
+#: src/baconfig.h:60 src/baconfig.h:61 src/baconfig.h:66 src/baconfig.h:67
 #, c-format
-msgid "pthread_attr_init: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/dird/jobq.c:83
-#, c-format
-msgid "pthread_mutex_init: ERR=%s\n"
+#: src/baconfig.h:76
+msgid "*None*"
 msgstr ""
 
-#: src/dird/jobq.c:89
-#, c-format
-msgid "pthread_cond_init: ERR=%s\n"
+#: src/lib/status.h:73
+msgid ""
+"\n"
+"Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/jobq.c:131
-#, c-format
-msgid "pthread_cond_broadcast: ERR=%s\n"
+#: src/lib/status.h:80
+msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/jobq.c:139
-#, c-format
-msgid "pthread_cond_wait: ERR=%s\n"
+#: src/lib/status.h:82
+msgid "===================================================================\n"
 msgstr ""
 
-#: src/dird/jobq.c:180
-#, c-format
-msgid "Job %s waiting %d seconds for scheduled start time.\n"
+#: src/lib/status.h:102
+msgid "Created"
 msgstr ""
 
-#: 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"
+#: src/lib/status.h:106
+msgid "Error"
 msgstr ""
 
-#: src/dird/jobq.c:242
-#, c-format
-msgid "pthread_thread_create: ERR=%s\n"
+#: src/lib/status.h:109
+msgid "Diffs"
 msgstr ""
 
-#: src/dird/jobq.c:352
-#, c-format
-msgid "pthread_cond_signal: ERR=%s\n"
+#: src/lib/status.h:112
+msgid "Cancel"
 msgstr ""
 
-#: src/dird/jobq.c:363
-#, c-format
-msgid "pthread_create: ERR=%s\n"
+#: src/lib/status.h:115
+msgid "OK"
 msgstr ""
 
-#: src/dird/jobq.c:647
-#, c-format
-msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
+#: src/lib/status.h:118
+msgid "OK -- with warnings"
 msgstr ""
 
-#: src/dird/jobq.c:703 src/dird/jobq.c:708
-msgid "previous Job"
+#: src/lib/status.h:122
+msgid "Other"
 msgstr ""
 
-#: src/dird/jobq.c:745
+#: src/lib/status.h:134
 #, c-format
-msgid ""
-"Job canceled. Attempt to read and write same device.\n"
-"    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
+msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:54
+#: src/lib/status.h:142
 #, c-format
-msgid "The current %s retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:59
-msgid "Continue? (yes/mod/no): "
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_select.c:67
-msgid "Invalid period.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:143
-msgid "You have the following choices:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:159
-msgid "The defined Storage resources are:\n"
-msgstr ""
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1176
-#: src/wx-console/wxbrestorepanel.cpp:1845
-#: src/wx-console/wxbrestorepanel.cpp:1916
-msgid "Storage"
-msgstr ""
-
-#: src/dird/ua_select.c:167
-msgid "Select Storage resource"
-msgstr ""
-
-#: src/dird/ua_select.c:182 src/dird/ua_restore.c:1296
-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:226
-msgid "FileSet"
-msgstr ""
-
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300
-msgid "Select FileSet resource"
-msgstr ""
-
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
-msgid "Could not find a Catalog resource\n"
-msgstr ""
-
-#: src/dird/ua_select.c:223
-msgid "You must specify a \"use <catalog-name>\" command before continuing.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:229
-msgid "The defined Catalog resources are:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:237
-msgid "Catalog"
-msgstr ""
-
-#: src/dird/ua_select.c:237
-msgid "Select Catalog resource"
-msgstr ""
-
-#: src/dird/ua_select.c:255 src/dird/ua_select.c:281
-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:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
-#: src/dird/ua_run.c:225
-msgid "Job"
+msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289
-msgid "Select Job resource"
+#: src/lib/status.h:171 src/lib/status.h:182 src/lib/status.h:196
+#: src/lib/status.h:200 src/lib/status.h:204
+msgid "Bacula "
 msgstr ""
 
-#: src/dird/ua_select.c:308
+#: src/qt-console/bat_conf.cpp:130
 #, c-format
-msgid "Error: Restore Job resource \"%s\" does not exist.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:322
-msgid "The defined Restore Job resources are:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:330
-msgid "Select Restore Job"
-msgstr ""
-
-#: src/dird/ua_select.c:347
-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: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
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:700
-#: src/wx-console/wxbrestorepanel.cpp:1133
-#: src/wx-console/wxbrestorepanel.cpp:1136
-#: src/wx-console/wxbrestorepanel.cpp:1238
-#: src/wx-console/wxbrestorepanel.cpp:1838
-#: src/wx-console/wxbrestorepanel.cpp:1840
-#: src/wx-console/wxbrestorepanel.cpp:1914
-#: src/wx-console/wxbrestorepanel.cpp:1970
-msgid "Client"
-msgstr ""
-
-#: src/dird/ua_select.c:355
-msgid "Select Client (File daemon) resource"
+msgid "No record for %d %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:382
+#: src/qt-console/bat_conf.cpp:139
 #, c-format
-msgid "Error: Client resource %s does not exist.\n"
+msgid "Director: name=%s address=%s DIRport=%d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:407
+#: src/qt-console/bat_conf.cpp:143
 #, c-format
-msgid "Could not find Client %s: ERR=%s"
+msgid "Console: name=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:417 src/dird/ua_select.c:471
+#: src/qt-console/bat_conf.cpp:146
+#: src/qt-console/tray-monitor/tray_conf.cpp:183
 #, c-format
-msgid "Could not find Client \"%s\": ERR=%s"
+msgid "ConsoleFont: name=%s font face=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:446
+#: src/qt-console/bat_conf.cpp:150 src/qt-console/bat_conf.cpp:231
+#: src/qt-console/bat_conf.cpp:279 src/qt-console/bat_conf.cpp:309
 #, c-format
-msgid "Error obtaining client ids. ERR=%s\n"
+msgid "Unknown resource type %d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:450
-msgid "No clients defined. You must run a job before using this command.\n"
+#: src/qt-console/bat_conf.cpp:257
+#: src/qt-console/tray-monitor/tray_conf.cpp:276
+#, c-format
+msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:454
-msgid "Defined Clients:\n"
+#: src/qt-console/bat_conf.cpp:326
+#: src/qt-console/tray-monitor/tray_conf.cpp:360
+#, c-format
+msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:464
-msgid "Select the Client"
+#: src/qt-console/bcomm/dircomm.cpp:85
+#, c-format
+msgid "Already connected\"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:497 src/dird/ua_select.c:521 src/dird/ua_select.c:566
+#: src/qt-console/bcomm/dircomm.cpp:96
+#: src/qt-console/tray-monitor/tray-monitor.cpp:347
 #, c-format
-msgid "Could not find Pool \"%s\": ERR=%s"
+msgid "Connecting to Director %s:%d"
 msgstr ""
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
+#: src/qt-console/bcomm/dircomm.cpp:98
 #, c-format
-msgid "Error obtaining pool ids. ERR=%s\n"
+msgid ""
+"Connecting to Director %s:%d\n"
+"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:536
-msgid "No pools defined. Use the \"create\" command to create one.\n"
+#: src/qt-console/bcomm/dircomm.cpp:150
+#, c-format
+msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:540
-msgid "Defined Pools:\n"
+#: src/qt-console/bcomm/dircomm.cpp:173
+#, c-format
+msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:365
-#: src/baconfig.h:88
-msgid "*None*"
+#: src/qt-console/bcomm/dircomm.cpp:195
+#: src/qt-console/tray-monitor/tray-monitor.cpp:352
+msgid "Director daemon"
 msgstr ""
 
-#: 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"
+#: src/qt-console/bcomm/dircomm.cpp:233
+msgid "Initializing ..."
 msgstr ""
 
-#: src/dird/ua_select.c:553
-msgid "Select the Pool"
+#: src/qt-console/bcomm/dircomm.cpp:249 src/qt-console/console/console.cpp:130
+msgid "Connected"
 msgstr ""
 
-#: src/dird/ua_select.c:591
-#, c-format
-msgid "No access to Pool \"%s\"\n"
+#: src/qt-console/bcomm/dircomm.cpp:373
+msgid "Command completed ..."
 msgstr ""
 
-#: src/dird/ua_select.c:623
-msgid "Enter *MediaId or Volume name: "
+#: src/qt-console/bcomm/dircomm.cpp:380 src/qt-console/console/console.cpp:367
+msgid "Processing command ..."
 msgstr ""
 
-#: src/dird/ua_select.c:658
-msgid "The defined Pool resources are:\n"
+#: src/qt-console/bcomm/dircomm.cpp:387
+msgid "At main prompt waiting for input ..."
 msgstr ""
 
-#: src/dird/ua_select.c:666
-msgid "Select Pool resource"
+#: src/qt-console/bcomm/dircomm.cpp:394 src/qt-console/bcomm/dircomm.cpp:407
+msgid "At prompt waiting for input ..."
 msgstr ""
 
-#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
-#, c-format
-msgid "Error: Pool resource \"%s\" does not exist.\n"
+#: src/qt-console/bcomm/dircomm.cpp:415
+msgid "Command failed."
 msgstr ""
 
-#: src/dird/ua_select.c:701
-msgid "Enter the JobId to select: "
+#: src/qt-console/bcomm/dircomm.cpp:487
+msgid "Director disconnected."
 msgstr ""
 
-#: src/dird/ua_select.c:739
+#: src/qt-console/bcomm/dircomm_auth.cpp:107
 #, c-format
-msgid "Could not find Job \"%s\": ERR=%s"
+msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:819
+#: src/qt-console/bcomm/dircomm_auth.cpp:114
 #, c-format
-msgid "Automatically selected %s: %s\n"
+msgid ""
+"Authorization problem: Remote server at \"%s:%d\" did not advertise required "
+"TLS support.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:830
+#: src/qt-console/bcomm/dircomm_auth.cpp:122
 #, c-format
 msgid ""
-"Your request has multiple choices for \"%s\". Selection is not possible in "
-"batch mode.\n"
+"Authorization problem with Director at \"%s:%d\": Remote server requires "
+"TLS.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:848
+#: src/qt-console/bcomm/dircomm_auth.cpp:133
 #, c-format
-msgid "Selection list for \"%s\" is empty!\n"
+msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:854
+#: src/qt-console/bcomm/dircomm_auth.cpp:145
 #, c-format
-msgid "Automatically selected: %s\n"
+msgid ""
+"Bad response to Hello command: ERR=%s\n"
+"The Director at \"%s:%d\" is probably not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:866
-msgid "Selection aborted, nothing done.\n"
+#: src/qt-console/bcomm/dircomm_auth.cpp:154
+#, c-format
+msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr ""
 
-#: src/dird/ua_select.c:871
+#: src/qt-console/bcomm/dircomm_auth.cpp:169
 #, c-format
-msgid "Please enter a number between 1 and %d\n"
+msgid ""
+"Authorization problem with Director at \"%s:%d\"\n"
+"Most likely the passwords do not agree.\n"
+"If you are using TLS, there may have been a certificate validation error "
+"during the TLS handshake.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:920
-msgid "Storage name given twice.\n"
+#: src/qt-console/main.cpp:154
+msgid "Cryptography library initialization failed.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:937
+#: src/qt-console/main.cpp:158
 #, c-format
-msgid "Expecting jobid=nn command, got: %s\n"
+msgid "Please correct configuration file: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:941
+#: src/qt-console/main.cpp:180
 #, c-format
-msgid "JobId %s is not running.\n"
+msgid ""
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: 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          no signals\n"
+"       -t          test - read configuration and exit\n"
+"       -?          print this message.\n"
+"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:951
-#, c-format
-msgid "Expecting job=xxx, got: %s.\n"
+#: src/qt-console/main.cpp:213 src/qt-console/main.cpp:243
+msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
+#: src/qt-console/main.cpp:221
 #, c-format
-msgid "Job \"%s\" is not running.\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:963
+#: src/qt-console/main.cpp:230
 #, c-format
-msgid "Expecting ujobid=xxx, got: %s.\n"
+msgid ""
+"No Director resource defined in %s\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/dird/ua_select.c:983
+#: src/qt-console/main.cpp:251
 #, c-format
-msgid "Storage resource \"%s\": not found\n"
-msgstr ""
-
-#: src/dird/ua_select.c:1015
-msgid "Enter autochanger drive[0]: "
-msgstr ""
-
-#: src/dird/ua_select.c:1036
-msgid "Enter autochanger slot: "
-msgstr ""
-
-#: src/dird/ua_select.c:1066
-msgid "Media Types defined in conf file:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:1072
-msgid "Media Type"
-msgstr ""
-
-#: src/dird/ua_select.c:1072
-msgid "Select the Media Type"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1111
-#, c-format
-msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:75
+msgid ""
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
+#: src/qt-console/tray-monitor/authenticate.cpp:84
 #, c-format
-msgid "Warning Job %s is not running. Continuing anyway ...\n"
-msgstr ""
-
-#: 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"
+msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
-msgid "No Jobs running.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:91
+msgid "Director rejected Hello command\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1167
-msgid "None of your jobs are running.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:119
+#, c-format
+msgid "Error sending Hello to Storage daemon. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1172
-msgid "Select Job:\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:125
+msgid ""
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:1181
+#: src/qt-console/tray-monitor/authenticate.cpp:132
 #, c-format
-msgid "JobId=%s Job=%s"
+msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1185
-#, c-format
-msgid "Choose Job to %s"
+#: src/qt-console/tray-monitor/authenticate.cpp:139
+msgid "Storage daemon rejected Hello command\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1192
+#: src/qt-console/tray-monitor/authenticate.cpp:165
 #, c-format
-msgid ""
-"Cancel: %s\n"
-"\n"
-"%s"
-msgstr ""
-
-#: src/dird/ua_select.c:1193
-msgid "Confirm cancel?"
+msgid "Error sending Hello to File daemon. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1199
-msgid "Confirm cancel (yes/no): "
+#: src/qt-console/tray-monitor/authenticate.cpp:171
+msgid ""
+"Director and File daemon passwords or names not the same.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:1208 src/dird/ua_cmds.c:733 src/dird/ua_cmds.c:1100
+#: src/qt-console/tray-monitor/authenticate.cpp:178
 #, c-format
-msgid "Job \"%s\" not found.\n"
+msgid "Bad response from File daemon to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/bsr.c:173
-#, c-format
-msgid "Unable to get Job record. ERR=%s\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:185
+msgid "File daemon rejected Hello command\n"
 msgstr ""
 
-#: src/dird/bsr.c:184
+#: src/qt-console/tray-monitor/tray-monitor.cpp:55
 #, c-format
-msgid "Unable to get Job Volume Parameters. ERR=%s\n"
+msgid ""
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -d <nn>       set debug level to <nn>\n"
+"       -dt           print timestamp in debug output\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
+"\n"
 msgstr ""
 
-#: src/dird/bsr.c:232
+#: src/qt-console/tray-monitor/tray-monitor.cpp:204
 #, c-format
-msgid "Unable to create bootstrap file %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/bsr.c:241
-msgid "No files found to read. No bootstrap file written.\n"
-msgstr ""
-
-#: src/dird/bsr.c:245
-msgid "Error writing bsr file.\n"
+msgid ""
+"Error: %d Monitor resources defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
 
-#: src/dird/bsr.c:250
+#: src/qt-console/tray-monitor/tray-monitor.cpp:236
 #, c-format
-msgid "Bootstrap records written to %s\n"
-msgstr ""
-
-#: src/dird/bsr.c:298
 msgid ""
-"The job will require the following\n"
-"   Volume(s)                 Storage(s)                SD Device(s)\n"
-"===========================================================================\n"
-msgstr ""
-
-#: src/dird/bsr.c:317
-msgid "No Volumes found to restore.\n"
+"No Client, Storage or Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
 msgstr ""
 
-#: src/dird/bsr.c:319
+#: src/qt-console/tray-monitor/tray-monitor.cpp:251
+#, c-format
 msgid ""
-"\n"
-"Volumes marked with \"*\" are online.\n"
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
 msgstr ""
 
-#: src/dird/ua_server.c:69
+#: src/qt-console/tray-monitor/tray-monitor.cpp:319
 #, c-format
-msgid "Cannot create UA thread: %s\n"
-msgstr ""
-
-#: src/dird/ua_server.c:159
-msgid "You have messages.\n"
+msgid "Error, currentitem is not a Client or a Storage..\n"
 msgstr ""
 
-#: src/dird/verify.c:86 src/dird/verify.c:318
+#: src/qt-console/tray-monitor/tray-monitor.cpp:357
 #, c-format
-msgid "Unimplemented Verify level %d(%c)\n"
-msgstr ""
-
-#: src/dird/verify.c:148
-msgid ""
-"Unable to find JobId of previous InitCatalog Job.\n"
-"Please run a Verify with Level=InitCatalog before\n"
-"running the current Job.\n"
-msgstr ""
-
-#: src/dird/verify.c:153
-msgid "Unable to find JobId of previous Job for this client.\n"
+msgid "Connecting to Client %s:%d"
 msgstr ""
 
-#: src/dird/verify.c:170
-#, c-format
-msgid "Could not get job record for previous Job. ERR=%s"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:362
+msgid "File daemon"
 msgstr ""
 
-#: src/dird/verify.c:176
+#: src/qt-console/tray-monitor/tray-monitor.cpp:367
 #, c-format
-msgid "Last Job %d did not terminate normally. JobStatus=%c\n"
+msgid "Connecting to Storage %s:%d"
 msgstr ""
 
-#: src/dird/verify.c:180
-#, c-format
-msgid "Verifying against JobId=%d Job=%s\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:372
+msgid "Storage daemon"
 msgstr ""
 
-#: src/dird/verify.c:219
+#: src/qt-console/tray-monitor/tray-monitor.cpp:376
+#: src/qt-console/tray-monitor/tray-monitor.cpp:406
 #, c-format
-msgid "Start Verify JobId=%s Level=%s Job=%s\n"
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
 msgstr ""
 
-#: src/dird/verify.c:305
-msgid "Deprecated feature ... use bootstrap.\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:381
+msgid "Cannot connect to daemon."
 msgstr ""
 
-#: src/dird/verify.c:372
+#: src/qt-console/tray-monitor/tray-monitor.cpp:390
 #, c-format
-msgid "Unimplemented verify level %d\n"
+msgid "Authentication error : %s"
 msgstr ""
 
-#: src/dird/verify.c:421
-msgid "Verify OK"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:397
+msgid "Opened connection with Director daemon."
 msgstr ""
 
-#: src/dird/verify.c:425
-msgid "*** Verify Error ***"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:400
+msgid "Opened connection with File daemon."
 msgstr ""
 
-#: src/dird/verify.c:429
-msgid "Verify warnings"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:403
+msgid "Opened connection with Storage daemon."
 msgstr ""
 
-#: src/dird/verify.c:432
-msgid "Verify Canceled"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:454
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
 msgstr ""
 
-#: src/dird/verify.c:435
-msgid "Verify Differences"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:463
+msgid "Error : Connection closed."
 msgstr ""
 
-#: src/dird/verify.c:440
+#: src/qt-console/tray-monitor/tray_conf.cpp:156
 #, c-format
-msgid "Inappropriate term code: %d %c\n"
+msgid "No %s resource defined\n"
 msgstr ""
 
-#: src/dird/verify.c:454
+#: src/qt-console/tray-monitor/tray_conf.cpp:165
 #, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:489
+#: src/qt-console/tray-monitor/tray_conf.cpp:171
 #, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build:                  %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+msgid "Director: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:567
+#: src/qt-console/tray-monitor/tray_conf.cpp:175
 #, c-format
-msgid ""
-"bird<filed: bad attributes, expected 3 fields got %d\n"
-" mslen=%d msg=%s\n"
+msgid "Client: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:612
+#: src/qt-console/tray-monitor/tray_conf.cpp:179
 #, c-format
-msgid "New file: %s\n"
+msgid "Storage: name=%s address=%s SDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:613
+#: src/qt-console/tray-monitor/tray_conf.cpp:187
 #, c-format
-msgid "File not in catalog: %s\n"
+msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/verify.c:637
+#: src/qt-console/tray-monitor/tray_conf.cpp:245
 #, c-format
-msgid "      st_ino   differ. Cat: %s File: %s\n"
+msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
-#: src/dird/verify.c:646
+#: src/qt-console/tray-monitor/tray_conf.cpp:282
 #, c-format
-msgid "      st_mode  differ. Cat: %x File: %x\n"
+msgid "Too many items in %s resource\n"
 msgstr ""
 
-#: src/dird/verify.c:654
+#: src/qt-console/tray-monitor/tray_conf.cpp:302
+#: src/qt-console/tray-monitor/tray_conf.cpp:340
 #, c-format
-msgid "      st_nlink differ. Cat: %d File: %d\n"
-msgstr ""
-
-#: src/dird/verify.c:662
-#, c-format
-msgid "      st_uid   differ. Cat: %u File: %u\n"
-msgstr ""
-
-#: src/dird/verify.c:670
-#, c-format
-msgid "      st_gid   differ. Cat: %u File: %u\n"
-msgstr ""
-
-#: src/dird/verify.c:678
-#, c-format
-msgid "      st_size  differ. Cat: %s File: %s\n"
-msgstr ""
-
-#: src/dird/verify.c:687
-msgid "      st_atime differs\n"
-msgstr ""
-
-#: src/dird/verify.c:694
-msgid "      st_mtime differs\n"
-msgstr ""
-
-#: src/dird/verify.c:701
-msgid "      st_ctime differs\n"
-msgstr ""
-
-#: src/dird/verify.c:708
-#, c-format
-msgid "      st_size  decrease. Cat: %s File: %s\n"
-msgstr ""
-
-#: src/dird/verify.c:738
-#, c-format
-msgid "MD5/SHA1 index %d not same as attributes %d\n"
-msgstr ""
-
-#: src/dird/verify.c:746
-#, c-format
-msgid "      %s differs. File=%s Cat=%s\n"
-msgstr ""
-
-#: src/dird/verify.c:757
-#, c-format
-msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
-msgstr ""
-
-#: src/dird/verify.c:796
-#, c-format
-msgid "The following files are in the Catalog but not on %s:\n"
-msgstr ""
-
-#: src/dird/verify.c:811 src/tools/testfind.c:420
-#, c-format
-msgid "File: %s\n"
-msgstr ""
-
-#: src/dird/admin.c:65
-#, c-format
-msgid "Start Admin JobId %d, Job=%s\n"
-msgstr ""
-
-#: 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:98
-msgid "Admin OK"
-msgstr ""
-
-#: src/dird/admin.c:102
-msgid "*** Admin Error ***"
-msgstr ""
-
-#: src/dird/admin.c:106
-msgid "Admin Canceled"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/admin.c:118
-msgid "Bacula "
-msgstr ""
-
-#: src/dird/dird.c:150
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"       -f          run in foreground (for debugging)\n"
-"       -g          groupid\n"
-"       -m          print kaboom output (for debugging)\n"
-"       -r <job>    run <job> now\n"
-"       -s          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -u          userid\n"
-"       -v          verbose user messages\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: 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: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:546
-msgid "Too many open reload requests. Request ignored.\n"
-msgstr ""
-
-#: src/dird/dird.c:561
-msgid "Out of reload table entries. Giving up.\n"
-msgstr ""
-
-#: src/dird/dird.c:564
-msgid "Resetting previous configuration.\n"
-msgstr ""
-
-#: 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:636 src/filed/filed.c:350
-#, c-format
-msgid "No Messages resource defined in %s\n"
-msgstr ""
-
-#: src/dird/dird.c:641
-#, c-format
-msgid "Only one Director resource permitted in %s\n"
-msgstr ""
-
-#: 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: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: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: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 "
-"Director \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: 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:698
-#, c-format
-msgid "No Job records defined in %s\n"
-msgstr ""
-
-#: 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:830
-#, c-format
-msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
-msgstr ""
-
-#: src/dird/dird.c:837
-msgid "Too many items in Job resource\n"
-msgstr ""
-
-#: src/dird/dird.c:841
-#, c-format
-msgid "No storage specified in Job \"%s\" nor in Pool.\n"
-msgstr ""
-
-#: src/dird/dird.c:865
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:871
-#, c-format
-msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:878
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: 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: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: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:1019 src/tools/cats_test.c:377
-#, c-format
-msgid "%s"
-msgstr ""
-
-#: src/dird/dird.c:1098
-#, c-format
-msgid "Could not create storage record for %s\n"
-msgstr ""
-
-#: src/dird/dird.c:1106
-#, c-format
-msgid "Could not update storage record for %s\n"
-msgstr ""
-
-#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:312
-#, c-format
-msgid "Expected a strip path positive integer, got:%s:"
-msgstr ""
-
-#: src/dird/inc_conf.c:332
-#, c-format
-msgid "Expected a FileSet option keyword, got:%s:"
-msgstr ""
-
-#: src/dird/inc_conf.c:365
-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: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: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:2039
-#, c-format
-msgid "Keyword %s not permitted in this resource"
-msgstr ""
-
-#: src/dird/inc_conf.c:464
-#, c-format
-msgid "Regex compile error. ERR=%s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:485
-#, c-format
-msgid "Expected a regex string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:559
-#, c-format
-msgid "Expected a wild-card string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:582
-#, c-format
-msgid "Expected an fstype string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:593
-msgid "ExcludeDirContaining directive not permitted in Exclude.\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:620
-#, c-format
-msgid "Expected an drivetype string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:644 src/dird/inc_conf.c:687
-#, c-format
-msgid "Backslash found. Use forward slashes or quote the string.: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:659 src/dird/inc_conf.c:702
-#, c-format
-msgid "Expected a filename, got: %s"
-msgstr ""
-
-#: src/dird/inc_conf.c:676
-msgid "Plugin directive not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:719
-msgid "Options section not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
-#, c-format
-msgid "Expecting open brace. Got %s"
-msgstr ""
-
-#: src/dird/inc_conf.c:779
-#, c-format
-msgid "Expected a FileSet keyword, got: %s"
-msgstr ""
-
-#: src/dird/ua_query.c:73 src/findlib/create_file.c:288
-#: src/findlib/create_file.c:391
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_query.c:78
-msgid "Available queries:\n"
-msgstr ""
-
-#: src/dird/ua_query.c:85
-msgid "Choose a query"
-msgstr ""
-
-#: src/dird/ua_query.c:99
-msgid "Could not find query.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:117
-msgid "Too many prompts in query, max is 9.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:220
-#, c-format
-msgid "Warning prompt %d missing.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:265
-msgid ""
-"Entering SQL query mode.\n"
-"Terminate each query with a semicolon.\n"
-"Terminate query mode with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:268 src/dird/ua_query.c:284
-msgid "Enter SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:286
-msgid "Add to SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:289
-msgid "End query mode.\n"
-msgstr ""
-
-#: src/dird/newvol.c:90
-#, c-format
-msgid "Illegal character in Volume name \"%s\"\n"
-msgstr ""
-
-#: src/dird/newvol.c:104
-#, c-format
-msgid "Created new Volume \"%s\" in catalog.\n"
-msgstr ""
-
-#: src/dird/newvol.c:131
-#, c-format
-msgid "SQL failed, but ignored. ERR=%s\n"
-msgstr ""
-
-#: 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:150
-msgid "Too many failures. Giving up creating Volume name.\n"
-msgstr ""
-
-#: src/dird/expand.c:255
-#, c-format
-msgid "Count not update counter %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:427
-#, c-format
-msgid "Cannot create var context: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:432
-#, c-format
-msgid "Cannot set var callback: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:438
-#, c-format
-msgid "Cannot set var operate: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:444 src/dird/expand.c:459
-#, c-format
-msgid "Cannot unescape string: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:452
-#, c-format
-msgid "Cannot expand expression \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:470
-#, c-format
-msgid "Cannot destroy var context: ERR=%s\n"
-msgstr ""
-
-#: src/dird/recycle.c:69
-#, c-format
-msgid "Recycled volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:90
-msgid ""
-"\n"
-"This command can be DANGEROUS!!!\n"
-"\n"
-"It purges (deletes) all Files from a Job,\n"
-"JobId, Client or Volume; or it purges (deletes)\n"
-"all Jobs from a Client or Volume without regard\n"
-"to retention periods. Normally you should use the\n"
-"PRUNE command, which respects retention periods.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:157
-msgid "Choose item to purge"
-msgstr ""
-
-#: src/dird/ua_purge.c:204
-#, c-format
-msgid "Begin purging files for Client \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:213 src/dird/ua_purge.c:263
-#, c-format
-msgid "No Files found for client %s to purge from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:216
-#, c-format
-msgid "Files for %d Jobs for client \"%s\" purged from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:254
-#, c-format
-msgid "Begin purging jobs from Client \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:266
-#, c-format
-msgid "%d Jobs for client %s purged from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:464
-#, c-format
-msgid ""
-"\n"
-"Volume \"%s\" has VolStatus \"%s\" and cannot be purged.\n"
-"The VolStatus must be: Append, Full, Used, or Error to be purged.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:492
-#, c-format
-msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:541
-#, c-format
-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: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: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:623
-msgid "Can't update volume size in the catalog\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:625
-#, c-format
-msgid "The volume \"%s\" has been truncated\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:627
-#, c-format
-msgid "Unable to truncate volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:713
-#, c-format
-msgid "No Volumes found to perform %s action.\n"
-msgstr ""
-
-#: 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:800
-#, c-format
-msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:805
-#, c-format
-msgid "Cannot purge Volume with VolStatus=%s\n"
-msgstr ""
-
-#: src/dird/vbackup.c:76 src/dird/migrate.c:114
-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:871
-#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
-msgid "Pool resource"
-msgstr ""
-
-#: src/dird/vbackup.c:116 src/dird/migrate.c:285
-msgid "Job Pool's NextPool resource"
-msgstr ""
-
-#: src/dird/vbackup.c:147
-#, c-format
-msgid "Start Virtual Backup JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/vbackup.c:151
-msgid ""
-"This Job is not an Accurate backup so is not equivalent to a Full backup.\n"
-msgstr ""
-
-#: src/dird/vbackup.c:158
-msgid "No previous Jobs found.\n"
-msgstr ""
-
-#: src/dird/vbackup.c:180
-#, c-format
-msgid "Error getting Job record for previous Job: ERR=%s"
-msgstr ""
-
-#: src/dird/vbackup.c:186 src/dird/migrate.c:131
-msgid "Could not get or create the FileSet record.\n"
-msgstr ""
-
-#: 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: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: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:331 src/dird/backup.c:653 src/stored/bscan.c:1211
-msgid "Backup OK"
-msgstr ""
-
-#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
-msgid "*** Backup Error ***"
-msgstr ""
-
-#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
-msgid "Backup Canceled"
-msgstr ""
-
-#: src/dird/vbackup.c:393
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           Virtual Full\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_output.c:69 src/dird/ua_output.c:93
-msgid "ON or OFF keyword missing.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:113
-msgid "Disabled Jobs:\n"
-msgstr ""
-
-#: src/dird/ua_output.c:119
-msgid "No disabled Jobs.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:163
-msgid "disabled"
-msgstr ""
-
-#: src/dird/ua_output.c:211
-msgid "Keywords for the show command are:\n"
-msgstr ""
-
-#: src/dird/ua_output.c:217
-#, c-format
-msgid "%s resource %s not found.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:220
-#, c-format
-msgid "Resource %s not found\n"
-msgstr ""
-
-#: src/dird/ua_output.c:290
-msgid "Hey! DB is NULL\n"
-msgstr ""
-
-#: src/dird/ua_output.c:447
-#, c-format
-msgid "Jobid %d used %d Volume(s): %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:465
-msgid "No Pool specified.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:486
-#, c-format
-msgid "Pool: %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:502
-msgid "Ignoring invalid value for days. Max is 50.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:524
-#, c-format
-msgid "Unknown list keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:549
-#, c-format
-msgid "%s is not a job name.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:563
-#, c-format
-msgid "Could not find Pool for Job %s\n"
-msgstr ""
-
-#: 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: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:593
-#, c-format
-msgid "Could not find next Volume for Job %s.\n"
-msgstr ""
-
-#: 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:733
-#, c-format
-msgid "Pool %s not in database. %s"
-msgstr ""
-
-#: src/dird/ua_output.c:741
-#, c-format
-msgid "Pool %s created in database.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:794
-msgid "You have no messages.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:874
-msgid "Message too long to display.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:155 src/dird/ua_cmds.c:236
-#, c-format
-msgid "Can't use %s command in a runscript"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:175
-msgid ": is an invalid command.\n"
-msgstr ""
-
-#: 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: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:1160 src/dird/job.c:1164
-msgid "unknown source"
-msgstr ""
-
-#: 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: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: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: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:694 src/dird/ua_dotcmds.c:788
-#, c-format
-msgid "Unknown command: %s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
-msgid "Available daemons are: \n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
-msgid "Director"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:736
-msgid "Select daemon type to make die"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:762
-msgid "The Director will generate a deadlock.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:766
-msgid "The Director will segment fault.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:955
-msgid "Access to specified Client or FileSet not allowed.\n"
-msgstr ""
-
-#: 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:999
-msgid "query keyword not found.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1026
-#, c-format
-msgid "List MediaType failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1040
-#, c-format
-msgid "List Media failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1054
-#, c-format
-msgid "List Location failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/next_vol.c:166
-#, c-format
-msgid "Purging oldest volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/next_vol.c:172
-#, c-format
-msgid "Pruning oldest volume \"%s\"\n"
-msgstr ""
-
-#: 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:218
-#, c-format
-msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
-msgstr ""
-
-#: src/dird/next_vol.c:226
-#, c-format
-msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
-msgstr ""
-
-#: 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:243
-#, c-format
-msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
-msgstr ""
-
-#: 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:267
-#, c-format
-msgid "Catalog error updating volume \"%s\". ERR=%s"
-msgstr ""
-
-#: src/dird/next_vol.c:289
-msgid "volume has expired"
-msgstr ""
-
-#: 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:312
-msgid "and recycling of current volume failed"
-msgstr ""
-
-#: src/dird/next_vol.c:318
-msgid "but should be Append, Purged or Recycle"
-msgstr ""
-
-#: src/dird/next_vol.c:327
-msgid "volume has recycling disabled"
-msgstr ""
-
-#: 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: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:421
-#, c-format
-msgid "Unable to get Pool record: ERR=%s"
-msgstr ""
-
-#: 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:448
-#, c-format
-msgid "Failed to move Scratch Volume. ERR=%s\n"
-msgstr ""
-
-#: src/dird/next_vol.c:453
-#, c-format
-msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:120
-msgid "Add media to a pool"
-msgstr ""
-
-#: src/dird/ua_cmds.c:121
-msgid "Autodisplay console messages"
-msgstr ""
-
-#: src/dird/ua_cmds.c:122
-msgid "Automount after label"
-msgstr ""
-
-#: src/dird/ua_cmds.c:123
-msgid "Cancel a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:124
-msgid "Create DB Pool from resource"
-msgstr ""
-
-#: src/dird/ua_cmds.c:125
-msgid "Delete volume, pool or job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:126
-msgid "Disable a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:127
-msgid "Enable a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:128
-msgid "Performs FileSet estimate, listing gives full listing"
-msgstr ""
-
-#: src/dird/ua_cmds.c:131 src/dird/ua_cmds.c:155
-msgid "Terminate Bconsole session"
-msgstr ""
-
-#: src/dird/ua_cmds.c:132
-msgid "Non-interactive gui mode"
-msgstr ""
-
-#: src/dird/ua_cmds.c:133
-msgid "Print help on specific command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:138
-msgid "Label a tape"
-msgstr ""
-
-#: src/dird/ua_cmds.c:139
-msgid "List objects from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:142
-msgid "Full or long list like list command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:145
-msgid "Display pending messages"
-msgstr ""
-
-#: src/dird/ua_cmds.c:146
-msgid "Print current memory usage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:147
-msgid "Mount storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:150
-msgid "Prune expired records from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:153
-msgid "Purge records from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:154
-msgid "Python control commands"
-msgstr ""
-
-#: src/dird/ua_cmds.c:156
-msgid "Query catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:157
-msgid "Restore files"
-msgstr ""
-
-#: src/dird/ua_cmds.c:162
-msgid "Relabel a tape"
-msgstr ""
-
-#: src/dird/ua_cmds.c:165
-msgid "Release storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:166
-msgid "Reload conf file"
-msgstr ""
-
-#: src/dird/ua_cmds.c:167
-msgid "Run a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:171
-msgid "Report status"
-msgstr ""
-
-#: src/dird/ua_cmds.c:174
-msgid "Sets debug level"
-msgstr ""
-
-#: src/dird/ua_cmds.c:177
-msgid "Sets new client address -- if authorized"
-msgstr ""
-
-#: src/dird/ua_cmds.c:178
-msgid "Show resource records"
-msgstr ""
-
-#: src/dird/ua_cmds.c:181
-msgid "Use SQL to query catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:182
-msgid "Print current time"
-msgstr ""
-
-#: src/dird/ua_cmds.c:183
-msgid "Turn on/off trace to file"
-msgstr ""
-
-#: src/dird/ua_cmds.c:184
-msgid "Unmount storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:187
-msgid "Umount - for old-time Unix guys, see unmount"
-msgstr ""
-
-#: src/dird/ua_cmds.c:190
-msgid "Update volume, pool or stats"
-msgstr ""
-
-#: src/dird/ua_cmds.c:196
-msgid "Use catalog xxx"
-msgstr ""
-
-#: src/dird/ua_cmds.c:197
-msgid "Does variable expansion"
-msgstr ""
-
-#: src/dird/ua_cmds.c:198
-msgid "Print Director version"
-msgstr ""
-
-#: src/dird/ua_cmds.c:199
-msgid "Wait until no jobs are running"
-msgstr ""
-
-#: src/dird/ua_cmds.c:247
-#, c-format
-msgid "%s: is an invalid command.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:288
-msgid ""
-"You probably don't want to be using this command since it\n"
-"creates database records without labeling the Volumes.\n"
-"You probably want to use the \"label\" command.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:306
-#, c-format
-msgid "Pool already has maximum volumes=%d\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:307
-msgid "Enter new maximum (zero for unlimited): "
-msgstr ""
-
-#: 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:333
-#, c-format
-msgid "The number must be between 0 and %d\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:341
-msgid "Enter Volume name: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:345
-msgid "Enter base volume name: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
-msgid "Volume name too long.\n"
-msgstr ""
-
-#: 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:369
-msgid "Enter the starting number: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:374
-msgid "Start number must be greater than zero.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:385
-msgid "Enter slot (0 for none): "
-msgstr ""
-
-#: src/dird/ua_cmds.c:389
-msgid "InChanger? yes/no: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:414
-#, c-format
-msgid "%d Volumes created in pool %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
-msgid "Turn on or off? "
-msgstr ""
-
-#: 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: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:631
-#, c-format
-msgid ""
-"Error: Pool %s already exists.\n"
-"Use update to change it.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:642
-#, c-format
-msgid "Pool %s created.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:672
-msgid "Python interpreter restarted.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
-msgid "Nothing done.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "Client \"%s\" address set to %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:742
-#, c-format
-msgid "Job \"%s\" %sabled\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:920
-msgid "Enter new debug level: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:997
-msgid "All"
-msgstr ""
-
-#: src/dird/ua_cmds.c:998
-msgid "Select daemon type to set debug level"
-msgstr ""
-
-#: 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:1092
-msgid "Client name missing.\n"
-msgstr ""
-
-#: 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:1109
-msgid "Job name missing.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1118
-#, c-format
-msgid "Fileset \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1122
-#, c-format
-msgid "No authorization for FileSet \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1127
-msgid "Fileset name missing.\n"
-msgstr ""
-
-#: 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:1142
-msgid "Level value missing.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1149
-msgid "Invalid value for accurate. It must be yes or no.\n"
-msgstr ""
-
-#: 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:1227
-msgid "Error sending include list.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1232
-msgid "Error sending exclude list.\n"
-msgstr ""
-
-#: 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:1326
-msgid "Choose catalog item to delete"
-msgstr ""
-
-#: 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: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 "Jobid %s and associated records deleted from the catalog.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1484
-#, c-format
-msgid ""
-"\n"
-"This command will delete volume %s\n"
-"and all Jobs saved on that volume from the Catalog\n"
-msgstr ""
-
-#: 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:1504
-msgid "Can't list jobs on this volume\n"
-msgstr ""
-
-#: 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:1644
-#, c-format
-msgid "Using Catalog name=%s DB=%s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1712
-msgid "ERR: Can't open db\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1759
-msgid "Wait on mount timed out\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1769
-msgid "ERR: Job was not found\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1845
-msgid ""
-"  Command       Description\n"
-"  =======       ===========\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1849
-#, c-format
-msgid ""
-"  %-13s %s\n"
-"\n"
-"Arguments:\n"
-"\t%s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1854
-#, c-format
-msgid "  %-13s %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1858
-#, c-format
-msgid ""
-"\n"
-"Can't find %s command.\n"
-"\n"
-msgstr ""
-
-#: 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:1896 src/filed/status.c:85
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s %s\n"
-msgstr ""
-
-#: 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:2049
-#, c-format
-msgid "Could not open catalog database \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:2059
-#, c-format
-msgid "Using Catalog \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:74
-msgid "add dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:75
-msgid "change current directory"
-msgstr ""
-
-#: src/dird/ua_tree.c:76
-msgid "count marked files in and below the cd"
-msgstr ""
-
-#: src/dird/ua_tree.c:77
-msgid "delete dir/file to be restored recursively in dir"
-msgstr ""
-
-#: src/dird/ua_tree.c:78 src/dird/ua_tree.c:79
-msgid "long list current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:80
-msgid "leave file selection mode"
-msgstr ""
-
-#: src/dird/ua_tree.c:81
-msgid "estimate restore size"
-msgstr ""
-
-#: src/dird/ua_tree.c:82
-msgid "same as done command"
-msgstr ""
-
-#: src/dird/ua_tree.c:83
-msgid "find files, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:84 src/dird/ua_tree.c:97 src/dird/ua_tree.c:98
-msgid "print help"
-msgstr ""
-
-#: src/dird/ua_tree.c:85 src/dird/ua_tree.c:86
-msgid "list current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:87
-msgid "list subdir in current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:88
-msgid "list the marked files in and below the cd"
-msgstr ""
-
-#: src/dird/ua_tree.c:89
-msgid "list the marked files in"
-msgstr ""
-
-#: src/dird/ua_tree.c:90
-msgid "mark dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:91
-msgid "mark directory name to be restored (no files)"
-msgstr ""
-
-#: src/dird/ua_tree.c:92 src/dird/ua_tree.c:93
-msgid "print current working directory"
-msgstr ""
-
-#: src/dird/ua_tree.c:94
-msgid "unmark dir/file to be restored recursively in dir"
-msgstr ""
-
-#: src/dird/ua_tree.c:95
-msgid "unmark directory name only no recursion"
-msgstr ""
-
-#: src/dird/ua_tree.c:96
-msgid "quit and do not do restore"
-msgstr ""
-
-#: src/dird/ua_tree.c:118
-msgid ""
-"\n"
-"You are now entering file selection mode where you add (mark) and\n"
-"remove (unmark) files to be restored. No files are initially added, unless\n"
-"you used the \"all\" keyword on the command line.\n"
-"Enter \"done\" to leave this mode.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
-#, c-format
-msgid "cwd is: %s\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:138 src/dird/ua_tree.c:157
-#, c-format
-msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
-msgstr ""
-
-#: 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:387
-msgid "1 file marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:389
-#, c-format
-msgid "%s files marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:417
-msgid "No directories marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:419
-msgid "1 directory marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:421
-#, c-format
-msgid "%s directories marked.\n"
-msgstr ""
-
-#: 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:453
-msgid "No file specification given.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:674
-#, c-format
-msgid "Node %s has no children.\n"
-msgstr ""
-
-#: 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:778 src/stored/btape.c:2949
-#, c-format
-msgid ""
-"  Command    Description\n"
-"  =======    ===========\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:801
-msgid "Too few or too many arguments. Try using double quotes.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:814
-msgid "Invalid path given.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
-msgid "No files unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:864
-msgid "1 file unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:867
-#, c-format
-msgid "%s files unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
-msgid "No directories unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:897
-msgid "1 directory unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:899
-#, c-format
-msgid "%d directories unmarked.\n"
-msgstr ""
-
-#: 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:576
-#, c-format
-msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:581
-#, c-format
-msgid "   query_file=%s\n"
-msgstr ""
-
-#: 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:589
-#, c-format
-msgid "Console: name=%s SSL=%d\n"
-msgstr ""
-
-#: 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:599
-#, c-format
-msgid "Counter: name=%s min=%d max=%d\n"
-msgstr ""
-
-#: 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:616
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:629
-#, c-format
-msgid ""
-"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
-"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr="
-"%d\n"
-"      poolid=%s volname=%s MediaType=%s\n"
-msgstr ""
-
-#: 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: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:669
-#, c-format
-msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:670
-msgid "JobDefs"
-msgstr ""
-
-#: 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:680
-#, c-format
-msgid "     SpoolSize=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:683
-#, c-format
-msgid "     Accurate=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:686
-#, c-format
-msgid "     SelectionType=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:701
-#, c-format
-msgid "  --> Where=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:704
-#, c-format
-msgid "  --> RegexWhere=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:707
-#, c-format
-msgid "  --> Bootstrap=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:710
-#, c-format
-msgid "  --> WriteBootstrap=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:713
-#, c-format
-msgid "  --> PluginOptions=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:716
-#, c-format
-msgid "  --> MaxRunTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:719
-#, c-format
-msgid "  --> MaxWaitTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:722
-#, c-format
-msgid "  --> MaxStartDelay=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:725
-#, c-format
-msgid "  --> MaxRunSchedTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:737
-#, c-format
-msgid "  --> Base %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
-msgid " --> RunScript\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
-#, c-format
-msgid "  --> Command=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
-#, c-format
-msgid "  --> Target=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
-#, c-format
-msgid "  --> RunOnSuccess=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
-#, c-format
-msgid "  --> RunOnFailure=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
-#, c-format
-msgid "  --> FailJobOnError=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
-#, c-format
-msgid "  --> RunWhen=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:775
-#, c-format
-msgid "  --> Run=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:779
-#, c-format
-msgid "  --> SelectionPattern=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:793
-#, c-format
-msgid "FileSet: name=%s\n"
-msgstr ""
-
-#: 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:892
-#, c-format
-msgid "  --> Run Level=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:893
-msgid "      hour="
-msgstr ""
-
-#: src/dird/dird_conf.c:902
-msgid "      mday="
-msgstr ""
-
-#: src/dird/dird_conf.c:911
-msgid "      month="
-msgstr ""
-
-#: src/dird/dird_conf.c:920
-msgid "      wday="
-msgstr ""
-
-#: src/dird/dird_conf.c:929
-msgid "      wom="
-msgstr ""
-
-#: src/dird/dird_conf.c:938
-msgid "      woy="
-msgstr ""
-
-#: src/dird/dird_conf.c:947
-#, c-format
-msgid "      mins=%d\n"
-msgstr ""
-
-#: 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:974
-#, c-format
-msgid "Pool: name=%s PoolType=%s\n"
-msgstr ""
-
-#: 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:979
-#, c-format
-msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:982
-#, c-format
-msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:986
-#, c-format
-msgid "      CleaningPrefix=%s LabelType=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:988
-#, c-format
-msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:992
-#, c-format
-msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:996
-#, c-format
-msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1000
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1004
-#, c-format
-msgid "      NextPool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1007
-#, c-format
-msgid "      RecyclePool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1010
-#, c-format
-msgid "      ScratchPool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1013
-#, c-format
-msgid "      Catalog=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1033
-#, c-format
-msgid "Messages: name=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1035
-#, c-format
-msgid "      mailcmd=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1037
-#, c-format
-msgid "      opcmd=%s\n"
-msgstr ""
-
-#: 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: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: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
-#: src/qt-console/bat_conf.cpp:265
-#, c-format
-msgid "%s item is required in %s resource, but not found.\n"
-msgstr ""
-
-#: 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:1450
-#, c-format
-msgid "Cannot find Pool resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1461
-#, c-format
-msgid "Cannot find Console resource %s\n"
-msgstr ""
-
-#: 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:1474 src/stored/stored_conf.c:617
-#, c-format
-msgid "Cannot find Storage resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1483
-#, c-format
-msgid "Cannot find Job resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1533
-#, c-format
-msgid "Cannot find Counter resource %s\n"
-msgstr ""
-
-#: 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:1554
-#, c-format
-msgid "Cannot find Schedule resource %s\n"
-msgstr ""
-
-#: 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
-#, c-format
-msgid "Unknown resource type %d in save_resource.\n"
-msgstr ""
-
-#: 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: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
-#, c-format
-msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1647
-#, c-format
-msgid "Inserting %s res: %s index=%d pass=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1660
-#, c-format
-msgid "Expected one of: %s, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1732
-#, c-format
-msgid "Expected a Migration Job Type keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1758
-#, c-format
-msgid "Expected a Job Type keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1782
-#, c-format
-msgid "Expected a Job Level keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1802
-#, c-format
-msgid "Expected a Restore replacement option, got: %s"
-msgstr ""
-
-#: 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:1874 src/lib/parse_conf.c:478
-#, c-format
-msgid "Could not find config Resource %s referenced on line %d : %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:176
-#, c-format
-msgid "bget_dirmsg: unknown bnet signal %d\n"
-msgstr ""
-
-#: src/dird/getmsg.c:194 src/dird/getmsg.c:200 src/dird/getmsg.c:213
-#: src/dird/getmsg.c:247 src/dird/getmsg.c:269 src/dird/getmsg.c:295
-#, c-format
-msgid "Malformed message: %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:367
-#, c-format
-msgid "Bad response to %s command: wanted %s, got %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:372
-#, c-format
-msgid "Socket error on %s command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:148
-msgid "\"RegexWhere\" specification not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:155
-msgid "\"where\" specification not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:177
-msgid ""
-"No Restore Job Resource found in bacula-dir.conf.\n"
-"You must create at least one before running this command.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:194
-msgid "Restore not done.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:205
-msgid "Unable to construct a valid BSR. Cannot continue.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:209 src/dird/ua_restore.c:221
-msgid "No files selected to be restored.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:215
-msgid ""
-"\n"
-"1 file selected to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:217
-#, c-format
-msgid ""
-"\n"
-"%s files selected to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:236
-msgid "No Client resource found!\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:333
-msgid "The restore will use the following job(s) as Base\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:354
-#, c-format
-msgid "Missing value for keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:434
-msgid "List last 20 Jobs run"
-msgstr ""
-
-#: src/dird/ua_restore.c:435
-msgid "List Jobs where a given File is saved"
-msgstr ""
-
-#: src/dird/ua_restore.c:436
-msgid "Enter list of comma separated JobIds to select"
-msgstr ""
-
-#: src/dird/ua_restore.c:437
-msgid "Enter SQL list command"
-msgstr ""
-
-#: src/dird/ua_restore.c:438
-msgid "Select the most recent backup for a client"
-msgstr ""
-
-#: src/dird/ua_restore.c:439
-msgid "Select backup for a client before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:440
-msgid "Enter a list of files to restore"
-msgstr ""
-
-#: src/dird/ua_restore.c:441
-msgid "Enter a list of files to restore before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:442
-msgid "Find the JobIds of the most recent backup for a client"
-msgstr ""
-
-#: src/dird/ua_restore.c:443
-msgid "Find the JobIds for a backup for a client before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:444
-msgid "Enter a list of directories to restore for found JobIds"
-msgstr ""
-
-#: src/dird/ua_restore.c:445
-msgid "Select full restore to a specified Job date"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_restore.c:491
-#, c-format
-msgid "Unknown keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
-#, c-format
-msgid "Improper date format: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:560
-#, c-format
-msgid "Error: Pool resource \"%s\" access not allowed.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:576
-msgid ""
-"\n"
-"First you select one or more JobIds that contain files\n"
-"to be restored. You will be presented several methods\n"
-"of specifying the JobIds. Then you will be allowed to\n"
-"select which files from those JobIds are to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:589
-msgid "To select the JobIds, you have the following choices:\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:594
-msgid "Select item: "
-msgstr ""
-
-#: src/dird/ua_restore.c:599 src/dird/ua_restore.c:634
-msgid "SQL query not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:612
-msgid "Enter Filename (no path):"
-msgstr ""
-
-#: src/dird/ua_restore.c:627 src/dird/ua_restore.c:735
-msgid "Enter JobId(s), comma separated, to restore: "
-msgstr ""
-
-#: src/dird/ua_restore.c:637
-msgid "Enter SQL list command: "
-msgstr ""
-
-#: src/dird/ua_restore.c:671 src/dird/ua_restore.c:694
-msgid ""
-"Enter file names with paths, or < to enter a filename\n"
-"containing a list of file names with paths, and terminate\n"
-"them with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:675 src/dird/ua_restore.c:698
-msgid "Enter full filename: "
-msgstr ""
-
-#: src/dird/ua_restore.c:733
-#, c-format
-msgid "You have already selected the following JobIds: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:751
-msgid ""
-"Enter full directory names or start the name\n"
-"with a < to indicate it is a filename containing a list\n"
-"of directories and terminate them with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:755
-msgid "Enter directory name: "
-msgstr ""
-
-#: src/dird/ua_restore.c:771
-msgid "Enter JobId to get the state to restore: "
-msgstr ""
-
-#: src/dird/ua_restore.c:784
-#, c-format
-msgid "Selecting jobs to build the Full state at %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:810
-msgid "Invalid JobId in list.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:829
-#, c-format
-msgid "Access to JobId=%s (Job \"%s\") not authorized. Not selected.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:842
-msgid "No Jobs selected.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:847
-#, c-format
-msgid "You have selected the following JobIds: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:849
-#, c-format
-msgid "You have selected the following JobId: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:859
-msgid ""
-"The restored files will the most current backup\n"
-"BEFORE the date you specify below.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:862
-msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
-msgstr ""
-
-#: src/dird/ua_restore.c:868
-msgid "Improper date format.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:889
-#, c-format
-msgid "Cannot open file %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:897 src/dird/ua_restore.c:901
-#, c-format
-msgid "Error occurred on line %d of file \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:945 src/dird/ua_restore.c:973
-#, c-format
-msgid "No database record found for: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:961
-msgid "No JobId specified cannot continue.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:994
-#, c-format
-msgid "No table found: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1052
-msgid ""
-"\n"
-"\n"
-"For one or more of the JobIds selected, no files were found,\n"
-"so file selection is not possible.\n"
-"Most likely your retention policy pruned the files.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1055
-msgid ""
-"\n"
-"Do you want to restore all the files? (yes|no): "
-msgstr ""
-
-#: src/dird/ua_restore.c:1058
-msgid ""
-"\n"
-"Regexp matching files to restore? (empty to abort): "
-msgstr ""
-
-#: src/dird/ua_restore.c:1074
-#, c-format
-msgid "Regex compile error: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1137
-#, c-format
-msgid ""
-"\n"
-"Building directory tree for JobId(s) %s ...  "
-msgstr ""
-
-#: src/dird/ua_restore.c:1207
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree and marked for extraction.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1210
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1285
-#, c-format
-msgid "Error getting FileSet \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1290
-#, c-format
-msgid "FileSet argument: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1302
-#, c-format
-msgid "No FileSet found for client \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1308
-#, c-format
-msgid "Error getting FileSet record: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1309
-msgid ""
-"This probably means you modified the FileSet.\n"
-"Continuing anyway.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1324
-#, c-format
-msgid "Pool \"%s\" not found, using any pool.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1351 src/dird/ua_restore.c:1367
-#, c-format
-msgid "No Full backup before %s found.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1396
-msgid "No jobs found.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1517
-#, c-format
-msgid "Warning default storage overridden by \"%s\" on command line.\n"
-msgstr ""
-
-#: 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:1546
-#, c-format
-msgid ""
-"\n"
-"Unable to find Storage resource for\n"
-"MediaType \"%s\", needed by the Jobs you selected.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:95
-msgid "Client: "
-msgstr ""
-
-#: src/dird/fd_cmds.c:137
-#, c-format
-msgid "File daemon \"%s\" rejected Job command: %s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:150
-#, c-format
-msgid "Error updating Client record. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:155
-#, c-format
-msgid "FD gave bad response to JobId command: %s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:184 src/dird/fd_cmds.c:272
-msgid ", since="
-msgstr ""
-
-#: src/dird/fd_cmds.c:249
-msgid "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:250 src/dird/fd_cmds.c:256 src/dird/fd_cmds.c:265
-#, c-format
-msgid " (upgraded from %s)"
-msgstr ""
-
-#: src/dird/fd_cmds.c:255
-msgid ""
-"No prior or suitable Differential backup found in catalog. Doing "
-"Differential backup.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:263
-#, c-format
-msgid "Prior failed job found in catalog. Upgrading to %s.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:328
-#, c-format
-msgid "Unimplemented backup level %d %c\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:401
-msgid ""
-"FD compression disabled for this Job because AllowCompress=No in Storage "
-"resource.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:500 src/filed/job.c:854
-#, c-format
-msgid "Cannot run program: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:511 src/dird/fd_cmds.c:536 src/dird/fd_cmds.c:550
-msgid ">filed: write error on socket\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:517
-#, c-format
-msgid "Error running program: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:526
-#, c-format
-msgid "Cannot open included file: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:672
-#, c-format
-msgid "Client \"%s\" RunScript failed.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:695
-#, c-format
-msgid ""
-"Client \"%s\" may not be used to restore this job. Please upgrade your "
-"client.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:770
-msgid "RestoreObject failed.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:806
-#, c-format
-msgid ""
-"<filed: bad attributes, expected 3 fields got %d\n"
-"msglen=%d msg=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/fd_cmds.c:862
-#, c-format
-msgid "%s index %d not same as attributes %d\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:876
-#, c-format
-msgid "<filed: Network error getting attributes. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_label.c:104
-msgid "Negative numbers not permitted\n"
-msgstr ""
-
-#: 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/lib/sellist.c:81
-msgid "Range start is not an integer.\n"
-msgstr ""
-
-#: 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/lib/sellist.c:94
-msgid "Input value is not an integer.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:133
-msgid "Values must be be greater than zero.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:137
-msgid "Slot too large.\n"
-msgstr ""
-
-#: 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: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:219 src/dird/ua_label.c:542
-msgid "No Volumes found to label, or no barcodes.\n"
-msgstr ""
-
-#: 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:267
-#, c-format
-msgid "No VolName for Slot=%d InChanger set to zero.\n"
-msgstr ""
-
-#: 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:292
-#, c-format
-msgid "Catalog record for Volume \"%s\" is up to date.\n"
-msgstr ""
-
-#: 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:394
-#, c-format
-msgid ""
-"Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
-"relabeling.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:410
-msgid "Enter new Volume name: "
-msgstr ""
-
-#: src/dird/ua_label.c:425
-#, c-format
-msgid "Media record for new Volume \"%s\" already exists.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:443
-msgid "Enter slot (0 or Enter for none): "
-msgstr ""
-
-#: src/dird/ua_label.c:471
-#, c-format
-msgid "Delete of Volume \"%s\" failed. ERR=%s"
-msgstr ""
-
-#: src/dird/ua_label.c:474
-#, c-format
-msgid "Old volume \"%s\" deleted from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:485
-#, c-format
-msgid "Requesting to mount %s ...\n"
-msgstr ""
-
-#: src/dird/ua_label.c:507
-msgid "Do not forget to mount the drive!!!\n"
-msgstr ""
-
-#: src/dird/ua_label.c:547
-msgid ""
-"The following Volumes will be labeled:\n"
-"Slot  Volume\n"
-"==============\n"
-msgstr ""
-
-#: src/dird/ua_label.c:556
-msgid "Do you want to label these Volumes? (yes|no): "
-msgstr ""
-
-#: 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:582
-#, c-format
-msgid "Error setting InChanger: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_label.c:605
-#, c-format
-msgid "Maximum pool Volumes=%d reached.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:613
-#, c-format
-msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:620
-#, c-format
-msgid "Catalog error on cleaning tape: %s"
-msgstr ""
-
-#: src/dird/ua_label.c:656
-#, c-format
-msgid "Illegal character \"%c\" in a volume name.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:703
-#, c-format
-msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
-msgstr ""
-
-#: src/dird/ua_label.c:710
-#, c-format
-msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
-msgstr ""
-
-#: 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:764
-#, c-format
-msgid "Label command failed for Volume %s.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:802
-msgid "Could not open SD socket.\n"
-msgstr ""
-
-#: 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:893
-#, c-format
-msgid "Invalid Volume name: %s\n"
-msgstr ""
-
-#: src/dird/ua_label.c:987
-#, c-format
-msgid "Device \"%s\" has %d slots.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1033
-#, c-format
-msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1247
-msgid "No Volumes found, or no barcodes.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1250
-msgid ""
-" Slot |   Volume Name    |   Status  |     Media Type       |      "
-"Pool          |\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1251
-msgid ""
-"------+------------------+-----------+----------------------"
-"+--------------------|\n"
-msgstr ""
-
-#: src/dird/scheduler.c:112
-#, c-format
-msgid "Job %s not found\n"
-msgstr ""
-
-#: src/dird/scheduler.c:136
-msgid "Walk queue"
-msgstr ""
-
-#: src/dird/scheduler.c:146
-msgid "Dequeued job"
-msgstr ""
-
-#: src/dird/scheduler.c:149
-msgid "Scheduler logic error\n"
-msgstr ""
-
-#: src/dird/scheduler.c:190
-msgid "Run job"
-msgstr ""
-
-#: src/dird/scheduler.c:223
-msgid "run override"
-msgstr ""
-
-#: src/dird/scheduler.c:413
-msgid "Inserted job"
-msgstr ""
-
-#: src/dird/scheduler.c:421
-msgid "Appended job"
-msgstr ""
-
-#: src/dird/scheduler.c:425
-msgid "Run queue"
-msgstr ""
-
-#: src/dird/run_conf.c:208
-#, c-format
-msgid "Expected an equals, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:221 src/dird/run_conf.c:233 src/dird/run_conf.c:327
-#, c-format
-msgid "Expect a YES or NO, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:247
-#, c-format
-msgid "Job level field: %s not found in run record"
-msgstr ""
-
-#: src/dird/run_conf.c:265
-#, c-format
-msgid "Could not find specified Pool Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:290
-#, c-format
-msgid "Could not find specified Storage Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:302
-#, c-format
-msgid "Could not find specified Messages Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:312 src/lib/parse_conf.c:736 src/lib/parse_conf.c:742
-#, c-format
-msgid "expected a time period, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:331
-#, c-format
-msgid "Expected a keyword name, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:370
-msgid "Day number out of range (1-31)"
-msgstr ""
-
-#: src/dird/run_conf.c:387 src/dird/run_conf.c:542
-msgid "Week number out of range (0-53)"
-msgstr ""
-
-#: src/dird/run_conf.c:403
-#, c-format
-msgid "Job type field: %s in run record not found"
-msgstr ""
-
-#: src/dird/run_conf.c:410
-#, c-format
-msgid "Unexpected token: %d:%s"
-msgstr ""
-
-#: src/dird/run_conf.c:454
-msgid "Time must be preceded by keyword AT."
-msgstr ""
-
-#: src/dird/run_conf.c:463
-msgid "Time logic error.\n"
-msgstr ""
-
-#: src/dird/run_conf.c:478 src/dird/run_conf.c:497
-msgid "Bad time specification."
-msgstr ""
-
-#: src/dird/run_conf.c:511
-msgid "Range logic error.\n"
-msgstr ""
-
-#: src/dird/run_conf.c:520
-msgid "Bad day range specification."
-msgstr ""
-
-#: src/dird/run_conf.c:567
-msgid "Invalid month, week or position day range"
-msgstr ""
-
-#: src/dird/run_conf.c:582
-msgid "Invalid month, weekday or position range"
-msgstr ""
-
-#: src/dird/run_conf.c:641
-msgid "Unexpected run state\n"
-msgstr ""
-
-#: src/dird/ua_update.c:97
-msgid "Update choice:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:98
-msgid "Volume parameters"
-msgstr ""
-
-#: src/dird/ua_update.c:99
-msgid "Pool from resource"
-msgstr ""
-
-#: src/dird/ua_update.c:100
-msgid "Slots from autochanger"
-msgstr ""
-
-#: src/dird/ua_update.c:101
-msgid "Long term statistics"
-msgstr ""
-
-#: src/dird/ua_update.c:102
-msgid "item"
-msgstr ""
-
-#: src/dird/ua_update.c:102
-msgid "Choose catalog item to update"
-msgstr ""
-
-#: src/dird/ua_update.c:145
-#, c-format
-msgid "Invalid VolStatus specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:154
-#, c-format
-msgid "New Volume status is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:164
-#, c-format
-msgid "Invalid retention period specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:172
-#, c-format
-msgid "New retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:183
-#, c-format
-msgid "Invalid use duration specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:191
-#, c-format
-msgid "New use duration is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:205
-#, c-format
-msgid "New max jobs is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:218
-#, c-format
-msgid "New max files is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:229
-#, c-format
-msgid "Invalid max. bytes specification: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:237
-#, c-format
-msgid "New Max bytes is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:248 src/dird/ua_update.c:268
-msgid "Invalid value. It must be yes or no.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:256
-#, c-format
-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: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: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 ""
-
-#: src/dird/ua_update.c:276
-#, c-format
-msgid "New InChanger flag is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:294
-#, c-format
-msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
-msgstr ""
-
-#: 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:306
-#, c-format
-msgid "New Slot is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:331
-#, c-format
-msgid "New Pool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:374
-#, c-format
-msgid "New RecyclePool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:394
-#, c-format
-msgid "Error updating Volume record: ERR=%s"
-msgstr ""
-
-#: 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:451
-#, c-format
-msgid "Error updating Volume records: ERR=%s"
-msgstr ""
-
-#: 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:443
-#, c-format
-msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:469
-#, c-format
-msgid "Error updating media record Enabled: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_update.c:472
-#, c-format
-msgid "New Enabled is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:487
-#, c-format
-msgid "Error updating media record ActionOnPurge: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_update.c:490
-#, c-format
-msgid "New ActionOnPurge is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
-msgid "Parameters to modify:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:606
-msgid "Volume Status"
-msgstr ""
-
-#: src/dird/ua_update.c:607
-msgid "Volume Retention Period"
-msgstr ""
-
-#: src/dird/ua_update.c:608
-msgid "Volume Use Duration"
-msgstr ""
-
-#: src/dird/ua_update.c:609
-msgid "Maximum Volume Jobs"
-msgstr ""
-
-#: src/dird/ua_update.c:610
-msgid "Maximum Volume Files"
-msgstr ""
-
-#: src/dird/ua_update.c:611
-msgid "Maximum Volume Bytes"
-msgstr ""
-
-#: src/dird/ua_update.c:612
-msgid "Recycle Flag"
-msgstr ""
-
-#: src/dird/ua_update.c:613
-msgid "Slot"
-msgstr ""
-
-#: src/dird/ua_update.c:614
-msgid "InChanger Flag"
-msgstr ""
-
-#: src/dird/ua_update.c:615
-msgid "Volume Files"
-msgstr ""
-
-#: src/dird/ua_update.c:617
-msgid "Volume from Pool"
-msgstr ""
-
-#: src/dird/ua_update.c:618
-msgid "All Volumes from Pool"
-msgstr ""
-
-#: src/dird/ua_update.c:619
-msgid "All Volumes from all Pools"
-msgstr ""
-
-#: src/dird/ua_update.c:620
-msgid "Enabled"
-msgstr ""
-
-#: src/dird/ua_update.c:621
-msgid "RecyclePool"
-msgstr ""
-
-#: src/dird/ua_update.c:622
-msgid "Action On Purge"
-msgstr ""
-
-#: src/dird/ua_update.c:623
-msgid "Done"
-msgstr ""
-
-#: 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:632
-#, c-format
-msgid "Updating Volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_update.c:637
-#, c-format
-msgid "Current Volume status is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:638
-msgid "Possible Values are:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:649
-msgid "Choose new Volume Status"
-msgstr ""
-
-#: src/dird/ua_update.c:655
-#, c-format
-msgid "Current retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:657
-msgid "Enter Volume Retention period: "
-msgstr ""
-
-#: src/dird/ua_update.c:664
-#, c-format
-msgid "Current use duration is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:666
-msgid "Enter Volume Use Duration: "
-msgstr ""
-
-#: src/dird/ua_update.c:673
-#, c-format
-msgid "Current max jobs is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:674
-msgid "Enter new Maximum Jobs: "
-msgstr ""
-
-#: src/dird/ua_update.c:681
-#, c-format
-msgid "Current max files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:682
-msgid "Enter new Maximum Files: "
-msgstr ""
-
-#: src/dird/ua_update.c:689
-#, c-format
-msgid "Current value is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:690
-msgid "Enter new Maximum Bytes: "
-msgstr ""
-
-#: src/dird/ua_update.c:698
-#, c-format
-msgid "Current recycle flag is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:700
-msgid "Enter new Recycle status: "
-msgstr ""
-
-#: src/dird/ua_update.c:707
-#, c-format
-msgid "Current Slot is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:708
-msgid "Enter new Slot: "
-msgstr ""
-
-#: src/dird/ua_update.c:715
-#, c-format
-msgid "Current InChanger flag is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:716
-#, c-format
-msgid "Set InChanger flag for Volume \"%s\": yes/no: "
-msgstr ""
-
-#: src/dird/ua_update.c:730
-#, c-format
-msgid "New InChanger flag is: %d\n"
-msgstr ""
-
-#: 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:739
-#, c-format
-msgid "Current Volume Files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:740
-msgid "Enter new number of Files for Volume: "
-msgstr ""
-
-#: src/dird/ua_update.c:745
-msgid "Normally, you should only increase Volume Files by one!\n"
-msgstr ""
-
-#: src/dird/ua_update.c:746
-msgid "Increase Volume Files? (yes/no): "
-msgstr ""
-
-#: src/dird/ua_update.c:756
-#, c-format
-msgid "New Volume Files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:768
-#, c-format
-msgid "Current Pool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:769
-msgid "Enter new Pool name: "
-msgstr ""
-
-#: src/dird/ua_update.c:790
-#, c-format
-msgid "Current Enabled is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:791
-msgid "Enter new Enabled: "
-msgstr ""
-
-#: src/dird/ua_update.c:810
-#, c-format
-msgid "Current RecyclePool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:812
-msgid "No current RecyclePool\n"
-msgstr ""
-
-#: src/dird/ua_update.c:822
-#, c-format
-msgid "Current ActionOnPurge is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:824
-msgid "Enter new ActionOnPurge (one of: Truncate, None): "
-msgstr ""
-
-#: src/dird/ua_update.c:832
-msgid "Selection terminated.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:852
-#, c-format
-msgid "Updating %i job(s).\n"
-msgstr ""
-
-#: src/dird/ua_update.c:884
-#, c-format
-msgid "db_update_pool_record returned %d. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:891
-msgid "Pool DB record updated from resource.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:918
-msgid "Expect JobId keyword, not found.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:943
-msgid "Neither Client nor StartTime specified.\n"
-msgstr ""
-
-#: src/dird/migrate.c:149 src/dird/migrate.c:163
-#, c-format
-msgid "No previous Job found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:155
-msgid "Create bootstrap file failed.\n"
-msgstr ""
-
-#: src/dird/migrate.c:165
-#, c-format
-msgid "Previous Job has no data to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:182
-#, c-format
-msgid "Job resource not found for \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:186
-#, c-format
-msgid "Previous Job resource not found for \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:203
-msgid "setup job failed.\n"
-msgstr ""
-
-#: src/dird/migrate.c:258
-#, c-format
-msgid "Pool for JobId %s not in database. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:266
-#, c-format
-msgid "Pool resource \"%s\" not found.\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/migrate.c:327
-#, c-format
-msgid "JobId %s already %s probably by another Job. %s stopped.\n"
-msgstr ""
-
-#: src/dird/migrate.c:337
-#, c-format
-msgid "Start %s JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:712
-#, c-format
-msgid "No %s SQL selection pattern specified.\n"
-msgstr ""
-
-#: 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: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:777 src/dird/migrate.c:866 src/dird/migrate.c:886
-msgid "Invalid JobId found.\n"
-msgstr ""
-
-#: src/dird/migrate.c:837
-#, c-format
-msgid "Unknown %s Selection Type.\n"
-msgstr ""
-
-#: 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:852
-#, c-format
-msgid "The following %u JobId%s chosen to be %s: %s\n"
-msgstr ""
-
-#: src/dird/migrate.c:853
-msgid " was"
-msgstr ""
-
-#: src/dird/migrate.c:853
-msgid "s were"
-msgstr ""
-
-#: src/dird/migrate.c:905
-#, c-format
-msgid "%s using JobId=%s Job=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:939
-msgid "Could not start migration job.\n"
-msgstr ""
-
-#: src/dird/migrate.c:941
-#, c-format
-msgid "%s JobId %d started.\n"
-msgstr ""
-
-#: src/dird/migrate.c:960
-#, c-format
-msgid "No %s found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:964
-#, c-format
-msgid "SQL error. Expected 1 MediaId got %d\n"
-msgstr ""
-
-#: src/dird/migrate.c:993 src/dird/migrate.c:1123
-#, c-format
-msgid "No %ss found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1015
-msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
-msgstr ""
-
-#: src/dird/migrate.c:1024
-#, c-format
-msgid "SQL to get uncopied jobs failed. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1047
-#, c-format
-msgid "No %s %s selection pattern specified.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1058
-#, c-format
-msgid "SQL to get %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1063
-#, c-format
-msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1101
-#, c-format
-msgid "Regex pattern matched no Jobs to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1265
-#, c-format
-msgid "%s OK -- with warnings"
-msgstr ""
-
-#: src/dird/migrate.c:1267
-#, c-format
-msgid "%s OK"
-msgstr ""
-
-#: src/dird/migrate.c:1272
-#, c-format
-msgid "*** %s Error ***"
-msgstr ""
-
-#: src/dird/migrate.c:1282
-#, c-format
-msgid "%s Canceled"
-msgstr ""
-
-#: src/dird/migrate.c:1291
-#, c-format
-msgid "Inappropriate %s term code"
-msgstr ""
-
-#: src/dird/migrate.c:1301
-#, c-format
-msgid "%s -- no files to %s"
-msgstr ""
-
-#: src/dird/migrate.c:1316
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  Prev Backup JobId:      %s\n"
-"  Prev Backup Job:        %s\n"
-"  New Backup JobId:       %s\n"
-"  Current JobId:          %s\n"
-"  Current Job:            %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Read Pool:              \"%s\" (From %s)\n"
-"  Read Storage:           \"%s\" (From %s)\n"
-"  Write Pool:             \"%s\" (From %s)\n"
-"  Write Storage:          \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/migrate.c:1427
-#, c-format
-msgid "No Next Pool specification found in Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:1433
-#, c-format
-msgid "No Storage specification found in Next Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:1439
-msgid "Storage from Pool's NextPool resource"
-msgstr ""
-
-#: src/dird/ua_prune.c:127
-msgid "Choose item to prune"
-msgstr ""
-
-#: src/dird/ua_prune.c:175
-#, c-format
-msgid "Cannot prune Volume \"%s\" because it is archived.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:217
-msgid "Pruned Jobs from JobHisto catalog.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:305
-msgid "Begin pruning Files.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:320
-msgid "No Files found to prune.\n"
-msgstr ""
-
-#: 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:489
-#, c-format
-msgid "Begin pruning Jobs older than %s.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:600
-#, c-format
-msgid "Pruned %d %s for client %s from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:601
-msgid "Jobs"
-msgstr ""
-
-#: src/dird/ua_prune.c:603
-msgid "No Jobs found to prune.\n"
-msgstr ""
-
-#: src/dird/autoprune.c:75
-msgid ""
-"End auto prune.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_run.c:154
-msgid "OK to run? (yes/mod/no): "
-msgstr ""
-
-#: src/dird/ua_run.c:193
-msgid "Job failed.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:196
-#, c-format
-msgid "Job queued. JobId=%s\n"
-msgstr ""
-
-#: 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:223
-msgid "Level"
-msgstr ""
-
-#: src/dird/ua_run.c:228
-msgid "Restore Client"
-msgstr ""
-
-#: 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: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:240
-msgid "Verify Job"
-msgstr ""
-
-#: 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: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:245
-msgid "File Relocation"
-msgstr ""
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:1907
-#: src/wx-console/wxbrestorepanel.cpp:1908
-#: src/wx-console/wxbrestorepanel.cpp:1909
-msgid "Replace"
-msgstr ""
-
-#: src/dird/ua_run.c:247
-msgid "JobId"
-msgstr ""
-
-#: src/dird/ua_run.c:250
-msgid "Plugin Options"
-msgstr ""
-
-#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
-msgid "user selection"
-msgstr ""
-
-#: 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:301 src/dird/ua_run.c:477
-msgid "Invalid time, using current time.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:308
-msgid "Enter new Priority: "
-msgstr ""
-
-#: src/dird/ua_run.c:312
-msgid "Priority must be a positive integer.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:333
-msgid "Please enter the Bootstrap file name: "
-msgstr ""
-
-#: src/dird/ua_run.c:345
-#, c-format
-msgid "Warning cannot open %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:364
-msgid "Please enter the full path prefix for restore (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:386
-msgid "Replace:\n"
-msgstr ""
-
-#: src/dird/ua_run.c:390
-msgid "Select replace option"
-msgstr ""
-
-#: 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:406
-msgid "Please Plugin Options string: "
-msgstr ""
-
-#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
-msgid "User input"
-msgstr ""
-
-#: src/dird/ua_run.c:507
-#, c-format
-msgid "Invalid replace option: %s\n"
-msgstr ""
-
-#: 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:592
-msgid "This will replace your current Where value\n"
-msgstr ""
-
-#: src/dird/ua_run.c:593
-msgid "Strip prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:594
-msgid "Add prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:595
-msgid "Add file suffix"
-msgstr ""
-
-#: src/dird/ua_run.c:596
-msgid "Enter a regexp"
-msgstr ""
-
-#: src/dird/ua_run.c:597
-msgid "Test filename manipulation"
-msgstr ""
-
-#: src/dird/ua_run.c:598
-msgid "Use this ?"
-msgstr ""
-
-#: src/dird/ua_run.c:603
-msgid "Please enter the path prefix to strip: "
-msgstr ""
-
-#: src/dird/ua_run.c:611
-msgid "Please enter the path prefix to add (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:622
-msgid "Please enter the file suffix to add: "
-msgstr ""
-
-#: src/dird/ua_run.c:629
-msgid "Please enter a valid regexp (!from!to!): "
-msgstr ""
-
-#: src/dird/ua_run.c:642
-#, c-format
-msgid "regexwhere=%s\n"
-msgstr ""
-
-#: 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:655
-msgid "Cannot use your regexp\n"
-msgstr ""
-
-#: src/dird/ua_run.c:658
-msgid "Enter a period (.) to stop this test\n"
-msgstr ""
-
-#: src/dird/ua_run.c:659
-msgid "Please enter filename to test: "
-msgstr ""
-
-#: src/dird/ua_run.c:661
-#, c-format
-msgid "%s -> %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:705
-msgid "Cannot use your regexp.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
-msgid "Levels:\n"
-msgstr ""
-
-#: 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:721 src/stored/status.c:668 src/lib/util.c:429
-#: src/filed/status.c:522
-msgid "Incremental"
-msgstr ""
-
-#: 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:723 src/stored/status.c:674 src/lib/util.c:435
-#: src/filed/status.c:528
-msgid "Since"
-msgstr ""
-
-#: src/dird/ua_run.c:724
-msgid "VirtualFull"
-msgstr ""
-
-#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
-msgid "Select level"
-msgstr ""
-
-#: src/dird/ua_run.c:749
-msgid "Initialize Catalog"
-msgstr ""
-
-#: 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:751 src/lib/util.c:444
-msgid "Verify Volume to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:752 src/lib/util.c:447
-msgid "Verify Disk to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:753
-msgid "Verify Volume Data (not yet implemented)"
-msgstr ""
-
-#: src/dird/ua_run.c:774
-msgid "Level not appropriate for this Job. Cannot be changed.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:805
-#, c-format
-msgid ""
-"Run Admin Job\n"
-"JobName:  %s\n"
-"FileSet:  %s\n"
-"Client:   %s\n"
-"Storage:  %s\n"
-"When:     %s\n"
-"Priority: %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:849
-#, c-format
-msgid ""
-"Run Backup job\n"
-"JobName:  %s\n"
-"Level:    %s\n"
-"Client:   %s\n"
-"FileSet:  %s\n"
-"Pool:     %s (From %s)\n"
-"Storage:  %s (From %s)\n"
-"When:     %s\n"
-"Priority: %d\n"
-"%s%s%s"
-msgstr ""
-
-#: 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:919
-#, c-format
-msgid ""
-"Run Verify Job\n"
-"JobName:     %s\n"
-"Level:       %s\n"
-"Client:      %s\n"
-"FileSet:     %s\n"
-"Pool:        %s (From %s)\n"
-"Storage:     %s (From %s)\n"
-"Verify Job:  %s\n"
-"Verify List: %s\n"
-"When:        %s\n"
-"Priority:    %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:948
-msgid "Please enter a JobId for restore: "
-msgstr ""
-
-#: src/dird/ua_run.c:988
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"RegexWhere:      %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1044
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"Where:           %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1075
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:    %s\n"
-"Bootstrap:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1083
-#, c-format
-msgid "RegexWhere: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1086
-#, c-format
-msgid "Where:      %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1090
-#, c-format
-msgid ""
-"Replace:         %s\n"
-"Client:          %s\n"
-"Storage:         %s\n"
-"JobId:           %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1145
-msgid "Run Copy job\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1147
-msgid "Run Migration job\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1176
-#, c-format
-msgid "Unknown Job Type=%d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1245
-#, c-format
-msgid "Value missing for keyword %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1252
-msgid "Job name specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1260
-msgid "JobId specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
-msgid "Client specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1277
-msgid "FileSet specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1285
-msgid "Level specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1294
-msgid "Storage specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1302
-msgid "RegexWhere or Where specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1307
-msgid "No authorization for \"regexwhere\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1314
-msgid "Where or RegexWhere specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1319
-msgid "No authoriztion for \"where\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1326
-msgid "Bootstrap specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1334
-msgid "Replace specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1342
-msgid "When specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1350
-msgid "Priority specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1355
-msgid "Priority must be positive nonzero setting it to 10.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1365
-msgid "Verify Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1393
-msgid "Migration Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1401
-msgid "Pool specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1417
-msgid "Restore Client specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1424
-msgid "Plugin Options not yet implemented.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1427
-msgid "Plugin Options specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1432
-msgid "No authoriztion for \"PluginOptions\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1439
-msgid "Spool flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1446
-msgid "Invalid spooldata flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1455
-msgid "IgnoreDuplicateCheck flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1462
-msgid "Invalid ignoreduplicatecheck flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1467
-msgid "Accurate flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1474
-msgid "Invalid accurate flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1495
-#, c-format
-msgid "Invalid keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1510
-#, c-format
-msgid "Catalog \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1514
-#, c-format
-msgid "No authorization. Catalog \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1525
-#, c-format
-msgid "Job \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1532
-msgid "A job name must be specified.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1538
-#, c-format
-msgid "No authorization. Job \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1546
-#, c-format
-msgid "Pool \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1556
-#, c-format
-msgid "No authorization. Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1566
-#, c-format
-msgid "Storage \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1575 src/dird/job.c:1245
-msgid "No storage specified.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1578
-#, c-format
-msgid "No authorization. Storage \"%s\".\n"
-msgstr ""
-
-#: 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:1608
-#, c-format
-msgid "Restore Client \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1627
-#, c-format
-msgid "FileSet \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1636
-#, c-format
-msgid "No authorization. FileSet \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1644
-#, c-format
-msgid "Verify Job \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1654
-#, c-format
-msgid "Migration Job \"%s\" not found.\n"
-msgstr ""
-
-#: 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: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: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: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: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 ""
-
-#: src/dird/backup.c:96
-msgid "No Storage specification found in Job or Pool.\n"
-msgstr ""
-
-#: src/dird/backup.c:256
-#, c-format
-msgid "Using BaseJobId(s): %s\n"
-msgstr ""
-
-#: src/dird/backup.c:266
-msgid "Cannot find previous jobids.\n"
-msgstr ""
-
-#: src/dird/backup.c:275
-msgid "Sending Accurate information.\n"
-msgstr ""
-
-#: src/dird/backup.c:328
-#, c-format
-msgid "Start Backup JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/backup.c:521
-#, c-format
-msgid "Unexpected Client Job message: %s\n"
-msgstr ""
-
-#: src/dird/backup.c:534
-#, c-format
-msgid "Network error with FD during %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/backup.c:569
-msgid "No Job status returned from FD.\n"
-msgstr ""
-
-#: src/dird/backup.c:657
-msgid "Backup failed -- incomplete"
-msgstr ""
-
-#: src/dird/backup.c:730
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  FD Files Written:       %s\n"
-"  SD Files Written:       %s\n"
-"  FD Bytes Written:       %s (%sB)\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Software Compression:   %s\n"
-"%s  VSS:                    %s\n"
-"  Encryption:             %s\n"
-"  Accurate:               %s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  Non-fatal FD errors:    %d\n"
-"  SD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: 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:868
-#, c-format
-msgid ""
-"Could not open WriteBootstrap file:\n"
-"%s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/restore.c:137 src/dird/msgchan.c:476
-#, c-format
-msgid "Could not open bootstrap file %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/restore.c:185 src/dird/restore.c:276
-#, c-format
-msgid "Could not get storage resource '%s'.\n"
-msgstr ""
-
-#: src/dird/restore.c:314
-#, c-format
-msgid "Could not acquire read storage lock for \"%s\""
-msgstr ""
-
-#: 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:513
-#, c-format
-msgid "Start Restore Job %s\n"
-msgstr ""
-
-#: src/dird/restore.c:564
-msgid "Restore OK -- warning file count mismatch"
-msgstr ""
-
-#: src/dird/restore.c:566
-msgid "Restore OK"
-msgstr ""
-
-#: src/dird/restore.c:570
-msgid "Restore OK -- with warnings"
-msgstr ""
-
-#: src/dird/restore.c:574
-msgid "*** Restore Error ***"
-msgstr ""
-
-#: src/dird/restore.c:584
-msgid "Restore Canceled"
-msgstr ""
-
-#: src/dird/restore.c:611
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Restore Client:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Restored:         %s\n"
-"  Bytes Restored:         %s\n"
-"  Rate:                   %.1f KB/s\n"
-"  FD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_status.c:174
-msgid "Status available for:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:180
-msgid "Select daemon type for status"
-msgstr ""
-
-#: src/dird/ua_status.c:294 src/stored/status.c:248
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:297
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_status.c:358
-#, c-format
-msgid ""
-"\n"
-"Failed to connect to Storage daemon %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:400
-#, c-format
-msgid ""
-"Failed to connect to Client %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:408
-msgid "Connected to file daemon\n"
-msgstr ""
-
-#: src/dird/ua_status.c:428
-msgid ""
-"\n"
-"Scheduled Jobs:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:429
-msgid ""
-"Level          Type     Pri  Scheduled          Name               Volume\n"
-msgstr ""
-
-#: src/dird/ua_status.c:430
-msgid "===================================================================================\n"
-msgstr ""
-
-#: 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:490
-#, c-format
-msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:544
-msgid "Ignoring invalid value for days. Max is 500.\n"
-msgstr ""
-
-#: src/dird/ua_status.c:587
-msgid "No Scheduled Jobs.\n"
-msgstr ""
-
-#: 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:612
-#, c-format
-msgid "Console connected at %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:622
-msgid ""
-"No Jobs running.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:628
-msgid " JobId Level   Name                       Status\n"
-msgstr ""
-
-#: src/dird/ua_status.c:629 src/filed/status.c:342
-msgid "======================================================================\n"
-msgstr ""
-
-#: src/dird/ua_status.c:638
-msgid "is waiting execution"
-msgstr ""
-
-#: src/dird/ua_status.c:641
-msgid "is running"
-msgstr ""
-
-#: src/dird/ua_status.c:644
-msgid "is blocked"
-msgstr ""
-
-#: src/dird/ua_status.c:647
-msgid "has terminated"
-msgstr ""
-
-#: src/dird/ua_status.c:650
-msgid "has terminated with warnings"
-msgstr ""
-
-#: src/dird/ua_status.c:653
-msgid "has erred"
-msgstr ""
-
-#: src/dird/ua_status.c:656
-msgid "has errors"
-msgstr ""
-
-#: src/dird/ua_status.c:659
-msgid "has a fatal error"
-msgstr ""
-
-#: src/dird/ua_status.c:662
-msgid "has verify differences"
-msgstr ""
-
-#: src/dird/ua_status.c:665
-msgid "has been canceled"
-msgstr ""
-
-#: src/dird/ua_status.c:670
-msgid "is waiting on Client"
-msgstr ""
-
-#: src/dird/ua_status.c:672
-#, c-format
-msgid "is waiting on Client %s"
-msgstr ""
-
-#: 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:684
-msgid "is waiting on Storage"
-msgstr ""
-
-#: src/dird/ua_status.c:690
-msgid "is waiting on max Storage jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:693
-msgid "is waiting on max Client jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:696
-msgid "is waiting on max Job jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:699
-msgid "is waiting on max total jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:702
-msgid "is waiting for its start time"
-msgstr ""
-
-#: src/dird/ua_status.c:705
-msgid "is waiting for higher priority jobs to finish"
-msgstr ""
-
-#: 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:711 src/dird/ua_status.c:762 src/lib/util.c:244
-msgid "SD despooling Data"
-msgstr ""
-
-#: 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:717 src/dird/ua_status.c:768 src/lib/util.c:250
-msgid "Dir inserting Attributes"
-msgstr ""
-
-#: src/dird/ua_status.c:722
-#, c-format
-msgid "is in unknown state %c"
-msgstr ""
-
-#: src/dird/ua_status.c:736
-msgid "is waiting for a mount request"
-msgstr ""
-
-#: src/dird/ua_status.c:743
-msgid "is waiting for an appendable Volume"
-msgstr ""
-
-#: src/dird/ua_status.c:751
-msgid "is waiting for Client to connect to Storage daemon"
-msgstr ""
-
-#: 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:784
-#, c-format
-msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:788
-#, c-format
-msgid "%6d %-6s  %-20s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:792
-#, c-format
-msgid "               %-30s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:812
-msgid "No Terminated Jobs.\n"
-msgstr ""
-
-#: 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: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:820
-msgid "====================================================================\n"
-msgstr ""
-
-#: 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: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:859 src/stored/status.c:608 src/filed/status.c:370
-msgid "Diffs"
-msgstr ""
-
-#: 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: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:871 src/stored/status.c:620 src/filed/status.c:379
-msgid "Other"
-msgstr ""
-
-#: 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: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:892
-msgid "\n"
-msgstr ""
-
-#: src/dird/ua_input.c:103
-msgid "Enter slot"
-msgstr ""
-
-#: src/dird/ua_input.c:107 src/dird/ua_input.c:113
-#, c-format
-msgid "Expected a positive integer, got: %s\n"
-msgstr ""
-
-#: src/dird/ua_input.c:170
-msgid "Invalid response. You must answer yes or no.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:193
-msgid "Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"
-msgstr ""
-
-#: src/dird/ua_input.c:220
-#, c-format
-msgid "Illegal character \"%c\" in a comment.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:227
-msgid "Comment too long.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:233
-msgid "Comment must be at least one character long.\n"
-msgstr ""
-
-#: src/dird/pythondir.c:121 src/stored/pythonsd.c:101
-#: src/stored/pythonsd.c:166 src/filed/pythonfd.c:94 src/filed/pythonfd.c:148
-#: src/filed/pythonfd.c:212
-msgid "Job pointer not found."
-msgstr ""
-
-#: src/dird/pythondir.c:153
-msgid "Pool record not found."
-msgstr ""
-
-#: src/dird/pythondir.c:209 src/stored/pythonsd.c:143 src/filed/pythonfd.c:125
-#, c-format
-msgid "Attribute %s not found."
-msgstr ""
-
-#: src/dird/pythondir.c:252 src/dird/pythondir.c:258 src/stored/pythonsd.c:183
-#: src/filed/pythonfd.c:167
-msgid "Read-only attribute"
-msgstr ""
-
-#: src/dird/pythondir.c:284
-msgid "Priority must be 1-100"
-msgstr ""
-
-#: src/dird/pythondir.c:289
-msgid "Job Level can be set only during JobInit"
-msgstr ""
-
-#: src/dird/pythondir.c:303
-msgid "Bad JobLevel string"
-msgstr ""
-
-#: src/dird/job.c:62
-#, c-format
-msgid "Could not init job queue: ERR=%s\n"
-msgstr ""
-
-#: src/dird/job.c:94
-#, c-format
-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:1129 src/dird/job.c:1170
-#: src/dird/job.c:1179
-msgid "Job resource"
-msgstr ""
-
-#: src/dird/job.c:230 src/dird/job.c:349
-#, c-format
-msgid "Unimplemented job type: %d\n"
-msgstr ""
-
-#: src/dird/job.c:272
-msgid "Job canceled because max start delay time exceeded.\n"
-msgstr ""
-
-#: src/dird/job.c:277
-msgid "Job canceled because max run sched time exceeded.\n"
-msgstr ""
-
-#: src/dird/job.c:403
-#, c-format
-msgid "JobId %s, Job %s marked to be canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:413
-msgid "Failed to connect to File daemon.\n"
-msgstr ""
-
-#: src/dird/job.c:548
-msgid "Max wait time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:553
-msgid "Max run time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:558
-msgid "Max run sched time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:680
-#, c-format
-msgid "Pool \"%s\" not in database. ERR=%s"
-msgstr ""
-
-#: src/dird/job.c:684
-#, c-format
-msgid "Created database record for Pool \"%s\".\n"
-msgstr ""
-
-#: 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:797
-#, c-format
-msgid "Cancelling duplicate JobId=%d.\n"
-msgstr ""
-
-#: src/dird/job.c:828 src/dird/job.c:1116
-msgid "Run pool override"
-msgstr ""
-
-#: src/dird/job.c:839
-msgid "Run FullPool override"
-msgstr ""
-
-#: src/dird/job.c:841
-msgid "Job FullPool override"
-msgstr ""
-
-#: src/dird/job.c:850
-msgid "Run IncPool override"
-msgstr ""
-
-#: src/dird/job.c:852
-msgid "Job IncPool override"
-msgstr ""
-
-#: src/dird/job.c:861
-msgid "Run DiffPool override"
-msgstr ""
-
-#: src/dird/job.c:863
-msgid "Job DiffPool override"
-msgstr ""
-
-#: 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:929
-msgid "FileSet MD5 digest not found.\n"
-msgstr ""
-
-#: src/dird/job.c:934
-#, c-format
-msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
-msgstr ""
-
-#: src/dird/job.c:976
-#, c-format
-msgid "Error updating job record. %s"
-msgstr ""
-
-#: src/dird/job.c:1121
-msgid "Run storage override"
-msgstr ""
-
-#: src/dird/job.c:1189
-msgid "Client resource"
-msgstr ""
-
-#: src/dird/job.c:1406
-#, c-format
-msgid "Could not start clone job: \"%s\".\n"
-msgstr ""
-
-#: src/dird/job.c:1409
-#, c-format
-msgid "Clone JobId %d started.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:83 src/dird/authenticate.c:84
-#: src/tray-monitor/authenticate.c:132
-#: src/qt-console/tray-monitor/authenticate.cpp:131
-#, c-format
-msgid "Error sending Hello to Storage daemon. ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:113
-msgid "Director and Storage daemon passwords or names not the same.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:115
-#, c-format
-msgid ""
-"Director unable to authenticate with Storage daemon at \"%s:%d\". Possible "
-"causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the SD or\n"
-"SD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-
-#: src/dird/authenticate.c:127 src/wx-console/authenticate.c:127
-#: src/console/authenticate.c:122
-msgid ""
-"Authorization problem: Remote server did not advertise required TLS "
-"support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:134 src/stored/authenticate.c:146
-#: src/stored/authenticate.c:257 src/wx-console/authenticate.c:133
-#: src/console/authenticate.c:129 src/filed/authenticate.c:160
-#: src/filed/authenticate.c:279
-msgid "Authorization problem: Remote server requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:143
-#, c-format
-msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
-msgstr ""
-
-#: src/dird/authenticate.c:155
-#, c-format
-msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:162 src/tray-monitor/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:151
-msgid "Storage daemon rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:163
-#, c-format
-msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:192
-#, c-format
-msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:222
-msgid "Director and File daemon passwords or names not the same.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:224
-#, c-format
-msgid ""
-"Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the FD or\n"
-"FD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-
-#: src/dird/authenticate.c:236
-#, c-format
-msgid ""
-"Authorization problem: FD \"%s:%s\" did not advertise required TLS support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:244
-#, c-format
-msgid "Authorization problem: FD at \"%s:%d\" requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:254
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
-msgstr ""
-
-#: src/dird/authenticate.c:266 src/tray-monitor/authenticate.c:191
-#: src/qt-console/tray-monitor/authenticate.cpp:190
-#, c-format
-msgid "Bad response from File daemon to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:268
-#, c-format
-msgid "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:277 src/tray-monitor/authenticate.c:198
-#: src/qt-console/tray-monitor/authenticate.cpp:197
-msgid "File daemon rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:278
-#, c-format
-msgid "File daemon at \"%s:%d\" rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:302
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Len=%d\n"
-msgstr ""
-
-#: src/dird/authenticate.c:309
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Got: %s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:377
-msgid ""
-"Authorization problem: Remote client did not advertise required TLS "
-"support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:385
-msgid "Authorization problem: Remote client requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:400 src/filed/authenticate.c:169
-#: src/filed/authenticate.c:288
-msgid "TLS negotiation failed.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:414
-#, c-format
-msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:419
-#, c-format
-msgid "1000 OK: %s Version: %s (%s)\n"
-msgstr ""
-
-#: src/dird/catreq.c:128 src/dird/catreq.c:355
-#, c-format
-msgid "1990 Invalid Catalog Request: %s"
-msgstr ""
-
-#: src/dird/catreq.c:129
-#, c-format
-msgid "Invalid Catalog request; DB not open: %s"
-msgstr ""
-
-#: src/dird/catreq.c:154
-msgid "1901 No Media.\n"
-msgstr ""
-
-#: src/dird/catreq.c:182
-msgid "not in Pool"
-msgstr ""
-
-#: src/dird/catreq.c:184
-msgid "not correct MediaType"
-msgstr ""
-
-#: src/dird/catreq.c:194
-msgid "is not Enabled"
-msgstr ""
-
-#: src/dird/catreq.c:203
-#, c-format
-msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
-msgstr ""
-
-#: src/dird/catreq.c:208
-#, c-format
-msgid "1997 Volume \"%s\" not in catalog.\n"
-msgstr ""
-
-#: src/dird/catreq.c:230
-#, c-format
-msgid "Unable to get Media record for Volume %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/catreq.c:232
-#, c-format
-msgid "1991 Catalog Request for vol=%s failed: %s"
-msgstr ""
-
-#: 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:262
-#, c-format
-msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
-msgstr ""
-
-#: src/dird/catreq.c:318
-#, c-format
-msgid "Catalog error updating Media record. %s"
-msgstr ""
-
-#: src/dird/catreq.c:320
-msgid "1993 Update Media error\n"
-msgstr ""
-
-#: src/dird/catreq.c:344
-#, c-format
-msgid "Catalog error creating JobMedia record. %s"
-msgstr ""
-
-#: src/dird/catreq.c:346
-msgid "1992 Create JobMedia error\n"
-msgstr ""
-
-#: 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"
-msgstr ""
-
-#: src/dird/catreq.c:544
-#, c-format
-msgid "%s not same File=%d as attributes=%d\n"
-msgstr ""
-
-#: src/dird/catreq.c:571
-#, c-format
-msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
-msgstr ""
-
-#: src/dird/catreq.c:586
-#, c-format
-msgid "attribute create error. %s"
-msgstr ""
-
-#: src/dird/catreq.c:592
-#, c-format
-msgid "Catalog error updating file digest. %s"
-msgstr ""
-
-#: src/dird/catreq.c:615
-#, c-format
-msgid "1994 Invalid Catalog Update: %s"
-msgstr ""
-
-#: src/dird/catreq.c:616
-#, c-format
-msgid "Invalid Catalog Update; DB not open: %s"
-msgstr ""
-
-#: 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:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
-msgid "Storage daemon"
-msgstr ""
-
-#: src/dird/msgchan.c:205
-#, c-format
-msgid "Storage daemon rejected Job command: %s\n"
-msgstr ""
-
-#: src/dird/msgchan.c:213
-#, c-format
-msgid "<stored: bad response to Job command: %s\n"
-msgstr ""
-
-#: 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"
-"     Storage daemon didn't accept Device \"%s\" because:\n"
-"     %s"
-msgstr ""
-
-#: src/dird/msgchan.c:322
-#, c-format
-msgid ""
-"\n"
-"     Storage daemon didn't accept Device \"%s\" command.\n"
-msgstr ""
-
-#: 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
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:183
-#: src/qt-console/tray-monitor/tray_conf.cpp:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:187
-#: src/qt-console/tray-monitor/tray_conf.cpp:187
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:191
-#: src/qt-console/tray-monitor/tray_conf.cpp:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:195
-#: src/qt-console/tray-monitor/tray_conf.cpp:195
-#: src/qt-console/bat_conf.cpp:157
-#, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:114
-#, c-format
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:270
-#: src/qt-console/tray-monitor/tray-monitor.cpp:216
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:301
-#: src/qt-console/tray-monitor/tray-monitor.cpp:248
-#, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:323
-#: src/qt-console/tray-monitor/tray-monitor.cpp:263
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:330
-msgid "Bacula daemon status monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:339
-msgid "Open status window..."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:345
-msgid "Exit"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:357
-msgid "Bacula tray monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:382
-msgid " (DIR)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:386
-msgid " (FD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:390
-msgid " (SD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:403
-msgid "Unknown status."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:477
-msgid "Refresh interval in seconds: "
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:485
-msgid "Refresh now"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:489
-msgid "About"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:493
-msgid "Close"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:513
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:516
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:519
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:560 src/tray-monitor/tray-monitor.c:571
-msgid "Bacula Tray Monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:562 src/tray-monitor/tray-monitor.c:573
-msgid "Written by Nicolas Boichat\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:563 src/tray-monitor/tray-monitor.c:574
-msgid "Version"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:656
-#: src/qt-console/tray-monitor/tray-monitor.cpp:331
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:730
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:742
-#, c-format
-msgid " (%d errors)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:745
-#, c-format
-msgid " (%d error)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:783
-msgid "No current job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:786
-msgid "No last job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:794
-msgid "Job status: Created"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:799
-msgid "Job status: Running"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:803
-msgid "Job status: Blocked"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:808
-msgid "Job status: Terminated"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:813
-msgid "Job status: Terminated in error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:819
-msgid "Job status: Error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:823
-msgid "Job status: Fatal error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:828
-msgid "Job status: Verify differences"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:833
-msgid "Job status: Canceled"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:838
-msgid "Job status: Waiting on File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:843
-msgid "Job status: Waiting on the Storage daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:848
-msgid "Job status: Waiting for new media"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:853
-msgid "Job status: Waiting for Mount"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:858
-msgid "Job status: Waiting for storage resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:863
-msgid "Job status: Waiting for job resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:868
-msgid "Job status: Waiting for Client resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:873
-msgid "Job status: Waiting for maximum jobs"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:878
-msgid "Job status: Waiting for start time"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:883
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:888
-#, c-format
-msgid "Unknown job status %c."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:889
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:896
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:936 src/console/console.c:1143
-#, c-format
-msgid "Connecting to Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:937
-#: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: 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:173
-msgid "Director daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:943
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:944
-#: src/qt-console/tray-monitor/tray-monitor.cpp:366
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:945
-#: src/qt-console/tray-monitor/tray-monitor.cpp:368
-msgid "File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:950
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:951
-#: src/qt-console/tray-monitor/tray-monitor.cpp:373
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:956 src/tray-monitor/tray-monitor.c:994
-#: src/qt-console/tray-monitor/tray-monitor.cpp:379
-#: src/qt-console/tray-monitor/tray-monitor.cpp:409
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:962
-msgid "Cannot connect to daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:963
-#: src/qt-console/tray-monitor/tray-monitor.cpp:384
-msgid "Cannot connect to daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:975
-#: src/qt-console/tray-monitor/tray-monitor.cpp:393
-#, c-format
-msgid "Authentication error : %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:982
-msgid "Opened connection with Director daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:983
-#: src/qt-console/tray-monitor/tray-monitor.cpp:400
-msgid "Opened connection with Director daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:986
-msgid "Opened connection with File daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:987
-#: src/qt-console/tray-monitor/tray-monitor.cpp:403
-msgid "Opened connection with File daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:990
-msgid "Opened connection with Storage daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:991
-#: src/qt-console/tray-monitor/tray-monitor.cpp:406
-msgid "Opened connection with Storage daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1028
-msgid "<< Error: BNET_SUB_PROMPT signal received. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1033 src/wx-console/console_thread.cpp:494
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1037
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1042
-msgid "<ERROR>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1046
-#: src/qt-console/tray-monitor/tray-monitor.cpp:457
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1052
-msgid "<STOP>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1056
-#: src/qt-console/tray-monitor/tray-monitor.cpp:466
-msgid "Error : Connection closed."
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:88
-#: src/qt-console/tray-monitor/authenticate.cpp:87
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see "
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:97 src/console/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:96
-#, c-format
-msgid "Bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:104 src/wx-console/authenticate.c:157
-#: src/console/authenticate.c:159
-#: src/qt-console/tray-monitor/authenticate.cpp:103
-msgid "Director rejected Hello command\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:138
-#: src/qt-console/tray-monitor/authenticate.cpp:137
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:145
-#: src/qt-console/tray-monitor/authenticate.cpp:144
-#, c-format
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:178
-#: src/qt-console/tray-monitor/authenticate.cpp:177
-#, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:184
-#: src/qt-console/tray-monitor/authenticate.cpp:183
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/reserve.c:87
-#, c-format
-msgid "Unable to initialize reservation lock. ERR=%s\n"
-msgstr ""
-
-#: src/stored/reserve.c:156
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
-msgstr ""
-
-#: src/stored/reserve.c:256
-msgid "3939 Could not get dcr\n"
-msgstr ""
-
-#: src/stored/reserve.c:364
-#, c-format
-msgid "Device reservation failed for JobId=%d: %s\n"
-msgstr ""
-
-#: src/stored/reserve.c:373
-#, c-format
-msgid "Failed command: %s\n"
-msgstr ""
-
-#: src/stored/reserve.c:632 src/stored/dircmd.c:633
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
-msgstr ""
-
-#: 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:652
-#, c-format
-msgid "3926 Could not get dcr for device: %s\n"
-msgstr ""
-
-#: 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:788
-#, c-format
-msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
-msgstr ""
-
-#: src/stored/reserve.c:840
-#, c-format
-msgid "3603 JobId=%u device %s is busy reading.\n"
-msgstr ""
-
-#: 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: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:914
-#, c-format
-msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: src/stored/reserve.c:926
-#, c-format
-msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: 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:987
-#, c-format
-msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
-msgstr ""
-
-#: 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:1064
-#, c-format
-msgid "Logic error!!!! JobId=%u Should not get here.\n"
-msgstr ""
-
-#: 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:1068
-msgid "Logic error!!!! Should not get here.\n"
-msgstr ""
-
-#: src/stored/reserve.c:1071
-#, c-format
-msgid "3911 JobId=%u failed reserve drive %s.\n"
-msgstr ""
-
-#: src/stored/bls.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bls [options] <device-name>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -j              list jobs\n"
-"       -k              list blocks\n"
-"    (no j or k option) list saved files\n"
-"       -L              dump label\n"
-"       -p              proceed inspite of errors\n"
-"       -v              be verbose\n"
-"       -V              specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bls.c:149 src/stored/bextract.c:146
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:164 src/stored/bextract.c:161
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:211
-msgid "No archive name specified\n"
-msgstr ""
-
-#: src/stored/bls.c:247
-#, c-format
-msgid ""
-"\n"
-"Warning, this Volume is a continuation of Volume %s\n"
-msgstr ""
-
-#: src/stored/bls.c:290
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:301
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/bls.c:303
-#, c-format
-msgid "End of file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:327
-#, c-format
-msgid ""
-"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm="
-"%s rlen=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:336
-#, c-format
-msgid "Block: %d size=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:386 src/stored/bextract.c:328 src/stored/bscan.c:688
-msgid "Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bls.c:388
-msgid "Attrib unpack error!\n"
-msgstr ""
-
-#: src/stored/bls.c:399
-#, c-format
-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:330
-msgid "Fresh Volume Label"
-msgstr ""
-
-#: 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:1028 src/stored/bcopy.c:337
-msgid "Begin Job Session"
-msgstr ""
-
-#: 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:346
-msgid "End of Medium"
-msgstr ""
-
-#: src/stored/bls.c:444
-msgid "End of Physical Medium"
-msgstr ""
-
-#: src/stored/bls.c:447
-msgid "Start of object"
-msgstr ""
-
-#: src/stored/bls.c:450
-msgid "End of object"
-msgstr ""
-
-#: 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: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: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 ""
-
-#: src/stored/dircmd.c:155
-#, c-format
-msgid "Connection request from %s failed.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:166
-#, c-format
-msgid "Invalid connection from %s. Len=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
-msgid "Unable to authenticate Director\n"
-msgstr ""
-
-#: src/stored/dircmd.c:299
-#, c-format
-msgid "3991 Bad setdebug command: %s\n"
-msgstr ""
-
-#: 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:358
-#, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
-msgstr ""
-
-#: 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:442
-#, c-format
-msgid "3903 Error scanning label command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:492
-#, c-format
-msgid "3910 Unable to open device \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:509
-#, c-format
-msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:516
-msgid "3921 Wrong volume mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:520
-msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:528
-#, c-format
-msgid "3912 Failed to label Volume: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:538
-#, c-format
-msgid "3914 Failed to label Volume (no media): ERR=%s\n"
-msgstr ""
-
-#: 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:578
-#, c-format
-msgid "3001 Mounted Volume: %s\n"
-msgstr ""
-
-#: 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:696
-msgid "Specified slot ignored. "
-msgstr ""
-
-#: 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:732 src/stored/dircmd.c:761
-#, c-format
-msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: 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:745
-#, c-format
-msgid "3001 Device \"%s\" is doing acquire.\n"
-msgstr ""
-
-#: 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:776
-#, c-format
-msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:788
-#, c-format
-msgid "3002 Device \"%s\" is mounted.\n"
-msgstr ""
-
-#: 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:793
-#, c-format
-msgid "3906 File device \"%s\" is always mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:802
-#, c-format
-msgid "3930 Device \"%s\" is being released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:806
-#, c-format
-msgid "3905 Unknown wait state %d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:816
-#, c-format
-msgid "3909 Error scanning mount command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
-#, c-format
-msgid "3002 Device \"%s\" unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:851
-#, c-format
-msgid "3901 Device \"%s\" is already unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:866
-#, c-format
-msgid "3001 Device \"%s\" unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:871
-#, c-format
-msgid "3902 Device \"%s\" is busy in acquire.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:909
-#, c-format
-msgid "3907 Error scanning unmount command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:937
-msgid "3916 Error scanning action_on_purge command\n"
-msgstr ""
-
-#: src/stored/dircmd.c:980
-#, c-format
-msgid "3921 Device \"%s\" already released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:987
-#, c-format
-msgid "3922 Device \"%s\" waiting for sysop.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:993
-#, c-format
-msgid "3922 Device \"%s\" waiting for mount.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:997
-#, c-format
-msgid "3923 Device \"%s\" is busy in acquire.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1001
-#, c-format
-msgid "3914 Device \"%s\" is being labeled.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1009
-#, c-format
-msgid "3022 Device \"%s\" released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1020
-#, c-format
-msgid "3927 Error scanning release command: %s\n"
-msgstr ""
-
-#: 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:1062
-msgid "Error parsing bootstrap file.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1124
-#, c-format
-msgid "3998 Device \"%s\" is not an autochanger.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1141
-#, c-format
-msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1183
-#, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1211
-#, c-format
-msgid "3001 Volume=%s Slot=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1243
-#, c-format
-msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
-msgstr ""
-
-#: 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:1251
-#, c-format
-msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1255
-#, c-format
-msgid "3934 Device \"%s\" is being initialized.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1259
-#, c-format
-msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1263
-#, c-format
-msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1268
-#, c-format
-msgid "3936 Device \"%s\" is busy reading.\n"
-msgstr ""
-
-#: 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:122 src/stored/parse_bsr.c:126
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:148
-#, c-format
-msgid "Cannot open bootstrap file %s: %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:279
-#, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:311
-#, c-format
-msgid "Device \"%s\" in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:484
-#, c-format
-msgid "REGEX '%s' compile error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:494
-msgid "JobType not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:502
-msgid "JobLevel not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:719
-#, c-format
-msgid "Slot %d in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:743
-#, c-format
-msgid "VolFile     : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:751
-#, c-format
-msgid "VolBlock    : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:759
-#, c-format
-msgid "VolAddr    : %llu-%llu\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:768
-#, c-format
-msgid "FileIndex   : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:770
-#, c-format
-msgid "FileIndex   : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:780
-#, c-format
-msgid "JobId       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:782
-#, c-format
-msgid "JobId       : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:792
-#, c-format
-msgid "SessId      : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:794
-#, c-format
-msgid "SessId      : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:803
-#, c-format
-msgid "VolumeName  : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:804
-#, c-format
-msgid "  MediaType : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:805
-#, c-format
-msgid "  Device    : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:806
-#, c-format
-msgid "  Slot      : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:815
-#, c-format
-msgid "Client      : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:823
-#, c-format
-msgid "Job          : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:831
-#, c-format
-msgid "SessTime    : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:842
-msgid "BSR is NULL\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:846
-#, c-format
-msgid "Next        : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:847
-#, c-format
-msgid "Root bsr    : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:859
-#, c-format
-msgid "count       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:860
-#, c-format
-msgid "found       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:863
-#, c-format
-msgid "done        : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:864
-#, c-format
-msgid "positioning : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:865
-#, c-format
-msgid "fast_reject : %d\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:96
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:106
-msgid "Insane! End of tape while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:132
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:155
-#, c-format
-msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:166
-msgid "No HDR1 label while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:172
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:184
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:199
-msgid "Unknown or bad ANSI/IBM label record.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:207
-msgid "Too many records in while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:307
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:333
-#, c-format
-msgid "Could not write ANSI VOL1 label. Wanted size=%d got=%d ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:371 src/stored/ansi_label.c:400
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:376 src/stored/ansi_label.c:407
-msgid "Could not write ANSI HDR1 label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:412
-#, c-format
-msgid "Error writing EOF to tape. ERR=%s"
-msgstr ""
-
-#: src/stored/ansi_label.c:417
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
-msgstr ""
-
-#: src/stored/append.c:68
-msgid "DCR is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:73
-msgid "DEVICE is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:83
-msgid "Unable to set network buffer size.\n"
-msgstr ""
-
-#: 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:110 src/stored/btape.c:2235
-#, c-format
-msgid "Write session label failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:122
-#, c-format
-msgid "Network send error to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:159
-#, c-format
-msgid "Error reading data header from FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:167
-#, c-format
-msgid "Malformed data header from FD: %s\n"
-msgstr ""
-
-#: src/stored/append.c:187
-#, c-format
-msgid "FI=%d from FD not positive or sequential=%d\n"
-msgstr ""
-
-#: src/stored/append.c:235
-#, c-format
-msgid "Network error reading from FD. ERR=%s\n"
-msgstr ""
-
-#: 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: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:279 src/stored/mac.c:128
-msgid "Set ok=FALSE after write_block_to_device.\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/vol_mgr.c:93
-#, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:93
-#, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:110 src/stored/label.c:202
-#, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
-msgstr ""
-
-#: src/stored/label.c:113 src/stored/label.c:190
-#, c-format
-msgid "Too many tries: %s"
-msgstr ""
-
-#: src/stored/label.c:130
-#, c-format
-msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
-msgstr ""
-
-#: src/stored/label.c:135
-msgid "Could not read Volume label from block.\n"
-msgstr ""
-
-#: src/stored/label.c:138
-#, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:143
-#, c-format
-msgid "Volume Header Id bad: %s\n"
-msgstr ""
-
-#: src/stored/label.c:175
-#, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
-msgstr ""
-
-#: src/stored/label.c:186
-#, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
-msgstr ""
-
-#: 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:277
-#, c-format
-msgid "Cannot write Volume label to block for device %s\n"
-msgstr ""
-
-#: 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:451
-#, c-format
-msgid "Rewind error on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:458
-#, c-format
-msgid "Truncate error on device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:487
-#, c-format
-msgid "Unable to write device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:518
-#, c-format
-msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
-msgstr ""
-
-#: src/stored/label.c:521
-#, c-format
-msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
-msgstr ""
-
-#: src/stored/label.c:721
-#, c-format
-msgid "Bad Volume session label = %d\n"
-msgstr ""
-
-#: src/stored/label.c:776
-#, c-format
-msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
-msgstr ""
-
-#: src/stored/label.c:903
-#, c-format
-msgid "Unknown %d"
-msgstr ""
-
-#: src/stored/label.c:907
-#, c-format
-msgid ""
-"\n"
-"Volume Label:\n"
-"Id                : %sVerNo             : %d\n"
-"VolName           : %s\n"
-"PrevVolName       : %s\n"
-"VolFile           : %d\n"
-"LabelType         : %s\n"
-"LabelSize         : %d\n"
-"PoolName          : %s\n"
-"MediaType         : %s\n"
-"PoolType          : %s\n"
-"HostName          : %s\n"
-msgstr ""
-
-#: src/stored/label.c:929
-#, c-format
-msgid "Date label written: %s\n"
-msgstr ""
-
-#: src/stored/label.c:935
-#, c-format
-msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:955
-#, c-format
-msgid ""
-"\n"
-"%s Record:\n"
-"JobId             : %d\n"
-"VerNum            : %d\n"
-"PoolName          : %s\n"
-"PoolType          : %s\n"
-"JobName           : %s\n"
-"ClientName        : %s\n"
-msgstr ""
-
-#: src/stored/label.c:968
-#, c-format
-msgid ""
-"Job (unique name) : %s\n"
-"FileSet           : %s\n"
-"JobType           : %c\n"
-"JobLevel          : %c\n"
-msgstr ""
-
-#: src/stored/label.c:977
-#, c-format
-msgid ""
-"JobFiles          : %s\n"
-"JobBytes          : %s\n"
-"StartBlock        : %s\n"
-"EndBlock          : %s\n"
-"StartFile         : %s\n"
-"EndFile           : %s\n"
-"JobErrors         : %s\n"
-"JobStatus         : %c\n"
-msgstr ""
-
-#: src/stored/label.c:998
-#, c-format
-msgid "Date written      : %s\n"
-msgstr ""
-
-#: src/stored/label.c:1003
-#, c-format
-msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:1022
-msgid "Fresh Volume"
-msgstr ""
-
-#: src/stored/label.c:1025
-msgid "Volume"
-msgstr ""
-
-#: src/stored/label.c:1034 src/stored/read_record.c:428
-msgid "End of Media"
-msgstr ""
-
-#: src/stored/label.c:1037
-msgid "End of Tape"
-msgstr ""
-
-#: 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:1062
-msgid "End of physical tape.\n"
-msgstr ""
-
-#: 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:1079
-#, c-format
-msgid "   Job=%s Date=%s Level=%c Type=%c\n"
-msgstr ""
-
-#: src/stored/label.c:1088
-#, c-format
-msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
-msgstr ""
-
-#: src/stored/status.c:99
-msgid "Used Volume status:\n"
-msgstr ""
-
-#: src/stored/status.c:117
-msgid ""
-"\n"
-"SD Resources:\n"
-msgstr ""
-
-#: src/stored/status.c:153
-msgid ""
-"\n"
-"Device status:\n"
-msgstr ""
-
-#: src/stored/status.c:157
-#, c-format
-msgid "Autochanger \"%s\" with devices:\n"
-msgstr ""
-
-#: src/stored/status.c:177
-#, c-format
-msgid ""
-"\n"
-"Device %s is %s:\n"
-"    Volume:      %s\n"
-"    Pool:        %s\n"
-"    Media type:  %s\n"
-msgstr ""
-
-#: 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 ""
-"\n"
-"Device %s open but no Bacula volume is currently mounted.\n"
-msgstr ""
-
-#: src/stored/status.c:199
-#, c-format
-msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:214
-#, c-format
-msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:220
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:227
-#, c-format
-msgid ""
-"\n"
-"Device %s is not open.\n"
-msgstr ""
-
-#: src/stored/status.c:231
-#, c-format
-msgid ""
-"\n"
-"Device \"%s\" is not open or does not exist.\n"
-msgstr ""
-
-#: src/stored/status.c:255
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
-msgstr ""
-
-#: src/stored/status.c:293
-msgid ""
-"No DEVICE structure.\n"
-"\n"
-msgstr ""
-
-#: src/stored/status.c:299
-msgid "    Device is BLOCKED. User unmounted.\n"
-msgstr ""
-
-#: src/stored/status.c:303
-msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
-msgstr ""
-
-#: src/stored/status.c:313
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting for mount of volume \"%s\",\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:322
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting to create a volume for:\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:333
-msgid "    Device is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/status.c:339
-msgid "    Device is being initialized.\n"
-msgstr ""
-
-#: src/stored/status.c:343
-msgid "    Device is blocked labeling a Volume.\n"
-msgstr ""
-
-#: src/stored/status.c:352
-#, c-format
-msgid "    Slot %d %s loaded in drive %d.\n"
-msgstr ""
-
-#: src/stored/status.c:356
-#, c-format
-msgid "    Drive %d is not loaded.\n"
-msgstr ""
-
-#: src/stored/status.c:371 src/stored/btape.c:688
-#, c-format
-msgid "Configured device capabilities:\n"
-msgstr ""
-
-#: src/stored/status.c:389
-msgid "Device state:\n"
-msgstr ""
-
-#: src/stored/status.c:405
-#, c-format
-msgid "  num_writers=%d reserves=%d block=%d\n"
-msgstr ""
-
-#: src/stored/status.c:409
-msgid "Attached Jobs: "
-msgstr ""
-
-#: src/stored/status.c:427 src/stored/btape.c:720
-#, c-format
-msgid "Device parameters:\n"
-msgstr ""
-
-#: src/stored/status.c:429
-#, c-format
-msgid "  Archive name: %s Device name: %s\n"
-msgstr ""
-
-#: src/stored/status.c:432
-#, c-format
-msgid "  File=%u block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:434
-#, c-format
-msgid "  Min block=%u Max block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:455
-#, c-format
-msgid "%s Job %s waiting for Client connection.\n"
-msgstr ""
-
-#: 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:484
-#, c-format
-msgid ""
-"Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
-"    pool=\"%s\" device=%s\n"
-msgstr ""
-
-#: src/stored/status.c:495
-#, c-format
-msgid "    spooling=%d despooling=%d despool_wait=%d\n"
-msgstr ""
-
-#: src/stored/status.c:511
-#, c-format
-msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
-msgstr ""
-
-#: src/stored/status.c:523
-#, c-format
-msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
-msgstr ""
-
-#: src/stored/status.c:529
-msgid "    FDSocket closed\n"
-msgstr ""
-
-#: src/stored/status.c:550
-msgid ""
-"\n"
-"Jobs waiting to reserve a drive:\n"
-msgstr ""
-
-#: src/stored/status.c:581
-msgid "===================================================================\n"
-msgstr ""
-
-#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
-msgid "Base"
-msgstr ""
-
-#: src/stored/status.c:680 src/filed/status.c:534
-msgid "Init Catalog"
-msgstr ""
-
-#: src/stored/status.c:683 src/filed/status.c:537
-msgid "Volume to Catalog"
-msgstr ""
-
-#: src/stored/status.c:686 src/filed/status.c:540
-msgid "Disk to Catalog"
-msgstr ""
-
-#: src/stored/status.c:689 src/filed/status.c:543
-msgid "Data"
-msgstr ""
-
-#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
-msgid "Unknown Job Level"
-msgstr ""
-
-#: src/stored/status.c:763
-#, c-format
-msgid "3900 No arg in .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:811
-#, c-format
-msgid "3900 Unknown arg in .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:826
-msgid "Bacula Storage: Idle"
-msgstr ""
-
-#: src/stored/status.c:837
-msgid "Bacula Storage: Running"
-msgstr ""
-
-#: src/stored/status.c:851
-msgid "Bacula Storage: Last Job Canceled"
-msgstr ""
-
-#: src/stored/status.c:855
-msgid "Bacula Storage: Last Job Failed"
-msgstr ""
-
-#: src/stored/status.c:859
-msgid "Bacula Storage: Last Job had Warnings"
-msgstr ""
-
-#: src/stored/read_record.c:89
-#, c-format
-msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:93
-msgid "End of all volumes.\n"
-msgstr ""
-
-#: src/stored/read_record.c:137
-msgid "part"
-msgstr ""
-
-#: src/stored/read_record.c:140
-msgid "file"
-msgstr ""
-
-#: src/stored/read_record.c:143
-#, c-format
-msgid "End of %s %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:158
-msgid "Did fsr in attemp to skip bad record.\n"
-msgstr ""
-
-#: src/stored/read_record.c:397
-#, c-format
-msgid "Forward spacing Volume \"%s\" to file:block %u:%u.\n"
-msgstr ""
-
-#: src/stored/read_record.c:421
-msgid "Begin Session"
-msgstr ""
-
-#: src/stored/read_record.c:425
-msgid "End Session"
-msgstr ""
-
-#: src/stored/read_record.c:431
-#, c-format
-msgid "Unknown code %d\n"
-msgstr ""
-
-#: src/stored/bextract.c:80
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
-"files>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -p              proceed inspite of I/O errors\n"
-"       -v              verbose\n"
-"       -V <volumes>    specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-
-#: 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"
-msgstr ""
-
-#: src/stored/bextract.c:218
-#, c-format
-msgid "%d Program Name and/or Program Data Stream records ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:222
-#, c-format
-msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:249
-#, c-format
-msgid "Cannot stat %s. It must exist. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:253
-#, c-format
-msgid "%s must be a directory.\n"
-msgstr ""
-
-#: src/stored/bextract.c:274
-#, c-format
-msgid "%u files restored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1480
-#, c-format
-msgid "Write error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:321 src/stored/bextract.c:587
-msgid "Logic error output file should be open but is not.\n"
-msgstr ""
-
-#: src/stored/bextract.c:335 src/filed/restore.c:569
-#, c-format
-msgid "%s stream not supported on this Client.\n"
-msgstr ""
-
-#: src/stored/bextract.c:345
-#, c-format
-msgid "%s was deleted.\n"
-msgstr ""
-
-#: src/stored/bextract.c:393
-#, c-format
-msgid "Seek error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1335
-#, c-format
-msgid "Seek to %s error on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:448
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
-msgstr ""
-
-#: 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:1376
-#, c-format
-msgid "Compressed header version error. version=0x%x\n"
-msgstr ""
-
-#: src/stored/bextract.c:522 src/filed/restore.c:1381
-#, c-format
-msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
-msgstr ""
-
-#: src/stored/bextract.c:544
-#, c-format
-msgid "LZO uncompression error. ERR=%d\n"
-msgstr ""
-
-#: src/stored/bextract.c:556 src/filed/restore.c:1414
-#, c-format
-msgid "Compression algorithm 0x%x found, but not supported!\n"
-msgstr ""
-
-#: src/stored/bextract.c:578
-msgid "Got Program Name or Data Stream. Ignored.\n"
-msgstr ""
-
-#: 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:74
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify a Storage configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: 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:217
-msgid "Write of last block failed.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:221
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
-msgstr ""
-
-#: 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:254
-msgid "Volume is prelabeled. This volume cannot be copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:257
-msgid "Volume label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:263
-msgid "Copy skipped. Record does not match BSR filter.\n"
-msgstr ""
-
-#: 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:294
-msgid "EOM label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:297
-msgid "EOT label not copied.\n"
-msgstr ""
-
-#: src/stored/dvd.c:111
-msgid "No FreeSpace command defined.\n"
-msgstr ""
-
-#: src/stored/dvd.c:145
-#, c-format
-msgid "Cannot run free space command. Results=%s ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:261
-#, c-format
-msgid "Error writing part %d to the DVD: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:263
-#, c-format
-msgid "Error while writing current part to the DVD: %s"
-msgstr ""
-
-#: src/stored/dvd.c:273
-#, c-format
-msgid "Part %d (%lld bytes) written to DVD.\n"
-msgstr ""
-
-#: src/stored/dvd.c:292
-#, c-format
-msgid "Remaining free space %s on %s\n"
-msgstr ""
-
-#: src/stored/dvd.c:358
-#, c-format
-msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
-msgstr ""
-
-#: 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:570
-#, c-format
-msgid "Unable to write last on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/butil.c:59
-msgid "Nohdr,"
-msgstr ""
-
-#: src/stored/butil.c:62
-msgid "partial,"
-msgstr ""
-
-#: src/stored/butil.c:65
-msgid "empty,"
-msgstr ""
-
-#: src/stored/butil.c:68
-msgid "Nomatch,"
-msgstr ""
-
-#: src/stored/butil.c:71
-msgid "cont,"
-msgstr ""
-
-#: src/stored/butil.c:148
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
-msgstr ""
-
-#: src/stored/butil.c:168
-#, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:175
-#, c-format
-msgid "Cannot init device %s\n"
-msgstr ""
-
-#: src/stored/butil.c:195
-#, c-format
-msgid "Cannot open %s\n"
-msgstr ""
-
-#: src/stored/butil.c:282
-#, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:287
-#, c-format
-msgid "Using device: \"%s\" for reading.\n"
-msgstr ""
-
-#: src/stored/butil.c:290
-#, c-format
-msgid "Using device: \"%s\" for writing.\n"
-msgstr ""
-
-#: src/stored/butil.c:306
-msgid "Unexpected End of Data\n"
-msgstr ""
-
-#: src/stored/butil.c:308
-msgid "Unexpected End of Tape\n"
-msgstr ""
-
-#: src/stored/butil.c:310
-msgid "Unexpected End of File\n"
-msgstr ""
-
-#: src/stored/butil.c:312
-msgid "Tape Door is Open\n"
-msgstr ""
-
-#: src/stored/butil.c:314
-msgid "Unexpected Tape is Off-line\n"
-msgstr ""
-
-#: src/stored/acquire.c:74
-#, c-format
-msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
-msgstr ""
-
-#: src/stored/acquire.c:83
-#, c-format
-msgid "No volumes specified for reading. Job %s canceled.\n"
-msgstr ""
-
-#: 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:118
-#, c-format
-msgid ""
-"Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
-"  device=%s\n"
-msgstr ""
-
-#: src/stored/acquire.c:162
-#, c-format
-msgid "Media Type change.  New read device %s chosen.\n"
-msgstr ""
-
-#: src/stored/acquire.c:174
-#, c-format
-msgid "No suitable device found to read Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/acquire.c:213
-#, c-format
-msgid "Job %s canceled.\n"
-msgstr ""
-
-#: src/stored/acquire.c:231
-#, c-format
-msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/acquire.c:321
-#, c-format
-msgid "Too many errors trying to mount device %s for reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:329
-#, c-format
-msgid "Ready to read from volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: src/stored/acquire.c:381
-#, c-format
-msgid "Want to append, but device %s is busy reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:414
-#, c-format
-msgid "Could not ready device %s for append.\n"
-msgstr ""
-
-#: 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:552
-#, c-format
-msgid "Alert: %s"
-msgstr ""
-
-#: src/stored/acquire.c:560
-#, c-format
-msgid "3997 Bad alert command: %s: ERR=%s.\n"
-msgstr ""
-
-#: 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/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:197
-#, c-format
-msgid "Error getting Volume info: %s"
-msgstr ""
-
-#: src/stored/askdir.c:376
-#, c-format
-msgid "Didn't get vol info vol=%s: ERR=%s"
-msgstr ""
-
-#: src/stored/askdir.c:432
-#, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
-msgstr ""
-
-#: src/stored/askdir.c:439
-#, c-format
-msgid "Error creating JobMedia record: %s\n"
-msgstr ""
-
-#: 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:533
-#, c-format
-msgid ""
-"Job %s is waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\" command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: 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:568
-msgid "pthread error in mount_next_volume.\n"
-msgstr ""
-
-#: src/stored/askdir.c:601
-msgid "Cannot request another volume: no volume name given.\n"
-msgstr ""
-
-#: 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:624
-#, c-format
-msgid ""
-"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:630
-#, c-format
-msgid ""
-"Please mount read Volume \"%s\" for:\n"
-"    Job:          %s\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: src/stored/askdir.c:668
-msgid "pthread error in mount_volume\n"
-msgstr ""
-
-#: src/stored/record.c:75
-#, c-format
-msgid "unknown: %d"
-msgstr ""
-
-#: src/stored/record.c:392
-msgid "Damaged buffer\n"
-msgstr ""
-
-#: src/stored/record.c:670
-#, c-format
-msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
-msgstr ""
-
-#: src/stored/read.c:65
-msgid "No Volume names found for restore.\n"
-msgstr ""
-
-#: src/stored/read.c:120
-#, c-format
-msgid ">filed: Error Hdr=%s\n"
-msgstr ""
-
-#: src/stored/read.c:121 src/stored/read.c:136
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
-msgstr ""
-
-#: src/stored/read.c:135
-#, c-format
-msgid "Error sending to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/autochanger.c:65
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:71
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: 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:141
-msgid "Cartridge change or \"update slots\" may be required.\n"
-msgstr ""
-
-#: 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:154
-#, c-format
-msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:185
-#, c-format
-msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:193
-#, c-format
-msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:280
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:287
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
-msgstr ""
-
-#: 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:316
-#, c-format
-msgid "Lock failure on autochanger. ERR=%s\n"
-msgstr ""
-
-#: src/stored/autochanger.c:330
-#, c-format
-msgid "Unlock failure on autochanger. ERR=%s\n"
-msgstr ""
-
-#: 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:387
-#, c-format
-msgid ""
-"3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
-"Results=%s\n"
-msgstr ""
-
-#: 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:541
-#, c-format
-msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:585
-#, c-format
-msgid "3993 Device %s not an autochanger device.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:612
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:615
-msgid "3996 Open bpipe failed.\n"
-msgstr ""
-
-#: 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
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/stored/stored.c:136 src/stored/btape.c:178
-#, c-format
-msgid "Tape block size (%d) not multiple of system size (%d)\n"
-msgstr ""
-
-#: src/stored/stored.c:140 src/stored/btape.c:182
-#, c-format
-msgid "Tape block size (%d) is not a power of 2\n"
-msgstr ""
-
-#: src/stored/stored.c:268
-msgid "Volume Session Time is ZERO!\n"
-msgstr ""
-
-#: src/stored/stored.c:277
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored.c:310 src/stored/bscan.c:262
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:316
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
-msgstr ""
-
-#: src/stored/stored.c:321
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:326
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:334
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:341 src/stored/bscan.c:270
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:363
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:369
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:375
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: src/stored/stored.c:568
-#, c-format
-msgid "Could not initialize %s\n"
-msgstr ""
-
-#: src/stored/stored.c:582
-#, c-format
-msgid "Could not open device %s\n"
-msgstr ""
-
-#: src/stored/stored.c:596
-#, c-format
-msgid "Could not mount device %s\n"
-msgstr ""
-
-#: src/stored/device.c:120
-#, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:139
-#, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:151
-#, c-format
-msgid "write_block_to_device Volume label failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:186
-#, c-format
-msgid "write_block_to_device overflow block failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:191
-#, c-format
-msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:327 src/stored/dev.c:512
-#, c-format
-msgid "Unable to open device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/device.c:329
-#, c-format
-msgid "Unable to open archive %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:166
-#, c-format
-msgid "Command error with FD, hanging up. %s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:169
-msgid "Command error with FD, hanging up.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:180
-#, c-format
-msgid "FD command not found: %s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:206
-msgid "Append data error.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:211
-msgid "Attempt to append on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:223 src/stored/fd_cmds.c:266
-msgid "Attempt to close non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:241
-msgid "Attempt to open already open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:295
-msgid "Attempt to read on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:313 src/stored/fd_cmds.c:322
-msgid "Attempt to open read on non-open session.\n"
-msgstr ""
-
-#: src/stored/mount.c:98
-#, c-format
-msgid "Too many errors trying to mount device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:106
-#, c-format
-msgid "Job %d canceled.\n"
-msgstr ""
-
-#: src/stored/mount.c:282
-#, c-format
-msgid "Volume \"%s\" previously written, moving to end of data.\n"
-msgstr ""
-
-#: 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:411 src/stored/mount.c:737
-#, c-format
-msgid "Volume \"%s\" not on device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:444
-#, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
-msgstr ""
-
-#: src/stored/mount.c:624
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: src/stored/mount.c:631 src/stored/mount.c:659
-msgid "Error updating Catalog\n"
-msgstr ""
-
-#: 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:647
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" size=%s\n"
-msgstr ""
-
-#: src/stored/mount.c:651
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The sizes do not match! Volume=%s Catalog=%s\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: 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:727
-#, c-format
-msgid "Labeled new Volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:732
-#, c-format
-msgid "Device %s not configured to autolabel Volumes.\n"
-msgstr ""
-
-#: src/stored/mount.c:751
-#, c-format
-msgid "Marking Volume \"%s\" in Error in Catalog.\n"
-msgstr ""
-
-#: 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:787
-msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
-msgstr ""
-
-#: 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:875 src/stored/btape.c:3122
-#, c-format
-msgid "Cannot open Dev=%s, Vol=%s\n"
-msgstr ""
-
-#: src/stored/mac.c:81
-msgid "Read and write devices not properly initialized.\n"
-msgstr ""
-
-#: src/stored/mac.c:87
-#, c-format
-msgid "No Volume names found for %s.\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:160 src/filed/pythonfd.c:142
-#, c-format
-msgid "Cannot delete attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:193 src/filed/pythonfd.c:160 src/filed/pythonfd.c:176
-#, c-format
-msgid "Cannot find attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:208
-msgid "Error in ParseTuple\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:224
-msgid "Parse tuple error in job_write\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:261
-#, c-format
-msgid "Error in Python method %s\n"
-msgstr ""
-
-#: src/stored/spool.c:83
-msgid "Spooling statistics:\n"
-msgstr ""
-
-#: src/stored/spool.c:86
-#, c-format
-msgid ""
-"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
-msgstr ""
-
-#: src/stored/spool.c:94
-#, c-format
-msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
-msgstr ""
-
-#: src/stored/spool.c:112
-msgid "Spooling data ...\n"
-msgstr ""
-
-#: src/stored/spool.c:138
-#, c-format
-msgid "Bad return from despool WroteVol=%d\n"
-msgstr ""
-
-#: src/stored/spool.c:171
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:225
-msgid "Despooling zero bytes. Your disk is probably FULL!\n"
-msgstr ""
-
-#: src/stored/spool.c:234
-#, c-format
-msgid "Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:239
-#, c-format
-msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:339
-#, c-format
-msgid ""
-"Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/spool.c:407
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:410
-#, c-format
-msgid "Spool read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:411
-#, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:418 src/stored/spool.c:419
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
-msgstr ""
-
-#: src/stored/spool.c:425 src/stored/spool.c:426
-#, c-format
-msgid "Spool data read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: 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:492
-msgid "Bad return from despool in write_block.\n"
-msgstr ""
-
-#: src/stored/spool.c:500
-msgid "Spooling data again ...\n"
-msgstr ""
-
-#: src/stored/spool.c:532
-#, c-format
-msgid "Error writing header to spool file. ERR=%s\n"
-msgstr ""
-
-#: 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:555 src/stored/spool.c:601
-msgid "Fatal despooling error."
-msgstr ""
-
-#: src/stored/spool.c:563
-msgid "Retrying after header spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:579
-#, c-format
-msgid "Error writing data to spool file. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:612
-msgid "Retrying after data spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:682
-msgid "Network error on BlastAttributes.\n"
-msgstr ""
-
-#: 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:718
-#, c-format
-msgid "Truncate on attributes file failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:742
-#, c-format
-msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:768
-#, c-format
-msgid "fopen attr spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/lock.c:405
-#, c-format
-msgid "pthread_cond_wait failure. ERR=%s\n"
-msgstr ""
-
-#: src/stored/lock.c:504
-msgid "unknown blocked code"
-msgstr ""
-
-#: src/stored/stored_conf.c:241
-#, c-format
-msgid "Expected a Device Type keyword, got: %s"
-msgstr ""
-
-#: src/stored/stored_conf.c:255
-#, c-format
-msgid ""
-"Maximum Block Size configured value %u is greater than allowed maximum: %u"
-msgstr ""
-
-#: src/stored/stored_conf.c:269
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:272
-#, c-format
-msgid "dump_resource type=%d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:388
-#, c-format
-msgid "Warning: unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:645
-#: src/stored/stored_conf.c:680 src/wx-console/console_conf.c:164
-#: src/wx-console/console_conf.c:239 src/wx-console/console_conf.c:284
-#: src/wx-console/console_conf.c:311 src/console/console_conf.c:157
-#: src/console/console_conf.c:233 src/console/console_conf.c:278
-#: src/console/console_conf.c:305 src/filed/filed_conf.c:333
-#: src/filed/filed_conf.c:398 src/filed/filed_conf.c:428
-#: src/qt-console/bat_conf.cpp:161 src/qt-console/bat_conf.cpp:239
-#: src/qt-console/bat_conf.cpp:287 src/qt-console/bat_conf.cpp:317
-#, c-format
-msgid "Unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:584
-#, c-format
-msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:590
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:624
-#, c-format
-msgid "Cannot find AutoChanger resource %s\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:640
-#, c-format
-msgid "Unable to init lock: ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:698
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
-msgstr ""
-
-#: src/stored/dev.c:127
-#, c-format
-msgid "Unable to stat device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:155
-msgid "DVD support is now deprecated\n"
-msgstr ""
-
-#: src/stored/dev.c:231
-#, c-format
-msgid "Unable to stat mount point %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:236
-msgid ""
-"Mount and unmount commands must defined for a device which requires mount.\n"
-msgstr ""
-
-#: src/stored/dev.c:247
-#, c-format
-msgid "Min block size > max on device %s\n"
-msgstr ""
-
-#: 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:256
-#, c-format
-msgid "Max block size %u not multiple of device %s block size=%d.\n"
-msgstr ""
-
-#: src/stored/dev.c:260
-#, c-format
-msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
-msgstr ""
-
-#: 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: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:551
-#, c-format
-msgid "Could not open file device %s. No Volume name given.\n"
-msgstr ""
-
-#: src/stored/dev.c:574
-#, c-format
-msgid "Could not open: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:639
-#, c-format
-msgid "No tape loaded or drive offline on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:649
-#, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "Bad call to eod. Device %s not open\n"
-msgstr ""
-
-#: src/stored/dev.c:775
-#, c-format
-msgid "ioctl MTEOM error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:865
-msgid "Bad device call. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:877
-#, c-format
-msgid "Seek error: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:914
-msgid " Bacula status:"
-msgstr ""
-
-#: 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:923
-msgid " Device status:"
-msgstr ""
-
-#: src/stored/dev.c:1022
-msgid "Bad call to load_dev. Device not open\n"
-msgstr ""
-
-#: 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:1077
-#, c-format
-msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1118
-msgid "Bad call to fsf. Device not open\n"
-msgstr ""
-
-#: 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:1160 src/stored/dev.c:1236
-#, c-format
-msgid "ioctl MTFSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:1285
-msgid "Bad call to bsf. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1291
-#, c-format
-msgid "Device %s cannot BSF because it is not a tape.\n"
-msgstr ""
-
-#: src/stored/dev.c:1308
-#, c-format
-msgid "ioctl MTBSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1327
-msgid "Bad call to fsr. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1337
-#, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1365
-#, c-format
-msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1383
-msgid "Bad call to bsr_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1393
-#, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1407
-#, c-format
-msgid "ioctl MTBSR error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1458
-msgid "Bad call to reposition. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1537
-msgid "Bad call to weof_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1547
-msgid "Attempt to WEOF on non-appendable Volume\n"
-msgstr ""
-
-#: src/stored/dev.c:1565
-#, c-format
-msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1664
-#, c-format
-msgid "unknown func code %d"
-msgstr ""
-
-#: src/stored/dev.c:1670
-#, c-format
-msgid "I/O function \"%s\" not supported on this device.\n"
-msgstr ""
-
-#: src/stored/dev.c:1844
-#, c-format
-msgid "Unable to truncate device %s. ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:1861
-#, c-format
-msgid "Unable to stat device %s. ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:1875
-#, c-format
-msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1887
-#, c-format
-msgid "Could not reopen: %s, ERR=%s\n"
-msgstr ""
-
-#: 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:2481
-#, c-format
-msgid "Unable to set eotmodel on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:118
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -m                update media info in database\n"
-"       -D <driver name>  specify the driver database name (default NULL)\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password>     specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -t <port>         specify database port (default 0)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:278
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:282
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:296 src/stored/bscan.c:372
-#, c-format
-msgid "First Volume Size = %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:302 src/tools/bvfs_test.c:215 src/tools/bbatch.c:201
-#: src/tools/bbatch.c:250 src/tools/ing_test.c:191
-msgid "Could not init Bacula database\n"
-msgstr ""
-
-#: src/stored/bscan.c:309 src/tools/bvfs_test.c:224 src/tools/bbatch.c:257
-#: src/tools/ing_test.c:200
-#, c-format
-msgid "Using Database: %s, User: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:343
-#, c-format
-msgid "Create JobMedia for Job %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:353
-#, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:420
-#, c-format
-msgid "done: %d%%\n"
-msgstr ""
-
-#: src/stored/bscan.c:444
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
-msgstr ""
-
-#: src/stored/bscan.c:456
-#, c-format
-msgid "Pool record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:460
-#, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:466
-#, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:470
-#, c-format
-msgid "Pool type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:480
-#, c-format
-msgid "Media record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:487
-#, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:494
-#, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:498
-#, c-format
-msgid "Media type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:508
-#, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:515
-#, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:526
-#, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:531
-#, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:571
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:577
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:583
-#, c-format
-msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/bscan.c:647
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:658
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:670
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:701
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:766
-#, c-format
-msgid "Got MD5 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:774
-#, c-format
-msgid "Got SHA1 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:782
-#, c-format
-msgid "Got SHA256 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Got SHA512 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:798 src/stored/bscan.c:805
-msgid "Got signed digest record\n"
-msgstr ""
-
-#: src/stored/bscan.c:811
-#, c-format
-msgid "Got Prog Names Stream: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:817
-msgid "Got Prog Data Stream record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:862
-#, c-format
-msgid "Unknown stream type!!! stream=%d len=%i\n"
-msgstr ""
-
-#: src/stored/bscan.c:930
-#, c-format
-msgid "Could not create File Attributes record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:936
-#, c-format
-msgid "Created File record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:981
-#, c-format
-msgid "Could not create media record. ERR=%s\n"
-msgstr ""
-
-#: 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:989
-#, c-format
-msgid "Created Media record for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1010
-#, c-format
-msgid "Updated Media record at end of Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1027
-#, c-format
-msgid "Could not create pool record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1031
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1050
-#, c-format
-msgid "Could not get Client record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1060
-#, c-format
-msgid "Created Client record for Client: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1077
-#, c-format
-msgid "Fileset \"%s\" already exists.\n"
-msgstr ""
-
-#: src/stored/bscan.c:1081
-#, c-format
-msgid "Could not create FileSet record \"%s\". ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1086
-#, c-format
-msgid "Created FileSet record \"%s\"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1133
-#, c-format
-msgid "Could not create JobId record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1139
-#, c-format
-msgid "Could not update job start record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1142
-#, c-format
-msgid "Created new JobId=%u record for original JobId=%u\n"
-msgstr ""
-
-#: src/stored/bscan.c:1195
-#, c-format
-msgid "Could not update JobId=%u record. ERR=%s\n"
-msgstr ""
-
-#: 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:1225
-#, c-format
-msgid "Job Termination code: %d"
-msgstr ""
-
-#: src/stored/bscan.c:1230
-#, c-format
-msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1288
-#, c-format
-msgid "Could not create JobMedia record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1292
-#, c-format
-msgid "Created JobMedia record JobId %d, MediaId %d\n"
-msgstr ""
-
-#: 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:1322
-#, c-format
-msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1327
-msgid "Updated MD5/SHA1 record\n"
-msgstr ""
-
-#: src/stored/job.c:234
-#, c-format
-msgid "FD connect failed: Job name not found: %s\n"
-msgstr ""
-
-#: src/stored/job.c:244
-#, c-format
-msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
-msgstr ""
-
-#: src/stored/job.c:261
-msgid "Unable to authenticate File daemon\n"
-msgstr ""
-
-#: src/stored/job.c:390
-msgid "In free_jcr(), but still attached to device!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:185
-#, c-format
-msgid ""
-"\n"
-"\n"
-"!!!! Warning large disk addressing disabled. boffset_t=%d should be 8 or "
-"more !!!!!\n"
-"\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:192
-#, c-format
-msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:201
-msgid "64 bit printf/scanf problem. i=%d x64=%"
-msgstr ""
-
-#: src/stored/btape.c:206
-#, c-format
-msgid "Tape block granularity is %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:279
-msgid "No archive name specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:283
-msgid "Improper number of arguments specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:297
-msgid "btape does not work with DVD storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:302
-msgid "btape only works with tape storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:383
-#, c-format
-msgid "Total Volume bytes=%sB. Total Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:409
-#, c-format
-msgid "Volume bytes=%sB. Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:477
-#, c-format
-msgid "open device %s: OK\n"
-msgstr ""
-
-#: src/stored/btape.c:500
-msgid "Enter Volume Name: "
-msgstr ""
-
-#: src/stored/btape.c:507
-#, c-format
-msgid "Device open failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:512
-#, c-format
-msgid "Wrote Volume label for volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/btape.c:526
-msgid "Volume has no label.\n"
-msgstr ""
-
-#: src/stored/btape.c:529
-msgid "Volume label read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:532
-#, c-format
-msgid "I/O error on device: ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:535
-msgid "Volume name error\n"
-msgstr ""
-
-#: src/stored/btape.c:538
-#, c-format
-msgid "Error creating label. ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:541
-msgid "Volume version error.\n"
-msgstr ""
-
-#: src/stored/btape.c:544
-msgid "Bad Volume label type.\n"
-msgstr ""
-
-#: src/stored/btape.c:547
-msgid "Unknown error.\n"
-msgstr ""
-
-#: src/stored/btape.c:565
-#, c-format
-msgid "Bad status from load. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:567
-#, c-format
-msgid "Loaded %s\n"
-msgstr ""
-
-#: 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:1571
-#, c-format
-msgid "Rewound %s\n"
-msgstr ""
-
-#: src/stored/btape.c:605 src/stored/btape.c:1575
-#, c-format
-msgid "Bad status from weof. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:609
-#, c-format
-msgid "Wrote 1 EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:612
-#, c-format
-msgid "Wrote %d EOFs to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:630
-msgid "Moved to end of medium.\n"
-msgstr ""
-
-#: src/stored/btape.c:657
-#, c-format
-msgid "Bad status from bsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:659
-#, c-format
-msgid "Backspaced %d file%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:676
-#, c-format
-msgid "Bad status from bsr. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:678
-#, c-format
-msgid "Backspaced %d record%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:706
-#, c-format
-msgid "Device status:\n"
-msgstr ""
-
-#: src/stored/btape.c:725
-#, c-format
-msgid "Status:\n"
-msgstr ""
-
-#: src/stored/btape.c:740
-msgid ""
-"Test writing larger and larger records.\n"
-"This is a torture test for records.\n"
-"I am going to write\n"
-"larger and larger records. It will stop when the record size\n"
-"plus the header exceeds the block size (by default about 64K)\n"
-msgstr ""
-
-#: src/stored/btape.c:746
-msgid "Do you want to continue? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:748 src/stored/btape.c:2200
-msgid "Command aborted.\n"
-msgstr ""
-
-#: src/stored/btape.c:765
-#, c-format
-msgid "Block %d i=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:792
-msgid "Skipping read backwards test because BSR turned off.\n"
-msgstr ""
-
-#: src/stored/btape.c:796
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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: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:816
-#, c-format
-msgid "Wrote first record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:827
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:838
-#, c-format
-msgid "Wrote third record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:845 src/stored/btape.c:850
-#, c-format
-msgid "Backspace file failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:854
-msgid "Backspaced over EOF OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:856
-#, c-format
-msgid "Backspace record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:859
-msgid "Backspace record OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:862 src/stored/btape.c:868
-#, c-format
-msgid "Read block failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:873
-msgid "Bad data in record. Test failed!\n"
-msgstr ""
-
-#: src/stored/btape.c:877
-msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
-msgstr ""
-
-#: src/stored/btape.c:878
-msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
-msgstr ""
-
-#: 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"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
-msgstr ""
-
-#: 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:928 src/stored/btape.c:2879
-#, c-format
-msgid "Write failed at block %u. stat=%d ERR=%s\n"
-msgstr ""
-
-#: 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:971
-msgid ""
-"\n"
-"Error writing record to block.\n"
-msgstr ""
-
-#: src/stored/btape.c:975
-msgid ""
-"\n"
-"Error writing block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1030
-msgid "The file_size is too big, stop this test with Ctrl-c.\n"
-msgstr ""
-
-#: src/stored/btape.c:1058
-msgid "Test with zero data, should give the maximum throughput.\n"
-msgstr ""
-
-#: 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:1085
-msgid "Test with zero data and bacula block structure.\n"
-msgstr ""
-
-#: src/stored/btape.c:1125
-#, c-format
-msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write %d records and an EOF\n"
-"then write %d records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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:1215 src/stored/btape.c:1295
-msgid "Rewind OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1228 src/stored/btape.c:1347
-msgid "Got EOF on tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:1233
-#, c-format
-msgid "Read block %d failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1239
-#, c-format
-msgid "Read record failed. Block %d! ERR=%s\n"
-msgstr ""
-
-#: 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:1252
-#, c-format
-msgid "%d blocks re-read correctly.\n"
-msgstr ""
-
-#: 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:1283
-msgid "Block position test\n"
-msgstr ""
-
-#: src/stored/btape.c:1338
-#, c-format
-msgid "Reposition to file:block %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:1340
-msgid "Reposition error.\n"
-msgstr ""
-
-#: 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:1355
-msgid ""
-"This may be because the tape drive block size is not\n"
-" set to variable blocking as normally used by Bacula.\n"
-" Please see the Tape Testing chapter in the manual and \n"
-" look for using mt with defblksize and setoptions\n"
-"If your tape drive block size is correct, then perhaps\n"
-" your SCSI driver is *really* stupid and does not\n"
-" correctly report the file:block after a FSF. In this\n"
-" case try setting:\n"
-"    Fast Forward Space File = no\n"
-" in your Device resource.\n"
-msgstr ""
-
-#: src/stored/btape.c:1371
-#, c-format
-msgid "Read record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1382
-#, c-format
-msgid "Block %d re-read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:1403
-msgid ""
-"\n"
-"\n"
-"=== Append files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1427
-msgid "Now moving to end of medium.\n"
-msgstr ""
-
-#: 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: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: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:1436
-msgid ""
-"\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1443
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1444
-msgid "Doing Bacula scan of blocks:\n"
-msgstr ""
-
-#: src/stored/btape.c:1446
-msgid "End scanning the tape.\n"
-msgstr ""
-
-#: 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:1472
-msgid ""
-"\n"
-"Autochanger enabled, but no name or no command device specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:1476
-msgid ""
-"\n"
-"Ah, I see you have an autochanger configured.\n"
-"To test the autochanger you must have a blank tape\n"
-" that I can write on in Slot 1.\n"
-msgstr ""
-
-#: src/stored/btape.c:1479
-msgid ""
-"\n"
-"Do you wish to continue with the Autochanger test? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:1486
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1495
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1504
-#, c-format
-msgid "3991 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1505
-#, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1509
-#, c-format
-msgid "Slot %d loaded. I am going to unload it.\n"
-msgstr ""
-
-#: src/stored/btape.c:1511
-msgid "Nothing loaded in the drive. OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1518
-#, c-format
-msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-#, c-format
-msgid "unload status=%s %d\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-msgid "Bad"
-msgstr ""
-
-#: src/stored/btape.c:1526
-#, c-format
-msgid "3992 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1527
-#, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1537
-#, c-format
-msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1545
-#, c-format
-msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1549
-#, c-format
-msgid "3993 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1550
-#, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1565
-msgid ""
-"\n"
-"The test failed, probably because you need to put\n"
-"a longer sleep time in the mtx-script in the load) case.\n"
-"Adding a 30 second sleep and trying again ...\n"
-msgstr ""
-
-#: src/stored/btape.c:1578
-#, c-format
-msgid "Wrote EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1582
-#, c-format
-msgid ""
-"\n"
-"The test worked this time. Please add:\n"
-"\n"
-"   sleep %d\n"
-"\n"
-"to your mtx-changer script in the load) case.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1587
-msgid ""
-"\n"
-"The test autochanger worked!!\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1598
-msgid "You must correct this error or the Autochanger will not work.\n"
-msgstr ""
-
-#: src/stored/btape.c:1616
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1641
-msgid "Now forward spacing 1 file.\n"
-msgstr ""
-
-#: 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:1646
-#, c-format
-msgid "We should be in file 1. I am at file %d. %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1653
-msgid "Now forward spacing 2 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1666
-msgid "Now forward spacing 4 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1678
-msgid ""
-"The test worked this time. Please add:\n"
-"\n"
-"   Fast Forward Space File = no\n"
-"\n"
-"to your Device resource for this drive.\n"
-msgstr ""
-
-#: src/stored/btape.c:1684
-msgid "Now forward spacing 1 more file.\n"
-msgstr ""
-
-#: 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:1693
-msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1697
-msgid ""
-"\n"
-"The forward space file test failed.\n"
-msgstr ""
-
-#: 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:1705
-msgid ""
-"You must correct this error or Bacula will not work.\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1739
-msgid ""
-"\n"
-"Append test failed. Attempting again.\n"
-"Setting \"Hardware End of Medium = no\n"
-"    and \"Fast Forward Space File = no\n"
-"and retrying append test.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1747
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"\n"
-"    Fast Forward Space File = No\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1754
-msgid ""
-"\n"
-"\n"
-"That appears *NOT* to have corrected the problem.\n"
-msgstr ""
-
-#: src/stored/btape.c:1759
-msgid ""
-"\n"
-"\n"
-"It looks like the append failed. Attempting again.\n"
-"Setting \"BSF at EOM = yes\" and retrying append test.\n"
-msgstr ""
-
-#: src/stored/btape.c:1764
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"    Fast Forward Space File = No\n"
-"    BSF at EOM = yes\n"
-"\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1775
-msgid ""
-"\n"
-"Append test failed.\n"
-"\n"
-"\n"
-"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
-"Unable to correct the problem. You MUST fix this\n"
-"problem before Bacula can use your tape drive correctly\n"
-"\n"
-"Perhaps running Bacula in fixed block mode will work.\n"
-"Do so by setting:\n"
-"\n"
-"Minimum Block Size = nnn\n"
-"Maximum Block Size = nnn\n"
-"\n"
-"in your Storage daemon's Device definition.\n"
-"nnn must match your tape driver's block size, which\n"
-"can be determined by reading your tape manufacturers\n"
-"information, and the information on your kernel dirver.\n"
-"Fixed block sizes, however, are not normally an ideal solution.\n"
-"\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1797
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1840
-#, c-format
-msgid "Bad status from fsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1844
-msgid "Forward spaced 1 file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1847
-#, c-format
-msgid "Forward spaced %d files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1866
-msgid "Forward spaced 1 record.\n"
-msgstr ""
-
-#: src/stored/btape.c:1869
-#, c-format
-msgid "Forward spaced %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:1914
-#, c-format
-msgid "Wrote one record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1916
-msgid "Wrote block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1930
-msgid "Enter length to read: "
-msgstr ""
-
-#: src/stored/btape.c:1935
-msgid "Bad length entered, using default of 1024 bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1944
-#, c-format
-msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1967 src/stored/btape.c:2016
-#, c-format
-msgid "End of tape\n"
-msgstr ""
-
-#: src/stored/btape.c:1972
-#, c-format
-msgid "Starting scan at file %u\n"
-msgstr ""
-
-#: src/stored/btape.c:1979
-#, c-format
-msgid "Bad status from read %d. ERR=%s\n"
-msgstr ""
-
-#: 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: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:2007 src/stored/btape.c:2079
-#, c-format
-msgid "End of File mark.\n"
-msgstr ""
-
-#: 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:2092
-#, c-format
-msgid "Short block read.\n"
-msgstr ""
-
-#: src/stored/btape.c:2095
-#, c-format
-msgid "Error reading block. ERR=%s\n"
-msgstr ""
-
-#: 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:2141
-#, c-format
-msgid "Device status: %u. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2173
-#, c-format
-msgid ""
-"\n"
-"This command simulates Bacula writing to a tape.\n"
-"It requires either one or two blank tapes, which it\n"
-"will label and write.\n"
-"\n"
-"If you have an autochanger configured, it will use\n"
-"the tapes that are in slots 1 and 2, otherwise, you will\n"
-"be prompted to insert the tapes when necessary.\n"
-"\n"
-"It will print a status approximately\n"
-"every 322 MB, and write an EOF every %s.  If you have\n"
-"selected the simple test option, after writing the first tape\n"
-"it will rewind it and re-read the last block written.\n"
-"\n"
-"If you have selected the multiple tape test, when the first tape\n"
-"fills, it will ask for a second, and after writing a few more \n"
-"blocks, it will stop.  Then it will begin re-reading the\n"
-"two tapes.\n"
-"\n"
-"This may take a long time -- hours! ...\n"
-"\n"
-msgstr ""
-
-#: 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:2194
-msgid "Simple test (single tape) selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2197
-msgid "Multiple tape test selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2239
-msgid "Wrote Start of Session label.\n"
-msgstr ""
-
-#: src/stored/btape.c:2258
-#, c-format
-msgid "%s Begin writing Bacula records to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2260
-#, c-format
-msgid "%s Begin writing Bacula records to first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2286
-msgid "Flush block failed.\n"
-msgstr ""
-
-#: 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:2311
-#, c-format
-msgid "%s Flush block, write EOF\n"
-msgstr ""
-
-#: src/stored/btape.c:2320
-msgid "Wrote 1000 blocks on second tape. Done.\n"
-msgstr ""
-
-#: src/stored/btape.c:2325
-msgid "Not OK\n"
-msgstr ""
-
-#: src/stored/btape.c:2349
-msgid "Job canceled.\n"
-msgstr ""
-
-#: src/stored/btape.c:2360
-msgid "Set ok=false after write_block_to_device.\n"
-msgstr ""
-
-#: src/stored/btape.c:2364
-msgid "Wrote End of Session label.\n"
-msgstr ""
-
-#: 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:2392
-#, c-format
-msgid "Could not create state file: %s ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2403
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2406
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2412
-msgid "do_unfill failed.\n"
-msgstr ""
-
-#: src/stored/btape.c:2417
-#, c-format
-msgid "%s: Error during test.\n"
-msgstr ""
-
-#: 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:2459
-#, c-format
-msgid ""
-"\n"
-"Could not find the state file: %s ERR=%s\n"
-"You must redo the fill command.\n"
-msgstr ""
-
-#: src/stored/btape.c:2525
-msgid "Mount first tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2541
-msgid "Rewinding.\n"
-msgstr ""
-
-#: src/stored/btape.c:2546
-#, c-format
-msgid "Reading the first 10000 records from %u:%u.\n"
-msgstr ""
-
-#: 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:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
-#, c-format
-msgid "Reposition error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2556
-#, c-format
-msgid "Reading block %u.\n"
-msgstr ""
-
-#: 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:2563
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2566
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2590
-msgid "Mount second tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2603
-#, c-format
-msgid "Reposition from %u:%u to 0:1\n"
-msgstr ""
-
-#: src/stored/btape.c:2608 src/stored/btape.c:2624
-#, c-format
-msgid "Reading block %d.\n"
-msgstr ""
-
-#: src/stored/btape.c:2614
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2630
-msgid ""
-"\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2647
-#, c-format
-msgid "10000 records read now at %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
-msgid "Last block written"
-msgstr ""
-
-#: src/stored/btape.c:2675 src/stored/btape.c:2685
-msgid "Block read back"
-msgstr ""
-
-#: src/stored/btape.c:2676
-#, c-format
-msgid ""
-"\n"
-"\n"
-"The blocks differ at byte %u\n"
-msgstr ""
-
-#: src/stored/btape.c:2677
-msgid ""
-"\n"
-"\n"
-"!!!! The last block written and the block\n"
-"that was read back differ. The test FAILED !!!!\n"
-"This must be corrected before you use Bacula\n"
-"to write multi-tape Volumes.!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:2713
-#, c-format
-msgid "Last block at: %u:%u this_dev_block_num=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2727
-#, c-format
-msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:2731
-msgid "Block not written"
-msgstr ""
-
-#: 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:2797
-msgid "Test writing blocks of 64512 bytes to tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:2799
-msgid "How many blocks do you want to write? (1000): "
-msgstr ""
-
-#: src/stored/btape.c:2816
-#, c-format
-msgid "Begin writing %d Bacula blocks to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2859
-#, c-format
-msgid "Begin writing raw blocks of %u bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:2890
-msgid "test autochanger"
-msgstr ""
-
-#: src/stored/btape.c:2891
-msgid "backspace file"
-msgstr ""
-
-#: src/stored/btape.c:2892
-msgid "backspace record"
-msgstr ""
-
-#: src/stored/btape.c:2893
-msgid "list device capabilities"
-msgstr ""
-
-#: src/stored/btape.c:2894
-msgid "clear tape errors"
-msgstr ""
-
-#: src/stored/btape.c:2895
-msgid "go to end of Bacula data for append"
-msgstr ""
-
-#: src/stored/btape.c:2896
-msgid "go to the physical end of medium"
-msgstr ""
-
-#: src/stored/btape.c:2897
-msgid "fill tape, write onto second volume"
-msgstr ""
-
-#: src/stored/btape.c:2898
-msgid "read filled tape"
-msgstr ""
-
-#: src/stored/btape.c:2899
-msgid "forward space a file"
-msgstr ""
-
-#: src/stored/btape.c:2900
-msgid "forward space a record"
-msgstr ""
-
-#: src/stored/btape.c:2901
-msgid "print this command"
-msgstr ""
-
-#: src/stored/btape.c:2902
-msgid "write a Bacula label to the tape"
-msgstr ""
-
-#: src/stored/btape.c:2903
-msgid "load a tape"
-msgstr ""
-
-#: src/stored/btape.c:2904
-msgid "quit btape"
-msgstr ""
-
-#: src/stored/btape.c:2905
-msgid "use write() to fill tape"
-msgstr ""
-
-#: src/stored/btape.c:2906
-msgid "read and print the Bacula tape label"
-msgstr ""
-
-#: src/stored/btape.c:2907
-msgid "test record handling functions"
-msgstr ""
-
-#: src/stored/btape.c:2908
-msgid "rewind the tape"
-msgstr ""
-
-#: src/stored/btape.c:2909
-msgid "read() tape block by block to EOT and report"
-msgstr ""
-
-#: src/stored/btape.c:2910
-msgid "Bacula read block by block to EOT and report"
-msgstr ""
-
-#: 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:2912
-msgid "print tape status"
-msgstr ""
-
-#: src/stored/btape.c:2913
-msgid "General test Bacula tape functions"
-msgstr ""
-
-#: src/stored/btape.c:2914
-msgid "write an EOF on the tape"
-msgstr ""
-
-#: src/stored/btape.c:2915
-msgid "write a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2916
-msgid "read a single record"
-msgstr ""
-
-#: src/stored/btape.c:2917
-msgid "read a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2918
-msgid "quick fill command"
-msgstr ""
-
-#: src/stored/btape.c:2939
-#, c-format
-msgid "\"%s\" is an invalid command\n"
-msgstr ""
-
-#: src/stored/btape.c:2948
-#, c-format
-msgid "Interactive commands:\n"
-msgstr ""
-
-#: src/stored/btape.c:2959
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap 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"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:3047
-#, c-format
-msgid "Mount second Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3075
-#, c-format
-msgid "Mount blank Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3095
-#, c-format
-msgid "End of Volume \"%s\" %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:3109
-#, c-format
-msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:61
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
-msgstr ""
-
-#: src/stored/authenticate.c:67 src/filed/authenticate.c:76
-#, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:78 src/filed/authenticate.c:88
-#, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:92
-#, c-format
-msgid ""
-"Connection from unknown Director %s at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:129
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:137 src/stored/authenticate.c:248
-#: src/filed/authenticate.c:151 src/filed/authenticate.c:270
-msgid ""
-"Authorization problem: Remote server did not advertize required TLS "
-"support.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:155
-#, c-format
-msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
-msgstr ""
-
-#: src/stored/authenticate.c:191
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:239 src/stored/authenticate.c:279
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:266
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
-msgstr ""
-
-#: src/stored/wait.c:133
-#, c-format
-msgid "pthread timedwait error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/wait.c:239
-#, c-format
-msgid "JobId=%s, Job %s waiting to reserve a device.\n"
-msgstr ""
-
-#: 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:115
-#, c-format
-msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
-msgstr ""
-
-#: src/stored/block.c:171
-#, c-format
-msgid "%d block read errors not printed.\n"
-msgstr ""
-
-#: 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: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: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:452
-#, c-format
-msgid "Cannot write block. Device at EOM. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:458
-#, c-format
-msgid "Attempt to write on read-only Volume. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:464
-#, c-format
-msgid "Attempt to write on closed device=%s\n"
-msgstr ""
-
-#: src/stored/block.c:513
-#, c-format
-msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
-msgstr ""
-
-#: src/stored/block.c:528
-#, c-format
-msgid "Unable to write EOF. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:554 src/stored/block.c:588
-msgid "Write block header zeroed.\n"
-msgstr ""
-
-#: 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: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:695 src/stored/block.c:701
-#, c-format
-msgid "Backspace file at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:708
-#, c-format
-msgid "Backspace record at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:725
-#, c-format
-msgid "Re-read last block at EOT failed. ERR=%s"
-msgstr ""
-
-#: 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: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:744
-msgid "Re-read of last block succeeded.\n"
-msgstr ""
-
-#: 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:791
-#, c-format
-msgid ""
-"Error writing final part to DVD. This Volume may not be readable.\n"
-"%s"
-msgstr ""
-
-#: 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:904
-#, c-format
-msgid "Unable to open device next part %s: ERR=%s\n"
-msgstr ""
-
-#: 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: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: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:1017
-#, c-format
-msgid "Unable to open device part=%d %s: ERR=%s\n"
-msgstr ""
-
-#: 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:1057
-#, c-format
-msgid "Read zero bytes at %u:%u on device %s.\n"
-msgstr ""
-
-#: 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:1107
-#, c-format
-msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
-msgstr ""
-
-#: src/stored/block.c:1127
-#, c-format
-msgid "Setting block buffer size to %u bytes.\n"
-msgstr ""
-
-#: 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:117
-#, c-format
-msgid "Failed to open Plugin directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:134
-#, c-format
-msgid "Failed to find any plugins in %s\n"
-msgstr ""
-
-#: src/lib/plugins.c:168
-#, c-format
-msgid "dlopen plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:179
-#, c-format
-msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:188
-#, c-format
-msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:116
-msgid "Could not initialize Python\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:121
-#, c-format
-msgid "Could not Run Python string %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:133
-msgid "Could not initialize Python Job type.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:138
-#, c-format
-msgid "Could not import Python script %s/%s. Python disabled.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:240
-msgid "Could not create Python Job Object.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:253 src/lib/pythonlib.c:277
-#, c-format
-msgid "Python function \"%s\" not found.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:292
-#, c-format
-msgid "Unknown Python daemon event %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:317
-#, c-format
-msgid "Unable to initialize the Python lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:96
-#, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:193
-msgid "BUG! register_watchdog called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:196
-#, c-format
-msgid "BUG! Watchdog %p has NULL callback\n"
-msgstr ""
-
-#: src/lib/watchdog.c:199
-#, c-format
-msgid "BUG! Watchdog %p has zero interval\n"
-msgstr ""
-
-#: src/lib/watchdog.c:219
-msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:339
-#, c-format
-msgid "rwl_writelock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:354
-#, c-format
-msgid "rwl_writeunlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/attr.c:81
-#, c-format
-msgid "Error scanning attributes: %s\n"
-msgstr ""
-
-#: src/lib/smartall.c:145 src/lib/smartall.c:256 src/lib/smartall.c:271
-msgid "Out of memory\n"
-msgstr ""
-
-#: src/lib/smartall.c:150
-msgid "Too much memory used."
-msgstr ""
-
-#: src/lib/smartall.c:180
-#, c-format
-msgid "Attempt to free NULL called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:194
-#, c-format
-msgid "double free from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:202
-#, c-format
-msgid "qp->qnext->qprev != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:206
-#, c-format
-msgid "qp->qprev->qnext != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:215
-#, c-format
-msgid "Overrun buffer: len=%d addr=%p allocated: %s:%d called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:293
-#, c-format
-msgid "sm_realloc size: %d\n"
-msgstr ""
-
-#: src/lib/smartall.c:331
-#, c-format
-msgid "sm_realloc %d at %p from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:391
-#, c-format
-msgid ""
-"\n"
-"Orphaned buffers exist.  Dump terminated following\n"
-"  discovery of bad links in chain of orphaned buffers.\n"
-"  Buffer address with bad links: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:436
-#, c-format
-msgid "Damaged buffer found. Called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:469
-#, c-format
-msgid ""
-"\n"
-"Damaged buffers found at %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:472
-msgid "  discovery of bad prev link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:475
-msgid "  discovery of bad next link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:478
-msgid "  discovery of data overrun.\n"
-msgstr ""
-
-#: src/lib/smartall.c:481
-msgid "  NULL pointer.\n"
-msgstr ""
-
-#: src/lib/smartall.c:487
-#, c-format
-msgid "  Buffer address: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:494
-#, c-format
-msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
-msgstr ""
-
-#: 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: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: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: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: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:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
-msgid "Try write lock"
-msgstr ""
-
-#: 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:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
-msgid "Create thread"
-msgstr ""
-
-#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
-msgid "Join thread"
-msgstr ""
-
-#: 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:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
-#, c-format
-msgid "data %02d: value %d, %d updates\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:97
-msgid "Status OK\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:101
-#, c-format
-msgid "bget_msg: unknown signal %d\n"
-msgstr ""
-
-#: 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:137
-#, c-format
-msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:207
-#, c-format
-msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:260
-#, c-format
-msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:273
-#, c-format
-msgid "Source address bind error. proto=%d. ERR=%s\n"
-msgstr ""
-
-#: 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:292
-#, c-format
-msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
-msgstr ""
-
-#: src/lib/bsock.c:339
-#, c-format
-msgid "Could not init bsock mutex. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:374
-#, c-format
-msgid "Socket has errors=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:381
-#, c-format
-msgid "Socket is terminated=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: 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:427
-#, c-format
-msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
-msgstr ""
-
-#: 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:522 src/lib/bsock.c:583
-#, c-format
-msgid "Read expected %d got %d from %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:542
-#, c-format
-msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
-msgstr ""
-
-#: src/lib/bsock.c:572
-#, c-format
-msgid "Read error from %s:%s:%d: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:663
-msgid "fread attr spool I/O error.\n"
-msgstr ""
-
-#: src/lib/bsock.c:724
-msgid "Could not malloc BSOCK data buffer\n"
-msgstr ""
-
-#: src/lib/bsock.c:742 src/lib/bsock.c:761
-#, c-format
-msgid "sockopt error: %s\n"
-msgstr ""
-
-#: 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:787 src/lib/bsock.c:821
-#, c-format
-msgid "fcntl F_GETFL error. ERR=%s\n"
-msgstr ""
-
-#: 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:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
-#, c-format
-msgid "Director authorization problem at \"%s:%d\"\n"
-msgstr ""
-
-#: 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: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: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: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: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:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
-#, c-format
-msgid ""
-"Authorization problem with Director at \"%s:%d\"\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-
-#: 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:377
-#, c-format
-msgid "Could not get con mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:482
-msgid "Bacula Message"
-msgstr ""
-
-#: src/lib/message.c:486
-#, c-format
-msgid "open mail pipe %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:577
-msgid "open mail pipe failed.\n"
-msgstr ""
-
-#: src/lib/message.c:590
-#, c-format
-msgid "close error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:601
-#, c-format
-msgid "Mail prog: %s"
-msgstr ""
-
-#: src/lib/message.c:610
-#, c-format
-msgid ""
-"Mail program terminated in error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:713
-#, c-format
-msgid "fopen %s failed: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:911
-#, c-format
-msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:1230
-#, c-format
-msgid "%s: ABORTING due to ERROR in %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1234
-#, c-format
-msgid "%s: ERROR TERMINATION at %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1239
-#, c-format
-msgid "%s: Fatal Error because: "
-msgstr ""
-
-#: src/lib/message.c:1241
-#, c-format
-msgid "%s: Fatal Error at %s:%d because:\n"
-msgstr ""
-
-#: src/lib/message.c:1245
-#, c-format
-msgid "%s: ERROR: "
-msgstr ""
-
-#: src/lib/message.c:1247
-#, c-format
-msgid "%s: ERROR in %s:%d "
-msgstr ""
-
-#: src/lib/message.c:1250
-#, c-format
-msgid "%s: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1253
-#, c-format
-msgid "%s: Security violation: "
-msgstr ""
-
-#: src/lib/message.c:1341
-#, c-format
-msgid "%s ABORTING due to ERROR\n"
-msgstr ""
-
-#: src/lib/message.c:1344
-#, c-format
-msgid "%s ERROR TERMINATION\n"
-msgstr ""
-
-#: src/lib/message.c:1347
-#, c-format
-msgid "%s JobId %u: Fatal error: "
-msgstr ""
-
-#: src/lib/message.c:1356
-#, c-format
-msgid "%s JobId %u: Error: "
-msgstr ""
-
-#: src/lib/message.c:1362
-#, c-format
-msgid "%s JobId %u: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1368
-#, c-format
-msgid "%s JobId %u: Security violation: "
-msgstr ""
-
-#: 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:138
-#, c-format
-msgid "Cannot set SO_REUSEADDR on socket: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:147
-#, c-format
-msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:152
-#, c-format
-msgid "Cannot bind port %d: ERR=%s.\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:163
-#, c-format
-msgid "Could not init client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:182
-#, c-format
-msgid "Error in select: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:203
-#, c-format
-msgid "Connection from %s:%d refused by hosts.access\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:229
-msgid "Could not create client BSOCK.\n"
-msgstr ""
-
-#: 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:253
-#, c-format
-msgid "Could not destroy client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bpipe.c:361 src/lib/bpipe.c:444
-msgid "Program killed by Bacula (timeout)\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:65
-#, c-format
-msgid "ASSERT failed at %s:%i: %s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:70
-#, c-format
-msgid "ASSERT failed at %s:%i: %s \n"
-msgstr ""
-
-#: src/lib/lockmgr.c:100
-#, c-format
-msgid "Mutex lock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:110
-#, c-format
-msgid "Mutex unlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:275 src/lib/lockmgr.c:611 src/lib/lockmgr.c:639
-#: src/lib/jcr.c:321
-#, c-format
-msgid "pthread key create failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:623
-#, c-format
-msgid "pthread_create failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/crypto.c:442
-msgid "Unable to open certificate file"
-msgstr ""
-
-#: src/lib/crypto.c:449
-msgid "Unable to read certificate from file"
-msgstr ""
-
-#: src/lib/crypto.c:455
-msgid "Unable to extract public key from certificate"
-msgstr ""
-
-#: src/lib/crypto.c:462
-msgid ""
-"Provided certificate does not include the required subjectKeyIdentifier "
-"extension."
-msgstr ""
-
-#: src/lib/crypto.c:469
-#, c-format
-msgid "Unsupported key type provided: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:506 src/lib/crypto.c:554
-msgid "Unable to open private key file"
-msgstr ""
-
-#: src/lib/crypto.c:536 src/lib/crypto.c:570
-msgid "Unable to read private key from file"
-msgstr ""
-
-#: src/lib/crypto.c:629
-#, c-format
-msgid "Unsupported digest type: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:643
-msgid "OpenSSL digest initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:657
-msgid "OpenSSL digest update failed"
-msgstr ""
-
-#: src/lib/crypto.c:675
-msgid "OpenSSL digest finalize failed"
-msgstr ""
-
-#: src/lib/crypto.c:773
-msgid "OpenSSL digest_new failed"
-msgstr ""
-
-#: src/lib/crypto.c:779
-msgid "OpenSSL sign get digest failed"
-msgstr ""
-
-#: src/lib/crypto.c:818 src/lib/crypto.c:822
-msgid "OpenSSL digest Verify final failed"
-msgstr ""
-
-#: src/lib/crypto.c:827
-msgid "No signers found for crypto verify.\n"
-msgstr ""
-
-#: src/lib/crypto.c:888
-msgid "Signature creation failed"
-msgstr ""
-
-#: src/lib/crypto.c:966
-msgid "Signature decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1043
-msgid "Unsupported cipher type specified\n"
-msgstr ""
-
-#: src/lib/crypto.c:1192
-msgid "CryptoData decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1236
-msgid "Failure decrypting the session key"
-msgstr ""
-
-#: src/lib/crypto.c:1287
-#, c-format
-msgid "Unsupported contentEncryptionAlgorithm: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1297 src/lib/crypto.c:1303
-msgid "OpenSSL cipher context initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1310
-msgid "Encryption session provided an invalid symmetric key"
-msgstr ""
-
-#: src/lib/crypto.c:1316
-msgid "Encryption session provided an invalid IV"
-msgstr ""
-
-#: src/lib/crypto.c:1322
-msgid "OpenSSL cipher context key/IV initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1392
-#, c-format
-msgid "Unable to init OpenSSL threading: ERR=%s\n"
-msgstr ""
-
-#: src/lib/crypto.c:1405
-msgid "Failed to seed OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1431
-msgid "Failed to save OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1492
-#, c-format
-msgid "Unsupported digest type=%d specified\n"
-msgstr ""
-
-#: src/lib/crypto.c:1512
-#, c-format
-msgid "SHA1Update() returned an error: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1655
-msgid "No error"
-msgstr ""
-
-#: src/lib/crypto.c:1657
-msgid "Signer not found"
-msgstr ""
-
-#: src/lib/crypto.c:1659
-msgid "Recipient not found"
-msgstr ""
-
-#: src/lib/crypto.c:1661
-msgid "Unsupported digest algorithm"
-msgstr ""
-
-#: src/lib/crypto.c:1663
-msgid "Unsupported encryption algorithm"
-msgstr ""
-
-#: src/lib/crypto.c:1665
-msgid "Signature is invalid"
-msgstr ""
-
-#: src/lib/crypto.c:1667
-msgid "Decryption error"
-msgstr ""
-
-#: src/lib/crypto.c:1670
-msgid "Internal error"
-msgstr ""
-
-#: src/lib/crypto.c:1672
-msgid "Unknown error"
-msgstr ""
-
-#: src/lib/cram-md5.c:109 src/lib/cram-md5.c:137
-msgid "1999 Authorization failed.\n"
-msgstr ""
-
-#: src/lib/priv.c:68
-#, c-format
-msgid "Could not find userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:74
-#, c-format
-msgid "Could not find password entry. ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:87
-#, c-format
-msgid "Could not find group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:95
-#, c-format
-msgid "Could not initgroups for group=%s, userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:98
-#, c-format
-msgid "Could not initgroups for userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:105
-#, c-format
-msgid "Could not set group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:115
-#, c-format
-msgid "prctl failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:119
-#, c-format
-msgid "setreuid failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:123
-#, c-format
-msgid "cap_from_text failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:127
-#, c-format
-msgid "cap_set_proc failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:131
-msgid "Keep readall caps not implemented this OS or missing libraries.\n"
-msgstr ""
-
-#: src/lib/priv.c:135
-#, c-format
-msgid "Could not set specified userid: %s\n"
-msgstr ""
-
-#: src/lib/openssl.c:143 src/lib/openssl.c:214
-#, c-format
-msgid "Unable to destroy mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/util.c:183
-msgid "Running"
-msgstr ""
-
-#: src/lib/util.c:186
-msgid "Blocked"
-msgstr ""
-
-#: src/lib/util.c:192
-msgid "Error: incomplete job"
-msgstr ""
-
-#: src/lib/util.c:199
-msgid "Non-fatal error"
-msgstr ""
-
-#: src/lib/util.c:205 src/lib/util.c:337
-msgid "Canceled"
-msgstr ""
-
-#: src/lib/util.c:208
-msgid "Verify differences"
-msgstr ""
-
-#: src/lib/util.c:211
-msgid "Waiting on FD"
-msgstr ""
-
-#: src/lib/util.c:214
-msgid "Wait on SD"
-msgstr ""
-
-#: src/lib/util.c:217
-msgid "Wait for new Volume"
-msgstr ""
-
-#: src/lib/util.c:220
-msgid "Waiting for mount"
-msgstr ""
-
-#: src/lib/util.c:223
-msgid "Waiting for Storage resource"
-msgstr ""
-
-#: src/lib/util.c:226
-msgid "Waiting for Job resource"
-msgstr ""
-
-#: src/lib/util.c:229
-msgid "Waiting for Client resource"
-msgstr ""
-
-#: src/lib/util.c:232
-msgid "Waiting on Max Jobs"
-msgstr ""
-
-#: src/lib/util.c:235
-msgid "Waiting for Start Time"
-msgstr ""
-
-#: src/lib/util.c:238
-msgid "Waiting on Priority"
-msgstr ""
-
-#: src/lib/util.c:257
-#, c-format
-msgid "Unknown Job termination status=%d"
-msgstr ""
-
-#: src/lib/util.c:273
-msgid "Completed successfully"
-msgstr ""
-
-#: src/lib/util.c:276
-msgid "Completed with warnings"
-msgstr ""
-
-#: src/lib/util.c:279
-msgid "Terminated with errors"
-msgstr ""
-
-#: src/lib/util.c:282
-msgid "Fatal error"
-msgstr ""
-
-#: src/lib/util.c:285
-msgid "Created, not yet running"
-msgstr ""
-
-#: src/lib/util.c:288
-msgid "Canceled by user"
-msgstr ""
-
-#: src/lib/util.c:291
-msgid "Verify found differences"
-msgstr ""
-
-#: src/lib/util.c:294
-msgid "Waiting for File daemon"
-msgstr ""
-
-#: src/lib/util.c:297
-msgid "Waiting for Storage daemon"
-msgstr ""
-
-#: src/lib/util.c:300
-msgid "Waiting for higher priority jobs"
-msgstr ""
-
-#: src/lib/util.c:303
-msgid "Batch inserting file records"
-msgstr ""
-
-#: src/lib/util.c:334
-msgid "Fatal Error"
-msgstr ""
-
-#: src/lib/util.c:340
-msgid "Differences"
-msgstr ""
-
-#: src/lib/util.c:343
-msgid "Unknown term code"
-msgstr ""
-
-#: src/lib/util.c:359 src/lib/jcr.c:232
-msgid "Backup"
-msgstr ""
-
-#: src/lib/util.c:362
-msgid "Migrated Job"
-msgstr ""
-
-#: src/lib/util.c:365
-msgid "Verify"
-msgstr ""
-
-#: src/lib/util.c:368 src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:2000
-msgid "Restore"
-msgstr ""
-
-#: src/lib/util.c:371 src/wx-console/wxbmainframe.cpp:276
-msgid "Console"
-msgstr ""
-
-#: src/lib/util.c:374
-msgid "System or Console"
-msgstr ""
-
-#: src/lib/util.c:377
-msgid "Admin"
-msgstr ""
-
-#: src/lib/util.c:380 src/lib/util.c:470
-msgid "Archive"
-msgstr ""
-
-#: src/lib/util.c:383
-msgid "Job Copy"
-msgstr ""
-
-#: src/lib/util.c:386
-msgid "Copy"
-msgstr ""
-
-#: src/lib/util.c:389
-msgid "Migrate"
-msgstr ""
-
-#: src/lib/util.c:392
-msgid "Scan"
-msgstr ""
-
-#: src/lib/util.c:396
-msgid "Unknown Type"
-msgstr ""
-
-#: src/lib/util.c:406
-msgid "Truncate"
-msgstr ""
-
-#: src/lib/util.c:409 src/filed/restore.c:1164
-msgid "None"
-msgstr ""
-
-#: src/lib/util.c:441
-msgid "Verify Init Catalog"
-msgstr ""
-
-#: src/lib/util.c:450
-msgid "Verify Data"
-msgstr ""
-
-#: src/lib/util.c:453
-msgid "Virtual Full"
-msgstr ""
-
-#: src/lib/util.c:469
-msgid "Append"
-msgstr ""
-
-#: src/lib/util.c:471
-msgid "Disabled"
-msgstr ""
-
-#: src/lib/util.c:473
-msgid "Used"
-msgstr ""
-
-#: src/lib/util.c:474
-msgid "Cleaning"
-msgstr ""
-
-#: src/lib/util.c:475
-msgid "Purged"
-msgstr ""
-
-#: src/lib/util.c:476
-msgid "Recycle"
-msgstr ""
-
-#: src/lib/util.c:477
-msgid "Read-Only"
-msgstr ""
-
-#: src/lib/util.c:489
-msgid "Invalid volume status"
-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:1180
-msgid "*none*"
-msgstr ""
-
-#: src/lib/util.c:867
-msgid "Working directory not defined. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:870
-#, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:874
-#, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:330 src/lib/devlock.c:330
-msgid "writeunlock called too many times.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:335 src/lib/devlock.c:335
-msgid "writeunlock by non-owner.\n"
-msgstr ""
-
-#: src/lib/daemon.c:65
-#, c-format
-msgid "Cannot fork to become daemon: ERR=%s\n"
-msgstr ""
-
-#: src/lib/tls.c:90
-#, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
-msgstr ""
-
-#: src/lib/tls.c:127
-msgid "Error initializing SSL context"
-msgstr ""
-
-#: src/lib/tls.c:148
-msgid "Error loading certificate verification stores"
-msgstr ""
-
-#: src/lib/tls.c:153
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
-msgstr ""
-
-#: src/lib/tls.c:164
-msgid "Error loading certificate file"
-msgstr ""
-
-#: src/lib/tls.c:172
-msgid "Error loading private key"
-msgstr ""
-
-#: src/lib/tls.c:180
-msgid "Unable to open DH parameters file"
-msgstr ""
-
-#: src/lib/tls.c:186
-msgid "Unable to load DH parameters from specified file"
-msgstr ""
-
-#: src/lib/tls.c:190
-msgid "Failed to set TLS Diffie-Hellman parameters"
-msgstr ""
-
-#: src/lib/tls.c:200
-msgid "Error setting cipher list, no valid ciphers available\n"
-msgstr ""
-
-#: src/lib/tls.c:259
-msgid "Peer failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:304
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:416
-msgid "Error creating file descriptor-based BIO"
-msgstr ""
-
-#: src/lib/tls.c:427
-msgid "Error creating new SSL object"
-msgstr ""
-
-#: src/lib/tls.c:491 src/lib/tls.c:514
-msgid "Connect failure"
-msgstr ""
-
-#: src/lib/tls.c:594 src/lib/tls.c:598
-msgid "TLS shutdown failure."
-msgstr ""
-
-#: src/lib/tls.c:653 src/lib/tls.c:679
-msgid "TLS read/write failure."
-msgstr ""
-
-#: src/lib/jcr.c:234
-msgid "Verifying"
-msgstr ""
-
-#: src/lib/jcr.c:236
-msgid "Restoring"
-msgstr ""
-
-#: src/lib/jcr.c:238
-msgid "Archiving"
-msgstr ""
-
-#: src/lib/jcr.c:240
-msgid "Copying"
-msgstr ""
-
-#: src/lib/jcr.c:242
-msgid "Migration"
-msgstr ""
-
-#: src/lib/jcr.c:244
-msgid "Scanning"
-msgstr ""
-
-#: src/lib/jcr.c:246
-msgid "Unknown operation"
-msgstr ""
-
-#: src/lib/jcr.c:255
-msgid "backup"
-msgstr ""
-
-#: src/lib/jcr.c:257
-msgid "verified"
-msgstr ""
-
-#: src/lib/jcr.c:257
-msgid "verify"
-msgstr ""
-
-#: src/lib/jcr.c:259
-msgid "restored"
-msgstr ""
-
-#: src/lib/jcr.c:259
-msgid "restore"
-msgstr ""
-
-#: src/lib/jcr.c:261
-msgid "archived"
-msgstr ""
-
-#: src/lib/jcr.c:261
-msgid "archive"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copied"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copy"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrated"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrate"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scanned"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scan"
-msgstr ""
-
-#: src/lib/jcr.c:269
-msgid "unknown action"
-msgstr ""
-
-#: src/lib/jcr.c:343
-#, c-format
-msgid "pthread_once failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/jcr.c:350
-#, c-format
-msgid "Could not init msg_queue mutex. ERR=%s\n"
-msgstr ""
-
-#: src/lib/jcr.c:403
-msgid "NULL jcr.\n"
-msgstr ""
-
-#: src/lib/jcr.c:509
-#, c-format
-msgid "JCR use_count=%d JobId=%d\n"
-msgstr ""
-
-#: src/lib/jcr.c:619
-#, c-format
-msgid "pthread_setspecific failed: ERR=%s\n"
-msgstr ""
-
-#: 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:1115
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
-msgstr ""
-
-#: src/lib/jcr.c:1127
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading Director.\n"
-msgstr ""
-
-#: src/lib/res.c:65
-#, c-format
-msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
-msgstr ""
-
-#: src/lib/res.c:75
-#, c-format
-msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:177
-msgid "***UNKNOWN***"
-msgstr ""
-
-#: src/lib/parse_conf.c:278 src/lib/parse_conf.c:299
-#, c-format
-msgid "expected an =, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:308
-#, c-format
-msgid "Unknown item code: %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:348
-#, c-format
-msgid "message type: %s not found"
-msgstr ""
-
-#: src/lib/parse_conf.c:386
-#, c-format
-msgid "Attempt to redefine name \"%s\" to \"%s\"."
-msgstr ""
-
-#: src/lib/parse_conf.c:483
-#, c-format
-msgid "Attempt to redefine resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:519
-#, c-format
-msgid "Too many %s directives. Max. is %d. line %d: %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:530
-#, c-format
-msgid "Could not find config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:593
-#, c-format
-msgid "Missing config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:665
-#, c-format
-msgid "expected a size number, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:670
-#, c-format
-msgid "expected a speed number, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:681
-#, c-format
-msgid "expected a %s, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "size"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "speed"
-msgstr ""
-
-#: src/lib/parse_conf.c:803
-#, c-format
-msgid "Expected a Tape Label keyword, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:886
-#, c-format
-msgid "Unable to initialize resource lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:894
-msgid "Config filename too long.\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:917
-#, c-format
-msgid "Cannot open config file \"%s\": %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:934
-msgid ""
-"Currently we cannot handle UTF-16 source files. Please convert the conf file "
-"to UTF-8\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:938
-#, c-format
-msgid "Expected a Resource name identifier, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:954
-#, c-format
-msgid "expected resource name, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:965
-#, c-format
-msgid "not in resource definition: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:990
-#, c-format
-msgid ""
-"Keyword \"%s\" not permitted in this resource.\n"
-"Perhaps you left the trailing brace off of the previous resource."
-msgstr ""
-
-#: src/lib/parse_conf.c:1001
-msgid "Name not specified for resource"
-msgstr ""
-
-#: src/lib/parse_conf.c:1011
-#, c-format
-msgid "unexpected token %d %s in resource definition"
-msgstr ""
-
-#: src/lib/parse_conf.c:1017
-#, c-format
-msgid "Unknown parser state %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:1022
-msgid "End of conf file reached with unclosed resource."
-msgstr ""
-
-#: src/lib/mem_pool.c:112
-#, c-format
-msgid "MemPool index %d larger than max %d\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:130 src/lib/mem_pool.c:150 src/lib/mem_pool.c:186
-#: src/lib/mem_pool.c:257 src/lib/mem_pool.c:277 src/lib/mem_pool.c:312
-#: src/lib/mem_pool.c:623
-#, c-format
-msgid "Out of memory requesting %d bytes\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:167
-msgid "obuf is NULL\n"
-msgstr ""
-
-#: src/lib/berrno.c:63
-msgid "Child exited normally."
-msgstr ""
-
-#: src/lib/berrno.c:70
-msgid "Unknown error during program execvp"
-msgstr ""
-
-#: src/lib/berrno.c:73
-#, c-format
-msgid "Child exited with code %d"
-msgstr ""
-
-#: src/lib/berrno.c:81
-#, c-format
-msgid "Child died from signal %d: %s"
-msgstr ""
-
-#: src/lib/berrno.c:87
-msgid "Invalid errno. No error message possible."
-msgstr ""
-
-#: src/lib/bnet.c:134
-#, c-format
-msgid "Attr spool write error. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet.c:279 src/lib/bnet.c:320
-msgid "TLS connection initialization failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:287
-msgid "TLS Negotiation failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:293 src/lib/bnet.c:335
-msgid ""
-"TLS certificate verification failed. Peer certificate did not match a "
-"required commonName\n"
-msgstr ""
-
-#: src/lib/bnet.c:342
-#, c-format
-msgid ""
-"TLS host certificate verification failed. Host name \"%s\" did not match "
-"presented certificate\n"
-msgstr ""
-
-#: src/lib/bnet.c:359
-msgid "TLS enabled but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:365
-msgid "TLS enable but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:481
-msgid "No problem."
-msgstr ""
-
-#: src/lib/bnet.c:484
-msgid "Authoritative answer for host not found."
-msgstr ""
-
-#: src/lib/bnet.c:487
-msgid "Non-authoritative for host not found, or ServerFail."
-msgstr ""
-
-#: src/lib/bnet.c:490
-msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
-msgstr ""
-
-#: src/lib/bnet.c:493
-msgid "Valid name, no data record of resquested type."
-msgstr ""
-
-#: src/lib/bnet.c:496
-msgid "Unknown error."
-msgstr ""
-
-#: src/lib/bnet.c:755
-#, c-format
-msgid "Unknown sig %d"
-msgstr ""
-
-#: src/lib/signal.c:67
-msgid "Invalid signal number"
-msgstr ""
-
-#: 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:167
-#, c-format
-msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
-msgstr ""
-
-#: src/lib/signal.c:169
-#, c-format
-msgid "Kaboom! exepath=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:210
-#, c-format
-msgid "Fork error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:218
-#, c-format
-msgid "Calling: %s %s %s %s\n"
-msgstr ""
-
-#: src/lib/signal.c:222
-#, c-format
-msgid "execv: %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:244
-#, c-format
-msgid "It looks like the traceback worked...\n"
-msgstr ""
-
-#: 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:312
-msgid "UNKNOWN SIGNAL"
-msgstr ""
-
-#: src/lib/signal.c:313
-msgid "Hangup"
-msgstr ""
-
-#: src/lib/signal.c:314
-msgid "Interrupt"
-msgstr ""
-
-#: src/lib/signal.c:315
-msgid "Quit"
-msgstr ""
-
-#: src/lib/signal.c:316
-msgid "Illegal instruction"
-msgstr ""
-
-#: src/lib/signal.c:317
-msgid "Trace/Breakpoint trap"
-msgstr ""
-
-#: src/lib/signal.c:318
-msgid "Abort"
-msgstr ""
-
-#: src/lib/signal.c:320
-msgid "EMT instruction (Emulation Trap)"
-msgstr ""
-
-#: src/lib/signal.c:323
-msgid "IOT trap"
-msgstr ""
-
-#: src/lib/signal.c:325
-msgid "BUS error"
-msgstr ""
-
-#: src/lib/signal.c:326
-msgid "Floating-point exception"
-msgstr ""
-
-#: src/lib/signal.c:327
-msgid "Kill, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:328
-msgid "User-defined signal 1"
-msgstr ""
-
-#: src/lib/signal.c:329
-msgid "Segmentation violation"
-msgstr ""
-
-#: src/lib/signal.c:330
-msgid "User-defined signal 2"
-msgstr ""
-
-#: src/lib/signal.c:331
-msgid "Broken pipe"
-msgstr ""
-
-#: src/lib/signal.c:332
-msgid "Alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:333
-msgid "Termination"
-msgstr ""
-
-#: src/lib/signal.c:335
-msgid "Stack fault"
-msgstr ""
-
-#: src/lib/signal.c:337
-msgid "Child status has changed"
-msgstr ""
-
-#: src/lib/signal.c:338
-msgid "Continue"
-msgstr ""
-
-#: src/lib/signal.c:339
-msgid "Stop, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:340
-msgid "Keyboard stop"
-msgstr ""
-
-#: src/lib/signal.c:341
-msgid "Background read from tty"
-msgstr ""
-
-#: src/lib/signal.c:342
-msgid "Background write to tty"
-msgstr ""
-
-#: src/lib/signal.c:343
-msgid "Urgent condition on socket"
-msgstr ""
-
-#: src/lib/signal.c:344
-msgid "CPU limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:345
-msgid "File size limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:346
-msgid "Virtual alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:347
-msgid "Profiling alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:348
-msgid "Window size change"
-msgstr ""
-
-#: src/lib/signal.c:349
-msgid "I/O now possible"
-msgstr ""
-
-#: src/lib/signal.c:351
-msgid "Power failure restart"
-msgstr ""
-
-#: src/lib/signal.c:354
-msgid "No runnable lwp"
-msgstr ""
-
-#: src/lib/signal.c:357
-msgid "SIGLWP special signal used by thread library"
-msgstr ""
-
-#: src/lib/signal.c:360
-msgid "Checkpoint Freeze"
-msgstr ""
-
-#: src/lib/signal.c:363
-msgid "Checkpoint Thaw"
-msgstr ""
-
-#: src/lib/signal.c:366
-msgid "Thread Cancellation"
-msgstr ""
-
-#: 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: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:357
-msgid "Buffer overflow.\n"
-msgstr ""
-
-#: src/lib/bsys.c:423
-msgid "Bad errno"
-msgstr ""
-
-#: src/lib/bsys.c:438
-#, c-format
-msgid "Memset for %d bytes at %s:%d\n"
-msgstr ""
-
-#: src/lib/bsys.c:468
-#, c-format
-msgid "Cannot open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:483
-#, c-format
-msgid ""
-"%s is already running. pid=%d\n"
-"Check file %s\n"
-msgstr ""
-
-#: src/lib/bsys.c:497
-#, c-format
-msgid "Could not open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:608
-#, c-format
-msgid "Could not create state file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:627
-#, c-format
-msgid "Write final hdr error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:236
-#, c-format
-msgid "%s: run %s \"%s\"\n"
-msgstr ""
-
-#: src/lib/runscript.c:245
-#, c-format
-msgid "Runscript: %s could not execute. ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:254
-#, c-format
-msgid "%s: %s\n"
-msgstr ""
-
-#: src/lib/runscript.c:259
-#, c-format
-msgid "Runscript: %s returned non-zero status=%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lex.c:91 src/wx-console/console_thread.cpp:212
-#, c-format
-msgid "Problem probably begins at line %d.\n"
-msgstr ""
-
-#: src/lib/lex.c:96 src/wx-console/console_thread.cpp:217
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-
-#: src/lib/lex.c:100
-#, c-format
-msgid "Config error: %s\n"
-msgstr ""
-
-#: src/lib/lex.c:129
-msgid "Close of NULL file\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "Config token too long, file: %s, line %d, begins at line %d\n"
-msgstr ""
-
-#: src/lib/lex.c:292
-msgid "none"
-msgstr ""
-
-#: src/lib/lex.c:293
-msgid "comment"
-msgstr ""
-
-#: src/lib/lex.c:294
-msgid "number"
-msgstr ""
-
-#: src/lib/lex.c:295
-msgid "ip_addr"
-msgstr ""
-
-#: src/lib/lex.c:296
-msgid "identifier"
-msgstr ""
-
-#: src/lib/lex.c:297
-msgid "string"
-msgstr ""
-
-#: src/lib/lex.c:298
-msgid "quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:299
-msgid "include"
-msgstr ""
-
-#: src/lib/lex.c:300
-msgid "include_quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:301
-msgid "UTF-8 Byte Order Mark"
-msgstr ""
-
-#: src/lib/lex.c:302
-msgid "UTF-16le Byte Order Mark"
-msgstr ""
-
-#: 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: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:625 src/lib/lex.c:653
-#, c-format
-msgid "Cannot open included config file %s: %s\n"
-msgstr ""
-
-#: 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: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:783
-#, c-format
-msgid "expected a name, got %s: %s"
-msgstr ""
-
-#: src/lib/lex.c:787
-#, c-format
-msgid "name %s length %d too long, max is %d\n"
-msgstr ""
-
-#: src/lib/lex.c:795
-#, c-format
-msgid "expected a string, got %s: %s"
-msgstr ""
-
-#: src/lib/var.c:2669
-msgid "everything ok"
-msgstr ""
-
-#: src/lib/var.c:2670
-msgid "incomplete named character"
-msgstr ""
-
-#: src/lib/var.c:2671
-msgid "incomplete hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2672
-msgid "invalid hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2673
-msgid "octal value too large"
-msgstr ""
-
-#: src/lib/var.c:2674
-msgid "invalid octal value"
-msgstr ""
-
-#: src/lib/var.c:2675
-msgid "incomplete octal value"
-msgstr ""
-
-#: src/lib/var.c:2676
-msgid "incomplete grouped hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2677
-msgid "incorrect character class specification"
-msgstr ""
-
-#: src/lib/var.c:2678
-msgid "invalid expansion configuration"
-msgstr ""
-
-#: src/lib/var.c:2679
-msgid "out of memory"
-msgstr ""
-
-#: src/lib/var.c:2680
-msgid "incomplete variable specification"
-msgstr ""
-
-#: src/lib/var.c:2681
-msgid "undefined variable"
-msgstr ""
-
-#: src/lib/var.c:2682
-msgid "input is neither text nor variable"
-msgstr ""
-
-#: src/lib/var.c:2683
-msgid "unknown command character in variable"
-msgstr ""
-
-#: src/lib/var.c:2684
-msgid "malformatted search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2685
-msgid "unknown flag in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2686
-msgid "invalid regex in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2687
-msgid "missing parameter in command"
-msgstr ""
-
-#: src/lib/var.c:2688
-msgid "empty search string in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2689
-msgid "start offset missing in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2690
-msgid "offsets in cut operation delimited by unknown character"
-msgstr ""
-
-#: src/lib/var.c:2691
-msgid "range out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2692
-msgid "offset out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2693
-msgid "logic error in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2694
-msgid "malformatted transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2695
-msgid "source and target class mismatch in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2696
-msgid "empty character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2697
-msgid "incorrect character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2698
-msgid "malformatted padding operation"
-msgstr ""
-
-#: src/lib/var.c:2699
-msgid "width parameter missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2700
-msgid "fill string missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2701
-msgid "unknown quoted pair in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2702
-msgid "sub-matching reference out of range"
-msgstr ""
-
-#: src/lib/var.c:2703
-msgid "invalid argument"
-msgstr ""
-
-#: src/lib/var.c:2704
-msgid "incomplete quoted pair"
-msgstr ""
-
-#: src/lib/var.c:2705
-msgid "lookup function does not support variable arrays"
-msgstr ""
-
-#: src/lib/var.c:2706
-msgid "index of array variable contains an invalid character"
-msgstr ""
-
-#: src/lib/var.c:2707
-msgid "index of array variable is incomplete"
-msgstr ""
-
-#: src/lib/var.c:2708
-msgid "bracket expression in array variable's index not closed"
-msgstr ""
-
-#: src/lib/var.c:2709
-msgid "division by zero error in index specification"
-msgstr ""
-
-#: src/lib/var.c:2710
-msgid "unterminated loop construct"
-msgstr ""
-
-#: src/lib/var.c:2711
-msgid "invalid character in loop limits"
-msgstr ""
-
-#: src/lib/var.c:2712
-msgid "malformed operation argument list"
-msgstr ""
-
-#: src/lib/var.c:2713
-msgid "undefined operation"
-msgstr ""
-
-#: src/lib/var.c:2714
-msgid "formatting failure"
-msgstr ""
-
-#: src/lib/var.c:2723
-msgid "unknown error"
-msgstr ""
-
-#: src/lib/address_conf.c:62
-#, c-format
-msgid "Only ipv4 and ipv6 are supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:66
-#, c-format
-msgid "Only ipv4 is supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:175
-#, c-format
-msgid "It was tried to assign a ipv6 address to a ipv4(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:184
-#, c-format
-msgid "It was tried to assign a ipv4 address to a ipv6(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:263
-#, c-format
-msgid "Can't add default address (%s)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:292
-msgid "the old style addresses cannot be mixed with new style"
-msgstr ""
-
-#: src/lib/address_conf.c:313
-#, c-format
-msgid "can't resolve service(%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:322
-#, c-format
-msgid "can't resolve hostname(%s) %s"
-msgstr ""
-
-#: src/lib/address_conf.c:412 src/lib/address_conf.c:443
-#, c-format
-msgid "Expected a block begin { , got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:417
-msgid "Empty addr block is not allowed"
-msgstr ""
-
-#: src/lib/address_conf.c:421
-#, c-format
-msgid "Expected a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:430
-#, c-format
-msgid "Expected a string [ip|ipv4|ipv6], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:434
-#, c-format
-msgid "Expected a string [ip|ipv4], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:439 src/lib/address_conf.c:469
-#, c-format
-msgid "Expected a equal =, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:450 src/lib/address_conf.c:465
-#, c-format
-msgid "Expected a identifier [addr|port], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:455
-msgid "Only one port per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:461
-msgid "Only one addr per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:477
-#, c-format
-msgid "Expected a number or a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:483 src/lib/address_conf.c:516
-#, c-format
-msgid "Expected an IP number or a hostname, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:489
-msgid "State machine missmatch"
-msgstr ""
-
-#: src/lib/address_conf.c:495 src/lib/address_conf.c:507
-#, c-format
-msgid "Expected a end of block }, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:501
-#, c-format
-msgid "Can't add hostname(%s) and port(%s) to addrlist (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:521 src/lib/address_conf.c:535
-#, c-format
-msgid "can't add port (%s) to (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:530
-#, c-format
-msgid "Expected a port number or string, got: %s"
-msgstr ""
-
-#: src/lib/edit.c:478
-msgid "Empty name not allowed.\n"
-msgstr ""
-
-#: src/lib/edit.c:488
-#, c-format
-msgid "Illegal character \"%c\" in name.\n"
-msgstr ""
-
-#: src/lib/edit.c:495
-msgid "Name too long.\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:60
-#, c-format
-msgid "Cannot open current directory: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:71
-#, c-format
-msgid "Cannot get current directory: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:95 src/findlib/savecwd.c:106
-#, c-format
-msgid "Cannot reset current directory: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:137
-#, c-format
-msgid "Cannot create directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:141 src/findlib/mkpath.c:202
-#, c-format
-msgid "%s exists but is not a directory.\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:164
-#, c-format
-msgid "Cannot change owner and/or group of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:169
-#, c-format
-msgid "Cannot change permissions of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:239
-#, c-format
-msgid "%c: is not a valid drive.\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:283
-msgid "Too many subdirectories. Some permissions not reset.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:483
-#, c-format
-msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:509 src/findlib/attribs.c:516
-#, c-format
-msgid "Unable to set file owner %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:522
-#, c-format
-msgid "Unable to set file modes %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:532
-#, c-format
-msgid "Unable to set file times %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:546
-#, c-format
-msgid "Unable to set file flags %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:799
-#, c-format
-msgid "Error in %s file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:816
-#, c-format
-msgid "Error in %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/enable_priv.c:92
-msgid "AdjustTokenPrivileges set "
-msgstr ""
-
-#: src/findlib/create_file.c:124
-#, c-format
-msgid "File skipped. Not newer: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:131
-#, c-format
-msgid "File skipped. Not older: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:141
-#, c-format
-msgid "File skipped. Already exists: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:167
-#, c-format
-msgid "File %s already exists and could not be replaced. ERR=%s.\n"
-msgstr ""
-
-#: src/findlib/create_file.c:218 src/findlib/create_file.c:282
-#: src/findlib/create_file.c:378
-#, c-format
-msgid "bpkt already open fid=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
-#, c-format
-msgid "Could not create %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:241
-#, c-format
-msgid "Cannot make fifo %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:259
-#, c-format
-msgid "Cannot make node %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:304
-#, c-format
-msgid "Could not symlink %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:329 src/findlib/create_file.c:342
-#, c-format
-msgid "Could not restore file flags for file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:333 src/findlib/create_file.c:350
-#, c-format
-msgid "Could not hard link %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:346
-#, c-format
-msgid "Could not reset file flags for file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:401
-#, c-format
-msgid "Original file %s have been deleted: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:413
-#, c-format
-msgid "Original file %s not saved: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:416
-#, c-format
-msgid "Unknown file type %d; not restored: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:460
-#, c-format
-msgid "Zero length filename: %s\n"
-msgstr ""
-
-#: src/findlib/bfile.c:97
-msgid "Unix attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:99
-msgid "File data"
-msgstr ""
-
-#: src/findlib/bfile.c:101
-msgid "MD5 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:103
-msgid "GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:105
-msgid "Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:107
-msgid "Extended attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:109
-msgid "Sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:111
-msgid "GZIP sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:113
-msgid "Compressed sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:115
-msgid "Program names"
-msgstr ""
-
-#: src/findlib/bfile.c:117
-msgid "Program data"
-msgstr ""
-
-#: src/findlib/bfile.c:119
-msgid "SHA1 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:121
-msgid "Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:123
-msgid "Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:125
-msgid "Win32 compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:127
-msgid "MacOS Fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:129
-msgid "HFS+ attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:131
-msgid "Standard Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:133
-msgid "Default Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:135
-msgid "SHA256 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:137
-msgid "SHA512 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:139
-msgid "Signed digest"
-msgstr ""
-
-#: src/findlib/bfile.c:141
-msgid "Encrypted File data"
-msgstr ""
-
-#: src/findlib/bfile.c:143
-msgid "Encrypted Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:145
-msgid "Encrypted session data"
-msgstr ""
-
-#: src/findlib/bfile.c:147
-msgid "Encrypted GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:149
-msgid "Encrypted compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:151
-msgid "Encrypted Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:153
-msgid "Encrypted Win32 Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:155
-msgid "Encrypted MacOS fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:157
-msgid "AIX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:159
-msgid "Darwin Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:161
-msgid "FreeBSD Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:163
-msgid "FreeBSD Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:165
-msgid "HPUX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:167
-msgid "Irix Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:169
-msgid "Irix Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:171
-msgid "Linux Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:173
-msgid "Linux Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:175
-msgid "TRU64 Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:177
-msgid "TRU64 Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:179
-msgid "Solaris Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:181
-msgid "Solaris Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:183
-msgid "AFS Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:185
-msgid "AIX Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:187
-msgid "AIX Specific NFSv4 ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:189
-msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:191
-msgid "GNU Hurd Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:193
-msgid "GNU Hurd Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:195
-msgid "GNU Hurd Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:197
-msgid "IRIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:199
-msgid "TRU64 Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:201
-msgid "AIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:203
-msgid "OpenBSD Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:205
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:207
-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:237
-#, c-format
-msgid "Plugin: \"%s\" not found.\n"
-msgstr ""
-
-#: 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:227
-#, c-format
-msgid "     NODUMP flag set - will not process %s\n"
-msgstr ""
-
-#: src/findlib/find_one.c:248
-#, c-format
-msgid "Cannot stat file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/find_one.c:253
-#, c-format
-msgid "%s mtime changed during backup.\n"
-msgstr ""
-
-#: src/findlib/find_one.c:260
-#, c-format
-msgid "%s ctime changed during backup.\n"
-msgstr ""
-
-#: 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:403
-#, c-format
-msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
-msgstr ""
-
-#: src/findlib/find_one.c:418
-#, c-format
-msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
-msgstr ""
-
-#: src/cats/sql_create.c:101
-#, c-format
-msgid "Create DB Job record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:145
-#, c-format
-msgid "Create JobMedia record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:154
-#, c-format
-msgid "Update Media record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:189
-#, c-format
-msgid "pool record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:221
-#, c-format
-msgid "Create db Pool record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:254
-#, c-format
-msgid "Device record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:271
-#, c-format
-msgid "Create db Device record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:306
-#, c-format
-msgid "More than one Storage record!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:311
-#, c-format
-msgid "error fetching Storage row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:332
-#, c-format
-msgid "Create DB Storage record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:366
-#, c-format
-msgid "mediatype record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:383
-#, c-format
-msgid "Create db mediatype record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:424
-#, c-format
-msgid "Volume \"%s\" already exists.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:470
-#, c-format
-msgid "Create DB Media record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:521
-#, c-format
-msgid "More than one Client!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:526
-#, c-format
-msgid "error fetching Client row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:554
-#, c-format
-msgid "Create DB Client record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Create db Path record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:666
-#, c-format
-msgid "Create DB Counters record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:704
-#, c-format
-msgid "More than one FileSet!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:709
-#, c-format
-msgid "error fetching FileSet row: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:740
-#, c-format
-msgid "Create DB FileSet record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:989
-#, c-format
-msgid "Create db File record %s failed. ERR=%s"
-msgstr ""
-
-#: src/cats/sql_create.c:1015
-#, c-format
-msgid "More than one Filename! %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1021
-#, c-format
-msgid "Error fetching row for file=%s: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1038
-#, c-format
-msgid "Create db Filename record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
-msgid "ERR=JobIds are empty\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1219
-#, c-format
-msgid "Create db Object record %s failed. ERR=%s"
-msgstr ""
-
-#: src/cats/sql_get.c:151
-#, c-format
-msgid "Error fetching row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:158
-#, c-format
-msgid "get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:166
-#, c-format
-msgid "File record for PathId=%s FilenameId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:172
-msgid "File record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:199
-#, c-format
-msgid "More than one Filename!: %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:209
-#, c-format
-msgid "Get DB Filename record %s found bad record: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:215
-#, c-format
-msgid "Filename record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:219
-#, c-format
-msgid "Filename record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:262
-#, c-format
-msgid "Get DB path record %s found bad record: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:275
-#, c-format
-msgid "Path record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:279
-#, c-format
-msgid "Path record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:318
-#, c-format
-msgid "No Job found for JobId %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:391 src/cats/sql_get.c:448
-#, c-format
-msgid "No volumes found for JobId=%d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:397 src/cats/sql_get.c:459
-#, c-format
-msgid "Error fetching row %d: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:411
-#, c-format
-msgid "No Volume for JobId %d found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:552
-#, c-format
-msgid "Pool id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:589
-#, c-format
-msgid "Client id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:635
-#, c-format
-msgid "More than one Pool!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:679
-msgid "Pool record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:717
-#, c-format
-msgid "More than one Client!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:734 src/cats/sql_get.c:738
-msgid "Client record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:765
-#, c-format
-msgid "More than one Counter!: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:770
-#, c-format
-msgid "error fetching Counter row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:790
-#, c-format
-msgid "Counter record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:830
-#, c-format
-msgid "Error got %s FileSets but expected only one!\n"
-msgstr ""
-
-#: src/cats/sql_get.c:835
-#, c-format
-msgid "FileSet record \"%s\" not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:845
-msgid "FileSet record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:941
-#, c-format
-msgid "Media id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:979
-#, c-format
-msgid "query dbids failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1034
-#, c-format
-msgid "More than one Volume!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1090
-#, c-format
-msgid "Media record MediaId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1093
-#, c-format
-msgid "Media record for Volume \"%s\" not found.\n"
-msgstr ""
-
-#: 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:1103
-#, c-format
-msgid "Media record for Vol=%s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:98 src/cats/sql_find.c:127 src/cats/sql_find.c:182
-#, c-format
-msgid ""
-"Query error for start time request: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:104 src/cats/sql_find.c:188
-msgid "No prior Full backup Job record found.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:116
-#, c-format
-msgid "Unknown level=%d\n"
-msgstr ""
-
-#: src/cats/sql_find.c:133
-#, c-format
-msgid ""
-"No Job record found: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:291
-#, c-format
-msgid "Unknown Job level=%d\n"
-msgstr ""
-
-#: src/cats/sql_find.c:301
-#, c-format
-msgid "No Job found for: %s.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:312
-#, c-format
-msgid "No Job found for: %s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:393
-#, c-format
-msgid "Request for Volume item %d greater than max %d or less than 1\n"
-msgstr ""
-
-#: src/cats/sql_find.c:408
-#, c-format
-msgid "No Volume record found for item %d.\n"
-msgstr ""
-
-#: 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:181
-#, c-format
-msgid "Database %s does not exist, please create it.\n"
-msgstr ""
-
-#: src/cats/sqlite.c:203
-#, c-format
-msgid "Unable to open Database=%s. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sqlite.c:204
-msgid "unknown"
-msgstr ""
-
-#: 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 ""
-
-#: src/cats/ingres.c:87
-msgid "Failed to allocate space for query filter.\n"
-msgstr ""
-
-#: src/cats/ingres.c:108
-msgid "Failed to allocate space for query filters.\n"
-msgstr ""
-
-#: src/cats/ingres.c:267
-#, c-format
-msgid ""
-"Unable to connect to Ingres server.\n"
-"Database=%s User=%s\n"
-"It is probably not running or your password is incorrect.\n"
-msgstr ""
-
-#: src/cats/ingres.c:1087
-msgid "A user name for Ingres must be supplied.\n"
-msgstr ""
-
-#: src/cats/sql.c:184
-#, c-format
-msgid ""
-"Potential performance problem:\n"
-"max_connections=%d set for %s database \"%s\" should be larger than "
-"Director's MaxConcurrentJobs=%d\n"
-msgstr ""
-
-#: src/cats/sql.c:229
-#, c-format
-msgid ""
-"query %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:251
-#, c-format
-msgid ""
-"insert %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:261
-#, c-format
-msgid "Insertion problem: affected_rows=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:282
-#, c-format
-msgid ""
-"update %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:292
-#, c-format
-msgid "Update failed: affected_rows=%s for %s\n"
-msgstr ""
-
-#: src/cats/sql.c:314
-#, c-format
-msgid ""
-"delete %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:408
-#, c-format
-msgid "Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:603
-msgid "No results to list.\n"
-msgstr ""
-
-#: src/cats/sql.c:721
-msgid "Could not init database batch connection\n"
-msgstr ""
-
-#: src/cats/sql.c:727
-#, c-format
-msgid "Could not open database \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:181
-#, c-format
-msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:246
-#, c-format
-msgid ""
-"Unable to connect to PostgreSQL server. Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:350
-msgid "PQescapeStringConn returned non-zero.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:368
-msgid "PQescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:399
-msgid "PQunescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:813
-#, c-format
-msgid "error fetching currval: %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
-#, c-format
-msgid "error starting batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
-#, c-format
-msgid "error ending batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1088
-#, c-format
-msgid "error copying in batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1110
-msgid "A user name for PostgreSQL must be supplied.\n"
-msgstr ""
-
-#: src/cats/sql_list.c:59
-#, c-format
-msgid "Query failed: %s\n"
-msgstr ""
-
-#: src/cats/sql_list.c:275
-msgid "These JobIds have copies as follows:\n"
-msgstr ""
-
-#: src/cats/sql_list.c:277
-msgid "The catalog contains copies as follows:\n"
-msgstr ""
-
-#: src/cats/dbi.c:117
-#, c-format
-msgid "Unknown database type: %s\n"
-msgstr ""
-
-#: 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:299
-#, c-format
-msgid ""
-"Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-
-#: src/cats/dbi.c:1439
-#, c-format
-msgid "error inserting batch mode: %s"
-msgstr ""
-
-#: src/cats/dbi.c:1456
-msgid "Driver type not specified in Catalog resource.\n"
-msgstr ""
-
-#: src/cats/dbi.c:1460
-msgid "Invalid driver type, must be \"dbi:<type>\"\n"
-msgstr ""
-
-#: src/cats/dbi.c:1464
-msgid "A user name for DBI must be supplied.\n"
-msgstr ""
-
-#: src/cats/cats_dummy.c:39
-msgid "Please replace this dummy libbaccats library with a proper one.\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:80
-#, c-format
-msgid "No pool record %s exists\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:85
-#, c-format
-msgid "Expecting one pool record, got %d\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:91
-#, c-format
-msgid "Error fetching row %s\n"
-msgstr ""
-
-#: src/cats/mysql.c:207
-#, c-format
-msgid ""
-"Unable to connect to MySQL server.\n"
-"Database=%s User=%s\n"
-"MySQL connect failed either server not running or your authorization is "
-"incorrect.\n"
-msgstr ""
-
-#: src/cats/mysql.c:692
-msgid "A user name for MySQL must be supplied.\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:147 src/console/console_conf.c:140
-#: src/qt-console/bat_conf.cpp:141
-#, c-format
-msgid "No record for %d %s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:156 src/console/console_conf.c:149
-#, c-format
-msgid "Console: name=%s rcfile=%s histfile=%s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:160 src/console/console_conf.c:153
-#: src/qt-console/bat_conf.cpp:150
-#, c-format
-msgid "Director: name=%s address=%s DIRport=%d\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:142 src/console/authenticate.c:138
-msgid "TLS negotiation failed\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:150
-msgid "Bad response to Hello command: ERR="
-msgstr ""
-
-#: src/wx-console/authenticate.c:167 src/console/authenticate.c:169
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-
-#: src/console/console.c:126
-#, c-format
-msgid ""
-"\n"
-"Version: "
-msgstr ""
-
-#: src/console/console.c:178
-msgid "input from file"
-msgstr ""
-
-#: src/console/console.c:179
-msgid "output to file"
-msgstr ""
-
-#: src/console/console.c:180
-msgid "quit"
-msgstr ""
-
-#: src/console/console.c:181
-msgid "output to file and terminal"
-msgstr ""
-
-#: src/console/console.c:182
-msgid "sleep specified time"
-msgstr ""
-
-#: src/console/console.c:183
-msgid "print current time"
-msgstr ""
-
-#: src/console/console.c:184
-msgid "print Console's version"
-msgstr ""
-
-#: src/console/console.c:185
-msgid "echo command string"
-msgstr ""
-
-#: src/console/console.c:186
-msgid "execute an external command"
-msgstr ""
-
-#: src/console/console.c:187
-msgid "exit = quit"
-msgstr ""
-
-#: src/console/console.c:188
-msgid "zed_keys = use zed keys instead of bash keys"
-msgstr ""
-
-#: src/console/console.c:189
-msgid "help listing"
-msgstr ""
-
-#: src/console/console.c:191
-msgid "set command separator"
-msgstr ""
-
-#: src/console/console.c:225
-msgid ": is an invalid command\n"
-msgstr ""
-
-#: src/console/console.c:675
-msgid "Illegal separator character.\n"
-msgstr ""
-
-#: src/console/console.c:708
-msgid "Command logic problem\n"
-msgstr ""
-
-#: src/console/console.c:925
-#, c-format
-msgid "Can't find %s in Director list\n"
-msgstr ""
-
-#: src/console/console.c:933
-msgid "Available Directors:\n"
-msgstr ""
-
-#: src/console/console.c:937
-#, c-format
-msgid "%2d:  %s at %s:%d\n"
-msgstr ""
-
-#: src/console/console.c:941
-msgid "Select Director by entering a number: "
-msgstr ""
-
-#: src/console/console.c:948
-#, c-format
-msgid "%s is not a number. You must enter a number between 1 and %d\n"
-msgstr ""
-
-#: src/console/console.c:955
-#, c-format
-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: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:154
-#, c-format
-msgid "Failed to initialize TLS context for Director \"%s\".\n"
-msgstr ""
-
-#: src/console/console.c:1210
-msgid "Enter a period to cancel a command.\n"
-msgstr ""
-
-#: src/console/console.c:1304 src/qt-console/main.cpp:232
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in %s. At least one CA certificate store is required.\n"
-msgstr ""
-
-#: src/console/console.c:1313 src/qt-console/main.cpp:241
-#, c-format
-msgid ""
-"No Director resource defined in %s\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/console/console.c:1333 src/qt-console/main.cpp:262
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/console/console.c:1359
-msgid "Too many arguments on input command.\n"
-msgstr ""
-
-#: src/console/console.c:1363
-msgid "First argument to input command must be a filename.\n"
-msgstr ""
-
-#: src/console/console.c:1369
-#, c-format
-msgid "Cannot open file %s for input. ERR=%s\n"
-msgstr ""
-
-#: src/console/console.c:1401
-msgid "Too many arguments on output/tee command.\n"
-msgstr ""
-
-#: src/console/console.c:1418
-#, c-format
-msgid "Cannot open file %s for output. ERR=%s\n"
-msgstr ""
-
-#: src/console/console.c:1437
-msgid "Too many arguments. Enclose command in double quotes.\n"
-msgstr ""
-
-#: src/console/console.c:1446
-#, c-format
-msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
-msgstr ""
-
-#: src/tools/testls.c:59
-#, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -q          quiet, don't print filenames (debug)\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testls.c:155
-#, c-format
-msgid "Could not open include file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:168
-#, c-format
-msgid "Could not open exclude file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:182
-#, c-format
-msgid "Files seen = %d\n"
-msgstr ""
-
-#: src/tools/testls.c:215 src/tools/testfind.c:322
-#, c-format
-msgid "Err: Could not access %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:218 src/tools/testfind.c:325
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:221 src/tools/testfind.c:328
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:224 src/tools/testfind.c:331
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:227 src/tools/testfind.c:334
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:230
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:233
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:236 src/tools/testfind.c:337
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:239 src/tools/testfind.c:340
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
-msgstr ""
-
-#: src/tools/bvfs_test.c:56 src/tools/ing_test.c:57
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -j <jobids>       specify jobids\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -T                truncate cache table before starting\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"Example : bbatch -w /path/to/workdir -h localhost -f dat1 -f dat -f datx\n"
-" will start 3 thread and load dat1, dat and datx in your catalog\n"
-"See bbatch.c to generate datafile\n"
-"\n"
-"Usage: bbatch [ options ] -w working/dir -f datafile\n"
-"       -b                with batch mode\n"
-"       -B                without batch mode\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -r <jobids>       call restore code with given jobids\n"
-"       -v                verbose\n"
-"       -f <file>         specify data file\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:211
-#, c-format
-msgid "Computing file list for jobid=%s files=%lld secs=%d\n"
-msgstr ""
-
-#: src/tools/bbatch.c:315
-#, c-format
-msgid "Error opening datafile %s\n"
-msgstr ""
-
-#: src/tools/bbatch.c:325
-msgid "Error while inserting file\n"
-msgstr ""
-
-#: src/tools/ing_test.c:231 src/tools/ing_test.c:264 src/tools/ing_test.c:302
-msgid "Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:320
-msgid "CREATE-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:325
-msgid "DROP-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/fstype.c:48
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-v] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/fstype.c:102 src/tools/drivetype.c:78
-#, c-format
-msgid "%s: unknown\n"
-msgstr ""
-
-#: src/tools/bregex.c:153 src/tools/bwild.c:122 src/tools/bregtest.c:137
-#, c-format
-msgid "Could not open data file: %s\n"
-msgstr ""
-
-#: src/tools/drivetype.c:47
-#, c-format
-msgid ""
-"\n"
-"Usage: drivetype [-v] path ...\n"
-"\n"
-"       Print the drive type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -l     print local fixed hard drive\n"
-"       -a     display information on all drives\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:70
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -c          specify config file containing FileSet resources\n"
-"       -f          specify which FileSet to use\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:235
-#, c-format
-msgid ""
-"\n"
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
-msgstr ""
-
-#: src/tools/testfind.c:278
-#, c-format
-msgid "Reg: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:300
-msgid "\t[will not descend: recursion turned off]"
-msgstr ""
-
-#: src/tools/testfind.c:302
-msgid "\t[will not descend: file system change not allowed]"
-msgstr ""
-
-#: src/tools/testfind.c:304
-msgid "\t[will not descend: disallowed file system]"
-msgstr ""
-
-#: src/tools/testfind.c:306
-msgid "\t[will not descend: disallowed drive type]"
-msgstr ""
-
-#: src/tools/testfind.c:390
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:407
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:416
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/tools/testfind.c:419
-#, c-format
-msgid "Path: %s\n"
-msgstr ""
-
-#: src/tools/cats_test.c:60
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -q                print only errors\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/cats_test.c:376
-#, c-format
-msgid "Could not open, database \"%s\".\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:151
-#, c-format
-msgid "Fatal malformed reply from %s: %s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:159
-#, c-format
-msgid "Fatal fgets error: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"       -f          set the From: field\n"
-"       -h          use mailhost:port as the SMTP server\n"
-"       -s          set the Subject: field\n"
-"       -r          set the Reply-To: field\n"
-"       -l          set the maximum number of lines to send (default: "
-"unlimited)\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:379
-msgid "Fatal error: no recipient given.\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:407
-#, c-format
-msgid "Fatal gethostname error: ERR=%s\n"
-msgstr ""
-
-#: 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:486 src/tools/bsmtp.c:521
-#, c-format
-msgid "Error unknown mail host \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
-msgid "Retrying connection using \"localhost\".\n"
-msgstr ""
-
-#: 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:541 src/tools/bsmtp.c:546
-#, c-format
-msgid "Fatal socket error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:551
-#, c-format
-msgid "Fatal connect error to %s: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:560
-#, c-format
-msgid "Fatal _open_osfhandle error: ERR=%s\n"
-msgstr ""
-
-#: 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:576
-#, c-format
-msgid "Fatal dup error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:195
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:212
-#, c-format
-msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:214
-#, c-format
-msgid "Error there is no Catalog section in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:223
-msgid "Error no Director resource defined.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:247
-msgid "Wrong number of arguments.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:252
-msgid "Working directory not supplied.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:288
-msgid "Database port must be a numeric value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:291
-msgid "Database port must be a int value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:365
-#, c-format
-msgid "Hello, this is the database check/correct program.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:367
-#, c-format
-msgid "Modify database is on."
-msgstr ""
-
-#: src/tools/dbcheck.c:369
-#, c-format
-msgid "Modify database is off."
-msgstr ""
-
-#: src/tools/dbcheck.c:371 src/tools/dbcheck.c:432
-#, c-format
-msgid " Verbose is on.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:373 src/tools/dbcheck.c:434
-#, c-format
-msgid " Verbose is off.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:375
-#, c-format
-msgid "Please select the function you want to perform.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:379
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:398
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:418
-msgid "Select function number: "
-msgstr ""
-
-#: src/tools/dbcheck.c:425
-#, c-format
-msgid "Database will be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:427
-#, c-format
-msgid "Database will NOT be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:518
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:525
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:532
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:539
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:546
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:599
-#, c-format
-msgid "Deleting: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:671
-#, c-format
-msgid "Checking for duplicate Filename entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:682
-#, c-format
-msgid "Found %d duplicate Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:683
-msgid "Print the list? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:706 src/tools/dbcheck.c:771
-#, c-format
-msgid "Found %d for: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:736
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:747
-#, c-format
-msgid "Found %d duplicate Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:748 src/tools/dbcheck.c:810 src/tools/dbcheck.c:856
-#: src/tools/dbcheck.c:924 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1025
-#: src/tools/dbcheck.c:1067 src/tools/dbcheck.c:1109 src/tools/dbcheck.c:1146
-#: src/tools/dbcheck.c:1179 src/tools/dbcheck.c:1213 src/tools/dbcheck.c:1280
-msgid "Print them? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:801
-#, c-format
-msgid "Checking for orphaned JobMedia entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:809
-#, c-format
-msgid "Found %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:827
-#, c-format
-msgid "Deleting %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:844
-#, c-format
-msgid "Checking for orphaned File entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:855
-#, c-format
-msgid "Found %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:872
-#, c-format
-msgid "Deleting %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:891
-#, c-format
-msgid "Pruning orphaned Path entries isn't possible when using BVFS.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:900 src/tools/dbcheck.c:958
-msgid "Create temporary index? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:912
-#, c-format
-msgid "Checking for orphaned Path entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:923
-#, c-format
-msgid "Found %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:936
-#, c-format
-msgid "Deleting %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:970
-#, c-format
-msgid "Checking for orphaned Filename entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:981
-#, c-format
-msgid "Found %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:994
-#, c-format
-msgid "Deleting %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1014
-#, c-format
-msgid "Checking for orphaned FileSet entries. This takes some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1024
-#, c-format
-msgid "Found %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1039
-#, c-format
-msgid "Deleting %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1048
-#, c-format
-msgid "Checking for orphaned Client entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1066
-#, c-format
-msgid "Found %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1081
-#, c-format
-msgid "Deleting %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1090
-#, c-format
-msgid "Checking for orphaned Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1108
-#, c-format
-msgid "Found %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1123
-#, c-format
-msgid "Deleting %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1125
-#, c-format
-msgid "Deleting JobMedia records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1127
-#, c-format
-msgid "Deleting Log records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1136
-#, c-format
-msgid "Checking for Admin Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1145
-#, c-format
-msgid "Found %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1160
-#, c-format
-msgid "Deleting %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1169
-#, c-format
-msgid "Checking for Restore Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1178
-#, c-format
-msgid "Found %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1193
-#, c-format
-msgid "Deleting %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1203
-#, c-format
-msgid "Checking for Filenames with a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1212
-#, c-format
-msgid "Found %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1230 src/tools/dbcheck.c:1296
-#, c-format
-msgid "Reparing %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1270
-#, c-format
-msgid "Checking for Paths without a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1279
-#, c-format
-msgid "Found %d bad Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1442
-#, c-format
-msgid ""
-"Ok. Index over the %s column already exists and dbcheck will work faster.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1445
-#, c-format
-msgid ""
-"Note. Index over the %s column not found, that can greatly slow down "
-"dbcheck.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1460
-#, c-format
-msgid "Create temporary index... This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1468
-#, c-format
-msgid "Temporary index created.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1483
-#, c-format
-msgid "Drop temporary index.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1493
-#, c-format
-msgid "Temporary index %s deleted.\n"
-msgstr ""
-
-#: src/filed/verify.c:57
-#, c-format
-msgid "Cannot malloc %d network read buffer\n"
-msgstr ""
-
-#: src/filed/verify.c:127
-#, c-format
-msgid "     Could not access %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:134
-#, c-format
-msgid "     Could not follow link %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:141
-#, c-format
-msgid "     Could not stat %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:147 src/filed/backup.c:450
-#, c-format
-msgid "     Unchanged file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:150
-#, c-format
-msgid "     Archive file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:153
-#, c-format
-msgid "     Recursion turned off. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:157
-#, c-format
-msgid "     File system change prohibited. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:165
-#, c-format
-msgid "     Could not open directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:170
-#, c-format
-msgid "     Unknown file type %d: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:214 src/filed/verify_vol.c:206
-#, c-format
-msgid "Network error in send to Director: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
-#, c-format
-msgid "%s digest initialization failed\n"
-msgstr ""
-
-#: src/filed/verify.c:309
-#, c-format
-msgid "     Cannot open %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:323
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:386
-#, c-format
-msgid "Error reading file %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/accurate.c:201
-#, c-format
-msgid "Space saved with Base jobs: %lld MB\n"
-msgstr ""
-
-#: src/filed/accurate.c:400
-#, c-format
-msgid "Cannot verify checksum for %s\n"
-msgstr ""
-
-#: src/filed/accurate.c:508
-msgid "2991 Bad accurate command\n"
-msgstr ""
-
-#: src/filed/status.c:89
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d running=%d.\n"
-msgstr ""
-
-#: src/filed/status.c:149
-#, c-format
-msgid " Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d "
-msgstr ""
-
-#: src/filed/status.c:194
-#, c-format
-msgid "Director connected at: %s\n"
-msgstr ""
-
-#: src/filed/status.c:196
-#, c-format
-msgid "JobId %d Job %s is running.\n"
-msgstr ""
-
-#: src/filed/status.c:199
-#, c-format
-msgid "    %s%s %s Job started: %s\n"
-msgstr ""
-
-#: src/filed/status.c:212
-#, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
-msgstr ""
-
-#: src/filed/status.c:218
-#, c-format
-msgid "    Files Examined=%s\n"
-msgstr ""
-
-#: src/filed/status.c:223
-#, c-format
-msgid "    Processing file: %s\n"
-msgstr ""
-
-#: src/filed/status.c:234
-msgid "    SDSocket closed.\n"
-msgstr ""
-
-#: src/filed/status.c:244 src/filed/status.c:335 src/filed/status.c:409
-msgid "====\n"
-msgstr ""
-
-#: src/filed/status.c:306
-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 ""
-
-#: src/filed/status.c:497
-msgid "2900 Bad .status command, wrong argument.\n"
-msgstr ""
-
-#: src/filed/status.c:565
-msgid "Bacula Client: Idle"
-msgstr ""
-
-#: src/filed/status.c:576
-msgid "Bacula Client: Running"
-msgstr ""
-
-#: src/filed/status.c:590
-msgid "Bacula Client: Last Job Canceled"
-msgstr ""
-
-#: src/filed/status.c:594
-msgid "Bacula Client: Last Job Failed"
-msgstr ""
-
-#: src/filed/status.c:598
-msgid "Bacula Client: Last Job had Warnings"
-msgstr ""
-
-#: 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:245
-#, c-format
-msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:259
-#, c-format
-msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
-msgstr ""
-
-#: 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:467 src/filed/xattr.c:520
-#, c-format
-msgid "lgetea error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:643
-#, c-format
-msgid "lsetea error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:968
-#, c-format
-msgid "Received illegal xattr named %s on file \"%s\"\n"
-msgstr ""
-
-#: 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:1161 src/filed/xattr.c:1196
-#, c-format
-msgid "llistxattr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1435
-#, c-format
-msgid "lsetxattr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1648
-#, c-format
-msgid "Failed to convert %d into namespace on file \"%s\"\n"
-msgstr ""
-
-#: 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:1907
-#, c-format
-msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:1920
-#, c-format
-msgid "Failed to convert %s into namespace on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:1941
-#, c-format
-msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2262
-#, c-format
-msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:2291
-#, c-format
-msgid "setproplist error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2679
-#, c-format
-msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2886
-#, c-format
-msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:2909
-#, c-format
-msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:2984
-#, c-format
-msgid "Unable to read content of xattr %s on file \"%s\"\n"
-msgstr ""
-
-#: 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:3081 src/filed/xattr.c:3330
-#, c-format
-msgid "Unable to open file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:3146
-#, c-format
-msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3238
-#, c-format
-msgid "Unable to convert acl from text on file \"%s\"\n"
-msgstr ""
-
-#: 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:3344
-#, c-format
-msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3408
-#, c-format
-msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3448
-#, c-format
-msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3466
-#, c-format
-msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3484
-#, c-format
-msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:3570
-#, c-format
-msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3629
-#, c-format
-msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3673
-#, c-format
-msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3734
-#, c-format
-msgid "Failed to restore extensible attributes on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3747
-#, c-format
-msgid "Failed to restore extended attributes on file \"%s\"\n"
-msgstr ""
-
-#: 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:3891
-#, c-format
-msgid ""
-"Can't restore Extended Attributes of %s - incompatible xattr stream "
-"encountered - %d\n"
-msgstr ""
-
-#: 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:563
-#, c-format
-msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
-msgstr ""
-
-#: 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:775
-msgid "Plugin save packet not found.\n"
-msgstr ""
-
-#: src/filed/fd_plugins.c:910
-#, c-format
-msgid "Plugin=%s not found.\n"
-msgstr ""
-
-#: src/filed/fd_plugins.c:977
-#, c-format
-msgid "Plugin createFile call failed. Stat=%d file=%s\n"
-msgstr ""
-
-#: 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:1859
-msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
-msgstr ""
-
-#: src/filed/filed.c:76
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -d <nn>     set debug level to <nn>\n"
-"        -dt         print a timestamp in debug output\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g          groupid\n"
-"        -k          keep readall capabilities\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test configuration file and exit\n"
-"        -u          userid\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/filed/filed.c:199
-msgid "-k option has no meaning without -u option.\n"
-msgstr ""
-
-#: src/filed/filed.c:337
-#, c-format
-msgid ""
-"No File daemon resource defined in %s\n"
-"Without that I don't know who I am :-(\n"
-msgstr ""
-
-#: src/filed/filed.c:342
-#, c-format
-msgid "Only one Client resource permitted in %s\n"
-msgstr ""
-
-#: src/filed/filed.c:366
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"File daemon in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:390
-msgid "PKI encryption/signing enabled but not compiled into Bacula.\n"
-msgstr ""
-
-#: src/filed/filed.c:401
-#, c-format
-msgid ""
-"\"PKI Key Pair\" must be defined for File daemon \"%s\" in %s if either "
-"\"PKI Sign\" or \"PKI Encrypt\" are enabled.\n"
-msgstr ""
-
-#: src/filed/filed.c:413 src/filed/filed.c:444 src/filed/filed.c:485
-msgid "Failed to allocate a new keypair object.\n"
-msgstr ""
-
-#: src/filed/filed.c:417
-#, c-format
-msgid "Failed to load public certificate for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:423
-#, c-format
-msgid "Failed to load private key for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:453
-#, c-format
-msgid "Failed to load private key from file %s for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:460
-#, c-format
-msgid ""
-"Failed to load trusted signer certificate from file %s for File daemon \"%s"
-"\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:491
-#, c-format
-msgid ""
-"Failed to load master key certificate from file %s for File daemon \"%s\" in "
-"%s.\n"
-msgstr ""
-
-#: src/filed/filed.c:507
-#, c-format
-msgid "No Director resource defined in %s\n"
-msgstr ""
-
-#: 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:280
-#, c-format
-msgid "Unknown acl type encountered on file \"%s\": %ld\n"
-msgstr ""
-
-#: 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:386
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
-"support\n"
-msgstr ""
-
-#: 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:442 src/filed/acl.c:452
-#, c-format
-msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:478
-#, c-format
-msgid "aclx_put error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:823
-#, c-format
-msgid "acl_to_text error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:853
-#, c-format
-msgid "acl_get_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:912
-#, c-format
-msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:923
-#, c-format
-msgid "acl_from_text error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:939
-#, c-format
-msgid "acl_valid error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:980
-#, c-format
-msgid "acl_set_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1246
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
-msgstr ""
-
-#: src/filed/acl.c:1531
-#, c-format
-msgid "getacl error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:1566
-#, c-format
-msgid "acltostr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1627
-#, c-format
-msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
-msgstr ""
-
-#: src/filed/acl.c:1635
-#, c-format
-msgid "setacl error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:1760
-#, c-format
-msgid "acl_get error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1863
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
-"support\n"
-msgstr ""
-
-#: 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:1890
-#, c-format
-msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1937
-#, c-format
-msgid "acl_set error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2023
-#, c-format
-msgid "acltotext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2046
-#, c-format
-msgid "aclfromtext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2066
-#, c-format
-msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/filed/verify_vol.c:63
-msgid "Storage command not issued before Verify.\n"
-msgstr ""
-
-#: 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:498
-#, c-format
-msgid "Data record error. ERR=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/filed/verify_vol.c:143
-#, c-format
-msgid "Error scanning record header: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:102
-msgid "Cannot set buffer size FD->SD.\n"
-msgstr ""
-
-#: src/filed/backup.c:194
-#, c-format
-msgid "Encountered %ld acl errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:198
-#, c-format
-msgid "Encountered %ld xattr errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:267 src/filed/backup.c:276
-msgid "An error occurred while encrypting the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:387
-#, c-format
-msgid "     Recursion turned off. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:394
-#, c-format
-msgid "     %s is a different filesystem. Will not descend from %s into it.\n"
-msgstr ""
-
-#: src/filed/backup.c:400
-#, c-format
-msgid "     Disallowed filesystem. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:405
-#, c-format
-msgid "     Disallowed drive type. Will not descend into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:416
-#, c-format
-msgid "     Socket file skipped: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:429
-#, c-format
-msgid "     Could not access \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:436
-#, c-format
-msgid "     Could not follow link \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:443
-#, c-format
-msgid "     Could not stat \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:453
-#, c-format
-msgid "     Archive file not saved: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:457
-#, c-format
-msgid "     Could not open directory \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:466
-#, c-format
-msgid "     Unknown file type %d; not saved: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:522
-#, c-format
-msgid "%s signature digest initialization failed\n"
-msgstr ""
-
-#: src/filed/backup.c:630
-#, c-format
-msgid "     Cannot open \"%s\": ERR=%s.\n"
-msgstr ""
-
-#: src/filed/backup.c:667
-#, c-format
-msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
-msgstr ""
-
-#: src/filed/backup.c:763
-msgid "Failed to allocate memory for crypto signature.\n"
-msgstr ""
-
-#: 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:813
-msgid "An error occurred finalizing signing the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:931
-#, c-format
-msgid "Compression deflateParams error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:968
-msgid "Encrypting sparse or offset data not supported.\n"
-msgstr ""
-
-#: src/filed/backup.c:975
-msgid "Failed to initialize encryption context.\n"
-msgstr ""
-
-#: src/filed/backup.c:1085
-#, c-format
-msgid "Compression deflate error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1092
-#, c-format
-msgid "Compression deflateReset error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1126
-#, c-format
-msgid "Compression LZO error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1171 src/filed/backup.c:1187
-msgid "Encryption error\n"
-msgstr ""
-
-#: src/filed/backup.c:1213
-#, c-format
-msgid "Read error on file %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:1216
-#, c-format
-msgid "Too many errors. JobErrors=%d.\n"
-msgstr ""
-
-#: src/filed/backup.c:1226
-msgid "Encryption padding error\n"
-msgstr ""
-
-#: src/filed/backup.c:1290
-msgid "Invalid file flags, no supported data stream type.\n"
-msgstr ""
-
-#: src/filed/backup.c:1549
-#, c-format
-msgid "VSS Writer (BackupComplete): %s\n"
-msgstr ""
-
-#: src/filed/restore.c:114
-#, c-format
-msgid "Size of data or stream of %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/filed/restore.c:134
-#, c-format
-msgid "Invalid length of Finder Info (got %d, not 32)\n"
-msgstr ""
-
-#: src/filed/restore.c:139
-#, c-format
-msgid "Could not set Finder Info on %s\n"
-msgstr ""
-
-#: src/filed/restore.c:418
-msgid "LZO init failed\n"
-msgstr ""
-
-#: src/filed/restore.c:660
-msgid "Unexpected cryptographic session data stream.\n"
-msgstr ""
-
-#: src/filed/restore.c:670
-msgid ""
-"No private decryption keys have been defined to decrypt encrypted backup "
-"data.\n"
-msgstr ""
-
-#: src/filed/restore.c:681
-msgid "Could not create digest.\n"
-msgstr ""
-
-#: src/filed/restore.c:699
-msgid "Missing private key required to decrypt encrypted backup data.\n"
-msgstr ""
-
-#: src/filed/restore.c:702
-msgid "Decrypt of the session key failed.\n"
-msgstr ""
-
-#: src/filed/restore.c:708
-#, c-format
-msgid "An error occurred while decoding encrypted session data stream: %s\n"
-msgstr ""
-
-#: 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:783 src/filed/restore.c:835
-#, c-format
-msgid "Failed to initialize decryption context for %s\n"
-msgstr ""
-
-#: src/filed/restore.c:847
-#, c-format
-msgid "Cannot open resource fork for %s.\n"
-msgstr ""
-
-#: src/filed/restore.c:992
-msgid "Unexpected cryptographic signature data stream.\n"
-msgstr ""
-
-#: src/filed/restore.c:1000
-#, c-format
-msgid "Failed to decode message signature for %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1064
-#, c-format
-msgid "Encountered %ld acl errors while doing restore\n"
-msgstr ""
-
-#: src/filed/restore.c:1068
-#, c-format
-msgid "Encountered %ld xattr errors while doing restore\n"
-msgstr ""
-
-#: 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:1076
-#, c-format
-msgid "%d non-supported resource fork streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1079
-#, c-format
-msgid "%d non-supported Finder Info streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1082
-#, c-format
-msgid "%d non-supported acl streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1085
-#, c-format
-msgid "%d non-supported crypto streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1088
-#, c-format
-msgid "%d non-supported xattr streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1168
-msgid "Zlib errno"
-msgstr ""
-
-#: src/filed/restore.c:1170
-msgid "Zlib stream error"
-msgstr ""
-
-#: src/filed/restore.c:1172
-msgid "Zlib data error"
-msgstr ""
-
-#: src/filed/restore.c:1174
-msgid "Zlib memory error"
-msgstr ""
-
-#: src/filed/restore.c:1176
-msgid "Zlib buffer error"
-msgstr ""
-
-#: src/filed/restore.c:1178
-msgid "Zlib version error"
-msgstr ""
-
-#: src/filed/restore.c:1218
-#, c-format
-msgid "Missing cryptographic signature for %s\n"
-msgstr ""
-
-#: 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:1268
-#, c-format
-msgid "Digest one file failed for file: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1307
-#, c-format
-msgid "Signature validation failed for %s: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1404
-#, c-format
-msgid "LZO uncompression error on file %s. ERR=%d\n"
-msgstr ""
-
-#: src/filed/restore.c:1441
-#, c-format
-msgid "Uncompression error on file %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/restore.c:1474
-#, c-format
-msgid "Write error in Win32 Block Decomposition on %s: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1533
-msgid "Decryption error\n"
-msgstr ""
-
-#: src/filed/restore.c:1626
-msgid "Logic error: output file should be open\n"
-msgstr ""
-
-#: src/filed/restore.c:1664
-msgid "Logic error: output file should not be open\n"
-msgstr ""
-
-#: 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:1819
-msgid "Open File Manager paused\n"
-msgstr ""
-
-#: src/filed/restore.c:1823
-msgid "FAILED to pause Open File Manager\n"
-msgstr ""
-
-#: src/filed/restore.c:1831
-#, c-format
-msgid "Running as '%s'. Privmask=%#08x\n"
-msgstr ""
-
-#: src/filed/restore.c:1833
-msgid "Failed to retrieve current UserName\n"
-msgstr ""
-
-#: src/filed/job.c:456
-#, c-format
-msgid "2901 Job %s not found.\n"
-msgstr ""
-
-#: src/filed/job.c:466
-#, c-format
-msgid "2001 Job %s marked to be canceled.\n"
-msgstr ""
-
-#: src/filed/job.c:469
-msgid "2902 Error scanning cancel command.\n"
-msgstr ""
-
-#: src/filed/job.c:492
-#, c-format
-msgid "2991 Bad setdebug command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:515
-#, c-format
-msgid "Bad estimate command: %s"
-msgstr ""
-
-#: src/filed/job.c:516
-msgid "2992 Bad estimate command.\n"
-msgstr ""
-
-#: src/filed/job.c:539
-#, c-format
-msgid "Bad Job Command: %s"
-msgstr ""
-
-#: src/filed/job.c:578
-#, c-format
-msgid "Bad RunBeforeJob command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:579 src/filed/job.c:598
-msgid "2905 Bad RunBeforeJob command.\n"
-msgstr ""
-
-#: src/filed/job.c:609
-msgid "2905 Bad RunBeforeNow command.\n"
-msgstr ""
-
-#: src/filed/job.c:628
-#, c-format
-msgid "Bad RunAfter command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:629
-msgid "2905 Bad RunAfterJob command.\n"
-msgstr ""
-
-#: src/filed/job.c:665
-#, c-format
-msgid "Bad RunScript command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:666
-msgid "2905 Bad RunScript command.\n"
-msgstr ""
-
-#: src/filed/job.c:720
-#, c-format
-msgid "Bad RestoreObject command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:785
-msgid "2909 Bad RestoreObject command.\n"
-msgstr ""
-
-#: src/filed/job.c:824
-#, c-format
-msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
-msgstr ""
-
-#: src/filed/job.c:866
-#, c-format
-msgid "Error running program: %s. stat=%d: ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:877
-#, c-format
-msgid "Cannot open FileSet input file: %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1031
-#, c-format
-msgid "REGEX %s compile error. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1182
-#, c-format
-msgid "Invalid FileSet command: %s\n"
-msgstr ""
-
-#: 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:1664
-#, c-format
-msgid "Unknown backup level: %s\n"
-msgstr ""
-
-#: src/filed/job.c:1677
-#, c-format
-msgid "Bad level command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:1699
-#, c-format
-msgid "Bad session command: %s"
-msgstr ""
-
-#: src/filed/job.c:1760
-#, c-format
-msgid "Bad storage command: %s"
-msgstr ""
-
-#: src/filed/job.c:1781
-#, c-format
-msgid "Failed to connect to Storage daemon: %s:%d\n"
-msgstr ""
-
-#: src/filed/job.c:1793
-msgid "Failed to authenticate Storage daemon.\n"
-msgstr ""
-
-#: src/filed/job.c:1840
-msgid "ACL support not configured for your machine.\n"
-msgstr ""
-
-#: src/filed/job.c:1844
-msgid "XATTR support not configured for your machine.\n"
-msgstr ""
-
-#: src/filed/job.c:1853
-msgid "Cannot contact Storage daemon\n"
-msgstr ""
-
-#: src/filed/job.c:1872
-#, c-format
-msgid "Bad response to append open: %s\n"
-msgstr ""
-
-#: src/filed/job.c:1877
-msgid "Bad response from stored to open command\n"
-msgstr ""
-
-#: src/filed/job.c:1909
-#, c-format
-msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
-msgstr ""
-
-#: src/filed/job.c:1912
-#, c-format
-msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1919
-#, c-format
-msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
-msgstr ""
-
-#: src/filed/job.c:1925
-#, c-format
-msgid "VSS Writer (PrepareForBackup): %s\n"
-msgstr ""
-
-#: src/filed/job.c:1930
-msgid "No drive letters found for generating VSS snapshots.\n"
-msgstr ""
-
-#: src/filed/job.c:1934
-#, c-format
-msgid "VSS was not initialized properly. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1985
-msgid "Append Close with SD failed.\n"
-msgstr ""
-
-#: src/filed/job.c:1989
-#, c-format
-msgid "Bad status %d returned from Storage Daemon.\n"
-msgstr ""
-
-#: src/filed/job.c:2019
-#, c-format
-msgid "2994 Bad verify command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:2034 src/filed/job.c:2075
-#, c-format
-msgid "2994 Bad verify level: %s\n"
-msgstr ""
-
-#: src/filed/job.c:2146
-#, c-format
-msgid "Bad replace command. CMD=%s\n"
-msgstr ""
-
-#: src/filed/job.c:2169
-#, c-format
-msgid "Bad where regexp. where=%s\n"
-msgstr ""
-
-#: 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:2252
-#, c-format
-msgid "VSS Writer (RestoreComplete): %s\n"
-msgstr ""
-
-#: src/filed/job.c:2302
-msgid "Improper calling sequence.\n"
-msgstr ""
-
-#: src/filed/job.c:2322
-#, c-format
-msgid "Bad response to SD read open: %s\n"
-msgstr ""
-
-#: src/filed/job.c:2327
-msgid "Bad response from stored to read open command\n"
-msgstr ""
-
-#: src/filed/job.c:2391
-#, c-format
-msgid "Comm error with SD. bad response to %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:2394
-#, c-format
-msgid "Bad response to %s command. Wanted %s, got %s\n"
-msgstr ""
-
-#: src/filed/authenticate.c:68
-#, c-format
-msgid "I only authenticate directors, not %d\n"
-msgstr ""
-
-#: src/filed/authenticate.c:100
-#, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
-msgstr ""
-
-#: src/filed/authenticate.c:144
-#, c-format
-msgid "Incorrect password given by Director at %s.\n"
-msgstr ""
-
-#: src/filed/authenticate.c:263
-msgid ""
-"Authorization key rejected by Storage daemon.\n"
-"Please see "
-msgstr ""
-
-#: examples/nagios/check_bacula/check_bacula.c:59
-#, c-format
-msgid ""
-"Copyright (C) 2005 Christian Masopust\n"
-"Written by Christian Masopust (2005)\n"
-"\n"
-"Version: "
-msgstr ""
-
-#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
-#, c-format
-msgid "Failed ASSERT: %s\n"
-msgstr ""
-
-#: src/win32/compat/compat.cpp:2721
-msgid ""
-"\n"
-"\n"
-"Bacula ERROR: "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:107
-msgid "RegisterServiceCtlHandler failed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:108
-msgid "Failure contacting the Service Handler"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:119
-msgid "Service start report failed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:172
-msgid "StartServiceCtrlDispatcher failed."
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:179
-msgid "KERNEL32.DLL not found: Bacula service not started"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:189
-msgid "Registry service not found: Bacula service not started"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:191
-msgid "Registry service entry point not found"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:212
-msgid "Report Service failure"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:243
-msgid "Unable to install the service"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:251
-msgid "Service command length too long"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:252
-msgid "Service command length too long. Service not registered."
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:265
-msgid ""
-"The Service Control Manager could not be contacted - the service was not "
-"installed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:288 src/win32/libwin32/service.cpp:317
-#: src/win32/libwin32/service.cpp:365 src/win32/libwin32/service.cpp:373
-#: src/win32/libwin32/service.cpp:377
-msgid "The Bacula service: "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:295
-msgid ""
-"Provides file backup and restore services. Bacula -- the network backup "
-"solution."
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:306
-msgid "Cannot write System Registry for "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:307
-msgid ""
-"The System Registry could not be updated - the Bacula service was not "
-"installed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:316
-msgid "Cannot add Bacula key to System Registry"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:327
-msgid "The "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:385
-msgid "An existing Bacula service: "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:394
-msgid ""
-"The service Manager could not be contacted - the Bacula service was not "
-"removed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:407
-msgid ""
-"Could not find registry entry.\n"
-"Service probably not registerd - the Bacula service was not removed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:414
-msgid "Could not delete Registry key for "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:425
-msgid "Bacula could not be contacted, probably not running"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:433
-msgid "The Bacula service has been removed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:474
-msgid "SetServiceStatus failed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:500
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s error: %ld at %s:%d"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:576
-#, c-format
-msgid "Locked by: %s, duration: %ld seconds\n"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:580
-#, c-format
-msgid "No longer locked\n"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:584
-msgid "Could not lock database"
-msgstr ""
-
-#: src/win32/libwin32/main.cpp:245
-msgid "Bad Command Line Option"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:65
-msgid "Config file editor"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:75
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:112
-msgid "Close without saving"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-#, c-format
-msgid "Unable to write to %s\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:140
-msgid "Error while saving"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:234
-#: src/wx-console/wxbrestorepanel.cpp:1947
-#: src/wx-console/wxbrestorepanel.cpp:1976
-msgid "Enter restore mode"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:237
-msgid "Cancel restore"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
-msgid "Remove"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
-msgid "Refresh"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:290
-msgid "Filename"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:294
-msgid "Size"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1897
-msgid "Job Name"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1153
-#: src/wx-console/wxbrestorepanel.cpp:1156
-#: src/wx-console/wxbrestorepanel.cpp:1239
-#: src/wx-console/wxbrestorepanel.cpp:1849
-#: src/wx-console/wxbrestorepanel.cpp:1851
-#: src/wx-console/wxbrestorepanel.cpp:1912
-msgid "Fileset"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1233
-#: src/wx-console/wxbrestorepanel.cpp:1249
-#: src/wx-console/wxbrestorepanel.cpp:1251
-#: src/wx-console/wxbrestorepanel.cpp:1259
-#: src/wx-console/wxbrestorepanel.cpp:1261
-#: src/wx-console/wxbrestorepanel.cpp:1280
-#: src/wx-console/wxbrestorepanel.cpp:1287
-#: src/wx-console/wxbrestorepanel.cpp:1839
-#: src/wx-console/wxbrestorepanel.cpp:1850
-#: src/wx-console/wxbrestorepanel.cpp:1971
-msgid "Before"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:342
-msgid "Please configure parameters concerning files to restore :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1905
-msgid "always"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if newer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if older"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1908
-msgid "never"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:359
-msgid "Please configure parameters concerning files restoration :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:435
-msgid "Error : no clients returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:459
-msgid "Error : no filesets returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:483
-msgid "Error : no storage returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
-msgid "Error : no jobs returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:516
-msgid "RestoreFiles"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:551
-msgid "Please configure your restore parameters."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:556
-msgid "Please select a client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:560
-msgid "Please select a restore date."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:565
-msgid "Building restore tree..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:613
-msgid "Error while starting restore: "
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:705
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:720 src/wx-console/wxbmainframe.cpp:685
-msgid "Unexpected question has been received.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:742
-#: src/wx-console/wxbrestorepanel.cpp:764
-msgid "bwx-console: unexpected restore question."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:775
-msgid " files selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:780
-msgid " file selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:787
-#, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:797
-msgid "Restore failed : no file selected.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:798
-msgid "Restore failed : no file selected."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:808
-msgid "Restoring, please wait..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:821
-msgid "Job queued. JobId="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:823
-msgid "Restore queued, jobid="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:827
-msgid "Job failed."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:828
-msgid "Restore failed, please look at messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:829
-msgid "Restore failed, please look at messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:835
-#: src/wx-console/wxbrestorepanel.cpp:836
-msgid "Failed to retrieve jobid.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:862
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:863
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job created, but not yet running."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:894
-#, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:898
-msgid "Restore job terminated successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:899
-msgid "Restore job terminated successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:904
-msgid "Restore job terminated in error, see messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:905
-msgid "Restore job terminated in error, see messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:910
-msgid "Restore job reported a non-fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:914
-msgid "Restore job reported a fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:919
-msgid "Restore job cancelled by user."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:920
-msgid "Restore job cancelled by user.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:925
-msgid "Restore job is waiting on File daemon."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:929
-msgid "Restore job is waiting for new media."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:933
-msgid "Restore job is waiting for storage resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:937
-msgid "Restore job is waiting for job resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:941
-msgid "Restore job is waiting for Client resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:945
-msgid "Restore job is waiting for maximum jobs."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:949
-msgid "Restore job is waiting for start time."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:953
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1002
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1013
-msgid "Restore done successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1014
-msgid "Restore done successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1086
-msgid "Applying restore configuration changes..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1138
-msgid "Failed to find the selected client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1158
-msgid "Failed to find the selected fileset."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1178
-msgid "Failed to find the selected storage."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1199
-#: src/wx-console/wxbrestorepanel.cpp:1886
-msgid "Run Restore job"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1216
-msgid "Restore configuration changes were applied."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1225
-msgid "Restore cancelled.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1226
-msgid "Restore cancelled."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1248
-msgid "No results to list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1250
-msgid "No backup found for this client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1257
-msgid "ERROR"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1258
-msgid "Query failed"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1260
-msgid "Cannot get previous backups list, see console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1896
-msgid "JobName:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1898
-msgid "Bootstrap:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1900
-msgid "Where:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1903
-msgid "Replace:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1906
-msgid "ifnewer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1907
-msgid "ifolder"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1911
-msgid "FileSet:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1913
-msgid "Client:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1915
-msgid "Storage:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1917
-msgid "When:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1920
-msgid "Priority:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:2028
-msgid "Restoring..."
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:125
-#, 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 ""
-
-#: src/wx-console/console_thread.cpp:132
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:151
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:173
-msgid "Error while initializing windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:189
-msgid "Error while cleaning up windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:228
-msgid "Error while initializing library."
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:256
-msgid "Cryptographic library initialization failed.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:260
-msgid "Please correct configuration file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:302
-msgid "Error : Library not initialized\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:313
-msgid "Error : No configuration file loaded\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:323
-msgid "Connecting...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:339
-msgid "Error : No director defined in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:351
-msgid "Multiple directors found in your config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:360
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:389
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:410
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:432
-msgid "Failed to connect to the director\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:442
-msgid "Connected\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:499
-msgid "<< Unexpected signal received : "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:519
-msgid "Connection terminated\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigpanel.cpp:213
-msgid "Apply"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-#: src/wx-console/wxbmainframe.cpp:291
-msgid "Type your command below:"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:117
-msgid "Unknown command."
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:126
-msgid "Possible completions: "
-msgstr ""
-
-#: src/wx-console/main.cpp:119
-msgid "Bacula bwx-console"
-msgstr ""
-
-#: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
-#, c-format
-msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
-msgid "Connect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
-msgid "Connect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect of the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change of configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:252
-msgid "Edit your configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:258
-msgid "&File"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:283
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:419
-msgid "First run"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:438
-msgid "Unable to read configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:450
-msgid "Please choose a configuration file to use"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:463
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:464
-msgid "Configuration file read successfully"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:474
-#, c-format
-msgid "Using this configuration file: %s\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:479
-msgid "Connecting to the director..."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:521
-msgid "About Bacula bwx-console"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:527
-msgid "Please choose your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:531
-msgid "Use this configuration file as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:532
-msgid "Configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:603
-msgid "Console thread terminated."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:611
-msgid "Connection to the director lost. Quit program?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:612
-msgid "Connection lost"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:628
-msgid "Connected to the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:651
-msgid "Reconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:652
-msgid "Reconnect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:666
-msgid "Disconnected of the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr ""
-
-#: src/qt-console/tray-monitor/tray-monitor.cpp:67
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:92
-#, c-format
-msgid "Already connected\"%s\".\n"
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:105
-#, c-format
-msgid ""
-"Connecting to Director %s:%d\n"
-"\n"
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:208
-msgid "Initializing ..."
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
-msgid "Connected"
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:348
-msgid "Command completed ..."
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
-msgid "Processing command ..."
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:362
-msgid "At main prompt waiting for input ..."
-msgstr ""
-
-#: 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:390
-msgid "Command failed."
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:463
-msgid "Director disconnected."
-msgstr ""
-
-#: src/qt-console/bat_conf.cpp:154
-#, c-format
-msgid "Console: name=%s\n"
-msgstr ""
-
-#: src/qt-console/main.cpp:191
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: 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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          print this message.\n"
-"\n"
+msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
diff --git a/po/de.po b/po/de.po
index 2f671cb..10a06e9 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,18599 +1,4534 @@
-# translation of de.po to
+#
 # German translations for Bacula package
-# German messages for Bacula.
-# Copyright (C) 2005-2006 Free Software Foundation Europe e.V.
+# Copyright (C) 2005-2014 Free Software Foundation Europe e.V.
 # This file is distributed under the same license as the Bacula package.
 #
-#  <bacula-devel at lists.sourceforge.net>, 2005.
-# Philipp Storz <philipp.storz at dass-it.de>, 2007.
 msgid ""
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\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"
-"Language: \n"
+"POT-Creation-Date: 2014-07-29 18:18+0200\n"
+"PO-Revision-Date: 2005-04-15 14:11+01200\n"
+"Last-Translator: Kern Sibbald <kern at sibbald.com>\n"
+"Language-Team: German bacula-devel\n"
+"Language: German\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: src/dird/jobq.c:74
-#, c-format
-msgid "pthread_attr_init: ERR=%s\n"
-msgstr "pthread_attr_init: ERR=%s\n"
-
-#: src/dird/jobq.c:83
-#, c-format
-msgid "pthread_mutex_init: ERR=%s\n"
-msgstr "pthread_mutex_init: ERR=%s\n"
-
-#: src/dird/jobq.c:89
-#, c-format
-msgid "pthread_cond_init: ERR=%s\n"
-msgstr "pthread_cond_init: ERR=%s\n"
-
-#: src/dird/jobq.c:131
-#, c-format
-msgid "pthread_cond_broadcast: ERR=%s\n"
-msgstr "pthread_cond_broadcast: ERR=%s\n"
-
-#: src/dird/jobq.c:139
-#, c-format
-msgid "pthread_cond_wait: ERR=%s\n"
-msgstr "pthread_cond_wait: ERR=%s\n"
-
-#: src/dird/jobq.c:180
-#, c-format
-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: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"
-
-#: src/dird/jobq.c:242
-#, c-format
-msgid "pthread_thread_create: ERR=%s\n"
-msgstr "pthread_thread_create: ERR=%s\n"
-
-#: src/dird/jobq.c:352
-#, c-format
-msgid "pthread_cond_signal: ERR=%s\n"
-msgstr "pthread_cond_signal: ERR=%s\n"
-
-#: src/dird/jobq.c:363
-#, c-format
-msgid "pthread_create: ERR=%s\n"
-msgstr "pthread_create: ERR=%s\n"
-
-#: src/dird/jobq.c:647
-#, c-format
-msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
-msgstr ""
-" Job %s f�r %s erneut geplant um in %d seconds nachgestartet zu werden "
-"(%s).\n"
 
-#: src/dird/jobq.c:703 src/dird/jobq.c:708
-msgid "previous Job"
-msgstr "vorheriger Job"
-
-#: src/dird/jobq.c:745
-#, c-format
-msgid ""
-"Job canceled. Attempt to read and write same device.\n"
-"    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
-msgstr ""
-"Job abgebrochen. Versuch auf das selbe Ger�t zu lesen und zu schreiben.\n"
-"    lese storage \"%s\" (Von %s) -- schreib storage \"%s\" (Von %s)\n"
-
-#: src/dird/ua_select.c:54
+#: src/baconfig.h:60 src/baconfig.h:61 src/baconfig.h:66 src/baconfig.h:67
 #, c-format
-msgid "The current %s retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:59
-msgid "Continue? (yes/mod/no): "
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_select.c:67
-msgid "Invalid period.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:143
-msgid "You have the following choices:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:159
-msgid "The defined Storage resources are:\n"
-msgstr ""
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1176
-#: src/wx-console/wxbrestorepanel.cpp:1845
-#: src/wx-console/wxbrestorepanel.cpp:1916
-msgid "Storage"
-msgstr ""
-
-#: src/dird/ua_select.c:167
-msgid "Select Storage resource"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:182 src/dird/ua_restore.c:1296
-msgid "The defined FileSet resources are:\n"
+#: src/baconfig.h:76
+msgid "*None*"
 msgstr ""
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
-msgid "FileSet"
+#: src/lib/status.h:73
+msgid ""
+"\n"
+"Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300
-msgid "Select FileSet resource"
+#: src/lib/status.h:80
+msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
-msgid "Could not find a Catalog resource\n"
+#: src/lib/status.h:82
+msgid "===================================================================\n"
 msgstr ""
 
-#: src/dird/ua_select.c:223
-msgid "You must specify a \"use <catalog-name>\" command before continuing.\n"
+#: src/lib/status.h:102
+msgid "Created"
 msgstr ""
 
-#: src/dird/ua_select.c:229
-msgid "The defined Catalog resources are:\n"
+#: src/lib/status.h:106
+msgid "Error"
 msgstr ""
 
-#: src/dird/ua_select.c:237
-msgid "Catalog"
+#: src/lib/status.h:109
+msgid "Diffs"
 msgstr ""
 
-#: src/dird/ua_select.c:237
-msgid "Select Catalog resource"
+#: src/lib/status.h:112
+msgid "Cancel"
 msgstr ""
 
-#: src/dird/ua_select.c:255 src/dird/ua_select.c:281
-msgid "The defined Job resources are:\n"
+#: src/lib/status.h:115
+msgid "OK"
 msgstr ""
 
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: 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"
+#: src/lib/status.h:118
+#, fuzzy
+msgid "OK -- with warnings"
+msgstr "%s OK -- mit Warnungen"
 
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289
-msgid "Select Job resource"
+#: src/lib/status.h:122
+msgid "Other"
 msgstr ""
 
-#: src/dird/ua_select.c:308
+#: src/lib/status.h:134
 #, c-format
-msgid "Error: Restore Job resource \"%s\" does not exist.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:322
-msgid "The defined Restore Job resources are:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:330
-msgid "Select Restore Job"
-msgstr ""
-
-#: src/dird/ua_select.c:347
-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: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
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:700
-#: src/wx-console/wxbrestorepanel.cpp:1133
-#: src/wx-console/wxbrestorepanel.cpp:1136
-#: src/wx-console/wxbrestorepanel.cpp:1238
-#: src/wx-console/wxbrestorepanel.cpp:1838
-#: src/wx-console/wxbrestorepanel.cpp:1840
-#: src/wx-console/wxbrestorepanel.cpp:1914
-#: src/wx-console/wxbrestorepanel.cpp:1970
-msgid "Client"
-msgstr ""
-
-#: src/dird/ua_select.c:355
-msgid "Select Client (File daemon) resource"
+msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:382
+#: src/lib/status.h:142
 #, c-format
-msgid "Error: Client resource %s does not exist.\n"
+msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:407
-#, c-format
-msgid "Could not find Client %s: ERR=%s"
-msgstr ""
+#: src/lib/status.h:171 src/lib/status.h:182 src/lib/status.h:196
+#: src/lib/status.h:200 src/lib/status.h:204
+msgid "Bacula "
+msgstr "Bacula "
 
-#: src/dird/ua_select.c:417 src/dird/ua_select.c:471
+#: src/qt-console/bat_conf.cpp:130
 #, c-format
-msgid "Could not find Client \"%s\": ERR=%s"
+msgid "No record for %d %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:446
+#: src/qt-console/bat_conf.cpp:139
 #, c-format
-msgid "Error obtaining client ids. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:450
-msgid "No clients defined. You must run a job before using this command.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:454
-msgid "Defined Clients:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:464
-msgid "Select the Client"
+msgid "Director: name=%s address=%s DIRport=%d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:497 src/dird/ua_select.c:521 src/dird/ua_select.c:566
+#: src/qt-console/bat_conf.cpp:143
 #, c-format
-msgid "Could not find Pool \"%s\": ERR=%s"
+msgid "Console: name=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
+#: src/qt-console/bat_conf.cpp:146
+#: src/qt-console/tray-monitor/tray_conf.cpp:183
 #, c-format
-msgid "Error obtaining pool ids. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:536
-msgid "No pools defined. Use the \"create\" command to create one.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:540
-msgid "Defined Pools:\n"
-msgstr ""
-
-#: 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: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 ""
-
-#: src/dird/ua_select.c:553
-msgid "Select the Pool"
+msgid "ConsoleFont: name=%s font face=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:591
+#: src/qt-console/bat_conf.cpp:150 src/qt-console/bat_conf.cpp:231
+#: src/qt-console/bat_conf.cpp:279 src/qt-console/bat_conf.cpp:309
 #, c-format
-msgid "No access to Pool \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_select.c:623
-msgid "Enter *MediaId or Volume name: "
-msgstr ""
-
-#: src/dird/ua_select.c:658
-msgid "The defined Pool resources are:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:666
-msgid "Select Pool resource"
+msgid "Unknown resource type %d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
+#: src/qt-console/bat_conf.cpp:257
+#: src/qt-console/tray-monitor/tray_conf.cpp:276
 #, c-format
-msgid "Error: Pool resource \"%s\" does not exist.\n"
-msgstr ""
+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/ua_select.c:701
-msgid "Enter the JobId to select: "
+#: src/qt-console/bat_conf.cpp:326
+#: src/qt-console/tray-monitor/tray_conf.cpp:360
+#, c-format
+msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
+"Der Versuch der Definition einer zweiten  %s resource mit dem Namen \"%s\" "
+"ist nicht erlaubt.\n"
 
-#: src/dird/ua_select.c:739
+#: src/qt-console/bcomm/dircomm.cpp:85
 #, c-format
-msgid "Could not find Job \"%s\": ERR=%s"
+msgid "Already connected\"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:819
+#: src/qt-console/bcomm/dircomm.cpp:96
+#: src/qt-console/tray-monitor/tray-monitor.cpp:347
 #, c-format
-msgid "Automatically selected %s: %s\n"
+msgid "Connecting to Director %s:%d"
 msgstr ""
 
-#: src/dird/ua_select.c:830
+#: src/qt-console/bcomm/dircomm.cpp:98
 #, c-format
 msgid ""
-"Your request has multiple choices for \"%s\". Selection is not possible in "
-"batch mode.\n"
+"Connecting to Director %s:%d\n"
+"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:848
+#: src/qt-console/bcomm/dircomm.cpp:150
 #, c-format
-msgid "Selection list for \"%s\" is empty!\n"
+msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:854
+#: src/qt-console/bcomm/dircomm.cpp:173
 #, c-format
-msgid "Automatically selected: %s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:866
-msgid "Selection aborted, nothing done.\n"
+msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:871
-#, c-format
-msgid "Please enter a number between 1 and %d\n"
+#: src/qt-console/bcomm/dircomm.cpp:195
+#: src/qt-console/tray-monitor/tray-monitor.cpp:352
+msgid "Director daemon"
 msgstr ""
 
-#: src/dird/ua_select.c:920
-msgid "Storage name given twice.\n"
+#: src/qt-console/bcomm/dircomm.cpp:233
+msgid "Initializing ..."
 msgstr ""
 
-#: src/dird/ua_select.c:937
-#, c-format
-msgid "Expecting jobid=nn command, got: %s\n"
+#: src/qt-console/bcomm/dircomm.cpp:249 src/qt-console/console/console.cpp:130
+msgid "Connected"
 msgstr ""
 
-#: src/dird/ua_select.c:941
-#, c-format
-msgid "JobId %s is not running.\n"
+#: src/qt-console/bcomm/dircomm.cpp:373
+msgid "Command completed ..."
 msgstr ""
 
-#: src/dird/ua_select.c:951
-#, c-format
-msgid "Expecting job=xxx, got: %s.\n"
+#: src/qt-console/bcomm/dircomm.cpp:380 src/qt-console/console/console.cpp:367
+msgid "Processing command ..."
 msgstr ""
 
-#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
-#, c-format
-msgid "Job \"%s\" is not running.\n"
+#: src/qt-console/bcomm/dircomm.cpp:387
+msgid "At main prompt waiting for input ..."
 msgstr ""
 
-#: src/dird/ua_select.c:963
-#, c-format
-msgid "Expecting ujobid=xxx, got: %s.\n"
+#: src/qt-console/bcomm/dircomm.cpp:394 src/qt-console/bcomm/dircomm.cpp:407
+msgid "At prompt waiting for input ..."
 msgstr ""
 
-#: src/dird/ua_select.c:983
-#, c-format
-msgid "Storage resource \"%s\": not found\n"
+#: src/qt-console/bcomm/dircomm.cpp:415
+msgid "Command failed."
 msgstr ""
 
-#: src/dird/ua_select.c:1015
-msgid "Enter autochanger drive[0]: "
+#: src/qt-console/bcomm/dircomm.cpp:487
+msgid "Director disconnected."
 msgstr ""
 
-#: src/dird/ua_select.c:1036
-msgid "Enter autochanger slot: "
-msgstr ""
+#: src/qt-console/bcomm/dircomm_auth.cpp:107
+#, fuzzy, c-format
+msgid "Director authorization problem at \"%s:%d\"\n"
+msgstr "Authorisationsproblem: FD an \"%s:%d\" erfordert TLS.\n"
 
-#: src/dird/ua_select.c:1066
-msgid "Media Types defined in conf file:\n"
+#: src/qt-console/bcomm/dircomm_auth.cpp:114
+#, fuzzy, c-format
+msgid ""
+"Authorization problem: Remote server at \"%s:%d\" did not advertise required "
+"TLS support.\n"
 msgstr ""
+"Authorisationsproblem: Entfernter Server hat ben�tigte TLS Unterst�tzung "
+"nicht angeboten.\n"
 
-#: src/dird/ua_select.c:1072
-msgid "Media Type"
-msgstr ""
+#: src/qt-console/bcomm/dircomm_auth.cpp:122
+#, fuzzy, c-format
+msgid ""
+"Authorization problem with Director at \"%s:%d\": Remote server requires "
+"TLS.\n"
+msgstr "Authorisationsproblem: Enfernter Server erfordert TLS.\n"
 
-#: src/dird/ua_select.c:1072
-msgid "Select the Media Type"
-msgstr ""
+#: src/qt-console/bcomm/dircomm_auth.cpp:133
+#, fuzzy, c-format
+msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
+msgstr "TLS Aushandlung fehlgeschlagen mit SD an \"%s:%d\"\n"
 
-#: src/dird/ua_select.c:1111
+#: src/qt-console/bcomm/dircomm_auth.cpp:145
 #, c-format
-msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
+msgid ""
+"Bad response to Hello command: ERR=%s\n"
+"The Director at \"%s:%d\" is probably not running.\n"
 msgstr ""
 
-#: 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/qt-console/bcomm/dircomm_auth.cpp:154
+#, fuzzy, c-format
+msgid "Director at \"%s:%d\" rejected Hello command\n"
+msgstr "File daemon auf \"%s:%d\" hat Hello Kommando abgelehnt\n"
 
-#: 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"
+#: src/qt-console/bcomm/dircomm_auth.cpp:169
+#, fuzzy, c-format
+msgid ""
+"Authorization problem with Director at \"%s:%d\"\n"
+"Most likely the passwords do not agree.\n"
+"If you are using TLS, there may have been a certificate validation error "
+"during the TLS handshake.\n"
+"Please see "
 msgstr ""
+"Kann mit  File daemon on \"%s:%d\" nicht authentisieren. M�gliche Ursachen:\n"
+"Passworte oder Namen nicht gleich oder\n"
+"Maximum Concurrent Jobs �berschritten auf dem FD oder\n"
+"FD Netzwerk durcheinander (Daemon neustarten).\n"
+"F�r Hilfe bitte unter http://www.bacula.org/rel-manual/faq."
+"html#AuthorizationErrors nachsehen.\n"
 
-#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
-msgid "No Jobs running.\n"
-msgstr ""
+#: src/qt-console/main.cpp:154
+msgid "Cryptography library initialization failed.\n"
+msgstr "Initialisierung der Verschl�sselungsbibliothek fehlgeschlagen.\n"
 
-#: src/dird/ua_select.c:1167
-msgid "None of your jobs are running.\n"
-msgstr ""
+#: src/qt-console/main.cpp:158
+#, c-format
+msgid "Please correct configuration file: %s\n"
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/dird/ua_select.c:1172
-msgid "Select Job:\n"
+#: src/qt-console/main.cpp:180
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: 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          no signals\n"
+"       -t          test - read configuration and exit\n"
+"       -?          print this message.\n"
+"\n"
 msgstr ""
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"       -c <file>   setze Konfigurationsdatei auf Datei\n"
+"       -dnn        setze debug level auf nn\n"
+"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
+"       -g          groupid\n"
+"       -r <job>    starte <job> jetzt\n"
+"       -s          no signals\n"
+"       -t          test - Konfiguration Lesen und beenden\n"
+"       -u          userid\n"
+"       -v          ausf�hrliche Benutzer Meldungen\n"
+"       -?          diese Meldung ausgeben.\n"
+"\n"
+
+#: src/qt-console/main.cpp:213 src/qt-console/main.cpp:243
+msgid "TLS required but not configured in Bacula.\n"
+msgstr "TLS ben�tigt aber nicht konfiguriert in Bacula.\n"
 
-#: src/dird/ua_select.c:1181
+#: src/qt-console/main.cpp:221
 #, c-format
-msgid "JobId=%s Job=%s"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1185
+#: src/qt-console/main.cpp:230
 #, c-format
-msgid "Choose Job to %s"
+msgid ""
+"No Director resource defined in %s\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1192
+#: src/qt-console/main.cpp:251
 #, c-format
 msgid ""
-"Cancel: %s\n"
-"\n"
-"%s"
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1193
-msgid "Confirm cancel?"
+#: src/qt-console/tray-monitor/authenticate.cpp:75
+msgid ""
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:1199
-msgid "Confirm cancel (yes/no): "
+#: src/qt-console/tray-monitor/authenticate.cpp:84
+#, c-format
+msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: 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"
+#: src/qt-console/tray-monitor/authenticate.cpp:91
+msgid "Director rejected Hello command\n"
 msgstr ""
 
-#: src/dird/bsr.c:173
+#: src/qt-console/tray-monitor/authenticate.cpp:119
 #, c-format
-msgid "Unable to get Job record. ERR=%s\n"
-msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
+msgid "Error sending Hello to Storage daemon. ERR=%s\n"
+msgstr "Fehler beim senden von \"Hello\" an Storage daemon. ERR=%s\n"
 
-#: src/dird/bsr.c:184
-#, c-format
-msgid "Unable to get Job Volume Parameters. ERR=%s\n"
-msgstr "Konnte Job Volume Parameter nicht holen. ERR=%s\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:125
+#, fuzzy
+msgid ""
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see "
+msgstr "Director und Storage daemon Passworte or Namen nicht gleich.\n"
 
-#: src/dird/bsr.c:232
+#: src/qt-console/tray-monitor/authenticate.cpp:132
 #, c-format
-msgid "Unable to create bootstrap file %s. ERR=%s\n"
-msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
-
-#: src/dird/bsr.c:241
-#, fuzzy
-msgid "No files found to read. No bootstrap file written.\n"
+msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
 msgstr ""
-"Keine Dateien f�r Wiederherstellung/Migration gefunden. Keine Bootstrap "
-"Datei geschrieben.\n"
 
-#: src/dird/bsr.c:245
-msgid "Error writing bsr file.\n"
-msgstr "Fehler beim schreiben der bsr Datei.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:139
+msgid "Storage daemon rejected Hello command\n"
+msgstr "Storage daemon hat Hello Kommando abgewiesen.\n"
 
-#: src/dird/bsr.c:250
+#: src/qt-console/tray-monitor/authenticate.cpp:165
 #, c-format
-msgid "Bootstrap records written to %s\n"
-msgstr "Bootstrap Eintr�ge geschrieben nach %s\n"
-
-#: src/dird/bsr.c:298
-msgid ""
-"The job will require the following\n"
-"   Volume(s)                 Storage(s)                SD Device(s)\n"
-"===========================================================================\n"
+msgid "Error sending Hello to File daemon. ERR=%s\n"
 msgstr ""
-"Der Job wird folgendes ben�tigen:\n"
-"   Volume(s)                 Storage(s)                SD Device(s)\n"
-"===========================================================================\n"
-
-#: src/dird/bsr.c:317
-msgid "No Volumes found to restore.\n"
-msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: src/dird/bsr.c:319
+#: src/qt-console/tray-monitor/authenticate.cpp:171
+#, fuzzy
 msgid ""
-"\n"
-"Volumes marked with \"*\" are online.\n"
-msgstr ""
+"Director and File daemon passwords or names not the same.\n"
+"Please see "
+msgstr "Director und File daemon Passworte oder Namen sind nicht gleich.\n"
 
-#: src/dird/ua_server.c:69
+#: src/qt-console/tray-monitor/authenticate.cpp:178
 #, c-format
-msgid "Cannot create UA thread: %s\n"
-msgstr ""
+msgid "Bad response from File daemon to Hello command: ERR=%s\n"
+msgstr "Fehlerhafte Antwort von  File daemon auf Hello Kommando: ERR=%s\n"
 
-#: src/dird/ua_server.c:159
-msgid "You have messages.\n"
-msgstr ""
+#: src/qt-console/tray-monitor/authenticate.cpp:185
+msgid "File daemon rejected Hello command\n"
+msgstr "File daemon hat Hello Kommando abgelehnt\n"
 
-#: src/dird/verify.c:86 src/dird/verify.c:318
-#, c-format
-msgid "Unimplemented Verify level %d(%c)\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:55
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -d <nn>       set debug level to <nn>\n"
+"       -dt           print timestamp in debug output\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
+"\n"
 msgstr ""
+"\n"
+"Version: %s (%s)\n"
+"\n"
+"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"       -c <file>   setze Konfigurationsdatei auf Datei\n"
+"       -dnn        setze debug level auf nn\n"
+"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
+"       -g          groupid\n"
+"       -r <job>    starte <job> jetzt\n"
+"       -s          no signals\n"
+"       -t          test - Konfiguration Lesen und beenden\n"
+"       -u          userid\n"
+"       -v          ausf�hrliche Benutzer Meldungen\n"
+"       -?          diese Meldung ausgeben.\n"
+"\n"
 
-#: src/dird/verify.c:148
+#: src/qt-console/tray-monitor/tray-monitor.cpp:204
+#, c-format
 msgid ""
-"Unable to find JobId of previous InitCatalog Job.\n"
-"Please run a Verify with Level=InitCatalog before\n"
-"running the current Job.\n"
+"Error: %d Monitor resources defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
 
-#: src/dird/verify.c:153
-msgid "Unable to find JobId of previous Job for this client.\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:236
+#, fuzzy, c-format
+msgid ""
+"No Client, Storage or Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
 msgstr ""
+"Keine Director resource definiert in %s\n"
+"Ohne dies weiss ich nicht wer ich bin :-(\n"
 
-#: src/dird/verify.c:170
+#: src/qt-console/tray-monitor/tray-monitor.cpp:251
 #, c-format
-msgid "Could not get job record for previous Job. ERR=%s"
+msgid ""
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
 msgstr ""
 
-#: src/dird/verify.c:176
+#: src/qt-console/tray-monitor/tray-monitor.cpp:319
 #, c-format
-msgid "Last Job %d did not terminate normally. JobStatus=%c\n"
+msgid "Error, currentitem is not a Client or a Storage..\n"
 msgstr ""
 
-#: src/dird/verify.c:180
+#: src/qt-console/tray-monitor/tray-monitor.cpp:357
 #, c-format
-msgid "Verifying against JobId=%d Job=%s\n"
+msgid "Connecting to Client %s:%d"
 msgstr ""
 
-#: src/dird/verify.c:219
+#: src/qt-console/tray-monitor/tray-monitor.cpp:362
+msgid "File daemon"
+msgstr "File daemon"
+
+#: src/qt-console/tray-monitor/tray-monitor.cpp:367
 #, c-format
-msgid "Start Verify JobId=%s Level=%s Job=%s\n"
+msgid "Connecting to Storage %s:%d"
 msgstr ""
 
-#: src/dird/verify.c:305
-msgid "Deprecated feature ... use bootstrap.\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:372
+msgid "Storage daemon"
+msgstr "Storage daemon"
 
-#: src/dird/verify.c:372
+#: src/qt-console/tray-monitor/tray-monitor.cpp:376
+#: src/qt-console/tray-monitor/tray-monitor.cpp:406
 #, c-format
-msgid "Unimplemented verify level %d\n"
-msgstr ""
-
-#: src/dird/verify.c:421
-msgid "Verify OK"
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
 msgstr ""
 
-#: src/dird/verify.c:425
-msgid "*** Verify Error ***"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:381
+msgid "Cannot connect to daemon."
 msgstr ""
 
-#: src/dird/verify.c:429
-msgid "Verify warnings"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:390
+#, c-format
+msgid "Authentication error : %s"
 msgstr ""
 
-#: src/dird/verify.c:432
-msgid "Verify Canceled"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:397
+msgid "Opened connection with Director daemon."
 msgstr ""
 
-#: src/dird/verify.c:435
-msgid "Verify Differences"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:400
+msgid "Opened connection with File daemon."
 msgstr ""
 
-#: src/dird/verify.c:440
-#, c-format
-msgid "Inappropriate term code: %d %c\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:403
+msgid "Opened connection with Storage daemon."
 msgstr ""
 
-#: src/dird/verify.c:454
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:454
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
 msgstr ""
-"%s %s (%s): %s\n"
-"  JobId:                      %d\n"
-"  Job:                        %s\n"
-"  Client:                     %s\n"
-"  Start time:                 %s\n"
-"  End time:                   %s\n"
-"  Dateien erwartet:           %s\n"
-"  Dateien. wiederhergestellt: %s\n"
-"  Bytes wiederhergestellt:    %s\n"
-"  Geschwindigkeit:            %.1f KB/s\n"
-"  FD Fehler:                  %d\n"
-"  FD Beendigungsstatus:       %s\n"
-"  SD Beendigungsstatus:       %s\n"
-"  Beendigungsstatus:          %s\n"
-"\n"
 
-#: src/dird/verify.c:489
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build:                  %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:463
+msgid "Error : Connection closed."
 msgstr ""
-"%s %s (%s): %s\n"
-"  JobId:                      %d\n"
-"  Job:                        %s\n"
-"  Client:                     %s\n"
-"  Start time:                 %s\n"
-"  End time:                   %s\n"
-"  Dateien erwartet:           %s\n"
-"  Dateien. wiederhergestellt: %s\n"
-"  Bytes wiederhergestellt:    %s\n"
-"  Geschwindigkeit:            %.1f KB/s\n"
-"  FD Fehler:                  %d\n"
-"  FD Beendigungsstatus:       %s\n"
-"  SD Beendigungsstatus:       %s\n"
-"  Beendigungsstatus:          %s\n"
-"\n"
 
-#: src/dird/verify.c:567
+#: src/qt-console/tray-monitor/tray_conf.cpp:156
 #, c-format
-msgid ""
-"bird<filed: bad attributes, expected 3 fields got %d\n"
-" mslen=%d msg=%s\n"
-msgstr ""
+msgid "No %s resource defined\n"
+msgstr "Keine %s resource definiert\n"
 
-#: src/dird/verify.c:612
+#: src/qt-console/tray-monitor/tray_conf.cpp:165
 #, c-format
-msgid "New file: %s\n"
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:613
+#: src/qt-console/tray-monitor/tray_conf.cpp:171
 #, c-format
-msgid "File not in catalog: %s\n"
+msgid "Director: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:637
+#: src/qt-console/tray-monitor/tray_conf.cpp:175
 #, c-format
-msgid "      st_ino   differ. Cat: %s File: %s\n"
+msgid "Client: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:646
+#: src/qt-console/tray-monitor/tray_conf.cpp:179
 #, c-format
-msgid "      st_mode  differ. Cat: %x File: %x\n"
+msgid "Storage: name=%s address=%s SDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:654
+#: src/qt-console/tray-monitor/tray_conf.cpp:187
 #, c-format
-msgid "      st_nlink differ. Cat: %d File: %d\n"
-msgstr ""
+msgid "Unknown resource type %d in dump_resource.\n"
+msgstr "Unbekannter resource type %d in dump_resource.\n"
 
-#: src/dird/verify.c:662
+#: src/qt-console/tray-monitor/tray_conf.cpp:245
 #, c-format
-msgid "      st_uid   differ. Cat: %u File: %u\n"
-msgstr ""
+msgid "Unknown resource type %d in free_resource.\n"
+msgstr "Unbekannter resource type %d in free_resource.\n"
 
-#: src/dird/verify.c:670
+#: src/qt-console/tray-monitor/tray_conf.cpp:282
 #, c-format
-msgid "      st_gid   differ. Cat: %u File: %u\n"
-msgstr ""
+msgid "Too many items in %s resource\n"
+msgstr "zu viele items in %s resource\n"
 
-#: src/dird/verify.c:678
+#: src/qt-console/tray-monitor/tray_conf.cpp:302
+#: src/qt-console/tray-monitor/tray_conf.cpp:340
 #, c-format
-msgid "      st_size  differ. Cat: %s File: %s\n"
-msgstr ""
+msgid "Unknown resource type %d in save_resource.\n"
+msgstr "Unbekannter resource type %d in save_resource.\n"
 
-#: src/dird/verify.c:687
-msgid "      st_atime differs\n"
-msgstr ""
+#~ msgid "Query failed: %s: ERR=%s\n"
+#~ msgstr "Abfrage gescheitert: %s: ERR=%s\n"
 
-#: src/dird/verify.c:694
-msgid "      st_mtime differs\n"
-msgstr ""
+#~ msgid "Unable to initialize DB lock. ERR=%s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/dird/verify.c:701
-msgid "      st_ctime differs\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Unable to connect to MySQL server.\n"
+#~ "Database=%s User=%s\n"
+#~ "MySQL connect failed either server not running or your authorization is "
+#~ "incorrect.\n"
+#~ msgstr ""
+#~ "Kann Verbindung zu MySQL Server nicht aufbauen. \n"
+#~ "Datenbank=%s Benutzer=%s\n"
+#~ "Der Datenbankserver  l�uft m�glicherweise nicht oder das Passwort ist "
+#~ "nicht korrekt.\n"
 
-#: src/dird/verify.c:708
-#, c-format
-msgid "      st_size  decrease. Cat: %s File: %s\n"
-msgstr ""
+#~ msgid "Attribute create error. %s"
+#~ msgstr "Attribute create error. %s"
 
-#: src/dird/verify.c:738
-#, c-format
-msgid "MD5/SHA1 index %d not same as attributes %d\n"
-msgstr ""
+#~ msgid "A user name for MySQL must be supplied.\n"
+#~ msgstr "Ein Benutzername f�r MySQL muss angegeben werden.\n"
 
-#: src/dird/verify.c:746
-#, c-format
-msgid "      %s differs. File=%s Cat=%s\n"
-msgstr ""
+#~ msgid "error fetching row: %s\n"
+#~ msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/dird/verify.c:757
-#, c-format
-msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
+#~ "Possible causes: SQL server not running; password incorrect; "
+#~ "max_connections exceeded.\n"
+#~ msgstr ""
+#~ "Kann Verbindung zu  PostgreSQL Server nicht aufbauen.\n"
+#~ "Datenbank=%s  Benutzer=%s\n"
+#~ "Der Datenbankserver l�uft m�glicherweise nicht oder das Passwort ist "
+#~ "nicht korrekt.\n"
 
-#: src/dird/verify.c:796
-#, c-format
-msgid "The following files are in the Catalog but not on %s:\n"
-msgstr ""
+#~ msgid "error fetching currval: %s\n"
+#~ msgstr "Fehler beim Holen des aktuellen Wertes: %s\n"
 
-#: src/dird/verify.c:811 src/tools/testfind.c:420
-#, c-format
-msgid "File: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "error starting batch mode: %s"
+#~ msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/dird/admin.c:65
-#, c-format
-msgid "Start Admin JobId %d, Job=%s\n"
-msgstr "Starte Admin JobId %d, Job=%s\n"
+#, fuzzy
+#~ msgid "error ending batch mode: %s"
+#~ msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "error copying in batch mode: %s"
+#~ msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/dird/admin.c:98
-msgid "Admin OK"
-msgstr "Admin OK"
+#~ msgid "A user name for PostgreSQL must be supplied.\n"
+#~ msgstr "Ein Benutzername f�r PostgreSQL muss angegeben werden.\n"
 
-#: src/dird/admin.c:102
-msgid "*** Admin Error ***"
-msgstr "*** Admin Fehler ***"
+#~ msgid ""
+#~ "query %s failed:\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "Abfrage %s gescheitert:\n"
+#~ "%s\n"
 
-#: src/dird/admin.c:106
-msgid "Admin Canceled"
-msgstr "Admin abgebrochen"
+#~ msgid ""
+#~ "insert %s failed:\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "einf�gen %s gescheitert:\n"
+#~ "%s\n"
 
-#: 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"
+#~ msgid "Insertion problem: affected_rows=%s\n"
+#~ msgstr "Problem beim Einf�gen: affected_rows=%s\n"
 
-#: src/dird/admin.c:118
-msgid "Bacula "
-msgstr "Bacula "
+#~ msgid ""
+#~ "update %s failed:\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "Aktualisierung %s gescheitert:\n"
+#~ "%s\n"
 
-#: src/dird/dird.c:150
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"       -f          run in foreground (for debugging)\n"
-"       -g          groupid\n"
-"       -m          print kaboom output (for debugging)\n"
-"       -r <job>    run <job> now\n"
-"       -s          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -u          userid\n"
-"       -v          verbose user messages\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"       -c <file>   setze Konfigurationsdatei auf Datei\n"
-"       -dnn        setze debug level auf nn\n"
-"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
-"       -g          groupid\n"
-"       -r <job>    starte <job> jetzt\n"
-"       -s          no signals\n"
-"       -t          test - Konfiguration Lesen und beenden\n"
-"       -u          userid\n"
-"       -v          ausf�hrliche Benutzer Meldungen\n"
-"       -?          diese Meldung ausgeben.\n"
-"\n"
+#, fuzzy
+#~ msgid "Update failed: affected_rows=%s for %s\n"
+#~ msgstr "Aktualisierungsproblem: affected_rows=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "delete %s failed:\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "l�schen von %s fehlgeschlagen:\n"
+#~ "%s\n"
 
-#: 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"
+#~ msgid "Path length is zero. File=%s\n"
+#~ msgstr "Pfadl�nge ist null. Datei=%s\n"
 
-#: src/dird/dird.c:546
-msgid "Too many open reload requests. Request ignored.\n"
-msgstr "zu viele offene reload Anforderungen, Anforderung ignoriert.\n"
+#~ msgid "No results to list.\n"
+#~ msgstr "Keine Ergebnisse zu \"list\" Kommando.\n"
 
-#: src/dird/dird.c:561
-msgid "Out of reload table entries. Giving up.\n"
-msgstr "Keine reload table Eintr�ge �brig. Gebe auf.\n"
+#, fuzzy
+#~ msgid "Could not init database batch connection\n"
+#~ msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/dird/dird.c:564
-msgid "Resetting previous configuration.\n"
-msgstr "Vorherige Konfiguration zur�ckgesetzt.\n"
+#, fuzzy
+#~ msgid "Could not open database \"%s\": ERR=%s\n"
+#~ msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: 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 ""
-"Keine Director resource definiert in %s\n"
-"Ohne dies weiss ich nicht wer ich bin :-(\n"
+#~ msgid "Create DB Job record %s failed. ERR=%s\n"
+#~ msgstr "Erzeugung von DB Job Eintrag %s fehlgeschlagen. ERR=%s\n"
 
-#: 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"
+#~ msgid "Create JobMedia record %s failed: ERR=%s\n"
+#~ msgstr "Erzeugung von JobMedia Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: 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: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"
+#~ msgid "Update Media record %s failed: ERR=%s\n"
+#~ msgstr "Aktualisierung von Media Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: 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"
+#~ msgid "pool record %s already exists\n"
+#~ msgstr "pool Eintrag %s bereits vorhanden\n"
 
-#: 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"
+#~ msgid "Create db Pool record %s failed: ERR=%s\n"
+#~ msgstr "Erzeugung von db Pool Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: 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 "
-"Director \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\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"
+#~ msgid "Device record %s already exists\n"
+#~ msgstr "Device Eintrag %s bereits vorhanden\n"
 
-#: 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"
+#~ msgid "Create db Device record %s failed: ERR=%s\n"
+#~ msgstr "Erzeugung von db Device Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/dird.c:698
-#, c-format
-msgid "No Job records defined in %s\n"
-msgstr "Keine Job records definiert in %s\n"
+#~ msgid "More than one Storage record!: %d\n"
+#~ msgstr "Mehr als ein Storage Eintrag!: %d\n"
 
-#: 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"
+#~ msgid "error fetching Storage row: %s\n"
+#~ msgstr "Fehler beim holen der Storage Zeile: %s\n"
 
-#: 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"
+#~ msgid "Create DB Storage record %s failed. ERR=%s\n"
+#~ msgstr "Erzeugung des DB Storage Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/dird/dird.c:837
-msgid "Too many items in Job resource\n"
-msgstr "zu viele items in Job resource\n"
+#~ msgid "mediatype record %s already exists\n"
+#~ msgstr "Medientyp Eintrag %s bereits vorhanden\n"
 
-#: 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"
+#~ msgid "Create db mediatype record %s failed: ERR=%s\n"
+#~ msgstr "Erzeuge db Medientyp Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: 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"
+#~ msgid "Volume \"%s\" already exists.\n"
+#~ msgstr "Volume \"%s\" bereits vorhanden.\n"
 
-#: 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"
+#~ msgid "Create DB Media record %s failed. ERR=%s\n"
+#~ msgstr "Erzeugung DB Media Eintrag %s fehlgeschlagen. ERR=%s\n"
 
-#: src/dird/dird.c:878
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-"Weder \"TLS CA Certificate\" noch \"TLS CA Certificate Dir\" sind definiert "
-"f�rConsole \"%s\" in %s. Mindestens ein CA certificate store wird ben�tigt "
-"beiEinsatz von \"TLS Verify Peer\".\n"
+#~ msgid "More than one Client!: %d\n"
+#~ msgstr "Mehr als ein Client!: %d\n"
 
-#: 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"
+#~ msgid "error fetching Client row: %s\n"
+#~ msgstr "Fehler beim holen der Client Zeile: %s\n"
 
-#: 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 ""
-"Weder \"TLS CA Certificate\" noch \"TLS CA Certificate Dir\" sind definiert "
-"f�r File daemon \"%s\" in %s.\n"
+#~ msgid "Create DB Client record %s failed. ERR=%s\n"
+#~ msgstr "Erzeugung des DB Client Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: 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"
+#~ msgid "More than one Path!: %s for path: %s\n"
+#~ msgstr "Mehr als ein Pfad!: %s f�r Pfad: %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"
+#~ msgid "Create db Path record %s failed. ERR=%s\n"
+#~ msgstr "Erzeugung des db Path Eintrags %s fehlgeschlagen. ERR=%s\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"
+#~ msgid "Create DB Counters record %s failed. ERR=%s\n"
+#~ msgstr "Erzeugung des DB Counters Eintrag %s fehlgeschlagen. ERR=%s\n"
 
-#: src/dird/dird.c:1019 src/tools/cats_test.c:377
-#, c-format
-msgid "%s"
-msgstr ""
+#~ msgid "More than one FileSet!: %d\n"
+#~ msgstr "Mehr als ein FileSet!: %d\n"
 
-#: 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"
+#~ msgid "error fetching FileSet row: ERR=%s\n"
+#~ msgstr "Fehler beim holen der FileSet Zeile: ERR=%s\n"
 
-#: 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"
+#~ msgid "Create DB FileSet record %s failed. ERR=%s\n"
+#~ msgstr "Erzeugung des DB FileSet Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
+#~ msgid "Create db File record %s failed. ERR=%s"
+#~ msgstr "Erzeugung des db File Eintrags %s fehlgeschlagen. ERR=%s"
 
-#: src/dird/inc_conf.c:312
-#, fuzzy, c-format
-msgid "Expected a strip path positive integer, got:%s:"
-msgstr "fstype Ausdruck erwartet, erhalten: %s\n"
+#~ msgid "More than one Filename! %s for file: %s\n"
+#~ msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
-#: src/dird/inc_conf.c:332
-#, c-format
-msgid "Expected a FileSet option keyword, got:%s:"
-msgstr "FileSet option Schl�sselwort erwartet, erhalten:%s:"
+#~ msgid "Error fetching row for file=%s: ERR=%s\n"
+#~ msgstr "Fehler beim Holen der Zeile f�r Datei=%s: ERR=%s\n"
 
-#: src/dird/inc_conf.c:365
-msgid "Old style Include/Exclude not supported\n"
-msgstr "veraltete Include/Exclude Anweisung nicht unterst�tzt\n"
+#~ msgid "Create db Filename record %s failed. ERR=%s\n"
+#~ msgstr "Erzeugung des db Filename Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: 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"
+#~ msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
+#~ msgstr "Versuche \"non-attributes\" in catalog einzuf�gen. Stream=%d\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Create db Object record %s failed. ERR=%s"
+#~ msgstr "Erzeugung des db File Eintrags %s fehlgeschlagen. ERR=%s"
 
-#: 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."
+#~ msgid "No pool record %s exists\n"
+#~ msgstr "Kein pool Eintrag %s vorhanden\n"
 
-#: src/dird/inc_conf.c:464
-#, c-format
-msgid "Regex compile error. ERR=%s\n"
-msgstr "Regex �bersetzungsfehler. ERR=%s\n"
+#~ msgid "Expecting one pool record, got %d\n"
+#~ msgstr "Erwartete einen \"pool\" Eintrag, erhielt %d\n"
 
-#: src/dird/inc_conf.c:485
-#, c-format
-msgid "Expected a regex string, got: %s\n"
-msgstr "regul�ren Ausdruck erwartet, erhalten: %s\n"
+#~ msgid "Error fetching row %s\n"
+#~ msgstr "Fehler beim Holen der Zeile %s\n"
 
-#: src/dird/inc_conf.c:559
-#, c-format
-msgid "Expected a wild-card string, got: %s\n"
-msgstr "wild-card Ausdruck erwartet, erhalten: %s\n"
+#~ msgid ""
+#~ "Query error for start time request: ERR=%s\n"
+#~ "CMD=%s\n"
+#~ msgstr ""
+#~ "Fehler bei Abfrage von Startzeit: ERR=%s\n"
+#~ "CMD=%s\n"
 
-#: src/dird/inc_conf.c:582
-#, c-format
-msgid "Expected an fstype string, got: %s\n"
-msgstr "fstype Ausdruck erwartet, erhalten: %s\n"
+#~ msgid "No prior Full backup Job record found.\n"
+#~ msgstr "Keinen vorherigen \"Full backup\" Job Eintrag gefunden.\n"
 
-#: src/dird/inc_conf.c:593
-msgid "ExcludeDirContaining directive not permitted in Exclude.\n"
-msgstr ""
+#~ msgid "Unknown level=%d\n"
+#~ msgstr "Unbekannter level=%d\n"
 
-#: src/dird/inc_conf.c:620
-#, c-format
-msgid "Expected an drivetype string, got: %s\n"
-msgstr "drivetype Ausdruck erwartet, erhalten: %s\n"
+#~ msgid ""
+#~ "No Job record found: ERR=%s\n"
+#~ "CMD=%s\n"
+#~ msgstr ""
+#~ "Kein \"Job\" Eintrag gefunden: ERR=%s\n"
+#~ "CMD=%s\n"
 
-#: src/dird/inc_conf.c:644 src/dird/inc_conf.c:687
-#, fuzzy, c-format
-msgid "Backslash found. Use forward slashes or quote the string.: %s\n"
-msgstr ""
-"Backslash gefunden. Benutze forward slashes oder setze den String in "
-"Anf�hrungszeichen.: %s\n"
+#~ msgid "Unknown Job level=%d\n"
+#~ msgstr "Unbekannter Job level=%d\n"
 
-#: src/dird/inc_conf.c:659 src/dird/inc_conf.c:702
-#, c-format
-msgid "Expected a filename, got: %s"
-msgstr "Dateiname erwartet, erhalten: %s"
+#~ msgid "No Job found for: %s.\n"
+#~ msgstr "Kein Job gefunden f�r: %s.\n"
 
-#: src/dird/inc_conf.c:676
-msgid "Plugin directive not permitted in Exclude\n"
-msgstr ""
+#~ msgid "No Job found for: %s\n"
+#~ msgstr "Keinen Job gefunden f�r: %s\n"
 
-#: src/dird/inc_conf.c:719
-msgid "Options section not permitted in Exclude\n"
-msgstr ""
+#~ msgid "Request for Volume item %d greater than max %d or less than 1\n"
+#~ msgstr ""
+#~ "Anforderung von \"Volume item\" %d gr��er als Max %d oder weniger als 1\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "No Volume record found for item %d.\n"
+#~ msgstr "Kein Volume Eintrag gefunden f�r item %d.\n"
 
-#: src/dird/inc_conf.c:779
-#, c-format
-msgid "Expected a FileSet keyword, got: %s"
-msgstr "FileSet Schl�sselwort erwartet,erhalten: %s"
+#~ msgid "Error fetching row: %s\n"
+#~ msgstr "Fehler beim holen der Zeile: %s\n"
 
-#: src/dird/ua_query.c:73 src/findlib/create_file.c:288
-#: src/findlib/create_file.c:391
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"
+#~ msgstr "get_file_record erwartet 1 erhalten rows=%d\n"
 
-#: src/dird/ua_query.c:78
-msgid "Available queries:\n"
-msgstr ""
+#~ msgid "File record for PathId=%s FilenameId=%s not found.\n"
+#~ msgstr "File Eintrag f�r PathId=%s FilenameId=%s nicht gefunden.\n"
 
-#: src/dird/ua_query.c:85
-msgid "Choose a query"
-msgstr ""
+#~ msgid "File record not found in Catalog.\n"
+#~ msgstr "File Eintrag nicht im Catalog gefunden.\n"
 
-#: src/dird/ua_query.c:99
-msgid "Could not find query.\n"
-msgstr ""
+#~ msgid "More than one Filename!: %s for file: %s\n"
+#~ msgstr "Mehr als einen Dateinamen gefunden! : %s f�r Datei: %s\n"
 
-#: src/dird/ua_query.c:117
-msgid "Too many prompts in query, max is 9.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Get DB Filename record %s found bad record: %d\n"
+#~ msgstr "Get DB Filename record %s hat fehlerhaften Eintrag gefunden: %d\n"
 
-#: src/dird/ua_query.c:220
-#, c-format
-msgid "Warning prompt %d missing.\n"
-msgstr ""
+#~ msgid "Filename record: %s not found.\n"
+#~ msgstr "Filename record: %s nicht gefunden.\n"
 
-#: src/dird/ua_query.c:265
-msgid ""
-"Entering SQL query mode.\n"
-"Terminate each query with a semicolon.\n"
-"Terminate query mode with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:268 src/dird/ua_query.c:284
-msgid "Enter SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:286
-msgid "Add to SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:289
-msgid "End query mode.\n"
-msgstr ""
-
-#: src/dird/newvol.c:90
-#, c-format
-msgid "Illegal character in Volume name \"%s\"\n"
-msgstr "Illegales Zeichen in \"Volume name\" \"%s\"\n"
-
-#: src/dird/newvol.c:104
-#, c-format
-msgid "Created new Volume \"%s\" in catalog.\n"
-msgstr "Neues Volume \"%s\" in catalog erzeugt.\n"
-
-#: src/dird/newvol.c:131
-#, fuzzy, c-format
-msgid "SQL failed, but ignored. ERR=%s\n"
-msgstr "SQL fehlgeschlagen ERR=%s\n"
-
-#: 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"
+#~ msgid "Filename record: %s not found in Catalog.\n"
+#~ msgstr "Filename record: %s nicht in Catalog gefunden.\n"
 
-#: 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"
+#~ msgid "Get DB path record %s found bad record: %s\n"
+#~ msgstr "Get DB path record %s fehlerhaften Eintrag gefunden: %s\n"
 
-#: src/dird/expand.c:255
-#, c-format
-msgid "Count not update counter %s: ERR=%s\n"
-msgstr "Konnte counter %s: nicht aktualisieren: ERR=%s\n"
-
-#: src/dird/expand.c:427
-#, c-format
-msgid "Cannot create var context: ERR=%s\n"
-msgstr "Kann var context nicht erzeugen: ERR=%s\n"
+#~ msgid "Path record: %s not found.\n"
+#~ msgstr "Path record: %s nicht gefunden.\n"
 
-#: src/dird/expand.c:432
-#, c-format
-msgid "Cannot set var callback: ERR=%s\n"
-msgstr "kann Variable callback nicht setzen: ERR=%s\n"
+#~ msgid "Path record: %s not found in Catalog.\n"
+#~ msgstr "Path record: %s nicht in Catalog gefunden.\n"
 
-#: src/dird/expand.c:438
-#, c-format
-msgid "Cannot set var operate: ERR=%s\n"
-msgstr "kann Variable operate nicht setzen: ERR=%s\n"
+#~ msgid "No Job found for JobId %s\n"
+#~ msgstr "Kein Job f�r JobId %s gefunden\n"
 
-#: src/dird/expand.c:444 src/dird/expand.c:459
-#, c-format
-msgid "Cannot unescape string: ERR=%s\n"
-msgstr "Cannot unescape string: ERR=%s\n"
+#~ msgid "No volumes found for JobId=%d\n"
+#~ msgstr "Keine volumes f�r JobId=%d gefunden\n"
 
-#: src/dird/expand.c:452
-#, c-format
-msgid "Cannot expand expression \"%s\": ERR=%s\n"
-msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
+#~ msgid "Error fetching row %d: ERR=%s\n"
+#~ msgstr "Fehler beim Holen von Zeile %d: ERR=%s\n"
 
-#: src/dird/expand.c:470
-#, fuzzy, c-format
-msgid "Cannot destroy var context: ERR=%s\n"
-msgstr "kann Variable context nicht zerst�ren: ERR=%s\n"
+#~ msgid "No Volume for JobId %d found in Catalog.\n"
+#~ msgstr "Kein Volume f�r JobId %d in Catalog gefunden.\n"
 
-#: src/dird/recycle.c:69
-#, c-format
-msgid "Recycled volume \"%s\"\n"
-msgstr ""
+#~ msgid "Pool id select failed: ERR=%s\n"
+#~ msgstr "Pool id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/ua_purge.c:90
-msgid ""
-"\n"
-"This command can be DANGEROUS!!!\n"
-"\n"
-"It purges (deletes) all Files from a Job,\n"
-"JobId, Client or Volume; or it purges (deletes)\n"
-"all Jobs from a Client or Volume without regard\n"
-"to retention periods. Normally you should use the\n"
-"PRUNE command, which respects retention periods.\n"
-msgstr ""
+#~ msgid "Client id select failed: ERR=%s\n"
+#~ msgstr "Client id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/ua_purge.c:157
-msgid "Choose item to purge"
-msgstr ""
+#~ msgid "More than one Pool!: %s\n"
+#~ msgstr "Mehr als ein Pool!: %s\n"
 
-#: src/dird/ua_purge.c:204
-#, c-format
-msgid "Begin purging files for Client \"%s\"\n"
-msgstr ""
+#~ msgid "Pool record not found in Catalog.\n"
+#~ msgstr "Pool Eintrag in Catalog nicht gefunden.\n"
 
-#: src/dird/ua_purge.c:213 src/dird/ua_purge.c:263
-#, c-format
-msgid "No Files found for client %s to purge from %s catalog.\n"
-msgstr ""
+#~ msgid "More than one Client!: %s\n"
+#~ msgstr "Mehr als ein Client!: %s\n"
 
-#: src/dird/ua_purge.c:216
-#, c-format
-msgid "Files for %d Jobs for client \"%s\" purged from %s catalog.\n"
-msgstr ""
+#~ msgid "Client record not found in Catalog.\n"
+#~ msgstr "Client Eintrag nicht in Catalog gefunden\n"
 
-#: src/dird/ua_purge.c:254
-#, c-format
-msgid "Begin purging jobs from Client \"%s\"\n"
-msgstr ""
+#~ msgid "More than one Counter!: %d\n"
+#~ msgstr "Mehr als ein Counter!: %d\n"
 
-#: src/dird/ua_purge.c:266
-#, c-format
-msgid "%d Jobs for client %s purged from %s catalog.\n"
-msgstr ""
+#~ msgid "error fetching Counter row: %s\n"
+#~ msgstr "Fehler beim Holen der Counter Zeile: %s\n"
 
-#: src/dird/ua_purge.c:464
-#, c-format
-msgid ""
-"\n"
-"Volume \"%s\" has VolStatus \"%s\" and cannot be purged.\n"
-"The VolStatus must be: Append, Full, Used, or Error to be purged.\n"
-msgstr ""
+#~ msgid "Counter record: %s not found in Catalog.\n"
+#~ msgstr "Counter Eintrag: %s in Catalog nicht gefunden.\n"
 
-#: src/dird/ua_purge.c:492
-#, c-format
-msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
-msgstr ""
+#~ msgid "Error got %s FileSets but expected only one!\n"
+#~ msgstr "Fehler erhalten %s FileSets aber nur einen erwartet!\n"
 
-#: src/dird/ua_purge.c:541
-#, c-format
-msgid ""
-"There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
-msgstr ""
+#~ msgid "FileSet record \"%s\" not found.\n"
+#~ msgstr "FileSet Eintrag \"%s\" nicht gefunden\n"
 
-#: 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 ""
+#~ msgid "FileSet record not found in Catalog.\n"
+#~ msgstr "FileSet Eintrag in Catalog nicht gefunden.\n"
 
-#: 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"
+#~ msgid "Media id select failed: ERR=%s\n"
+#~ msgstr "Media id select fehlgeschlagen: ERR=%s\n"
 
-#: 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"
+#~ msgid "query dbids failed: ERR=%s\n"
+#~ msgstr "Abfrage gescheitert: %s: ERR=%s\n"
 
-#: src/dird/ua_purge.c:625
-#, c-format
-msgid "The volume \"%s\" has been truncated\n"
-msgstr ""
+#~ msgid "More than one Volume!: %s\n"
+#~ msgstr "Mehr als ein Volume!: %s\n"
 
-#: 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"
+#~ msgid "Media record MediaId=%s not found.\n"
+#~ msgstr "Media Eintrag MediaId=%s nicht gefunden.\n"
 
-#: src/dird/ua_purge.c:713
-#, fuzzy, c-format
-msgid "No Volumes found to perform %s action.\n"
-msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
+#~ msgid "Media record for Volume \"%s\" not found.\n"
+#~ msgstr "Media Eintrag f�r Volume \"%s\" nicht gefunden.\n"
 
-#: src/dird/ua_purge.c:786
-#, c-format
-msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
-msgstr ""
+#~ msgid "Media record for MediaId=%u not found in Catalog.\n"
+#~ msgstr "Media Eintrag f�r MediaId=%u in Catalog nicht gefunden.\n"
 
-#: src/dird/ua_purge.c:800
-#, c-format
-msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
-msgstr ""
+#~ msgid "Media record for Vol=%s not found in Catalog.\n"
+#~ msgstr "Media Eintrag f�r Vol=%s in Catalog nicht gefunden.\n"
 
-#: src/dird/ua_purge.c:805
-#, c-format
-msgid "Cannot purge Volume with VolStatus=%s\n"
-msgstr ""
+#~ msgid "Query failed: %s\n"
+#~ msgstr "Abfrage fehlgeschlagen: %s\n"
 
-#: src/dird/vbackup.c:76 src/dird/migrate.c:114
-msgid "Could not get or create a Pool record.\n"
-msgstr "Konnte keinen Pool Eintrag holen oder erzeugen.\n"
+#~ msgid "Database %s does not exist, please create it.\n"
+#~ msgstr "Datenbank %s existiert nicht, bitte 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:871
-#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
-msgid "Pool resource"
-msgstr "Pool Ressource"
+#~ msgid "Unable to open Database=%s. ERR=%s\n"
+#~ msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/dird/vbackup.c:116 src/dird/migrate.c:285
-msgid "Job Pool's NextPool resource"
-msgstr "\"NextPool\"  Ressource des Job Pools"
+#~ msgid "unknown"
+#~ msgstr "unbekannt"
 
-#: src/dird/vbackup.c:147
-#, fuzzy, c-format
-msgid "Start Virtual Backup JobId %s, Job=%s\n"
-msgstr "Start Sicherung JobId %s, Job=%s\n"
+#~ msgid ""
+#~ "Authorization problem: Remote server did not advertise required TLS "
+#~ "support.\n"
+#~ msgstr ""
+#~ "Authorisationsproblem: Entfernter Server hat ben�tigte TLS Unterst�tzung "
+#~ "nicht angeboten.\n"
 
-#: src/dird/vbackup.c:151
-msgid ""
-"This Job is not an Accurate backup so is not equivalent to a Full backup.\n"
-msgstr ""
+#~ msgid "Authorization problem: Remote server requires TLS.\n"
+#~ msgstr "Authorisationsproblem: Enfernter Server erfordert TLS.\n"
 
-#: src/dird/vbackup.c:158
 #, fuzzy
-msgid "No previous Jobs found.\n"
-msgstr "Keinen vorherigen Job zum migrieren gefunden.\n"
-
-#: src/dird/vbackup.c:180
-#, fuzzy, c-format
-msgid "Error getting Job record for previous Job: ERR=%s"
-msgstr "Fehler beim Holen des job Eintrags f�r den job Bericht: %s"
+#~ msgid ""
+#~ "Director authorization problem.\n"
+#~ "Most likely the passwords do not agree.\n"
+#~ "If you are using TLS, there may have been a certificate validation error "
+#~ "during the TLS handshake.\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Kann mit  File daemon on \"%s:%d\" nicht authentisieren. M�gliche "
+#~ "Ursachen:\n"
+#~ "Passworte oder Namen nicht gleich oder\n"
+#~ "Maximum Concurrent Jobs �berschritten auf dem FD oder\n"
+#~ "FD Netzwerk durcheinander (Daemon neustarten).\n"
+#~ "F�r Hilfe bitte unter http://www.bacula.org/rel-manual/faq."
+#~ "html#AuthorizationErrors nachsehen.\n"
 
-#: src/dird/vbackup.c:186 src/dird/migrate.c:131
-msgid "Could not get or create the FileSet record.\n"
-msgstr "Konnte FileSet Eintrag weder holen noch erzeugen.\n"
+#, fuzzy
+#~ msgid "Can't find %s in Director list\n"
+#~ msgstr "Kann Director resource %s nicht finden\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
+#~ msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
 
-#: 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"
+#~ msgid "Start Admin JobId %d, Job=%s\n"
+#~ msgstr "Starte Admin JobId %d, Job=%s\n"
 
-#: 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"
+#, fuzzy
+#~ 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/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
-msgid "Backup OK"
-msgstr "Sicherung OK"
+#~ msgid "Admin OK"
+#~ msgstr "Admin OK"
 
-#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
-msgid "*** Backup Error ***"
-msgstr "*** Sicherungsfehler ***"
+#~ msgid "*** Admin Error ***"
+#~ msgstr "*** Admin Fehler ***"
 
-#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
-msgid "Backup Canceled"
-msgstr "Sicherung Abgebrochen"
+#~ msgid "Admin Canceled"
+#~ msgstr "Admin abgebrochen"
 
-#: src/dird/vbackup.c:393
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           Virtual Full\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s (%s): %s\n"
-"  vorheriges Backup JobId:%s\n"
-"  neues Backup JobId:     %s\n"
-"  Migration JobId:        %s\n"
-"  Migration Job:          %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Lese Pool:              \"%s\" (Von %s)\n"
-"  Lese Storage:           \"%s\" (Von %s)\n"
-"  Schreib Pool:           \"%s\" (Von %s)\n"
-"  Schreib Storage:        \"%s\" (Von %s)\n"
-"  Start Zeit:             %s\n"
-"  End Zeit:               %s\n"
-"  Verstichene Zeit:       %s\n"
-"  Priorit�t:              %d\n"
-"  SD Dateien geschrieben: %s\n"
-"  SD Bytes geschrieben:   %s (%sB)\n"
-"  Geschwindigkeit:        %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Fehler:              %d\n"
-"  SD Beendigungsstatus :  %s\n"
-"  Beendigungsstatus:      %s\n"
-"\n"
+#~ msgid "Inappropriate term code: %c\n"
+#~ msgstr "Unangebrachter Beendigungskode: %c\n"
 
-#: src/dird/ua_output.c:69 src/dird/ua_output.c:93
-msgid "ON or OFF keyword missing.\n"
-msgstr ""
+#~ msgid "Director and Storage daemon passwords or names not the same.\n"
+#~ msgstr "Director und Storage daemon Passworte or Namen nicht gleich.\n"
 
-#: src/dird/ua_output.c:113
 #, fuzzy
-msgid "Disabled Jobs:\n"
-msgstr "ist nicht aktiviert"
-
-#: src/dird/ua_output.c:119
-msgid "No disabled Jobs.\n"
-msgstr ""
+#~ msgid ""
+#~ "Director unable to authenticate with Storage daemon at \"%s:%d\". "
+#~ "Possible causes:\n"
+#~ "Passwords or names not the same or\n"
+#~ "Maximum Concurrent Jobs exceeded on the SD or\n"
+#~ "SD networking messed up (restart daemon).\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Director kann sich nicht an Storage daemon an \"%s:%d\" authentisieren. "
+#~ "M�gliche Ursachen:\n"
+#~ "Passworte oder Namen nicht gleich oder\n"
+#~ "Maximum Concurrent Jobs �berschritten am SD oder\n"
+#~ "SD Netzwerk durcheinander (daemon neustarten).\n"
+#~ "F�r Hilfe bitte unter http://www.bacula.org/rel-manual/faq."
+#~ "html#AuthorizationErrors nachsehen.\n"
 
-#: src/dird/ua_output.c:163
 #, fuzzy
-msgid "disabled"
-msgstr "ist nicht aktiviert"
-
-#: src/dird/ua_output.c:211
-msgid "Keywords for the show command are:\n"
-msgstr ""
-
-#: src/dird/ua_output.c:217
-#, c-format
-msgid "%s resource %s not found.\n"
-msgstr ""
+#~ msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
+#~ msgstr "TLS Aushandlung fehlgeschlagen mit SD an \"%s:%d\"\n"
 
-#: src/dird/ua_output.c:220
-#, c-format
-msgid "Resource %s not found\n"
-msgstr ""
+#~ msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
+#~ msgstr ""
+#~ "bdird<stored: \"%s:%s\" fehlerhafte Antwort auf \"Hello\" Kommando: ERR="
+#~ "%s\n"
 
-#: src/dird/ua_output.c:290
-msgid "Hey! DB is NULL\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
+#~ msgstr "Storage daemon an \"%s:%d\" hat Hello commando abgewiesen.\n"
 
-#: src/dird/ua_output.c:447
-#, c-format
-msgid "Jobid %d used %d Volume(s): %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
+#~ msgstr ""
+#~ "Fehler beim senden des Kommandos Hello an File daemon auf \"%s:%d\". ERR="
+#~ "%s\n"
 
-#: src/dird/ua_output.c:465
-msgid "No Pool specified.\n"
-msgstr ""
+#~ msgid "Director and File daemon passwords or names not the same.\n"
+#~ msgstr "Director und File daemon Passworte oder Namen sind nicht gleich.\n"
 
-#: src/dird/ua_output.c:486
-#, c-format
-msgid "Pool: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
+#~ "Passwords or names not the same or\n"
+#~ "Maximum Concurrent Jobs exceeded on the FD or\n"
+#~ "FD networking messed up (restart daemon).\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Kann mit  File daemon on \"%s:%d\" nicht authentisieren. M�gliche "
+#~ "Ursachen:\n"
+#~ "Passworte oder Namen nicht gleich oder\n"
+#~ "Maximum Concurrent Jobs �berschritten auf dem FD oder\n"
+#~ "FD Netzwerk durcheinander (Daemon neustarten).\n"
+#~ "F�r Hilfe bitte unter http://www.bacula.org/rel-manual/faq."
+#~ "html#AuthorizationErrors nachsehen.\n"
 
-#: src/dird/ua_output.c:502
-msgid "Ignoring invalid value for days. Max is 50.\n"
-msgstr ""
+#~ msgid ""
+#~ "Authorization problem: FD \"%s:%s\" did not advertise required TLS "
+#~ "support.\n"
+#~ msgstr ""
+#~ "Authorisationsproblem: FD \"%s:%s\" hat erforderliche TLS Unterst�tzung "
+#~ "nicht angeboten.\n"
 
-#: src/dird/ua_output.c:524
-#, c-format
-msgid "Unknown list keyword: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Authorization problem: FD at \"%s:%d\" requires TLS.\n"
+#~ msgstr "Authorisationsproblem: FD an \"%s:%d\" erfordert TLS.\n"
 
-#: src/dird/ua_output.c:549
-#, c-format
-msgid "%s is not a job name.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
+#~ msgstr "TLS Aushandlung fehlgeschlagen mit FD an \"%s:%d\".\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
+#~ msgstr ""
+#~ "Fehlerhafte Antwort von File daemon an \"%s:%d\" auf Hello Kommando: ERR="
+#~ "%s\n"
 
-#: src/dird/ua_output.c:576
-#, c-format
-msgid "Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"
-msgstr ""
+#, fuzzy
+#~ msgid "File daemon at \"%s:%d\" rejected Hello command\n"
+#~ msgstr "File daemon auf \"%s:%d\" hat Hello Kommando abgelehnt\n"
 
-#: 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 ""
+#~ msgid "UA Hello from %s:%s:%d is invalid. Len=%d\n"
+#~ msgstr "UA Hello von %s:%s:%d ist ung�ltig. Len=%d\n"
 
-#: src/dird/ua_output.c:593
-#, c-format
-msgid "Could not find next Volume for Job %s.\n"
-msgstr ""
+#~ msgid "UA Hello from %s:%s:%d is invalid. Got: %s\n"
+#~ msgstr "UA Hello von %s:%s:%d ist ung�ltig. Erhalten: %s\n"
 
-#: 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"
+#~ msgid ""
+#~ "Authorization problem: Remote client did not advertise required TLS "
+#~ "support.\n"
+#~ msgstr ""
+#~ "Authorisationsproblem: Entfernter Klient hat die erforderte "
+#~ "TLSUnterst�tzung nicht angezeigt.\n"
 
-#: src/dird/ua_output.c:733
-#, c-format
-msgid "Pool %s not in database. %s"
-msgstr "Pool %s nicht in der Datenbank. %s"
+#~ msgid "Authorization problem: Remote client requires TLS.\n"
+#~ msgstr "Authorisationsproblem: Entfernter Klient erfordert TLS.\n"
 
-#: src/dird/ua_output.c:741
-#, c-format
-msgid "Pool %s created in database.\n"
-msgstr "Pool %s in der Datenbank angelegt.\n"
+#~ msgid "TLS negotiation failed.\n"
+#~ msgstr "TLS Aushandlung gescheitert.\n"
 
-#: src/dird/ua_output.c:794
-msgid "You have no messages.\n"
-msgstr ""
+#~ msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
+#~ msgstr "Kann Konsole \"%s\" an %s:%s:%d nicht authentisieren.\n"
 
-#: src/dird/ua_output.c:874
-msgid "Message too long to display.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "1000 OK: %d %s Version: %s (%s)\n"
+#~ msgstr "1000 OK: %s Version: %s (%s)\n"
 
-#: src/dird/ua_dotcmds.c:155 src/dird/ua_cmds.c:236
-#, c-format
-msgid "Can't use %s command in a runscript"
-msgstr ""
+#~ msgid ""
+#~ "End auto prune.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ende automatische S�uberung.\n"
+#~ "\n"
 
-#: src/dird/ua_dotcmds.c:175
-msgid ": is an invalid command.\n"
-msgstr ""
+#~ msgid "Pool resource"
+#~ msgstr "Pool Ressource"
 
-#: 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 ""
+#~ msgid "No Storage specification found in Job or Pool.\n"
+#~ msgstr "Keine Storage Spezifikation in Job oder Pool gefunden.\n"
 
-#: 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:1160 src/dird/job.c:1164
-msgid "unknown source"
-msgstr "unbekannte Quelle"
+#, fuzzy
+#~ msgid "Using BaseJobId(s): %s\n"
+#~ msgstr "Migration benutzt JobId=%s Job=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Cannot find previous jobids.\n"
+#~ msgstr "Kann Job resource %s nicht finden\n"
 
-#: 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 ""
+#~ msgid "Start Backup JobId %s, Job=%s\n"
+#~ msgstr "Start Sicherung JobId %s, Job=%s\n"
 
-#: 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 ""
+#~ msgid "Unexpected Client Job message: %s\n"
+#~ msgstr "Unerwartete Client Job Nachricht: %s\n"
 
-#: 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 ""
+#~ msgid "Network error with FD during %s: ERR=%s\n"
+#~ msgstr "Netzwerkfehler mit FD bei %s: ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
-#, fuzzy, c-format
-msgid "Unknown command: %s\n"
-msgstr "unbekannt"
+#~ msgid "No Job status returned from FD.\n"
+#~ msgstr "FD hat keinen Jobstatus zur�ckgegeben.\n"
 
-#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
-msgid "Available daemons are: \n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error getting Client record for Job report: ERR=%s"
+#~ msgstr "Fehler beim holen des Datensatzes f�r Volume \"%s\": ERR=%s"
 
-#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
-msgid "Director"
-msgstr ""
+#~ msgid "Error getting Media record for Volume \"%s\": ERR=%s"
+#~ msgstr "Fehler beim holen des Datensatzes f�r Volume \"%s\": ERR=%s"
 
-#: src/dird/ua_dotcmds.c:736
-msgid "Select daemon type to make die"
-msgstr ""
+#~ msgid "Backup OK -- with warnings"
+#~ msgstr "Sicherung OK -- mit Warnungen"
 
-#: src/dird/ua_dotcmds.c:762
-msgid "The Director will generate a deadlock.\n"
-msgstr ""
+#~ msgid "Backup OK"
+#~ msgstr "Sicherung OK"
 
-#: src/dird/ua_dotcmds.c:766
-msgid "The Director will segment fault.\n"
-msgstr ""
+#~ msgid "*** Backup Error ***"
+#~ msgstr "*** Sicherungsfehler ***"
 
-#: src/dird/ua_dotcmds.c:955
-msgid "Access to specified Client or FileSet not allowed.\n"
-msgstr ""
+#~ msgid "Backup Canceled"
+#~ msgstr "Sicherung Abgebrochen"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "%s (%sB)"
+#~ msgstr "%s -- keine Dateien zur Migration."
 
-#: src/dird/ua_dotcmds.c:999
 #, fuzzy
-msgid "query keyword not found.\n"
-msgstr "Path record: %s nicht gefunden.\n"
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Backup Level:           %s%s\n"
+#~ "  Client:                 \"%s\" %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Pool:                   \"%s\" (From %s)\n"
+#~ "  Catalog:                \"%s\" (From %s)\n"
+#~ "  Storage:                \"%s\" (From %s)\n"
+#~ "  Scheduled time:         %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Elapsed time:           %s\n"
+#~ "  Priority:               %d\n"
+#~ "  FD Files Written:       %s\n"
+#~ "  SD Files Written:       %s\n"
+#~ "  FD Bytes Written:       %s (%sB)\n"
+#~ "  SD Bytes Written:       %s (%sB)\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  Software Compression:   %s\n"
+#~ "%s  VSS:                    %s\n"
+#~ "  Encryption:             %s\n"
+#~ "  Accurate:               %s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s\n"
+#~ "  Non-fatal FD errors:    %d\n"
+#~ "  SD Errors:              %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s (%s): %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Backup Level:           %s%s\n"
+#~ "  Client:                 \"%s\" %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Pool:                   \"%s\" (From %s)\n"
+#~ "  Storage:                \"%s\" (From %s)\n"
+#~ "  Geplante Zeit:          %s\n"
+#~ "  Startzeit:              %s\n"
+#~ "  Endzeit:                %s\n"
+#~ "  Verstrichene Zeit:      %s\n"
+#~ "  Priorit�t:              %d\n"
+#~ "  FD Dateien geschrieben: %s\n"
+#~ "  SD Dateien geschrieben: %s\n"
+#~ "  FD Bytes geschrieben:   %s (%sB)\n"
+#~ "  SD Bytes geschrieben:   %s (%sB)\n"
+#~ "  Geschwindigkeit:        %.1f KB/s\n"
+#~ "  Software Kompression:   %s\n"
+#~ "  VSS:                    %s\n"
+#~ "  Verschl�sselung:        %s\n"
+#~ "  Volume Name(n):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Zeit:    %d\n"
+#~ "  Letztes Volumen Bytes:  %s (%sB)\n"
+#~ "  Nicht-fatale FD Fehler  %d\n"
+#~ "  SD Fehler:              %d\n"
+#~ "  FD Beendigungsstatus:   %s\n"
+#~ "  SD Beendigungsstatus:   %s\n"
+#~ "  Beendigungsstatus:      %s\n"
+#~ "\n"
 
-#: src/dird/ua_dotcmds.c:1026
-#, fuzzy, c-format
-msgid "List MediaType failed: ERR=%s\n"
-msgstr "Media id select fehlgeschlagen: ERR=%s\n"
+#~ 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/ua_dotcmds.c:1040
-#, fuzzy, c-format
-msgid "List Media failed: ERR=%s\n"
-msgstr "Media id select fehlgeschlagen: ERR=%s\n"
+#~ msgid ""
+#~ "Could not open WriteBootstrap file:\n"
+#~ "%s: ERR=%s\n"
+#~ msgstr ""
+#~ "Konnte  WriteBootstrap nicht �ffnen. Datei:\n"
+#~ "%s: ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:1054
-#, fuzzy, c-format
-msgid "List Location failed: ERR=%s\n"
-msgstr "Client id select fehlgeschlagen: ERR=%s\n"
+#~ msgid "Unable to get Job record. ERR=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/dird/next_vol.c:166
-#, c-format
-msgid "Purging oldest volume \"%s\"\n"
-msgstr ""
+#~ msgid "Unable to get Job Volume Parameters. ERR=%s\n"
+#~ msgstr "Konnte Job Volume Parameter nicht holen. ERR=%s\n"
 
-#: src/dird/next_vol.c:172
-#, c-format
-msgid "Pruning oldest volume \"%s\"\n"
-msgstr ""
+#~ msgid "Unable to create bootstrap file %s. ERR=%s\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/next_vol.c:191
-msgid "We seem to be looping trying to find the next volume. I give up.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No files found to read. No bootstrap file written.\n"
+#~ msgstr ""
+#~ "Keine Dateien f�r Wiederherstellung/Migration gefunden. Keine Bootstrap "
+#~ "Datei geschrieben.\n"
 
-#: 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"
+#~ msgid "Error writing bsr file.\n"
+#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: 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"
+#~ msgid "Bootstrap records written to %s\n"
+#~ msgstr "Bootstrap Eintr�ge geschrieben nach %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "The Job will require the following (*=>InChanger):\n"
+#~ "   Volume(s)                 Storage(s)                SD Device(s)\n"
+#~ "===========================================================================\n"
+#~ msgstr ""
+#~ "Der Job wird folgendes ben�tigen:\n"
+#~ "   Volume(s)                 Storage(s)                SD Device(s)\n"
+#~ "===========================================================================\n"
 
-#: 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"
+#~ msgid "No Volumes found to restore.\n"
+#~ msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: 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"
+#~ msgid "1990 Invalid Catalog Request: %s"
+#~ msgstr "1990 Ung�ltige Catalog Anfrage: %s"
 
-#: 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"
+#~ msgid "Invalid Catalog request; DB not open: %s"
+#~ msgstr "Ung�ltige Catalog Anfrage; DB nicht offen: %s"
 
-#: src/dird/next_vol.c:289
-msgid "volume has expired"
-msgstr "volume ist abgelaufen"
+#~ msgid "1901 No Media.\n"
+#~ msgstr "1901 Keine Medien.\n"
 
-#: 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"
+#~ msgid "not in Pool"
+#~ msgstr "nicht in Pool"
 
-#: src/dird/next_vol.c:312
-msgid "and recycling of current volume failed"
-msgstr "und das Wiederverwenden des aktuellen volumes ist fehlgeschlagen "
+#~ msgid "not correct MediaType"
+#~ msgstr "nicht korrekter Medientyp"
 
-#: src/dird/next_vol.c:318
-msgid "but should be Append, Purged or Recycle"
-msgstr "aber sollte Append, Purged oder Recycle sein"
+#~ msgid "is not Enabled"
+#~ msgstr "ist nicht aktiviert"
 
-#: src/dird/next_vol.c:327
 #, fuzzy
-msgid "volume has recycling disabled"
-msgstr "volume ist abgelaufen"
-
-#: src/dird/next_vol.c:354
-msgid ""
-"but should be Append, Purged or Recycle (recycling of the current volume "
-"failed)"
-msgstr ""
-"aber sollte Append, Purged oder Recycle (das Recycling des des aktuellen "
-"Volumens ist fehlgeschlagen)"
-
-#: 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:421
-#, c-format
-msgid "Unable to get Pool record: ERR=%s"
-msgstr ""
+#~ msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
+#~ msgstr "1998 Volume \"%s\" status ist %s, %s.\n"
 
-#: src/dird/next_vol.c:428
-#, c-format
-msgid "Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"
-msgstr ""
+#~ msgid "1997 Volume \"%s\" not in catalog.\n"
+#~ msgstr "1997 Volume \"%s\" Nicht in Catalog.\n"
 
-#: src/dird/next_vol.c:448
-#, c-format
-msgid "Failed to move Scratch Volume. ERR=%s\n"
-msgstr ""
+#~ 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/next_vol.c:453
-#, c-format
-msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
-msgstr ""
+#~ msgid "1991 Catalog Request for vol=%s failed: %s"
+#~ msgstr "1991 Catalog Anfrage f�r vol=%s fehlgeschlagen: %s"
 
-#: src/dird/ua_cmds.c:120
-msgid "Add media to a pool"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Attempt to set Volume Files from %u to %u for Volume \"%s\". Ignored.\n"
+#~ msgstr ""
+#~ "Volume Files bei %u werden auf %u f�r Volumen \"%s\" gesetzt. Dies ist "
+#~ "nicht Korrekt.\n"
 
-#: src/dird/ua_cmds.c:121
-msgid "Autodisplay console messages"
-msgstr ""
+#~ msgid "Catalog error updating Media record. %s"
+#~ msgstr "Catalog Fehler beim Aktualisieren des Media Eintrags. %s"
 
-#: src/dird/ua_cmds.c:122
-msgid "Automount after label"
-msgstr ""
+#~ msgid "1993 Update Media error\n"
+#~ msgstr "1993 Update Media Fehler\n"
 
-#: src/dird/ua_cmds.c:123
-msgid "Cancel a job"
-msgstr ""
+#~ msgid "Catalog error creating JobMedia record. %s"
+#~ msgstr "Catalog Fehler beim Erzeugen des JobMedia Eintrags. %s"
 
-#: src/dird/ua_cmds.c:124
 #, fuzzy
-msgid "Create DB Pool from resource"
-msgstr "Pool Ressource"
+#~ msgid "1992 Create JobMedia error\n"
+#~ msgstr "1991 Update JobMedia Fehler\n"
 
-#: src/dird/ua_cmds.c:125
-msgid "Delete volume, pool or job"
-msgstr ""
+#~ msgid "Invalid Catalog request: %s"
+#~ msgstr "Ung�ltige Catalog Anfrage: %s"
 
-#: src/dird/ua_cmds.c:126
 #, fuzzy
-msgid "Disable a job"
-msgstr "ist nicht aktiviert"
-
-#: src/dird/ua_cmds.c:127
-msgid "Enable a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:128
-msgid "Performs FileSet estimate, listing gives full listing"
-msgstr ""
-
-#: src/dird/ua_cmds.c:131 src/dird/ua_cmds.c:155
-msgid "Terminate Bconsole session"
-msgstr ""
-
-#: src/dird/ua_cmds.c:132
-msgid "Non-interactive gui mode"
-msgstr ""
-
-#: src/dird/ua_cmds.c:133
-msgid "Print help on specific command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:138
-msgid "Label a tape"
-msgstr ""
-
-#: src/dird/ua_cmds.c:139
-msgid "List objects from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:142
-msgid "Full or long list like list command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:145
-msgid "Display pending messages"
-msgstr ""
-
-#: src/dird/ua_cmds.c:146
-msgid "Print current memory usage"
-msgstr ""
+#~ msgid "Attribute create error: ERR=%s"
+#~ msgstr "Attribute create error. %s"
 
-#: src/dird/ua_cmds.c:147
 #, fuzzy
-msgid "Mount storage"
-msgstr "Run storage override"
-
-#: src/dird/ua_cmds.c:150
-msgid "Prune expired records from catalog"
-msgstr ""
+#~ msgid "Restore object create error. %s"
+#~ msgstr "Attribute create error. %s"
 
-#: src/dird/ua_cmds.c:153
 #, fuzzy
-msgid "Purge records from catalog"
-msgstr "File Eintrag nicht im Catalog gefunden.\n"
-
-#: src/dird/ua_cmds.c:154
-msgid "Python control commands"
-msgstr ""
+#~ msgid "%s not same File=%d as attributes=%d\n"
+#~ msgstr "Erhielt %s aber nicht die gleiche Datei wie Attribute\n"
 
-#: src/dird/ua_cmds.c:156
-msgid "Query catalog"
-msgstr ""
+#~ 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/ua_cmds.c:157
 #, fuzzy
-msgid "Restore files"
-msgstr "Wiederherstellung l�uft..."
-
-#: src/dird/ua_cmds.c:162
-msgid "Relabel a tape"
-msgstr ""
+#~ msgid "attribute create error. %s"
+#~ msgstr "Attribute create error. %s"
 
-#: src/dird/ua_cmds.c:165
-msgid "Release storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:166
-msgid "Reload conf file"
-msgstr ""
+#~ msgid "Catalog error updating file digest. %s"
+#~ msgstr "Catalog Fehler beim Aktualisieren des file digest. %s"
 
-#: src/dird/ua_cmds.c:167
 #, fuzzy
-msgid "Run a job"
-msgstr "Konnte Migrationsjob nicht starten.\n"
-
-#: src/dird/ua_cmds.c:171
-msgid "Report status"
-msgstr ""
-
-#: src/dird/ua_cmds.c:174
-msgid "Sets debug level"
-msgstr ""
+#~ msgid "1994 Invalid Catalog Update: %s"
+#~ msgstr "1991 Ung�ltige Catalog Aktualisierung: %s"
 
-#: src/dird/ua_cmds.c:177
-msgid "Sets new client address -- if authorized"
-msgstr ""
+#~ msgid "Invalid Catalog Update; DB not open: %s"
+#~ msgstr "Ung�ltige Catalog Aktualisierung; DB nicht ge�ffnet: %s"
 
-#: src/dird/ua_cmds.c:178
 #, fuzzy
-msgid "Show resource records"
-msgstr "Job Ressource"
+#~ msgid "fread attr spool error. ERR=%s\n"
+#~ msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/dird/ua_cmds.c:181
-msgid "Use SQL to query catalog"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\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"
+#~ "       -f          run in foreground (for debugging)\n"
+#~ "       -g          groupid\n"
+#~ "       -m          print kaboom output (for debugging)\n"
+#~ "       -r <job>    run <job> now\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - read configuration and exit\n"
+#~ "       -u          userid\n"
+#~ "       -v          verbose user messages\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "       -c <file>   setze Konfigurationsdatei auf Datei\n"
+#~ "       -dnn        setze debug level auf nn\n"
+#~ "       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
+#~ "       -g          groupid\n"
+#~ "       -r <job>    starte <job> jetzt\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - Konfiguration Lesen und beenden\n"
+#~ "       -u          userid\n"
+#~ "       -v          ausf�hrliche Benutzer Meldungen\n"
+#~ "       -?          diese Meldung ausgeben.\n"
+#~ "\n"
 
-#: src/dird/ua_cmds.c:182
-msgid "Print current time"
-msgstr ""
+#~ msgid "Too many open reload requests. Request ignored.\n"
+#~ msgstr "zu viele offene reload Anforderungen, Anforderung ignoriert.\n"
 
-#: src/dird/ua_cmds.c:183
-msgid "Turn on/off trace to file"
-msgstr ""
+#~ msgid "Out of reload table entries. Giving up.\n"
+#~ msgstr "Keine reload table Eintr�ge �brig. Gebe auf.\n"
 
-#: src/dird/ua_cmds.c:184
-msgid "Unmount storage"
-msgstr ""
+#~ msgid "Resetting previous configuration.\n"
+#~ msgstr "Vorherige Konfiguration zur�ckgesetzt.\n"
 
-#: src/dird/ua_cmds.c:187
-msgid "Umount - for old-time Unix guys, see unmount"
-msgstr ""
+#~ msgid ""
+#~ "No Director resource defined in %s\n"
+#~ "Without that I don't know who I am :-(\n"
+#~ msgstr ""
+#~ "Keine Director resource definiert in %s\n"
+#~ "Ohne dies weiss ich nicht wer ich bin :-(\n"
 
-#: src/dird/ua_cmds.c:190
-msgid "Update volume, pool or stats"
-msgstr ""
+#~ msgid "No Messages resource defined in %s\n"
+#~ msgstr "Keine Messages resource definiert in %s\n"
 
-#: src/dird/ua_cmds.c:196
-msgid "Use catalog xxx"
-msgstr ""
+#~ msgid "Only one Director resource permitted in %s\n"
+#~ msgstr "Nur eine Director resource erlaubt in %s\n"
 
-#: src/dird/ua_cmds.c:197
-msgid "Does variable expansion"
-msgstr ""
+#~ 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/ua_cmds.c:198
-msgid "Print Director version"
-msgstr ""
+#~ 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/ua_cmds.c:199
-msgid "Wait until no jobs are running"
-msgstr ""
+#~ msgid ""
+#~ "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined "
+#~ "for Director \"%s\" in %s. At least one CA certificate store is required "
+#~ "when using \"TLS Verify Peer\".\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/dird/ua_cmds.c:247
-#, c-format
-msgid "%s: is an invalid command.\n"
-msgstr ""
+#~ 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/ua_cmds.c:288
-msgid ""
-"You probably don't want to be using this command since it\n"
-"creates database records without labeling the Volumes.\n"
-"You probably want to use the \"label\" command.\n"
-"\n"
-msgstr ""
+#~ msgid "No Job records defined in %s\n"
+#~ msgstr "Keine Job records definiert in %s\n"
 
-#: src/dird/ua_cmds.c:306
-#, c-format
-msgid "Pool already has maximum volumes=%d\n"
-msgstr ""
+#~ msgid "Hey something is wrong. p=0x%lu\n"
+#~ msgstr "Hey etwas l�uft schief. p=0x%lu\n"
 
-#: src/dird/ua_cmds.c:307
-msgid "Enter new maximum (zero for unlimited): "
-msgstr ""
+#~ 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/ua_cmds.c:327
-#, c-format
-msgid "Enter number of Volumes to create. 0=>fixed name. Max=%d: "
-msgstr ""
+#~ msgid "Too many items in Job resource\n"
+#~ msgstr "zu viele items in Job resource\n"
 
-#: src/dird/ua_cmds.c:333
-#, c-format
-msgid "The number must be between 0 and %d\n"
-msgstr ""
+#~ msgid "No storage specified in Job \"%s\" nor in Pool.\n"
+#~ msgstr "Weder storage noch Pool in Job \"%s\" definiert.\n"
 
-#: src/dird/ua_cmds.c:341
-msgid "Enter Volume name: "
-msgstr ""
+#~ 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/ua_cmds.c:345
-msgid "Enter base volume name: "
-msgstr ""
+#~ 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/ua_cmds.c:354 src/dird/ua_label.c:663
-msgid "Volume name too long.\n"
-msgstr ""
+#~ msgid ""
+#~ "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined "
+#~ "for Console \"%s\" in %s. At least one CA certificate store is required "
+#~ "when using \"TLS Verify Peer\".\n"
+#~ msgstr ""
+#~ "Weder \"TLS CA Certificate\" noch \"TLS CA Certificate Dir\" sind "
+#~ "definiert f�rConsole \"%s\" in %s. Mindestens ein CA certificate store "
+#~ "wird ben�tigt beiEinsatz von \"TLS Verify Peer\".\n"
 
-#: 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 ""
+#~ 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/ua_cmds.c:369
-msgid "Enter the starting number: "
-msgstr ""
+#~ msgid ""
+#~ "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined "
+#~ "for File daemon \"%s\" in %s.\n"
+#~ msgstr ""
+#~ "Weder \"TLS CA Certificate\" noch \"TLS CA Certificate Dir\" sind "
+#~ "definiert f�r File daemon \"%s\" in %s.\n"
 
-#: src/dird/ua_cmds.c:374
-msgid "Start number must be greater than zero.\n"
-msgstr ""
+#~ 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/ua_cmds.c:385
-msgid "Enter slot (0 for none): "
-msgstr ""
+#~ 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/ua_cmds.c:389
-msgid "InChanger? yes/no: "
-msgstr ""
+#~ msgid "Could not open Catalog \"%s\", database \"%s\".\n"
+#~ msgstr "Konnte Catalog \"%s\", database \"%s\" nicht �ffnen.\n"
 
-#: src/dird/ua_cmds.c:414
-#, c-format
-msgid "%d Volumes created in pool %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not create storage record for %s\n"
+#~ msgstr "Kann Storage resource %s nicht finden\n"
 
-#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
-msgid "Turn on or off? "
-msgstr ""
+#, fuzzy
+#~ msgid "Could not update storage record for %s\n"
+#~ msgstr "Kann Storage resource %s nicht finden\n"
 
-#: 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 ""
+#~ msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
+#~ msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
 
-#: 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 ""
+#~ msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
+#~ msgstr "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 
-#: src/dird/ua_cmds.c:631
-#, c-format
-msgid ""
-"Error: Pool %s already exists.\n"
-"Use update to change it.\n"
-msgstr ""
+#~ msgid "   query_file=%s\n"
+#~ msgstr "   query_file=%s\n"
 
-#: src/dird/ua_cmds.c:642
-#, c-format
-msgid "Pool %s created.\n"
-msgstr ""
+#~ msgid "  --> "
+#~ msgstr "  --> "
 
-#: src/dird/ua_cmds.c:672
-msgid "Python interpreter restarted.\n"
-msgstr ""
+#~ msgid "Console: name=%s SSL=%d\n"
+#~ msgstr "Console: name=%s SSL=%d\n"
 
-#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
-msgid "Nothing done.\n"
-msgstr ""
+#~ 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/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 ""
+#~ msgid "Counter: name=%s min=%d max=%d\n"
+#~ msgstr "Counter: name=%s min=%d max=%d\n"
 
-#: src/dird/ua_cmds.c:708
-#, c-format
-msgid "Client \"%s\" address set to %s\n"
-msgstr ""
+#~ msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
+#~ msgstr "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
 
-#: src/dird/ua_cmds.c:742
-#, c-format
-msgid "Job \"%s\" %sabled\n"
-msgstr ""
+#~ msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
+#~ msgstr "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 
-#: src/dird/ua_cmds.c:920
-msgid "Enter new debug level: "
-msgstr ""
+#~ msgid ""
+#~ "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
+#~ "      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d "
+#~ "autochgr=%d\n"
+#~ "      poolid=%s volname=%s MediaType=%s\n"
+#~ msgstr ""
+#~ "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
+#~ "      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d "
+#~ "autochgr=%d\n"
+#~ "      poolid=%s volname=%s MediaType=%s\n"
 
-#: src/dird/ua_cmds.c:997
-msgid "All"
-msgstr ""
+#~ msgid ""
+#~ "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
+#~ "      DeviceName=%s MediaType=%s StorageId=%s\n"
+#~ msgstr ""
+#~ "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
+#~ "      DeviceName=%s MediaType=%s StorageId=%s\n"
 
-#: src/dird/ua_cmds.c:998
-msgid "Select daemon type to set debug level"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
+#~ "      db_driver=%s db_user=%s MutliDBConn=%d\n"
+#~ msgstr ""
+#~ "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
+#~ "      db_user=%s MutliDBConn=%d\n"
 
-#: src/dird/ua_cmds.c:1087 src/dird/ua_cmds.c:1972
-#, c-format
-msgid "No authorization for Client \"%s\"\n"
-msgstr ""
+#~ 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/ua_cmds.c:1092
-msgid "Client name missing.\n"
-msgstr ""
+#~ msgid "Job"
+#~ msgstr "Job"
 
-#: 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 ""
+#~ msgid "JobDefs"
+#~ msgstr "JobDefs"
 
-#: src/dird/ua_cmds.c:1109
-msgid "Job name missing.\n"
-msgstr ""
+#~ msgid ""
+#~ "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d "
+#~ "WritePartAfterJob=%d\n"
+#~ msgstr ""
+#~ "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d "
+#~ "WritePartAfterJob=%d\n"
 
-#: src/dird/ua_cmds.c:1118
-#, fuzzy, c-format
-msgid "Fileset \"%s\" not found.\n"
-msgstr "FileSet Eintrag \"%s\" nicht gefunden\n"
+#, fuzzy
+#~ msgid "     SpoolSize=%s\n"
+#~ msgstr "      opcmd=%s\n"
 
-#: src/dird/ua_cmds.c:1122
-#, c-format
-msgid "No authorization for FileSet \"%s\"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "     Accurate=%d\n"
+#~ msgstr "     SelectionType=%d\n"
+
+#~ msgid "     SelectionType=%d\n"
+#~ msgstr "     SelectionType=%d\n"
+
+#~ msgid "  --> Where=%s\n"
+#~ msgstr "  --> Where=%s\n"
 
-#: src/dird/ua_cmds.c:1127
 #, fuzzy
-msgid "Fileset name missing.\n"
-msgstr "FileSet: name=%s\n"
+#~ msgid "  --> RegexWhere=%s\n"
+#~ msgstr "  --> Where=%s\n"
 
-#: 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"
+#~ msgid "  --> Bootstrap=%s\n"
+#~ msgstr "  --> Bootstrap=%s\n"
 
-#: src/dird/ua_cmds.c:1142
-msgid "Level value missing.\n"
-msgstr ""
+#~ msgid "  --> WriteBootstrap=%s\n"
+#~ msgstr "  --> WriteBootstrap=%s\n"
 
-#: src/dird/ua_cmds.c:1149
-msgid "Invalid value for accurate. It must be yes or no.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "  --> PluginOptions=%s\n"
+#~ msgstr "  --> Run=%s\n"
 
-#: src/dird/ua_cmds.c:1154
 #, fuzzy
-msgid "Accurate value missing.\n"
-msgstr "FileSet: name=%s\n"
+#~ msgid "  --> MaxRunTime=%u\n"
+#~ msgstr "  --> RunWhen=%u\n"
 
-#: src/dird/ua_cmds.c:1167
-msgid "No job specified.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "  --> MaxWaitTime=%u\n"
+#~ msgstr "  --> RunWhen=%u\n"
 
-#: src/dird/ua_cmds.c:1227
-msgid "Error sending include list.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "  --> MaxStartDelay=%u\n"
+#~ msgstr "  --> Target=%s\n"
 
-#: src/dird/ua_cmds.c:1232
-msgid "Error sending exclude list.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "  --> MaxRunSchedTime=%u\n"
+#~ msgstr "  --> RunWhen=%u\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "  --> Base %s\n"
+#~ msgstr "  --> Target=%s\n"
 
-#: src/dird/ua_cmds.c:1326
-msgid "Choose catalog item to delete"
-msgstr ""
+#~ msgid " --> RunScript\n"
+#~ msgstr " --> RunScript\n"
 
-#: 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"
+#~ msgid "  --> Command=%s\n"
+#~ msgstr "  --> Command=%s\n"
 
-#: src/dird/ua_cmds.c:1404
-msgid "Enter JobId to delete: "
-msgstr ""
+#~ msgid "  --> Target=%s\n"
+#~ msgstr "  --> Target=%s\n"
 
-#: src/dird/ua_cmds.c:1440
-#, c-format
-msgid "Are you sure you want to delete %d JobIds ? (yes/no): "
-msgstr ""
+#~ msgid "  --> RunOnSuccess=%u\n"
+#~ msgstr "  --> RunOnSuccess=%u\n"
 
-#: src/dird/ua_cmds.c:1450
-#, c-format
-msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
-msgstr ""
+#~ msgid "  --> RunOnFailure=%u\n"
+#~ msgstr "  --> RunOnFailure=%u\n"
 
-#: src/dird/ua_cmds.c:1454
-#, c-format
-msgid "Illegal JobId range %s - %s, ignored\n"
-msgstr ""
+#, fuzzy
+#~ msgid "  --> FailJobOnError=%u\n"
+#~ msgstr "  --> AbortJobOnError=%u\n"
 
-#: src/dird/ua_cmds.c:1469
-#, c-format
-msgid "Jobid %s and associated records deleted from the catalog.\n"
-msgstr ""
+#~ msgid "  --> RunWhen=%u\n"
+#~ msgstr "  --> RunWhen=%u\n"
 
-#: src/dird/ua_cmds.c:1484
-#, c-format
-msgid ""
-"\n"
-"This command will delete volume %s\n"
-"and all Jobs saved on that volume from the Catalog\n"
-msgstr ""
+#~ msgid "  --> Run=%s\n"
+#~ msgstr "  --> Run=%s\n"
 
-#: src/dird/ua_cmds.c:1491
-#, c-format
-msgid "Are you sure you want to delete Volume \"%s\"? (yes/no): "
-msgstr ""
+#~ msgid "  --> SelectionPattern=%s\n"
+#~ msgstr "  --> SelectionPattern=%s\n"
 
-#: src/dird/ua_cmds.c:1504
-msgid "Can't list jobs on this volume\n"
-msgstr ""
+#~ msgid "FileSet: name=%s\n"
+#~ msgstr "FileSet: name=%s\n"
 
-#: src/dird/ua_cmds.c:1529
-#, c-format
-msgid "Are you sure you want to delete Pool \"%s\"? (yes/no): "
-msgstr ""
+#~ msgid "Schedule: name=%s\n"
+#~ msgstr "Schedule: name=%s\n"
 
-#: src/dird/ua_cmds.c:1644
-#, c-format
-msgid "Using Catalog name=%s DB=%s\n"
-msgstr ""
+#~ msgid "  --> Run Level=%s\n"
+#~ msgstr "  --> Run Level=%s\n"
 
-#: src/dird/ua_cmds.c:1712
-msgid "ERR: Can't open db\n"
-msgstr ""
+#, fuzzy
+#~ msgid "      MaxRunSchedTime=%u\n"
+#~ msgstr "  --> RunWhen=%u\n"
 
-#: src/dird/ua_cmds.c:1759
-msgid "Wait on mount timed out\n"
-msgstr ""
+#, fuzzy
+#~ msgid "      Priority=%u\n"
+#~ msgstr "      woy="
 
-#: src/dird/ua_cmds.c:1769
-msgid "ERR: Job was not found\n"
-msgstr ""
+#~ msgid "      hour="
+#~ msgstr "      hour="
 
-#: src/dird/ua_cmds.c:1845
-msgid ""
-"  Command       Description\n"
-"  =======       ===========\n"
-msgstr ""
+#~ msgid "      mday="
+#~ msgstr "      mday="
 
-#: src/dird/ua_cmds.c:1849
-#, c-format
-msgid ""
-"  %-13s %s\n"
-"\n"
-"Arguments:\n"
-"\t%s\n"
-msgstr ""
+#~ msgid "      month="
+#~ msgstr "      month="
 
-#: src/dird/ua_cmds.c:1854
-#, fuzzy, c-format
-msgid "  %-13s %s\n"
-msgstr "  --> Run=%s\n"
+#~ msgid "      wday="
+#~ msgstr "      wday="
 
-#: src/dird/ua_cmds.c:1858
-#, c-format
-msgid ""
-"\n"
-"Can't find %s command.\n"
-"\n"
-msgstr ""
+#~ msgid "      wom="
+#~ msgstr "      wom="
 
-#: src/dird/ua_cmds.c:1860
-msgid ""
-"\n"
-"When at a prompt, entering a period cancels the command.\n"
-"\n"
-msgstr ""
+#~ msgid "      woy="
+#~ msgstr "      woy="
 
-#: src/dird/ua_cmds.c:1896 src/filed/status.c:85
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s %s\n"
-msgstr ""
+#~ msgid "      mins=%d\n"
+#~ msgstr "      mins=%d\n"
 
-#: 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 ""
+#~ msgid "     --> "
+#~ msgstr "     --> "
 
-#: src/dird/ua_cmds.c:2049
-#, c-format
-msgid "Could not open catalog database \"%s\".\n"
-msgstr ""
+#~ msgid "Pool: name=%s PoolType=%s\n"
+#~ msgstr "Pool: name=%s PoolType=%s\n"
 
-#: src/dird/ua_cmds.c:2059
-#, c-format
-msgid "Using Catalog \"%s\"\n"
-msgstr ""
+#~ msgid "      use_cat=%d use_once=%d cat_files=%d\n"
+#~ msgstr "      use_cat=%d use_once=%d cat_files=%d\n"
 
-#: src/dird/ua_tree.c:74
-msgid "add dir/file to be restored recursively, wildcards allowed"
-msgstr ""
+#~ msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
+#~ msgstr "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 
-#: src/dird/ua_tree.c:75
-msgid "change current directory"
-msgstr ""
+#~ msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
+#~ msgstr "      VolUse=%s recycle=%d LabelFormat=%s\n"
 
-#: src/dird/ua_tree.c:76
-msgid "count marked files in and below the cd"
-msgstr ""
+#~ msgid "      CleaningPrefix=%s LabelType=%d\n"
+#~ msgstr "      CleaningPrefix=%s LabelType=%d\n"
 
-#: src/dird/ua_tree.c:77
-msgid "delete dir/file to be restored recursively in dir"
-msgstr ""
+#, fuzzy
+#~ msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
+#~ msgstr "      RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n"
 
-#: src/dird/ua_tree.c:78 src/dird/ua_tree.c:79
-msgid "long list current directory, wildcards allowed"
-msgstr ""
+#, fuzzy
+#~ msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
+#~ msgstr "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 
-#: src/dird/ua_tree.c:80
-msgid "leave file selection mode"
-msgstr ""
+#~ msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
+#~ msgstr "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 
-#: src/dird/ua_tree.c:81
-msgid "estimate restore size"
-msgstr ""
+#, fuzzy
+#~ msgid "      JobRetention=%s FileRetention=%s\n"
+#~ msgstr "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 
-#: src/dird/ua_tree.c:82
-msgid "same as done command"
-msgstr ""
+#, fuzzy
+#~ msgid "      NextPool=%s\n"
+#~ msgstr "      opcmd=%s\n"
 
-#: src/dird/ua_tree.c:83
-msgid "find files, wildcards allowed"
-msgstr ""
+#, fuzzy
+#~ msgid "      RecyclePool=%s\n"
+#~ msgstr "      opcmd=%s\n"
 
-#: src/dird/ua_tree.c:84 src/dird/ua_tree.c:97 src/dird/ua_tree.c:98
-msgid "print help"
-msgstr ""
+#, fuzzy
+#~ msgid "      ScratchPool=%s\n"
+#~ msgstr "      opcmd=%s\n"
 
-#: src/dird/ua_tree.c:85 src/dird/ua_tree.c:86
-msgid "list current directory, wildcards allowed"
-msgstr ""
+#, fuzzy
+#~ msgid "      Catalog=%s\n"
+#~ msgstr "      mailcmd=%s\n"
 
-#: src/dird/ua_tree.c:87
-msgid "list subdir in current directory, wildcards allowed"
-msgstr ""
+#~ msgid "Messages: name=%s\n"
+#~ msgstr "Messages: name=%s\n"
 
-#: src/dird/ua_tree.c:88
-msgid "list the marked files in and below the cd"
-msgstr ""
+#~ msgid "      mailcmd=%s\n"
+#~ msgstr "      mailcmd=%s\n"
 
-#: src/dird/ua_tree.c:89
-msgid "list the marked files in"
-msgstr ""
+#~ msgid "      opcmd=%s\n"
+#~ msgstr "      opcmd=%s\n"
 
-#: src/dird/ua_tree.c:90
-msgid "mark dir/file to be restored recursively, wildcards allowed"
-msgstr ""
+#~ msgid "Cannot find Pool resource %s\n"
+#~ msgstr "Kann Pool resource %s nicht finden\n"
 
-#: src/dird/ua_tree.c:91
-msgid "mark directory name to be restored (no files)"
-msgstr ""
+#~ msgid "Cannot find Console resource %s\n"
+#~ msgstr "Kann Console resource %s nicht finden\n"
 
-#: src/dird/ua_tree.c:92 src/dird/ua_tree.c:93
-msgid "print current working directory"
-msgstr ""
+#~ msgid "Cannot find Director resource %s\n"
+#~ msgstr "Kann Director resource %s nicht finden\n"
 
-#: src/dird/ua_tree.c:94
-msgid "unmark dir/file to be restored recursively in dir"
-msgstr ""
+#~ msgid "Cannot find Storage resource %s\n"
+#~ msgstr "Kann Storage resource %s nicht finden\n"
 
-#: src/dird/ua_tree.c:95
-msgid "unmark directory name only no recursion"
-msgstr ""
+#~ msgid "Cannot find Job resource %s\n"
+#~ msgstr "Kann Job resource %s nicht finden\n"
 
-#: src/dird/ua_tree.c:96
-msgid "quit and do not do restore"
-msgstr ""
+#~ msgid "Cannot find Counter resource %s\n"
+#~ msgstr "Kann Counter resource %s nicht finden\n"
 
-#: src/dird/ua_tree.c:118
-msgid ""
-"\n"
-"You are now entering file selection mode where you add (mark) and\n"
-"remove (unmark) files to be restored. No files are initially added, unless\n"
-"you used the \"all\" keyword on the command line.\n"
-"Enter \"done\" to leave this mode.\n"
-"\n"
-msgstr ""
+#~ msgid "Cannot find Client resource %s\n"
+#~ msgstr "Kann Client resource %s nicht finden\n"
 
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
-#, c-format
-msgid "cwd is: %s\n"
-msgstr ""
+#~ msgid "Cannot find Schedule resource %s\n"
+#~ msgstr "Kann Schedule resource %s nicht finden\n"
 
-#: src/dird/ua_tree.c:138 src/dird/ua_tree.c:157
-#, c-format
-msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
-msgstr ""
+#~ 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/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 ""
+#~ msgid "Inserting %s res: %s index=%d pass=%d\n"
+#~ msgstr "Inserting %s res: %s index=%d pass=%d\n"
 
-#: src/dird/ua_tree.c:373 src/dird/ua_tree.c:385 src/dird/ua_tree.c:402
-msgid "No files marked.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected one of: %s, got: %s"
+#~ msgstr "Erwartet: %s, erhalten: %s"
 
-#: src/dird/ua_tree.c:387
-msgid "1 file marked.\n"
-msgstr ""
+#~ msgid "Expected a Migration Job Type keyword, got: %s"
+#~ msgstr " Migration Job Type  Schl�sselwort erwartet, erhalten: %s"
 
-#: src/dird/ua_tree.c:389
-#, c-format
-msgid "%s files marked.\n"
-msgstr ""
+#~ msgid "Expected a Job Type keyword, got: %s"
+#~ msgstr "Job Type Schl�sselwort erwartet, erhalten: %s"
 
-#: src/dird/ua_tree.c:417
-msgid "No directories marked.\n"
-msgstr ""
+#~ msgid "Expected a Job Level keyword, got: %s"
+#~ msgstr "Job Level Schl�sselwort erwartet, erhalten: %s"
 
-#: src/dird/ua_tree.c:419
-msgid "1 directory marked.\n"
-msgstr ""
+#~ msgid "Expected a Restore replacement option, got: %s"
+#~ msgstr "Restore replacement Option erwartet, erhalten: %s"
 
-#: src/dird/ua_tree.c:421
-#, c-format
-msgid "%s directories marked.\n"
-msgstr ""
+#~ msgid "Expect %s, got: %s"
+#~ msgstr "Erwartet: %s, erhalten: %s"
 
-#: src/dird/ua_tree.c:442
-#, c-format
-msgid "%s total files/dirs. %s marked to be restored.\n"
-msgstr ""
+#~ msgid "Could not find config Resource %s referenced on line %d : %s\n"
+#~ msgstr ""
+#~ "Konnte config Resource %s , referenziert in Zeile %d : %s nicht finden\n"
 
-#: src/dird/ua_tree.c:453
-msgid "No file specification given.\n"
-msgstr ""
+#~ msgid "Expecting open brace. Got %s"
+#~ msgstr "Geschweifte Klammer auf erwartet, erhalten: %s"
 
-#: src/dird/ua_tree.c:674
-#, c-format
-msgid "Node %s has no children.\n"
-msgstr ""
+#~ msgid "Expecting keyword, got: %s\n"
+#~ msgstr "Schl�sselwort erwartet, erhalten:%s\n"
 
-#: src/dird/ua_tree.c:767
-#, c-format
-msgid "%d total files; %d marked to be restored; %s bytes.\n"
-msgstr ""
+#~ msgid "expected an equals, got: %s"
+#~ msgstr "Erwartete ein \"ist gleich\", erhalten: %s"
 
-#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
-#, c-format
-msgid ""
-"  Command    Description\n"
-"  =======    ===========\n"
-msgstr ""
+#~ msgid "Keyword %s not permitted in this resource"
+#~ msgstr "Schl�sselwort %s ist in dieser Ressource nicht erlaubt."
 
-#: src/dird/ua_tree.c:801
-msgid "Too few or too many arguments. Try using double quotes.\n"
-msgstr ""
+#~ msgid "Count not update counter %s: ERR=%s\n"
+#~ msgstr "Konnte counter %s: nicht aktualisieren: ERR=%s\n"
 
-#: src/dird/ua_tree.c:814
-msgid "Invalid path given.\n"
-msgstr ""
+#~ msgid "Cannot create var context: ERR=%s\n"
+#~ msgstr "Kann var context nicht erzeugen: ERR=%s\n"
 
-#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
-msgid "No files unmarked.\n"
-msgstr ""
+#~ msgid "Cannot set var callback: ERR=%s\n"
+#~ msgstr "kann Variable callback nicht setzen: ERR=%s\n"
 
-#: src/dird/ua_tree.c:864
-msgid "1 file unmarked.\n"
-msgstr ""
+#~ msgid "Cannot set var operate: ERR=%s\n"
+#~ msgstr "kann Variable operate nicht setzen: ERR=%s\n"
 
-#: src/dird/ua_tree.c:867
-#, c-format
-msgid "%s files unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
-msgid "No directories unmarked.\n"
-msgstr ""
+#~ msgid "Cannot unescape string: ERR=%s\n"
+#~ msgstr "Cannot unescape string: ERR=%s\n"
 
-#: src/dird/ua_tree.c:897
-msgid "1 directory unmarked.\n"
-msgstr ""
+#~ msgid "Cannot expand expression \"%s\": ERR=%s\n"
+#~ msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
 
-#: src/dird/ua_tree.c:899
-#, c-format
-msgid "%d directories unmarked.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot destroy var context: ERR=%s\n"
+#~ msgstr "kann Variable context nicht zerst�ren: ERR=%s\n"
 
-#: 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"
+#~ msgid "File daemon \"%s\" rejected Job command: %s\n"
+#~ msgstr "File daemon \"%s\" hat Job Kommando abgewiesen: %s\n"
 
-#: 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"
+#~ msgid "Error updating Client record. ERR=%s\n"
+#~ msgstr "Fehler beim Aktualisieren des Client Eintrags. ERR=%s\n"
 
-#: src/dird/dird_conf.c:581
-#, c-format
-msgid "   query_file=%s\n"
-msgstr "   query_file=%s\n"
-
-#: 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:589
-#, c-format
-msgid "Console: name=%s SSL=%d\n"
-msgstr "Console: name=%s SSL=%d\n"
+#~ msgid "FD gave bad response to JobId command: %s\n"
+#~ msgstr "FD hat fehlerhafte Antwort auf JobId Kommando zur�ckgegeben: %s\n"
 
-#: 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"
+#~ msgid ", since="
+#~ msgstr ", seit="
 
-#: 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"
+#~ msgid ""
+#~ "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
+#~ msgstr ""
+#~ "Kein vorheriges oder passendes Full backup in catalog gefunden. F�hre "
+#~ "FULL backup durch.\n"
 
-#: 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"
+#~ msgid " (upgraded from %s)"
+#~ msgstr " (erweitert von %s)"
 
-#: src/dird/dird_conf.c:616
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
-msgstr "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
+#, fuzzy
+#~ msgid ""
+#~ "No prior or suitable Differential backup found in catalog. Doing "
+#~ "Differential backup.\n"
+#~ msgstr ""
+#~ "Kein vorheriges oder passendes Full backup in catalog gefunden. F�hre "
+#~ "FULL backup durch.\n"
 
-#: src/dird/dird_conf.c:629
-#, c-format
-msgid ""
-"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
-"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr="
-"%d\n"
-"      poolid=%s volname=%s MediaType=%s\n"
-msgstr ""
-"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
-"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr="
-"%d\n"
-"      poolid=%s volname=%s MediaType=%s\n"
+#~ msgid "Prior failed job found in catalog. Upgrading to %s.\n"
+#~ msgstr ""
+#~ "Vorheriger fehlgeschlagener job in catalog gefunden. Erweitere auf %s.\n"
 
-#: 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 ""
-"Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
-"      DeviceName=%s MediaType=%s StorageId=%s\n"
+#~ msgid "Unimplemented backup level %d %c\n"
+#~ msgstr "Nicht implementierter backup level %d %c\n"
 
-#: src/dird/dird_conf.c:656
-#, fuzzy, c-format
-msgid ""
-"Catalog: name=%s address=%s DBport=%d db_name=%s\n"
-"      db_driver=%s db_user=%s MutliDBConn=%d\n"
-msgstr ""
-"Catalog: name=%s address=%s DBport=%d db_name=%s\n"
-"      db_user=%s MutliDBConn=%d\n"
+#~ msgid "Cannot run program: %s. ERR=%s\n"
+#~ msgstr "Kann Programm: %s nicht starten. ERR=%s\n"
 
-#: 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"
+#~ msgid ">filed: write error on socket\n"
+#~ msgstr ">filed: Schreibfehler auf socket\n"
 
-#: src/dird/dird_conf.c:670
-msgid "JobDefs"
-msgstr "JobDefs"
+#~ msgid "Error running program: %s. ERR=%s\n"
+#~ msgstr "Fehler beim Start des Programms: %s. ERR=%s\n"
 
-#: src/dird/dird_conf.c:674
-#, c-format
-msgid ""
-"     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
-"%d\n"
-msgstr ""
-"     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
-"%d\n"
+#~ msgid "Cannot open included file: %s. ERR=%s\n"
+#~ msgstr "Kann inkludierte Datei nicht �ffnen: %s. ERR=%s\n"
 
-#: src/dird/dird_conf.c:680
-#, fuzzy, c-format
-msgid "     SpoolSize=%s\n"
-msgstr "      opcmd=%s\n"
+#, fuzzy
+#~ msgid "Client \"%s\" RunScript failed.\n"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/dird_conf.c:683
-#, fuzzy, c-format
-msgid "     Accurate=%d\n"
-msgstr "     SelectionType=%d\n"
+#, fuzzy
+#~ msgid "RestoreObject failed.\n"
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/dird/dird_conf.c:686
-#, c-format
-msgid "     SelectionType=%d\n"
-msgstr "     SelectionType=%d\n"
+#~ msgid ""
+#~ "<filed: bad attributes, expected 3 fields got %d\n"
+#~ "msglen=%d msg=%s\n"
+#~ msgstr ""
+#~ "<filed: fehlerhafte Attribute, 3 erwartet, erhalten: %d\n"
+#~ "msglen=%d msg=%s\n"
 
-#: src/dird/dird_conf.c:701
-#, c-format
-msgid "  --> Where=%s\n"
-msgstr "  --> Where=%s\n"
+#~ msgid "%s index %d not same as attributes %d\n"
+#~ msgstr "%s index %d ist nicht identisch mit attributen %d\n"
 
-#: src/dird/dird_conf.c:704
-#, fuzzy, c-format
-msgid "  --> RegexWhere=%s\n"
-msgstr "  --> Where=%s\n"
+#~ msgid "<filed: Network error getting attributes. ERR=%s\n"
+#~ msgstr "<filed: Netzwerkfehler beim Holen der Attribute. ERR=%s\n"
 
-#: src/dird/dird_conf.c:707
-#, c-format
-msgid "  --> Bootstrap=%s\n"
-msgstr "  --> Bootstrap=%s\n"
+#~ msgid "bget_dirmsg: unknown bnet signal %d\n"
+#~ msgstr "bget_dirmsg: unbekanntes bnet Signal %d\n"
 
-#: src/dird/dird_conf.c:710
-#, c-format
-msgid "  --> WriteBootstrap=%s\n"
-msgstr "  --> WriteBootstrap=%s\n"
+#~ msgid "Malformed message: %s\n"
+#~ msgstr "Nicht wohlgeformte Nachricht: %s\n"
 
-#: src/dird/dird_conf.c:713
-#, fuzzy, c-format
-msgid "  --> PluginOptions=%s\n"
-msgstr "  --> Run=%s\n"
+#~ msgid "Bad response to %s command: wanted %s, got %s\n"
+#~ msgstr "Schlechte Antwort auf %s Kommando: erwartet %s, erhalten %s\n"
 
-#: src/dird/dird_conf.c:716
-#, fuzzy, c-format
-msgid "  --> MaxRunTime=%u\n"
-msgstr "  --> RunWhen=%u\n"
+#~ msgid "Socket error on %s command: ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/dird_conf.c:719
-#, fuzzy, c-format
-msgid "  --> MaxWaitTime=%u\n"
-msgstr "  --> RunWhen=%u\n"
+#, fuzzy
+#~ msgid "Expected a strip path positive integer, got:%s:"
+#~ msgstr "fstype Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/dird_conf.c:722
-#, fuzzy, c-format
-msgid "  --> MaxStartDelay=%u\n"
-msgstr "  --> Target=%s\n"
+#~ msgid "Expected a FileSet option keyword, got:%s:"
+#~ msgstr "FileSet option Schl�sselwort erwartet, erhalten:%s:"
 
-#: src/dird/dird_conf.c:725
-#, fuzzy, c-format
-msgid "  --> MaxRunSchedTime=%u\n"
-msgstr "  --> RunWhen=%u\n"
+#~ msgid "Old style Include/Exclude not supported\n"
+#~ msgstr "veraltete Include/Exclude Anweisung nicht unterst�tzt\n"
 
-#: src/dird/dird_conf.c:737
-#, fuzzy, c-format
-msgid "  --> Base %s\n"
-msgstr "  --> Target=%s\n"
+#~ msgid "Regex compile error. ERR=%s\n"
+#~ msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
-msgid " --> RunScript\n"
-msgstr " --> RunScript\n"
+#~ msgid "Expected a regex string, got: %s\n"
+#~ msgstr "regul�ren Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
-#, c-format
-msgid "  --> Command=%s\n"
-msgstr "  --> Command=%s\n"
+#~ msgid "Expected a wild-card string, got: %s\n"
+#~ msgstr "wild-card Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
-#, c-format
-msgid "  --> Target=%s\n"
-msgstr "  --> Target=%s\n"
+#~ msgid "Expected an fstype string, got: %s\n"
+#~ msgstr "fstype Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
-#, c-format
-msgid "  --> RunOnSuccess=%u\n"
-msgstr "  --> RunOnSuccess=%u\n"
+#~ msgid "Expected an drivetype string, got: %s\n"
+#~ msgstr "drivetype Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
-#, c-format
-msgid "  --> RunOnFailure=%u\n"
-msgstr "  --> RunOnFailure=%u\n"
+#, fuzzy
+#~ msgid "Backslash found. Use forward slashes or quote the string.: %s\n"
+#~ msgstr ""
+#~ "Backslash gefunden. Benutze forward slashes oder setze den String in "
+#~ "Anf�hrungszeichen.: %s\n"
 
-#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
-#, fuzzy, c-format
-msgid "  --> FailJobOnError=%u\n"
-msgstr "  --> AbortJobOnError=%u\n"
+#~ msgid "Expected a filename, got: %s"
+#~ msgstr "Dateiname erwartet, erhalten: %s"
 
-#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
-#, c-format
-msgid "  --> RunWhen=%u\n"
-msgstr "  --> RunWhen=%u\n"
+#~ msgid "Expected a FileSet keyword, got: %s"
+#~ msgstr "FileSet Schl�sselwort erwartet,erhalten: %s"
 
-#: src/dird/dird_conf.c:775
-#, c-format
-msgid "  --> Run=%s\n"
-msgstr "  --> Run=%s\n"
+#~ msgid "Could not init job queue: ERR=%s\n"
+#~ msgstr "Konnte job queue nicht initialiseren: ERR=%s\n"
 
-#: src/dird/dird_conf.c:779
-#, c-format
-msgid "  --> SelectionPattern=%s\n"
-msgstr "  --> SelectionPattern=%s\n"
+#~ msgid "Could not add job queue: ERR=%s\n"
+#~ msgstr "Konnte job queue nicht hinzuf�gen: ERR=%s\n"
 
-#: src/dird/dird_conf.c:793
-#, c-format
-msgid "FileSet: name=%s\n"
-msgstr "FileSet: name=%s\n"
+#~ msgid "Unable to init job cond variable: ERR=%s\n"
+#~ msgstr "konnte job cond Variable nicht initialisieren: ERR=%s\n"
 
-#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
-#, c-format
-msgid "Schedule: name=%s\n"
-msgstr "Schedule: name=%s\n"
+#~ msgid "Could not open database \"%s\".\n"
+#~ msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/dird/dird_conf.c:892
-#, c-format
-msgid "  --> Run Level=%s\n"
-msgstr "  --> Run Level=%s\n"
+#~ msgid "unknown source"
+#~ msgstr "unbekannte Quelle"
 
-#: src/dird/dird_conf.c:893
-msgid "      hour="
-msgstr "      hour="
+#~ msgid "Job resource"
+#~ msgstr "Job Ressource"
 
-#: src/dird/dird_conf.c:902
-msgid "      mday="
-msgstr "      mday="
+#~ msgid "Unimplemented job type: %d\n"
+#~ msgstr "nicht implementierter job Typ: %d\n"
 
-#: src/dird/dird_conf.c:911
-msgid "      month="
-msgstr "      month="
+#~ msgid "Job canceled because max start delay time exceeded.\n"
+#~ msgstr "Job abgebrochen, da \"max start delay time\" �berschritten wurde.\n"
 
-#: src/dird/dird_conf.c:920
-msgid "      wday="
-msgstr "      wday="
+#, fuzzy
+#~ msgid "Job canceled because max run sched time exceeded.\n"
+#~ msgstr "Job abgebrochen, da \"max start delay time\" �berschritten wurde.\n"
 
-#: src/dird/dird_conf.c:929
-msgid "      wom="
-msgstr "      wom="
+#~ msgid "Failed to connect to File daemon.\n"
+#~ msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
 
-#: src/dird/dird_conf.c:938
-msgid "      woy="
-msgstr "      woy="
+#, fuzzy
+#~ msgid "Failed to select Storage daemon.\n"
+#~ msgstr "Verbindung zu Storage daemon fehlgeschlagen.\n"
 
-#: src/dird/dird_conf.c:947
-#, c-format
-msgid "      mins=%d\n"
-msgstr "      mins=%d\n"
+#~ msgid "Failed to connect to Storage daemon.\n"
+#~ msgstr "Verbindung zu Storage daemon fehlgeschlagen.\n"
 
-#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
-msgid "     --> "
-msgstr "     --> "
+#, fuzzy
+#~ msgid "canceled"
+#~ msgstr "%s Abgebrochen"
 
-#: src/dird/dird_conf.c:974
-#, c-format
-msgid "Pool: name=%s PoolType=%s\n"
-msgstr "Pool: name=%s PoolType=%s\n"
+#, fuzzy
+#~ msgid "JobId %s, Job %s marked to be %s.\n"
+#~ msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
 
-#: 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"
+#~ msgid "Max wait time exceeded. Job canceled.\n"
+#~ msgstr "\"Max wait time\" �berschritten. Job abgebrochen.\n"
 
-#: 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"
+#~ msgid "Max run time exceeded. Job canceled.\n"
+#~ msgstr "\"Max run time\" �berschritten, Job abgebrochen.\n"
 
-#: src/dird/dird_conf.c:982
-#, c-format
-msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
-msgstr "      VolUse=%s recycle=%d LabelFormat=%s\n"
+#, fuzzy
+#~ msgid "Max run sched time exceeded. Job canceled.\n"
+#~ msgstr "\"Max run time\" �berschritten, Job abgebrochen.\n"
 
-#: src/dird/dird_conf.c:986
-#, c-format
-msgid "      CleaningPrefix=%s LabelType=%d\n"
-msgstr "      CleaningPrefix=%s LabelType=%d\n"
+#, fuzzy
+#~ msgid "Pool \"%s\" not in database. ERR=%s"
+#~ msgstr "Pool %s nicht in der Datenbank. %s"
 
-#: 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"
+#, fuzzy
+#~ msgid "Created database record for Pool \"%s\".\n"
+#~ msgstr "Erzeuge db Medientyp Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Run NextPool override"
+#~ msgstr "von \"Run pool\" �berschrieben"
 
-#: src/dird/dird_conf.c:996
-#, c-format
-msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
-msgstr "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
+#, fuzzy
+#~ msgid "Storage from Run NextPool override"
+#~ msgstr "Storage aus der \"NextPool\" Ressource des Pools."
 
-#: src/dird/dird_conf.c:1000
-#, fuzzy, c-format
-msgid "      JobRetention=%s FileRetention=%s\n"
-msgstr "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
+#, fuzzy
+#~ msgid "Job's NextPool resource"
+#~ msgstr "\"NextPool\"  Ressource des Job Pools"
 
-#: src/dird/dird_conf.c:1004
-#, fuzzy, c-format
-msgid "      NextPool=%s\n"
-msgstr "      opcmd=%s\n"
+#, fuzzy
+#~ msgid "Storage from Job's NextPool resource"
+#~ msgstr "Storage aus der \"NextPool\" Ressource des Pools."
 
-#: src/dird/dird_conf.c:1007
-#, fuzzy, c-format
-msgid "      RecyclePool=%s\n"
-msgstr "      opcmd=%s\n"
+#~ msgid "Job Pool's NextPool resource"
+#~ msgstr "\"NextPool\"  Ressource des Job Pools"
 
-#: src/dird/dird_conf.c:1010
-#, fuzzy, c-format
-msgid "      ScratchPool=%s\n"
-msgstr "      opcmd=%s\n"
+#~ msgid "Storage from Pool's NextPool resource"
+#~ msgstr "Storage aus der \"NextPool\" Ressource des Pools."
 
-#: src/dird/dird_conf.c:1013
-#, fuzzy, c-format
-msgid "      Catalog=%s\n"
-msgstr "      mailcmd=%s\n"
+#, fuzzy
+#~ msgid "Run Pool override"
+#~ msgstr "von \"Run pool\" �berschrieben"
 
-#: src/dird/dird_conf.c:1033
-#, c-format
-msgid "Messages: name=%s\n"
-msgstr "Messages: name=%s\n"
+#, fuzzy
+#~ msgid "Run FullPool override"
+#~ msgstr "von \"Run FullPool\" �berschrieben"
 
-#: src/dird/dird_conf.c:1035
-#, c-format
-msgid "      mailcmd=%s\n"
-msgstr "      mailcmd=%s\n"
+#~ msgid "Could not create Client record. ERR=%s\n"
+#~ msgstr "Konnte Client Eintrag nicht anlegen. ERR=%s\n"
 
-#: src/dird/dird_conf.c:1037
-#, c-format
-msgid "      opcmd=%s\n"
-msgstr "      opcmd=%s\n"
+#~ msgid "FileSet MD5 digest not found.\n"
+#~ msgstr "FileSet MD5 Pr�fsumme nicht gefunden.\n"
 
-#: 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"
+#~ msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
+#~ msgstr "Konnte FileSet \"%s\" Eintrag nicht erzeugen. ERR=%s\n"
 
-#: 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"
+#~ msgid "Error updating job record. %s"
+#~ msgstr "Fehler beim Aktualisieren des job Eintrags. %s"
 
-#: 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
-#: src/qt-console/bat_conf.cpp:265
-#, c-format
-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"
+#, fuzzy
+#~ msgid "Run pool override"
+#~ msgstr "von \"Run pool\" �berschrieben"
 
-#: 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"
+#, fuzzy
+#~ msgid "Run storage override"
+#~ msgstr "Run storage override"
 
-#: src/dird/dird_conf.c:1450
-#, c-format
-msgid "Cannot find Pool resource %s\n"
-msgstr "Kann Pool resource %s nicht finden\n"
+#, fuzzy
+#~ msgid "Client resource"
+#~ msgstr "Pool Ressource"
 
-#: src/dird/dird_conf.c:1461
-#, c-format
-msgid "Cannot find Console resource %s\n"
-msgstr "Kann Console resource %s nicht finden\n"
+#~ msgid "No storage specified.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Could not start clone job: \"%s\".\n"
+#~ msgstr "Konnte clone job nicht starten.\n"
 
-#: 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"
+#~ msgid "Clone JobId %d started.\n"
+#~ msgstr "Clone JobId %d gestartet.\n"
 
-#: src/dird/dird_conf.c:1483
-#, c-format
-msgid "Cannot find Job resource %s\n"
-msgstr "Kann Job resource %s nicht finden\n"
+#~ msgid "pthread_attr_init: ERR=%s\n"
+#~ msgstr "pthread_attr_init: ERR=%s\n"
 
-#: src/dird/dird_conf.c:1533
-#, c-format
-msgid "Cannot find Counter resource %s\n"
-msgstr "Kann Counter resource %s nicht finden\n"
+#~ msgid "pthread_mutex_init: ERR=%s\n"
+#~ msgstr "pthread_mutex_init: ERR=%s\n"
 
-#: 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"
+#~ msgid "pthread_cond_init: ERR=%s\n"
+#~ msgstr "pthread_cond_init: ERR=%s\n"
 
-#: src/dird/dird_conf.c:1554
-#, c-format
-msgid "Cannot find Schedule resource %s\n"
-msgstr "Kann Schedule resource %s nicht finden\n"
+#~ msgid "pthread_cond_broadcast: ERR=%s\n"
+#~ msgstr "pthread_cond_broadcast: ERR=%s\n"
 
-#: 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
-#, c-format
-msgid "Unknown resource type %d in save_resource.\n"
-msgstr "Unbekannter resource type %d in save_resource.\n"
+#~ msgid "pthread_cond_wait: ERR=%s\n"
+#~ msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: 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"
+#~ msgid "Job %s waiting %d seconds for scheduled start time.\n"
+#~ msgstr "Job %s wartet %d Sekunden auf die geplante Startzeit.\n"
 
-#: 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
-#, c-format
-msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
-msgstr ""
-"Der Versuch der Definition einer zweiten  %s resource mit dem Namen \"%s\" "
-"ist nicht erlaubt.\n"
+#~ msgid "pthread_thread_create: ERR=%s\n"
+#~ msgstr "pthread_thread_create: ERR=%s\n"
 
-#: 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"
+#~ msgid "pthread_cond_signal: ERR=%s\n"
+#~ msgstr "pthread_cond_signal: ERR=%s\n"
 
-#: src/dird/dird_conf.c:1660
-#, fuzzy, c-format
-msgid "Expected one of: %s, got: %s"
-msgstr "Erwartet: %s, erhalten: %s"
+#~ msgid "pthread_create: ERR=%s\n"
+#~ msgstr "pthread_create: ERR=%s\n"
 
-#: 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"
+#~ msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
+#~ msgstr ""
+#~ " Job %s f�r %s erneut geplant um in %d seconds nachgestartet zu werden "
+#~ "(%s).\n"
 
-#: src/dird/dird_conf.c:1758
-#, c-format
-msgid "Expected a Job Type keyword, got: %s"
-msgstr "Job Type Schl�sselwort erwartet, erhalten: %s"
+#~ msgid "previous Job"
+#~ msgstr "vorheriger Job"
 
-#: src/dird/dird_conf.c:1782
-#, c-format
-msgid "Expected a Job Level keyword, got: %s"
-msgstr "Job Level Schl�sselwort erwartet, erhalten: %s"
+#~ msgid ""
+#~ "Job canceled. Attempt to read and write same device.\n"
+#~ "    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
+#~ msgstr ""
+#~ "Job abgebrochen. Versuch auf das selbe Ger�t zu lesen und zu schreiben.\n"
+#~ "    lese storage \"%s\" (Von %s) -- schreib storage \"%s\" (Von %s)\n"
 
-#: src/dird/dird_conf.c:1802
-#, c-format
-msgid "Expected a Restore replacement option, got: %s"
-msgstr "Restore replacement Option erwartet, erhalten: %s"
+#~ msgid "Could not get or create a Pool record.\n"
+#~ msgstr "Konnte keinen Pool Eintrag holen oder erzeugen.\n"
 
-#: 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"
+#~ msgid "Could not get or create the FileSet record.\n"
+#~ msgstr "Konnte FileSet Eintrag weder holen noch erzeugen.\n"
 
-#: 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 ""
-"Konnte config Resource %s , referenziert in Zeile %d : %s nicht finden\n"
+#, fuzzy
+#~ msgid "No previous Job found to %s.\n"
+#~ msgstr "Keinen vorherigen Job zum migrieren gefunden.\n"
 
-#: src/dird/getmsg.c:176
-#, c-format
-msgid "bget_dirmsg: unknown bnet signal %d\n"
-msgstr "bget_dirmsg: unbekanntes bnet Signal %d\n"
+#, fuzzy
+#~ msgid "Create bootstrap file failed.\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/getmsg.c:194 src/dird/getmsg.c:200 src/dird/getmsg.c:213
-#: src/dird/getmsg.c:247 src/dird/getmsg.c:269 src/dird/getmsg.c:295
-#, c-format
-msgid "Malformed message: %s\n"
-msgstr "Nicht wohlgeformte Nachricht: %s\n"
+#, fuzzy
+#~ msgid "Previous Job has no data to %s.\n"
+#~ msgstr "Vorheriger Job hat keine Daten zu migrieren.\n"
 
-#: src/dird/getmsg.c:367
-#, c-format
-msgid "Bad response to %s command: wanted %s, got %s\n"
-msgstr "Schlechte Antwort auf %s Kommando: erwartet %s, erhalten %s\n"
+#~ msgid "Job resource not found for \"%s\".\n"
+#~ msgstr "Job Ressource f�r \"%s\"nicht gefunden.\n"
 
-#: src/dird/getmsg.c:372
-#, c-format
-msgid "Socket error on %s command: ERR=%s\n"
-msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
+#~ msgid "Previous Job resource not found for \"%s\".\n"
+#~ msgstr "Vorherige Job Ressource f�r \"%s\"nicht gefunden.\n"
 
-#: src/dird/ua_restore.c:148
-msgid "\"RegexWhere\" specification not authorized.\n"
-msgstr ""
+#~ msgid "setup job failed.\n"
+#~ msgstr "Job Einrichtung Fehlgeschlagen.\n"
 
-#: src/dird/ua_restore.c:155
-msgid "\"where\" specification not authorized.\n"
-msgstr ""
+#~ msgid "Pool for JobId %s not in database. ERR=%s\n"
+#~ msgstr "Pool f�r JobId %s ist nicht in der Datenbank. ERR=%s\n"
 
-#: src/dird/ua_restore.c:177
-msgid ""
-"No Restore Job Resource found in bacula-dir.conf.\n"
-"You must create at least one before running this command.\n"
-msgstr ""
+#~ msgid "Pool resource \"%s\" not found.\n"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/ua_restore.c:194
-msgid "Restore not done.\n"
-msgstr ""
+#, fuzzy
+#~ 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"
 
-#: src/dird/ua_restore.c:205
-msgid "Unable to construct a valid BSR. Cannot continue.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Start %s JobId %s, Job=%s\n"
+#~ msgstr "Start Sicherung JobId %s, Job=%s\n"
 
-#: src/dird/ua_restore.c:209 src/dird/ua_restore.c:221
-msgid "No files selected to be restored.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not start migration/copy job.\n"
+#~ msgstr "Konnte Migrationsjob nicht starten.\n"
 
-#: src/dird/ua_restore.c:215
-msgid ""
-"\n"
-"1 file selected to be restored.\n"
-"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "%s JobId %d started.\n"
+#~ msgstr "Clone JobId %d gestartet.\n"
 
-#: src/dird/ua_restore.c:217
-#, c-format
-msgid ""
-"\n"
-"%s files selected to be restored.\n"
-"\n"
-msgstr ""
+#~ msgid "%s OK -- with warnings"
+#~ msgstr "%s OK -- mit Warnungen"
 
-#: src/dird/ua_restore.c:236
-msgid "No Client resource found!\n"
-msgstr ""
+#~ msgid "%s OK"
+#~ msgstr "%s OK"
 
-#: src/dird/ua_restore.c:333
-msgid "The restore will use the following job(s) as Base\n"
-msgstr ""
+#~ msgid "*** %s Error ***"
+#~ msgstr "*** %s Fehler ***"
 
-#: src/dird/ua_restore.c:354
-#, c-format
-msgid "Missing value for keyword: %s\n"
-msgstr ""
+#~ msgid "%s Canceled"
+#~ msgstr "%s Abgebrochen"
 
-#: src/dird/ua_restore.c:434
-msgid "List last 20 Jobs run"
-msgstr ""
+#~ msgid "Inappropriate %s term code"
+#~ msgstr "Unzutreffender %s Beendigungskode"
 
-#: src/dird/ua_restore.c:435
-msgid "List Jobs where a given File is saved"
-msgstr ""
+#, fuzzy
+#~ msgid "%s -- no files to %s"
+#~ msgstr "%s -- keine Dateien zur Migration."
 
-#: src/dird/ua_restore.c:436
-msgid "Enter list of comma separated JobIds to select"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  Prev Backup JobId:      %s\n"
+#~ "  Prev Backup Job:        %s\n"
+#~ "  New Backup JobId:       %s\n"
+#~ "  Current JobId:          %s\n"
+#~ "  Current Job:            %s\n"
+#~ "  Backup Level:           %s%s\n"
+#~ "  Client:                 %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Read Pool:              \"%s\" (From %s)\n"
+#~ "  Read Storage:           \"%s\" (From %s)\n"
+#~ "  Write Pool:             \"%s\" (From %s)\n"
+#~ "  Write Storage:          \"%s\" (From %s)\n"
+#~ "  Catalog:                \"%s\" (From %s)\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Elapsed time:           %s\n"
+#~ "  Priority:               %d\n"
+#~ "  SD Files Written:       %s\n"
+#~ "  SD Bytes Written:       %s (%sB)\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s\n"
+#~ "  SD Errors:              %d\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s (%s): %s\n"
+#~ "  vorheriges Backup JobId:%s\n"
+#~ "  neues Backup JobId:     %s\n"
+#~ "  Migration JobId:        %s\n"
+#~ "  Migration Job:          %s\n"
+#~ "  Backup Level:           %s%s\n"
+#~ "  Client:                 %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Lese Pool:              \"%s\" (Von %s)\n"
+#~ "  Lese Storage:           \"%s\" (Von %s)\n"
+#~ "  Schreib Pool:           \"%s\" (Von %s)\n"
+#~ "  Schreib Storage:        \"%s\" (Von %s)\n"
+#~ "  Start Zeit:             %s\n"
+#~ "  End Zeit:               %s\n"
+#~ "  Verstichene Zeit:       %s\n"
+#~ "  Priorit�t:              %d\n"
+#~ "  SD Dateien geschrieben: %s\n"
+#~ "  SD Bytes geschrieben:   %s (%sB)\n"
+#~ "  Geschwindigkeit:        %.1f KB/s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s (%sB)\n"
+#~ "  SD Fehler:              %d\n"
+#~ "  SD Beendigungsstatus :  %s\n"
+#~ "  Beendigungsstatus:      %s\n"
+#~ "\n"
 
-#: src/dird/ua_restore.c:437
-msgid "Enter SQL list command"
-msgstr ""
+#~ msgid "No Next Pool specification found in Pool \"%s\".\n"
+#~ msgstr "Keine \"Next Pool\" Spezifikation in Pool \"%s\" gefunden.\n"
 
-#: src/dird/ua_restore.c:438
-msgid "Select the most recent backup for a client"
-msgstr ""
+#~ msgid "No Storage specification found in Next Pool \"%s\".\n"
+#~ msgstr "Keine \"Storage\" Spezifikation in \"Next Pool\" \"%s\" gefunden.\n"
 
-#: src/dird/ua_restore.c:439
-msgid "Select backup for a client before a specified time"
-msgstr ""
+#, fuzzy
+#~ msgid "No %s SQL selection pattern specified.\n"
+#~ msgstr "Kein \"Migration SQL selection pattern\" spezifiziert.\n"
 
-#: src/dird/ua_restore.c:440
-msgid "Enter a list of files to restore"
-msgstr ""
+#~ msgid "SQL failed. ERR=%s\n"
+#~ msgstr "SQL fehlgeschlagen ERR=%s\n"
 
-#: src/dird/ua_restore.c:441
-msgid "Enter a list of files to restore before a specified time"
-msgstr ""
+#, fuzzy
+#~ msgid "No Volumes found to %s.\n"
+#~ msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: src/dird/ua_restore.c:442
-msgid "Find the JobIds of the most recent backup for a client"
-msgstr ""
+#~ msgid "Invalid JobId found.\n"
+#~ msgstr "Ung�ltige JobId gefunden.\n"
 
-#: src/dird/ua_restore.c:443
-msgid "Find the JobIds for a backup for a client before a specified time"
-msgstr ""
+#, fuzzy
+#~ msgid "Unknown %s Selection Type.\n"
+#~ msgstr "Unbekannter \"Migration Selection Type\".\n"
 
-#: src/dird/ua_restore.c:444
-msgid "Enter a list of directories to restore for found JobIds"
-msgstr ""
+#, fuzzy
+#~ msgid "No JobIds found to %s.\n"
+#~ msgstr "Kein Job gefunden f�r: %s.\n"
 
-#: src/dird/ua_restore.c:445
-msgid "Select full restore to a specified Job date"
-msgstr ""
+#, fuzzy
+#~ 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/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 ""
+#, fuzzy
+#~ msgid "%s using JobId=%s Job=%s\n"
+#~ msgstr "Migration benutzt JobId=%s Job=%s\n"
 
-#: src/dird/ua_restore.c:491
-#, c-format
-msgid "Unknown keyword: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No %ss found to %s.\n"
+#~ msgstr "Keine %ss zum Migrieren gefunden.\n"
 
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
-#, c-format
-msgid "Improper date format: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "SQL to get uncopied jobs failed. ERR=%s\n"
+#~ msgstr "SQL um %s zu holen fehlgeschlagen. ERR=%s\n"
 
-#: src/dird/ua_restore.c:560
-#, c-format
-msgid "Error: Pool resource \"%s\" access not allowed.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No %s %s selection pattern specified.\n"
+#~ msgstr "Kein Migration %s selection pattern spezifiziert.\n"
 
-#: src/dird/ua_restore.c:576
-msgid ""
-"\n"
-"First you select one or more JobIds that contain files\n"
-"to be restored. You will be presented several methods\n"
-"of specifying the JobIds. Then you will be allowed to\n"
-"select which files from those JobIds are to be restored.\n"
-"\n"
-msgstr ""
-"\n"
-"Zuerst w�hlen Sie eine oder mehrere JobIds die Dateien enthalten\n"
-"die wiederhergestellt werden sollen. Es werden mehrere Methoden\n"
-"zur ermittlung der JobIds angezeigt. Dann k�nnen Sie ausw�hlen, \n"
-"welche Dateien von diesen JobIds wiederhergestellt werden sollen.\n"
-"\n"
+#~ msgid "SQL to get %s failed. ERR=%s\n"
+#~ msgstr "SQL um %s zu holen fehlgeschlagen. ERR=%s\n"
 
-#: src/dird/ua_restore.c:589
-msgid "To select the JobIds, you have the following choices:\n"
-msgstr ""
+#, fuzzy
+#~ 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/ua_restore.c:594
-msgid "Select item: "
-msgstr ""
+#, fuzzy
+#~ msgid "Regex pattern matched no Jobs to %s.\n"
+#~ msgstr "Regex pattern hat auf keine Jobs f�r die Migration zugetroffen.\n"
 
-#: src/dird/ua_restore.c:599 src/dird/ua_restore.c:634
-msgid "SQL query not authorized.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No %s found to %s.\n"
+#~ msgstr "Keine %ss zum Migrieren gefunden.\n"
 
-#: src/dird/ua_restore.c:612
-msgid "Enter Filename (no path):"
-msgstr ""
+#~ msgid "SQL error. Expected 1 MediaId got %d\n"
+#~ msgstr "SQL Fehler. Erwartet 1 MediaId erhalten: %d\n"
 
-#: src/dird/ua_restore.c:627 src/dird/ua_restore.c:735
-msgid "Enter JobId(s), comma separated, to restore: "
-msgstr ""
+#~ msgid "Storage daemon rejected Job command: %s\n"
+#~ msgstr "Storage daemon hat \"Job command\": %s abgelehnt\n"
 
-#: src/dird/ua_restore.c:637
-msgid "Enter SQL list command: "
-msgstr ""
+#~ msgid "<stored: bad response to Job command: %s\n"
+#~ msgstr "<stored: falsche Antwort auf  Job Kommando: %s\n"
 
-#: src/dird/ua_restore.c:671 src/dird/ua_restore.c:694
-msgid ""
-"Enter file names with paths, or < to enter a filename\n"
-"containing a list of file names with paths, and terminate\n"
-"them with a blank line.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Using Device \"%s\" to read.\n"
+#~ msgstr "unbekannt"
 
-#: src/dird/ua_restore.c:675 src/dird/ua_restore.c:698
-msgid "Enter full filename: "
-msgstr ""
+#, fuzzy
+#~ msgid "Using Device \"%s\" to write.\n"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/ua_restore.c:733
-#, c-format
-msgid "You have already selected the following JobIds: %s\n"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "     Storage daemon didn't accept Device \"%s\" because:\n"
+#~ "     %s"
+#~ msgstr ""
+#~ "\n"
+#~ "     Storage daemon hat Device \"%s\" nicht akzeptiert weil:\n"
+#~ "     %s"
 
-#: src/dird/ua_restore.c:751
-msgid ""
-"Enter full directory names or start the name\n"
-"with a < to indicate it is a filename containing a list\n"
-"of directories and terminate them with a blank line.\n"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "     Storage daemon didn't accept Device \"%s\" command.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "     Storage daemon hat Device \"%s\" Kommando nicht akzeptiert.\n"
 
-#: src/dird/ua_restore.c:755
-msgid "Enter directory name: "
-msgstr ""
+#~ msgid "Cannot create message thread: %s\n"
+#~ msgstr "Kann \"message thread\" nicht erzeugen: %s\n"
 
-#: src/dird/ua_restore.c:771
-msgid "Enter JobId to get the state to restore: "
-msgstr ""
+#~ msgid "Could not open bootstrap file %s: ERR=%s\n"
+#~ msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
 
-#: src/dird/ua_restore.c:784
-#, c-format
-msgid "Selecting jobs to build the Full state at %s\n"
-msgstr ""
+#~ msgid "Illegal character in Volume name \"%s\"\n"
+#~ msgstr "Illegales Zeichen in \"Volume name\" \"%s\"\n"
 
-#: src/dird/ua_restore.c:810
-msgid "Invalid JobId in list.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Created new Volume=\"%s\", Pool=\"%s\", MediaType=\"%s\" in catalog.\n"
+#~ msgstr "Neues Volume \"%s\" in catalog erzeugt.\n"
 
-#: src/dird/ua_restore.c:829
-#, c-format
-msgid "Access to JobId=%s (Job \"%s\") not authorized. Not selected.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "SQL failed, but ignored. ERR=%s\n"
+#~ msgstr "SQL fehlgeschlagen ERR=%s\n"
 
-#: src/dird/ua_restore.c:842
-msgid "No Jobs selected.\n"
-msgstr ""
+#~ 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/ua_restore.c:847
-#, c-format
-msgid "You have selected the following JobIds: %s\n"
-msgstr ""
+#~ msgid "Too many failures. Giving up creating Volume name.\n"
+#~ msgstr "Zu viele Fehler. Gebe Versuch einen Volumennamen zu erzeugen auf.\n"
 
-#: src/dird/ua_restore.c:849
-#, c-format
-msgid "You have selected the following JobId: %s\n"
-msgstr ""
+#, fuzzy
+#~ 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/ua_restore.c:859
-msgid ""
-"The restored files will the most current backup\n"
-"BEFORE the date you specify below.\n"
-"\n"
-msgstr ""
+#~ msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
+#~ msgstr "Volume erstmalig benutzt. Markiere Volume \"%s\" als Used.\n"
 
-#: src/dird/ua_restore.c:862
-msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
-msgstr ""
+#, fuzzy
+#~ 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/ua_restore.c:868
-msgid "Improper date format.\n"
-msgstr ""
+#, fuzzy
+#~ 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/ua_restore.c:889
-#, c-format
-msgid "Cannot open file %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ 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/ua_restore.c:897 src/dird/ua_restore.c:901
-#, c-format
-msgid "Error occurred on line %d of file \"%s\"\n"
-msgstr ""
+#~ msgid "Catalog error updating volume \"%s\". ERR=%s"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/ua_restore.c:945 src/dird/ua_restore.c:973
-#, c-format
-msgid "No database record found for: %s\n"
-msgstr ""
+#~ msgid "volume has expired"
+#~ msgstr "volume ist abgelaufen"
 
-#: src/dird/ua_restore.c:961
-msgid "No JobId specified cannot continue.\n"
-msgstr ""
+#~ msgid "Recycled current volume \"%s\"\n"
+#~ msgstr "Recycled current volume \"%s\"\n"
 
-#: src/dird/ua_restore.c:994
-#, c-format
-msgid "No table found: %s\n"
-msgstr ""
+#~ msgid "and recycling of current volume failed"
+#~ msgstr "und das Wiederverwenden des aktuellen volumes ist fehlgeschlagen "
 
-#: src/dird/ua_restore.c:1052
-msgid ""
-"\n"
-"\n"
-"For one or more of the JobIds selected, no files were found,\n"
-"so file selection is not possible.\n"
-"Most likely your retention policy pruned the files.\n"
-msgstr ""
+#~ msgid "but should be Append, Purged or Recycle"
+#~ msgstr "aber sollte Append, Purged oder Recycle sein"
 
-#: src/dird/ua_restore.c:1055
-msgid ""
-"\n"
-"Do you want to restore all the files? (yes|no): "
-msgstr ""
+#, fuzzy
+#~ msgid "volume has recycling disabled"
+#~ msgstr "volume ist abgelaufen"
 
-#: src/dird/ua_restore.c:1058
-msgid ""
-"\n"
-"Regexp matching files to restore? (empty to abort): "
-msgstr ""
+#~ msgid ""
+#~ "but should be Append, Purged or Recycle (recycling of the current volume "
+#~ "failed)"
+#~ msgstr ""
+#~ "aber sollte Append, Purged oder Recycle (das Recycling des des aktuellen "
+#~ "Volumens ist fehlgeschlagen)"
 
-#: src/dird/ua_restore.c:1074
-#, fuzzy, c-format
-msgid "Regex compile error: %s\n"
-msgstr "Regex �bersetzungsfehler. ERR=%s\n"
+#, fuzzy
+#~ msgid "Could not get storage resource '%s'.\n"
+#~ msgstr "Kann Storage resource %s nicht finden\n"
 
-#: src/dird/ua_restore.c:1137
-#, c-format
-msgid ""
-"\n"
-"Building directory tree for JobId(s) %s ...  "
-msgstr ""
+#, fuzzy
+#~ msgid "Could not acquire read storage lock for \"%s\""
+#~ msgstr "Kann Storage resource %s nicht finden\n"
 
-#: src/dird/ua_restore.c:1207
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree and marked for extraction.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore OK -- with warnings"
+#~ msgstr "%s OK -- mit Warnungen"
 
-#: src/dird/ua_restore.c:1210
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Restore Client:         %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Files Expected:         %s\n"
+#~ "  Files Restored:         %s\n"
+#~ "  Bytes Restored:         %s\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  FD Errors:              %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s (%s): %s\n"
+#~ "  Build OS:                   %s %s %s\n"
+#~ "  JobId:                      %d\n"
+#~ "  Job:                        %s\n"
+#~ "  Client:                     %s\n"
+#~ "  Start time:                 %s\n"
+#~ "  End time:                   %s\n"
+#~ "  Dateien erwartet:           %s\n"
+#~ "  Dateien. wiederhergestellt: %s\n"
+#~ "  Bytes wiederhergestellt:    %s\n"
+#~ "  Geschwindigkeit:            %.1f KB/s\n"
+#~ "  FD Fehler:                  %d\n"
+#~ "  FD Beendigungsstatus:       %s\n"
+#~ "  SD Beendigungsstatus:       %s\n"
+#~ "  Beendigungsstatus:          %s\n"
+#~ "\n"
 
-#: src/dird/ua_restore.c:1285
-#, c-format
-msgid "Error getting FileSet \"%s\": ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Create DB Pool from resource"
+#~ msgstr "Pool Ressource"
 
-#: src/dird/ua_restore.c:1290
-#, fuzzy, c-format
-msgid "FileSet argument: %s\n"
-msgstr "FileSet: name=%s\n"
+#, fuzzy
+#~ msgid "Mount storage"
+#~ msgstr "Run storage override"
 
-#: src/dird/ua_restore.c:1302
-#, c-format
-msgid "No FileSet found for client \"%s\".\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Purge records from catalog"
+#~ msgstr "File Eintrag nicht im Catalog gefunden.\n"
 
-#: src/dird/ua_restore.c:1308
-#, c-format
-msgid "Error getting FileSet record: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore files"
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/dird/ua_restore.c:1309
-msgid ""
-"This probably means you modified the FileSet.\n"
-"Continuing anyway.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Run a job"
+#~ msgstr "Konnte Migrationsjob nicht starten.\n"
 
-#: src/dird/ua_restore.c:1324
-#, c-format
-msgid "Pool \"%s\" not found, using any pool.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Stop a job"
+#~ msgstr "Konnte Migrationsjob nicht starten.\n"
 
-#: src/dird/ua_restore.c:1351 src/dird/ua_restore.c:1367
-#, c-format
-msgid "No Full backup before %s found.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Show resource records"
+#~ msgstr "Job Ressource"
 
-#: src/dird/ua_restore.c:1396
-msgid "No jobs found.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Fileset \"%s\" not found.\n"
+#~ msgstr "FileSet Eintrag \"%s\" nicht gefunden\n"
 
-#: src/dird/ua_restore.c:1517
-#, c-format
-msgid "Warning default storage overridden by \"%s\" on command line.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Fileset name missing.\n"
+#~ msgstr "FileSet: name=%s\n"
 
-#: src/dird/ua_restore.c:1534
-#, c-format
-msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Level \"%s\" not valid.\n"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/ua_restore.c:1537
-#, c-format
-msgid "Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Accurate value missing.\n"
+#~ msgstr "FileSet: name=%s\n"
 
-#: src/dird/ua_restore.c:1546
-#, c-format
-msgid ""
-"\n"
-"Unable to find Storage resource for\n"
-"MediaType \"%s\", needed by the Jobs you selected.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "  %-13s %s\n"
+#~ msgstr "  --> Run=%s\n"
 
-#: src/dird/fd_cmds.c:95
-msgid "Client: "
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to get Job record for Job=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/dird/fd_cmds.c:137
-#, c-format
-msgid "File daemon \"%s\" rejected Job command: %s\n"
-msgstr "File daemon \"%s\" hat Job Kommando abgewiesen: %s\n"
+#, fuzzy
+#~ msgid "Unable to get last Job record for Job=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/dird/fd_cmds.c:150
-#, c-format
-msgid "Error updating Client record. ERR=%s\n"
-msgstr "Fehler beim Aktualisieren des Client Eintrags. ERR=%s\n"
+#, fuzzy
+#~ msgid "Unable to get Client record for Client=%s\n"
+#~ msgstr "Konnte Media record f�r Volume %s nicht holen: ERR=%s\n"
 
-#: src/dird/fd_cmds.c:155
-#, c-format
-msgid "FD gave bad response to JobId command: %s\n"
-msgstr "FD hat fehlerhafte Antwort auf JobId Kommando zur�ckgegeben: %s\n"
+#, fuzzy
+#~ msgid "Unable to get last Job record for Client=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/dird/fd_cmds.c:184 src/dird/fd_cmds.c:272
-msgid ", since="
-msgstr ", seit="
+#, fuzzy
+#~ msgid "Unknown command: %s\n"
+#~ msgstr "unbekannt"
 
-#: src/dird/fd_cmds.c:249
-msgid "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
-msgstr ""
-"Kein vorheriges oder passendes Full backup in catalog gefunden. F�hre FULL "
-"backup durch.\n"
+#, fuzzy
+#~ msgid "query keyword not found.\n"
+#~ msgstr "Path record: %s nicht gefunden.\n"
 
-#: src/dird/fd_cmds.c:250 src/dird/fd_cmds.c:256 src/dird/fd_cmds.c:265
-#, c-format
-msgid " (upgraded from %s)"
-msgstr " (erweitert von %s)"
+#, fuzzy
+#~ msgid "List MediaType failed: ERR=%s\n"
+#~ msgstr "Media id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/fd_cmds.c:255
 #, fuzzy
-msgid ""
-"No prior or suitable Differential backup found in catalog. Doing "
-"Differential backup.\n"
-msgstr ""
-"Kein vorheriges oder passendes Full backup in catalog gefunden. F�hre FULL "
-"backup durch.\n"
+#~ msgid "List Media failed: ERR=%s\n"
+#~ msgstr "Media id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/fd_cmds.c:263
-#, c-format
-msgid "Prior failed job found in catalog. Upgrading to %s.\n"
-msgstr ""
-"Vorheriger fehlgeschlagener job in catalog gefunden. Erweitere auf %s.\n"
+#, fuzzy
+#~ msgid "List Location failed: ERR=%s\n"
+#~ msgstr "Client id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/fd_cmds.c:328
-#, c-format
-msgid "Unimplemented backup level %d %c\n"
-msgstr "Nicht implementierter backup level %d %c\n"
+#, fuzzy
+#~ msgid "Illegal character \"%c\" in a comment.\n"
+#~ msgstr "Illegales Zeichen in \"Volume name\" \"%s\"\n"
 
-#: src/dird/fd_cmds.c:401
-msgid ""
-"FD compression disabled for this Job because AllowCompress=No in Storage "
-"resource.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Comment too long.\n"
+#~ msgstr "Job nicht gefunden: %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "No Volumes found, or no barcodes.\n"
+#~ msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: src/dird/fd_cmds.c:511 src/dird/fd_cmds.c:536 src/dird/fd_cmds.c:550
-msgid ">filed: write error on socket\n"
-msgstr ">filed: Schreibfehler auf socket\n"
+#, fuzzy
+#~ msgid "Disabled Jobs:\n"
+#~ msgstr "ist nicht aktiviert"
 
-#: src/dird/fd_cmds.c:517
-#, c-format
-msgid "Error running program: %s. ERR=%s\n"
-msgstr "Fehler beim Start des Programms: %s. ERR=%s\n"
+#, fuzzy
+#~ msgid "disabled"
+#~ msgstr "ist nicht aktiviert"
 
-#: src/dird/fd_cmds.c:526
-#, c-format
-msgid "Cannot open included file: %s. ERR=%s\n"
-msgstr "Kann inkludierte Datei nicht �ffnen: %s. ERR=%s\n"
+#, fuzzy
+#~ msgid "Could not find Pool for Job %s\n"
+#~ msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/dird/fd_cmds.c:672
-#, fuzzy, c-format
-msgid "Client \"%s\" RunScript failed.\n"
-msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
+#~ msgid "Pool %s not in database. %s"
+#~ msgstr "Pool %s nicht in der Datenbank. %s"
 
-#: src/dird/fd_cmds.c:695
-#, c-format
-msgid ""
-"Client \"%s\" may not be used to restore this job. Please upgrade your "
-"client.\n"
-msgstr ""
+#~ msgid "Pool %s created in database.\n"
+#~ msgstr "Pool %s in der Datenbank angelegt.\n"
 
-#: src/dird/fd_cmds.c:770
 #, fuzzy
-msgid "RestoreObject failed.\n"
-msgstr "Wiederherstellung l�uft..."
+#~ msgid "Begin pruning Files.\n"
+#~ msgstr "Beginn automatische S�uberung von Dateien.\n"
 
-#: src/dird/fd_cmds.c:806
-#, c-format
-msgid ""
-"<filed: bad attributes, expected 3 fields got %d\n"
-"msglen=%d msg=%s\n"
-msgstr ""
-"<filed: fehlerhafte Attribute, 3 erwartet, erhalten: %d\n"
-"msglen=%d msg=%s\n"
+#, fuzzy
+#~ msgid "Begin pruning Jobs older than %s.\n"
+#~ msgstr "Beginn automatische S�uberung von Auftr�gen.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Can't update volume size in the catalog\n"
+#~ msgstr "Neues Volume \"%s\" in catalog erzeugt.\n"
 
-#: src/dird/fd_cmds.c:862
-#, c-format
-msgid "%s index %d not same as attributes %d\n"
-msgstr "%s index %d ist nicht identisch mit attributen %d\n"
+#, fuzzy
+#~ msgid "Unable to truncate volume \"%s\"\n"
+#~ msgstr "Kann Konsole \"%s\" an %s:%s:%d nicht authentisieren.\n"
 
-#: src/dird/fd_cmds.c:876
-#, c-format
-msgid "<filed: Network error getting attributes. ERR=%s\n"
-msgstr "<filed: Netzwerkfehler beim Holen der Attribute. ERR=%s\n"
+#, fuzzy
+#~ msgid "No Volumes found to perform %s action.\n"
+#~ msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: src/dird/ua_label.c:104
-msgid "Negative numbers not permitted\n"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "First you select one or more JobIds that contain files\n"
+#~ "to be restored. You will be presented several methods\n"
+#~ "of specifying the JobIds. Then you will be allowed to\n"
+#~ "select which files from those JobIds are to be restored.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Zuerst w�hlen Sie eine oder mehrere JobIds die Dateien enthalten\n"
+#~ "die wiederhergestellt werden sollen. Es werden mehrere Methoden\n"
+#~ "zur ermittlung der JobIds angezeigt. Dann k�nnen Sie ausw�hlen, \n"
+#~ "welche Dateien von diesen JobIds wiederhergestellt werden sollen.\n"
+#~ "\n"
 
-#: src/dird/ua_label.c:110 src/lib/sellist.c:76
-msgid "Range end is not integer.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Regex compile error: %s\n"
+#~ msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/dird/ua_label.c:115 src/lib/sellist.c:81
-msgid "Range start is not an integer.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "FileSet argument: %s\n"
+#~ msgstr "FileSet: name=%s\n"
 
-#: src/dird/ua_label.c:121 src/lib/sellist.c:87
-msgid "Range end not bigger than start.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "NextPool \"%s\" not found.\n"
+#~ msgstr "FileSet Eintrag \"%s\" nicht gefunden\n"
 
-#: src/dird/ua_label.c:127 src/lib/sellist.c:94
-msgid "Input value is not an integer.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No authorization. NextPool \"%s\".\n"
+#~ msgstr "Keine \"Storage\" Spezifikation in \"Next Pool\" \"%s\" gefunden.\n"
 
-#: src/dird/ua_label.c:133
-msgid "Values must be be greater than zero.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore Client \"%s\" not found.\n"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/ua_label.c:137
-msgid "Slot too large.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No JobId specified.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Invalid or no Job name specified.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Could not get job record for selected JobId=%d. ERR=%s"
+#~ msgstr "Konnte job record f�r JobId %s zum migrieren nicht holen. ERR=%s"
 
-#: src/dird/ua_label.c:219 src/dird/ua_label.c:542
-msgid "No Volumes found to label, or no barcodes.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore Client"
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/dird/ua_label.c:229 src/dird/ua_label.c:1256
-#, c-format
-msgid "Slot %d greater than max %d ignored.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "NextPool"
+#~ msgstr "      opcmd=%s\n"
 
-#: src/dird/ua_label.c:267
-#, c-format
-msgid "No VolName for Slot=%d InChanger set to zero.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "File Relocation"
+#~ msgstr "File daemon"
 
-#: src/dird/ua_label.c:288
-#, c-format
-msgid "Catalog record for Volume \"%s\" updated to reference slot %d.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Storage from NextPool override"
+#~ msgstr "Storage aus der \"NextPool\" Ressource des Pools."
 
-#: src/dird/ua_label.c:292
-#, c-format
-msgid "Catalog record for Volume \"%s\" is up to date.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "%s -> %s\n"
+#~ msgstr "  --> Run=%s\n"
 
-#: src/dird/ua_label.c:298
-#, c-format
-msgid "Volume \"%s\" not found in catalog. Slot=%d InChanger set to zero.\n"
-msgstr ""
+#, fuzzy
+#~ 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_label.c:394
-#, c-format
-msgid ""
-"Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
-"relabeling.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Where:      %s\n"
+#~ msgstr "      opcmd=%s\n"
 
-#: src/dird/ua_label.c:410
-msgid "Enter new Volume name: "
-msgstr ""
+#, fuzzy
+#~ msgid "Run Migration job\n"
+#~ msgstr "Konnte Migrationsjob nicht starten.\n"
 
-#: src/dird/ua_label.c:425
-#, c-format
-msgid "Media record for new Volume \"%s\" already exists.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore Client specified twice.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_label.c:443
-msgid "Enter slot (0 or Enter for none): "
-msgstr ""
+#, fuzzy
+#~ msgid "Plugin Options not yet implemented.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_label.c:471
-#, c-format
-msgid "Delete of Volume \"%s\" failed. ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "Plugin Options specified twice.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_label.c:474
-#, c-format
-msgid "Old volume \"%s\" deleted from catalog.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Spool flag specified twice.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_label.c:485
-#, c-format
-msgid "Requesting to mount %s ...\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Invalid spooldata flag.\n"
+#~ msgstr "Ung�ltige JobId gefunden.\n"
 
-#: src/dird/ua_label.c:507
-msgid "Do not forget to mount the drive!!!\n"
-msgstr ""
+#, fuzzy
+#~ msgid "IgnoreDuplicateCheck flag specified twice.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_label.c:547
-msgid ""
-"The following Volumes will be labeled:\n"
-"Slot  Volume\n"
-"==============\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Invalid ignoreduplicatecheck flag.\n"
+#~ msgstr "Ung�ltige JobId gefunden.\n"
 
-#: src/dird/ua_label.c:556
-msgid "Do you want to label these Volumes? (yes|no): "
-msgstr ""
+#, fuzzy
+#~ msgid "Accurate flag specified twice.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_label.c:576
-#, c-format
-msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Invalid accurate flag.\n"
+#~ msgstr "Ung�ltige JobId gefunden.\n"
 
-#: src/dird/ua_label.c:582
-#, c-format
-msgid "Error setting InChanger: ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "Media Type specified twice.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_label.c:605
-#, c-format
-msgid "Maximum pool Volumes=%d reached.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "NextPool specified twice.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_label.c:613
-#, c-format
-msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Select Job(s):\n"
+#~ msgstr "ist nicht aktiviert"
 
-#: src/dird/ua_label.c:620
-#, c-format
-msgid "Catalog error on cleaning tape: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "No authorization for Storage \"%s\"\n"
+#~ msgstr "Storage daemon"
 
-#: src/dird/ua_label.c:656
-#, c-format
-msgid "Illegal character \"%c\" in a volume name.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "has terminated with warnings"
+#~ msgstr "%s OK -- mit Warnungen"
 
-#: src/dird/ua_label.c:703
-#, c-format
-msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
-msgstr ""
+#, fuzzy
+#~ msgid "is waiting on Storage \"%s\""
+#~ msgstr "Storage daemon"
 
-#: src/dird/ua_label.c:710
-#, c-format
-msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
-msgstr ""
+#, fuzzy
+#~ msgid "is waiting for its start time (%s)"
+#~ msgstr "Job %s wartet %d Sekunden auf die geplante Startzeit.\n"
 
-#: src/dird/ua_label.c:751
-#, c-format
-msgid "Catalog record for Volume \"%s\", Slot %d  successfully created.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "is waiting for a Shared Storage device"
+#~ msgstr "Storage daemon"
 
-#: src/dird/ua_label.c:764
-#, c-format
-msgid "Label command failed for Volume %s.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "is in unknown state %c"
+#~ msgstr "unbekannt"
 
-#: src/dird/ua_label.c:802
-msgid "Could not open SD socket.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "is waiting for Client to connect to Storage daemon"
+#~ msgstr "Verbindung zu Storage daemon fehlgeschlagen.\n"
 
-#: src/dird/ua_label.c:874 src/dird/ua_label.c:884
-#, c-format
-msgid "Invalid Slot number: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error updating media record ActionOnPurge: ERR=%s"
+#~ msgstr "Fehler beim Aktualisieren des Client Eintrags. ERR=%s\n"
 
-#: src/dird/ua_label.c:893
-#, c-format
-msgid "Invalid Volume name: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expect JobId keyword, not found.\n"
+#~ msgstr "Job Type Schl�sselwort erwartet, erhalten: %s"
 
-#: src/dird/ua_label.c:987
-#, c-format
-msgid "Device \"%s\" has %d slots.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Neither Client nor StartTime specified.\n"
+#~ msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_label.c:1033
-#, c-format
-msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Start Virtual Backup JobId %s, Job=%s\n"
+#~ msgstr "Start Sicherung JobId %s, Job=%s\n"
 
-#: src/dird/ua_label.c:1247
 #, fuzzy
-msgid "No Volumes found, or no barcodes.\n"
-msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
+#~ msgid "No valid Jobs found from user selection.\n"
+#~ msgstr "Kein Job gefunden f�r: %s.\n"
 
-#: src/dird/ua_label.c:1250
-msgid ""
-" Slot |   Volume Name    |   Status  |     Media Type       |      "
-"Pool          |\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Using user supplied JobIds=%s\n"
+#~ msgstr "Migration benutzt JobId=%s Job=%s\n"
 
-#: src/dird/ua_label.c:1251
-msgid ""
-"------+------------------+-----------+----------------------"
-"+--------------------|\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No previous Jobs found.\n"
+#~ msgstr "Keinen vorherigen Job zum migrieren gefunden.\n"
 
-#: src/dird/scheduler.c:112
-#, c-format
-msgid "Job %s not found\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error getting Job record for previous Job: ERR=%s"
+#~ msgstr "Fehler beim Holen des job Eintrags f�r den job Bericht: %s"
 
-#: src/dird/scheduler.c:136
-msgid "Walk queue"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Backup Level:           Virtual Full\n"
+#~ "  Client:                 \"%s\" %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Pool:                   \"%s\" (From %s)\n"
+#~ "  Catalog:                \"%s\" (From %s)\n"
+#~ "  Storage:                \"%s\" (From %s)\n"
+#~ "  Scheduled time:         %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Elapsed time:           %s\n"
+#~ "  Priority:               %d\n"
+#~ "  SD Files Written:       %s\n"
+#~ "  SD Bytes Written:       %s (%sB)\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s (%sB)\n"
+#~ "  SD Errors:              %d\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s (%s): %s\n"
+#~ "  vorheriges Backup JobId:%s\n"
+#~ "  neues Backup JobId:     %s\n"
+#~ "  Migration JobId:        %s\n"
+#~ "  Migration Job:          %s\n"
+#~ "  Backup Level:           %s%s\n"
+#~ "  Client:                 %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Lese Pool:              \"%s\" (Von %s)\n"
+#~ "  Lese Storage:           \"%s\" (Von %s)\n"
+#~ "  Schreib Pool:           \"%s\" (Von %s)\n"
+#~ "  Schreib Storage:        \"%s\" (Von %s)\n"
+#~ "  Start Zeit:             %s\n"
+#~ "  End Zeit:               %s\n"
+#~ "  Verstichene Zeit:       %s\n"
+#~ "  Priorit�t:              %d\n"
+#~ "  SD Dateien geschrieben: %s\n"
+#~ "  SD Bytes geschrieben:   %s (%sB)\n"
+#~ "  Geschwindigkeit:        %.1f KB/s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s (%sB)\n"
+#~ "  SD Fehler:              %d\n"
+#~ "  SD Beendigungsstatus :  %s\n"
+#~ "  Beendigungsstatus:      %s\n"
+#~ "\n"
 
-#: src/dird/scheduler.c:146
-msgid "Dequeued job"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  FileSet:                %s\n"
+#~ "  Verify Level:           %s\n"
+#~ "  Client:                 %s\n"
+#~ "  Verify JobId:           %d\n"
+#~ "  Verify Job:             %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Files Expected:         %s\n"
+#~ "  Files Examined:         %s\n"
+#~ "  Non-fatal FD errors:    %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s (%s): %s\n"
+#~ "  JobId:                      %d\n"
+#~ "  Job:                        %s\n"
+#~ "  Client:                     %s\n"
+#~ "  Start time:                 %s\n"
+#~ "  End time:                   %s\n"
+#~ "  Dateien erwartet:           %s\n"
+#~ "  Dateien. wiederhergestellt: %s\n"
+#~ "  Bytes wiederhergestellt:    %s\n"
+#~ "  Geschwindigkeit:            %.1f KB/s\n"
+#~ "  FD Fehler:                  %d\n"
+#~ "  FD Beendigungsstatus:       %s\n"
+#~ "  SD Beendigungsstatus:       %s\n"
+#~ "  Beendigungsstatus:          %s\n"
+#~ "\n"
 
-#: src/dird/scheduler.c:149
-msgid "Scheduler logic error\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build:                  %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  FileSet:                %s\n"
+#~ "  Verify Level:           %s\n"
+#~ "  Client:                 %s\n"
+#~ "  Verify JobId:           %d\n"
+#~ "  Verify Job:             %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Files Examined:         %s\n"
+#~ "  Non-fatal FD errors:    %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s (%s): %s\n"
+#~ "  JobId:                      %d\n"
+#~ "  Job:                        %s\n"
+#~ "  Client:                     %s\n"
+#~ "  Start time:                 %s\n"
+#~ "  End time:                   %s\n"
+#~ "  Dateien erwartet:           %s\n"
+#~ "  Dateien. wiederhergestellt: %s\n"
+#~ "  Bytes wiederhergestellt:    %s\n"
+#~ "  Geschwindigkeit:            %.1f KB/s\n"
+#~ "  FD Fehler:                  %d\n"
+#~ "  FD Beendigungsstatus:       %s\n"
+#~ "  SD Beendigungsstatus:       %s\n"
+#~ "  Beendigungsstatus:          %s\n"
+#~ "\n"
 
-#: src/dird/scheduler.c:190
-msgid "Run job"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot verify checksum for %s\n"
+#~ msgstr "Kann Schedule resource %s nicht finden\n"
 
-#: src/dird/scheduler.c:223
-msgid "run override"
-msgstr ""
+#, fuzzy
+#~ msgid "aclx_get error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/scheduler.c:413
-msgid "Inserted job"
-msgstr ""
+#, fuzzy
+#~ msgid "Unknown acl type encountered on file \"%s\": %ld\n"
+#~ msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/dird/scheduler.c:421
-msgid "Appended job"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to convert acl into text on file \"%s\"\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/scheduler.c:425
-msgid "Run queue"
-msgstr ""
+#, fuzzy
+#~ msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/run_conf.c:208
-#, c-format
-msgid "Expected an equals, got: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "aclx_put error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/run_conf.c:221 src/dird/run_conf.c:233 src/dird/run_conf.c:327
-#, c-format
-msgid "Expect a YES or NO, got: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "acl_get_file error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/run_conf.c:247
-#, c-format
-msgid "Job level field: %s not found in run record"
-msgstr ""
+#, fuzzy
+#~ 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/dird/run_conf.c:265
-#, c-format
-msgid "Could not find specified Pool Resource: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "acl_valid error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/run_conf.c:290
-#, c-format
-msgid "Could not find specified Storage Resource: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "acl_set_file error on file \"%s\": filesystem doesn't support ACLs\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/run_conf.c:302
-#, c-format
-msgid "Could not find specified Messages Resource: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "pathconf error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/run_conf.c:312 src/lib/parse_conf.c:736 src/lib/parse_conf.c:742
-#, c-format
-msgid "expected a time period, got: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "getacl error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/run_conf.c:331
-#, c-format
-msgid "Expected a keyword name, got: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/run_conf.c:370
-msgid "Day number out of range (1-31)"
-msgstr ""
+#, fuzzy
+#~ msgid "acl_get error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/run_conf.c:387 src/dird/run_conf.c:542
-msgid "Week number out of range (0-53)"
-msgstr ""
+#, fuzzy
+#~ 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/dird/run_conf.c:403
-#, c-format
-msgid "Job type field: %s in run record not found"
-msgstr ""
+#, fuzzy
+#~ msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/run_conf.c:410
-#, c-format
-msgid "Unexpected token: %d:%s"
-msgstr ""
+#, fuzzy
+#~ msgid "acl_set error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/run_conf.c:454
-msgid "Time must be preceded by keyword AT."
-msgstr ""
+#, fuzzy
+#~ msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/run_conf.c:463
-msgid "Time logic error.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/run_conf.c:478 src/dird/run_conf.c:497
-msgid "Bad time specification."
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to stat file \"%s\": ERR=%s\n"
+#~ msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/dird/run_conf.c:511
-msgid "Range logic error.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Connection from unknown Director %s at %s rejected.\n"
+#~ msgstr "unbekannt"
 
-#: src/dird/run_conf.c:520
-msgid "Bad day range specification."
-msgstr ""
+#, fuzzy
+#~ msgid "     Could not access \"%s\": ERR=%s\n"
+#~ msgstr "Konnte counter %s: nicht aktualisieren: ERR=%s\n"
 
-#: src/dird/run_conf.c:567
-msgid "Invalid month, week or position day range"
-msgstr ""
+#, fuzzy
+#~ msgid "     Could not follow link \"%s\": ERR=%s\n"
+#~ msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
 
-#: src/dird/run_conf.c:582
-msgid "Invalid month, weekday or position range"
-msgstr ""
+#, fuzzy
+#~ msgid "     Could not stat \"%s\": ERR=%s\n"
+#~ msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
 
-#: src/dird/run_conf.c:641
-msgid "Unexpected run state\n"
-msgstr ""
+#, fuzzy
+#~ msgid "     Could not open directory \"%s\": ERR=%s\n"
+#~ msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
 
-#: src/dird/ua_update.c:97
-msgid "Update choice:\n"
-msgstr ""
+#, fuzzy
+#~ msgid "     Cannot open \"%s\": ERR=%s.\n"
+#~ msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
 
-#: src/dird/ua_update.c:98
-msgid "Volume parameters"
-msgstr ""
+#, fuzzy
+#~ msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
+#~ msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
 
-#: src/dird/ua_update.c:99
-msgid "Pool from resource"
-msgstr ""
+#, fuzzy
+#~ msgid "An error occurred while adding signer the stream.\n"
+#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/dird/ua_update.c:100
-msgid "Slots from autochanger"
-msgstr ""
+#, fuzzy
+#~ msgid "Too many errors. JobErrors=%d.\n"
+#~ msgstr "zu viele items in Job resource\n"
 
-#: src/dird/ua_update.c:101
-msgid "Long term statistics"
-msgstr ""
+#, fuzzy
+#~ msgid "Plugin save packet not found.\n"
+#~ msgstr "Path record: %s nicht gefunden.\n"
 
-#: src/dird/ua_update.c:102
-msgid "item"
-msgstr ""
+#, fuzzy
+#~ msgid "Plugin=%s not found.\n"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/ua_update.c:102
-msgid "Choose catalog item to update"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "%sVersion: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
+#~ "     -c <file>        use <file> as configuration file\n"
+#~ "     -d <n>[,<tags>]  set debug level to <nn>, debug tags to <tags>\n"
+#~ "     -dt              print a timestamp in debug output\n"
+#~ "     -f               run in foreground (for debugging)\n"
+#~ "     -g               groupid\n"
+#~ "     -k               keep readall capabilities\n"
+#~ "     -m               print kaboom output (for debugging)\n"
+#~ "     -s               no signals (for debugging)\n"
+#~ "     -t               test configuration file and exit\n"
+#~ "     -T               set trace on\n"
+#~ "     -u               userid\n"
+#~ "     -v               verbose user messages\n"
+#~ "     -?               print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bacula-fd [-f -s] [-c config_datei] [-d debug_level]\n"
+#~ "        -c <Datei>   benutze <Datei> als Konfigurationsdatei\n"
+#~ "        -dnn        setze debug level auf nn\n"
+#~ "        -f          starte in Vordergrund (f�r debugging)\n"
+#~ "        -g          groupid\n"
+#~ "        -s          no signals (f�r debugging)\n"
+#~ "        -t          Konfigurationsdatei testen und beenden\n"
+#~ "        -u          userid\n"
+#~ "        -v          Ausf�hrliche Benutzermeldungen\n"
+#~ "        -?          diese Meldung ausgeben.\n"
+#~ "\n"
 
-#: src/dird/ua_update.c:145
-#, c-format
-msgid "Invalid VolStatus specified: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Disable Command \"%s\" not found.\n"
+#~ msgstr "FileSet Eintrag \"%s\" nicht gefunden\n"
 
-#: src/dird/ua_update.c:154
-#, c-format
-msgid "New Volume status is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a Cipher Type keyword, got: %s"
+#~ msgstr "Job Type Schl�sselwort erwartet, erhalten: %s"
 
-#: src/dird/ua_update.c:164
-#, c-format
-msgid "Invalid retention period specified: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "SD connect failed: Bad Hello command\n"
+#~ msgstr "Job nicht gefunden: %s\n"
 
-#: src/dird/ua_update.c:172
-#, c-format
-msgid "New retention period is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "SD connect failed: Job name not found: %s\n"
+#~ msgstr "Job nicht gefunden: %s\n"
 
-#: src/dird/ua_update.c:183
-#, c-format
-msgid "Invalid use duration specified: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "2001 Job \"%s\" marked to be %s.\n"
+#~ msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
 
-#: src/dird/ua_update.c:191
-#, c-format
-msgid "New use duration is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "2991 Bad setbandwidth command: %s\n"
+#~ msgstr "Storage daemon hat \"Job command\": %s abgelehnt\n"
 
-#: src/dird/ua_update.c:205
-#, c-format
-msgid "New max jobs is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad RestoreObject command: %s\n"
+#~ msgstr "Storage daemon hat \"Job command\": %s abgelehnt\n"
 
-#: src/dird/ua_update.c:218
-#, c-format
-msgid "New max files is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed connect from Storage daemon. SD bsock=NULL.\n"
+#~ msgstr "Verbindung zu Storage daemon fehlgeschlagen.\n"
 
-#: src/dird/ua_update.c:229
-#, c-format
-msgid "Invalid max. bytes specification: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad status %d %c returned from Storage Daemon.\n"
+#~ msgstr "FD hat keinen Jobstatus zur�ckgegeben.\n"
 
-#: src/dird/ua_update.c:237
-#, c-format
-msgid "New Max bytes is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad response from SD to %s command. Wanted %s, got %s\n"
+#~ msgstr "Schlechte Antwort auf %s Kommando: erwartet %s, erhalten %s\n"
 
-#: src/dird/ua_update.c:248 src/dird/ua_update.c:268
-msgid "Invalid value. It must be yes or no.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not set Finder Info on %s\n"
+#~ msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/dird/ua_update.c:256
-#, c-format
-msgid "New Recycle flag is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "LZO init failed\n"
+#~ msgstr "TLS Aushandlung gescheitert.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Could not create digest.\n"
+#~ msgstr "Konnte Client Eintrag nicht anlegen. ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Signer not found. Decryption failed.\n"
+#~ msgstr "FileSet MD5 Pr�fsumme nicht gefunden.\n"
 
-#: src/dird/ua_update.c:276
-#, c-format
-msgid "New InChanger flag is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot open resource fork for %s.\n"
+#~ msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
 
-#: src/dird/ua_update.c:294
-#, c-format
-msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Signature validation failed for file %s: ERR=%s\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_update.c:304 src/dird/ua_update.c:728
-#, c-format
-msgid "Error updating media record Slot: ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "Digest one file failed for file: %s\n"
+#~ msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
-#: src/dird/ua_update.c:306
-#, c-format
-msgid "New Slot is: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "LZO uncompression error on file %s. ERR=%d\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/ua_update.c:331
-#, c-format
-msgid "New Pool is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "    %s%s %s Job started: %s\n"
+#~ msgstr "Clone JobId %d gestartet.\n"
 
-#: src/dird/ua_update.c:374
-#, c-format
-msgid "New RecyclePool is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s Errors=%d\n"
+#~ "    Bwlimit=%s\n"
+#~ msgstr "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 
-#: src/dird/ua_update.c:394
-#, c-format
-msgid "Error updating Volume record: ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "    Files: Examined=%s Backed up=%s\n"
+#~ msgstr "FileSet: name=%s\n"
 
-#: src/dird/ua_update.c:396
-#, c-format
-msgid "Volume defaults updated from \"%s\" Pool record.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "llistea error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/ua_update.c:419 src/dird/ua_update.c:451
-#, c-format
-msgid "Error updating Volume records: ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "lgetea error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "lsetea error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/ua_update.c:443
-#, c-format
-msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "attr_list error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/ua_update.c:469
-#, c-format
-msgid "Error updating media record Enabled: ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "Received illegal xattr named %s on file \"%s\"\n"
+#~ msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/dird/ua_update.c:472
-#, c-format
-msgid "New Enabled is: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "attr_set error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "llistxattr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/ua_update.c:490
-#, c-format
-msgid "New ActionOnPurge is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "lgetxattr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
-msgid "Parameters to modify:\n"
-msgstr ""
+#, fuzzy
+#~ msgid "lsetxattr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/ua_update.c:606
-msgid "Volume Status"
-msgstr ""
+#, fuzzy
+#~ msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/ua_update.c:607
-msgid "Volume Retention Period"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to convert %d into namespace on file \"%s\"\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_update.c:608
-msgid "Volume Use Duration"
-msgstr ""
+#, fuzzy
+#~ msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/ua_update.c:609
-msgid "Maximum Volume Jobs"
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:610
-msgid "Maximum Volume Files"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to convert %s into namespace on file \"%s\"\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_update.c:611
-msgid "Maximum Volume Bytes"
-msgstr ""
+#, fuzzy
+#~ msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/ua_update.c:612
-msgid "Recycle Flag"
-msgstr ""
+#, fuzzy
+#~ msgid "getproplist error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/ua_update.c:613
-msgid "Slot"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_update.c:614
-msgid "InChanger Flag"
-msgstr ""
+#, fuzzy
+#~ msgid "setproplist error on file \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/ua_update.c:615
-msgid "Volume Files"
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:617
-msgid "Volume from Pool"
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:618
-msgid "All Volumes from Pool"
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:619
-msgid "All Volumes from all Pools"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/dird/ua_update.c:620
-msgid "Enabled"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/dird/ua_update.c:621
-msgid "RecyclePool"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to read content of xattr %s on file \"%s\"\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_update.c:622
-msgid "Action On Purge"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to chdir to xattr space of file \"%s\": ERR=%s\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_update.c:623
-msgid "Done"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to open file \"%s\": ERR=%s\n"
+#~ msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/dird/ua_update.c:624 src/dird/ua_run.c:252 src/dird/ua_run.c:600
-msgid "Select parameter to modify"
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:632
-#, c-format
-msgid "Updating Volume \"%s\"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to chdir to xattr space on file \"%s\": ERR=%s\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_update.c:637
-#, c-format
-msgid "Current Volume status is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_update.c:638
-msgid "Possible Values are:\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to convert acl from text on file \"%s\"\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_update.c:649
-msgid "Choose new Volume Status"
-msgstr ""
-
-#: src/dird/ua_update.c:655
-#, c-format
-msgid "Current retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:657
-msgid "Enter Volume Retention period: "
-msgstr ""
-
-#: src/dird/ua_update.c:664
-#, c-format
-msgid "Current use duration is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:666
-msgid "Enter Volume Use Duration: "
-msgstr ""
-
-#: src/dird/ua_update.c:673
-#, c-format
-msgid "Current max jobs is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:674
-msgid "Enter new Maximum Jobs: "
-msgstr ""
-
-#: src/dird/ua_update.c:681
-#, c-format
-msgid "Current max files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:682
-msgid "Enter new Maximum Files: "
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:689
-#, c-format
-msgid "Current value is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
+#~ msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/dird/ua_update.c:690
-msgid "Enter new Maximum Bytes: "
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to open xattr %s on file \"%s\": ERR=%s\n"
+#~ msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/dird/ua_update.c:698
-#, c-format
-msgid "Current recycle flag is: %s\n"
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:700
-msgid "Enter new Recycle status: "
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
+#~ msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/dird/ua_update.c:707
-#, c-format
-msgid "Current Slot is: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
+#~ msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/dird/ua_update.c:708
-msgid "Enter new Slot: "
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/ua_update.c:715
-#, c-format
-msgid "Current InChanger flag is: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to link xattr %s to %s on file \"%s\": ERR=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/dird/ua_update.c:716
-#, c-format
-msgid "Set InChanger flag for Volume \"%s\": yes/no: "
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:730
-#, c-format
-msgid "New InChanger flag is: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to symlink xattr %s to %s on file \"%s\": ERR=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/dird/ua_update.c:737
-msgid ""
-"Warning changing Volume Files can result\n"
-"in loss of data on your Volume\n"
-"\n"
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:739
-#, c-format
-msgid "Current Volume Files is: %u\n"
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_update.c:740
-msgid "Enter new number of Files for Volume: "
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to restore extended attributes on file \"%s\"\n"
+#~ msgstr "<filed: Netzwerkfehler beim Holen der Attribute. ERR=%s\n"
 
-#: src/dird/ua_update.c:745
-msgid "Normally, you should only increase Volume Files by one!\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore Object"
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/dird/ua_update.c:746
-msgid "Increase Volume Files? (yes/no): "
-msgstr ""
+#, fuzzy
+#~ msgid "Plugin: \"%s\" not found.\n"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/ua_update.c:756
-#, c-format
-msgid "New Volume Files is: %u\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot stat file %s: ERR=%s\n"
+#~ msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
 
-#: src/dird/ua_update.c:768
-#, c-format
-msgid "Current Pool is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot resolve service(%s)"
+#~ msgstr "Kann Console resource %s nicht finden\n"
 
-#: src/dird/ua_update.c:769
-msgid "Enter new Pool name: "
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a block to begin with { but got: %s"
+#~ msgstr "wild-card Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/ua_update.c:790
-#, c-format
-msgid "Current Enabled is: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a string but got: %s"
+#~ msgstr "regul�ren Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/ua_update.c:791
-msgid "Enter new Enabled: "
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a string [ip|ipv4|ipv6] but got: %s"
+#~ msgstr "regul�ren Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/ua_update.c:810
-#, c-format
-msgid "Current RecyclePool is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a string [ip|ipv4] but got: %s"
+#~ msgstr "regul�ren Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/ua_update.c:812
-msgid "No current RecyclePool\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected an equal = but got: %s"
+#~ msgstr "Erwartete ein \"ist gleich\", erhalten: %s"
 
-#: src/dird/ua_update.c:822
-#, c-format
-msgid "Current ActionOnPurge is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected an identifier [addr|port] but got: %s"
+#~ msgstr "Dateiname erwartet, erhalten: %s"
 
-#: src/dird/ua_update.c:824
-msgid "Enter new ActionOnPurge (one of: Truncate, None): "
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a identifier [addr|port] but got: %s"
+#~ msgstr "Dateiname erwartet, erhalten: %s"
 
-#: src/dird/ua_update.c:832
-msgid "Selection terminated.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a number or a string but got: %s"
+#~ msgstr "regul�ren Ausdruck erwartet, erhalten: %s\n"
 
-#: src/dird/ua_update.c:852
-#, c-format
-msgid "Updating %i job(s).\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected an IP number or a hostname but got: %s"
+#~ msgstr "Dateiname erwartet, erhalten: %s"
 
-#: src/dird/ua_update.c:884
-#, c-format
-msgid "db_update_pool_record returned %d. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a end of block with } but got: %s"
+#~ msgstr "Erwartet: %s, erhalten: %s"
 
-#: src/dird/ua_update.c:891
-msgid "Pool DB record updated from resource.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected an end of block with } but got: %s"
+#~ msgstr "Erwartet: %s, erhalten: %s"
 
-#: src/dird/ua_update.c:918
 #, fuzzy
-msgid "Expect JobId keyword, not found.\n"
-msgstr "Job Type Schl�sselwort erwartet, erhalten: %s"
+#~ msgid "bget_msg: unknown signal %d\n"
+#~ msgstr "unbekannt"
 
-#: src/dird/ua_update.c:943
 #, fuzzy
-msgid "Neither Client nor StartTime specified.\n"
-msgstr "Kein storage angegeben.\n"
+#~ msgid "Attr spool write error. wrote=%d wanted=%d bytes. ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/migrate.c:149 src/dird/migrate.c:163
-#, fuzzy, c-format
-msgid "No previous Job found to %s.\n"
-msgstr "Keinen vorherigen Job zum migrieren gefunden.\n"
+#, fuzzy
+#~ msgid "No addr/port found to listen on.\n"
+#~ msgstr "Keine JobIds zum migrieren gefunden.\n"
 
-#: src/dird/migrate.c:155
 #, fuzzy
-msgid "Create bootstrap file failed.\n"
-msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
+#~ 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/dird/migrate.c:165
-#, fuzzy, c-format
-msgid "Previous Job has no data to %s.\n"
-msgstr "Vorheriger Job hat keine Daten zu migrieren.\n"
+#, fuzzy
+#~ msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/dird/migrate.c:182
-#, c-format
-msgid "Job resource not found for \"%s\".\n"
-msgstr "Job Ressource f�r \"%s\"nicht gefunden.\n"
+#, fuzzy
+#~ msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+#~ msgstr "Erzeugung des db Filename Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/dird/migrate.c:186
-#, c-format
-msgid "Previous Job resource not found for \"%s\".\n"
-msgstr "Vorherige Job Ressource f�r \"%s\"nicht gefunden.\n"
+#, fuzzy
+#~ msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/migrate.c:203
-msgid "setup job failed.\n"
-msgstr "Job Einrichtung Fehlgeschlagen.\n"
+#, fuzzy
+#~ msgid "Source address bind error. proto=%d. ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/migrate.c:258
-#, c-format
-msgid "Pool for JobId %s not in database. ERR=%s\n"
-msgstr "Pool f�r JobId %s ist nicht in der Datenbank. ERR=%s\n"
+#, fuzzy
+#~ msgid "Could not init bsock mutex. ERR=%s\n"
+#~ msgstr "Konnte job queue nicht initialiseren: ERR=%s\n"
 
-#: src/dird/migrate.c:266
-#, c-format
-msgid "Pool resource \"%s\" not found.\n"
-msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
+#, fuzzy
+#~ 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/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"
+#, fuzzy
+#~ msgid "Read error from %s:%s:%d: ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/dird/migrate.c:327
-#, c-format
-msgid "JobId %s already %s probably by another Job. %s stopped.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "fread attr spool error. Wanted=%d got=%d bytes. ERR=%s\n"
+#~ msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/dird/migrate.c:337
-#, fuzzy, c-format
-msgid "Start %s JobId %s, Job=%s\n"
-msgstr "Start Sicherung JobId %s, Job=%s\n"
+#, fuzzy
+#~ msgid "fread attr spool I/O error.\n"
+#~ msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/dird/migrate.c:712
-#, fuzzy, c-format
-msgid "No %s SQL selection pattern specified.\n"
-msgstr "Kein \"Migration SQL selection pattern\" spezifiziert.\n"
+#, fuzzy
+#~ msgid "fcntl F_GETFL error. ERR=%s\n"
+#~ msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "fcntl F_SETFL error. ERR=%s\n"
+#~ msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+#~ msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "No signers found for crypto verify.\n"
+#~ msgstr "Keine %ss zum Migrieren gefunden.\n"
 
-#: src/dird/migrate.c:837
-#, fuzzy, c-format
-msgid "Unknown %s Selection Type.\n"
-msgstr "Unbekannter \"Migration Selection Type\".\n"
+#, fuzzy
+#~ msgid "No error"
+#~ msgstr "unbekannt"
 
-#: 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"
+#, fuzzy
+#~ msgid "Signer not found"
+#~ msgstr "FileSet MD5 Pr�fsumme nicht gefunden.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unknown error"
+#~ msgstr "unbekannt"
 
-#: src/dird/migrate.c:853
-msgid " was"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot fork to become daemon: ERR=%s\n"
+#~ msgstr "Kann var context nicht erzeugen: ERR=%s\n"
 
-#: src/dird/migrate.c:853
-msgid "s were"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot open config file %s: %s\n"
+#~ msgstr "Kann inkludierte Datei nicht �ffnen: %s. ERR=%s\n"
 
-#: src/dird/migrate.c:905
-#, fuzzy, c-format
-msgid "%s using JobId=%s Job=%s\n"
-msgstr "Migration benutzt JobId=%s Job=%s\n"
+#, fuzzy
+#~ msgid "Restoring"
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/dird/migrate.c:939
-msgid "Could not start migration job.\n"
-msgstr "Konnte Migrationsjob nicht starten.\n"
+#, fuzzy
+#~ msgid "Unknown operation"
+#~ msgstr "unbekannt"
 
-#: src/dird/migrate.c:941
-#, fuzzy, c-format
-msgid "%s JobId %d started.\n"
-msgstr "Clone JobId %d gestartet.\n"
+#, fuzzy
+#~ msgid "backup"
+#~ msgstr "Sicherung OK"
 
-#: src/dird/migrate.c:960
-#, fuzzy, c-format
-msgid "No %s found to %s.\n"
-msgstr "Keine %ss zum Migrieren gefunden.\n"
+#, fuzzy
+#~ msgid "restored"
+#~ msgstr "Job Ressource"
 
-#: 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"
+#, fuzzy
+#~ msgid "restore"
+#~ msgstr "Job Ressource"
 
-#: 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"
+#, fuzzy
+#~ msgid "unknown action"
+#~ msgstr "unbekannt"
 
-#: src/dird/migrate.c:1015
-msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
-msgstr ""
+#, fuzzy
+#~ msgid "pthread key create failed: ERR=%s\n"
+#~ msgstr "pthread_create: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "pthread_once failed. ERR=%s\n"
+#~ msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: src/dird/migrate.c:1047
-#, fuzzy, c-format
-msgid "No %s %s selection pattern specified.\n"
-msgstr "Kein Migration %s selection pattern spezifiziert.\n"
+#, fuzzy
+#~ msgid "Could not init msg_queue mutex. ERR=%s\n"
+#~ msgstr "Konnte job queue nicht initialiseren: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "pthread_setspecific failed: ERR=%s\n"
+#~ msgstr "Media id select fehlgeschlagen: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Mutex lock failure. ERR=%s\n"
+#~ msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Mutex unlock failure. ERR=%s\n"
+#~ msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: src/dird/migrate.c:1265
-#, c-format
-msgid "%s OK -- with warnings"
-msgstr "%s OK -- mit Warnungen"
+#, fuzzy
+#~ msgid "pthread_create failed: ERR=%s\n"
+#~ msgstr "pthread_create: ERR=%s\n"
 
-#: src/dird/migrate.c:1267
-#, c-format
-msgid "%s OK"
-msgstr "%s OK"
+#, fuzzy
+#~ msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/migrate.c:1272
-#, c-format
-msgid "*** %s Error ***"
-msgstr "*** %s Fehler ***"
+#, fuzzy
+#~ msgid "expected a speed number, got: %s"
+#~ msgstr "Dateiname erwartet, erhalten: %s"
 
-#: src/dird/migrate.c:1282
-#, c-format
-msgid "%s Canceled"
-msgstr "%s Abgebrochen"
+#, fuzzy
+#~ msgid "expected a %s, got: %s"
+#~ msgstr "Erwartete ein \"ist gleich\", erhalten: %s"
 
-#: src/dird/migrate.c:1291
-#, c-format
-msgid "Inappropriate %s term code"
-msgstr "Unzutreffender %s Beendigungskode"
+#, fuzzy
+#~ msgid "Failed to open Plugin directory %s: ERR=%s\n"
+#~ msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/dird/migrate.c:1301
-#, fuzzy, c-format
-msgid "%s -- no files to %s"
-msgstr "%s -- keine Dateien zur Migration."
+#, fuzzy
+#~ msgid "dlopen plugin %s failed: ERR=%s\n"
+#~ msgstr "Client id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/migrate.c:1316
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  Prev Backup JobId:      %s\n"
-"  Prev Backup Job:        %s\n"
-"  New Backup JobId:       %s\n"
-"  Current JobId:          %s\n"
-"  Current Job:            %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Read Pool:              \"%s\" (From %s)\n"
-"  Read Storage:           \"%s\" (From %s)\n"
-"  Write Pool:             \"%s\" (From %s)\n"
-"  Write Storage:          \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s (%s): %s\n"
-"  vorheriges Backup JobId:%s\n"
-"  neues Backup JobId:     %s\n"
-"  Migration JobId:        %s\n"
-"  Migration Job:          %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Lese Pool:              \"%s\" (Von %s)\n"
-"  Lese Storage:           \"%s\" (Von %s)\n"
-"  Schreib Pool:           \"%s\" (Von %s)\n"
-"  Schreib Storage:        \"%s\" (Von %s)\n"
-"  Start Zeit:             %s\n"
-"  End Zeit:               %s\n"
-"  Verstichene Zeit:       %s\n"
-"  Priorit�t:              %d\n"
-"  SD Dateien geschrieben: %s\n"
-"  SD Bytes geschrieben:   %s (%sB)\n"
-"  Geschwindigkeit:        %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Fehler:              %d\n"
-"  SD Beendigungsstatus :  %s\n"
-"  Beendigungsstatus:      %s\n"
-"\n"
+#, fuzzy
+#~ msgid "prctl failed: ERR=%s\n"
+#~ msgstr "pthread_create: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "setreuid failed: ERR=%s\n"
+#~ msgstr "Abfrage gescheitert: %s: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "cap_from_text failed: ERR=%s\n"
+#~ msgstr "pthread_create: ERR=%s\n"
 
-#: src/dird/migrate.c:1439
-msgid "Storage from Pool's NextPool resource"
-msgstr "Storage aus der \"NextPool\" Ressource des Pools."
+#, fuzzy
+#~ msgid "cap_set_proc failed: ERR=%s\n"
+#~ msgstr "Media id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/ua_prune.c:127
-msgid "Choose item to prune"
-msgstr ""
+#, fuzzy
+#~ msgid "User cancel requested.\n"
+#~ msgstr "%s Abgebrochen"
 
-#: src/dird/ua_prune.c:175
-#, c-format
-msgid "Cannot prune Volume \"%s\" because it is archived.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Completed with warnings"
+#~ msgstr "%s OK -- mit Warnungen"
 
-#: src/dird/ua_prune.c:217
-msgid "Pruned Jobs from JobHisto catalog.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Fatal error"
+#~ msgstr "unbekannt"
 
-#: src/dird/ua_prune.c:305
 #, fuzzy
-msgid "Begin pruning Files.\n"
-msgstr "Beginn automatische S�uberung von Dateien.\n"
+#~ msgid "Waiting for File daemon"
+#~ msgstr "File daemon"
 
-#: src/dird/ua_prune.c:320
-msgid "No Files found to prune.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Waiting for Storage daemon"
+#~ msgstr "Storage daemon"
 
-#: src/dird/ua_prune.c:343
-#, c-format
-msgid "Pruned Files from %s Jobs for client %s from catalog.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Migrated Job"
+#~ msgstr "Konnte Migrationsjob nicht starten.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Disabled"
+#~ msgstr "ist nicht aktiviert"
 
-#: src/dird/ua_prune.c:600
-#, c-format
-msgid "Pruned %d %s for client %s from catalog.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "unknown command character in variable"
+#~ msgstr "unbekannt"
 
-#: src/dird/ua_prune.c:601
-msgid "Jobs"
-msgstr ""
+#, fuzzy
+#~ msgid "unknown flag in search and replace operation"
+#~ msgstr "unbekannt"
 
-#: src/dird/ua_prune.c:603
-msgid "No Jobs found to prune.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "offsets in cut operation delimited by unknown character"
+#~ msgstr "unbekannt"
 
-#: src/dird/autoprune.c:75
-msgid ""
-"End auto prune.\n"
-"\n"
-msgstr ""
-"Ende automatische S�uberung.\n"
-"\n"
+#, fuzzy
+#~ msgid "unknown quoted pair in search and replace operation"
+#~ msgstr "unbekannt"
 
-#: src/dird/ua_run.c:154
-msgid "OK to run? (yes/mod/no): "
-msgstr ""
+#, fuzzy
+#~ msgid "unknown error"
+#~ msgstr "unbekannt"
 
-#: src/dird/ua_run.c:193
-msgid "Job failed.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No volumes specified for reading. Job %s canceled.\n"
+#~ msgstr "Weder storage noch Pool in Job \"%s\" definiert.\n"
 
-#: src/dird/ua_run.c:196
-#, c-format
-msgid "Job queued. JobId=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Read open %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Erzeugung von db Device Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/ua_run.c:203
-#, c-format
-msgid ""
-"\n"
-"Bad response: %s. You must answer yes, mod, or no.\n"
-"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not ready %s device %s for append.\n"
+#~ msgstr "Konnte FileSet \"%s\" Eintrag nicht erzeugen. ERR=%s\n"
 
-#: src/dird/ua_run.c:207
-msgid "Job not run.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error reading data header from FD. n=%d msglen=%d ERR=%s\n"
+#~ msgstr "Fehler beim Lesen der catalog DB Steuerdatei. ERR=%s\n"
 
-#: src/dird/ua_run.c:223
-msgid "Level"
-msgstr ""
+#, fuzzy
+#~ msgid "Network error reading from FD. ERR=%s\n"
+#~ msgstr "Netzwerkfehler mit FD bei %s: ERR=%s\n"
 
-#: src/dird/ua_run.c:228
 #, fuzzy
-msgid "Restore Client"
-msgstr "Wiederherstellung l�uft..."
+#~ msgid "Error writing end session label. ERR=%s\n"
+#~ msgstr "Fehler beim Aktualisieren der DB Media Datei. ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid ""
+#~ "Connection from unknown Director %s at %s rejected.\n"
+#~ "Please see "
+#~ msgstr "unbekannt"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
+#~ msgstr "TLS Aushandlung fehlgeschlagen mit SD an \"%s:%d\"\n"
 
-#: src/dird/ua_run.c:240
-msgid "Verify Job"
-msgstr ""
+#, fuzzy
+#~ msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
+#~ msgstr "TLS Aushandlung fehlgeschlagen mit FD an \"%s:%d\".\n"
 
-#: src/dird/ua_run.c:243 src/wx-console/wxbrestorepanel.cpp:349
-#: src/wx-console/wxbrestorepanel.cpp:1899
-msgid "Bootstrap"
-msgstr ""
+#, fuzzy
+#~ msgid "Lock failure on autochanger. ERR=%s\n"
+#~ msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Unlock failure on autochanger. ERR=%s\n"
+#~ msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: src/dird/ua_run.c:245
 #, fuzzy
-msgid "File Relocation"
-msgstr "File daemon"
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:1907
-#: src/wx-console/wxbrestorepanel.cpp:1908
-#: src/wx-console/wxbrestorepanel.cpp:1909
-msgid "Replace"
-msgstr ""
-
-#: src/dird/ua_run.c:247
-msgid "JobId"
-msgstr ""
-
-#: src/dird/ua_run.c:250
-msgid "Plugin Options"
-msgstr ""
-
-#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
-msgid "user selection"
-msgstr ""
-
-#: 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:301 src/dird/ua_run.c:477
-msgid "Invalid time, using current time.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:308
-msgid "Enter new Priority: "
-msgstr ""
-
-#: src/dird/ua_run.c:312
-msgid "Priority must be a positive integer.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:333
-msgid "Please enter the Bootstrap file name: "
-msgstr ""
-
-#: src/dird/ua_run.c:345
-#, c-format
-msgid "Warning cannot open %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:364
-msgid "Please enter the full path prefix for restore (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:386
-msgid "Replace:\n"
-msgstr ""
-
-#: src/dird/ua_run.c:390
-msgid "Select replace option"
-msgstr ""
-
-#: 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:406
-msgid "Please Plugin Options string: "
-msgstr ""
-
-#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
-msgid "User input"
-msgstr ""
-
-#: src/dird/ua_run.c:507
-#, c-format
-msgid "Invalid replace option: %s\n"
-msgstr ""
-
-#: 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:592
-msgid "This will replace your current Where value\n"
-msgstr ""
-
-#: src/dird/ua_run.c:593
-msgid "Strip prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:594
-msgid "Add prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:595
-msgid "Add file suffix"
-msgstr ""
-
-#: src/dird/ua_run.c:596
-msgid "Enter a regexp"
-msgstr ""
-
-#: src/dird/ua_run.c:597
-msgid "Test filename manipulation"
-msgstr ""
-
-#: src/dird/ua_run.c:598
-msgid "Use this ?"
-msgstr ""
-
-#: src/dird/ua_run.c:603
-msgid "Please enter the path prefix to strip: "
-msgstr ""
-
-#: src/dird/ua_run.c:611
-msgid "Please enter the path prefix to add (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:622
-msgid "Please enter the file suffix to add: "
-msgstr ""
-
-#: src/dird/ua_run.c:629
-msgid "Please enter a valid regexp (!from!to!): "
-msgstr ""
-
-#: src/dird/ua_run.c:642
-#, c-format
-msgid "regexwhere=%s\n"
-msgstr ""
-
-#: 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:655
-msgid "Cannot use your regexp\n"
-msgstr ""
-
-#: src/dird/ua_run.c:658
-msgid "Enter a period (.) to stop this test\n"
-msgstr ""
-
-#: src/dird/ua_run.c:659
-msgid "Please enter filename to test: "
-msgstr ""
-
-#: src/dird/ua_run.c:661
-#, fuzzy, c-format
-msgid "%s -> %s\n"
-msgstr "  --> Run=%s\n"
-
-#: src/dird/ua_run.c:705
-msgid "Cannot use your regexp.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
-msgid "Levels:\n"
-msgstr ""
-
-#: 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:721 src/stored/status.c:668 src/lib/util.c:429
-#: src/filed/status.c:522
-msgid "Incremental"
-msgstr ""
-
-#: 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:723 src/stored/status.c:674 src/lib/util.c:435
-#: src/filed/status.c:528
-msgid "Since"
-msgstr ""
-
-#: src/dird/ua_run.c:724
-msgid "VirtualFull"
-msgstr ""
-
-#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
-msgid "Select level"
-msgstr ""
-
-#: src/dird/ua_run.c:749
-msgid "Initialize Catalog"
-msgstr ""
-
-#: 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:751 src/lib/util.c:444
-msgid "Verify Volume to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:752 src/lib/util.c:447
-msgid "Verify Disk to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:753
-msgid "Verify Volume Data (not yet implemented)"
-msgstr ""
-
-#: src/dird/ua_run.c:774
-msgid "Level not appropriate for this Job. Cannot be changed.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:805
-#, c-format
-msgid ""
-"Run Admin Job\n"
-"JobName:  %s\n"
-"FileSet:  %s\n"
-"Client:   %s\n"
-"Storage:  %s\n"
-"When:     %s\n"
-"Priority: %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:849
-#, c-format
-msgid ""
-"Run Backup job\n"
-"JobName:  %s\n"
-"Level:    %s\n"
-"Client:   %s\n"
-"FileSet:  %s\n"
-"Pool:     %s (From %s)\n"
-"Storage:  %s (From %s)\n"
-"When:     %s\n"
-"Priority: %d\n"
-"%s%s%s"
-msgstr ""
-
-#: 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:919
-#, c-format
-msgid ""
-"Run Verify Job\n"
-"JobName:     %s\n"
-"Level:       %s\n"
-"Client:      %s\n"
-"FileSet:     %s\n"
-"Pool:        %s (From %s)\n"
-"Storage:     %s (From %s)\n"
-"Verify Job:  %s\n"
-"Verify List: %s\n"
-"When:        %s\n"
-"Priority:    %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:948
-msgid "Please enter a JobId for restore: "
-msgstr ""
-
-#: src/dird/ua_run.c:988
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"RegexWhere:      %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1044
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"Where:           %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1075
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:    %s\n"
-"Bootstrap:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1083
-#, c-format
-msgid "RegexWhere: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1086
-#, fuzzy, c-format
-msgid "Where:      %s\n"
-msgstr "      opcmd=%s\n"
-
-#: src/dird/ua_run.c:1090
-#, c-format
-msgid ""
-"Replace:         %s\n"
-"Client:          %s\n"
-"Storage:         %s\n"
-"JobId:           %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1145
-msgid "Run Copy job\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1147
-#, fuzzy
-msgid "Run Migration job\n"
-msgstr "Konnte Migrationsjob nicht starten.\n"
-
-#: src/dird/ua_run.c:1176
-#, c-format
-msgid "Unknown Job Type=%d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1245
-#, c-format
-msgid "Value missing for keyword %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1252
-msgid "Job name specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1260
-msgid "JobId specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
-msgid "Client specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1277
-msgid "FileSet specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1285
-msgid "Level specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1294
-msgid "Storage specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1302
-msgid "RegexWhere or Where specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1307
-msgid "No authorization for \"regexwhere\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1314
-msgid "Where or RegexWhere specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1319
-msgid "No authoriztion for \"where\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1326
-msgid "Bootstrap specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1334
-msgid "Replace specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1342
-msgid "When specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1350
-msgid "Priority specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1355
-msgid "Priority must be positive nonzero setting it to 10.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1365
-msgid "Verify Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1393
-msgid "Migration Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1401
-msgid "Pool specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1417
-#, fuzzy
-msgid "Restore Client specified twice.\n"
-msgstr "Kein storage angegeben.\n"
-
-#: src/dird/ua_run.c:1424
-#, fuzzy
-msgid "Plugin Options not yet implemented.\n"
-msgstr "Kein storage angegeben.\n"
-
-#: src/dird/ua_run.c:1427
-#, fuzzy
-msgid "Plugin Options specified twice.\n"
-msgstr "Kein storage angegeben.\n"
-
-#: src/dird/ua_run.c:1432
-msgid "No authoriztion for \"PluginOptions\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1439
-#, fuzzy
-msgid "Spool flag specified twice.\n"
-msgstr "Kein storage angegeben.\n"
-
-#: src/dird/ua_run.c:1446
-#, fuzzy
-msgid "Invalid spooldata flag.\n"
-msgstr "Ung�ltige JobId gefunden.\n"
-
-#: src/dird/ua_run.c:1455
-#, fuzzy
-msgid "IgnoreDuplicateCheck flag specified twice.\n"
-msgstr "Kein storage angegeben.\n"
-
-#: src/dird/ua_run.c:1462
-#, fuzzy
-msgid "Invalid ignoreduplicatecheck flag.\n"
-msgstr "Ung�ltige JobId gefunden.\n"
-
-#: src/dird/ua_run.c:1467
-#, fuzzy
-msgid "Accurate flag specified twice.\n"
-msgstr "Kein storage angegeben.\n"
-
-#: src/dird/ua_run.c:1474
-#, fuzzy
-msgid "Invalid accurate flag.\n"
-msgstr "Ung�ltige JobId gefunden.\n"
-
-#: src/dird/ua_run.c:1495
-#, c-format
-msgid "Invalid keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1510
-#, c-format
-msgid "Catalog \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1514
-#, c-format
-msgid "No authorization. Catalog \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1525
-#, c-format
-msgid "Job \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1532
-msgid "A job name must be specified.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1538
-#, c-format
-msgid "No authorization. Job \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1546
-#, c-format
-msgid "Pool \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1556
-#, c-format
-msgid "No authorization. Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1566
-#, c-format
-msgid "Storage \"%s\" not found.\n"
-msgstr ""
-
-#: 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:1578
-#, c-format
-msgid "No authorization. Storage \"%s\".\n"
-msgstr ""
-
-#: 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:1608
-#, fuzzy, c-format
-msgid "Restore Client \"%s\" not found.\n"
-msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
-
-#: src/dird/ua_run.c:1627
-#, c-format
-msgid "FileSet \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1636
-#, c-format
-msgid "No authorization. FileSet \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1644
-#, c-format
-msgid "Verify Job \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1654
-#, c-format
-msgid "Migration Job \"%s\" not found.\n"
-msgstr ""
-
-#: 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: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: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: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: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 ""
-
-#: src/dird/backup.c:96
-msgid "No Storage specification found in Job or Pool.\n"
-msgstr "Keine Storage Spezifikation in Job oder Pool gefunden.\n"
-
-#: src/dird/backup.c:256
-#, fuzzy, c-format
-msgid "Using BaseJobId(s): %s\n"
-msgstr "Migration benutzt JobId=%s Job=%s\n"
-
-#: src/dird/backup.c:266
-#, fuzzy
-msgid "Cannot find previous jobids.\n"
-msgstr "Kann Job resource %s nicht finden\n"
-
-#: src/dird/backup.c:275
-msgid "Sending Accurate information.\n"
-msgstr ""
-
-#: src/dird/backup.c:328
-#, c-format
-msgid "Start Backup JobId %s, Job=%s\n"
-msgstr "Start Sicherung JobId %s, Job=%s\n"
-
-#: 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: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:569
-msgid "No Job status returned from FD.\n"
-msgstr "FD hat keinen Jobstatus zur�ckgegeben.\n"
-
-#: src/dird/backup.c:657
-msgid "Backup failed -- incomplete"
-msgstr ""
-
-#: src/dird/backup.c:730
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  FD Files Written:       %s\n"
-"  SD Files Written:       %s\n"
-"  FD Bytes Written:       %s (%sB)\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Software Compression:   %s\n"
-"%s  VSS:                    %s\n"
-"  Encryption:             %s\n"
-"  Accurate:               %s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  Non-fatal FD errors:    %d\n"
-"  SD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s (%s): %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Geplante Zeit:          %s\n"
-"  Startzeit:              %s\n"
-"  Endzeit:                %s\n"
-"  Verstrichene Zeit:      %s\n"
-"  Priorit�t:              %d\n"
-"  FD Dateien geschrieben: %s\n"
-"  SD Dateien geschrieben: %s\n"
-"  FD Bytes geschrieben:   %s (%sB)\n"
-"  SD Bytes geschrieben:   %s (%sB)\n"
-"  Geschwindigkeit:        %.1f KB/s\n"
-"  Software Kompression:   %s\n"
-"  VSS:                    %s\n"
-"  Verschl�sselung:        %s\n"
-"  Volume Name(n):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Zeit:    %d\n"
-"  Letztes Volumen Bytes:  %s (%sB)\n"
-"  Nicht-fatale FD Fehler  %d\n"
-"  SD Fehler:              %d\n"
-"  FD Beendigungsstatus:   %s\n"
-"  SD Beendigungsstatus:   %s\n"
-"  Beendigungsstatus:      %s\n"
-"\n"
-
-#: 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:868
-#, c-format
-msgid ""
-"Could not open WriteBootstrap file:\n"
-"%s: ERR=%s\n"
-msgstr ""
-"Konnte  WriteBootstrap nicht �ffnen. Datei:\n"
-"%s: ERR=%s\n"
-
-#: 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"
-
-#: src/dird/restore.c:185 src/dird/restore.c:276
-#, fuzzy, c-format
-msgid "Could not get storage resource '%s'.\n"
-msgstr "Kann Storage resource %s nicht finden\n"
-
-#: src/dird/restore.c:314
-#, fuzzy, c-format
-msgid "Could not acquire read storage lock for \"%s\""
-msgstr "Kann Storage resource %s nicht finden\n"
-
-#: 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:513
-#, c-format
-msgid "Start Restore Job %s\n"
-msgstr ""
-
-#: src/dird/restore.c:564
-msgid "Restore OK -- warning file count mismatch"
-msgstr ""
-
-#: src/dird/restore.c:566
-msgid "Restore OK"
-msgstr ""
-
-#: src/dird/restore.c:570
-#, fuzzy
-msgid "Restore OK -- with warnings"
-msgstr "%s OK -- mit Warnungen"
-
-#: src/dird/restore.c:574
-msgid "*** Restore Error ***"
-msgstr ""
-
-#: src/dird/restore.c:584
-msgid "Restore Canceled"
-msgstr ""
-
-#: src/dird/restore.c:611
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Restore Client:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Restored:         %s\n"
-"  Bytes Restored:         %s\n"
-"  Rate:                   %.1f KB/s\n"
-"  FD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s (%s): %s\n"
-"  Build OS:                   %s %s %s\n"
-"  JobId:                      %d\n"
-"  Job:                        %s\n"
-"  Client:                     %s\n"
-"  Start time:                 %s\n"
-"  End time:                   %s\n"
-"  Dateien erwartet:           %s\n"
-"  Dateien. wiederhergestellt: %s\n"
-"  Bytes wiederhergestellt:    %s\n"
-"  Geschwindigkeit:            %.1f KB/s\n"
-"  FD Fehler:                  %d\n"
-"  FD Beendigungsstatus:       %s\n"
-"  SD Beendigungsstatus:       %s\n"
-"  Beendigungsstatus:          %s\n"
-"\n"
-
-#: src/dird/ua_status.c:174
-msgid "Status available for:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:180
-msgid "Select daemon type for status"
-msgstr ""
-
-#: src/dird/ua_status.c:294 src/stored/status.c:248
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:297
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_status.c:358
-#, c-format
-msgid ""
-"\n"
-"Failed to connect to Storage daemon %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:400
-#, c-format
-msgid ""
-"Failed to connect to Client %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:408
-msgid "Connected to file daemon\n"
-msgstr ""
-
-#: src/dird/ua_status.c:428
-msgid ""
-"\n"
-"Scheduled Jobs:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:429
-msgid ""
-"Level          Type     Pri  Scheduled          Name               Volume\n"
-msgstr ""
-
-#: src/dird/ua_status.c:430
-msgid "===================================================================================\n"
-msgstr ""
-
-#: 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:490
-#, c-format
-msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:544
-msgid "Ignoring invalid value for days. Max is 500.\n"
-msgstr ""
-
-#: src/dird/ua_status.c:587
-msgid "No Scheduled Jobs.\n"
-msgstr ""
-
-#: 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:612
-#, c-format
-msgid "Console connected at %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:622
-msgid ""
-"No Jobs running.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:628
-msgid " JobId Level   Name                       Status\n"
-msgstr ""
-
-#: src/dird/ua_status.c:629 src/filed/status.c:342
-msgid "======================================================================\n"
-msgstr ""
-
-#: src/dird/ua_status.c:638
-msgid "is waiting execution"
-msgstr ""
-
-#: src/dird/ua_status.c:641
-msgid "is running"
-msgstr ""
-
-#: src/dird/ua_status.c:644
-msgid "is blocked"
-msgstr ""
-
-#: src/dird/ua_status.c:647
-msgid "has terminated"
-msgstr ""
-
-#: src/dird/ua_status.c:650
-#, fuzzy
-msgid "has terminated with warnings"
-msgstr "%s OK -- mit Warnungen"
-
-#: src/dird/ua_status.c:653
-msgid "has erred"
-msgstr ""
-
-#: src/dird/ua_status.c:656
-msgid "has errors"
-msgstr ""
-
-#: src/dird/ua_status.c:659
-msgid "has a fatal error"
-msgstr ""
-
-#: src/dird/ua_status.c:662
-msgid "has verify differences"
-msgstr ""
-
-#: src/dird/ua_status.c:665
-msgid "has been canceled"
-msgstr ""
-
-#: src/dird/ua_status.c:670
-msgid "is waiting on Client"
-msgstr ""
-
-#: src/dird/ua_status.c:672
-#, c-format
-msgid "is waiting on Client %s"
-msgstr ""
-
-#: 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:684
-msgid "is waiting on Storage"
-msgstr ""
-
-#: src/dird/ua_status.c:690
-msgid "is waiting on max Storage jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:693
-msgid "is waiting on max Client jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:696
-msgid "is waiting on max Job jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:699
-msgid "is waiting on max total jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:702
-msgid "is waiting for its start time"
-msgstr ""
-
-#: src/dird/ua_status.c:705
-msgid "is waiting for higher priority jobs to finish"
-msgstr ""
-
-#: 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:711 src/dird/ua_status.c:762 src/lib/util.c:244
-msgid "SD despooling Data"
-msgstr ""
-
-#: 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:717 src/dird/ua_status.c:768 src/lib/util.c:250
-msgid "Dir inserting Attributes"
-msgstr ""
-
-#: src/dird/ua_status.c:722
-#, fuzzy, c-format
-msgid "is in unknown state %c"
-msgstr "unbekannt"
-
-#: src/dird/ua_status.c:736
-msgid "is waiting for a mount request"
-msgstr ""
-
-#: src/dird/ua_status.c:743
-msgid "is waiting for an appendable Volume"
-msgstr ""
-
-#: 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:753
-#, c-format
-msgid "is waiting for Client %s to connect to Storage %s"
-msgstr ""
-
-#: 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:788
-#, c-format
-msgid "%6d %-6s  %-20s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:792
-#, c-format
-msgid "               %-30s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:812
-msgid "No Terminated Jobs.\n"
-msgstr ""
-
-#: 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: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:820
-msgid "====================================================================\n"
-msgstr ""
-
-#: 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: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:859 src/stored/status.c:608 src/filed/status.c:370
-msgid "Diffs"
-msgstr ""
-
-#: 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: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:871 src/stored/status.c:620 src/filed/status.c:379
-msgid "Other"
-msgstr ""
-
-#: 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: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:892
-msgid "\n"
-msgstr ""
-
-#: src/dird/ua_input.c:103
-msgid "Enter slot"
-msgstr ""
-
-#: src/dird/ua_input.c:107 src/dird/ua_input.c:113
-#, c-format
-msgid "Expected a positive integer, got: %s\n"
-msgstr ""
-
-#: src/dird/ua_input.c:170
-msgid "Invalid response. You must answer yes or no.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:193
-msgid "Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"
-msgstr ""
-
-#: src/dird/ua_input.c:220
-#, fuzzy, c-format
-msgid "Illegal character \"%c\" in a comment.\n"
-msgstr "Illegales Zeichen in \"Volume name\" \"%s\"\n"
-
-#: src/dird/ua_input.c:227
-#, fuzzy
-msgid "Comment too long.\n"
-msgstr "Job nicht gefunden: %s\n"
-
-#: src/dird/ua_input.c:233
-msgid "Comment must be at least one character long.\n"
-msgstr ""
-
-#: src/dird/pythondir.c:121 src/stored/pythonsd.c:101
-#: src/stored/pythonsd.c:166 src/filed/pythonfd.c:94 src/filed/pythonfd.c:148
-#: src/filed/pythonfd.c:212
-msgid "Job pointer not found."
-msgstr ""
-
-#: src/dird/pythondir.c:153
-msgid "Pool record not found."
-msgstr ""
-
-#: src/dird/pythondir.c:209 src/stored/pythonsd.c:143 src/filed/pythonfd.c:125
-#, c-format
-msgid "Attribute %s not found."
-msgstr ""
-
-#: src/dird/pythondir.c:252 src/dird/pythondir.c:258 src/stored/pythonsd.c:183
-#: src/filed/pythonfd.c:167
-msgid "Read-only attribute"
-msgstr ""
-
-#: src/dird/pythondir.c:284
-msgid "Priority must be 1-100"
-msgstr ""
-
-#: src/dird/pythondir.c:289
-msgid "Job Level can be set only during JobInit"
-msgstr ""
-
-#: src/dird/pythondir.c:303
-msgid "Bad JobLevel string"
-msgstr ""
-
-#: src/dird/job.c:62
-#, c-format
-msgid "Could not init job queue: ERR=%s\n"
-msgstr "Konnte job queue nicht initialiseren: ERR=%s\n"
-
-#: src/dird/job.c:94
-#, c-format
-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:1129 src/dird/job.c:1170
-#: src/dird/job.c:1179
-msgid "Job resource"
-msgstr "Job Ressource"
-
-#: src/dird/job.c:230 src/dird/job.c:349
-#, c-format
-msgid "Unimplemented job type: %d\n"
-msgstr "nicht implementierter job Typ: %d\n"
-
-#: src/dird/job.c:272
-msgid "Job canceled because max start delay time exceeded.\n"
-msgstr "Job abgebrochen, da \"max start delay time\" �berschritten wurde.\n"
-
-#: src/dird/job.c:277
-#, fuzzy
-msgid "Job canceled because max run sched time exceeded.\n"
-msgstr "Job abgebrochen, da \"max start delay time\" �berschritten wurde.\n"
-
-#: src/dird/job.c:403
-#, c-format
-msgid "JobId %s, Job %s marked to be canceled.\n"
-msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
-
-#: src/dird/job.c:413
-msgid "Failed to connect to File daemon.\n"
-msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
-
-#: src/dird/job.c:548
-msgid "Max wait time exceeded. Job canceled.\n"
-msgstr "\"Max wait time\" �berschritten. Job abgebrochen.\n"
-
-#: src/dird/job.c:553
-msgid "Max run time exceeded. Job canceled.\n"
-msgstr "\"Max run time\" �berschritten, Job abgebrochen.\n"
-
-#: src/dird/job.c:558
-#, fuzzy
-msgid "Max run sched time exceeded. Job canceled.\n"
-msgstr "\"Max run time\" �berschritten, Job abgebrochen.\n"
-
-#: src/dird/job.c:680
-#, fuzzy, c-format
-msgid "Pool \"%s\" not in database. ERR=%s"
-msgstr "Pool %s nicht in der Datenbank. %s"
-
-#: src/dird/job.c:684
-#, fuzzy, c-format
-msgid "Created database record for Pool \"%s\".\n"
-msgstr "Erzeuge db Medientyp Eintrag %s fehlgeschlagen: ERR=%s\n"
-
-#: 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:797
-#, c-format
-msgid "Cancelling duplicate JobId=%d.\n"
-msgstr ""
-
-#: src/dird/job.c:828 src/dird/job.c:1116
-#, fuzzy
-msgid "Run pool override"
-msgstr "von \"Run pool\" �berschrieben"
-
-#: src/dird/job.c:839
-#, fuzzy
-msgid "Run FullPool override"
-msgstr "von \"Run FullPool\" �berschrieben"
-
-#: src/dird/job.c:841
-msgid "Job FullPool override"
-msgstr ""
-
-#: src/dird/job.c:850
-msgid "Run IncPool override"
-msgstr ""
-
-#: src/dird/job.c:852
-msgid "Job IncPool override"
-msgstr ""
-
-#: src/dird/job.c:861
-msgid "Run DiffPool override"
-msgstr ""
-
-#: src/dird/job.c:863
-msgid "Job DiffPool override"
-msgstr ""
-
-#: 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:929
-msgid "FileSet MD5 digest not found.\n"
-msgstr "FileSet MD5 Pr�fsumme nicht gefunden.\n"
-
-#: 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:976
-#, c-format
-msgid "Error updating job record. %s"
-msgstr "Fehler beim Aktualisieren des job Eintrags. %s"
-
-#: src/dird/job.c:1121
-#, fuzzy
-msgid "Run storage override"
-msgstr "Run storage override"
-
-#: src/dird/job.c:1189
-#, fuzzy
-msgid "Client resource"
-msgstr "Pool Ressource"
-
-#: 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:1409
-#, c-format
-msgid "Clone JobId %d started.\n"
-msgstr "Clone JobId %d gestartet.\n"
-
-#: src/dird/authenticate.c:83 src/dird/authenticate.c:84
-#: src/tray-monitor/authenticate.c:132
-#: src/qt-console/tray-monitor/authenticate.cpp:131
-#, c-format
-msgid "Error sending Hello to Storage daemon. ERR=%s\n"
-msgstr "Fehler beim senden von \"Hello\" an Storage daemon. ERR=%s\n"
-
-#: src/dird/authenticate.c:113
-msgid "Director and Storage daemon passwords or names not the same.\n"
-msgstr "Director und Storage daemon Passworte or Namen nicht gleich.\n"
-
-#: src/dird/authenticate.c:115
-#, fuzzy, c-format
-msgid ""
-"Director unable to authenticate with Storage daemon at \"%s:%d\". Possible "
-"causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the SD or\n"
-"SD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-"Director kann sich nicht an Storage daemon an \"%s:%d\" authentisieren. "
-"M�gliche Ursachen:\n"
-"Passworte oder Namen nicht gleich oder\n"
-"Maximum Concurrent Jobs �berschritten am SD oder\n"
-"SD Netzwerk durcheinander (daemon neustarten).\n"
-"F�r Hilfe bitte unter http://www.bacula.org/rel-manual/faq."
-"html#AuthorizationErrors nachsehen.\n"
-
-#: src/dird/authenticate.c:127 src/wx-console/authenticate.c:127
-#: src/console/authenticate.c:122
-msgid ""
-"Authorization problem: Remote server did not advertise required TLS "
-"support.\n"
-msgstr ""
-"Authorisationsproblem: Entfernter Server hat ben�tigte TLS Unterst�tzung "
-"nicht angeboten.\n"
-
-#: src/dird/authenticate.c:134 src/stored/authenticate.c:146
-#: src/stored/authenticate.c:257 src/wx-console/authenticate.c:133
-#: src/console/authenticate.c:129 src/filed/authenticate.c:160
-#: src/filed/authenticate.c:279
-msgid "Authorization problem: Remote server requires TLS.\n"
-msgstr "Authorisationsproblem: Enfernter Server erfordert TLS.\n"
-
-#: src/dird/authenticate.c:143
-#, fuzzy, c-format
-msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
-msgstr "TLS Aushandlung fehlgeschlagen mit SD an \"%s:%d\"\n"
-
-#: src/dird/authenticate.c:155
-#, c-format
-msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
-msgstr ""
-"bdird<stored: \"%s:%s\" fehlerhafte Antwort auf \"Hello\" Kommando: ERR=%s\n"
-
-#: src/dird/authenticate.c:162 src/tray-monitor/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:151
-msgid "Storage daemon rejected Hello command\n"
-msgstr "Storage daemon hat Hello Kommando abgewiesen.\n"
-
-#: src/dird/authenticate.c:163
-#, fuzzy, c-format
-msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
-msgstr "Storage daemon an \"%s:%d\" hat Hello commando abgewiesen.\n"
-
-#: src/dird/authenticate.c:192
-#, fuzzy, c-format
-msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
-msgstr ""
-"Fehler beim senden des Kommandos Hello an File daemon auf \"%s:%d\". ERR=%s\n"
-
-#: src/dird/authenticate.c:222
-msgid "Director and File daemon passwords or names not the same.\n"
-msgstr "Director und File daemon Passworte oder Namen sind nicht gleich.\n"
-
-#: src/dird/authenticate.c:224
-#, fuzzy, c-format
-msgid ""
-"Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the FD or\n"
-"FD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-"Kann mit  File daemon on \"%s:%d\" nicht authentisieren. M�gliche Ursachen:\n"
-"Passworte oder Namen nicht gleich oder\n"
-"Maximum Concurrent Jobs �berschritten auf dem FD oder\n"
-"FD Netzwerk durcheinander (Daemon neustarten).\n"
-"F�r Hilfe bitte unter http://www.bacula.org/rel-manual/faq."
-"html#AuthorizationErrors nachsehen.\n"
-
-#: src/dird/authenticate.c:236
-#, c-format
-msgid ""
-"Authorization problem: FD \"%s:%s\" did not advertise required TLS support.\n"
-msgstr ""
-"Authorisationsproblem: FD \"%s:%s\" hat erforderliche TLS Unterst�tzung "
-"nicht angeboten.\n"
-
-#: src/dird/authenticate.c:244
-#, fuzzy, c-format
-msgid "Authorization problem: FD at \"%s:%d\" requires TLS.\n"
-msgstr "Authorisationsproblem: FD an \"%s:%d\" erfordert TLS.\n"
-
-#: src/dird/authenticate.c:254
-#, fuzzy, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
-msgstr "TLS Aushandlung fehlgeschlagen mit FD an \"%s:%d\".\n"
-
-#: src/dird/authenticate.c:266 src/tray-monitor/authenticate.c:191
-#: src/qt-console/tray-monitor/authenticate.cpp:190
-#, c-format
-msgid "Bad response from File daemon to Hello command: ERR=%s\n"
-msgstr "Fehlerhafte Antwort von  File daemon auf Hello Kommando: ERR=%s\n"
-
-#: src/dird/authenticate.c:268
-#, fuzzy, c-format
-msgid "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
-msgstr ""
-"Fehlerhafte Antwort von File daemon an \"%s:%d\" auf Hello Kommando: ERR=%s\n"
-
-#: src/dird/authenticate.c:277 src/tray-monitor/authenticate.c:198
-#: src/qt-console/tray-monitor/authenticate.cpp:197
-msgid "File daemon rejected Hello command\n"
-msgstr "File daemon hat Hello Kommando abgelehnt\n"
-
-#: src/dird/authenticate.c:278
-#, fuzzy, c-format
-msgid "File daemon at \"%s:%d\" rejected Hello command\n"
-msgstr "File daemon auf \"%s:%d\" hat Hello Kommando abgelehnt\n"
-
-#: src/dird/authenticate.c:302
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Len=%d\n"
-msgstr "UA Hello von %s:%s:%d ist ung�ltig. Len=%d\n"
-
-#: src/dird/authenticate.c:309
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Got: %s\n"
-msgstr "UA Hello von %s:%s:%d ist ung�ltig. Erhalten: %s\n"
-
-#: src/dird/authenticate.c:377
-msgid ""
-"Authorization problem: Remote client did not advertise required TLS "
-"support.\n"
-msgstr ""
-"Authorisationsproblem: Entfernter Klient hat die erforderte TLSUnterst�tzung "
-"nicht angezeigt.\n"
-
-#: src/dird/authenticate.c:385
-msgid "Authorization problem: Remote client requires TLS.\n"
-msgstr "Authorisationsproblem: Entfernter Klient erfordert TLS.\n"
-
-#: src/dird/authenticate.c:400 src/filed/authenticate.c:169
-#: src/filed/authenticate.c:288
-msgid "TLS negotiation failed.\n"
-msgstr "TLS Aushandlung gescheitert.\n"
-
-#: src/dird/authenticate.c:414
-#, c-format
-msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
-msgstr "Kann Konsole \"%s\" an %s:%s:%d nicht authentisieren.\n"
-
-#: src/dird/authenticate.c:419
-#, c-format
-msgid "1000 OK: %s Version: %s (%s)\n"
-msgstr "1000 OK: %s Version: %s (%s)\n"
-
-#: 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:129
-#, c-format
-msgid "Invalid Catalog request; DB not open: %s"
-msgstr "Ung�ltige Catalog Anfrage; DB nicht offen: %s"
-
-#: src/dird/catreq.c:154
-msgid "1901 No Media.\n"
-msgstr "1901 Keine Medien.\n"
-
-#: src/dird/catreq.c:182
-msgid "not in Pool"
-msgstr "nicht in Pool"
-
-#: src/dird/catreq.c:184
-msgid "not correct MediaType"
-msgstr "nicht korrekter Medientyp"
-
-#: src/dird/catreq.c:194
-msgid "is not Enabled"
-msgstr "ist nicht aktiviert"
-
-#: 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:208
-#, c-format
-msgid "1997 Volume \"%s\" not in catalog.\n"
-msgstr "1997 Volume \"%s\" Nicht in Catalog.\n"
-
-#: 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: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:259
-#, c-format
-msgid ""
-"Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
-msgstr ""
-"Volume Files bei %u werden auf %u f�r Volumen \"%s\" gesetzt. Dies ist nicht "
-"Korrekt.\n"
-
-#: 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:318
-#, c-format
-msgid "Catalog error updating Media record. %s"
-msgstr "Catalog Fehler beim Aktualisieren des Media Eintrags. %s"
-
-#: src/dird/catreq.c:320
-msgid "1993 Update Media error\n"
-msgstr "1993 Update Media Fehler\n"
-
-#: 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:346
-#, fuzzy
-msgid "1992 Create JobMedia error\n"
-msgstr "1991 Update JobMedia Fehler\n"
-
-#: 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
-#, 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: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:586
-#, fuzzy, c-format
-msgid "attribute create error. %s"
-msgstr "Attribute create error. %s"
-
-#: 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:615
-#, fuzzy, c-format
-msgid "1994 Invalid Catalog Update: %s"
-msgstr "1991 Ung�ltige Catalog Aktualisierung: %s"
-
-#: 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: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:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
-msgid "Storage daemon"
-msgstr "Storage daemon"
-
-#: src/dird/msgchan.c:205
-#, c-format
-msgid "Storage daemon rejected Job command: %s\n"
-msgstr "Storage daemon hat \"Job command\": %s abgelehnt\n"
-
-#: src/dird/msgchan.c:213
-#, c-format
-msgid "<stored: bad response to Job command: %s\n"
-msgstr "<stored: falsche Antwort auf  Job Kommando: %s\n"
-
-#: 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"
-"     Storage daemon didn't accept Device \"%s\" because:\n"
-"     %s"
-msgstr ""
-"\n"
-"     Storage daemon hat Device \"%s\" nicht akzeptiert weil:\n"
-"     %s"
-
-#: src/dird/msgchan.c:322
-#, c-format
-msgid ""
-"\n"
-"     Storage daemon didn't accept Device \"%s\" command.\n"
-msgstr ""
-"\n"
-"     Storage daemon hat Device \"%s\" Kommando nicht akzeptiert.\n"
-
-#: 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
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:183
-#: src/qt-console/tray-monitor/tray_conf.cpp:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:187
-#: src/qt-console/tray-monitor/tray_conf.cpp:187
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:191
-#: src/qt-console/tray-monitor/tray_conf.cpp:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:195
-#: src/qt-console/tray-monitor/tray_conf.cpp:195
-#: src/qt-console/bat_conf.cpp:157
-#, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:114
-#, fuzzy, c-format
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"       -c <file>   setze Konfigurationsdatei auf Datei\n"
-"       -dnn        setze debug level auf nn\n"
-"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
-"       -g          groupid\n"
-"       -r <job>    starte <job> jetzt\n"
-"       -s          no signals\n"
-"       -t          test - Konfiguration Lesen und beenden\n"
-"       -u          userid\n"
-"       -v          ausf�hrliche Benutzer Meldungen\n"
-"       -?          diese Meldung ausgeben.\n"
-"\n"
-
-#: src/tray-monitor/tray-monitor.c:270
-#: src/qt-console/tray-monitor/tray-monitor.cpp:216
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:301
-#: src/qt-console/tray-monitor/tray-monitor.cpp:248
-#, fuzzy, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
-msgstr ""
-"Keine Director resource definiert in %s\n"
-"Ohne dies weiss ich nicht wer ich bin :-(\n"
-
-#: src/tray-monitor/tray-monitor.c:323
-#: src/qt-console/tray-monitor/tray-monitor.cpp:263
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:330
-msgid "Bacula daemon status monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:339
-msgid "Open status window..."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:345
-msgid "Exit"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:357
-msgid "Bacula tray monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:382
-msgid " (DIR)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:386
-msgid " (FD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:390
-msgid " (SD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:403
-msgid "Unknown status."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:477
-msgid "Refresh interval in seconds: "
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:485
-msgid "Refresh now"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:489
-msgid "About"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:493
-msgid "Close"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:513
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:516
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:519
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:560 src/tray-monitor/tray-monitor.c:571
-msgid "Bacula Tray Monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:562 src/tray-monitor/tray-monitor.c:573
-msgid "Written by Nicolas Boichat\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:563 src/tray-monitor/tray-monitor.c:574
-msgid "Version"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:656
-#: src/qt-console/tray-monitor/tray-monitor.cpp:331
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:730
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:742
-#, c-format
-msgid " (%d errors)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:745
-#, c-format
-msgid " (%d error)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:783
-msgid "No current job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:786
-msgid "No last job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:794
-msgid "Job status: Created"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:799
-msgid "Job status: Running"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:803
-msgid "Job status: Blocked"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:808
-msgid "Job status: Terminated"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:813
-msgid "Job status: Terminated in error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:819
-msgid "Job status: Error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:823
-msgid "Job status: Fatal error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:828
-msgid "Job status: Verify differences"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:833
-msgid "Job status: Canceled"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:838
-msgid "Job status: Waiting on File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:843
-msgid "Job status: Waiting on the Storage daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:848
-msgid "Job status: Waiting for new media"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:853
-msgid "Job status: Waiting for Mount"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:858
-msgid "Job status: Waiting for storage resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:863
-msgid "Job status: Waiting for job resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:868
-msgid "Job status: Waiting for Client resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:873
-msgid "Job status: Waiting for maximum jobs"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:878
-msgid "Job status: Waiting for start time"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:883
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:888
-#, c-format
-msgid "Unknown job status %c."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:889
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:896
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:936 src/console/console.c:1143
-#, c-format
-msgid "Connecting to Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:937
-#: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: 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:173
-msgid "Director daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:943
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:944
-#: src/qt-console/tray-monitor/tray-monitor.cpp:366
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:945
-#: src/qt-console/tray-monitor/tray-monitor.cpp:368
-msgid "File daemon"
-msgstr "File daemon"
-
-#: src/tray-monitor/tray-monitor.c:950
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:951
-#: src/qt-console/tray-monitor/tray-monitor.cpp:373
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:956 src/tray-monitor/tray-monitor.c:994
-#: src/qt-console/tray-monitor/tray-monitor.cpp:379
-#: src/qt-console/tray-monitor/tray-monitor.cpp:409
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:962
-msgid "Cannot connect to daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:963
-#: src/qt-console/tray-monitor/tray-monitor.cpp:384
-msgid "Cannot connect to daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:975
-#: src/qt-console/tray-monitor/tray-monitor.cpp:393
-#, c-format
-msgid "Authentication error : %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:982
-msgid "Opened connection with Director daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:983
-#: src/qt-console/tray-monitor/tray-monitor.cpp:400
-msgid "Opened connection with Director daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:986
-msgid "Opened connection with File daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:987
-#: src/qt-console/tray-monitor/tray-monitor.cpp:403
-msgid "Opened connection with File daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:990
-msgid "Opened connection with Storage daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:991
-#: src/qt-console/tray-monitor/tray-monitor.cpp:406
-msgid "Opened connection with Storage daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1028
-msgid "<< Error: BNET_SUB_PROMPT signal received. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1033 src/wx-console/console_thread.cpp:494
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1037
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1042
-msgid "<ERROR>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1046
-#: src/qt-console/tray-monitor/tray-monitor.cpp:457
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1052
-msgid "<STOP>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1056
-#: src/qt-console/tray-monitor/tray-monitor.cpp:466
-msgid "Error : Connection closed."
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:88
-#: src/qt-console/tray-monitor/authenticate.cpp:87
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see "
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:97 src/console/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:96
-#, c-format
-msgid "Bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:104 src/wx-console/authenticate.c:157
-#: src/console/authenticate.c:159
-#: src/qt-console/tray-monitor/authenticate.cpp:103
-msgid "Director rejected Hello command\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:138
-#: src/qt-console/tray-monitor/authenticate.cpp:137
-#, fuzzy
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see "
-msgstr "Director und Storage daemon Passworte or Namen nicht gleich.\n"
-
-#: src/tray-monitor/authenticate.c:145
-#: src/qt-console/tray-monitor/authenticate.cpp:144
-#, c-format
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:178
-#: src/qt-console/tray-monitor/authenticate.cpp:177
-#, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:184
-#: src/qt-console/tray-monitor/authenticate.cpp:183
-#, fuzzy
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see "
-msgstr "Director und File daemon Passworte oder Namen sind nicht gleich.\n"
-
-#: src/stored/reserve.c:87
-#, c-format
-msgid "Unable to initialize reservation lock. ERR=%s\n"
-msgstr ""
-
-#: src/stored/reserve.c:156
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
-msgstr ""
-
-#: src/stored/reserve.c:256
-msgid "3939 Could not get dcr\n"
-msgstr ""
-
-#: 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:373
-#, c-format
-msgid "Failed command: %s\n"
-msgstr ""
-
-#: src/stored/reserve.c:632 src/stored/dircmd.c:633
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
-msgstr ""
-
-#: 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:652
-#, c-format
-msgid "3926 Could not get dcr for device: %s\n"
-msgstr ""
-
-#: 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:788
-#, c-format
-msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
-msgstr ""
-
-#: src/stored/reserve.c:840
-#, c-format
-msgid "3603 JobId=%u device %s is busy reading.\n"
-msgstr ""
-
-#: 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: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:914
-#, c-format
-msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: src/stored/reserve.c:926
-#, c-format
-msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: 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:987
-#, c-format
-msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
-msgstr ""
-
-#: 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:1064
-#, c-format
-msgid "Logic error!!!! JobId=%u Should not get here.\n"
-msgstr ""
-
-#: 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:1068
-msgid "Logic error!!!! Should not get here.\n"
-msgstr ""
-
-#: src/stored/reserve.c:1071
-#, c-format
-msgid "3911 JobId=%u failed reserve drive %s.\n"
-msgstr ""
-
-#: src/stored/bls.c:79
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bls [options] <device-name>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -j              list jobs\n"
-"       -k              list blocks\n"
-"    (no j or k option) list saved files\n"
-"       -L              dump label\n"
-"       -p              proceed inspite of errors\n"
-"       -v              be verbose\n"
-"       -V              specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"       -c <file>   setze Konfigurationsdatei auf Datei\n"
-"       -dnn        setze debug level auf nn\n"
-"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
-"       -g          groupid\n"
-"       -r <job>    starte <job> jetzt\n"
-"       -s          no signals\n"
-"       -t          test - Konfiguration Lesen und beenden\n"
-"       -u          userid\n"
-"       -v          ausf�hrliche Benutzer Meldungen\n"
-"       -?          diese Meldung ausgeben.\n"
-"\n"
-
-#: src/stored/bls.c:149 src/stored/bextract.c:146
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:164 src/stored/bextract.c:161
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:211
-msgid "No archive name specified\n"
-msgstr ""
-
-#: src/stored/bls.c:247
-#, c-format
-msgid ""
-"\n"
-"Warning, this Volume is a continuation of Volume %s\n"
-msgstr ""
-
-#: src/stored/bls.c:290
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:301
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/bls.c:303
-#, c-format
-msgid "End of file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:327
-#, c-format
-msgid ""
-"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm="
-"%s rlen=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:336
-#, c-format
-msgid "Block: %d size=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:386 src/stored/bextract.c:328 src/stored/bscan.c:688
-msgid "Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bls.c:388
-msgid "Attrib unpack error!\n"
-msgstr ""
-
-#: src/stored/bls.c:399
-#, c-format
-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:330
-msgid "Fresh Volume Label"
-msgstr ""
-
-#: 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:1028 src/stored/bcopy.c:337
-msgid "Begin Job Session"
-msgstr ""
-
-#: 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:346
-msgid "End of Medium"
-msgstr ""
-
-#: src/stored/bls.c:444
-msgid "End of Physical Medium"
-msgstr ""
-
-#: src/stored/bls.c:447
-msgid "Start of object"
-msgstr ""
-
-#: src/stored/bls.c:450
-msgid "End of object"
-msgstr ""
-
-#: 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: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: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 ""
-
-#: src/stored/dircmd.c:155
-#, c-format
-msgid "Connection request from %s failed.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:166
-#, c-format
-msgid "Invalid connection from %s. Len=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
-msgid "Unable to authenticate Director\n"
-msgstr ""
-
-#: src/stored/dircmd.c:299
-#, c-format
-msgid "3991 Bad setdebug command: %s\n"
-msgstr ""
-
-#: 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:358
-#, fuzzy, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
-msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
-
-#: 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:442
-#, c-format
-msgid "3903 Error scanning label command: %s\n"
-msgstr ""
-
-#: 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:509
-#, c-format
-msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:516
-msgid "3921 Wrong volume mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:520
-msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:528
-#, c-format
-msgid "3912 Failed to label Volume: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:538
-#, c-format
-msgid "3914 Failed to label Volume (no media): ERR=%s\n"
-msgstr ""
-
-#: 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:578
-#, c-format
-msgid "3001 Mounted Volume: %s\n"
-msgstr ""
-
-#: 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:696
-#, fuzzy
-msgid "Specified slot ignored. "
-msgstr "SQL fehlgeschlagen ERR=%s\n"
-
-#: 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:732 src/stored/dircmd.c:761
-#, c-format
-msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: 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:745
-#, c-format
-msgid "3001 Device \"%s\" is doing acquire.\n"
-msgstr ""
-
-#: 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:776
-#, c-format
-msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:788
-#, c-format
-msgid "3002 Device \"%s\" is mounted.\n"
-msgstr ""
-
-#: 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:793
-#, c-format
-msgid "3906 File device \"%s\" is always mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:802
-#, fuzzy, c-format
-msgid "3930 Device \"%s\" is being released.\n"
-msgstr "unbekannt"
-
-#: src/stored/dircmd.c:806
-#, fuzzy, c-format
-msgid "3905 Unknown wait state %d\n"
-msgstr "unbekannt"
-
-#: src/stored/dircmd.c:816
-#, c-format
-msgid "3909 Error scanning mount command: %s\n"
-msgstr ""
-
-#: 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:851
-#, fuzzy, c-format
-msgid "3901 Device \"%s\" is already unmounted.\n"
-msgstr "unbekannt"
-
-#: 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:871
-#, c-format
-msgid "3902 Device \"%s\" is busy in acquire.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:909
-#, c-format
-msgid "3907 Error scanning unmount command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:937
-msgid "3916 Error scanning action_on_purge command\n"
-msgstr ""
-
-#: 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:987
-#, c-format
-msgid "3922 Device \"%s\" waiting for sysop.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:993
-#, c-format
-msgid "3922 Device \"%s\" waiting for mount.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:997
-#, fuzzy, c-format
-msgid "3923 Device \"%s\" is busy in acquire.\n"
-msgstr "unbekannt"
-
-#: src/stored/dircmd.c:1001
-#, c-format
-msgid "3914 Device \"%s\" is being labeled.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1009
-#, c-format
-msgid "3022 Device \"%s\" released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1020
-#, c-format
-msgid "3927 Error scanning release command: %s\n"
-msgstr ""
-
-#: 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:1062
-msgid "Error parsing bootstrap file.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1124
-#, fuzzy, c-format
-msgid "3998 Device \"%s\" is not an autochanger.\n"
-msgstr "unbekannt"
-
-#: src/stored/dircmd.c:1141
-#, c-format
-msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1183
-#, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1211
-#, c-format
-msgid "3001 Volume=%s Slot=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1243
-#, c-format
-msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
-msgstr ""
-
-#: 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:1251
-#, c-format
-msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1255
-#, c-format
-msgid "3934 Device \"%s\" is being initialized.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1259
-#, fuzzy, c-format
-msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
-msgstr "unbekannt"
-
-#: src/stored/dircmd.c:1263
-#, fuzzy, c-format
-msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
-msgstr "unbekannt"
-
-#: src/stored/dircmd.c:1268
-#, fuzzy, c-format
-msgid "3936 Device \"%s\" is busy reading.\n"
-msgstr "unbekannt"
-
-#: 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:122 src/stored/parse_bsr.c:126
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:148
-#, c-format
-msgid "Cannot open bootstrap file %s: %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:279
-#, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:311
-#, c-format
-msgid "Device \"%s\" in bsr at inappropriate place.\n"
-msgstr ""
-
-#: 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:494
-msgid "JobType not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:502
-msgid "JobLevel not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:719
-#, c-format
-msgid "Slot %d in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:743
-#, c-format
-msgid "VolFile     : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:751
-#, c-format
-msgid "VolBlock    : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:759
-#, c-format
-msgid "VolAddr    : %llu-%llu\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:768
-#, c-format
-msgid "FileIndex   : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:770
-#, c-format
-msgid "FileIndex   : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:780
-#, c-format
-msgid "JobId       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:782
-#, c-format
-msgid "JobId       : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:792
-#, c-format
-msgid "SessId      : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:794
-#, c-format
-msgid "SessId      : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:803
-#, c-format
-msgid "VolumeName  : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:804
-#, c-format
-msgid "  MediaType : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:805
-#, c-format
-msgid "  Device    : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:806
-#, c-format
-msgid "  Slot      : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:815
-#, c-format
-msgid "Client      : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:823
-#, c-format
-msgid "Job          : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:831
-#, c-format
-msgid "SessTime    : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:842
-msgid "BSR is NULL\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:846
-#, c-format
-msgid "Next        : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:847
-#, c-format
-msgid "Root bsr    : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:859
-#, c-format
-msgid "count       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:860
-#, c-format
-msgid "found       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:863
-#, c-format
-msgid "done        : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:864
-#, c-format
-msgid "positioning : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:865
-#, c-format
-msgid "fast_reject : %d\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:96
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:106
-msgid "Insane! End of tape while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:132
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:155
-#, c-format
-msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:166
-msgid "No HDR1 label while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:172
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:184
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:199
-msgid "Unknown or bad ANSI/IBM label record.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:207
-msgid "Too many records in while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:307
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:333
-#, c-format
-msgid "Could not write ANSI VOL1 label. Wanted size=%d got=%d ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:371 src/stored/ansi_label.c:400
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:376 src/stored/ansi_label.c:407
-msgid "Could not write ANSI HDR1 label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:412
-#, c-format
-msgid "Error writing EOF to tape. ERR=%s"
-msgstr ""
-
-#: src/stored/ansi_label.c:417
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
-msgstr ""
-
-#: src/stored/append.c:68
-msgid "DCR is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:73
-msgid "DEVICE is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:83
-msgid "Unable to set network buffer size.\n"
-msgstr ""
-
-#: 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:110 src/stored/btape.c:2235
-#, c-format
-msgid "Write session label failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:122
-#, c-format
-msgid "Network send error to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:159
-#, c-format
-msgid "Error reading data header from FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:167
-#, c-format
-msgid "Malformed data header from FD: %s\n"
-msgstr ""
-
-#: src/stored/append.c:187
-#, c-format
-msgid "FI=%d from FD not positive or sequential=%d\n"
-msgstr ""
-
-#: 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: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: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:279 src/stored/mac.c:128
-msgid "Set ok=FALSE after write_block_to_device.\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/vol_mgr.c:93
-#, fuzzy, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
-msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
-
-#: src/stored/label.c:93
-#, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:110 src/stored/label.c:202
-#, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
-msgstr ""
-
-#: src/stored/label.c:113 src/stored/label.c:190
-#, c-format
-msgid "Too many tries: %s"
-msgstr ""
-
-#: src/stored/label.c:130
-#, c-format
-msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
-msgstr ""
-
-#: src/stored/label.c:135
-msgid "Could not read Volume label from block.\n"
-msgstr ""
-
-#: src/stored/label.c:138
-#, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:143
-#, c-format
-msgid "Volume Header Id bad: %s\n"
-msgstr ""
-
-#: src/stored/label.c:175
-#, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
-msgstr ""
-
-#: src/stored/label.c:186
-#, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
-msgstr ""
-
-#: 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:277
-#, c-format
-msgid "Cannot write Volume label to block for device %s\n"
-msgstr ""
-
-#: 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:451
-#, c-format
-msgid "Rewind error on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:458
-#, c-format
-msgid "Truncate error on device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:487
-#, c-format
-msgid "Unable to write device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:518
-#, c-format
-msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
-msgstr ""
-
-#: src/stored/label.c:521
-#, c-format
-msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
-msgstr ""
-
-#: src/stored/label.c:721
-#, c-format
-msgid "Bad Volume session label = %d\n"
-msgstr ""
-
-#: src/stored/label.c:776
-#, c-format
-msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
-msgstr ""
-
-#: src/stored/label.c:903
-#, c-format
-msgid "Unknown %d"
-msgstr ""
-
-#: src/stored/label.c:907
-#, c-format
-msgid ""
-"\n"
-"Volume Label:\n"
-"Id                : %sVerNo             : %d\n"
-"VolName           : %s\n"
-"PrevVolName       : %s\n"
-"VolFile           : %d\n"
-"LabelType         : %s\n"
-"LabelSize         : %d\n"
-"PoolName          : %s\n"
-"MediaType         : %s\n"
-"PoolType          : %s\n"
-"HostName          : %s\n"
-msgstr ""
-
-#: src/stored/label.c:929
-#, c-format
-msgid "Date label written: %s\n"
-msgstr ""
-
-#: src/stored/label.c:935
-#, c-format
-msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:955
-#, c-format
-msgid ""
-"\n"
-"%s Record:\n"
-"JobId             : %d\n"
-"VerNum            : %d\n"
-"PoolName          : %s\n"
-"PoolType          : %s\n"
-"JobName           : %s\n"
-"ClientName        : %s\n"
-msgstr ""
-
-#: src/stored/label.c:968
-#, c-format
-msgid ""
-"Job (unique name) : %s\n"
-"FileSet           : %s\n"
-"JobType           : %c\n"
-"JobLevel          : %c\n"
-msgstr ""
-
-#: src/stored/label.c:977
-#, c-format
-msgid ""
-"JobFiles          : %s\n"
-"JobBytes          : %s\n"
-"StartBlock        : %s\n"
-"EndBlock          : %s\n"
-"StartFile         : %s\n"
-"EndFile           : %s\n"
-"JobErrors         : %s\n"
-"JobStatus         : %c\n"
-msgstr ""
-
-#: src/stored/label.c:998
-#, c-format
-msgid "Date written      : %s\n"
-msgstr ""
-
-#: src/stored/label.c:1003
-#, c-format
-msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:1022
-msgid "Fresh Volume"
-msgstr ""
-
-#: src/stored/label.c:1025
-msgid "Volume"
-msgstr ""
-
-#: src/stored/label.c:1034 src/stored/read_record.c:428
-msgid "End of Media"
-msgstr ""
-
-#: src/stored/label.c:1037
-msgid "End of Tape"
-msgstr ""
-
-#: 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:1062
-msgid "End of physical tape.\n"
-msgstr ""
-
-#: 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:1079
-#, c-format
-msgid "   Job=%s Date=%s Level=%c Type=%c\n"
-msgstr ""
-
-#: src/stored/label.c:1088
-#, c-format
-msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
-msgstr ""
-
-#: src/stored/status.c:99
-msgid "Used Volume status:\n"
-msgstr ""
-
-#: src/stored/status.c:117
-msgid ""
-"\n"
-"SD Resources:\n"
-msgstr ""
-
-#: src/stored/status.c:153
-msgid ""
-"\n"
-"Device status:\n"
-msgstr ""
-
-#: src/stored/status.c:157
-#, c-format
-msgid "Autochanger \"%s\" with devices:\n"
-msgstr ""
-
-#: src/stored/status.c:177
-#, c-format
-msgid ""
-"\n"
-"Device %s is %s:\n"
-"    Volume:      %s\n"
-"    Pool:        %s\n"
-"    Media type:  %s\n"
-msgstr ""
-
-#: 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 ""
-"\n"
-"Device %s open but no Bacula volume is currently mounted.\n"
-msgstr ""
-
-#: src/stored/status.c:199
-#, c-format
-msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:214
-#, c-format
-msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:220
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:227
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Device %s is not open.\n"
-msgstr "unbekannt"
-
-#: 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:255
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
-msgstr ""
-
-#: src/stored/status.c:293
-msgid ""
-"No DEVICE structure.\n"
-"\n"
-msgstr ""
-
-#: src/stored/status.c:299
-msgid "    Device is BLOCKED. User unmounted.\n"
-msgstr ""
-
-#: src/stored/status.c:303
-msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
-msgstr ""
-
-#: src/stored/status.c:313
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting for mount of volume \"%s\",\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:322
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting to create a volume for:\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:333
-msgid "    Device is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/status.c:339
-msgid "    Device is being initialized.\n"
-msgstr ""
-
-#: src/stored/status.c:343
-msgid "    Device is blocked labeling a Volume.\n"
-msgstr ""
-
-#: src/stored/status.c:352
-#, c-format
-msgid "    Slot %d %s loaded in drive %d.\n"
-msgstr ""
-
-#: src/stored/status.c:356
-#, c-format
-msgid "    Drive %d is not loaded.\n"
-msgstr ""
-
-#: src/stored/status.c:371 src/stored/btape.c:688
-#, c-format
-msgid "Configured device capabilities:\n"
-msgstr ""
-
-#: src/stored/status.c:389
-msgid "Device state:\n"
-msgstr ""
-
-#: src/stored/status.c:405
-#, c-format
-msgid "  num_writers=%d reserves=%d block=%d\n"
-msgstr ""
-
-#: 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:429
-#, c-format
-msgid "  Archive name: %s Device name: %s\n"
-msgstr ""
-
-#: src/stored/status.c:432
-#, c-format
-msgid "  File=%u block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:434
-#, c-format
-msgid "  Min block=%u Max block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:455
-#, c-format
-msgid "%s Job %s waiting for Client connection.\n"
-msgstr ""
-
-#: 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:484
-#, c-format
-msgid ""
-"Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
-"    pool=\"%s\" device=%s\n"
-msgstr ""
-
-#: src/stored/status.c:495
-#, c-format
-msgid "    spooling=%d despooling=%d despool_wait=%d\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:523
-#, c-format
-msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
-msgstr ""
-
-#: src/stored/status.c:529
-msgid "    FDSocket closed\n"
-msgstr ""
-
-#: src/stored/status.c:550
-msgid ""
-"\n"
-"Jobs waiting to reserve a drive:\n"
-msgstr ""
-
-#: src/stored/status.c:581
-msgid "===================================================================\n"
-msgstr ""
-
-#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
-msgid "Base"
-msgstr ""
-
-#: src/stored/status.c:680 src/filed/status.c:534
-msgid "Init Catalog"
-msgstr ""
-
-#: src/stored/status.c:683 src/filed/status.c:537
-msgid "Volume to Catalog"
-msgstr ""
-
-#: src/stored/status.c:686 src/filed/status.c:540
-msgid "Disk to Catalog"
-msgstr ""
-
-#: src/stored/status.c:689 src/filed/status.c:543
-msgid "Data"
-msgstr ""
-
-#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
-msgid "Unknown Job Level"
-msgstr ""
-
-#: src/stored/status.c:763
-#, c-format
-msgid "3900 No arg in .status command: %s\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:826
-msgid "Bacula Storage: Idle"
-msgstr ""
-
-#: src/stored/status.c:837
-msgid "Bacula Storage: Running"
-msgstr ""
-
-#: src/stored/status.c:851
-msgid "Bacula Storage: Last Job Canceled"
-msgstr ""
-
-#: src/stored/status.c:855
-msgid "Bacula Storage: Last Job Failed"
-msgstr ""
-
-#: src/stored/status.c:859
-msgid "Bacula Storage: Last Job had Warnings"
-msgstr ""
-
-#: src/stored/read_record.c:89
-#, c-format
-msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:93
-msgid "End of all volumes.\n"
-msgstr ""
-
-#: src/stored/read_record.c:137
-msgid "part"
-msgstr ""
-
-#: src/stored/read_record.c:140
-msgid "file"
-msgstr ""
-
-#: src/stored/read_record.c:143
-#, c-format
-msgid "End of %s %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:158
-msgid "Did fsr in attemp to skip bad record.\n"
-msgstr ""
-
-#: src/stored/read_record.c:397
-#, c-format
-msgid "Forward spacing Volume \"%s\" to file:block %u:%u.\n"
-msgstr ""
-
-#: src/stored/read_record.c:421
-msgid "Begin Session"
-msgstr ""
-
-#: src/stored/read_record.c:425
-msgid "End Session"
-msgstr ""
-
-#: src/stored/read_record.c:431
-#, c-format
-msgid "Unknown code %d\n"
-msgstr ""
-
-#: src/stored/bextract.c:80
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
-"files>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -p              proceed inspite of I/O errors\n"
-"       -v              verbose\n"
-"       -V <volumes>    specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_datei] [-d debug_level]\n"
-"        -c <Datei>   benutze <Datei> als Konfigurationsdatei\n"
-"        -dnn        setze debug level auf nn\n"
-"        -f          starte in Vordergrund (f�r debugging)\n"
-"        -g          groupid\n"
-"        -s          no signals (f�r debugging)\n"
-"        -t          Konfigurationsdatei testen und beenden\n"
-"        -u          userid\n"
-"        -v          Ausf�hrliche Benutzermeldungen\n"
-"        -?          diese Meldung ausgeben.\n"
-"\n"
-
-#: 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"
-msgstr ""
-
-#: src/stored/bextract.c:218
-#, c-format
-msgid "%d Program Name and/or Program Data Stream records ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:222
-#, c-format
-msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:249
-#, c-format
-msgid "Cannot stat %s. It must exist. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:253
-#, c-format
-msgid "%s must be a directory.\n"
-msgstr ""
-
-#: src/stored/bextract.c:274
-#, c-format
-msgid "%u files restored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1480
-#, c-format
-msgid "Write error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:321 src/stored/bextract.c:587
-msgid "Logic error output file should be open but is not.\n"
-msgstr ""
-
-#: src/stored/bextract.c:335 src/filed/restore.c:569
-#, c-format
-msgid "%s stream not supported on this Client.\n"
-msgstr ""
-
-#: src/stored/bextract.c:345
-#, c-format
-msgid "%s was deleted.\n"
-msgstr ""
-
-#: src/stored/bextract.c:393
-#, c-format
-msgid "Seek error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1335
-#, c-format
-msgid "Seek to %s error on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:448
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
-msgstr ""
-
-#: 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:1376
-#, c-format
-msgid "Compressed header version error. version=0x%x\n"
-msgstr ""
-
-#: src/stored/bextract.c:522 src/filed/restore.c:1381
-#, c-format
-msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
-msgstr ""
-
-#: src/stored/bextract.c:544
-#, fuzzy, c-format
-msgid "LZO uncompression error. ERR=%d\n"
-msgstr "Regex �bersetzungsfehler. ERR=%s\n"
-
-#: src/stored/bextract.c:556 src/filed/restore.c:1414
-#, c-format
-msgid "Compression algorithm 0x%x found, but not supported!\n"
-msgstr ""
-
-#: src/stored/bextract.c:578
-msgid "Got Program Name or Data Stream. Ignored.\n"
-msgstr ""
-
-#: 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:74
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify a Storage configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"       -c <file>   setze Konfigurationsdatei auf Datei\n"
-"       -dnn        setze debug level auf nn\n"
-"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
-"       -g          groupid\n"
-"       -r <job>    starte <job> jetzt\n"
-"       -s          no signals\n"
-"       -t          test - Konfiguration Lesen und beenden\n"
-"       -u          userid\n"
-"       -v          ausf�hrliche Benutzer Meldungen\n"
-"       -?          diese Meldung ausgeben.\n"
-"\n"
-
-#: 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:217
-msgid "Write of last block failed.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:221
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
-msgstr ""
-
-#: 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:254
-msgid "Volume is prelabeled. This volume cannot be copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:257
-msgid "Volume label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:263
-msgid "Copy skipped. Record does not match BSR filter.\n"
-msgstr ""
-
-#: 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:294
-msgid "EOM label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:297
-msgid "EOT label not copied.\n"
-msgstr ""
-
-#: src/stored/dvd.c:111
-msgid "No FreeSpace command defined.\n"
-msgstr ""
-
-#: src/stored/dvd.c:145
-#, c-format
-msgid "Cannot run free space command. Results=%s ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:261
-#, c-format
-msgid "Error writing part %d to the DVD: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:263
-#, c-format
-msgid "Error while writing current part to the DVD: %s"
-msgstr ""
-
-#: src/stored/dvd.c:273
-#, c-format
-msgid "Part %d (%lld bytes) written to DVD.\n"
-msgstr ""
-
-#: src/stored/dvd.c:292
-#, c-format
-msgid "Remaining free space %s on %s\n"
-msgstr ""
-
-#: src/stored/dvd.c:358
-#, c-format
-msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
-msgstr ""
-
-#: 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:570
-#, c-format
-msgid "Unable to write last on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/butil.c:59
-msgid "Nohdr,"
-msgstr ""
-
-#: src/stored/butil.c:62
-msgid "partial,"
-msgstr ""
-
-#: src/stored/butil.c:65
-msgid "empty,"
-msgstr ""
-
-#: src/stored/butil.c:68
-msgid "Nomatch,"
-msgstr ""
-
-#: src/stored/butil.c:71
-msgid "cont,"
-msgstr ""
-
-#: src/stored/butil.c:148
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
-msgstr ""
-
-#: src/stored/butil.c:168
-#, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:175
-#, c-format
-msgid "Cannot init device %s\n"
-msgstr ""
-
-#: src/stored/butil.c:195
-#, c-format
-msgid "Cannot open %s\n"
-msgstr ""
-
-#: src/stored/butil.c:282
-#, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:287
-#, c-format
-msgid "Using device: \"%s\" for reading.\n"
-msgstr ""
-
-#: src/stored/butil.c:290
-#, c-format
-msgid "Using device: \"%s\" for writing.\n"
-msgstr ""
-
-#: src/stored/butil.c:306
-msgid "Unexpected End of Data\n"
-msgstr ""
-
-#: src/stored/butil.c:308
-msgid "Unexpected End of Tape\n"
-msgstr ""
-
-#: src/stored/butil.c:310
-msgid "Unexpected End of File\n"
-msgstr ""
-
-#: src/stored/butil.c:312
-msgid "Tape Door is Open\n"
-msgstr ""
-
-#: src/stored/butil.c:314
-msgid "Unexpected Tape is Off-line\n"
-msgstr ""
-
-#: src/stored/acquire.c:74
-#, c-format
-msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
-msgstr ""
-
-#: 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:92
-#, c-format
-msgid "Logic error: no next volume to read. Numvol=%d Curvol=%d\n"
-msgstr ""
-
-#: 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:162
-#, c-format
-msgid "Media Type change.  New read device %s chosen.\n"
-msgstr ""
-
-#: src/stored/acquire.c:174
-#, c-format
-msgid "No suitable device found to read Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/acquire.c:213
-#, c-format
-msgid "Job %s canceled.\n"
-msgstr ""
-
-#: src/stored/acquire.c:231
-#, c-format
-msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/acquire.c:321
-#, c-format
-msgid "Too many errors trying to mount device %s for reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:329
-#, c-format
-msgid "Ready to read from volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: src/stored/acquire.c:381
-#, c-format
-msgid "Want to append, but device %s is busy reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:414
-#, c-format
-msgid "Could not ready device %s for append.\n"
-msgstr ""
-
-#: 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:552
-#, c-format
-msgid "Alert: %s"
-msgstr ""
-
-#: src/stored/acquire.c:560
-#, c-format
-msgid "3997 Bad alert command: %s: ERR=%s.\n"
-msgstr ""
-
-#: 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/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:197
-#, c-format
-msgid "Error getting Volume info: %s"
-msgstr ""
-
-#: src/stored/askdir.c:376
-#, c-format
-msgid "Didn't get vol info vol=%s: ERR=%s"
-msgstr ""
-
-#: src/stored/askdir.c:432
-#, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
-msgstr ""
-
-#: src/stored/askdir.c:439
-#, c-format
-msgid "Error creating JobMedia record: %s\n"
-msgstr ""
-
-#: 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:533
-#, c-format
-msgid ""
-"Job %s is waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\" command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: 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:568
-msgid "pthread error in mount_next_volume.\n"
-msgstr ""
-
-#: src/stored/askdir.c:601
-msgid "Cannot request another volume: no volume name given.\n"
-msgstr ""
-
-#: 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:624
-#, c-format
-msgid ""
-"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:630
-#, c-format
-msgid ""
-"Please mount read Volume \"%s\" for:\n"
-"    Job:          %s\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: src/stored/askdir.c:668
-msgid "pthread error in mount_volume\n"
-msgstr ""
-
-#: src/stored/record.c:75
-#, fuzzy, c-format
-msgid "unknown: %d"
-msgstr "unbekannt"
-
-#: src/stored/record.c:392
-msgid "Damaged buffer\n"
-msgstr ""
-
-#: src/stored/record.c:670
-#, c-format
-msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
-msgstr ""
-
-#: src/stored/read.c:65
-msgid "No Volume names found for restore.\n"
-msgstr ""
-
-#: src/stored/read.c:120
-#, c-format
-msgid ">filed: Error Hdr=%s\n"
-msgstr ""
-
-#: src/stored/read.c:121 src/stored/read.c:136
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
-msgstr ""
-
-#: src/stored/read.c:135
-#, c-format
-msgid "Error sending to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/autochanger.c:65
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:71
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: 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:141
-msgid "Cartridge change or \"update slots\" may be required.\n"
-msgstr ""
-
-#: 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:154
-#, c-format
-msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:185
-#, c-format
-msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:193
-#, c-format
-msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:280
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:287
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
-msgstr ""
-
-#: 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:316
-#, fuzzy, c-format
-msgid "Lock failure on autochanger. ERR=%s\n"
-msgstr "pthread_cond_wait: ERR=%s\n"
-
-#: 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:374 src/stored/autochanger.c:523
-#, c-format
-msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
-msgstr ""
-
-#: 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:473
-#, c-format
-msgid "Volume \"%s\" wanted on %s is in use by device %s\n"
-msgstr ""
-
-#: src/stored/autochanger.c:541
-#, c-format
-msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:585
-#, c-format
-msgid "3993 Device %s not an autochanger device.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:612
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:615
-msgid "3996 Open bpipe failed.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:642 src/console/console.c:1458
-#, c-format
-msgid "Autochanger error: ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored.c:87
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_datei] [-d debug_level]\n"
-"        -c <Datei>   benutze <Datei> als Konfigurationsdatei\n"
-"        -dnn        setze debug level auf nn\n"
-"        -f          starte in Vordergrund (f�r debugging)\n"
-"        -g          groupid\n"
-"        -s          no signals (f�r debugging)\n"
-"        -t          Konfigurationsdatei testen und beenden\n"
-"        -u          userid\n"
-"        -v          Ausf�hrliche Benutzermeldungen\n"
-"        -?          diese Meldung ausgeben.\n"
-"\n"
-
-#: src/stored/stored.c:136 src/stored/btape.c:178
-#, c-format
-msgid "Tape block size (%d) not multiple of system size (%d)\n"
-msgstr ""
-
-#: src/stored/stored.c:140 src/stored/btape.c:182
-#, c-format
-msgid "Tape block size (%d) is not a power of 2\n"
-msgstr ""
-
-#: src/stored/stored.c:268
-msgid "Volume Session Time is ZERO!\n"
-msgstr ""
-
-#: src/stored/stored.c:277
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored.c:310 src/stored/bscan.c:262
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:316
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
-msgstr ""
-
-#: src/stored/stored.c:321
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:326
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:334
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:341 src/stored/bscan.c:270
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:363
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:369
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:375
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: src/stored/stored.c:568
-#, c-format
-msgid "Could not initialize %s\n"
-msgstr ""
-
-#: src/stored/stored.c:582
-#, c-format
-msgid "Could not open device %s\n"
-msgstr ""
-
-#: src/stored/stored.c:596
-#, c-format
-msgid "Could not mount device %s\n"
-msgstr ""
-
-#: src/stored/device.c:120
-#, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:139
-#, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:151
-#, c-format
-msgid "write_block_to_device Volume label failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:186
-#, c-format
-msgid "write_block_to_device overflow block failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:191
-#, c-format
-msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:327 src/stored/dev.c:512
-#, c-format
-msgid "Unable to open device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/device.c:329
-#, c-format
-msgid "Unable to open archive %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:166
-#, fuzzy, c-format
-msgid "Command error with FD, hanging up. %s\n"
-msgstr "Netzwerkfehler mit FD bei %s: ERR=%s\n"
-
-#: src/stored/fd_cmds.c:169
-msgid "Command error with FD, hanging up.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:180
-#, fuzzy, c-format
-msgid "FD command not found: %s\n"
-msgstr "Job nicht gefunden: %s\n"
-
-#: src/stored/fd_cmds.c:206
-#, fuzzy
-msgid "Append data error.\n"
-msgstr "unbekannt"
-
-#: src/stored/fd_cmds.c:211
-msgid "Attempt to append on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:223 src/stored/fd_cmds.c:266
-msgid "Attempt to close non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:241
-msgid "Attempt to open already open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:295
-msgid "Attempt to read on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:313 src/stored/fd_cmds.c:322
-msgid "Attempt to open read on non-open session.\n"
-msgstr ""
-
-#: src/stored/mount.c:98
-#, c-format
-msgid "Too many errors trying to mount device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:106
-#, c-format
-msgid "Job %d canceled.\n"
-msgstr ""
-
-#: src/stored/mount.c:282
-#, c-format
-msgid "Volume \"%s\" previously written, moving to end of data.\n"
-msgstr ""
-
-#: 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:411 src/stored/mount.c:737
-#, c-format
-msgid "Volume \"%s\" not on device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:444
-#, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
-msgstr ""
-
-#: src/stored/mount.c:624
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: 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: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:647
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" size=%s\n"
-msgstr ""
-
-#: src/stored/mount.c:651
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The sizes do not match! Volume=%s Catalog=%s\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: 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:727
-#, c-format
-msgid "Labeled new Volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: 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:751
-#, c-format
-msgid "Marking Volume \"%s\" in Error in Catalog.\n"
-msgstr ""
-
-#: 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:787
-msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
-msgstr ""
-
-#: 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:875 src/stored/btape.c:3122
-#, c-format
-msgid "Cannot open Dev=%s, Vol=%s\n"
-msgstr ""
-
-#: src/stored/mac.c:81
-msgid "Read and write devices not properly initialized.\n"
-msgstr ""
-
-#: src/stored/mac.c:87
-#, c-format
-msgid "No Volume names found for %s.\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:160 src/filed/pythonfd.c:142
-#, c-format
-msgid "Cannot delete attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:193 src/filed/pythonfd.c:160 src/filed/pythonfd.c:176
-#, c-format
-msgid "Cannot find attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:208
-msgid "Error in ParseTuple\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:224
-msgid "Parse tuple error in job_write\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:261
-#, c-format
-msgid "Error in Python method %s\n"
-msgstr ""
-
-#: src/stored/spool.c:83
-msgid "Spooling statistics:\n"
-msgstr ""
-
-#: src/stored/spool.c:86
-#, c-format
-msgid ""
-"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
-msgstr ""
-
-#: src/stored/spool.c:94
-#, c-format
-msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
-msgstr ""
-
-#: src/stored/spool.c:112
-msgid "Spooling data ...\n"
-msgstr ""
-
-#: src/stored/spool.c:138
-#, c-format
-msgid "Bad return from despool WroteVol=%d\n"
-msgstr ""
-
-#: src/stored/spool.c:171
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:225
-msgid "Despooling zero bytes. Your disk is probably FULL!\n"
-msgstr ""
-
-#: src/stored/spool.c:234
-#, c-format
-msgid "Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:239
-#, c-format
-msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:339
-#, c-format
-msgid ""
-"Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/spool.c:407
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:410
-#, c-format
-msgid "Spool read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:411
-#, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:418 src/stored/spool.c:419
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
-msgstr ""
-
-#: src/stored/spool.c:425 src/stored/spool.c:426
-#, c-format
-msgid "Spool data read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: 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:492
-msgid "Bad return from despool in write_block.\n"
-msgstr ""
-
-#: src/stored/spool.c:500
-msgid "Spooling data again ...\n"
-msgstr ""
-
-#: src/stored/spool.c:532
-#, c-format
-msgid "Error writing header to spool file. ERR=%s\n"
-msgstr ""
-
-#: 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:555 src/stored/spool.c:601
-msgid "Fatal despooling error."
-msgstr ""
-
-#: src/stored/spool.c:563
-msgid "Retrying after header spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:579
-#, c-format
-msgid "Error writing data to spool file. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:612
-msgid "Retrying after data spooling error failed.\n"
-msgstr ""
-
-#: 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:706 src/stored/spool.c:730
-#, c-format
-msgid "Fseek on attributes file failed: ERR=%s\n"
-msgstr ""
-
-#: 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:742
-#, c-format
-msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:768
-#, c-format
-msgid "fopen attr spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: 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:504
-#, fuzzy
-msgid "unknown blocked code"
-msgstr "unbekannt"
-
-#: src/stored/stored_conf.c:241
-#, c-format
-msgid "Expected a Device Type keyword, got: %s"
-msgstr ""
-
-#: src/stored/stored_conf.c:255
-#, c-format
-msgid ""
-"Maximum Block Size configured value %u is greater than allowed maximum: %u"
-msgstr ""
-
-#: src/stored/stored_conf.c:269
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:272
-#, c-format
-msgid "dump_resource type=%d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:388
-#, fuzzy, c-format
-msgid "Warning: unknown resource type %d\n"
-msgstr "unbekannt"
-
-#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:645
-#: src/stored/stored_conf.c:680 src/wx-console/console_conf.c:164
-#: src/wx-console/console_conf.c:239 src/wx-console/console_conf.c:284
-#: src/wx-console/console_conf.c:311 src/console/console_conf.c:157
-#: src/console/console_conf.c:233 src/console/console_conf.c:278
-#: src/console/console_conf.c:305 src/filed/filed_conf.c:333
-#: src/filed/filed_conf.c:398 src/filed/filed_conf.c:428
-#: src/qt-console/bat_conf.cpp:161 src/qt-console/bat_conf.cpp:239
-#: src/qt-console/bat_conf.cpp:287 src/qt-console/bat_conf.cpp:317
-#, c-format
-msgid "Unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:584
-#, c-format
-msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:590
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:624
-#, c-format
-msgid "Cannot find AutoChanger resource %s\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:640
-#, fuzzy, c-format
-msgid "Unable to init lock: ERR=%s\n"
-msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
-
-#: src/stored/stored_conf.c:698
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
-msgstr ""
-
-#: src/stored/dev.c:127
-#, c-format
-msgid "Unable to stat device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:155
-msgid "DVD support is now deprecated\n"
-msgstr ""
-
-#: src/stored/dev.c:231
-#, c-format
-msgid "Unable to stat mount point %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:236
-msgid ""
-"Mount and unmount commands must defined for a device which requires mount.\n"
-msgstr ""
-
-#: src/stored/dev.c:247
-#, c-format
-msgid "Min block size > max on device %s\n"
-msgstr ""
-
-#: 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:256
-#, c-format
-msgid "Max block size %u not multiple of device %s block size=%d.\n"
-msgstr ""
-
-#: src/stored/dev.c:260
-#, c-format
-msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
-msgstr ""
-
-#: 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: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:551
-#, c-format
-msgid "Could not open file device %s. No Volume name given.\n"
-msgstr ""
-
-#: src/stored/dev.c:574
-#, c-format
-msgid "Could not open: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:639
-#, c-format
-msgid "No tape loaded or drive offline on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:649
-#, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "Bad call to eod. Device %s not open\n"
-msgstr ""
-
-#: src/stored/dev.c:775
-#, c-format
-msgid "ioctl MTEOM error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:865
-msgid "Bad device call. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:877
-#, c-format
-msgid "Seek error: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:914
-msgid " Bacula status:"
-msgstr ""
-
-#: 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:923
-msgid " Device status:"
-msgstr ""
-
-#: src/stored/dev.c:1022
-msgid "Bad call to load_dev. Device not open\n"
-msgstr ""
-
-#: 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:1077
-#, c-format
-msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1118
-msgid "Bad call to fsf. Device not open\n"
-msgstr ""
-
-#: 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:1160 src/stored/dev.c:1236
-#, c-format
-msgid "ioctl MTFSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:1285
-msgid "Bad call to bsf. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1291
-#, c-format
-msgid "Device %s cannot BSF because it is not a tape.\n"
-msgstr ""
-
-#: src/stored/dev.c:1308
-#, c-format
-msgid "ioctl MTBSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1327
-msgid "Bad call to fsr. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1337
-#, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1365
-#, c-format
-msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1383
-msgid "Bad call to bsr_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1393
-#, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1407
-#, c-format
-msgid "ioctl MTBSR error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1458
-msgid "Bad call to reposition. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1537
-msgid "Bad call to weof_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1547
-msgid "Attempt to WEOF on non-appendable Volume\n"
-msgstr ""
-
-#: src/stored/dev.c:1565
-#, c-format
-msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1664
-#, fuzzy, c-format
-msgid "unknown func code %d"
-msgstr "unbekannt"
-
-#: src/stored/dev.c:1670
-#, c-format
-msgid "I/O function \"%s\" not supported on this device.\n"
-msgstr ""
-
-#: src/stored/dev.c:1844
-#, c-format
-msgid "Unable to truncate device %s. ERR=%s\n"
-msgstr ""
-
-#: 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:1875
-#, c-format
-msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
-msgstr ""
-
-#: 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:2010 src/stored/dev.c:2081
-#, c-format
-msgid "Device %s cannot be %smounted. ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:2481
-#, c-format
-msgid "Unable to set eotmodel on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:118
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -m                update media info in database\n"
-"       -D <driver name>  specify the driver database name (default NULL)\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password>     specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -t <port>         specify database port (default 0)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:278
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:282
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:296 src/stored/bscan.c:372
-#, c-format
-msgid "First Volume Size = %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:302 src/tools/bvfs_test.c:215 src/tools/bbatch.c:201
-#: src/tools/bbatch.c:250 src/tools/ing_test.c:191
-msgid "Could not init Bacula database\n"
-msgstr ""
-
-#: src/stored/bscan.c:309 src/tools/bvfs_test.c:224 src/tools/bbatch.c:257
-#: src/tools/ing_test.c:200
-#, c-format
-msgid "Using Database: %s, User: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:343
-#, c-format
-msgid "Create JobMedia for Job %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:353
-#, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:420
-#, c-format
-msgid "done: %d%%\n"
-msgstr ""
-
-#: src/stored/bscan.c:444
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
-msgstr ""
-
-#: src/stored/bscan.c:456
-#, c-format
-msgid "Pool record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:460
-#, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:466
-#, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:470
-#, c-format
-msgid "Pool type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:480
-#, c-format
-msgid "Media record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:487
-#, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:494
-#, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:498
-#, c-format
-msgid "Media type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:508
-#, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:515
-#, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:526
-#, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:531
-#, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:571
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:577
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:583
-#, c-format
-msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/bscan.c:647
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:658
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:670
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:701
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:766
-#, c-format
-msgid "Got MD5 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:774
-#, c-format
-msgid "Got SHA1 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:782
-#, c-format
-msgid "Got SHA256 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Got SHA512 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:798 src/stored/bscan.c:805
-msgid "Got signed digest record\n"
-msgstr ""
-
-#: src/stored/bscan.c:811
-#, c-format
-msgid "Got Prog Names Stream: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:817
-msgid "Got Prog Data Stream record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:862
-#, c-format
-msgid "Unknown stream type!!! stream=%d len=%i\n"
-msgstr ""
-
-#: src/stored/bscan.c:930
-#, c-format
-msgid "Could not create File Attributes record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:936
-#, c-format
-msgid "Created File record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:981
-#, c-format
-msgid "Could not create media record. ERR=%s\n"
-msgstr ""
-
-#: 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:989
-#, c-format
-msgid "Created Media record for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1010
-#, c-format
-msgid "Updated Media record at end of Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1027
-#, c-format
-msgid "Could not create pool record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1031
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
-msgstr ""
-
-#: 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:1060
-#, c-format
-msgid "Created Client record for Client: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1077
-#, c-format
-msgid "Fileset \"%s\" already exists.\n"
-msgstr ""
-
-#: src/stored/bscan.c:1081
-#, c-format
-msgid "Could not create FileSet record \"%s\". ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1086
-#, c-format
-msgid "Created FileSet record \"%s\"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1133
-#, c-format
-msgid "Could not create JobId record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1139
-#, c-format
-msgid "Could not update job start record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1142
-#, c-format
-msgid "Created new JobId=%u record for original JobId=%u\n"
-msgstr ""
-
-#: src/stored/bscan.c:1195
-#, c-format
-msgid "Could not update JobId=%u record. ERR=%s\n"
-msgstr ""
-
-#: 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:1225
-#, c-format
-msgid "Job Termination code: %d"
-msgstr ""
-
-#: src/stored/bscan.c:1230
-#, c-format
-msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1288
-#, c-format
-msgid "Could not create JobMedia record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1292
-#, c-format
-msgid "Created JobMedia record JobId %d, MediaId %d\n"
-msgstr ""
-
-#: 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:1322
-#, c-format
-msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1327
-msgid "Updated MD5/SHA1 record\n"
-msgstr ""
-
-#: 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:244
-#, c-format
-msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
-msgstr ""
-
-#: src/stored/job.c:261
-msgid "Unable to authenticate File daemon\n"
-msgstr ""
-
-#: src/stored/job.c:390
-msgid "In free_jcr(), but still attached to device!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:185
-#, c-format
-msgid ""
-"\n"
-"\n"
-"!!!! Warning large disk addressing disabled. boffset_t=%d should be 8 or "
-"more !!!!!\n"
-"\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:192
-#, c-format
-msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:201
-msgid "64 bit printf/scanf problem. i=%d x64=%"
-msgstr ""
-
-#: src/stored/btape.c:206
-#, c-format
-msgid "Tape block granularity is %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:279
-msgid "No archive name specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:283
-msgid "Improper number of arguments specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:297
-msgid "btape does not work with DVD storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:302
-msgid "btape only works with tape storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:383
-#, c-format
-msgid "Total Volume bytes=%sB. Total Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:409
-#, c-format
-msgid "Volume bytes=%sB. Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:477
-#, c-format
-msgid "open device %s: OK\n"
-msgstr ""
-
-#: src/stored/btape.c:500
-msgid "Enter Volume Name: "
-msgstr ""
-
-#: src/stored/btape.c:507
-#, c-format
-msgid "Device open failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:512
-#, c-format
-msgid "Wrote Volume label for volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/btape.c:526
-msgid "Volume has no label.\n"
-msgstr ""
-
-#: src/stored/btape.c:529
-msgid "Volume label read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:532
-#, c-format
-msgid "I/O error on device: ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:535
-msgid "Volume name error\n"
-msgstr ""
-
-#: src/stored/btape.c:538
-#, c-format
-msgid "Error creating label. ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:541
-msgid "Volume version error.\n"
-msgstr ""
-
-#: src/stored/btape.c:544
-msgid "Bad Volume label type.\n"
-msgstr ""
-
-#: src/stored/btape.c:547
-msgid "Unknown error.\n"
-msgstr ""
-
-#: src/stored/btape.c:565
-#, c-format
-msgid "Bad status from load. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:567
-#, c-format
-msgid "Loaded %s\n"
-msgstr ""
-
-#: 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:1571
-#, c-format
-msgid "Rewound %s\n"
-msgstr ""
-
-#: src/stored/btape.c:605 src/stored/btape.c:1575
-#, c-format
-msgid "Bad status from weof. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:609
-#, c-format
-msgid "Wrote 1 EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:612
-#, c-format
-msgid "Wrote %d EOFs to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:630
-msgid "Moved to end of medium.\n"
-msgstr ""
-
-#: src/stored/btape.c:657
-#, c-format
-msgid "Bad status from bsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:659
-#, c-format
-msgid "Backspaced %d file%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:676
-#, c-format
-msgid "Bad status from bsr. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:678
-#, c-format
-msgid "Backspaced %d record%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:706
-#, c-format
-msgid "Device status:\n"
-msgstr ""
-
-#: src/stored/btape.c:725
-#, c-format
-msgid "Status:\n"
-msgstr ""
-
-#: src/stored/btape.c:740
-msgid ""
-"Test writing larger and larger records.\n"
-"This is a torture test for records.\n"
-"I am going to write\n"
-"larger and larger records. It will stop when the record size\n"
-"plus the header exceeds the block size (by default about 64K)\n"
-msgstr ""
-
-#: src/stored/btape.c:746
-msgid "Do you want to continue? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:748 src/stored/btape.c:2200
-msgid "Command aborted.\n"
-msgstr ""
-
-#: src/stored/btape.c:765
-#, c-format
-msgid "Block %d i=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:792
-msgid "Skipping read backwards test because BSR turned off.\n"
-msgstr ""
-
-#: src/stored/btape.c:796
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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: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:816
-#, c-format
-msgid "Wrote first record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:827
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:838
-#, c-format
-msgid "Wrote third record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:845 src/stored/btape.c:850
-#, c-format
-msgid "Backspace file failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:854
-msgid "Backspaced over EOF OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:856
-#, c-format
-msgid "Backspace record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:859
-msgid "Backspace record OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:862 src/stored/btape.c:868
-#, c-format
-msgid "Read block failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:873
-msgid "Bad data in record. Test failed!\n"
-msgstr ""
-
-#: src/stored/btape.c:877
-msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
-msgstr ""
-
-#: src/stored/btape.c:878
-msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
-msgstr ""
-
-#: 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"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
-msgstr ""
-
-#: 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:928 src/stored/btape.c:2879
-#, c-format
-msgid "Write failed at block %u. stat=%d ERR=%s\n"
-msgstr ""
-
-#: 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:971
-#, fuzzy
-msgid ""
-"\n"
-"Error writing record to block.\n"
-msgstr "Fehler beim schreiben der bsr Datei.\n"
-
-#: 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:1030
-msgid "The file_size is too big, stop this test with Ctrl-c.\n"
-msgstr ""
-
-#: src/stored/btape.c:1058
-msgid "Test with zero data, should give the maximum throughput.\n"
-msgstr ""
-
-#: 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:1085
-msgid "Test with zero data and bacula block structure.\n"
-msgstr ""
-
-#: src/stored/btape.c:1125
-#, c-format
-msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write %d records and an EOF\n"
-"then write %d records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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:1215 src/stored/btape.c:1295
-msgid "Rewind OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1228 src/stored/btape.c:1347
-msgid "Got EOF on tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:1233
-#, c-format
-msgid "Read block %d failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1239
-#, c-format
-msgid "Read record failed. Block %d! ERR=%s\n"
-msgstr ""
-
-#: 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:1252
-#, c-format
-msgid "%d blocks re-read correctly.\n"
-msgstr ""
-
-#: 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:1283
-msgid "Block position test\n"
-msgstr ""
-
-#: src/stored/btape.c:1338
-#, c-format
-msgid "Reposition to file:block %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:1340
-msgid "Reposition error.\n"
-msgstr ""
-
-#: 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:1355
-msgid ""
-"This may be because the tape drive block size is not\n"
-" set to variable blocking as normally used by Bacula.\n"
-" Please see the Tape Testing chapter in the manual and \n"
-" look for using mt with defblksize and setoptions\n"
-"If your tape drive block size is correct, then perhaps\n"
-" your SCSI driver is *really* stupid and does not\n"
-" correctly report the file:block after a FSF. In this\n"
-" case try setting:\n"
-"    Fast Forward Space File = no\n"
-" in your Device resource.\n"
-msgstr ""
-
-#: src/stored/btape.c:1371
-#, c-format
-msgid "Read record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1382
-#, c-format
-msgid "Block %d re-read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:1403
-msgid ""
-"\n"
-"\n"
-"=== Append files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1427
-msgid "Now moving to end of medium.\n"
-msgstr ""
-
-#: 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: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: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:1436
-msgid ""
-"\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1443
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1444
-msgid "Doing Bacula scan of blocks:\n"
-msgstr ""
-
-#: src/stored/btape.c:1446
-msgid "End scanning the tape.\n"
-msgstr ""
-
-#: 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:1472
-msgid ""
-"\n"
-"Autochanger enabled, but no name or no command device specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:1476
-msgid ""
-"\n"
-"Ah, I see you have an autochanger configured.\n"
-"To test the autochanger you must have a blank tape\n"
-" that I can write on in Slot 1.\n"
-msgstr ""
-
-#: src/stored/btape.c:1479
-msgid ""
-"\n"
-"Do you wish to continue with the Autochanger test? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:1486
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1495
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1504
-#, c-format
-msgid "3991 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1505
-#, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1509
-#, c-format
-msgid "Slot %d loaded. I am going to unload it.\n"
-msgstr ""
-
-#: src/stored/btape.c:1511
-msgid "Nothing loaded in the drive. OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1518
-#, c-format
-msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-#, c-format
-msgid "unload status=%s %d\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-msgid "Bad"
-msgstr ""
-
-#: src/stored/btape.c:1526
-#, c-format
-msgid "3992 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1527
-#, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1537
-#, c-format
-msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1545
-#, c-format
-msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1549
-#, c-format
-msgid "3993 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1550
-#, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1565
-msgid ""
-"\n"
-"The test failed, probably because you need to put\n"
-"a longer sleep time in the mtx-script in the load) case.\n"
-"Adding a 30 second sleep and trying again ...\n"
-msgstr ""
-
-#: src/stored/btape.c:1578
-#, c-format
-msgid "Wrote EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1582
-#, c-format
-msgid ""
-"\n"
-"The test worked this time. Please add:\n"
-"\n"
-"   sleep %d\n"
-"\n"
-"to your mtx-changer script in the load) case.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1587
-msgid ""
-"\n"
-"The test autochanger worked!!\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1598
-msgid "You must correct this error or the Autochanger will not work.\n"
-msgstr ""
-
-#: src/stored/btape.c:1616
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1641
-msgid "Now forward spacing 1 file.\n"
-msgstr ""
-
-#: 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:1646
-#, c-format
-msgid "We should be in file 1. I am at file %d. %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1653
-msgid "Now forward spacing 2 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1666
-msgid "Now forward spacing 4 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1678
-msgid ""
-"The test worked this time. Please add:\n"
-"\n"
-"   Fast Forward Space File = no\n"
-"\n"
-"to your Device resource for this drive.\n"
-msgstr ""
-
-#: src/stored/btape.c:1684
-msgid "Now forward spacing 1 more file.\n"
-msgstr ""
-
-#: 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:1693
-msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1697
-msgid ""
-"\n"
-"The forward space file test failed.\n"
-msgstr ""
-
-#: 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:1705
-msgid ""
-"You must correct this error or Bacula will not work.\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1739
-msgid ""
-"\n"
-"Append test failed. Attempting again.\n"
-"Setting \"Hardware End of Medium = no\n"
-"    and \"Fast Forward Space File = no\n"
-"and retrying append test.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1747
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"\n"
-"    Fast Forward Space File = No\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1754
-msgid ""
-"\n"
-"\n"
-"That appears *NOT* to have corrected the problem.\n"
-msgstr ""
-
-#: src/stored/btape.c:1759
-msgid ""
-"\n"
-"\n"
-"It looks like the append failed. Attempting again.\n"
-"Setting \"BSF at EOM = yes\" and retrying append test.\n"
-msgstr ""
-
-#: src/stored/btape.c:1764
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"    Fast Forward Space File = No\n"
-"    BSF at EOM = yes\n"
-"\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1775
-msgid ""
-"\n"
-"Append test failed.\n"
-"\n"
-"\n"
-"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
-"Unable to correct the problem. You MUST fix this\n"
-"problem before Bacula can use your tape drive correctly\n"
-"\n"
-"Perhaps running Bacula in fixed block mode will work.\n"
-"Do so by setting:\n"
-"\n"
-"Minimum Block Size = nnn\n"
-"Maximum Block Size = nnn\n"
-"\n"
-"in your Storage daemon's Device definition.\n"
-"nnn must match your tape driver's block size, which\n"
-"can be determined by reading your tape manufacturers\n"
-"information, and the information on your kernel dirver.\n"
-"Fixed block sizes, however, are not normally an ideal solution.\n"
-"\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1797
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1840
-#, c-format
-msgid "Bad status from fsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1844
-msgid "Forward spaced 1 file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1847
-#, c-format
-msgid "Forward spaced %d files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1866
-msgid "Forward spaced 1 record.\n"
-msgstr ""
-
-#: src/stored/btape.c:1869
-#, c-format
-msgid "Forward spaced %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:1914
-#, c-format
-msgid "Wrote one record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1916
-msgid "Wrote block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1930
-msgid "Enter length to read: "
-msgstr ""
-
-#: src/stored/btape.c:1935
-msgid "Bad length entered, using default of 1024 bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1944
-#, c-format
-msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1967 src/stored/btape.c:2016
-#, c-format
-msgid "End of tape\n"
-msgstr ""
-
-#: src/stored/btape.c:1972
-#, c-format
-msgid "Starting scan at file %u\n"
-msgstr ""
-
-#: src/stored/btape.c:1979
-#, c-format
-msgid "Bad status from read %d. ERR=%s\n"
-msgstr ""
-
-#: 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: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:2007 src/stored/btape.c:2079
-#, c-format
-msgid "End of File mark.\n"
-msgstr ""
-
-#: 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:2092
-#, c-format
-msgid "Short block read.\n"
-msgstr ""
-
-#: src/stored/btape.c:2095
-#, c-format
-msgid "Error reading block. ERR=%s\n"
-msgstr ""
-
-#: 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:2141
-#, c-format
-msgid "Device status: %u. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2173
-#, c-format
-msgid ""
-"\n"
-"This command simulates Bacula writing to a tape.\n"
-"It requires either one or two blank tapes, which it\n"
-"will label and write.\n"
-"\n"
-"If you have an autochanger configured, it will use\n"
-"the tapes that are in slots 1 and 2, otherwise, you will\n"
-"be prompted to insert the tapes when necessary.\n"
-"\n"
-"It will print a status approximately\n"
-"every 322 MB, and write an EOF every %s.  If you have\n"
-"selected the simple test option, after writing the first tape\n"
-"it will rewind it and re-read the last block written.\n"
-"\n"
-"If you have selected the multiple tape test, when the first tape\n"
-"fills, it will ask for a second, and after writing a few more \n"
-"blocks, it will stop.  Then it will begin re-reading the\n"
-"two tapes.\n"
-"\n"
-"This may take a long time -- hours! ...\n"
-"\n"
-msgstr ""
-
-#: 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:2194
-msgid "Simple test (single tape) selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2197
-msgid "Multiple tape test selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2239
-msgid "Wrote Start of Session label.\n"
-msgstr ""
-
-#: src/stored/btape.c:2258
-#, c-format
-msgid "%s Begin writing Bacula records to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2260
-#, c-format
-msgid "%s Begin writing Bacula records to first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2286
-#, fuzzy
-msgid "Flush block failed.\n"
-msgstr "Job Einrichtung Fehlgeschlagen.\n"
-
-#: 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:2311
-#, c-format
-msgid "%s Flush block, write EOF\n"
-msgstr ""
-
-#: src/stored/btape.c:2320
-msgid "Wrote 1000 blocks on second tape. Done.\n"
-msgstr ""
-
-#: src/stored/btape.c:2325
-msgid "Not OK\n"
-msgstr ""
-
-#: src/stored/btape.c:2349
-#, fuzzy
-msgid "Job canceled.\n"
-msgstr "%s Abgebrochen"
-
-#: src/stored/btape.c:2360
-msgid "Set ok=false after write_block_to_device.\n"
-msgstr ""
-
-#: src/stored/btape.c:2364
-msgid "Wrote End of Session label.\n"
-msgstr ""
-
-#: 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:2392
-#, c-format
-msgid "Could not create state file: %s ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2403
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2406
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2412
-msgid "do_unfill failed.\n"
-msgstr ""
-
-#: src/stored/btape.c:2417
-#, c-format
-msgid "%s: Error during test.\n"
-msgstr ""
-
-#: 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:2459
-#, c-format
-msgid ""
-"\n"
-"Could not find the state file: %s ERR=%s\n"
-"You must redo the fill command.\n"
-msgstr ""
-
-#: src/stored/btape.c:2525
-msgid "Mount first tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2541
-msgid "Rewinding.\n"
-msgstr ""
-
-#: src/stored/btape.c:2546
-#, c-format
-msgid "Reading the first 10000 records from %u:%u.\n"
-msgstr ""
-
-#: 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:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
-#, c-format
-msgid "Reposition error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2556
-#, c-format
-msgid "Reading block %u.\n"
-msgstr ""
-
-#: 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:2563
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2566
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2590
-msgid "Mount second tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2603
-#, c-format
-msgid "Reposition from %u:%u to 0:1\n"
-msgstr ""
-
-#: src/stored/btape.c:2608 src/stored/btape.c:2624
-#, c-format
-msgid "Reading block %d.\n"
-msgstr ""
-
-#: src/stored/btape.c:2614
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2630
-msgid ""
-"\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2647
-#, c-format
-msgid "10000 records read now at %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
-msgid "Last block written"
-msgstr ""
-
-#: src/stored/btape.c:2675 src/stored/btape.c:2685
-msgid "Block read back"
-msgstr ""
-
-#: src/stored/btape.c:2676
-#, c-format
-msgid ""
-"\n"
-"\n"
-"The blocks differ at byte %u\n"
-msgstr ""
-
-#: src/stored/btape.c:2677
-msgid ""
-"\n"
-"\n"
-"!!!! The last block written and the block\n"
-"that was read back differ. The test FAILED !!!!\n"
-"This must be corrected before you use Bacula\n"
-"to write multi-tape Volumes.!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:2713
-#, c-format
-msgid "Last block at: %u:%u this_dev_block_num=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2727
-#, c-format
-msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:2731
-msgid "Block not written"
-msgstr ""
-
-#: 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:2797
-msgid "Test writing blocks of 64512 bytes to tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:2799
-msgid "How many blocks do you want to write? (1000): "
-msgstr ""
-
-#: src/stored/btape.c:2816
-#, c-format
-msgid "Begin writing %d Bacula blocks to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2859
-#, c-format
-msgid "Begin writing raw blocks of %u bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:2890
-msgid "test autochanger"
-msgstr ""
-
-#: src/stored/btape.c:2891
-msgid "backspace file"
-msgstr ""
-
-#: src/stored/btape.c:2892
-msgid "backspace record"
-msgstr ""
-
-#: src/stored/btape.c:2893
-msgid "list device capabilities"
-msgstr ""
-
-#: src/stored/btape.c:2894
-msgid "clear tape errors"
-msgstr ""
-
-#: src/stored/btape.c:2895
-msgid "go to end of Bacula data for append"
-msgstr ""
-
-#: src/stored/btape.c:2896
-msgid "go to the physical end of medium"
-msgstr ""
-
-#: src/stored/btape.c:2897
-msgid "fill tape, write onto second volume"
-msgstr ""
-
-#: src/stored/btape.c:2898
-msgid "read filled tape"
-msgstr ""
-
-#: src/stored/btape.c:2899
-msgid "forward space a file"
-msgstr ""
-
-#: src/stored/btape.c:2900
-msgid "forward space a record"
-msgstr ""
-
-#: src/stored/btape.c:2901
-msgid "print this command"
-msgstr ""
-
-#: src/stored/btape.c:2902
-msgid "write a Bacula label to the tape"
-msgstr ""
-
-#: src/stored/btape.c:2903
-msgid "load a tape"
-msgstr ""
-
-#: src/stored/btape.c:2904
-msgid "quit btape"
-msgstr ""
-
-#: src/stored/btape.c:2905
-msgid "use write() to fill tape"
-msgstr ""
-
-#: src/stored/btape.c:2906
-msgid "read and print the Bacula tape label"
-msgstr ""
-
-#: src/stored/btape.c:2907
-msgid "test record handling functions"
-msgstr ""
-
-#: src/stored/btape.c:2908
-msgid "rewind the tape"
-msgstr ""
-
-#: src/stored/btape.c:2909
-msgid "read() tape block by block to EOT and report"
-msgstr ""
-
-#: src/stored/btape.c:2910
-msgid "Bacula read block by block to EOT and report"
-msgstr ""
-
-#: 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:2912
-msgid "print tape status"
-msgstr ""
-
-#: src/stored/btape.c:2913
-msgid "General test Bacula tape functions"
-msgstr ""
-
-#: src/stored/btape.c:2914
-msgid "write an EOF on the tape"
-msgstr ""
-
-#: src/stored/btape.c:2915
-msgid "write a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2916
-msgid "read a single record"
-msgstr ""
-
-#: src/stored/btape.c:2917
-msgid "read a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2918
-msgid "quick fill command"
-msgstr ""
-
-#: src/stored/btape.c:2939
-#, c-format
-msgid "\"%s\" is an invalid command\n"
-msgstr ""
-
-#: src/stored/btape.c:2948
-#, c-format
-msgid "Interactive commands:\n"
-msgstr ""
-
-#: src/stored/btape.c:2959
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap 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"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"       -c <file>   setze Konfigurationsdatei auf Datei\n"
-"       -dnn        setze debug level auf nn\n"
-"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
-"       -g          groupid\n"
-"       -r <job>    starte <job> jetzt\n"
-"       -s          no signals\n"
-"       -t          test - Konfiguration Lesen und beenden\n"
-"       -u          userid\n"
-"       -v          ausf�hrliche Benutzer Meldungen\n"
-"       -?          diese Meldung ausgeben.\n"
-"\n"
-
-#: src/stored/btape.c:3047
-#, c-format
-msgid "Mount second Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3075
-#, c-format
-msgid "Mount blank Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3095
-#, c-format
-msgid "End of Volume \"%s\" %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:3109
-#, c-format
-msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:61
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
-msgstr ""
-
-#: src/stored/authenticate.c:67 src/filed/authenticate.c:76
-#, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:78 src/filed/authenticate.c:88
-#, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:92
-#, fuzzy, c-format
-msgid ""
-"Connection from unknown Director %s at %s rejected.\n"
-"Please see "
-msgstr "unbekannt"
-
-#: src/stored/authenticate.c:129
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:137 src/stored/authenticate.c:248
-#: src/filed/authenticate.c:151 src/filed/authenticate.c:270
-msgid ""
-"Authorization problem: Remote server did not advertize required TLS "
-"support.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:155
-#, fuzzy, c-format
-msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
-msgstr "TLS Aushandlung fehlgeschlagen mit SD an \"%s:%d\"\n"
-
-#: src/stored/authenticate.c:191
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:239 src/stored/authenticate.c:279
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:266
-#, fuzzy, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
-msgstr "TLS Aushandlung fehlgeschlagen mit FD an \"%s:%d\".\n"
-
-#: src/stored/wait.c:133
-#, c-format
-msgid "pthread timedwait error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/wait.c:239
-#, fuzzy, c-format
-msgid "JobId=%s, Job %s waiting to reserve a device.\n"
-msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
-
-#: 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:115
-#, c-format
-msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
-msgstr ""
-
-#: src/stored/block.c:171
-#, c-format
-msgid "%d block read errors not printed.\n"
-msgstr ""
-
-#: 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: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: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:452
-#, c-format
-msgid "Cannot write block. Device at EOM. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:458
-#, c-format
-msgid "Attempt to write on read-only Volume. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:464
-#, c-format
-msgid "Attempt to write on closed device=%s\n"
-msgstr ""
-
-#: src/stored/block.c:513
-#, c-format
-msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
-msgstr ""
-
-#: src/stored/block.c:528
-#, c-format
-msgid "Unable to write EOF. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:554 src/stored/block.c:588
-msgid "Write block header zeroed.\n"
-msgstr ""
-
-#: 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: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:695 src/stored/block.c:701
-#, c-format
-msgid "Backspace file at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:708
-#, c-format
-msgid "Backspace record at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:725
-#, c-format
-msgid "Re-read last block at EOT failed. ERR=%s"
-msgstr ""
-
-#: 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: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:744
-msgid "Re-read of last block succeeded.\n"
-msgstr ""
-
-#: 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:791
-#, c-format
-msgid ""
-"Error writing final part to DVD. This Volume may not be readable.\n"
-"%s"
-msgstr ""
-
-#: 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:904
-#, c-format
-msgid "Unable to open device next part %s: ERR=%s\n"
-msgstr ""
-
-#: 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: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: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:1017
-#, c-format
-msgid "Unable to open device part=%d %s: ERR=%s\n"
-msgstr ""
-
-#: 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:1057
-#, c-format
-msgid "Read zero bytes at %u:%u on device %s.\n"
-msgstr ""
-
-#: 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:1107
-#, c-format
-msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
-msgstr ""
-
-#: src/stored/block.c:1127
-#, c-format
-msgid "Setting block buffer size to %u bytes.\n"
-msgstr ""
-
-#: 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: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:134
-#, c-format
-msgid "Failed to find any plugins in %s\n"
-msgstr ""
-
-#: 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:179
-#, c-format
-msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:188
-#, c-format
-msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:116
-msgid "Could not initialize Python\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:121
-#, c-format
-msgid "Could not Run Python string %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:133
-msgid "Could not initialize Python Job type.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:138
-#, c-format
-msgid "Could not import Python script %s/%s. Python disabled.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:240
-msgid "Could not create Python Job Object.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:253 src/lib/pythonlib.c:277
-#, c-format
-msgid "Python function \"%s\" not found.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:292
-#, c-format
-msgid "Unknown Python daemon event %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:317
-#, c-format
-msgid "Unable to initialize the Python lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:96
-#, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:193
-msgid "BUG! register_watchdog called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:196
-#, c-format
-msgid "BUG! Watchdog %p has NULL callback\n"
-msgstr ""
-
-#: src/lib/watchdog.c:199
-#, c-format
-msgid "BUG! Watchdog %p has zero interval\n"
-msgstr ""
-
-#: src/lib/watchdog.c:219
-msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:339
-#, c-format
-msgid "rwl_writelock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:354
-#, c-format
-msgid "rwl_writeunlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/attr.c:81
-#, c-format
-msgid "Error scanning attributes: %s\n"
-msgstr ""
-
-#: src/lib/smartall.c:145 src/lib/smartall.c:256 src/lib/smartall.c:271
-msgid "Out of memory\n"
-msgstr ""
-
-#: src/lib/smartall.c:150
-msgid "Too much memory used."
-msgstr ""
-
-#: src/lib/smartall.c:180
-#, c-format
-msgid "Attempt to free NULL called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:194
-#, c-format
-msgid "double free from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:202
-#, c-format
-msgid "qp->qnext->qprev != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:206
-#, c-format
-msgid "qp->qprev->qnext != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:215
-#, c-format
-msgid "Overrun buffer: len=%d addr=%p allocated: %s:%d called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:293
-#, c-format
-msgid "sm_realloc size: %d\n"
-msgstr ""
-
-#: src/lib/smartall.c:331
-#, c-format
-msgid "sm_realloc %d at %p from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:391
-#, c-format
-msgid ""
-"\n"
-"Orphaned buffers exist.  Dump terminated following\n"
-"  discovery of bad links in chain of orphaned buffers.\n"
-"  Buffer address with bad links: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:436
-#, c-format
-msgid "Damaged buffer found. Called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:469
-#, c-format
-msgid ""
-"\n"
-"Damaged buffers found at %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:472
-msgid "  discovery of bad prev link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:475
-msgid "  discovery of bad next link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:478
-msgid "  discovery of data overrun.\n"
-msgstr ""
-
-#: src/lib/smartall.c:481
-msgid "  NULL pointer.\n"
-msgstr ""
-
-#: src/lib/smartall.c:487
-#, c-format
-msgid "  Buffer address: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:494
-#, c-format
-msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
-msgstr ""
-
-#: 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: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: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: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: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:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
-msgid "Try write lock"
-msgstr ""
-
-#: 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:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
-msgid "Create thread"
-msgstr ""
-
-#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
-msgid "Join thread"
-msgstr ""
-
-#: 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:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
-#, c-format
-msgid "data %02d: value %d, %d updates\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:97
-msgid "Status OK\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:101
-#, fuzzy, c-format
-msgid "bget_msg: unknown signal %d\n"
-msgstr "unbekannt"
-
-#: 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: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:207
-#, fuzzy, c-format
-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: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: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: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:292
-#, c-format
-msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
-msgstr ""
-
-#: 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:374
-#, c-format
-msgid "Socket has errors=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:381
-#, c-format
-msgid "Socket is terminated=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: 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: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:433
-#, c-format
-msgid "Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"
-msgstr ""
-
-#: 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:542
-#, c-format
-msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
-msgstr ""
-
-#: 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:663
-#, fuzzy
-msgid "fread attr spool I/O error.\n"
-msgstr "Regex �bersetzungsfehler. ERR=%s\n"
-
-#: src/lib/bsock.c:724
-msgid "Could not malloc BSOCK data buffer\n"
-msgstr ""
-
-#: src/lib/bsock.c:742 src/lib/bsock.c:761
-#, c-format
-msgid "sockopt error: %s\n"
-msgstr ""
-
-#: 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: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: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: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:1039 src/qt-console/bcomm/dircomm_auth.cpp:119
-#, fuzzy, c-format
-msgid ""
-"Authorization problem: Remote server at \"%s:%d\" did not advertise required "
-"TLS support.\n"
-msgstr ""
-"Authorisationsproblem: Entfernter Server hat ben�tigte TLS Unterst�tzung "
-"nicht angeboten.\n"
-
-#: 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: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: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: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:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
-#, fuzzy, c-format
-msgid ""
-"Authorization problem with Director at \"%s:%d\"\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-"Kann mit  File daemon on \"%s:%d\" nicht authentisieren. M�gliche Ursachen:\n"
-"Passworte oder Namen nicht gleich oder\n"
-"Maximum Concurrent Jobs �berschritten auf dem FD oder\n"
-"FD Netzwerk durcheinander (Daemon neustarten).\n"
-"F�r Hilfe bitte unter http://www.bacula.org/rel-manual/faq."
-"html#AuthorizationErrors nachsehen.\n"
-
-#: 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:377
-#, c-format
-msgid "Could not get con mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:482
-msgid "Bacula Message"
-msgstr ""
-
-#: src/lib/message.c:486
-#, c-format
-msgid "open mail pipe %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:577
-msgid "open mail pipe failed.\n"
-msgstr ""
-
-#: src/lib/message.c:590
-#, c-format
-msgid "close error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:601
-#, c-format
-msgid "Mail prog: %s"
-msgstr ""
-
-#: src/lib/message.c:610
-#, c-format
-msgid ""
-"Mail program terminated in error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:713
-#, c-format
-msgid "fopen %s failed: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: 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:1230
-#, c-format
-msgid "%s: ABORTING due to ERROR in %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1234
-#, c-format
-msgid "%s: ERROR TERMINATION at %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1239
-#, c-format
-msgid "%s: Fatal Error because: "
-msgstr ""
-
-#: src/lib/message.c:1241
-#, c-format
-msgid "%s: Fatal Error at %s:%d because:\n"
-msgstr ""
-
-#: src/lib/message.c:1245
-#, c-format
-msgid "%s: ERROR: "
-msgstr ""
-
-#: src/lib/message.c:1247
-#, c-format
-msgid "%s: ERROR in %s:%d "
-msgstr ""
-
-#: src/lib/message.c:1250
-#, c-format
-msgid "%s: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1253
-#, c-format
-msgid "%s: Security violation: "
-msgstr ""
-
-#: src/lib/message.c:1341
-#, c-format
-msgid "%s ABORTING due to ERROR\n"
-msgstr ""
-
-#: src/lib/message.c:1344
-#, c-format
-msgid "%s ERROR TERMINATION\n"
-msgstr ""
-
-#: src/lib/message.c:1347
-#, c-format
-msgid "%s JobId %u: Fatal error: "
-msgstr ""
-
-#: src/lib/message.c:1356
-#, c-format
-msgid "%s JobId %u: Error: "
-msgstr ""
-
-#: src/lib/message.c:1362
-#, c-format
-msgid "%s JobId %u: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1368
-#, c-format
-msgid "%s JobId %u: Security violation: "
-msgstr ""
-
-#: 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:138
-#, c-format
-msgid "Cannot set SO_REUSEADDR on socket: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:147
-#, c-format
-msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:152
-#, c-format
-msgid "Cannot bind port %d: ERR=%s.\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:163
-#, c-format
-msgid "Could not init client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:182
-#, c-format
-msgid "Error in select: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:203
-#, c-format
-msgid "Connection from %s:%d refused by hosts.access\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:229
-msgid "Could not create client BSOCK.\n"
-msgstr ""
-
-#: 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:253
-#, c-format
-msgid "Could not destroy client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bpipe.c:361 src/lib/bpipe.c:444
-msgid "Program killed by Bacula (timeout)\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:65
-#, c-format
-msgid "ASSERT failed at %s:%i: %s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:70
-#, c-format
-msgid "ASSERT failed at %s:%i: %s \n"
-msgstr ""
-
-#: src/lib/lockmgr.c:100
-#, fuzzy, c-format
-msgid "Mutex lock failure. ERR=%s\n"
-msgstr "pthread_cond_wait: ERR=%s\n"
-
-#: src/lib/lockmgr.c:110
-#, fuzzy, c-format
-msgid "Mutex unlock failure. ERR=%s\n"
-msgstr "pthread_cond_wait: ERR=%s\n"
-
-#: src/lib/lockmgr.c:275 src/lib/lockmgr.c:611 src/lib/lockmgr.c:639
-#: src/lib/jcr.c:321
-#, fuzzy, c-format
-msgid "pthread key create failed: ERR=%s\n"
-msgstr "pthread_create: ERR=%s\n"
-
-#: src/lib/lockmgr.c:623
-#, fuzzy, c-format
-msgid "pthread_create failed: ERR=%s\n"
-msgstr "pthread_create: ERR=%s\n"
-
-#: src/lib/crypto.c:442
-msgid "Unable to open certificate file"
-msgstr ""
-
-#: src/lib/crypto.c:449
-msgid "Unable to read certificate from file"
-msgstr ""
-
-#: src/lib/crypto.c:455
-msgid "Unable to extract public key from certificate"
-msgstr ""
-
-#: src/lib/crypto.c:462
-msgid ""
-"Provided certificate does not include the required subjectKeyIdentifier "
-"extension."
-msgstr ""
-
-#: src/lib/crypto.c:469
-#, c-format
-msgid "Unsupported key type provided: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:506 src/lib/crypto.c:554
-msgid "Unable to open private key file"
-msgstr ""
-
-#: src/lib/crypto.c:536 src/lib/crypto.c:570
-msgid "Unable to read private key from file"
-msgstr ""
-
-#: src/lib/crypto.c:629
-#, c-format
-msgid "Unsupported digest type: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:643
-msgid "OpenSSL digest initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:657
-msgid "OpenSSL digest update failed"
-msgstr ""
-
-#: src/lib/crypto.c:675
-msgid "OpenSSL digest finalize failed"
-msgstr ""
-
-#: src/lib/crypto.c:773
-msgid "OpenSSL digest_new failed"
-msgstr ""
-
-#: src/lib/crypto.c:779
-msgid "OpenSSL sign get digest failed"
-msgstr ""
-
-#: src/lib/crypto.c:818 src/lib/crypto.c:822
-msgid "OpenSSL digest Verify final failed"
-msgstr ""
-
-#: src/lib/crypto.c:827
-#, fuzzy
-msgid "No signers found for crypto verify.\n"
-msgstr "Keine %ss zum Migrieren gefunden.\n"
-
-#: src/lib/crypto.c:888
-msgid "Signature creation failed"
-msgstr ""
-
-#: src/lib/crypto.c:966
-msgid "Signature decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1043
-msgid "Unsupported cipher type specified\n"
-msgstr ""
-
-#: src/lib/crypto.c:1192
-msgid "CryptoData decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1236
-msgid "Failure decrypting the session key"
-msgstr ""
-
-#: src/lib/crypto.c:1287
-#, c-format
-msgid "Unsupported contentEncryptionAlgorithm: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1297 src/lib/crypto.c:1303
-msgid "OpenSSL cipher context initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1310
-msgid "Encryption session provided an invalid symmetric key"
-msgstr ""
-
-#: src/lib/crypto.c:1316
-msgid "Encryption session provided an invalid IV"
-msgstr ""
-
-#: src/lib/crypto.c:1322
-msgid "OpenSSL cipher context key/IV initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1392
-#, c-format
-msgid "Unable to init OpenSSL threading: ERR=%s\n"
-msgstr ""
-
-#: src/lib/crypto.c:1405
-msgid "Failed to seed OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1431
-msgid "Failed to save OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1492
-#, c-format
-msgid "Unsupported digest type=%d specified\n"
-msgstr ""
-
-#: src/lib/crypto.c:1512
-#, c-format
-msgid "SHA1Update() returned an error: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1655
-#, fuzzy
-msgid "No error"
-msgstr "unbekannt"
-
-#: src/lib/crypto.c:1657
-#, fuzzy
-msgid "Signer not found"
-msgstr "FileSet MD5 Pr�fsumme nicht gefunden.\n"
-
-#: src/lib/crypto.c:1659
-msgid "Recipient not found"
-msgstr ""
-
-#: src/lib/crypto.c:1661
-msgid "Unsupported digest algorithm"
-msgstr ""
-
-#: src/lib/crypto.c:1663
-msgid "Unsupported encryption algorithm"
-msgstr ""
-
-#: src/lib/crypto.c:1665
-msgid "Signature is invalid"
-msgstr ""
-
-#: src/lib/crypto.c:1667
-msgid "Decryption error"
-msgstr ""
-
-#: src/lib/crypto.c:1670
-msgid "Internal error"
-msgstr ""
-
-#: src/lib/crypto.c:1672
-#, fuzzy
-msgid "Unknown error"
-msgstr "unbekannt"
-
-#: src/lib/cram-md5.c:109 src/lib/cram-md5.c:137
-msgid "1999 Authorization failed.\n"
-msgstr ""
-
-#: src/lib/priv.c:68
-#, c-format
-msgid "Could not find userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:74
-#, c-format
-msgid "Could not find password entry. ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:87
-#, c-format
-msgid "Could not find group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:95
-#, c-format
-msgid "Could not initgroups for group=%s, userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:98
-#, c-format
-msgid "Could not initgroups for userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:105
-#, c-format
-msgid "Could not set group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:115
-#, fuzzy, c-format
-msgid "prctl failed: ERR=%s\n"
-msgstr "pthread_create: ERR=%s\n"
-
-#: src/lib/priv.c:119
-#, fuzzy, c-format
-msgid "setreuid failed: ERR=%s\n"
-msgstr "Abfrage gescheitert: %s: ERR=%s\n"
-
-#: src/lib/priv.c:123
-#, fuzzy, c-format
-msgid "cap_from_text failed: ERR=%s\n"
-msgstr "pthread_create: ERR=%s\n"
-
-#: src/lib/priv.c:127
-#, fuzzy, c-format
-msgid "cap_set_proc failed: ERR=%s\n"
-msgstr "Media id select fehlgeschlagen: ERR=%s\n"
-
-#: src/lib/priv.c:131
-msgid "Keep readall caps not implemented this OS or missing libraries.\n"
-msgstr ""
-
-#: src/lib/priv.c:135
-#, c-format
-msgid "Could not set specified userid: %s\n"
-msgstr ""
-
-#: src/lib/openssl.c:143 src/lib/openssl.c:214
-#, c-format
-msgid "Unable to destroy mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/util.c:183
-msgid "Running"
-msgstr ""
-
-#: src/lib/util.c:186
-msgid "Blocked"
-msgstr ""
-
-#: src/lib/util.c:192
-msgid "Error: incomplete job"
-msgstr ""
-
-#: src/lib/util.c:199
-msgid "Non-fatal error"
-msgstr ""
-
-#: src/lib/util.c:205 src/lib/util.c:337
-msgid "Canceled"
-msgstr ""
-
-#: src/lib/util.c:208
-msgid "Verify differences"
-msgstr ""
-
-#: src/lib/util.c:211
-msgid "Waiting on FD"
-msgstr ""
-
-#: src/lib/util.c:214
-msgid "Wait on SD"
-msgstr ""
-
-#: src/lib/util.c:217
-msgid "Wait for new Volume"
-msgstr ""
-
-#: src/lib/util.c:220
-msgid "Waiting for mount"
-msgstr ""
-
-#: src/lib/util.c:223
-msgid "Waiting for Storage resource"
-msgstr ""
-
-#: src/lib/util.c:226
-msgid "Waiting for Job resource"
-msgstr ""
-
-#: src/lib/util.c:229
-msgid "Waiting for Client resource"
-msgstr ""
-
-#: src/lib/util.c:232
-msgid "Waiting on Max Jobs"
-msgstr ""
-
-#: src/lib/util.c:235
-msgid "Waiting for Start Time"
-msgstr ""
-
-#: src/lib/util.c:238
-msgid "Waiting on Priority"
-msgstr ""
-
-#: src/lib/util.c:257
-#, c-format
-msgid "Unknown Job termination status=%d"
-msgstr ""
-
-#: src/lib/util.c:273
-msgid "Completed successfully"
-msgstr ""
-
-#: src/lib/util.c:276
-#, fuzzy
-msgid "Completed with warnings"
-msgstr "%s OK -- mit Warnungen"
-
-#: src/lib/util.c:279
-msgid "Terminated with errors"
-msgstr ""
-
-#: src/lib/util.c:282
-#, fuzzy
-msgid "Fatal error"
-msgstr "unbekannt"
-
-#: src/lib/util.c:285
-msgid "Created, not yet running"
-msgstr ""
-
-#: src/lib/util.c:288
-msgid "Canceled by user"
-msgstr ""
-
-#: src/lib/util.c:291
-msgid "Verify found differences"
-msgstr ""
-
-#: src/lib/util.c:294
-#, fuzzy
-msgid "Waiting for File daemon"
-msgstr "File daemon"
-
-#: src/lib/util.c:297
-#, fuzzy
-msgid "Waiting for Storage daemon"
-msgstr "Storage daemon"
-
-#: src/lib/util.c:300
-msgid "Waiting for higher priority jobs"
-msgstr ""
-
-#: src/lib/util.c:303
-msgid "Batch inserting file records"
-msgstr ""
-
-#: src/lib/util.c:334
-msgid "Fatal Error"
-msgstr ""
-
-#: src/lib/util.c:340
-msgid "Differences"
-msgstr ""
-
-#: src/lib/util.c:343
-msgid "Unknown term code"
-msgstr ""
-
-#: src/lib/util.c:359 src/lib/jcr.c:232
-msgid "Backup"
-msgstr ""
-
-#: src/lib/util.c:362
-#, fuzzy
-msgid "Migrated Job"
-msgstr "Konnte Migrationsjob nicht starten.\n"
-
-#: src/lib/util.c:365
-msgid "Verify"
-msgstr ""
-
-#: src/lib/util.c:368 src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:2000
-msgid "Restore"
-msgstr ""
-
-#: src/lib/util.c:371 src/wx-console/wxbmainframe.cpp:276
-msgid "Console"
-msgstr ""
-
-#: src/lib/util.c:374
-msgid "System or Console"
-msgstr ""
-
-#: src/lib/util.c:377
-msgid "Admin"
-msgstr ""
-
-#: src/lib/util.c:380 src/lib/util.c:470
-msgid "Archive"
-msgstr ""
-
-#: src/lib/util.c:383
-msgid "Job Copy"
-msgstr ""
-
-#: src/lib/util.c:386
-msgid "Copy"
-msgstr ""
-
-#: src/lib/util.c:389
-msgid "Migrate"
-msgstr ""
-
-#: src/lib/util.c:392
-msgid "Scan"
-msgstr ""
-
-#: src/lib/util.c:396
-msgid "Unknown Type"
-msgstr ""
-
-#: src/lib/util.c:406
-msgid "Truncate"
-msgstr ""
-
-#: src/lib/util.c:409 src/filed/restore.c:1164
-msgid "None"
-msgstr ""
-
-#: src/lib/util.c:441
-msgid "Verify Init Catalog"
-msgstr ""
-
-#: src/lib/util.c:450
-msgid "Verify Data"
-msgstr ""
-
-#: src/lib/util.c:453
-msgid "Virtual Full"
-msgstr ""
-
-#: src/lib/util.c:469
-msgid "Append"
-msgstr ""
-
-#: src/lib/util.c:471
-#, fuzzy
-msgid "Disabled"
-msgstr "ist nicht aktiviert"
-
-#: src/lib/util.c:473
-msgid "Used"
-msgstr ""
-
-#: src/lib/util.c:474
-msgid "Cleaning"
-msgstr ""
-
-#: src/lib/util.c:475
-msgid "Purged"
-msgstr ""
-
-#: src/lib/util.c:476
-msgid "Recycle"
-msgstr ""
-
-#: src/lib/util.c:477
-msgid "Read-Only"
-msgstr ""
-
-#: src/lib/util.c:489
-msgid "Invalid volume status"
-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:1180
-msgid "*none*"
-msgstr ""
-
-#: src/lib/util.c:867
-msgid "Working directory not defined. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:870
-#, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:874
-#, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:330 src/lib/devlock.c:330
-msgid "writeunlock called too many times.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:335 src/lib/devlock.c:335
-msgid "writeunlock by non-owner.\n"
-msgstr ""
-
-#: 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"
-
-#: src/lib/tls.c:90
-#, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
-msgstr ""
-
-#: src/lib/tls.c:127
-msgid "Error initializing SSL context"
-msgstr ""
-
-#: src/lib/tls.c:148
-msgid "Error loading certificate verification stores"
-msgstr ""
-
-#: src/lib/tls.c:153
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
-msgstr ""
-
-#: src/lib/tls.c:164
-msgid "Error loading certificate file"
-msgstr ""
-
-#: src/lib/tls.c:172
-msgid "Error loading private key"
-msgstr ""
-
-#: src/lib/tls.c:180
-msgid "Unable to open DH parameters file"
-msgstr ""
-
-#: src/lib/tls.c:186
-msgid "Unable to load DH parameters from specified file"
-msgstr ""
-
-#: src/lib/tls.c:190
-msgid "Failed to set TLS Diffie-Hellman parameters"
-msgstr ""
-
-#: src/lib/tls.c:200
-msgid "Error setting cipher list, no valid ciphers available\n"
-msgstr ""
-
-#: src/lib/tls.c:259
-msgid "Peer failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:304
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:416
-msgid "Error creating file descriptor-based BIO"
-msgstr ""
-
-#: src/lib/tls.c:427
-msgid "Error creating new SSL object"
-msgstr ""
-
-#: src/lib/tls.c:491 src/lib/tls.c:514
-msgid "Connect failure"
-msgstr ""
-
-#: src/lib/tls.c:594 src/lib/tls.c:598
-msgid "TLS shutdown failure."
-msgstr ""
-
-#: src/lib/tls.c:653 src/lib/tls.c:679
-msgid "TLS read/write failure."
-msgstr ""
-
-#: src/lib/jcr.c:234
-msgid "Verifying"
-msgstr ""
-
-#: src/lib/jcr.c:236
-#, fuzzy
-msgid "Restoring"
-msgstr "Wiederherstellung l�uft..."
-
-#: src/lib/jcr.c:238
-msgid "Archiving"
-msgstr ""
-
-#: src/lib/jcr.c:240
-msgid "Copying"
-msgstr ""
-
-#: src/lib/jcr.c:242
-msgid "Migration"
-msgstr ""
-
-#: src/lib/jcr.c:244
-msgid "Scanning"
-msgstr ""
-
-#: src/lib/jcr.c:246
-#, fuzzy
-msgid "Unknown operation"
-msgstr "unbekannt"
-
-#: src/lib/jcr.c:255
-#, fuzzy
-msgid "backup"
-msgstr "Sicherung OK"
-
-#: src/lib/jcr.c:257
-msgid "verified"
-msgstr ""
-
-#: src/lib/jcr.c:257
-msgid "verify"
-msgstr ""
-
-#: src/lib/jcr.c:259
-#, fuzzy
-msgid "restored"
-msgstr "Job Ressource"
-
-#: src/lib/jcr.c:259
-#, fuzzy
-msgid "restore"
-msgstr "Job Ressource"
-
-#: src/lib/jcr.c:261
-msgid "archived"
-msgstr ""
-
-#: src/lib/jcr.c:261
-msgid "archive"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copied"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copy"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrated"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrate"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scanned"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scan"
-msgstr ""
-
-#: src/lib/jcr.c:269
-#, fuzzy
-msgid "unknown action"
-msgstr "unbekannt"
-
-#: src/lib/jcr.c:343
-#, fuzzy, c-format
-msgid "pthread_once failed. ERR=%s\n"
-msgstr "pthread_cond_wait: ERR=%s\n"
-
-#: src/lib/jcr.c:350
-#, fuzzy, c-format
-msgid "Could not init msg_queue mutex. ERR=%s\n"
-msgstr "Konnte job queue nicht initialiseren: ERR=%s\n"
-
-#: src/lib/jcr.c:403
-msgid "NULL jcr.\n"
-msgstr ""
-
-#: src/lib/jcr.c:509
-#, c-format
-msgid "JCR use_count=%d JobId=%d\n"
-msgstr ""
-
-#: src/lib/jcr.c:619
-#, fuzzy, c-format
-msgid "pthread_setspecific failed: ERR=%s\n"
-msgstr "Media id select fehlgeschlagen: ERR=%s\n"
-
-#: 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:1115
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
-msgstr ""
-
-#: src/lib/jcr.c:1127
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading Director.\n"
-msgstr ""
-
-#: src/lib/res.c:65
-#, c-format
-msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
-msgstr ""
-
-#: src/lib/res.c:75
-#, c-format
-msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:177
-msgid "***UNKNOWN***"
-msgstr ""
-
-#: src/lib/parse_conf.c:278 src/lib/parse_conf.c:299
-#, c-format
-msgid "expected an =, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:308
-#, c-format
-msgid "Unknown item code: %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:348
-#, c-format
-msgid "message type: %s not found"
-msgstr ""
-
-#: src/lib/parse_conf.c:386
-#, c-format
-msgid "Attempt to redefine name \"%s\" to \"%s\"."
-msgstr ""
-
-#: src/lib/parse_conf.c:483
-#, c-format
-msgid "Attempt to redefine resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:519
-#, c-format
-msgid "Too many %s directives. Max. is %d. line %d: %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:530
-#, c-format
-msgid "Could not find config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:593
-#, c-format
-msgid "Missing config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:665
-#, c-format
-msgid "expected a size number, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:670
-#, fuzzy, c-format
-msgid "expected a speed number, got: %s"
-msgstr "Dateiname erwartet, erhalten: %s"
-
-#: src/lib/parse_conf.c:681
-#, fuzzy, c-format
-msgid "expected a %s, got: %s"
-msgstr "Erwartete ein \"ist gleich\", erhalten: %s"
-
-#: src/lib/parse_conf.c:682
-msgid "size"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "speed"
-msgstr ""
-
-#: src/lib/parse_conf.c:803
-#, c-format
-msgid "Expected a Tape Label keyword, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:886
-#, c-format
-msgid "Unable to initialize resource lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:894
-msgid "Config filename too long.\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:917
-#, c-format
-msgid "Cannot open config file \"%s\": %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:934
-msgid ""
-"Currently we cannot handle UTF-16 source files. Please convert the conf file "
-"to UTF-8\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:938
-#, c-format
-msgid "Expected a Resource name identifier, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:954
-#, c-format
-msgid "expected resource name, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:965
-#, c-format
-msgid "not in resource definition: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:990
-#, c-format
-msgid ""
-"Keyword \"%s\" not permitted in this resource.\n"
-"Perhaps you left the trailing brace off of the previous resource."
-msgstr ""
-
-#: src/lib/parse_conf.c:1001
-msgid "Name not specified for resource"
-msgstr ""
-
-#: src/lib/parse_conf.c:1011
-#, c-format
-msgid "unexpected token %d %s in resource definition"
-msgstr ""
-
-#: src/lib/parse_conf.c:1017
-#, c-format
-msgid "Unknown parser state %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:1022
-msgid "End of conf file reached with unclosed resource."
-msgstr ""
-
-#: src/lib/mem_pool.c:112
-#, c-format
-msgid "MemPool index %d larger than max %d\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:130 src/lib/mem_pool.c:150 src/lib/mem_pool.c:186
-#: src/lib/mem_pool.c:257 src/lib/mem_pool.c:277 src/lib/mem_pool.c:312
-#: src/lib/mem_pool.c:623
-#, c-format
-msgid "Out of memory requesting %d bytes\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:167
-msgid "obuf is NULL\n"
-msgstr ""
-
-#: src/lib/berrno.c:63
-msgid "Child exited normally."
-msgstr ""
-
-#: src/lib/berrno.c:70
-msgid "Unknown error during program execvp"
-msgstr ""
-
-#: src/lib/berrno.c:73
-#, c-format
-msgid "Child exited with code %d"
-msgstr ""
-
-#: src/lib/berrno.c:81
-#, c-format
-msgid "Child died from signal %d: %s"
-msgstr ""
-
-#: src/lib/berrno.c:87
-msgid "Invalid errno. No error message possible."
-msgstr ""
-
-#: src/lib/bnet.c:134
-#, c-format
-msgid "Attr spool write error. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet.c:279 src/lib/bnet.c:320
-msgid "TLS connection initialization failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:287
-msgid "TLS Negotiation failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:293 src/lib/bnet.c:335
-msgid ""
-"TLS certificate verification failed. Peer certificate did not match a "
-"required commonName\n"
-msgstr ""
-
-#: src/lib/bnet.c:342
-#, c-format
-msgid ""
-"TLS host certificate verification failed. Host name \"%s\" did not match "
-"presented certificate\n"
-msgstr ""
-
-#: src/lib/bnet.c:359
-msgid "TLS enabled but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:365
-msgid "TLS enable but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:481
-msgid "No problem."
-msgstr ""
-
-#: src/lib/bnet.c:484
-msgid "Authoritative answer for host not found."
-msgstr ""
-
-#: src/lib/bnet.c:487
-msgid "Non-authoritative for host not found, or ServerFail."
-msgstr ""
-
-#: src/lib/bnet.c:490
-msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
-msgstr ""
-
-#: src/lib/bnet.c:493
-msgid "Valid name, no data record of resquested type."
-msgstr ""
-
-#: src/lib/bnet.c:496
-msgid "Unknown error."
-msgstr ""
-
-#: src/lib/bnet.c:755
-#, c-format
-msgid "Unknown sig %d"
-msgstr ""
-
-#: src/lib/signal.c:67
-msgid "Invalid signal number"
-msgstr ""
-
-#: 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:167
-#, c-format
-msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
-msgstr ""
-
-#: src/lib/signal.c:169
-#, c-format
-msgid "Kaboom! exepath=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:210
-#, c-format
-msgid "Fork error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:218
-#, c-format
-msgid "Calling: %s %s %s %s\n"
-msgstr ""
-
-#: src/lib/signal.c:222
-#, c-format
-msgid "execv: %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:244
-#, c-format
-msgid "It looks like the traceback worked...\n"
-msgstr ""
-
-#: 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:312
-msgid "UNKNOWN SIGNAL"
-msgstr ""
-
-#: src/lib/signal.c:313
-msgid "Hangup"
-msgstr ""
-
-#: src/lib/signal.c:314
-msgid "Interrupt"
-msgstr ""
-
-#: src/lib/signal.c:315
-msgid "Quit"
-msgstr ""
-
-#: src/lib/signal.c:316
-msgid "Illegal instruction"
-msgstr ""
-
-#: src/lib/signal.c:317
-msgid "Trace/Breakpoint trap"
-msgstr ""
-
-#: src/lib/signal.c:318
-msgid "Abort"
-msgstr ""
-
-#: src/lib/signal.c:320
-msgid "EMT instruction (Emulation Trap)"
-msgstr ""
-
-#: src/lib/signal.c:323
-msgid "IOT trap"
-msgstr ""
-
-#: src/lib/signal.c:325
-msgid "BUS error"
-msgstr ""
-
-#: src/lib/signal.c:326
-msgid "Floating-point exception"
-msgstr ""
-
-#: src/lib/signal.c:327
-msgid "Kill, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:328
-msgid "User-defined signal 1"
-msgstr ""
-
-#: src/lib/signal.c:329
-msgid "Segmentation violation"
-msgstr ""
-
-#: src/lib/signal.c:330
-msgid "User-defined signal 2"
-msgstr ""
-
-#: src/lib/signal.c:331
-msgid "Broken pipe"
-msgstr ""
-
-#: src/lib/signal.c:332
-msgid "Alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:333
-msgid "Termination"
-msgstr ""
-
-#: src/lib/signal.c:335
-msgid "Stack fault"
-msgstr ""
-
-#: src/lib/signal.c:337
-msgid "Child status has changed"
-msgstr ""
-
-#: src/lib/signal.c:338
-msgid "Continue"
-msgstr ""
-
-#: src/lib/signal.c:339
-msgid "Stop, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:340
-msgid "Keyboard stop"
-msgstr ""
-
-#: src/lib/signal.c:341
-msgid "Background read from tty"
-msgstr ""
-
-#: src/lib/signal.c:342
-msgid "Background write to tty"
-msgstr ""
-
-#: src/lib/signal.c:343
-msgid "Urgent condition on socket"
-msgstr ""
-
-#: src/lib/signal.c:344
-msgid "CPU limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:345
-msgid "File size limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:346
-msgid "Virtual alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:347
-msgid "Profiling alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:348
-msgid "Window size change"
-msgstr ""
-
-#: src/lib/signal.c:349
-msgid "I/O now possible"
-msgstr ""
-
-#: src/lib/signal.c:351
-msgid "Power failure restart"
-msgstr ""
-
-#: src/lib/signal.c:354
-msgid "No runnable lwp"
-msgstr ""
-
-#: src/lib/signal.c:357
-msgid "SIGLWP special signal used by thread library"
-msgstr ""
-
-#: src/lib/signal.c:360
-msgid "Checkpoint Freeze"
-msgstr ""
-
-#: src/lib/signal.c:363
-msgid "Checkpoint Thaw"
-msgstr ""
-
-#: src/lib/signal.c:366
-msgid "Thread Cancellation"
-msgstr ""
-
-#: 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: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:357
-msgid "Buffer overflow.\n"
-msgstr ""
-
-#: src/lib/bsys.c:423
-msgid "Bad errno"
-msgstr ""
-
-#: src/lib/bsys.c:438
-#, c-format
-msgid "Memset for %d bytes at %s:%d\n"
-msgstr ""
-
-#: src/lib/bsys.c:468
-#, c-format
-msgid "Cannot open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:483
-#, c-format
-msgid ""
-"%s is already running. pid=%d\n"
-"Check file %s\n"
-msgstr ""
-
-#: src/lib/bsys.c:497
-#, c-format
-msgid "Could not open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:608
-#, c-format
-msgid "Could not create state file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:627
-#, c-format
-msgid "Write final hdr error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:236
-#, c-format
-msgid "%s: run %s \"%s\"\n"
-msgstr ""
-
-#: src/lib/runscript.c:245
-#, c-format
-msgid "Runscript: %s could not execute. ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:254
-#, c-format
-msgid "%s: %s\n"
-msgstr ""
-
-#: src/lib/runscript.c:259
-#, c-format
-msgid "Runscript: %s returned non-zero status=%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lex.c:91 src/wx-console/console_thread.cpp:212
-#, c-format
-msgid "Problem probably begins at line %d.\n"
-msgstr ""
-
-#: src/lib/lex.c:96 src/wx-console/console_thread.cpp:217
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-
-#: src/lib/lex.c:100
-#, c-format
-msgid "Config error: %s\n"
-msgstr ""
-
-#: src/lib/lex.c:129
-msgid "Close of NULL file\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "Config token too long, file: %s, line %d, begins at line %d\n"
-msgstr ""
-
-#: src/lib/lex.c:292
-msgid "none"
-msgstr ""
-
-#: src/lib/lex.c:293
-msgid "comment"
-msgstr ""
-
-#: src/lib/lex.c:294
-msgid "number"
-msgstr ""
-
-#: src/lib/lex.c:295
-msgid "ip_addr"
-msgstr ""
-
-#: src/lib/lex.c:296
-msgid "identifier"
-msgstr ""
-
-#: src/lib/lex.c:297
-msgid "string"
-msgstr ""
-
-#: src/lib/lex.c:298
-msgid "quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:299
-msgid "include"
-msgstr ""
-
-#: src/lib/lex.c:300
-msgid "include_quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:301
-msgid "UTF-8 Byte Order Mark"
-msgstr ""
-
-#: src/lib/lex.c:302
-msgid "UTF-16le Byte Order Mark"
-msgstr ""
-
-#: 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: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:625 src/lib/lex.c:653
-#, c-format
-msgid "Cannot open included config file %s: %s\n"
-msgstr ""
-
-#: 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: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:783
-#, c-format
-msgid "expected a name, got %s: %s"
-msgstr ""
-
-#: src/lib/lex.c:787
-#, c-format
-msgid "name %s length %d too long, max is %d\n"
-msgstr ""
-
-#: src/lib/lex.c:795
-#, c-format
-msgid "expected a string, got %s: %s"
-msgstr ""
-
-#: src/lib/var.c:2669
-msgid "everything ok"
-msgstr ""
-
-#: src/lib/var.c:2670
-msgid "incomplete named character"
-msgstr ""
-
-#: src/lib/var.c:2671
-msgid "incomplete hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2672
-msgid "invalid hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2673
-msgid "octal value too large"
-msgstr ""
-
-#: src/lib/var.c:2674
-msgid "invalid octal value"
-msgstr ""
-
-#: src/lib/var.c:2675
-msgid "incomplete octal value"
-msgstr ""
-
-#: src/lib/var.c:2676
-msgid "incomplete grouped hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2677
-msgid "incorrect character class specification"
-msgstr ""
-
-#: src/lib/var.c:2678
-msgid "invalid expansion configuration"
-msgstr ""
-
-#: src/lib/var.c:2679
-msgid "out of memory"
-msgstr ""
-
-#: src/lib/var.c:2680
-msgid "incomplete variable specification"
-msgstr ""
-
-#: src/lib/var.c:2681
-msgid "undefined variable"
-msgstr ""
-
-#: src/lib/var.c:2682
-msgid "input is neither text nor variable"
-msgstr ""
-
-#: src/lib/var.c:2683
-#, fuzzy
-msgid "unknown command character in variable"
-msgstr "unbekannt"
-
-#: src/lib/var.c:2684
-msgid "malformatted search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2685
-#, fuzzy
-msgid "unknown flag in search and replace operation"
-msgstr "unbekannt"
-
-#: src/lib/var.c:2686
-msgid "invalid regex in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2687
-msgid "missing parameter in command"
-msgstr ""
-
-#: src/lib/var.c:2688
-msgid "empty search string in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2689
-msgid "start offset missing in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2690
-#, fuzzy
-msgid "offsets in cut operation delimited by unknown character"
-msgstr "unbekannt"
-
-#: src/lib/var.c:2691
-msgid "range out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2692
-msgid "offset out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2693
-msgid "logic error in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2694
-msgid "malformatted transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2695
-msgid "source and target class mismatch in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2696
-msgid "empty character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2697
-msgid "incorrect character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2698
-msgid "malformatted padding operation"
-msgstr ""
-
-#: src/lib/var.c:2699
-msgid "width parameter missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2700
-msgid "fill string missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2701
-#, fuzzy
-msgid "unknown quoted pair in search and replace operation"
-msgstr "unbekannt"
-
-#: src/lib/var.c:2702
-msgid "sub-matching reference out of range"
-msgstr ""
-
-#: src/lib/var.c:2703
-msgid "invalid argument"
-msgstr ""
-
-#: src/lib/var.c:2704
-msgid "incomplete quoted pair"
-msgstr ""
-
-#: src/lib/var.c:2705
-msgid "lookup function does not support variable arrays"
-msgstr ""
-
-#: src/lib/var.c:2706
-msgid "index of array variable contains an invalid character"
-msgstr ""
-
-#: src/lib/var.c:2707
-msgid "index of array variable is incomplete"
-msgstr ""
-
-#: src/lib/var.c:2708
-msgid "bracket expression in array variable's index not closed"
-msgstr ""
-
-#: src/lib/var.c:2709
-msgid "division by zero error in index specification"
-msgstr ""
-
-#: src/lib/var.c:2710
-msgid "unterminated loop construct"
-msgstr ""
-
-#: src/lib/var.c:2711
-msgid "invalid character in loop limits"
-msgstr ""
-
-#: src/lib/var.c:2712
-msgid "malformed operation argument list"
-msgstr ""
-
-#: src/lib/var.c:2713
-msgid "undefined operation"
-msgstr ""
-
-#: src/lib/var.c:2714
-msgid "formatting failure"
-msgstr ""
-
-#: src/lib/var.c:2723
-#, fuzzy
-msgid "unknown error"
-msgstr "unbekannt"
-
-#: src/lib/address_conf.c:62
-#, c-format
-msgid "Only ipv4 and ipv6 are supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:66
-#, c-format
-msgid "Only ipv4 is supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:175
-#, c-format
-msgid "It was tried to assign a ipv6 address to a ipv4(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:184
-#, c-format
-msgid "It was tried to assign a ipv4 address to a ipv6(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:263
-#, c-format
-msgid "Can't add default address (%s)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:292
-msgid "the old style addresses cannot be mixed with new style"
-msgstr ""
-
-#: src/lib/address_conf.c:313
-#, c-format
-msgid "can't resolve service(%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:322
-#, c-format
-msgid "can't resolve hostname(%s) %s"
-msgstr ""
-
-#: src/lib/address_conf.c:412 src/lib/address_conf.c:443
-#, c-format
-msgid "Expected a block begin { , got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:417
-msgid "Empty addr block is not allowed"
-msgstr ""
-
-#: src/lib/address_conf.c:421
-#, c-format
-msgid "Expected a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:430
-#, c-format
-msgid "Expected a string [ip|ipv4|ipv6], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:434
-#, c-format
-msgid "Expected a string [ip|ipv4], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:439 src/lib/address_conf.c:469
-#, c-format
-msgid "Expected a equal =, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:450 src/lib/address_conf.c:465
-#, c-format
-msgid "Expected a identifier [addr|port], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:455
-msgid "Only one port per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:461
-msgid "Only one addr per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:477
-#, c-format
-msgid "Expected a number or a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:483 src/lib/address_conf.c:516
-#, c-format
-msgid "Expected an IP number or a hostname, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:489
-msgid "State machine missmatch"
-msgstr ""
-
-#: src/lib/address_conf.c:495 src/lib/address_conf.c:507
-#, c-format
-msgid "Expected a end of block }, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:501
-#, c-format
-msgid "Can't add hostname(%s) and port(%s) to addrlist (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:521 src/lib/address_conf.c:535
-#, c-format
-msgid "can't add port (%s) to (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:530
-#, c-format
-msgid "Expected a port number or string, got: %s"
-msgstr ""
-
-#: src/lib/edit.c:478
-msgid "Empty name not allowed.\n"
-msgstr ""
-
-#: src/lib/edit.c:488
-#, c-format
-msgid "Illegal character \"%c\" in name.\n"
-msgstr ""
-
-#: src/lib/edit.c:495
-msgid "Name too long.\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:60
-#, fuzzy, c-format
-msgid "Cannot open current directory: ERR=%s\n"
-msgstr "Kann inkludierte Datei nicht �ffnen: %s. ERR=%s\n"
-
-#: src/findlib/savecwd.c:71
-#, fuzzy, c-format
-msgid "Cannot get current directory: ERR=%s\n"
-msgstr "kann Variable operate nicht setzen: ERR=%s\n"
-
-#: src/findlib/savecwd.c:95 src/findlib/savecwd.c:106
-#, fuzzy, c-format
-msgid "Cannot reset current directory: ERR=%s\n"
-msgstr "kann Variable operate nicht setzen: ERR=%s\n"
-
-#: src/findlib/mkpath.c:137
-#, c-format
-msgid "Cannot create directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:141 src/findlib/mkpath.c:202
-#, c-format
-msgid "%s exists but is not a directory.\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:164
-#, c-format
-msgid "Cannot change owner and/or group of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:169
-#, c-format
-msgid "Cannot change permissions of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:239
-#, c-format
-msgid "%c: is not a valid drive.\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:283
-msgid "Too many subdirectories. Some permissions not reset.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:483
-#, c-format
-msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:509 src/findlib/attribs.c:516
-#, c-format
-msgid "Unable to set file owner %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:522
-#, c-format
-msgid "Unable to set file modes %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:532
-#, c-format
-msgid "Unable to set file times %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:546
-#, c-format
-msgid "Unable to set file flags %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:799
-#, c-format
-msgid "Error in %s file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:816
-#, c-format
-msgid "Error in %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/enable_priv.c:92
-msgid "AdjustTokenPrivileges set "
-msgstr ""
-
-#: src/findlib/create_file.c:124
-#, c-format
-msgid "File skipped. Not newer: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:131
-#, c-format
-msgid "File skipped. Not older: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:141
-#, c-format
-msgid "File skipped. Already exists: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:167
-#, c-format
-msgid "File %s already exists and could not be replaced. ERR=%s.\n"
-msgstr ""
-
-#: src/findlib/create_file.c:218 src/findlib/create_file.c:282
-#: src/findlib/create_file.c:378
-#, c-format
-msgid "bpkt already open fid=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
-#, c-format
-msgid "Could not create %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:241
-#, c-format
-msgid "Cannot make fifo %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:259
-#, c-format
-msgid "Cannot make node %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:304
-#, c-format
-msgid "Could not symlink %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:329 src/findlib/create_file.c:342
-#, c-format
-msgid "Could not restore file flags for file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:333 src/findlib/create_file.c:350
-#, c-format
-msgid "Could not hard link %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:346
-#, c-format
-msgid "Could not reset file flags for file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:401
-#, c-format
-msgid "Original file %s have been deleted: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:413
-#, c-format
-msgid "Original file %s not saved: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:416
-#, c-format
-msgid "Unknown file type %d; not restored: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:460
-#, c-format
-msgid "Zero length filename: %s\n"
-msgstr ""
-
-#: src/findlib/bfile.c:97
-msgid "Unix attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:99
-msgid "File data"
-msgstr ""
-
-#: src/findlib/bfile.c:101
-msgid "MD5 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:103
-msgid "GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:105
-msgid "Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:107
-msgid "Extended attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:109
-msgid "Sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:111
-msgid "GZIP sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:113
-msgid "Compressed sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:115
-msgid "Program names"
-msgstr ""
-
-#: src/findlib/bfile.c:117
-msgid "Program data"
-msgstr ""
-
-#: src/findlib/bfile.c:119
-msgid "SHA1 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:121
-msgid "Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:123
-msgid "Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:125
-msgid "Win32 compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:127
-msgid "MacOS Fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:129
-msgid "HFS+ attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:131
-msgid "Standard Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:133
-msgid "Default Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:135
-msgid "SHA256 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:137
-msgid "SHA512 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:139
-msgid "Signed digest"
-msgstr ""
-
-#: src/findlib/bfile.c:141
-msgid "Encrypted File data"
-msgstr ""
-
-#: src/findlib/bfile.c:143
-msgid "Encrypted Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:145
-msgid "Encrypted session data"
-msgstr ""
-
-#: src/findlib/bfile.c:147
-msgid "Encrypted GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:149
-msgid "Encrypted compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:151
-msgid "Encrypted Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:153
-msgid "Encrypted Win32 Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:155
-msgid "Encrypted MacOS fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:157
-msgid "AIX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:159
-msgid "Darwin Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:161
-msgid "FreeBSD Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:163
-msgid "FreeBSD Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:165
-msgid "HPUX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:167
-msgid "Irix Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:169
-msgid "Irix Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:171
-msgid "Linux Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:173
-msgid "Linux Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:175
-msgid "TRU64 Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:177
-msgid "TRU64 Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:179
-msgid "Solaris Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:181
-msgid "Solaris Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:183
-msgid "AFS Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:185
-msgid "AIX Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:187
-msgid "AIX Specific NFSv4 ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:189
-msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:191
-msgid "GNU Hurd Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:193
-msgid "GNU Hurd Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:195
-msgid "GNU Hurd Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:197
-msgid "IRIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:199
-msgid "TRU64 Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:201
-msgid "AIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:203
-msgid "OpenBSD Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:205
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:207
-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: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:1460
-#, c-format
-msgid "Unknown include/exclude option: %c\n"
-msgstr ""
-
-#: src/findlib/find_one.c:227
-#, c-format
-msgid "     NODUMP flag set - will not process %s\n"
-msgstr ""
-
-#: 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:253
-#, c-format
-msgid "%s mtime changed during backup.\n"
-msgstr ""
-
-#: src/findlib/find_one.c:260
-#, c-format
-msgid "%s ctime changed during backup.\n"
-msgstr ""
-
-#: 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:403
-#, c-format
-msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
-msgstr ""
-
-#: src/findlib/find_one.c:418
-#, c-format
-msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
-msgstr ""
-
-#: src/cats/sql_create.c:101
-#, c-format
-msgid "Create DB Job record %s failed. ERR=%s\n"
-msgstr "Erzeugung von DB Job Eintrag %s fehlgeschlagen. ERR=%s\n"
-
-#: src/cats/sql_create.c:145
-#, c-format
-msgid "Create JobMedia record %s failed: ERR=%s\n"
-msgstr "Erzeugung von JobMedia Eintrag %s fehlgeschlagen: ERR=%s\n"
-
-#: src/cats/sql_create.c:154
-#, c-format
-msgid "Update Media record %s failed: ERR=%s\n"
-msgstr "Aktualisierung von Media Eintrag %s fehlgeschlagen: ERR=%s\n"
-
-#: src/cats/sql_create.c:189
-#, c-format
-msgid "pool record %s already exists\n"
-msgstr "pool Eintrag %s bereits vorhanden\n"
-
-#: src/cats/sql_create.c:221
-#, c-format
-msgid "Create db Pool record %s failed: ERR=%s\n"
-msgstr "Erzeugung von db Pool Eintrag %s fehlgeschlagen: ERR=%s\n"
-
-#: src/cats/sql_create.c:254
-#, c-format
-msgid "Device record %s already exists\n"
-msgstr "Device Eintrag %s bereits vorhanden\n"
-
-#: src/cats/sql_create.c:271
-#, c-format
-msgid "Create db Device record %s failed: ERR=%s\n"
-msgstr "Erzeugung von db Device Eintrag %s fehlgeschlagen: ERR=%s\n"
-
-#: src/cats/sql_create.c:306
-#, c-format
-msgid "More than one Storage record!: %d\n"
-msgstr "Mehr als ein Storage Eintrag!: %d\n"
-
-#: src/cats/sql_create.c:311
-#, c-format
-msgid "error fetching Storage row: %s\n"
-msgstr "Fehler beim holen der Storage Zeile: %s\n"
-
-#: src/cats/sql_create.c:332
-#, c-format
-msgid "Create DB Storage record %s failed. ERR=%s\n"
-msgstr "Erzeugung des DB Storage Eintrags %s fehlgeschlagen. ERR=%s\n"
-
-#: src/cats/sql_create.c:366
-#, c-format
-msgid "mediatype record %s already exists\n"
-msgstr "Medientyp Eintrag %s bereits vorhanden\n"
-
-#: src/cats/sql_create.c:383
-#, c-format
-msgid "Create db mediatype record %s failed: ERR=%s\n"
-msgstr "Erzeuge db Medientyp Eintrag %s fehlgeschlagen: ERR=%s\n"
-
-#: src/cats/sql_create.c:424
-#, c-format
-msgid "Volume \"%s\" already exists.\n"
-msgstr "Volume \"%s\" bereits vorhanden.\n"
-
-#: src/cats/sql_create.c:470
-#, c-format
-msgid "Create DB Media record %s failed. ERR=%s\n"
-msgstr "Erzeugung DB Media Eintrag %s fehlgeschlagen. ERR=%s\n"
-
-#: src/cats/sql_create.c:521
-#, c-format
-msgid "More than one Client!: %d\n"
-msgstr "Mehr als ein Client!: %d\n"
-
-#: src/cats/sql_create.c:526
-#, c-format
-msgid "error fetching Client row: %s\n"
-msgstr "Fehler beim holen der Client Zeile: %s\n"
-
-#: src/cats/sql_create.c:554
-#, c-format
-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: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: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: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:666
-#, c-format
-msgid "Create DB Counters record %s failed. ERR=%s\n"
-msgstr "Erzeugung des DB Counters Eintrag %s fehlgeschlagen. ERR=%s\n"
-
-#: src/cats/sql_create.c:704
-#, c-format
-msgid "More than one FileSet!: %d\n"
-msgstr "Mehr als ein FileSet!: %d\n"
-
-#: src/cats/sql_create.c:709
-#, c-format
-msgid "error fetching FileSet row: ERR=%s\n"
-msgstr "Fehler beim holen der FileSet Zeile: ERR=%s\n"
-
-#: src/cats/sql_create.c:740
-#, c-format
-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: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: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: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: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: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.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
-msgid "ERR=JobIds are empty\n"
-msgstr ""
-
-#: 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"
-
-#: src/cats/sql_get.c:151
-#, c-format
-msgid "Error fetching row: %s\n"
-msgstr "Fehler beim holen der Zeile: %s\n"
-
-#: src/cats/sql_get.c:158
-#, fuzzy, c-format
-msgid "get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"
-msgstr "get_file_record erwartet 1 erhalten rows=%d\n"
-
-#: src/cats/sql_get.c:166
-#, c-format
-msgid "File record for PathId=%s FilenameId=%s not found.\n"
-msgstr "File Eintrag f�r PathId=%s FilenameId=%s nicht gefunden.\n"
-
-#: src/cats/sql_get.c:172
-msgid "File record not found in Catalog.\n"
-msgstr "File Eintrag nicht im Catalog gefunden.\n"
-
-#: src/cats/sql_get.c:199
-#, c-format
-msgid "More than one Filename!: %s for file: %s\n"
-msgstr "Mehr als einen Dateinamen gefunden! : %s f�r Datei: %s\n"
-
-#: src/cats/sql_get.c:209
-#, fuzzy, c-format
-msgid "Get DB Filename record %s found bad record: %d\n"
-msgstr "Get DB Filename record %s hat fehlerhaften Eintrag gefunden: %d\n"
-
-#: src/cats/sql_get.c:215
-#, c-format
-msgid "Filename record: %s not found.\n"
-msgstr "Filename record: %s nicht gefunden.\n"
-
-#: src/cats/sql_get.c:219
-#, c-format
-msgid "Filename record: %s not found in Catalog.\n"
-msgstr "Filename record: %s nicht in Catalog gefunden.\n"
-
-#: src/cats/sql_get.c:262
-#, c-format
-msgid "Get DB path record %s found bad record: %s\n"
-msgstr "Get DB path record %s fehlerhaften Eintrag gefunden: %s\n"
-
-#: src/cats/sql_get.c:275
-#, c-format
-msgid "Path record: %s not found.\n"
-msgstr "Path record: %s nicht gefunden.\n"
-
-#: src/cats/sql_get.c:279
-#, c-format
-msgid "Path record: %s not found in Catalog.\n"
-msgstr "Path record: %s nicht in Catalog gefunden.\n"
-
-#: src/cats/sql_get.c:318
-#, c-format
-msgid "No Job found for JobId %s\n"
-msgstr "Kein Job f�r JobId %s gefunden\n"
-
-#: src/cats/sql_get.c:391 src/cats/sql_get.c:448
-#, c-format
-msgid "No volumes found for JobId=%d\n"
-msgstr "Keine volumes f�r JobId=%d gefunden\n"
-
-#: src/cats/sql_get.c:397 src/cats/sql_get.c:459
-#, c-format
-msgid "Error fetching row %d: ERR=%s\n"
-msgstr "Fehler beim Holen von Zeile %d: ERR=%s\n"
-
-#: src/cats/sql_get.c:411
-#, c-format
-msgid "No Volume for JobId %d found in Catalog.\n"
-msgstr "Kein Volume f�r JobId %d in Catalog gefunden.\n"
-
-#: src/cats/sql_get.c:552
-#, c-format
-msgid "Pool id select failed: ERR=%s\n"
-msgstr "Pool id select fehlgeschlagen: ERR=%s\n"
-
-#: src/cats/sql_get.c:589
-#, c-format
-msgid "Client id select failed: ERR=%s\n"
-msgstr "Client id select fehlgeschlagen: ERR=%s\n"
-
-#: src/cats/sql_get.c:635
-#, c-format
-msgid "More than one Pool!: %s\n"
-msgstr "Mehr als ein Pool!: %s\n"
-
-#: src/cats/sql_get.c:679
-msgid "Pool record not found in Catalog.\n"
-msgstr "Pool Eintrag in Catalog nicht gefunden.\n"
-
-#: src/cats/sql_get.c:717
-#, c-format
-msgid "More than one Client!: %s\n"
-msgstr "Mehr als ein Client!: %s\n"
-
-#: src/cats/sql_get.c:734 src/cats/sql_get.c:738
-msgid "Client record not found in Catalog.\n"
-msgstr "Client Eintrag nicht in Catalog gefunden\n"
-
-#: 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:770
-#, c-format
-msgid "error fetching Counter row: %s\n"
-msgstr "Fehler beim Holen der Counter Zeile: %s\n"
-
-#: 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: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:835
-#, c-format
-msgid "FileSet record \"%s\" not found.\n"
-msgstr "FileSet Eintrag \"%s\" nicht gefunden\n"
-
-#: 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:941
-#, c-format
-msgid "Media id select failed: ERR=%s\n"
-msgstr "Media id select fehlgeschlagen: ERR=%s\n"
-
-#: 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:1034
-#, c-format
-msgid "More than one Volume!: %s\n"
-msgstr "Mehr als ein Volume!: %s\n"
-
-#: 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: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: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: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"
-
-#: src/cats/sql_find.c:98 src/cats/sql_find.c:127 src/cats/sql_find.c:182
-#, c-format
-msgid ""
-"Query error for start time request: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-"Fehler bei Abfrage von Startzeit: ERR=%s\n"
-"CMD=%s\n"
-
-#: src/cats/sql_find.c:104 src/cats/sql_find.c:188
-msgid "No prior Full backup Job record found.\n"
-msgstr "Keinen vorherigen \"Full backup\" Job Eintrag gefunden.\n"
-
-#: src/cats/sql_find.c:116
-#, c-format
-msgid "Unknown level=%d\n"
-msgstr "Unbekannter level=%d\n"
-
-#: src/cats/sql_find.c:133
-#, c-format
-msgid ""
-"No Job record found: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-"Kein \"Job\" Eintrag gefunden: ERR=%s\n"
-"CMD=%s\n"
-
-#: src/cats/sql_find.c:291
-#, c-format
-msgid "Unknown Job level=%d\n"
-msgstr "Unbekannter Job level=%d\n"
-
-#: src/cats/sql_find.c:301
-#, c-format
-msgid "No Job found for: %s.\n"
-msgstr "Kein Job gefunden f�r: %s.\n"
-
-#: src/cats/sql_find.c:312
-#, c-format
-msgid "No Job found for: %s\n"
-msgstr "Keinen Job gefunden f�r: %s\n"
-
-#: src/cats/sql_find.c:393
-#, c-format
-msgid "Request for Volume item %d greater than max %d or less than 1\n"
-msgstr ""
-"Anforderung von \"Volume item\" %d gr��er als Max %d oder weniger als 1\n"
-
-#: src/cats/sql_find.c:408
-#, fuzzy, c-format
-msgid "No Volume record found for item %d.\n"
-msgstr "Kein Volume Eintrag gefunden f�r item %d.\n"
-
-#: 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: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: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:204
-msgid "unknown"
-msgstr "unbekannt"
-
-#: 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"
-
-#: src/cats/ingres.c:87
-msgid "Failed to allocate space for query filter.\n"
-msgstr ""
-
-#: src/cats/ingres.c:108
-msgid "Failed to allocate space for query filters.\n"
-msgstr ""
-
-#: src/cats/ingres.c:267
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to Ingres server.\n"
-"Database=%s User=%s\n"
-"It is probably not running or your password is incorrect.\n"
-msgstr ""
-"Kann Verbindung zu MySQL Server nicht aufbauen. \n"
-"Datenbank=%s Benutzer=%s\n"
-"Der Datenbankserver  l�uft m�glicherweise nicht oder das Passwort ist nicht "
-"korrekt.\n"
-
-#: 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"
-
-#: src/cats/sql.c:184
-#, c-format
-msgid ""
-"Potential performance problem:\n"
-"max_connections=%d set for %s database \"%s\" should be larger than "
-"Director's MaxConcurrentJobs=%d\n"
-msgstr ""
-
-#: src/cats/sql.c:229
-#, c-format
-msgid ""
-"query %s failed:\n"
-"%s\n"
-msgstr ""
-"Abfrage %s gescheitert:\n"
-"%s\n"
-
-#: src/cats/sql.c:251
-#, c-format
-msgid ""
-"insert %s failed:\n"
-"%s\n"
-msgstr ""
-"einf�gen %s gescheitert:\n"
-"%s\n"
-
-#: src/cats/sql.c:261
-#, c-format
-msgid "Insertion problem: affected_rows=%s\n"
-msgstr "Problem beim Einf�gen: affected_rows=%s\n"
-
-#: src/cats/sql.c:282
-#, c-format
-msgid ""
-"update %s failed:\n"
-"%s\n"
-msgstr ""
-"Aktualisierung %s gescheitert:\n"
-"%s\n"
-
-#: src/cats/sql.c:292
-#, fuzzy, c-format
-msgid "Update failed: affected_rows=%s for %s\n"
-msgstr "Aktualisierungsproblem: affected_rows=%s\n"
-
-#: src/cats/sql.c:314
-#, c-format
-msgid ""
-"delete %s failed:\n"
-"%s\n"
-msgstr ""
-"l�schen von %s fehlgeschlagen:\n"
-"%s\n"
-
-#: src/cats/sql.c:408
-#, c-format
-msgid "Path length is zero. File=%s\n"
-msgstr "Pfadl�nge ist null. Datei=%s\n"
-
-#: src/cats/sql.c:603
-msgid "No results to list.\n"
-msgstr "Keine Ergebnisse zu \"list\" Kommando.\n"
-
-#: src/cats/sql.c:721
-#, fuzzy
-msgid "Could not init database batch connection\n"
-msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
-
-#: 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:181
-#, c-format
-msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:246
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to PostgreSQL server. Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-"Kann Verbindung zu  PostgreSQL Server nicht aufbauen.\n"
-"Datenbank=%s  Benutzer=%s\n"
-"Der Datenbankserver l�uft m�glicherweise nicht oder das Passwort ist nicht "
-"korrekt.\n"
-
-#: src/cats/postgresql.c:350
-msgid "PQescapeStringConn returned non-zero.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:368
-msgid "PQescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:399
-msgid "PQunescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: 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: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: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:1088
-#, fuzzy, c-format
-msgid "error copying in batch mode: %s"
-msgstr "Fehler beim holen von Zeile: %s\n"
-
-#: 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"
-
-#: src/cats/sql_list.c:59
-#, c-format
-msgid "Query failed: %s\n"
-msgstr "Abfrage fehlgeschlagen: %s\n"
-
-#: src/cats/sql_list.c:275
-msgid "These JobIds have copies as follows:\n"
-msgstr ""
-
-#: src/cats/sql_list.c:277
-msgid "The catalog contains copies as follows:\n"
-msgstr ""
-
-#: src/cats/dbi.c:117
-#, c-format
-msgid "Unknown database type: %s\n"
-msgstr ""
-
-#: 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:299
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-"Kann Verbindung zu  PostgreSQL Server nicht aufbauen.\n"
-"Datenbank=%s  Benutzer=%s\n"
-"Der Datenbankserver l�uft m�glicherweise nicht oder das Passwort ist nicht "
-"korrekt.\n"
-
-#: 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: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:1460
-msgid "Invalid driver type, must be \"dbi:<type>\"\n"
-msgstr ""
-
-#: 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"
-
-#: src/cats/cats_dummy.c:39
-msgid "Please replace this dummy libbaccats library with a proper one.\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:80
-#, c-format
-msgid "No pool record %s exists\n"
-msgstr "Kein pool Eintrag %s vorhanden\n"
-
-#: src/cats/sql_delete.c:85
-#, c-format
-msgid "Expecting one pool record, got %d\n"
-msgstr "Erwartete einen \"pool\" Eintrag, erhielt %d\n"
-
-#: src/cats/sql_delete.c:91
-#, c-format
-msgid "Error fetching row %s\n"
-msgstr "Fehler beim Holen der Zeile %s\n"
-
-#: src/cats/mysql.c:207
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to MySQL server.\n"
-"Database=%s User=%s\n"
-"MySQL connect failed either server not running or your authorization is "
-"incorrect.\n"
-msgstr ""
-"Kann Verbindung zu MySQL Server nicht aufbauen. \n"
-"Datenbank=%s Benutzer=%s\n"
-"Der Datenbankserver  l�uft m�glicherweise nicht oder das Passwort ist nicht "
-"korrekt.\n"
-
-#: 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"
-
-#: src/wx-console/console_conf.c:147 src/console/console_conf.c:140
-#: src/qt-console/bat_conf.cpp:141
-#, c-format
-msgid "No record for %d %s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:156 src/console/console_conf.c:149
-#, c-format
-msgid "Console: name=%s rcfile=%s histfile=%s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:160 src/console/console_conf.c:153
-#: src/qt-console/bat_conf.cpp:150
-#, c-format
-msgid "Director: name=%s address=%s DIRport=%d\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:142 src/console/authenticate.c:138
-msgid "TLS negotiation failed\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:150
-msgid "Bad response to Hello command: ERR="
-msgstr ""
-
-#: src/wx-console/authenticate.c:167 src/console/authenticate.c:169
-#, fuzzy
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-"Kann mit  File daemon on \"%s:%d\" nicht authentisieren. M�gliche Ursachen:\n"
-"Passworte oder Namen nicht gleich oder\n"
-"Maximum Concurrent Jobs �berschritten auf dem FD oder\n"
-"FD Netzwerk durcheinander (Daemon neustarten).\n"
-"F�r Hilfe bitte unter http://www.bacula.org/rel-manual/faq."
-"html#AuthorizationErrors nachsehen.\n"
-
-#: src/console/console.c:126
-#, c-format
-msgid ""
-"\n"
-"Version: "
-msgstr ""
-
-#: src/console/console.c:178
-msgid "input from file"
-msgstr ""
-
-#: src/console/console.c:179
-msgid "output to file"
-msgstr ""
-
-#: src/console/console.c:180
-msgid "quit"
-msgstr ""
-
-#: src/console/console.c:181
-msgid "output to file and terminal"
-msgstr ""
-
-#: src/console/console.c:182
-msgid "sleep specified time"
-msgstr ""
-
-#: src/console/console.c:183
-msgid "print current time"
-msgstr ""
-
-#: src/console/console.c:184
-msgid "print Console's version"
-msgstr ""
-
-#: src/console/console.c:185
-msgid "echo command string"
-msgstr ""
-
-#: src/console/console.c:186
-msgid "execute an external command"
-msgstr ""
-
-#: src/console/console.c:187
-msgid "exit = quit"
-msgstr ""
-
-#: src/console/console.c:188
-msgid "zed_keys = use zed keys instead of bash keys"
-msgstr ""
-
-#: src/console/console.c:189
-msgid "help listing"
-msgstr ""
-
-#: src/console/console.c:191
-msgid "set command separator"
-msgstr ""
-
-#: src/console/console.c:225
-msgid ": is an invalid command\n"
-msgstr ""
-
-#: src/console/console.c:675
-msgid "Illegal separator character.\n"
-msgstr ""
-
-#: src/console/console.c:708
-msgid "Command logic problem\n"
-msgstr ""
-
-#: src/console/console.c:925
-#, fuzzy, c-format
-msgid "Can't find %s in Director list\n"
-msgstr "Kann Director resource %s nicht finden\n"
-
-#: src/console/console.c:933
-msgid "Available Directors:\n"
-msgstr ""
-
-#: src/console/console.c:937
-#, c-format
-msgid "%2d:  %s at %s:%d\n"
-msgstr ""
-
-#: src/console/console.c:941
-msgid "Select Director by entering a number: "
-msgstr ""
-
-#: src/console/console.c:948
-#, c-format
-msgid "%s is not a number. You must enter a number between 1 and %d\n"
-msgstr ""
-
-#: src/console/console.c:955
-#, c-format
-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: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:154
-#, c-format
-msgid "Failed to initialize TLS context for Director \"%s\".\n"
-msgstr ""
-
-#: src/console/console.c:1210
-msgid "Enter a period to cancel a command.\n"
-msgstr ""
-
-#: src/console/console.c:1304 src/qt-console/main.cpp:232
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in %s. At least one CA certificate store is required.\n"
-msgstr ""
-
-#: src/console/console.c:1313 src/qt-console/main.cpp:241
-#, c-format
-msgid ""
-"No Director resource defined in %s\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/console/console.c:1333 src/qt-console/main.cpp:262
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/console/console.c:1359
-msgid "Too many arguments on input command.\n"
-msgstr ""
-
-#: src/console/console.c:1363
-msgid "First argument to input command must be a filename.\n"
-msgstr ""
-
-#: src/console/console.c:1369
-#, c-format
-msgid "Cannot open file %s for input. ERR=%s\n"
-msgstr ""
-
-#: src/console/console.c:1401
-msgid "Too many arguments on output/tee command.\n"
-msgstr ""
-
-#: src/console/console.c:1418
-#, c-format
-msgid "Cannot open file %s for output. ERR=%s\n"
-msgstr ""
-
-#: src/console/console.c:1437
-msgid "Too many arguments. Enclose command in double quotes.\n"
-msgstr ""
-
-#: src/console/console.c:1446
-#, fuzzy, c-format
-msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
-msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
-
-#: src/tools/testls.c:59
-#, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -q          quiet, don't print filenames (debug)\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testls.c:155
-#, c-format
-msgid "Could not open include file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:168
-#, c-format
-msgid "Could not open exclude file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:182
-#, c-format
-msgid "Files seen = %d\n"
-msgstr ""
-
-#: src/tools/testls.c:215 src/tools/testfind.c:322
-#, c-format
-msgid "Err: Could not access %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:218 src/tools/testfind.c:325
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:221 src/tools/testfind.c:328
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:224 src/tools/testfind.c:331
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:227 src/tools/testfind.c:334
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:230
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:233
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:236 src/tools/testfind.c:337
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:239 src/tools/testfind.c:340
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
-msgstr ""
-
-#: src/tools/bvfs_test.c:56 src/tools/ing_test.c:57
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -j <jobids>       specify jobids\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -T                truncate cache table before starting\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"Example : bbatch -w /path/to/workdir -h localhost -f dat1 -f dat -f datx\n"
-" will start 3 thread and load dat1, dat and datx in your catalog\n"
-"See bbatch.c to generate datafile\n"
-"\n"
-"Usage: bbatch [ options ] -w working/dir -f datafile\n"
-"       -b                with batch mode\n"
-"       -B                without batch mode\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -r <jobids>       call restore code with given jobids\n"
-"       -v                verbose\n"
-"       -f <file>         specify data file\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:211
-#, c-format
-msgid "Computing file list for jobid=%s files=%lld secs=%d\n"
-msgstr ""
-
-#: src/tools/bbatch.c:315
-#, fuzzy, c-format
-msgid "Error opening datafile %s\n"
-msgstr "Fehler beim holen von Zeile: %s\n"
-
-#: src/tools/bbatch.c:325
-#, fuzzy
-msgid "Error while inserting file\n"
-msgstr "Fehler beim schreiben der bsr Datei.\n"
-
-#: src/tools/ing_test.c:231 src/tools/ing_test.c:264 src/tools/ing_test.c:302
-msgid "Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:320
-msgid "CREATE-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:325
-msgid "DROP-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/fstype.c:48
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-v] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/fstype.c:102 src/tools/drivetype.c:78
-#, fuzzy, c-format
-msgid "%s: unknown\n"
-msgstr "unbekannt"
-
-#: src/tools/bregex.c:153 src/tools/bwild.c:122 src/tools/bregtest.c:137
-#, c-format
-msgid "Could not open data file: %s\n"
-msgstr ""
-
-#: src/tools/drivetype.c:47
-#, c-format
-msgid ""
-"\n"
-"Usage: drivetype [-v] path ...\n"
-"\n"
-"       Print the drive type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -l     print local fixed hard drive\n"
-"       -a     display information on all drives\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:70
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -c          specify config file containing FileSet resources\n"
-"       -f          specify which FileSet to use\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:235
-#, c-format
-msgid ""
-"\n"
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
-msgstr ""
-
-#: src/tools/testfind.c:278
-#, c-format
-msgid "Reg: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:300
-msgid "\t[will not descend: recursion turned off]"
-msgstr ""
-
-#: src/tools/testfind.c:302
-msgid "\t[will not descend: file system change not allowed]"
-msgstr ""
-
-#: src/tools/testfind.c:304
-msgid "\t[will not descend: disallowed file system]"
-msgstr ""
-
-#: src/tools/testfind.c:306
-msgid "\t[will not descend: disallowed drive type]"
-msgstr ""
-
-#: src/tools/testfind.c:390
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:407
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:416
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/tools/testfind.c:419
-#, c-format
-msgid "Path: %s\n"
-msgstr ""
-
-#: src/tools/cats_test.c:60
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -q                print only errors\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/cats_test.c:376
-#, fuzzy, c-format
-msgid "Could not open, database \"%s\".\n"
-msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
-
-#: src/tools/bsmtp.c:151
-#, c-format
-msgid "Fatal malformed reply from %s: %s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:159
-#, c-format
-msgid "Fatal fgets error: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"       -f          set the From: field\n"
-"       -h          use mailhost:port as the SMTP server\n"
-"       -s          set the Subject: field\n"
-"       -r          set the Reply-To: field\n"
-"       -l          set the maximum number of lines to send (default: "
-"unlimited)\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"       -c <file>   setze Konfigurationsdatei auf Datei\n"
-"       -dnn        setze debug level auf nn\n"
-"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
-"       -g          groupid\n"
-"       -r <job>    starte <job> jetzt\n"
-"       -s          no signals\n"
-"       -t          test - Konfiguration Lesen und beenden\n"
-"       -u          userid\n"
-"       -v          ausf�hrliche Benutzer Meldungen\n"
-"       -?          diese Meldung ausgeben.\n"
-"\n"
-
-#: src/tools/bsmtp.c:379
-msgid "Fatal error: no recipient given.\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:407
-#, c-format
-msgid "Fatal gethostname error: ERR=%s\n"
-msgstr ""
-
-#: 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:486 src/tools/bsmtp.c:521
-#, fuzzy, c-format
-msgid "Error unknown mail host \"%s\": ERR=%s\n"
-msgstr "unbekannt"
-
-#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
-msgid "Retrying connection using \"localhost\".\n"
-msgstr ""
-
-#: 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:541 src/tools/bsmtp.c:546
-#, c-format
-msgid "Fatal socket error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:551
-#, c-format
-msgid "Fatal connect error to %s: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:560
-#, c-format
-msgid "Fatal _open_osfhandle error: ERR=%s\n"
-msgstr ""
-
-#: 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:576
-#, c-format
-msgid "Fatal dup error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:195
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:212
-#, c-format
-msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:214
-#, c-format
-msgid "Error there is no Catalog section in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:223
-msgid "Error no Director resource defined.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:247
-msgid "Wrong number of arguments.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:252
-msgid "Working directory not supplied.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:288
-msgid "Database port must be a numeric value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:291
-msgid "Database port must be a int value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:365
-#, c-format
-msgid "Hello, this is the database check/correct program.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:367
-#, c-format
-msgid "Modify database is on."
-msgstr ""
-
-#: src/tools/dbcheck.c:369
-#, c-format
-msgid "Modify database is off."
-msgstr ""
-
-#: src/tools/dbcheck.c:371 src/tools/dbcheck.c:432
-#, c-format
-msgid " Verbose is on.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:373 src/tools/dbcheck.c:434
-#, c-format
-msgid " Verbose is off.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:375
-#, c-format
-msgid "Please select the function you want to perform.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:379
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:398
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:418
-msgid "Select function number: "
-msgstr ""
-
-#: src/tools/dbcheck.c:425
-#, c-format
-msgid "Database will be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:427
-#, c-format
-msgid "Database will NOT be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:518
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:525
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:532
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:539
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:546
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:599
-#, c-format
-msgid "Deleting: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:671
-#, c-format
-msgid "Checking for duplicate Filename entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:682
-#, c-format
-msgid "Found %d duplicate Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:683
-msgid "Print the list? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:706 src/tools/dbcheck.c:771
-#, c-format
-msgid "Found %d for: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:736
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:747
-#, c-format
-msgid "Found %d duplicate Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:748 src/tools/dbcheck.c:810 src/tools/dbcheck.c:856
-#: src/tools/dbcheck.c:924 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1025
-#: src/tools/dbcheck.c:1067 src/tools/dbcheck.c:1109 src/tools/dbcheck.c:1146
-#: src/tools/dbcheck.c:1179 src/tools/dbcheck.c:1213 src/tools/dbcheck.c:1280
-msgid "Print them? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:801
-#, c-format
-msgid "Checking for orphaned JobMedia entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:809
-#, c-format
-msgid "Found %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:827
-#, c-format
-msgid "Deleting %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:844
-#, c-format
-msgid "Checking for orphaned File entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:855
-#, c-format
-msgid "Found %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:872
-#, c-format
-msgid "Deleting %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:891
-#, c-format
-msgid "Pruning orphaned Path entries isn't possible when using BVFS.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:900 src/tools/dbcheck.c:958
-msgid "Create temporary index? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:912
-#, c-format
-msgid "Checking for orphaned Path entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:923
-#, c-format
-msgid "Found %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:936
-#, c-format
-msgid "Deleting %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:970
-#, c-format
-msgid "Checking for orphaned Filename entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:981
-#, c-format
-msgid "Found %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:994
-#, c-format
-msgid "Deleting %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1014
-#, c-format
-msgid "Checking for orphaned FileSet entries. This takes some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1024
-#, c-format
-msgid "Found %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1039
-#, c-format
-msgid "Deleting %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1048
-#, c-format
-msgid "Checking for orphaned Client entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1066
-#, c-format
-msgid "Found %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1081
-#, c-format
-msgid "Deleting %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1090
-#, c-format
-msgid "Checking for orphaned Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1108
-#, c-format
-msgid "Found %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1123
-#, c-format
-msgid "Deleting %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1125
-#, c-format
-msgid "Deleting JobMedia records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1127
-#, c-format
-msgid "Deleting Log records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1136
-#, c-format
-msgid "Checking for Admin Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1145
-#, c-format
-msgid "Found %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1160
-#, c-format
-msgid "Deleting %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1169
-#, c-format
-msgid "Checking for Restore Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1178
-#, c-format
-msgid "Found %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1193
-#, c-format
-msgid "Deleting %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1203
-#, c-format
-msgid "Checking for Filenames with a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1212
-#, c-format
-msgid "Found %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1230 src/tools/dbcheck.c:1296
-#, c-format
-msgid "Reparing %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1270
-#, c-format
-msgid "Checking for Paths without a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1279
-#, c-format
-msgid "Found %d bad Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1442
-#, c-format
-msgid ""
-"Ok. Index over the %s column already exists and dbcheck will work faster.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1445
-#, c-format
-msgid ""
-"Note. Index over the %s column not found, that can greatly slow down "
-"dbcheck.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1460
-#, c-format
-msgid "Create temporary index... This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1468
-#, c-format
-msgid "Temporary index created.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1483
-#, c-format
-msgid "Drop temporary index.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1493
-#, c-format
-msgid "Temporary index %s deleted.\n"
-msgstr ""
-
-#: src/filed/verify.c:57
-#, c-format
-msgid "Cannot malloc %d network read buffer\n"
-msgstr ""
-
-#: src/filed/verify.c:127
-#, c-format
-msgid "     Could not access %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:134
-#, c-format
-msgid "     Could not follow link %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:141
-#, c-format
-msgid "     Could not stat %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:147 src/filed/backup.c:450
-#, c-format
-msgid "     Unchanged file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:150
-#, c-format
-msgid "     Archive file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:153
-#, c-format
-msgid "     Recursion turned off. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:157
-#, c-format
-msgid "     File system change prohibited. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:165
-#, c-format
-msgid "     Could not open directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:170
-#, c-format
-msgid "     Unknown file type %d: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:214 src/filed/verify_vol.c:206
-#, c-format
-msgid "Network error in send to Director: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
-#, c-format
-msgid "%s digest initialization failed\n"
-msgstr ""
-
-#: src/filed/verify.c:309
-#, c-format
-msgid "     Cannot open %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:323
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:386
-#, c-format
-msgid "Error reading file %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/accurate.c:201
-#, c-format
-msgid "Space saved with Base jobs: %lld MB\n"
-msgstr ""
-
-#: 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:508
-msgid "2991 Bad accurate command\n"
-msgstr ""
-
-#: src/filed/status.c:89
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d running=%d.\n"
-msgstr ""
-
-#: src/filed/status.c:149
-#, c-format
-msgid " Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d "
-msgstr ""
-
-#: src/filed/status.c:194
-#, c-format
-msgid "Director connected at: %s\n"
-msgstr ""
-
-#: src/filed/status.c:196
-#, c-format
-msgid "JobId %d Job %s is running.\n"
-msgstr ""
-
-#: src/filed/status.c:199
-#, fuzzy, c-format
-msgid "    %s%s %s Job started: %s\n"
-msgstr "Clone JobId %d gestartet.\n"
-
-#: src/filed/status.c:212
-#, fuzzy, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
-msgstr "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
-
-#: src/filed/status.c:218
-#, fuzzy, c-format
-msgid "    Files Examined=%s\n"
-msgstr "FileSet: name=%s\n"
-
-#: src/filed/status.c:223
-#, c-format
-msgid "    Processing file: %s\n"
-msgstr ""
-
-#: src/filed/status.c:234
-msgid "    SDSocket closed.\n"
-msgstr ""
-
-#: src/filed/status.c:244 src/filed/status.c:335 src/filed/status.c:409
-msgid "====\n"
-msgstr ""
-
-#: src/filed/status.c:306
-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 ""
-
-#: src/filed/status.c:497
-msgid "2900 Bad .status command, wrong argument.\n"
-msgstr ""
-
-#: src/filed/status.c:565
-msgid "Bacula Client: Idle"
-msgstr ""
-
-#: src/filed/status.c:576
-msgid "Bacula Client: Running"
-msgstr ""
-
-#: src/filed/status.c:590
-msgid "Bacula Client: Last Job Canceled"
-msgstr ""
-
-#: src/filed/status.c:594
-msgid "Bacula Client: Last Job Failed"
-msgstr ""
-
-#: src/filed/status.c:598
-msgid "Bacula Client: Last Job had Warnings"
-msgstr ""
-
-#: 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:245
-#, c-format
-msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:259
-#, c-format
-msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
-msgstr ""
-
-#: 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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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:3673
-#, c-format
-msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3734
-#, c-format
-msgid "Failed to restore extensible attributes on file \"%s\"\n"
-msgstr ""
-
-#: 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: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:3891
-#, c-format
-msgid ""
-"Can't restore Extended Attributes of %s - incompatible xattr stream "
-"encountered - %d\n"
-msgstr ""
-
-#: 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:563
-#, c-format
-msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
-msgstr ""
-
-#: 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:775
-#, fuzzy
-msgid "Plugin save packet not found.\n"
-msgstr "Path record: %s nicht gefunden.\n"
-
-#: 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:977
-#, c-format
-msgid "Plugin createFile call failed. Stat=%d file=%s\n"
-msgstr ""
-
-#: 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:1859
-msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
-msgstr ""
-
-#: src/filed/filed.c:76
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -d <nn>     set debug level to <nn>\n"
-"        -dt         print a timestamp in debug output\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g          groupid\n"
-"        -k          keep readall capabilities\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test configuration file and exit\n"
-"        -u          userid\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_datei] [-d debug_level]\n"
-"        -c <Datei>   benutze <Datei> als Konfigurationsdatei\n"
-"        -dnn        setze debug level auf nn\n"
-"        -f          starte in Vordergrund (f�r debugging)\n"
-"        -g          groupid\n"
-"        -s          no signals (f�r debugging)\n"
-"        -t          Konfigurationsdatei testen und beenden\n"
-"        -u          userid\n"
-"        -v          Ausf�hrliche Benutzermeldungen\n"
-"        -?          diese Meldung ausgeben.\n"
-"\n"
-
-#: src/filed/filed.c:199
-msgid "-k option has no meaning without -u option.\n"
-msgstr ""
-
-#: src/filed/filed.c:337
-#, c-format
-msgid ""
-"No File daemon resource defined in %s\n"
-"Without that I don't know who I am :-(\n"
-msgstr ""
-
-#: src/filed/filed.c:342
-#, c-format
-msgid "Only one Client resource permitted in %s\n"
-msgstr ""
-
-#: src/filed/filed.c:366
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"File daemon in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:390
-msgid "PKI encryption/signing enabled but not compiled into Bacula.\n"
-msgstr ""
-
-#: src/filed/filed.c:401
-#, c-format
-msgid ""
-"\"PKI Key Pair\" must be defined for File daemon \"%s\" in %s if either "
-"\"PKI Sign\" or \"PKI Encrypt\" are enabled.\n"
-msgstr ""
-
-#: src/filed/filed.c:413 src/filed/filed.c:444 src/filed/filed.c:485
-msgid "Failed to allocate a new keypair object.\n"
-msgstr ""
-
-#: src/filed/filed.c:417
-#, c-format
-msgid "Failed to load public certificate for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:423
-#, c-format
-msgid "Failed to load private key for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:453
-#, c-format
-msgid "Failed to load private key from file %s for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:460
-#, c-format
-msgid ""
-"Failed to load trusted signer certificate from file %s for File daemon \"%s"
-"\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:491
-#, c-format
-msgid ""
-"Failed to load master key certificate from file %s for File daemon \"%s\" in "
-"%s.\n"
-msgstr ""
-
-#: src/filed/filed.c:507
-#, c-format
-msgid "No Director resource defined in %s\n"
-msgstr ""
-
-#: 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: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: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:386
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
-"support\n"
-msgstr ""
-
-#: 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: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: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:823
-#, c-format
-msgid "acl_to_text error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:912
-#, c-format
-msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:923
-#, c-format
-msgid "acl_from_text error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:980
-#, c-format
-msgid "acl_set_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1246
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
-msgstr ""
-
-#: 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:1566
-#, c-format
-msgid "acltostr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:1635
-#, c-format
-msgid "setacl error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1834
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without acl support\n"
-msgstr ""
-
-#: 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:1874
-#, c-format
-msgid ""
-"Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
-"support\n"
-msgstr ""
-
-#: 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: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: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:2023
-#, c-format
-msgid "acltotext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2046
-#, c-format
-msgid "aclfromtext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2066
-#, c-format
-msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/filed/verify_vol.c:63
-msgid "Storage command not issued before Verify.\n"
-msgstr ""
-
-#: 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:498
-#, c-format
-msgid "Data record error. ERR=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/filed/verify_vol.c:143
-#, c-format
-msgid "Error scanning record header: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:102
-msgid "Cannot set buffer size FD->SD.\n"
-msgstr ""
-
-#: src/filed/backup.c:194
-#, c-format
-msgid "Encountered %ld acl errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:198
-#, c-format
-msgid "Encountered %ld xattr errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:267 src/filed/backup.c:276
-msgid "An error occurred while encrypting the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:387
-#, c-format
-msgid "     Recursion turned off. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:394
-#, c-format
-msgid "     %s is a different filesystem. Will not descend from %s into it.\n"
-msgstr ""
-
-#: src/filed/backup.c:400
-#, c-format
-msgid "     Disallowed filesystem. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:405
-#, c-format
-msgid "     Disallowed drive type. Will not descend into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:416
-#, c-format
-msgid "     Socket file skipped: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:429
-#, fuzzy, c-format
-msgid "     Could not access \"%s\": ERR=%s\n"
-msgstr "Konnte counter %s: nicht aktualisieren: ERR=%s\n"
-
-#: src/filed/backup.c:436
-#, fuzzy, c-format
-msgid "     Could not follow link \"%s\": ERR=%s\n"
-msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
-
-#: src/filed/backup.c:443
-#, fuzzy, c-format
-msgid "     Could not stat \"%s\": ERR=%s\n"
-msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
-
-#: src/filed/backup.c:453
-#, c-format
-msgid "     Archive file not saved: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:457
-#, fuzzy, c-format
-msgid "     Could not open directory \"%s\": ERR=%s\n"
-msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
-
-#: src/filed/backup.c:466
-#, c-format
-msgid "     Unknown file type %d; not saved: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:522
-#, c-format
-msgid "%s signature digest initialization failed\n"
-msgstr ""
-
-#: 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: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:763
-msgid "Failed to allocate memory for crypto signature.\n"
-msgstr ""
-
-#: 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:813
-msgid "An error occurred finalizing signing the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:931
-#, c-format
-msgid "Compression deflateParams error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:968
-msgid "Encrypting sparse or offset data not supported.\n"
-msgstr ""
-
-#: src/filed/backup.c:975
-msgid "Failed to initialize encryption context.\n"
-msgstr ""
-
-#: src/filed/backup.c:1085
-#, c-format
-msgid "Compression deflate error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1092
-#, c-format
-msgid "Compression deflateReset error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1126
-#, c-format
-msgid "Compression LZO error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1171 src/filed/backup.c:1187
-msgid "Encryption error\n"
-msgstr ""
-
-#: src/filed/backup.c:1213
-#, c-format
-msgid "Read error on file %s. ERR=%s\n"
-msgstr ""
-
-#: 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:1226
-msgid "Encryption padding error\n"
-msgstr ""
-
-#: src/filed/backup.c:1290
-msgid "Invalid file flags, no supported data stream type.\n"
-msgstr ""
-
-#: src/filed/backup.c:1549
-#, c-format
-msgid "VSS Writer (BackupComplete): %s\n"
-msgstr ""
-
-#: src/filed/restore.c:114
-#, c-format
-msgid "Size of data or stream of %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/filed/restore.c:134
-#, c-format
-msgid "Invalid length of Finder Info (got %d, not 32)\n"
-msgstr ""
-
-#: src/filed/restore.c:139
-#, fuzzy, c-format
-msgid "Could not set Finder Info on %s\n"
-msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
-
-#: src/filed/restore.c:418
-#, fuzzy
-msgid "LZO init failed\n"
-msgstr "TLS Aushandlung gescheitert.\n"
-
-#: src/filed/restore.c:660
-msgid "Unexpected cryptographic session data stream.\n"
-msgstr ""
-
-#: src/filed/restore.c:670
-msgid ""
-"No private decryption keys have been defined to decrypt encrypted backup "
-"data.\n"
-msgstr ""
-
-#: 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:699
-msgid "Missing private key required to decrypt encrypted backup data.\n"
-msgstr ""
-
-#: src/filed/restore.c:702
-msgid "Decrypt of the session key failed.\n"
-msgstr ""
-
-#: src/filed/restore.c:708
-#, c-format
-msgid "An error occurred while decoding encrypted session data stream: %s\n"
-msgstr ""
-
-#: 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:783 src/filed/restore.c:835
-#, c-format
-msgid "Failed to initialize decryption context for %s\n"
-msgstr ""
-
-#: 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:992
-msgid "Unexpected cryptographic signature data stream.\n"
-msgstr ""
-
-#: src/filed/restore.c:1000
-#, c-format
-msgid "Failed to decode message signature for %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1064
-#, c-format
-msgid "Encountered %ld acl errors while doing restore\n"
-msgstr ""
-
-#: src/filed/restore.c:1068
-#, c-format
-msgid "Encountered %ld xattr errors while doing restore\n"
-msgstr ""
-
-#: 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:1076
-#, c-format
-msgid "%d non-supported resource fork streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1079
-#, c-format
-msgid "%d non-supported Finder Info streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1082
-#, c-format
-msgid "%d non-supported acl streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1085
-#, c-format
-msgid "%d non-supported crypto streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1088
-#, c-format
-msgid "%d non-supported xattr streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1168
-msgid "Zlib errno"
-msgstr ""
-
-#: src/filed/restore.c:1170
-msgid "Zlib stream error"
-msgstr ""
-
-#: src/filed/restore.c:1172
-msgid "Zlib data error"
-msgstr ""
-
-#: src/filed/restore.c:1174
-msgid "Zlib memory error"
-msgstr ""
-
-#: src/filed/restore.c:1176
-msgid "Zlib buffer error"
-msgstr ""
-
-#: src/filed/restore.c:1178
-msgid "Zlib version error"
-msgstr ""
-
-#: src/filed/restore.c:1218
-#, c-format
-msgid "Missing cryptographic signature for %s\n"
-msgstr ""
-
-#: 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: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:1307
-#, c-format
-msgid "Signature validation failed for %s: %s\n"
-msgstr ""
-
-#: 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:1441
-#, c-format
-msgid "Uncompression error on file %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/restore.c:1474
-#, c-format
-msgid "Write error in Win32 Block Decomposition on %s: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1533
-msgid "Decryption error\n"
-msgstr ""
-
-#: src/filed/restore.c:1626
-msgid "Logic error: output file should be open\n"
-msgstr ""
-
-#: src/filed/restore.c:1664
-msgid "Logic error: output file should not be open\n"
-msgstr ""
-
-#: 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:1819
-msgid "Open File Manager paused\n"
-msgstr ""
-
-#: src/filed/restore.c:1823
-msgid "FAILED to pause Open File Manager\n"
-msgstr ""
-
-#: src/filed/restore.c:1831
-#, c-format
-msgid "Running as '%s'. Privmask=%#08x\n"
-msgstr ""
-
-#: src/filed/restore.c:1833
-msgid "Failed to retrieve current UserName\n"
-msgstr ""
-
-#: src/filed/job.c:456
-#, c-format
-msgid "2901 Job %s not found.\n"
-msgstr ""
-
-#: src/filed/job.c:466
-#, c-format
-msgid "2001 Job %s marked to be canceled.\n"
-msgstr ""
-
-#: src/filed/job.c:469
-msgid "2902 Error scanning cancel command.\n"
-msgstr ""
-
-#: src/filed/job.c:492
-#, c-format
-msgid "2991 Bad setdebug command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:515
-#, c-format
-msgid "Bad estimate command: %s"
-msgstr ""
-
-#: src/filed/job.c:516
-msgid "2992 Bad estimate command.\n"
-msgstr ""
-
-#: src/filed/job.c:539
-#, c-format
-msgid "Bad Job Command: %s"
-msgstr ""
-
-#: src/filed/job.c:578
-#, c-format
-msgid "Bad RunBeforeJob command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:579 src/filed/job.c:598
-msgid "2905 Bad RunBeforeJob command.\n"
-msgstr ""
-
-#: src/filed/job.c:609
-msgid "2905 Bad RunBeforeNow command.\n"
-msgstr ""
-
-#: src/filed/job.c:628
-#, c-format
-msgid "Bad RunAfter command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:629
-msgid "2905 Bad RunAfterJob command.\n"
-msgstr ""
-
-#: src/filed/job.c:665
-#, c-format
-msgid "Bad RunScript command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:666
-msgid "2905 Bad RunScript command.\n"
-msgstr ""
-
-#: 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:785
-msgid "2909 Bad RestoreObject command.\n"
-msgstr ""
-
-#: src/filed/job.c:824
-#, c-format
-msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
-msgstr ""
-
-#: src/filed/job.c:866
-#, c-format
-msgid "Error running program: %s. stat=%d: ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:877
-#, c-format
-msgid "Cannot open FileSet input file: %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1031
-#, c-format
-msgid "REGEX %s compile error. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1182
-#, c-format
-msgid "Invalid FileSet command: %s\n"
-msgstr ""
-
-#: 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:1664
-#, c-format
-msgid "Unknown backup level: %s\n"
-msgstr ""
-
-#: src/filed/job.c:1677
-#, c-format
-msgid "Bad level command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:1699
-#, c-format
-msgid "Bad session command: %s"
-msgstr ""
-
-#: src/filed/job.c:1760
-#, c-format
-msgid "Bad storage command: %s"
-msgstr ""
-
-#: src/filed/job.c:1781
-#, c-format
-msgid "Failed to connect to Storage daemon: %s:%d\n"
-msgstr ""
-
-#: src/filed/job.c:1793
-msgid "Failed to authenticate Storage daemon.\n"
-msgstr ""
-
-#: src/filed/job.c:1840
-msgid "ACL support not configured for your machine.\n"
-msgstr ""
-
-#: src/filed/job.c:1844
-msgid "XATTR support not configured for your machine.\n"
-msgstr ""
-
-#: src/filed/job.c:1853
-msgid "Cannot contact Storage daemon\n"
-msgstr ""
-
-#: src/filed/job.c:1872
-#, c-format
-msgid "Bad response to append open: %s\n"
-msgstr ""
-
-#: src/filed/job.c:1877
-msgid "Bad response from stored to open command\n"
-msgstr ""
-
-#: src/filed/job.c:1909
-#, c-format
-msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
-msgstr ""
-
-#: 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:1919
-#, c-format
-msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
-msgstr ""
-
-#: src/filed/job.c:1925
-#, c-format
-msgid "VSS Writer (PrepareForBackup): %s\n"
-msgstr ""
-
-#: src/filed/job.c:1930
-msgid "No drive letters found for generating VSS snapshots.\n"
-msgstr ""
-
-#: 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:1985
-msgid "Append Close with SD failed.\n"
-msgstr ""
-
-#: src/filed/job.c:1989
-#, c-format
-msgid "Bad status %d returned from Storage Daemon.\n"
-msgstr ""
-
-#: src/filed/job.c:2019
-#, c-format
-msgid "2994 Bad verify command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:2034 src/filed/job.c:2075
-#, c-format
-msgid "2994 Bad verify level: %s\n"
-msgstr ""
-
-#: src/filed/job.c:2146
-#, c-format
-msgid "Bad replace command. CMD=%s\n"
-msgstr ""
-
-#: src/filed/job.c:2169
-#, c-format
-msgid "Bad where regexp. where=%s\n"
-msgstr ""
-
-#: 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:2252
-#, c-format
-msgid "VSS Writer (RestoreComplete): %s\n"
-msgstr ""
-
-#: src/filed/job.c:2302
-msgid "Improper calling sequence.\n"
-msgstr ""
-
-#: src/filed/job.c:2322
-#, c-format
-msgid "Bad response to SD read open: %s\n"
-msgstr ""
-
-#: src/filed/job.c:2327
-msgid "Bad response from stored to read open command\n"
-msgstr ""
-
-#: src/filed/job.c:2391
-#, c-format
-msgid "Comm error with SD. bad response to %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:2394
-#, c-format
-msgid "Bad response to %s command. Wanted %s, got %s\n"
-msgstr ""
-
-#: src/filed/authenticate.c:68
-#, c-format
-msgid "I only authenticate directors, not %d\n"
-msgstr ""
-
-#: src/filed/authenticate.c:100
-#, fuzzy, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
-msgstr "unbekannt"
-
-#: src/filed/authenticate.c:144
-#, c-format
-msgid "Incorrect password given by Director at %s.\n"
-msgstr ""
-
-#: src/filed/authenticate.c:263
-msgid ""
-"Authorization key rejected by Storage daemon.\n"
-"Please see "
-msgstr ""
-
-#: examples/nagios/check_bacula/check_bacula.c:59
-#, c-format
-msgid ""
-"Copyright (C) 2005 Christian Masopust\n"
-"Written by Christian Masopust (2005)\n"
-"\n"
-"Version: "
-msgstr ""
-
-#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
-#, c-format
-msgid "Failed ASSERT: %s\n"
-msgstr ""
-
-#: src/win32/compat/compat.cpp:2721
-#, fuzzy
-msgid ""
-"\n"
-"\n"
-"Bacula ERROR: "
-msgstr "Bacula "
-
-#: src/win32/libwin32/service.cpp:107
-msgid "RegisterServiceCtlHandler failed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:108
-msgid "Failure contacting the Service Handler"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:119
-msgid "Service start report failed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:172
-msgid "StartServiceCtrlDispatcher failed."
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:179
-msgid "KERNEL32.DLL not found: Bacula service not started"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:189
-msgid "Registry service not found: Bacula service not started"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
+#~ "       -b bootstrap      specify a bootstrap file\n"
+#~ "       -c <file>         specify a Storage configuration file\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -i                specify input Volume names (separated by |)\n"
+#~ "       -o                specify output Volume names (separated by |)\n"
+#~ "       -p                proceed inspite of errors\n"
+#~ "       -v                verbose\n"
+#~ "       -w <dir>          specify working directory (default /tmp)\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "       -c <file>   setze Konfigurationsdatei auf Datei\n"
+#~ "       -dnn        setze debug level auf nn\n"
+#~ "       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
+#~ "       -g          groupid\n"
+#~ "       -r <job>    starte <job> jetzt\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - Konfiguration Lesen und beenden\n"
+#~ "       -u          userid\n"
+#~ "       -v          ausf�hrliche Benutzer Meldungen\n"
+#~ "       -?          diese Meldung ausgeben.\n"
+#~ "\n"
 
-#: src/win32/libwin32/service.cpp:191
 #, fuzzy
-msgid "Registry service entry point not found"
-msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
-
-#: src/win32/libwin32/service.cpp:212
-msgid "Report Service failure"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:243
-msgid "Unable to install the service"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:251
-msgid "Service command length too long"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:252
-msgid "Service command length too long. Service not registered."
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:265
-msgid ""
-"The Service Control Manager could not be contacted - the service was not "
-"installed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:288 src/win32/libwin32/service.cpp:317
-#: src/win32/libwin32/service.cpp:365 src/win32/libwin32/service.cpp:373
-#: src/win32/libwin32/service.cpp:377
-msgid "The Bacula service: "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:295
-msgid ""
-"Provides file backup and restore services. Bacula -- the network backup "
-"solution."
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:306
-msgid "Cannot write System Registry for "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:307
-msgid ""
-"The System Registry could not be updated - the Bacula service was not "
-"installed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:316
-msgid "Cannot add Bacula key to System Registry"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:327
-msgid "The "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:385
-msgid "An existing Bacula service: "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:394
-msgid ""
-"The service Manager could not be contacted - the Bacula service was not "
-"removed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:407
-msgid ""
-"Could not find registry entry.\n"
-"Service probably not registerd - the Bacula service was not removed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:414
-msgid "Could not delete Registry key for "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:425
-msgid "Bacula could not be contacted, probably not running"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:433
-msgid "The Bacula service has been removed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:474
-msgid "SetServiceStatus failed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:500
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s error: %ld at %s:%d"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:576
-#, c-format
-msgid "Locked by: %s, duration: %ld seconds\n"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:580
-#, c-format
-msgid "No longer locked\n"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:584
-msgid "Could not lock database"
-msgstr ""
-
-#: src/win32/libwin32/main.cpp:245
-msgid "Bad Command Line Option"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:65
-msgid "Config file editor"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bextract <options> <bacula-archive-device-name> <directory-to-"
+#~ "store-files>\n"
+#~ "       -b <file>       specify a bootstrap file\n"
+#~ "       -c <file>       specify a Storage configuration file\n"
+#~ "       -d <nn>         set debug level to <nn>\n"
+#~ "       -dt             print timestamp in debug output\n"
+#~ "       -e <file>       exclude list\n"
+#~ "       -i <file>       include list\n"
+#~ "       -p              proceed inspite of I/O errors\n"
+#~ "       -v              verbose\n"
+#~ "       -V <volumes>    specify Volume names (separated by |)\n"
+#~ "       -?              print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bacula-fd [-f -s] [-c config_datei] [-d debug_level]\n"
+#~ "        -c <Datei>   benutze <Datei> als Konfigurationsdatei\n"
+#~ "        -dnn        setze debug level auf nn\n"
+#~ "        -f          starte in Vordergrund (f�r debugging)\n"
+#~ "        -g          groupid\n"
+#~ "        -s          no signals (f�r debugging)\n"
+#~ "        -t          Konfigurationsdatei testen und beenden\n"
+#~ "        -u          userid\n"
+#~ "        -v          Ausf�hrliche Benutzermeldungen\n"
+#~ "        -?          diese Meldung ausgeben.\n"
+#~ "\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:75
 #, fuzzy
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
-
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr ""
+#~ msgid "LZO uncompression error. ERR=%d\n"
+#~ msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:112
 #, fuzzy
-msgid "Close without saving"
-msgstr "%s OK -- mit Warnungen"
-
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-#, fuzzy, c-format
-msgid "Unable to write to %s\n"
-msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
+#~ msgid "Job failed or canceled.\n"
+#~ msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:140
 #, fuzzy
-msgid "Error while saving"
-msgstr "Fehler beim schreiben der bsr Datei.\n"
+#~ msgid ""
+#~ "User defined maximum volume size %s will be exceeded on device %s.\n"
+#~ "   Marking Volume \"%s\" as Full.\n"
+#~ msgstr "\"Max Volume bytes\"erreicht. Markiere Volume \"%s\" als Voll.\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 "Job Ressource"
+#~ msgid "Error sending Volume info to Director.\n"
+#~ msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:237
 #, fuzzy
-msgid "Cancel restore"
-msgstr "Job Ressource"
-
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
-msgid "Remove"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
-msgid "Refresh"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bls [options] <device-name>\n"
+#~ "       -b <file>       specify a bootstrap file\n"
+#~ "       -c <file>       specify a Storage configuration file\n"
+#~ "       -d <nn>         set debug level to <nn>\n"
+#~ "       -dt             print timestamp in debug output\n"
+#~ "       -e <file>       exclude list\n"
+#~ "       -i <file>       include list\n"
+#~ "       -j              list jobs\n"
+#~ "       -k              list blocks\n"
+#~ "    (no j or k option) list saved files\n"
+#~ "       -L              dump label\n"
+#~ "       -p              proceed inspite of errors\n"
+#~ "       -v              be verbose\n"
+#~ "       -V              specify Volume names (separated by |)\n"
+#~ "       -?              print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "       -c <file>   setze Konfigurationsdatei auf Datei\n"
+#~ "       -dnn        setze debug level auf nn\n"
+#~ "       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
+#~ "       -g          groupid\n"
+#~ "       -r <job>    starte <job> jetzt\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - Konfiguration Lesen und beenden\n"
+#~ "       -u          userid\n"
+#~ "       -v          ausf�hrliche Benutzer Meldungen\n"
+#~ "       -?          diese Meldung ausgeben.\n"
+#~ "\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:290
 #, fuzzy
-msgid "Filename"
-msgstr "FileSet: name=%s\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:294
-msgid "Size"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1897
-msgid "Job Name"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1153
-#: src/wx-console/wxbrestorepanel.cpp:1156
-#: src/wx-console/wxbrestorepanel.cpp:1239
-#: src/wx-console/wxbrestorepanel.cpp:1849
-#: src/wx-console/wxbrestorepanel.cpp:1851
-#: src/wx-console/wxbrestorepanel.cpp:1912
-msgid "Fileset"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1233
-#: src/wx-console/wxbrestorepanel.cpp:1249
-#: src/wx-console/wxbrestorepanel.cpp:1251
-#: src/wx-console/wxbrestorepanel.cpp:1259
-#: src/wx-console/wxbrestorepanel.cpp:1261
-#: src/wx-console/wxbrestorepanel.cpp:1280
-#: src/wx-console/wxbrestorepanel.cpp:1287
-#: src/wx-console/wxbrestorepanel.cpp:1839
-#: src/wx-console/wxbrestorepanel.cpp:1850
-#: src/wx-console/wxbrestorepanel.cpp:1971
-msgid "Before"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:342
-msgid "Please configure parameters concerning files to restore :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1905
-msgid "always"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if newer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if older"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1908
-msgid "never"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:359
-msgid "Please configure parameters concerning files restoration :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr ""
+#~ msgid "Could not get Client record. ERR=%s\n"
+#~ msgstr "Konnte Client Eintrag nicht anlegen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:435
-msgid "Error : no clients returned by the director."
-msgstr ""
+#, fuzzy
+#~ msgid "Volume type error: ERR=%s\n"
+#~ msgstr "Attribute create error. %s"
 
-#: src/wx-console/wxbrestorepanel.cpp:459
-msgid "Error : no filesets returned by the director."
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Error writing record to block.\n"
+#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:483
-msgid "Error : no storage returned by the director."
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Error writing block to device.\n"
+#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
-msgid "Error : no jobs returned by the director."
-msgstr ""
+#, fuzzy
+#~ msgid "Flush block failed.\n"
+#~ msgstr "Job Einrichtung Fehlgeschlagen.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:516
 #, fuzzy
-msgid "RestoreFiles"
-msgstr "Wiederherstellung l�uft..."
+#~ msgid "Job canceled.\n"
+#~ msgstr "%s Abgebrochen"
 
-#: src/wx-console/wxbrestorepanel.cpp:551
-msgid "Please configure your restore parameters."
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: btape <options> <device_name>\n"
+#~ "       -b <file>   specify bootstrap 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"
+#~ "       -p          proceed inspite of I/O errors\n"
+#~ "       -s          turn off signals\n"
+#~ "       -v          be verbose\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "       -c <file>   setze Konfigurationsdatei auf Datei\n"
+#~ "       -dnn        setze debug level auf nn\n"
+#~ "       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
+#~ "       -g          groupid\n"
+#~ "       -r <job>    starte <job> jetzt\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - Konfiguration Lesen und beenden\n"
+#~ "       -u          userid\n"
+#~ "       -v          ausf�hrliche Benutzer Meldungen\n"
+#~ "       -?          diese Meldung ausgeben.\n"
+#~ "\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:556
-msgid "Please select a client."
-msgstr ""
+#, fuzzy
+#~ 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/wx-console/wxbrestorepanel.cpp:560
-msgid "Please select a restore date."
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init spool mutex: ERR=%s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:565
-msgid "Building restore tree..."
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init acquire mutex: ERR=%s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:613
 #, fuzzy
-msgid "Error while starting restore: "
-msgstr "Fehler beim schreiben der bsr Datei.\n"
+#~ msgid "Unable to init read acquire mutex: ERR=%s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:705
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init volcat mutex: ERR=%s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:720 src/wx-console/wxbmainframe.cpp:685
-msgid "Unexpected question has been received.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init dcrs mutex: ERR=%s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:742
-#: src/wx-console/wxbrestorepanel.cpp:764
-msgid "bwx-console: unexpected restore question."
-msgstr ""
+#, fuzzy
+#~ msgid "Bad client command: %s"
+#~ msgstr "Storage daemon hat \"Job command\": %s abgelehnt\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:775
 #, fuzzy
-msgid " files selected to be restored."
-msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
+#~ msgid "Client daemon"
+#~ msgstr "File daemon"
 
-#: src/wx-console/wxbrestorepanel.cpp:780
-msgid " file selected to be restored."
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to connect to Client daemon: %s:%d\n"
+#~ msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:787
-#, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
+#, fuzzy
+#~ msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
+#~ msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:797
 #, fuzzy
-msgid "Restore failed : no file selected.\n"
-msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
+#~ msgid "3910 Unable to open device \"%s\": ERR=%s\n"
+#~ msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:798
 #, fuzzy
-msgid "Restore failed : no file selected."
-msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
+#~ msgid "3915 Failed to label Volume: ERR=%s\n"
+#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:808
 #, fuzzy
-msgid "Restoring, please wait..."
-msgstr "Wiederherstellung l�uft..."
+#~ msgid "Specified slot ignored. "
+#~ msgstr "SQL fehlgeschlagen ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:821
-msgid "Job queued. JobId="
-msgstr ""
+#, fuzzy
+#~ msgid "3901 Unable to open device \"%s\": ERR=%s\n"
+#~ msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:823
-msgid "Restore queued, jobid="
-msgstr ""
+#, fuzzy
+#~ msgid "3930 Device \"%s\" is being released.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:827
 #, fuzzy
-msgid "Job failed."
-msgstr "%s Abgebrochen"
+#~ msgid "3905 Unknown wait state %d\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:828
-msgid "Restore failed, please look at messages.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3002 Device \"%s\" unmounted.\n"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:829
-msgid "Restore failed, please look at messages in console."
-msgstr ""
+#, fuzzy
+#~ msgid "3901 Device \"%s\" is already unmounted.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:835
-#: src/wx-console/wxbrestorepanel.cpp:836
 #, fuzzy
-msgid "Failed to retrieve jobid.\n"
-msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
+#~ msgid "3001 Device \"%s\" unmounted.\n"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:862
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3921 Device \"%s\" already released.\n"
+#~ msgstr "Device Eintrag %s bereits vorhanden\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:863
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion."
-msgstr ""
+#, fuzzy
+#~ msgid "3923 Device \"%s\" is busy in acquire.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job created, but not yet running."
-msgstr ""
+#, fuzzy
+#~ msgid "3998 Device \"%s\" is not an autochanger.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:894
-#, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr ""
+#, fuzzy
+#~ msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:898
-msgid "Restore job terminated successfully."
-msgstr ""
+#, fuzzy
+#~ msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:899
-msgid "Restore job terminated successfully.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3936 Device \"%s\" is busy reading.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:904
-msgid "Restore job terminated in error, see messages in console."
-msgstr ""
+#, fuzzy
+#~ msgid "Command error with FD, hanging up. ERR=%s\n"
+#~ msgstr "Netzwerkfehler mit FD bei %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:905
-msgid "Restore job terminated in error, see messages.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "FD command not found: %s\n"
+#~ msgstr "Job nicht gefunden: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:910
 #, fuzzy
-msgid "Restore job reported a non-fatal error."
-msgstr "Attribute create error. %s"
+#~ msgid "Could not open(%s,%s,0640): ERR=%s\n"
+#~ msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:914
 #, fuzzy
-msgid "Restore job reported a fatal error."
-msgstr "Attribute create error. %s"
+#~ msgid "Unable to stat device %s. ERR=%s\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:919
-msgid "Restore job cancelled by user."
-msgstr ""
+#, fuzzy
+#~ msgid "Could not reopen: %s, ERR=%s\n"
+#~ msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:920
-msgid "Restore job cancelled by user.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Recv request to Client failed. ERR=%s\n"
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/wx-console/wxbrestorepanel.cpp:925
 #, fuzzy
-msgid "Restore job is waiting on File daemon."
-msgstr "File daemon"
+#~ msgid "FD connect failed: Job name not found: %s\n"
+#~ msgstr "Job nicht gefunden: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:929
-msgid "Restore job is waiting for new media."
-msgstr ""
+#, fuzzy
+#~ msgid "Couldn't rewind %s device %s: ERR=%s\n"
+#~ msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:933
 #, fuzzy
-msgid "Restore job is waiting for storage resource."
-msgstr "Storage daemon"
+#~ msgid "Could not reserve volume %s on %s device %s\n"
+#~ msgstr "Konnte FileSet \"%s\" Eintrag nicht erzeugen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:937
-msgid "Restore job is waiting for job resource."
-msgstr ""
+#, fuzzy
+#~ msgid "Open %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Erzeugung von db Device Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:941
-msgid "Restore job is waiting for Client resource."
-msgstr ""
+#, fuzzy
+#~ msgid "Rewind error on %s device %s: ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:945
-msgid "Restore job is waiting for maximum jobs."
-msgstr ""
+#, fuzzy
+#~ msgid "Truncate error on %s device %s: ERR=%s\n"
+#~ msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:949
 #, fuzzy
-msgid "Restore job is waiting for start time."
-msgstr "Job %s wartet %d Sekunden auf die geplante Startzeit.\n"
+#~ msgid "Failed to re-open DVD after truncate on %s device %s: ERR=%s\n"
+#~ msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:953
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to write %s device %s: ERR=%s\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1002
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "pthread_cond_wait failure. ERR=%s\n"
+#~ msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
+#, fuzzy
+#~ msgid "unknown blocked code"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:1013
-msgid "Restore done successfully.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Open of %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Erzeugung von db Device Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1014
-msgid "Restore done successfully."
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to position to end of data on %s device %s: ERR=%s\n"
+#~ msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1086
-msgid "Applying restore configuration changes..."
-msgstr ""
+#, fuzzy
+#~ msgid "Volume \"%s\" not on %s device %s.\n"
+#~ msgstr "1997 Volume \"%s\" Nicht in Catalog.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1138
-msgid "Failed to find the selected client."
-msgstr ""
+#, fuzzy
+#~ msgid "Error updating Catalog\n"
+#~ msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1158
-msgid "Failed to find the selected fileset."
-msgstr ""
+#, fuzzy
+#~ msgid "Labeled new Volume \"%s\" on %s device %s.\n"
+#~ msgstr "Neues Volume \"%s\" in catalog erzeugt.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1178
 #, fuzzy
-msgid "Failed to find the selected storage."
-msgstr "Verbindung zu Storage daemon fehlgeschlagen.\n"
+#~ msgid "%s device %s not configured to autolabel Volumes.\n"
+#~ msgstr "TLS ben�tigt aber nicht konfiguriert in Bacula.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1199
-#: src/wx-console/wxbrestorepanel.cpp:1886
 #, fuzzy
-msgid "Run Restore job"
-msgstr "Konnte Migrationsjob nicht starten.\n"
+#~ msgid "unknown func code %d"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:1216
-msgid "Restore configuration changes were applied."
-msgstr ""
+#, fuzzy
+#~ msgid "REGEX '%s' compile error. ERR=%s\n"
+#~ msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1225
 #, fuzzy
-msgid "Restore cancelled.\n"
-msgstr "%s Abgebrochen"
+#~ msgid "unknown: %d"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:1226
 #, fuzzy
-msgid "Restore cancelled."
-msgstr "%s Abgebrochen"
+#~ msgid "Device reservation failed for JobId=%d: %s\n"
+#~ msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1248
 #, fuzzy
-msgid "No results to list."
-msgstr "Keine Ergebnisse zu \"list\" Kommando.\n"
+#~ msgid "3603 JobId=%u %s device %s is busy reading.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:1250
 #, fuzzy
-msgid "No backup found for this client."
-msgstr "Kein Job gefunden f�r: %s.\n"
+#~ msgid "3911 JobId=%u failed reserve %s device %s.\n"
+#~ msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1257
-msgid "ERROR"
-msgstr ""
+#, fuzzy
+#~ msgid "Network error on BlastAttributes.\n"
+#~ msgstr "<filed: Netzwerkfehler beim Holen der Attribute. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1258
 #, fuzzy
-msgid "Query failed"
-msgstr "Abfrage fehlgeschlagen: %s\n"
+#~ msgid "*unknown*"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:1260
-msgid "Cannot get previous backups list, see console."
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Device %s is not open.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:1896
-msgid "JobName:"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Device \"%s\" is not open or does not exist.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:1898
 #, fuzzy
-msgid "Bootstrap:"
-msgstr "  --> Bootstrap=%s\n"
+#~ msgid "Attached JobsIds: "
+#~ msgstr "ist nicht aktiviert"
 
-#: src/wx-console/wxbrestorepanel.cpp:1900
-msgid "Where:"
-msgstr ""
+#, fuzzy
+#~ msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
+#~ msgstr "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1903
-msgid "Replace:"
-msgstr ""
+#, fuzzy
+#~ msgid "3900 Unknown arg in .status command: %s\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:1906
-msgid "ifnewer"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\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"
+#~ "        -f          run in foreground (for debugging)\n"
+#~ "        -g <group>  set groupid to group\n"
+#~ "        -m          print kaboom output (for debugging)\n"
+#~ "        -p          proceed despite I/O errors\n"
+#~ "        -s          no signals (for debugging)\n"
+#~ "        -t          test - read config and exit\n"
+#~ "        -u <user>   userid to <user>\n"
+#~ "        -v          verbose user messages\n"
+#~ "        -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bacula-fd [-f -s] [-c config_datei] [-d debug_level]\n"
+#~ "        -c <Datei>   benutze <Datei> als Konfigurationsdatei\n"
+#~ "        -dnn        setze debug level auf nn\n"
+#~ "        -f          starte in Vordergrund (f�r debugging)\n"
+#~ "        -g          groupid\n"
+#~ "        -s          no signals (f�r debugging)\n"
+#~ "        -t          Konfigurationsdatei testen und beenden\n"
+#~ "        -u          userid\n"
+#~ "        -v          Ausf�hrliche Benutzermeldungen\n"
+#~ "        -?          diese Meldung ausgeben.\n"
+#~ "\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1907
-msgid "ifolder"
-msgstr ""
+#, fuzzy
+#~ msgid "Warning: unknown resource type %d\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:1911
 #, fuzzy
-msgid "FileSet:"
-msgstr "FileSet: name=%s\n"
+#~ msgid "Unable to init lock: ERR=%s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1913
-msgid "Client:"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to initialize volume list lock. ERR=%s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1915
 #, fuzzy
-msgid "Storage:"
-msgstr "Storage daemon"
+#~ msgid "Could not reserve volume \"%s\", because job canceled.\n"
+#~ msgstr "Konnte FileSet \"%s\" Eintrag nicht erzeugen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1917
-msgid "When:"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Could not reserve volume \"%s\" for append, because it will be read.\n"
+#~ msgstr "Konnte FileSet \"%s\" Eintrag nicht erzeugen. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1920
-msgid "Priority:"
-msgstr ""
+#, fuzzy
+#~ msgid "Volume %s is busy swapping.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbrestorepanel.cpp:2028
-msgid "Restoring..."
-msgstr "Wiederherstellung l�uft..."
+#, fuzzy
+#~ msgid "%s device %s is busy.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/console_thread.cpp:125
-#, 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"
+#, fuzzy
+#~ msgid "JobId=%s, Job %s waiting to reserve a device.\n"
+#~ msgstr "JobId %s, Job %s zum Abbruch markiert.\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"
+#~ msgid "JobId=%s, Job %s waiting device %s.\n"
+#~ msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
 
-#: src/wx-console/console_thread.cpp:151
-#, 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"
+#, fuzzy
+#~ msgid "Error opening datafile %s\n"
+#~ msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/wx-console/console_thread.cpp:173
 #, fuzzy
-msgid "Error while initializing windows sockets...\n"
-msgstr "Fehler beim schreiben der bsr Datei.\n"
+#~ msgid "Error while inserting file\n"
+#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/wx-console/console_thread.cpp:189
-msgid "Error while cleaning up windows sockets...\n"
-msgstr ""
+#, fuzzy
+#~ 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"
+#~ "       -f          set the From: field\n"
+#~ "       -h          use mailhost:port as the SMTP server\n"
+#~ "       -s          set the Subject: field\n"
+#~ "       -r          set the Reply-To: field\n"
+#~ "       -l          set the maximum number of lines to send (default: "
+#~ "unlimited)\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "       -c <file>   setze Konfigurationsdatei auf Datei\n"
+#~ "       -dnn        setze debug level auf nn\n"
+#~ "       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
+#~ "       -g          groupid\n"
+#~ "       -r <job>    starte <job> jetzt\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - Konfiguration Lesen und beenden\n"
+#~ "       -u          userid\n"
+#~ "       -v          ausf�hrliche Benutzer Meldungen\n"
+#~ "       -?          diese Meldung ausgeben.\n"
+#~ "\n"
 
-#: src/wx-console/console_thread.cpp:228
 #, fuzzy
-msgid "Error while initializing library."
-msgstr "Fehler beim schreiben der bsr Datei.\n"
+#~ msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+#~ msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/wx-console/console_thread.cpp:256
 #, fuzzy
-msgid "Cryptographic library initialization failed.\n"
-msgstr "Initialisierung der Verschl�sselungsbibliothek fehlgeschlagen.\n"
+#~ msgid "Error unknown mail host \"%s\": ERR=%s\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/console_thread.cpp:260
 #, fuzzy
-msgid "Please correct configuration file.\n"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "Failed to connect to mailhost %s\n"
+#~ msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
 
-#: src/wx-console/console_thread.cpp:302
 #, fuzzy
-msgid "Error : Library not initialized\n"
-msgstr "Initialisierung der Verschl�sselungsbibliothek fehlgeschlagen.\n"
+#~ msgid "Could not open, database \"%s\".\n"
+#~ msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/wx-console/console_thread.cpp:313
 #, fuzzy
-msgid "Error : No configuration file loaded\n"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "%s: unknown\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/console_thread.cpp:323
 #, fuzzy
-msgid "Connecting...\n"
-msgstr "Wiederherstellung l�uft..."
+#~ msgid "Invalid jobid argument\n"
+#~ msgstr "Ung�ltige JobId gefunden.\n"
 
-#: src/wx-console/console_thread.cpp:339
 #, fuzzy
-msgid "Error : No director defined in config file.\n"
-msgstr "Keine Job records definiert in %s\n"
+#~ msgid "Unknown ObjectType %s\n"
+#~ msgstr "Unbekannter \"Migration Selection Type\".\n"
 
-#: src/wx-console/console_thread.cpp:351
-msgid "Multiple directors found in your config file.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot open current directory: ERR=%s\n"
+#~ msgstr "Kann inkludierte Datei nicht �ffnen: %s. ERR=%s\n"
 
-#: src/wx-console/console_thread.cpp:360
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot get current directory: ERR=%s\n"
+#~ msgstr "kann Variable operate nicht setzen: ERR=%s\n"
 
-#: src/wx-console/console_thread.cpp:389
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot reset current directory: ERR=%s\n"
+#~ msgstr "kann Variable operate nicht setzen: ERR=%s\n"
 
-#: src/wx-console/console_thread.cpp:410
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr ""
+#, fuzzy
+#~ msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
+#~ msgstr "Erzeugung des db Path Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/wx-console/console_thread.cpp:432
 #, fuzzy
-msgid "Failed to connect to the director\n"
-msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
+#~ msgid "VSS was not initialized properly. ERR=%s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/wx-console/console_thread.cpp:442
-msgid "Connected\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Disable a job"
+#~ msgstr "ist nicht aktiviert"
 
-#: src/wx-console/console_thread.cpp:499
-msgid "<< Unexpected signal received : "
-msgstr ""
+#, fuzzy
+#~ msgid "Illegal JobId %s ignored\n"
+#~ msgstr "Clone JobId %d gestartet.\n"
 
-#: src/wx-console/console_thread.cpp:519
-msgid "Connection terminated\n"
-msgstr ""
+#~ msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
+#~ msgstr "1992 Update Media Fehler. VolFiles=%u, CatFiles=%u\n"
 
-#: src/wx-console/wxbconfigpanel.cpp:213
-msgid "Apply"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Written by Nicolas Boichat (2004)\n"
+#~ "\n"
+#~ "Version: %s (%s) %s %s %s\n"
+#~ "\n"
+#~ "Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+#~ "       -c <file>     set configuration file to file\n"
+#~ "       -d <nn>       set debug level to <nn>\n"
+#~ "       -dt           print timestamp in debug output\n"
+#~ "       -t            test - read configuration and exit\n"
+#~ "       -?            print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "       -c <file>   setze Konfigurationsdatei auf Datei\n"
+#~ "       -dnn        setze debug level auf nn\n"
+#~ "       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
+#~ "       -g          groupid\n"
+#~ "       -r <job>    starte <job> jetzt\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - Konfiguration Lesen und beenden\n"
+#~ "       -u          userid\n"
+#~ "       -v          ausf�hrliche Benutzer Meldungen\n"
+#~ "       -?          diese Meldung ausgeben.\n"
+#~ "\n"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-#: src/wx-console/wxbmainframe.cpp:291
-msgid "Type your command below:"
-msgstr ""
+#, fuzzy
+#~ msgid "Append data error.\n"
+#~ msgstr "unbekannt"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:117
 #, fuzzy
-msgid "Unknown command."
-msgstr "unbekannt"
+#~ msgid "Truncate on attributes file failed: ERR=%s\n"
+#~ msgstr "Abfrage gescheitert: %s: ERR=%s\n"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:126
-msgid "Possible completions: "
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Unable to connect to Ingres server.\n"
+#~ "Database=%s User=%s\n"
+#~ "It is probably not running or your password is incorrect.\n"
+#~ msgstr ""
+#~ "Kann Verbindung zu MySQL Server nicht aufbauen. \n"
+#~ "Datenbank=%s Benutzer=%s\n"
+#~ "Der Datenbankserver  l�uft m�glicherweise nicht oder das Passwort ist "
+#~ "nicht korrekt.\n"
 
-#: src/wx-console/main.cpp:119
 #, fuzzy
-msgid "Bacula bwx-console"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "A user name for Ingres must be supplied.\n"
+#~ msgstr "Ein Benutzername f�r MySQL muss angegeben werden.\n"
 
-#: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
-#, c-format
-msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
+#~ "Possible causes: SQL server not running; password incorrect; "
+#~ "max_connections exceeded.\n"
+#~ msgstr ""
+#~ "Kann Verbindung zu  PostgreSQL Server nicht aufbauen.\n"
+#~ "Datenbank=%s  Benutzer=%s\n"
+#~ "Der Datenbankserver l�uft m�glicherweise nicht oder das Passwort ist "
+#~ "nicht korrekt.\n"
 
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr ""
+#, fuzzy
+#~ msgid "error inserting batch mode: %s"
+#~ msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr ""
+#, fuzzy
+#~ msgid "Driver type not specified in Catalog resource.\n"
+#~ msgstr "Schl�sselwort %s ist in dieser Ressource nicht erlaubt."
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
-msgid "Connect"
-msgstr ""
+#, fuzzy
+#~ msgid "A user name for DBI must be supplied.\n"
+#~ msgstr "Ein Benutzername f�r MySQL muss angegeben werden.\n"
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
-msgid "Connect to the director"
-msgstr ""
+#, fuzzy
+#~ msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
+#~ msgstr "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "Bacula ERROR: "
+#~ msgstr "Bacula "
 
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect of the director"
-msgstr ""
+#, fuzzy
+#~ msgid "Registry service entry point not found"
+#~ msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/wx-console/wxbmainframe.cpp:251
 #, fuzzy
-msgid "Change of configuration file"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "Close without saving"
+#~ msgstr "%s OK -- mit Warnungen"
 
-#: src/wx-console/wxbmainframe.cpp:251
 #, fuzzy
-msgid "Change your default configuration file"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "Unable to write to %s\n"
+#~ msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/wx-console/wxbmainframe.cpp:252
 #, fuzzy
-msgid "Edit your configuration file"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "Error while saving"
+#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr ""
+#, fuzzy
+#~ msgid "Enter restore mode"
+#~ msgstr "Job Ressource"
 
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr ""
+#, fuzzy
+#~ msgid "Cancel restore"
+#~ msgstr "Job Ressource"
 
-#: src/wx-console/wxbmainframe.cpp:258
-msgid "&File"
-msgstr ""
+#, fuzzy
+#~ msgid "Filename"
+#~ msgstr "FileSet: name=%s\n"
 
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr ""
+#, fuzzy
+#~ msgid "RestoreFiles"
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/wx-console/wxbmainframe.cpp:283
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error while starting restore: "
+#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
+#, fuzzy
+#~ msgid " files selected to be restored."
+#~ msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore failed : no file selected.\n"
+#~ msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore failed : no file selected."
+#~ msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restoring, please wait..."
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
+#, fuzzy
+#~ msgid "Job failed."
+#~ msgstr "%s Abgebrochen"
 
-#: src/wx-console/wxbmainframe.cpp:419
-msgid "First run"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to retrieve jobid.\n"
+#~ msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
 
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore job reported a non-fatal error."
+#~ msgstr "Attribute create error. %s"
 
-#: src/wx-console/wxbmainframe.cpp:438
 #, fuzzy
-msgid "Unable to read configuration file"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "Restore job reported a fatal error."
+#~ msgstr "Attribute create error. %s"
 
-#: src/wx-console/wxbmainframe.cpp:450
 #, fuzzy
-msgid "Please choose a configuration file to use"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "Restore job is waiting on File daemon."
+#~ msgstr "File daemon"
 
-#: src/wx-console/wxbmainframe.cpp:463
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore job is waiting for storage resource."
+#~ msgstr "Storage daemon"
 
-#: src/wx-console/wxbmainframe.cpp:464
-msgid "Configuration file read successfully"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to find the selected storage."
+#~ msgstr "Verbindung zu Storage daemon fehlgeschlagen.\n"
 
-#: src/wx-console/wxbmainframe.cpp:474
-#, fuzzy, c-format
-msgid "Using this configuration file: %s\n"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#, fuzzy
+#~ msgid "Run Restore job"
+#~ msgstr "Konnte Migrationsjob nicht starten.\n"
 
-#: src/wx-console/wxbmainframe.cpp:479
-msgid "Connecting to the director..."
-msgstr ""
+#, fuzzy
+#~ msgid "Restore cancelled."
+#~ msgstr "%s Abgebrochen"
 
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr ""
+#, fuzzy
+#~ msgid "No results to list."
+#~ msgstr "Keine Ergebnisse zu \"list\" Kommando.\n"
 
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No backup found for this client."
+#~ msgstr "Kein Job gefunden f�r: %s.\n"
 
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Query failed"
+#~ msgstr "Abfrage fehlgeschlagen: %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:521
-msgid "About Bacula bwx-console"
-msgstr ""
+#, fuzzy
+#~ msgid "Bootstrap:"
+#~ msgstr "  --> Bootstrap=%s\n"
 
-#: src/wx-console/wxbmainframe.cpp:527
 #, fuzzy
-msgid "Please choose your default configuration file"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "FileSet:"
+#~ msgstr "FileSet: name=%s\n"
 
-#: src/wx-console/wxbmainframe.cpp:531
 #, fuzzy
-msgid "Use this configuration file as default?"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ msgid "Storage:"
+#~ msgstr "Storage daemon"
+
+#~ msgid "Restoring..."
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/wx-console/wxbmainframe.cpp:532
 #, fuzzy
-msgid "Configuration file"
-msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
+#~ 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/wxbmainframe.cpp:603
-msgid "Console thread terminated."
-msgstr ""
+#, 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/wxbmainframe.cpp:611
-msgid "Connection to the director lost. Quit program?"
-msgstr ""
+#, fuzzy
+#~ 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/wxbmainframe.cpp:612
-msgid "Connection lost"
-msgstr ""
+#, fuzzy
+#~ msgid "Error while initializing windows sockets...\n"
+#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/wx-console/wxbmainframe.cpp:628
-msgid "Connected to the director."
-msgstr ""
+#, fuzzy
+#~ msgid "Error while initializing library."
+#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/wx-console/wxbmainframe.cpp:651
-msgid "Reconnect"
-msgstr ""
+#, fuzzy
+#~ msgid "Cryptographic library initialization failed.\n"
+#~ msgstr "Initialisierung der Verschl�sselungsbibliothek fehlgeschlagen.\n"
 
-#: src/wx-console/wxbmainframe.cpp:652
-msgid "Reconnect to the director"
-msgstr ""
+#, fuzzy
+#~ msgid "Please correct configuration file.\n"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:666
-msgid "Disconnected of the director."
-msgstr ""
+#, fuzzy
+#~ msgid "Error : Library not initialized\n"
+#~ msgstr "Initialisierung der Verschl�sselungsbibliothek fehlgeschlagen.\n"
 
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr ""
+#, fuzzy
+#~ msgid "Error : No configuration file loaded\n"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/qt-console/tray-monitor/tray-monitor.cpp:67
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"       -c <file>   setze Konfigurationsdatei auf Datei\n"
-"       -dnn        setze debug level auf nn\n"
-"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
-"       -g          groupid\n"
-"       -r <job>    starte <job> jetzt\n"
-"       -s          no signals\n"
-"       -t          test - Konfiguration Lesen und beenden\n"
-"       -u          userid\n"
-"       -v          ausf�hrliche Benutzer Meldungen\n"
-"       -?          diese Meldung ausgeben.\n"
-"\n"
+#, fuzzy
+#~ msgid "Connecting...\n"
+#~ msgstr "Wiederherstellung l�uft..."
 
-#: src/qt-console/bcomm/dircomm.cpp:92
-#, c-format
-msgid "Already connected\"%s\".\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error : No director defined in config file.\n"
+#~ msgstr "Keine Job records definiert in %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:105
-#, c-format
-msgid ""
-"Connecting to Director %s:%d\n"
-"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to connect to the director\n"
+#~ msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:208
-msgid "Initializing ..."
-msgstr ""
+#, fuzzy
+#~ msgid "Unknown command."
+#~ msgstr "unbekannt"
 
-#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
-msgid "Connected"
-msgstr ""
+#, fuzzy
+#~ msgid "Change of configuration file"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:348
-msgid "Command completed ..."
-msgstr ""
+#, fuzzy
+#~ msgid "Change your default configuration file"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
-msgid "Processing command ..."
-msgstr ""
+#, fuzzy
+#~ msgid "Edit your configuration file"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:362
-msgid "At main prompt waiting for input ..."
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to read configuration file"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
-msgid "At prompt waiting for input ..."
-msgstr ""
+#, fuzzy
+#~ msgid "Please choose a configuration file to use"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:390
-msgid "Command failed."
-msgstr ""
+#, fuzzy
+#~ msgid "Using this configuration file: %s\n"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:463
-msgid "Director disconnected."
-msgstr ""
+#, fuzzy
+#~ msgid "Please choose your default configuration file"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/qt-console/bat_conf.cpp:154
-#, c-format
-msgid "Console: name=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Use this configuration file as default?"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/qt-console/main.cpp:191
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: 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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"       -c <file>   setze Konfigurationsdatei auf Datei\n"
-"       -dnn        setze debug level auf nn\n"
-"       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
-"       -g          groupid\n"
-"       -r <job>    starte <job> jetzt\n"
-"       -s          no signals\n"
-"       -t          test - Konfiguration Lesen und beenden\n"
-"       -u          userid\n"
-"       -v          ausf�hrliche Benutzer Meldungen\n"
-"       -?          diese Meldung ausgeben.\n"
-"\n"
+#, fuzzy
+#~ msgid "Configuration file"
+#~ msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #, fuzzy
 #~ msgid "    Drive %d status unknown.\n"
@@ -18633,9 +4568,6 @@ msgstr ""
 #~ msgid "Unable to open Catalog DB control file %s: ERR=%s\n"
 #~ msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#~ msgid "Error reading catalog DB control file. ERR=%s\n"
-#~ msgstr "Fehler beim Lesen der catalog DB Steuerdatei. ERR=%s\n"
-
 #~ msgid ""
 #~ "Error, catalog DB control file wrong version. Wanted %d, got %d\n"
 #~ "Please reinitialize the working directory.\n"
@@ -18671,44 +4603,6 @@ msgstr ""
 #~ msgid "No Catalog resource defined for client %s\n"
 #~ msgstr "Keine Messages resource definiert in %s\n"
 
-#, fuzzy
-#~ msgid "%d files (%s)"
-#~ msgstr "%s -- keine Dateien zur Migration."
-
-#, fuzzy
-#~ msgid "An error occurred while extracting files."
-#~ msgstr "Fehler beim schreiben der bsr Datei.\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Version: %s (%s) %s %s %s\n"
-#~ "\n"
-#~ "Usage: bgnome-console [-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          no signals\n"
-#~ "       -t          test - read configuration and exit\n"
-#~ "       -?          print this message.\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Version: %s (%s)\n"
-#~ "\n"
-#~ "Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-#~ "       -c <file>   setze Konfigurationsdatei auf Datei\n"
-#~ "       -dnn        setze debug level auf nn\n"
-#~ "       -f          starte im Vordergrund (f�r debugging Zwecke)\n"
-#~ "       -g          groupid\n"
-#~ "       -r <job>    starte <job> jetzt\n"
-#~ "       -s          no signals\n"
-#~ "       -t          test - Konfiguration Lesen und beenden\n"
-#~ "       -u          userid\n"
-#~ "       -v          ausf�hrliche Benutzer Meldungen\n"
-#~ "       -?          diese Meldung ausgeben.\n"
-#~ "\n"
-
 #~ msgid "pthread_mutex_lock: ERR=%s\n"
 #~ msgstr "pthread_mutex_lock: ERR=%s\n"
 
@@ -18721,9 +4615,6 @@ msgstr ""
 #~ msgid "No Volumes found to migrate.\n"
 #~ msgstr "Keine Volumes zum Migrieren gefunden.\n"
 
-#~ msgid "No JobIds found to migrate.\n"
-#~ msgstr "Keine JobIds zum migrieren gefunden.\n"
-
 #~ msgid "Migration JobId %d started.\n"
 #~ msgstr "Migration JobId %d gestartet.\n"
 
@@ -18738,9 +4629,5 @@ msgstr ""
 #~ "Wollte Volume \"%s\"erzeugen, aber , but it already exists. Trying "
 #~ "again.\n"
 
-#, fuzzy
-#~ msgid "Unable to get Volume record: ERR=%s"
-#~ msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
-
 #~ msgid "Invalid MediaId found.\n"
 #~ msgstr "Ung�ltige MediaId gefunden.\n"
diff --git a/po/es.po b/po/es.po
index 32252c8..0208037 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,14 +1,14 @@
 # Spanish translations for branch package
 # Traducciones al español para el paquete branch.
-# Copyright (C) 2006 Free Software Foundation Europe e.V.
+# Copyright (C) 2006-2014 Free Software Foundation Europe e.V.
 # This file is distributed under the same license as the branch package.
 #
-#  <kern at sibbald.com>, 2006, 2009.
+#  <kern at sibbald.com>, 2006-2014
 msgid ""
 msgstr ""
 "Project-Id-Version: Bacula 3.0.2\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2013-02-19 18:26+0100\n"
+"POT-Creation-Date: 2014-07-29 18:18+0200\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"
@@ -20,19706 +20,14597 @@ msgstr ""
 "X-Poedit-Language: Spanish\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
-#: src/dird/jobq.c:74
+#: src/baconfig.h:60 src/baconfig.h:61 src/baconfig.h:66 src/baconfig.h:67
 #, c-format
-msgid "pthread_attr_init: ERR=%s\n"
-msgstr "pthread_attr_init: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
+msgstr "Fallo ASSERT: %s\n"
 
-#: src/dird/jobq.c:83
-#, c-format
-msgid "pthread_mutex_init: ERR=%s\n"
-msgstr "pthread_mutex_init: ERR=%s\n"
+#: src/baconfig.h:76
+msgid "*None*"
+msgstr "*Ninguno*"
 
-#: src/dird/jobq.c:89
-#, c-format
-msgid "pthread_cond_init: ERR=%s\n"
-msgstr "pthread_cond_init: ERR=%s\n"
+#: src/lib/status.h:73
+msgid ""
+"\n"
+"Terminated Jobs:\n"
+msgstr ""
+"\n"
+"Jobs No Terminados:\n"
 
-#: src/dird/jobq.c:131
-#, c-format
-msgid "pthread_cond_broadcast: ERR=%s\n"
-msgstr "pthread_cond_broadcast: ERR=%s\n"
+#: src/lib/status.h:80
+msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
+msgstr "JobId Nivel Archivos Bytes Estado Finalizado Nombre \n"
 
-#: src/dird/jobq.c:139
-#, c-format
-msgid "pthread_cond_wait: ERR=%s\n"
-msgstr "pthread_cond_wait: ERR=%s\n"
+#: src/lib/status.h:82
+msgid "===================================================================\n"
+msgstr "===================================================================\n"
 
-#: src/dird/jobq.c:180
-#, c-format
-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/lib/status.h:102
+msgid "Created"
+msgstr "Creado"
 
-#: 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"
+#: src/lib/status.h:106
+msgid "Error"
+msgstr "Error"
 
-#: src/dird/jobq.c:242
-#, c-format
-msgid "pthread_thread_create: ERR=%s\n"
-msgstr "pthread_thread_create: ERR=%s\n"
+#: src/lib/status.h:109
+msgid "Diffs"
+msgstr "Diferencias"
 
-#: src/dird/jobq.c:352
-#, c-format
-msgid "pthread_cond_signal: ERR=%s\n"
-msgstr "pthread_cond_signal: ERR=%s\n"
+#: src/lib/status.h:112
+msgid "Cancel"
+msgstr "Cancelar"
 
-#: src/dird/jobq.c:363
-#, c-format
-msgid "pthread_create: ERR=%s\n"
-msgstr "pthread_create: ERR=%s\n"
+#: src/lib/status.h:115
+msgid "OK"
+msgstr "OK"
 
-#: src/dird/jobq.c:647
-#, c-format
-msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
-msgstr "Job %s en %s reprogramado para volver a ejecutar en %d segundos(%s).\n"
+#: src/lib/status.h:118
+msgid "OK -- with warnings"
+msgstr "OK - con advertencias"
 
-#: src/dird/jobq.c:703 src/dird/jobq.c:708
-msgid "previous Job"
-msgstr "Job anterior"
+#: src/lib/status.h:122
+msgid "Other"
+msgstr "Otros"
 
-#: src/dird/jobq.c:745
+#: src/lib/status.h:134
 #, c-format
-msgid ""
-"Job canceled. Attempt to read and write same device.\n"
-"    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
-msgstr ""
-"Job cancelado. Intento de leer y escribir mismo dispositivo.\n"
-" Storage de Lectura \"%s\" (desde %s) -- Storage de Escritura \"%s\" (desde "
-"%s)\n"
+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_select.c:54
+#: src/lib/status.h:142
 #, c-format
-msgid "The current %s retention period is: %s\n"
-msgstr "El período actual %s de retención es: %s\n"
-
-#: src/dird/ua_select.c:59
-msgid "Continue? (yes/mod/no): "
-msgstr "¿Continuar? (sí/mod/no):"
-
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
-msgid "mod"
-msgstr "mod"
-
-#: src/dird/ua_select.c:63
-msgid "Enter new retention period: "
-msgstr "Introduzca el nuevo periodo de retención:"
-
-#: src/dird/ua_select.c:67
-msgid "Invalid period.\n"
-msgstr "Período no válido.\n"
-
-#: src/dird/ua_select.c:143
-msgid "You have the following choices:\n"
-msgstr "Usted tiene las siguientes opciones:\n"
-
-#: src/dird/ua_select.c:159
-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: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
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1176
-#: src/wx-console/wxbrestorepanel.cpp:1845
-#: src/wx-console/wxbrestorepanel.cpp:1916
-msgid "Storage"
-msgstr "Storage"
-
-#: src/dird/ua_select.c:167
-msgid "Select Storage resource"
-msgstr "Seleccione recurso Storage"
-
-#: src/dird/ua_select.c:182 src/dird/ua_restore.c:1296
-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:226
-msgid "FileSet"
-msgstr "FileSet"
-
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300
-msgid "Select FileSet resource"
-msgstr "Seleccionar recurso FileSet"
-
-#: 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"
-
-#: src/dird/ua_select.c:223
-msgid "You must specify a \"use <catalog-name>\" command before continuing.\n"
-msgstr ""
-"Usted debe especificar un comando \"use <nombre-catalogo>\" antes de "
-"continuar.\n"
-
-#: src/dird/ua_select.c:229
-msgid "The defined Catalog resources are:\n"
-msgstr "Los recursos Catalogo definidos son:\n"
-
-#: src/dird/ua_select.c:237
-msgid "Catalog"
-msgstr "Catalogo"
-
-#: src/dird/ua_select.c:237
-msgid "Select Catalog resource"
-msgstr "Seleccione recurso Catalogo"
+msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
+msgstr "%6d %-6s %8s %10s %-7s %-8s %s\n"
 
-#: src/dird/ua_select.c:255 src/dird/ua_select.c:281
-msgid "The defined Job resources are:\n"
-msgstr "Los recursos Job definidos son:\n"
+#: src/lib/status.h:171 src/lib/status.h:182 src/lib/status.h:196
+#: src/lib/status.h:200 src/lib/status.h:204
+msgid "Bacula "
+msgstr "Bacula"
 
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: 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"
+#: src/qt-console/bat_conf.cpp:130
+#, c-format
+msgid "No record for %d %s\n"
+msgstr "Ningún registro para %d %s\n"
 
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289
-msgid "Select Job resource"
-msgstr "Seleccione recurso Job"
+#: src/qt-console/bat_conf.cpp:139
+#, c-format
+msgid "Director: name=%s address=%s DIRport=%d\n"
+msgstr "Director: nombre=%s dirección=%s DIRport=%d\n"
 
-#: src/dird/ua_select.c:308
-#, fuzzy, c-format
-msgid "Error: Restore Job resource \"%s\" does not exist.\n"
-msgstr "Error: recurso Pool \"%s\" no existe.\n"
-
-#: src/dird/ua_select.c:322
-msgid "The defined Restore Job resources are:\n"
-msgstr "Los recursos Restore definidos son:\n"
-
-#: src/dird/ua_select.c:330
-msgid "Select Restore Job"
-msgstr "Seleccione recurso Restore"
-
-#: src/dird/ua_select.c:347
-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: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
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:700
-#: src/wx-console/wxbrestorepanel.cpp:1133
-#: src/wx-console/wxbrestorepanel.cpp:1136
-#: src/wx-console/wxbrestorepanel.cpp:1238
-#: src/wx-console/wxbrestorepanel.cpp:1838
-#: src/wx-console/wxbrestorepanel.cpp:1840
-#: src/wx-console/wxbrestorepanel.cpp:1914
-#: src/wx-console/wxbrestorepanel.cpp:1970
-msgid "Client"
-msgstr "Client"
-
-#: src/dird/ua_select.c:355
-msgid "Select Client (File daemon) resource"
-msgstr "Seleccione recurso Cliente (File Daemon)"
-
-#: src/dird/ua_select.c:382
+#: src/qt-console/bat_conf.cpp:143
 #, c-format
-msgid "Error: Client resource %s does not exist.\n"
-msgstr "Error: Recurso Cliente %s no existe.\n"
+msgid "Console: name=%s\n"
+msgstr "Console: nombre=%s\n"
 
-#: src/dird/ua_select.c:407
+#: src/qt-console/bat_conf.cpp:146
+#: src/qt-console/tray-monitor/tray_conf.cpp:183
 #, c-format
-msgid "Could not find Client %s: ERR=%s"
-msgstr "No se pudo encontrar el Cliente %s: ERR=%s"
+msgid "ConsoleFont: name=%s font face=%s\n"
+msgstr "ConsoleFont: nombre=%s font face=%s\n"
 
-#: src/dird/ua_select.c:417 src/dird/ua_select.c:471
+#: src/qt-console/bat_conf.cpp:150 src/qt-console/bat_conf.cpp:231
+#: src/qt-console/bat_conf.cpp:279 src/qt-console/bat_conf.cpp:309
 #, c-format
-msgid "Could not find Client \"%s\": ERR=%s"
-msgstr "No se pudo encontrar Cliente \"%s\": ERR=%s"
+msgid "Unknown resource type %d\n"
+msgstr "Tipo de recurso desconocido %d\n"
 
-#: src/dird/ua_select.c:446
+#: src/qt-console/bat_conf.cpp:257
+#: src/qt-console/tray-monitor/tray_conf.cpp:276
 #, c-format
-msgid "Error obtaining client ids. ERR=%s\n"
-msgstr "Error al obtener el ID del cliente. ERR=%s\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/ua_select.c:450
-msgid "No clients defined. You must run a job before using this command.\n"
+#: src/qt-console/bat_conf.cpp:326
+#: src/qt-console/tray-monitor/tray_conf.cpp:360
+#, c-format
+msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
-"Clientes no definidos. Usted debe ejecutar un Job antes de usar este "
-"comando.\n"
-
-#: src/dird/ua_select.c:454
-msgid "Defined Clients:\n"
-msgstr "Clientes definidos:\n"
-
-#: src/dird/ua_select.c:464
-msgid "Select the Client"
-msgstr "Seleccione el Cliente"
+"Segundo intento de definir recurso %s llamado \"%s\" no está permitido.\n"
 
-#: src/dird/ua_select.c:497 src/dird/ua_select.c:521 src/dird/ua_select.c:566
+#: src/qt-console/bcomm/dircomm.cpp:85
 #, c-format
-msgid "Could not find Pool \"%s\": ERR=%s"
-msgstr "No se pudo encontrar Pool \"%s\": ERR=%s"
+msgid "Already connected\"%s\".\n"
+msgstr "Ya conectado\"%s\".\n"
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
+#: src/qt-console/bcomm/dircomm.cpp:96
+#: src/qt-console/tray-monitor/tray-monitor.cpp:347
 #, c-format
-msgid "Error obtaining pool ids. ERR=%s\n"
-msgstr "Error al obteniendo pool ids. ERR=%s\n"
-
-#: src/dird/ua_select.c:536
-msgid "No pools defined. Use the \"create\" command to create one.\n"
-msgstr "Pools no definidos. Utilice el comando \"create\" para crear uno.\n"
-
-#: src/dird/ua_select.c:540
-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:365
-#: src/baconfig.h:88
-msgid "*None*"
-msgstr "*Ninguno*"
-
-#: 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 "Pool"
-
-#: src/dird/ua_select.c:553
-msgid "Select the Pool"
-msgstr "Seleccione el Pool"
+msgid "Connecting to Director %s:%d"
+msgstr "Conectando con Director %s:%d"
 
-#: src/dird/ua_select.c:591
+#: src/qt-console/bcomm/dircomm.cpp:98
 #, c-format
-msgid "No access to Pool \"%s\"\n"
-msgstr "No tienen acceso al Pool \"%s\"\n"
-
-#: src/dird/ua_select.c:623
-msgid "Enter *MediaId or Volume name: "
-msgstr "Introduzca MediaId o nombre del Volumen:"
-
-#: src/dird/ua_select.c:658
-msgid "The defined Pool resources are:\n"
-msgstr "Los recursos Pool definidos son:\n"
+msgid ""
+"Connecting to Director %s:%d\n"
+"\n"
+msgstr ""
+"Conectando con Director %s:%d\n"
+"\n"
 
-#: src/dird/ua_select.c:666
-msgid "Select Pool resource"
-msgstr "Seleccione recurso Pool"
+#: src/qt-console/bcomm/dircomm.cpp:150
+#, 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/dird/ua_select.c:690 src/dird/ua_restore.c:555
+#: src/qt-console/bcomm/dircomm.cpp:173
 #, c-format
-msgid "Error: Pool resource \"%s\" does not exist.\n"
-msgstr "Error: recurso Pool \"%s\" no existe.\n"
+msgid "Failed to initialize TLS context for Director \"%s\".\n"
+msgstr "Fallo al inicializar el contexto TLS para el Director \"%s\".\n"
 
-#: src/dird/ua_select.c:701
-msgid "Enter the JobId to select: "
-msgstr "Introduzca el JobId para seleccionar:"
+#: src/qt-console/bcomm/dircomm.cpp:195
+#: src/qt-console/tray-monitor/tray-monitor.cpp:352
+msgid "Director daemon"
+msgstr "Servicio Director"
 
-#: 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/qt-console/bcomm/dircomm.cpp:233
+msgid "Initializing ..."
+msgstr "Inicializando ..."
 
-#: src/dird/ua_select.c:819
-#, c-format
-msgid "Automatically selected %s: %s\n"
-msgstr "Seleccionado automáticamente %s: %s\n"
+#: src/qt-console/bcomm/dircomm.cpp:249 src/qt-console/console/console.cpp:130
+msgid "Connected"
+msgstr "Conectado"
 
-#: 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 ""
-"Su petición ha múltiples opciones para \"%s\". La selección no es posible en "
-"modo batch.\n"
+#: src/qt-console/bcomm/dircomm.cpp:373
+msgid "Command completed ..."
+msgstr "Comando completado ..."
 
-#: 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/qt-console/bcomm/dircomm.cpp:380 src/qt-console/console/console.cpp:367
+msgid "Processing command ..."
+msgstr "Procesando comando ..."
 
-#: src/dird/ua_select.c:854
-#, c-format
-msgid "Automatically selected: %s\n"
-msgstr "Seleccionado automáticamente: %s\n"
+#: src/qt-console/bcomm/dircomm.cpp:387
+msgid "At main prompt waiting for input ..."
+msgstr "En prompt principal esperando por una entrada..."
 
-#: src/dird/ua_select.c:866
-msgid "Selection aborted, nothing done.\n"
-msgstr "Selección abortada, no hay nada hecho.\n"
+#: src/qt-console/bcomm/dircomm.cpp:394 src/qt-console/bcomm/dircomm.cpp:407
+msgid "At prompt waiting for input ..."
+msgstr "En prompt esperando por una entrada..."
 
-#: 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/qt-console/bcomm/dircomm.cpp:415
+msgid "Command failed."
+msgstr "Comando fallido."
 
-#: src/dird/ua_select.c:920
-msgid "Storage name given twice.\n"
-msgstr "Nombre de Storage especificado dos veces.\n"
+#: src/qt-console/bcomm/dircomm.cpp:487
+msgid "Director disconnected."
+msgstr "Director desconectado."
 
-#: src/dird/ua_select.c:937
+#: src/qt-console/bcomm/dircomm_auth.cpp:107
 #, c-format
-msgid "Expecting jobid=nn command, got: %s\n"
-msgstr "Esperando comando jobid=nn, obtuvo: %s.\n"
+msgid "Director authorization problem at \"%s:%d\"\n"
+msgstr "Problema de autorización de Director en \"%s:%d\"\n"
 
-#: src/dird/ua_select.c:941
+#: src/qt-console/bcomm/dircomm_auth.cpp:114
 #, c-format
-msgid "JobId %s is not running.\n"
-msgstr "JobId %s no está en ejecución.\n"
+msgid ""
+"Authorization problem: Remote server at \"%s:%d\" did not advertise required "
+"TLS support.\n"
+msgstr ""
+"Problema de autorización: El servidor remoto en \"%s:%d\" no anuncio soporte "
+"TLS  requiere.\n"
 
-#: src/dird/ua_select.c:951
+#: src/qt-console/bcomm/dircomm_auth.cpp:122
 #, c-format
-msgid "Expecting job=xxx, got: %s.\n"
-msgstr "Esperando job=xxx, obtuvo: %s.\n"
+msgid ""
+"Authorization problem with Director at \"%s:%d\": Remote server requires "
+"TLS.\n"
+msgstr ""
+"Problema de autorización con el Director en \"%s:%d\": El servidor remoto "
+"requiere TLS.\n"
 
-#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
+#: src/qt-console/bcomm/dircomm_auth.cpp:133
 #, c-format
-msgid "Job \"%s\" is not running.\n"
-msgstr "Job \"%s\" no está en ejecución.\n"
+msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
+msgstr "Fallo negociación TLS no con el Director en \"%s:%d\"\n"
 
-#: src/dird/ua_select.c:963
+#: src/qt-console/bcomm/dircomm_auth.cpp:145
 #, c-format
-msgid "Expecting ujobid=xxx, got: %s.\n"
-msgstr "Esperando ujobid=xxx, obtuvo: %s.\n"
+msgid ""
+"Bad response to Hello command: ERR=%s\n"
+"The Director at \"%s:%d\" is probably not running.\n"
+msgstr ""
+"Mala respuesta al comando Hello: ERR=%s\n"
+"El director en \"%s:%d\" probablemente no esta corriendo.\n"
 
-#: src/dird/ua_select.c:983
+#: src/qt-console/bcomm/dircomm_auth.cpp:154
 #, c-format
-msgid "Storage resource \"%s\": not found\n"
-msgstr "Recurso Storage \"%s\": No encontrado\n"
-
-#: src/dird/ua_select.c:1015
-msgid "Enter autochanger drive[0]: "
-msgstr "Introduzca unidad Autochanger [0]:"
-
-#: src/dird/ua_select.c:1036
-msgid "Enter autochanger slot: "
-msgstr "Introduzca ranura Autochanger:"
-
-#: 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:1072
-msgid "Media Type"
-msgstr "Tipo de Media"
-
-#: src/dird/ua_select.c:1072
-msgid "Select the Media Type"
-msgstr "Seleccione el Tipo de Media"
+msgid "Director at \"%s:%d\" rejected Hello command\n"
+msgstr "Director en \"%s:%d\" rechazó comando Hello\n"
 
-#: src/dird/ua_select.c:1111
+#: src/qt-console/bcomm/dircomm_auth.cpp:169
 #, 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:1120 src/dird/ua_select.c:1130
-#, c-format
-msgid "Warning Job %s is not running. Continuing anyway ...\n"
+msgid ""
+"Authorization problem with Director at \"%s:%d\"\n"
+"Most likely the passwords do not agree.\n"
+"If you are using TLS, there may have been a certificate validation error "
+"during the TLS handshake.\n"
+"Please see "
 msgstr ""
-"Advertencia Job %s no está¡ en ejecución. Continuar de todos modos ...\n"
-
-#: 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: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:1167
-msgid "None of your jobs are running.\n"
-msgstr "Ninguno de sus trabajos se está ejecutando.\n"
+"Problema de autorización con el Director en \"%s:%d\"\n"
+"Lo mas probable es que las contraseñas no están de acuerdo.\n"
+"Si está usando TLS, puede haber habido un error de validación de "
+"certificados durante la negociación TLS.\n"
+" Por favor vea http://www.bacula.org/en/rel-manual/"
+"Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 para ayuda.\n"
 
-#: src/dird/ua_select.c:1172
-msgid "Select Job:\n"
-msgstr "Seleccione Job:\n"
+#: src/qt-console/main.cpp:154
+msgid "Cryptography library initialization failed.\n"
+msgstr "Inicialización de la librería de criptografía ha fallado.\n"
 
-#: src/dird/ua_select.c:1181
+#: src/qt-console/main.cpp:158
 #, c-format
-msgid "JobId=%s Job=%s"
-msgstr "JobId=%s Job=%s"
-
-#: src/dird/ua_select.c:1185
-#, fuzzy, c-format
-msgid "Choose Job to %s"
-msgstr "Elija Job para cancelar"
+msgid "Please correct configuration file: %s\n"
+msgstr "Por favor, corrija el archivo de configuración: %s\n"
 
-#: src/dird/ua_select.c:1192
+#: src/qt-console/main.cpp:180
 #, c-format
 msgid ""
-"Cancel: %s\n"
 "\n"
-"%s"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: 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          no signals\n"
+"       -t          test - read configuration and exit\n"
+"       -?          print this message.\n"
+"\n"
 msgstr ""
-"Cancelar: %s\n"
 "\n"
-"%s"
-
-#: src/dird/ua_select.c:1193
-msgid "Confirm cancel?"
-msgstr "Confirmar cancelar?"
-
-#: src/dird/ua_select.c:1199
-msgid "Confirm cancel (yes/no): "
-msgstr "Confirmar cancelar(si/no): "
-
-#: 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"
+"Versión: %s (%s) %s %s %s\n"
+"\n"
+"Utilice: bat [-s] [-c archivo_de_configuración] [-d nivel_depuración "
+"[archivo_de_configuración]\n"
+" -c <archivo> establecer archivo de configuración para el archivo\n"
+" -dnn establecer el nivel de depuración a nn\n"
+" -s no hay señales\n"
+" -t prueba - leer la configuración y salir\n"
+" -? imprimir este mensaje.\n"
+"\n"
 
-#: src/dird/bsr.c:173
-#, c-format
-msgid "Unable to get Job record. ERR=%s\n"
-msgstr "No se pudo obtener registro de Job. ERR=%s\n"
+#: src/qt-console/main.cpp:213 src/qt-console/main.cpp:243
+msgid "TLS required but not configured in Bacula.\n"
+msgstr "Se requiere TLS pero no está configurado en Bacula.\n"
 
-#: src/dird/bsr.c:184
+#: src/qt-console/main.cpp:221
 #, c-format
-msgid "Unable to get Job Volume Parameters. ERR=%s\n"
-msgstr "No se pudo obtener Parámetros de Volumen de Job. ERR=%s\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in %s. At least one CA certificate store is required.\n"
+msgstr ""
+"Ni \"Certificado TLS CA\" o \"Directorio de Certificado TLS CA\" están "
+"definidos para Director \"%s\" en %s. Por lo menos un almacén de "
+"Certificados CA es necesario.\n"
 
-#: src/dird/bsr.c:232
+#: src/qt-console/main.cpp:230
 #, c-format
-msgid "Unable to create bootstrap file %s. ERR=%s\n"
-msgstr "No se puede crear el archivo bootstrap %s. ERR=%s\n"
-
-#: src/dird/bsr.c:241
-msgid "No files found to read. No bootstrap file written.\n"
+msgid ""
+"No Director resource defined in %s\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
-"Ninguno archivo encontrado para leer. Ninguno archivo bootstrap escrito.\n"
-
-#: src/dird/bsr.c:245
-msgid "Error writing bsr file.\n"
-msgstr "Error escribiendo archivo bsr.\n"
+"Recurso Director no definido en %s\n"
+"Sin eso no sé cómo hablar con el Director :-(\n"
 
-#: src/dird/bsr.c:250
+#: src/qt-console/main.cpp:251
 #, c-format
-msgid "Bootstrap records written to %s\n"
-msgstr "Registros Bootstrap escritos para %s\n"
-
-#: src/dird/bsr.c:298
 msgid ""
-"The job will require the following\n"
-"   Volume(s)                 Storage(s)                SD Device(s)\n"
-"===========================================================================\n"
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in %s.\n"
 msgstr ""
-"El job irá requerir los siguientes\n"
-"  Storage(s) Dispositivo(s) SD Volumen(es)\n"
-"===========================================================================\n"
-
-#: src/dird/bsr.c:317
-msgid "No Volumes found to restore.\n"
-msgstr "Volúmenes no encontrados para restaurar.\n"
+"Ni \"Certificado TLS CA\" o \"Directorio de Certificado TLS CA\" están "
+"definidos para Console \"%s\" en %s.\n"
 
-#: src/dird/bsr.c:319
+#: src/qt-console/tray-monitor/authenticate.cpp:75
+#, fuzzy
 msgid ""
-"\n"
-"Volumes marked with \"*\" are online.\n"
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see "
 msgstr ""
-"\n"
-"Volúmenes marcados con \"*\" están en línea.\n"
+"Director problema de autorización.\n"
+"Lo mas probable es que las contraseñas no están de acuerdo.\n"
+"Por favor vea http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
+"html#SECTION003760000000000000000 para ayuda.\n"
 
-#: src/dird/ua_server.c:69
+#: src/qt-console/tray-monitor/authenticate.cpp:84
 #, c-format
-msgid "Cannot create UA thread: %s\n"
-msgstr "No se puede crear hilo UA: %s\n"
+msgid "Bad response to Hello command: ERR=%s\n"
+msgstr "mala respuesta al comando Hello: ERR=%s\n"
 
-#: src/dird/ua_server.c:159
-msgid "You have messages.\n"
-msgstr "Usted tiene mensajes.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:91
+msgid "Director rejected Hello command\n"
+msgstr "Director rechazo comando Hello\n"
 
-#: src/dird/verify.c:86 src/dird/verify.c:318
+#: src/qt-console/tray-monitor/authenticate.cpp:119
 #, c-format
-msgid "Unimplemented Verify level %d(%c)\n"
-msgstr "Nivel Verify no implementado %d(%c)\n"
+msgid "Error sending Hello to Storage daemon. ERR=%s\n"
+msgstr "Error enviando Hello al servicio de Almacenamiento. ERR=%s\n"
 
-#: src/dird/verify.c:148
+#: src/qt-console/tray-monitor/authenticate.cpp:125
+#, fuzzy
 msgid ""
-"Unable to find JobId of previous InitCatalog Job.\n"
-"Please run a Verify with Level=InitCatalog before\n"
-"running the current Job.\n"
-msgstr ""
-"No se puede encontrar JobId de Job InitCatalog anterior.\n"
-"Por favor, ejecutar Verificar con Nivel=InitCatalog antes de\n"
-" ejecutar el Job actual.\n"
-
-#: src/dird/verify.c:153
-msgid "Unable to find JobId of previous Job for this client.\n"
-msgstr "No se puede encontrar JobId del trabajo anterior por este cliente.\n"
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see "
+msgstr "Nombres o contraseñas en el Director o Storage no son las mismas.\n"
 
-#: src/dird/verify.c:170
+#: src/qt-console/tray-monitor/authenticate.cpp:132
 #, c-format
-msgid "Could not get job record for previous Job. ERR=%s"
-msgstr "No se ha podido obtener el registro Job para Job anterior. ERR=%s"
+msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
+msgstr "bdird<stored:mala respuesta al comando Hello: ERR=%s\n"
 
-#: src/dird/verify.c:176
-#, c-format
-msgid "Last Job %d did not terminate normally. JobStatus=%c\n"
-msgstr "Último Job %d no termino normalmente. JobStatus=%c\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:139
+msgid "Storage daemon rejected Hello command\n"
+msgstr "Storage servicio rechazo el comando Hello\n"
 
-#: src/dird/verify.c:180
+#: src/qt-console/tray-monitor/authenticate.cpp:165
 #, c-format
-msgid "Verifying against JobId=%d Job=%s\n"
-msgstr "Verificar contra JobId=%d Job=%s\n"
+msgid "Error sending Hello to File daemon. ERR=%s\n"
+msgstr "Error al enviar Hello para el demonio File. ERR=%s\n"
 
-#: src/dird/verify.c:219
-#, c-format
-msgid "Start Verify JobId=%s Level=%s Job=%s\n"
-msgstr "Inicio Verificar JobId=%s Nivel=%s Job=%s\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:171
+#, fuzzy
+msgid ""
+"Director and File daemon passwords or names not the same.\n"
+"Please see "
+msgstr "Contraseñas del demonio Director y File no son los mismos.\n"
 
-#: src/dird/verify.c:305
-msgid "Deprecated feature ... use bootstrap.\n"
-msgstr "Función obsoleta ... use bootstrap.\n"
-
-#: src/dird/verify.c:372
+#: src/qt-console/tray-monitor/authenticate.cpp:178
 #, c-format
-msgid "Unimplemented verify level %d\n"
-msgstr "Nivel Verify no implementado %d\n"
-
-#: src/dird/verify.c:421
-msgid "Verify OK"
-msgstr "Verificar OK"
-
-#: src/dird/verify.c:425
-msgid "*** Verify Error ***"
-msgstr "*** Verificar Error ***"
-
-#: src/dird/verify.c:429
-msgid "Verify warnings"
-msgstr "Verificar advertencias"
-
-#: src/dird/verify.c:432
-msgid "Verify Canceled"
-msgstr "Verificar Cancelada"
-
-#: src/dird/verify.c:435
-msgid "Verify Differences"
-msgstr "Verificar Diferencias"
+msgid "Bad response from File daemon to Hello command: ERR=%s\n"
+msgstr "Mala respuesta desde el demonio File para el comando Hello: ERR=%s\n"
 
-#: src/dird/verify.c:440
-#, c-format
-msgid "Inappropriate term code: %d %c\n"
-msgstr "Inadecuado código de terminación: %d %c\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:185
+msgid "File daemon rejected Hello command\n"
+msgstr "El demonio File rechazó el comando Hello\n"
 
-#: src/dird/verify.c:454
+#: src/qt-console/tray-monitor/tray-monitor.cpp:55
 #, fuzzy, c-format
 msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
 "\n"
-msgstr ""
-"%s %s %s (%s): %s\n"
-" Build OS: %s %s %s\n"
-" JobId: %d\n"
-" Job: %s\n"
-" FileSet: %s\n"
-" Verificar Nivel: %s\n"
-" Cliente: %s\n"
-" Verificar JobId: %d\n"
-" Verificar Job: %s\n"
-" Hora de inicio: %s\n"
-" Hora de finalización: %s\n"
-" Archivos Esperado: %s\n"
-" Archivos Examinados: %s\n"
-" No-fatal FD errores: %d\n"
-" Estado de terminación del FD: %s\n"
-" Estado de terminación del SD: %s\n"
-" Terminación: %s\n"
+"Version: %s (%s) %s %s %s\n"
 "\n"
-
-#: src/dird/verify.c:489
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build:                  %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  Termination:            %s\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -d <nn>       set debug level to <nn>\n"
+"       -dt           print timestamp in debug output\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
 "\n"
 msgstr ""
-"%s %s %s (%s): %s\n"
-" Build: %s %s %s\n"
-" JobId: %d\n"
-" Job: %s\n"
-" FileSet: %s\n"
-" Verificar Nivel: %s\n"
-" Cliente: %s\n"
-" Verificar JobId: %d\n"
-" Verificar Job: %s\n"
-" Hora de Inicio: %s\n"
-" Hora de Finalización: %s\n"
-" Archivos Examinados: %s\n"
-" No-fatal FD errores: %d\n"
-" FD estado de finalización: %s\n"
-" Terminación: %s\n"
+"Escrito por Nicolas Boichat (2004)\n"
+"\n"
+"Versión: %s (%s) %s %s %s\n"
+"\n"
+"Utilice: tray-monitor [-c archivo_configuración] [-d nivel_depuración]\n"
+" -c <archivo> establece archivo de configuración para archivo\n"
+" -d <nn> establece nivel de depuración para <nn>\n"
+" -dt imprime timestamp en salida de depuración\n"
+" -t prueba - leer configuración y salir\n"
+" -? imprimir este mensaje.\n"
 "\n"
 
-#: src/dird/verify.c:567
+#: src/qt-console/tray-monitor/tray-monitor.cpp:204
 #, c-format
 msgid ""
-"bird<filed: bad attributes, expected 3 fields got %d\n"
-" mslen=%d msg=%s\n"
+"Error: %d Monitor resources defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
-"bird<filed: malos atributos, esperaba 3 campos, obtuvo %d\n"
-" mslen=%d msg=%s\n"
+"Error: %d Monitor de recursos definidos en %s. Usted debe definir un único "
+"monitor de recursos.\n"
 
-#: src/dird/verify.c:612
+#: src/qt-console/tray-monitor/tray-monitor.cpp:236
 #, c-format
-msgid "New file: %s\n"
-msgstr "Nuevo archivo: %s\n"
+msgid ""
+"No Client, Storage or Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
+msgstr ""
+"Ningún recurso Cliente, Storage o Director definido en %s\n"
+"Sin esto, Yo no se como obtener el estado de los demonios File, Storage o "
+"Director :-(\n"
 
-#: src/dird/verify.c:613
+#: src/qt-console/tray-monitor/tray-monitor.cpp:251
 #, c-format
-msgid "File not in catalog: %s\n"
-msgstr "No Archivos en el catálogo: %s\n"
+msgid ""
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
+msgstr ""
+"Invalido intervalo de actualización definido en %s\n"
+"Este valor debe ser mayor o igual a 1 segundo y menor o igual a 10 minutos "
+"(leer el valor:% d).\n"
 
-#: src/dird/verify.c:637
+#: src/qt-console/tray-monitor/tray-monitor.cpp:319
 #, c-format
-msgid "      st_ino   differ. Cat: %s File: %s\n"
-msgstr "st_ino diferentes. Cat: %s Archivo: %s\n"
+msgid "Error, currentitem is not a Client or a Storage..\n"
+msgstr "Error, CurrentItem no es un Cliente o un Storage ...\n"
 
-#: src/dird/verify.c:646
+#: src/qt-console/tray-monitor/tray-monitor.cpp:357
 #, c-format
-msgid "      st_mode  differ. Cat: %x File: %x\n"
-msgstr "st_mode diferentes. Cat: %x Archivo: %x\n"
+msgid "Connecting to Client %s:%d"
+msgstr "Conectando con Cliente %s:%d"
 
-#: src/dird/verify.c:654
-#, c-format
-msgid "      st_nlink differ. Cat: %d File: %d\n"
-msgstr "st_nlink diferentes. Cat: %d Archivo: %d\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:362
+msgid "File daemon"
+msgstr "demonio File"
 
-#: src/dird/verify.c:662
+#: src/qt-console/tray-monitor/tray-monitor.cpp:367
 #, c-format
-msgid "      st_uid   differ. Cat: %u File: %u\n"
-msgstr "st_uid diferentes. Cat: %u Archivo: %u\n"
+msgid "Connecting to Storage %s:%d"
+msgstr "Conectando con Storage %s:%d"
+
+#: src/qt-console/tray-monitor/tray-monitor.cpp:372
+msgid "Storage daemon"
+msgstr "Demonio Storage"
 
-#: src/dird/verify.c:670
+#: src/qt-console/tray-monitor/tray-monitor.cpp:376
+#: src/qt-console/tray-monitor/tray-monitor.cpp:406
 #, c-format
-msgid "      st_gid   differ. Cat: %u File: %u\n"
-msgstr "st_gid diferentes. Cat: %u Archivo: %u\n"
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
+msgstr "Error, currentitem no es un cliente, un Storage o un Director..\n"
+
+#: src/qt-console/tray-monitor/tray-monitor.cpp:381
+msgid "Cannot connect to daemon."
+msgstr "No se puede conectar al demonio"
 
-#: src/dird/verify.c:678
+#: src/qt-console/tray-monitor/tray-monitor.cpp:390
 #, c-format
-msgid "      st_size  differ. Cat: %s File: %s\n"
-msgstr "st_size diferentes. Cat: %s Archivo: %s\n"
+msgid "Authentication error : %s"
+msgstr "Error de autenticación : %s"
 
-#: src/dird/verify.c:687
-msgid "      st_atime differs\n"
-msgstr "st_atime diferentes\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:397
+msgid "Opened connection with Director daemon."
+msgstr "Conexión abierta con demonio Director."
+
+#: src/qt-console/tray-monitor/tray-monitor.cpp:400
+msgid "Opened connection with File daemon."
+msgstr "Conexión abierta con demonio File."
+
+#: src/qt-console/tray-monitor/tray-monitor.cpp:403
+msgid "Opened connection with Storage daemon."
+msgstr "Conexión abierta con demonio Storage."
 
-#: src/dird/verify.c:694
-msgid "      st_mtime differs\n"
-msgstr "st_mtime diferentes\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:454
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
+msgstr "Error: BNET_HARDEOF o BNET_ERROR"
 
-#: src/dird/verify.c:701
-msgid "      st_ctime differs\n"
-msgstr "st_ctime diferentes\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:463
+msgid "Error : Connection closed."
+msgstr "Error : Conexión cerrada."
 
-#: src/dird/verify.c:708
+#: src/qt-console/tray-monitor/tray_conf.cpp:156
 #, c-format
-msgid "      st_size  decrease. Cat: %s File: %s\n"
-msgstr "st_size disminución. Cat: %s Archivo: %s\n"
+msgid "No %s resource defined\n"
+msgstr "Recurso %s no definido\n"
 
-#: src/dird/verify.c:738
+#: src/qt-console/tray-monitor/tray_conf.cpp:165
 #, c-format
-msgid "MD5/SHA1 index %d not same as attributes %d\n"
-msgstr "MD5/SHA1 atributo index %d no igual a %d\n"
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
+msgstr "Monitor: nombre=%s FDtimeout=%s SDtimeout=%s\n"
 
-#: src/dird/verify.c:746
+#: src/qt-console/tray-monitor/tray_conf.cpp:171
 #, c-format
-msgid "      %s differs. File=%s Cat=%s\n"
-msgstr "%s es diferente. Archivo=%s Cat=%s\n"
+msgid "Director: name=%s address=%s FDport=%d\n"
+msgstr "Director: nombre=%s dirección=%s FDport=%d\n"
 
-#: src/dird/verify.c:757
+#: src/qt-console/tray-monitor/tray_conf.cpp:175
 #, c-format
-msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
-msgstr "bdird<filed: malos atributos desde campo n=%d : %s\n"
+msgid "Client: name=%s address=%s FDport=%d\n"
+msgstr "Cliente: nombre=%s dirección=%s FDport=%d\n"
 
-#: src/dird/verify.c:796
+#: src/qt-console/tray-monitor/tray_conf.cpp:179
 #, c-format
-msgid "The following files are in the Catalog but not on %s:\n"
-msgstr "Los siguientes archivos están en el catálogo, pero no en %s:\n"
+msgid "Storage: name=%s address=%s SDport=%d\n"
+msgstr "Storage: nombre=%s dirección=%s SDport=%d\n"
 
-#: src/dird/verify.c:811 src/tools/testfind.c:420
+#: src/qt-console/tray-monitor/tray_conf.cpp:187
 #, c-format
-msgid "File: %s\n"
-msgstr "Archivo: %s\n"
+msgid "Unknown resource type %d in dump_resource.\n"
+msgstr "Tipo de recurso desconocido %d en dump_resource.\n"
 
-#: src/dird/admin.c:65
+#: src/qt-console/tray-monitor/tray_conf.cpp:245
 #, c-format
-msgid "Start Admin JobId %d, Job=%s\n"
-msgstr "Inicio Admin JobId %d, Job=%s\n"
+msgid "Unknown resource type %d in free_resource.\n"
+msgstr "Tipo de recurso desconocido %d en free_resource.\n"
 
-#: src/dird/admin.c:90 src/dird/vbackup.c:306 src/dird/migrate.c:1227
-#: src/dird/backup.c:628
+#: src/qt-console/tray-monitor/tray_conf.cpp:282
 #, 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"
+msgid "Too many items in %s resource\n"
+msgstr "Demasiados ítem en recurso %s\n"
 
-#: src/dird/admin.c:98
-msgid "Admin OK"
-msgstr "Administración Ok"
+#: src/qt-console/tray-monitor/tray_conf.cpp:302
+#: src/qt-console/tray-monitor/tray_conf.cpp:340
+#, c-format
+msgid "Unknown resource type %d in save_resource.\n"
+msgstr "Tipo de recurso desconocido %d en  save_resource.\n"
 
-#: src/dird/admin.c:102
-msgid "*** Admin Error ***"
-msgstr "***Administración Error***"
+#~ msgid "Query failed: %s: ERR=%s\n"
+#~ msgstr "Consulta fallida: %s: ERR=%s\n"
 
-#: src/dird/admin.c:106
-msgid "Admin Canceled"
-msgstr "Administración Cancelada"
+#~ msgid "Unable to initialize DB lock. ERR=%s\n"
+#~ msgstr "No se puede inicializar el bloqueo de la BD. ERR=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "Unable to connect to MySQL server.\n"
+#~ "Database=%s User=%s\n"
+#~ "MySQL connect failed either server not running or your authorization is "
+#~ "incorrect.\n"
+#~ msgstr ""
+#~ "No se puede conectar al servidor MySQL.\n"
+#~ "Base de Datos=%s Usuario=%s\n"
 
-#: src/dird/admin.c:118
-msgid "Bacula "
-msgstr "Bacula"
+#~ msgid "Attribute create error. %s"
+#~ msgstr "error al crear Atributo.%s"
 
-#: src/dird/dird.c:150
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"       -f          run in foreground (for debugging)\n"
-"       -g          groupid\n"
-"       -m          print kaboom output (for debugging)\n"
-"       -r <job>    run <job> now\n"
-"       -s          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -u          userid\n"
-"       -v          verbose user messages\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-"\n"
-"Utilice: dird [-f -s] [-c archivo_configuración] [-d nivel_depuración] "
-"[archivo_configuración]\n"
-" -c <archivo> establecer archivo de configuración para archivo \n"
-" -d <nn> establecer el nivel de depuración para <nn>\n"
-" -dt imprimir timestamp en salida de depuración\n"
-" -f ejecutar en primer plano (para depuración)\n"
-" -g groupid\n"
-" -m imprimir salida kaboom para depuración)\n"
-" -r <job> ejecutar <job> ahora\n"
-" -s sin señales\n"
-" -t prueba - leer la configuración y salir\n"
-" -u userid\n"
-" -v mensajes de usuario detallados\n"
-" -? imprimir este mensaje.\n"
-"\n"
+#~ msgid "A user name for MySQL must be supplied.\n"
+#~ msgstr "Un nombre de usuario para MySQL debe de ser suministrado.\n"
 
-#: 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"
+#~ msgid "error fetching row: %s\n"
+#~ msgstr "error al obtener la fila:%s\n"
 
-#: 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"
+#~ 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/dird/dird.c:546
-msgid "Too many open reload requests. Request ignored.\n"
-msgstr "Demasiadas solicitudes de recarga abiertas. Solicitud ignorada.\n"
+#, fuzzy
+#~ msgid ""
+#~ "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
+#~ "Possible causes: SQL server not running; password incorrect; "
+#~ "max_connections exceeded.\n"
+#~ msgstr ""
+#~ "No se puede conectar al servidor PostgreSQL.\n"
+#~ "Base de datos=%s Usuario=%s\n"
+#~ ", probablemente no funciona o tu contraseña es incorrecta.\n"
 
-#: src/dird/dird.c:561
-msgid "Out of reload table entries. Giving up.\n"
-msgstr "Fuera de entradas de las tablas recargadas. Abandonando.\n"
+#~ msgid "PQescapeStringConn returned non-zero.\n"
+#~ msgstr "PQescapeStringConn devuelto no-cero.\n"
 
-#: src/dird/dird.c:564
-msgid "Resetting previous configuration.\n"
-msgstr "Restablecimiento de la configuración anterior.\n"
+#, fuzzy
+#~ msgid "PQescapeByteaConn returned NULL.\n"
+#~ msgstr "PQescapeStringConn devuelto no-cero.\n"
 
-#: 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 ""
-"Recurso Director no definido en %s\n"
-"Sin eso no sé quién soy :-(\n"
+#, fuzzy
+#~ msgid "PQunescapeByteaConn returned NULL.\n"
+#~ msgstr "PQescapeStringConn devuelto no-cero.\n"
 
-#: 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"
+#~ msgid "error fetching currval: %s\n"
+#~ msgstr "error al obtener el valor: %s\n"
 
-#: 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: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"
+#~ msgid "error starting batch mode: %s"
+#~ msgstr "Error iniciando modo batch: %s"
 
-#: 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"
+#~ msgid "error ending batch mode: %s"
+#~ msgstr "Error finalizando modo batch: %s"
 
-#: 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"
+#~ msgid "error copying in batch mode: %s"
+#~ msgstr "Error copiando en modo batch: %s"
 
-#: 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 "
-"Director \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-"Ninguno \"TLS CA Certificate\" o \"TLS CA Certificate Dir\" esta definido "
-"para Director \"%s\" en %s. Al menos un almacén de certificado CA es "
-"requerido cuando se utiliza \"TLS Verify Peer\".\n"
+#~ msgid "A user name for PostgreSQL must be supplied.\n"
+#~ msgstr "Un nombre de usuario para PostgreSQL debe de ser suministrado.\n"
 
-#: 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"
+#~ msgid ""
+#~ "query %s failed:\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "consulta %s fallida:\n"
+#~ "%s\n"
 
-#: src/dird/dird.c:698
-#, c-format
-msgid "No Job records defined in %s\n"
-msgstr "Registros de Job no definidos en %s\n"
+#~ msgid ""
+#~ "insert %s failed:\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "Inserción %s fallida:\n"
+#~ "%s\n"
 
-#: 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"
+#~ msgid "Insertion problem: affected_rows=%s\n"
+#~ msgstr "Problemas con la inserción: filas afectadas=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "update %s failed:\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "Actualizar %s fallida:\n"
+#~ "%s\n"
 
-#: src/dird/dird.c:837
-msgid "Too many items in Job resource\n"
-msgstr "Demasiados elementos en el recurso Job\n"
+#~ msgid "Update failed: affected_rows=%s for %s\n"
+#~ msgstr "Actualización fallida: celdas afectadas =%s por %s\n"
 
-#: 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"
+#~ msgid ""
+#~ "delete %s failed:\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "Borrado %s fallido:\n"
+#~ "%s\n"
 
-#: 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"
+#~ msgid "Path length is zero. File=%s\n"
+#~ msgstr "La longitud de la ruta es nula. Archivo=%s\n"
 
-#: 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"
+#~ msgid "No results to list.\n"
+#~ msgstr "No hay resultados para listar.\n"
 
-#: src/dird/dird.c:878
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-"Ninguno \"TLS CA Certificate\" o \"TLS CA Certificate Dir\" esta definido "
-"para Console \"%s\" en %s. Al menos un almacén de certificado CA es "
-"requerido cuando se utiliza \"TLS Verify Peer\".\n"
+#, fuzzy
+#~ msgid "Could not init database batch connection\n"
+#~ msgstr "No se pudo iniciar base de datos de Bacula\n"
 
-#: 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"
+#~ msgid "Could not open database \"%s\": ERR=%s\n"
+#~ msgstr "No se pudo abrir la base de datos \"%s\": ERR=%s\n"
 
-#: 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 ""
-"Ninguno \"TLS CA Certificate\" o \"TLS CA Certificate Dir\" esta definido "
-"para demonio File \"%s\" en %s.\n"
+#~ msgid "Create DB Job record %s failed. ERR=%s\n"
+#~ msgstr "Creación de registro de Job %s en BD fallido. ERR=%s\n"
 
-#: 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"
+#~ msgid "Create JobMedia record %s failed: ERR=%s\n"
+#~ msgstr "Creación de registro de JobMedia %s fallido. ERR=%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"
+#~ msgid "Update Media record %s failed: ERR=%s\n"
+#~ msgstr "Actualización del registro de Media %s fallido: ERR=%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"
+#~ msgid "pool record %s already exists\n"
+#~ msgstr "registro del pool %s ya existe\n"
 
-#: src/dird/dird.c:1019 src/tools/cats_test.c:377
-#, c-format
-msgid "%s"
-msgstr "%s"
+#~ msgid "Create db Pool record %s failed: ERR=%s\n"
+#~ msgstr "Creación del registro BD Pool %s fallido: ERR=%s\n"
 
-#: 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"
+#~ msgid "Device record %s already exists\n"
+#~ msgstr "Registro de Dispositivo %s ya existe\n"
 
-#: 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"
+#~ msgid "Create db Device record %s failed: ERR=%s\n"
+#~ msgstr "Creación del registro de BD Device %s fallido: ERR=%s\n"
 
-#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
-#, 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"
+#~ msgid "More than one Storage record!: %d\n"
+#~ msgstr "Mas de un registro de almacenamiento!: %d\n"
 
-#: src/dird/inc_conf.c:312
-#, c-format
-msgid "Expected a strip path positive integer, got:%s:"
-msgstr "Esperaba una franja de ruta entero positivo, obtuvo: %s:"
+#~ msgid "error fetching Storage row: %s\n"
+#~ msgstr "error obteniendo fila del Almacenamiento:%s\n"
 
-#: src/dird/inc_conf.c:332
-#, c-format
-msgid "Expected a FileSet option keyword, got:%s:"
-msgstr "Esperaba una palabra clave Tipo FileSet, obtuvo: %s"
+#~ msgid "Create DB Storage record %s failed. ERR=%s\n"
+#~ msgstr "Creación del registro BD Almacenamiento %s fallido. ERR=%s\n"
 
-#: src/dird/inc_conf.c:365
-msgid "Old style Include/Exclude not supported\n"
-msgstr "Antiguo estilo Incluir/Excluir no soportado\n"
+#~ msgid "mediatype record %s already exists\n"
+#~ msgstr "registro de tipo de media %s ya existe\n"
 
-#: 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"
+#~ msgid "Create db mediatype record %s failed: ERR=%s\n"
+#~ msgstr "Fallo al crear la db_mediatype_record %s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Volume \"%s\" already exists.\n"
+#~ msgstr "Volumen \"%s\" ya existe.\n"
 
-#: 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"
+#~ msgid "Create DB Media record %s failed. ERR=%s\n"
+#~ msgstr "Creación del registro BD Almacenamiento %s fallido. ERR=%s\n"
 
-#: src/dird/inc_conf.c:464
-#, c-format
-msgid "Regex compile error. ERR=%s\n"
-msgstr "Error al compilar Regex. ERR=%s\n"
+#~ msgid "More than one Client!: %d\n"
+#~ msgstr "Mas de un cliente!: %d\n"
 
-#: src/dird/inc_conf.c:485
-#, c-format
-msgid "Expected a regex string, got: %s\n"
-msgstr "Se esperaba una expresión regular, se obtuvo: %s\n"
+#~ msgid "error fetching Client row: %s\n"
+#~ msgstr "error al obtener la fila Cliente:%s\n"
 
-#: src/dird/inc_conf.c:559
-#, c-format
-msgid "Expected a wild-card string, got: %s\n"
-msgstr "Esperada una cadena comodín, obtuvo: %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/dird/inc_conf.c:582
-#, c-format
-msgid "Expected an fstype string, got: %s\n"
-msgstr "Se esperaba una cadena fstype, se obtuvo: %s\n"
+#~ msgid "More than one Path!: %s for path: %s\n"
+#~ msgstr "Mas de un Path!: %s para path: %s\n"
 
-#: src/dird/inc_conf.c:593
-msgid "ExcludeDirContaining directive not permitted in Exclude.\n"
-msgstr "Directiva ExcludeDirContaining no permitida en Excluir(Exclude).\n"
+#~ msgid "Create db Path record %s failed. ERR=%s\n"
+#~ msgstr "Creación del registro Path db %s fallido. ERR=%s\n"
 
-#: src/dird/inc_conf.c:620
-#, c-format
-msgid "Expected an drivetype string, got: %s\n"
-msgstr "Se esperaba una cadena drivetype, se obtuvo: %s\n"
+#~ msgid "Create DB Counters record %s failed. ERR=%s\n"
+#~ msgstr "Creación del registro BD Contadores %s fallido. ERR=%s\n"
 
-#: src/dird/inc_conf.c:644 src/dird/inc_conf.c:687
-#, c-format
-msgid "Backslash found. Use forward slashes or quote the string.: %s\n"
-msgstr ""
-"Barra invertida encontrada. Utilice barras inclinadas o cite la cadena.: %s\n"
+#~ msgid "More than one FileSet!: %d\n"
+#~ msgstr "Más de un FileSet!: %d\n"
 
-#: src/dird/inc_conf.c:659 src/dird/inc_conf.c:702
-#, c-format
-msgid "Expected a filename, got: %s"
-msgstr "Se esperaba un nombre de archivo, se obtuvo: %s"
+#~ msgid "error fetching FileSet row: ERR=%s\n"
+#~ msgstr "error al obtener la fila FileSet: ERR=%s\n"
 
-#: src/dird/inc_conf.c:676
-msgid "Plugin directive not permitted in Exclude\n"
-msgstr "Directiva Plugin no permitida en Exclude\n"
+#~ msgid "Create DB FileSet record %s failed. ERR=%s\n"
+#~ msgstr "Creación del registro BD FileSet %s fallido. ERR=%s\n"
 
-#: src/dird/inc_conf.c:719
-msgid "Options section not permitted in Exclude\n"
-msgstr "Sección Options no permitida en Exclude\n"
+#~ msgid "Create db File record %s failed. ERR=%s"
+#~ msgstr "Creación del registro File db %s fallido. ERR=%s"
 
-#: 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"
+#~ msgid "More than one Filename! %s for file: %s\n"
+#~ msgstr "Mas de un nombre de Archivo! %s para el archivo: %s\n"
 
-#: src/dird/inc_conf.c:779
-#, c-format
-msgid "Expected a FileSet keyword, got: %s"
-msgstr "Esperaba una palabra clave FileSet, obtuvo: %s"
+#~ msgid "Error fetching row for file=%s: ERR=%s\n"
+#~ msgstr "Error al obtener fila para el archivo=%s: ERR=%s\n"
 
-#: src/dird/ua_query.c:73 src/findlib/create_file.c:288
-#: src/findlib/create_file.c:391
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr "No se pudo abrir %s: ERR=%s\n"
+#~ msgid "Create db Filename record %s failed. ERR=%s\n"
+#~ msgstr "Creación del registro Filename db %s fallido. ERR=%s\n"
 
-#: src/dird/ua_query.c:78
-msgid "Available queries:\n"
-msgstr "Consultas disponibles:\n"
+#~ 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/dird/ua_query.c:85
-msgid "Choose a query"
-msgstr "Elija una consulta"
+#~ msgid "ERR=JobIds are empty\n"
+#~ msgstr "ERR=JobIds están vacíos\n"
 
-#: src/dird/ua_query.c:99
-msgid "Could not find query.\n"
-msgstr "No se pudo encontrar la consulta.\n"
+#, fuzzy
+#~ msgid "Create db Object record %s failed. ERR=%s"
+#~ msgstr "Creación del registro File db %s fallido. ERR=%s"
 
-#: src/dird/ua_query.c:117
-msgid "Too many prompts in query, max is 9.\n"
-msgstr "Demasiadas consolas en consulta, máximo es 9.\n"
+#~ msgid "No pool record %s exists\n"
+#~ msgstr "Registro de pool %s inexistente\n"
 
-#: src/dird/ua_query.c:220
-#, c-format
-msgid "Warning prompt %d missing.\n"
-msgstr "Alerta de consola %d perdida.\n"
+#~ msgid "Expecting one pool record, got %d\n"
+#~ msgstr "Esperando un registro pool, tiene %d\n"
 
-#: src/dird/ua_query.c:265
-msgid ""
-"Entering SQL query mode.\n"
-"Terminate each query with a semicolon.\n"
-"Terminate query mode with a blank line.\n"
-msgstr ""
-"Entrando en modo de consulta SQL.\n"
-"Termine cada consulta con un punto-coma.\n"
-"Termine el modo de consulta con una linea en blanco.\n"
+#~ msgid "Error fetching row %s\n"
+#~ msgstr "Error obteniendo fila %s\n"
 
-#: src/dird/ua_query.c:268 src/dird/ua_query.c:284
-msgid "Enter SQL query: "
-msgstr "Ingrese una consulta SQL:"
+#~ msgid ""
+#~ "Query error for start time request: ERR=%s\n"
+#~ "CMD=%s\n"
+#~ msgstr ""
+#~ "Error de consulta al solicitar tiempo inicial: ERR=%s\n"
+#~ "CMD=%s\n"
 
-#: src/dird/ua_query.c:286
-msgid "Add to SQL query: "
-msgstr "Agregar a la consulta SQL:"
+#~ msgid "No prior Full backup Job record found.\n"
+#~ msgstr "No encontrado registro anterior de Job de respaldo completo.\n"
 
-#: src/dird/ua_query.c:289
-msgid "End query mode.\n"
-msgstr "Fin modo de consulta.\n"
+#~ msgid "Unknown level=%d\n"
+#~ msgstr "Nivel desconocido=%d\n"
 
-#: 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"
+#~ msgid ""
+#~ "No Job record found: ERR=%s\n"
+#~ "CMD=%s\n"
+#~ msgstr ""
+#~ "No se encuentra el registro de trabajo: ERR=%s\n"
+#~ " CMD=%s\n"
 
-#: src/dird/newvol.c:104
-#, c-format
-msgid "Created new Volume \"%s\" in catalog.\n"
-msgstr "Se creó un Volumen nuevo \"%s\" en el catálogo.\n"
+#~ msgid "Unknown Job level=%d\n"
+#~ msgstr "Nivel del Job desconocido=%d\n"
 
-#: src/dird/newvol.c:131
-#, c-format
-msgid "SQL failed, but ignored. ERR=%s\n"
-msgstr "SQL fallido, pero ignorado. ERR=%s\n"
+#~ msgid "No Job found for: %s.\n"
+#~ msgstr "No se encontró ningún Job para: %s.\n"
 
-#: 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"
+#~ msgid "No Job found for: %s\n"
+#~ msgstr "Job no encontrado para:%s\n"
 
-#: 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"
+#~ msgid "Request for Volume item %d greater than max %d or less than 1\n"
+#~ msgstr "Solicitud de ítem Volumen %d mayor que el máximo %d o menor que 1\n"
 
-#: src/dird/expand.c:255
-#, c-format
-msgid "Count not update counter %s: ERR=%s\n"
-msgstr "Conteo no actualizo contador %s: ERR=%s\n"
+#~ msgid "No Volume record found for item %d.\n"
+#~ msgstr "Registro de ítem Volumen no encontrado %d.\n"
 
-#: src/dird/expand.c:427
-#, c-format
-msgid "Cannot create var context: ERR=%s\n"
-msgstr "No se puede crear contexto var: ERR=%s\n"
+#~ msgid "Error fetching row: %s\n"
+#~ msgstr "Error obteniendo fila: %s\n"
 
-#: src/dird/expand.c:432
-#, c-format
-msgid "Cannot set var callback: ERR=%s\n"
-msgstr "No se puede establecer llamada var: ERR=%s\n"
+#, fuzzy
+#~ msgid "get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"
+#~ msgstr "get_file_record falta 1 obtuvo filas=%d\n"
 
-#: src/dird/expand.c:438
-#, c-format
-msgid "Cannot set var operate: ERR=%s\n"
-msgstr "No se puede establecer variable operar: ERR=%s\n"
+#~ msgid "File record for PathId=%s FilenameId=%s not found.\n"
+#~ msgstr "Registro File para PathID=%s FilenameID=%s no encontrado.\n"
 
-#: src/dird/expand.c:444 src/dird/expand.c:459
-#, c-format
-msgid "Cannot unescape string: ERR=%s\n"
-msgstr "No se puede unescapar cadena: ERR=%s\n"
+#~ msgid "File record not found in Catalog.\n"
+#~ msgstr "Registro File no se encuentra en Catalogo.\n"
 
-#: src/dird/expand.c:452
-#, c-format
-msgid "Cannot expand expression \"%s\": ERR=%s\n"
-msgstr "No se puede ampliar la expresión \"%s\": ERR=%s\n"
+#~ msgid "More than one Filename!: %s for file: %s\n"
+#~ msgstr "Más de un Filename!: %s en archivo: %s\n"
 
-#: src/dird/expand.c:470
-#, c-format
-msgid "Cannot destroy var context: ERR=%s\n"
-msgstr "No se puede destruir variable contexto: ERR=%s\n"
+#~ msgid "Get DB Filename record %s found bad record: %d\n"
+#~ msgstr "Obtener registro BD Filename %s encuentro registro malo: %d\n"
 
-#: src/dird/recycle.c:69
-#, c-format
-msgid "Recycled volume \"%s\"\n"
-msgstr "Volumen \"%s\" reciclado\n"
+#~ msgid "Filename record: %s not found.\n"
+#~ msgstr "Registro Filename: %s no encontrado.\n"
 
-#: src/dird/ua_purge.c:90
-msgid ""
-"\n"
-"This command can be DANGEROUS!!!\n"
-"\n"
-"It purges (deletes) all Files from a Job,\n"
-"JobId, Client or Volume; or it purges (deletes)\n"
-"all Jobs from a Client or Volume without regard\n"
-"to retention periods. Normally you should use the\n"
-"PRUNE command, which respects retention periods.\n"
-msgstr ""
-"\n"
-"Este comando puede ser PELIGROSO!!!\n"
-"\n"
-"El purgas (elimina) todos los archivos de un Job,\n"
-"JobId, Cliente o Volumen; o el purgas (elimina)\n"
-"Todos los Jobs de un Cliente o Volumen sin tener en cuenta\n"
-"los periodos de retención. Normalmente debería utilizar el\n"
-"comando PRUNE, que respecta los plazos de retención.\n"
+#~ msgid "Filename record: %s not found in Catalog.\n"
+#~ msgstr "Registro Filename: %s no encontrado en Catalogo.\n"
 
-#: src/dird/ua_purge.c:157
-msgid "Choose item to purge"
-msgstr "Elija el ítem para purgar"
+#~ msgid "Get DB path record %s found bad record: %s\n"
+#~ msgstr "Obtener registro ruta %s de BD encontró malo registro: %s\n"
 
-#: src/dird/ua_purge.c:204
-#, c-format
-msgid "Begin purging files for Client \"%s\"\n"
-msgstr "Iniciando purga de archivos para Cliente \"%s\"\n"
+#~ msgid "Path record: %s not found.\n"
+#~ msgstr "Registro Path: %s no encontrado.\n"
 
-#: src/dird/ua_purge.c:213 src/dird/ua_purge.c:263
-#, c-format
-msgid "No Files found for client %s to purge from %s catalog.\n"
-msgstr ""
-"No encuentra los archivos del cliente %s para purgar %s del catálogo.\n"
+#~ msgid "Path record: %s not found in Catalog.\n"
+#~ msgstr "Registro Path: %s no encontrado en el Catalogo.\n"
 
-#: src/dird/ua_purge.c:216
-#, c-format
-msgid "Files for %d Jobs for client \"%s\" purged from %s catalog.\n"
-msgstr "Archivos para Jobs %d para cliente \"%s\" purgado del catalogo %s.\n"
+#~ msgid "No Job found for JobId %s\n"
+#~ msgstr "No se encontró un job para el JobId %s\n"
 
-#: src/dird/ua_purge.c:254
-#, c-format
-msgid "Begin purging jobs from Client \"%s\"\n"
-msgstr "Iniciando purga de jobs para Cliente \"%s\"\n"
+#~ msgid "No volumes found for JobId=%d\n"
+#~ msgstr "Volúmenes no encontrados para JobId=%d\n"
 
-#: src/dird/ua_purge.c:266
-#, c-format
-msgid "%d Jobs for client %s purged from %s catalog.\n"
-msgstr "Jobs %d para cliente \"%s\" purgado del catalogo %s.\n"
+#~ msgid "Error fetching row %d: ERR=%s\n"
+#~ msgstr "Error obteniendo fila %d: ERR=%s\n"
 
-#: src/dird/ua_purge.c:464
-#, c-format
-msgid ""
-"\n"
-"Volume \"%s\" has VolStatus \"%s\" and cannot be purged.\n"
-"The VolStatus must be: Append, Full, Used, or Error to be purged.\n"
-msgstr ""
-"\n"
-"Volumen \"%s\" tiene VolStatus \"%s\" y no puede ser purgado.\n"
-"El VolStatus debe ser: Añadir, Lleno, Usado, o Error para ser purgado.\n"
+#~ msgid "No Volume for JobId %d found in Catalog.\n"
+#~ msgstr "Volúmenes para JobId=%d no encontrado en el Catalogo.\n"
 
-#: src/dird/ua_purge.c:492
-#, c-format
-msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
-msgstr "%d Archivo%s en Volumen \"%s\" purgado desde el catalogo.\n"
+#~ msgid "Pool id select failed: ERR=%s\n"
+#~ msgstr "Fallo al selecciona id del Pool: ERR=%s\n"
 
-#: src/dird/ua_purge.c:541
-#, c-format
-msgid ""
-"There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
-msgstr ""
-"No hay más Jobs relacionados con Volumen \"%s\". Marcando el para purgar.\n"
+#~ msgid "Client id select failed: ERR=%s\n"
+#~ msgstr "Fallo al seleccionar ID del Cliente: ERR=%s\n"
 
-#: 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"
+#~ msgid "More than one Pool!: %s\n"
+#~ msgstr "Mas de un Poll!: %s\n"
 
-#: 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"
+#~ msgid "Pool record not found in Catalog.\n"
+#~ msgstr "Registro del Pool no encontrado en Catalogo.\n"
 
-#: 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"
+#~ msgid "More than one Client!: %s\n"
+#~ msgstr "Mas de un Cliente!: %s\n"
 
-#: src/dird/ua_purge.c:625
-#, c-format
-msgid "The volume \"%s\" has been truncated\n"
-msgstr ""
+#~ msgid "Client record not found in Catalog.\n"
+#~ msgstr "Registro de cliente no encontrado en catalogo.\n"
 
-#: 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"
+#~ msgid "More than one Counter!: %d\n"
+#~ msgstr "Mas de un Contador!: %d\n"
 
-#: src/dird/ua_purge.c:713
-#, fuzzy, c-format
-msgid "No Volumes found to perform %s action.\n"
-msgstr "No encontraron volúmenes para etiquetar, o sin códigos de barras.\n"
+#~ msgid "error fetching Counter row: %s\n"
+#~ msgstr "error al obtener fila Contador: %s\n"
 
-#: 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"
+#~ msgid "Counter record: %s not found in Catalog.\n"
+#~ msgstr "registro Contador: %s no encontrado en Catalogo.\n"
 
-#: 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"
+#~ msgid "Error got %s FileSets but expected only one!\n"
+#~ msgstr "Error al obtener %s FileSets pero se esperaba sólo uno!\n"
 
-#: 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"
+#~ msgid "FileSet record \"%s\" not found.\n"
+#~ msgstr "Registro FileSet \"%s\" no encontrado.\n"
 
-#: src/dird/vbackup.c:76 src/dird/migrate.c:114
-msgid "Could not get or create a Pool record.\n"
-msgstr "No es posible obtener o crear un registro Pool.\n"
+#~ msgid "FileSet record not found in Catalog.\n"
+#~ msgstr "Registro FileSet no encontrado en Catalogo.\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:871
-#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
-msgid "Pool resource"
-msgstr "Recurso pool"
+#~ msgid "Media id select failed: ERR=%s\n"
+#~ msgstr "Fallo al seleccionar ID del Medio: ERR=%s\n"
 
-#: src/dird/vbackup.c:116 src/dird/migrate.c:285
-msgid "Job Pool's NextPool resource"
-msgstr "Recurso Job Pool's NextPool "
+#~ msgid "query dbids failed: ERR=%s\n"
+#~ msgstr "Consulta fallida a dbids: ERR=%s\n"
 
-#: src/dird/vbackup.c:147
-#, c-format
-msgid "Start Virtual Backup JobId %s, Job=%s\n"
-msgstr "Respaldo Virtual iniciado JobId %s, Job=%s\n"
+#~ msgid "More than one Volume!: %s\n"
+#~ msgstr "Mas de un Volumen!: %s\n"
 
-#: src/dird/vbackup.c:151
-msgid ""
-"This Job is not an Accurate backup so is not equivalent to a Full backup.\n"
-msgstr ""
-"Este trabajo no es una copia de seguridad exacta, por lo que no es "
-"equivalente a una copia de seguridad completa.\n"
+#~ msgid "Media record MediaId=%s not found.\n"
+#~ msgstr "Registro Media MediaID=%s no encontrado.\n"
 
-#: src/dird/vbackup.c:158
-msgid "No previous Jobs found.\n"
-msgstr "Jobs previos no encontrados.\n"
+#~ msgid "Media record for Volume \"%s\" not found.\n"
+#~ msgstr "Registro Media para Volumen \"%s\" no encontrado.\n"
 
-#: src/dird/vbackup.c:180
-#, c-format
-msgid "Error getting Job record for previous Job: ERR=%s"
-msgstr "Error obteniendo registro Job para Job anterior: ERR=%s"
+#~ msgid "Media record for MediaId=%u not found in Catalog.\n"
+#~ msgstr "Registro Media para MediaId=%u no encontrado en el Catalogo.\n"
 
-#: src/dird/vbackup.c:186 src/dird/migrate.c:131
-msgid "Could not get or create the FileSet record.\n"
-msgstr "No es posible obtener o crear un registro FileSet.\n"
+#~ msgid "Media record for Vol=%s not found in Catalog.\n"
+#~ msgstr "Registro Media para Volumen=%s no encontrado en el Catalogo.\n"
 
-#: 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"
+#~ msgid "Query failed: %s\n"
+#~ msgstr "Consulta fallida: %s\n"
 
-#: 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"
+#~ msgid "These JobIds have copies as follows:\n"
+#~ msgstr "Estos JobIds tienen copias de la siguiente manera:\n"
 
-#: 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"
+#~ msgid "The catalog contains copies as follows:\n"
+#~ msgstr "El catálogo contiene copias de la siguiente manera:\n"
 
-#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
-msgid "Backup OK"
-msgstr "Respaldo OK"
+#~ msgid "Database %s does not exist, please create it.\n"
+#~ msgstr "No existe base de datos %s, por favor crearla.\n"
 
-#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
-msgid "*** Backup Error ***"
-msgstr "***Error en Respaldo ***"
+#~ msgid "Unable to open Database=%s. ERR=%s\n"
+#~ msgstr "No se puede abrir la base de datos=%s. ERR=%s\n"
 
-#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
-msgid "Backup Canceled"
-msgstr "Respaldo Cancelado"
+#~ msgid "unknown"
+#~ msgstr "desconocido"
 
-#: src/dird/vbackup.c:393
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           Virtual Full\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s %s (%s): %s\n"
-" Build OS: %s %s %s\n"
-" JobId: %d\n"
-" Job: %s\n"
-" Nivel del Respaldo: Virtual Completo\n"
-" Cliente: \"%s\" %s\n"
-" FileSet: \"%s\" %s\n"
-" Pool: \"%s\" (Desde %s)\n"
-" Catalogo: \"%s\" (Desde %s)\n"
-" Storage: \"%s\" (Desde %s)\n"
-" Hora programada: %s\n"
-" Hora de inicio: %s\n"
-" Hora de finalización: %s\n"
-" Tiempo transcurrido: %s\n"
-" Prioridad: %d\n"
-" SD Archivos Escritos: %s\n"
-" SD Bytes Escritos: %s (%sB)\n"
-" Tasa: %.1f KB/s\n"
-" Nombre del Volumen(es): %s\n"
-" Id de Sesión de Volumen: %d\n"
-" Tiempo de Sesión de Volumen: %d\n"
-" Ultimo Bytes del  Volumen: %s (%sB)\n"
-" Errores del SD: %d\n"
-" Estado de terminación del SD: %s\n"
-" Terminación: %s\n"
-"\n"
+#~ msgid ""
+#~ "Authorization problem: Remote server did not advertise required TLS "
+#~ "support.\n"
+#~ msgstr ""
+#~ "Problema de Autorización: El servidor remoto no anuncio soporte TLS "
+#~ "requerido.\n"
 
-#: src/dird/ua_output.c:69 src/dird/ua_output.c:93
-msgid "ON or OFF keyword missing.\n"
-msgstr "Faltan palabra clave ON u OFF.\n"
+#~ msgid "Authorization problem: Remote server requires TLS.\n"
+#~ msgstr "Problema de autorización. Servidor remoto requiere TLS.\n"
 
-#: src/dird/ua_output.c:113
-msgid "Disabled Jobs:\n"
-msgstr "Jobs Deshabilitados:\n"
+#~ msgid "TLS negotiation failed\n"
+#~ msgstr "Negociación TLS fallida\n"
 
-#: src/dird/ua_output.c:119
-msgid "No disabled Jobs.\n"
-msgstr "Ningún Jobs Deshabilitado.\n"
+#, fuzzy
+#~ msgid ""
+#~ "Director authorization problem.\n"
+#~ "Most likely the passwords do not agree.\n"
+#~ "If you are using TLS, there may have been a certificate validation error "
+#~ "during the TLS handshake.\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Problema de Autorización de Director.\n"
+#~ "El más probable es que las contraseñas no están de acuerdo.\n"
+#~ "Si usted esta utilizando TLS, puede haber habido un error de validación "
+#~ "de certificado durante el apretón de manos TLS.\n"
+#~ "Por favor, consulte http://www.bacula.org/en/rel-manual/"
+#~ "Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 para ayuda.\n"
 
-#: src/dird/ua_output.c:163
-msgid "disabled"
-msgstr "deshabilitado"
+#~ msgid ""
+#~ "\n"
+#~ "Version: "
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: "
 
-#: src/dird/ua_output.c:211
-msgid "Keywords for the show command are:\n"
-msgstr "Palabras clave para el comando show son:\n"
+#~ msgid "input from file"
+#~ msgstr "entrada desde archivo"
 
-#: src/dird/ua_output.c:217
-#, c-format
-msgid "%s resource %s not found.\n"
-msgstr "%s recurso %s no encontrado.\n"
+#~ msgid "output to file"
+#~ msgstr "salida a archivo"
 
-#: src/dird/ua_output.c:220
-#, c-format
-msgid "Resource %s not found\n"
-msgstr "Recursos %s no encontrado\n"
+#~ msgid "quit"
+#~ msgstr "salir"
 
-#: src/dird/ua_output.c:290
-msgid "Hey! DB is NULL\n"
-msgstr "Hey! BD esta VACÍA\n"
+#~ msgid "output to file and terminal"
+#~ msgstr "salida a archivo y pantalla"
 
-#: 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"
+#~ msgid "sleep specified time"
+#~ msgstr "tiempo de espera especificado"
 
-#: src/dird/ua_output.c:465
-msgid "No Pool specified.\n"
-msgstr "Ningún Pool especificado.\n"
+#~ msgid "print current time"
+#~ msgstr "imprimir hora actual"
 
-#: src/dird/ua_output.c:486
-#, c-format
-msgid "Pool: %s\n"
-msgstr "Pool: %s\n"
+#~ msgid "print Console's version"
+#~ msgstr "imprimir la versión de la Consola"
 
-#: 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"
+#~ msgid "echo command string"
+#~ msgstr "cadena de comando echo"
 
-#: src/dird/ua_output.c:524
-#, c-format
-msgid "Unknown list keyword: %s\n"
-msgstr "Lista de palabras clave desconocida: %s\n"
+#~ msgid "execute an external command"
+#~ msgstr "ejecutar un comando externo"
 
-#: 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"
+#~ msgid "exit = quit"
+#~ msgstr "exit = salir"
 
-#: 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"
+#~ msgid "zed_keys = use zed keys instead of bash keys"
+#~ msgstr "zed_keys = usar las teclas zed en lugar de teclas bash"
 
-#: 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"
+#~ msgid "help listing"
+#~ msgstr "listado de ayuda"
 
-#: 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 ""
-"El próximo Volumen que se utilizará por Job \"%s\" (Pool=%s, Nivel=%s) será "
-"%s\n"
+#~ msgid "set command separator"
+#~ msgstr "configurar separador de comandos"
 
-#: 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"
+#~ msgid ": is an invalid command\n"
+#~ msgstr ": es un comando invalido\n"
 
-#: 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"
+#~ msgid "Illegal separator character.\n"
+#~ msgstr "Ilegal carácter de separación.\n"
 
-#: 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"
+#~ msgid "Command logic problem\n"
+#~ msgstr "Problema lógico de comando\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Can't find %s in Director list\n"
+#~ msgstr "No se puede encontrar el recurso Director %s\n"
 
-#: src/dird/ua_output.c:794
-msgid "You have no messages.\n"
-msgstr "Usted no tiene mensajes.\n"
+#~ msgid "Available Directors:\n"
+#~ msgstr "Directors disponibles:\n"
 
-#: src/dird/ua_output.c:874
-msgid "Message too long to display.\n"
-msgstr "Mensaje demasiado largo para mostrar.\n"
+#~ msgid "%2d:  %s at %s:%d\n"
+#~ msgstr "%2d: %s en %s:%d\n"
 
-#: src/dird/ua_dotcmds.c:155 src/dird/ua_cmds.c:236
-#, c-format
-msgid "Can't use %s command in a runscript"
-msgstr "No se puede usar comando %s en un runscript"
+#~ msgid "Select Director by entering a number: "
+#~ msgstr "Seleccione Director introduciendo un numero:"
 
-#: src/dird/ua_dotcmds.c:175
-msgid ": is an invalid command.\n"
-msgstr ": es un comando inválido.\n"
+#~ msgid "%s is not a number. You must enter a number between 1 and %d\n"
+#~ msgstr "%s no es un número. Debe introducir un número entre 1 y %d\n"
 
-#: 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"
+#~ msgid "You must enter a number between 1 and %d\n"
+#~ msgstr "Debe de introducir un numero entre 1 y %d\n"
 
-#: 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:1160 src/dird/job.c:1164
-msgid "unknown source"
-msgstr "fuente desconocida"
+#~ msgid "Connecting to Director %s:%d\n"
+#~ msgstr "Conectando al Director %s:%d\n"
 
-#: 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"
+#~ msgid "Enter a period to cancel a command.\n"
+#~ msgstr "Introduzca un período para cancelar un comando.\n"
 
-#: 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"
+#~ msgid "Too many arguments on input command.\n"
+#~ msgstr "Demasiados argumentos en comando de entrada.\n"
 
-#: 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"
+#~ msgid "First argument to input command must be a filename.\n"
+#~ msgstr ""
+#~ "Primer argumento para comandos de entrada debe ser un nombre de archivo.\n"
 
-#: 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"
+#~ msgid "Cannot open file %s for input. ERR=%s\n"
+#~ msgstr "No se puede abrir el archivo %s para entrada. ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
-#, fuzzy, c-format
-msgid "Unknown command: %s\n"
-msgstr "Comando desconocido."
+#~ msgid "Too many arguments on output/tee command.\n"
+#~ msgstr "Demasiados argumentos en la salida del comando output/tee.\n"
 
-#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
-msgid "Available daemons are: \n"
-msgstr "Demonios disponible son: \n"
+#~ msgid "Cannot open file %s for output. ERR=%s\n"
+#~ msgstr "No se puede abrir el archivo %s para salida. ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
-msgid "Director"
-msgstr "Director"
+#~ msgid "Too many arguments. Enclose command in double quotes.\n"
+#~ msgstr "Demasiados argumentos. Incluya comando entre comillas dobles.\n"
 
-#: src/dird/ua_dotcmds.c:736
-msgid "Select daemon type to make die"
-msgstr "Seleccione tipo de demonio para matar"
+#~ msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
+#~ msgstr "No puede popen(\"%s\", \"r\"): ERR=%s\n"
 
-#: 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"
+#~ msgid "Autochanger error: ERR=%s\n"
+#~ msgstr "Auto-cambiador error: ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:766
-msgid "The Director will segment fault.\n"
-msgstr "El Director tendrá una violación de segmento.\n"
+#~ msgid "Console: name=%s rcfile=%s histfile=%s\n"
+#~ msgstr "Console: nombre=%s rcfile=%s histfile=%s\n"
 
-#: 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"
+#~ msgid "Start Admin JobId %d, Job=%s\n"
+#~ msgstr "Inicio Admin JobId %d, Job=%s\n"
 
-#: 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"
+#~ 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/ua_dotcmds.c:999
-msgid "query keyword not found.\n"
-msgstr "consulta de palabra clave no encontrada.\n"
+#~ msgid "Admin OK"
+#~ msgstr "Administración Ok"
 
-#: src/dird/ua_dotcmds.c:1026
-#, c-format
-msgid "List MediaType failed: ERR=%s\n"
-msgstr "Fallo al listar MediaType: ERR=%s\n"
+#~ msgid "*** Admin Error ***"
+#~ msgstr "***Administración Error***"
 
-#: src/dird/ua_dotcmds.c:1040
-#, c-format
-msgid "List Media failed: ERR=%s\n"
-msgstr "Fallo al listar Media: ERR=%s\n"
+#~ msgid "Admin Canceled"
+#~ msgstr "Administración Cancelada"
 
-#: src/dird/ua_dotcmds.c:1054
-#, c-format
-msgid "List Location failed: ERR=%s\n"
-msgstr "Fallo al listar Ubicación: ERR=%s\n"
+#~ msgid "Inappropriate term code: %c\n"
+#~ msgstr "Inadecuado código de terminación: %c\n"
 
-#: src/dird/next_vol.c:166
-#, c-format
-msgid "Purging oldest volume \"%s\"\n"
-msgstr "Purgando volumen más antiguo \"%s\"\n"
+#~ msgid "Director and Storage daemon passwords or names not the same.\n"
+#~ msgstr "Nombres o contraseñas en el Director o Storage no son las mismas.\n"
 
-#: src/dird/next_vol.c:172
-#, c-format
-msgid "Pruning oldest volume \"%s\"\n"
-msgstr "Podando volumen más antiguo \"%s\"\n"
+#, fuzzy
+#~ msgid ""
+#~ "Director unable to authenticate with Storage daemon at \"%s:%d\". "
+#~ "Possible causes:\n"
+#~ "Passwords or names not the same or\n"
+#~ "Maximum Concurrent Jobs exceeded on the SD or\n"
+#~ "SD networking messed up (restart daemon).\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Director no se puede autenticar con el demonio Storage en \"%s:%d\". "
+#~ "Posibles causas:\n"
+#~ "Contraseñas o nombres no son los mismos o\n"
+#~ "el Máximo de Concurrentes Jobs ha superado en el SD o\n"
+#~ "red SD desordenada (reiniciar demonio).\n"
+#~ "Por favor, consulte http://www.bacula.org/en/rel-manual/"
+#~ "Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 por ayuda.\n"
 
-#: 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"
+#~ msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
+#~ msgstr "Negociación TLS fallida con SD en \"%s:%d\"\n"
 
-#: 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"
+#~ msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
+#~ msgstr "bdird<stored: \"%s:%s\" mala respuesta al comando Hello: ERR=%s\n"
 
-#: 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"
+#~ msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
+#~ msgstr "Storage servicio en \"%s:%d\" rechazo el comando Hello\n"
 
-#: 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"
+#~ msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
+#~ msgstr "Error enviando Hello al servicio File en \"%s:%d\". ERR=%s\n"
 
-#: 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"
+#~ msgid "Director and File daemon passwords or names not the same.\n"
+#~ msgstr "Contraseñas del demonio Director y File no son los mismos.\n"
 
-#: src/dird/next_vol.c:254
-#, fuzzy, c-format
-msgid ""
-"Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
-"Used.\n"
-msgstr ""
-"Máximo de duración de uso configurado superado. Marcando Volumen \"%s\" "
-"como  Usado.\n"
+#, fuzzy
+#~ msgid ""
+#~ "Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
+#~ "Passwords or names not the same or\n"
+#~ "Maximum Concurrent Jobs exceeded on the FD or\n"
+#~ "FD networking messed up (restart daemon).\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "No se puede autenticar con el demonio File en \"%s:%d\". Posibles "
+#~ "causas:\n"
+#~ "Contraseñas o nombres no son los mismos o\n"
+#~ "el Máximo de Concurrentes Jobs ha superado en el FD o\n"
+#~ "red FD desordenada (reiniciar demonio).\n"
+#~ "Por favor, consulte http://www.bacula.org/en/rel-manual/"
+#~ "Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 por ayuda.\n"
 
-#: 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"
+#~ msgid ""
+#~ "Authorization problem: FD \"%s:%s\" did not advertise required TLS "
+#~ "support.\n"
+#~ msgstr ""
+#~ "Problema de Autorización: FD \"%s:%s\" no anuncio soporte TLS requerido.\n"
 
-#: src/dird/next_vol.c:289
-msgid "volume has expired"
-msgstr "volumen ha caducado"
+#~ msgid "Authorization problem: FD at \"%s:%d\" requires TLS.\n"
+#~ msgstr "Problema de autorización: FD en \"%s:%d\" requiere TLS.\n"
 
-#: 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"
+#~ msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
+#~ msgstr "Fallo de negociación TLS con FD en  \"%s:%d\".\n"
 
-#: src/dird/next_vol.c:312
-msgid "and recycling of current volume failed"
-msgstr "y el reciclado de volumen actual fallo"
+#~ msgid ""
+#~ "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
+#~ msgstr ""
+#~ "Mala respuesta desde el demonio File en \"%s:%d\" para el comando Hello: "
+#~ "ERR=%s\n"
 
-#: src/dird/next_vol.c:318
-msgid "but should be Append, Purged or Recycle"
-msgstr "pero debería ser Anexar, Purgado o Reciclaje"
+#~ msgid "File daemon at \"%s:%d\" rejected Hello command\n"
+#~ msgstr "Demonio File en \"%s:%d\" rechazo el comando Hello\n"
 
-#: src/dird/next_vol.c:327
-msgid "volume has recycling disabled"
-msgstr "el volumen de reciclado se ha desactivado"
+#~ msgid "UA Hello from %s:%s:%d is invalid. Len=%d\n"
+#~ msgstr "UA Hello desde %s:%s:%d no es valido. Len=%d\n"
 
-#: src/dird/next_vol.c:354
-msgid ""
-"but should be Append, Purged or Recycle (recycling of the current volume "
-"failed)"
-msgstr ""
-"pero debería ser Anexar, Purgado o Reciclaje (reciclado del volumen actual "
-"fallido)"
+#~ msgid "UA Hello from %s:%s:%d is invalid. Got: %s\n"
+#~ msgstr "UA Hello desde %s:%s:%d no es valido. Obtuvo=%s\n"
 
-#: 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 ""
-"pero debería ser Anexar, Purgado o Reciclaje (no puede reciclar "
-"automáticamente el volumen actual, ya que aún contiene datos \"unpruned\" o "
-"el tiempo de retención del Volumen no ha expirado.)"
+#~ msgid ""
+#~ "Authorization problem: Remote client did not advertise required TLS "
+#~ "support.\n"
+#~ msgstr ""
+#~ "Problema de Autorización: El cliente remoto no anuncio soporte TLS "
+#~ "requerido.\n"
 
-#: 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"
+#~ msgid "Authorization problem: Remote client requires TLS.\n"
+#~ msgstr "Problema de autorización: Cliente remoto requiere TLS.\n"
 
-#: 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"
+#~ msgid "TLS negotiation failed.\n"
+#~ msgstr "Fallo de negociación TLS.\n"
 
-#: 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"
+#~ msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
+#~ msgstr "No se puede autenticar la consola \"%s\" en %s:%s:%d.\n"
 
-#: src/dird/next_vol.c:453
-#, c-format
-msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
-msgstr "Usando Volumen \"%s\" desde 'Scratch' pool.\n"
+#, fuzzy
+#~ msgid "1000 OK: %d %s Version: %s (%s)\n"
+#~ msgstr "1000 OK: %s Versión: %s(%s)\n"
 
-#: src/dird/ua_cmds.c:120
-msgid "Add media to a pool"
-msgstr "Añadir medios a un pool"
+#~ msgid ""
+#~ "End auto prune.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Fin auto podar(prune).\n"
+#~ "\n"
 
-#: src/dird/ua_cmds.c:121
-msgid "Autodisplay console messages"
-msgstr "Autodisplay mensajes de la consola"
+#~ msgid "Pool resource"
+#~ msgstr "Recurso pool"
 
-#: src/dird/ua_cmds.c:122
-msgid "Automount after label"
-msgstr "Auto-montar después de etiquetar"
+#~ msgid "No Storage specification found in Job or Pool.\n"
+#~ msgstr "No se encuentran en la especificación del Storage en Job or Pool.\n"
 
-#: src/dird/ua_cmds.c:123
-msgid "Cancel a job"
-msgstr "Cancelar un Job"
+#, fuzzy
+#~ msgid "Using BaseJobId(s): %s\n"
+#~ msgstr "%s utilizando JobId=%s Job=%s\n"
 
-#: src/dird/ua_cmds.c:124
-msgid "Create DB Pool from resource"
-msgstr "Crear Pool BD desde recurso"
+#~ msgid "Cannot find previous jobids.\n"
+#~ msgstr "No se puede encontrar jobids anteriores.\n"
 
-#: src/dird/ua_cmds.c:125
-msgid "Delete volume, pool or job"
-msgstr "Eliminar volumen, pool o job"
+#, fuzzy
+#~ msgid "Sending Accurate information to the FD.\n"
+#~ msgstr "Enviando información precisa.\n"
 
-#: src/dird/ua_cmds.c:126
-msgid "Disable a job"
-msgstr "Deshabilitar un job"
+#~ msgid "Start Backup JobId %s, Job=%s\n"
+#~ msgstr "Iniciar Respaldo JobId %s, Job=%s\n"
 
-#: src/dird/ua_cmds.c:127
-msgid "Enable a job"
-msgstr "Habilitar un job"
+#~ msgid "Unexpected Client Job message: %s\n"
+#~ msgstr "Inesperado Cliente Job mensaje: %s\n"
 
-#: src/dird/ua_cmds.c:128
-msgid "Performs FileSet estimate, listing gives full listing"
-msgstr "Realiza estimación FileSet, listando lista completa"
+#~ msgid "Network error with FD during %s: ERR=%s\n"
+#~ msgstr "Error de red con FD durante %s: ERR=%s\n"
 
-#: src/dird/ua_cmds.c:131 src/dird/ua_cmds.c:155
-msgid "Terminate Bconsole session"
-msgstr "Terminar la sesión bconsole"
+#~ msgid "No Job status returned from FD.\n"
+#~ msgstr "Estado de Job no retornado desde FD.\n"
 
-#: src/dird/ua_cmds.c:132
-msgid "Non-interactive gui mode"
-msgstr "Modo gui no-interactivo"
+#~ 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/ua_cmds.c:133
-msgid "Print help on specific command"
-msgstr "Imprimir ayuda en comandos específicos"
+#~ msgid "Error getting Media record for Volume \"%s\": ERR=%s"
+#~ msgstr "Error al obtener registro de Media para Volumen \"%s\": ERR=%s"
 
-#: src/dird/ua_cmds.c:138
-msgid "Label a tape"
-msgstr "Etiquetar una cinta"
+#~ msgid "Backup OK -- with warnings"
+#~ msgstr "Respaldo OK -- con advertencias"
 
-#: src/dird/ua_cmds.c:139
-msgid "List objects from catalog"
-msgstr "Listar objetos del catálogo"
+#~ msgid "Backup OK"
+#~ msgstr "Respaldo OK"
 
-#: src/dird/ua_cmds.c:142
-msgid "Full or long list like list command"
-msgstr "Completo o lista larga como la lista de comando"
+#~ msgid "*** Backup Error ***"
+#~ msgstr "***Error en Respaldo ***"
 
-#: src/dird/ua_cmds.c:145
-msgid "Display pending messages"
-msgstr "Mostrar mensajes pendientes"
+#~ msgid "Backup Canceled"
+#~ msgstr "Respaldo Cancelado"
 
-#: src/dird/ua_cmds.c:146
-msgid "Print current memory usage"
-msgstr "Imprimir uso de la memoria actual"
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Backup Level:           %s%s\n"
+#~ "  Client:                 \"%s\" %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Pool:                   \"%s\" (From %s)\n"
+#~ "  Catalog:                \"%s\" (From %s)\n"
+#~ "  Storage:                \"%s\" (From %s)\n"
+#~ "  Scheduled time:         %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Elapsed time:           %s\n"
+#~ "  Priority:               %d\n"
+#~ "  FD Files Written:       %s\n"
+#~ "  SD Files Written:       %s\n"
+#~ "  FD Bytes Written:       %s (%sB)\n"
+#~ "  SD Bytes Written:       %s (%sB)\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  Software Compression:   %s\n"
+#~ "%s  VSS:                    %s\n"
+#~ "  Encryption:             %s\n"
+#~ "  Accurate:               %s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s\n"
+#~ "  Non-fatal FD errors:    %d\n"
+#~ "  SD Errors:              %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ " Build OS: %s %s %s\n"
+#~ " JobId: %d\n"
+#~ " Job: %s\n"
+#~ " Nivel de Respaldo: %s%s\n"
+#~ " Cliente: \"%s\" %s\n"
+#~ " FileSet: \"%s\" %s\n"
+#~ " Pool: \"%s\" (Desde %s)\n"
+#~ " Catalogo: \"%s\" (Desde %s)\n"
+#~ " Storage: \"%s\" (Desde %s)\n"
+#~ " Hora programada: %s\n"
+#~ " Hora de inicio: %s\n"
+#~ " Hora de finalización: %s\n"
+#~ " Tiempo transcurrido: %s\n"
+#~ " Prioridad: %d\n"
+#~ " FD Archivos Escritos: %s\n"
+#~ " SD Archivos Escritos: %s\n"
+#~ " FD Bytes Escritos: %s (%sB)\n"
+#~ " SD Bytes Escritos: %s (%sB)\n"
+#~ " Tasa: %.1f KB/s\n"
+#~ " Software Compresión: %s\n"
+#~ " VSS: %s\n"
+#~ " Cifrado: %s\n"
+#~ " Accurate: %s\n"
+#~ " Nombre del Volumen(es): %s\n"
+#~ " Id de Sesión del Volumen: %d\n"
+#~ " Tiempo de Sesión del Volumen: %d\n"
+#~ " Ultimo Volumen Bytes: %s (%sB)\n"
+#~ " No-fatal FD errores: %d\n"
+#~ " SD Errores: %d\n"
+#~ " Estado de terminación FD: %s\n"
+#~ " Estado de terminación SD: %s\n"
+#~ " Terminación: %s\n"
+#~ "\n"
 
-#: src/dird/ua_cmds.c:147
-msgid "Mount storage"
-msgstr "Montar Storage"
+#~ msgid "yes"
+#~ msgstr "si"
 
-#: src/dird/ua_cmds.c:150
-msgid "Prune expired records from catalog"
-msgstr "Prunar registros expirados del catálogo"
+#~ msgid "no"
+#~ msgstr "no"
 
-#: src/dird/ua_cmds.c:153
-msgid "Purge records from catalog"
-msgstr "Purgar registros del catálogo"
+#~ 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/ua_cmds.c:154
-msgid "Python control commands"
-msgstr "Comandos de control de Python"
+#~ msgid ""
+#~ "Could not open WriteBootstrap file:\n"
+#~ "%s: ERR=%s\n"
+#~ msgstr ""
+#~ "No se pudo abrir el archivo WriteBootstrap:\n"
+#~ "%s: ERR=%s\n"
 
-#: src/dird/ua_cmds.c:156
-msgid "Query catalog"
-msgstr "Consulta de catálogo "
+#~ msgid "Unable to get Job record. ERR=%s\n"
+#~ msgstr "No se pudo obtener registro de Job. ERR=%s\n"
 
-#: src/dird/ua_cmds.c:157
-msgid "Restore files"
-msgstr "Restaurar Archivos"
+#~ msgid "Unable to get Job Volume Parameters. ERR=%s\n"
+#~ msgstr "No se pudo obtener Parámetros de Volumen de Job. ERR=%s\n"
 
-#: src/dird/ua_cmds.c:162
-msgid "Relabel a tape"
-msgstr "Reetiquetar una cinta"
+#~ msgid "Unable to create bootstrap file %s. ERR=%s\n"
+#~ msgstr "No se puede crear el archivo bootstrap %s. ERR=%s\n"
 
-#: src/dird/ua_cmds.c:165
-msgid "Release storage"
-msgstr "Liberar Storage"
+#~ msgid "No files found to read. No bootstrap file written.\n"
+#~ msgstr ""
+#~ "Ninguno archivo encontrado para leer. Ninguno archivo bootstrap escrito.\n"
 
-#: src/dird/ua_cmds.c:166
-msgid "Reload conf file"
-msgstr "Recargar archivo de configuración"
+#~ msgid "Error writing bsr file.\n"
+#~ msgstr "Error escribiendo archivo bsr.\n"
 
-#: src/dird/ua_cmds.c:167
-msgid "Run a job"
-msgstr "Ejecutar un Job"
+#~ msgid "Bootstrap records written to %s\n"
+#~ msgstr "Registros Bootstrap escritos para %s\n"
 
-#: src/dird/ua_cmds.c:171
-msgid "Report status"
-msgstr "Informe de estado"
+#, fuzzy
+#~ msgid ""
+#~ "The Job will require the following (*=>InChanger):\n"
+#~ "   Volume(s)                 Storage(s)                SD Device(s)\n"
+#~ "===========================================================================\n"
+#~ msgstr ""
+#~ "El job irá requerir los siguientes\n"
+#~ "  Storage(s) Dispositivo(s) SD Volumen(es)\n"
+#~ "===========================================================================\n"
 
-#: src/dird/ua_cmds.c:174
-msgid "Sets debug level"
-msgstr "Establecer el nivel de depuración"
+#~ msgid "No Volumes found to restore.\n"
+#~ msgstr "Volúmenes no encontrados para restaurar.\n"
 
-#: src/dird/ua_cmds.c:177
-msgid "Sets new client address -- if authorized"
-msgstr "Establecer nueva dirección del cliente - si esta autorizado"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Volumes marked with \"*\" are in the Autochanger.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Volúmenes marcados con \"*\" están en línea.\n"
 
-#: src/dird/ua_cmds.c:178
-msgid "Show resource records"
-msgstr "Mostrar los registros de recursos"
+#~ msgid "1990 Invalid Catalog Request: %s"
+#~ msgstr "1990 Solicitud de Catalogo no válido: %s"
 
-#: src/dird/ua_cmds.c:181
-msgid "Use SQL to query catalog"
-msgstr "usar SQL para consultar el catálogo"
+#~ msgid "Invalid Catalog request; DB not open: %s"
+#~ msgstr "Solicitud de Catalogo no válido; BD no abierta: %s"
 
-#: src/dird/ua_cmds.c:182
-msgid "Print current time"
-msgstr "Imprimir hora actual"
+#, fuzzy
+#~ msgid "Pool \"%s\" not found for SD find media request.\n"
+#~ msgstr "Pool \"%s\" no encontrado, utilizando cualquier pool.\n"
 
-#: src/dird/ua_cmds.c:183
-msgid "Turn on/off trace to file"
-msgstr "Activar/desactivar archivo de traza"
+#~ msgid "1901 No Media.\n"
+#~ msgstr "1901 Ninguna Media.\n"
 
-#: src/dird/ua_cmds.c:184
-msgid "Unmount storage"
-msgstr "Desmonte almacenamiento"
+#~ msgid "not in Pool"
+#~ msgstr "no está¡ en Pool"
 
-#: src/dird/ua_cmds.c:187
-msgid "Umount - for old-time Unix guys, see unmount"
-msgstr "Umount - para los viejos tiempos tipos de Unix, véase unmount"
+#~ msgid "not correct MediaType"
+#~ msgstr "Tipo de Medio incorrecto"
 
-#: src/dird/ua_cmds.c:190
-msgid "Update volume, pool or stats"
-msgstr "Actualizar volumen, pool o stats"
+#~ msgid "is not Enabled"
+#~ msgstr "no está¡ Habilitado"
 
-#: src/dird/ua_cmds.c:196
-msgid "Use catalog xxx"
-msgstr "Usar catálogo xxx"
+#, fuzzy
+#~ msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
+#~ msgstr "1998 Volumen \"%s\" en estado %s, %s.\n"
 
-#: src/dird/ua_cmds.c:197
-msgid "Does variable expansion"
-msgstr "es la variable de expansión"
+#~ msgid "1997 Volume \"%s\" not in catalog.\n"
+#~ msgstr "1197 Volumen \"%s\" no está¡ en catálogo.\n"
 
-#: src/dird/ua_cmds.c:198
-msgid "Print Director version"
-msgstr "Imprimir la versión del Director"
+#~ 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/ua_cmds.c:199
-msgid "Wait until no jobs are running"
-msgstr "Esperar hasta que no se estén ejecutando jobs"
+#~ msgid "1991 Catalog Request for vol=%s failed: %s"
+#~ msgstr "1991 Solicitud de Catalogo para vol=%s fallida:%s"
 
-#: src/dird/ua_cmds.c:247
-#, c-format
-msgid "%s: is an invalid command.\n"
-msgstr "%s: es un comando invalido.\n"
+#, fuzzy
+#~ msgid ""
+#~ "Attempt to set Volume Files from %u to %u for Volume \"%s\". Ignored.\n"
+#~ msgstr ""
+#~ "Archivos de Volumen en %u se establece en %u para Volumen \"%s\". Esto es "
+#~ "incorrecto.\n"
 
-#: src/dird/ua_cmds.c:288
-msgid ""
-"You probably don't want to be using this command since it\n"
-"creates database records without labeling the Volumes.\n"
-"You probably want to use the \"label\" command.\n"
-"\n"
-msgstr ""
-"Usted probablemente no quiere usar este comando, ya que el\n"
-"crea registros en la base de datos sin etiquetar los volúmenes.\n"
-"Usted probablemente desea utilizar el comando \"label\".\n"
-"\n"
+#~ msgid "Catalog error updating Media record. %s"
+#~ msgstr "Error de catalogo actualizando registro Media. %s"
 
-#: 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"
+#~ msgid "1993 Update Media error\n"
+#~ msgstr "1993 Error de actualización de Media\n"
 
-#: src/dird/ua_cmds.c:307
-msgid "Enter new maximum (zero for unlimited): "
-msgstr "Introduzca nuevo máximo (cero para un número ilimitado):"
+#~ msgid "Catalog error creating JobMedia record. %s"
+#~ msgstr "Error de Catalogo al crear registro JobMedia. %s"
 
-#: 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:"
+#~ msgid "1992 Create JobMedia error\n"
+#~ msgstr "1992 Error al crear JobMedia\n"
 
-#: 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"
+#~ msgid "Invalid Catalog request: %s"
+#~ msgstr "Invalida petición de Catalogo: %s"
 
-#: src/dird/ua_cmds.c:341
-msgid "Enter Volume name: "
-msgstr "Introduzca nombre de Volumen:"
+#, fuzzy
+#~ msgid "Attribute create error: ERR=%s"
+#~ msgstr "error al crear Atributo.%s"
 
-#: src/dird/ua_cmds.c:345
-msgid "Enter base volume name: "
-msgstr "Introduzca nombre de Volumen base:"
+#, fuzzy
+#~ msgid "Restore object create error. %s"
+#~ msgstr "error al crear Atributo.%s"
 
-#: 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"
+#, fuzzy
+#~ msgid "%s not same File=%d as attributes=%d\n"
+#~ msgstr "Obtuvo %s, pero no igual que los atributos de File\n"
 
-#: 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"
+#~ 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/ua_cmds.c:369
-msgid "Enter the starting number: "
-msgstr "Introduzca el número inicial:"
+#, fuzzy
+#~ msgid "attribute create error. %s"
+#~ msgstr "error al crear Atributo.%s"
 
-#: 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"
+#~ msgid "Catalog error updating file digest. %s"
+#~ msgstr "Error de catalogo actualizando archivo de resumen. %s"
 
-#: src/dird/ua_cmds.c:385
-msgid "Enter slot (0 for none): "
-msgstr "Introduzca ranura (0 para ninguno):"
+#~ msgid "1994 Invalid Catalog Update: %s"
+#~ msgstr "1994 Invalido Catálogo de Actualizaciones: %s"
 
-#: src/dird/ua_cmds.c:389
-msgid "InChanger? yes/no: "
-msgstr "InChanger? si/no: "
+#~ 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/ua_cmds.c:414
-#, c-format
-msgid "%d Volumes created in pool %s\n"
-msgstr "%d Volúmenes creados en el pool %s\n"
+#~ msgid "fread attr spool error. ERR=%s\n"
+#~ msgstr "Error fread attr spool. ERR=%s\n"
 
-#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
-msgid "Turn on or off? "
-msgstr "Encender o apagar?"
+#~ msgid "Loaded plugin: %s\n"
+#~ msgstr "Cargado el plugin: %s\n"
 
-#: 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 ""
-"No se puede establecer %s RecyclePool para %s, %s no está¡ en la base de "
-"datos.\n"
-"Intente actualizarlo con 'update pool=%s'\n"
+#~ 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/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 ""
-"No se puede establecer %s ScratchPool para %s, %s no está en la base de "
-"datos.\n"
-"Intente actualizarlo con 'update pool=%s'\n"
+#~ 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/ua_cmds.c:631
-#, c-format
-msgid ""
-"Error: Pool %s already exists.\n"
-"Use update to change it.\n"
-msgstr ""
-"Error: Pool %s ya existe.\n"
-"Use update para cambiarlo.\n"
+#~ msgid "Plugin license incompatible. Plugin=%s license=%s\n"
+#~ msgstr "Plugin licencia incompatible. Plugin=%s licencia=%s\n"
 
-#: src/dird/ua_cmds.c:642
-#, c-format
-msgid "Pool %s created.\n"
-msgstr "Pool %s creado.\n"
+#, fuzzy
+#~ msgid "Plugin size incorrect. Plugin=%s wanted=%d got=%d\n"
+#~ msgstr "Plugin versión incorrecta. Plugin=%s quería=%d obtuvo=%d\n"
 
-#: src/dird/ua_cmds.c:672
-msgid "Python interpreter restarted.\n"
-msgstr "Interprete Python reiniciado.\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\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"
+#~ "       -f          run in foreground (for debugging)\n"
+#~ "       -g          groupid\n"
+#~ "       -m          print kaboom output (for debugging)\n"
+#~ "       -r <job>    run <job> now\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - read configuration and exit\n"
+#~ "       -u          userid\n"
+#~ "       -v          verbose user messages\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ "\n"
+#~ "Utilice: dird [-f -s] [-c archivo_configuración] [-d nivel_depuración] "
+#~ "[archivo_configuración]\n"
+#~ " -c <archivo> establecer archivo de configuración para archivo \n"
+#~ " -d <nn> establecer el nivel de depuración para <nn>\n"
+#~ " -dt imprimir timestamp en salida de depuración\n"
+#~ " -f ejecutar en primer plano (para depuración)\n"
+#~ " -g groupid\n"
+#~ " -m imprimir salida kaboom para depuración)\n"
+#~ " -r <job> ejecutar <job> ahora\n"
+#~ " -s sin señales\n"
+#~ " -t prueba - leer la configuración y salir\n"
+#~ " -u userid\n"
+#~ " -v mensajes de usuario detallados\n"
+#~ " -? imprimir este mensaje.\n"
+#~ "\n"
 
-#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
-msgid "Nothing done.\n"
-msgstr "Nada hecho.\n"
+#~ msgid "Too many open reload requests. Request ignored.\n"
+#~ msgstr "Demasiadas solicitudes de recarga abiertas. Solicitud ignorada.\n"
 
-#: 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"
+#~ msgid "Out of reload table entries. Giving up.\n"
+#~ msgstr "Fuera de entradas de las tablas recargadas. Abandonando.\n"
 
-#: 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"
+#~ msgid "Resetting previous configuration.\n"
+#~ msgstr "Restablecimiento de la configuración anterior.\n"
 
-#: src/dird/ua_cmds.c:742
-#, c-format
-msgid "Job \"%s\" %sabled\n"
-msgstr "Job \"%s\" %sabled\n"
+#~ msgid ""
+#~ "No Director resource defined in %s\n"
+#~ "Without that I don't know who I am :-(\n"
+#~ msgstr ""
+#~ "Recurso Director no definido en %s\n"
+#~ "Sin eso no sé quién soy :-(\n"
 
-#: src/dird/ua_cmds.c:920
-msgid "Enter new debug level: "
-msgstr "Introduzca el nuevo nivel de depuración:"
+#~ msgid "No Messages resource defined in %s\n"
+#~ msgstr "Recursos de Mensajes no definidos en %s\n"
 
-#: src/dird/ua_cmds.c:997
-msgid "All"
-msgstr "All"
+#~ msgid "Only one Director resource permitted in %s\n"
+#~ msgstr "Sólo un recurso Director permitido en %s\n"
 
-#: 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"
+#~ 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/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"
+#~ 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/ua_cmds.c:1092
-msgid "Client name missing.\n"
-msgstr "Falta el nombre del cliente.\n"
+#~ msgid ""
+#~ "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined "
+#~ "for Director \"%s\" in %s. At least one CA certificate store is required "
+#~ "when using \"TLS Verify Peer\".\n"
+#~ msgstr ""
+#~ "Ninguno \"TLS CA Certificate\" o \"TLS CA Certificate Dir\" esta definido "
+#~ "para Director \"%s\" en %s. Al menos un almacén de certificado CA es "
+#~ "requerido cuando se utiliza \"TLS Verify Peer\".\n"
 
-#: 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"
+#~ 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/ua_cmds.c:1109
-msgid "Job name missing.\n"
-msgstr "Falta el nombre del Job.\n"
+#~ msgid "No Job records defined in %s\n"
+#~ msgstr "Registros de Job no definidos en %s\n"
 
-#: src/dird/ua_cmds.c:1118
-#, c-format
-msgid "Fileset \"%s\" not found.\n"
-msgstr "FileSet \"%s\" no encontrado.\n"
+#~ msgid "Hey something is wrong. p=0x%lu\n"
+#~ msgstr "Oye, algo está mal. p=0x%lu\n"
 
-#: src/dird/ua_cmds.c:1122
-#, c-format
-msgid "No authorization for FileSet \"%s\"\n"
-msgstr "No autorización para FileSet \"%s\"\n"
+#~ 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/ua_cmds.c:1127
-msgid "Fileset name missing.\n"
-msgstr "Falta Nombre del Fileset.\n"
+#~ msgid "Too many items in Job resource\n"
+#~ msgstr "Demasiados elementos en el recurso Job\n"
 
-#: 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"
+#~ 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/ua_cmds.c:1142
-msgid "Level value missing.\n"
-msgstr "Valor del nivel ausente.\n"
+#~ 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/ua_cmds.c:1149
-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"
+#~ 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/ua_cmds.c:1154
-#, fuzzy
-msgid "Accurate value missing.\n"
-msgstr "Valor del nivel ausente.\n"
+#~ msgid ""
+#~ "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined "
+#~ "for Console \"%s\" in %s. At least one CA certificate store is required "
+#~ "when using \"TLS Verify Peer\".\n"
+#~ msgstr ""
+#~ "Ninguno \"TLS CA Certificate\" o \"TLS CA Certificate Dir\" esta definido "
+#~ "para Console \"%s\" en %s. Al menos un almacén de certificado CA es "
+#~ "requerido cuando se utiliza \"TLS Verify Peer\".\n"
 
-#: src/dird/ua_cmds.c:1167
-msgid "No job specified.\n"
-msgstr "Job no especificado.\n"
+#~ 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/ua_cmds.c:1227
-msgid "Error sending include list.\n"
-msgstr "Error al enviar lista incluir.\n"
+#~ msgid ""
+#~ "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined "
+#~ "for File daemon \"%s\" in %s.\n"
+#~ msgstr ""
+#~ "Ninguno \"TLS CA Certificate\" o \"TLS CA Certificate Dir\" esta definido "
+#~ "para demonio File \"%s\" en %s.\n"
 
-#: src/dird/ua_cmds.c:1232
-msgid "Error sending exclude list.\n"
-msgstr "Error al enviar lista excluir.\n"
+#~ 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/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 ""
-"En general, esto no es una buena idea para eliminar un\n"
-"Pool o un Volumen ya que pueden contener datos.\n"
-"\n"
+#~ 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/ua_cmds.c:1326
-msgid "Choose catalog item to delete"
-msgstr "Seleccione el ítem del catalogo para eliminar"
+#~ msgid "Could not open Catalog \"%s\", database \"%s\".\n"
+#~ msgstr "No se pudo abrir Catálogo \"%s\", base de datos \"%s\".\n"
 
-#: 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"
+#~ msgid "%s"
+#~ msgstr "%s"
 
-#: src/dird/ua_cmds.c:1404
-msgid "Enter JobId to delete: "
-msgstr "Introduzca jobId para eliminar:"
+#, fuzzy
+#~ msgid "Could not create storage record for %s\n"
+#~ msgstr "No es posible crear el registro Pool. ERR=%s\n"
 
-#: 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):"
+#, fuzzy
+#~ msgid "Could not update storage record for %s\n"
+#~ msgstr "No se pudo actualizar el registro de trabajo. ERR=%s\n"
 
-#: src/dird/ua_cmds.c:1450
-#, c-format
-msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
-msgstr ""
+#~ 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/ua_cmds.c:1454
-#, c-format
-msgid "Illegal JobId range %s - %s, ignored\n"
-msgstr ""
+#~ msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
+#~ msgstr "Director: nombre=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 
-#: 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"
+#~ msgid "   query_file=%s\n"
+#~ msgstr "query_file=%s\n"
 
-#: src/dird/ua_cmds.c:1484
-#, c-format
-msgid ""
-"\n"
-"This command will delete volume %s\n"
-"and all Jobs saved on that volume from the Catalog\n"
-msgstr ""
-"\n"
-"Este comando eliminara los volúmenes %s\n"
-"y todos los Jobs guardados en este volumen desde el Catalogo\n"
+#~ msgid "  --> "
+#~ msgstr "--> "
 
-#: 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):"
+#~ msgid "Console: name=%s SSL=%d\n"
+#~ msgstr "Console: nombre=%s SSL=%d\n"
 
-#: src/dird/ua_cmds.c:1504
-msgid "Can't list jobs on this volume\n"
-msgstr ""
+#~ 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/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):"
+#~ msgid "Counter: name=%s min=%d max=%d\n"
+#~ msgstr "Counter: nombre=%s mínimo=%d máximo=%d\n"
 
-#: src/dird/ua_cmds.c:1644
-#, c-format
-msgid "Using Catalog name=%s DB=%s\n"
-msgstr "Utilizando Catalogo nombre=%s BD=%s\n"
+#~ 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/ua_cmds.c:1712
-msgid "ERR: Can't open db\n"
-msgstr "ERR: No se puede abrir db\n"
+#~ msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
+#~ msgstr "JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 
-#: src/dird/ua_cmds.c:1759
-msgid "Wait on mount timed out\n"
-msgstr "Tiempo agotado en esperar mount \n"
+#~ msgid ""
+#~ "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
+#~ "      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d "
+#~ "autochgr=%d\n"
+#~ "      poolid=%s volname=%s MediaType=%s\n"
+#~ msgstr ""
+#~ "Device: nombre=%s ok=%d num_writers=%d max_writers=%d\n"
+#~ " reservado=%d abierto=%d append=%d leer=%d etiquetado=%d offline=%d "
+#~ "autochgr=%d\n"
+#~ " poolid=%s volname=%s MediaType=%s\n"
 
-#: src/dird/ua_cmds.c:1769
-msgid "ERR: Job was not found\n"
-msgstr "ERR: Job no se ha encontrado\n"
+#~ msgid ""
+#~ "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
+#~ "      DeviceName=%s MediaType=%s StorageId=%s\n"
+#~ msgstr ""
+#~ "Storage: nombre=%s dirección=%s SDport=%d MaxJobs=%u\n"
+#~ " DeviceName=%s MediaType=%s StorageId=%s\n"
 
-#: src/dird/ua_cmds.c:1845
-msgid ""
-"  Command       Description\n"
-"  =======       ===========\n"
-msgstr ""
-"Comando Descripción\n"
-" ======== ==============\n"
+#~ msgid ""
+#~ "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
+#~ "      db_driver=%s db_user=%s MutliDBConn=%d\n"
+#~ 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/ua_cmds.c:1849
-#, c-format
-msgid ""
-"  %-13s %s\n"
-"\n"
-"Arguments:\n"
-"\t%s\n"
-msgstr ""
-"%-13s %s\n"
-"\n"
-"Argumentos:\n"
-"\t%s\n"
+#~ 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/ua_cmds.c:1854
-#, c-format
-msgid "  %-13s %s\n"
-msgstr " %-13s %s\n"
+#~ msgid "Job"
+#~ msgstr "Job"
 
-#: src/dird/ua_cmds.c:1858
-#, c-format
-msgid ""
-"\n"
-"Can't find %s command.\n"
-"\n"
-msgstr ""
-"\n"
-"No se puede encontrar comando %s. \n"
-"\n"
+#~ msgid "JobDefs"
+#~ msgstr "JobDefs"
 
-#: src/dird/ua_cmds.c:1860
-msgid ""
-"\n"
-"When at a prompt, entering a period cancels the command.\n"
-"\n"
-msgstr ""
-"\n"
-"Cuando en un prompt, entrando un período cancela el comando.\n"
-"\n"
+#~ msgid ""
+#~ "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d "
+#~ "WritePartAfterJob=%d\n"
+#~ msgstr ""
+#~ "MaxJobs=%u Resched=%d Times=%d Intervalo=%s Spool=%d WritePartAfterJob="
+#~ "%d\n"
 
-#: 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"
+#~ msgid "     SpoolSize=%s\n"
+#~ msgstr "SpoolSize=%s\n"
 
-#: 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"
+#~ msgid "     Accurate=%d\n"
+#~ msgstr "Preciso=%d\n"
 
-#: 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"
+#~ msgid "     SelectionType=%d\n"
+#~ msgstr "SelectionType=%d\n"
 
-#: src/dird/ua_cmds.c:2059
-#, c-format
-msgid "Using Catalog \"%s\"\n"
-msgstr "Usando Catalogo \"%s\"\n"
+#~ msgid "  --> Where=%s\n"
+#~ msgstr "--> Donde=%s\n"
 
-#: src/dird/ua_tree.c:74
-msgid "add dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-"añadir directorio/archivo a ser restaurado de forma recursiva, comodines "
-"permitido"
+#~ msgid "  --> RegexWhere=%s\n"
+#~ msgstr "--> RegexDonde=%s\n"
 
-#: src/dird/ua_tree.c:75
-msgid "change current directory"
-msgstr "cambio del directorio actual"
+#~ msgid "  --> Bootstrap=%s\n"
+#~ msgstr "--> Bootstrap=%s\n"
 
-#: src/dird/ua_tree.c:76
-msgid "count marked files in and below the cd"
-msgstr "contar archivos marcados dentro y por debajo de CD"
+#~ msgid "  --> WriteBootstrap=%s\n"
+#~ msgstr "--> WriteBootstrap=%s\n"
 
-#: src/dird/ua_tree.c:77
-msgid "delete dir/file to be restored recursively in dir"
-msgstr "eliminar dir/archivo a restaurar recursivamente en dir"
+#~ msgid "  --> PluginOptions=%s\n"
+#~ msgstr "--> PluginOptions=%s\n"
 
-#: src/dird/ua_tree.c:78 src/dird/ua_tree.c:79
-msgid "long list current directory, wildcards allowed"
-msgstr "larga lista directorio actual, comodines permitido"
+#~ msgid "  --> MaxRunTime=%u\n"
+#~ msgstr "--> MaxRunTime=%u\n"
 
-#: src/dird/ua_tree.c:80
-msgid "leave file selection mode"
-msgstr "abandonar el modo de selección de archivos"
+#~ msgid "  --> MaxWaitTime=%u\n"
+#~ msgstr "--> MaxWaitTime=%u\n"
 
-#: src/dird/ua_tree.c:81
-msgid "estimate restore size"
-msgstr "tamaño estimado de restauración"
+#~ msgid "  --> MaxStartDelay=%u\n"
+#~ msgstr "--> MaxStartDelay=%u\n"
 
-#: src/dird/ua_tree.c:82
-msgid "same as done command"
-msgstr "mismo que el comando done"
+#, fuzzy
+#~ msgid "  --> MaxRunSchedTime=%u\n"
+#~ msgstr "--> MaxRunTime=%u\n"
 
-#: src/dird/ua_tree.c:83
-msgid "find files, wildcards allowed"
-msgstr "encontrar los archivos, comodines permitidos"
+#, fuzzy
+#~ msgid "  --> Base %s\n"
+#~ msgstr "--> Objetivo=%s\n"
 
-#: src/dird/ua_tree.c:84 src/dird/ua_tree.c:97 src/dird/ua_tree.c:98
-msgid "print help"
-msgstr "imprimir ayuda"
+#~ msgid " --> RunScript\n"
+#~ msgstr "--> EjecutarScript\n"
 
-#: src/dird/ua_tree.c:85 src/dird/ua_tree.c:86
-msgid "list current directory, wildcards allowed"
-msgstr "lista el directorio actual, comodines permitidos"
+#~ msgid "  --> Command=%s\n"
+#~ msgstr "--> Comando=%s\n"
 
-#: src/dird/ua_tree.c:87
-#, fuzzy
-msgid "list subdir in current directory, wildcards allowed"
-msgstr "lista el directorio actual, comodines permitidos"
+#~ msgid "  --> Target=%s\n"
+#~ msgstr "--> Objetivo=%s\n"
 
-#: src/dird/ua_tree.c:88
-msgid "list the marked files in and below the cd"
-msgstr "lista los archivos marcados dentro y por debajo de CD"
+#~ msgid "  --> RunOnSuccess=%u\n"
+#~ msgstr "--> RunOnSuccess=%u\n"
 
-#: src/dird/ua_tree.c:89
-#, fuzzy
-msgid "list the marked files in"
-msgstr "lista los archivos marcados dentro y por debajo de CD"
+#~ msgid "  --> RunOnFailure=%u\n"
+#~ msgstr "--> RunOnFailure=%u\n"
 
-#: src/dird/ua_tree.c:90
-msgid "mark dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-"marca directorio/archivo para restaurar recursivamente, comodines permitido"
+#~ msgid "  --> FailJobOnError=%u\n"
+#~ msgstr "--> FailJobOnError=%u\n"
 
-#: src/dird/ua_tree.c:91
-msgid "mark directory name to be restored (no files)"
-msgstr "marca nombre del directorio para ser restaurado (sin archivos)"
+#~ msgid "  --> RunWhen=%u\n"
+#~ msgstr "--> EjecutarCuando=%u\n"
 
-#: src/dird/ua_tree.c:92 src/dird/ua_tree.c:93
-msgid "print current working directory"
-msgstr "imprimir directorio de trabajo actual"
+#~ msgid "  --> Run=%s\n"
+#~ msgstr "--> Ejecutar=%s\n"
 
-#: src/dird/ua_tree.c:94
-msgid "unmark dir/file to be restored recursively in dir"
-msgstr ""
-"desmarcar directorio/archivo para ser restaurado en el directorio "
-"recursivamente"
+#~ msgid "  --> SelectionPattern=%s\n"
+#~ msgstr "--> SeleccionPatron=%s\n"
 
-#: src/dird/ua_tree.c:95
-msgid "unmark directory name only no recursion"
-msgstr "desmarcar solo nombre del directorio sin recursividad"
+#~ msgid "FileSet: name=%s\n"
+#~ msgstr "FileSet: nombre=%s\n"
 
-#: src/dird/ua_tree.c:96
-msgid "quit and do not do restore"
-msgstr "salir y no restaurar"
+#~ msgid "Schedule: name=%s\n"
+#~ msgstr "Schedule: nombre=%s\n"
 
-#: src/dird/ua_tree.c:118
-msgid ""
-"\n"
-"You are now entering file selection mode where you add (mark) and\n"
-"remove (unmark) files to be restored. No files are initially added, unless\n"
-"you used the \"all\" keyword on the command line.\n"
-"Enter \"done\" to leave this mode.\n"
-"\n"
-msgstr ""
-"\n"
-"Usted está entrando ahora en el modo de selección de archivo donde usted "
-"agrega(mark) y\n"
-"elimina (unmark) los archivos que va a restaurar. No hay archivos añadido "
-"inicialmente, a menos que\n"
-"usted utilice la palabra clave \"all\" en la línea de comandos. Introduzca "
-"\"done\" para salir de este modo.\n"
-"\n"
+#~ msgid "  --> Run Level=%s\n"
+#~ msgstr "--> Ejecutar Nivel=%s\n"
 
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
-#, c-format
-msgid "cwd is: %s\n"
-msgstr "cwd es: %s\n"
+#, fuzzy
+#~ msgid "      MaxRunSchedTime=%u\n"
+#~ msgstr "--> MaxRunTime=%u\n"
 
-#: src/dird/ua_tree.c:138 src/dird/ua_tree.c:157
-#, c-format
-msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
-msgstr "Invalido comando \"%s\". Introduzca \"done\" para salir.\n"
+#, fuzzy
+#~ msgid "      Priority=%u\n"
+#~ msgstr "woy="
 
-#: 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 ""
+#~ msgid "      hour="
+#~ msgstr "hora="
 
-#: 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"
+#~ msgid "      mday="
+#~ msgstr "mdia="
 
-#: src/dird/ua_tree.c:387
-msgid "1 file marked.\n"
-msgstr "1 archivo marcado.\n"
+#~ msgid "      month="
+#~ msgstr "mes="
 
-#: src/dird/ua_tree.c:389
-#, c-format
-msgid "%s files marked.\n"
-msgstr "%s archivos marcados.\n"
+#~ msgid "      wday="
+#~ msgstr "wdia="
 
-#: src/dird/ua_tree.c:417
-msgid "No directories marked.\n"
-msgstr "Ningún directorio marcado.\n"
+#~ msgid "      wom="
+#~ msgstr "wom="
 
-#: src/dird/ua_tree.c:419
-msgid "1 directory marked.\n"
-msgstr "1 directorio marcado.\n"
+#~ msgid "      woy="
+#~ msgstr "woy="
 
-#: src/dird/ua_tree.c:421
-#, c-format
-msgid "%s directories marked.\n"
-msgstr "%s directorios marcados.\n"
+#~ msgid "      mins=%d\n"
+#~ msgstr "mins=%d\n"
 
-#: 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"
+#~ msgid "     --> "
+#~ msgstr "--> "
 
-#: src/dird/ua_tree.c:453
-msgid "No file specification given.\n"
-msgstr "Especificación de archivo no dado.\n"
+#~ msgid "Pool: name=%s PoolType=%s\n"
+#~ msgstr "Pool: nombre=%s PoolType=%s\n"
 
-#: src/dird/ua_tree.c:674
-#, c-format
-msgid "Node %s has no children.\n"
-msgstr "Nodo %s no tiene hijos.\n"
+#~ msgid "      use_cat=%d use_once=%d cat_files=%d\n"
+#~ msgstr "use_cat=%d use_once=%d cat_files=%d\n"
 
-#: 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"
+#~ msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
+#~ msgstr "max_vols=%d auto_prune=%d VolRetention=%s\n"
 
-#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
-#, c-format
-msgid ""
-"  Command    Description\n"
-"  =======    ===========\n"
-msgstr ""
-"Comando Descripción\n"
-" ======= ===========\n"
+#~ msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
+#~ msgstr "VolUse=%s recycle=%d LabelFormat=%s\n"
 
-#: 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"
+#~ msgid "      CleaningPrefix=%s LabelType=%d\n"
+#~ msgstr "CleaningPrefix=%s LabelType=%d\n"
 
-#: src/dird/ua_tree.c:814
-msgid "Invalid path given.\n"
-msgstr "Ruta dada no válida.\n"
+#~ msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
+#~ msgstr "RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
 
-#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
-msgid "No files unmarked.\n"
-msgstr "No hay archivos sin marcar.\n"
+#~ msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
+#~ msgstr "MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
 
-#: src/dird/ua_tree.c:864
-msgid "1 file unmarked.\n"
-msgstr "1 archivo sin marcar.\n"
+#~ msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
+#~ msgstr "MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 
-#: src/dird/ua_tree.c:867
-#, c-format
-msgid "%s files unmarked.\n"
-msgstr "%s archivos sin marcar.\n"
+#, fuzzy
+#~ msgid "      JobRetention=%s FileRetention=%s\n"
+#~ msgstr "JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 
-#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
-msgid "No directories unmarked.\n"
-msgstr "No hay directorios sin marcar.\n"
+#~ msgid "      NextPool=%s\n"
+#~ msgstr "NextPool=%s\n"
 
-#: src/dird/ua_tree.c:897
-msgid "1 directory unmarked.\n"
-msgstr "1 directorio sin marcar.\n"
+#~ msgid "      RecyclePool=%s\n"
+#~ msgstr "RecyclePool=%s\n"
 
-#: src/dird/ua_tree.c:899
-#, c-format
-msgid "%d directories unmarked.\n"
-msgstr "%d directorios sin marcar.\n"
+#~ msgid "      ScratchPool=%s\n"
+#~ msgstr "ScratchPool=%s\n"
 
-#: 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"
+#~ msgid "      Catalog=%s\n"
+#~ msgstr "Catálogo=%s\n"
 
-#: 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"
+#~ msgid "Messages: name=%s\n"
+#~ msgstr "Mensajes: nombre=%s\n"
 
-#: src/dird/dird_conf.c:581
-#, c-format
-msgid "   query_file=%s\n"
-msgstr "query_file=%s\n"
-
-#: 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:589
-#, c-format
-msgid "Console: name=%s SSL=%d\n"
-msgstr "Console: nombre=%s SSL=%d\n"
+#~ msgid "      mailcmd=%s\n"
+#~ msgstr "mailcmd=%s\n"
 
-#: 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"
+#~ msgid "      opcmd=%s\n"
+#~ msgstr "opcmd=%s\n"
 
-#: 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"
+#~ msgid "Cannot find Pool resource %s\n"
+#~ msgstr "No se puede encontrar el recurso Pool %s\n"
 
-#: 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"
+#~ msgid "Cannot find Console resource %s\n"
+#~ msgstr "No se puede encontrar el recurso Console %s\n"
 
-#: src/dird/dird_conf.c:616
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
-msgstr "JobRetention=%s FileRetention=%s AutoPrune=%d\n"
+#~ msgid "Cannot find Director resource %s\n"
+#~ msgstr "No se puede encontrar el recurso Director %s\n"
 
-#: src/dird/dird_conf.c:629
-#, c-format
-msgid ""
-"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
-"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr="
-"%d\n"
-"      poolid=%s volname=%s MediaType=%s\n"
-msgstr ""
-"Device: nombre=%s ok=%d num_writers=%d max_writers=%d\n"
-" reservado=%d abierto=%d append=%d leer=%d etiquetado=%d offline=%d autochgr="
-"%d\n"
-" poolid=%s volname=%s MediaType=%s\n"
+#~ msgid "Cannot find Storage resource %s\n"
+#~ msgstr "No se puede encontrar el recurso Storage %s\n"
 
-#: 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 ""
-"Storage: nombre=%s dirección=%s SDport=%d MaxJobs=%u\n"
-" DeviceName=%s MediaType=%s StorageId=%s\n"
+#~ msgid "Cannot find Job resource %s\n"
+#~ msgstr "No se puede encontrar el recurso Job %s\n"
 
-#: 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 ""
-"Catálogo: nombre=%s dirección=%s DBport=%d db_nombre=%s\n"
-" db_driver=%s db_user=%s MutliDBConn=%d\n"
+#~ msgid "Cannot find Counter resource %s\n"
+#~ msgstr "No se puede encontrar el recurso Counter %s\n"
 
-#: 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"
+#~ msgid "Cannot find Client resource %s\n"
+#~ msgstr "No se puede encontrar el recurso Cliente %s\n"
 
-#: src/dird/dird_conf.c:670
-msgid "JobDefs"
-msgstr "JobDefs"
+#~ msgid "Cannot find Schedule resource %s\n"
+#~ msgstr "No se puede encontrar el recurso Schedule %s\n"
 
-#: src/dird/dird_conf.c:674
-#, c-format
-msgid ""
-"     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
-"%d\n"
-msgstr ""
-"MaxJobs=%u Resched=%d Times=%d Intervalo=%s Spool=%d WritePartAfterJob=%d\n"
+#~ 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:680
-#, c-format
-msgid "     SpoolSize=%s\n"
-msgstr "SpoolSize=%s\n"
+#~ 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:683
-#, c-format
-msgid "     Accurate=%d\n"
-msgstr "Preciso=%d\n"
+#~ msgid "Expected one of: %s, got: %s"
+#~ msgstr "Esperaba uno de: %s, obtuvo: %s"
 
-#: src/dird/dird_conf.c:686
-#, c-format
-msgid "     SelectionType=%d\n"
-msgstr "SelectionType=%d\n"
+#~ 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:701
-#, c-format
-msgid "  --> Where=%s\n"
-msgstr "--> Donde=%s\n"
+#~ msgid "Expected a Job Type keyword, got: %s"
+#~ msgstr "Esperaba una palabra clave Tipo Job, obtuvo: %s"
 
-#: src/dird/dird_conf.c:704
-#, c-format
-msgid "  --> RegexWhere=%s\n"
-msgstr "--> RegexDonde=%s\n"
+#~ msgid "Expected a Job Level keyword, got: %s"
+#~ msgstr "Esperaba una palabra clave Tipo Level, obtuvo: %s"
 
-#: src/dird/dird_conf.c:707
-#, c-format
-msgid "  --> Bootstrap=%s\n"
-msgstr "--> Bootstrap=%s\n"
+#~ 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:710
-#, c-format
-msgid "  --> WriteBootstrap=%s\n"
-msgstr "--> WriteBootstrap=%s\n"
+#~ msgid "Expect %s, got: %s"
+#~ msgstr "Esperaba %s, obtuvo: %s"
 
-#: src/dird/dird_conf.c:713
-#, c-format
-msgid "  --> PluginOptions=%s\n"
-msgstr "--> PluginOptions=%s\n"
+#~ msgid "Could not find config Resource %s referenced on line %d : %s\n"
+#~ msgstr ""
+#~ "No se pudo encontrar Recursos de configuración %s  referenciado en la "
+#~ "línea %d: %s\n"
 
-#: src/dird/dird_conf.c:716
-#, c-format
-msgid "  --> MaxRunTime=%u\n"
-msgstr "--> MaxRunTime=%u\n"
+#~ msgid "Expecting open brace. Got %s"
+#~ msgstr "Esperando abrir paréntesis. Obtuvo %s"
 
-#: src/dird/dird_conf.c:719
-#, c-format
-msgid "  --> MaxWaitTime=%u\n"
-msgstr "--> MaxWaitTime=%u\n"
+#~ msgid "Expecting keyword, got: %s\n"
+#~ msgstr "Esperando palabra clave, obtuvo: %s\n"
 
-#: src/dird/dird_conf.c:722
-#, c-format
-msgid "  --> MaxStartDelay=%u\n"
-msgstr "--> MaxStartDelay=%u\n"
+#~ msgid "expected an equals, got: %s"
+#~ msgstr "esperaba una igual, obtuvo: %s"
 
-#: src/dird/dird_conf.c:725
-#, fuzzy, c-format
-msgid "  --> MaxRunSchedTime=%u\n"
-msgstr "--> MaxRunTime=%u\n"
+#~ msgid "Keyword %s not permitted in this resource"
+#~ msgstr "Palabra clave %s no esta permitido en este recurso"
 
-#: src/dird/dird_conf.c:737
-#, fuzzy, c-format
-msgid "  --> Base %s\n"
-msgstr "--> Objetivo=%s\n"
+#~ msgid "Count not update counter %s: ERR=%s\n"
+#~ msgstr "Conteo no actualizo contador %s: ERR=%s\n"
 
-#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
-msgid " --> RunScript\n"
-msgstr "--> EjecutarScript\n"
+#~ msgid "Cannot create var context: ERR=%s\n"
+#~ msgstr "No se puede crear contexto var: ERR=%s\n"
 
-#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
-#, c-format
-msgid "  --> Command=%s\n"
-msgstr "--> Comando=%s\n"
+#~ msgid "Cannot set var callback: ERR=%s\n"
+#~ msgstr "No se puede establecer llamada var: ERR=%s\n"
 
-#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
-#, c-format
-msgid "  --> Target=%s\n"
-msgstr "--> Objetivo=%s\n"
+#~ msgid "Cannot set var operate: ERR=%s\n"
+#~ msgstr "No se puede establecer variable operar: ERR=%s\n"
 
-#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
-#, c-format
-msgid "  --> RunOnSuccess=%u\n"
-msgstr "--> RunOnSuccess=%u\n"
+#~ msgid "Cannot unescape string: ERR=%s\n"
+#~ msgstr "No se puede unescapar cadena: ERR=%s\n"
 
-#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
-#, c-format
-msgid "  --> RunOnFailure=%u\n"
-msgstr "--> RunOnFailure=%u\n"
+#~ msgid "Cannot expand expression \"%s\": ERR=%s\n"
+#~ msgstr "No se puede ampliar la expresión \"%s\": ERR=%s\n"
 
-#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
-#, c-format
-msgid "  --> FailJobOnError=%u\n"
-msgstr "--> FailJobOnError=%u\n"
+#~ msgid "Cannot destroy var context: ERR=%s\n"
+#~ msgstr "No se puede destruir variable contexto: ERR=%s\n"
 
-#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
-#, c-format
-msgid "  --> RunWhen=%u\n"
-msgstr "--> EjecutarCuando=%u\n"
+#~ msgid "Client: "
+#~ msgstr "Cliente:"
 
-#: src/dird/dird_conf.c:775
-#, c-format
-msgid "  --> Run=%s\n"
-msgstr "--> Ejecutar=%s\n"
+#~ msgid "File daemon \"%s\" rejected Job command: %s\n"
+#~ msgstr "Demonio File \"%s\" rechazó comando Job: %s\n"
 
-#: src/dird/dird_conf.c:779
-#, c-format
-msgid "  --> SelectionPattern=%s\n"
-msgstr "--> SeleccionPatron=%s\n"
+#~ msgid "Error updating Client record. ERR=%s\n"
+#~ msgstr "Error al actualizar el registro Cliente:ERR=%s\n"
 
-#: src/dird/dird_conf.c:793
-#, c-format
-msgid "FileSet: name=%s\n"
-msgstr "FileSet: nombre=%s\n"
+#~ msgid "FD gave bad response to JobId command: %s\n"
+#~ msgstr "FD dio mala respuesta al comando jobId: %s\n"
 
-#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
-#, c-format
-msgid "Schedule: name=%s\n"
-msgstr "Schedule: nombre=%s\n"
+#~ msgid ", since="
+#~ msgstr ", desde="
 
-#: src/dird/dird_conf.c:892
-#, c-format
-msgid "  --> Run Level=%s\n"
-msgstr "--> Ejecutar Nivel=%s\n"
+#~ msgid ""
+#~ "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
+#~ msgstr ""
+#~ "Ninguna copia de seguridad Completa anterior encontrada en el catálogo. "
+#~ "Haciendo copia de seguridad COMPLETA.\n"
 
-#: src/dird/dird_conf.c:893
-msgid "      hour="
-msgstr "hora="
+#~ msgid " (upgraded from %s)"
+#~ msgstr "(actualizar desde %s)"
 
-#: src/dird/dird_conf.c:902
-msgid "      mday="
-msgstr "mdia="
+#~ msgid ""
+#~ "No prior or suitable Differential backup found in catalog. Doing "
+#~ "Differential backup.\n"
+#~ msgstr ""
+#~ "Ninguna copia de seguridad Diferencial previa o adecuada encontrada en el "
+#~ "catálogo. Haciendo copia de seguridad Diferencial.\n"
 
-#: src/dird/dird_conf.c:911
-msgid "      month="
-msgstr "mes="
+#~ msgid "Prior failed job found in catalog. Upgrading to %s.\n"
+#~ msgstr ""
+#~ "Trabajo anterior fallido encontrado en el catálogo. Actualizando a %s.\n"
 
-#: src/dird/dird_conf.c:920
-msgid "      wday="
-msgstr "wdia="
+#~ msgid "Unimplemented backup level %d %c\n"
+#~ msgstr "Nivel %d %c de respaldo no implementado\n"
 
-#: src/dird/dird_conf.c:929
-msgid "      wom="
-msgstr "wom="
+#~ msgid "Cannot run program: %s. ERR=%s\n"
+#~ msgstr "No se puede ejecutar el programa: %s. ERR=%s\n"
 
-#: src/dird/dird_conf.c:938
-msgid "      woy="
-msgstr "woy="
+#~ msgid ">filed: write error on socket\n"
+#~ msgstr ">filed: error de escritura en socket\n"
 
-#: src/dird/dird_conf.c:947
-#, c-format
-msgid "      mins=%d\n"
-msgstr "mins=%d\n"
+#~ msgid "Error running program: %s. ERR=%s\n"
+#~ msgstr "Error ejecutando el programa: %s. ERR=%s\n"
 
-#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
-msgid "     --> "
-msgstr "--> "
+#~ msgid "Cannot open included file: %s. ERR=%s\n"
+#~ msgstr "No se puede abrir el archivo incluido: %s. ERR=%s\n"
 
-#: src/dird/dird_conf.c:974
-#, c-format
-msgid "Pool: name=%s PoolType=%s\n"
-msgstr "Pool: nombre=%s PoolType=%s\n"
+#~ msgid "Client \"%s\" RunScript failed.\n"
+#~ msgstr "Cliente \"%s\" RunScript fallido.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "RestoreObject failed.\n"
+#~ msgstr "Restaurar Archivos"
 
-#: 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"
+#~ msgid ""
+#~ "<filed: bad attributes, expected 3 fields got %d\n"
+#~ "msglen=%d msg=%s\n"
+#~ msgstr ""
+#~ "<Archivado:atributos erróneos, se esperaban 3 campos se tienen %d\n"
+#~ " msglen=%d msg=%s\n"
 
-#: src/dird/dird_conf.c:982
-#, c-format
-msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
-msgstr "VolUse=%s recycle=%d LabelFormat=%s\n"
+#~ msgid "%s index %d not same as attributes %d\n"
+#~ msgstr "%s índice %d no igual que los atributos %d\n"
 
-#: src/dird/dird_conf.c:986
-#, c-format
-msgid "      CleaningPrefix=%s LabelType=%d\n"
-msgstr "CleaningPrefix=%s LabelType=%d\n"
+#~ msgid "<filed: Network error getting attributes. ERR=%s\n"
+#~ msgstr "<filed: Error al obtener los atributos de red. ERR=%s\n"
 
-#: src/dird/dird_conf.c:988
-#, c-format
-msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
-msgstr "RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
+#~ msgid "bget_dirmsg: unknown bnet signal %d\n"
+#~ msgstr "bget_dirmsg: señal bnet desconocida %d\n"
 
-#: src/dird/dird_conf.c:992
-#, c-format
-msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
-msgstr "MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
+#~ msgid "Malformed message: %s\n"
+#~ msgstr "Mensaje incorrecto: %s\n"
 
-#: src/dird/dird_conf.c:996
-#, c-format
-msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
-msgstr "MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
+#~ msgid "Bad response to %s command: wanted %s, got %s\n"
+#~ msgstr "Mala respuesta al comando %s: quería %s, obtuvo %s\n"
 
-#: src/dird/dird_conf.c:1000
-#, fuzzy, c-format
-msgid "      JobRetention=%s FileRetention=%s\n"
-msgstr "JobRetention=%s FileRetention=%s AutoPrune=%d\n"
+#~ msgid "Socket error on %s command: ERR=%s\n"
+#~ msgstr "Error de Socket en comando %s: ERR=%s\n"
 
-#: src/dird/dird_conf.c:1004
-#, c-format
-msgid "      NextPool=%s\n"
-msgstr "NextPool=%s\n"
+#~ msgid "Expected a strip path positive integer, got:%s:"
+#~ msgstr "Esperaba una franja de ruta entero positivo, obtuvo: %s:"
 
-#: src/dird/dird_conf.c:1007
-#, c-format
-msgid "      RecyclePool=%s\n"
-msgstr "RecyclePool=%s\n"
+#~ msgid "Expected a FileSet option keyword, got:%s:"
+#~ msgstr "Esperaba una palabra clave Tipo FileSet, obtuvo: %s"
 
-#: src/dird/dird_conf.c:1010
-#, c-format
-msgid "      ScratchPool=%s\n"
-msgstr "ScratchPool=%s\n"
+#~ msgid "Old style Include/Exclude not supported\n"
+#~ msgstr "Antiguo estilo Incluir/Excluir no soportado\n"
 
-#: src/dird/dird_conf.c:1013
-#, c-format
-msgid "      Catalog=%s\n"
-msgstr "Catálogo=%s\n"
+#~ msgid "Regex compile error. ERR=%s\n"
+#~ msgstr "Error al compilar Regex. ERR=%s\n"
 
-#: src/dird/dird_conf.c:1033
-#, c-format
-msgid "Messages: name=%s\n"
-msgstr "Mensajes: nombre=%s\n"
+#~ msgid "Expected a regex string, got: %s\n"
+#~ msgstr "Se esperaba una expresión regular, se obtuvo: %s\n"
 
-#: src/dird/dird_conf.c:1035
-#, c-format
-msgid "      mailcmd=%s\n"
-msgstr "mailcmd=%s\n"
+#~ msgid "Expected a wild-card string, got: %s\n"
+#~ msgstr "Esperada una cadena comodín, obtuvo: %s\n"
 
-#: src/dird/dird_conf.c:1037
-#, c-format
-msgid "      opcmd=%s\n"
-msgstr "opcmd=%s\n"
+#~ msgid "Expected an fstype string, got: %s\n"
+#~ msgstr "Se esperaba una cadena fstype, se obtuvo: %s\n"
 
-#: 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"
+#~ msgid "ExcludeDirContaining directive not permitted in Exclude.\n"
+#~ msgstr "Directiva ExcludeDirContaining no permitida en Excluir(Exclude).\n"
 
-#: 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"
+#~ msgid "Expected an drivetype string, got: %s\n"
+#~ msgstr "Se esperaba una cadena drivetype, se obtuvo: %s\n"
 
-#: 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
-#: src/qt-console/bat_conf.cpp:265
-#, c-format
-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"
+#~ msgid "Backslash found. Use forward slashes or quote the string.: %s\n"
+#~ msgstr ""
+#~ "Barra invertida encontrada. Utilice barras inclinadas o cite la cadena.: "
+#~ "%s\n"
 
-#: 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"
+#~ msgid "Expected a filename, got: %s"
+#~ msgstr "Se esperaba un nombre de archivo, se obtuvo: %s"
 
-#: 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"
+#~ msgid "Plugin directive not permitted in Exclude\n"
+#~ msgstr "Directiva Plugin no permitida en Exclude\n"
 
-#: 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"
+#~ msgid "Options section not permitted in Exclude\n"
+#~ msgstr "Sección Options no permitida en Exclude\n"
 
-#: 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"
+#~ msgid "Expected a FileSet keyword, got: %s"
+#~ msgstr "Esperaba una palabra clave FileSet, obtuvo: %s"
 
-#: 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"
+#~ msgid "Could not init job queue: ERR=%s\n"
+#~ msgstr "No se pudo iniciar la cola de trabajos: ERR=%s\n"
 
-#: 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"
+#~ 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/dird_conf.c:1533
-#, c-format
-msgid "Cannot find Counter resource %s\n"
-msgstr "No se puede encontrar el recurso Counter %s\n"
+#~ msgid "Unable to init job cond variable: ERR=%s\n"
+#~ msgstr "No se puede iniciar job cond varibale: ERR=%s\n"
 
-#: 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"
+#~ msgid "Could not open database \"%s\".\n"
+#~ msgstr "No se puede abrir la base de datos \"%s\".\n"
 
-#: 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"
+#~ msgid "unknown source"
+#~ msgstr "fuente desconocida"
 
-#: 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
-#, c-format
-msgid "Unknown resource type %d in save_resource.\n"
-msgstr "Tipo de recurso desconocido %d en  save_resource.\n"
+#~ msgid "Job resource"
+#~ msgstr "Recurso Job"
 
-#: 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"
+#~ msgid "Unimplemented job type: %d\n"
+#~ msgstr "Tipo de Job no implementado: %d\n"
 
-#: 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
-#, c-format
-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"
+#~ msgid "Job canceled because max start delay time exceeded.\n"
+#~ msgstr "Job cancelado porque el tiempo máximo de espera ha excedido.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Job canceled because max run sched time exceeded.\n"
+#~ msgstr ""
+#~ "Job cancelado porque el tiempo de ejecución máximo programado se ha "
+#~ "superado.\n"
 
-#: src/dird/dird_conf.c:1660
-#, c-format
-msgid "Expected one of: %s, got: %s"
-msgstr "Esperaba uno de: %s, obtuvo: %s"
+#~ msgid "Failed to connect to File daemon.\n"
+#~ msgstr "Error al conectar con demonio File.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Failed to select Storage daemon.\n"
+#~ msgstr "Error al conectar con demonio Storage.\n"
 
-#: 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"
+#~ msgid "Failed to connect to Storage daemon.\n"
+#~ msgstr "Error al conectar con demonio Storage.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "canceled"
+#~ msgstr "Cancelado"
 
-#: 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"
+#, fuzzy
+#~ msgid "JobId %s, Job %s marked to be %s.\n"
+#~ msgstr "JobId %s, Job %s marcado para ser cancelado.\n"
 
-#: 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"
+#~ msgid "Max wait time exceeded. Job canceled.\n"
+#~ msgstr "Máximo tiempo de espera excedido. Job cancelado.\n"
 
-#: 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 ""
-"No se pudo encontrar Recursos de configuración %s  referenciado en la línea "
-"%d: %s\n"
+#~ msgid "Max run time exceeded. Job canceled.\n"
+#~ msgstr "Máximo tiempo de ejecución excedido. Job cancelado.\n"
 
-#: src/dird/getmsg.c:176
-#, c-format
-msgid "bget_dirmsg: unknown bnet signal %d\n"
-msgstr "bget_dirmsg: señal bnet desconocida %d\n"
+#, fuzzy
+#~ msgid "Max run sched time exceeded. Job canceled.\n"
+#~ msgstr "Máximo tiempo de ejecución excedido. Job cancelado.\n"
 
-#: src/dird/getmsg.c:194 src/dird/getmsg.c:200 src/dird/getmsg.c:213
-#: src/dird/getmsg.c:247 src/dird/getmsg.c:269 src/dird/getmsg.c:295
-#, c-format
-msgid "Malformed message: %s\n"
-msgstr "Mensaje incorrecto: %s\n"
+#~ msgid "Pool \"%s\" not in database. ERR=%s"
+#~ msgstr "Poll \"%s\" no en base de datos. ERR=%s"
 
-#: src/dird/getmsg.c:367
-#, c-format
-msgid "Bad response to %s command: wanted %s, got %s\n"
-msgstr "Mala respuesta al comando %s: quería %s, obtuvo %s\n"
+#~ msgid "Created database record for Pool \"%s\".\n"
+#~ msgstr "Creado registro base de datos para Pool \"%s\".\n"
 
-#: src/dird/getmsg.c:372
-#, c-format
-msgid "Socket error on %s command: ERR=%s\n"
-msgstr "Error de Socket en comando %s: ERR=%s\n"
+#~ 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/ua_restore.c:148
-msgid "\"RegexWhere\" specification not authorized.\n"
-msgstr "\"RegexWhere\" especificación no autorizada.\n"
+#~ msgid "Cancelling duplicate JobId=%d.\n"
+#~ msgstr "Cancelando duplicado JobId=%d.\n"
 
-#: src/dird/ua_restore.c:155
-msgid "\"where\" specification not authorized.\n"
-msgstr "especificación \"where\" no autorizada.\n"
+#, fuzzy
+#~ msgid "Run NextPool override"
+#~ msgstr "Anular Ejecutar Pool"
 
-#: src/dird/ua_restore.c:177
-msgid ""
-"No Restore Job Resource found in bacula-dir.conf.\n"
-"You must create at least one before running this command.\n"
-msgstr ""
-"Recurso Job de Restauración no encontrado en bacula-dir.conf.\n"
-"Usted debe crear al menos uno antes de ejecutar este comando.\n"
+#, fuzzy
+#~ msgid "Storage from Run NextPool override"
+#~ msgstr "Storage desde recurso Pool's NextPool "
 
-#: src/dird/ua_restore.c:194
-msgid "Restore not done.\n"
-msgstr "Restauración no hecha.\n"
+#, fuzzy
+#~ msgid "Job's NextPool resource"
+#~ msgstr "Recurso Job Pool's NextPool "
 
-#: src/dird/ua_restore.c:205
-msgid "Unable to construct a valid BSR. Cannot continue.\n"
-msgstr "No se puede construir un BSR válido. No puede continuar.\n"
+#, fuzzy
+#~ msgid "Storage from Job's NextPool resource"
+#~ msgstr "Storage desde recurso Pool's NextPool "
 
-#: src/dird/ua_restore.c:209 src/dird/ua_restore.c:221
-msgid "No files selected to be restored.\n"
-msgstr "No hay archivos seleccionados para ser restaurado.\n"
+#~ msgid "Job Pool's NextPool resource"
+#~ msgstr "Recurso Job Pool's NextPool "
 
-#: src/dird/ua_restore.c:215
-msgid ""
-"\n"
-"1 file selected to be restored.\n"
-"\n"
-msgstr ""
-"\n"
-"1 archivo seleccionado para ser restaurado.\n"
-"\n"
+#~ msgid "Storage from Pool's NextPool resource"
+#~ msgstr "Storage desde recurso Pool's NextPool "
 
-#: src/dird/ua_restore.c:217
-#, c-format
-msgid ""
-"\n"
-"%s files selected to be restored.\n"
-"\n"
-msgstr ""
-"\n"
-"%s archivos seleccionados para ser restaurado.\n"
-"\n"
+#, fuzzy
+#~ msgid "Run Pool override"
+#~ msgstr "Anular Ejecutar Pool"
 
-#: src/dird/ua_restore.c:236
-msgid "No Client resource found!\n"
-msgstr "Ningún recurso Cliente encontrado!\n"
+#~ msgid "Run FullPool override"
+#~ msgstr "Anular Ejecutar FullPool "
 
-#: src/dird/ua_restore.c:333
-#, fuzzy
-msgid "The restore will use the following job(s) as Base\n"
-msgstr "Usted ha seleccionado los siguientes JobIds: %s\n"
+#~ msgid "Job FullPool override"
+#~ msgstr "Anular Job FullPool"
 
-#: src/dird/ua_restore.c:354
-#, c-format
-msgid "Missing value for keyword: %s\n"
-msgstr "Falta el valor de palabra clave: %s\n"
+#~ msgid "Run IncPool override"
+#~ msgstr "Anular Ejecutar IncPoll"
 
-#: src/dird/ua_restore.c:434
-msgid "List last 20 Jobs run"
-msgstr "Listar los Últimos 20 Jobs ejecutados"
+#~ msgid "Job IncPool override"
+#~ msgstr "Anular Job IncPoll"
 
-#: src/dird/ua_restore.c:435
-msgid "List Jobs where a given File is saved"
-msgstr "Listado de Jobs donde un determinado archivo se ha guardado"
+#~ msgid "Run DiffPool override"
+#~ msgstr "Anular Ejecutar DiffPool"
 
-#: src/dird/ua_restore.c:436
-msgid "Enter list of comma separated JobIds to select"
-msgstr "Introduzca lista de JobIds separados por comas para seleccionar"
+#~ msgid "Job DiffPool override"
+#~ msgstr "Anular Job DiffPool"
 
-#: src/dird/ua_restore.c:437
-msgid "Enter SQL list command"
-msgstr "Introduzca lista de comandos SQL"
+#~ msgid "Could not create Client record. ERR=%s\n"
+#~ msgstr "No es posible crear el registro de clientes. ERR=%s\n"
 
-#: src/dird/ua_restore.c:438
-msgid "Select the most recent backup for a client"
-msgstr "Seleccionar el respaldo mas reciente para un cliente"
+#~ msgid "FileSet MD5 digest not found.\n"
+#~ msgstr "FileSet MD5 digest no encontrado.\n"
 
-#: src/dird/ua_restore.c:439
-msgid "Select backup for a client before a specified time"
-msgstr ""
-"Seleccione un respaldo de un cliente antes de un período de tiempo "
-"especificado"
+#~ msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
+#~ msgstr "No es posible crear el registro FileSet \"%s\". ERR=%s\n"
 
-#: src/dird/ua_restore.c:440
-msgid "Enter a list of files to restore"
-msgstr "Introduzca una lista de archivos para restaurar"
+#~ msgid "Error updating job record. %s"
+#~ msgstr "Error actualizando registro job. %s"
 
-#: src/dird/ua_restore.c:441
-msgid "Enter a list of files to restore before a specified time"
-msgstr ""
-"Introduzca una lista de archivos para restaurar antes de un período de "
-"tiempo especificado"
+#~ msgid "Run pool override"
+#~ msgstr "Anular Ejecutar Pool"
 
-#: src/dird/ua_restore.c:442
-msgid "Find the JobIds of the most recent backup for a client"
-msgstr "Encuentre el JobIds del respaldo más reciente para un cliente"
+#~ msgid "Run storage override"
+#~ msgstr "Anular Ejecutar Storage"
 
-#: src/dird/ua_restore.c:443
-msgid "Find the JobIds for a backup for a client before a specified time"
-msgstr ""
-"Encuentre el JobIds del respaldo de un cliente antes de un período de tiempo "
-"especificado"
+#~ msgid "Client resource"
+#~ msgstr "Recurso de cliente"
 
-#: src/dird/ua_restore.c:444
-msgid "Enter a list of directories to restore for found JobIds"
-msgstr ""
-"Introduzca una lista de directorios para restaurar por JobIds encontrado"
+#~ msgid "No storage specified.\n"
+#~ msgstr "Almacenamiento no especificado.\n"
 
-#: src/dird/ua_restore.c:445
-msgid "Select full restore to a specified Job date"
-msgstr "Seleccione restauración completa para una fecha especifica de Job"
+#~ msgid "Could not start clone job: \"%s\".\n"
+#~ msgstr "No se pudo iniciar el job de clonación: \"%s\".\n"
 
-#: 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"
+#~ msgid "Clone JobId %d started.\n"
+#~ msgstr "Clonar JobId %d iniciado.\n"
 
-#: src/dird/ua_restore.c:491
-#, c-format
-msgid "Unknown keyword: %s\n"
-msgstr "Palabra clave desconocida: %s\n"
+#~ msgid "pthread_attr_init: ERR=%s\n"
+#~ msgstr "pthread_attr_init: ERR=%s\n"
 
-#: 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"
+#~ msgid "pthread_mutex_init: ERR=%s\n"
+#~ msgstr "pthread_mutex_init: ERR=%s\n"
 
-#: src/dird/ua_restore.c:560
-#, c-format
-msgid "Error: Pool resource \"%s\" access not allowed.\n"
-msgstr "Error: recurso Pool \"%s\" acceso no permitido.\n"
+#~ msgid "pthread_cond_init: ERR=%s\n"
+#~ msgstr "pthread_cond_init: ERR=%s\n"
 
-#: src/dird/ua_restore.c:576
-msgid ""
-"\n"
-"First you select one or more JobIds that contain files\n"
-"to be restored. You will be presented several methods\n"
-"of specifying the JobIds. Then you will be allowed to\n"
-"select which files from those JobIds are to be restored.\n"
-"\n"
-msgstr ""
-"\n"
-"Primero debe seleccionar una o más JobIds que contienen archivos\n"
-"para ser restaurado.Se le presentará varios métodos\n"
-"para especificar los JobIDs. Luego se le permitirá seleccionar los archivos "
-"de los JobIds que deben ser restaurados.\n"
-"\n"
+#~ msgid "pthread_cond_broadcast: ERR=%s\n"
+#~ msgstr "pthread_cond_broadcast: ERR=%s\n"
 
-#: src/dird/ua_restore.c:589
-msgid "To select the JobIds, you have the following choices:\n"
-msgstr ""
-"Para seleccionar el JobIds, usted dispone de las siguientes opciones:\n"
+#~ msgid "pthread_cond_wait: ERR=%s\n"
+#~ msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: src/dird/ua_restore.c:594
-msgid "Select item: "
-msgstr "Seleccione un ítem:"
+#~ 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/ua_restore.c:599 src/dird/ua_restore.c:634
-msgid "SQL query not authorized.\n"
-msgstr "Consulta SQL no autorizada.\n"
+#~ msgid "pthread_thread_create: ERR=%s\n"
+#~ msgstr "pthread_thread_create: ERR=%s\n"
 
-#: src/dird/ua_restore.c:612
-msgid "Enter Filename (no path):"
-msgstr "Introduzca Nombre de Archivo (sin ruta):"
+#~ msgid "pthread_cond_signal: ERR=%s\n"
+#~ msgstr "pthread_cond_signal: ERR=%s\n"
 
-#: src/dird/ua_restore.c:627 src/dird/ua_restore.c:735
-msgid "Enter JobId(s), comma separated, to restore: "
-msgstr "Introduzca JobId(s), separados por comas, para restaurar:"
+#~ msgid "pthread_create: ERR=%s\n"
+#~ msgstr "pthread_create: ERR=%s\n"
 
-#: src/dird/ua_restore.c:637
-msgid "Enter SQL list command: "
-msgstr "Introduzca lista de comandos SQL:"
+#~ msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
+#~ msgstr ""
+#~ "Job %s en %s reprogramado para volver a ejecutar en %d segundos(%s).\n"
 
-#: src/dird/ua_restore.c:671 src/dird/ua_restore.c:694
-msgid ""
-"Enter file names with paths, or < to enter a filename\n"
-"containing a list of file names with paths, and terminate\n"
-"them with a blank line.\n"
-msgstr ""
-"Escriba los nombres de archivo con las rutas, o < para introducir un nombre "
-"de archivo\n"
-"conteniendo una lista de nombres de archivo con las rutas, y terminado\n"
-"con una línea en blanco.\n"
+#~ msgid "previous Job"
+#~ msgstr "Job anterior"
 
-#: src/dird/ua_restore.c:675 src/dird/ua_restore.c:698
-msgid "Enter full filename: "
-msgstr "Introduzca el nombre de archivo completo:"
+#~ msgid ""
+#~ "Job canceled. Attempt to read and write same device.\n"
+#~ "    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
+#~ msgstr ""
+#~ "Job cancelado. Intento de leer y escribir mismo dispositivo.\n"
+#~ " Storage de Lectura \"%s\" (desde %s) -- Storage de Escritura \"%s"
+#~ "\" (desde %s)\n"
 
-#: src/dird/ua_restore.c:733
-#, c-format
-msgid "You have already selected the following JobIds: %s\n"
-msgstr "Usted ya ha seleccionado los siguientes JobIds: %s\n"
+#~ msgid "Could not get or create a Pool record.\n"
+#~ msgstr "No es posible obtener o crear un registro Pool.\n"
 
-#: src/dird/ua_restore.c:751
-msgid ""
-"Enter full directory names or start the name\n"
-"with a < to indicate it is a filename containing a list\n"
-"of directories and terminate them with a blank line.\n"
-msgstr ""
-"Escriba los nombres de directorio completo o inicie el nombre\n"
-" con un < para indicar que es un nombre de archivo que contiene una lista\n"
-"de directorios y terminado con una línea en blanco.\n"
+#~ msgid "Could not get or create the FileSet record.\n"
+#~ msgstr "No es posible obtener o crear un registro FileSet.\n"
 
-#: src/dird/ua_restore.c:755
-msgid "Enter directory name: "
-msgstr "Introduzca nombre de directorio:"
+#~ msgid "No previous Job found to %s.\n"
+#~ msgstr "Ninguno Job previo encontrado para %s.\n"
 
-#: src/dird/ua_restore.c:771
-msgid "Enter JobId to get the state to restore: "
-msgstr "Introduzca JobId para obtener el estado para restaurar:"
+#~ msgid "Create bootstrap file failed.\n"
+#~ msgstr "Fallo crear archivo bootstrap.\n"
 
-#: src/dird/ua_restore.c:784
-#, c-format
-msgid "Selecting jobs to build the Full state at %s\n"
-msgstr "Seleccionando trabajos para construir el estado completo en %s\n"
+#~ msgid "Previous Job has no data to %s.\n"
+#~ msgstr "Job anterior no tiene datos para %s.\n"
 
-#: src/dird/ua_restore.c:810
-msgid "Invalid JobId in list.\n"
-msgstr "JobId inválido en la lista.\n"
+#~ msgid "Job resource not found for \"%s\".\n"
+#~ msgstr "Recurso Job no encontrado para \"%s\".\n"
 
-#: src/dird/ua_restore.c:829
-#, c-format
-msgid "Access to JobId=%s (Job \"%s\") not authorized. Not selected.\n"
-msgstr "Acceso al JobId=%s (Job \"%s\") no autorizado. No seleccionado.\n"
+#~ msgid "Previous Job resource not found for \"%s\".\n"
+#~ msgstr "Recurso Job anterior no encontrado para \"%s\".\n"
 
-#: src/dird/ua_restore.c:842
-msgid "No Jobs selected.\n"
-msgstr "Jobs no seleccionados.\n"
+#~ msgid "setup job failed.\n"
+#~ msgstr "Configuración del job fallida.\n"
 
-#: src/dird/ua_restore.c:847
-#, c-format
-msgid "You have selected the following JobIds: %s\n"
-msgstr "Usted ha seleccionado los siguientes JobIds: %s\n"
+#~ msgid "Pool for JobId %s not in database. ERR=%s\n"
+#~ msgstr "Pool para JobId %s no esta en base de datos. ERR=%s\n"
 
-#: src/dird/ua_restore.c:849
-#, c-format
-msgid "You have selected the following JobId: %s\n"
-msgstr "Usted ha seleccionado el siguiente JobId: %s\n"
+#~ msgid "Pool resource \"%s\" not found.\n"
+#~ msgstr "Recurso Pool \"%s\" no encontrado.\n"
 
-#: src/dird/ua_restore.c:859
-msgid ""
-"The restored files will the most current backup\n"
-"BEFORE the date you specify below.\n"
-"\n"
-msgstr ""
-"Los archivos restaurados serán los más actuales respaldados\n"
-"ANTES de la fecha especificada a continuación.\n"
-"\n"
+#~ 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"
 
-#: src/dird/ua_restore.c:862
-msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
-msgstr "Introduzca la fecha en formato YYYY-MM-DD HH:MM:SS :"
+#~ msgid "JobId %s already %s probably by another Job. %s stopped.\n"
+#~ msgstr "JobId %s ya %s probablemente por otro Job. %s detenido.\n"
 
-#: src/dird/ua_restore.c:868
-msgid "Improper date format.\n"
-msgstr "Inadecuado formato de fecha.\n"
+#~ msgid "Start %s JobId %s, Job=%s\n"
+#~ msgstr "Inicio %s JobId %s, Job=%s\n"
 
-#: src/dird/ua_restore.c:889
-#, c-format
-msgid "Cannot open file %s: ERR=%s\n"
-msgstr "No se puede abrir el archivo %s: ERR=%s\n"
+#, fuzzy
+#~ msgid "The Storage daemon does not support SDCallsClient.\n"
+#~ msgstr "flujo %s no suportado en este Cliente.\n"
 
-#: src/dird/ua_restore.c:897 src/dird/ua_restore.c:901
-#, c-format
-msgid "Error occurred on line %d of file \"%s\"\n"
-msgstr "Se ha producido un error en la línea %d del archivo  \"%s\"\n"
+#, fuzzy
+#~ msgid "Could not start migration/copy job.\n"
+#~ msgstr "No se pudo arrancar el Job de migración.\n"
 
-#: src/dird/ua_restore.c:945 src/dird/ua_restore.c:973
-#, c-format
-msgid "No database record found for: %s\n"
-msgstr "No encuentra registro en base de datos para: %s\n"
+#~ msgid "%s JobId %d started.\n"
+#~ msgstr "%s JobId %d iniciado.\n"
 
-#: src/dird/ua_restore.c:961
-msgid "No JobId specified cannot continue.\n"
-msgstr "JobId no especificado, imposible continuar.\n"
+#~ msgid "%s OK -- with warnings"
+#~ msgstr "%s OK -- con alertas"
 
-#: src/dird/ua_restore.c:994
-#, c-format
-msgid "No table found: %s\n"
-msgstr "Tabla no encontrada:  %s\n"
+#~ msgid "%s OK"
+#~ msgstr "%s OK"
 
-#: src/dird/ua_restore.c:1052
-msgid ""
-"\n"
-"\n"
-"For one or more of the JobIds selected, no files were found,\n"
-"so file selection is not possible.\n"
-"Most likely your retention policy pruned the files.\n"
-msgstr ""
-"\n"
-"\n"
-"Para uno o más de los JobIds seleccionado, no se encontraron archivos,\n"
-"por lo tanto, selección de archivos no es posible.\n"
-"El mas probable es que su política de retención podo los archivos.\n"
+#~ msgid "*** %s Error ***"
+#~ msgstr "*** %s Error ***"
 
-#: src/dird/ua_restore.c:1055
-msgid ""
-"\n"
-"Do you want to restore all the files? (yes|no): "
-msgstr ""
-"\n"
-"Desea restaurar todos los archivos? (sí­|no):"
+#~ msgid "%s Canceled"
+#~ msgstr "%s Cancelado"
 
-#: src/dird/ua_restore.c:1058
-msgid ""
-"\n"
-"Regexp matching files to restore? (empty to abort): "
-msgstr ""
-"\n"
-"Regexp para restaurar los archivos que coinciden? (vacío para abortar):"
+#~ msgid "Inappropriate %s term code"
+#~ msgstr "Inadecuado código de terminación %s"
 
-#: src/dird/ua_restore.c:1074
-#, c-format
-msgid "Regex compile error: %s\n"
-msgstr "Error de compilación Regex: %s\n"
+#~ msgid "%s -- no files to %s"
+#~ msgstr "%s -- ninguno archivo para %s"
 
-#: src/dird/ua_restore.c:1137
-#, c-format
-msgid ""
-"\n"
-"Building directory tree for JobId(s) %s ...  "
-msgstr ""
-"\n"
-"Construyendo árbol de directorios para JobId(s) %s ..."
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  Prev Backup JobId:      %s\n"
+#~ "  Prev Backup Job:        %s\n"
+#~ "  New Backup JobId:       %s\n"
+#~ "  Current JobId:          %s\n"
+#~ "  Current Job:            %s\n"
+#~ "  Backup Level:           %s%s\n"
+#~ "  Client:                 %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Read Pool:              \"%s\" (From %s)\n"
+#~ "  Read Storage:           \"%s\" (From %s)\n"
+#~ "  Write Pool:             \"%s\" (From %s)\n"
+#~ "  Write Storage:          \"%s\" (From %s)\n"
+#~ "  Catalog:                \"%s\" (From %s)\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Elapsed time:           %s\n"
+#~ "  Priority:               %d\n"
+#~ "  SD Files Written:       %s\n"
+#~ "  SD Bytes Written:       %s (%sB)\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s\n"
+#~ "  SD Errors:              %d\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ " Build OS: %s %s %s\n"
+#~ " Prev Respaldo JobId: %s\n"
+#~ " Job anterior de Respaldo: %s\n"
+#~ " Nuevo JobId de Respaldo: %s\n"
+#~ " JobId Actual: %s\n"
+#~ " Job Actual: %s\n"
+#~ " Nivel de Respaldo: %s%s\n"
+#~ " Cliente: %s\n"
+#~ " FileSet: \"%s\" %s\n"
+#~ " Pool Lectura: \"%s\" (Desde %s)\n"
+#~ " Storage Lectura: \"%s\" (Desde %s)\n"
+#~ " Pool Escritura: \"%s\" (Desde %s)\n"
+#~ " Storage Escritura: \"%s\" (Desde %s)\n"
+#~ " Catalogo: \"%s\" (Desde %s)\n"
+#~ " Hora de inicio: %s\n"
+#~ " Hora de finalización: %s\n"
+#~ " Tiempo transcurrido: %s\n"
+#~ " Prioridad: %d\n"
+#~ " SD Archivos Escritos: %s\n"
+#~ " SD Bytes Escritos: %s (%sB)\n"
+#~ " Tasa: %.1f KB/s\n"
+#~ " Nombre del Volumen(es): %s\n"
+#~ " Id de Sesión de Volumen: %d\n"
+#~ " Tiempo de Sesión de Volumen: %d\n"
+#~ " Ultimo Bytes del  Volumen: %s (%sB)\n"
+#~ " Errores del SD: %d\n"
+#~ " Estado de terminación del SD: %s\n"
+#~ " Terminación: %s\n"
+#~ "\n"
 
-#: src/dird/ua_restore.c:1207
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree and marked for extraction.\n"
-msgstr ""
-"\n"
-"%s archivos insertados en el árbol y marcados para la extracción.\n"
+#~ msgid "No Next Pool specification found in Pool \"%s\".\n"
+#~ msgstr "Especificación Next Pool no encontrada en Pool \"%s\".\n"
 
-#: src/dird/ua_restore.c:1210
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree.\n"
-msgstr ""
-"\n"
-"%s archivos insertados en el árbol.\n"
+#~ msgid "No Storage specification found in Next Pool \"%s\".\n"
+#~ msgstr "Especificación Storage no encontrada en Next Pool \"%s\".\n"
 
-#: src/dird/ua_restore.c:1285
-#, c-format
-msgid "Error getting FileSet \"%s\": ERR=%s\n"
-msgstr "Error al obtener FileSet \"%s\": ERR=%s\n"
+#~ msgid "No %s SQL selection pattern specified.\n"
+#~ msgstr "Ninguno %s patrón de selección de SQL especificado.\n"
 
-#: src/dird/ua_restore.c:1290
-#, fuzzy, c-format
-msgid "FileSet argument: %s\n"
-msgstr "FileSet: nombre=%s\n"
+#~ msgid "SQL failed. ERR=%s\n"
+#~ msgstr "Fallo SQL. ERR=%s\n"
 
-#: src/dird/ua_restore.c:1302
-#, c-format
-msgid "No FileSet found for client \"%s\".\n"
-msgstr "FileSet para cliente \"%s\" no encontrado.\n"
+#~ msgid "No Volumes found to %s.\n"
+#~ msgstr "Volúmenes no encontrado para %s.\n"
 
-#: src/dird/ua_restore.c:1308
-#, c-format
-msgid "Error getting FileSet record: %s\n"
-msgstr "Error al obtener el registro FileSet: %s\n"
+#~ msgid "Invalid JobId found.\n"
+#~ msgstr "JobId inválido encontrado.\n"
 
-#: src/dird/ua_restore.c:1309
-msgid ""
-"This probably means you modified the FileSet.\n"
-"Continuing anyway.\n"
-msgstr ""
-"Esto probablemente significa que usted modifico el FileSet.\n"
-"Continuando de todos modos.\n"
+#~ msgid "Unknown %s Selection Type.\n"
+#~ msgstr "Tipo de selección %s desconocido.\n"
 
-#: src/dird/ua_restore.c:1324
-#, c-format
-msgid "Pool \"%s\" not found, using any pool.\n"
-msgstr "Pool \"%s\" no encontrado, utilizando cualquier pool.\n"
+#~ msgid "No JobIds found to %s.\n"
+#~ msgstr "Ninguno JobIds encontrado para %s.\n"
 
-#: src/dird/ua_restore.c:1351 src/dird/ua_restore.c:1367
-#, c-format
-msgid "No Full backup before %s found.\n"
-msgstr "Full Backup no encontrado antes de %s.\n"
+#~ 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/ua_restore.c:1396
-msgid "No jobs found.\n"
-msgstr "Jobs no encontrados.\n"
+#~ msgid " was"
+#~ msgstr "era"
 
-#: src/dird/ua_restore.c:1517
-#, c-format
-msgid "Warning default storage overridden by \"%s\" on command line.\n"
-msgstr ""
-"Advertencia, storage por defecto reemplazada por \"%s\" en la línea de "
-"comandos.\n"
+#~ msgid "s were"
+#~ msgstr "s eran"
 
-#: 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"
+#~ msgid "%s using JobId=%s Job=%s\n"
+#~ msgstr "%s utilizando JobId=%s Job=%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"
+#~ msgid "No %ss found to %s.\n"
+#~ msgstr "Ninguno %ss encontrado para %s.\n"
 
-#: src/dird/ua_restore.c:1546
-#, c-format
-msgid ""
-"\n"
-"Unable to find Storage resource for\n"
-"MediaType \"%s\", needed by the Jobs you selected.\n"
-msgstr ""
-"\n"
-"No se puede encontrar los recursos Storage para\n"
-"MediaType \"%s\", necesario por los Jobs que ha seleccionado.\n"
+#~ 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/fd_cmds.c:95
-msgid "Client: "
-msgstr "Cliente:"
+#~ msgid "SQL to get uncopied jobs failed. ERR=%s\n"
+#~ msgstr "Fallo SQL para obtener uncopied jobs. ERR=%s\n"
 
-#: src/dird/fd_cmds.c:137
-#, c-format
-msgid "File daemon \"%s\" rejected Job command: %s\n"
-msgstr "Demonio File \"%s\" rechazó comando Job: %s\n"
+#~ msgid "No %s %s selection pattern specified.\n"
+#~ msgstr "Ninguno %s %s patrón de selección especificados.\n"
 
-#: src/dird/fd_cmds.c:150
-#, c-format
-msgid "Error updating Client record. ERR=%s\n"
-msgstr "Error al actualizar el registro Cliente:ERR=%s\n"
+#~ msgid "SQL to get %s failed. ERR=%s\n"
+#~ msgstr "Fallo SQL para obtener %s. ERR=%s\n"
 
-#: src/dird/fd_cmds.c:155
-#, c-format
-msgid "FD gave bad response to JobId command: %s\n"
-msgstr "FD dio mala respuesta al comando jobId: %s\n"
+#~ msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
+#~ msgstr "Consulta de Pool \"%s\" No regreso Jobs  para %s.\n"
 
-#: src/dird/fd_cmds.c:184 src/dird/fd_cmds.c:272
-msgid ", since="
-msgstr ", desde="
+#~ msgid "Regex pattern matched no Jobs to %s.\n"
+#~ msgstr "Patrón Regex no encontró Jobs para %s.\n"
 
-#: src/dird/fd_cmds.c:249
-msgid "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
-msgstr ""
-"Ninguna copia de seguridad Completa anterior encontrada en el catálogo. "
-"Haciendo copia de seguridad COMPLETA.\n"
+#~ msgid "No %s found to %s.\n"
+#~ msgstr "Ninguno %s encontrado para %s.\n"
 
-#: src/dird/fd_cmds.c:250 src/dird/fd_cmds.c:256 src/dird/fd_cmds.c:265
-#, c-format
-msgid " (upgraded from %s)"
-msgstr "(actualizar desde %s)"
+#~ msgid "SQL error. Expected 1 MediaId got %d\n"
+#~ msgstr "SQL error. Esperaba 1 MediaId, obtuvo %d\n"
 
-#: src/dird/fd_cmds.c:255
-msgid ""
-"No prior or suitable Differential backup found in catalog. Doing "
-"Differential backup.\n"
-msgstr ""
-"Ninguna copia de seguridad Diferencial previa o adecuada encontrada en el "
-"catálogo. Haciendo copia de seguridad Diferencial.\n"
+#~ msgid "Connecting to Storage daemon %s at %s:%d ...\n"
+#~ msgstr "Conectando al demonio Storage %s en %s:%d ...\n"
 
-#: src/dird/fd_cmds.c:263
-#, c-format
-msgid "Prior failed job found in catalog. Upgrading to %s.\n"
-msgstr ""
-"Trabajo anterior fallido encontrado en el catálogo. Actualizando a %s.\n"
+#~ msgid "Storage daemon rejected Job command: %s\n"
+#~ msgstr "Storage daemon rechazo Job comando: %s\n"
 
-#: src/dird/fd_cmds.c:328
-#, c-format
-msgid "Unimplemented backup level %d %c\n"
-msgstr "Nivel %d %c de respaldo no implementado\n"
+#~ msgid "<stored: bad response to Job command: %s\n"
+#~ msgstr "<stored: mala respuesta para Job comando: %s\n"
 
-#: src/dird/fd_cmds.c:401
-msgid ""
-"FD compression disabled for this Job because AllowCompress=No in Storage "
-"resource.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Using Device \"%s\" to read.\n"
+#~ msgstr "Utilizando el dispositivo: \"%s\" para lectura.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Using Device \"%s\" to write.\n"
+#~ msgstr "Utilizando el dispositivo: \"%s\" para escritura.\n"
 
-#: src/dird/fd_cmds.c:511 src/dird/fd_cmds.c:536 src/dird/fd_cmds.c:550
-msgid ">filed: write error on socket\n"
-msgstr ">filed: error de escritura en socket\n"
+#~ msgid ""
+#~ "\n"
+#~ "     Storage daemon didn't accept Device \"%s\" because:\n"
+#~ "     %s"
+#~ msgstr ""
+#~ "\n"
+#~ " Demonio Storage no aceptó Dispositivo \"%s\" porque:\n"
+#~ " %s"
 
-#: src/dird/fd_cmds.c:517
-#, c-format
-msgid "Error running program: %s. ERR=%s\n"
-msgstr "Error ejecutando el programa: %s. ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "     Storage daemon didn't accept Device \"%s\" command.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " Demonio Storage no aceptó Dispositivo \"%s\" comando.\n"
 
-#: src/dird/fd_cmds.c:526
-#, c-format
-msgid "Cannot open included file: %s. ERR=%s\n"
-msgstr "No se puede abrir el archivo incluido: %s. ERR=%s\n"
+#~ msgid "Cannot create message thread: %s\n"
+#~ msgstr "No se puede crear hilo de mensaje: %s\n"
 
-#: src/dird/fd_cmds.c:672
-#, c-format
-msgid "Client \"%s\" RunScript failed.\n"
-msgstr "Cliente \"%s\" RunScript fallido.\n"
+#~ msgid "Could not open bootstrap file %s: ERR=%s\n"
+#~ msgstr "No se puede abrir el archivo de arranque %s: ERR=%s\n"
 
-#: src/dird/fd_cmds.c:695
-#, c-format
-msgid ""
-"Client \"%s\" may not be used to restore this job. Please upgrade your "
-"client.\n"
-msgstr ""
+#~ msgid "Illegal character in Volume name \"%s\"\n"
+#~ msgstr "Carácter ilegal en el nombre del Volumen \"%s\"\n"
 
-#: src/dird/fd_cmds.c:770
 #, fuzzy
-msgid "RestoreObject failed.\n"
-msgstr "Restaurar Archivos"
+#~ msgid ""
+#~ "Created new Volume=\"%s\", Pool=\"%s\", MediaType=\"%s\" in catalog.\n"
+#~ msgstr "Se creó un Volumen nuevo \"%s\" en el catálogo.\n"
 
-#: src/dird/fd_cmds.c:806
-#, c-format
-msgid ""
-"<filed: bad attributes, expected 3 fields got %d\n"
-"msglen=%d msg=%s\n"
-msgstr ""
-"<Archivado:atributos erróneos, se esperaban 3 campos se tienen %d\n"
-" msglen=%d msg=%s\n"
+#~ msgid "SQL failed, but ignored. ERR=%s\n"
+#~ msgstr "SQL fallido, pero ignorado. ERR=%s\n"
 
-#: 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"
+#~ 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/fd_cmds.c:862
-#, c-format
-msgid "%s index %d not same as attributes %d\n"
-msgstr "%s índice %d no igual que los atributos %d\n"
+#~ msgid "Too many failures. Giving up creating Volume name.\n"
+#~ msgstr ""
+#~ "Demasiados errores. Abandono el intento de crear nombre de Volumen\n"
 
-#: src/dird/fd_cmds.c:876
-#, c-format
-msgid "<filed: Network error getting attributes. ERR=%s\n"
-msgstr "<filed: Error al obtener los atributos de red. ERR=%s\n"
+#~ msgid "Purging oldest volume \"%s\"\n"
+#~ msgstr "Purgando volumen más antiguo \"%s\"\n"
 
-#: src/dird/ua_label.c:104
-msgid "Negative numbers not permitted\n"
-msgstr "Números negativos no permitidos.\n"
+#~ msgid "Pruning oldest volume \"%s\"\n"
+#~ msgstr "Podando volumen más antiguo \"%s\"\n"
 
-#: 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"
+#~ 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/ua_label.c:115 src/lib/sellist.c:81
-msgid "Range start is not an integer.\n"
-msgstr "Rango inicial no es entero.\n"
+#, fuzzy
+#~ 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/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"
+#~ msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
+#~ msgstr "Volumen utilizado una vez. Marcando Volumen \"%s\" como Usado.\n"
 
-#: 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"
+#, fuzzy
+#~ 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/ua_label.c:133
-msgid "Values must be be greater than zero.\n"
-msgstr "Los valores deben ser ser mayor que cero.\n"
+#, fuzzy
+#~ 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/ua_label.c:137
-msgid "Slot too large.\n"
-msgstr "Ranura demasiado grande.\n"
+#, fuzzy
+#~ msgid ""
+#~ "Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
+#~ "Used.\n"
+#~ msgstr ""
+#~ "Máximo de duración de uso configurado superado. Marcando Volumen \"%s\" "
+#~ "como  Usado.\n"
 
-#: 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"
+#~ msgid "Catalog error updating volume \"%s\". ERR=%s"
+#~ msgstr "Error de Catálogo actualizando volumen \"%s\". ERR=%s"
 
-#: 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"
+#~ msgid "volume has expired"
+#~ msgstr "volumen ha caducado"
 
-#: 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"
+#~ msgid "Recycled current volume \"%s\"\n"
+#~ msgstr "Reciclado actual volumen \"%s\"\n"
 
-#: 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"
+#~ msgid "and recycling of current volume failed"
+#~ msgstr "y el reciclado de volumen actual fallo"
 
-#: 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"
+#~ msgid "but should be Append, Purged or Recycle"
+#~ msgstr "pero debería ser Anexar, Purgado o Reciclaje"
 
-#: 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"
+#~ msgid "volume has recycling disabled"
+#~ msgstr "el volumen de reciclado se ha desactivado"
 
-#: 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"
+#~ msgid ""
+#~ "but should be Append, Purged or Recycle (recycling of the current volume "
+#~ "failed)"
+#~ msgstr ""
+#~ "pero debería ser Anexar, Purgado o Reciclaje (reciclado del volumen "
+#~ "actual fallido)"
 
-#: 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"
+#~ 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 ""
+#~ "pero debería ser Anexar, Purgado o Reciclaje (no puede reciclar "
+#~ "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/ua_label.c:394
-#, c-format
-msgid ""
-"Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
-"relabeling.\n"
-msgstr ""
-"Volumen \"%s\" hay VolStatus %s. Debe ser purgado o reciclado antes de "
-"volver a etiquetar.\n"
+#~ msgid "Unable to get Pool record: ERR=%s"
+#~ msgstr "No es posible obtener registro Pool: ERR=%s"
 
-#: src/dird/ua_label.c:410
-msgid "Enter new Volume name: "
-msgstr "Introduzca el nuevo nombre de Volumen:"
+#~ 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/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"
+#~ msgid "Failed to move Scratch Volume. ERR=%s\n"
+#~ msgstr "No se pudo mover Volumen Scratch. ERR=%s\n"
 
-#: src/dird/ua_label.c:443
-msgid "Enter slot (0 or Enter for none): "
-msgstr "Introduzca ranura (0 o Enter para ninguno):"
+#~ msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
+#~ msgstr "Usando Volumen \"%s\" desde 'Scratch' pool.\n"
 
-#: 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"
+#~ msgid "Recycled volume \"%s\"\n"
+#~ msgstr "Volumen \"%s\" reciclado\n"
 
-#: src/dird/ua_label.c:474
-#, c-format
-msgid "Old volume \"%s\" deleted from catalog.\n"
-msgstr "Antiguo volumen \"%s\" borrado del catalogo.\n"
+#~ msgid "Could not get storage resource '%s'.\n"
+#~ msgstr "No se pudo obtener recurso de almacenamiento '%s'.\n"
 
-#: src/dird/ua_label.c:485
-#, c-format
-msgid "Requesting to mount %s ...\n"
-msgstr "Solicitando para montar %s ...\n"
+#, fuzzy
+#~ msgid "Could not acquire read storage lock for \"%s\""
+#~ msgstr "No se pudo obtener recurso de almacenamiento '%s'.\n"
 
-#: src/dird/ua_label.c:507
-msgid "Do not forget to mount the drive!!!\n"
-msgstr "No se olvide de montar la unidad!!!\n"
+#~ 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 ""
+#~ "No se puede restaurar sin un archivo bootstrap.\n"
+#~ "Usted probablemente ejecuto un job de restauración directa. Todas las "
+#~ "tareas de restauración deben\n"
+#~ "ser ejecutadas utilizando el comando de restauración.\n"
 
-#: src/dird/ua_label.c:547
-msgid ""
-"The following Volumes will be labeled:\n"
-"Slot  Volume\n"
-"==============\n"
-msgstr ""
-"Los siguientes volúmenes serán etiquetados:\n"
-"Ranura Volumen\n"
-"==============\n"
+#~ msgid "Start Restore Job %s\n"
+#~ msgstr "Iniciar Job Restaurar %s\n"
 
-#: src/dird/ua_label.c:556
-msgid "Do you want to label these Volumes? (yes|no): "
-msgstr "¿Quieres etiquetar estos volúmenes? (sí | no):"
+#~ msgid "Restore OK -- warning file count mismatch"
+#~ msgstr "Restauración OK -- alerta, número de archivos desajustado."
 
-#: 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"
+#~ msgid "Restore OK"
+#~ msgstr "Restauración OK"
 
-#: src/dird/ua_label.c:582
-#, c-format
-msgid "Error setting InChanger: ERR=%s"
-msgstr "Error al configurar InChanger: ERR =% s"
+#~ msgid "Restore OK -- with warnings"
+#~ msgstr "Restaurar OK - con advertencias"
 
-#: src/dird/ua_label.c:605
-#, c-format
-msgid "Maximum pool Volumes=%d reached.\n"
-msgstr "Máximo pool Volúmenes=%d alcanzado.\n"
+#~ msgid "*** Restore Error ***"
+#~ msgstr "*** Error de Restauración ***"
 
-#: 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"
+#~ msgid "Restore Canceled"
+#~ msgstr "Restauración Cancelada"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Restore Client:         %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Files Expected:         %s\n"
+#~ "  Files Restored:         %s\n"
+#~ "  Bytes Restored:         %s\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  FD Errors:              %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ " Build OS: %s %s %s\n"
+#~ " JobId: %d\n"
+#~ " Job: %s\n"
+#~ " Restaurar Cliente: %s\n"
+#~ " Hora de inicio: %s\n"
+#~ " Hora de finalización: %s\n"
+#~ " Archivos Esperados: %s\n"
+#~ " Archivos Restaurados: %s\n"
+#~ " Bytes Restaurados: %s\n"
+#~ " Tasa: %.1f KB/s\n"
+#~ " Errores de FD: %d\n"
+#~ " Estado de terminación de FD: %s\n"
+#~ " Estado de terminación de SD: %s\n"
+#~ " Terminación: %s\n"
+#~ "\n"
 
-#: 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"
+#~ msgid "Expected an equals, got: %s"
+#~ msgstr "Esperaba una igual, obtuvo: %s"
 
-#: 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"
+#~ msgid "Expect a YES or NO, got: %s"
+#~ msgstr "Esperaba un SI o NO, obtuvo:% s"
 
-#: 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"
+#~ msgid "Job level field: %s not found in run record"
+#~ msgstr "Campo nivel de Job: %s no encontrado en el registro de ejecución"
 
-#: 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"
+#~ msgid "Could not find specified Pool Resource: %s"
+#~ msgstr "No se pudo encontrar el recurso Pool especificado: %s"
 
-#: src/dird/ua_label.c:764
-#, c-format
-msgid "Label command failed for Volume %s.\n"
-msgstr "Comando Label fallido para Volumen %s.\n"
+#~ msgid "Could not find specified Storage Resource: %s"
+#~ msgstr "No se pudo encontrar el recurso Storage especificado: %s"
 
-#: src/dird/ua_label.c:802
-msgid "Could not open SD socket.\n"
-msgstr "No se pudo abrir socket SD.\n"
+#~ msgid "Could not find specified Messages Resource: %s"
+#~ msgstr "No se pudo encontrar el recurso Mensajes especificado: %s"
 
-#: 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"
+#~ msgid "expected a time period, got: %s"
+#~ msgstr "esperaba un periodo de tiempo , obtuvo: %s"
 
-#: src/dird/ua_label.c:893
-#, c-format
-msgid "Invalid Volume name: %s\n"
-msgstr "Nombre de Volumen no válido:%s\n"
+#~ msgid "Expected a keyword name, got: %s"
+#~ msgstr "Esperaba una palabra clave Tipo Name, obtuvo: %s"
 
-#: src/dird/ua_label.c:987
-#, c-format
-msgid "Device \"%s\" has %d slots.\n"
-msgstr "Dispositivo \"%s\" tiene %d ranuras.\n"
+#~ msgid "Day number out of range (1-31)"
+#~ msgstr "Numero del día fuera del rango (1-31)"
 
-#: 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"
+#~ msgid "Week number out of range (0-53)"
+#~ msgstr "Número de la Semana fuera de rango (0-53)"
 
-#: 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"
+#~ msgid "Job type field: %s in run record not found"
+#~ msgstr "Campo tipo de Job: %s no encontrado en el registro de ejecución"
 
-#: 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"
+#~ msgid "Unexpected token: %d:%s"
+#~ msgstr "Inesperado token: %d:%s"
 
-#: src/dird/ua_label.c:1251
-msgid ""
-"------+------------------+-----------+----------------------"
-"+--------------------|\n"
-msgstr ""
-"------+------------------+-----------+----------------------"
-"+--------------------|\n"
+#~ msgid "Time must be preceded by keyword AT."
+#~ msgstr "Tiempo debe ser precedido de palabra clave AT."
 
-#: src/dird/scheduler.c:112
-#, c-format
-msgid "Job %s not found\n"
-msgstr "Job %s no encontrado\n"
+#~ msgid "Time logic error.\n"
+#~ msgstr "Error lógico de tiempo.\n"
 
-#: src/dird/scheduler.c:136
-msgid "Walk queue"
-msgstr "Cola Walk"
+#~ msgid "Bad time specification."
+#~ msgstr "Mala especificación del tiempo"
 
-#: src/dird/scheduler.c:146
-msgid "Dequeued job"
-msgstr "Job desencolado"
+#~ msgid "Range logic error.\n"
+#~ msgstr "Error lógico de rango.\n"
 
-#: src/dird/scheduler.c:149
-msgid "Scheduler logic error\n"
-msgstr "Error lógico en Programador\n"
+#~ msgid "Bad day range specification."
+#~ msgstr "Mala especificación del rango día."
 
-#: src/dird/scheduler.c:190
-msgid "Run job"
-msgstr "Ejecutar Job"
+#~ msgid "Invalid month, week or position day range"
+#~ msgstr "Mes no válido, semana o rango de posición de día inválidos"
 
-#: src/dird/scheduler.c:223
-msgid "run override"
-msgstr "anular ejecutar"
+#~ msgid "Invalid month, weekday or position range"
+#~ msgstr "Mes no válido, semana o rango de posición inválidos"
 
-#: src/dird/scheduler.c:413
-msgid "Inserted job"
-msgstr "Job insertado"
+#~ msgid "Unexpected run state\n"
+#~ msgstr "Inesperado estado ejecutar\n"
 
-#: src/dird/scheduler.c:421
-msgid "Appended job"
-msgstr "Job adjunto"
+#~ msgid "Job %s not found\n"
+#~ msgstr "Job %s no encontrado\n"
 
-#: src/dird/scheduler.c:425
-msgid "Run queue"
-msgstr "Ejecutar cola"
+#~ msgid "Walk queue"
+#~ msgstr "Cola Walk"
 
-#: src/dird/run_conf.c:208
-#, c-format
-msgid "Expected an equals, got: %s"
-msgstr "Esperaba una igual, obtuvo: %s"
+#~ msgid "Dequeued job"
+#~ msgstr "Job desencolado"
 
-#: src/dird/run_conf.c:221 src/dird/run_conf.c:233 src/dird/run_conf.c:327
-#, c-format
-msgid "Expect a YES or NO, got: %s"
-msgstr "Esperaba un SI o NO, obtuvo:% s"
+#~ msgid "Scheduler logic error\n"
+#~ msgstr "Error lógico en Programador\n"
 
-#: src/dird/run_conf.c:247
-#, c-format
-msgid "Job level field: %s not found in run record"
-msgstr "Campo nivel de Job: %s no encontrado en el registro de ejecución"
+#~ msgid "Run job"
+#~ msgstr "Ejecutar Job"
 
-#: src/dird/run_conf.c:265
-#, c-format
-msgid "Could not find specified Pool Resource: %s"
-msgstr "No se pudo encontrar el recurso Pool especificado: %s"
+#~ msgid "run override"
+#~ msgstr "anular ejecutar"
 
-#: src/dird/run_conf.c:290
-#, c-format
-msgid "Could not find specified Storage Resource: %s"
-msgstr "No se pudo encontrar el recurso Storage especificado: %s"
+#~ msgid "Inserted job"
+#~ msgstr "Job insertado"
 
-#: src/dird/run_conf.c:302
-#, c-format
-msgid "Could not find specified Messages Resource: %s"
-msgstr "No se pudo encontrar el recurso Mensajes especificado: %s"
+#~ msgid "Appended job"
+#~ msgstr "Job adjunto"
 
-#: src/dird/run_conf.c:312 src/lib/parse_conf.c:736 src/lib/parse_conf.c:742
-#, c-format
-msgid "expected a time period, got: %s"
-msgstr "esperaba un periodo de tiempo , obtuvo: %s"
+#~ msgid "Run queue"
+#~ msgstr "Ejecutar cola"
 
-#: src/dird/run_conf.c:331
-#, c-format
-msgid "Expected a keyword name, got: %s"
-msgstr "Esperaba una palabra clave Tipo Name, obtuvo: %s"
+#~ msgid "Add media to a pool"
+#~ msgstr "Añadir medios a un pool"
 
-#: src/dird/run_conf.c:370
-msgid "Day number out of range (1-31)"
-msgstr "Numero del día fuera del rango (1-31)"
+#~ msgid "Autodisplay console messages"
+#~ msgstr "Autodisplay mensajes de la consola"
 
-#: src/dird/run_conf.c:387 src/dird/run_conf.c:542
-msgid "Week number out of range (0-53)"
-msgstr "Número de la Semana fuera de rango (0-53)"
+#~ msgid "Automount after label"
+#~ msgstr "Auto-montar después de etiquetar"
 
-#: src/dird/run_conf.c:403
-#, c-format
-msgid "Job type field: %s in run record not found"
-msgstr "Campo tipo de Job: %s no encontrado en el registro de ejecución"
+#~ msgid "Cancel a job"
+#~ msgstr "Cancelar un Job"
 
-#: src/dird/run_conf.c:410
-#, c-format
-msgid "Unexpected token: %d:%s"
-msgstr "Inesperado token: %d:%s"
+#~ msgid "Create DB Pool from resource"
+#~ msgstr "Crear Pool BD desde recurso"
 
-#: src/dird/run_conf.c:454
-msgid "Time must be preceded by keyword AT."
-msgstr "Tiempo debe ser precedido de palabra clave AT."
+#~ msgid "Delete volume, pool or job"
+#~ msgstr "Eliminar volumen, pool o job"
 
-#: src/dird/run_conf.c:463
-msgid "Time logic error.\n"
-msgstr "Error lógico de tiempo.\n"
+#~ msgid "Performs FileSet estimate, listing gives full listing"
+#~ msgstr "Realiza estimación FileSet, listando lista completa"
 
-#: src/dird/run_conf.c:478 src/dird/run_conf.c:497
-msgid "Bad time specification."
-msgstr "Mala especificación del tiempo"
+#~ msgid "Terminate Bconsole session"
+#~ msgstr "Terminar la sesión bconsole"
 
-#: src/dird/run_conf.c:511
-msgid "Range logic error.\n"
-msgstr "Error lógico de rango.\n"
+#~ msgid "Non-interactive gui mode"
+#~ msgstr "Modo gui no-interactivo"
 
-#: src/dird/run_conf.c:520
-msgid "Bad day range specification."
-msgstr "Mala especificación del rango día."
+#~ msgid "Print help on specific command"
+#~ msgstr "Imprimir ayuda en comandos específicos"
 
-#: src/dird/run_conf.c:567
-msgid "Invalid month, week or position day range"
-msgstr "Mes no válido, semana o rango de posición de día inválidos"
+#~ msgid "Label a tape"
+#~ msgstr "Etiquetar una cinta"
 
-#: src/dird/run_conf.c:582
-msgid "Invalid month, weekday or position range"
-msgstr "Mes no válido, semana o rango de posición inválidos"
+#~ msgid "List objects from catalog"
+#~ msgstr "Listar objetos del catálogo"
 
-#: src/dird/run_conf.c:641
-msgid "Unexpected run state\n"
-msgstr "Inesperado estado ejecutar\n"
+#~ msgid "Full or long list like list command"
+#~ msgstr "Completo o lista larga como la lista de comando"
 
-#: src/dird/ua_update.c:97
-msgid "Update choice:\n"
-msgstr "Actualizar selección:\n"
+#~ msgid "Display pending messages"
+#~ msgstr "Mostrar mensajes pendientes"
 
-#: src/dird/ua_update.c:98
-msgid "Volume parameters"
-msgstr "Parámetros del Volumen"
+#~ msgid "Print current memory usage"
+#~ msgstr "Imprimir uso de la memoria actual"
 
-#: src/dird/ua_update.c:99
-msgid "Pool from resource"
-msgstr "Pool de recursos"
+#~ msgid "Mount storage"
+#~ msgstr "Montar Storage"
 
-#: src/dird/ua_update.c:100
-msgid "Slots from autochanger"
-msgstr "Slots de cargador"
+#~ msgid "Prune expired records from catalog"
+#~ msgstr "Prunar registros expirados del catálogo"
 
-#: src/dird/ua_update.c:101
-msgid "Long term statistics"
-msgstr "Estadísticas a largo plazo"
+#~ msgid "Purge records from catalog"
+#~ msgstr "Purgar registros del catálogo"
 
-#: src/dird/ua_update.c:102
-msgid "item"
-msgstr "í­tem"
+#~ msgid "Query catalog"
+#~ msgstr "Consulta de catálogo "
 
-#: src/dird/ua_update.c:102
-msgid "Choose catalog item to update"
-msgstr "Seleccione el ítem del catalogo para ser actualizado"
+#~ msgid "Restore files"
+#~ msgstr "Restaurar Archivos"
 
-#: src/dird/ua_update.c:145
-#, c-format
-msgid "Invalid VolStatus specified: %s\n"
-msgstr "Invalido VolStatus especificado: %s\n"
+#~ msgid "Relabel a tape"
+#~ msgstr "Reetiquetar una cinta"
 
-#: src/dird/ua_update.c:154
-#, c-format
-msgid "New Volume status is: %s\n"
-msgstr "Nuevo estado del Volumen es: %s\n"
+#~ msgid "Release storage"
+#~ msgstr "Liberar Storage"
 
-#: src/dird/ua_update.c:164
-#, c-format
-msgid "Invalid retention period specified: %s\n"
-msgstr "Periodo de retención especificado no valido: %s\n"
+#~ msgid "Reload conf file"
+#~ msgstr "Recargar archivo de configuración"
 
-#: src/dird/ua_update.c:172
-#, c-format
-msgid "New retention period is: %s\n"
-msgstr "Nuevo periodo de retención es: %s\n"
+#~ msgid "Run a job"
+#~ msgstr "Ejecutar un Job"
 
-#: src/dird/ua_update.c:183
-#, c-format
-msgid "Invalid use duration specified: %s\n"
-msgstr "Duración de uso especificado no válido: %s\n"
+#~ msgid "Report status"
+#~ msgstr "Informe de estado"
 
-#: src/dird/ua_update.c:191
-#, c-format
-msgid "New use duration is: %s\n"
-msgstr "Nueva duración de uso es: %s\n"
+#, fuzzy
+#~ msgid "Stop a job"
+#~ msgstr "Ningún ultimo trabajo."
 
-#: src/dird/ua_update.c:205
-#, c-format
-msgid "New max jobs is: %s\n"
-msgstr "Nuevo máximo jobs es:  %s\n"
+#~ msgid "Sets debug level"
+#~ msgstr "Establecer el nivel de depuración"
 
-#: src/dird/ua_update.c:218
-#, c-format
-msgid "New max files is: %s\n"
-msgstr "Nuevo máximo files es:  %s\n"
+#~ msgid "Sets new client address -- if authorized"
+#~ msgstr "Establecer nueva dirección del cliente - si esta autorizado"
 
-#: src/dird/ua_update.c:229
-#, c-format
-msgid "Invalid max. bytes specification: %s\n"
-msgstr "Invalido máximo bytes especificación: %s\n"
+#~ msgid "Show resource records"
+#~ msgstr "Mostrar los registros de recursos"
 
-#: src/dird/ua_update.c:237
-#, c-format
-msgid "New Max bytes is: %s\n"
-msgstr "Nuevo máximo bytes es:  %s\n"
+#~ msgid "Use SQL to query catalog"
+#~ msgstr "usar SQL para consultar el catálogo"
 
-#: src/dird/ua_update.c:248 src/dird/ua_update.c:268
-msgid "Invalid value. It must be yes or no.\n"
-msgstr "Valor no válido. Debe ser sí o no.\n"
+#~ msgid "Print current time"
+#~ msgstr "Imprimir hora actual"
 
-#: src/dird/ua_update.c:256
-#, c-format
-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: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: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"
-
-#: src/dird/ua_update.c:276
-#, c-format
-msgid "New InChanger flag is: %s\n"
-msgstr "Nueva InChanger flag es: %s\n"
+#~ msgid "Turn on/off trace to file"
+#~ msgstr "Activar/desactivar archivo de traza"
 
-#: src/dird/ua_update.c:294
-#, c-format
-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"
+#, fuzzy
+#~ msgid "Truncate one or more Volumes"
+#~ msgstr "Creado Registro Media para Volumen: %s\n"
 
-#: 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"
+#~ msgid "Unmount storage"
+#~ msgstr "Desmonte almacenamiento"
 
-#: src/dird/ua_update.c:306
-#, c-format
-msgid "New Slot is: %d\n"
-msgstr "Nueva Ranura es: %d\n"
+#~ msgid "Umount - for old-time Unix guys, see unmount"
+#~ msgstr "Umount - para los viejos tiempos tipos de Unix, véase unmount"
 
-#: src/dird/ua_update.c:331
-#, c-format
-msgid "New Pool is: %s\n"
-msgstr "Nuevo Pool es: %s\n"
+#~ msgid "Update volume, pool or stats"
+#~ msgstr "Actualizar volumen, pool o stats"
 
-#: src/dird/ua_update.c:374
-#, c-format
-msgid "New RecyclePool is: %s\n"
-msgstr "Nuevo RecyclePool es: %s\n"
+#~ msgid "Use catalog xxx"
+#~ msgstr "Usar catálogo xxx"
 
-#: src/dird/ua_update.c:394
-#, c-format
-msgid "Error updating Volume record: ERR=%s"
-msgstr "Error actualizando registro Volumen:  ERR=%s"
+#~ msgid "Does variable expansion"
+#~ msgstr "es la variable de expansión"
 
-#: 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"
+#~ msgid "Print Director version"
+#~ msgstr "Imprimir la versión del Director"
 
-#: 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"
+#~ msgid "Wait until no jobs are running"
+#~ msgstr "Esperar hasta que no se estén ejecutando jobs"
 
-#: 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"
+#~ msgid "Can't use %s command in a runscript"
+#~ msgstr "No se puede usar comando %s en un runscript"
 
-#: 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"
+#~ msgid "%s: is an invalid command.\n"
+#~ msgstr "%s: es un comando invalido.\n"
 
-#: src/dird/ua_update.c:469
-#, c-format
-msgid "Error updating media record Enabled: ERR=%s"
-msgstr "Error actualizando registro media Activado:  ERR=%s"
+#~ msgid ""
+#~ "You probably don't want to be using this command since it\n"
+#~ "creates database records without labeling the Volumes.\n"
+#~ "You probably want to use the \"label\" command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Usted probablemente no quiere usar este comando, ya que el\n"
+#~ "crea registros en la base de datos sin etiquetar los volúmenes.\n"
+#~ "Usted probablemente desea utilizar el comando \"label\".\n"
+#~ "\n"
 
-#: src/dird/ua_update.c:472
-#, c-format
-msgid "New Enabled is: %d\n"
-msgstr "Nuevo Activado es: %d\n"
+#~ msgid "Pool already has maximum volumes=%d\n"
+#~ msgstr "Pool ya tiene volúmenes máximo=%d\n"
 
-#: 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"
+#~ msgid "Enter new maximum (zero for unlimited): "
+#~ msgstr "Introduzca nuevo máximo (cero para un número ilimitado):"
 
-#: src/dird/ua_update.c:490
-#, c-format
-msgid "New ActionOnPurge is: %s\n"
-msgstr "Nueva ActionOnPurge es: %s\n"
+#~ 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_update.c:605 src/dird/ua_run.c:222
-msgid "Parameters to modify:\n"
-msgstr "Parámetros para modificar:\n"
+#~ 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_update.c:606
-msgid "Volume Status"
-msgstr "Estado del Volumen"
+#~ msgid "Enter Volume name: "
+#~ msgstr "Introduzca nombre de Volumen:"
 
-#: src/dird/ua_update.c:607
-msgid "Volume Retention Period"
-msgstr "Periodo de Retención del Volumen"
+#~ msgid "Enter base volume name: "
+#~ msgstr "Introduzca nombre de Volumen base:"
 
-#: src/dird/ua_update.c:608
-msgid "Volume Use Duration"
-msgstr "Duración de uso del Volumen"
+#~ msgid "Volume name too long.\n"
+#~ msgstr "Nombre de Volumen demasiado largo.\n"
 
-#: src/dird/ua_update.c:609
-msgid "Maximum Volume Jobs"
-msgstr "Máximo Volumen Jobs"
+#~ 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_update.c:610
-msgid "Maximum Volume Files"
-msgstr "Máximo Archivos de Volumen"
+#~ msgid "Enter the starting number: "
+#~ msgstr "Introduzca el número inicial:"
 
-#: src/dird/ua_update.c:611
-msgid "Maximum Volume Bytes"
-msgstr "Máximo Volumen Bytes"
+#~ msgid "Start number must be greater than zero.\n"
+#~ msgstr "Número de inicio debe ser mayor que cero.\n"
 
-#: src/dird/ua_update.c:612
-msgid "Recycle Flag"
-msgstr "Recycle Flag"
+#~ msgid "Enter slot (0 for none): "
+#~ msgstr "Introduzca ranura (0 para ninguno):"
 
-#: src/dird/ua_update.c:613
-msgid "Slot"
-msgstr "Ranura"
+#~ msgid "InChanger? yes/no: "
+#~ msgstr "InChanger? si/no: "
 
-#: src/dird/ua_update.c:614
-msgid "InChanger Flag"
-msgstr "InChanger Flag"
+#~ msgid "%d Volumes created in pool %s\n"
+#~ msgstr "%d Volúmenes creados en el pool %s\n"
 
-#: src/dird/ua_update.c:615
-msgid "Volume Files"
-msgstr "Archivos de Volumen"
+#~ msgid "Turn on or off? "
+#~ msgstr "Encender o apagar?"
 
-#: src/dird/ua_update.c:617
-msgid "Volume from Pool"
-msgstr "Volumen de Pool"
+#~ msgid ""
+#~ "Can't set %s RecyclePool to %s, %s is not in database.\n"
+#~ "Try to update it with 'update pool=%s'\n"
+#~ msgstr ""
+#~ "No se puede establecer %s RecyclePool para %s, %s no está¡ en la base de "
+#~ "datos.\n"
+#~ "Intente actualizarlo con 'update pool=%s'\n"
 
-#: src/dird/ua_update.c:618
-msgid "All Volumes from Pool"
-msgstr "Todos Volúmenes de Pool"
+#~ msgid ""
+#~ "Can't set %s ScratchPool to %s, %s is not in database.\n"
+#~ "Try to update it with 'update pool=%s'\n"
+#~ msgstr ""
+#~ "No se puede establecer %s ScratchPool para %s, %s no está en la base de "
+#~ "datos.\n"
+#~ "Intente actualizarlo con 'update pool=%s'\n"
 
-#: src/dird/ua_update.c:619
-msgid "All Volumes from all Pools"
-msgstr "Todos los Volúmenes de todas los Pools"
+#~ msgid ""
+#~ "Error: Pool %s already exists.\n"
+#~ "Use update to change it.\n"
+#~ msgstr ""
+#~ "Error: Pool %s ya existe.\n"
+#~ "Use update para cambiarlo.\n"
 
-#: src/dird/ua_update.c:620
-msgid "Enabled"
-msgstr "Activado"
+#~ msgid "Pool %s created.\n"
+#~ msgstr "Pool %s creado.\n"
 
-#: src/dird/ua_update.c:621
-msgid "RecyclePool"
-msgstr "RecyclePool"
+#~ msgid "Connecting to Client %s at %s:%d\n"
+#~ msgstr "Conectando al Cliente %s en %s:%d\n"
 
-#: src/dird/ua_update.c:622
-msgid "Action On Purge"
-msgstr "Action On Purge"
+#~ msgid "Failed to connect to Client.\n"
+#~ msgstr "Fallo al conectar con el cliente.\n"
 
-#: src/dird/ua_update.c:623
-msgid "Done"
-msgstr "Hecho"
+#, fuzzy
+#~ msgid "Failed to set bandwidth limit to Client.\n"
+#~ msgstr "Fallo al conectar con el cliente.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Running Job"
+#~ msgstr ""
+#~ "\n"
+#~ "Jobs Ejecutando:\n"
 
-#: src/dird/ua_update.c:632
-#, c-format
-msgid "Updating Volume \"%s\"\n"
-msgstr "Actualizando Volumen \"%s\"\n"
+#, fuzzy
+#~ msgid "Enter new bandwidth limit kb/s: "
+#~ msgstr "Introduzca nuevo Máximo de Trabajos"
 
-#: src/dird/ua_update.c:637
-#, c-format
-msgid "Current Volume status is: %s\n"
-msgstr "Actual estado del Volumen es: %s\n"
+#~ msgid "Unauthorized command from this console.\n"
+#~ msgstr "Comando no autorizado desde esta consola.\n"
 
-#: src/dird/ua_update.c:638
-msgid "Possible Values are:\n"
-msgstr "Posibles Valores son:\n"
+#~ msgid "Client \"%s\" not found.\n"
+#~ msgstr "Cliente \"%s\" no encontrado.\n"
 
-#: src/dird/ua_update.c:649
-msgid "Choose new Volume Status"
-msgstr "Seleccione el nuevo estado del Volumen"
+#~ msgid "Client \"%s\" address set to %s\n"
+#~ msgstr "Cliente \"%s\" dirección configurada para %s\n"
 
-#: src/dird/ua_update.c:655
-#, c-format
-msgid "Current retention period is: %s\n"
-msgstr "Actual periodo de retención es: %s\n"
+#~ msgid "Job \"%s\" not found.\n"
+#~ msgstr "Job \"%s\" no encontrado.\n"
 
-#: src/dird/ua_update.c:657
-msgid "Enter Volume Retention period: "
-msgstr "Introduzca periodo de Retención del Volumen:"
+#~ msgid "Job \"%s\" %sabled\n"
+#~ msgstr "Job \"%s\" %sabled\n"
 
-#: src/dird/ua_update.c:664
-#, c-format
-msgid "Current use duration is: %s\n"
-msgstr "Duración de uso actual es: %s\n"
+#~ msgid "Connecting to Storage daemon %s at %s:%d\n"
+#~ msgstr "Conectando al demonio Storage %s en %s:%d\n"
 
-#: src/dird/ua_update.c:666
-msgid "Enter Volume Use Duration: "
-msgstr "Introduzca Duración de Uso de Volumen:"
+#~ msgid "Connected to storage daemon\n"
+#~ msgstr "Conectado al demonio Storage\n"
 
-#: src/dird/ua_update.c:673
-#, c-format
-msgid "Current max jobs is: %u\n"
-msgstr "Máximo jobs actual es: %u\n"
+#~ msgid "Enter new debug level: "
+#~ msgstr "Introduzca el nuevo nivel de depuración:"
 
-#: src/dird/ua_update.c:674
-msgid "Enter new Maximum Jobs: "
-msgstr "Introduzca nuevo Máximo de Trabajos"
+#~ msgid "Available daemons are: \n"
+#~ msgstr "Demonios disponible son: \n"
 
-#: src/dird/ua_update.c:681
-#, c-format
-msgid "Current max files is: %u\n"
-msgstr "Actual máximo de archivos es: %u\n"
+#~ msgid "Director"
+#~ msgstr "Director"
 
-#: src/dird/ua_update.c:682
-msgid "Enter new Maximum Files: "
-msgstr "Introduzca nuevo máximo de archivos:"
+#~ msgid "Storage"
+#~ msgstr "Storage"
 
-#: src/dird/ua_update.c:689
-#, c-format
-msgid "Current value is: %s\n"
-msgstr "Valor actual es: %s\n"
+#~ msgid "Client"
+#~ msgstr "Client"
 
-#: src/dird/ua_update.c:690
-msgid "Enter new Maximum Bytes: "
-msgstr "Introduzca nuevo Máximo de Bytes:"
+#~ msgid "All"
+#~ msgstr "All"
 
-#: src/dird/ua_update.c:698
-#, c-format
-msgid "Current recycle flag is: %s\n"
-msgstr "Recycle flag actual es: %s\n"
+#~ msgid "Select daemon type to set debug level"
+#~ msgstr ""
+#~ "Seleccione el tipo de Demonio para establecer el nivel de depuración"
 
-#: src/dird/ua_update.c:700
-msgid "Enter new Recycle status: "
-msgstr "Introduzca el nuevo estado de Reciclaje:"
+#~ msgid "No authorization for Client \"%s\"\n"
+#~ msgstr "No autorización para Cliente \"%s\"\n"
 
-#: src/dird/ua_update.c:707
-#, c-format
-msgid "Current Slot is: %d\n"
-msgstr "Ranura Actual es: %d\n"
+#~ msgid "Client name missing.\n"
+#~ msgstr "Falta el nombre del cliente.\n"
 
-#: src/dird/ua_update.c:708
-msgid "Enter new Slot: "
-msgstr "Introduzca nueva Ranura:"
+#~ msgid "No authorization for Job \"%s\"\n"
+#~ msgstr "No autorización para Job \"%s\"\n"
 
-#: src/dird/ua_update.c:715
-#, c-format
-msgid "Current InChanger flag is: %d\n"
-msgstr "Bandera InChanger actual es: %d\n"
+#~ msgid "Job name missing.\n"
+#~ msgstr "Falta el nombre del Job.\n"
 
-#: 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: "
+#~ msgid "Fileset \"%s\" not found.\n"
+#~ msgstr "FileSet \"%s\" no encontrado.\n"
 
-#: src/dird/ua_update.c:730
-#, c-format
-msgid "New InChanger flag is: %d\n"
-msgstr "Nueva InChanger flag es: %d\n"
+#~ msgid "No authorization for FileSet \"%s\"\n"
+#~ msgstr "No autorización para FileSet \"%s\"\n"
 
-#: src/dird/ua_update.c:737
-msgid ""
-"Warning changing Volume Files can result\n"
-"in loss of data on your Volume\n"
-"\n"
-msgstr ""
-"Advertencia, cambiar Archivos de Volumen puede resultar\n"
-"en pérdida de datos en el Volumen\n"
-"\n"
+#~ msgid "Fileset name missing.\n"
+#~ msgstr "Falta Nombre del Fileset.\n"
 
-#: src/dird/ua_update.c:739
-#, c-format
-msgid "Current Volume Files is: %u\n"
-msgstr "Archivos de Volumen actual es: %u\n"
+#~ msgid "Level \"%s\" not valid.\n"
+#~ msgstr "Nivel \"%s\" no es válido.\n"
 
-#: 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:"
+#~ msgid "Level value missing.\n"
+#~ msgstr "Valor del nivel ausente.\n"
 
-#: 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"
+#~ 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_update.c:746
-msgid "Increase Volume Files? (yes/no): "
-msgstr "Incrementar Archivo de Volumen? (sí/no):"
+#, fuzzy
+#~ msgid "Accurate value missing.\n"
+#~ msgstr "Valor del nivel ausente.\n"
 
-#: src/dird/ua_update.c:756
-#, c-format
-msgid "New Volume Files is: %u\n"
-msgstr "Nuevo Archivo de Volumen es: %u\n"
+#~ msgid "No job specified.\n"
+#~ msgstr "Job no especificado.\n"
 
-#: src/dird/ua_update.c:768
-#, c-format
-msgid "Current Pool is: %s\n"
-msgstr "Pool actual es: %s\n"
+#~ msgid "Error sending include list.\n"
+#~ msgstr "Error al enviar lista incluir.\n"
 
-#: src/dird/ua_update.c:769
-msgid "Enter new Pool name: "
-msgstr "Introduzca el nuevo nombre del Pool:"
+#~ msgid "Error sending exclude list.\n"
+#~ msgstr "Error al enviar lista excluir.\n"
 
-#: src/dird/ua_update.c:790
-#, c-format
-msgid "Current Enabled is: %d\n"
-msgstr "Habilitado(Enabled) actual es: %d\n"
+#~ 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 ""
+#~ "En general, esto no es una buena idea para eliminar un\n"
+#~ "Pool o un Volumen ya que pueden contener datos.\n"
+#~ "\n"
 
-#: src/dird/ua_update.c:791
-msgid "Enter new Enabled: "
-msgstr "Introduzca nuevo Habilitado(Enabled):"
+#~ msgid "Choose catalog item to delete"
+#~ msgstr "Seleccione el ítem del catalogo para eliminar"
 
-#: src/dird/ua_update.c:810
-#, c-format
-msgid "Current RecyclePool is: %s\n"
-msgstr "RecyclePool actual es: %s\n"
+#~ msgid "Nothing done.\n"
+#~ msgstr "Nada hecho.\n"
 
-#: src/dird/ua_update.c:812
-msgid "No current RecyclePool\n"
-msgstr "No actual RecyclePool\n"
+#, fuzzy
+#~ 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_update.c:822
-#, c-format
-msgid "Current ActionOnPurge is: %s\n"
-msgstr "Actual ActionOnPurge es: %s\n"
+#~ msgid "Enter JobId to delete: "
+#~ msgstr "Introduzca jobId para eliminar:"
 
-#: src/dird/ua_update.c:824
-msgid "Enter new ActionOnPurge (one of: Truncate, None): "
-msgstr "Introduzca nuevo ActionOnPurge (uno de: Truncar, Ninguno):"
+#, fuzzy
+#~ 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_update.c:832
-msgid "Selection terminated.\n"
-msgstr "Selección terminada.\n"
+#~ msgid ""
+#~ "\n"
+#~ "This command will delete volume %s\n"
+#~ "and all Jobs saved on that volume from the Catalog\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Este comando eliminara los volúmenes %s\n"
+#~ "y todos los Jobs guardados en este volumen desde el Catalogo\n"
 
-#: src/dird/ua_update.c:852
-#, c-format
-msgid "Updating %i job(s).\n"
-msgstr "Actualizando %i job(s).\n"
+#~ 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_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"
+#~ 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_update.c:891
-msgid "Pool DB record updated from resource.\n"
-msgstr "registro BD Pool actualizado desde recursos.\n"
+#~ msgid "Using Catalog name=%s DB=%s\n"
+#~ msgstr "Utilizando Catalogo nombre=%s BD=%s\n"
 
-#: src/dird/ua_update.c:918
-msgid "Expect JobId keyword, not found.\n"
-msgstr "Esperaba palabra clave JobId, no encontrada.\n"
+#~ msgid "ERR: Can't open db\n"
+#~ msgstr "ERR: No se puede abrir db\n"
 
-#: src/dird/ua_update.c:943
-msgid "Neither Client nor StartTime specified.\n"
-msgstr "Ni el Cliente ni StartTime especificado.\n"
+#~ msgid "Wait on mount timed out\n"
+#~ msgstr "Tiempo agotado en esperar mount \n"
 
-#: src/dird/migrate.c:149 src/dird/migrate.c:163
-#, c-format
-msgid "No previous Job found to %s.\n"
-msgstr "Ninguno Job previo encontrado para %s.\n"
+#~ msgid "ERR: Job was not found\n"
+#~ msgstr "ERR: Job no se ha encontrado\n"
 
-#: src/dird/migrate.c:155
-msgid "Create bootstrap file failed.\n"
-msgstr "Fallo crear archivo bootstrap.\n"
+#~ msgid ""
+#~ "  Command       Description\n"
+#~ "  =======       ===========\n"
+#~ msgstr ""
+#~ "Comando Descripción\n"
+#~ " ======== ==============\n"
 
-#: src/dird/migrate.c:165
-#, c-format
-msgid "Previous Job has no data to %s.\n"
-msgstr "Job anterior no tiene datos para %s.\n"
+#~ msgid ""
+#~ "  %-13s %s\n"
+#~ "\n"
+#~ "Arguments:\n"
+#~ "\t%s\n"
+#~ msgstr ""
+#~ "%-13s %s\n"
+#~ "\n"
+#~ "Argumentos:\n"
+#~ "\t%s\n"
 
-#: src/dird/migrate.c:182
-#, c-format
-msgid "Job resource not found for \"%s\".\n"
-msgstr "Recurso Job no encontrado para \"%s\".\n"
+#~ msgid "  %-13s %s\n"
+#~ msgstr " %-13s %s\n"
 
-#: src/dird/migrate.c:186
-#, c-format
-msgid "Previous Job resource not found for \"%s\".\n"
-msgstr "Recurso Job anterior no encontrado para \"%s\".\n"
+#~ msgid ""
+#~ "\n"
+#~ "Can't find %s command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "No se puede encontrar comando %s. \n"
+#~ "\n"
 
-#: src/dird/migrate.c:203
-msgid "setup job failed.\n"
-msgstr "Configuración del job fallida.\n"
+#~ msgid ""
+#~ "\n"
+#~ "When at a prompt, entering a period cancels the command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Cuando en un prompt, entrando un período cancela el comando.\n"
+#~ "\n"
 
-#: src/dird/migrate.c:258
-#, c-format
-msgid "Pool for JobId %s not in database. ERR=%s\n"
-msgstr "Pool para JobId %s no esta en base de datos. ERR=%s\n"
+#~ msgid "%s Version: %s (%s) %s %s %s %s\n"
+#~ msgstr "%s Versión: %s (%s) %s %s %s %s\n"
 
-#: src/dird/migrate.c:266
-#, c-format
-msgid "Pool resource \"%s\" not found.\n"
-msgstr "Recurso Pool \"%s\" no encontrado.\n"
+#~ msgid "No authorization for Catalog \"%s\"\n"
+#~ msgstr "No autorización para Catalogo \"%s\"\n"
 
-#: 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"
+#~ msgid "Could not find a Catalog resource\n"
+#~ msgstr "No pudo encontrar un Catalogo de recursos\n"
 
-#: src/dird/migrate.c:327
-#, c-format
-msgid "JobId %s already %s probably by another Job. %s stopped.\n"
-msgstr "JobId %s ya %s probablemente por otro Job. %s detenido.\n"
+#~ msgid "Could not open catalog database \"%s\".\n"
+#~ msgstr "No se pudo abrir la base de datos de catálogo \"%s\".\n"
 
-#: src/dird/migrate.c:337
-#, c-format
-msgid "Start %s JobId %s, Job=%s\n"
-msgstr "Inicio %s JobId %s, Job=%s\n"
+#~ msgid "Using Catalog \"%s\"\n"
+#~ msgstr "Usando Catalogo \"%s\"\n"
 
-#: 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"
+#~ msgid ": is an invalid command.\n"
+#~ msgstr ": es un comando inválido.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unable to get Job record for Job=%s\n"
+#~ msgstr "No se puede obtener el registro Job para JobId=%s: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unable to get last Job record for Job=%s\n"
+#~ msgstr "No se puede obtener el registro Job para JobId=%s: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unable to get Client record for Client=%s\n"
+#~ msgstr "Creado registro Cliente para Cliente: %s\n"
 
-#: src/dird/migrate.c:837
-#, c-format
-msgid "Unknown %s Selection Type.\n"
-msgstr "Tipo de selección %s desconocido.\n"
+#, fuzzy
+#~ msgid "Unable to get last Job record for Client=%s\n"
+#~ msgstr "No se pudo obtener registro de Job. ERR=%s\n"
 
-#: 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"
+#~ 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/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"
+#, fuzzy
+#~ msgid "Unknown command: %s\n"
+#~ msgstr "Comando desconocido."
 
-#: src/dird/migrate.c:853
-msgid " was"
-msgstr "era"
+#~ msgid "Select daemon type to make die"
+#~ msgstr "Seleccione tipo de demonio para matar"
 
-#: src/dird/migrate.c:853
-msgid "s were"
-msgstr "s eran"
+#, fuzzy
+#~ msgid "The Director will generate a deadlock.\n"
+#~ msgstr "El Director tendrá una violación de segmento.\n"
 
-#: src/dird/migrate.c:905
-#, c-format
-msgid "%s using JobId=%s Job=%s\n"
-msgstr "%s utilizando JobId=%s Job=%s\n"
+#~ msgid "The Director will segment fault.\n"
+#~ msgstr "El Director tendrá una violación de segmento.\n"
 
-#: src/dird/migrate.c:939
-msgid "Could not start migration job.\n"
-msgstr "No se pudo arrancar el Job de migración.\n"
+#~ msgid "Access to specified Client or FileSet not allowed.\n"
+#~ msgstr "El acceso a determinado Cliente o FileSet no permitido.\n"
 
-#: src/dird/migrate.c:941
-#, c-format
-msgid "%s JobId %d started.\n"
-msgstr "%s JobId %d iniciado.\n"
+#~ msgid "Query failed: %s. ERR=%s\n"
+#~ msgstr "Consulta fallida: %s. ERR=%s\n"
 
-#: src/dird/migrate.c:960
-#, c-format
-msgid "No %s found to %s.\n"
-msgstr "Ninguno %s encontrado para %s.\n"
+#~ msgid "query keyword not found.\n"
+#~ msgstr "consulta de palabra clave no encontrada.\n"
 
-#: 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"
+#~ msgid "List MediaType failed: ERR=%s\n"
+#~ msgstr "Fallo al listar MediaType: ERR=%s\n"
 
-#: 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"
+#~ msgid "List Media failed: ERR=%s\n"
+#~ msgstr "Fallo al listar Media: ERR=%s\n"
 
-#: 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)"
+#~ msgid "List Location failed: ERR=%s\n"
+#~ msgstr "Fallo al listar Ubicación: ERR=%s\n"
 
-#: 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"
+#~ msgid "Enter slot"
+#~ msgstr "Introduzca ranura"
 
-#: 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"
+#~ msgid "Expected a positive integer, got: %s\n"
+#~ msgstr "Esperaba un número entero positivo, obtuvo: %s\n"
 
-#: 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"
+#~ msgid "Invalid response. You must answer yes or no.\n"
+#~ msgstr "Respuesta no válida. Usted tiene que contestar sí o no.\n"
 
-#: 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"
+#~ msgid "Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"
+#~ msgstr "Inválido valor Habilitado, debe ser sí, no, archivado, 0, 1 o 2\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Illegal character \"%c\" in a comment.\n"
+#~ msgstr "Carácter ilegal \"%c\" en el nombre.\n"
 
-#: src/dird/migrate.c:1265
-#, c-format
-msgid "%s OK -- with warnings"
-msgstr "%s OK -- con alertas"
+#, fuzzy
+#~ msgid "Comment too long.\n"
+#~ msgstr "Nombre demasiado largo.\n"
 
-#: src/dird/migrate.c:1267
-#, c-format
-msgid "%s OK"
-msgstr "%s OK"
+#, fuzzy
+#~ msgid "Comment 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/migrate.c:1272
-#, c-format
-msgid "*** %s Error ***"
-msgstr "*** %s Error ***"
+#~ msgid "Negative numbers not permitted\n"
+#~ msgstr "Números negativos no permitidos.\n"
 
-#: src/dird/migrate.c:1282
-#, c-format
-msgid "%s Canceled"
-msgstr "%s Cancelado"
+#~ msgid "Range end is not integer.\n"
+#~ msgstr "Rango final no es entero.\n"
 
-#: src/dird/migrate.c:1291
-#, c-format
-msgid "Inappropriate %s term code"
-msgstr "Inadecuado código de terminación %s"
+#~ msgid "Range start is not an integer.\n"
+#~ msgstr "Rango inicial no es entero.\n"
 
-#: src/dird/migrate.c:1301
-#, c-format
-msgid "%s -- no files to %s"
-msgstr "%s -- ninguno archivo para %s"
+#~ msgid "Range end not bigger than start.\n"
+#~ msgstr "Rango final no más grande que inicial.\n"
 
-#: src/dird/migrate.c:1316
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  Prev Backup JobId:      %s\n"
-"  Prev Backup Job:        %s\n"
-"  New Backup JobId:       %s\n"
-"  Current JobId:          %s\n"
-"  Current Job:            %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Read Pool:              \"%s\" (From %s)\n"
-"  Read Storage:           \"%s\" (From %s)\n"
-"  Write Pool:             \"%s\" (From %s)\n"
-"  Write Storage:          \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s %s (%s): %s\n"
-" Build OS: %s %s %s\n"
-" Prev Respaldo JobId: %s\n"
-" Job anterior de Respaldo: %s\n"
-" Nuevo JobId de Respaldo: %s\n"
-" JobId Actual: %s\n"
-" Job Actual: %s\n"
-" Nivel de Respaldo: %s%s\n"
-" Cliente: %s\n"
-" FileSet: \"%s\" %s\n"
-" Pool Lectura: \"%s\" (Desde %s)\n"
-" Storage Lectura: \"%s\" (Desde %s)\n"
-" Pool Escritura: \"%s\" (Desde %s)\n"
-" Storage Escritura: \"%s\" (Desde %s)\n"
-" Catalogo: \"%s\" (Desde %s)\n"
-" Hora de inicio: %s\n"
-" Hora de finalización: %s\n"
-" Tiempo transcurrido: %s\n"
-" Prioridad: %d\n"
-" SD Archivos Escritos: %s\n"
-" SD Bytes Escritos: %s (%sB)\n"
-" Tasa: %.1f KB/s\n"
-" Nombre del Volumen(es): %s\n"
-" Id de Sesión de Volumen: %d\n"
-" Tiempo de Sesión de Volumen: %d\n"
-" Ultimo Bytes del  Volumen: %s (%sB)\n"
-" Errores del SD: %d\n"
-" Estado de terminación del SD: %s\n"
-" Terminación: %s\n"
-"\n"
+#~ msgid "Input value is not an integer.\n"
+#~ msgstr "Valor de entrada no es un entero.\n"
 
-#: 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"
+#~ msgid "Values must be be greater than zero.\n"
+#~ msgstr "Los valores deben ser ser mayor que cero.\n"
 
-#: 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"
+#~ msgid "Slot too large.\n"
+#~ msgstr "Ranura demasiado grande.\n"
 
-#: src/dird/migrate.c:1439
-msgid "Storage from Pool's NextPool resource"
-msgstr "Storage desde recurso Pool's NextPool "
+#~ msgid "command line"
+#~ msgstr "línea de comandos"
 
-#: src/dird/ua_prune.c:127
-msgid "Choose item to prune"
-msgstr "Elija el ítem para podar"
+#~ msgid "No slots in changer to scan.\n"
+#~ msgstr "No hay ranuras en cambiador para analizar.\n"
 
-#: 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"
+#~ 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_prune.c:217
-msgid "Pruned Jobs from JobHisto catalog.\n"
-msgstr "Podar Jobs del catálogo JobHisto.\n"
+#~ msgid "Slot %d greater than max %d ignored.\n"
+#~ msgstr "Ranura %d mayor que el máximo %d ignorado.\n"
 
-#: src/dird/ua_prune.c:305
-#, fuzzy
-msgid "Begin pruning Files.\n"
-msgstr "Comenzar poda de Archivos.\n"
+#~ 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_prune.c:320
-msgid "No Files found to prune.\n"
-msgstr "No se encontraron archivos para podar.\n"
+#~ 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_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"
+#~ 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_prune.c:489
-#, fuzzy, c-format
-msgid "Begin pruning Jobs older than %s.\n"
-msgstr "Comenzar poda de Jobs.\n"
+#~ 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_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"
+#~ msgid ""
+#~ "Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
+#~ "relabeling.\n"
+#~ msgstr ""
+#~ "Volumen \"%s\" hay VolStatus %s. Debe ser purgado o reciclado antes de "
+#~ "volver a etiquetar.\n"
 
-#: src/dird/ua_prune.c:601
-msgid "Jobs"
-msgstr "Jobs"
+#~ msgid "Enter new Volume name: "
+#~ msgstr "Introduzca el nuevo nombre de Volumen:"
 
-#: src/dird/ua_prune.c:603
-msgid "No Jobs found to prune.\n"
-msgstr "No encontraron Jobs para podar.\n"
+#~ msgid "Media record for new Volume \"%s\" already exists.\n"
+#~ msgstr "Registro de Medios para nuevo volumen \"%s\" ya existe.\n"
 
-#: src/dird/autoprune.c:75
-msgid ""
-"End auto prune.\n"
-"\n"
-msgstr ""
-"Fin auto podar(prune).\n"
-"\n"
+#~ msgid "Enter slot (0 or Enter for none): "
+#~ msgstr "Introduzca ranura (0 o Enter para ninguno):"
 
-#: src/dird/ua_run.c:154
-msgid "OK to run? (yes/mod/no): "
-msgstr "OK para ejecutar? (si/mod/no): "
+#~ msgid "Delete of Volume \"%s\" failed. ERR=%s"
+#~ msgstr "Fallo al eliminar el Volumen \"%s\". ERR=%s"
 
-#: src/dird/ua_run.c:193
-msgid "Job failed.\n"
-msgstr "Job fallido.\n"
+#~ msgid "Old volume \"%s\" deleted from catalog.\n"
+#~ msgstr "Antiguo volumen \"%s\" borrado del catalogo.\n"
 
-#: src/dird/ua_run.c:196
-#, c-format
-msgid "Job queued. JobId=%s\n"
-msgstr "Cola de Job. JobId=%s\n"
+#~ msgid "Requesting to mount %s ...\n"
+#~ msgstr "Solicitando para montar %s ...\n"
 
-#: 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:223
-msgid "Level"
-msgstr "Level"
-
-#: src/dird/ua_run.c:228
-msgid "Restore Client"
-msgstr "Restaurar Client"
-
-#: 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: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:240
-msgid "Verify Job"
-msgstr "Verificar Job"
-
-#: 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: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:245
-msgid "File Relocation"
-msgstr "Reubicar Archivo"
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:1907
-#: src/wx-console/wxbrestorepanel.cpp:1908
-#: src/wx-console/wxbrestorepanel.cpp:1909
-msgid "Replace"
-msgstr "Reemplazar"
-
-#: src/dird/ua_run.c:247
-msgid "JobId"
-msgstr "JobId"
-
-#: src/dird/ua_run.c:250
-msgid "Plugin Options"
-msgstr "Opciones de Plug-in"
-
-#: 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: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)"
+#~ msgid "Do not forget to mount the drive!!!\n"
+#~ msgstr "No se olvide de montar la unidad!!!\n"
 
-#: 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"
+#~ msgid ""
+#~ "The following Volumes will be labeled:\n"
+#~ "Slot  Volume\n"
+#~ "==============\n"
+#~ msgstr ""
+#~ "Los siguientes volúmenes serán etiquetados:\n"
+#~ "Ranura Volumen\n"
+#~ "==============\n"
 
-#: src/dird/ua_run.c:308
-msgid "Enter new Priority: "
-msgstr "Introduzca nueva prioridad:"
+#~ msgid "Do you want to label these Volumes? (yes|no): "
+#~ msgstr "¿Quieres etiquetar estos volúmenes? (sí | no):"
 
-#: src/dird/ua_run.c:312
-msgid "Priority must be a positive integer.\n"
-msgstr "Prioridad debe ser un entero positivo.\n"
+#~ 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_run.c:333
-msgid "Please enter the Bootstrap file name: "
-msgstr "Por favor, introduzca nombre de archivo Bootstrap:"
+#~ msgid "Error setting InChanger: ERR=%s"
+#~ msgstr "Error al configurar InChanger: ERR =% s"
 
-#: 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"
+#~ msgid "Maximum pool Volumes=%d reached.\n"
+#~ msgstr "Máximo pool Volúmenes=%d alcanzado.\n"
 
-#: 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):"
+#~ 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_run.c:386
-msgid "Replace:\n"
-msgstr "Reemplazar:\n"
+#~ msgid "Catalog error on cleaning tape: %s"
+#~ msgstr "Error de catálogo en la limpieza de la cinta: %s"
 
-#: src/dird/ua_run.c:390
-msgid "Select replace option"
-msgstr "Seleccione la opción sustituir"
+#~ msgid "Illegal character \"%c\" in a volume name.\n"
+#~ msgstr "Ilegal carácter \"%c\" en un nombre de volumen.\n"
 
-#: 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"
+#~ msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
+#~ msgstr "Enviando comando relabel desde \"%s\" para \"%s\" ...\n"
 
-#: src/dird/ua_run.c:406
-msgid "Please Plugin Options string: "
-msgstr "Por favor, cadena de Opciones de Plugin:"
+#~ msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
+#~ msgstr "Enviando comando relabel para Volumen \"%s\" Ranura %d ...\n"
 
-#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
-msgid "User input"
-msgstr "Entrada del usuario"
+#~ 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_run.c:507
-#, c-format
-msgid "Invalid replace option: %s\n"
-msgstr "Opción replace no valida: %s\n"
+#~ msgid "Label command failed for Volume %s.\n"
+#~ msgstr "Comando Label fallido para Volumen %s.\n"
 
-#: 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"
+#~ msgid "Could not open SD socket.\n"
+#~ msgstr "No se pudo abrir socket SD.\n"
 
-#: src/dird/ua_run.c:592
-msgid "This will replace your current Where value\n"
-msgstr "Este sustituirá a su actual valor Donde\n"
+#~ msgid "Invalid Slot number: %s\n"
+#~ msgstr "Número de Ranura no válido:%s\n"
 
-#: src/dird/ua_run.c:593
-msgid "Strip prefix"
-msgstr "Eliminar prefijo"
+#~ msgid "Invalid Volume name: %s\n"
+#~ msgstr "Nombre de Volumen no válido:%s\n"
 
-#: src/dird/ua_run.c:594
-msgid "Add prefix"
-msgstr "Añadir prefijo"
+#~ msgid "Device \"%s\" has %d slots.\n"
+#~ msgstr "Dispositivo \"%s\" tiene %d ranuras.\n"
 
-#: src/dird/ua_run.c:595
-msgid "Add file suffix"
-msgstr "Añadir sufijo de archivo"
+#~ msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
+#~ msgstr "Recurso Pool \"%s\" no encontrado para volumen \"%s\"!\n"
 
-#: src/dird/ua_run.c:596
-msgid "Enter a regexp"
-msgstr "Introduzca una expresión regular"
+#~ msgid "No Volumes found, or no barcodes.\n"
+#~ msgstr "Volúmenes no encontrados, o no códigos de barras.\n"
 
-#: src/dird/ua_run.c:597
-msgid "Test filename manipulation"
-msgstr "Prueba de la manipulación de nombre de archivo"
+#~ msgid ""
+#~ " Slot |   Volume Name    |   Status  |     Media Type       |      "
+#~ "Pool          |\n"
+#~ msgstr "Ranura | Nombre Volumen | Estado | Tipo de Media | Pool |\n"
 
-#: src/dird/ua_run.c:598
-msgid "Use this ?"
-msgstr "Usar esto ?"
+#~ msgid ""
+#~ "------+------------------+-----------+----------------------"
+#~ "+--------------------|\n"
+#~ msgstr ""
+#~ "------+------------------+-----------+----------------------"
+#~ "+--------------------|\n"
 
-#: 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:"
+#~ msgid "ON or OFF keyword missing.\n"
+#~ msgstr "Faltan palabra clave ON u OFF.\n"
 
-#: 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):"
+#~ msgid "Disabled Jobs:\n"
+#~ msgstr "Jobs Deshabilitados:\n"
 
-#: 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:"
+#~ msgid "No disabled Jobs.\n"
+#~ msgstr "Ningún Jobs Deshabilitado.\n"
 
-#: 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!):"
+#~ msgid "disabled"
+#~ msgstr "deshabilitado"
 
-#: src/dird/ua_run.c:642
-#, c-format
-msgid "regexwhere=%s\n"
-msgstr "regexdonde=%s\n"
+#~ msgid "Keywords for the show command are:\n"
+#~ msgstr "Palabras clave para el comando show son:\n"
 
-#: 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"
+#~ msgid "%s resource %s not found.\n"
+#~ msgstr "%s recurso %s no encontrado.\n"
 
-#: src/dird/ua_run.c:655
-msgid "Cannot use your regexp\n"
-msgstr "No se pudo utilizar su regexp\n"
+#~ msgid "Resource %s not found\n"
+#~ msgstr "Recursos %s no encontrado\n"
 
-#: src/dird/ua_run.c:658
-msgid "Enter a period (.) to stop this test\n"
-msgstr ""
+#~ msgid "Hey! DB is NULL\n"
+#~ msgstr "Hey! BD esta VACÍA\n"
 
-#: src/dird/ua_run.c:659
-msgid "Please enter filename to test: "
-msgstr "Por favor, introduzca el nombre de archivo de prueba:"
+#~ msgid "Jobid %d used %d Volume(s): %s\n"
+#~ msgstr "Jobid %d usado %d Volumen(s): %s\n"
 
-#: src/dird/ua_run.c:661
-#, c-format
-msgid "%s -> %s\n"
-msgstr "%s -> %s\n"
-
-#: 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:718 src/dird/ua_run.c:748
-msgid "Levels:\n"
-msgstr "Niveles:\n"
-
-#: 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: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: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: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:724
-msgid "VirtualFull"
-msgstr "VirtualFull"
-
-#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
-msgid "Select level"
-msgstr "Seleccionar Nivel"
-
-#: src/dird/ua_run.c:749
-msgid "Initialize Catalog"
-msgstr "Iniciar Catálogo"
-
-#: 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:751 src/lib/util.c:444
-msgid "Verify Volume to Catalog"
-msgstr "Verificar volumen de catalogo"
-
-#: 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:753
-msgid "Verify Volume Data (not yet implemented)"
-msgstr "Verificar volumen de datos (aún no implementado)"
-
-#: 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:805
-#, fuzzy, c-format
-msgid ""
-"Run Admin Job\n"
-"JobName:  %s\n"
-"FileSet:  %s\n"
-"Client:   %s\n"
-"Storage:  %s\n"
-"When:     %s\n"
-"Priority: %d\n"
-msgstr ""
-"Ejecutar %s job\n"
-"JobName: %s\n"
-"FileSet: %s\n"
-"Cliente: %s\n"
-"Storage: %s\n"
-"Cuando: %s\n"
-"Prioridad: %d\n"
-
-#: src/dird/ua_run.c:849
-#, fuzzy, c-format
-msgid ""
-"Run Backup job\n"
-"JobName:  %s\n"
-"Level:    %s\n"
-"Client:   %s\n"
-"FileSet:  %s\n"
-"Pool:     %s (From %s)\n"
-"Storage:  %s (From %s)\n"
-"When:     %s\n"
-"Priority: %d\n"
-"%s%s%s"
-msgstr ""
-"Ejecutar %s job\n"
-"Nombre del Job: %s\n"
-"Nivel: %s\n"
-"Cliente: %s\n"
-"FileSet: %s\n"
-"Pool: %s (Desde %s)\n"
-"Storage: %s (Desde %s)\n"
-"Cuando: %s\n"
-"Prioridad: %d\n"
-"%s%s%s"
-
-#: 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"
+#~ msgid "No Pool specified.\n"
+#~ msgstr "Ningún Pool especificado.\n"
 
-#: src/dird/ua_run.c:919
-#, fuzzy, c-format
-msgid ""
-"Run Verify Job\n"
-"JobName:     %s\n"
-"Level:       %s\n"
-"Client:      %s\n"
-"FileSet:     %s\n"
-"Pool:        %s (From %s)\n"
-"Storage:     %s (From %s)\n"
-"Verify Job:  %s\n"
-"Verify List: %s\n"
-"When:        %s\n"
-"Priority:    %d\n"
-msgstr ""
-"Ejecutar %s job\n"
-"JobName: %s\n"
-"Level: %s\n"
-"Cliente: %s\n"
-"FileSet: %s\n"
-"Pool: %s (Desde %s)\n"
-"Storage: %s (Desde %s)\n"
-"Verify Job: %s\n"
-"Verify List: %s\n"
-"Cuando: %s\n"
-"Prioridad: %d\n"
-
-#: 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:988
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"RegexWhere:      %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-"Ejecutar Job de Restauración\n"
-"Nombre del Job: %s\n"
-"Bootstrap: %s\n"
-"RegexWhere: %s\n"
-"Reemplazar: %s\n"
-"FileSet: %s\n"
-"Cliente de Respaldo: %s\n"
-"Cliente de Restauración: %s\n"
-"Storage: %s\n"
-"Cuando: %s\n"
-"Catalogo: %s\n"
-"Prioridad: %d\n"
-"Opciones de Plugin: %s\n"
-
-#: src/dird/ua_run.c:1044
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"Where:           %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-"Ejecutar Job de Restauración\n"
-"Nombre del Job: %s\n"
-"Bootstrap: %s\n"
-"Donde: %s\n"
-"Reemplazar: %s\n"
-"FileSet: %s\n"
-"Respaldo Cliente: %s\n"
-"Restaurar Cliente: %s\n"
-"Storage: %s\n"
-"Cuando: %s\n"
-"Catalogo: %s\n"
-"Prioridad: %d\n"
-"Opciones de Plugin: %s\n"
-
-#: src/dird/ua_run.c:1075
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:    %s\n"
-"Bootstrap:  %s\n"
-msgstr ""
-"Ejecutar Job Restaurar\n"
-"JobName: %s\n"
-"Bootstrap: %s\n"
+#~ msgid "Error obtaining pool ids. ERR=%s\n"
+#~ msgstr "Error al obteniendo pool ids. ERR=%s\n"
 
-#: src/dird/ua_run.c:1083
-#, c-format
-msgid "RegexWhere: %s\n"
-msgstr "RegexWhere: %s\n"
+#~ msgid "Pool: %s\n"
+#~ msgstr "Pool: %s\n"
 
-#: src/dird/ua_run.c:1086
-#, c-format
-msgid "Where:      %s\n"
-msgstr "Donde: %s\n"
+#~ 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_run.c:1090
-#, c-format
-msgid ""
-"Replace:         %s\n"
-"Client:          %s\n"
-"Storage:         %s\n"
-"JobId:           %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-"Remplazar: %s\n"
-"Cliente: %s\n"
-"Storage: %s\n"
-"JobId: %s\n"
-"Cuando: %s\n"
-"Catalogo: %s\n"
-"Prioridad: %d\n"
-"Opciones de Plugin: %s\n"
-
-#: src/dird/ua_run.c:1145
-msgid "Run Copy job\n"
-msgstr "Ejecutar Job de Copia\n"
-
-#: src/dird/ua_run.c:1147
-msgid "Run Migration job\n"
-msgstr "Ejecutar Job de Migración\n"
-
-#: src/dird/ua_run.c:1176
-#, c-format
-msgid "Unknown Job Type=%d\n"
-msgstr "Tipo de Job desconocido=%d\n"
+#~ msgid "Unknown list keyword: %s\n"
+#~ msgstr "Lista de palabras clave desconocida: %s\n"
 
-#: src/dird/ua_run.c:1245
-#, c-format
-msgid "Value missing for keyword %s\n"
-msgstr "Falta valor para la palabra clave %s\n"
+#~ msgid "%s is not a job name.\n"
+#~ msgstr "%s no es un nombre de Job.\n"
+
+#~ msgid "Could not find Pool for Job %s\n"
+#~ msgstr "No se pudo encontrar Pool para Job %s\n"
+
+#~ 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"
+
+#~ msgid ""
+#~ "The next Volume to be used by Job \"%s\" (Pool=%s, Level=%s) will be %s\n"
+#~ msgstr ""
+#~ "El próximo Volumen que se utilizará por Job \"%s\" (Pool=%s, Nivel=%s) "
+#~ "será %s\n"
+
+#~ 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_run.c:1252
-msgid "Job name specified twice.\n"
-msgstr "Nombre del Job especificado dos veces.\n"
+#~ msgid "Pool %s not in database. %s"
+#~ msgstr "Pool %s no creado en la base de datos. %s"
 
-#: src/dird/ua_run.c:1260
-msgid "JobId specified twice.\n"
-msgstr "JobId especificada dos veces.\n"
+#~ msgid "Pool %s created in database.\n"
+#~ msgstr "Pool %s creado en la base de datos.\n"
 
-#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
-msgid "Client specified twice.\n"
-msgstr "Cliente especificado dos veces.\n"
+#~ msgid "You have no messages.\n"
+#~ msgstr "Usted no tiene mensajes.\n"
 
-#: src/dird/ua_run.c:1277
-msgid "FileSet specified twice.\n"
-msgstr "FileSet especificado dos veces.\n"
+#~ msgid "Message too long to display.\n"
+#~ msgstr "Mensaje demasiado largo para mostrar.\n"
 
-#: src/dird/ua_run.c:1285
-msgid "Level specified twice.\n"
-msgstr "Level especificado dos veces.\n"
+#~ msgid "Choose item to prune"
+#~ msgstr "Elija el ítem para podar"
 
-#: src/dird/ua_run.c:1294
-msgid "Storage specified twice.\n"
-msgstr "Storage especificado dos veces.\n"
+#~ 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_run.c:1302
-msgid "RegexWhere or Where specified twice.\n"
-msgstr "RegexDónde o Dónde especificado dos veces.\n"
+#~ msgid "Pruned Jobs from JobHisto catalog.\n"
+#~ msgstr "Podar Jobs del catálogo JobHisto.\n"
 
-#: src/dird/ua_run.c:1307
-msgid "No authorization for \"regexwhere\" specification.\n"
-msgstr "Sin autorización para especificación  \"regexwhere\".\n"
+#, fuzzy
+#~ msgid "Begin pruning Files.\n"
+#~ msgstr "Comenzar poda de Archivos.\n"
 
-#: src/dird/ua_run.c:1314
-msgid "Where or RegexWhere specified twice.\n"
-msgstr "Dónde o RegexDónde especificado dos veces.\n"
+#~ msgid "No Files found to prune.\n"
+#~ msgstr "No se encontraron archivos para podar.\n"
 
-#: src/dird/ua_run.c:1319
-msgid "No authoriztion for \"where\" specification.\n"
-msgstr "Sin autorización para especificación  \"where\".\n"
+#~ 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_run.c:1326
-msgid "Bootstrap specified twice.\n"
-msgstr "Bootstrap especificado dos veces.\n"
+#, fuzzy
+#~ msgid "Begin pruning Jobs older than %s.\n"
+#~ msgstr "Comenzar poda de Jobs.\n"
 
-#: src/dird/ua_run.c:1334
-msgid "Replace specified twice.\n"
-msgstr "Replace especificado dos veces.\n"
+#~ 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_run.c:1342
-msgid "When specified twice.\n"
-msgstr "Cuando especificado dos veces.\n"
+#~ msgid "Jobs"
+#~ msgstr "Jobs"
 
-#: src/dird/ua_run.c:1350
-msgid "Priority specified twice.\n"
-msgstr "Prioridad especificada dos veces.\n"
+#~ msgid "No Jobs found to prune.\n"
+#~ msgstr "No encontraron Jobs para podar.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Volume \"%s\""
+#~ msgstr "Volumen"
 
-#: src/dird/ua_run.c:1365
-msgid "Verify Job specified twice.\n"
-msgstr "Job Verificar especificado dos veces.\n"
+#~ msgid ""
+#~ "\n"
+#~ "This command can be DANGEROUS!!!\n"
+#~ "\n"
+#~ "It purges (deletes) all Files from a Job,\n"
+#~ "JobId, Client or Volume; or it purges (deletes)\n"
+#~ "all Jobs from a Client or Volume without regard\n"
+#~ "to retention periods. Normally you should use the\n"
+#~ "PRUNE command, which respects retention periods.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Este comando puede ser PELIGROSO!!!\n"
+#~ "\n"
+#~ "El purgas (elimina) todos los archivos de un Job,\n"
+#~ "JobId, Cliente o Volumen; o el purgas (elimina)\n"
+#~ "Todos los Jobs de un Cliente o Volumen sin tener en cuenta\n"
+#~ "los periodos de retención. Normalmente debería utilizar el\n"
+#~ "comando PRUNE, que respecta los plazos de retención.\n"
 
-#: src/dird/ua_run.c:1393
-msgid "Migration Job specified twice.\n"
-msgstr "Job Migración especificado dos veces.\n"
+#~ msgid "Choose item to purge"
+#~ msgstr "Elija el ítem para purgar"
 
-#: src/dird/ua_run.c:1401
-msgid "Pool specified twice.\n"
-msgstr "Pool especificado dos veces.\n"
+#~ msgid "Begin purging files for Client \"%s\"\n"
+#~ msgstr "Iniciando purga de archivos para Cliente \"%s\"\n"
 
-#: src/dird/ua_run.c:1417
-msgid "Restore Client specified twice.\n"
-msgstr "Restaurar Cliente especificado dos veces.\n"
+#~ msgid "No Files found for client %s to purge from %s catalog.\n"
+#~ msgstr ""
+#~ "No encuentra los archivos del cliente %s para purgar %s del catálogo.\n"
 
-#: src/dird/ua_run.c:1424
-msgid "Plugin Options not yet implemented.\n"
-msgstr "Opciones de Plugin todavía no se ha implementado.\n"
+#~ msgid "Files for %d Jobs for client \"%s\" purged from %s catalog.\n"
+#~ msgstr ""
+#~ "Archivos para Jobs %d para cliente \"%s\" purgado del catalogo %s.\n"
 
-#: src/dird/ua_run.c:1427
-msgid "Plugin Options specified twice.\n"
-msgstr "Opciones de Plugin especificado dos veces.\n"
+#~ msgid "Begin purging jobs from Client \"%s\"\n"
+#~ msgstr "Iniciando purga de jobs para Cliente \"%s\"\n"
 
-#: src/dird/ua_run.c:1432
-msgid "No authoriztion for \"PluginOptions\" specification.\n"
-msgstr "Sin autorización para especificación \"PluginOptions\".\n"
+#~ msgid "%d Jobs for client %s purged from %s catalog.\n"
+#~ msgstr "Jobs %d para cliente \"%s\" purgado del catalogo %s.\n"
 
-#: src/dird/ua_run.c:1439
-msgid "Spool flag specified twice.\n"
-msgstr "Bandera de cola especificada dos veces.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Volume \"%s\" has VolStatus \"%s\" and cannot be purged.\n"
+#~ "The VolStatus must be: Append, Full, Used, or Error to be purged.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Volumen \"%s\" tiene VolStatus \"%s\" y no puede ser purgado.\n"
+#~ "El VolStatus debe ser: Añadir, Lleno, Usado, o Error para ser purgado.\n"
 
-#: src/dird/ua_run.c:1446
-msgid "Invalid spooldata flag.\n"
-msgstr "Invalida bandera spooldata.\n"
+#~ msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
+#~ msgstr "%d Archivo%s en Volumen \"%s\" purgado desde el catalogo.\n"
 
-#: src/dird/ua_run.c:1455
-#, fuzzy
-msgid "IgnoreDuplicateCheck flag specified twice.\n"
-msgstr "Bandera de cola especificada dos veces.\n"
+#~ msgid ""
+#~ "There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
+#~ msgstr ""
+#~ "No hay más Jobs relacionados con Volumen \"%s\". Marcando el para "
+#~ "purgar.\n"
 
-#: src/dird/ua_run.c:1462
 #, fuzzy
-msgid "Invalid ignoreduplicatecheck flag.\n"
-msgstr "Invalida bandera spooldata.\n"
+#~ 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_run.c:1467
 #, fuzzy
-msgid "Accurate flag specified twice.\n"
-msgstr "Bandera de cola especificada dos veces.\n"
+#~ msgid "Unable to truncate volume \"%s\"\n"
+#~ msgstr "No se puede truncar el dispositivo %s. ERR=%s\n"
 
-#: src/dird/ua_run.c:1474
 #, fuzzy
-msgid "Invalid accurate flag.\n"
-msgstr "Invalida bandera spooldata.\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_run.c:1495
-#, c-format
-msgid "Invalid keyword: %s\n"
-msgstr "Palabra clave inválida: %s\n"
+#~ 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_run.c:1510
-#, c-format
-msgid "Catalog \"%s\" not found\n"
-msgstr "Catalogo \"%s\" no encontrado\n"
+#~ 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_run.c:1514
-#, c-format
-msgid "No authorization. Catalog \"%s\".\n"
-msgstr "Sin autorización. Catalogo \"%s\".\n"
+#~ msgid "Cannot purge Volume with VolStatus=%s\n"
+#~ msgstr "No se puede purgar Volumen con VolStatus=%s\n"
 
-#: src/dird/ua_run.c:1525
-#, c-format
-msgid "Job \"%s\" not found\n"
-msgstr "Job \"%s\" no encontrado\n"
+#~ msgid "Could not open %s: ERR=%s\n"
+#~ msgstr "No se pudo abrir %s: ERR=%s\n"
 
-#: src/dird/ua_run.c:1532
-msgid "A job name must be specified.\n"
-msgstr "Un nombre de job debe de ser especificado.\n"
+#~ msgid "Available queries:\n"
+#~ msgstr "Consultas disponibles:\n"
 
-#: src/dird/ua_run.c:1538
-#, c-format
-msgid "No authorization. Job \"%s\".\n"
-msgstr "Sin autorización. Job \"%s\".\n"
+#~ msgid "Choose a query"
+#~ msgstr "Elija una consulta"
 
-#: src/dird/ua_run.c:1546
-#, c-format
-msgid "Pool \"%s\" not found.\n"
-msgstr "Pool \"%s\" no encontrado.\n"
+#~ msgid "Could not find query.\n"
+#~ msgstr "No se pudo encontrar la consulta.\n"
 
-#: src/dird/ua_run.c:1556
-#, c-format
-msgid "No authorization. Pool \"%s\".\n"
-msgstr "Sin autorización. Pool \"%s\".\n"
+#~ msgid "Too many prompts in query, max is 9.\n"
+#~ msgstr "Demasiadas consolas en consulta, máximo es 9.\n"
 
-#: src/dird/ua_run.c:1566
-#, c-format
-msgid "Storage \"%s\" not found.\n"
-msgstr "Storage \"%s\" no encontrado\n"
+#~ msgid "Warning prompt %d missing.\n"
+#~ msgstr "Alerta de consola %d perdida.\n"
 
-#: src/dird/ua_run.c:1575 src/dird/job.c:1245
-msgid "No storage specified.\n"
-msgstr "Almacenamiento no especificado.\n"
+#~ msgid ""
+#~ "Entering SQL query mode.\n"
+#~ "Terminate each query with a semicolon.\n"
+#~ "Terminate query mode with a blank line.\n"
+#~ msgstr ""
+#~ "Entrando en modo de consulta SQL.\n"
+#~ "Termine cada consulta con un punto-coma.\n"
+#~ "Termine el modo de consulta con una linea en blanco.\n"
 
-#: src/dird/ua_run.c:1578
-#, c-format
-msgid "No authorization. Storage \"%s\".\n"
-msgstr "Sin autorización. Storage \"%s\".\n"
+#~ msgid "Enter SQL query: "
+#~ msgstr "Ingrese una consulta SQL:"
 
-#: 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"
+#~ msgid "Add to SQL query: "
+#~ msgstr "Agregar a la consulta SQL:"
 
-#: src/dird/ua_run.c:1608
-#, c-format
-msgid "Restore Client \"%s\" not found.\n"
-msgstr "Restaurar Cliente \"%s\" no encontrado.\n"
+#~ msgid "End query mode.\n"
+#~ msgstr "Fin modo de consulta.\n"
 
-#: src/dird/ua_run.c:1627
-#, c-format
-msgid "FileSet \"%s\" not found.\n"
-msgstr "FileSet \"%s\" no encontrado.\n"
+#~ msgid "\"RegexWhere\" specification not authorized.\n"
+#~ msgstr "\"RegexWhere\" especificación no autorizada.\n"
 
-#: src/dird/ua_run.c:1636
-#, c-format
-msgid "No authorization. FileSet \"%s\".\n"
-msgstr "Sin autorización. FileSet \"%s\".\n"
+#~ msgid "\"where\" specification not authorized.\n"
+#~ msgstr "especificación \"where\" no autorizada.\n"
 
-#: src/dird/ua_run.c:1644
-#, c-format
-msgid "Verify Job \"%s\" not found.\n"
-msgstr "Job Verificar \"%s\" no encontrado.\n"
+#~ msgid ""
+#~ "No Restore Job Resource found in bacula-dir.conf.\n"
+#~ "You must create at least one before running this command.\n"
+#~ msgstr ""
+#~ "Recurso Job de Restauración no encontrado en bacula-dir.conf.\n"
+#~ "Usted debe crear al menos uno antes de ejecutar este comando.\n"
 
-#: src/dird/ua_run.c:1654
-#, c-format
-msgid "Migration Job \"%s\" not found.\n"
-msgstr "Job Migración \"%s\" no encontrado.\n"
+#~ msgid "Restore not done.\n"
+#~ msgstr "Restauración no hecha.\n"
 
-#: 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"
+#~ msgid "Unable to construct a valid BSR. Cannot continue.\n"
+#~ msgstr "No se puede construir un BSR válido. No puede continuar.\n"
 
-#: 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"
+#~ msgid "No files selected to be restored.\n"
+#~ msgstr "No hay archivos seleccionados para ser restaurado.\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "1 file selected to be restored.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "1 archivo seleccionado para ser restaurado.\n"
+#~ "\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "%s files selected to be restored.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s archivos seleccionados para ser restaurado.\n"
+#~ "\n"
 
-#: 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"
+#~ msgid "No Client resource found!\n"
+#~ msgstr "Ningún recurso Cliente encontrado!\n"
 
-#: src/dird/backup.c:96
-msgid "No Storage specification found in Job or Pool.\n"
-msgstr "No se encuentran en la especificación del Storage en Job or Pool.\n"
+#, fuzzy
+#~ msgid "The restore will use the following job(s) as Base\n"
+#~ msgstr "Usted ha seleccionado los siguientes JobIds: %s\n"
 
-#: src/dird/backup.c:256
-#, fuzzy, c-format
-msgid "Using BaseJobId(s): %s\n"
-msgstr "%s utilizando JobId=%s Job=%s\n"
+#~ msgid "Missing value for keyword: %s\n"
+#~ msgstr "Falta el valor de palabra clave: %s\n"
 
-#: src/dird/backup.c:266
-msgid "Cannot find previous jobids.\n"
-msgstr "No se puede encontrar jobids anteriores.\n"
+#~ msgid "List last 20 Jobs run"
+#~ msgstr "Listar los Últimos 20 Jobs ejecutados"
 
-#: src/dird/backup.c:275
-msgid "Sending Accurate information.\n"
-msgstr "Enviando información precisa.\n"
+#~ msgid "List Jobs where a given File is saved"
+#~ msgstr "Listado de Jobs donde un determinado archivo se ha guardado"
 
-#: src/dird/backup.c:328
-#, c-format
-msgid "Start Backup JobId %s, Job=%s\n"
-msgstr "Iniciar Respaldo JobId %s, Job=%s\n"
+#~ msgid "Enter list of comma separated JobIds to select"
+#~ msgstr "Introduzca lista de JobIds separados por comas para seleccionar"
 
-#: src/dird/backup.c:521
-#, c-format
-msgid "Unexpected Client Job message: %s\n"
-msgstr "Inesperado Cliente Job mensaje: %s\n"
+#~ msgid "Enter SQL list command"
+#~ msgstr "Introduzca lista de comandos SQL"
 
-#: 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"
+#~ msgid "Select the most recent backup for a client"
+#~ msgstr "Seleccionar el respaldo mas reciente para un cliente"
 
-#: src/dird/backup.c:569
-msgid "No Job status returned from FD.\n"
-msgstr "Estado de Job no retornado desde FD.\n"
+#~ msgid "Select backup for a client before a specified time"
+#~ msgstr ""
+#~ "Seleccione un respaldo de un cliente antes de un período de tiempo "
+#~ "especificado"
 
-#: src/dird/backup.c:657
-msgid "Backup failed -- incomplete"
-msgstr ""
+#~ msgid "Enter a list of files to restore"
+#~ msgstr "Introduzca una lista de archivos para restaurar"
 
-#: src/dird/backup.c:730
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  FD Files Written:       %s\n"
-"  SD Files Written:       %s\n"
-"  FD Bytes Written:       %s (%sB)\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Software Compression:   %s\n"
-"%s  VSS:                    %s\n"
-"  Encryption:             %s\n"
-"  Accurate:               %s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  Non-fatal FD errors:    %d\n"
-"  SD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s %s (%s): %s\n"
-" Build OS: %s %s %s\n"
-" JobId: %d\n"
-" Job: %s\n"
-" Nivel de Respaldo: %s%s\n"
-" Cliente: \"%s\" %s\n"
-" FileSet: \"%s\" %s\n"
-" Pool: \"%s\" (Desde %s)\n"
-" Catalogo: \"%s\" (Desde %s)\n"
-" Storage: \"%s\" (Desde %s)\n"
-" Hora programada: %s\n"
-" Hora de inicio: %s\n"
-" Hora de finalización: %s\n"
-" Tiempo transcurrido: %s\n"
-" Prioridad: %d\n"
-" FD Archivos Escritos: %s\n"
-" SD Archivos Escritos: %s\n"
-" FD Bytes Escritos: %s (%sB)\n"
-" SD Bytes Escritos: %s (%sB)\n"
-" Tasa: %.1f KB/s\n"
-" Software Compresión: %s\n"
-" VSS: %s\n"
-" Cifrado: %s\n"
-" Accurate: %s\n"
-" Nombre del Volumen(es): %s\n"
-" Id de Sesión del Volumen: %d\n"
-" Tiempo de Sesión del Volumen: %d\n"
-" Ultimo Volumen Bytes: %s (%sB)\n"
-" No-fatal FD errores: %d\n"
-" SD Errores: %d\n"
-" Estado de terminación FD: %s\n"
-" Estado de terminación SD: %s\n"
-" Terminación: %s\n"
-"\n"
+#~ msgid "Enter a list of files to restore before a specified time"
+#~ msgstr ""
+#~ "Introduzca una lista de archivos para restaurar antes de un período de "
+#~ "tiempo especificado"
 
-#: 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"
+#~ msgid "Find the JobIds of the most recent backup for a client"
+#~ msgstr "Encuentre el JobIds del respaldo más reciente para un cliente"
 
-#: src/dird/backup.c:868
-#, c-format
-msgid ""
-"Could not open WriteBootstrap file:\n"
-"%s: ERR=%s\n"
-msgstr ""
-"No se pudo abrir el archivo WriteBootstrap:\n"
-"%s: ERR=%s\n"
+#~ msgid "Find the JobIds for a backup for a client before a specified time"
+#~ msgstr ""
+#~ "Encuentre el JobIds del respaldo de un cliente antes de un período de "
+#~ "tiempo especificado"
 
-#: 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"
+#~ msgid "Enter a list of directories to restore for found JobIds"
+#~ msgstr ""
+#~ "Introduzca una lista de directorios para restaurar por JobIds encontrado"
 
-#: src/dird/restore.c:185 src/dird/restore.c:276
-#, c-format
-msgid "Could not get storage resource '%s'.\n"
-msgstr "No se pudo obtener recurso de almacenamiento '%s'.\n"
+#~ msgid "Select full restore to a specified Job date"
+#~ msgstr "Seleccione restauración completa para una fecha especifica de Job"
 
-#: src/dird/restore.c:314
-#, fuzzy, c-format
-msgid "Could not acquire read storage lock for \"%s\""
-msgstr "No se pudo obtener recurso de almacenamiento '%s'.\n"
+#~ msgid "Unknown keyword: %s\n"
+#~ msgstr "Palabra clave desconocida: %s\n"
 
-#: 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 ""
-"No se puede restaurar sin un archivo bootstrap.\n"
-"Usted probablemente ejecuto un job de restauración directa. Todas las tareas "
-"de restauración deben\n"
-"ser ejecutadas utilizando el comando de restauración.\n"
+#~ msgid "Improper date format: %s\n"
+#~ msgstr "Inadecuado formato de fecha: %s\n"
 
-#: src/dird/restore.c:513
-#, c-format
-msgid "Start Restore Job %s\n"
-msgstr "Iniciar Job Restaurar %s\n"
+#~ msgid "Error: Pool resource \"%s\" does not exist.\n"
+#~ msgstr "Error: recurso Pool \"%s\" no existe.\n"
 
-#: src/dird/restore.c:564
-msgid "Restore OK -- warning file count mismatch"
-msgstr "Restauración OK -- alerta, número de archivos desajustado."
+#~ msgid "Error: Pool resource \"%s\" access not allowed.\n"
+#~ msgstr "Error: recurso Pool \"%s\" acceso no permitido.\n"
 
-#: src/dird/restore.c:566
-msgid "Restore OK"
-msgstr "Restauración OK"
+#~ msgid ""
+#~ "\n"
+#~ "First you select one or more JobIds that contain files\n"
+#~ "to be restored. You will be presented several methods\n"
+#~ "of specifying the JobIds. Then you will be allowed to\n"
+#~ "select which files from those JobIds are to be restored.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Primero debe seleccionar una o más JobIds que contienen archivos\n"
+#~ "para ser restaurado.Se le presentará varios métodos\n"
+#~ "para especificar los JobIDs. Luego se le permitirá seleccionar los "
+#~ "archivos de los JobIds que deben ser restaurados.\n"
+#~ "\n"
 
-#: src/dird/restore.c:570
-msgid "Restore OK -- with warnings"
-msgstr "Restaurar OK - con advertencias"
+#~ msgid "To select the JobIds, you have the following choices:\n"
+#~ msgstr ""
+#~ "Para seleccionar el JobIds, usted dispone de las siguientes opciones:\n"
 
-#: src/dird/restore.c:574
-msgid "*** Restore Error ***"
-msgstr "*** Error de Restauración ***"
+#~ msgid "Select item: "
+#~ msgstr "Seleccione un ítem:"
 
-#: src/dird/restore.c:584
-msgid "Restore Canceled"
-msgstr "Restauración Cancelada"
+#~ msgid "SQL query not authorized.\n"
+#~ msgstr "Consulta SQL no autorizada.\n"
 
-#: src/dird/restore.c:611
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Restore Client:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Restored:         %s\n"
-"  Bytes Restored:         %s\n"
-"  Rate:                   %.1f KB/s\n"
-"  FD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s %s (%s): %s\n"
-" Build OS: %s %s %s\n"
-" JobId: %d\n"
-" Job: %s\n"
-" Restaurar Cliente: %s\n"
-" Hora de inicio: %s\n"
-" Hora de finalización: %s\n"
-" Archivos Esperados: %s\n"
-" Archivos Restaurados: %s\n"
-" Bytes Restaurados: %s\n"
-" Tasa: %.1f KB/s\n"
-" Errores de FD: %d\n"
-" Estado de terminación de FD: %s\n"
-" Estado de terminación de SD: %s\n"
-" Terminación: %s\n"
-"\n"
+#~ msgid "Enter Filename (no path):"
+#~ msgstr "Introduzca Nombre de Archivo (sin ruta):"
 
-#: src/dird/ua_status.c:174
-msgid "Status available for:\n"
-msgstr "Estado disponible para:\n"
+#~ msgid "Enter JobId(s), comma separated, to restore: "
+#~ msgstr "Introduzca JobId(s), separados por comas, para restaurar:"
 
-#: src/dird/ua_status.c:180
-msgid "Select daemon type for status"
-msgstr "Seleccione el tipo de demonio para estado"
+#~ msgid "Enter SQL list command: "
+#~ msgstr "Introduzca lista de comandos SQL:"
 
-#: 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"
+#~ msgid ""
+#~ "Enter file names with paths, or < to enter a filename\n"
+#~ "containing a list of file names with paths, and terminate\n"
+#~ "them with a blank line.\n"
+#~ msgstr ""
+#~ "Escriba los nombres de archivo con las rutas, o < para introducir un "
+#~ "nombre de archivo\n"
+#~ "conteniendo una lista de nombres de archivo con las rutas, y terminado\n"
+#~ "con una línea en blanco.\n"
 
-#: src/dird/ua_status.c:297
-#, fuzzy, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
-msgstr "Demonio iniciado %s, %d Job ejecutando desde el inicio.\n"
+#~ msgid "Enter full filename: "
+#~ msgstr "Introduzca el nombre de archivo completo:"
 
-#: 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"
+#~ msgid "You have already selected the following JobIds: %s\n"
+#~ msgstr "Usted ya ha seleccionado los siguientes JobIds: %s\n"
 
-#: src/dird/ua_status.c:358
-#, c-format
-msgid ""
-"\n"
-"Failed to connect to Storage daemon %s.\n"
-"====\n"
-msgstr ""
-"\n"
-"Fallo al conectar con el demonio Storage %s.\n"
-"====\n"
+#~ msgid ""
+#~ "Enter full directory names or start the name\n"
+#~ "with a < to indicate it is a filename containing a list\n"
+#~ "of directories and terminate them with a blank line.\n"
+#~ msgstr ""
+#~ "Escriba los nombres de directorio completo o inicie el nombre\n"
+#~ " con un < para indicar que es un nombre de archivo que contiene una "
+#~ "lista\n"
+#~ "de directorios y terminado con una línea en blanco.\n"
 
-#: src/dird/ua_status.c:400
-#, c-format
-msgid ""
-"Failed to connect to Client %s.\n"
-"====\n"
-msgstr ""
-"Fallo al conectar con el Cliente %s.\n"
-"====\n"
+#~ msgid "Enter directory name: "
+#~ msgstr "Introduzca nombre de directorio:"
 
-#: src/dird/ua_status.c:408
-msgid "Connected to file daemon\n"
-msgstr "Conectado al demonio file\n"
+#~ msgid "Enter JobId to get the state to restore: "
+#~ msgstr "Introduzca JobId para obtener el estado para restaurar:"
 
-#: src/dird/ua_status.c:428
-msgid ""
-"\n"
-"Scheduled Jobs:\n"
-msgstr ""
-"\n"
-"Scheduled Jobs:\n"
+#~ msgid "Selecting jobs to build the Full state at %s\n"
+#~ msgstr "Seleccionando trabajos para construir el estado completo en %s\n"
 
-#: src/dird/ua_status.c:429
-msgid ""
-"Level          Type     Pri  Scheduled          Name               Volume\n"
-msgstr "Nivel Tipo Pri Scheduled Nombre Volumen\n"
+#~ msgid "Invalid JobId in list.\n"
+#~ msgstr "JobId inválido en la lista.\n"
 
-#: src/dird/ua_status.c:430
-msgid "===================================================================================\n"
-msgstr "===================================================================================\n"
+#~ msgid "Access to JobId=%s (Job \"%s\") not authorized. Not selected.\n"
+#~ msgstr "Acceso al JobId=%s (Job \"%s\") no autorizado. No seleccionado.\n"
 
-#: 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"
+#~ msgid "No Jobs selected.\n"
+#~ msgstr "Jobs no seleccionados.\n"
 
-#: src/dird/ua_status.c:490
-#, c-format
-msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
-msgstr "%-14s %-8s %3d %-18s %-18s %s\n"
+#~ msgid "You have selected the following JobIds: %s\n"
+#~ msgstr "Usted ha seleccionado los siguientes JobIds: %s\n"
 
-#: 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"
+#~ msgid "You have selected the following JobId: %s\n"
+#~ msgstr "Usted ha seleccionado el siguiente JobId: %s\n"
 
-#: src/dird/ua_status.c:587
-msgid "No Scheduled Jobs.\n"
-msgstr "No hay Jobs Programados.\n"
+#~ msgid ""
+#~ "The restored files will the most current backup\n"
+#~ "BEFORE the date you specify below.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Los archivos restaurados serán los más actuales respaldados\n"
+#~ "ANTES de la fecha especificada a continuación.\n"
+#~ "\n"
 
-#: src/dird/ua_status.c:604 src/stored/status.c:450 src/filed/status.c:183
-msgid ""
-"\n"
-"Running Jobs:\n"
-msgstr ""
-"\n"
-"Jobs Ejecutando:\n"
+#~ msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
+#~ msgstr "Introduzca la fecha en formato YYYY-MM-DD HH:MM:SS :"
 
-#: src/dird/ua_status.c:612
-#, c-format
-msgid "Console connected at %s\n"
-msgstr "Consola conectada en %s\n"
+#~ msgid "Improper date format.\n"
+#~ msgstr "Inadecuado formato de fecha.\n"
 
-#: src/dird/ua_status.c:622
-msgid ""
-"No Jobs running.\n"
-"====\n"
-msgstr ""
-"Ningún Jobs ejecutando.\n"
-"====\n"
+#~ msgid "Cannot open file %s: ERR=%s\n"
+#~ msgstr "No se puede abrir el archivo %s: ERR=%s\n"
 
-#: src/dird/ua_status.c:628
-msgid " JobId Level   Name                       Status\n"
-msgstr "JobId Nivel Nombre Estado\n"
+#~ msgid "Error occurred on line %d of file \"%s\"\n"
+#~ msgstr "Se ha producido un error en la línea %d del archivo  \"%s\"\n"
 
-#: src/dird/ua_status.c:629 src/filed/status.c:342
-msgid "======================================================================\n"
-msgstr "======================================================================\n"
+#~ msgid "No database record found for: %s\n"
+#~ msgstr "No encuentra registro en base de datos para: %s\n"
 
-#: src/dird/ua_status.c:638
-msgid "is waiting execution"
-msgstr "esta esperando ejecución"
+#~ msgid "No JobId specified cannot continue.\n"
+#~ msgstr "JobId no especificado, imposible continuar.\n"
 
-#: src/dird/ua_status.c:641
-msgid "is running"
-msgstr "esta ejecutando"
+#~ msgid "No table found: %s\n"
+#~ msgstr "Tabla no encontrada:  %s\n"
 
-#: src/dird/ua_status.c:644
-msgid "is blocked"
-msgstr "esta bloqueado"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "For one or more of the JobIds selected, no files were found,\n"
+#~ "so file selection is not possible.\n"
+#~ "Most likely your retention policy pruned the files.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Para uno o más de los JobIds seleccionado, no se encontraron archivos,\n"
+#~ "por lo tanto, selección de archivos no es posible.\n"
+#~ "El mas probable es que su política de retención podo los archivos.\n"
 
-#: src/dird/ua_status.c:647
-msgid "has terminated"
-msgstr "ha terminado"
+#~ msgid ""
+#~ "\n"
+#~ "Do you want to restore all the files? (yes|no): "
+#~ msgstr ""
+#~ "\n"
+#~ "Desea restaurar todos los archivos? (sí­|no):"
 
-#: src/dird/ua_status.c:650
-msgid "has terminated with warnings"
-msgstr "ha terminado con advertencias"
+#~ msgid ""
+#~ "\n"
+#~ "Regexp matching files to restore? (empty to abort): "
+#~ msgstr ""
+#~ "\n"
+#~ "Regexp para restaurar los archivos que coinciden? (vacío para abortar):"
 
-#: src/dird/ua_status.c:653
-msgid "has erred"
-msgstr "ha errado"
+#~ msgid "Regex compile error: %s\n"
+#~ msgstr "Error de compilación Regex: %s\n"
 
-#: src/dird/ua_status.c:656
-msgid "has errors"
-msgstr "tiene errores"
+#~ msgid ""
+#~ "\n"
+#~ "Building directory tree for JobId(s) %s ...  "
+#~ msgstr ""
+#~ "\n"
+#~ "Construyendo árbol de directorios para JobId(s) %s ..."
 
-#: src/dird/ua_status.c:659
-msgid "has a fatal error"
-msgstr "tiene un error fatal"
+#~ msgid ""
+#~ "\n"
+#~ "%s files inserted into the tree and marked for extraction.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s archivos insertados en el árbol y marcados para la extracción.\n"
 
-#: src/dird/ua_status.c:662
-msgid "has verify differences"
-msgstr "ha verificar diferencias"
+#~ msgid ""
+#~ "\n"
+#~ "%s files inserted into the tree.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s archivos insertados en el árbol.\n"
 
-#: src/dird/ua_status.c:665
-msgid "has been canceled"
-msgstr "ha sido cancelado"
+#~ msgid "Error getting FileSet \"%s\": ERR=%s\n"
+#~ msgstr "Error al obtener FileSet \"%s\": ERR=%s\n"
 
-#: src/dird/ua_status.c:670
-msgid "is waiting on Client"
-msgstr "esta esperando por Client"
+#, fuzzy
+#~ msgid "FileSet argument: %s\n"
+#~ msgstr "FileSet: nombre=%s\n"
 
-#: src/dird/ua_status.c:672
-#, c-format
-msgid "is waiting on Client %s"
-msgstr "esta esperando por Cliente %s"
+#~ msgid "The defined FileSet resources are:\n"
+#~ msgstr "Los recursos FileSet definidos son:\n"
 
-#: 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"
+#~ msgid "FileSet"
+#~ msgstr "FileSet"
 
-#: src/dird/ua_status.c:684
-msgid "is waiting on Storage"
-msgstr "esta esperando por Storage"
+#~ msgid "Select FileSet resource"
+#~ msgstr "Seleccionar recurso FileSet"
 
-#: src/dird/ua_status.c:690
-msgid "is waiting on max Storage jobs"
-msgstr "esta esperando por máximo Storage jobs"
+#~ msgid "No FileSet found for client \"%s\".\n"
+#~ msgstr "FileSet para cliente \"%s\" no encontrado.\n"
 
-#: src/dird/ua_status.c:693
-msgid "is waiting on max Client jobs"
-msgstr "esta esperando por máximo Cliente jobs"
+#~ msgid "Error getting FileSet record: %s\n"
+#~ msgstr "Error al obtener el registro FileSet: %s\n"
 
-#: src/dird/ua_status.c:696
-msgid "is waiting on max Job jobs"
-msgstr "esta esperando por máximo Jobs jobs"
+#~ msgid ""
+#~ "This probably means you modified the FileSet.\n"
+#~ "Continuing anyway.\n"
+#~ msgstr ""
+#~ "Esto probablemente significa que usted modifico el FileSet.\n"
+#~ "Continuando de todos modos.\n"
 
-#: src/dird/ua_status.c:699
-msgid "is waiting on max total jobs"
-msgstr "esta esperando por máximo total jobs"
+#~ msgid "Pool \"%s\" not found, using any pool.\n"
+#~ msgstr "Pool \"%s\" no encontrado, utilizando cualquier pool.\n"
 
-#: src/dird/ua_status.c:702
-msgid "is waiting for its start time"
-msgstr "esta esperando por su hora de inicio"
+#~ msgid "No Full backup before %s found.\n"
+#~ msgstr "Full Backup no encontrado antes de %s.\n"
 
-#: 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"
+#~ msgid "No jobs found.\n"
+#~ msgstr "Jobs no encontrados.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Warning Storage is overridden by \"%s\" on the command line.\n"
+#~ msgstr ""
+#~ "Advertencia, storage por defecto reemplazada por \"%s\" en la línea de "
+#~ "comandos.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
+#~ msgstr ""
+#~ "Storage \"%s\" no encontrado, usando Storage \"%s\" desde MediaType\"%s"
+#~ "\".\n"
 
-#: 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"
+#~ 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_status.c:717 src/dird/ua_status.c:768 src/lib/util.c:250
-msgid "Dir inserting Attributes"
-msgstr "Insertando Atributos Dir"
+#~ msgid ""
+#~ "\n"
+#~ "Unable to find Storage resource for\n"
+#~ "MediaType \"%s\", needed by the Jobs you selected.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "No se puede encontrar los recursos Storage para\n"
+#~ "MediaType \"%s\", necesario por los Jobs que ha seleccionado.\n"
 
-#: src/dird/ua_status.c:722
-#, c-format
-msgid "is in unknown state %c"
-msgstr "esta en estado desconocido %c"
+#~ msgid "OK to run? (yes/mod/no): "
+#~ msgstr "OK para ejecutar? (si/mod/no): "
 
-#: src/dird/ua_status.c:736
-msgid "is waiting for a mount request"
-msgstr "esta esperando por petición de montaje"
+#, fuzzy
+#~ 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_status.c:743
-msgid "is waiting for an appendable Volume"
-msgstr "está esperando un Volumen appendable"
+#~ msgid "Job not run.\n"
+#~ msgstr "Job no ejecutando.\n"
 
-#: 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"
+#~ msgid "Job failed.\n"
+#~ msgstr "Job fallido.\n"
 
-#: 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"
+#~ msgid "Job queued. JobId=%s\n"
+#~ msgstr "Cola de Job. JobId=%s\n"
 
-#: 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"
+#~ msgid "Job \"%s\" not found\n"
+#~ msgstr "Job \"%s\" no encontrado\n"
 
-#: src/dird/ua_status.c:788
-#, c-format
-msgid "%6d %-6s  %-20s %s\n"
-msgstr "%6d %-6s %-20s %s\n"
+#~ msgid "A job name must be specified.\n"
+#~ msgstr "Un nombre de job debe de ser especificado.\n"
 
-#: src/dird/ua_status.c:792
-#, fuzzy, c-format
-msgid "               %-30s\n"
-msgstr "Job : %s\n"
+#~ msgid "No authorization. Job \"%s\".\n"
+#~ msgstr "Sin autorización. Job \"%s\".\n"
 
-#: src/dird/ua_status.c:812
-msgid "No Terminated Jobs.\n"
-msgstr "Jobs No Terminados.\n"
+#~ msgid "Pool \"%s\" not found.\n"
+#~ msgstr "Pool \"%s\" no encontrado.\n"
 
-#: src/dird/ua_status.c:818 src/stored/status.c:572 src/filed/status.c:330
-msgid ""
-"\n"
-"Terminated Jobs:\n"
-msgstr ""
-"\n"
-"Jobs No Terminados:\n"
+#~ msgid "No authorization. Pool \"%s\".\n"
+#~ msgstr "Sin autorización. Pool \"%s\".\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "NextPool \"%s\" not found.\n"
+#~ msgstr "Pool \"%s\" no encontrado.\n"
 
-#: src/dird/ua_status.c:820
-msgid "====================================================================\n"
-msgstr "====================================================================\n"
+#, fuzzy
+#~ msgid "No authorization. NextPool \"%s\".\n"
+#~ msgstr "Sin autorización. Pool \"%s\".\n"
 
-#: 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"
+#~ msgid "No authorization. Client \"%s\".\n"
+#~ msgstr "Sin autorización. Cliente \"%s\".\n"
 
-#: 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"
+#~ msgid "Restore Client \"%s\" not found.\n"
+#~ msgstr "Restaurar Cliente \"%s\" no encontrado.\n"
 
-#: src/dird/ua_status.c:859 src/stored/status.c:608 src/filed/status.c:370
-msgid "Diffs"
-msgstr "Diferencias"
+#~ msgid "FileSet \"%s\" not found.\n"
+#~ msgstr "FileSet \"%s\" no encontrado.\n"
 
-#: 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"
+#~ msgid "No authorization. FileSet \"%s\".\n"
+#~ msgstr "Sin autorización. FileSet \"%s\".\n"
 
-#: 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"
+#~ msgid "Storage \"%s\" not found.\n"
+#~ msgstr "Storage \"%s\" no encontrado\n"
 
-#: src/dird/ua_status.c:871 src/stored/status.c:620 src/filed/status.c:379
-msgid "Other"
-msgstr "Otros"
+#~ msgid "user selection"
+#~ msgstr "Selección de usuario"
 
-#: 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"
+#~ msgid "No authorization. Storage \"%s\".\n"
+#~ msgstr "Sin autorización. Storage \"%s\".\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "No JobId specified.\n"
+#~ msgstr "Job no especificado.\n"
+
+#, fuzzy
+#~ msgid "Invalid or no Job name specified.\n"
+#~ msgstr "Nombre del Job especificado dos veces.\n"
 
-#: src/dird/ua_status.c:892
-msgid "\n"
-msgstr "\n"
+#, fuzzy
+#~ msgid "Enter the JobId list to select: "
+#~ msgstr "Introduzca el JobId para seleccionar:"
 
-#: src/dird/ua_input.c:103
-msgid "Enter slot"
-msgstr "Introduzca ranura"
+#, fuzzy
+#~ msgid "Could not get job record for selected JobId=%d. ERR=%s"
+#~ msgstr "No se ha podido obtener el registro Job para Job anterior. ERR=%s"
 
-#: src/dird/ua_input.c:107 src/dird/ua_input.c:113
-#, c-format
-msgid "Expected a positive integer, got: %s\n"
-msgstr "Esperaba un número entero positivo, obtuvo: %s\n"
+#~ msgid "You have the following choices:\n"
+#~ msgstr "Usted tiene las siguientes opciones:\n"
 
-#: src/dird/ua_input.c:170
-msgid "Invalid response. You must answer yes or no.\n"
-msgstr "Respuesta no válida. Usted tiene que contestar sí o no.\n"
+#, fuzzy
+#~ msgid "Select termination code: "
+#~ msgstr "Código de Terminación del Job: %d"
 
-#: src/dird/ua_input.c:193
-msgid "Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"
-msgstr "Inválido valor Habilitado, debe ser sí, no, archivado, 0, 1 o 2\n"
+#~ msgid "mod"
+#~ msgstr "mod"
 
-#: src/dird/ua_input.c:220
-#, fuzzy, c-format
-msgid "Illegal character \"%c\" in a comment.\n"
-msgstr "Carácter ilegal \"%c\" en el nombre.\n"
+#~ msgid "Parameters to modify:\n"
+#~ msgstr "Parámetros para modificar:\n"
 
-#: src/dird/ua_input.c:227
-#, fuzzy
-msgid "Comment too long.\n"
-msgstr "Nombre demasiado largo.\n"
+#~ msgid "Level"
+#~ msgstr "Level"
+
+#~ msgid "Restore Client"
+#~ msgstr "Restaurar Client"
+
+#~ msgid "When"
+#~ msgstr "Cuando "
+
+#~ msgid "Priority"
+#~ msgstr "Prioridad"
+
+#~ msgid "Pool"
+#~ msgstr "Pool"
 
-#: src/dird/ua_input.c:233
 #, fuzzy
-msgid "Comment must be at least one character long.\n"
-msgstr "Nombre de volumen debe ser de al menos un carácter de largo.\n"
+#~ msgid "NextPool"
+#~ msgstr "Pool"
 
-#: src/dird/pythondir.c:121 src/stored/pythonsd.c:101
-#: src/stored/pythonsd.c:166 src/filed/pythonfd.c:94 src/filed/pythonfd.c:148
-#: src/filed/pythonfd.c:212
-msgid "Job pointer not found."
-msgstr "No se encuentra el puntero del Job."
+#~ msgid "Verify Job"
+#~ msgstr "Verificar Job"
 
-#: src/dird/pythondir.c:153
-msgid "Pool record not found."
-msgstr "Registro Pool no encontrado"
+#~ msgid "Bootstrap"
+#~ msgstr "Bootstrap"
 
-#: src/dird/pythondir.c:209 src/stored/pythonsd.c:143 src/filed/pythonfd.c:125
-#, c-format
-msgid "Attribute %s not found."
-msgstr "Atributo %s no encontrado."
+#~ msgid "Where"
+#~ msgstr "Donde"
 
-#: src/dird/pythondir.c:252 src/dird/pythondir.c:258 src/stored/pythonsd.c:183
-#: src/filed/pythonfd.c:167
-msgid "Read-only attribute"
-msgstr "Atributo Solo-Lectura"
+#~ msgid "File Relocation"
+#~ msgstr "Reubicar Archivo"
 
-#: src/dird/pythondir.c:284
-msgid "Priority must be 1-100"
-msgstr "Prioridad debe ser 1-100"
+#~ msgid "Replace"
+#~ msgstr "Reemplazar"
 
-#: src/dird/pythondir.c:289
-msgid "Job Level can be set only during JobInit"
-msgstr "Nivel de Job sólo se puede ajustar durante JobInit"
+#~ msgid "JobId"
+#~ msgstr "JobId"
 
-#: src/dird/pythondir.c:303
-msgid "Bad JobLevel string"
-msgstr "Mala cadena JobLevel"
+#~ msgid "Plugin Options"
+#~ msgstr "Opciones de Plug-in"
 
-#: src/dird/job.c:62
-#, c-format
-msgid "Could not init job queue: ERR=%s\n"
-msgstr "No se pudo iniciar la cola de trabajos: ERR=%s\n"
+#~ msgid "Select parameter to modify"
+#~ msgstr "Seleccione los parámetros para modificar"
 
-#: src/dird/job.c:94
-#, c-format
-msgid "Could not add job queue: ERR=%s\n"
-msgstr "No se ha podido añadir la cola de trabajo: ERR=%s\n"
+#~ 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/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:1129 src/dird/job.c:1170
-#: src/dird/job.c:1179
-msgid "Job resource"
-msgstr "Recurso Job"
+#~ msgid "Invalid time, using current time.\n"
+#~ msgstr "Hora inválida, usando hora actual.\n"
 
-#: src/dird/job.c:230 src/dird/job.c:349
-#, c-format
-msgid "Unimplemented job type: %d\n"
-msgstr "Tipo de Job no implementado: %d\n"
+#~ msgid "Enter new Priority: "
+#~ msgstr "Introduzca nueva prioridad:"
+
+#~ msgid "Priority must be a positive integer.\n"
+#~ msgstr "Prioridad debe ser un entero positivo.\n"
 
-#: src/dird/job.c:272
-msgid "Job canceled because max start delay time exceeded.\n"
-msgstr "Job cancelado porque el tiempo máximo de espera ha excedido.\n"
+#~ msgid "Please enter the Bootstrap file name: "
+#~ msgstr "Por favor, introduzca nombre de archivo Bootstrap:"
+
+#~ msgid "Warning cannot open %s: ERR=%s\n"
+#~ msgstr "Advertencia no puede abrir %s: ERR=%s\n"
 
-#: src/dird/job.c:277
 #, fuzzy
-msgid "Job canceled because max run sched time exceeded.\n"
-msgstr ""
-"Job cancelado porque el tiempo de ejecución máximo programado se ha "
-"superado.\n"
+#~ msgid "Command input"
+#~ msgstr "línea de comandos"
 
-#: src/dird/job.c:403
-#, c-format
-msgid "JobId %s, Job %s marked to be canceled.\n"
-msgstr "JobId %s, Job %s marcado para ser cancelado.\n"
+#, fuzzy
+#~ msgid "Please enter the full path prefix for restore (/ for none): "
+#~ msgstr ""
+#~ "Por favor, introduzca el prefijo de ruta para restaurar (/ para ninguno):"
+
+#~ msgid "Replace:\n"
+#~ msgstr "Reemplazar:\n"
 
-#: src/dird/job.c:413
-msgid "Failed to connect to File daemon.\n"
-msgstr "Error al conectar con demonio File.\n"
+#~ msgid "Select replace option"
+#~ msgstr "Seleccione la opción sustituir"
 
-#: src/dird/job.c:548
-msgid "Max wait time exceeded. Job canceled.\n"
-msgstr "Máximo tiempo de espera excedido. Job cancelado.\n"
+#~ 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/job.c:553
-msgid "Max run time exceeded. Job canceled.\n"
-msgstr "Máximo tiempo de ejecución excedido. Job cancelado.\n"
+#~ msgid "User input"
+#~ msgstr "Entrada del usuario"
+
+#~ msgid "Invalid replace option: %s\n"
+#~ msgstr "Opción replace no valida: %s\n"
 
-#: src/dird/job.c:558
 #, fuzzy
-msgid "Max run sched time exceeded. Job canceled.\n"
-msgstr "Máximo tiempo de ejecución excedido. Job cancelado.\n"
+#~ msgid "Storage from NextPool override"
+#~ msgstr "Storage desde recurso Pool's NextPool "
 
-#: src/dird/job.c:680
-#, c-format
-msgid "Pool \"%s\" not in database. ERR=%s"
-msgstr "Poll \"%s\" no en base de datos. ERR=%s"
+#~ msgid "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
+#~ msgstr "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
 
-#: src/dird/job.c:684
-#, c-format
-msgid "Created database record for Pool \"%s\".\n"
-msgstr "Creado registro base de datos para Pool \"%s\".\n"
+#~ msgid "This will replace your current Where value\n"
+#~ msgstr "Este sustituirá a su actual valor Donde\n"
 
-#: 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"
+#~ msgid "Strip prefix"
+#~ msgstr "Eliminar prefijo"
 
-#: src/dird/job.c:797
-#, c-format
-msgid "Cancelling duplicate JobId=%d.\n"
-msgstr "Cancelando duplicado JobId=%d.\n"
+#~ msgid "Add prefix"
+#~ msgstr "Añadir prefijo"
 
-#: src/dird/job.c:828 src/dird/job.c:1116
-msgid "Run pool override"
-msgstr "Anular Ejecutar Pool"
+#~ msgid "Add file suffix"
+#~ msgstr "Añadir sufijo de archivo"
 
-#: src/dird/job.c:839
-msgid "Run FullPool override"
-msgstr "Anular Ejecutar FullPool "
+#~ msgid "Enter a regexp"
+#~ msgstr "Introduzca una expresión regular"
 
-#: src/dird/job.c:841
-msgid "Job FullPool override"
-msgstr "Anular Job FullPool"
+#~ msgid "Test filename manipulation"
+#~ msgstr "Prueba de la manipulación de nombre de archivo"
 
-#: src/dird/job.c:850
-msgid "Run IncPool override"
-msgstr "Anular Ejecutar IncPoll"
+#~ msgid "Use this ?"
+#~ msgstr "Usar esto ?"
 
-#: src/dird/job.c:852
-msgid "Job IncPool override"
-msgstr "Anular Job IncPoll"
+#, fuzzy
+#~ msgid "Please enter the path prefix to strip: "
+#~ msgstr "Por favor, introduzca la ruta de prefijo para eliminar:"
 
-#: src/dird/job.c:861
-msgid "Run DiffPool override"
-msgstr "Anular Ejecutar DiffPool"
+#, 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/job.c:863
-msgid "Job DiffPool override"
-msgstr "Anular Job DiffPool"
+#, fuzzy
+#~ msgid "Please enter the file suffix to add: "
+#~ msgstr "Por favor, introduzca el sufijo de archivo para añadir:"
 
-#: 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"
+#~ msgid "Please enter a valid regexp (!from!to!): "
+#~ msgstr "Por favor, introduzca una expresión regular válida (!from!to!):"
 
-#: src/dird/job.c:929
-msgid "FileSet MD5 digest not found.\n"
-msgstr "FileSet MD5 digest no encontrado.\n"
+#~ msgid "regexwhere=%s\n"
+#~ msgstr "regexdonde=%s\n"
 
-#: 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"
+#~ 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/job.c:976
-#, c-format
-msgid "Error updating job record. %s"
-msgstr "Error actualizando registro job. %s"
+#~ msgid "Cannot use your regexp\n"
+#~ msgstr "No se pudo utilizar su regexp\n"
 
-#: src/dird/job.c:1121
-msgid "Run storage override"
-msgstr "Anular Ejecutar Storage"
+#~ msgid "Please enter filename to test: "
+#~ msgstr "Por favor, introduzca el nombre de archivo de prueba:"
 
-#: src/dird/job.c:1189
-msgid "Client resource"
-msgstr "Recurso de cliente"
+#~ msgid "%s -> %s\n"
+#~ msgstr "%s -> %s\n"
 
-#: 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"
+#~ msgid "Cannot use your regexp.\n"
+#~ msgstr "No puede utilizar su expresión regular.\n"
 
-#: src/dird/job.c:1409
-#, c-format
-msgid "Clone JobId %d started.\n"
-msgstr "Clonar JobId %d iniciado.\n"
+#~ msgid "Levels:\n"
+#~ msgstr "Niveles:\n"
 
-#: src/dird/authenticate.c:83 src/dird/authenticate.c:84
-#: src/tray-monitor/authenticate.c:132
-#: src/qt-console/tray-monitor/authenticate.cpp:131
-#, c-format
-msgid "Error sending Hello to Storage daemon. ERR=%s\n"
-msgstr "Error enviando Hello al servicio de Almacenamiento. ERR=%s\n"
+#~ msgid "Full"
+#~ msgstr "Completo"
 
-#: src/dird/authenticate.c:113
-msgid "Director and Storage daemon passwords or names not the same.\n"
-msgstr "Nombres o contraseñas en el Director o Storage no son las mismas.\n"
+#~ msgid "Incremental"
+#~ msgstr "Incremental"
 
-#: src/dird/authenticate.c:115
-#, fuzzy, c-format
-msgid ""
-"Director unable to authenticate with Storage daemon at \"%s:%d\". Possible "
-"causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the SD or\n"
-"SD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-"Director no se puede autenticar con el demonio Storage en \"%s:%d\". "
-"Posibles causas:\n"
-"Contraseñas o nombres no son los mismos o\n"
-"el Máximo de Concurrentes Jobs ha superado en el SD o\n"
-"red SD desordenada (reiniciar demonio).\n"
-"Por favor, consulte http://www.bacula.org/en/rel-manual/"
-"Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 por ayuda.\n"
-
-#: src/dird/authenticate.c:127 src/wx-console/authenticate.c:127
-#: src/console/authenticate.c:122
-msgid ""
-"Authorization problem: Remote server did not advertise required TLS "
-"support.\n"
-msgstr ""
-"Problema de Autorización: El servidor remoto no anuncio soporte TLS "
-"requerido.\n"
+#~ msgid "Differential"
+#~ msgstr "Diferencial"
 
-#: src/dird/authenticate.c:134 src/stored/authenticate.c:146
-#: src/stored/authenticate.c:257 src/wx-console/authenticate.c:133
-#: src/console/authenticate.c:129 src/filed/authenticate.c:160
-#: src/filed/authenticate.c:279
-msgid "Authorization problem: Remote server requires TLS.\n"
-msgstr "Problema de autorización. Servidor remoto requiere TLS.\n"
+#~ msgid "Since"
+#~ msgstr "Desde"
 
-#: src/dird/authenticate.c:143
-#, c-format
-msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
-msgstr "Negociación TLS fallida con SD en \"%s:%d\"\n"
+#~ msgid "VirtualFull"
+#~ msgstr "VirtualFull"
 
-#: src/dird/authenticate.c:155
-#, c-format
-msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
-msgstr "bdird<stored: \"%s:%s\" mala respuesta al comando Hello: ERR=%s\n"
+#~ msgid "Select level"
+#~ msgstr "Seleccionar Nivel"
 
-#: src/dird/authenticate.c:162 src/tray-monitor/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:151
-msgid "Storage daemon rejected Hello command\n"
-msgstr "Storage servicio rechazo el comando Hello\n"
+#~ msgid "Initialize Catalog"
+#~ msgstr "Iniciar Catálogo"
 
-#: src/dird/authenticate.c:163
-#, c-format
-msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
-msgstr "Storage servicio en \"%s:%d\" rechazo el comando Hello\n"
+#~ msgid "Verify Catalog"
+#~ msgstr "Verificar Catálogo"
 
-#: src/dird/authenticate.c:192
-#, c-format
-msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
-msgstr "Error enviando Hello al servicio File en \"%s:%d\". ERR=%s\n"
+#~ msgid "Verify Volume to Catalog"
+#~ msgstr "Verificar volumen de catalogo"
 
-#: src/dird/authenticate.c:222
-msgid "Director and File daemon passwords or names not the same.\n"
-msgstr "Contraseñas del demonio Director y File no son los mismos.\n"
+#~ msgid "Verify Disk to Catalog"
+#~ msgstr "Verificar disco de catalogo"
 
-#: src/dird/authenticate.c:224
-#, fuzzy, c-format
-msgid ""
-"Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the FD or\n"
-"FD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-"No se puede autenticar con el demonio File en \"%s:%d\". Posibles causas:\n"
-"Contraseñas o nombres no son los mismos o\n"
-"el Máximo de Concurrentes Jobs ha superado en el FD o\n"
-"red FD desordenada (reiniciar demonio).\n"
-"Por favor, consulte http://www.bacula.org/en/rel-manual/"
-"Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 por ayuda.\n"
-
-#: src/dird/authenticate.c:236
-#, c-format
-msgid ""
-"Authorization problem: FD \"%s:%s\" did not advertise required TLS support.\n"
-msgstr ""
-"Problema de Autorización: FD \"%s:%s\" no anuncio soporte TLS requerido.\n"
+#~ msgid "Verify Volume Data (not yet implemented)"
+#~ msgstr "Verificar volumen de datos (aún no implementado)"
 
-#: src/dird/authenticate.c:244
-#, c-format
-msgid "Authorization problem: FD at \"%s:%d\" requires TLS.\n"
-msgstr "Problema de autorización: FD en \"%s:%d\" requiere TLS.\n"
+#~ 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/authenticate.c:254
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
-msgstr "Fallo de negociación TLS con FD en  \"%s:%d\".\n"
+#, fuzzy
+#~ msgid ""
+#~ "Run Admin Job\n"
+#~ "JobName:  %s\n"
+#~ "FileSet:  %s\n"
+#~ "Client:   %s\n"
+#~ "Storage:  %s\n"
+#~ "When:     %s\n"
+#~ "Priority: %d\n"
+#~ msgstr ""
+#~ "Ejecutar %s job\n"
+#~ "JobName: %s\n"
+#~ "FileSet: %s\n"
+#~ "Cliente: %s\n"
+#~ "Storage: %s\n"
+#~ "Cuando: %s\n"
+#~ "Prioridad: %d\n"
 
-#: src/dird/authenticate.c:266 src/tray-monitor/authenticate.c:191
-#: src/qt-console/tray-monitor/authenticate.cpp:190
-#, c-format
-msgid "Bad response from File daemon to Hello command: ERR=%s\n"
-msgstr "Mala respuesta desde el demonio File para el comando Hello: ERR=%s\n"
+#, fuzzy
+#~ msgid ""
+#~ "Run Backup job\n"
+#~ "JobName:  %s\n"
+#~ "Level:    %s\n"
+#~ "Client:   %s\n"
+#~ "FileSet:  %s\n"
+#~ "Pool:     %s (From %s)\n"
+#~ "%sStorage:  %s (From %s)\n"
+#~ "When:     %s\n"
+#~ "Priority: %d\n"
+#~ msgstr ""
+#~ "Ejecutar %s job\n"
+#~ "Nombre del Job: %s\n"
+#~ "Nivel: %s\n"
+#~ "Cliente: %s\n"
+#~ "FileSet: %s\n"
+#~ "Pool: %s (Desde %s)\n"
+#~ "Storage: %s (Desde %s)\n"
+#~ "Cuando: %s\n"
+#~ "Prioridad: %d\n"
+#~ "%s%s%s"
 
-#: src/dird/authenticate.c:268
-#, c-format
-msgid "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
-msgstr ""
-"Mala respuesta desde el demonio File en \"%s:%d\" para el comando Hello: ERR="
-"%s\n"
+#, fuzzy
+#~ 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/authenticate.c:277 src/tray-monitor/authenticate.c:198
-#: src/qt-console/tray-monitor/authenticate.cpp:197
-msgid "File daemon rejected Hello command\n"
-msgstr "El demonio File rechazó el comando Hello\n"
+#, fuzzy
+#~ msgid ""
+#~ "Run Verify Job\n"
+#~ "JobName:     %s\n"
+#~ "Level:       %s\n"
+#~ "Client:      %s\n"
+#~ "FileSet:     %s\n"
+#~ "Pool:        %s (From %s)\n"
+#~ "Storage:     %s (From %s)\n"
+#~ "Verify Job:  %s\n"
+#~ "Verify List: %s\n"
+#~ "When:        %s\n"
+#~ "Priority:    %d\n"
+#~ msgstr ""
+#~ "Ejecutar %s job\n"
+#~ "JobName: %s\n"
+#~ "Level: %s\n"
+#~ "Cliente: %s\n"
+#~ "FileSet: %s\n"
+#~ "Pool: %s (Desde %s)\n"
+#~ "Storage: %s (Desde %s)\n"
+#~ "Verify Job: %s\n"
+#~ "Verify List: %s\n"
+#~ "Cuando: %s\n"
+#~ "Prioridad: %d\n"
+
+#~ msgid "Please enter a JobId for restore: "
+#~ msgstr "Por favor, introduzca un JobId para restaurar:"
 
-#: src/dird/authenticate.c:278
-#, c-format
-msgid "File daemon at \"%s:%d\" rejected Hello command\n"
-msgstr "Demonio File en \"%s:%d\" rechazo el comando Hello\n"
+#, fuzzy
+#~ msgid ""
+#~ "Run Restore job\n"
+#~ "JobName:         %s\n"
+#~ "Bootstrap:       %s\n"
+#~ "RegexWhere:      %s\n"
+#~ "Replace:         %s\n"
+#~ "FileSet:         %s\n"
+#~ "Backup Client:   %s\n"
+#~ "Restore Client:  %s\n"
+#~ "Storage:         %s\n"
+#~ "When:            %s\n"
+#~ "Catalog:         %s\n"
+#~ "Priority:        %d\n"
+#~ msgstr ""
+#~ "Ejecutar Job de Restauración\n"
+#~ "Nombre del Job: %s\n"
+#~ "Bootstrap: %s\n"
+#~ "RegexWhere: %s\n"
+#~ "Reemplazar: %s\n"
+#~ "FileSet: %s\n"
+#~ "Cliente de Respaldo: %s\n"
+#~ "Cliente de Restauración: %s\n"
+#~ "Storage: %s\n"
+#~ "Cuando: %s\n"
+#~ "Catalogo: %s\n"
+#~ "Prioridad: %d\n"
+#~ "Opciones de Plugin: %s\n"
 
-#: src/dird/authenticate.c:302
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Len=%d\n"
-msgstr "UA Hello desde %s:%s:%d no es valido. Len=%d\n"
+#, fuzzy
+#~ msgid ""
+#~ "Run Restore job\n"
+#~ "JobName:         %s\n"
+#~ "Bootstrap:       %s\n"
+#~ "Where:           %s\n"
+#~ "Replace:         %s\n"
+#~ "FileSet:         %s\n"
+#~ "Backup Client:   %s\n"
+#~ "Restore Client:  %s\n"
+#~ "Storage:         %s\n"
+#~ "When:            %s\n"
+#~ "Catalog:         %s\n"
+#~ "Priority:        %d\n"
+#~ msgstr ""
+#~ "Ejecutar Job de Restauración\n"
+#~ "Nombre del Job: %s\n"
+#~ "Bootstrap: %s\n"
+#~ "Donde: %s\n"
+#~ "Reemplazar: %s\n"
+#~ "FileSet: %s\n"
+#~ "Respaldo Cliente: %s\n"
+#~ "Restaurar Cliente: %s\n"
+#~ "Storage: %s\n"
+#~ "Cuando: %s\n"
+#~ "Catalogo: %s\n"
+#~ "Prioridad: %d\n"
+#~ "Opciones de Plugin: %s\n"
 
-#: src/dird/authenticate.c:309
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Got: %s\n"
-msgstr "UA Hello desde %s:%s:%d no es valido. Obtuvo=%s\n"
+#~ msgid ""
+#~ "Run Restore job\n"
+#~ "JobName:    %s\n"
+#~ "Bootstrap:  %s\n"
+#~ msgstr ""
+#~ "Ejecutar Job Restaurar\n"
+#~ "JobName: %s\n"
+#~ "Bootstrap: %s\n"
 
-#: src/dird/authenticate.c:377
-msgid ""
-"Authorization problem: Remote client did not advertise required TLS "
-"support.\n"
-msgstr ""
-"Problema de Autorización: El cliente remoto no anuncio soporte TLS "
-"requerido.\n"
+#~ msgid "RegexWhere: %s\n"
+#~ msgstr "RegexWhere: %s\n"
 
-#: src/dird/authenticate.c:385
-msgid "Authorization problem: Remote client requires TLS.\n"
-msgstr "Problema de autorización: Cliente remoto requiere TLS.\n"
+#~ msgid "Where:      %s\n"
+#~ msgstr "Donde: %s\n"
 
-#: src/dird/authenticate.c:400 src/filed/authenticate.c:169
-#: src/filed/authenticate.c:288
-msgid "TLS negotiation failed.\n"
-msgstr "Fallo de negociación TLS.\n"
+#, fuzzy
+#~ msgid ""
+#~ "Replace:         %s\n"
+#~ "Client:          %s\n"
+#~ "Storage:         %s\n"
+#~ "JobId:           %s\n"
+#~ "When:            %s\n"
+#~ "Catalog:         %s\n"
+#~ "Priority:        %d\n"
+#~ msgstr ""
+#~ "Remplazar: %s\n"
+#~ "Cliente: %s\n"
+#~ "Storage: %s\n"
+#~ "JobId: %s\n"
+#~ "Cuando: %s\n"
+#~ "Catalogo: %s\n"
+#~ "Prioridad: %d\n"
+#~ "Opciones de Plugin: %s\n"
 
-#: src/dird/authenticate.c:414
-#, c-format
-msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
-msgstr "No se puede autenticar la consola \"%s\" en %s:%s:%d.\n"
+#~ msgid "Run Copy job\n"
+#~ msgstr "Ejecutar Job de Copia\n"
 
-#: src/dird/authenticate.c:419
-#, c-format
-msgid "1000 OK: %s Version: %s (%s)\n"
-msgstr "1000 OK: %s Versión: %s(%s)\n"
+#~ msgid "Run Migration job\n"
+#~ msgstr "Ejecutar Job de Migración\n"
 
-#: 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"
+#~ msgid "Unknown Job Type=%d\n"
+#~ msgstr "Tipo de Job desconocido=%d\n"
 
-#: 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"
+#~ msgid "Value missing for keyword %s\n"
+#~ msgstr "Falta valor para la palabra clave %s\n"
 
-#: src/dird/catreq.c:154
-msgid "1901 No Media.\n"
-msgstr "1901 Ninguna Media.\n"
+#~ msgid "JobId specified twice.\n"
+#~ msgstr "JobId especificada dos veces.\n"
 
-#: src/dird/catreq.c:182
-msgid "not in Pool"
-msgstr "no está¡ en Pool"
+#~ msgid "Client specified twice.\n"
+#~ msgstr "Cliente especificado dos veces.\n"
 
-#: src/dird/catreq.c:184
-msgid "not correct MediaType"
-msgstr "Tipo de Medio incorrecto"
+#~ msgid "FileSet specified twice.\n"
+#~ msgstr "FileSet especificado dos veces.\n"
 
-#: src/dird/catreq.c:194
-msgid "is not Enabled"
-msgstr "no está¡ Habilitado"
+#~ msgid "Level specified twice.\n"
+#~ msgstr "Level especificado dos veces.\n"
 
-#: 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"
+#~ msgid "Storage specified twice.\n"
+#~ msgstr "Storage especificado dos veces.\n"
 
-#: 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"
+#~ msgid "RegexWhere or Where specified twice.\n"
+#~ msgstr "RegexDónde o Dónde especificado dos veces.\n"
 
-#: 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"
+#~ msgid "No authorization for \"regexwhere\" specification.\n"
+#~ msgstr "Sin autorización para especificación  \"regexwhere\".\n"
 
-#: 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"
+#~ msgid "Where or RegexWhere specified twice.\n"
+#~ msgstr "Dónde o RegexDónde especificado dos veces.\n"
 
-#: src/dird/catreq.c:259
-#, c-format
-msgid ""
-"Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
-msgstr ""
-"Archivos de Volumen en %u se establece en %u para Volumen \"%s\". Esto es "
-"incorrecto.\n"
+#~ msgid "No authoriztion for \"where\" specification.\n"
+#~ msgstr "Sin autorización para especificación  \"where\".\n"
 
-#: 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"
+#~ msgid "Bootstrap specified twice.\n"
+#~ msgstr "Bootstrap especificado dos veces.\n"
 
-#: src/dird/catreq.c:318
-#, c-format
-msgid "Catalog error updating Media record. %s"
-msgstr "Error de catalogo actualizando registro Media. %s"
+#~ msgid "Replace specified twice.\n"
+#~ msgstr "Replace especificado dos veces.\n"
 
-#: src/dird/catreq.c:320
-msgid "1993 Update Media error\n"
-msgstr "1993 Error de actualización de Media\n"
+#~ msgid "When specified twice.\n"
+#~ msgstr "Cuando especificado dos veces.\n"
 
-#: src/dird/catreq.c:344
-#, c-format
-msgid "Catalog error creating JobMedia record. %s"
-msgstr "Error de Catalogo al crear registro JobMedia. %s"
+#~ msgid "Priority specified twice.\n"
+#~ msgstr "Prioridad especificada dos veces.\n"
 
-#: src/dird/catreq.c:346
-msgid "1992 Create JobMedia error\n"
-msgstr "1992 Error al crear JobMedia\n"
+#~ 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/catreq.c:356
-#, c-format
-msgid "Invalid Catalog request: %s"
-msgstr "Invalida petición de Catalogo: %s"
+#~ msgid "Verify Job specified twice.\n"
+#~ msgstr "Job Verificar especificado dos veces.\n"
 
-#: src/dird/catreq.c:443
-#, fuzzy, c-format
-msgid "Attribute create error: ERR=%s"
-msgstr "error al crear Atributo.%s"
+#~ msgid "Migration Job specified twice.\n"
+#~ msgstr "Job Migración especificado dos veces.\n"
 
-#: src/dird/catreq.c:538
-#, fuzzy, c-format
-msgid "Restore object create error. %s"
-msgstr "error al crear Atributo.%s"
+#~ msgid "Pool specified twice.\n"
+#~ msgstr "Pool especificado dos veces.\n"
 
-#: src/dird/catreq.c:544
-#, 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"
+#~ msgid "Restore Client specified twice.\n"
+#~ msgstr "Restaurar Cliente especificado dos veces.\n"
 
-#: 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"
+#~ msgid "Plugin Options not yet implemented.\n"
+#~ msgstr "Opciones de Plugin todavía no se ha implementado.\n"
 
-#: src/dird/catreq.c:586
-#, fuzzy, c-format
-msgid "attribute create error. %s"
-msgstr "error al crear Atributo.%s"
+#~ msgid "Plugin Options specified twice.\n"
+#~ msgstr "Opciones de Plugin especificado dos veces.\n"
 
-#: src/dird/catreq.c:592
-#, c-format
-msgid "Catalog error updating file digest. %s"
-msgstr "Error de catalogo actualizando archivo de resumen. %s"
+#~ msgid "No authoriztion for \"PluginOptions\" specification.\n"
+#~ msgstr "Sin autorización para especificación \"PluginOptions\".\n"
 
-#: src/dird/catreq.c:615
-#, c-format
-msgid "1994 Invalid Catalog Update: %s"
-msgstr "1994 Invalido Catálogo de Actualizaciones: %s"
+#~ msgid "Spool flag specified twice.\n"
+#~ msgstr "Bandera de cola especificada dos veces.\n"
 
-#: 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"
+#~ msgid "Invalid spooldata flag.\n"
+#~ msgstr "Invalida bandera spooldata.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "IgnoreDuplicateCheck flag specified twice.\n"
+#~ msgstr "Bandera de cola especificada dos veces.\n"
 
-#: src/dird/msgchan.c:106 src/tray-monitor/tray-monitor.c:952
-#: src/filed/job.c:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
-msgid "Storage daemon"
-msgstr "Demonio Storage"
+#, fuzzy
+#~ msgid "Invalid ignoreduplicatecheck flag.\n"
+#~ msgstr "Invalida bandera spooldata.\n"
 
-#: src/dird/msgchan.c:205
-#, c-format
-msgid "Storage daemon rejected Job command: %s\n"
-msgstr "Storage daemon rechazo Job comando: %s\n"
+#, fuzzy
+#~ msgid "Accurate flag specified twice.\n"
+#~ msgstr "Bandera de cola especificada dos veces.\n"
 
-#: src/dird/msgchan.c:213
-#, c-format
-msgid "<stored: bad response to Job command: %s\n"
-msgstr "<stored: mala respuesta para Job comando: %s\n"
+#, fuzzy
+#~ msgid "Invalid accurate flag.\n"
+#~ msgstr "Invalida bandera spooldata.\n"
 
-#: src/dird/msgchan.c:273
-#, fuzzy, c-format
-msgid "Using Device \"%s\" to read.\n"
-msgstr "Utilizando el dispositivo: \"%s\" para lectura.\n"
+#~ msgid "Job name specified twice.\n"
+#~ msgstr "Nombre del Job especificado dos veces.\n"
 
-#: src/dird/msgchan.c:311
-#, fuzzy, c-format
-msgid "Using Device \"%s\" to write.\n"
-msgstr "Utilizando el dispositivo: \"%s\" para escritura.\n"
+#, fuzzy
+#~ msgid "Media Type specified twice.\n"
+#~ msgstr "Replace especificado dos veces.\n"
 
-#: src/dird/msgchan.c:318
-#, c-format
-msgid ""
-"\n"
-"     Storage daemon didn't accept Device \"%s\" because:\n"
-"     %s"
-msgstr ""
-"\n"
-" Demonio Storage no aceptó Dispositivo \"%s\" porque:\n"
-" %s"
+#, fuzzy
+#~ msgid "NextPool specified twice.\n"
+#~ msgstr "Pool especificado dos veces.\n"
 
-#: src/dird/msgchan.c:322
-#, c-format
-msgid ""
-"\n"
-"     Storage daemon didn't accept Device \"%s\" command.\n"
-msgstr ""
-"\n"
-" Demonio Storage no aceptó Dispositivo \"%s\" comando.\n"
+#~ msgid "Invalid keyword: %s\n"
+#~ msgstr "Palabra clave inválida: %s\n"
 
-#: 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"
+#~ msgid "Catalog \"%s\" not found\n"
+#~ msgstr "Catalogo \"%s\" no encontrado\n"
 
-#: src/dird/msgchan.c:417
-msgid "Director's comm line to SD dropped.\n"
-msgstr ""
+#~ msgid "No authorization. Catalog \"%s\".\n"
+#~ msgstr "Sin autorización. Catalogo \"%s\".\n"
 
-#: src/tray-monitor/tray_conf.c:177
-#: src/qt-console/tray-monitor/tray_conf.cpp:177
-#, c-format
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr "Monitor: nombre=%s FDtimeout=%s SDtimeout=%s\n"
+#~ msgid "Verify Job \"%s\" not found.\n"
+#~ msgstr "Job Verificar \"%s\" no encontrado.\n"
 
-#: src/tray-monitor/tray_conf.c:183
-#: src/qt-console/tray-monitor/tray_conf.cpp:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr "Director: nombre=%s dirección=%s FDport=%d\n"
+#~ msgid "Migration Job \"%s\" not found.\n"
+#~ msgstr "Job Migración \"%s\" no encontrado.\n"
 
-#: src/tray-monitor/tray_conf.c:187
-#: src/qt-console/tray-monitor/tray_conf.cpp:187
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr "Cliente: nombre=%s dirección=%s FDport=%d\n"
+#~ msgid "The current %s retention period is: %s\n"
+#~ msgstr "El período actual %s de retención es: %s\n"
 
-#: src/tray-monitor/tray_conf.c:191
-#: src/qt-console/tray-monitor/tray_conf.cpp:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr "Storage: nombre=%s dirección=%s SDport=%d\n"
+#~ msgid "Continue? (yes/mod/no): "
+#~ msgstr "¿Continuar? (sí/mod/no):"
 
-#: src/tray-monitor/tray_conf.c:195
-#: src/qt-console/tray-monitor/tray_conf.cpp:195
-#: src/qt-console/bat_conf.cpp:157
-#, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr "ConsoleFont: nombre=%s font face=%s\n"
+#~ msgid "Enter new retention period: "
+#~ msgstr "Introduzca el nuevo periodo de retención:"
 
-#: src/tray-monitor/tray-monitor.c:114
-#, c-format
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-"Escrito por Nicolas Boichat (2004)\n"
-"\n"
-"Versión: %s (%s) %s %s %s\n"
-"\n"
-"Utilice: tray-monitor [-c archivo_configuración] [-d nivel_depuración]\n"
-" -c <archivo> establece archivo de configuración para archivo\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -t prueba - leer configuración y salir\n"
-" -? imprimir este mensaje.\n"
-"\n"
+#~ msgid "Invalid period.\n"
+#~ msgstr "Período no válido.\n"
 
-#: src/tray-monitor/tray-monitor.c:270
-#: src/qt-console/tray-monitor/tray-monitor.cpp:216
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
-msgstr ""
-"Error: %d Monitor de recursos definidos en %s. Usted debe definir un único "
-"monitor de recursos.\n"
+#~ msgid "The defined Storage resources are:\n"
+#~ msgstr "Los recursos Storage definidos son:\n"
 
-#: src/tray-monitor/tray-monitor.c:301
-#: src/qt-console/tray-monitor/tray-monitor.cpp:248
-#, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
-msgstr ""
-"Ningún recurso Cliente, Storage o Director definido en %s\n"
-"Sin esto, Yo no se como obtener el estado de los demonios File, Storage o "
-"Director :-(\n"
+#~ msgid "Select Storage resource"
+#~ msgstr "Seleccione recurso Storage"
 
-#: src/tray-monitor/tray-monitor.c:323
-#: src/qt-console/tray-monitor/tray-monitor.cpp:263
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
-msgstr ""
-"Invalido intervalo de actualización definido en %s\n"
-"Este valor debe ser mayor o igual a 1 segundo y menor o igual a 10 minutos "
-"(leer el valor:% d).\n"
+#~ msgid ""
+#~ "You must specify a \"use <catalog-name>\" command before continuing.\n"
+#~ msgstr ""
+#~ "Usted debe especificar un comando \"use <nombre-catalogo>\" antes de "
+#~ "continuar.\n"
 
-#: src/tray-monitor/tray-monitor.c:330
-msgid "Bacula daemon status monitor"
-msgstr "Monitor de Estado del demonio Bacula"
+#~ msgid "The defined Catalog resources are:\n"
+#~ msgstr "Los recursos Catalogo definidos son:\n"
 
-#: src/tray-monitor/tray-monitor.c:339
-msgid "Open status window..."
-msgstr "Abrir la ventana de estado..."
+#~ msgid "Catalog"
+#~ msgstr "Catalogo"
 
-#: src/tray-monitor/tray-monitor.c:345
-msgid "Exit"
-msgstr "Salir"
+#~ msgid "Select Catalog resource"
+#~ msgstr "Seleccione recurso Catalogo"
 
-#: src/tray-monitor/tray-monitor.c:357
-msgid "Bacula tray monitor"
-msgstr "Bacula tray monitor"
+#~ msgid "The defined Job resources are:\n"
+#~ msgstr "Los recursos Job definidos son:\n"
 
-#: src/tray-monitor/tray-monitor.c:382
-msgid " (DIR)"
-msgstr "(DIR)"
+#~ msgid "Select Job resource"
+#~ msgstr "Seleccione recurso Job"
 
-#: src/tray-monitor/tray-monitor.c:386
-msgid " (FD)"
-msgstr "(FD)"
+#, fuzzy
+#~ msgid "Error: Restore Job resource \"%s\" does not exist.\n"
+#~ msgstr "Error: recurso Pool \"%s\" no existe.\n"
 
-#: src/tray-monitor/tray-monitor.c:390
-msgid " (SD)"
-msgstr "(SD)"
+#~ msgid "The defined Restore Job resources are:\n"
+#~ msgstr "Los recursos Restore definidos son:\n"
 
-#: src/tray-monitor/tray-monitor.c:403
-msgid "Unknown status."
-msgstr "Estado desconocido."
+#~ msgid "Select Restore Job"
+#~ msgstr "Seleccione recurso Restore"
 
-#: src/tray-monitor/tray-monitor.c:477
-msgid "Refresh interval in seconds: "
-msgstr "Intervalo de actualización en segundos:"
+#~ msgid "The defined Client resources are:\n"
+#~ msgstr "Los recursos Clientes definidos son:\n"
 
-#: src/tray-monitor/tray-monitor.c:485
-msgid "Refresh now"
-msgstr "Actualizar Ahora"
+#~ msgid "Select Client (File daemon) resource"
+#~ msgstr "Seleccione recurso Cliente (File Daemon)"
 
-#: src/tray-monitor/tray-monitor.c:489
-msgid "About"
-msgstr "Sobre"
+#~ msgid "Error: Client resource %s does not exist.\n"
+#~ msgstr "Error: Recurso Cliente %s no existe.\n"
 
-#: src/tray-monitor/tray-monitor.c:493
-msgid "Close"
-msgstr "Cerrar"
+#~ msgid "Could not find Client %s: ERR=%s"
+#~ msgstr "No se pudo encontrar el Cliente %s: ERR=%s"
 
-#: src/tray-monitor/tray-monitor.c:513
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr "Desconectando del Director %s:%d\n"
+#~ msgid "Could not find Client \"%s\": ERR=%s"
+#~ msgstr "No se pudo encontrar Cliente \"%s\": ERR=%s"
 
-#: src/tray-monitor/tray-monitor.c:516
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr "Desconectando del Cliente %s:%d\n"
+#~ msgid "Error obtaining client ids. ERR=%s\n"
+#~ msgstr "Error al obtener el ID del cliente. ERR=%s\n"
 
-#: src/tray-monitor/tray-monitor.c:519
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr "Desconectando del Almacenamiento %s:%d\n"
+#~ msgid "No clients defined. You must run a job before using this command.\n"
+#~ msgstr ""
+#~ "Clientes no definidos. Usted debe ejecutar un Job antes de usar este "
+#~ "comando.\n"
 
-#: src/tray-monitor/tray-monitor.c:560 src/tray-monitor/tray-monitor.c:571
-msgid "Bacula Tray Monitor"
-msgstr "Bacula Tray Monitor"
+#~ msgid "Defined Clients:\n"
+#~ msgstr "Clientes definidos:\n"
 
-#: src/tray-monitor/tray-monitor.c:562 src/tray-monitor/tray-monitor.c:573
-msgid "Written by Nicolas Boichat\n"
-msgstr "Escrito por Nicolás Boichat\n"
+#~ msgid "Select the Client"
+#~ msgstr "Seleccione el Cliente"
 
-#: src/tray-monitor/tray-monitor.c:563 src/tray-monitor/tray-monitor.c:574
-msgid "Version"
-msgstr "Version"
+#~ msgid "Could not find Pool \"%s\": ERR=%s"
+#~ msgstr "No se pudo encontrar Pool \"%s\": ERR=%s"
 
-#: src/tray-monitor/tray-monitor.c:656
-#: src/qt-console/tray-monitor/tray-monitor.cpp:331
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr "Error, CurrentItem no es un Cliente o un Storage ...\n"
+#~ msgid "No pools defined. Use the \"create\" command to create one.\n"
+#~ msgstr "Pools no definidos. Utilice el comando \"create\" para crear uno.\n"
 
-#: src/tray-monitor/tray-monitor.c:730
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-"Job actual: %s\n"
-"Ultimo job: %s"
+#~ msgid "Defined Pools:\n"
+#~ msgstr "Pools definidos:\n"
 
-#: src/tray-monitor/tray-monitor.c:742
-#, c-format
-msgid " (%d errors)"
-msgstr "(%d errores)"
+#~ msgid "Select the Pool"
+#~ msgstr "Seleccione el Pool"
 
-#: src/tray-monitor/tray-monitor.c:745
-#, c-format
-msgid " (%d error)"
-msgstr "(%d error)"
+#~ msgid "No access to Pool \"%s\"\n"
+#~ msgstr "No tienen acceso al Pool \"%s\"\n"
 
-#: src/tray-monitor/tray-monitor.c:783
-msgid "No current job."
-msgstr "Ningún trabajo actual."
+#~ msgid "Enter *MediaId or Volume name: "
+#~ msgstr "Introduzca MediaId o nombre del Volumen:"
 
-#: src/tray-monitor/tray-monitor.c:786
-msgid "No last job."
-msgstr "Ningún ultimo trabajo."
+#~ msgid "The defined Pool resources are:\n"
+#~ msgstr "Los recursos Pool definidos son:\n"
 
-#: src/tray-monitor/tray-monitor.c:794
-msgid "Job status: Created"
-msgstr "Estado del trabajo: Creado"
+#~ msgid "Select Pool resource"
+#~ msgstr "Seleccione recurso Pool"
 
-#: src/tray-monitor/tray-monitor.c:799
-msgid "Job status: Running"
-msgstr "Estado del trabajo: Ejecutando"
+#~ msgid "Enter the JobId to select: "
+#~ msgstr "Introduzca el JobId para seleccionar:"
 
-#: src/tray-monitor/tray-monitor.c:803
-msgid "Job status: Blocked"
-msgstr "Estado del trabajo: Bloqueado"
+#~ msgid "Could not find Job \"%s\": ERR=%s"
+#~ msgstr "No pudo encontrar Job \"%s\": ERR=%s"
 
-#: src/tray-monitor/tray-monitor.c:808
-msgid "Job status: Terminated"
-msgstr "Estado del trabajo: Terminado"
+#~ msgid "Automatically selected %s: %s\n"
+#~ msgstr "Seleccionado automáticamente %s: %s\n"
 
-#: src/tray-monitor/tray-monitor.c:813
-msgid "Job status: Terminated in error"
-msgstr "Estado del trabajo: Terminado con error"
+#~ msgid ""
+#~ "Your request has multiple choices for \"%s\". Selection is not possible "
+#~ "in batch mode.\n"
+#~ msgstr ""
+#~ "Su petición ha múltiples opciones para \"%s\". La selección no es posible "
+#~ "en modo batch.\n"
 
-#: src/tray-monitor/tray-monitor.c:819
-msgid "Job status: Error"
-msgstr "Estado del trabajo: Error"
+#~ msgid "Selection list for \"%s\" is empty!\n"
+#~ msgstr "Lista de selección para \"%s\" está vacía!\n"
 
-#: src/tray-monitor/tray-monitor.c:823
-msgid "Job status: Fatal error"
-msgstr "Estado del trabajo: Fatal error"
+#~ msgid "Automatically selected: %s\n"
+#~ msgstr "Seleccionado automáticamente: %s\n"
 
-#: src/tray-monitor/tray-monitor.c:828
-msgid "Job status: Verify differences"
-msgstr "Estado del Job: Verificar las diferencias"
+#~ msgid "Selection aborted, nothing done.\n"
+#~ msgstr "Selección abortada, no hay nada hecho.\n"
 
-#: src/tray-monitor/tray-monitor.c:833
-msgid "Job status: Canceled"
-msgstr "Estado del Job: Cancelado"
+#~ msgid "Please enter a number between 1 and %d\n"
+#~ msgstr "Por favor, introduzca un número entre 1 y %d\n"
 
-#: src/tray-monitor/tray-monitor.c:838
-msgid "Job status: Waiting on File daemon"
-msgstr "Estado del Job: Esperando en demonio File"
+#~ msgid "Storage name given twice.\n"
+#~ msgstr "Nombre de Storage especificado dos veces.\n"
 
-#: src/tray-monitor/tray-monitor.c:843
-msgid "Job status: Waiting on the Storage daemon"
-msgstr "Estado del Job: Esperando en demonio Storage"
+#~ msgid "Expecting jobid=nn command, got: %s\n"
+#~ msgstr "Esperando comando jobid=nn, obtuvo: %s.\n"
 
-#: src/tray-monitor/tray-monitor.c:848
-msgid "Job status: Waiting for new media"
-msgstr "Estado del Job: Esperando por nuevo medio"
+#~ msgid "JobId %s is not running.\n"
+#~ msgstr "JobId %s no está en ejecución.\n"
 
-#: src/tray-monitor/tray-monitor.c:853
-msgid "Job status: Waiting for Mount"
-msgstr "Estado del Job: Esperando por montar"
+#~ msgid "Expecting job=xxx, got: %s.\n"
+#~ msgstr "Esperando job=xxx, obtuvo: %s.\n"
 
-#: src/tray-monitor/tray-monitor.c:858
-msgid "Job status: Waiting for storage resource"
-msgstr "Estado del Job: Esperando por recurso storage"
+#~ msgid "Job \"%s\" is not running.\n"
+#~ msgstr "Job \"%s\" no está en ejecución.\n"
 
-#: src/tray-monitor/tray-monitor.c:863
-msgid "Job status: Waiting for job resource"
-msgstr "Estado del Job: Esperando por recurso job"
+#~ msgid "Expecting ujobid=xxx, got: %s.\n"
+#~ msgstr "Esperando ujobid=xxx, obtuvo: %s.\n"
 
-#: src/tray-monitor/tray-monitor.c:868
-msgid "Job status: Waiting for Client resource"
-msgstr "Estado del Job: Esperando por recurso Cliente"
+#~ msgid "Storage resource \"%s\": not found\n"
+#~ msgstr "Recurso Storage \"%s\": No encontrado\n"
 
-#: src/tray-monitor/tray-monitor.c:873
-msgid "Job status: Waiting for maximum jobs"
-msgstr "Estado del Job: Esperando por jobs máximos "
+#~ msgid "Enter autochanger drive[0]: "
+#~ msgstr "Introduzca unidad Autochanger [0]:"
 
-#: src/tray-monitor/tray-monitor.c:878
-msgid "Job status: Waiting for start time"
-msgstr "Estado del Job: Esperando por hora de inicio "
+#~ msgid "Enter autochanger slot: "
+#~ msgstr "Introduzca ranura Autochanger:"
 
-#: src/tray-monitor/tray-monitor.c:883
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr "Estado del Job: Esperando por jobs de prioridad mayor por finalizar"
+#~ msgid "Media Types defined in conf file:\n"
+#~ msgstr "Tipos de Media definidos en el archivo de configuración:\n"
 
-#: src/tray-monitor/tray-monitor.c:888
-#, c-format
-msgid "Unknown job status %c."
-msgstr "Estado del job desconocido %c."
+#~ msgid "Media Type"
+#~ msgstr "Tipo de Media"
 
-#: src/tray-monitor/tray-monitor.c:889
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr "Estado del job: Desconocido (%c)"
+#~ msgid "Select the Media Type"
+#~ msgstr "Seleccione el Tipo de Media"
 
-#: src/tray-monitor/tray-monitor.c:896
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr "Mala análisis: '%s' %d\n"
+#~ msgid "No Jobs running.\n"
+#~ msgstr "No hay Jobs en ejecución.\n"
 
-#: src/tray-monitor/tray-monitor.c:936 src/console/console.c:1143
-#, c-format
-msgid "Connecting to Director %s:%d\n"
-msgstr "Conectando al Director %s:%d\n"
+#~ msgid "None of your jobs are running.\n"
+#~ msgstr "Ninguno de sus trabajos se está ejecutando.\n"
 
-#: src/tray-monitor/tray-monitor.c:937
-#: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: src/qt-console/bcomm/dircomm.cpp:103
-#, c-format
-msgid "Connecting to Director %s:%d"
-msgstr "Conectando con Director %s:%d"
+#, fuzzy
+#~ msgid "Unauthorized command from this console for JobId=%d.\n"
+#~ msgstr "Comando no autorizado desde esta consola.\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:173
-msgid "Director daemon"
-msgstr "Servicio Director"
+#, fuzzy
+#~ msgid "Warning Job JobId=%d is not running. Continuing anyway...\n"
+#~ msgstr ""
+#~ "Advertencia Job %s no está¡ en ejecución. Continuar de todos modos ...\n"
 
-#: src/tray-monitor/tray-monitor.c:943
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr "Conectando con Cliente %s:%d\n"
+#, fuzzy
+#~ msgid "Confirm %s of %d Job%s (yes/no): "
+#~ msgstr "Confirmar cancelar(si/no): "
 
-#: src/tray-monitor/tray-monitor.c:944
-#: src/qt-console/tray-monitor/tray-monitor.cpp:366
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr "Conectando con Cliente %s:%d"
+#~ 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/tray-monitor/tray-monitor.c:945
-#: src/qt-console/tray-monitor/tray-monitor.cpp:368
-msgid "File daemon"
-msgstr "demonio File"
+#, fuzzy
+#~ msgid "Select Job(s):\n"
+#~ msgstr "Seleccione Job:\n"
 
-#: src/tray-monitor/tray-monitor.c:950
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr "Conectando con Storage %s:%d\n"
+#~ msgid "JobId=%s Job=%s"
+#~ msgstr "JobId=%s Job=%s"
 
-#: src/tray-monitor/tray-monitor.c:951
-#: src/qt-console/tray-monitor/tray-monitor.cpp:373
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr "Conectando con Storage %s:%d"
+#, fuzzy
+#~ msgid "Choose Job list to %s"
+#~ msgstr "Elija Job para cancelar"
 
-#: src/tray-monitor/tray-monitor.c:956 src/tray-monitor/tray-monitor.c:994
-#: src/qt-console/tray-monitor/tray-monitor.cpp:379
-#: src/qt-console/tray-monitor/tray-monitor.cpp:409
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr "Error, currentitem no es un cliente, un Storage o un Director..\n"
+#~ msgid "Cannot create UA thread: %s\n"
+#~ msgstr "No se puede crear hilo UA: %s\n"
 
-#: src/tray-monitor/tray-monitor.c:962
-msgid "Cannot connect to daemon.\n"
-msgstr "No se puede conectar al demonio.\n"
+#~ msgid "You have messages.\n"
+#~ msgstr "Usted tiene mensajes.\n"
 
-#: src/tray-monitor/tray-monitor.c:963
-#: src/qt-console/tray-monitor/tray-monitor.cpp:384
-msgid "Cannot connect to daemon."
-msgstr "No se puede conectar al demonio"
+#~ msgid "Status available for:\n"
+#~ msgstr "Estado disponible para:\n"
 
-#: src/tray-monitor/tray-monitor.c:975
-#: src/qt-console/tray-monitor/tray-monitor.cpp:393
-#, c-format
-msgid "Authentication error : %s"
-msgstr "Error de autenticación : %s"
+#~ msgid "Select daemon type for status"
+#~ msgstr "Seleccione el tipo de demonio para estado"
 
-#: src/tray-monitor/tray-monitor.c:982
-msgid "Opened connection with Director daemon.\n"
-msgstr "Conexión abierta con demonio Director.\n"
+#~ msgid "%s Version: %s (%s) %s %s %s\n"
+#~ msgstr "%s Versión: %s (%s) %s %s %s\n"
 
-#: src/tray-monitor/tray-monitor.c:983
-#: src/qt-console/tray-monitor/tray-monitor.cpp:400
-msgid "Opened connection with Director daemon."
-msgstr "Conexión abierta con demonio Director."
+#, fuzzy
+#~ 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/tray-monitor/tray-monitor.c:986
-msgid "Opened connection with File daemon.\n"
-msgstr "Conexión abierta con demonio File.\n"
+#~ 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"
 
-#: src/tray-monitor/tray-monitor.c:987
-#: src/qt-console/tray-monitor/tray-monitor.cpp:403
-msgid "Opened connection with File daemon."
-msgstr "Conexión abierta con demonio File."
+#, fuzzy
+#~ msgid "No authorization for Storage \"%s\"\n"
+#~ msgstr "Sin autorización. Storage \"%s\".\n"
 
-#: src/tray-monitor/tray-monitor.c:990
-msgid "Opened connection with Storage daemon.\n"
-msgstr "Conexión abierta con demonio Storage.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Failed to connect to Storage daemon %s.\n"
+#~ "====\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Fallo al conectar con el demonio Storage %s.\n"
+#~ "====\n"
 
-#: src/tray-monitor/tray-monitor.c:991
-#: src/qt-console/tray-monitor/tray-monitor.cpp:406
-msgid "Opened connection with Storage daemon."
-msgstr "Conexión abierta con demonio Storage."
+#~ msgid ""
+#~ "Failed to connect to Client %s.\n"
+#~ "====\n"
+#~ msgstr ""
+#~ "Fallo al conectar con el Cliente %s.\n"
+#~ "====\n"
+
+#~ msgid "Connected to file daemon\n"
+#~ msgstr "Conectado al demonio file\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Scheduled Jobs:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Scheduled Jobs:\n"
 
-#: src/tray-monitor/tray-monitor.c:1028
 #, fuzzy
-msgid "<< Error: BNET_SUB_PROMPT signal received. >>\n"
-msgstr "<< Error: BNET_PROMPT señal recibida. >>\n"
+#~ msgid ""
+#~ "Level          Type     Pri  Scheduled          Job Name           "
+#~ "Volume\n"
+#~ msgstr "Nivel Tipo Pri Scheduled Nombre Volumen\n"
 
-#: src/tray-monitor/tray-monitor.c:1033 src/wx-console/console_thread.cpp:494
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr "<< Heartbeat señal recibida, respondió. >>\n"
+#~ msgid "===================================================================================\n"
+#~ msgstr "===================================================================================\n"
 
-#: src/tray-monitor/tray-monitor.c:1037
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr "<< Inesperada señal recibida: %s >>\n"
+#, fuzzy
+#~ msgid ""
+#~ "Level          Type     Pri  Scheduled          Job Name           "
+#~ "Schedule\n"
+#~ msgstr "Nivel Tipo Pri Scheduled Nombre Volumen\n"
 
-#: src/tray-monitor/tray-monitor.c:1042
-msgid "<ERROR>\n"
-msgstr "<ERROR>\n"
+#, fuzzy
+#~ msgid "=====================================================================================\n"
+#~ msgstr "===================================================================================\n"
 
-#: src/tray-monitor/tray-monitor.c:1046
-#: src/qt-console/tray-monitor/tray-monitor.cpp:457
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr "Error: BNET_HARDEOF o BNET_ERROR"
+#~ 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/tray-monitor/tray-monitor.c:1052
-msgid "<STOP>\n"
-msgstr "<PARE>\n"
+#~ msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
+#~ msgstr "%-14s %-8s %3d %-18s %-18s %s\n"
 
-#: src/tray-monitor/tray-monitor.c:1056
-#: src/qt-console/tray-monitor/tray-monitor.cpp:466
-msgid "Error : Connection closed."
-msgstr "Error : Conexión cerrada."
+#~ 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/tray-monitor/authenticate.c:88
-#: src/qt-console/tray-monitor/authenticate.cpp:87
 #, fuzzy
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see "
-msgstr ""
-"Director problema de autorización.\n"
-"Lo mas probable es que las contraseñas no están de acuerdo.\n"
-"Por favor vea http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
-"html#SECTION003760000000000000000 para ayuda.\n"
+#~ msgid "Ignoring invalid value for limit. Max is 2000.\n"
+#~ msgstr "Ignorando valores inválidos para el día. Máximo es de 500.\n"
 
-#: src/tray-monitor/authenticate.c:97 src/console/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:96
-#, c-format
-msgid "Bad response to Hello command: ERR=%s\n"
-msgstr "mala respuesta al comando Hello: ERR=%s\n"
+#, fuzzy
+#~ msgid "Ignoring invalid time.\n"
+#~ msgstr "Ruta dada no válida.\n"
 
-#: src/tray-monitor/authenticate.c:104 src/wx-console/authenticate.c:157
-#: src/console/authenticate.c:159
-#: src/qt-console/tray-monitor/authenticate.cpp:103
-msgid "Director rejected Hello command\n"
-msgstr "Director rechazo comando Hello\n"
+#~ msgid "No Scheduled Jobs.\n"
+#~ msgstr "No hay Jobs Programados.\n"
 
-#: src/tray-monitor/authenticate.c:138
-#: src/qt-console/tray-monitor/authenticate.cpp:137
-#, fuzzy
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see "
-msgstr "Nombres o contraseñas en el Director o Storage no son las mismas.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Running Jobs:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Jobs Ejecutando:\n"
 
-#: src/tray-monitor/authenticate.c:145
-#: src/qt-console/tray-monitor/authenticate.cpp:144
-#, c-format
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
-msgstr "bdird<stored:mala respuesta al comando Hello: ERR=%s\n"
+#~ msgid "Console connected at %s\n"
+#~ msgstr "Consola conectada en %s\n"
 
-#: src/tray-monitor/authenticate.c:178
-#: src/qt-console/tray-monitor/authenticate.cpp:177
-#, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
-msgstr "Error al enviar Hello para el demonio File. ERR=%s\n"
+#~ msgid ""
+#~ "No Jobs running.\n"
+#~ "====\n"
+#~ msgstr ""
+#~ "Ningún Jobs ejecutando.\n"
+#~ "====\n"
 
-#: src/tray-monitor/authenticate.c:184
-#: src/qt-console/tray-monitor/authenticate.cpp:183
 #, fuzzy
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see "
-msgstr "Contraseñas del demonio Director y File no son los mismos.\n"
+#~ msgid " JobId  Type Level     Files     Bytes  Name              Status\n"
+#~ msgstr "JobId Nivel Nombre Estado\n"
 
-#: 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"
+#~ msgid "======================================================================\n"
+#~ msgstr "======================================================================\n"
 
-#: src/stored/reserve.c:156
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
-msgstr "Hey! num_writers=%d!!!!\n"
+#~ msgid "is waiting execution"
+#~ msgstr "esta esperando ejecución"
 
-#: src/stored/reserve.c:256
-msgid "3939 Could not get dcr\n"
-msgstr "3939 No se pudo obtener DCR\n"
+#~ msgid "is running"
+#~ msgstr "esta ejecutando"
 
-#: 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"
+#~ msgid "is blocked"
+#~ msgstr "esta bloqueado"
 
-#: src/stored/reserve.c:373
-#, c-format
-msgid "Failed command: %s\n"
-msgstr "Comando fallido: %s\n"
+#~ msgid "has terminated"
+#~ msgstr "ha terminado"
 
-#: src/stored/reserve.c:632 src/stored/dircmd.c:633
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
-msgstr ""
-"\n"
-"Dispositivo \"%s\" en el cambiador \"%s\" solicitado por el DIR no se pudo "
-"abrir o no existe.\n"
+#~ msgid "has terminated with warnings"
+#~ msgstr "ha terminado con advertencias"
 
-#: 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 ""
-"\n"
-"Dispositivo \"%s\" solicitado por el DIR no se pudo abrir o no existe.\n"
+#~ msgid "has erred"
+#~ msgstr "ha errado"
 
-#: 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"
+#~ msgid "has errors"
+#~ msgstr "tiene errores"
 
-#: 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"
+#~ msgid "has a fatal error"
+#~ msgstr "tiene un error fatal"
 
-#: 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"
+#~ msgid "has verify differences"
+#~ msgstr "ha verificar diferencias"
 
-#: 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"
+#~ msgid "has been canceled"
+#~ msgstr "ha sido cancelado"
 
-#: 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"
+#~ msgid "is waiting on Client"
+#~ msgstr "esta esperando por Client"
 
-#: 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 ""
-"3608 JobId=%u requiere Pool=\"%s\", pero hay Pool=\"%s\" nreserve=%d en la "
-"unidad %s.\n"
+#~ msgid "is waiting on Client %s"
+#~ msgstr "esta esperando por Cliente %s"
 
-#: 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"
+#, fuzzy
+#~ msgid "is waiting on Storage \"%s\""
+#~ msgstr "esta esperando por Storage %s"
 
-#: 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"
+#~ msgid "is waiting on Storage"
+#~ msgstr "esta esperando por Storage"
 
-#: 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"
+#~ msgid "is waiting on max Storage jobs"
+#~ msgstr "esta esperando por máximo Storage jobs"
 
-#: 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"
+#~ msgid "is waiting on max Client jobs"
+#~ msgstr "esta esperando por máximo Cliente jobs"
 
-#: 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"
+#~ msgid "is waiting on max Job jobs"
+#~ msgstr "esta esperando por máximo Jobs jobs"
 
-#: 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"
+#~ msgid "is waiting on max total jobs"
+#~ msgstr "esta esperando por máximo total jobs"
 
-#: 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"
+#, fuzzy
+#~ msgid "is waiting for its start time (%s)"
+#~ msgstr "esta esperando por su hora de inicio"
 
-#: src/stored/reserve.c:1068
-msgid "Logic error!!!! Should not get here.\n"
-msgstr "Error lógico!!! No debe llegar aquí.\n"
+#~ msgid "is waiting for higher priority jobs to finish"
+#~ msgstr "está esperando por jobs de una mayor prioridad para terminar"
 
-#: 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"
+#, fuzzy
+#~ msgid "is waiting for a Shared Storage device"
+#~ msgstr "esta esperando por Storage"
 
-#: src/stored/bls.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bls [options] <device-name>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -j              list jobs\n"
-"       -k              list blocks\n"
-"    (no j or k option) list saved files\n"
-"       -L              dump label\n"
-"       -p              proceed inspite of errors\n"
-"       -v              be verbose\n"
-"       -V              specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-"\n"
-"Utilice: bls [opciones] <nombre-dispositivo>\n"
-" -b <archivo> especifica un archivo bootstrap\n"
-" -c <archivo> especifica un archivo Storage de configuración\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -e <archivo> lista de exclusión\n"
-" -i <file> lista de inclusión\n"
-" -j lista de trabajos\n"
-" -k lista de bloques\n"
-" (no j o k opción) lista de archivos guardados\n"
-" -L dump label\n"
-" -p proceder a pesar de los errores\n"
-" -v detallado\n"
-" -V especifica nombres de  Volumen (separados por |)\n"
-" -? imprime esta mensaje\n"
-"\n"
+#~ msgid "SD committing Data"
+#~ msgstr "SD perpetrando Datos"
 
-#: src/stored/bls.c:149 src/stored/bextract.c:146
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
-msgstr "No se pudo abrir archivo excluir: %s, ERR=%s\n"
+#~ msgid "SD despooling Data"
+#~ msgstr "SD desencolando Datos"
 
-#: src/stored/bls.c:164 src/stored/bextract.c:161
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
-msgstr "No se pudo abrir archivo incluir: %s, ERR=%s\n"
+#~ msgid "SD despooling Attributes"
+#~ msgstr "SD desencolando Atributos"
 
-#: src/stored/bls.c:211
-msgid "No archive name specified\n"
-msgstr "Nombre de archivo no especificado\n"
+#~ msgid "Dir inserting Attributes"
+#~ msgstr "Insertando Atributos Dir"
 
-#: src/stored/bls.c:247
-#, c-format
-msgid ""
-"\n"
-"Warning, this Volume is a continuation of Volume %s\n"
-msgstr ""
-"\n"
-"Advertencia, este Volumen es una continuación del Volumen %s\n"
+#~ msgid "is in unknown state %c"
+#~ msgstr "esta en estado desconocido %c"
 
-#: src/stored/bls.c:290
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
-msgstr "Obtuvo EOM en archivo %u en el dispositivo %s, Volumen \"%s\"\n"
+#~ msgid "is waiting for a mount request"
+#~ msgstr "esta esperando por petición de montaje"
 
-#: src/stored/bls.c:301
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
-msgstr "Volumen Montado \"%s\".\n"
+#~ msgid "is waiting for an appendable Volume"
+#~ msgstr "está esperando un Volumen appendable"
 
-#: src/stored/bls.c:303
-#, c-format
-msgid "End of file %u on device %s, Volume \"%s\"\n"
-msgstr "Fin de archivo %u en el dispositivo %s, Volumen \"%s\"\n"
+#~ msgid "is waiting for Client to connect to Storage daemon"
+#~ msgstr "está esperando por cliente para conectarse al demonio Storage"
 
-#: src/stored/bls.c:327
-#, c-format
-msgid ""
-"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm="
-"%s rlen=%d\n"
-msgstr ""
-"Archivo:blk=%u:%u blk_num=%u blen=%u Primer registro FI=%s SessId=%u SessTim="
-"%u Strm=%s rlen=%d\n"
+#~ msgid "is waiting for Client %s to connect to Storage %s"
+#~ msgstr "está aguardando por el Cliente %s para conectarse al Storage %s"
 
-#: src/stored/bls.c:336
-#, c-format
-msgid "Block: %d size=%d\n"
-msgstr "Bloque: %d tamaño=%d\n"
+#, fuzzy
+#~ msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
+#~ msgstr "%6d\t%-6s\t%-20s\t%s\n"
 
-#: src/stored/bls.c:386 src/stored/bextract.c:328 src/stored/bscan.c:688
-msgid "Cannot continue.\n"
-msgstr "No se puede continuar.\n"
+#, fuzzy
+#~ msgid "%6d  %-4s %-3s %10s %10s %-17s %s\n"
+#~ msgstr "%6d %-6s %8s %10s %-7s %-8s %s\n"
 
-#: src/stored/bls.c:388
-msgid "Attrib unpack error!\n"
-msgstr ""
+#~ msgid "No Terminated Jobs.\n"
+#~ msgstr "Jobs No Terminados.\n"
 
-#: src/stored/bls.c:399
-#, c-format
-msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
-msgstr "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
+#~ msgid "====================================================================\n"
+#~ msgstr "====================================================================\n"
 
-#: 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"
+#~ msgid "\n"
+#~ msgstr "\n"
 
-#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:333
-msgid "Volume Label"
-msgstr "Etiqueta de Volumen"
+#~ msgid "add dir/file to be restored recursively, wildcards allowed"
+#~ msgstr ""
+#~ "añadir directorio/archivo a ser restaurado de forma recursiva, comodines "
+#~ "permitido"
 
-#: src/stored/bls.c:432 src/stored/label.c:1028 src/stored/bcopy.c:337
-msgid "Begin Job Session"
-msgstr "Inicio Job Sesión"
+#~ msgid "change current directory"
+#~ msgstr "cambio del directorio actual"
 
-#: src/stored/bls.c:437 src/stored/label.c:1031 src/stored/bcopy.c:341
-msgid "End Job Session"
-msgstr "Fin Job Sesión"
+#~ msgid "count marked files in and below the cd"
+#~ msgstr "contar archivos marcados dentro y por debajo de CD"
 
-#: src/stored/bls.c:441 src/stored/bcopy.c:346
-msgid "End of Medium"
-msgstr "Fin de Medio"
+#~ msgid "delete dir/file to be restored recursively in dir"
+#~ msgstr "eliminar dir/archivo a restaurar recursivamente en dir"
 
-#: src/stored/bls.c:444
-#, fuzzy
-msgid "End of Physical Medium"
-msgstr "Fin de Medio"
+#~ msgid "long list current directory, wildcards allowed"
+#~ msgstr "larga lista directorio actual, comodines permitido"
 
-#: src/stored/bls.c:447
-msgid "Start of object"
-msgstr ""
+#~ msgid "leave file selection mode"
+#~ msgstr "abandonar el modo de selección de archivos"
 
-#: src/stored/bls.c:450
-#, fuzzy
-msgid "End of object"
-msgstr "Fin de la Cinta"
+#~ msgid "estimate restore size"
+#~ msgstr "tamaño estimado de restauración"
 
-#: src/stored/bls.c:453 src/stored/label.c:1040 src/stored/bcopy.c:349
-msgid "Unknown"
-msgstr "Desconocido"
+#~ msgid "same as done command"
+#~ msgstr "mismo que el comando done"
 
-#: 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"
+#~ msgid "find files, wildcards allowed"
+#~ msgstr "encontrar los archivos, comodines permitidos"
 
-#: 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 ""
-"Monte Volumen \"%s\" en el dispositivo %s y presione ENTER cuando esté "
-"preparado:"
+#~ msgid "print help"
+#~ msgstr "imprimir ayuda"
 
-#: src/stored/dircmd.c:155
-#, c-format
-msgid "Connection request from %s failed.\n"
-msgstr "Fallo solicitud de conexión desde %s.\n"
+#~ msgid "list current directory, wildcards allowed"
+#~ msgstr "lista el directorio actual, comodines permitidos"
 
-#: 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"
+#, fuzzy
+#~ msgid "list subdir in current directory, wildcards allowed"
+#~ msgstr "lista el directorio actual, comodines permitidos"
 
-#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
-msgid "Unable to authenticate Director\n"
-msgstr "No se puede autentificar el Director\n"
+#~ msgid "list the marked files in and below the cd"
+#~ msgstr "lista los archivos marcados dentro y por debajo de CD"
 
-#: src/stored/dircmd.c:299
-#, c-format
-msgid "3991 Bad setdebug command: %s\n"
-msgstr "3991 Malo comando setdebug: %s\n"
+#, fuzzy
+#~ msgid "list the marked files in"
+#~ msgstr "lista los archivos marcados dentro y por debajo de CD"
 
-#: src/stored/dircmd.c:326
-msgid "3903 Error scanning cancel command.\n"
-msgstr "3903 Error escaneando comando cancel.\n"
+#~ msgid "mark dir/file to be restored recursively, wildcards allowed"
+#~ msgstr ""
+#~ "marca directorio/archivo para restaurar recursivamente, comodines "
+#~ "permitido"
 
-#: src/stored/dircmd.c:330
-#, c-format
-msgid "3904 Job %s not found.\n"
-msgstr "3904 Job %s no encontrado.\n"
+#~ msgid "mark directory name to be restored (no files)"
+#~ msgstr "marca nombre del directorio para ser restaurado (sin archivos)"
 
-#: src/stored/dircmd.c:358
-#, fuzzy, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
-msgstr "JobId %s, Job %s marcado para ser cancelado.\n"
+#~ msgid "print current working directory"
+#~ msgstr "imprimir directorio de trabajo actual"
 
-#: 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"
+#~ msgid "unmark dir/file to be restored recursively in dir"
+#~ msgstr ""
+#~ "desmarcar directorio/archivo para ser restaurado en el directorio "
+#~ "recursivamente"
 
-#: src/stored/dircmd.c:442
-#, c-format
-msgid "3903 Error scanning label command: %s\n"
-msgstr "3903 Error escaneando comando cancel: %s\n"
+#~ msgid "unmark directory name only no recursion"
+#~ msgstr "desmarcar solo nombre del directorio sin recursividad"
 
-#: 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"
+#~ msgid "quit and do not do restore"
+#~ msgstr "salir y no restaurar"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "You are now entering file selection mode where you add (mark) and\n"
+#~ "remove (unmark) files to be restored. No files are initially added, "
+#~ "unless\n"
+#~ "you used the \"all\" keyword on the command line.\n"
+#~ "Enter \"done\" to leave this mode.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Usted está entrando ahora en el modo de selección de archivo donde usted "
+#~ "agrega(mark) y\n"
+#~ "elimina (unmark) los archivos que va a restaurar. No hay archivos añadido "
+#~ "inicialmente, a menos que\n"
+#~ "usted utilice la palabra clave \"all\" en la línea de comandos. "
+#~ "Introduzca \"done\" para salir de este modo.\n"
+#~ "\n"
 
-#: src/stored/dircmd.c:516
-msgid "3921 Wrong volume mounted.\n"
-msgstr "3921 Volumen incorrecto montado.\n"
+#~ msgid "cwd is: %s\n"
+#~ msgstr "cwd es: %s\n"
 
-#: 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"
+#~ msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
+#~ msgstr "Invalido comando \"%s\". Introduzca \"done\" para salir.\n"
 
-#: 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"
+#~ msgid "No files marked.\n"
+#~ msgstr "Ningún archivo marcado.\n"
 
-#: 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"
+#~ msgid "1 file marked.\n"
+#~ msgstr "1 archivo marcado.\n"
 
-#: 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"
+#~ msgid "%s files marked.\n"
+#~ msgstr "%s archivos marcados.\n"
 
-#: src/stored/dircmd.c:578
-#, c-format
-msgid "3001 Mounted Volume: %s\n"
-msgstr "3001 Volumen Montado: %s\n"
+#~ msgid "No directories marked.\n"
+#~ msgstr "Ningún directorio marcado.\n"
 
-#: src/stored/dircmd.c:582 src/stored/dircmd.c:1215
-#, fuzzy, c-format
-msgid ""
-"3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
-"%s"
-msgstr ""
-"3902 No se puede montar el volumen en Storage Device %s debido a que:\n"
-"%s"
+#~ msgid "1 directory marked.\n"
+#~ msgstr "1 directorio marcado.\n"
 
-#: src/stored/dircmd.c:696
-msgid "Specified slot ignored. "
-msgstr "Ranura especificado ignorado."
+#~ msgid "%s directories marked.\n"
+#~ msgstr "%s directorios marcados.\n"
 
-#: 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"
+#~ 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/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"
+#~ msgid "No file specification given.\n"
+#~ msgstr "Especificación de archivo no dado.\n"
 
-#: 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"
-"If this is not a blank tape, try unmounting and remounting the Volume.\n"
-msgstr ""
-"3905 Dispositivo %s abierto, pero ninguno volumen Bacula está montado.\n"
-"Si esto no es una cinta en blanco, trate de desmontar y volver a montar el "
-"volumen.\n"
+#~ msgid "Node %s has no children.\n"
+#~ msgstr "Nodo %s no tiene hijos.\n"
 
-#: src/stored/dircmd.c:745
-#, fuzzy, c-format
-msgid "3001 Device \"%s\" is doing acquire.\n"
-msgstr "3001% s dispositivo está haciendo adquirir.\n"
+#~ 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/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"
+#~ msgid ""
+#~ "  Command    Description\n"
+#~ "  =======    ===========\n"
+#~ msgstr ""
+#~ "Comando Descripción\n"
+#~ " ======= ===========\n"
 
-#: 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"
+#~ 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/stored/dircmd.c:788
-#, fuzzy, c-format
-msgid "3002 Device \"%s\" is mounted.\n"
-msgstr "3002 Dispositivo %s está montado.\n"
+#~ msgid "Invalid path given.\n"
+#~ msgstr "Ruta dada no válida.\n"
 
-#: 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"
+#~ msgid "No files unmarked.\n"
+#~ msgstr "No hay archivos sin marcar.\n"
 
-#: 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"
+#~ msgid "1 file unmarked.\n"
+#~ msgstr "1 archivo sin marcar.\n"
 
-#: src/stored/dircmd.c:802
-#, fuzzy, c-format
-msgid "3930 Device \"%s\" is being released.\n"
-msgstr "3903 Dispositivo %s ha sido etiquetada.\n"
+#~ msgid "%s files unmarked.\n"
+#~ msgstr "%s archivos sin marcar.\n"
 
-#: src/stored/dircmd.c:806
-#, fuzzy, c-format
-msgid "3905 Unknown wait state %d\n"
-msgstr "Estado del Analizador %d desconocido\n"
+#~ msgid "No directories unmarked.\n"
+#~ msgstr "No hay directorios sin marcar.\n"
 
-#: src/stored/dircmd.c:816
-#, c-format
-msgid "3909 Error scanning mount command: %s\n"
-msgstr "3909 Error escaneando comando mount: %s\n"
+#~ msgid "1 directory unmarked.\n"
+#~ msgstr "1 directorio sin marcar.\n"
 
-#: 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"
+#~ msgid "%d directories unmarked.\n"
+#~ msgstr "%d directorios sin marcar.\n"
 
-#: src/stored/dircmd.c:851
-#, fuzzy, c-format
-msgid "3901 Device \"%s\" is already unmounted.\n"
-msgstr "3901 Dispositivos %s ya está desmontado.\n"
+#~ msgid "Update choice:\n"
+#~ msgstr "Actualizar selección:\n"
 
-#: src/stored/dircmd.c:866
-#, fuzzy, c-format
-msgid "3001 Device \"%s\" unmounted.\n"
-msgstr "3001 Dispositivo %s desmontado.\n"
+#~ msgid "Volume parameters"
+#~ msgstr "Parámetros del Volumen"
 
-#: 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"
+#~ msgid "Pool from resource"
+#~ msgstr "Pool de recursos"
 
-#: src/stored/dircmd.c:909
-#, c-format
-msgid "3907 Error scanning unmount command: %s\n"
-msgstr "3907 Error escaneando comando unmount: %s\n"
+#~ msgid "Slots from autochanger"
+#~ msgstr "Slots de cargador"
 
-#: src/stored/dircmd.c:937
-msgid "3916 Error scanning action_on_purge command\n"
-msgstr "3916 Error de escaneando comando action_on_purge\n"
+#~ msgid "Long term statistics"
+#~ msgstr "Estadísticas a largo plazo"
 
-#: src/stored/dircmd.c:980
-#, fuzzy, c-format
-msgid "3921 Device \"%s\" already released.\n"
-msgstr "3921 Dispositivo %s ya liberado.\n"
+#~ msgid "item"
+#~ msgstr "í­tem"
 
-#: src/stored/dircmd.c:987
-#, fuzzy, c-format
-msgid "3922 Device \"%s\" waiting for sysop.\n"
-msgstr "3922 Dispositivo %s aguardando por sysop.\n"
+#~ msgid "Choose catalog item to update"
+#~ msgstr "Seleccione el ítem del catalogo para ser actualizado"
 
-#: src/stored/dircmd.c:993
-#, fuzzy, c-format
-msgid "3922 Device \"%s\" waiting for mount.\n"
-msgstr "3922 Dispositivo %s aguardando por montar.\n"
+#~ msgid "Invalid VolStatus specified: %s\n"
+#~ msgstr "Invalido VolStatus especificado: %s\n"
 
-#: 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"
+#~ msgid "New Volume status is: %s\n"
+#~ msgstr "Nuevo estado del Volumen es: %s\n"
 
-#: src/stored/dircmd.c:1001
-#, fuzzy, c-format
-msgid "3914 Device \"%s\" is being labeled.\n"
-msgstr "3914 Dispositivo %s ha sido etiquetada.\n"
+#~ msgid "Invalid retention period specified: %s\n"
+#~ msgstr "Periodo de retención especificado no valido: %s\n"
 
-#: src/stored/dircmd.c:1009
-#, fuzzy, c-format
-msgid "3022 Device \"%s\" released.\n"
-msgstr "3022 Dispositivo %s liberado.\n"
+#~ msgid "New retention period is: %s\n"
+#~ msgstr "Nuevo periodo de retención es: %s\n"
 
-#: 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"
+#~ msgid "Invalid use duration specified: %s\n"
+#~ msgstr "Duración de uso especificado no válido: %s\n"
 
-#: 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"
+#~ msgid "New use duration is: %s\n"
+#~ msgstr "Nueva duración de uso es: %s\n"
 
-#: src/stored/dircmd.c:1062
-msgid "Error parsing bootstrap file.\n"
-msgstr "Error analizando archivo bootstrap.\n"
+#~ msgid "New max jobs is: %s\n"
+#~ msgstr "Nuevo máximo jobs es:  %s\n"
 
-#: src/stored/dircmd.c:1124
-#, fuzzy, c-format
-msgid "3998 Device \"%s\" is not an autochanger.\n"
-msgstr "3995 Dispositivo %s no es un auto-cargador.\n"
+#~ msgid "New max files is: %s\n"
+#~ msgstr "Nuevo máximo files es:  %s\n"
 
-#: 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"
+#~ msgid "Invalid max. bytes specification: %s\n"
+#~ msgstr "Invalido máximo bytes especificación: %s\n"
 
-#: src/stored/dircmd.c:1183
-#, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
-msgstr "3909 Error comando scanning readlabel: %s\n"
+#~ msgid "New Max bytes is: %s\n"
+#~ msgstr "Nuevo máximo bytes es:  %s\n"
 
-#: src/stored/dircmd.c:1211
-#, c-format
-msgid "3001 Volume=%s Slot=%d\n"
-msgstr "3001 Volumen=%s Ranura=%d\n"
+#~ msgid "Invalid value. It must be yes or no.\n"
+#~ msgstr "Valor no válido. Debe ser sí o no.\n"
 
-#: 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"
+#~ msgid "New Recycle flag is: %s\n"
+#~ msgstr "Nueva Recycle flag es: %s\n"
 
-#: src/stored/dircmd.c:1247
-#, fuzzy, c-format
-msgid ""
-"3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/mount.\n"
-msgstr ""
-"3932 Dispositivo %s está BLOQUEADO. Usuario sin montar en espera por medios/"
-"montar.\n"
+#~ msgid "New InChanger flag is: %s\n"
+#~ msgstr "Nueva InChanger flag es: %s\n"
 
-#: 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"
+#~ 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/stored/dircmd.c:1255
-#, fuzzy, c-format
-msgid "3934 Device \"%s\" is being initialized.\n"
-msgstr "3934 Dispositivo %s se está inicializado.\n"
+#~ msgid "Error updating media record Slot: ERR=%s"
+#~ msgstr "Error actualizando registro de medios de Ranuras: ERR=%s"
 
-#: 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"
+#~ msgid "New Slot is: %d\n"
+#~ msgstr "Nueva Ranura es: %d\n"
 
-#: 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"
+#~ msgid "New Pool is: %s\n"
+#~ msgstr "Nuevo Pool es: %s\n"
 
-#: src/stored/dircmd.c:1268
-#, fuzzy, c-format
-msgid "3936 Device \"%s\" is busy reading.\n"
-msgstr "3936 Dispositivo %s está ocupado leyendo.\n"
+#~ msgid "New RecyclePool is: %s\n"
+#~ msgstr "Nuevo RecyclePool es: %s\n"
 
-#: 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"
+#~ msgid "Error updating Volume record: ERR=%s"
+#~ msgstr "Error actualizando registro Volumen:  ERR=%s"
 
-#: src/stored/parse_bsr.c:122 src/stored/parse_bsr.c:126
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
-msgstr ""
-"Error archivo Bootstrap: %s\n"
-" : Linea %d, columna %d del archivo %s\n"
-"%s\n"
+#~ msgid "Volume defaults updated from \"%s\" Pool record.\n"
+#~ msgstr "Volumen por defecto actualizado desde registro \"%s\" Pool.\n"
 
-#: 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:279
-#, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
-msgstr "MediaType %s en BSR en el lugar inadecuado.\n"
+#~ msgid "Error updating Volume records: ERR=%s"
+#~ msgstr "Error actualizando registros Volumen:  ERR=%s"
 
-#: 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"
+#~ msgid "All Volume defaults updated from \"%s\" Pool record.\n"
+#~ msgstr ""
+#~ "Todos Volúmenes por defectos actualizado desde registro \"%s\" Pool.\n"
 
-#: 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"
+#~ msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
+#~ msgstr "Actualizando todos los pools, pero saltando PoolId=%d. ERR=%s\n"
 
-#: src/stored/parse_bsr.c:494
-msgid "JobType not yet implemented\n"
-msgstr "JobType aún no se han implementado\n"
+#~ msgid "Error updating media record Enabled: ERR=%s"
+#~ msgstr "Error actualizando registro media Activado:  ERR=%s"
 
-#: src/stored/parse_bsr.c:502
-msgid "JobLevel not yet implemented\n"
-msgstr "JobLevel aún no se han implementado\n"
+#~ msgid "New Enabled is: %d\n"
+#~ msgstr "Nuevo Activado es: %d\n"
 
-#: 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"
+#~ msgid "Error updating media record ActionOnPurge: ERR=%s"
+#~ msgstr "Error actualizando registro de medios ActionOnPurge: ERR=%s"
 
-#: src/stored/parse_bsr.c:743
-#, c-format
-msgid "VolFile     : %u-%u\n"
-msgstr "VolFile : %u-%u\n"
+#~ msgid "New ActionOnPurge is: %s\n"
+#~ msgstr "Nueva ActionOnPurge es: %s\n"
 
-#: src/stored/parse_bsr.c:751
-#, c-format
-msgid "VolBlock    : %u-%u\n"
-msgstr "VolBlock : %u-%u\n"
+#~ msgid "Volume Status"
+#~ msgstr "Estado del Volumen"
 
-#: src/stored/parse_bsr.c:759
-#, c-format
-msgid "VolAddr    : %llu-%llu\n"
-msgstr "VolAddr : %llu-%llu\n"
+#~ msgid "Volume Retention Period"
+#~ msgstr "Periodo de Retención del Volumen"
 
-#: src/stored/parse_bsr.c:768
-#, c-format
-msgid "FileIndex   : %u\n"
-msgstr "FileIndex : %u\n"
+#~ msgid "Volume Use Duration"
+#~ msgstr "Duración de uso del Volumen"
 
-#: src/stored/parse_bsr.c:770
-#, c-format
-msgid "FileIndex   : %u-%u\n"
-msgstr "FileIndex : %u-%u\n"
+#~ msgid "Maximum Volume Jobs"
+#~ msgstr "Máximo Volumen Jobs"
 
-#: src/stored/parse_bsr.c:780
-#, c-format
-msgid "JobId       : %u\n"
-msgstr "JobId : %u\n"
+#~ msgid "Maximum Volume Files"
+#~ msgstr "Máximo Archivos de Volumen"
 
-#: src/stored/parse_bsr.c:782
-#, c-format
-msgid "JobId       : %u-%u\n"
-msgstr "JobId : %u-%u\n"
+#~ msgid "Maximum Volume Bytes"
+#~ msgstr "Máximo Volumen Bytes"
 
-#: src/stored/parse_bsr.c:792
-#, c-format
-msgid "SessId      : %u\n"
-msgstr "SessId : %u\n"
+#~ msgid "Recycle Flag"
+#~ msgstr "Recycle Flag"
 
-#: src/stored/parse_bsr.c:794
-#, c-format
-msgid "SessId      : %u-%u\n"
-msgstr "SessId : %u-%u\n"
+#~ msgid "Slot"
+#~ msgstr "Ranura"
 
-#: src/stored/parse_bsr.c:803
-#, c-format
-msgid "VolumeName  : %s\n"
-msgstr "VolumeName : %s\n"
+#~ msgid "InChanger Flag"
+#~ msgstr "InChanger Flag"
 
-#: src/stored/parse_bsr.c:804
-#, c-format
-msgid "  MediaType : %s\n"
-msgstr "MediaType : %s\n"
+#~ msgid "Volume Files"
+#~ msgstr "Archivos de Volumen"
 
-#: src/stored/parse_bsr.c:805
-#, c-format
-msgid "  Device    : %s\n"
-msgstr "Dispositivo : %s\n"
+#~ msgid "Volume from Pool"
+#~ msgstr "Volumen de Pool"
 
-#: src/stored/parse_bsr.c:806
-#, c-format
-msgid "  Slot      : %d\n"
-msgstr "Ranura : %d\n"
+#~ msgid "All Volumes from Pool"
+#~ msgstr "Todos Volúmenes de Pool"
 
-#: src/stored/parse_bsr.c:815
-#, c-format
-msgid "Client      : %s\n"
-msgstr "Cliente : %s\n"
+#~ msgid "All Volumes from all Pools"
+#~ msgstr "Todos los Volúmenes de todas los Pools"
 
-#: src/stored/parse_bsr.c:823
-#, c-format
-msgid "Job          : %s\n"
-msgstr "Job : %s\n"
+#~ msgid "Enabled"
+#~ msgstr "Activado"
 
-#: src/stored/parse_bsr.c:831
-#, c-format
-msgid "SessTime    : %u\n"
-msgstr "SessTime : %u\n"
+#~ msgid "RecyclePool"
+#~ msgstr "RecyclePool"
 
-#: src/stored/parse_bsr.c:842
-msgid "BSR is NULL\n"
-msgstr "BSR is NULL\n"
+#~ msgid "Action On Purge"
+#~ msgstr "Action On Purge"
 
-#: src/stored/parse_bsr.c:846
-#, c-format
-msgid "Next        : 0x%x\n"
-msgstr "Siguiente : 0x%x\n"
+#~ msgid "Done"
+#~ msgstr "Hecho"
 
-#: src/stored/parse_bsr.c:847
-#, c-format
-msgid "Root bsr    : 0x%x\n"
-msgstr "Root bsr : 0x%x\n"
+#~ msgid "Updating Volume \"%s\"\n"
+#~ msgstr "Actualizando Volumen \"%s\"\n"
 
-#: src/stored/parse_bsr.c:859
-#, c-format
-msgid "count       : %u\n"
-msgstr "contado : %u\n"
+#~ msgid "Current Volume status is: %s\n"
+#~ msgstr "Actual estado del Volumen es: %s\n"
 
-#: src/stored/parse_bsr.c:860
-#, c-format
-msgid "found       : %u\n"
-msgstr "encontrado : %u\n"
+#~ msgid "Possible Values are:\n"
+#~ msgstr "Posibles Valores son:\n"
 
-#: src/stored/parse_bsr.c:863
-#, c-format
-msgid "done        : %s\n"
-msgstr "realizado : %s\n"
+#~ msgid "Choose new Volume Status"
+#~ msgstr "Seleccione el nuevo estado del Volumen"
 
-#: src/stored/parse_bsr.c:864
-#, c-format
-msgid "positioning : %d\n"
-msgstr "posicionamiento : %d\n"
+#~ msgid "Current retention period is: %s\n"
+#~ msgstr "Actual periodo de retención es: %s\n"
 
-#: src/stored/parse_bsr.c:865
-#, c-format
-msgid "fast_reject : %d\n"
-msgstr "fast_reject : %d\n"
+#~ msgid "Enter Volume Retention period: "
+#~ msgstr "Introduzca periodo de Retención del Volumen:"
 
-#: src/stored/ansi_label.c:96
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
-msgstr "Error de lectura en el dispositivo %s en la etiqueta ANSI. ERR=%s\n"
+#~ msgid "Current use duration is: %s\n"
+#~ msgstr "Duración de uso actual es: %s\n"
 
-#: src/stored/ansi_label.c:106
-msgid "Insane! End of tape while reading ANSI label.\n"
-msgstr "Insano! Fin de la cinta mientras leía la etiqueta ANSI.\n"
+#~ msgid "Enter Volume Use Duration: "
+#~ msgstr "Introduzca Duración de Uso de Volumen:"
 
-#: src/stored/ansi_label.c:132
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
-msgstr "Ninguna etiqueta VOL1 al leer etiqueta ANSI/IBM.\n"
+#~ msgid "Current max jobs is: %u\n"
+#~ msgstr "Máximo jobs actual es: %u\n"
 
-#: src/stored/ansi_label.c:155
-#, c-format
-msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
-msgstr "Buscando volumen ANSI \"%s\" obtuvo \"%s\"\n"
+#~ msgid "Enter new Maximum Jobs: "
+#~ msgstr "Introduzca nuevo Máximo de Trabajos"
 
-#: src/stored/ansi_label.c:166
-msgid "No HDR1 label while reading ANSI label.\n"
-msgstr "Ninguna etiqueta HDR1 al leer etiqueta ANSI.\n"
+#~ msgid "Current max files is: %u\n"
+#~ msgstr "Actual máximo de archivos es: %u\n"
 
-#: src/stored/ansi_label.c:172
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
-msgstr "Volumen \"%s\" ANSI/IBM, no pertenece a Bacula.\n"
+#~ msgid "Enter new Maximum Files: "
+#~ msgstr "Introduzca nuevo máximo de archivos:"
 
-#: src/stored/ansi_label.c:184
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
-msgstr "Ninguna etiqueta HDR2 al leer etiqueta ANSI/IBM.\n"
+#~ msgid "Current value is: %s\n"
+#~ msgstr "Valor actual es: %s\n"
 
-#: src/stored/ansi_label.c:199
-msgid "Unknown or bad ANSI/IBM label record.\n"
-msgstr "Registro de etiqueta ANSI/IBM desconocido o malo.\n"
+#~ msgid "Enter new Maximum Bytes: "
+#~ msgstr "Introduzca nuevo Máximo de Bytes:"
 
-#: src/stored/ansi_label.c:207
-msgid "Too many records in while reading ANSI/IBM label.\n"
-msgstr "Demasiados registros mientras leía etiqueta ANSI/IBM.\n"
+#~ msgid "Current recycle flag is: %s\n"
+#~ msgstr "Recycle flag actual es: %s\n"
 
-#: src/stored/ansi_label.c:307
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
-msgstr "Nombre de etiqueta de Volumen ANSI \"%s\" más de 6 caracteres.\n"
+#~ msgid "Enter new Recycle status: "
+#~ msgstr "Introduzca el nuevo estado de Reciclaje:"
 
-#: src/stored/ansi_label.c:333
-#, fuzzy, c-format
-msgid "Could not write ANSI VOL1 label. Wanted size=%d got=%d ERR=%s\n"
-msgstr "No ha podido escribir etiqueta ANSI VOL1. ERR=%s\n"
+#~ msgid "Current Slot is: %d\n"
+#~ msgstr "Ranura Actual es: %d\n"
 
-#: src/stored/ansi_label.c:371 src/stored/ansi_label.c:400
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
-msgstr "No ha podido escribir etiqueta ANSI HDR1. ERR=%s\n"
+#~ msgid "Enter new Slot: "
+#~ msgstr "Introduzca nueva Ranura:"
 
-#: src/stored/ansi_label.c:376 src/stored/ansi_label.c:407
-msgid "Could not write ANSI HDR1 label.\n"
-msgstr "No se puede escribir la etiqueta ANSI HDR1.\n"
+#~ msgid "Current InChanger flag is: %d\n"
+#~ msgstr "Bandera InChanger actual es: %d\n"
 
-#: src/stored/ansi_label.c:412
-#, c-format
-msgid "Error writing EOF to tape. ERR=%s"
-msgstr "Error al escribir EOF a la cinta. ERR=%s"
+#~ msgid "Set InChanger flag for Volume \"%s\": yes/no: "
+#~ msgstr "Configurar bandera InChanger para Volumen \"%s\": sí/no: "
 
-#: src/stored/ansi_label.c:417
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
-msgstr "write_ansi_ibm_label llamado para tipo non-ANSI/IBM\n"
+#~ msgid "New InChanger flag is: %d\n"
+#~ msgstr "Nueva InChanger flag es: %d\n"
 
-#: src/stored/append.c:68
-msgid "DCR is NULL!!!\n"
-msgstr "DCR es NULL!!!\n"
+#~ msgid ""
+#~ "Warning changing Volume Files can result\n"
+#~ "in loss of data on your Volume\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Advertencia, cambiar Archivos de Volumen puede resultar\n"
+#~ "en pérdida de datos en el Volumen\n"
+#~ "\n"
 
-#: src/stored/append.c:73
-msgid "DEVICE is NULL!!!\n"
-msgstr "DEVICE es NULL!!!\n"
+#~ msgid "Current Volume Files is: %u\n"
+#~ msgstr "Archivos de Volumen actual es: %u\n"
 
-#: src/stored/append.c:83
-msgid "Unable to set network buffer size.\n"
-msgstr "No se puede establecer el tamaño del búfer de red.\n"
+#~ msgid "Enter new number of Files for Volume: "
+#~ msgstr "Introduzca el nuevo número de Archivos para el Volumen:"
 
-#: 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"
+#~ 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/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"
+#~ msgid "Increase Volume Files? (yes/no): "
+#~ msgstr "Incrementar Archivo de Volumen? (sí/no):"
 
-#: 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"
+#~ msgid "New Volume Files is: %u\n"
+#~ msgstr "Nuevo Archivo de Volumen es: %u\n"
 
-#: 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"
+#~ msgid "Current Pool is: %s\n"
+#~ msgstr "Pool actual es: %s\n"
 
-#: 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"
+#~ msgid "Enter new Pool name: "
+#~ msgstr "Introduzca el nuevo nombre del Pool:"
 
-#: 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"
+#~ msgid "Current Enabled is: %d\n"
+#~ msgstr "Habilitado(Enabled) actual es: %d\n"
 
-#: 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"
+#~ msgid "Enter new Enabled: "
+#~ msgstr "Introduzca nuevo Habilitado(Enabled):"
 
-#: 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"
+#~ msgid "Current RecyclePool is: %s\n"
+#~ msgstr "RecyclePool actual es: %s\n"
 
-#: 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"
+#~ msgid "No current RecyclePool\n"
+#~ msgstr "No actual RecyclePool\n"
 
-#: 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"
+#~ msgid "Current ActionOnPurge is: %s\n"
+#~ msgstr "Actual ActionOnPurge es: %s\n"
 
-#: 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"
+#~ msgid "Enter new ActionOnPurge (one of: Truncate, None): "
+#~ msgstr "Introduzca nuevo ActionOnPurge (uno de: Truncar, Ninguno):"
 
-#: 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"
+#~ msgid "Selection terminated.\n"
+#~ msgstr "Selección terminada.\n"
 
-#: src/stored/vol_mgr.c:93
-#, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
-msgstr "No se puede inicializar la lista de bloqueo de volumen. ERR=%s\n"
+#~ msgid "Updating %i job(s).\n"
+#~ msgstr "Actualizando %i job(s).\n"
 
-#: src/stored/label.c:93
-#, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
-msgstr "No se puede rebobinar dispositivo %s: ERR=%s\n"
+#~ msgid "db_update_pool_record returned %d. ERR=%s\n"
+#~ msgstr "db_update_pool_record regreso %d. ERR=%s\n"
 
-#: src/stored/label.c:110 src/stored/label.c:202
-#, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
-msgstr ""
-"Volumen incorrecto montado en el dispositivo %s: Esperaba %s tiene %s\n"
+#~ msgid "Pool DB record updated from resource.\n"
+#~ msgstr "registro BD Pool actualizado desde recursos.\n"
 
-#: src/stored/label.c:113 src/stored/label.c:190
-#, c-format
-msgid "Too many tries: %s"
-msgstr "Demasiados intentos: %s"
+#~ msgid "Expect JobId keyword, not found.\n"
+#~ msgstr "Esperaba palabra clave JobId, no encontrada.\n"
 
-#: src/stored/label.c:130
-#, c-format
-msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
-msgstr ""
-"Volumen requerido \"%s\" en %s no es un volumen etiquetado Bacula, debido a "
-"que: ERR=%s"
+#~ msgid "Neither Client nor StartTime specified.\n"
+#~ msgstr "Ni el Cliente ni StartTime especificado.\n"
 
-#: src/stored/label.c:135
-msgid "Could not read Volume label from block.\n"
-msgstr "No se pudo leer la etiqueta de volumen desde bloque.\n"
+#~ msgid "Start Virtual Backup JobId %s, Job=%s\n"
+#~ msgstr "Respaldo Virtual iniciado JobId %s, Job=%s\n"
 
-#: src/stored/label.c:138
-#, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
-msgstr "No se pudo unserialize etiqueta del Volumen: ERR=%s\n"
+#~ msgid ""
+#~ "This Job is not an Accurate backup so is not equivalent to a Full "
+#~ "backup.\n"
+#~ msgstr ""
+#~ "Este trabajo no es una copia de seguridad exacta, por lo que no es "
+#~ "equivalente a una copia de seguridad completa.\n"
 
-#: src/stored/label.c:143
-#, c-format
-msgid "Volume Header Id bad: %s\n"
-msgstr "Malo Id de cabecera de Volumen: %s\n"
+#, fuzzy
+#~ msgid "No valid Jobs found from user selection.\n"
+#~ msgstr "No se encontró ningún Job para: %s.\n"
 
-#: src/stored/label.c:175
-#, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
-msgstr ""
-"Volumen en %s tiene la versión incorrecta de Bacula. Busco %d tiene %d\n"
+#, fuzzy
+#~ msgid "Using user supplied JobIds=%s\n"
+#~ msgstr "%s utilizando JobId=%s Job=%s\n"
 
-#: src/stored/label.c:186
-#, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
-msgstr "Volumen en %s tiene una malo tipo de etiqueta Bacula: %x\n"
+#~ msgid "No previous Jobs found.\n"
+#~ msgstr "Jobs previos no encontrados.\n"
 
-#: 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"
+#~ msgid "Error getting Job record for previous Job: ERR=%s"
+#~ msgstr "Error obteniendo registro Job para Job anterior: ERR=%s"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Backup Level:           Virtual Full\n"
+#~ "  Client:                 \"%s\" %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Pool:                   \"%s\" (From %s)\n"
+#~ "  Catalog:                \"%s\" (From %s)\n"
+#~ "  Storage:                \"%s\" (From %s)\n"
+#~ "  Scheduled time:         %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Elapsed time:           %s\n"
+#~ "  Priority:               %d\n"
+#~ "  SD Files Written:       %s\n"
+#~ "  SD Bytes Written:       %s (%sB)\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s (%sB)\n"
+#~ "  SD Errors:              %d\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ " Build OS: %s %s %s\n"
+#~ " JobId: %d\n"
+#~ " Job: %s\n"
+#~ " Nivel del Respaldo: Virtual Completo\n"
+#~ " Cliente: \"%s\" %s\n"
+#~ " FileSet: \"%s\" %s\n"
+#~ " Pool: \"%s\" (Desde %s)\n"
+#~ " Catalogo: \"%s\" (Desde %s)\n"
+#~ " Storage: \"%s\" (Desde %s)\n"
+#~ " Hora programada: %s\n"
+#~ " Hora de inicio: %s\n"
+#~ " Hora de finalización: %s\n"
+#~ " Tiempo transcurrido: %s\n"
+#~ " Prioridad: %d\n"
+#~ " SD Archivos Escritos: %s\n"
+#~ " SD Bytes Escritos: %s (%sB)\n"
+#~ " Tasa: %.1f KB/s\n"
+#~ " Nombre del Volumen(es): %s\n"
+#~ " Id de Sesión de Volumen: %d\n"
+#~ " Tiempo de Sesión de Volumen: %d\n"
+#~ " Ultimo Bytes del  Volumen: %s (%sB)\n"
+#~ " Errores del SD: %d\n"
+#~ " Estado de terminación del SD: %s\n"
+#~ " Terminación: %s\n"
+#~ "\n"
 
-#: 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"
+#~ msgid "Unimplemented Verify level %d(%c)\n"
+#~ msgstr "Nivel Verify no implementado %d(%c)\n"
 
-#: 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"
+#~ msgid ""
+#~ "Unable to find JobId of previous InitCatalog Job.\n"
+#~ "Please run a Verify with Level=InitCatalog before\n"
+#~ "running the current Job.\n"
+#~ msgstr ""
+#~ "No se puede encontrar JobId de Job InitCatalog anterior.\n"
+#~ "Por favor, ejecutar Verificar con Nivel=InitCatalog antes de\n"
+#~ " ejecutar el Job actual.\n"
 
-#: 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"
+#~ msgid "Unable to find JobId of previous Job for this client.\n"
+#~ msgstr ""
+#~ "No se puede encontrar JobId del trabajo anterior por este cliente.\n"
 
-#: 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"
+#~ msgid "Could not get job record for previous Job. ERR=%s"
+#~ msgstr "No se ha podido obtener el registro Job para Job anterior. ERR=%s"
 
-#: 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"
+#~ msgid "Last Job %d did not terminate normally. JobStatus=%c\n"
+#~ msgstr "Último Job %d no termino normalmente. JobStatus=%c\n"
 
-#: 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"
+#~ msgid "Verifying against JobId=%d Job=%s\n"
+#~ msgstr "Verificar contra JobId=%d Job=%s\n"
 
-#: 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"
+#~ msgid "Start Verify JobId=%s Level=%s Job=%s\n"
+#~ msgstr "Inicio Verificar JobId=%s Nivel=%s Job=%s\n"
 
-#: src/stored/label.c:721
-#, c-format
-msgid "Bad Volume session label = %d\n"
-msgstr "Mala etiqueta de Volumen de sesión = %d\n"
+#~ msgid "Deprecated feature ... use bootstrap.\n"
+#~ msgstr "Función obsoleta ... use bootstrap.\n"
 
-#: 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"
+#~ msgid "Unimplemented verify level %d\n"
+#~ msgstr "Nivel Verify no implementado %d\n"
 
-#: src/stored/label.c:903
-#, c-format
-msgid "Unknown %d"
-msgstr "Desconocido %d"
+#~ msgid "Verify OK"
+#~ msgstr "Verificar OK"
 
-#: src/stored/label.c:907
-#, c-format
-msgid ""
-"\n"
-"Volume Label:\n"
-"Id                : %sVerNo             : %d\n"
-"VolName           : %s\n"
-"PrevVolName       : %s\n"
-"VolFile           : %d\n"
-"LabelType         : %s\n"
-"LabelSize         : %d\n"
-"PoolName          : %s\n"
-"MediaType         : %s\n"
-"PoolType          : %s\n"
-"HostName          : %s\n"
-msgstr ""
-"\n"
-"Volumen Label:\n"
-"Id : %sVerNo : %d\n"
-"VolName : %s\n"
-"PrevVolName : %s\n"
-"VolFile : %d\n"
-"LabelType : %s\n"
-"LabelSize : %d\n"
-"PoolName : %s\n"
-"MediaType : %s\n"
-"PoolType : %s\n"
-"HostName : %s\n"
-
-#: src/stored/label.c:929
-#, c-format
-msgid "Date label written: %s\n"
-msgstr "Fecha de etiqueta escrito: %s\n"
+#~ msgid "*** Verify Error ***"
+#~ msgstr "*** Verificar Error ***"
 
-#: 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"
+#~ msgid "Verify warnings"
+#~ msgstr "Verificar advertencias"
 
-#: src/stored/label.c:955
-#, c-format
-msgid ""
-"\n"
-"%s Record:\n"
-"JobId             : %d\n"
-"VerNum            : %d\n"
-"PoolName          : %s\n"
-"PoolType          : %s\n"
-"JobName           : %s\n"
-"ClientName        : %s\n"
-msgstr ""
-"\n"
-"%s Registro:\n"
-"JobId : %d\n"
-"VerNum : %d\n"
-"Nombre Pool : %s\n"
-"Tipo del Pool : %s\n"
-"Nombre del Job : %s\n"
-"Nombre del Cliente : %s\n"
-
-#: src/stored/label.c:968
-#, c-format
-msgid ""
-"Job (unique name) : %s\n"
-"FileSet           : %s\n"
-"JobType           : %c\n"
-"JobLevel          : %c\n"
-msgstr ""
-"Job (nombre único) : %s\n"
-"FileSet : %s\n"
-"Tipo de Job : %c\n"
-"JobLevel : %c\n"
+#~ msgid "Verify Canceled"
+#~ msgstr "Verificar Cancelada"
 
-#: src/stored/label.c:977
-#, c-format
-msgid ""
-"JobFiles          : %s\n"
-"JobBytes          : %s\n"
-"StartBlock        : %s\n"
-"EndBlock          : %s\n"
-"StartFile         : %s\n"
-"EndFile           : %s\n"
-"JobErrors         : %s\n"
-"JobStatus         : %c\n"
-msgstr ""
-"JobFiles : %s\n"
-"JobBytes : %s\n"
-"StartBlock : %s\n"
-"EndBlock : %s\n"
-"StartFile : %s\n"
-"EndFile : %s\n"
-"JobErrors : %s\n"
-"JobStatus : %c\n"
-
-#: src/stored/label.c:998
-#, c-format
-msgid "Date written      : %s\n"
-msgstr "Fecha escrito: %s\n"
+#~ msgid "Verify Differences"
+#~ msgstr "Verificar Diferencias"
 
-#: 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"
+#~ msgid "Inappropriate term code: %d %c\n"
+#~ msgstr "Inadecuado código de terminación: %d %c\n"
 
-#: src/stored/label.c:1022
-msgid "Fresh Volume"
-msgstr "Volumen fresco"
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  FileSet:                %s\n"
+#~ "  Verify Level:           %s\n"
+#~ "  Client:                 %s\n"
+#~ "  Verify JobId:           %d\n"
+#~ "  Verify Job:             %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Files Expected:         %s\n"
+#~ "  Files Examined:         %s\n"
+#~ "  Non-fatal FD errors:    %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ " Build OS: %s %s %s\n"
+#~ " JobId: %d\n"
+#~ " Job: %s\n"
+#~ " FileSet: %s\n"
+#~ " Verificar Nivel: %s\n"
+#~ " Cliente: %s\n"
+#~ " Verificar JobId: %d\n"
+#~ " Verificar Job: %s\n"
+#~ " Hora de inicio: %s\n"
+#~ " Hora de finalización: %s\n"
+#~ " Archivos Esperado: %s\n"
+#~ " Archivos Examinados: %s\n"
+#~ " No-fatal FD errores: %d\n"
+#~ " Estado de terminación del FD: %s\n"
+#~ " Estado de terminación del SD: %s\n"
+#~ " Terminación: %s\n"
+#~ "\n"
 
-#: src/stored/label.c:1025
-msgid "Volume"
-msgstr "Volumen"
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build:                  %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  FileSet:                %s\n"
+#~ "  Verify Level:           %s\n"
+#~ "  Client:                 %s\n"
+#~ "  Verify JobId:           %d\n"
+#~ "  Verify Job:             %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Files Examined:         %s\n"
+#~ "  Non-fatal FD errors:    %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ " Build: %s %s %s\n"
+#~ " JobId: %d\n"
+#~ " Job: %s\n"
+#~ " FileSet: %s\n"
+#~ " Verificar Nivel: %s\n"
+#~ " Cliente: %s\n"
+#~ " Verificar JobId: %d\n"
+#~ " Verificar Job: %s\n"
+#~ " Hora de Inicio: %s\n"
+#~ " Hora de Finalización: %s\n"
+#~ " Archivos Examinados: %s\n"
+#~ " No-fatal FD errores: %d\n"
+#~ " FD estado de finalización: %s\n"
+#~ " Terminación: %s\n"
+#~ "\n"
 
-#: src/stored/label.c:1034 src/stored/read_record.c:428
-msgid "End of Media"
-msgstr "Fin de la Media"
+#~ msgid ""
+#~ "bird<filed: bad attributes, expected 3 fields got %d\n"
+#~ " mslen=%d msg=%s\n"
+#~ msgstr ""
+#~ "bird<filed: malos atributos, esperaba 3 campos, obtuvo %d\n"
+#~ " mslen=%d msg=%s\n"
 
-#: src/stored/label.c:1037
-msgid "End of Tape"
-msgstr "Fin de la Cinta"
+#~ msgid "New file: %s\n"
+#~ msgstr "Nuevo archivo: %s\n"
 
-#: 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"
+#~ msgid "File not in catalog: %s\n"
+#~ msgstr "No Archivos en el catálogo: %s\n"
 
-#: src/stored/label.c:1062
-msgid "End of physical tape.\n"
-msgstr "Fin de la cinta física.\n"
+#~ msgid "      st_ino   differ. Cat: %s File: %s\n"
+#~ msgstr "st_ino diferentes. Cat: %s Archivo: %s\n"
 
-#: 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"
+#~ msgid "      st_mode  differ. Cat: %x File: %x\n"
+#~ msgstr "st_mode diferentes. Cat: %x Archivo: %x\n"
 
-#: 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"
+#~ msgid "      st_nlink differ. Cat: %d File: %d\n"
+#~ msgstr "st_nlink diferentes. Cat: %d Archivo: %d\n"
 
-#: 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"
+#~ msgid "      st_uid   differ. Cat: %u File: %u\n"
+#~ msgstr "st_uid diferentes. Cat: %u Archivo: %u\n"
 
-#: src/stored/status.c:99
-msgid "Used Volume status:\n"
-msgstr "Estado de Volumen Usados:\n"
+#~ msgid "      st_gid   differ. Cat: %u File: %u\n"
+#~ msgstr "st_gid diferentes. Cat: %u Archivo: %u\n"
 
-#: src/stored/status.c:117
-msgid ""
-"\n"
-"SD Resources:\n"
-msgstr ""
+#~ msgid "      st_size  differ. Cat: %s File: %s\n"
+#~ msgstr "st_size diferentes. Cat: %s Archivo: %s\n"
 
-#: src/stored/status.c:153
-msgid ""
-"\n"
-"Device status:\n"
-msgstr ""
-"\n"
-"Estado del dispositivo:\n"
+#~ msgid "      st_atime differs\n"
+#~ msgstr "st_atime diferentes\n"
 
-#: src/stored/status.c:157
-#, c-format
-msgid "Autochanger \"%s\" with devices:\n"
-msgstr "Auto-cambiador \"%s\" con los dispositivos:\n"
+#~ msgid "      st_mtime differs\n"
+#~ msgstr "st_mtime diferentes\n"
 
-#: src/stored/status.c:177
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Device %s is %s:\n"
-"    Volume:      %s\n"
-"    Pool:        %s\n"
-"    Media type:  %s\n"
-msgstr ""
-"Dispositivo %s está montado con:\n"
-" Volumen: %s\n"
-" Pool: %s\n"
-" Tipo de Media: %s\n"
+#~ msgid "      st_ctime differs\n"
+#~ msgstr "st_ctime diferentes\n"
 
-#: src/stored/status.c:182
-#, fuzzy
-msgid "waiting for"
-msgstr "Esperando por montaje"
+#~ msgid "      st_size  decrease. Cat: %s File: %s\n"
+#~ msgstr "st_size disminución. Cat: %s Archivo: %s\n"
 
-#: src/stored/status.c:182
-msgid "mounted with"
-msgstr ""
+#~ msgid "MD5/SHA1 index %d not same as attributes %d\n"
+#~ msgstr "MD5/SHA1 atributo index %d no igual a %d\n"
 
-#: src/stored/status.c:184
-#, fuzzy
-msgid "*unknown*"
-msgstr "desconocido"
+#~ msgid "      %s differs. File=%s Cat=%s\n"
+#~ msgstr "%s es diferente. Archivo=%s Cat=%s\n"
 
-#: 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"
+#~ msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
+#~ msgstr "bdird<filed: malos atributos desde campo n=%d : %s\n"
 
-#: 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"
+#~ msgid "The following files are in the Catalog but not on %s:\n"
+#~ msgstr "Los siguientes archivos están en el catálogo, pero no en %s:\n"
 
-#: 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"
+#~ msgid "File: %s\n"
+#~ msgstr "Archivo: %s\n"
 
-#: src/stored/status.c:220
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
-msgstr "Situado en el archivo=%s Bloque=%s\n"
+#, fuzzy
+#~ msgid "Cannot verify checksum for %s\n"
+#~ msgstr "No se puede encontrar el recurso Schedule %s\n"
 
-#: src/stored/status.c:227
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Device %s is not open.\n"
-msgstr "Dispositivo %s no está abierto.\n"
+#~ msgid "%s digest initialization failed\n"
+#~ msgstr "Inicialización de %s Digest ha fallado\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"
+#~ msgid "2991 Bad accurate command\n"
+#~ msgstr "2991 Malo comando accurate\n"
 
-#: 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"
+#~ msgid "Network send error to SD. ERR=%s\n"
+#~ msgstr "Error de red al enviar para SD. ERR=%s\n"
 
-#: src/stored/status.c:293
-msgid ""
-"No DEVICE structure.\n"
-"\n"
-msgstr ""
-"Ninguna estructura del DISPOSITIVO.\n"
-"\n"
+#, fuzzy
+#~ msgid "aclx_get error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de acl_get en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:299
-msgid "    Device is BLOCKED. User unmounted.\n"
-msgstr "Dispositivo está BLOQUEADO. Usuario desmontado.\n"
+#, fuzzy
+#~ 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/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"
+#, fuzzy
+#~ 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/stored/status.c:313
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting for mount of volume \"%s\",\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-"Dispositivo está BLOQUEADO esperando por montaje de volumen \"%s\",\n"
-" Pool: %s\n"
-" Tipo de Media: %s\n"
+#, fuzzy
+#~ msgid ""
+#~ "Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
+#~ "support\n"
+#~ msgstr ""
+#~ "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
+#~ "soporte a acl\n"
 
-#: src/stored/status.c:322
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting to create a volume for:\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-"Dispositivo está BLOQUEADO esperando para crear un volumen para:\n"
-" Pool: %s\n"
-" Tipo de Media: %s\n"
+#, fuzzy
+#~ msgid ""
+#~ "Trying to restore NFSv4 acl on file \"%s\" on filesystem without NFS4 acl "
+#~ "support\n"
+#~ msgstr ""
+#~ "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
+#~ "soporte a acl\n"
 
-#: src/stored/status.c:333
-msgid "    Device is BLOCKED waiting for media.\n"
-msgstr "Dispositivo está bloqueado esperando por medios.\n"
+#, fuzzy
+#~ msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de acl_set en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:339
-msgid "    Device is being initialized.\n"
-msgstr "Dispositivo se está inicializando.\n"
+#, fuzzy
+#~ msgid "aclx_put error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de acl_get en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:343
-msgid "    Device is blocked labeling a Volume.\n"
-msgstr "El dispositivo está bloqueado etiquetando un volumen.\n"
+#~ msgid "acl_to_text error on file \"%s\": ERR=%s\n"
+#~ msgstr "acl_to_text error en el archivo \"%s\": ERR=%s\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"
+#~ 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/stored/status.c:356
-#, c-format
-msgid "    Drive %d is not loaded.\n"
-msgstr "Unidad %d no está cargada.\n"
+#, fuzzy
+#~ 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/stored/status.c:371 src/stored/btape.c:688
-#, c-format
-msgid "Configured device capabilities:\n"
-msgstr "Capacidades del dispositivo configuradas:\n"
+#~ 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/stored/status.c:389
-msgid "Device state:\n"
-msgstr "Estado del dispositivo:\n"
+#~ msgid "acl_from_text error on file \"%s\": ERR=%s\n"
+#~ msgstr "acl_from_text error en el archivo \"%s\": ERR=%s\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"
+#~ msgid "acl_valid error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de acl_valid en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:409
 #, fuzzy
-msgid "Attached Jobs: "
-msgstr ""
-"\n"
-"Scheduled Jobs:\n"
+#~ 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/stored/status.c:427 src/stored/btape.c:720
-#, c-format
-msgid "Device parameters:\n"
-msgstr "Parámetros del Dispositivo:\n"
+#~ msgid "acl_set_file error on file \"%s\": ERR=%s\n"
+#~ msgstr "acl_set_file error en el archivo \"%s\": ERR=%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"
+#~ msgid "pathconf error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de pathconf en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:432
-#, fuzzy, c-format
-msgid "  File=%u block=%u\n"
-msgstr "Archivo=%u bloque=%u\n"
+#, fuzzy
+#~ msgid ""
+#~ "Trying to restore acl on file \"%s\" on filesystem without %s acl "
+#~ "support\n"
+#~ msgstr ""
+#~ "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
+#~ "soporte a acl\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"
+#~ msgid "getacl error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de getacl en el archivo \"%s\": ERR=%s\n"
 
-#: 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"
+#~ msgid "acltostr error on file \"%s\": ERR=%s\n"
+#~ msgstr "altostr error en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:471
-#, c-format
-msgid ""
-"Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
-"    pool=\"%s\" device=%s\n"
-msgstr ""
-"Leyendo: %s %s trabajo %s JobId=%d Volumen=\"%s\"\n"
-" pool=\"%s\" dispositivo=%s\n"
+#~ msgid "strtoacl error on file \"%s\": ERR=%s\n"
+#~ msgstr "strtoacl error en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:484
-#, c-format
-msgid ""
-"Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
-"    pool=\"%s\" device=%s\n"
-msgstr ""
-"Escribiendo: %s %s trabajo %s JobId=%d Volumen=\"%s\"\n"
-" pool=\"%s\" dispositivo=%s\n"
+#, fuzzy
+#~ 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/stored/status.c:495
-#, c-format
-msgid "    spooling=%d despooling=%d despool_wait=%d\n"
-msgstr "encolando=%d desencolando=%d despool_wait=%d\n"
+#~ msgid "setacl error on file \"%s\": ERR=%s\n"
+#~ msgstr "setacl error en el archivo \"%s\": ERR=%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"
+#~ msgid "acl_get error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de acl_get en el archivo \"%s\": ERR=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "Trying to restore acl on file \"%s\" on filesystem without acl support\n"
+#~ msgstr ""
+#~ "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
+#~ "soporte a acl\n"
 
-#: src/stored/status.c:529
-msgid "    FDSocket closed\n"
-msgstr "FDSocket cerrado\n"
+#, fuzzy
+#~ msgid ""
+#~ "Trying to restore POSIX acl on file \"%s\" on filesystem without aclent "
+#~ "acl support\n"
+#~ msgstr ""
+#~ "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
+#~ "soporte a acl aclent\n"
 
-#: src/stored/status.c:550
-msgid ""
-"\n"
-"Jobs waiting to reserve a drive:\n"
-msgstr ""
-"\n"
-"Jobs esperando para reservar una unidad:\n"
+#, fuzzy
+#~ msgid ""
+#~ "Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
+#~ "support\n"
+#~ msgstr ""
+#~ "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
+#~ "soporte a acl ace\n"
 
-#: src/stored/status.c:581
-msgid "===================================================================\n"
-msgstr "===================================================================\n"
+#~ msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de acl_fromtext en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
-msgid "Base"
-msgstr "Base"
+#~ 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/stored/status.c:680 src/filed/status.c:534
-msgid "Init Catalog"
-msgstr "Catálogo de inicio"
+#~ msgid "acl_set error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de acl_set en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:683 src/filed/status.c:537
-msgid "Volume to Catalog"
-msgstr "Volumen para Catalogo"
+#~ msgid "acltotext error on file \"%s\": ERR=%s\n"
+#~ msgstr "acltotext error en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:686 src/filed/status.c:540
-msgid "Disk to Catalog"
-msgstr "Disco para Catalogo"
+#~ msgid "aclfromtext error on file \"%s\": ERR=%s\n"
+#~ msgstr "aclfromtext error en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:689 src/filed/status.c:543
-msgid "Data"
-msgstr "Datos"
+#~ msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
+#~ msgstr "acl(SETACL) error en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
-msgid "Unknown Job Level"
-msgstr "Nivel del Job desconocido"
+#, fuzzy
+#~ msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "acl(SETACL) error en el archivo \"%s\": ERR=%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"
+#, fuzzy
+#~ msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "acl(SETACL) error en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:811
-#, fuzzy, c-format
-msgid "3900 Unknown arg in .status command: %s\n"
-msgstr "Comando .status malo: %s\n"
+#, fuzzy
+#~ msgid "Unable to stat file \"%s\": ERR=%s\n"
+#~ msgstr "No se puede abrir el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/status.c:826
-msgid "Bacula Storage: Idle"
-msgstr "Bacula Storage: Libre"
+#~ msgid ""
+#~ "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
+#~ msgstr ""
+#~ "No puede restaurar ACL de %s - incompatible flujo acl encontrado - %d\n"
 
-#: src/stored/status.c:837
-msgid "Bacula Storage: Running"
-msgstr "Bacula Storage: Ejecutando"
+#~ msgid "I only authenticate directors, not %d\n"
+#~ msgstr "Yo sólo autentifico directores, no %d\n"
 
-#: src/stored/status.c:851
-msgid "Bacula Storage: Last Job Canceled"
-msgstr "Bacula Storage: Último Job Cancelado"
+#~ msgid "Bad Hello command from Director at %s: %s\n"
+#~ msgstr "Malo comando Hello desde Director en %s: %s\n"
 
-#: src/stored/status.c:855
-msgid "Bacula Storage: Last Job Failed"
-msgstr "Bacula Storage: Último Job Fallido"
+#~ msgid "Connection from unknown Director %s at %s rejected.\n"
+#~ msgstr "Conexión desde Director %s desconocido  en %s rechazada.\n"
 
-#: src/stored/status.c:859
-msgid "Bacula Storage: Last Job had Warnings"
-msgstr "Bacula Storage: Último Job con Advertencias"
+#~ msgid "Incorrect password given by Director at %s.\n"
+#~ msgstr "Contraseña incorrecta dada por el Director en %s.\n"
 
-#: src/stored/read_record.c:89
-#, c-format
-msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
-msgstr "Fin del Volumen en archivo %u en dispositivo %s, Volumen \"%s\"\n"
+#~ msgid ""
+#~ "Authorization problem: Remote server did not advertize required TLS "
+#~ "support.\n"
+#~ msgstr ""
+#~ "Problema de autorización: El servidor remoto no anunció suporte TLS "
+#~ "requerido.\n"
 
-#: src/stored/read_record.c:93
-msgid "End of all volumes.\n"
-msgstr "Fin de todos los volúmenes.\n"
+#~ msgid "Unable to authenticate Director\n"
+#~ msgstr "No se puede autentificar el Director\n"
 
-#: src/stored/read_record.c:137
-msgid "part"
-msgstr "parte"
+#~ msgid "Cannot set buffer size FD->SD.\n"
+#~ msgstr "No puede establecer el tamaño del búfer FD-> SD.\n"
 
-#: src/stored/read_record.c:140
-msgid "file"
-msgstr "archivo"
+#~ msgid "Encountered %ld acl errors while doing backup\n"
+#~ msgstr "Detectado %ld errores de acl al hacer copia de seguridad\n"
 
-#: src/stored/read_record.c:143
-#, c-format
-msgid "End of %s %u on device %s, Volume \"%s\"\n"
-msgstr "Fin de %s %u en dispositivo %s, Volumen \"%s\"\n"
+#~ msgid "Encountered %ld xattr errors while doing backup\n"
+#~ msgstr "Detectado %ld errores de xattr al hacer copia de seguridad\n"
 
-#: src/stored/read_record.c:158
-msgid "Did fsr in attemp to skip bad record.\n"
-msgstr "fsr hizo en un intento para saltar malo registro.\n"
+#, fuzzy
+#~ msgid "Unsupported cipher on this system.\n"
+#~ msgstr "Tipo de cifrado especificados no soportado\n"
 
-#: src/stored/read_record.c:397
-#, c-format
-msgid "Forward spacing Volume \"%s\" to file:block %u:%u.\n"
-msgstr "Espaciando hacia adelante Volumen \"%s\" para archivo:bloque %u:%u.\n"
+#~ msgid "An error occurred while encrypting the stream.\n"
+#~ msgstr "A ocurrido un error al cifrar el stream.\n"
 
-#: src/stored/read_record.c:421
-msgid "Begin Session"
-msgstr "Inicio de Sesión"
+#~ msgid "     Recursion turned off. Will not descend from %s into %s\n"
+#~ msgstr "Recursión desactivado. No descenderá de %s dentro de %s\n"
 
-#: src/stored/read_record.c:425
-msgid "End Session"
-msgstr "Fin de Sesión"
+#, fuzzy
+#~ msgid ""
+#~ "     %s is a different filesystem. Will not descend from %s into it.\n"
+#~ msgstr ""
+#~ "%s es un sistema de ficheros diferentes. No descenderá de %s dentro de "
+#~ "%s\n"
 
-#: src/stored/read_record.c:431
-#, c-format
-msgid "Unknown code %d\n"
-msgstr "Código desconocido %d\n"
+#~ msgid "     Disallowed filesystem. Will not descend from %s into %s\n"
+#~ msgstr "Sistema de Archivos no permitido. No descenderá de %s en %s\n"
 
-#: src/stored/bextract.c:80
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
-"files>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -p              proceed inspite of I/O errors\n"
-"       -v              verbose\n"
-"       -V <volumes>    specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-"\n"
-"Utilice: bextract <opciones> <archivo-nombre-de-dispositivo-bacula> "
-"<directorio-para-guardar-archivos>\n"
-" -b <archivo> especifica un archivo bootstrap\n"
-" -c <archivo> especifica un archivo Storage de configuración\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -e <archivo> lista de exclusión\n"
-" -i <archivo> lista de inclusión\n"
-" -p proceder a pesar de los errores de E/S\n"
-" -v detallado\n"
-" -V <volúmenes> especifica nombres de Volúmenes (separados por |)\n"
-" -? imprime esta mensaje\n"
-"\n"
+#~ msgid "     Disallowed drive type. Will not descend into %s\n"
+#~ msgstr "Tipo de unidad no permitido. No descenderá en %s\n"
 
-#: 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"
-msgstr "Incorrecto numero de argumentos: \n"
+#~ msgid "     Socket file skipped: %s\n"
+#~ msgstr "Archivo de Socket omitido: %s\n"
 
-#: src/stored/bextract.c:218
-#, c-format
-msgid "%d Program Name and/or Program Data Stream records ignored.\n"
-msgstr ""
-"Nombre del Programa %d y/o registros de Datos de Flujo del Programa "
-"ignorado.\n"
+#~ msgid "     Could not access \"%s\": ERR=%s\n"
+#~ msgstr "No se pudo acceder a \"%s\": ERR=%s\n"
 
-#: src/stored/bextract.c:222
-#, c-format
-msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
-msgstr "%d registros de flujo de datos Win32 or Win32 datos gzip. Ignorados.\n"
+#~ msgid "     Could not follow link \"%s\": ERR=%s\n"
+#~ msgstr "No se pudo seguir el enlace \"%s\": ERR=%s\n"
 
-#: src/stored/bextract.c:249
-#, c-format
-msgid "Cannot stat %s. It must exist. ERR=%s\n"
-msgstr "No se puede stat %s. El debe existir. ERR=%s\n"
+#~ msgid "     Could not stat \"%s\": ERR=%s\n"
+#~ msgstr "No se pudo stat \"%s\": ERR=%s\n"
 
-#: src/stored/bextract.c:253
-#, c-format
-msgid "%s must be a directory.\n"
-msgstr "%s debe ser un directorio.\n"
+#~ msgid "     Unchanged file skipped: %s\n"
+#~ msgstr "Archivo sin modificar omitido: %s\n"
 
-#: src/stored/bextract.c:274
-#, c-format
-msgid "%u files restored.\n"
-msgstr "%u archivos restaurados.\n"
+#~ msgid "     Archive file not saved: %s\n"
+#~ msgstr "Archivo no guardado: %s\n"
 
-#: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1480
-#, c-format
-msgid "Write error on %s: %s\n"
-msgstr "Error de escritura en %s: %s\n"
+#~ msgid "     Could not open directory \"%s\": ERR=%s\n"
+#~ msgstr "No se puede abrir directorio \"%s\": ERR=%s.\n"
 
-#: src/stored/bextract.c:321 src/stored/bextract.c:587
-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"
+#~ msgid "     Unknown file type %d; not saved: %s\n"
+#~ msgstr "     Tipo de archivo %d desconocido; no ha sido guardado: %s\n"
 
-#: 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"
+#~ msgid "%s signature digest initialization failed\n"
+#~ msgstr "Fallo la inicialización de la firma digest %s\n"
 
-#: src/stored/bextract.c:345
-#, c-format
-msgid "%s was deleted.\n"
-msgstr "%s se ha eliminado.\n"
+#~ msgid "     Cannot open \"%s\": ERR=%s.\n"
+#~ msgstr "No se puede abrir \"%s\": ERR=%s.\n"
 
-#: src/stored/bextract.c:393
-#, c-format
-msgid "Seek error on %s: %s\n"
-msgstr "Buscar error en %s: %s\n"
+#~ msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
+#~ msgstr "No se puede abrir recurso fork para \"%s\": ERR=%s.\n"
 
-#: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: 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"
+#~ msgid "Failed to allocate memory for crypto signature.\n"
+#~ msgstr "No se pudo asignar memoria para la firma de cifrado.\n"
 
-#: src/stored/bextract.c:448
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
-msgstr "Error de descompresión. ERR=%d\n"
+#, fuzzy
+#~ msgid "An error occurred while adding signer the stream.\n"
+#~ msgstr "Se produjo un error al firmar el stream.\n"
 
-#: 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"
+#~ msgid "An error occurred while signing the stream.\n"
+#~ msgstr "Se produjo un error al firmar el stream.\n"
 
-#: src/stored/bextract.c:517 src/filed/restore.c:1376
-#, c-format
-msgid "Compressed header version error. version=0x%x\n"
-msgstr ""
+#~ msgid "An error occurred finalizing signing the stream.\n"
+#~ msgstr "Se produjo un error concluir la firma del stream.\n"
 
-#: src/stored/bextract.c:522 src/filed/restore.c:1381
-#, c-format
-msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
-msgstr ""
+#~ msgid "Compression deflateParams error: %d\n"
+#~ msgstr "Error de compresión DeflateParams: %d\n"
 
-#: src/stored/bextract.c:544
-#, fuzzy, c-format
-msgid "LZO uncompression error. ERR=%d\n"
-msgstr "Error de descompresión. ERR=%d\n"
+#, fuzzy
+#~ msgid "Encrypting sparse or offset data not supported.\n"
+#~ msgstr "Cifrado de datos dispersos no soportado.\n"
 
-#: src/stored/bextract.c:556 src/filed/restore.c:1414
-#, c-format
-msgid "Compression algorithm 0x%x found, but not supported!\n"
-msgstr ""
+#~ msgid "Failed to initialize encryption context.\n"
+#~ msgstr "Fallo al inicializar el contexto de cifrado.\n"
 
-#: src/stored/bextract.c:578
-msgid "Got Program Name or Data Stream. Ignored.\n"
-msgstr "Obtener Nombre de Programa o Secuencia de Datos. Ignorado.\n"
+#~ msgid "Compression deflate error: %d\n"
+#~ msgstr "Error de compresión Deflate: %d\n"
 
-#: 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"
+#~ msgid "Compression deflateReset error: %d\n"
+#~ msgstr "Error de compresión DeflateReset: %d\n"
 
-#: src/stored/bcopy.c:74
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify a Storage configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-"\n"
-"Utilice: bcopy [-d nivel_ depuración] <archivo-entrada> <archivo-salida>\n"
-" -b bootstrap especifica un archivo bootstrap\n"
-" -c <archivo> especifica un archivo Storage de configuración\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -i especifica nombres de Volúmenes de entrada (separados por |)\n"
-" -o especifica nombres de Volúmenes de salida (separados por |)\n"
-" -p proceder a pesar de los errores\n"
-"\n"
-" -v detallado\n"
-" -w <dir> especifica directorio de trabajo (por defecto /tmp)\n"
-" -? imprime esta mensaje\n"
-"\n"
+#, fuzzy
+#~ msgid "Compression LZO error: %d\n"
+#~ msgstr "Error de compresión Deflate: %d\n"
 
-#: 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"
+#~ msgid "Encryption error\n"
+#~ msgstr "Error de cifrado\n"
 
-#: src/stored/bcopy.c:217
-msgid "Write of last block failed.\n"
-msgstr "Fallo al escribir ultimo bloque.\n"
+#~ msgid "Read error on file %s. ERR=%s\n"
+#~ msgstr "Error de lectura en el archivo %s. ERR=%s\n"
 
-#: src/stored/bcopy.c:221
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
-msgstr "%u Jobs copiado. %u registros copiados.\n"
+#, fuzzy
+#~ msgid "Too many errors. JobErrors=%d.\n"
+#~ msgstr "Demasiados errores.\n"
 
-#: 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"
+#~ msgid "Encryption padding error\n"
+#~ msgstr "Error de relleno de cifrado\n"
 
-#: 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"
+#~ msgid "Invalid file flags, no supported data stream type.\n"
+#~ msgstr ""
+#~ "Invalidas banderas de archivo, tipo de flujo de datos no soportado.\n"
 
-#: src/stored/bcopy.c:257
-msgid "Volume label not copied.\n"
-msgstr "Etiqueta Volumen no copiada.\n"
+#~ msgid "VSS Writer (BackupComplete): %s\n"
+#~ msgstr "VSS Writer (BackupComplete): %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Command plugin \"%s\": no type in startBackupFile packet.\n"
+#~ msgstr "Comando plugin \"%s\" regresó malo paquete startBackupFile.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
+#~ msgstr "Comando plugin \"%s\" regresó malo paquete startBackupFile.\n"
 
-#: src/stored/bcopy.c:294
-msgid "EOM label not copied.\n"
-msgstr "Etiqueta EOM no copiada.\n"
+#, fuzzy
+#~ msgid "Command plugin \"%s\": no fname in startBackupFile packet.\n"
+#~ msgstr "Comando plugin \"%s\" regresó malo paquete startBackupFile.\n"
 
-#: src/stored/bcopy.c:297
-msgid "EOT label not copied.\n"
-msgstr "Etiqueta EOT no copiada.\n"
+#~ msgid "Plugin save packet not found.\n"
+#~ msgstr "Plugin guardar paquetes no encontrado.\n"
 
-#: src/stored/dvd.c:111
-msgid "No FreeSpace command defined.\n"
-msgstr "Comando FreeSpace no definido.\n"
+#~ msgid "Plugin=%s not found.\n"
+#~ msgstr "Plugin=%s no encontrado.\n"
 
-#: src/stored/dvd.c:145
-#, c-format
-msgid "Cannot run free space command. Results=%s ERR=%s\n"
-msgstr "No se puede ejecutar comando de espacio libre. Resultados=%s ERR=%s\n"
+#~ msgid "Plugin createFile call failed. Stat=%d file=%s\n"
+#~ msgstr "Fallo llamada plugin createFile. Stat=%d archivo=%s\n"
 
-#: src/stored/dvd.c:261
-#, c-format
-msgid "Error writing part %d to the DVD: ERR=%s\n"
-msgstr "Error escribiendo parte %d en el DVD: ERR=%s\n"
+#~ msgid "Plugin createFile call failed. Returned CF_ERROR file=%s\n"
+#~ msgstr "Fallo llamada plugin createFile. Retorno CF_ERROR archivo=%s\n"
 
-#: src/stored/dvd.c:263
-#, c-format
-msgid "Error while writing current part to the DVD: %s"
-msgstr "Error al escribir parte actual al DVD: %s"
+#~ msgid "Could not create %s: ERR=%s\n"
+#~ msgstr "No se pudo crear %s: ERR=%s\n"
 
-#: src/stored/dvd.c:273
-#, c-format
-msgid "Part %d (%lld bytes) written to DVD.\n"
-msgstr "Parte %d (%lld bytes) escrito al DVD.\n"
+#, fuzzy
+#~ msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
+#~ msgstr "Comando plugin \"%s\" regresó malo paquete startBackupFile.\n"
 
-#: src/stored/dvd.c:292
-#, c-format
-msgid "Remaining free space %s on %s\n"
-msgstr "Espacio libre restante %s en %s\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "%sVersion: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
+#~ "     -c <file>        use <file> as configuration file\n"
+#~ "     -d <n>[,<tags>]  set debug level to <nn>, debug tags to <tags>\n"
+#~ "     -dt              print a timestamp in debug output\n"
+#~ "     -f               run in foreground (for debugging)\n"
+#~ "     -g               groupid\n"
+#~ "     -k               keep readall capabilities\n"
+#~ "     -m               print kaboom output (for debugging)\n"
+#~ "     -s               no signals (for debugging)\n"
+#~ "     -t               test configuration file and exit\n"
+#~ "     -T               set trace on\n"
+#~ "     -u               userid\n"
+#~ "     -v               verbose user messages\n"
+#~ "     -?               print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Utilice: bacula-fd [-f -s] [-c archivo_de_configuración] [-d "
+#~ "nivel_depuración]\n"
+#~ " -c <archivo> establecer archivo de configuración para archivo \n"
+#~ " -d <nn> establecer el nivel de depuración para <nn>\n"
+#~ " -dt imprimir timestamp en salida de depuración\n"
+#~ " -f ejecutar en primer plano (para depuración)\n"
+#~ " -g groupid\n"
+#~ " -k keep readall capabilities\n"
+#~ " -m imprimir salida kaboom para depuración)\n"
+#~ " -s sin señales(para depuración)\n"
+#~ " -t prueba - leer la configuración y salir\n"
+#~ " -u userid\n"
+#~ " -v mensajes de usuario detallados\n"
+#~ " -? imprimir este mensaje.\n"
+#~ "\n"
 
-#: src/stored/dvd.c:358
-#, c-format
-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"
+#~ msgid "-k option has no meaning without -u option.\n"
+#~ msgstr "la opción -k no tiene sentido sin la opción -u.\n"
 
-#: src/stored/dvd.c:563
-#, c-format
-msgid ""
-"Error writing. Current part less than total number of parts (%d/%d, device="
-"%s)\n"
-msgstr ""
-"Error al escribir. Parte actual menor que número total de partes (%d/%d, "
-"dispositivo=%s)\n"
+#~ msgid ""
+#~ "No File daemon resource defined in %s\n"
+#~ "Without that I don't know who I am :-(\n"
+#~ msgstr ""
+#~ "Ninguno recurso File Daemon definido en %s\n"
+#~ "Sin eso yo no sé quién soy :-(\n"
 
-#: 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"
+#~ msgid "Only one Client resource permitted in %s\n"
+#~ msgstr "Sólo un recurso de cliente permitido en %s\n"
 
-#: src/stored/butil.c:59
-msgid "Nohdr,"
-msgstr "Nohdr,"
+#, fuzzy
+#~ msgid "Disable Command \"%s\" not found.\n"
+#~ msgstr "Registro FileSet \"%s\" no encontrado.\n"
 
-#: src/stored/butil.c:62
-msgid "partial,"
-msgstr "parcial,"
+#~ msgid ""
+#~ "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined "
+#~ "for File daemon in %s.\n"
+#~ msgstr ""
+#~ "Ninguno \"Certificado TLS de CA\" o \"Directorio de Certificado TLS de CA"
+#~ "\" están definidos para el demonio File en %s.\n"
 
-#: src/stored/butil.c:65
-msgid "empty,"
-msgstr "vacío,"
+#~ msgid "PKI encryption/signing enabled but not compiled into Bacula.\n"
+#~ msgstr "Cifrado o Firma PKI habilitado, pero no compilado en Bacula.\n"
 
-#: src/stored/butil.c:68
-msgid "Nomatch,"
-msgstr "Nomatch,"
+#~ msgid ""
+#~ "\"PKI Key Pair\" must be defined for File daemon \"%s\" in %s if either "
+#~ "\"PKI Sign\" or \"PKI Encrypt\" are enabled.\n"
+#~ msgstr ""
+#~ "\"Par de Claves PKI\" debe estar definido para el demonio File \"%s\" en "
+#~ "%s, si uno o otro \"Firma PKI\" o \"Cifrar PKI\" están habilitados.\n"
 
-#: src/stored/butil.c:71
-msgid "cont,"
-msgstr "cont,"
+#~ msgid "Failed to allocate a new keypair object.\n"
+#~ msgstr "No se ha podido asignar un nuevo objeto keypair.\n"
 
-#: src/stored/butil.c:148
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
-msgstr ""
-"Nombre de Volumen o nombres es demasiado largo. Por favor, use un archivo ."
-"BSR.\n"
+#~ msgid "Failed to load public certificate for File daemon \"%s\" in %s.\n"
+#~ msgstr ""
+#~ "Fallo al cargar certificado publico para File Daemon \"%s\" en %s.\n"
 
-#: src/stored/butil.c:168
-#, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
-msgstr ""
-"No se puede encontrar el dispositivo \"%s\" en el archivo de configuración "
-"%s.\n"
+#~ msgid "Failed to load private key for File daemon \"%s\" in %s.\n"
+#~ msgstr "Fallo al cargar llave privada para File Daemon \"%s\" en %s.\n"
 
-#: src/stored/butil.c:175
-#, c-format
-msgid "Cannot init device %s\n"
-msgstr "No se pudo iniciar dispositivo %s\n"
+#~ msgid ""
+#~ "Failed to load private key from file %s for File daemon \"%s\" in %s.\n"
+#~ msgstr ""
+#~ "Fallo al cargar llave privada desde el archivo %s para File Daemon \"%s\" "
+#~ "en %s.\n"
 
-#: src/stored/butil.c:195
-#, c-format
-msgid "Cannot open %s\n"
-msgstr "No se pudo abrir %s\n"
+#~ msgid ""
+#~ "Failed to load trusted signer certificate from file %s for File daemon "
+#~ "\"%s\" in %s.\n"
+#~ msgstr ""
+#~ "Fallo al cargar certificado del firmante desde el archivo %s para File "
+#~ "Daemon \"%s\" en %s.\n"
 
-#: src/stored/butil.c:282
-#, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
-msgstr ""
-"No se pudo encontrar dispositivo \"%s\" en el archivo de configuración %s.\n"
+#~ msgid ""
+#~ "Failed to load master key certificate from file %s for File daemon \"%s\" "
+#~ "in %s.\n"
+#~ msgstr ""
+#~ "Fallo al cargar certificado de llave maestro desde el archivo %s para "
+#~ "File Daemon \"%s\" en %s.\n"
 
-#: src/stored/butil.c:287
-#, c-format
-msgid "Using device: \"%s\" for reading.\n"
-msgstr "Utilizando el dispositivo: \"%s\" para lectura.\n"
+#~ msgid "No Director resource defined in %s\n"
+#~ msgstr "Recurso Director no definido en %s\n"
 
-#: src/stored/butil.c:290
-#, c-format
-msgid "Using device: \"%s\" for writing.\n"
-msgstr "Utilizando el dispositivo: \"%s\" para escritura.\n"
+#, fuzzy
+#~ msgid "Expected a Cipher Type keyword, got: %s"
+#~ msgstr "Esperaba una palabra clave Tipo Device, obtuvo: %s"
 
-#: src/stored/butil.c:306
-msgid "Unexpected End of Data\n"
-msgstr "Fin Inesperado de los Datos\n"
+#, fuzzy
+#~ msgid "Command: \"%s\" is disabled.\n"
+#~ msgstr "Job \"%s\" %sabled\n"
 
-#: src/stored/butil.c:308
-msgid "Unexpected End of Tape\n"
-msgstr "Fin Inesperado de la Cinta\n"
+#, fuzzy
+#~ msgid "SD connect failed: Bad Hello command\n"
+#~ msgstr "Director rechazo comando Hello\n"
 
-#: src/stored/butil.c:310
-msgid "Unexpected End of File\n"
-msgstr "Fin Inesperado del Archivo\n"
+#, fuzzy
+#~ msgid "SD connect failed: Job name not found: %s\n"
+#~ msgstr "Fallo al conectar a FD: Nombre del Job no encontrado: %s\n"
 
-#: src/stored/butil.c:312
-msgid "Tape Door is Open\n"
-msgstr "Puerta de la cinta está abierta\n"
+#, fuzzy
+#~ msgid "Bad command from %s. Len=%d.\n"
+#~ msgstr "Malo comando Hello desde Director en %s. Len=%d\n"
 
-#: src/stored/butil.c:314
-msgid "Unexpected Tape is Off-line\n"
-msgstr "Inesperado Cinta esta off-line\n"
+#~ msgid "2902 Error scanning cancel command.\n"
+#~ msgstr "2902 Error escaneando comando cancelar.\n"
 
-#: 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"
+#~ msgid "2901 Job %s not found.\n"
+#~ msgstr "2901 Job %s no encontrado.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "2001 Job \"%s\" marked to be %s.\n"
+#~ msgstr "2001 Job %s marcado para ser cancelado.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "2991 Bad setbandwidth command: %s\n"
+#~ msgstr "2991 Comando setdebug malo: %s\n"
 
-#: src/stored/acquire.c:118
-#, c-format
-msgid ""
-"Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
-"  device=%s\n"
-msgstr ""
-"Cambiando dispositivo de lectura. Media Type=\"%s\" tiene=\"%s\"\n"
-" dispositivo=%s\n"
+#~ msgid "2991 Bad setdebug command: %s\n"
+#~ msgstr "2991 Comando setdebug malo: %s\n"
 
-#: 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"
+#~ msgid "Bad estimate command: %s"
+#~ msgstr "Malo comando estimate: %s"
 
-#: 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"
+#~ msgid "2992 Bad estimate command.\n"
+#~ msgstr "2992 Malo comando estimación.\n"
 
-#: src/stored/acquire.c:213
-#, c-format
-msgid "Job %s canceled.\n"
-msgstr "Job %s cancelado.\n"
+#~ msgid "Bad Job Command: %s"
+#~ msgstr "Malo Comando Job: %s"
 
-#: 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"
+#~ msgid "Bad RunBeforeJob command: %s\n"
+#~ msgstr "Malo comando RunBeforeJob: %s\n"
 
-#: 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"
+#~ msgid "2905 Bad RunBeforeJob command.\n"
+#~ msgstr "2905 Malo comando RunBeforeJob.\n"
 
-#: 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"
+#~ msgid "2905 Bad RunBeforeNow command.\n"
+#~ msgstr "2905 Malo comando RunBeforeNow.\n"
 
-#: 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"
+#~ msgid "Bad RunAfter command: %s\n"
+#~ msgstr "Malo comando RunAfter: %s\n"
 
-#: 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"
+#~ msgid "2905 Bad RunAfterJob command.\n"
+#~ msgstr "2905 Malo comando RunAfterJob.\n"
 
-#: 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"
+#~ msgid "Bad RunScript command: %s\n"
+#~ msgstr "Malo comando RunScript: %s\n"
 
-#: src/stored/acquire.c:552
-#, c-format
-msgid "Alert: %s"
-msgstr "Alerta: %s"
+#~ msgid "2905 Bad RunScript command.\n"
+#~ msgstr "2905 Malo comando RunScript.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Bad RestoreObject command: %s\n"
+#~ msgstr "Malo comando storage: %s"
 
-#: 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"
+#, fuzzy
+#~ msgid "2909 Bad RestoreObject command.\n"
+#~ msgstr "2905 Malo comando RunBeforeJob.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
+#~ msgstr "Directorio de Plugin no definido. No se puede usar plug-in: \"%\"\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"
+#~ msgid "Error running program: %s. stat=%d: ERR=%s\n"
+#~ msgstr "Error al ejecutar el programa: %s. stat=%d: ERR=%s\n"
 
-#: src/stored/askdir.c:197
-#, c-format
-msgid "Error getting Volume info: %s"
-msgstr "Error al obtener Volumen información: %s"
+#~ msgid "Cannot open FileSet input file: %s. ERR=%s\n"
+#~ msgstr "No se puede abrir archivo de entrada FileSet: %s. ERR=%s\n"
 
-#: 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"
+#~ msgid "REGEX %s compile error. ERR=%s\n"
+#~ msgstr "Error de compilación REGEX %s. ERR=%s\n"
 
-#: src/stored/askdir.c:432
-#, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
-msgstr "Error al crear registro JobMedia: ERR=%s\n"
+#~ msgid "Invalid FileSet command: %s\n"
+#~ msgstr "Comando FilseSet invalido: %s\n"
 
-#: src/stored/askdir.c:439
-#, c-format
-msgid "Error creating JobMedia record: %s\n"
-msgstr "Error al crear registro JobMedia: %s\n"
+#~ msgid "Unknown include/exclude option: %c\n"
+#~ msgstr "Opción incluir/excluir desconocida: %c\n"
 
-#: 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"
+#~ msgid ""
+#~ "DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
+#~ msgstr ""
+#~ "Relojes de DIR y FD difieren por %lld segundos, FD compensando "
+#~ "automáticamente.\n"
 
-#: src/stored/askdir.c:533
-#, fuzzy, c-format
-msgid ""
-"Job %s is waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\" command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-"Job %s en espera. No se puede encontrar ningún volumen grabable.\n"
-"Por favor utilice el comando \"label\" para crear un nuevo Volumen para:\n"
-"Storage: %s\n"
-"Pool: %s\n"
-"Tipo de Media: %s\n"
+#~ msgid "Unknown backup level: %s\n"
+#~ msgstr "Nivel de copia de seguridad desconocido: %s\n"
 
-#: 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"
+#~ msgid "Bad level command: %s\n"
+#~ msgstr "Malo comando nivel: %s\n"
 
-#: src/stored/askdir.c:568
-msgid "pthread error in mount_next_volume.\n"
-msgstr "pthread error en mount_next_volume.\n"
+#~ msgid "Bad session command: %s"
+#~ msgstr "Malo comando sesión: %s"
 
-#: 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"
+#~ msgid "Bad storage command: %s"
+#~ msgstr "Malo comando storage: %s"
 
-#: 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"
+#~ msgid "Failed to connect to Storage daemon: %s:%d\n"
+#~ msgstr "Error al conectar con el demonio de Storage: %s:%d\n"
 
-#: src/stored/askdir.c:624
-#, fuzzy, c-format
-msgid ""
-"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 ""
-"Por favor, montar Volumen \"%s\" o etiquete uno nuevo para :\n"
-" Job: %s\n"
-" Storage: %s\n"
-" Pool: %s\n"
-" Media type: %s\n"
+#, fuzzy
+#~ msgid "Failed connect from Storage daemon. SD bsock=NULL.\n"
+#~ msgstr "Error al conectar con demonio Storage.\n"
 
-#: src/stored/askdir.c:630
-#, fuzzy, c-format
-msgid ""
-"Please mount read Volume \"%s\" for:\n"
-"    Job:          %s\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-"Por favor, montar el volumen \"%s\" for:\n"
-" Job: %s\n"
-" Storage: %s\n"
-" Pool: %s\n"
-" Media type: %s\n"
+#~ msgid "ACL support not configured for your machine.\n"
+#~ msgstr "Soporte ACL no configurado para su máquina. \n"
 
-#: src/stored/askdir.c:668
-msgid "pthread error in mount_volume\n"
-msgstr "pthread error en mount_volume\n"
+#~ msgid "XATTR support not configured for your machine.\n"
+#~ msgstr "Soporte XATTR no está configurado para su máquina.\n"
 
-#: src/stored/record.c:75
-#, c-format
-msgid "unknown: %d"
-msgstr "desconocido: %d"
+#~ msgid "Cannot contact Storage daemon\n"
+#~ msgstr "No puede contactar demonio Storage\n"
 
-#: src/stored/record.c:392
-msgid "Damaged buffer\n"
-msgstr "Buffer dañado\n"
+#~ msgid "Bad response to append open: %s\n"
+#~ msgstr "Mala respuesta para añadir abierto: %s\n"
 
-#: src/stored/record.c:670
-#, c-format
-msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
-msgstr ""
-"Chequeo de Sanidad fracasado. maxlen=%d datalen=%d. Bloque descartado.\n"
+#~ msgid "Bad response from stored to open command\n"
+#~ msgstr "Mala respuesta desde almacén para comando abrir\n"
 
-#: src/stored/read.c:65
-msgid "No Volume names found for restore.\n"
-msgstr "Nombres de Volumen no encontrados para restaurar.\n"
+#~ msgid "Append Close with SD failed.\n"
+#~ msgstr "Añadir Cierre con SD fallido.\n"
 
-#: src/stored/read.c:120
-#, c-format
-msgid ">filed: Error Hdr=%s\n"
-msgstr ">filed: Error Hdr=%s\n"
+#, fuzzy
+#~ msgid "Bad status %d %c returned from Storage Daemon.\n"
+#~ msgstr "Mal estado %d regresado desde demonio Storage.\n"
 
-#: src/stored/read.c:121 src/stored/read.c:136
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
-msgstr "Error enviando para demonio File. ERR=%s\n"
+#~ msgid "2994 Bad verify command: %s\n"
+#~ msgstr "2994 Malo comando verificar: %s\n"
 
-#: src/stored/read.c:135
-#, c-format
-msgid "Error sending to FD. ERR=%s\n"
-msgstr "Error enviando para FD. ERR=%s\n"
+#~ msgid "2994 Bad verify level: %s\n"
+#~ msgstr "2994 Malo nivel de verificar: %s\n"
 
-#: src/stored/autochanger.c:65
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
-msgstr ""
-"Ningún Nombre Changer obtenido para el dispositivo %s. No se puede "
-"continuar.\n"
+#~ msgid "Bad replace command. CMD=%s\n"
+#~ msgstr "Comando replace malo. CMD=%s\n"
 
-#: src/stored/autochanger.c:71
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
-msgstr ""
-"Ningún Comando Changer obtenido para el dispositivo %s. No se puede "
-"continuar.\n"
+#~ msgid "Bad where regexp. where=%s\n"
+#~ msgstr "Mala regexp where. where=%s\n"
 
-#: 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"
+#~ msgid "Improper calling sequence.\n"
+#~ msgstr "Secuencia de llamada impropia.\n"
 
-#: src/stored/autochanger.c:141
-msgid "Cartridge change or \"update slots\" may be required.\n"
-msgstr ""
+#~ msgid "Bad response to SD read open: %s\n"
+#~ msgstr "Mala respuesta para SD leer abrir: %s\n"
 
-#: 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"
+#~ msgid "Bad response from stored to read open command\n"
+#~ msgstr "Mala respuesta desde storage para comando leer abir\n"
 
-#: 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"
+#~ 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/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"
+#, fuzzy
+#~ msgid "Bad response from SD to %s command. Wanted %s, got %s\n"
+#~ msgstr "Mala respuesta al comando %s. Esperaba %s, obtuvo %s\n"
 
-#: 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"
+#~ msgid ""
+#~ "Size of data or stream of %s not correct. Original %s, restored %s.\n"
+#~ msgstr ""
+#~ "Tamaño de datos o flujo de %s no es correcto. Original %s, restaurado %s\n"
 
-#: src/stored/autochanger.c:206
-#, c-format
-msgid ""
-"3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
-"Results=%s\n"
-msgstr ""
-"2992 Malo Auto-cambiador \"carga ranura %d, unidad %d\": ERR=%s.\n"
-"Resultados=%s\n"
+#~ msgid "Invalid length of Finder Info (got %d, not 32)\n"
+#~ msgstr "Longitud no válida de Buscador de Información (obtuvo %d, no 32)\n"
 
-#: 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"
+#~ msgid "Could not set Finder Info on %s\n"
+#~ msgstr "No se pudo establecer Finder Info en %s\n"
 
-#: 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"
+#~ msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
+#~ msgstr "Flujo desconocido=%d ignorado. Esto no debería suceder!\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "LZO init failed\n"
+#~ msgstr "Negociación TLS fallida\n"
 
-#: src/stored/autochanger.c:299
-#, c-format
-msgid ""
-"3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
-"Results=%s\n"
-msgstr ""
-"3991 Malo comando auto-cambiador comando \"cargar? unidad %d\": ERR=%s\n"
-"Resultados=%s\n"
+#~ msgid "Record header scan error: %s\n"
+#~ msgstr "Error analizando registro de cabecera: %s\n"
 
-#: src/stored/autochanger.c:316
-#, fuzzy, c-format
-msgid "Lock failure on autochanger. ERR=%s\n"
-msgstr "Error bloqueando Mutex. ERR=%s\n"
+#~ msgid "Data record error. ERR=%s\n"
+#~ msgstr "Error de registro de datos. ERR=%s\n"
 
-#: src/stored/autochanger.c:330
-#, fuzzy, c-format
-msgid "Unlock failure on autochanger. ERR=%s\n"
-msgstr "Error desbloqueando Mutex. ERR=%s\n"
+#~ 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"
 
-#: 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"
+#~ msgid "%s stream not supported on this Client.\n"
+#~ msgstr "flujo %s no suportado en este Cliente.\n"
 
-#: src/stored/autochanger.c:387
-#, c-format
-msgid ""
-"3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
-"Results=%s\n"
-msgstr ""
-"3995 Malo comando auto-cambiador \"descargar ranura %d, unidad %d\": ERR=%s\n"
-"Resultados=%s\n"
+#~ msgid "Unexpected cryptographic session data stream.\n"
+#~ msgstr "Inesperado flujo de datos de sesión criptográfica.\n"
 
-#: 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"
+#~ msgid ""
+#~ "No private decryption keys have been defined to decrypt encrypted backup "
+#~ "data.\n"
+#~ msgstr ""
+#~ "Ninguna claves privadas de descifrado se ha definido para descifrar los "
+#~ "datos cifrados de las copia de seguridad.\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"
+#~ msgid "Could not create digest.\n"
+#~ msgstr "No es posible crear sumario.\n"
 
-#: 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"
+#~ 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/stored/autochanger.c:612
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
-msgstr "3306 Emitiendo comando \"%s\" al auto-cambiador.\n"
+#~ msgid "Decrypt of the session key failed.\n"
+#~ msgstr "Fallo al descifrar la clave de sesión.\n"
 
-#: src/stored/autochanger.c:615
-msgid "3996 Open bpipe failed.\n"
-msgstr "3996 Fallo al abrir bpipe.\n"
+#, fuzzy
+#~ msgid "Signer not found. Decryption failed.\n"
+#~ msgstr "Fallo en creación de firma"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unsupported digest algorithm. Decrypt failed.\n"
+#~ msgstr "Algoritmo de resumen no soportado"
 
-#: src/stored/stored.c:87
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-"\n"
-"Utilice: stored [opciones] [-c archivo_configuración] "
-"[archivo_configuración]\n"
-" -c <archivo> usar <archivo> como archivo de configuración\n"
-" -d <nn> establecer el nivel de depuración para <nn>\n"
-" -dt imprimir timestamp en salida de depuración\n"
-" -f ejecutar en primer plano (para depuración)\n"
-" -g <grupo> establecer groupid para grupo\n"
-" -m imprimir salida kaboom para depuración)\n"
-" -p continuar a pesar de errores de E/S\n"
-" -s sin señales (para depuración)\n"
-" -t prueba - leer la configuración y salir\n"
-" -u <usuario> establecer userid para <usuario>\n"
-" -v mensajes de usuario detallados\n"
-" -? imprimir este mensaje.\n"
-"\n"
+#, fuzzy
+#~ msgid "Unsupported encryption algorithm. Decrypt failed.\n"
+#~ msgstr "Algoritmo de cifrado no soportado"
 
-#: src/stored/stored.c:136 src/stored/btape.c:178
-#, c-format
-msgid "Tape block size (%d) not multiple of system size (%d)\n"
-msgstr ""
-"Tamaño de bloque de cinta (%d) no es múltiplo del tamaño de sistema (% d)\n"
+#, fuzzy
+#~ msgid ""
+#~ "An error=%d occurred while decoding encrypted session data stream: ERR="
+#~ "%s\n"
+#~ msgstr ""
+#~ "Se produjo un error al descodificar flujo de datos de sesión encriptados: "
+#~ "%s\n"
 
-#: src/stored/stored.c:140 src/stored/btape.c:182
-#, c-format
-msgid "Tape block size (%d) is not a power of 2\n"
-msgstr "Tamaño de bloque de cinta (%d) no es una potencia de 2\n"
+#~ msgid "Missing encryption session data stream for %s\n"
+#~ msgstr "Falta cifrado de flujo de datos de sesión para %s\n"
 
-#: src/stored/stored.c:268
-msgid "Volume Session Time is ZERO!\n"
-msgstr "Tiempo de Sesión de Volumen es CERO!\n"
+#~ msgid "Failed to initialize decryption context for %s\n"
+#~ msgstr "Fallo al inicializar el contexto de descifrado para %s\n"
 
-#: src/stored/stored.c:277
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
-msgstr "No se puede crear hilo. ERR=%s\n"
+#~ msgid "Cannot open resource fork for %s.\n"
+#~ msgstr "No se puede abrir recursos fork para %s.\n"
 
-#: src/stored/stored.c:310 src/stored/bscan.c:262
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
-msgstr "Recurso Storage no definido en %s. No se puede continuar.\n"
+#~ msgid "Unexpected cryptographic signature data stream.\n"
+#~ msgstr "Inesperado signatura de datos de sesión criptográfica.\n"
 
-#: src/stored/stored.c:316
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
-msgstr "Sólo un recurso Storage permitido en %s\n"
+#~ msgid "Failed to decode message signature for %s\n"
+#~ msgstr "No se ha podido descifrar la firma del mensaje para %s\n"
 
-#: src/stored/stored.c:321
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
-msgstr "Recurso Director no definido en %s. No se puede continuar.\n"
+#~ msgid "Encountered %ld acl errors while doing restore\n"
+#~ msgstr "Detectado %ld errores de acl mientras que hace restaurar\n"
 
-#: src/stored/stored.c:326
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
-msgstr "Recurso Device no definido en %s. No se puede continuar.\n"
+#~ msgid "Encountered %ld xattr errors while doing restore\n"
+#~ msgstr "Detectado %ld errores de xattr al hacer restauración\n"
 
-#: src/stored/stored.c:334
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
-msgstr "Recurso Mensajes no definido en %s. No se puede continuar.\n"
+#~ msgid ""
+#~ "%d non-supported data streams and %d non-supported attrib streams "
+#~ "ignored.\n"
+#~ msgstr ""
+#~ "%d incompatible flujos de datos y %d incompatible atributos de flujos "
+#~ "ignorados.\n"
 
-#: src/stored/stored.c:341 src/stored/bscan.c:270
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
-msgstr "Directorio de Trabajo no definido en %s. No se puede continuar.\n"
+#~ msgid "%d non-supported resource fork streams ignored.\n"
+#~ msgstr "%d incompatible flujo de recurso fork ignorado.\n"
 
-#: src/stored/stored.c:363
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
-msgstr "Archivo \"TLS Certificate\" no definido para Storage \"%s\" en %s.\n"
+#~ msgid "%d non-supported Finder Info streams ignored.\n"
+#~ msgstr "%d incompatible flujo Finder Info ignorado.\n"
 
-#: src/stored/stored.c:369
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
-msgstr "Archivo \"TLS Key\" no definido para Storage \"%s\" en %s.\n"
+#~ msgid "%d non-supported acl streams ignored.\n"
+#~ msgstr "%d incompatible flujo de acl ignorado.\n"
 
-#: src/stored/stored.c:375
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-"Ni \"Certificado TLS CA \" o \"Directorio del Certificado TLS CA\" están "
-"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"
+#~ msgid "%d non-supported crypto streams ignored.\n"
+#~ msgstr "%d incompatible flujo de cifrado ignorado.\n"
 
-#: src/stored/stored.c:568
-#, c-format
-msgid "Could not initialize %s\n"
-msgstr "No se puede iniciar %s\n"
+#~ msgid "%d non-supported xattr streams ignored.\n"
+#~ msgstr "ignorado %d no soportado flujo xattr.\n"
 
-#: src/stored/stored.c:582
-#, c-format
-msgid "Could not open device %s\n"
-msgstr "No se pudo abrir el dispositivo %s\n"
+#~ msgid "None"
+#~ msgstr "Ninguno"
 
-#: src/stored/stored.c:596
-#, c-format
-msgid "Could not mount device %s\n"
-msgstr "No se pudo montar el dispositivo %s\n"
+#~ msgid "Zlib errno"
+#~ msgstr "Zlib error"
 
-#: src/stored/device.c:120
-#, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
-msgstr "Fin de medio en Volumen \"%s\" Bytes=%s Bloques=%s en %s.\n"
+#~ msgid "Zlib stream error"
+#~ msgstr "Zlib error de stream"
 
-#: src/stored/device.c:139
-#, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
-msgstr "Nuevo volumen \"%s\" montado en el dispositivo %s en %s.\n"
+#~ msgid "Zlib data error"
+#~ msgstr "Zlib error de datos"
 
-#: src/stored/device.c:151
-#, c-format
-msgid "write_block_to_device Volume label failed. ERR=%s"
-msgstr "Fallo de etiqueta de volumen write_block_to_device. ERR=%s"
+#~ msgid "Zlib memory error"
+#~ msgstr "Zlib error de memoria"
 
-#: src/stored/device.c:186
-#, c-format
-msgid "write_block_to_device overflow block failed. ERR=%s"
-msgstr "Fallo de desbordamiento de bloque  write_block_to_device. ERR=%s"
+#~ msgid "Zlib buffer error"
+#~ msgstr "Zlib error de buffer"
 
-#: src/stored/device.c:191
-#, c-format
-msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
-msgstr ""
-"Error catastrófico. No se puede escribir bloque de desbordamiento al "
-"dispositivo %s. ERR=%s"
+#~ msgid "Zlib version error"
+#~ msgstr "Zlib error de version"
 
-#: 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"
+#~ msgid "*none*"
+#~ msgstr "*ninguno*"
 
-#: src/stored/device.c:329
-#, c-format
-msgid "Unable to open archive %s: ERR=%s\n"
-msgstr "No se puede abrir archivo %s: ERR=%s\n"
+#~ msgid "Missing cryptographic signature for %s\n"
+#~ msgstr "Falta la firma criptográfica para %s\n"
 
-#: src/stored/fd_cmds.c:166
-#, c-format
-msgid "Command error with FD, hanging up. %s\n"
-msgstr "Error de comando con FD, colgando. %s\n"
+#~ 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/stored/fd_cmds.c:169
-msgid "Command error with FD, hanging up.\n"
-msgstr "Error de comando con FD, colgando.\n"
+#~ msgid "Digest one file failed for file: %s\n"
+#~ msgstr "Digest de un archivo fallido para el archivo: %s\n"
 
-#: src/stored/fd_cmds.c:180
-#, c-format
-msgid "FD command not found: %s\n"
-msgstr "Comando FD no encontrado:% s \n"
+#~ msgid "Signature validation failed for %s: %s\n"
+#~ msgstr "Validación de la firma fallida para  %s: %s\n"
 
-#: src/stored/fd_cmds.c:206
-msgid "Append data error.\n"
-msgstr "Error al añadir datos.\n"
+#~ msgid "Seek to %s error on %s: ERR=%s\n"
+#~ msgstr "Tratar de %s error en %s: ERR=%s\n"
 
-#: src/stored/fd_cmds.c:211
-msgid "Attempt to append on non-open session.\n"
-msgstr "Intento de anexar en sesión no abierta.\n"
+#, fuzzy
+#~ msgid "LZO uncompression error on file %s. ERR=%d\n"
+#~ msgstr "Error de descompresión en el archivo %s. ERR=%s\n"
 
-#: src/stored/fd_cmds.c:223 src/stored/fd_cmds.c:266
-msgid "Attempt to close non-open session.\n"
-msgstr "Intento de cerrar sesión no abierta.\n"
+#~ msgid "Uncompression error on file %s. ERR=%s\n"
+#~ msgstr "Error de descompresión en el archivo %s. ERR=%s\n"
 
-#: src/stored/fd_cmds.c:241
-msgid "Attempt to open already open session.\n"
-msgstr "Intento de abrir sesión ya abierta.\n"
+#~ msgid "GZIP data stream found, but GZIP not configured!\n"
+#~ msgstr "Flujo de datos GZIP encontrado, pero GZIP no está configurado!\n"
 
-#: src/stored/fd_cmds.c:295
-msgid "Attempt to read on non-open session.\n"
-msgstr "Intento de leer sesión no abierta.\n"
+#~ 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/stored/fd_cmds.c:313 src/stored/fd_cmds.c:322
-msgid "Attempt to open read on non-open session.\n"
-msgstr "Intento de abrir leer sesión no abierta.\n"
+#~ msgid "Decryption error\n"
+#~ msgstr "Error de descifrado\n"
 
-#: 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"
+#~ msgid "Logic error: output file should be open\n"
+#~ msgstr "Error lógico: el archivo de salida debe estar abierto\n"
 
-#: src/stored/mount.c:106
-#, c-format
-msgid "Job %d canceled.\n"
-msgstr "Job %d cancelado.\n"
+#~ msgid "Logic error: output file should not be open\n"
+#~ msgstr "Error lógica: archivo de salida no debe estar abierto\n"
 
-#: 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"
+#~ 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/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"
+#~ msgid "Open File Manager paused\n"
+#~ msgstr "Administrador Open File pausado\n"
 
-#: 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"
+#~ msgid "FAILED to pause Open File Manager\n"
+#~ msgstr "Fallo al pausar Administrador Open File\n"
 
-#: src/stored/mount.c:444
-#, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
-msgstr ""
-"Director quería Volumen \"%s\".\n"
-" Volumen actual \"%s\" no es aceptable porque:\n"
-" %s"
+#~ msgid "Running as '%s'. Privmask=%#08x\n"
+#~ msgstr "Ejecutando como '%s'. Privmask=%#08x\n"
 
-#: 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"
+#~ msgid "Failed to retrieve current UserName\n"
+#~ msgstr "Fallo al recuperar UserName actual\n"
 
-#: 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 ""
-"Bacula no puedo escribir en el volumen DVD \"%s\" porque: Los tamaños no "
-"coinciden! Volumen=%s Catálogo=%s\n"
+#, fuzzy
+#~ msgid "Daemon started %s. Jobs: run=%d running=%d.\n"
+#~ msgstr "Demonio iniciado %s, %d Job ejecutando desde el inicio.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ " Sizes: boffset_t=%d size_t=%d debug=%s trace=%d mode=%d,%d bwlimit=%skB/"
+#~ "s\n"
+#~ msgstr "Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d\n"
 
-#: src/stored/mount.c:624
-#, fuzzy, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
-"Correcting Catalog\n"
-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"
+#~ msgid "Director connected at: %s\n"
+#~ msgstr "Director conectado en: %s\n"
+
+#~ msgid "JobId %d Job %s is running.\n"
+#~ msgstr "JobId %d Job %s se está ejecutando.\n"
 
-#: src/stored/mount.c:631 src/stored/mount.c:659
 #, fuzzy
-msgid "Error updating Catalog\n"
-msgstr "Error abriendo archivo de datos %s\n"
+#~ msgid "    %s%s %s Job started: %s\n"
+#~ msgstr " %s%s Job iniciado: %s\n"
 
-#: 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 ""
-"Bacula no puede escribir en el Volumen de cinta \"%s\" porque:\n"
-"El número de archivos de desfasa! Volumen=%u Catalogo=%u\n"
+#, fuzzy
+#~ msgid ""
+#~ "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s Errors=%d\n"
+#~ "    Bwlimit=%s\n"
+#~ msgstr "Archivos=%s Bytes=%s Bytes/sec=%s Errores=%d\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "    Files: Examined=%s Backed up=%s\n"
+#~ msgstr "Archivos examinados=%s\n"
 
-#: src/stored/mount.c:651
-#, fuzzy, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The sizes do not match! Volume=%s Catalog=%s\n"
-"Correcting Catalog\n"
-msgstr ""
-"Bacula no puedo escribir en el volumen DVD \"%s\" porque: Los tamaños no "
-"coinciden! Volumen=%s Catálogo=%s\n"
+#~ msgid "    Processing file: %s\n"
+#~ msgstr "Procesando archivo: %s\n"
 
-#: 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 ""
-"Bacula no puede escribir en el Volumen de cinta \"%s\" porque:Los tamaños no "
-"coinciden! Volumen=%s Catalogo=%s\n"
+#~ msgid "    SDSocket closed.\n"
+#~ msgstr "SDSocket cerrado.\n"
 
-#: 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"
+#~ msgid "====\n"
+#~ msgstr "====\n"
 
-#: 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"
+#, fuzzy
+#~ msgid " SDSocket=closed\n"
+#~ msgstr "SDSocket cerrado.\n"
 
-#: 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"
+#~ msgid "Bad .status command: %s\n"
+#~ msgstr "Comando .status malo: %s\n"
 
-#: 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 ""
-"Volumen auto-cambiador \"%s\" no se encuentra en la ranura %d\n"
-"Estableciendo InChanger a cero en el catálogo.\n"
+#~ msgid "2900 Bad .status command, missing argument.\n"
+#~ msgstr "2900 Malo comando .status, falta argumento.\n"
 
-#: src/stored/mount.c:787
-msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
-msgstr "Hey !!!!! No WroteVol cero !!!!!\n"
+#~ msgid "2900 Bad .status command, wrong argument.\n"
+#~ msgstr "2900 Malo comando .status, malo argumento.\n"
 
-#: src/stored/mount.c:834
-#, c-format
-msgid ""
-"Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
-msgstr ""
-"Posición de la cinta no válida en el volumen \"%s\" en el dispositivo %s. "
-"Esperaba %d, obtuvo %d\n"
+#~ msgid "Cannot malloc %d network read buffer\n"
+#~ msgstr "No se pudo leer búfer de red malloc %d\n"
 
-#: 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"
+#~ msgid "     Could not access %s: ERR=%s\n"
+#~ msgstr "No es posible acceder %s: ERR=%s\n"
 
-#: src/stored/mac.c:81
-msgid "Read and write devices not properly initialized.\n"
-msgstr ""
-"Dispositivos de lectura y escritura no se han iniciado correctamente.\n"
+#~ msgid "     Could not follow link %s: ERR=%s\n"
+#~ msgstr "     No es posible seguir el enlace %s: ERR=%s\n"
 
-#: src/stored/mac.c:87
-#, c-format
-msgid "No Volume names found for %s.\n"
-msgstr "Nombres de Volúmenes no encontrados para %s.\n"
+#~ msgid "     Could not stat %s: ERR=%s\n"
+#~ msgstr "No se pudo stat %s: ERR=%s\n"
 
-#: src/stored/pythonsd.c:160 src/filed/pythonfd.c:142
-#, c-format
-msgid "Cannot delete attribute %s"
-msgstr "No se puedo eliminar atributo %s"
+#~ msgid "     Archive file skipped: %s\n"
+#~ msgstr "Archivo Archive omitido: %s\n"
 
-#: src/stored/pythonsd.c:193 src/filed/pythonfd.c:160 src/filed/pythonfd.c:176
-#, c-format
-msgid "Cannot find attribute %s"
-msgstr "No se puedo encontrar atributo %s"
+#~ msgid "     Recursion turned off. Directory skipped: %s\n"
+#~ msgstr "Recursión apagado. Directorio omitido: %s\n"
 
-#: src/stored/pythonsd.c:208
-msgid "Error in ParseTuple\n"
-msgstr "Error en ParseTuple\n"
+#~ msgid "     File system change prohibited. Directory skipped: %s\n"
+#~ msgstr ""
+#~ "Prohibido el cambio de sistema de archivos. Directorio omitido: %s\n"
 
-#: src/stored/pythonsd.c:224
-msgid "Parse tuple error in job_write\n"
-msgstr "Error de análisis de tupla en job_write\n"
+#~ msgid "     Could not open directory %s: ERR=%s\n"
+#~ msgstr "No se pudo abrir el directorio %s: ERR=%s\n"
 
-#: src/stored/pythonsd.c:261
-#, c-format
-msgid "Error in Python method %s\n"
-msgstr "Error en el método Python %s\n"
+#~ msgid "     Unknown file type %d: %s\n"
+#~ msgstr "Tipo de archivo desconocido %d: %s\n"
 
-#: src/stored/spool.c:83
-msgid "Spooling statistics:\n"
-msgstr "Estadísticas de cola:\n"
+#~ msgid "Network error in send to Director: ERR=%s\n"
+#~ msgstr "Error de red en enviar al Director: ERR=%s\n"
 
-#: src/stored/spool.c:86
-#, c-format
-msgid ""
-"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
-msgstr ""
-"Encolando datos: %u jobs activos, %s bytes; %u total de jobs, %s máximo "
-"bytes/job.\n"
+#~ msgid "     Cannot open %s: ERR=%s.\n"
+#~ msgstr "No se puede abrir %s: ERR=%s.\n"
 
-#: src/stored/spool.c:94
-#, c-format
-msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
-msgstr ""
-"Encolando Atributos: %u jobs activos, %s bytes; %u jobs total, %s bytes "
-"máximos.\n"
+#~ msgid "     Cannot open resource fork for %s: ERR=%s.\n"
+#~ msgstr "No se puede abrir recursos fork para %s: ERR=%s.\n"
 
-#: src/stored/spool.c:112
-msgid "Spooling data ...\n"
-msgstr "Datos en cola ...\n"
+#~ msgid "Error reading file %s: ERR=%s\n"
+#~ msgstr "Error leyendo archivo %s: ERR=%s\n"
 
-#: src/stored/spool.c:138
-#, c-format
-msgid "Bad return from despool WroteVol=%d\n"
-msgstr "Mal retorno de despool WroteVol=%d\n"
+#~ msgid "Storage command not issued before Verify.\n"
+#~ msgstr "Comando Storage no publicado antes de Verificar.\n"
 
-#: src/stored/spool.c:171
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
-msgstr "Fallo al abrir archivo %s de datos de cola: ERR=%s\n"
+#~ msgid "Error scanning record header: %s\n"
+#~ msgstr "Error escaneando registro de cabecera: %s\n"
 
-#: src/stored/spool.c:225
-msgid "Despooling zero bytes. Your disk is probably FULL!\n"
-msgstr "Desencolando cero bytes. El disco probablemente esta LLENO!\n"
+#~ 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/stored/spool.c:234
-#, c-format
-msgid "Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"
-msgstr ""
-"Perpetrando datos encolados al volumen \"%s\". Desencolando %s bytes ...\n"
+#, fuzzy
+#~ 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/stored/spool.c:239
-#, c-format
-msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
-msgstr "Escribiendo datos encolados al volumen. Desencolando %s bytes ...\n"
+#, fuzzy
+#~ msgid "llistea error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de llistxattr en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/spool.c:339
-#, c-format
-msgid ""
-"Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-"Tiempo transcurrido desencolando = %02d:%02d:%02d, Tasa de transferencia = "
-"%s Bytes/segundo\n"
+#, fuzzy
+#~ msgid "lgetea error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de getacl en el archivo \"%s\": ERR=%s\n"
 
-#: 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"
+#~ 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/stored/spool.c:407
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
-msgstr "Error de lectura de la cola. ERR=%s\n"
+#~ msgid "Failed to serialize extended attributes on file \"%s\"\n"
+#~ msgstr ""
+#~ "No se pudo serializar los atributos extendidos en el archivo \"%s\"\n"
 
-#: src/stored/spool.c:410
-#, c-format
-msgid "Spool read error. Wanted %u bytes, got %d\n"
-msgstr "Error de lectura de la cola. Esperaba %u bytes, obtuvo %d\n"
+#, fuzzy
+#~ msgid "lsetea error on file \"%s\": ERR=%s\n"
+#~ msgstr "setacl error en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/spool.c:411
-#, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
-msgstr ""
-"Error de lectura de cabecera de la cola. Esperaba %u bytes, obtuvo %d\n"
+#, fuzzy
+#~ msgid "attr_list error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de extattr_list_link en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/spool.c:418 src/stored/spool.c:419
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
-msgstr "Bloque de la cola demasiado grande. Máximo %u bytes, obtuvo %u\n"
+#, fuzzy
+#~ msgid "Received illegal xattr named %s on file \"%s\"\n"
+#~ msgstr "Flujo xattr ilegal, no hay XATTR_MAGIC en el archivo \"%s\"\n"
 
-#: src/stored/spool.c:425 src/stored/spool.c:426
-#, c-format
-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"
+#, fuzzy
+#~ msgid "attr_set error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de acl_set en el archivo \"%s\": ERR=%s\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"
+#~ msgid "llistxattr error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de llistxattr en el archivo \"%s\": ERR=%s\n"
 
-#: 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"
+#~ msgid "lgetxattr error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de lgetxattr en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/spool.c:492
-msgid "Bad return from despool in write_block.\n"
-msgstr "Malo retorno desde despool en write_block.\n"
+#~ msgid "lsetxattr error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de lsetxattr en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/spool.c:500
-msgid "Spooling data again ...\n"
-msgstr "Encolando datos de nuevo ...\n"
+#~ 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/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"
+#~ 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/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 ""
-"Error al escribir encabezado al archivo de cola. Probablemente disco lleno. "
-"Intentando recuperación. Esperaba escribir=%d tiene=%d\n"
+#~ 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/stored/spool.c:555 src/stored/spool.c:601
-msgid "Fatal despooling error."
-msgstr "Error fatal desencolando."
+#~ 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/stored/spool.c:563
-msgid "Retrying after header spooling error failed.\n"
-msgstr "Fallido reintento después de error encolando encabezado.\n"
+#~ 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/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"
+#~ 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/stored/spool.c:612
-msgid "Retrying after data spooling error failed.\n"
-msgstr "Fallido reintento después de error encolando dato.\n"
+#, fuzzy
+#~ msgid "getproplist error on file \"%s\": ERR=%s\n"
+#~ msgstr "error de getacl en el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/spool.c:682
-msgid "Network error on BlastAttributes.\n"
-msgstr "Error de red en BlastAttributes.\n"
+#, fuzzy
+#~ 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/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"
+#, fuzzy
+#~ msgid "setproplist error on file \"%s\": ERR=%s\n"
+#~ msgstr "strtoacl error en el archivo \"%s\": ERR=%s\n"
 
-#: 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"
+#~ 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/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"
+#~ 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/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"
+#~ 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/stored/lock.c:405
-#, c-format
-msgid "pthread_cond_wait failure. ERR=%s\n"
-msgstr "pthread_cond_wait fallido. ERR=%s\n"
+#~ msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
+#~ msgstr "No se puede abrir xattr %s en \"%s\": ERR=%s\n"
 
-#: src/stored/lock.c:504
-msgid "unknown blocked code"
-msgstr "Código desconocido bloqueado"
+#~ msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
+#~ msgstr "No se puede leer symlin %s en \"%s\": ERR=%s\n"
 
-#: src/stored/stored_conf.c:241
-#, c-format
-msgid "Expected a Device Type keyword, got: %s"
-msgstr "Esperaba una palabra clave Tipo Device, obtuvo: %s"
+#~ 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/stored/stored_conf.c:255
-#, c-format
-msgid ""
-"Maximum Block Size configured value %u is greater than allowed maximum: %u"
-msgstr ""
-"Valor máximo de tamaño bloque configurado %u es mayor de lo máximo "
-"permitido: %u"
+#~ 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/stored/stored_conf.c:269
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
-msgstr "Advertencia: Recurso \"%s\" (%d) no definido.\n"
+#~ msgid "Unable to open file \"%s\": ERR=%s\n"
+#~ msgstr "No se puede abrir el archivo \"%s\": ERR=%s\n"
 
-#: src/stored/stored_conf.c:272
-#, c-format
-msgid "dump_resource type=%d\n"
-msgstr "dump_resource tipo=%d\n"
+#~ 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/stored/stored_conf.c:388
-#, c-format
-msgid "Warning: unknown resource type %d\n"
-msgstr "Advertencia: Tipo de recurso %d desconocido\n"
-
-#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:645
-#: src/stored/stored_conf.c:680 src/wx-console/console_conf.c:164
-#: src/wx-console/console_conf.c:239 src/wx-console/console_conf.c:284
-#: src/wx-console/console_conf.c:311 src/console/console_conf.c:157
-#: src/console/console_conf.c:233 src/console/console_conf.c:278
-#: src/console/console_conf.c:305 src/filed/filed_conf.c:333
-#: src/filed/filed_conf.c:398 src/filed/filed_conf.c:428
-#: src/qt-console/bat_conf.cpp:161 src/qt-console/bat_conf.cpp:239
-#: src/qt-console/bat_conf.cpp:287 src/qt-console/bat_conf.cpp:317
-#, c-format
-msgid "Unknown resource type %d\n"
-msgstr "Tipo de recurso desconocido %d\n"
+#~ 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/stored/stored_conf.c:584
-#, c-format
-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"
+#~ 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/stored/stored_conf.c:590
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
-msgstr "Demasiados elementos en recursos \"%s\"\n"
+#~ 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/stored/stored_conf.c:624
-#, c-format
-msgid "Cannot find AutoChanger resource %s\n"
-msgstr "No puede encontrar recurso Auto-cambiador %s\n"
+#~ 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/stored/stored_conf.c:640
-#, fuzzy, c-format
-msgid "Unable to init lock: ERR=%s\n"
-msgstr "No se puede iniciar mutex: ERR=%s\n"
+#~ 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/stored/stored_conf.c:698
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
-msgstr ""
-"Intento para definir secundo recurso \"%s\" denominado \"%s\" no está "
-"permitido.\n"
+#~ 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/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"
+#~ 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/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 ""
-"%s es un tipo de dispositivo desconocido. Debe ser cinta o directorio\n"
-" o tener RequiresMount=yes para DVD. st_mode=%x\n"
+#~ 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/stored/dev.c:155
-msgid "DVD support is now deprecated\n"
-msgstr ""
+#~ 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/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"
+#~ 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/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"
+#~ 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/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"
+#~ msgid ""
+#~ "Unable to restore data of xattr %s on file \"%s\": Not all data available "
+#~ "in xattr stream\n"
+#~ msgstr ""
+#~ "No se puede restaurar los datos de xattr %s en el archivo \"%s\": No "
+#~ "todos los datos disponibles en flujo xattr\n"
 
-#: 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"
+#~ 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/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"
+#~ 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/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"
+#~ 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/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"
+#~ 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/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"
+#~ 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/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"
+#~ msgid "Failed to restore extensible attributes on file \"%s\"\n"
+#~ msgstr "Fallo al restablecer atributos extensible en el archivo \"%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"
+#~ msgid "Failed to restore extended attributes on file \"%s\"\n"
+#~ msgstr "Fallo al restablecer atributos extendidos en el archivo \"%s\"\n"
 
-#: src/stored/dev.c:416
-msgid "Illegal mode given to open dev.\n"
-msgstr "Modo ilegal dado para abrir dev.\n"
+#~ msgid ""
+#~ "Can't restore Extended Attributes of %s - incompatible xattr stream "
+#~ "encountered - %d\n"
+#~ msgstr ""
+#~ "No se puede restaurar los atributos extendidos de %s - incompatible flujo "
+#~ "xattr encontrado - %d\n"
 
-#: 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"
+#~ msgid "Unix attributes"
+#~ msgstr "Atributos Unix"
 
-#: src/stored/dev.c:574
-#, c-format
-msgid "Could not open: %s, ERR=%s\n"
-msgstr "No se pudo abrir: %s, ERR=%s\n"
+#~ msgid "File data"
+#~ msgstr "Archivo de datos"
 
-#: 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"
+#~ msgid "MD5 digest"
+#~ msgstr "Sumario MD5"
 
-#: src/stored/dev.c:649
-#, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
-msgstr "Rebobinar error en %s. ERR=%s.\n"
+#~ msgid "GZIP data"
+#~ msgstr "GZIP datos"
 
-#: 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"
+#, fuzzy
+#~ msgid "Compressed data"
+#~ msgstr "Datos dispersos"
 
-#: 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"
+#~ msgid "Extended attributes"
+#~ msgstr "Atributos extendidos"
 
-#: 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"
+#~ msgid "Sparse data"
+#~ msgstr "Datos dispersos"
 
-#: 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"
+#~ msgid "GZIP sparse data"
+#~ msgstr "Datos GZIP dispersos"
 
-#: src/stored/dev.c:865
-msgid "Bad device call. Device not open\n"
-msgstr "Mala llamada de dispositivo. Dispositivo no abierto\n"
+#, fuzzy
+#~ msgid "Compressed sparse data"
+#~ msgstr "Datos GZIP dispersos"
 
-#: src/stored/dev.c:877
-#, c-format
-msgid "Seek error: ERR=%s\n"
-msgstr "Seek error: ERR=%s\n"
+#~ msgid "Program names"
+#~ msgstr "Programa de nombres"
 
-#: src/stored/dev.c:914
-msgid " Bacula status:"
-msgstr "Estado del Bacula:"
+#~ msgid "Program data"
+#~ msgstr "Datos de programa"
 
-#: 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"
+#~ msgid "SHA1 digest"
+#~ msgstr "Sumario SHA1"
 
-#: src/stored/dev.c:923
-msgid " Device status:"
-msgstr "Estado del Dispositivo:"
+#~ msgid "Win32 data"
+#~ msgstr "Win32 datos"
 
-#: 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"
+#~ msgid "Win32 GZIP data"
+#~ msgstr "Win32 GZIP datos"
 
-#: 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"
+#, fuzzy
+#~ msgid "Win32 compressed data"
+#~ msgstr "Win32 datos"
 
-#: 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"
+#~ msgid "MacOS Fork data"
+#~ msgstr "Datos rama MacOS"
 
-#: src/stored/dev.c:1118
-msgid "Bad call to fsf. Device not open\n"
-msgstr "Mala llamada a fsf. Dispositivo no abierto\n"
+#~ msgid "HFS+ attribs"
+#~ msgstr "HFS+ attribs"
 
-#: 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"
+#~ msgid "Standard Unix ACL attribs"
+#~ msgstr "ACL estándar de Unix attribs"
 
-#: 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"
+#~ msgid "Default Unix ACL attribs"
+#~ msgstr "ACL por defecto de Unix attribs"
 
-#: 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"
+#~ msgid "SHA256 digest"
+#~ msgstr "Sumario SHA256"
 
-#: src/stored/dev.c:1285
-msgid "Bad call to bsf. Device not open\n"
-msgstr "Mala llamada a bsf. Dispositivo no abierto\n"
+#~ msgid "SHA512 digest"
+#~ msgstr "Sumario SAH512"
 
-#: 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"
+#~ msgid "Signed digest"
+#~ msgstr "Sumario Firmado"
 
-#: 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"
+#~ msgid "Encrypted File data"
+#~ msgstr "Cifrado de Archivo de datos"
 
-#: src/stored/dev.c:1327
-msgid "Bad call to fsr. Device not open\n"
-msgstr "Mala llamada a FSR. El dispositivo no abre\n"
+#~ msgid "Encrypted Win32 data"
+#~ msgstr "Cifrado de datos Win32"
 
-#: src/stored/dev.c:1337
-#, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
-msgstr "ioctl MTFSR no permitido en %s.\n"
+#~ msgid "Encrypted session data"
+#~ msgstr "Cifrado de datos de sesiones "
 
-#: 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"
+#~ msgid "Encrypted GZIP data"
+#~ msgstr "Cifrado de datos GZIP"
 
-#: 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"
+#, fuzzy
+#~ msgid "Encrypted compressed data"
+#~ msgstr "Cifrado de datos de sesiones "
 
-#: src/stored/dev.c:1393
-#, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
-msgstr "ioctl MTBSR no permitido en %s.\n"
+#~ msgid "Encrypted Win32 GZIP data"
+#~ msgstr "Cifrado de datos Win32 GZIP"
 
-#: 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"
+#, fuzzy
+#~ msgid "Encrypted Win32 Compressed data"
+#~ msgstr "Cifrado de datos Win32"
 
-#: 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"
+#~ msgid "Encrypted MacOS fork data"
+#~ msgstr "Datos encriptados rama MacOS"
 
-#: 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"
+#, fuzzy
+#~ msgid "Plugin Data"
+#~ msgstr "Opciones de Plug-in"
 
-#: src/stored/dev.c:1547
-msgid "Attempt to WEOF on non-appendable Volume\n"
-msgstr "Intento de WEOF en Volumen no-appendable\n"
+#, fuzzy
+#~ msgid "Restore Object"
+#~ msgstr "Restauración OK"
 
-#: 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"
+#~ msgid "AIX Specific ACL attribs"
+#~ msgstr "Atributos ACL específicos de AIX"
 
-#: src/stored/dev.c:1664
-#, c-format
-msgid "unknown func code %d"
-msgstr "código de función %d desconocido"
+#~ msgid "Darwin Specific ACL attribs"
+#~ msgstr "Atributos ACL específicos de Darwin"
 
-#: 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"
+#~ msgid "FreeBSD Specific Default ACL attribs"
+#~ msgstr "Atributos ACL por defecto específicos de FreeBSD"
 
-#: 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"
+#~ msgid "FreeBSD Specific Access ACL attribs"
+#~ msgstr "Atributos ACL de acceso específicos de FreeBSD"
 
-#: 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"
+#~ msgid "HPUX Specific ACL attribs"
+#~ msgstr "Atributos ACL específicos de HPUX"
 
-#: 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"
+#~ msgid "Irix Specific Default ACL attribs"
+#~ msgstr "Atributos ACL por defecto específicos de Irix"
 
-#: src/stored/dev.c:1887
-#, c-format
-msgid "Could not reopen: %s, ERR=%s\n"
-msgstr "No se pudo reabrir: %s, ERR=%s\n"
+#~ msgid "Irix Specific Access ACL attribs"
+#~ msgstr "Atributos ACL de acceso específicos de Irix"
 
-#: 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"
+#~ msgid "Linux Specific Default ACL attribs"
+#~ msgstr "Atributos ACL por defecto específicos de Linux"
 
-#: 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"
+#~ msgid "Linux Specific Access ACL attribs"
+#~ msgstr "Atributos ACL de acceso específicos de Linux"
 
-#: src/stored/bscan.c:118
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -m                update media info in database\n"
-"       -D <driver name>  specify the driver database name (default NULL)\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password>     specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -t <port>         specify database port (default 0)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-"\n"
-"Utilice: bscan [opciones] <archivo-bacula>\n"
-" -b <archivo> especifica un archivo bootstrap\n"
-" -c <archivo> especifica un archivo de configuración\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -m Actualiza información de los medios en la base de datos\n"
-" -D <nombre del driver> especifica el nombre del driver de base de datos "
-"(por defecto NULL)\n"
-" -n <nombre> especifica el nombre de la base de datos (por defecto bacula)\n"
-" -u <usuario> especifica el nombre de usuario de la base de datos (por "
-"defecto bacula)\n"
-" -P <contraseña> especifica la contraseña de la base de datos (por defecto "
-"none)\n"
-" -h <servidor> especifica servidor de la base de datos (por defecto NULL)\n"
-" -t <puerto> especifica el puerto de la base de datos (por defecto 0)\n"
-" -p proceder a pesar de los errores\n"
-" -r lista de registros\n"
-
-#: src/stored/bscan.c:278
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
-msgstr "Directorio de Trabajo: %s no encontrado. No se puede continuar.\n"
+#, fuzzy
+#~ msgid "TRU64 Specific Default ACL attribs"
+#~ msgstr "Atributos ACL por defecto específicos de Irix"
 
-#: src/stored/bscan.c:282
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
-msgstr ""
-"Directorio de Trabajo: %s no es un directorio. No se puede continuar.\n"
+#, fuzzy
+#~ msgid "TRU64 Specific Access ACL attribs"
+#~ msgstr "Atributos ACL de acceso específicos de Irix"
 
-#: src/stored/bscan.c:296 src/stored/bscan.c:372
-#, c-format
-msgid "First Volume Size = %s\n"
-msgstr "Tamaño Primero Volumen = %s\n"
+#, fuzzy
+#~ msgid "Solaris Specific POSIX ACL attribs"
+#~ msgstr "Atributos ACL específicos de Solaris"
 
-#: src/stored/bscan.c:302 src/tools/bvfs_test.c:215 src/tools/bbatch.c:201
-#: src/tools/bbatch.c:250 src/tools/ing_test.c:191
-msgid "Could not init Bacula database\n"
-msgstr "No se pudo iniciar base de datos de Bacula\n"
+#, fuzzy
+#~ msgid "Solaris Specific NFSv4/ZFS ACL attribs"
+#~ msgstr "Atributos ACL específicos de Solaris"
 
-#: src/stored/bscan.c:309 src/tools/bvfs_test.c:224 src/tools/bbatch.c:257
-#: src/tools/ing_test.c:200
-#, c-format
-msgid "Using Database: %s, User: %s\n"
-msgstr "Usando Base de Datos: %s, Usuario: %s\n"
+#, fuzzy
+#~ msgid "AFS Specific ACL attribs"
+#~ msgstr "Atributos ACL específicos de AIX"
 
-#: src/stored/bscan.c:343
-#, c-format
-msgid "Create JobMedia for Job %s\n"
-msgstr "Crear JobMedia para Job %s\n"
+#, fuzzy
+#~ msgid "AIX Specific POSIX ACL attribs"
+#~ msgstr "Atributos ACL específicos de AIX"
 
-#: src/stored/bscan.c:353
-#, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
-msgstr "No es posible crear registro JobMedia para Volumen=%s Job=%s\n"
+#, fuzzy
+#~ msgid "AIX Specific NFSv4 ACL attribs"
+#~ msgstr "Atributos ACL específicos de AIX"
 
-#: src/stored/bscan.c:420
-#, c-format
-msgid "done: %d%%\n"
-msgstr "Hecho: %d%%\n"
+#, fuzzy
+#~ msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
+#~ msgstr "Atributos ACL de acceso específicos de FreeBSD"
 
-#: src/stored/bscan.c:444
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
-msgstr "El volumen esta prelabeled. Esta cinta no puede ser escaneada. \n"
+#, fuzzy
+#~ msgid "GNU Hurd Specific Default ACL attribs"
+#~ msgstr "Atributos ACL por defecto específicos de Irix"
 
-#: src/stored/bscan.c:456
-#, c-format
-msgid "Pool record for %s found in DB.\n"
-msgstr "Registro Pool para %s encontrado en BD.\n"
+#, fuzzy
+#~ msgid "GNU Hurd Specific Access ACL attribs"
+#~ msgstr "Atributos ACL de acceso específicos de Irix"
 
-#: src/stored/bscan.c:460
-#, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
-msgstr "VOL_LABEL: Registro Pool no encontrado para Pool: %s\n"
+#, fuzzy
+#~ msgid "GNU Hurd Specific Extended attribs"
+#~ msgstr "Atributos Extendidos Específicos de Linux"
 
-#: src/stored/bscan.c:466
-#, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
-msgstr "VOL_LABEL: PoolType desajustado. BD=%s Vol=%s\n"
+#, fuzzy
+#~ msgid "IRIX Specific Extended attribs"
+#~ msgstr "Atributos Extendidos Específicos de Linux"
 
-#: src/stored/bscan.c:470
-#, c-format
-msgid "Pool type \"%s\" is OK.\n"
-msgstr "Tipo de Pool \"%s\" esta OK.\n"
+#, fuzzy
+#~ msgid "TRU64 Specific Extended attribs"
+#~ msgstr "Atributos Extendidos Específicos de Linux"
 
-#: src/stored/bscan.c:480
-#, c-format
-msgid "Media record for %s found in DB.\n"
-msgstr "Registro Media para %s encontrado en BD.\n"
+#, fuzzy
+#~ msgid "AIX Specific Extended attribs"
+#~ msgstr "Atributos Extendidos Específicos de Linux"
 
-#: src/stored/bscan.c:487
-#, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
-msgstr "VOL_LABEL: Registro Media no encontrado para Volumen: %s\n"
+#~ msgid "OpenBSD Specific Extended attribs"
+#~ msgstr "Atributos Extendidos específicos de OpenBSD"
 
-#: src/stored/bscan.c:494
-#, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
-msgstr "VOL_LABEL: MediaType desajustada. BD=%s Vol=%s\n"
+#~ msgid "Solaris Specific Extensible attribs or System Extended attribs"
+#~ msgstr ""
+#~ "Atributos extensible específicos de Solaris o atributos de Sistema de "
+#~ "Extensión"
 
-#: src/stored/bscan.c:498
-#, c-format
-msgid "Media type \"%s\" is OK.\n"
-msgstr "Tipo de Media \"%s\" esta OK.\n"
+#~ msgid "Solaris Specific Extended attribs"
+#~ msgstr "Atributos Extendidos Específicos de Solaris"
 
-#: src/stored/bscan.c:508
-#, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
-msgstr "VOL_LABEL: OK para Volumen: %s\n"
+#~ msgid "Darwin Specific Extended attribs"
+#~ msgstr "Atributos Extendidos Específicos de Darwin"
 
-#: src/stored/bscan.c:515
-#, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
-msgstr ""
-"%d \"errores\" ignorados antes del primero registro de Inicio de Sesión.\n"
+#~ msgid "FreeBSD Specific Extended attribs"
+#~ msgstr "Atributos Extendidos Específicos de FreeBSD"
 
-#: src/stored/bscan.c:526
-#, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
-msgstr "SOS_LABEL: Encontrado registro Job para JobId: %d\n"
+#~ msgid "Linux Specific Extended attribs"
+#~ msgstr "Atributos Extendidos Específicos de Linux"
 
-#: src/stored/bscan.c:531
-#, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
-msgstr "SOS_LABEL: Registro Job no encontrado para JobId: %d\n"
+#~ msgid "NetBSD Specific Extended attribs"
+#~ msgstr "Atributos Extendidos Específicos de NetBSD"
 
-#: src/stored/bscan.c:571
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr "SOS_LABEL: VolSessId desajustado para JobId=%u. BD=%d Vol=%d\n"
+#~ msgid "Unable to set file modes %s: ERR=%s\n"
+#~ msgstr "No se pudo establecer modos del archivo %s: ERR=%s\n"
 
-#: src/stored/bscan.c:577
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr "SOS_LABEL: VolSessTime desajustado para JobId=%u. BD=%d Vol=%d\n"
+#~ msgid "Unable to set file owner %s: ERR=%s\n"
+#~ msgstr "No se pudo establecer propietario del archivo %s: ERR=%s\n"
 
-#: src/stored/bscan.c:583
-#, c-format
-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"
+#~ msgid "Unable to set file times %s: ERR=%s\n"
+#~ msgstr "No se pudo establecer tiempos del archivo %s: ERR=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "File size of restored file %s not correct. Original %s, restored %s.\n"
+#~ msgstr ""
+#~ "Tamaño del archivo %s restaurado no es correcto. Original %s, restaurado "
+#~ "%s.\n"
 
-#: src/stored/bscan.c:647
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
-msgstr "No se pudo actualizar el registro de trabajo. ERR=%s\n"
+#~ msgid "Unable to set file flags %s: ERR=%s\n"
+#~ msgstr "No es posible establecer banderas  en archivo %s: ERR=%s\n"
 
-#: src/stored/bscan.c:658
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
-msgstr "Final de todos los volúmenes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
+#~ msgid "File skipped. Not newer: %s\n"
+#~ msgstr "Archivo omitido. No más reciente: %s\n"
 
-#: src/stored/bscan.c:670
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
-msgstr "No se pudo encontrar registro trabajo para SessId=%d SessTime=%d.\n"
+#~ msgid "File skipped. Not older: %s\n"
+#~ msgstr "Archivo omitido. No más viejo: %s\n"
 
-#: src/stored/bscan.c:701
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
-msgstr "%s registros de archivo. En el archivo:blk=%s:%s bytes=%s\n"
+#~ msgid "File skipped. Already exists: %s\n"
+#~ msgstr "Archivo omitido. Ya existe: %s\n"
 
-#: src/stored/bscan.c:766
-#, c-format
-msgid "Got MD5 record: %s\n"
-msgstr "Obtuvo registro MD5: %s\n"
+#~ msgid "File %s already exists and could not be replaced. ERR=%s.\n"
+#~ msgstr "El archivo %s ya existe y no puede ser reemplazado. ERR=%s.\n"
 
-#: src/stored/bscan.c:774
-#, c-format
-msgid "Got SHA1 record: %s\n"
-msgstr "Obtuvo registro SHA1: %s\n"
+#~ msgid "bpkt already open fid=%d\n"
+#~ msgstr "bpkt ya abierto fid=%d\n"
 
-#: src/stored/bscan.c:782
-#, c-format
-msgid "Got SHA256 record: %s\n"
-msgstr "Obtuvo registro SHA256: %s\n"
+#~ msgid "Cannot make fifo %s: ERR=%s\n"
+#~ msgstr "No puede crear fifo %s: ERR=%s\n"
 
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Got SHA512 record: %s\n"
-msgstr "Obtuvo registro SHA512: %s\n"
+#~ msgid "Cannot make node %s: ERR=%s\n"
+#~ msgstr "No puede crear nodo %s: ERR=%s\n"
 
-#: src/stored/bscan.c:798 src/stored/bscan.c:805
-msgid "Got signed digest record\n"
-msgstr "Obtuvo registro resume firmado: %s\n"
+#~ msgid "Could not symlink %s -> %s: ERR=%s\n"
+#~ msgstr "No se pudo crear enlace simbólico %s -> %s: ERR=%s\n"
 
-#: src/stored/bscan.c:811
-#, c-format
-msgid "Got Prog Names Stream: %s\n"
-msgstr "Obtuvo Stream Nombres de Programas: %s\n"
+#~ msgid "Could not restore file flags for file %s: ERR=%s\n"
+#~ msgstr ""
+#~ "No se pudo restaurar el archivo de banderas para el archivo% s: ERR=%s\n"
 
-#: src/stored/bscan.c:817
-msgid "Got Prog Data Stream record.\n"
-msgstr "Obtuvo Registro Stream Datos de Programas: %s\n"
+#~ msgid "Could not hard link %s -> %s: ERR=%s\n"
+#~ msgstr "No se pudo crear enlace duro %s -> %s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Could not reset file flags for file %s: ERR=%s\n"
+#~ msgstr ""
+#~ "No se pudo restablecer el archivo de banderas para el archivo %s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Original file %s have been deleted: type=%d\n"
+#~ msgstr "Archivo  %s original se han eliminado: tipo=%d\n"
 
-#: src/stored/bscan.c:936
-#, c-format
-msgid "Created File record: %s\n"
-msgstr "Registro Archivo creado: %s\n"
+#~ msgid "Original file %s not saved: type=%d\n"
+#~ msgstr "Archivo original %s no guardado: tipo=%d\n"
 
-#: 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"
+#~ msgid "Unknown file type %d; not restored: %s\n"
+#~ msgstr "Tipo de archivo desconocido %d; no restaurado: %s\n"
 
-#: 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"
+#~ msgid "Zero length filename: %s\n"
+#~ msgstr "Nombre de archivo con longitud cero: %s\n"
 
-#: src/stored/bscan.c:989
-#, c-format
-msgid "Created Media record for Volume: %s\n"
-msgstr "Creado Registro Media para Volumen: %s\n"
+#, fuzzy
+#~ msgid "Plugin: \"%s\" not found.\n"
+#~ msgstr "Plugin=%s no encontrado.\n"
 
-#: 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"
+#~ msgid "     NODUMP flag set - will not process %s\n"
+#~ msgstr "Indicador NODUMP establecido - no procesará %s\n"
 
-#: 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"
+#~ msgid "Cannot stat file %s: ERR=%s\n"
+#~ msgstr "No puede stat archivo %s: ERR=%s\n"
 
-#: src/stored/bscan.c:1031
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
-msgstr "Creado el registro Pool para Pool: %s\n"
+#~ msgid "%s mtime changed during backup.\n"
+#~ msgstr "%s mtime cambiado durante la copia de seguridad.\n"
 
-#: 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"
+#~ msgid "%s ctime changed during backup.\n"
+#~ msgstr "%s ctime cambiado durante la copia de seguridad.\n"
 
-#: src/stored/bscan.c:1060
-#, c-format
-msgid "Created Client record for Client: %s\n"
-msgstr "Creado registro Cliente para Cliente: %s\n"
+#, fuzzy
+#~ msgid "%s size of %lld changed during backup to %lld.n"
+#~ msgstr "%s tamaño cambiado durante la copia de seguridad.\n"
 
-#: src/stored/bscan.c:1077
-#, c-format
-msgid "Fileset \"%s\" already exists.\n"
-msgstr "Fileset \"%s\" ya existe.\n"
+#~ msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
+#~ msgstr ""
+#~ "Directorio de nivel superior \"%s\" tiene fstype \"%s\" no listado\n"
 
-#: 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"
+#~ msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
+#~ msgstr ""
+#~ "Directorio de nivel superior \"%s\" tiene un tipo de unidad \"%s\" no "
+#~ "listado\n"
 
-#: src/stored/bscan.c:1086
-#, c-format
-msgid "Created FileSet record \"%s\"\n"
-msgstr "Creado registro FileSet \"%s\"\n"
+#~ msgid "Cannot create directory %s: ERR=%s\n"
+#~ msgstr "No se puede crear directorio %s: ERR=%s\n"
 
-#: 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"
+#~ msgid "%s exists but is not a directory.\n"
+#~ msgstr "%s existe pero no es un directorio.\n"
 
-#: 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"
+#~ msgid "Cannot change owner and/or group of %s: ERR=%s\n"
+#~ msgstr "No se puede cambiar el propietario y/o grupo de %s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Cannot change permissions of %s: ERR=%s\n"
+#~ msgstr "No puede cambiar los permisos de %s: ERR=%s\n"
 
-#: 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"
+#~ msgid "%c: is not a valid drive.\n"
+#~ msgstr "%c: no es una unidad válida.\n"
 
-#: 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"
+#~ msgid "Too many subdirectories. Some permissions not reset.\n"
+#~ msgstr "Demasiados subdirectorios. Algunos permisos no se restablece.\n"
 
-#: src/stored/bscan.c:1225
-#, c-format
-msgid "Job Termination code: %d"
-msgstr "Código de Terminación del Job: %d"
+#~ msgid "Only ipv4 and ipv6 are supported (%d)\n"
+#~ msgstr "Solo ipv4 y ipv6 estan soportado (%d)\n"
 
-#: src/stored/bscan.c:1230
-#, c-format
-msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
-msgstr ""
-"%s\n"
-"JobId: %d\n"
-"Job: %s\n"
-"FileSet: %s\n"
-"Nivel de Respaldo: %s\n"
-"Cliente: %s\n"
-"Hora de Inicio: %s\n"
-"Hora de Finalización: %s\n"
-"Archivos Escritos: %s\n"
-"Bytes Escritos: %s\n"
-"Id Volumen Sesión: %d\n"
-"Tiempo de la Sesión del Volumen: %d\n"
-"Últimos Bytes del Volumen: %s\n"
-"Terminación: %s\n"
-"\n"
+#~ msgid "Only ipv4 is supported (%d)\n"
+#~ msgstr "Solo ipv4 esta soportado (%d)\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "You tried to assign a ipv6 address to an ipv4(%d)\n"
+#~ msgstr "Se trató de asignar una dirección IPv6 a IPv4(%d)\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "You tried to assign an ipv4 address to an ipv6(%d)\n"
+#~ msgstr "Se trató de asignar una dirección IPv4 a IPv6(%d)\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Can't add default IPv4 address (%s)\n"
+#~ msgstr "No se puede agregar dirección por defecto (%s)\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "Old style addresses cannot be mixed with new style. Try removing Port=nnn."
+#~ msgstr ""
+#~ "el viejo estilo de las direcciones no se pueden mezclar con el nuevo "
+#~ "estilo"
 
-#: src/stored/bscan.c:1327
-msgid "Updated MD5/SHA1 record\n"
-msgstr "Actualizado registro MD5/SHA1\n"
+#, fuzzy
+#~ msgid "Cannot resolve service(%s)"
+#~ msgstr "no se puede resolver el servicio(%s)"
 
-#: 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"
+#, fuzzy
+#~ msgid "Cannot resolve hostname(%s) %s"
+#~ msgstr "no se puede resolver el hostname(%s) %s"
 
-#: 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"
+#, fuzzy
+#~ msgid "Expected a block to begin with { but got: %s"
+#~ msgstr "Esperaba un inicio de bloque {, obtuvo: %s"
 
-#: src/stored/job.c:261
-msgid "Unable to authenticate File daemon\n"
-msgstr "No se puede autenticar demonio File\n"
+#~ msgid "Empty addr block is not allowed"
+#~ msgstr "Bloque de direcciones vacío no está permitido"
 
-#: 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"
+#, fuzzy
+#~ msgid "Expected a string but got: %s"
+#~ msgstr "Esperaba una cadena, obtuvo: %s"
 
-#: src/stored/btape.c:185
-#, c-format
-msgid ""
-"\n"
-"\n"
-"!!!! Warning large disk addressing disabled. boffset_t=%d should be 8 or "
-"more !!!!!\n"
-"\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"!!!! Advertencia, deshabilitado direccionamiento de discos largos. boffset_t="
-"%d debe ser de 8 o más !!!!!\n"
-"\n"
-"\n"
+#, fuzzy
+#~ msgid "Expected a string [ip|ipv4|ipv6] but got: %s"
+#~ msgstr "Espera una cadena [ip|ipv4|ipv6], obtuvo: %s"
 
-#: src/stored/btape.c:192
-#, c-format
-msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
-msgstr "32 bit printf/scanf problema. i=%d x32=%u y32=%u\n"
+#, fuzzy
+#~ msgid "Expected a string [ip|ipv4] but got: %s"
+#~ msgstr "Espera una cadena [ip|ipv4], obtuvo: %s"
 
-#: src/stored/btape.c:201
-msgid "64 bit printf/scanf problem. i=%d x64=%"
-msgstr "64 bit printf/scanf problema. i=%d x64=%"
+#, fuzzy
+#~ msgid "Expected an equal = but got: %s"
+#~ msgstr "Esperaba una igual =, obtuvo: %s"
 
-#: src/stored/btape.c:206
-#, c-format
-msgid "Tape block granularity is %d bytes.\n"
-msgstr "Granularidad del bloque de cinta es %d bytes.\n"
+#, fuzzy
+#~ msgid "Expected an identifier [addr|port] but got: %s"
+#~ msgstr "Esperaba un identificador [addr|port], obtuvo: %s"
 
-#: src/stored/btape.c:279
-msgid "No archive name specified.\n"
-msgstr "Nombre de archivo no especificado.\n"
+#~ msgid "Only one port per address block"
+#~ msgstr "Sólo un puerto por bloque de direcciones"
 
-#: src/stored/btape.c:283
-msgid "Improper number of arguments specified.\n"
-msgstr "Número incorrecto de argumentos especificados.\n"
+#~ msgid "Only one addr per address block"
+#~ msgstr "Sólo una dirección por bloque de direcciones"
 
-#: src/stored/btape.c:297
-msgid "btape does not work with DVD storage.\n"
-msgstr "btape no funciona con el almacenamiento de DVD.\n"
+#, fuzzy
+#~ msgid "Expected a identifier [addr|port] but got: %s"
+#~ msgstr "Esperaba un identificador [addr|port], obtuvo: %s"
 
-#: src/stored/btape.c:302
-msgid "btape only works with tape storage.\n"
-msgstr "btape sólo funciona con almacenamiento en cinta.\n"
+#~ msgid "Expected a equal =, got: %s"
+#~ msgstr "Esperaba una igual =, obtuvo: %s"
 
-#: src/stored/btape.c:383
-#, c-format
-msgid "Total Volume bytes=%sB. Total Write rate = %sB/s\n"
-msgstr "Volumen total bytes=%sB. Tasa total de Escritura = %sB/s\n"
+#, fuzzy
+#~ msgid "Expected a number or a string but got: %s"
+#~ msgstr "Esperaba un numero o una cadena , obtuvo: %s"
 
-#: src/stored/btape.c:409
-#, c-format
-msgid "Volume bytes=%sB. Write rate = %sB/s\n"
-msgstr "Volumen bytes=%sB. Tasa de Escritura = %sB/s\n"
+#, fuzzy
+#~ msgid "Expected an IP number or a hostname but got: %s"
+#~ msgstr "Esperaba un numero IP o un hostname, obtuvo: %s"
 
-#: src/stored/btape.c:477
-#, c-format
-msgid "open device %s: OK\n"
-msgstr "abrir dispositivo %s: OK\n"
+#~ msgid "State machine missmatch"
+#~ msgstr "Estado de la máquina desajustado"
 
-#: src/stored/btape.c:500
-msgid "Enter Volume Name: "
-msgstr "Ingrese nombre de Volumen:"
+#, fuzzy
+#~ msgid "Expected a end of block with } but got: %s"
+#~ msgstr "Esperaba un fin de bloque }, obtuvo: %s"
 
-#: src/stored/btape.c:507
-#, c-format
-msgid "Device open failed. ERR=%s\n"
-msgstr "Fallo al abrir dispositivo. ERR=%s\n"
+#, fuzzy
+#~ msgid "Cannot add hostname(%s) and port(%s) to addrlist (%s)"
+#~ msgstr ""
+#~ "No se puede agregar el nombre de maquina(%s) y puerto(%s) a addrlist(%s)"
 
-#: src/stored/btape.c:512
-#, c-format
-msgid "Wrote Volume label for volume \"%s\".\n"
-msgstr "Escribe la etiqueta de Volumen para el volumen \"%s\".\n"
+#, fuzzy
+#~ msgid "Expected an end of block with } but got: %s"
+#~ msgstr "Esperaba un fin de bloque }, obtuvo: %s"
 
-#: src/stored/btape.c:526
-msgid "Volume has no label.\n"
-msgstr "Volumen no tiene etiqueta.\n"
+#~ msgid "Expected an IP number or a hostname, got: %s"
+#~ msgstr "Esperaba un numero IP o un hostname, obtuvo: %s"
 
-#: src/stored/btape.c:529
-msgid "Volume label read correctly.\n"
-msgstr "Etiqueta de volumen leída correctamente.\n"
+#, fuzzy
+#~ msgid "Cannot add port (%s) to (%s)"
+#~ msgstr "no puede agregar el puerto (%s) a (%s)"
 
-#: src/stored/btape.c:532
-#, c-format
-msgid "I/O error on device: ERR=%s"
-msgstr "error de E/S en el dispositivo: ERR=%s"
+#~ msgid "Expected a port number or string, got: %s"
+#~ msgstr "Esperaba un numero de puerto o cadena, obtuvo: %s"
 
-#: src/stored/btape.c:535
-msgid "Volume name error\n"
-msgstr "Nombre de Volumen error\n"
+#~ msgid "Error scanning attributes: %s\n"
+#~ msgstr "Error escaneando atributos: %s\n"
 
-#: src/stored/btape.c:538
-#, c-format
-msgid "Error creating label. ERR=%s"
-msgstr "Error creando etiqueta. ERR=%s"
+#~ msgid "Child exited normally."
+#~ msgstr "Hijo salió normalmente."
 
-#: src/stored/btape.c:541
-msgid "Volume version error.\n"
-msgstr "Volumen versión error.\n"
+#~ msgid "Unknown error during program execvp"
+#~ msgstr "Error desconocido durante el programa execvp"
 
-#: src/stored/btape.c:544
-msgid "Bad Volume label type.\n"
-msgstr "Malo tipo de etiqueta de volumen.\n"
+#~ msgid "Child exited with code %d"
+#~ msgstr "Hijo salió con el código %d"
 
-#: src/stored/btape.c:547
-msgid "Unknown error.\n"
-msgstr "Error desconocido.\n"
+#~ msgid "Child died from signal %d: %s"
+#~ msgstr "Niño muerto con la señal %d: %s"
 
-#: src/stored/btape.c:565
-#, c-format
-msgid "Bad status from load. ERR=%s\n"
-msgstr "Malo estado de carga. ERR=%s\n"
+#~ msgid "Invalid errno. No error message possible."
+#~ msgstr "Invalido errorno. Imposible mensaje de error."
 
-#: src/stored/btape.c:567
-#, c-format
-msgid "Loaded %s\n"
-msgstr "Cargado %s\n"
+#~ msgid "Status OK\n"
+#~ msgstr "Estado OK\n"
 
-#: 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"
+#~ msgid "bget_msg: unknown signal %d\n"
+#~ msgstr "bget_msg: señal desconocida %d\n"
 
-#: src/stored/btape.c:579 src/stored/btape.c:1571
-#, c-format
-msgid "Rewound %s\n"
-msgstr "Rebobinado %s\n"
+#, fuzzy
+#~ msgid "Attr spool write error. wrote=%d wanted=%d bytes. ERR=%s\n"
+#~ msgstr "Error de escritura en cola de atributo. ERR=%s\n"
 
-#: 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"
+#~ msgid "TLS connection initialization failed.\n"
+#~ msgstr "Ha fallado la conexión de inicialización TLS.\n"
 
-#: src/stored/btape.c:609
-#, c-format
-msgid "Wrote 1 EOF to %s\n"
-msgstr "Escribir 1 EOF para %s\n"
+#~ msgid "TLS Negotiation failed.\n"
+#~ msgstr "Negociación TLS fallida.\n"
 
-#: src/stored/btape.c:612
-#, c-format
-msgid "Wrote %d EOFs to %s\n"
-msgstr "Escribir %d EOFs para %s\n"
+#~ msgid ""
+#~ "TLS certificate verification failed. Peer certificate did not match a "
+#~ "required commonName\n"
+#~ msgstr ""
+#~ "Comprobación de certificados TLS fallido. Certificado equivalente no "
+#~ "corresponde con el commonName requerido\n"
 
-#: src/stored/btape.c:630
-msgid "Moved to end of medium.\n"
-msgstr "Movido para el final de la media.\n"
+#~ msgid ""
+#~ "TLS host certificate verification failed. Host name \"%s\" did not match "
+#~ "presented certificate\n"
+#~ msgstr ""
+#~ "Fallo en verificación en certificado TLS de la maquina. Nombre de la "
+#~ "maquina \"%s\" no coincide con el certificado presentado\n"
 
-#: src/stored/btape.c:657
-#, c-format
-msgid "Bad status from bsf. ERR=%s\n"
-msgstr "Mal estado desde BSF. ERR=%s\n"
+#~ msgid "TLS enabled but not configured.\n"
+#~ msgstr "TLS activado, pero no configurado.\n"
 
-#: src/stored/btape.c:659
-#, c-format
-msgid "Backspaced %d file%s.\n"
-msgstr "Backspaced %d archivo%s.\n"
+#~ msgid "TLS enable but not configured.\n"
+#~ msgstr "TLS permitido, pero no configurado.\n"
 
-#: src/stored/btape.c:676
-#, c-format
-msgid "Bad status from bsr. ERR=%s\n"
-msgstr "Malo estado de BSR. ERR=%s\n"
+#~ msgid "No problem."
+#~ msgstr "No hay problema."
 
-#: src/stored/btape.c:678
-#, c-format
-msgid "Backspaced %d record%s.\n"
-msgstr "Backspaced %d registro%s.\n"
+#~ msgid "Authoritative answer for host not found."
+#~ msgstr "Respuesta autoritativa para el host no encontrado."
 
-#: src/stored/btape.c:706
-#, c-format
-msgid "Device status:\n"
-msgstr "Estado del Dispositivo:\n"
+#~ msgid "Non-authoritative for host not found, or ServerFail."
+#~ msgstr "Non-autoritativa para la maquina no encontrada, o ServerFail."
 
-#: src/stored/btape.c:725
-#, c-format
-msgid "Status:\n"
-msgstr "Estados:\n"
+#~ msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
+#~ msgstr "Errores no recuperables, FORMERR, RECHAZADO o NOTIMP."
 
-#: src/stored/btape.c:740
-msgid ""
-"Test writing larger and larger records.\n"
-"This is a torture test for records.\n"
-"I am going to write\n"
-"larger and larger records. It will stop when the record size\n"
-"plus the header exceeds the block size (by default about 64K)\n"
-msgstr ""
-"Prueba de escritura de registros cada vez mayores.\n"
-"Esta es una prueba de tortura para los registros.\n"
-"Voy a escribir\n"
-"registros cada vez mayores. Se detendrá cuando el tamaño de registro además "
-"de la cabecera excede el tamaño de bloque (por defecto sobre 64K)\n"
+#~ msgid "Valid name, no data record of resquested type."
+#~ msgstr "Nombre válido, ningún registro de datos del tipo solicitado."
 
-#: src/stored/btape.c:746
-msgid "Do you want to continue? (y/n): "
-msgstr "Desea continuar? (y/n)"
+#~ msgid "Unknown error."
+#~ msgstr "Error desconocido."
 
-#: src/stored/btape.c:748 src/stored/btape.c:2200
-msgid "Command aborted.\n"
-msgstr "Comando Abortado.\n"
+#~ msgid "Unknown sig %d"
+#~ msgstr "Sig desconocido %d"
 
-#: src/stored/btape.c:765
-#, c-format
-msgid "Block %d i=%d\n"
-msgstr "Bloque %d i=%d\n"
+#~ 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/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"
+#~ msgid "Cannot set SO_REUSEADDR on socket: %s\n"
+#~ msgstr "No se puede establecer SO_REUSEADDR en el socket: %s\n"
 
-#: src/stored/btape.c:796
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
-msgstr ""
-"\n"
-"=== Prueba de escritura, copia de seguridad y re-lectura ===\n"
-"\n"
-"Yo voy a escribir 3 registros y un EOF\n"
-"a continuación respaldar sobre el EOF y re-leer el ultimo registro.\n"
-" Bacula hace esto después de escribir el último bloque en la\n"
-"cinta para comprobar que el bloque ha sido escrito correctamente.\n"
-"\n"
-"Esta es una característica *esencial* ...\n"
-"\n"
+#~ msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
+#~ msgstr "No se puede enlazar a puerto %d: ERR=%s: Reintentando ...\n"
 
-#: 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"
+#~ msgid "Cannot bind port %d: ERR=%s.\n"
+#~ msgstr "No se puede enlazar a puerto %d: ERR=%s.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "No addr/port found to listen on.\n"
+#~ msgstr "Ninguno %s encontrado para %s.\n"
 
-#: src/stored/btape.c:816
-#, c-format
-msgid "Wrote first record of %d bytes.\n"
-msgstr "Escribió primer registro de %d bytes.\n"
+#~ msgid "Could not init client queue: ERR=%s\n"
+#~ msgstr "No se pudo iniciar cola cliente: ERR=%s\n"
 
-#: src/stored/btape.c:827
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
-msgstr "Escribió segundo registro de %d bytes.\n"
+#~ msgid "Error in select: %s\n"
+#~ msgstr "Error al seleccionar: %s\n"
 
-#: src/stored/btape.c:838
-#, c-format
-msgid "Wrote third record of %d bytes.\n"
-msgstr "Escribió tercer registro de %d bytes.\n"
+#~ msgid "Connection from %s:%d refused by hosts.access\n"
+#~ msgstr "Conexión desde %s:%d rechazada por hosts.access\n"
 
-#: 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"
+#~ msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
+#~ msgstr "No se puede establecer SO_KEEPALIVE en el socket: %s\n"
 
-#: src/stored/btape.c:854
-msgid "Backspaced over EOF OK.\n"
-msgstr "Retroceso sobre EOF OK.\n"
+#~ msgid "Could not create client BSOCK.\n"
+#~ msgstr "No es posible crear cliente BSOCK. \n"
 
-#: src/stored/btape.c:856
-#, c-format
-msgid "Backspace record failed! ERR=%s\n"
-msgstr "Fallo en retroceso de registro! ERR=%s\n"
+#~ 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/stored/btape.c:859
-msgid "Backspace record OK.\n"
-msgstr "Retroceso de registro OK.\n"
+#~ msgid "Could not destroy client queue: ERR=%s\n"
+#~ msgstr "No es posible destruir la cola de cliente: ERR=%s\n"
 
-#: 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"
+#~ msgid "Program killed by Bacula (timeout)\n"
+#~ msgstr "Programa finalizado(killed) por Bacula (timeout) \n"
 
-#: src/stored/btape.c:873
-msgid "Bad data in record. Test failed!\n"
-msgstr "Datos erróneos en el registro. Prueba fallida!\n"
+#~ msgid ""
+#~ "Could not connect to %s on %s:%d. ERR=%s\n"
+#~ "Retrying ...\n"
+#~ msgstr ""
+#~ "No se pudo conectar a %s en %s:%d. ERR=%s\n"
+#~ "Reintentando ...\n"
 
-#: src/stored/btape.c:877
-msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
-msgstr ""
-"\n"
-"Re-lectura de bloque correcta. Prueba Satisfactoria!\n"
+#~ 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/stored/btape.c:878
-msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
-msgstr ""
-"=== Fin prueba de escritura, copia de seguridad, y re-lectura ===\n"
-"\n"
+#, fuzzy
+#~ msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+#~ msgstr "fallo gethostbyname() para la maquina \"%s\": ERR=%s\n"
 
-#: 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"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
-msgstr ""
-"Esto no es terriblemente grave, desde que sólo utilices Bacula\n"
-"esta función para verificar el último bloque por escrito en la\n"
-"cinta. Bacula saltará la verificación del último bloque\n"
-"si usted agrega:\n"
-"\n"
-"Backward Space Record = NO\n"
-"\n"
-" en la definición de los recursos de Dispositivos de su demonio Storage.\n"
+#~ msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
+#~ msgstr "Error al abrir socket. proto=%d puerto=%d. ERR=%s\n"
 
-#: 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"
+#~ msgid "Source address bind error. proto=%d. ERR=%s\n"
+#~ msgstr "Error al enlazar dirección de origen. proto=%d. ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
+#~ msgstr "No se puede establecer SO_KEEPIDLE en el socket: %s\n"
 
-#: 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"
+#~ msgid "Could not init bsock mutex. ERR=%s\n"
+#~ msgstr "No se pudo iniciar bsock mutex. ERR=%s\n"
 
-#: src/stored/btape.c:971
-msgid ""
-"\n"
-"Error writing record to block.\n"
-msgstr ""
-"\n"
-"Error escribiendo registro al bloque.\n"
+#, fuzzy
+#~ msgid "Socket is closed\n"
+#~ msgstr "SDSocket cerrado.\n"
 
-#: src/stored/btape.c:975
-msgid ""
-"\n"
-"Error writing block to device.\n"
-msgstr ""
-"\n"
-"Error escribiendo bloque al dispositivo.\n"
+#~ 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/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"
+#~ 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/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"
+#~ msgid "Read expected %d got %d from %s:%s:%d\n"
+#~ msgstr "Esperaba leer %d obtuvo %d desde %s:%s:%d\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Packet size=%d 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/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"
+#~ msgid "Read error from %s:%s:%d: ERR=%s\n"
+#~ msgstr "Error de lectura desde %s:%s:%d: ERR=%s\n"
 
-#: src/stored/btape.c:1125
-#, c-format
-msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write %d records and an EOF\n"
-"then write %d records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
-msgstr ""
-"\n"
-"=== Probar Escritura, Rebobinado y Re-lectura === \n"
-"\n"
-"Voy a escribir %d registros y un EOF\n"
-"a continuación escribiré %d registros y un EOF, a continuación, rebobinar,\n"
-"y re-leer los datos para verificar que son correctos.\n"
-"\n"
-"Este es una característica *esencial*...\n"
-"\n"
+#, fuzzy
+#~ msgid "fread attr spool error. Wanted=%d got=%d bytes. ERR=%s\n"
+#~ msgstr "Error fread attr spool. ERR=%s\n"
 
-#: 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"
+#~ msgid "fread attr spool I/O error.\n"
+#~ msgstr "Error fread attr spool I/O.\n"
 
-#: src/stored/btape.c:1215 src/stored/btape.c:1295
-msgid "Rewind OK.\n"
-msgstr "Rebobinar OK.\n"
+#~ msgid "Could not malloc BSOCK data buffer\n"
+#~ msgstr "No se pudo malloc datos BSOCK buffer.\n"
 
-#: src/stored/btape.c:1228 src/stored/btape.c:1347
-msgid "Got EOF on tape.\n"
-msgstr "Obtuvo EOF en la cinta.\n"
+#~ msgid "sockopt error: %s\n"
+#~ msgstr "error de sockopt: %s\n"
 
-#: src/stored/btape.c:1233
-#, c-format
-msgid "Read block %d failed! ERR=%s\n"
-msgstr "Fallo al leer bloque %d! ERR=%s\n"
+#~ 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/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"
+#~ msgid "fcntl F_GETFL error. ERR=%s\n"
+#~ msgstr "error F_GETFL fcntl. ERR=%s\n"
 
-#: 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"
+#~ msgid "fcntl F_SETFL error. ERR=%s\n"
+#~ msgstr "error F_SETFL fcntl. ERR=%s\n"
 
-#: src/stored/btape.c:1252
-#, c-format
-msgid "%d blocks re-read correctly.\n"
-msgstr "%d bloques releídos correctamente.\n"
+#, fuzzy
+#~ 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/stored/btape.c:1255 src/stored/btape.c:1384
-msgid ""
-"=== Test Succeeded. End Write, rewind, and re-read test ===\n"
-"\n"
-msgstr ""
-"=== Prueba Satisfactoria. Fin prueba de Escritura, Rebobinado y Re-lectura "
-"===\n"
-"\n"
+#~ msgid "Out of memory: ERR=%s\n"
+#~ msgstr "Fuera de memoria: ERR=%s\n"
 
-#: src/stored/btape.c:1283
-msgid "Block position test\n"
-msgstr "Prueba de posición del bloque\n"
+#~ msgid "Buffer overflow.\n"
+#~ msgstr "Desbordamiento de búfer.\n"
 
-#: src/stored/btape.c:1338
-#, c-format
-msgid "Reposition to file:block %d:%d\n"
-msgstr "Reposición para archivo:bloque %d:%d\n"
+#~ msgid "Bad errno"
+#~ msgstr "Malo errno"
 
-#: src/stored/btape.c:1340
-msgid "Reposition error.\n"
-msgstr "Error de reposición.\n"
+#~ msgid "Memset for %d bytes at %s:%d\n"
+#~ msgstr "Memset para %d bytes en %s:%d\n"
 
-#: src/stored/btape.c:1353
-#, c-format
-msgid ""
-"Read block %d failed! file=%d blk=%d. ERR=%s\n"
-"\n"
-msgstr ""
-"Fallo al leer bloque %d! archivo=%d blk=%d. ERR=%s\n"
-"\n"
+#~ msgid "Cannot open pid file. %s ERR=%s\n"
+#~ msgstr "No se puede abrir el archivo pid. %s ERR=%s\n"
 
-#: 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"
-" Please see the Tape Testing chapter in the manual and \n"
-" look for using mt with defblksize and setoptions\n"
-"If your tape drive block size is correct, then perhaps\n"
-" your SCSI driver is *really* stupid and does not\n"
-" correctly report the file:block after a FSF. In this\n"
-" case try setting:\n"
-"    Fast Forward Space File = no\n"
-" in your Device resource.\n"
-msgstr ""
-"Esto puede ser porque el tamaño del bloque de la\n"
-"unidad de cinta no está establecido en la variable\n"
-"de bloqueo como utilizado normalmente por Bacula.\n"
-"Consulte el capítulo Probando Cintas en el manual y\n"
-"busque por usando mt con defblksize y setoptions.\n"
-"Si el tamaño del bloque de la unidad de cinta es correcto,\n"
-"entonces quizá el controlador SCSI es *realmente* estúpido\n"
-"y no informa correctamente el archivo:bloque después de un FSF.\n"
-"En este caso, intente configurar:\n"
-" Fast Forward Space File = no\n"
-"en su recurso de Dispositivos.\n"
-
-#: src/stored/btape.c:1371
-#, c-format
-msgid "Read record failed! ERR=%s\n"
-msgstr "Fallo al leer registro! ERR=%s\n"
+#~ msgid ""
+#~ "%s is already running. pid=%d\n"
+#~ "Check file %s\n"
+#~ msgstr ""
+#~ "%s ya está en ejecución. pid=%d\n"
+#~ "Compruebe el archivo %s\n"
 
-#: src/stored/btape.c:1382
-#, c-format
-msgid "Block %d re-read correctly.\n"
-msgstr "Bloque %d re-leído correctamente.\n"
+#~ msgid "Could not open pid file. %s ERR=%s\n"
+#~ msgstr "No se pudo abrir el archivo pid. %s ERR=%s\n"
 
-#: src/stored/btape.c:1403
-msgid ""
-"\n"
-"\n"
-"=== Append files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"=== Prueba de Añadir Archivos===\n"
-"\n"
-"Esta prueba es esencial para Bacula.\n"
-"\n"
-"Voy a escribir un registro en el archivo 0,\n"
-" dos registros en el archivo 1,\n"
-" y tres registros en el archivo de 2\n"
-"\n"
+#~ msgid "Could not create state file. %s ERR=%s\n"
+#~ msgstr "No es posible crear el archivo de estado. %s ERR=%s\n"
 
-#: src/stored/btape.c:1427
-msgid "Now moving to end of medium.\n"
-msgstr "Moviendo ahora a final de medio.\n"
+#~ msgid "Write final hdr error: ERR=%s\n"
+#~ msgstr "Error de escritura HDR final: ERR=%s\n"
 
-#: 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"
+#~ msgid "stop_btimer called with NULL btimer_id\n"
+#~ msgstr "stop_btimer llamado con NULL btimer_id\n"
 
-#: 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!"
+#~ msgid "1999 Authorization failed.\n"
+#~ msgstr "1999 Fallo de Autorización.\n"
 
-#: 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!"
+#~ msgid "Unable to open certificate file"
+#~ msgstr "No se puede abrir el archivo de certificado"
 
-#: src/stored/btape.c:1436
-msgid ""
-"\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
-"\n"
-msgstr ""
-"\n"
-"Ahora la parte importante, voy a tratar de anexar a la cinta.\n"
-"\n"
+#~ msgid "Unable to read certificate from file"
+#~ msgstr "No es posible leer el archivo de certificado"
 
-#: src/stored/btape.c:1443
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
-msgstr ""
-"Añadiendo hecho, no debería haber ningún error de E/S\n"
-"\n"
+#~ msgid "Unable to extract public key from certificate"
+#~ msgstr "No se puede extraer la clave pública del certificado"
 
-#: src/stored/btape.c:1444
-msgid "Doing Bacula scan of blocks:\n"
-msgstr "Hacer Bacula exploración de los bloques:\n"
+#~ msgid ""
+#~ "Provided certificate does not include the required subjectKeyIdentifier "
+#~ "extension."
+#~ msgstr ""
+#~ "Certificado suministrado no incluye la extensión subjectKeyIdentifier "
+#~ "necesaria."
 
-#: src/stored/btape.c:1446
-msgid "End scanning the tape.\n"
-msgstr "Fin del escaneo de la cinta.\n"
+#~ msgid "Unsupported key type provided: %d\n"
+#~ msgstr "Tipo de clave prevista no soportada: %d\n"
 
-#: 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"
+#~ msgid "Unable to open private key file"
+#~ msgstr "No se puede abrir archivo de clave privada"
 
-#: src/stored/btape.c:1472
-msgid ""
-"\n"
-"Autochanger enabled, but no name or no command device specified.\n"
-msgstr ""
-"\n"
-"Auto-cambiador habilitado, pero ningún nombre o comando de dispositivo "
-"especificado.\n"
+#~ msgid "Unable to read private key from file"
+#~ msgstr "No se puede leer la clave privada del archivo"
 
-#: src/stored/btape.c:1476
-msgid ""
-"\n"
-"Ah, I see you have an autochanger configured.\n"
-"To test the autochanger you must have a blank tape\n"
-" that I can write on in Slot 1.\n"
-msgstr ""
-"\n"
-"Ah, veo que tienen un auto-cargador configurado.\n"
-"Para probar el auto-cargador debe tener una cinta en blanco\n"
-" que yo pueda escribir en la Ranura 1.\n"
+#~ msgid "Unsupported digest type: %d\n"
+#~ msgstr "Tipo Digest no soportado: %d\n"
 
-#: src/stored/btape.c:1479
-msgid ""
-"\n"
-"Do you wish to continue with the Autochanger test? (y/n): "
-msgstr ""
-"\n"
-"¿Desea continuar con la prueba del auto-cambiador? (y/n):"
+#~ msgid "OpenSSL digest initialization failed"
+#~ msgstr "Fallo al inicializar resume OpenSSL"
 
-#: src/stored/btape.c:1486
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"=== Prueba Auto-cambiador ===\n"
-"\n"
+#~ msgid "OpenSSL digest update failed"
+#~ msgstr "Fallo al actualizar resume OpenSSL"
 
-#: src/stored/btape.c:1495
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
-msgstr "3301 Emitiendo comando auto-cambiador \"cargado\".\n"
+#~ msgid "OpenSSL digest finalize failed"
+#~ msgstr "Fallo al finalizar resume OpenSSL"
 
-#: src/stored/btape.c:1504
-#, c-format
-msgid "3991 Bad autochanger command: %s\n"
-msgstr "3991 Malo comando cargador: %s\n"
+#~ msgid "OpenSSL digest_new failed"
+#~ msgstr "fallo digest_new OpenSSL"
 
-#: src/stored/btape.c:1505
-#, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
-msgstr "3991 resultado=\"%s\": ERR=%s\n"
+#~ msgid "OpenSSL sign get digest failed"
+#~ msgstr "Fallo OpenSSL al obtener firma digest "
 
-#: 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"
+#~ msgid "OpenSSL digest Verify final failed"
+#~ msgstr "Fallo OpenSSL Verificación final digest "
 
-#: src/stored/btape.c:1511
-msgid "Nothing loaded in the drive. OK.\n"
-msgstr "Nada cargado en la unidad. OK.\n"
+#~ msgid "No signers found for crypto verify.\n"
+#~ msgstr "Firmantes no encontrados para verificar el cifrado.\n"
 
-#: 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"
+#~ msgid "Signature creation failed"
+#~ msgstr "Fallo en creación de firma"
 
-#: src/stored/btape.c:1523
-#, c-format
-msgid "unload status=%s %d\n"
-msgstr "estado descargar=%s %d\n"
+#~ msgid "Signature decoding failed"
+#~ msgstr "Fallo en decodificación de firma"
 
-#: src/stored/btape.c:1523
-msgid "Bad"
-msgstr "Malo"
+#~ msgid "Unsupported cipher type specified\n"
+#~ msgstr "Tipo de cifrado especificados no soportado\n"
 
-#: src/stored/btape.c:1526
-#, c-format
-msgid "3992 Bad autochanger command: %s\n"
-msgstr "3992 Malo comando cargador: %s\n"
+#~ msgid "CryptoData decoding failed"
+#~ msgstr "decodificación CryptoData fallida"
 
-#: src/stored/btape.c:1527
-#, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
-msgstr "3992 resultado=\"%s\": ERR=%s\n"
+#~ msgid "Failure decrypting the session key"
+#~ msgstr "Error al descifrar la clave de sesión"
 
-#: 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"
+#~ msgid "Unsupported contentEncryptionAlgorithm: %d\n"
+#~ msgstr "ContentEncryptionAlgorithm no soportado: %d\n"
 
-#: 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"
+#~ msgid "OpenSSL cipher context initialization failed"
+#~ msgstr "Fallo al inicializar contexto cipher OpenSSl"
 
-#: src/stored/btape.c:1549
-#, c-format
-msgid "3993 Bad autochanger command: %s\n"
-msgstr "3993 Malo comando cargador: %s\n"
+#~ msgid "Encryption session provided an invalid symmetric key"
+#~ msgstr "Cifrado de sesión suministro una clave simétrica inválida"
 
-#: src/stored/btape.c:1550
-#, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
-msgstr "3993 resultado=\"%s\": ERR=%s\n"
+#~ msgid "Encryption session provided an invalid IV"
+#~ msgstr "Cifrado de sesión suministro una IV inválida"
 
-#: src/stored/btape.c:1565
-msgid ""
-"\n"
-"The test failed, probably because you need to put\n"
-"a longer sleep time in the mtx-script in the load) case.\n"
-"Adding a 30 second sleep and trying again ...\n"
-msgstr ""
-"\n"
-"Fallo la prueba, probablemente porque es necesario poner\n"
-"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"
+#~ msgid "OpenSSL cipher context key/IV initialization failed"
+#~ msgstr "Fallido inicialización de contexto OpenSSL de cifrado de clave/IV "
 
-#: src/stored/btape.c:1578
-#, c-format
-msgid "Wrote EOF to %s\n"
-msgstr "Escribió EOF para %s\n"
+#~ msgid "Unable to init OpenSSL threading: ERR=%s\n"
+#~ msgstr "No se puede inicializar hilo OpenSSL: ERR=%s\n"
 
-#: src/stored/btape.c:1582
-#, c-format
-msgid ""
-"\n"
-"The test worked this time. Please add:\n"
-"\n"
-"   sleep %d\n"
-"\n"
-"to your mtx-changer script in the load) case.\n"
-"\n"
-msgstr ""
-"\n"
-"La prueba funcionó esta vez. Por favor, añada:\n"
-"\n"
-" sleep %d\n"
-"\n"
-"en su script mtx-cambiador dentro de de la clausula load).\n"
-"\n"
+#~ msgid "Failed to seed OpenSSL PRNG\n"
+#~ msgstr "Fallo al seed OpenSSL PRNG\n"
 
-#: src/stored/btape.c:1587
-msgid ""
-"\n"
-"The test autochanger worked!!\n"
-"\n"
-msgstr ""
-"\n"
-"La prueba del auto-cargador funcionó!!\n"
-"\n"
+#~ msgid "Failed to save OpenSSL PRNG\n"
+#~ msgstr "Fallo al guardar OpenSSL PRNG\n"
 
-#: 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"
+#~ msgid "Unsupported digest type=%d specified\n"
+#~ msgstr "Incompatible resume tipo=%d especificado\n"
 
-#: src/stored/btape.c:1616
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"=== Probar espaciar archivos hacia adelante ===\n"
-"\n"
-"Esta prueba es esencial para Bacula.\n"
-"\n"
-"Voy a escribir cinco archivo, a continuación probar espaciado hacia "
-"adelante\n"
-"\n"
+#~ msgid "SHA1Update() returned an error: %d\n"
+#~ msgstr "SHA1Update() retorno un error: %d\n"
 
-#: src/stored/btape.c:1641
-msgid "Now forward spacing 1 file.\n"
-msgstr "Ahora espaciando 1 archivo hacia adelante.\n"
+#~ msgid "No error"
+#~ msgstr "Ningún error"
 
-#: 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"
+#~ msgid "Signer not found"
+#~ msgstr "Firmante no encontrado"
 
-#: 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"
+#~ msgid "Recipient not found"
+#~ msgstr "Recipiente no encontrado"
 
-#: src/stored/btape.c:1653
-msgid "Now forward spacing 2 files.\n"
-msgstr "Ahora espaciando 2 archivo hacia adelante.\n"
+#~ msgid "Unsupported digest algorithm"
+#~ msgstr "Algoritmo de resumen no soportado"
 
-#: src/stored/btape.c:1666
-msgid "Now forward spacing 4 files.\n"
-msgstr "Ahora espaciando 4 archivo hacia adelante.\n"
+#~ msgid "Unsupported encryption algorithm"
+#~ msgstr "Algoritmo de cifrado no soportado"
 
-#: src/stored/btape.c:1678
-msgid ""
-"The test worked this time. Please add:\n"
-"\n"
-"   Fast Forward Space File = no\n"
-"\n"
-"to your Device resource for this drive.\n"
-msgstr ""
-"La prueba funcionó esta vez. Por favor, añadir:\n"
-"\n"
-" Fast Forward Space File = no\n"
-"\n"
-"a su recurso Device para esta unidad.\n"
+#~ msgid "Signature is invalid"
+#~ msgstr "La firma no es válida"
 
-#: src/stored/btape.c:1684
-msgid "Now forward spacing 1 more file.\n"
-msgstr "Ahora espaciando un archivo mas hacia adelante.\n"
+#~ msgid "Decryption error"
+#~ msgstr "Error de Descifrado"
 
-#: 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"
+#~ msgid "Internal error"
+#~ msgstr "Error interno"
 
-#: src/stored/btape.c:1693
-msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
-msgstr ""
-"\n"
-"=== Finalizo prueba de Espaciar archivos hacia adelante ===\n"
-"\n"
+#~ msgid "Unknown error"
+#~ msgstr "Error desconocido"
 
-#: src/stored/btape.c:1697
-msgid ""
-"\n"
-"The forward space file test failed.\n"
-msgstr ""
-"\n"
-"Fallida la prueba de espaciar archivos hacia adelante.\n"
+#~ msgid "Cannot fork to become daemon: ERR=%s\n"
+#~ msgstr "No se puede fork para convertirse en demonio: ERR =%s\n"
 
-#: 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 ""
-"usted tiene habilitado Espaciar Archivos Hacia Adelante Rápido.\n"
-"Voy deshabilitarlo y luego volver a intentar la prueba.\n"
+#, fuzzy
+#~ msgid "writeunlock called too many times.\n"
+#~ msgstr "rwl_writeunlock llamado muchas veces.\n"
 
-#: 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"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-"Usted debe corregir este error o Bacula no funcionará.\n"
-"Algunos Sistemas, por ejemplo OpenBSD, requiere que usted establezca\n"
-"Use MTIOCGET = no\n"
-"en su recurso de dispositivo. Utilizar con precaución.\n"
+#, fuzzy
+#~ msgid "writeunlock by non-owner.\n"
+#~ msgstr "rwl_writeunlock por no-propietario.\n"
 
-#: src/stored/btape.c:1739
-msgid ""
-"\n"
-"Append test failed. Attempting again.\n"
-"Setting \"Hardware End of Medium = no\n"
-"    and \"Fast Forward Space File = no\n"
-"and retrying append test.\n"
-"\n"
-msgstr ""
-"\n"
-"Prueba de Añadir fallida. Intentando de nuevo.\n"
-"Configurando \"Hardware End of Medium = no\n"
-" y \"Fast Forward Space File = no\n"
-"y volviendo a intentar la prueba de añadir.\n"
-"\n"
+#~ msgid "Thread %d found unchanged elements %d times\n"
+#~ msgstr "Hilo %d encontró elementos sin cambios %d veces\n"
 
-#: src/stored/btape.c:1747
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"\n"
-"    Fast Forward Space File = No\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-"\n"
-"\n"
-"Parece que la prueba funcionó esta vez, por favor, añadir:\n"
-"\n"
-" Hardware End of Medium = No\n"
-"\n"
-" Fast Forward Space File = No\n"
-"a su recurso de Device en el archivo configuración del Storage.\n"
+#~ msgid "%02d: interval %d, writes %d, reads %d\n"
+#~ msgstr "%02d: intervalo %d, escritos %d, leídos %d\n"
 
-#: src/stored/btape.c:1754
-msgid ""
-"\n"
-"\n"
-"That appears *NOT* to have corrected the problem.\n"
-msgstr ""
-"\n"
-"\n"
-"Parece que *NO* se ha corregido el problema.\n"
+#~ msgid "data %02d: value %d, %d writes\n"
+#~ msgstr "datos %02d: valor %d, %d escritos\n"
 
-#: src/stored/btape.c:1759
-msgid ""
-"\n"
-"\n"
-"It looks like the append failed. Attempting again.\n"
-"Setting \"BSF at EOM = yes\" and retrying append test.\n"
-msgstr ""
-"\n"
-"\n"
-"Parece que ha fallado el añadir.Intentando de nuevo.\n"
-"Configurando  \"BSF en EOM = yes\" y reintentando probar añadir.\n"
+#~ msgid "Total: %d thread writes, %d data writes\n"
+#~ msgstr "Total: %d hilos escritos, %d datos escritos\n"
 
-#: src/stored/btape.c:1764
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"    Fast Forward Space File = No\n"
-"    BSF at EOM = yes\n"
-"\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-"\n"
-"\n"
-"Parece que la prueba funcionó esta vez, por favor agregue:\n"
-"\n"
-"Hardware End of Medium = No\n"
-" Fast Forward Space File = No\n"
-" BSF at EOM = yes\n"
-"\n"
-"en su recurso Device en el archivo de configuración del Storage.\n"
+#~ msgid "Try write lock"
+#~ msgstr "Intente escribir bloqueo"
 
-#: src/stored/btape.c:1775
-msgid ""
-"\n"
-"Append test failed.\n"
-"\n"
-"\n"
-"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
-"Unable to correct the problem. You MUST fix this\n"
-"problem before Bacula can use your tape drive correctly\n"
-"\n"
-"Perhaps running Bacula in fixed block mode will work.\n"
-"Do so by setting:\n"
-"\n"
-"Minimum Block Size = nnn\n"
-"Maximum Block Size = nnn\n"
-"\n"
-"in your Storage daemon's Device definition.\n"
-"nnn must match your tape driver's block size, which\n"
-"can be determined by reading your tape manufacturers\n"
-"information, and the information on your kernel dirver.\n"
-"Fixed block sizes, however, are not normally an ideal solution.\n"
-"\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-"\n"
-"Fallo prueba Anexar.\n"
-"\n"
-"\n"
-"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
-"No se puede corregir el problema. Usted DEBE corregir este\n"
-"problema antes de que Bacula pueda utilizar su unidad de cinta "
-"correctamente \n"
-"\n"
-"Tal vez ejecutando Bacula en modo de bloque fijo va a funcionar.\n"
-"Hacerlo estableciendo:\n"
-"\n"
-"Minimum Block Size = nnn\n"
-"Maximum Block Size = nnn\n"
-"\n"
-"en la definición de dispositivo del demonio Storage.\n"
-"nnn debe coincidir con el tamaño de bloque controlador de su cinta, que\n"
-"puede determinarse mediante lectura de información del fabricante de la "
-"cinta, y la información en su driver del núcleo.\n"
-"Tamaños de bloque fijo, sin embargo, normalmente no son una solución ideal.\n"
-"\n"
-"Algunos sistemas, por ejemplo OpenBSD, exigen que se establezcan\n"
-"Use MTIOCGET= no\n"
-"en su recurso de dispositivo. Utilice con precaución.\n"
+#~ msgid "Try read lock"
+#~ msgstr "Intente leer bloqueo"
 
-#: src/stored/btape.c:1797
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
-msgstr ""
-"\n"
-"La anterior Bacula análisis debe tener una salida idéntica a lo que sigue.\n"
-"Por favor, verifique bien ...\n"
-"Ejemplo de la salida correcta ===   n1 bloque de 64448 bytes en el archivo "
-"1\n"
-"Fin de la marca de archivo.\n"
-"2 bloques de 64.448 bytes en el archivo 2\n"
-"Fin de la marca de archivo.\n"
-"3 bloques de 64448 bytes en el archivo 3\n"
-"Fin de la marca de archivo.\n"
-"1 bloque de 64448 bytes en el archivo 4\n"
-"Fin de la marca de archivo.\n"
-"Total de archivos = 4, bloques = 7, bytes = 451.136\n"
-"===Fin ejemplo de la salida correcta===\n"
-"\n"
-"Si la anterior salida de escaneo no es idéntica a la \n"
-"salida de ejemplo, usted DEBE corregir el problema\n"
-"o Bacula no será capaz de escribir varios Jobs en\n"
-"la cinta.\n"
-"\n"
+#~ msgid "Create thread"
+#~ msgstr "Crear hilo"
 
-#: src/stored/btape.c:1840
-#, c-format
-msgid "Bad status from fsf. ERR=%s\n"
-msgstr "Malo estado desde FSF. ERR=%s\n"
+#~ msgid "Join thread"
+#~ msgstr "Unir hilo"
 
-#: src/stored/btape.c:1844
-msgid "Forward spaced 1 file.\n"
-msgstr "Espaciado 1 archivo hacia adelante.\n"
+#~ 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/stored/btape.c:1847
-#, c-format
-msgid "Forward spaced %d files.\n"
-msgstr "Espaciados %d archivos hacia adelante.\n"
+#~ msgid "data %02d: value %d, %d updates\n"
+#~ msgstr "datos %02d: valor %d, %d actualizados\n"
 
-#: src/stored/btape.c:1866
-msgid "Forward spaced 1 record.\n"
-msgstr "Espaciado 1 registro hacia adelante.\n"
+#, fuzzy
+#~ msgid "Empty name not allowed.\n"
+#~ msgstr "Bloque de direcciones vacío no está permitido"
 
-#: src/stored/btape.c:1869
-#, c-format
-msgid "Forward spaced %d records.\n"
-msgstr "Espaciados %d registros hacia adelante.\n"
+#~ msgid "Illegal character \"%c\" in name.\n"
+#~ msgstr "Carácter ilegal \"%c\" en el nombre.\n"
 
-#: src/stored/btape.c:1914
-#, c-format
-msgid "Wrote one record of %d bytes.\n"
-msgstr "Escribió un registro de %d bytes.\n"
+#~ msgid "Name too long.\n"
+#~ msgstr "Nombre demasiado largo.\n"
 
-#: src/stored/btape.c:1916
-msgid "Wrote block to device.\n"
-msgstr "Escribió bloques al dispositivo.\n"
+#, fuzzy
+#~ 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/stored/btape.c:1930
-msgid "Enter length to read: "
-msgstr "Introduzca la longitud para leer:"
+#, fuzzy
+#~ msgid "Cannot open config file %s: %s\n"
+#~ msgstr "No se pudo abrir archivo de configuración \"%s\": %s\n"
 
-#: 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"
+#~ msgid "Backup"
+#~ msgstr "Backup"
 
-#: 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"
+#~ msgid "Verifying"
+#~ msgstr "Verificando"
 
-#: src/stored/btape.c:1967 src/stored/btape.c:2016
-#, c-format
-msgid "End of tape\n"
-msgstr "Fin de la cinta\n"
+#~ msgid "Restoring"
+#~ msgstr "Restaurando"
 
-#: src/stored/btape.c:1972
-#, c-format
-msgid "Starting scan at file %u\n"
-msgstr "Iniciando escaneo en el archivo %u\n"
+#~ msgid "Archiving"
+#~ msgstr "Archivando"
 
-#: 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"
+#~ msgid "Copying"
+#~ msgstr "Copiando"
 
-#: 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"
+#~ msgid "Migration"
+#~ msgstr "Migración"
 
-#: 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"
+#~ msgid "Scanning"
+#~ msgstr "Escaneando"
 
-#: 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"
+#~ msgid "Unknown operation"
+#~ msgstr "Operación desconocida"
 
-#: 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"
+#~ msgid "backup"
+#~ msgstr "backup"
 
-#: src/stored/btape.c:2092
-#, c-format
-msgid "Short block read.\n"
-msgstr "Leer bloque corto.\n"
+#~ msgid "verified"
+#~ msgstr "verificado"
 
-#: src/stored/btape.c:2095
-#, c-format
-msgid "Error reading block. ERR=%s\n"
-msgstr "Error leyendo el bloque. ERR=%s\n"
+#~ msgid "verify"
+#~ msgstr "verificar"
 
-#: 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 ""
-"Bloque=%u archivo,blk=%u,%u blen=%u Primero rec FI=%s SessId=%u SessTim=%u "
-"Strm=%s rlen=%d\n"
+#~ msgid "restored"
+#~ msgstr "restaurado"
 
-#: src/stored/btape.c:2141
-#, c-format
-msgid "Device status: %u. ERR=%s\n"
-msgstr "Estado del dispositivo: %u. ERR=%s\n"
+#~ msgid "restore"
+#~ msgstr "restaurar"
 
-#: src/stored/btape.c:2173
-#, c-format
-msgid ""
-"\n"
-"This command simulates Bacula writing to a tape.\n"
-"It requires either one or two blank tapes, which it\n"
-"will label and write.\n"
-"\n"
-"If you have an autochanger configured, it will use\n"
-"the tapes that are in slots 1 and 2, otherwise, you will\n"
-"be prompted to insert the tapes when necessary.\n"
-"\n"
-"It will print a status approximately\n"
-"every 322 MB, and write an EOF every %s.  If you have\n"
-"selected the simple test option, after writing the first tape\n"
-"it will rewind it and re-read the last block written.\n"
-"\n"
-"If you have selected the multiple tape test, when the first tape\n"
-"fills, it will ask for a second, and after writing a few more \n"
-"blocks, it will stop.  Then it will begin re-reading the\n"
-"two tapes.\n"
-"\n"
-"This may take a long time -- hours! ...\n"
-"\n"
-msgstr ""
-"\n"
-"Este comando simula Bacula escrito en una cinta.\n"
-"Se requiere de una o dos cintas en blanco, que se pueda etiquetar y "
-"escribir.\n"
-"\n"
-"Si usted tiene un auto-cargador configurado, se usará\n"
-"las cintas que se encuentran en las ranuras 1 y 2, de lo contrario,\n"
-"se le pedirá que inserte las cintas cuando sea necesario.\n"
-"\n"
-"Se imprimirá un estado a aproximadamente cada 322 MB, y escribirá un EOF "
-"cada %s.Si ha seleccionado\n"
-"la opción de prueba simple, después de escribir la primera cinta\n"
-"se rebobinará y volverá a leer el último bloque escrito.\n"
-"\n"
-"Si ha seleccionado\n"
-"la prueba de la cinta múltiple, cuando la primera cinta se llena, se le "
-"preguntará por la segunda, y después de escribir unos pocos\n"
-"bloques más, se detendrá. Entonces comenzará a releer las\n"
-"dos cintas.\n"
-"\n"
-"Esto puede tomar mucho tiempo - horas! ...\n"
+#~ msgid "archived"
+#~ msgstr "archivado"
 
-#: 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 ""
-"¿Desea ejecutar la prueba simplificada (s) con una cinta\n"
-"o la prueba completa con múltiples (m) cintas?: (s/m)"
+#~ msgid "archive"
+#~ msgstr "archivo"
 
-#: src/stored/btape.c:2194
-msgid "Simple test (single tape) selected.\n"
-msgstr "Prueba simple (una sola cinta) seleccionada.\n"
+#~ msgid "copied"
+#~ msgstr "copiado"
 
-#: src/stored/btape.c:2197
-msgid "Multiple tape test selected.\n"
-msgstr "Múltiples cintas de prueba seleccionados.\n"
+#~ msgid "copy"
+#~ msgstr "copia"
 
-#: src/stored/btape.c:2239
-msgid "Wrote Start of Session label.\n"
-msgstr "Escribe la etiqueta de Inicio de Sesión.\n"
+#~ msgid "migrated"
+#~ msgstr "migrado"
 
-#: 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"
+#~ msgid "migrate"
+#~ msgstr "migrar"
 
-#: 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"
+#~ msgid "scanned"
+#~ msgstr "escaneado"
 
-#: src/stored/btape.c:2286
-msgid "Flush block failed.\n"
-msgstr "Fallo Flush bloque.\n"
+#~ msgid "scan"
+#~ msgstr "escanear"
 
-#: 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"
+#~ msgid "unknown action"
+#~ msgstr "acción desconocida"
 
-#: src/stored/btape.c:2311
-#, c-format
-msgid "%s Flush block, write EOF\n"
-msgstr "%s Flush bloque, escribir EOF\n"
+#~ msgid "pthread key create failed: ERR=%s\n"
+#~ msgstr "fallo crear clave pthread: ERR=%s\n"
 
-#: src/stored/btape.c:2320
-msgid "Wrote 1000 blocks on second tape. Done.\n"
-msgstr "Escribió 1000 bloques en segunda cinta. Hecho.\n"
+#~ msgid "pthread_once failed. ERR=%s\n"
+#~ msgstr "fallo pthread_once. ERR=%s\n"
 
-#: src/stored/btape.c:2325
-msgid "Not OK\n"
-msgstr "No OK\n"
+#~ msgid "Could not init msg_queue mutex. ERR=%s\n"
+#~ msgstr "No se pudo iniciar msg_queue mutex. ERR=%s\n"
 
-#: src/stored/btape.c:2349
-msgid "Job canceled.\n"
-msgstr "Job cancelado.\n"
+#~ msgid "NULL jcr.\n"
+#~ msgstr "NULL jcr.\n"
 
-#: 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"
+#~ msgid "JCR use_count=%d JobId=%d\n"
+#~ msgstr "JCR use_count=%d JobId=%d\n"
 
-#: src/stored/btape.c:2364
-msgid "Wrote End of Session label.\n"
-msgstr "Escribió etiqueta de Fin de Sesión.\n"
+#~ msgid "pthread_setspecific failed: ERR=%s\n"
+#~ msgstr "fallo pthread_setspecific: ERR=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "Watchdog sending kill after %d secs to thread stalled reading Storage "
+#~ "daemon.\n"
+#~ msgstr ""
+#~ "Watchdog envío kill después de %d segundos para hilo estancado leyendo "
+#~ "demonio Storage.\n"
 
-#: 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"
+#~ msgid ""
+#~ "Watchdog sending kill after %d secs to thread stalled reading File "
+#~ "daemon.\n"
+#~ msgstr ""
+#~ "Watchdog envío kill después de %d segundos para hilo estancado leyendo "
+#~ "demonio File.\n"
 
-#: src/stored/btape.c:2403
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
-msgstr ""
-"\n"
-"\n"
-"%s Hecho llenado de cinta en %d:%d. Ahora empezando a releer la cinta ...\n"
+#~ msgid ""
+#~ "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
+#~ msgstr ""
+#~ "Watchdog envío kill después de %d segundos para hilo estancado leyendo "
+#~ "demonio Director.\n"
 
-#: src/stored/btape.c:2406
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
-msgstr ""
-"\n"
-"\n"
-"%s Hecho llenado de cintas en %d:%d. Ahora empezando a releer la primera "
-"cinta ...\n"
+#~ msgid "Problem probably begins at line %d.\n"
+#~ msgstr "Probablemente comienza el problema en la línea %d\n"
 
-#: src/stored/btape.c:2412
-msgid "do_unfill failed.\n"
-msgstr "do_unfill fallido.\n"
+#~ msgid ""
+#~ "Config error: %s\n"
+#~ "            : line %d, col %d of file %s\n"
+#~ "%s\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Error de configuración: %s\n"
+#~ " : línea %d, columna %d en el archivo %s\n"
+#~ "%s\n"
+#~ "%s"
 
-#: src/stored/btape.c:2417
-#, c-format
-msgid "%s: Error during test.\n"
-msgstr "%s: Error durante la prueba.\n"
+#~ msgid "Config error: %s\n"
+#~ msgstr "Error de configuración: %s\n"
 
-#: src/stored/btape.c:2452
-msgid ""
-"\n"
-"The state file level has changed. You must redo\n"
-"the fill command.\n"
-msgstr ""
-"\n"
-"El estado del archivo de nivel de ha cambiado. Usted debe rehacer\n"
-"el comando llenar.\n"
+#~ msgid "Close of NULL file\n"
+#~ msgstr "Cierre de archivo NULL\n"
 
-#: src/stored/btape.c:2459
-#, c-format
-msgid ""
-"\n"
-"Could not find the state file: %s ERR=%s\n"
-"You must redo the fill command.\n"
-msgstr ""
-"\n"
-"No se pudo encontrar el archivo de estado: %s ERR=%s\n"
-"Usted debe rehacer el comando llenar.\n"
+#~ msgid ""
+#~ "get_char: called after EOF. You may have a open double quote without the "
+#~ "closing double quote.\n"
+#~ msgstr ""
+#~ "get_char: llamado después de EOF. Usted puede tener una comilla doble "
+#~ "abierta sin el cierre de comillas dobles.\n"
 
-#: src/stored/btape.c:2525
-msgid "Mount first tape. Press enter when ready: "
-msgstr "Monte primera cinta. Cuando esté listo, presione ENTER:"
+#~ 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/stored/btape.c:2541
-msgid "Rewinding.\n"
-msgstr "Rebobinado.\n"
+#~ msgid "none"
+#~ msgstr "ninguno"
 
-#: 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"
+#~ msgid "comment"
+#~ msgstr "comentario"
 
-#: 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"
+#~ msgid "number"
+#~ msgstr "numero"
 
-#: 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"
+#~ msgid "ip_addr"
+#~ msgstr "ip_addr"
 
-#: src/stored/btape.c:2556
-#, c-format
-msgid "Reading block %u.\n"
-msgstr "Leyendo bloque %u.\n"
+#~ msgid "identifier"
+#~ msgstr "identificar"
 
-#: 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"
+#~ msgid "string"
+#~ msgstr "cadena"
 
-#: src/stored/btape.c:2563
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-"\n"
-"El último bloque de la cinta concuerdan. Prueba Satisfactoria.\n"
-"\n"
+#~ msgid "quoted_string"
+#~ msgstr "quoted_string"
 
-#: src/stored/btape.c:2566
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
-msgstr ""
-"\n"
-"El último bloque de la primera cinta concuerdan.\n"
-"\n"
+#~ msgid "include"
+#~ msgstr "incluir"
 
-#: src/stored/btape.c:2590
-msgid "Mount second tape. Press enter when ready: "
-msgstr "Monte la segunda cinta. Cuando esté listo, presione ENTER:"
+#~ msgid "include_quoted_string"
+#~ msgstr "include_quoted_string"
 
-#: 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"
+#~ msgid "UTF-8 Byte Order Mark"
+#~ msgstr "Marca de Orden de UTF-8 Byte"
 
-#: src/stored/btape.c:2608 src/stored/btape.c:2624
-#, c-format
-msgid "Reading block %d.\n"
-msgstr "Leyendo bloque %d.\n"
+#~ msgid "UTF-16le Byte Order Mark"
+#~ msgstr "Marca de Orden de UTF-16le Byte"
 
-#: src/stored/btape.c:2614
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
-msgstr ""
-"\n"
-"El primer bloque de la segunda cinta concuerdan.\n"
-"\n"
+#~ msgid "expected a positive integer number, got: %s"
+#~ msgstr "esperaba un numero entero positivo, obtuvo: %s"
 
-#: src/stored/btape.c:2630
-msgid ""
-"\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-"\n"
-"El último bloque de la segunda cinta concuerdan. Prueba Satisfactoria.\n"
-"\n"
+#~ msgid ""
+#~ "This config file appears to be in an unsupported Unicode format "
+#~ "(UTF-16be). Please resave as UTF-8\n"
+#~ 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/stored/btape.c:2647
-#, c-format
-msgid "10000 records read now at %d:%d\n"
-msgstr "Leer 10000 registros ahora desde %d:%d\n"
+#~ msgid "Cannot open included config file %s: %s\n"
+#~ msgstr "No se puede abrir el archivo de configuración incluido %s: %s\n"
 
-#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
-msgid "Last block written"
-msgstr "Ultimo bloque escrito"
+#~ msgid "expected an integer or a range, got %s: %s"
+#~ msgstr "esperaba un numero entero o un rango, obtuvo %s: %s"
 
-#: src/stored/btape.c:2675 src/stored/btape.c:2685
-msgid "Block read back"
-msgstr "Bloque que leer"
+#~ msgid "expected an integer number, got %s: %s"
+#~ msgstr "esperaba un numero entero, obtuvo %s: %s"
 
-#: src/stored/btape.c:2676
-#, c-format
-msgid ""
-"\n"
-"\n"
-"The blocks differ at byte %u\n"
-msgstr ""
-"\n"
-"\n"
-"Los bloques difieren en %u byte\n"
+#~ msgid "expected a name, got %s: %s"
+#~ msgstr "esperaba un nombre, obtuvo %s: %s"
 
-#: src/stored/btape.c:2677
-msgid ""
-"\n"
-"\n"
-"!!!! The last block written and the block\n"
-"that was read back differ. The test FAILED !!!!\n"
-"This must be corrected before you use Bacula\n"
-"to write multi-tape Volumes.!!!!\n"
-msgstr ""
-"\n"
-"\n"
-"!!!! El último bloque escrito y el bloque\n"
-"que se vuelve a leer difieren. La prueba FALLO !!!!\n"
-"Esto debe ser corregido antes de utilizar Bacula\n"
-"para escribir volúmenes multi-cinta !!!!\n"
+#~ 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/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"
+#~ msgid "expected a string, got %s: %s"
+#~ msgstr "esperaba una cadena, obtuvo %s: %s"
 
-#: 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"
+#~ msgid "Mutex lock failure. ERR=%s\n"
+#~ msgstr "Error bloqueando Mutex. ERR=%s\n"
 
-#: src/stored/btape.c:2731
-msgid "Block not written"
-msgstr "Bloque no escrito"
+#~ msgid "Mutex unlock failure. ERR=%s\n"
+#~ msgstr "Error desbloqueando Mutex. ERR=%s\n"
 
-#: 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"
+#~ msgid "pthread_create failed: ERR=%s\n"
+#~ msgstr "pthread_create fallido: ERR=%s\n"
 
-#: 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"
+#~ msgid "MemPool index %d larger than max %d\n"
+#~ msgstr "MemPool índice %d mayor que máximo %d\n"
 
-#: src/stored/btape.c:2799
-msgid "How many blocks do you want to write? (1000): "
-msgstr "¿Cuántos bloques usted quiere escribir? (1000):"
+#~ msgid "Out of memory requesting %d bytes\n"
+#~ msgstr "Fuera de memoria solicitando %d bytes\n"
 
-#: 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"
+#~ msgid "obuf is NULL\n"
+#~ msgstr "obuf es NULL\n"
 
-#: 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"
+#~ 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/stored/btape.c:2890
-msgid "test autochanger"
-msgstr "prueba Autochanger"
+#~ msgid "Could not get con mutex: ERR=%s\n"
+#~ msgstr "No se pudo obtener con mutex: ERR=%s\n"
 
-#: src/stored/btape.c:2891
-msgid "backspace file"
-msgstr "archivo de retroceso"
+#~ msgid "Bacula Message"
+#~ msgstr "Bacula Message"
 
-#: src/stored/btape.c:2892
-msgid "backspace record"
-msgstr "registro de retroceso"
+#~ msgid "open mail pipe %s failed: ERR=%s\n"
+#~ msgstr "Fallo al abrir tubería de correo %s: ERR=%s\n"
 
-#: src/stored/btape.c:2893
-msgid "list device capabilities"
-msgstr "lista de las capacidades del dispositivo"
+#~ msgid "open mail pipe failed.\n"
+#~ msgstr "Fallo al abrir tubería de correo .\n"
 
-#: src/stored/btape.c:2894
-msgid "clear tape errors"
-msgstr "Errores Cinta de Limpieza"
+#~ msgid "close error: ERR=%s\n"
+#~ msgstr "Error al cerrar: ERR=%s\n"
 
-#: 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"
+#~ msgid "Mail prog: %s"
+#~ msgstr "Programa de Correo: %s"
 
-#: src/stored/btape.c:2896
-msgid "go to the physical end of medium"
-msgstr "ir al final del medio físico"
+#~ msgid ""
+#~ "Mail program terminated in error.\n"
+#~ "CMD=%s\n"
+#~ "ERR=%s\n"
+#~ msgstr ""
+#~ "Programa de correo terminado en error.\n"
+#~ "CMD=%s\n"
+#~ "ERR=%s\n"
 
-#: src/stored/btape.c:2897
-msgid "fill tape, write onto second volume"
-msgstr "llenar cinta, escribir en segundo volumen"
+#~ msgid "fopen %s failed: ERR=%s\n"
+#~ msgstr "fopen %s ha fallado: ERR=%s\n"
 
-#: src/stored/btape.c:2898
-msgid "read filled tape"
-msgstr "leer cinta llena"
+#, fuzzy
+#~ msgid ""
+#~ "Msg delivery error: Operator mail program terminated in error.\n"
+#~ "CMD=%s\n"
+#~ "ERR=%s\n"
+#~ msgstr ""
+#~ "Operador de programa de correo terminado en error.\n"
+#~ "CMD=%s\n"
+#~ "ERR=%s\n"
 
-#: src/stored/btape.c:2899
-msgid "forward space a file"
-msgstr "espaciar un archivo hacia adelante"
+#, fuzzy
+#~ msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
+#~ msgstr "fopen %s ha fallado: ERR=%s\n"
 
-#: src/stored/btape.c:2900
-msgid "forward space a record"
-msgstr "espaciar un registro hacia adelante"
+#~ msgid "%s: ABORTING due to ERROR in %s:%d\n"
+#~ msgstr "%s: ABORTADO debido a un ERROR en %s:%d\n"
 
-#: src/stored/btape.c:2901
-msgid "print this command"
-msgstr "imprimir este comando"
+#~ msgid "%s: ERROR TERMINATION at %s:%d\n"
+#~ msgstr "%s: ERROR DE TERMINACIÓN en %s:%d\n"
 
-#: src/stored/btape.c:2902
-msgid "write a Bacula label to the tape"
-msgstr "escribir una etiqueta Bacula en la cinta"
+#~ msgid "%s: Fatal Error because: "
+#~ msgstr "%s: Error Fatal porque: "
 
-#: src/stored/btape.c:2903
-msgid "load a tape"
-msgstr "cargar una cinta"
+#~ msgid "%s: Fatal Error at %s:%d because:\n"
+#~ msgstr "%s: Error Fatal en %s:%d porque:\n"
 
-#: src/stored/btape.c:2904
-msgid "quit btape"
-msgstr "salir btape"
+#~ msgid "%s: ERROR: "
+#~ msgstr "%s: ERROR: "
 
-#: src/stored/btape.c:2905
-msgid "use write() to fill tape"
-msgstr "usar write() para llenar la cinta"
+#~ msgid "%s: ERROR in %s:%d "
+#~ msgstr "%s: ERROR en %s:%d "
 
-#: src/stored/btape.c:2906
-msgid "read and print the Bacula tape label"
-msgstr "leer e imprimir la etiqueta Bacula de la cinta"
+#~ msgid "%s: Warning: "
+#~ msgstr "%s: Advertencia: "
 
-#: src/stored/btape.c:2907
-msgid "test record handling functions"
-msgstr "prueba de manejo de registro de funciones"
+#~ msgid "%s: Security violation: "
+#~ msgstr "%s: Violación de seguridad: "
 
-#: src/stored/btape.c:2908
-msgid "rewind the tape"
-msgstr "rebobinar la cinta"
+#~ msgid "%s ABORTING due to ERROR\n"
+#~ msgstr "%s: ABORTADO debido a un ERROR\n"
 
-#: 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"
+#~ msgid "%s ERROR TERMINATION\n"
+#~ msgstr "%s: ERROR DE TERMINACIÓN\n"
 
-#: 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"
+#~ msgid "%s JobId %u: Fatal error: "
+#~ msgstr "%s JobId %u: Error Fatal: "
 
-#: 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 ""
-"[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] "
-"informe de velocidad de la unidad"
+#~ msgid "%s JobId %u: Error: "
+#~ msgstr "%s JobId %u: Error: "
 
-#: src/stored/btape.c:2912
-msgid "print tape status"
-msgstr "imprimir estado de la cinta"
+#~ msgid "%s JobId %u: Warning: "
+#~ msgstr "%s JobId %u: Advertencia: "
 
-#: src/stored/btape.c:2913
-msgid "General test Bacula tape functions"
-msgstr "Prueba general de las funciones de cinta Bacula"
+#~ msgid "%s JobId %u: Security violation: "
+#~ msgstr "%s JobId %u: Violación de seguridad: "
 
-#: src/stored/btape.c:2914
-msgid "write an EOF on the tape"
-msgstr "escribir un EOF en la cinta"
+#, fuzzy
+#~ msgid "Debug lock information"
+#~ msgstr "Enviando información precisa.\n"
 
-#: src/stored/btape.c:2915
-msgid "write a single Bacula block"
-msgstr "escribir un único bloque de Bacula"
+#, fuzzy
+#~ msgid "Debug volume information"
+#~ msgstr "Enviando información precisa.\n"
 
-#: src/stored/btape.c:2916
-msgid "read a single record"
-msgstr "leer un solo registro"
+#, fuzzy
+#~ msgid "Debug scheduler information"
+#~ msgstr "Enviando información precisa.\n"
 
-#: src/stored/btape.c:2917
-msgid "read a single Bacula block"
-msgstr "leer un único bloque de Bacula"
+#, fuzzy
+#~ msgid "Debug protocol information"
+#~ msgstr "Enviando información precisa.\n"
 
-#: src/stored/btape.c:2918
-msgid "quick fill command"
-msgstr "comando de llenado rápido"
+#, fuzzy
+#~ msgid "Debug all information"
+#~ msgstr "Enviando información precisa.\n"
 
-#: src/stored/btape.c:2939
-#, c-format
-msgid "\"%s\" is an invalid command\n"
-msgstr "\"%s\" es un comando inválido\n"
+#~ msgid "Unable to init mutex: ERR=%s\n"
+#~ msgstr "No se puede iniciar mutex: ERR=%s\n"
 
-#: src/stored/btape.c:2948
-#, c-format
-msgid "Interactive commands:\n"
-msgstr "Comandos interactivos:\n"
+#~ msgid "Unable to destroy mutex: ERR=%s\n"
+#~ msgstr "No se puede destruir mutex: ERR=%s\n"
 
-#: src/stored/btape.c:2959
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap 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"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-"\n"
-"Utilice: btape <opciones> <nombre-dispositivo>\n"
-" -b <archivo> especifica un archivo bootstrap\n"
-" -c <archivo>  especifica un archivo File de configuración\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -p proceder a pesar de los errores de E/S\n"
-" -s desactivar señales\n"
-" -v detallado\n"
-" -? imprime esta mensaje.\n"
-"\n"
+#~ msgid "***UNKNOWN***"
+#~ msgstr "***DESCONOCIDO***"
 
-#: 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:"
+#~ msgid "expected an =, got: %s"
+#~ msgstr "esperaba un =, obtuvo: %s"
 
-#: 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:"
+#~ msgid "Unknown item code: %d\n"
+#~ msgstr "Código de ítem desconocido: %d\n"
 
-#: src/stored/btape.c:3095
-#, c-format
-msgid "End of Volume \"%s\" %d records.\n"
-msgstr "Fin del Volumen \"%s\" %d registros.\n"
+#~ msgid "message type: %s not found"
+#~ msgstr "tipo de mensaje: %s no encontrado"
 
-#: 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"
+#~ msgid "Attempt to redefine name \"%s\" to \"%s\"."
+#~ msgstr "Intento de redefinir el nombre \"%s\" para \"%s\"."
 
-#: src/stored/authenticate.c:61
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
-msgstr "Solo autentico Directores, no %d\n"
+#~ msgid "Attempt to redefine resource \"%s\" referenced on line %d : %s\n"
+#~ msgstr ""
+#~ "Intento de redefinir recurso \"%s\" referenciado en la línea %d: %s\n"
 
-#: src/stored/authenticate.c:67 src/filed/authenticate.c:76
-#, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
-msgstr "Malo comando Hello desde Director en %s. Len=%d\n"
+#~ msgid "Too many %s directives. Max. is %d. line %d: %s\n"
+#~ msgstr "Demasiadas directivas %s. Máximo es %d. linea %d: %s\n"
 
-#: src/stored/authenticate.c:78 src/filed/authenticate.c:88
-#, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
-msgstr "Malo comando Hello desde Director en %s: %s\n"
+#~ msgid "Could not find config Resource \"%s\" referenced on line %d : %s\n"
+#~ msgstr ""
+#~ "No pudo encontrar recurso de configuración \"%s\" referenciado en linea "
+#~ "%d : %s\n"
 
-#: src/stored/authenticate.c:92
-#, fuzzy, c-format
-msgid ""
-"Connection from unknown Director %s at %s rejected.\n"
-"Please see "
-msgstr "Conexión desde Director %s desconocido  en %s rechazada.\n"
+#~ msgid "Missing config Resource \"%s\" referenced on line %d : %s\n"
+#~ msgstr ""
+#~ "Falta la configuración de Recurso \"%s\" referenciado en linea %d : %s\n"
+
+#~ msgid "expected a size number, got: %s"
+#~ msgstr "esperaba un numero de tamaño, obtuvo: %s"
 
-#: src/stored/authenticate.c:129
 #, fuzzy
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see "
-msgstr "Contraseña incorrecta dada por el Director en %s.\n"
+#~ msgid "expected a speed number, got: %s"
+#~ msgstr "esperaba un numero de tamaño, obtuvo: %s"
 
-#: src/stored/authenticate.c:137 src/stored/authenticate.c:248
-#: src/filed/authenticate.c:151 src/filed/authenticate.c:270
-msgid ""
-"Authorization problem: Remote server did not advertize required TLS "
-"support.\n"
-msgstr ""
-"Problema de autorización: El servidor remoto no anunció suporte TLS "
-"requerido.\n"
+#, fuzzy
+#~ msgid "expected a %s, got: %s"
+#~ msgstr "esperaba un tamaño, obtuvo: %s"
 
-#: src/stored/authenticate.c:155
-#, c-format
-msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
-msgstr "Fallida la negociación TLS con DIR en \"%s:%d\"\n"
+#~ msgid "Expected a Tape Label keyword, got: %s"
+#~ msgstr "esperaba una etiqueta Tape Label , obtuvo: %s"
 
-#: src/stored/authenticate.c:191
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
-msgstr "No se puede autenticar Director en %s.\n"
+#~ msgid "Unable to initialize resource lock. ERR=%s\n"
+#~ msgstr "No se puede inicializar recurso de bloqueo. ERR=%s\n"
 
-#: src/stored/authenticate.c:239 src/stored/authenticate.c:279
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see "
-msgstr ""
+#~ msgid "Config filename too long.\n"
+#~ msgstr "Nombre de archivo de configuración muy largo.\n"
 
-#: src/stored/authenticate.c:266
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
-msgstr "Fallida la negociación TLS con FD en \"%s:%d\"\n"
+#~ msgid "Cannot open config file \"%s\": %s\n"
+#~ msgstr "No se pudo abrir archivo de configuración \"%s\": %s\n"
 
-#: src/stored/wait.c:133
-#, c-format
-msgid "pthread timedwait error. ERR=%s\n"
-msgstr "error timedwait pthread. ERR=%s\n"
+#~ msgid ""
+#~ "Currently we cannot handle UTF-16 source files. Please convert the conf "
+#~ "file to UTF-8\n"
+#~ msgstr ""
+#~ "Actualmente no podemos manejar archivos de origen UTF-16 . Por favor, "
+#~ "convierta el archivo de configuración a UTF-8\n"
 
-#: src/stored/wait.c:239
-#, c-format
-msgid "JobId=%s, Job %s waiting to reserve a device.\n"
-msgstr "JobId=%s, Job %s esperando para reservar un dispositivo.\n"
+#~ msgid "Expected a Resource name identifier, got: %s"
+#~ msgstr "esperaba un nombre de identificación de Recurso, obtuvo: %s"
 
-#: src/stored/block.c:102
-#, c-format
-msgid ""
-"Dump block %s %x: size=%d BlkNum=%d\n"
-"               Hdrcksum=%x cksum=%x\n"
-msgstr ""
-"Volcado de bloque %s %x: tamaño=%d BlkNum=%d\n"
-" Hdrcksum=%x cksum=%x\n"
+#~ msgid "expected resource name, got: %s"
+#~ msgstr "esperaba un nombre de recurso, obtuvo: %s"
 
-#: 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"
+#~ msgid "not in resource definition: %s"
+#~ msgstr "no en la definición de recurso: %s"
 
-#: 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"
+#~ msgid ""
+#~ "Keyword \"%s\" not permitted in this resource.\n"
+#~ "Perhaps you left the trailing brace off of the previous resource."
+#~ msgstr ""
+#~ "Palabra clave \"%s\" no permitida en este recurso.\n"
+#~ "Tal vez a la izquierda de la llave de los recursos anteriores."
 
-#: 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 ""
-"Error de volumen de datos en %u:%u! Se busca ID: \"%s\",se obtiene \"%s\". "
-"Buffer descartado.\n"
+#~ msgid "Name not specified for resource"
+#~ msgstr "Nombre no especificado para el recurso"
 
-#: 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 ""
-"Error de datos de volumen en %u:%u! Longitud de bloque %u es demente "
-"(demasiado grande), probablemente debido a un archivo malo.\n"
+#~ msgid "unexpected token %d %s in resource definition"
+#~ msgstr "símbolo %d no soporte %s en la definición de los recursos"
 
-#: 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 ""
-"Error de datos de Volumen en %u:%u!\n"
-"Bloque checksum desajustado en bloque=%u len=%d: calc=%x blk=%x\n"
+#~ msgid "Unknown parser state %d\n"
+#~ msgstr "Estado del Analizador %d desconocido\n"
 
-#: 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"
+#~ msgid "End of conf file reached with unclosed resource."
+#~ msgstr "Fin de archivo de configuración alcanzado con recursos sin cerrar."
 
-#: 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"
+#~ msgid "Failed to open Plugin directory %s: ERR=%s\n"
+#~ msgstr "No se pudo abrir el directorio de Plugin %s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Failed to find any plugins in %s\n"
+#~ msgstr "No se pudo encontrar ningún plugin en %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "dlopen plugin %s failed: ERR=%s\n"
+#~ msgstr "fopen %s ha fallado: ERR=%s\n"
 
-#: src/stored/block.c:528
-#, c-format
-msgid "Unable to write EOF. ERR=%s\n"
-msgstr "No se pudo escribir EOF. ERR=%s\n"
+#~ msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
+#~ msgstr "Fallo buscando por loadPlugin en plugin %s: ERR=%s\n"
 
-#: src/stored/block.c:554 src/stored/block.c:588
-msgid "Write block header zeroed.\n"
-msgstr "Escribir cabecera de bloque cero.\n"
+#~ msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
+#~ msgstr "Fallo buscando por unloadPlugin en plugin %s: ERR=%s\n"
 
-#: src/stored/block.c:580
-#, c-format
-msgid "Block checksum changed during write: before=%ud after=%ud\n"
-msgstr ""
+#~ msgid "Could not find userid=%s: ERR=%s\n"
+#~ msgstr "No se pudo encontrar userid=%s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Could not find password entry. ERR=%s\n"
+#~ msgstr "No se pudo encontrar contraseña de entrada. ERR=%s\n"
 
-#: 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"
+#~ msgid "Could not find group=%s: ERR=%s\n"
+#~ msgstr "No se pudo encontrar grupo=%s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Could not initgroups for group=%s, userid=%s: ERR=%s\n"
+#~ msgstr "Podría no initgroups para grupo=%s, userid=%s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Could not initgroups for userid=%s: ERR=%s\n"
+#~ msgstr "Podría no initgroups para userid=%s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Could not set group=%s: ERR=%s\n"
+#~ msgstr "No se pudo establecer grupo=%s: ERR=%s\n"
 
-#: 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 ""
-"Re-lectura del último bloque: número de bloque difieren en más de uno.\n"
-"Probable mala configuración de la cinta y pérdida de datos. Leer bloque=%u "
-"Espera bloque=%u.\n"
+#~ msgid "prctl failed: ERR=%s\n"
+#~ msgstr "prctl fallido: ERR=%s\n"
 
-#: 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 ""
-"Re-lectura del último bloque OK, pero número de bloque difieren. Leer bloque="
-"%u Espera bloque=%u.\n"
+#~ msgid "setreuid failed: ERR=%s\n"
+#~ msgstr "setreuid fallido: ERR=%s\n"
 
-#: src/stored/block.c:744
-msgid "Re-read of last block succeeded.\n"
-msgstr "Éxito en re-lectura del último bloque.\n"
+#~ msgid "cap_from_text failed: ERR=%s\n"
+#~ msgstr "cap_from_text fallido: ERR=%s\n"
 
-#: src/stored/block.c:777
-#, c-format
-msgid ""
-"Error writing final EOF to tape. This Volume may not be readable.\n"
-"%s"
-msgstr ""
-"Error al escribir EOF final a la cinta. Este volumen puede no ser legible.\n"
-"%s"
+#~ msgid "cap_set_proc failed: ERR=%s\n"
+#~ msgstr "cap_set_proc fallido: ERR=%s\n"
 
-#: src/stored/block.c:791
-#, c-format
-msgid ""
-"Error writing final part to DVD. This Volume may not be readable.\n"
-"%s"
-msgstr ""
-"Error al escribir la parte final a DVD. Este volumen puede no ser legible.\n"
-"%s"
+#~ msgid "Keep readall caps not implemented this OS or missing libraries.\n"
+#~ msgstr ""
+#~ "seguir readall caps no implementado en este SO o faltan bibliotecas.\n"
 
-#: src/stored/block.c:801
-#, fuzzy
-msgid "Error sending Volume info to Director.\n"
-msgstr "Error al obtener Volumen información: %s"
+#~ msgid "Could not set specified userid: %s\n"
+#~ msgstr "No se pudo establecer userid especificado: %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 ""
-"Error al escribir, número de parte actual es menor que el número total de "
-"partes (%d/%d, dispositivo=%s)\n"
+#~ msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
+#~ msgstr "Fallo rwl_writelock en %s:%d: ERR=%s\n"
 
-#: 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"
+#~ msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
+#~ msgstr "Fallo \trwl_writeunlock en %s:%d: ERR=%s\n"
 
-#: 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 ""
-"Fin de Volumen \"%s\" en %u:%u en el dispositivo %s (part_size=%s, "
-"free_space=%s, free_space_errno=%d, errmsg=%s).\n"
+#~ msgid "%s: run %s \"%s\"\n"
+#~ msgstr "%s: ejecutar %s \"%s\"\n"
 
-#: 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 ""
-"Fin de Volumen \"%s\" en %u:%u en el dispositivo %s (part_size=%s, "
-"free_space=%s, free_space_errno=%d).\n"
+#~ msgid "Runscript: %s could not execute. ERR=%s\n"
+#~ msgstr "Runscript: No pudo ejecutar %s. ERR=%s\n"
+
+#~ msgid "%s: %s\n"
+#~ msgstr "%s: %s\n"
+
+#~ msgid "Runscript: %s returned non-zero status=%d. ERR=%s\n"
+#~ msgstr "Runscript: %s devolvió estado=%d distinto de cero. ERR=%s\n"
+
+#~ msgid "rwl_writeunlock called too many times.\n"
+#~ msgstr "rwl_writeunlock llamado muchas veces.\n"
+
+#~ msgid "rwl_writeunlock by non-owner.\n"
+#~ msgstr "rwl_writeunlock por no-propietario.\n"
 
-#: src/stored/block.c:980
 #, fuzzy
-msgid "Job failed or canceled.\n"
-msgstr "Job %d cancelado.\n"
+#~ msgid "Negative numbers not permitted.\n"
+#~ msgstr "Números negativos no permitidos.\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"
+#~ msgid "User cancel requested.\n"
+#~ msgstr "Restauración cancelada.\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"
+#, fuzzy
+#~ msgid "Selection items must be be greater than zero.\n"
+#~ msgstr "Los valores deben ser ser mayor que cero.\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"
+#, fuzzy
+#~ msgid "Selection item too large.\n"
+#~ msgstr "Ranura demasiado grande.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "No input string given.\n"
+#~ msgstr "Especificación de archivo no dado.\n"
 
-#: 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"
+#~ msgid "Invalid signal number"
+#~ msgstr "Número de la señal no válida"
 
-#: 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"
+#~ msgid "Bacula interrupted by signal %d: %s\n"
+#~ msgstr "Bacula interrumpido por señal %d: %s\n"
 
-#: 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 ""
-"Error datos de volumen en  %u:%u! Bloque muy corto de %d bytes en "
-"dispositivo %s descartado.\n"
+#, fuzzy
+#~ msgid "Kaboom! %s, %s got signal %d - %s at %s. Attempting traceback.\n"
+#~ msgstr "Kaboom! %s, %s obtuvo la señal %d - %s. Intentando rastreo.\n"
 
-#: 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"
+#~ msgid "Kaboom! exepath=%s\n"
+#~ msgstr "Kaboom! exepath=%s\n"
 
-#: 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"
+#~ msgid "Fork error: ERR=%s\n"
+#~ msgstr "Fork error: ERR=%s\n"
 
-#: 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 ""
-"Error datos de volumen en  %u:%u! Bloque corto de %d bytes en dispositivo %s "
-"descartado.\n"
+#~ msgid "Calling: %s %s %s %s\n"
+#~ msgstr "Llamando: %s %s %s %s\n"
 
-#: 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"
+#~ msgid "execv: %s failed: ERR=%s\n"
+#~ msgstr "execv: %s ha fallado: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "It looks like the traceback worked...\n"
+#~ msgstr "Parece que el rastreo trabaja ...\n"
 
-#: src/lib/plugins.c:168
-#, fuzzy, c-format
-msgid "dlopen plugin %s failed: ERR=%s\n"
-msgstr "fopen %s ha fallado: ERR=%s\n"
+#~ msgid "BA_NSIG too small (%d) should be (%d)\n"
+#~ msgstr "BA_NSIG demasiado pequeño (%d) debe ser (%d)\n"
 
-#: 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"
+#~ msgid "UNKNOWN SIGNAL"
+#~ msgstr "SEÑAL DESCONOCIDA"
 
-#: 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"
+#~ msgid "Hangup"
+#~ msgstr "Colgar"
 
-#: src/lib/pythonlib.c:116
-msgid "Could not initialize Python\n"
-msgstr "No se pudo inicializar Python\n"
+#~ msgid "Interrupt"
+#~ msgstr "Interrumpir"
 
-#: src/lib/pythonlib.c:121
-#, c-format
-msgid "Could not Run Python string %s\n"
-msgstr "No se pudo ejecutar Python cadena %s\n"
+#~ msgid "Quit"
+#~ msgstr "Salir"
 
-#: src/lib/pythonlib.c:133
-msgid "Could not initialize Python Job type.\n"
-msgstr "No se pudo inicializar Job tipo Python.\n"
+#~ msgid "Illegal instruction"
+#~ msgstr "Instrucción ilegal"
 
-#: src/lib/pythonlib.c:138
-#, c-format
-msgid "Could not import Python script %s/%s. Python disabled.\n"
-msgstr "No se puede importar script Python %s/%s. Python deshabilitado.\n"
+#~ msgid "Trace/Breakpoint trap"
+#~ msgstr "Trace/Trampa de Punto de Interrupción"
 
-#: src/lib/pythonlib.c:240
-msgid "Could not create Python Job Object.\n"
-msgstr "No es posible crear objeto Job Python.\n"
+#~ msgid "Abort"
+#~ msgstr "Anular"
 
-#: src/lib/pythonlib.c:253 src/lib/pythonlib.c:277
-#, c-format
-msgid "Python function \"%s\" not found.\n"
-msgstr "Python función \"%s\" no encontrada.\n"
+#~ msgid "EMT instruction (Emulation Trap)"
+#~ msgstr "Instrucción EMT (Emulación de Trampa)"
 
-#: src/lib/pythonlib.c:292
-#, c-format
-msgid "Unknown Python daemon event %s\n"
-msgstr "Demonio Python evento %s desconocido\n"
+#~ msgid "IOT trap"
+#~ msgstr "trampa IOT"
 
-#: src/lib/pythonlib.c:317
-#, c-format
-msgid "Unable to initialize the Python lock. ERR=%s\n"
-msgstr "No se puede inicializar el bloqueo de Python. ERR=%s\n"
+#~ msgid "BUS error"
+#~ msgstr "BUS error"
 
-#: src/lib/watchdog.c:96
-#, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
-msgstr "No se puede inicializar bloqueo de vigilancia. ERR=%s\n"
+#~ msgid "Floating-point exception"
+#~ msgstr "Excepción de punto flotante"
 
-#: src/lib/watchdog.c:193
-msgid "BUG! register_watchdog called before start_watchdog\n"
-msgstr "BUG! register_watchdog llamado antes de start_watchdog\n"
+#~ msgid "Kill, unblockable"
+#~ msgstr "Matar, imbloqueable"
 
-#: src/lib/watchdog.c:196
-#, c-format
-msgid "BUG! Watchdog %p has NULL callback\n"
-msgstr "BUG! Watchdog %p tiene llamada NULL\n"
+#~ msgid "User-defined signal 1"
+#~ msgstr "Señal 1 definida por el usuario"
 
-#: src/lib/watchdog.c:199
-#, c-format
-msgid "BUG! Watchdog %p has zero interval\n"
-msgstr "BUG! Watchdog %p tiene intervalo cero \n"
+#~ msgid "Segmentation violation"
+#~ msgstr "Violación de segmento"
 
-#: src/lib/watchdog.c:219
-msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
-msgstr "ERROR! unregister_watchdog_unlocked llamado antes start_watchdog\n"
+#~ msgid "User-defined signal 2"
+#~ msgstr "Señal definida por el usuario 2"
 
-#: src/lib/watchdog.c:339
-#, c-format
-msgid "rwl_writelock failure. ERR=%s\n"
-msgstr "rwl_writelock failure. ERR=%s\n"
+#~ msgid "Broken pipe"
+#~ msgstr "Tuberí­a rota"
 
-#: src/lib/watchdog.c:354
-#, c-format
-msgid "rwl_writeunlock failure. ERR=%s\n"
-msgstr "rwl_writeunlock failure. ERR=%s\n"
+#~ msgid "Alarm clock"
+#~ msgstr "Alarma"
 
-#: src/lib/attr.c:81
-#, c-format
-msgid "Error scanning attributes: %s\n"
-msgstr "Error escaneando atributos: %s\n"
+#~ msgid "Termination"
+#~ msgstr "Terminación"
 
-#: src/lib/smartall.c:145 src/lib/smartall.c:256 src/lib/smartall.c:271
-msgid "Out of memory\n"
-msgstr "Fuera de memoria\n"
+#~ msgid "Stack fault"
+#~ msgstr "Error de pila"
 
-#: src/lib/smartall.c:150
-msgid "Too much memory used."
-msgstr "Demasiada memoria utilizada."
+#~ msgid "Child status has changed"
+#~ msgstr "El estado de hijo ha cambiado"
 
-#: src/lib/smartall.c:180
-#, c-format
-msgid "Attempt to free NULL called from %s:%d\n"
-msgstr "Intento para liberar NULL llamado desde %s:%d\n"
+#~ msgid "Continue"
+#~ msgstr "Continue"
 
-#: src/lib/smartall.c:194
-#, c-format
-msgid "double free from %s:%d\n"
-msgstr "doble libre desde %s:%d\n"
+#~ msgid "Stop, unblockable"
+#~ msgstr "Detener, imbloqueable"
 
-#: src/lib/smartall.c:202
-#, c-format
-msgid "qp->qnext->qprev != qp called from %s:%d\n"
-msgstr "qp->qnext->qprev != qp llamado desde %s:%d\n"
+#~ msgid "Keyboard stop"
+#~ msgstr "Teclado detenido"
 
-#: src/lib/smartall.c:206
-#, c-format
-msgid "qp->qprev->qnext != qp called from %s:%d\n"
-msgstr "qp->qprev->qnext != qp llamado desde %s:%d\n"
+#~ msgid "Background read from tty"
+#~ msgstr "Leer en segundo plan desde tty"
 
-#: src/lib/smartall.c:215
-#, c-format
-msgid "Overrun buffer: len=%d addr=%p allocated: %s:%d called from %s:%d\n"
-msgstr ""
+#~ msgid "Background write to tty"
+#~ msgstr "Escribir en segundo plan al tty"
 
-#: src/lib/smartall.c:293
-#, c-format
-msgid "sm_realloc size: %d\n"
-msgstr "sm_realloc tamaño: %d\n"
+#~ msgid "Urgent condition on socket"
+#~ msgstr "Condición de urgencia en el socket"
 
-#: src/lib/smartall.c:331
-#, c-format
-msgid "sm_realloc %d at %p from %s:%d\n"
-msgstr "sm_realloc %d en %p desde %s:%d\n"
+#~ msgid "CPU limit exceeded"
+#~ msgstr "Limite de CPU superado"
 
-#: src/lib/smartall.c:391
-#, c-format
-msgid ""
-"\n"
-"Orphaned buffers exist.  Dump terminated following\n"
-"  discovery of bad links in chain of orphaned buffers.\n"
-"  Buffer address with bad links: %p\n"
-msgstr ""
-"\n"
-"Buffers huérfanos existen. Volcado terminado tras el\n"
-"descubrimiento de malos vínculos en la cadena de buffers huérfanos.\n"
-" Dirección del buffer con enlaces malos: %p\n"
+#~ msgid "File size limit exceeded"
+#~ msgstr "Superado el límite de tamaño de archivo"
 
-#: src/lib/smartall.c:436
-#, c-format
-msgid "Damaged buffer found. Called from %s:%d\n"
-msgstr "Búfer dañado encontrado. Llamado desde %s:%d\n"
+#~ msgid "Virtual alarm clock"
+#~ msgstr "Despertador virtual"
 
-#: src/lib/smartall.c:469
-#, c-format
-msgid ""
-"\n"
-"Damaged buffers found at %s:%d\n"
-msgstr ""
-"\n"
-"Búfers dañado encontrado en %s:%d\n"
+#~ msgid "Profiling alarm clock"
+#~ msgstr "Perfiles de alarma"
 
-#: src/lib/smartall.c:472
-msgid "  discovery of bad prev link.\n"
-msgstr "descubrimiento de un malo vínculo anterior.\n"
+#~ msgid "Window size change"
+#~ msgstr "Cambiar el tamaño de la ventana"
 
-#: src/lib/smartall.c:475
-msgid "  discovery of bad next link.\n"
-msgstr "descubrimiento del siguiente malo enlace malo.\n"
+#~ msgid "I/O now possible"
+#~ msgstr "I/O posible ahora"
 
-#: src/lib/smartall.c:478
-msgid "  discovery of data overrun.\n"
-msgstr "descubrimiento de datos de rebosamiento.\n"
+#~ msgid "Power failure restart"
+#~ msgstr "Fallo reiniciar energía"
 
-#: src/lib/smartall.c:481
-msgid "  NULL pointer.\n"
-msgstr "Puntero NULL.\n"
+#~ msgid "No runnable lwp"
+#~ msgstr "LWP no ejecutable"
 
-#: src/lib/smartall.c:487
-#, c-format
-msgid "  Buffer address: %p\n"
-msgstr "Dirección de buffer : %p\n"
+#~ msgid "SIGLWP special signal used by thread library"
+#~ msgstr "La señal especial SIGLWP utilizado por la biblioteca del hilo"
 
-#: src/lib/smartall.c:494
-#, c-format
-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"
+#~ msgid "Checkpoint Freeze"
+#~ msgstr "Checkpoint de Congelación"
 
-#: src/lib/sellist.c:69
-#, fuzzy
-msgid "Negative numbers not permitted.\n"
-msgstr "Números negativos no permitidos.\n"
+#~ msgid "Checkpoint Thaw"
+#~ msgstr "Checkpoint de Thaw"
 
-#: 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"
+#~ msgid "Thread Cancellation"
+#~ msgstr "Cancelación de Hilo"
 
-#: src/lib/sellist.c:110
-#, fuzzy
-msgid "Selection item too large.\n"
-msgstr "Ranura demasiado grande.\n"
+#~ msgid "Resource Lost (e.g. record-lock lost)"
+#~ msgstr "Recurso Perdido (por ejemplo, registro de bloqueo perdido)"
 
-#: src/lib/sellist.c:167
-#, fuzzy
-msgid "No input string given.\n"
-msgstr "Especificación de archivo no dado.\n"
+#~ msgid "Out of memory\n"
+#~ msgstr "Fuera de memoria\n"
 
-#: src/lib/rwlock.c:307
-msgid "rwl_writeunlock called too many times.\n"
-msgstr "rwl_writeunlock llamado muchas veces.\n"
+#~ msgid "Too much memory used."
+#~ msgstr "Demasiada memoria utilizada."
 
-#: src/lib/rwlock.c:312
-msgid "rwl_writeunlock by non-owner.\n"
-msgstr "rwl_writeunlock por no-propietario.\n"
+#~ msgid "Attempt to free NULL called from %s:%d\n"
+#~ msgstr "Intento para liberar NULL llamado desde %s:%d\n"
 
-#: 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"
+#~ msgid "double free from %s:%d\n"
+#~ msgstr "doble libre desde %s:%d\n"
 
-#: 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"
+#~ msgid "qp->qnext->qprev != qp called from %s:%d\n"
+#~ msgstr "qp->qnext->qprev != qp llamado desde %s:%d\n"
 
-#: 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"
+#~ msgid "qp->qprev->qnext != qp called from %s:%d\n"
+#~ msgstr "qp->qprev->qnext != qp llamado desde %s:%d\n"
 
-#: 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"
+#~ msgid "sm_realloc size: %d\n"
+#~ msgstr "sm_realloc tamaño: %d\n"
 
-#: src/lib/rwlock.c:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
-msgid "Try write lock"
-msgstr "Intente escribir bloqueo"
+#~ msgid "sm_realloc %d at %p from %s:%d\n"
+#~ msgstr "sm_realloc %d en %p desde %s:%d\n"
 
-#: src/lib/rwlock.c:600 src/lib/save/devlock.c:664 src/lib/devlock.c:664
-msgid "Try read lock"
-msgstr "Intente leer bloqueo"
+#~ msgid ""
+#~ "\n"
+#~ "Orphaned buffers exist.  Dump terminated following\n"
+#~ "  discovery of bad links in chain of orphaned buffers.\n"
+#~ "  Buffer address with bad links: %p\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Buffers huérfanos existen. Volcado terminado tras el\n"
+#~ "descubrimiento de malos vínculos en la cadena de buffers huérfanos.\n"
+#~ " Dirección del buffer con enlaces malos: %p\n"
 
-#: src/lib/rwlock.c:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
-msgid "Create thread"
-msgstr "Crear hilo"
+#~ msgid "Damaged buffer found. Called from %s:%d\n"
+#~ msgstr "Búfer dañado encontrado. Llamado desde %s:%d\n"
 
-#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
-msgid "Join thread"
-msgstr "Unir hilo"
+#~ msgid ""
+#~ "\n"
+#~ "Damaged buffers found at %s:%d\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Búfers dañado encontrado en %s:%d\n"
 
-#: 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"
+#~ msgid "  discovery of bad prev link.\n"
+#~ msgstr "descubrimiento de un malo vínculo anterior.\n"
 
-#: 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"
+#~ msgid "  discovery of bad next link.\n"
+#~ msgstr "descubrimiento del siguiente malo enlace malo.\n"
 
-#: src/lib/bget_msg.c:97
-msgid "Status OK\n"
-msgstr "Estado OK\n"
+#~ msgid "  discovery of data overrun.\n"
+#~ msgstr "descubrimiento de datos de rebosamiento.\n"
 
-#: src/lib/bget_msg.c:101
-#, c-format
-msgid "bget_msg: unknown signal %d\n"
-msgstr "bget_msg: señal desconocida %d\n"
+#~ msgid "  NULL pointer.\n"
+#~ msgstr "Puntero NULL.\n"
 
-#: src/lib/bsock.c:131
-#, c-format
-msgid ""
-"Could not connect to %s on %s:%d. ERR=%s\n"
-"Retrying ...\n"
-msgstr ""
-"No se pudo conectar a %s en %s:%d. ERR=%s\n"
-"Reintentando ...\n"
+#~ msgid "  Buffer address: %p\n"
+#~ msgstr "Dirección de buffer : %p\n"
 
-#: 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"
+#~ 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/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"
+#~ msgid ""
+#~ "Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:"
+#~ "%s\n"
+#~ msgstr ""
+#~ "Error con el certificado en profundidad: %d, emisor=%s, asunto=%s, ERR=%d:"
+#~ "%s\n"
 
-#: 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"
+#~ msgid "Error initializing SSL context"
+#~ msgstr "Error inicializando contexto SSL"
 
-#: 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"
+#~ msgid "Error loading certificate verification stores"
+#~ msgstr "Error al cargar los almacenes de verificación del certificado"
 
-#: 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"
+#~ msgid ""
+#~ "Either a certificate file or a directory must be specified as a "
+#~ "verification store\n"
+#~ msgstr ""
+#~ "Un certificado de archivo o un directorio debe especificarse como un "
+#~ "almacenes de verificación\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"
+#~ msgid "Error loading certificate file"
+#~ msgstr "Error cargando archivos de certificados"
 
-#: 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"
+#~ msgid "Error loading private key"
+#~ msgstr "Error cargando llaves privadas"
 
-#: src/lib/bsock.c:374
-#, c-format
-msgid "Socket has errors=%d on call to %s:%s:%d\n"
-msgstr ""
+#~ msgid "Unable to open DH parameters file"
+#~ msgstr "No se puede abrir el archivo de parámetros de DH"
 
-#: src/lib/bsock.c:381
-#, c-format
-msgid "Socket is terminated=%d on call to %s:%s:%d\n"
-msgstr ""
+#~ msgid "Unable to load DH parameters from specified file"
+#~ msgstr ""
+#~ "No es posible cargar los parámetros de DH desde el archivo especificado"
 
-#: src/lib/bsock.c:389
-#, c-format
-msgid "Socket has insane msglen=%d on call to %s:%s:%d\n"
-msgstr ""
+#~ msgid "Failed to set TLS Diffie-Hellman parameters"
+#~ msgstr "No se pudo establecer parámetros TLS de Diffie-Hellman"
 
-#: 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"
+#~ msgid "Error setting cipher list, no valid ciphers available\n"
+#~ msgstr ""
+#~ "Error configurando lista de cipher, no hay ciphers válidos disponibles\n"
 
-#: 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"
+#~ msgid "Peer failed to present a TLS certificate\n"
+#~ msgstr "Par ha fallado al presentar un certificado TLS\n"
 
-#: 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"
+#~ msgid "Peer %s failed to present a TLS certificate\n"
+#~ msgstr "Par %s ha fallado al presentar un certificado TLS\n"
 
-#: 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"
+#~ msgid "Error creating file descriptor-based BIO"
+#~ msgstr "Error al crear archivo descriptor basado en BIO"
 
-#: 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"
+#~ msgid "Error creating new SSL object"
+#~ msgstr "Error creando nuevo objeto SSL"
 
-#: src/lib/bsock.c:663
-msgid "fread attr spool I/O error.\n"
-msgstr "Error fread attr spool I/O.\n"
+#~ msgid "Connect failure"
+#~ msgstr "Fallo al conectar"
 
-#: src/lib/bsock.c:724
-msgid "Could not malloc BSOCK data buffer\n"
-msgstr "No se pudo malloc datos BSOCK buffer.\n"
+#~ msgid "TLS shutdown failure."
+#~ msgstr "Error de apagado TLS."
 
-#: src/lib/bsock.c:742 src/lib/bsock.c:761
-#, c-format
-msgid "sockopt error: %s\n"
-msgstr "error de sockopt: %s\n"
+#~ msgid "TLS read/write failure."
+#~ msgstr "Error de lectura/escritura TLS."
 
-#: 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"
+#~ msgid "Running"
+#~ msgstr "Ejecutando"
 
-#: 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"
+#~ msgid "Blocked"
+#~ msgstr "Bloqueado"
 
-#: 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"
+#~ msgid "Non-fatal error"
+#~ msgstr "No Fatal Error"
 
-#: 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"
+#~ msgid "Canceled"
+#~ msgstr "Cancelado"
 
-#: 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 ""
-"Problema de autorización: El servidor remoto en \"%s:%d\" no anuncio soporte "
-"TLS  requiere.\n"
+#~ msgid "Verify differences"
+#~ msgstr "Verificar diferencias"
 
-#: 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 ""
-"Problema de autorización con el Director en \"%s:%d\": El servidor remoto "
-"requiere TLS.\n"
+#~ msgid "Waiting on FD"
+#~ msgstr "Esperando al FD"
 
-#: 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"
+#~ msgid "Wait on SD"
+#~ msgstr "Espere al SD"
 
-#: 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 ""
-"Mala respuesta al comando Hello: ERR=%s\n"
-"El director en \"%s:%d\" probablemente no esta corriendo.\n"
+#~ msgid "Wait for new Volume"
+#~ msgstr "Espere por un nuevo Volumen"
 
-#: 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"
+#~ msgid "Waiting for mount"
+#~ msgstr "Esperando por montaje"
 
-#: 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"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-"Problema de autorización con el Director en \"%s:%d\"\n"
-"Lo mas probable es que las contraseñas no están de acuerdo.\n"
-"Si está usando TLS, puede haber habido un error de validación de "
-"certificados durante la negociación TLS.\n"
-" Por favor vea http://www.bacula.org/en/rel-manual/"
-"Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 para ayuda.\n"
+#~ msgid "Waiting for Storage resource"
+#~ msgstr "Esperando al recurso Storage"
 
-#: 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"
+#~ msgid "Waiting for Job resource"
+#~ msgstr "Esperando al recurso Job"
 
-#: 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"
+#~ msgid "Waiting for Client resource"
+#~ msgstr "Esperando al recurso Cliente"
 
-#: src/lib/message.c:482
-msgid "Bacula Message"
-msgstr "Bacula Message"
+#~ msgid "Waiting on Max Jobs"
+#~ msgstr "Esperando el máximo Jobs"
 
-#: 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"
+#~ msgid "Waiting for Start Time"
+#~ msgstr "Esperando a Hora de Inicio"
 
-#: src/lib/message.c:577
-msgid "open mail pipe failed.\n"
-msgstr "Fallo al abrir tubería de correo .\n"
+#~ msgid "Waiting on Priority"
+#~ msgstr "Esperando por prioridad"
 
-#: src/lib/message.c:590
-#, c-format
-msgid "close error: ERR=%s\n"
-msgstr "Error al cerrar: ERR=%s\n"
+#~ msgid "Unknown Job termination status=%d"
+#~ msgstr "Estado de terminación de Job desconocido=%d"
 
-#: src/lib/message.c:601
-#, c-format
-msgid "Mail prog: %s"
-msgstr "Programa de Correo: %s"
+#~ msgid "Completed successfully"
+#~ msgstr "Se ha completado con éxito"
 
-#: src/lib/message.c:610
-#, c-format
-msgid ""
-"Mail program terminated in error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-"Programa de correo terminado en error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
+#~ msgid "Completed with warnings"
+#~ msgstr "Completado con advertencias"
 
-#: src/lib/message.c:713
-#, c-format
-msgid "fopen %s failed: ERR=%s\n"
-msgstr "fopen %s ha fallado: ERR=%s\n"
+#~ msgid "Terminated with errors"
+#~ msgstr "Terminado con errores"
 
-#: src/lib/message.c:835 src/lib/message.c:838
-msgid "Msg delivery error: Unable to store data in database.\n"
-msgstr ""
+#~ msgid "Fatal error"
+#~ msgstr "Error fatal"
 
-#: src/lib/message.c:890
-#, fuzzy, c-format
-msgid ""
-"Msg delivery error: Operator mail program terminated in error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-"Operador de programa de correo terminado en error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
+#~ msgid "Created, not yet running"
+#~ msgstr "Creado, aún no se ejecuta"
 
-#: 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"
+#~ msgid "Canceled by user"
+#~ msgstr "Cancelada por el usuario"
 
-#: 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"
+#~ msgid "Verify found differences"
+#~ msgstr "Verificar diferencias encontradas"
 
-#: 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"
+#~ msgid "Waiting for File daemon"
+#~ msgstr "Esperando por demonio  File"
 
-#: src/lib/message.c:1239
-#, c-format
-msgid "%s: Fatal Error because: "
-msgstr "%s: Error Fatal porque: "
+#~ msgid "Waiting for Storage daemon"
+#~ msgstr "Esperando por demonio  Storage"
 
-#: 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"
+#~ msgid "Waiting for higher priority jobs"
+#~ msgstr "Esperando por trabajos de mayor prioridad"
 
-#: src/lib/message.c:1245
-#, c-format
-msgid "%s: ERROR: "
-msgstr "%s: ERROR: "
+#~ msgid "Batch inserting file records"
+#~ msgstr "Insertando registros de archivo en lote"
 
-#: src/lib/message.c:1247
-#, c-format
-msgid "%s: ERROR in %s:%d "
-msgstr "%s: ERROR en %s:%d "
+#~ msgid "Fatal Error"
+#~ msgstr "Error Fatal"
 
-#: src/lib/message.c:1250
-#, c-format
-msgid "%s: Warning: "
-msgstr "%s: Advertencia: "
+#~ msgid "Differences"
+#~ msgstr "Diferencias"
 
-#: src/lib/message.c:1253
-#, c-format
-msgid "%s: Security violation: "
-msgstr "%s: Violación de seguridad: "
+#~ msgid "Unknown term code"
+#~ msgstr "Código del término desconocido"
 
-#: src/lib/message.c:1341
-#, c-format
-msgid "%s ABORTING due to ERROR\n"
-msgstr "%s: ABORTADO debido a un ERROR\n"
+#~ msgid "Migrated Job"
+#~ msgstr "Jod de Migración"
 
-#: src/lib/message.c:1344
-#, c-format
-msgid "%s ERROR TERMINATION\n"
-msgstr "%s: ERROR DE TERMINACIÓN\n"
+#~ msgid "Verify"
+#~ msgstr "Verificar"
 
-#: src/lib/message.c:1347
-#, c-format
-msgid "%s JobId %u: Fatal error: "
-msgstr "%s JobId %u: Error Fatal: "
+#~ msgid "Restore"
+#~ msgstr "Restaurar"
 
-#: src/lib/message.c:1356
-#, c-format
-msgid "%s JobId %u: Error: "
-msgstr "%s JobId %u: Error: "
+#~ msgid "Console"
+#~ msgstr "Consola"
 
-#: src/lib/message.c:1362
-#, c-format
-msgid "%s JobId %u: Warning: "
-msgstr "%s JobId %u: Advertencia: "
-
-#: 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: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"
+#~ msgid "System or Console"
+#~ msgstr "Sistema o Consola"
 
-#: 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"
+#~ msgid "Admin"
+#~ msgstr "Admin"
 
-#: 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"
+#~ msgid "Archive"
+#~ msgstr "Archivo"
 
-#: 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"
+#~ msgid "Job Copy"
+#~ msgstr "Job de Copia"
 
-#: 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"
+#~ msgid "Copy"
+#~ msgstr "Copiar"
 
-#: src/lib/bnet_server.c:182
-#, c-format
-msgid "Error in select: %s\n"
-msgstr "Error al seleccionar: %s\n"
+#~ msgid "Migrate"
+#~ msgstr "Migrar"
 
-#: 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"
+#~ msgid "Scan"
+#~ msgstr "Escanear"
 
-#: src/lib/bnet_server.c:229
-msgid "Could not create client BSOCK.\n"
-msgstr "No es posible crear cliente BSOCK. \n"
+#~ msgid "Unknown Type"
+#~ msgstr "Tipo Desconocido"
 
-#: 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"
+#~ msgid "Truncate"
+#~ msgstr "Truncar"
 
-#: 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"
+#~ msgid "Base"
+#~ msgstr "Base"
 
-#: src/lib/bpipe.c:361 src/lib/bpipe.c:444
-msgid "Program killed by Bacula (timeout)\n"
-msgstr "Programa finalizado(killed) por Bacula (timeout) \n"
+#~ msgid "Verify Init Catalog"
+#~ msgstr "Verificar Catálogo Inicial"
 
-#: src/lib/lockmgr.c:65
-#, c-format
-msgid "ASSERT failed at %s:%i: %s\n"
-msgstr ""
+#~ msgid "Verify Data"
+#~ msgstr "Verificar Datos"
 
-#: src/lib/lockmgr.c:70
-#, c-format
-msgid "ASSERT failed at %s:%i: %s \n"
-msgstr ""
+#~ msgid "Virtual Full"
+#~ msgstr "Virtual completa"
 
-#: src/lib/lockmgr.c:100
-#, c-format
-msgid "Mutex lock failure. ERR=%s\n"
-msgstr "Error bloqueando Mutex. ERR=%s\n"
+#~ msgid "Unknown Job Level"
+#~ msgstr "Nivel del Job desconocido"
 
-#: src/lib/lockmgr.c:110
-#, c-format
-msgid "Mutex unlock failure. ERR=%s\n"
-msgstr "Error desbloqueando Mutex. ERR=%s\n"
+#~ msgid "Append"
+#~ msgstr "Añadir"
 
-#: src/lib/lockmgr.c:275 src/lib/lockmgr.c:611 src/lib/lockmgr.c:639
-#: src/lib/jcr.c:321
-#, c-format
-msgid "pthread key create failed: ERR=%s\n"
-msgstr "fallo crear clave pthread: ERR=%s\n"
+#~ msgid "Disabled"
+#~ msgstr "Inhabilitado"
 
-#: src/lib/lockmgr.c:623
-#, c-format
-msgid "pthread_create failed: ERR=%s\n"
-msgstr "pthread_create fallido: ERR=%s\n"
+#~ msgid "Used"
+#~ msgstr "Usado"
 
-#: src/lib/crypto.c:442
-msgid "Unable to open certificate file"
-msgstr "No se puede abrir el archivo de certificado"
+#~ msgid "Cleaning"
+#~ msgstr "Limpieza"
 
-#: src/lib/crypto.c:449
-msgid "Unable to read certificate from file"
-msgstr "No es posible leer el archivo de certificado"
+#~ msgid "Purged"
+#~ msgstr "Purga"
 
-#: src/lib/crypto.c:455
-msgid "Unable to extract public key from certificate"
-msgstr "No se puede extraer la clave pública del certificado"
+#~ msgid "Recycle"
+#~ msgstr "Reciclar"
 
-#: src/lib/crypto.c:462
-msgid ""
-"Provided certificate does not include the required subjectKeyIdentifier "
-"extension."
-msgstr ""
-"Certificado suministrado no incluye la extensión subjectKeyIdentifier "
-"necesaria."
+#~ msgid "Read-Only"
+#~ msgstr "Sólo-Lectura"
 
-#: src/lib/crypto.c:469
-#, c-format
-msgid "Unsupported key type provided: %d\n"
-msgstr "Tipo de clave prevista no soportada: %d\n"
+#~ msgid "Invalid volume status"
+#~ msgstr "Invalido estado de volumen"
 
-#: src/lib/crypto.c:506 src/lib/crypto.c:554
-msgid "Unable to open private key file"
-msgstr "No se puede abrir archivo de clave privada"
+#~ msgid "Working directory not defined. Cannot continue.\n"
+#~ msgstr "Directorio de trabajo no definido. No se puede continuar.\n"
 
-#: src/lib/crypto.c:536 src/lib/crypto.c:570
-msgid "Unable to read private key from file"
-msgstr "No se puede leer la clave privada del archivo"
+#~ msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
+#~ msgstr ""
+#~ "Directorio de Trabajo: \"%s\" no encontrado. No se puede continuar.\n"
 
-#: src/lib/crypto.c:629
-#, c-format
-msgid "Unsupported digest type: %d\n"
-msgstr "Tipo Digest no soportado: %d\n"
+#~ msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
+#~ msgstr ""
+#~ "Directorio de Trabajo: \"%s\" no es un directorio. No se puede "
+#~ "continuar.\n"
 
-#: src/lib/crypto.c:643
-msgid "OpenSSL digest initialization failed"
-msgstr "Fallo al inicializar resume OpenSSL"
+#~ msgid "everything ok"
+#~ msgstr "todo bien"
 
-#: src/lib/crypto.c:657
-msgid "OpenSSL digest update failed"
-msgstr "Fallo al actualizar resume OpenSSL"
+#~ msgid "incomplete named character"
+#~ msgstr "carácter nombrado incompleto"
 
-#: src/lib/crypto.c:675
-msgid "OpenSSL digest finalize failed"
-msgstr "Fallo al finalizar resume OpenSSL"
+#~ msgid "incomplete hexadecimal value"
+#~ msgstr "valor hexadecimal incompleto"
 
-#: src/lib/crypto.c:773
-msgid "OpenSSL digest_new failed"
-msgstr "fallo digest_new OpenSSL"
+#~ msgid "invalid hexadecimal value"
+#~ msgstr "valor hexadecimal inválido"
 
-#: src/lib/crypto.c:779
-msgid "OpenSSL sign get digest failed"
-msgstr "Fallo OpenSSL al obtener firma digest "
+#~ msgid "octal value too large"
+#~ msgstr "valor octal demasiado grande"
 
-#: src/lib/crypto.c:818 src/lib/crypto.c:822
-msgid "OpenSSL digest Verify final failed"
-msgstr "Fallo OpenSSL Verificación final digest "
+#~ msgid "invalid octal value"
+#~ msgstr "valor octal inválido"
 
-#: src/lib/crypto.c:827
-msgid "No signers found for crypto verify.\n"
-msgstr "Firmantes no encontrados para verificar el cifrado.\n"
+#~ msgid "incomplete octal value"
+#~ msgstr "valor octal incompleto"
 
-#: src/lib/crypto.c:888
-msgid "Signature creation failed"
-msgstr "Fallo en creación de firma"
+#~ msgid "incomplete grouped hexadecimal value"
+#~ msgstr "valor hexadecimal agrupado incompleto"
 
-#: src/lib/crypto.c:966
-msgid "Signature decoding failed"
-msgstr "Fallo en decodificación de firma"
+#~ msgid "incorrect character class specification"
+#~ msgstr "incorrecta especificación de clase de caracteres"
 
-#: src/lib/crypto.c:1043
-msgid "Unsupported cipher type specified\n"
-msgstr "Tipo de cifrado especificados no soportado\n"
+#~ msgid "invalid expansion configuration"
+#~ msgstr "configuración de expansión inválido"
 
-#: src/lib/crypto.c:1192
-msgid "CryptoData decoding failed"
-msgstr "decodificación CryptoData fallida"
+#~ msgid "out of memory"
+#~ msgstr "sin memoria"
 
-#: src/lib/crypto.c:1236
-msgid "Failure decrypting the session key"
-msgstr "Error al descifrar la clave de sesión"
+#~ msgid "incomplete variable specification"
+#~ msgstr "especificación de la variable incompleta"
 
-#: src/lib/crypto.c:1287
-#, c-format
-msgid "Unsupported contentEncryptionAlgorithm: %d\n"
-msgstr "ContentEncryptionAlgorithm no soportado: %d\n"
+#~ msgid "undefined variable"
+#~ msgstr "variable no definida"
 
-#: src/lib/crypto.c:1297 src/lib/crypto.c:1303
-msgid "OpenSSL cipher context initialization failed"
-msgstr "Fallo al inicializar contexto cipher OpenSSl"
+#~ msgid "input is neither text nor variable"
+#~ msgstr "de entrada no es ni texto ni variable"
 
-#: src/lib/crypto.c:1310
-msgid "Encryption session provided an invalid symmetric key"
-msgstr "Cifrado de sesión suministro una clave simétrica inválida"
+#~ msgid "unknown command character in variable"
+#~ msgstr "carácter de comando desconocido en la variable"
 
-#: src/lib/crypto.c:1316
-msgid "Encryption session provided an invalid IV"
-msgstr "Cifrado de sesión suministro una IV inválida"
+#~ msgid "malformatted search and replace operation"
+#~ msgstr "mal-formada operación de búsqueda y reemplazo"
 
-#: src/lib/crypto.c:1322
-msgid "OpenSSL cipher context key/IV initialization failed"
-msgstr "Fallido inicialización de contexto OpenSSL de cifrado de clave/IV "
+#~ msgid "unknown flag in search and replace operation"
+#~ msgstr "bandera desconocida en operación de búsqueda y reemplazo"
 
-#: src/lib/crypto.c:1392
-#, c-format
-msgid "Unable to init OpenSSL threading: ERR=%s\n"
-msgstr "No se puede inicializar hilo OpenSSL: ERR=%s\n"
+#~ msgid "invalid regex in search and replace operation"
+#~ msgstr "regex no válida en operación de búsqueda y reemplazo"
 
-#: src/lib/crypto.c:1405
-msgid "Failed to seed OpenSSL PRNG\n"
-msgstr "Fallo al seed OpenSSL PRNG\n"
+#~ msgid "missing parameter in command"
+#~ msgstr "faltan parámetros en el comando"
 
-#: src/lib/crypto.c:1431
-msgid "Failed to save OpenSSL PRNG\n"
-msgstr "Fallo al guardar OpenSSL PRNG\n"
+#~ msgid "empty search string in search and replace operation"
+#~ msgstr "palabra de búsqueda vacía en operación de búsqueda y reemplazo"
 
-#: src/lib/crypto.c:1492
-#, c-format
-msgid "Unsupported digest type=%d specified\n"
-msgstr "Incompatible resume tipo=%d especificado\n"
+#~ msgid "start offset missing in cut operation"
+#~ msgstr "inicio offset ausente en operación de corte"
 
-#: src/lib/crypto.c:1512
-#, c-format
-msgid "SHA1Update() returned an error: %d\n"
-msgstr "SHA1Update() retorno un error: %d\n"
+#~ msgid "offsets in cut operation delimited by unknown character"
+#~ msgstr "offset en operación de corte delimitado por carácter desconocido"
 
-#: src/lib/crypto.c:1655
-msgid "No error"
-msgstr "Ningún error"
+#~ msgid "range out of bounds in cut operation"
+#~ msgstr "rango fuera de límites en operaciones de corte"
 
-#: src/lib/crypto.c:1657
-msgid "Signer not found"
-msgstr "Firmante no encontrado"
+#~ msgid "offset out of bounds in cut operation"
+#~ msgstr "desplazamiento fuera de límites en operaciones de corte"
 
-#: src/lib/crypto.c:1659
-msgid "Recipient not found"
-msgstr "Recipiente no encontrado"
+#~ msgid "logic error in cut operation"
+#~ msgstr "error lógico en la operación de corte"
 
-#: src/lib/crypto.c:1661
-msgid "Unsupported digest algorithm"
-msgstr "Algoritmo de resumen no soportado"
+#~ msgid "malformatted transpose operation"
+#~ msgstr "malformación en operación de transposición"
 
-#: src/lib/crypto.c:1663
-msgid "Unsupported encryption algorithm"
-msgstr "Algoritmo de cifrado no soportado"
+#~ msgid "source and target class mismatch in transpose operation"
+#~ msgstr ""
+#~ "clase de origen y de destino desajustada en operación de transposición"
 
-#: src/lib/crypto.c:1665
-msgid "Signature is invalid"
-msgstr "La firma no es válida"
+#~ msgid "empty character class in transpose operation"
+#~ msgstr "clase de caracteres vacía en operación de transposición"
 
-#: src/lib/crypto.c:1667
-msgid "Decryption error"
-msgstr "Error de Descifrado"
+#~ msgid "incorrect character class in transpose operation"
+#~ msgstr "clase de caracteres incorrectos en la operación adaptación"
 
-#: src/lib/crypto.c:1670
-msgid "Internal error"
-msgstr "Error interno"
+#~ msgid "malformatted padding operation"
+#~ msgstr "malformación en operación de relleno"
 
-#: src/lib/crypto.c:1672
-msgid "Unknown error"
-msgstr "Error desconocido"
+#~ msgid "width parameter missing in padding operation"
+#~ msgstr "parámetro de anchura ausente en la operación de relleno"
 
-#: src/lib/cram-md5.c:109 src/lib/cram-md5.c:137
-msgid "1999 Authorization failed.\n"
-msgstr "1999 Fallo de Autorización.\n"
+#~ msgid "fill string missing in padding operation"
+#~ msgstr "cadena de llenado ausente en la operación de relleno"
 
-#: src/lib/priv.c:68
-#, c-format
-msgid "Could not find userid=%s: ERR=%s\n"
-msgstr "No se pudo encontrar userid=%s: ERR=%s\n"
+#~ msgid "unknown quoted pair in search and replace operation"
+#~ msgstr "par de citado desconocido en operación de búsqueda y reemplazo"
 
-#: src/lib/priv.c:74
-#, c-format
-msgid "Could not find password entry. ERR=%s\n"
-msgstr "No se pudo encontrar contraseña de entrada. ERR=%s\n"
+#~ msgid "sub-matching reference out of range"
+#~ msgstr "referencia de sub-coincidente fuera de rango"
 
-#: src/lib/priv.c:87
-#, c-format
-msgid "Could not find group=%s: ERR=%s\n"
-msgstr "No se pudo encontrar grupo=%s: ERR=%s\n"
+#~ msgid "invalid argument"
+#~ msgstr "argumento invalido"
 
-#: src/lib/priv.c:95
-#, c-format
-msgid "Could not initgroups for group=%s, userid=%s: ERR=%s\n"
-msgstr "Podría no initgroups para grupo=%s, userid=%s: ERR=%s\n"
+#~ msgid "incomplete quoted pair"
+#~ msgstr "par de la cita incompleta"
 
-#: src/lib/priv.c:98
-#, c-format
-msgid "Could not initgroups for userid=%s: ERR=%s\n"
-msgstr "Podría no initgroups para userid=%s: ERR=%s\n"
+#~ msgid "lookup function does not support variable arrays"
+#~ msgstr "función de búsqueda no soporta conjuntos de variables"
 
-#: src/lib/priv.c:105
-#, c-format
-msgid "Could not set group=%s: ERR=%s\n"
-msgstr "No se pudo establecer grupo=%s: ERR=%s\n"
+#~ msgid "index of array variable contains an invalid character"
+#~ msgstr "índice de la variable de matriz contiene un carácter inválido"
 
-#: src/lib/priv.c:115
-#, c-format
-msgid "prctl failed: ERR=%s\n"
-msgstr "prctl fallido: ERR=%s\n"
+#~ msgid "index of array variable is incomplete"
+#~ msgstr "índice de la variable de matriz está incompleta"
 
-#: src/lib/priv.c:119
-#, c-format
-msgid "setreuid failed: ERR=%s\n"
-msgstr "setreuid fallido: ERR=%s\n"
+#~ msgid "bracket expression in array variable's index not closed"
+#~ msgstr "expresión de corchetes en el índice variable de matriz no cerrado"
 
-#: src/lib/priv.c:123
-#, c-format
-msgid "cap_from_text failed: ERR=%s\n"
-msgstr "cap_from_text fallido: ERR=%s\n"
+#~ msgid "division by zero error in index specification"
+#~ msgstr "Error de división por cero en especificación del índice"
 
-#: src/lib/priv.c:127
-#, c-format
-msgid "cap_set_proc failed: ERR=%s\n"
-msgstr "cap_set_proc fallido: ERR=%s\n"
+#~ msgid "unterminated loop construct"
+#~ msgstr "no terminado la construcción de bucle"
 
-#: src/lib/priv.c:131
-msgid "Keep readall caps not implemented this OS or missing libraries.\n"
-msgstr "seguir readall caps no implementado en este SO o faltan bibliotecas.\n"
+#~ msgid "invalid character in loop limits"
+#~ msgstr "carácter no válido en el bucle de límites"
 
-#: src/lib/priv.c:135
-#, c-format
-msgid "Could not set specified userid: %s\n"
-msgstr "No se pudo establecer userid especificado: %s\n"
+#~ msgid "malformed operation argument list"
+#~ msgstr "lista de argumentos de operación mal formada "
 
-#: src/lib/openssl.c:143 src/lib/openssl.c:214
-#, c-format
-msgid "Unable to destroy mutex: ERR=%s\n"
-msgstr "No se puede destruir mutex: ERR=%s\n"
+#~ msgid "undefined operation"
+#~ msgstr "operación no definida"
 
-#: src/lib/util.c:183
-msgid "Running"
-msgstr "Ejecutando"
+#~ msgid "formatting failure"
+#~ msgstr "Error de formato"
 
-#: src/lib/util.c:186
-msgid "Blocked"
-msgstr "Bloqueado"
+#~ msgid "unknown error"
+#~ msgstr "error desconocido"
 
-#: src/lib/util.c:192
-msgid "Error: incomplete job"
-msgstr ""
+#~ msgid "Unable to initialize watchdog lock. ERR=%s\n"
+#~ msgstr "No se puede inicializar bloqueo de vigilancia. ERR=%s\n"
 
-#: src/lib/util.c:199
-msgid "Non-fatal error"
-msgstr "No Fatal Error"
+#~ msgid "BUG! register_watchdog called before start_watchdog\n"
+#~ msgstr "BUG! register_watchdog llamado antes de start_watchdog\n"
 
-#: src/lib/util.c:205 src/lib/util.c:337
-msgid "Canceled"
-msgstr "Cancelado"
+#~ msgid "BUG! Watchdog %p has NULL callback\n"
+#~ msgstr "BUG! Watchdog %p tiene llamada NULL\n"
 
-#: src/lib/util.c:208
-msgid "Verify differences"
-msgstr "Verificar diferencias"
+#~ msgid "BUG! Watchdog %p has zero interval\n"
+#~ msgstr "BUG! Watchdog %p tiene intervalo cero \n"
 
-#: src/lib/util.c:211
-msgid "Waiting on FD"
-msgstr "Esperando al FD"
+#~ msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
+#~ msgstr "ERROR! unregister_watchdog_unlocked llamado antes start_watchdog\n"
 
-#: src/lib/util.c:214
-msgid "Wait on SD"
-msgstr "Espere al SD"
+#~ msgid "rwl_writelock failure. ERR=%s\n"
+#~ msgstr "rwl_writelock failure. ERR=%s\n"
 
-#: src/lib/util.c:217
-msgid "Wait for new Volume"
-msgstr "Espere por un nuevo Volumen"
+#~ msgid "rwl_writeunlock failure. ERR=%s\n"
+#~ msgstr "rwl_writeunlock failure. ERR=%s\n"
 
-#: src/lib/util.c:220
-msgid "Waiting for mount"
-msgstr "Esperando por montaje"
+#~ 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/lib/util.c:223
-msgid "Waiting for Storage resource"
-msgstr "Esperando al recurso Storage"
+#~ msgid "No volumes specified for reading. Job %s canceled.\n"
+#~ msgstr "No se especifica el volumen de lectura. Job %s cancelado.\n"
 
-#: src/lib/util.c:226
-msgid "Waiting for Job resource"
-msgstr "Esperando al recurso Job"
+#~ 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/lib/util.c:229
-msgid "Waiting for Client resource"
-msgstr "Esperando al recurso Cliente"
+#, fuzzy
+#~ msgid ""
+#~ "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
+#~ "  %s device=%s\n"
+#~ msgstr ""
+#~ "Cambiando dispositivo de lectura. Media Type=\"%s\" tiene=\"%s\"\n"
+#~ " dispositivo=%s\n"
 
-#: src/lib/util.c:232
-msgid "Waiting on Max Jobs"
-msgstr "Esperando el máximo Jobs"
+#, fuzzy
+#~ msgid "Media Type change.  New read %s device %s chosen.\n"
+#~ msgstr "Cambio Media Type. Nuevo dispositivo de lectura %s elegido.\n"
 
-#: src/lib/util.c:235
-msgid "Waiting for Start Time"
-msgstr "Esperando a Hora de Inicio"
+#~ msgid "No suitable device found to read Volume \"%s\"\n"
+#~ msgstr "No encuentra dispositivo adecuado para leer Volumen \"%s\"\n"
 
-#: src/lib/util.c:238
-msgid "Waiting on Priority"
-msgstr "Esperando por prioridad"
+#~ msgid "Job %s canceled.\n"
+#~ msgstr "Job %s cancelado.\n"
 
-#: src/lib/util.c:257
-#, c-format
-msgid "Unknown Job termination status=%d"
-msgstr "Estado de terminación de Job desconocido=%d"
+#, fuzzy
+#~ msgid "Read open %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Fallo al leer dispositivo %s abierto, Volumen \"%s\": ERR=%s\n"
 
-#: src/lib/util.c:273
-msgid "Completed successfully"
-msgstr "Se ha completado con éxito"
+#, fuzzy
+#~ msgid "Too many errors trying to mount %s device %s for reading.\n"
+#~ msgstr ""
+#~ "Demasiados errores tratando de montar el dispositivo %s para la lectura.\n"
 
-#: src/lib/util.c:276
-msgid "Completed with warnings"
-msgstr "Completado con advertencias"
+#, fuzzy
+#~ msgid "Ready to read from volume \"%s\" on %s device %s.\n"
+#~ msgstr "Listo para leer desde volumen \"%s\" en el dispositivo %s.\n"
 
-#: src/lib/util.c:279
-msgid "Terminated with errors"
-msgstr "Terminado con errores"
+#, fuzzy
+#~ msgid "Could not ready %s device %s for append.\n"
+#~ msgstr "Dispositivo %s puede no está listo para anexar.\n"
 
-#: src/lib/util.c:282
-msgid "Fatal error"
-msgstr "Error fatal"
+#~ 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/lib/util.c:285
-msgid "Created, not yet running"
-msgstr "Creado, aún no se ejecuta"
+#~ msgid "Alert: %s"
+#~ msgstr "Alerta: %s"
 
-#: src/lib/util.c:288
-msgid "Canceled by user"
-msgstr "Cancelada por el usuario"
+#~ msgid "3997 Bad alert command: %s: ERR=%s.\n"
+#~ msgstr "3997 Malo comando alerta: %s: ERR=%s.\n"
 
-#: src/lib/util.c:291
-msgid "Verify found differences"
-msgstr "Verificar diferencias encontradas"
+#~ msgid "Read error on device %s in ANSI label. ERR=%s\n"
+#~ msgstr "Error de lectura en el dispositivo %s en la etiqueta ANSI. ERR=%s\n"
 
-#: src/lib/util.c:294
-msgid "Waiting for File daemon"
-msgstr "Esperando por demonio  File"
+#~ msgid "Insane! End of tape while reading ANSI label.\n"
+#~ msgstr "Insano! Fin de la cinta mientras leía la etiqueta ANSI.\n"
 
-#: src/lib/util.c:297
-msgid "Waiting for Storage daemon"
-msgstr "Esperando por demonio  Storage"
+#~ msgid "No VOL1 label while reading ANSI/IBM label.\n"
+#~ msgstr "Ninguna etiqueta VOL1 al leer etiqueta ANSI/IBM.\n"
 
-#: src/lib/util.c:300
-msgid "Waiting for higher priority jobs"
-msgstr "Esperando por trabajos de mayor prioridad"
+#~ msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
+#~ msgstr "Buscando volumen ANSI \"%s\" obtuvo \"%s\"\n"
 
-#: src/lib/util.c:303
-msgid "Batch inserting file records"
-msgstr "Insertando registros de archivo en lote"
+#~ msgid "No HDR1 label while reading ANSI label.\n"
+#~ msgstr "Ninguna etiqueta HDR1 al leer etiqueta ANSI.\n"
 
-#: src/lib/util.c:334
-msgid "Fatal Error"
-msgstr "Error Fatal"
+#~ msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
+#~ msgstr "Volumen \"%s\" ANSI/IBM, no pertenece a Bacula.\n"
 
-#: src/lib/util.c:340
-msgid "Differences"
-msgstr "Diferencias"
+#~ msgid "No HDR2 label while reading ANSI/IBM label.\n"
+#~ msgstr "Ninguna etiqueta HDR2 al leer etiqueta ANSI/IBM.\n"
 
-#: src/lib/util.c:343
-msgid "Unknown term code"
-msgstr "Código del término desconocido"
+#~ msgid "Unknown or bad ANSI/IBM label record.\n"
+#~ msgstr "Registro de etiqueta ANSI/IBM desconocido o malo.\n"
 
-#: src/lib/util.c:359 src/lib/jcr.c:232
-msgid "Backup"
-msgstr "Backup"
+#~ msgid "Too many records in while reading ANSI/IBM label.\n"
+#~ msgstr "Demasiados registros mientras leía etiqueta ANSI/IBM.\n"
 
-#: src/lib/util.c:362
-msgid "Migrated Job"
-msgstr "Jod de Migración"
+#~ msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
+#~ msgstr "Nombre de etiqueta de Volumen ANSI \"%s\" más de 6 caracteres.\n"
 
-#: src/lib/util.c:365
-msgid "Verify"
-msgstr "Verificar"
+#, fuzzy
+#~ msgid "Could not write ANSI VOL1 label. Wanted size=%d got=%d ERR=%s\n"
+#~ msgstr "No ha podido escribir etiqueta ANSI VOL1. ERR=%s\n"
 
-#: src/lib/util.c:368 src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:2000
-msgid "Restore"
-msgstr "Restaurar"
+#~ msgid "Could not write ANSI HDR1 label. ERR=%s\n"
+#~ msgstr "No ha podido escribir etiqueta ANSI HDR1. ERR=%s\n"
 
-#: src/lib/util.c:371 src/wx-console/wxbmainframe.cpp:276
-msgid "Console"
-msgstr "Consola"
+#~ msgid "Could not write ANSI HDR1 label.\n"
+#~ msgstr "No se puede escribir la etiqueta ANSI HDR1.\n"
 
-#: src/lib/util.c:374
-msgid "System or Console"
-msgstr "Sistema o Consola"
+#~ msgid "Error writing EOF to tape. ERR=%s"
+#~ msgstr "Error al escribir EOF a la cinta. ERR=%s"
 
-#: src/lib/util.c:377
-msgid "Admin"
-msgstr "Admin"
+#~ msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
+#~ msgstr "write_ansi_ibm_label llamado para tipo non-ANSI/IBM\n"
 
-#: src/lib/util.c:380 src/lib/util.c:470
-msgid "Archive"
-msgstr "Archivo"
+#~ msgid "DCR is NULL!!!\n"
+#~ msgstr "DCR es NULL!!!\n"
 
-#: src/lib/util.c:383
-msgid "Job Copy"
-msgstr "Job de Copia"
+#~ msgid "DEVICE is NULL!!!\n"
+#~ msgstr "DEVICE es NULL!!!\n"
 
-#: src/lib/util.c:386
-msgid "Copy"
-msgstr "Copiar"
+#~ msgid "Unable to set network buffer size.\n"
+#~ msgstr "No se puede establecer el tamaño del búfer de red.\n"
 
-#: src/lib/util.c:389
-msgid "Migrate"
-msgstr "Migrar"
+#~ msgid "NULL Volume name. This shouldn't happen!!!\n"
+#~ msgstr "Nombre de volumen VACÍO. Esto no debería suceder!\n"
 
-#: src/lib/util.c:392
-msgid "Scan"
-msgstr "Escanear"
+#~ msgid "Write session label failed. ERR=%s\n"
+#~ msgstr "Fallo al escribir la etiqueta de sesión. ERR=%s\n"
 
-#: src/lib/util.c:396
-msgid "Unknown Type"
-msgstr "Tipo Desconocido"
+#~ msgid "Network send error to FD. ERR=%s\n"
+#~ msgstr "Error de red al enviar a FD. ERR=%s\n"
 
-#: src/lib/util.c:406
-msgid "Truncate"
-msgstr "Truncar"
+#, fuzzy
+#~ msgid "Error reading data header from FD. n=%d msglen=%d ERR=%s\n"
+#~ msgstr "Error al leer datos de cabecera de FD. ERR=%s\n"
 
-#: src/lib/util.c:409 src/filed/restore.c:1164
-msgid "None"
-msgstr "Ninguno"
+#~ msgid "Malformed data header from FD: %s\n"
+#~ msgstr "Datos de cabecera mal formados desde FD: %s\n"
 
-#: src/lib/util.c:441
-msgid "Verify Init Catalog"
-msgstr "Verificar Catálogo Inicial"
+#, fuzzy
+#~ msgid "FI=%d from FD not positive or last_FI=%d\n"
+#~ msgstr "Archivo de índice de FD no es positivo o secuencial\n"
 
-#: src/lib/util.c:450
-msgid "Verify Data"
-msgstr "Verificar Datos"
+#~ msgid "Network error reading from FD. ERR=%s\n"
+#~ msgstr "Error al leer la red desde FD. ERR=%s\n"
 
-#: src/lib/util.c:453
-msgid "Virtual Full"
-msgstr "Virtual completa"
+#~ msgid "Error writing end session label. ERR=%s\n"
+#~ msgstr "Error escribiendo etiqueta de fin de sesión. ERR=%s\n"
 
-#: src/lib/util.c:469
-msgid "Append"
-msgstr "Añadir"
+#~ msgid "Fatal append error on device %s: ERR=%s\n"
+#~ msgstr "Error Fatal añadiendo en el dispositivo %s: ERR=%s\n"
 
-#: src/lib/util.c:471
-msgid "Disabled"
-msgstr "Inhabilitado"
+#~ msgid "Set ok=FALSE after write_block_to_device.\n"
+#~ msgstr "Set ok=FALSE después de write_block_to_device.\n"
 
-#: src/lib/util.c:473
-msgid "Used"
-msgstr "Usado"
+#, fuzzy
+#~ 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/lib/util.c:474
-msgid "Cleaning"
-msgstr "Limpieza"
+#~ msgid "Error updating file attributes. ERR=%s\n"
+#~ msgstr "Error al actualizar los atributos de archivo. ERR=%s\n"
 
-#: src/lib/util.c:475
-msgid "Purged"
-msgstr "Purga"
+#~ msgid "Network error on bnet_recv in req_vol_info.\n"
+#~ msgstr "Error de red en bnet_recv en req_vol_info.\n"
 
-#: src/lib/util.c:476
-msgid "Recycle"
-msgstr "Reciclar"
-
-#: src/lib/util.c:477
-msgid "Read-Only"
-msgstr "Sólo-Lectura"
-
-#: src/lib/util.c:489
-msgid "Invalid volume status"
-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:1180
-msgid "*none*"
-msgstr "*ninguno*"
+#~ msgid "Error getting Volume info: %s"
+#~ msgstr "Error al obtener Volumen información: %s"
 
-#: src/lib/util.c:867
-msgid "Working directory not defined. Cannot continue.\n"
-msgstr "Directorio de trabajo no definido. No se puede continuar.\n"
+#~ msgid "Didn't get vol info vol=%s: ERR=%s"
+#~ msgstr "no recibió información de volumen vol=%s: ERR=%s"
 
-#: src/lib/util.c:870
-#, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
-msgstr "Directorio de Trabajo: \"%s\" no encontrado. No se puede continuar.\n"
+#~ msgid "Error creating JobMedia record: ERR=%s\n"
+#~ msgstr "Error al crear registro JobMedia: ERR=%s\n"
 
-#: src/lib/util.c:874
-#, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
-msgstr ""
-"Directorio de Trabajo: \"%s\" no es un directorio. No se puede continuar.\n"
+#~ msgid "Error creating JobMedia record: %s\n"
+#~ msgstr "Error al crear registro JobMedia: %s\n"
 
-#: src/lib/save/devlock.c:330 src/lib/devlock.c:330
-#, fuzzy
-msgid "writeunlock called too many times.\n"
-msgstr "rwl_writeunlock llamado muchas veces.\n"
+#~ 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/lib/save/devlock.c:335 src/lib/devlock.c:335
 #, fuzzy
-msgid "writeunlock by non-owner.\n"
-msgstr "rwl_writeunlock por no-propietario.\n"
+#~ msgid ""
+#~ "Job %s is waiting. Cannot find any appendable volumes.\n"
+#~ "Please use the \"label\" command to create a new Volume for:\n"
+#~ "    Storage:      %s\n"
+#~ "    Pool:         %s\n"
+#~ "    Media type:   %s\n"
+#~ msgstr ""
+#~ "Job %s en espera. No se puede encontrar ningún volumen grabable.\n"
+#~ "Por favor utilice el comando \"label\" para crear un nuevo Volumen para:\n"
+#~ "Storage: %s\n"
+#~ "Pool: %s\n"
+#~ "Tipo de Media: %s\n"
 
-#: 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"
+#~ 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/lib/tls.c:90
-#, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
-msgstr ""
-"Error con el certificado en profundidad: %d, emisor=%s, asunto=%s, ERR=%d:"
-"%s\n"
+#~ msgid "pthread error in mount_next_volume.\n"
+#~ msgstr "pthread error en mount_next_volume.\n"
 
-#: src/lib/tls.c:127
-msgid "Error initializing SSL context"
-msgstr "Error inicializando contexto SSL"
+#~ msgid "Cannot request another volume: no volume name given.\n"
+#~ msgstr "No puede solicitar otro volumen: nombre de volumen no entregado.\n"
 
-#: src/lib/tls.c:148
-msgid "Error loading certificate verification stores"
-msgstr "Error al cargar los almacenes de verificación del certificado"
+#~ 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/lib/tls.c:153
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
-msgstr ""
-"Un certificado de archivo o un directorio debe especificarse como un "
-"almacenes de verificación\n"
+#, fuzzy
+#~ msgid ""
+#~ "%sPlease 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 ""
+#~ "Por favor, montar Volumen \"%s\" o etiquete uno nuevo para :\n"
+#~ " Job: %s\n"
+#~ " Storage: %s\n"
+#~ " Pool: %s\n"
+#~ " Media type: %s\n"
 
-#: src/lib/tls.c:164
-msgid "Error loading certificate file"
-msgstr "Error cargando archivos de certificados"
+#, fuzzy
+#~ msgid ""
+#~ "%sPlease mount read Volume \"%s\" for:\n"
+#~ "    Job:          %s\n"
+#~ "    Storage:      %s\n"
+#~ "    Pool:         %s\n"
+#~ "    Media type:   %s\n"
+#~ msgstr ""
+#~ "Por favor, montar el volumen \"%s\" for:\n"
+#~ " Job: %s\n"
+#~ " Storage: %s\n"
+#~ " Pool: %s\n"
+#~ " Media type: %s\n"
 
-#: src/lib/tls.c:172
-msgid "Error loading private key"
-msgstr "Error cargando llaves privadas"
+#~ msgid "pthread error in mount_volume\n"
+#~ msgstr "pthread error en mount_volume\n"
 
-#: src/lib/tls.c:180
-msgid "Unable to open DH parameters file"
-msgstr "No se puede abrir el archivo de parámetros de DH"
+#~ msgid "I only authenticate Directors, not %d\n"
+#~ msgstr "Solo autentico Directores, no %d\n"
 
-#: src/lib/tls.c:186
-msgid "Unable to load DH parameters from specified file"
-msgstr ""
-"No es posible cargar los parámetros de DH desde el archivo especificado"
+#~ msgid "Bad Hello command from Director at %s. Len=%d.\n"
+#~ msgstr "Malo comando Hello desde Director en %s. Len=%d\n"
 
-#: src/lib/tls.c:190
-msgid "Failed to set TLS Diffie-Hellman parameters"
-msgstr "No se pudo establecer parámetros TLS de Diffie-Hellman"
+#, fuzzy
+#~ msgid ""
+#~ "Connection from unknown Director %s at %s rejected.\n"
+#~ "Please see "
+#~ msgstr "Conexión desde Director %s desconocido  en %s rechazada.\n"
 
-#: src/lib/tls.c:200
-msgid "Error setting cipher list, no valid ciphers available\n"
-msgstr ""
-"Error configurando lista de cipher, no hay ciphers válidos disponibles\n"
+#, fuzzy
+#~ msgid ""
+#~ "Incorrect password given by Director.\n"
+#~ "Please see "
+#~ msgstr "Contraseña incorrecta dada por el Director en %s.\n"
 
-#: src/lib/tls.c:259
-msgid "Peer failed to present a TLS certificate\n"
-msgstr "Par ha fallado al presentar un certificado TLS\n"
+#~ msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
+#~ msgstr "Fallida la negociación TLS con DIR en \"%s:%d\"\n"
 
-#: src/lib/tls.c:304
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
-msgstr "Par %s ha fallado al presentar un certificado TLS\n"
+#~ msgid "Unable to authenticate Director at %s.\n"
+#~ msgstr "No se puede autenticar Director en %s.\n"
 
-#: src/lib/tls.c:416
-msgid "Error creating file descriptor-based BIO"
-msgstr "Error al crear archivo descriptor basado en BIO"
+#~ msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
+#~ msgstr "Fallida la negociación TLS con FD en \"%s:%d\"\n"
 
-#: src/lib/tls.c:427
-msgid "Error creating new SSL object"
-msgstr "Error creando nuevo objeto SSL"
+#~ msgid "No Changer Name given for device %s. Cannot continue.\n"
+#~ msgstr ""
+#~ "Ningún Nombre Changer obtenido para el dispositivo %s. No se puede "
+#~ "continuar.\n"
 
-#: src/lib/tls.c:491 src/lib/tls.c:514
-msgid "Connect failure"
-msgstr "Fallo al conectar"
+#~ msgid "No Changer Command given for device %s. Cannot continue.\n"
+#~ msgstr ""
+#~ "Ningún Comando Changer obtenido para el dispositivo %s. No se puede "
+#~ "continuar.\n"
 
-#: src/lib/tls.c:594 src/lib/tls.c:598
-msgid "TLS shutdown failure."
-msgstr "Error de apagado TLS."
+#, fuzzy
+#~ 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/lib/tls.c:653 src/lib/tls.c:679
-msgid "TLS read/write failure."
-msgstr "Error de lectura/escritura TLS."
+#~ 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/lib/jcr.c:234
-msgid "Verifying"
-msgstr "Verificando"
+#~ 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/lib/jcr.c:236
-msgid "Restoring"
-msgstr "Restaurando"
+#~ msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
+#~ msgstr ""
+#~ "3304 Emitiendo comando auto-cambiador \"cargar ranura %d, unidad %d\".\n"
 
-#: src/lib/jcr.c:238
-msgid "Archiving"
-msgstr "Archivando"
+#~ 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/lib/jcr.c:240
-msgid "Copying"
-msgstr "Copiando"
+#~ msgid ""
+#~ "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
+#~ "Results=%s\n"
+#~ msgstr ""
+#~ "2992 Malo Auto-cambiador \"carga ranura %d, unidad %d\": ERR=%s.\n"
+#~ "Resultados=%s\n"
 
-#: src/lib/jcr.c:242
-msgid "Migration"
-msgstr "Migración"
+#~ msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
+#~ msgstr "3301 Emitiendo comando auto-cambiador \"¿cargado? unidad %d\".\n"
 
-#: src/lib/jcr.c:244
-msgid "Scanning"
-msgstr "Escaneando"
+#~ 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/lib/jcr.c:246
-msgid "Unknown operation"
-msgstr "Operación desconocida"
+#~ msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
+#~ msgstr ""
+#~ "3302 Auto-cambiador \"¿cargado? unidad %d\", resultado: nada cargado.\n"
 
-#: src/lib/jcr.c:255
-msgid "backup"
-msgstr "backup"
+#~ msgid ""
+#~ "3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
+#~ "Results=%s\n"
+#~ msgstr ""
+#~ "3991 Malo comando auto-cambiador comando \"cargar? unidad %d\": ERR=%s\n"
+#~ "Resultados=%s\n"
 
-#: src/lib/jcr.c:257
-msgid "verified"
-msgstr "verificado"
+#, fuzzy
+#~ msgid "Lock failure on autochanger. ERR=%s\n"
+#~ msgstr "Error bloqueando Mutex. ERR=%s\n"
 
-#: src/lib/jcr.c:257
-msgid "verify"
-msgstr "verificar"
+#, fuzzy
+#~ msgid "Unlock failure on autochanger. ERR=%s\n"
+#~ msgstr "Error desbloqueando Mutex. ERR=%s\n"
 
-#: src/lib/jcr.c:259
-msgid "restored"
-msgstr "restaurado"
+#~ msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
+#~ msgstr ""
+#~ "3307 Emitiendo comando auto-cambiador \"descargar ranura %d, unidad %d\"\n"
 
-#: src/lib/jcr.c:259
-msgid "restore"
-msgstr "restaurar"
+#~ msgid ""
+#~ "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
+#~ "Results=%s\n"
+#~ msgstr ""
+#~ "3995 Malo comando auto-cambiador \"descargar ranura %d, unidad %d\": ERR="
+#~ "%s\n"
+#~ "Resultados=%s\n"
 
-#: src/lib/jcr.c:261
-msgid "archived"
-msgstr "archivado"
+#~ 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/lib/jcr.c:261
-msgid "archive"
-msgstr "archivo"
+#, fuzzy
+#~ 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/lib/jcr.c:263
-msgid "copied"
-msgstr "copiado"
+#~ msgid "3993 Device %s not an autochanger device.\n"
+#~ msgstr "3993 Dispositivo %s no es un dispositivo auto-cargador.\n"
 
-#: src/lib/jcr.c:263
-msgid "copy"
-msgstr "copia"
+#~ msgid "3306 Issuing autochanger \"%s\" command.\n"
+#~ msgstr "3306 Emitiendo comando \"%s\" al auto-cambiador.\n"
 
-#: src/lib/jcr.c:265
-msgid "migrated"
-msgstr "migrado"
+#~ msgid "3996 Open bpipe failed.\n"
+#~ msgstr "3996 Fallo al abrir bpipe.\n"
 
-#: src/lib/jcr.c:265
-msgid "migrate"
-msgstr "migrar"
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
+#~ "       -b bootstrap      specify a bootstrap file\n"
+#~ "       -c <file>         specify a Storage configuration file\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -i                specify input Volume names (separated by |)\n"
+#~ "       -o                specify output Volume names (separated by |)\n"
+#~ "       -p                proceed inspite of errors\n"
+#~ "       -v                verbose\n"
+#~ "       -w <dir>          specify working directory (default /tmp)\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ "\n"
+#~ "Utilice: bcopy [-d nivel_ depuración] <archivo-entrada> <archivo-salida>\n"
+#~ " -b bootstrap especifica un archivo bootstrap\n"
+#~ " -c <archivo> especifica un archivo Storage de configuración\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -i especifica nombres de Volúmenes de entrada (separados por |)\n"
+#~ " -o especifica nombres de Volúmenes de salida (separados por |)\n"
+#~ " -p proceder a pesar de los errores\n"
+#~ "\n"
+#~ " -v detallado\n"
+#~ " -w <dir> especifica directorio de trabajo (por defecto /tmp)\n"
+#~ " -? imprime esta mensaje\n"
+#~ "\n"
 
-#: src/lib/jcr.c:267
-msgid "scanned"
-msgstr "escaneado"
+#~ msgid "Wrong number of arguments: \n"
+#~ msgstr "Incorrecto numero de argumentos: \n"
 
-#: src/lib/jcr.c:267
-msgid "scan"
-msgstr "escanear"
+#~ msgid "dev open failed: %s\n"
+#~ msgstr "Fallo al abrir dev: %s\n"
 
-#: src/lib/jcr.c:269
-msgid "unknown action"
-msgstr "acción desconocida"
+#~ msgid "Write of last block failed.\n"
+#~ msgstr "Fallo al escribir ultimo bloque.\n"
 
-#: src/lib/jcr.c:343
-#, c-format
-msgid "pthread_once failed. ERR=%s\n"
-msgstr "fallo pthread_once. ERR=%s\n"
+#~ msgid "%u Jobs copied. %u records copied.\n"
+#~ msgstr "%u Jobs copiado. %u registros copiados.\n"
 
-#: src/lib/jcr.c:350
-#, c-format
-msgid "Could not init msg_queue mutex. ERR=%s\n"
-msgstr "No se pudo iniciar msg_queue mutex. ERR=%s\n"
+#~ 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/lib/jcr.c:403
-msgid "NULL jcr.\n"
-msgstr "NULL jcr.\n"
+#~ msgid "Volume is prelabeled. This volume cannot be copied.\n"
+#~ msgstr "Volumen esta pre-etiquetado. Este volumen no puede ser copiado.\n"
 
-#: src/lib/jcr.c:509
-#, c-format
-msgid "JCR use_count=%d JobId=%d\n"
-msgstr "JCR use_count=%d JobId=%d\n"
+#~ msgid "Volume label not copied.\n"
+#~ msgstr "Etiqueta Volumen no copiada.\n"
 
-#: src/lib/jcr.c:619
-#, c-format
-msgid "pthread_setspecific failed: ERR=%s\n"
-msgstr "fallo pthread_setspecific: ERR=%s\n"
+#~ msgid "Copy skipped. Record does not match BSR filter.\n"
+#~ msgstr "Copia omitida. Registro no coincide con filtro de BSR.\n"
 
-#: src/lib/jcr.c:1103
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading Storage "
-"daemon.\n"
-msgstr ""
-"Watchdog envío kill después de %d segundos para hilo estancado leyendo "
-"demonio Storage.\n"
+#~ msgid "Cannot fixup device error. %s\n"
+#~ msgstr "No se puede corregir error de dispositivo. %s\n"
 
-#: src/lib/jcr.c:1115
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
-msgstr ""
-"Watchdog envío kill después de %d segundos para hilo estancado leyendo "
-"demonio File.\n"
+#~ msgid "EOM label not copied.\n"
+#~ msgstr "Etiqueta EOM no copiada.\n"
 
-#: src/lib/jcr.c:1127
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading Director.\n"
-msgstr ""
-"Watchdog envío kill después de %d segundos para hilo estancado leyendo "
-"demonio Director.\n"
+#~ msgid "EOT label not copied.\n"
+#~ msgstr "Etiqueta EOT no copiada.\n"
 
-#: src/lib/res.c:65
-#, c-format
-msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
-msgstr "Fallo rwl_writelock en %s:%d: ERR=%s\n"
+#~ msgid "Fresh Volume Label"
+#~ msgstr "Nueva Etiqueta de Volumen"
 
-#: src/lib/res.c:75
-#, c-format
-msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
-msgstr "Fallo \trwl_writeunlock en %s:%d: ERR=%s\n"
+#~ msgid "Volume Label"
+#~ msgstr "Etiqueta de Volumen"
 
-#: src/lib/parse_conf.c:177
-msgid "***UNKNOWN***"
-msgstr "***DESCONOCIDO***"
+#~ msgid "Begin Job Session"
+#~ msgstr "Inicio Job Sesión"
 
-#: src/lib/parse_conf.c:278 src/lib/parse_conf.c:299
-#, c-format
-msgid "expected an =, got: %s"
-msgstr "esperaba un =, obtuvo: %s"
+#~ msgid "End Job Session"
+#~ msgstr "Fin Job Sesión"
 
-#: src/lib/parse_conf.c:308
-#, c-format
-msgid "Unknown item code: %d\n"
-msgstr "Código de ítem desconocido: %d\n"
+#~ msgid "End of Medium"
+#~ msgstr "Fin de Medio"
 
-#: src/lib/parse_conf.c:348
-#, c-format
-msgid "message type: %s not found"
-msgstr "tipo de mensaje: %s no encontrado"
+#~ msgid "Unknown"
+#~ msgstr "Desconocido"
 
-#: src/lib/parse_conf.c:386
-#, c-format
-msgid "Attempt to redefine name \"%s\" to \"%s\"."
-msgstr "Intento de redefinir el nombre \"%s\" para \"%s\"."
+#~ 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/lib/parse_conf.c:483
-#, c-format
-msgid "Attempt to redefine resource \"%s\" referenced on line %d : %s\n"
-msgstr "Intento de redefinir recurso \"%s\" referenciado en la línea %d: %s\n"
+#~ msgid "Mount Volume \"%s\" on device %s and press return when ready: "
+#~ msgstr ""
+#~ "Monte Volumen \"%s\" en el dispositivo %s y presione ENTER cuando esté "
+#~ "preparado:"
 
-#: src/lib/parse_conf.c:519
-#, c-format
-msgid "Too many %s directives. Max. is %d. line %d: %s\n"
-msgstr "Demasiadas directivas %s. Máximo es %d. linea %d: %s\n"
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bextract <options> <bacula-archive-device-name> <directory-to-"
+#~ "store-files>\n"
+#~ "       -b <file>       specify a bootstrap file\n"
+#~ "       -c <file>       specify a Storage configuration file\n"
+#~ "       -d <nn>         set debug level to <nn>\n"
+#~ "       -dt             print timestamp in debug output\n"
+#~ "       -e <file>       exclude list\n"
+#~ "       -i <file>       include list\n"
+#~ "       -p              proceed inspite of I/O errors\n"
+#~ "       -v              verbose\n"
+#~ "       -V <volumes>    specify Volume names (separated by |)\n"
+#~ "       -?              print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ "\n"
+#~ "Utilice: bextract <opciones> <archivo-nombre-de-dispositivo-bacula> "
+#~ "<directorio-para-guardar-archivos>\n"
+#~ " -b <archivo> especifica un archivo bootstrap\n"
+#~ " -c <archivo> especifica un archivo Storage de configuración\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -e <archivo> lista de exclusión\n"
+#~ " -i <archivo> lista de inclusión\n"
+#~ " -p proceder a pesar de los errores de E/S\n"
+#~ " -v detallado\n"
+#~ " -V <volúmenes> especifica nombres de Volúmenes (separados por |)\n"
+#~ " -? imprime esta mensaje\n"
+#~ "\n"
 
-#: src/lib/parse_conf.c:530
-#, c-format
-msgid "Could not find config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-"No pudo encontrar recurso de configuración \"%s\" referenciado en linea %d : "
-"%s\n"
+#~ msgid "Could not open exclude file: %s, ERR=%s\n"
+#~ msgstr "No se pudo abrir archivo excluir: %s, ERR=%s\n"
 
-#: src/lib/parse_conf.c:593
-#, c-format
-msgid "Missing config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-"Falta la configuración de Recurso \"%s\" referenciado en linea %d : %s\n"
+#~ msgid "Could not open include file: %s, ERR=%s\n"
+#~ msgstr "No se pudo abrir archivo incluir: %s, ERR=%s\n"
 
-#: src/lib/parse_conf.c:665
-#, c-format
-msgid "expected a size number, got: %s"
-msgstr "esperaba un numero de tamaño, obtuvo: %s"
+#~ msgid "%d Program Name and/or Program Data Stream records ignored.\n"
+#~ msgstr ""
+#~ "Nombre del Programa %d y/o registros de Datos de Flujo del Programa "
+#~ "ignorado.\n"
 
-#: src/lib/parse_conf.c:670
-#, fuzzy, c-format
-msgid "expected a speed number, got: %s"
-msgstr "esperaba un numero de tamaño, obtuvo: %s"
+#~ msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
+#~ msgstr ""
+#~ "%d registros de flujo de datos Win32 or Win32 datos gzip. Ignorados.\n"
 
-#: src/lib/parse_conf.c:681
-#, fuzzy, c-format
-msgid "expected a %s, got: %s"
-msgstr "esperaba un tamaño, obtuvo: %s"
+#~ msgid "Cannot stat %s. It must exist. ERR=%s\n"
+#~ msgstr "No se puede stat %s. El debe existir. ERR=%s\n"
 
-#: src/lib/parse_conf.c:682
-msgid "size"
-msgstr ""
+#~ msgid "%s must be a directory.\n"
+#~ msgstr "%s debe ser un directorio.\n"
 
-#: src/lib/parse_conf.c:682
-msgid "speed"
-msgstr ""
+#~ msgid "%u files restored.\n"
+#~ msgstr "%u archivos restaurados.\n"
 
-#: src/lib/parse_conf.c:803
-#, c-format
-msgid "Expected a Tape Label keyword, got: %s"
-msgstr "esperaba una etiqueta Tape Label , obtuvo: %s"
+#~ msgid "Write error on %s: %s\n"
+#~ msgstr "Error de escritura en %s: %s\n"
 
-#: src/lib/parse_conf.c:886
-#, c-format
-msgid "Unable to initialize resource lock. ERR=%s\n"
-msgstr "No se puede inicializar recurso de bloqueo. ERR=%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/lib/parse_conf.c:894
-msgid "Config filename too long.\n"
-msgstr "Nombre de archivo de configuración muy largo.\n"
+#~ msgid "Cannot continue.\n"
+#~ msgstr "No se puede continuar.\n"
 
-#: src/lib/parse_conf.c:917
-#, c-format
-msgid "Cannot open config file \"%s\": %s\n"
-msgstr "No se pudo abrir archivo de configuración \"%s\": %s\n"
+#~ msgid "%s was deleted.\n"
+#~ msgstr "%s se ha eliminado.\n"
 
-#: src/lib/parse_conf.c:934
-msgid ""
-"Currently we cannot handle UTF-16 source files. Please convert the conf file "
-"to UTF-8\n"
-msgstr ""
-"Actualmente no podemos manejar archivos de origen UTF-16 . Por favor, "
-"convierta el archivo de configuración a UTF-8\n"
+#~ msgid "Seek error on %s: %s\n"
+#~ msgstr "Buscar error en %s: %s\n"
 
-#: src/lib/parse_conf.c:938
-#, c-format
-msgid "Expected a Resource name identifier, got: %s"
-msgstr "esperaba un nombre de identificación de Recurso, obtuvo: %s"
+#~ msgid "Uncompression error. ERR=%d\n"
+#~ msgstr "Error de descompresión. ERR=%d\n"
 
-#: src/lib/parse_conf.c:954
-#, c-format
-msgid "expected resource name, got: %s"
-msgstr "esperaba un nombre de recurso, obtuvo: %s"
+#, fuzzy
+#~ msgid "LZO uncompression error. ERR=%d\n"
+#~ msgstr "Error de descompresión. ERR=%d\n"
 
-#: src/lib/parse_conf.c:965
-#, c-format
-msgid "not in resource definition: %s"
-msgstr "no en la definición de recurso: %s"
+#~ msgid "Got Program Name or Data Stream. Ignored.\n"
+#~ msgstr "Obtener Nombre de Programa o Secuencia de Datos. Ignorado.\n"
 
-#: src/lib/parse_conf.c:990
-#, c-format
-msgid ""
-"Keyword \"%s\" not permitted in this resource.\n"
-"Perhaps you left the trailing brace off of the previous resource."
-msgstr ""
-"Palabra clave \"%s\" no permitida en este recurso.\n"
-"Tal vez a la izquierda de la llave de los recursos anteriores."
+#, fuzzy
+#~ msgid "Cannot write block. Device at EOM. dev=%s\n"
+#~ msgstr "No se pudo escribir bloque. Dispositivo en EOM.\n"
 
-#: src/lib/parse_conf.c:1001
-msgid "Name not specified for resource"
-msgstr "Nombre no especificado para el recurso"
+#, fuzzy
+#~ msgid "Attempt to write on read-only Volume. dev=%s\n"
+#~ msgstr "Intento de escritura en volumen de sólo lectura.\n"
 
-#: src/lib/parse_conf.c:1011
-#, c-format
-msgid "unexpected token %d %s in resource definition"
-msgstr "símbolo %d no soporte %s en la definición de los recursos"
+#, fuzzy
+#~ msgid "Attempt to write on closed device=%s\n"
+#~ msgstr "Intento de escritura en volumen de sólo lectura.\n"
 
-#: src/lib/parse_conf.c:1017
-#, c-format
-msgid "Unknown parser state %d\n"
-msgstr "Estado del Analizador %d desconocido\n"
+#~ msgid "Unable to write EOF. ERR=%s\n"
+#~ msgstr "No se pudo escribir EOF. ERR=%s\n"
 
-#: src/lib/parse_conf.c:1022
-msgid "End of conf file reached with unclosed resource."
-msgstr "Fin de archivo de configuración alcanzado con recursos sin cerrar."
+#~ msgid "Write block header zeroed.\n"
+#~ msgstr "Escribir cabecera de bloque cero.\n"
 
-#: src/lib/mem_pool.c:112
-#, c-format
-msgid "MemPool index %d larger than max %d\n"
-msgstr "MemPool índice %d mayor que máximo %d\n"
+#~ 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/lib/mem_pool.c:130 src/lib/mem_pool.c:150 src/lib/mem_pool.c:186
-#: src/lib/mem_pool.c:257 src/lib/mem_pool.c:277 src/lib/mem_pool.c:312
-#: src/lib/mem_pool.c:623
-#, c-format
-msgid "Out of memory requesting %d bytes\n"
-msgstr "Fuera de memoria solicitando %d bytes\n"
+#~ 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/lib/mem_pool.c:167
-msgid "obuf is NULL\n"
-msgstr "obuf es NULL\n"
+#, fuzzy
+#~ msgid "Job failed or canceled.\n"
+#~ msgstr "Job %d cancelado.\n"
 
-#: src/lib/berrno.c:63
-msgid "Child exited normally."
-msgstr "Hijo salió normalmente."
+#, fuzzy
+#~ msgid "Attempt to read past end of tape or file.\n"
+#~ msgstr "Intento de leer sesión no abierta.\n"
 
-#: src/lib/berrno.c:70
-msgid "Unknown error during program execvp"
-msgstr "Error desconocido durante el programa execvp"
+#, fuzzy
+#~ 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/lib/berrno.c:73
-#, c-format
-msgid "Child exited with code %d"
-msgstr "Hijo salió con el código %d"
+#~ 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/lib/berrno.c:81
-#, c-format
-msgid "Child died from signal %d: %s"
-msgstr "Niño muerto con la señal %d: %s"
+#~ 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/lib/berrno.c:87
-msgid "Invalid errno. No error message possible."
-msgstr "Invalido errorno. Imposible mensaje de error."
+#, fuzzy
+#~ msgid "Read zero bytes Vol=%s at %lld on device %s.\n"
+#~ msgstr "Leer cero bytes en %u:%u en el dispositivo %s.\n"
 
-#: src/lib/bnet.c:134
-#, c-format
-msgid "Attr spool write error. ERR=%s\n"
-msgstr "Error de escritura en cola de atributo. ERR=%s\n"
+#~ msgid ""
+#~ "Volume data error at %u:%u! Very short block of %d bytes on device %s "
+#~ "discarded.\n"
+#~ msgstr ""
+#~ "Error datos de volumen en  %u:%u! Bloque muy corto de %d bytes en "
+#~ "dispositivo %s descartado.\n"
 
-#: src/lib/bnet.c:279 src/lib/bnet.c:320
-msgid "TLS connection initialization failed.\n"
-msgstr "Ha fallado la conexión de inicialización TLS.\n"
+#~ 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/lib/bnet.c:287
-msgid "TLS Negotiation failed.\n"
-msgstr "Negociación TLS fallida.\n"
+#~ msgid "Setting block buffer size to %u bytes.\n"
+#~ msgstr "Configurando tamaño del bufer del bloque para %u bytes.\n"
 
-#: src/lib/bnet.c:293 src/lib/bnet.c:335
-msgid ""
-"TLS certificate verification failed. Peer certificate did not match a "
-"required commonName\n"
-msgstr ""
-"Comprobación de certificados TLS fallido. Certificado equivalente no "
-"corresponde con el commonName requerido\n"
+#~ msgid ""
+#~ "Volume data error at %u:%u! Short block of %d bytes on device %s "
+#~ "discarded.\n"
+#~ msgstr ""
+#~ "Error datos de volumen en  %u:%u! Bloque corto de %d bytes en dispositivo "
+#~ "%s descartado.\n"
 
-#: src/lib/bnet.c:342
-#, c-format
-msgid ""
-"TLS host certificate verification failed. Host name \"%s\" did not match "
-"presented certificate\n"
-msgstr ""
-"Fallo en verificación en certificado TLS de la maquina. Nombre de la maquina "
-"\"%s\" no coincide con el certificado presentado\n"
+#, fuzzy
+#~ msgid ""
+#~ "Dump block %s %p: size=%d BlkNum=%d\n"
+#~ "               Hdrcksum=%x cksum=%x\n"
+#~ msgstr ""
+#~ "Volcado de bloque %s %x: tamaño=%d BlkNum=%d\n"
+#~ " Hdrcksum=%x cksum=%x\n"
 
-#: src/lib/bnet.c:359
-msgid "TLS enabled but not configured.\n"
-msgstr "TLS activado, pero no configurado.\n"
+#, fuzzy
+#~ msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d reclen=%d\n"
+#~ msgstr "Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
 
-#: src/lib/bnet.c:365
-msgid "TLS enable but not configured.\n"
-msgstr "TLS permitido, pero no configurado.\n"
+#~ msgid "%d block read errors not printed.\n"
+#~ msgstr "%d errores de lectura de bloques no impresos.\n"
 
-#: src/lib/bnet.c:481
-msgid "No problem."
-msgstr "No hay problema."
+#~ msgid ""
+#~ "Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
+#~ "discarded.\n"
+#~ msgstr ""
+#~ "Error de volumen de datos en %u:%u! Se busca ID: \"%s\",se obtiene \"%s"
+#~ "\". Buffer descartado.\n"
 
-#: src/lib/bnet.c:484
-msgid "Authoritative answer for host not found."
-msgstr "Respuesta autoritativa para el host no encontrado."
+#~ msgid ""
+#~ "Volume data error at %u:%u! Block length %u is insane (too large), "
+#~ "probably due to a bad archive.\n"
+#~ 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/lib/bnet.c:487
-msgid "Non-authoritative for host not found, or ServerFail."
-msgstr "Non-autoritativa para la maquina no encontrada, o ServerFail."
+#~ msgid ""
+#~ "Volume data error at %u:%u!\n"
+#~ "Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
+#~ msgstr ""
+#~ "Error de datos de Volumen en %u:%u!\n"
+#~ "Bloque checksum desajustado en bloque=%u len=%d: calc=%x blk=%x\n"
 
-#: src/lib/bnet.c:490
-msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
-msgstr "Errores no recuperables, FORMERR, RECHAZADO o NOTIMP."
+#, fuzzy
+#~ msgid ""
+#~ "User defined maximum volume size %s will be exceeded on device %s.\n"
+#~ "   Marking Volume \"%s\" as Full.\n"
+#~ msgstr ""
+#~ "Capacidad máxima %s de volumen definido por el usuario superado en el "
+#~ "dispositivo %s.\n"
 
-#: 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."
+#~ msgid "Backspace file at EOT failed. ERR=%s\n"
+#~ msgstr "Fallo en retroceso de archivo desde EOT. ERR=%s\n"
 
-#: src/lib/bnet.c:496
-msgid "Unknown error."
-msgstr "Error desconocido."
+#~ msgid "Backspace record at EOT failed. ERR=%s\n"
+#~ msgstr "Fallo en retroceso de registro desde EOT. ERR=%s\n"
 
-#: src/lib/bnet.c:755
-#, c-format
-msgid "Unknown sig %d"
-msgstr "Sig desconocido %d"
+#~ msgid "Re-read last block at EOT failed. ERR=%s"
+#~ msgstr "Fallo en re-lectura del último bloque en EOT. ERR=%s"
 
-#: src/lib/signal.c:67
-msgid "Invalid signal number"
-msgstr "Número de la señal no válida"
+#~ 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 ""
+#~ "Re-lectura del último bloque: número de bloque difieren en más de uno.\n"
+#~ "Probable mala configuración de la cinta y pérdida de datos. Leer bloque="
+#~ "%u Espera bloque=%u.\n"
 
-#: 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"
+#~ msgid ""
+#~ "Re-read of last block OK, but block numbers differ. Read block=%u Want "
+#~ "block=%u.\n"
+#~ msgstr ""
+#~ "Re-lectura del último bloque OK, pero número de bloque difieren. Leer "
+#~ "bloque=%u Espera bloque=%u.\n"
 
-#: 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"
+#~ msgid "Re-read of last block succeeded.\n"
+#~ msgstr "Éxito en re-lectura del último bloque.\n"
 
-#: src/lib/signal.c:169
-#, c-format
-msgid "Kaboom! exepath=%s\n"
-msgstr "Kaboom! exepath=%s\n"
+#~ msgid ""
+#~ "Error writing final EOF to tape. This Volume may not be readable.\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Error al escribir EOF final a la cinta. Este volumen puede no ser "
+#~ "legible.\n"
+#~ "%s"
 
-#: src/lib/signal.c:210
-#, c-format
-msgid "Fork error: ERR=%s\n"
-msgstr "Fork error: ERR=%s\n"
+#, fuzzy
+#~ msgid "Error sending Volume info to Director.\n"
+#~ msgstr "Error al obtener Volumen información: %s"
 
-#: src/lib/signal.c:218
-#, c-format
-msgid "Calling: %s %s %s %s\n"
-msgstr "Llamando: %s %s %s %s\n"
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bls [options] <device-name>\n"
+#~ "       -b <file>       specify a bootstrap file\n"
+#~ "       -c <file>       specify a Storage configuration file\n"
+#~ "       -d <nn>         set debug level to <nn>\n"
+#~ "       -dt             print timestamp in debug output\n"
+#~ "       -e <file>       exclude list\n"
+#~ "       -i <file>       include list\n"
+#~ "       -j              list jobs\n"
+#~ "       -k              list blocks\n"
+#~ "    (no j or k option) list saved files\n"
+#~ "       -L              dump label\n"
+#~ "       -p              proceed inspite of errors\n"
+#~ "       -v              be verbose\n"
+#~ "       -V              specify Volume names (separated by |)\n"
+#~ "       -?              print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ "\n"
+#~ "Utilice: bls [opciones] <nombre-dispositivo>\n"
+#~ " -b <archivo> especifica un archivo bootstrap\n"
+#~ " -c <archivo> especifica un archivo Storage de configuración\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -e <archivo> lista de exclusión\n"
+#~ " -i <file> lista de inclusión\n"
+#~ " -j lista de trabajos\n"
+#~ " -k lista de bloques\n"
+#~ " (no j o k opción) lista de archivos guardados\n"
+#~ " -L dump label\n"
+#~ " -p proceder a pesar de los errores\n"
+#~ " -v detallado\n"
+#~ " -V especifica nombres de  Volumen (separados por |)\n"
+#~ " -? imprime esta mensaje\n"
+#~ "\n"
 
-#: src/lib/signal.c:222
-#, c-format
-msgid "execv: %s failed: ERR=%s\n"
-msgstr "execv: %s ha fallado: ERR=%s\n"
+#~ msgid "No archive name specified\n"
+#~ msgstr "Nombre de archivo no especificado\n"
 
-#: src/lib/signal.c:244
-#, fuzzy, c-format
-msgid "It looks like the traceback worked...\n"
-msgstr "Parece que el rastreo trabaja ...\n"
+#~ msgid ""
+#~ "\n"
+#~ "Warning, this Volume is a continuation of Volume %s\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Advertencia, este Volumen es una continuación del Volumen %s\n"
 
-#: src/lib/signal.c:246
-#, c-format
-msgid "The btraceback call returned %d\n"
-msgstr ""
+#~ msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
+#~ msgstr "Obtuvo EOM en archivo %u en el dispositivo %s, Volumen \"%s\"\n"
 
-#: 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"
+#~ msgid "Mounted Volume \"%s\".\n"
+#~ msgstr "Volumen Montado \"%s\".\n"
 
-#: src/lib/signal.c:312
-msgid "UNKNOWN SIGNAL"
-msgstr "SEÑAL DESCONOCIDA"
+#~ msgid "End of file %u on device %s, Volume \"%s\"\n"
+#~ msgstr "Fin de archivo %u en el dispositivo %s, Volumen \"%s\"\n"
 
-#: src/lib/signal.c:313
-msgid "Hangup"
-msgstr "Colgar"
+#~ msgid ""
+#~ "File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u "
+#~ "Strm=%s rlen=%d\n"
+#~ msgstr ""
+#~ "Archivo:blk=%u:%u blk_num=%u blen=%u Primer registro FI=%s SessId=%u "
+#~ "SessTim=%u Strm=%s rlen=%d\n"
 
-#: src/lib/signal.c:314
-msgid "Interrupt"
-msgstr "Interrumpir"
+#~ msgid "Block: %d size=%d\n"
+#~ msgstr "Bloque: %d tamaño=%d\n"
 
-#: src/lib/signal.c:315
-msgid "Quit"
-msgstr "Salir"
+#~ 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/lib/signal.c:316
-msgid "Illegal instruction"
-msgstr "Instrucción ilegal"
+#, fuzzy
+#~ msgid "End of Physical Medium"
+#~ msgstr "Fin de Medio"
 
-#: src/lib/signal.c:317
-msgid "Trace/Breakpoint trap"
-msgstr "Trace/Trampa de Punto de Interrupción"
+#, fuzzy
+#~ msgid "End of object"
+#~ msgstr "Fin de la Cinta"
 
-#: src/lib/signal.c:318
-msgid "Abort"
-msgstr "Anular"
-
-#: src/lib/signal.c:320
-msgid "EMT instruction (Emulation Trap)"
-msgstr "Instrucción EMT (Emulación de Trampa)"
-
-#: src/lib/signal.c:323
-msgid "IOT trap"
-msgstr "trampa IOT"
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bscan [ options ] <bacula-archive>\n"
+#~ "       -b bootstrap      specify a bootstrap file\n"
+#~ "       -c <file>         specify configuration file\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -m                update media info in database\n"
+#~ "       -D <driver name>  specify the driver database name (default NULL)\n"
+#~ "       -n <name>         specify the database name (default bacula)\n"
+#~ "       -u <user>         specify database user name (default bacula)\n"
+#~ "       -P <password>     specify database password (default none)\n"
+#~ "       -h <host>         specify database host (default NULL)\n"
+#~ "       -t <port>         specify database port (default 0)\n"
+#~ "       -p                proceed inspite of I/O errors\n"
+#~ "       -r                list records\n"
+#~ "       -s                synchronize or store in database\n"
+#~ "       -S                show scan progress periodically\n"
+#~ "       -v                verbose\n"
+#~ "       -V <Volumes>      specify Volume names (separated by |)\n"
+#~ "       -w <dir>          specify working directory (default from conf "
+#~ "file)\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ "\n"
+#~ "Utilice: bscan [opciones] <archivo-bacula>\n"
+#~ " -b <archivo> especifica un archivo bootstrap\n"
+#~ " -c <archivo> especifica un archivo de configuración\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -m Actualiza información de los medios en la base de datos\n"
+#~ " -D <nombre del driver> especifica el nombre del driver de base de datos "
+#~ "(por defecto NULL)\n"
+#~ " -n <nombre> especifica el nombre de la base de datos (por defecto "
+#~ "bacula)\n"
+#~ " -u <usuario> especifica el nombre de usuario de la base de datos (por "
+#~ "defecto bacula)\n"
+#~ " -P <contraseña> especifica la contraseña de la base de datos (por "
+#~ "defecto none)\n"
+#~ " -h <servidor> especifica servidor de la base de datos (por defecto "
+#~ "NULL)\n"
+#~ " -t <puerto> especifica el puerto de la base de datos (por defecto 0)\n"
+#~ " -p proceder a pesar de los errores\n"
+#~ " -r lista de registros\n"
+
+#~ msgid "No Working Directory defined in %s. Cannot continue.\n"
+#~ msgstr "Directorio de Trabajo no definido en %s. No se puede continuar.\n"
+
+#~ msgid "Working Directory: %s not found. Cannot continue.\n"
+#~ msgstr "Directorio de Trabajo: %s no encontrado. No se puede continuar.\n"
+
+#~ msgid "Working Directory: %s is not a directory. Cannot continue.\n"
+#~ msgstr ""
+#~ "Directorio de Trabajo: %s no es un directorio. No se puede continuar.\n"
 
-#: src/lib/signal.c:325
-msgid "BUS error"
-msgstr "BUS error"
+#~ msgid "First Volume Size = %s\n"
+#~ msgstr "Tamaño Primero Volumen = %s\n"
 
-#: src/lib/signal.c:326
-msgid "Floating-point exception"
-msgstr "Excepción de punto flotante"
+#~ msgid "Could not init Bacula database\n"
+#~ msgstr "No se pudo iniciar base de datos de Bacula\n"
 
-#: src/lib/signal.c:327
-msgid "Kill, unblockable"
-msgstr "Matar, imbloqueable"
+#~ msgid "Using Database: %s, User: %s\n"
+#~ msgstr "Usando Base de Datos: %s, Usuario: %s\n"
 
-#: src/lib/signal.c:328
-msgid "User-defined signal 1"
-msgstr "Señal 1 definida por el usuario"
+#~ msgid "Create JobMedia for Job %s\n"
+#~ msgstr "Crear JobMedia para Job %s\n"
 
-#: src/lib/signal.c:329
-msgid "Segmentation violation"
-msgstr "Violación de segmento"
+#~ msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
+#~ msgstr "No es posible crear registro JobMedia para Volumen=%s Job=%s\n"
 
-#: src/lib/signal.c:330
-msgid "User-defined signal 2"
-msgstr "Señal definida por el usuario 2"
+#~ msgid "done: %d%%\n"
+#~ msgstr "Hecho: %d%%\n"
 
-#: src/lib/signal.c:331
-msgid "Broken pipe"
-msgstr "Tuberí­a rota"
+#~ msgid "Volume is prelabeled. This tape cannot be scanned.\n"
+#~ msgstr "El volumen esta prelabeled. Esta cinta no puede ser escaneada. \n"
 
-#: src/lib/signal.c:332
-msgid "Alarm clock"
-msgstr "Alarma"
+#~ msgid "Pool record for %s found in DB.\n"
+#~ msgstr "Registro Pool para %s encontrado en BD.\n"
 
-#: src/lib/signal.c:333
-msgid "Termination"
-msgstr "Terminación"
+#~ msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
+#~ msgstr "VOL_LABEL: Registro Pool no encontrado para Pool: %s\n"
 
-#: src/lib/signal.c:335
-msgid "Stack fault"
-msgstr "Error de pila"
+#~ msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
+#~ msgstr "VOL_LABEL: PoolType desajustado. BD=%s Vol=%s\n"
 
-#: src/lib/signal.c:337
-msgid "Child status has changed"
-msgstr "El estado de hijo ha cambiado"
+#~ msgid "Pool type \"%s\" is OK.\n"
+#~ msgstr "Tipo de Pool \"%s\" esta OK.\n"
 
-#: src/lib/signal.c:338
-msgid "Continue"
-msgstr "Continue"
+#~ msgid "Media record for %s found in DB.\n"
+#~ msgstr "Registro Media para %s encontrado en BD.\n"
 
-#: src/lib/signal.c:339
-msgid "Stop, unblockable"
-msgstr "Detener, imbloqueable"
+#~ msgid "VOL_LABEL: Media record not found for Volume: %s\n"
+#~ msgstr "VOL_LABEL: Registro Media no encontrado para Volumen: %s\n"
 
-#: src/lib/signal.c:340
-msgid "Keyboard stop"
-msgstr "Teclado detenido"
+#~ msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
+#~ msgstr "VOL_LABEL: MediaType desajustada. BD=%s Vol=%s\n"
 
-#: src/lib/signal.c:341
-msgid "Background read from tty"
-msgstr "Leer en segundo plan desde tty"
+#~ msgid "Media type \"%s\" is OK.\n"
+#~ msgstr "Tipo de Media \"%s\" esta OK.\n"
 
-#: src/lib/signal.c:342
-msgid "Background write to tty"
-msgstr "Escribir en segundo plan al tty"
+#~ msgid "VOL_LABEL: OK for Volume: %s\n"
+#~ msgstr "VOL_LABEL: OK para Volumen: %s\n"
 
-#: src/lib/signal.c:343
-msgid "Urgent condition on socket"
-msgstr "Condición de urgencia en el socket"
+#~ msgid "%d \"errors\" ignored before first Start of Session record.\n"
+#~ msgstr ""
+#~ "%d \"errores\" ignorados antes del primero registro de Inicio de Sesión.\n"
 
-#: src/lib/signal.c:344
-msgid "CPU limit exceeded"
-msgstr "Limite de CPU superado"
+#~ msgid "SOS_LABEL: Found Job record for JobId: %d\n"
+#~ msgstr "SOS_LABEL: Encontrado registro Job para JobId: %d\n"
 
-#: src/lib/signal.c:345
-msgid "File size limit exceeded"
-msgstr "Superado el límite de tamaño de archivo"
+#~ msgid "SOS_LABEL: Job record not found for JobId: %d\n"
+#~ msgstr "SOS_LABEL: Registro Job no encontrado para JobId: %d\n"
 
-#: src/lib/signal.c:346
-msgid "Virtual alarm clock"
-msgstr "Despertador virtual"
+#~ msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
+#~ msgstr "SOS_LABEL: VolSessId desajustado para JobId=%u. BD=%d Vol=%d\n"
 
-#: src/lib/signal.c:347
-msgid "Profiling alarm clock"
-msgstr "Perfiles de alarma"
+#~ msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
+#~ msgstr "SOS_LABEL: VolSessTime desajustado para JobId=%u. BD=%d Vol=%d\n"
 
-#: src/lib/signal.c:348
-msgid "Window size change"
-msgstr "Cambiar el tamaño de la ventana"
+#~ 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/lib/signal.c:349
-msgid "I/O now possible"
-msgstr "I/O posible ahora"
+#~ 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"
 
-#: src/lib/signal.c:351
-msgid "Power failure restart"
-msgstr "Fallo reiniciar energía"
+#~ msgid "Could not update job record. ERR=%s\n"
+#~ msgstr "No se pudo actualizar el registro de trabajo. ERR=%s\n"
 
-#: src/lib/signal.c:354
-msgid "No runnable lwp"
-msgstr "LWP no ejecutable"
+#~ msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
+#~ msgstr ""
+#~ "Final de todos los volúmenes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
 
-#: 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"
+#~ msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
+#~ msgstr "No se pudo encontrar registro trabajo para SessId=%d SessTime=%d.\n"
 
-#: src/lib/signal.c:360
-msgid "Checkpoint Freeze"
-msgstr "Checkpoint de Congelación"
+#~ msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
+#~ msgstr "%s registros de archivo. En el archivo:blk=%s:%s bytes=%s\n"
 
-#: src/lib/signal.c:363
-msgid "Checkpoint Thaw"
-msgstr "Checkpoint de Thaw"
+#~ msgid "Got MD5 record: %s\n"
+#~ msgstr "Obtuvo registro MD5: %s\n"
 
-#: src/lib/signal.c:366
-msgid "Thread Cancellation"
-msgstr "Cancelación de Hilo"
+#~ msgid "Got SHA1 record: %s\n"
+#~ msgstr "Obtuvo registro SHA1: %s\n"
 
-#: src/lib/signal.c:369
-msgid "Resource Lost (e.g. record-lock lost)"
-msgstr "Recurso Perdido (por ejemplo, registro de bloqueo perdido)"
+#~ msgid "Got SHA256 record: %s\n"
+#~ msgstr "Obtuvo registro SHA256: %s\n"
 
-#: 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"
+#~ msgid "Got SHA512 record: %s\n"
+#~ msgstr "Obtuvo registro SHA512: %s\n"
 
-#: 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"
+#~ msgid "Got signed digest record\n"
+#~ msgstr "Obtuvo registro resume firmado: %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"
+#~ msgid "Got Prog Names Stream: %s\n"
+#~ msgstr "Obtuvo Stream Nombres de Programas: %s\n"
 
-#: 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"
+#~ msgid "Got Prog Data Stream record.\n"
+#~ msgstr "Obtuvo Registro Stream Datos de Programas: %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"
+#~ msgid "Unknown stream type!!! stream=%d len=%i\n"
+#~ msgstr "Tipo de flujo desconocido!!! stream=%d len=%i\n"
 
-#: src/lib/bsys.c:357
-msgid "Buffer overflow.\n"
-msgstr "Desbordamiento de búfer.\n"
+#~ 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/lib/bsys.c:423
-msgid "Bad errno"
-msgstr "Malo errno"
+#~ msgid "Created File record: %s\n"
+#~ msgstr "Registro Archivo creado: %s\n"
 
-#: 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"
+#~ msgid "Could not create media record. ERR=%s\n"
+#~ msgstr "No es posible crear registro media. ERR=%s\n"
 
-#: 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"
+#~ msgid "Could not update media record. ERR=%s\n"
+#~ msgstr "No es posible actualizar registro media. ERR=%s\n"
 
-#: src/lib/bsys.c:483
-#, c-format
-msgid ""
-"%s is already running. pid=%d\n"
-"Check file %s\n"
-msgstr ""
-"%s ya está en ejecución. pid=%d\n"
-"Compruebe el archivo %s\n"
+#~ msgid "Created Media record for Volume: %s\n"
+#~ msgstr "Creado Registro Media para Volumen: %s\n"
 
-#: 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"
+#~ msgid "Updated Media record at end of Volume: %s\n"
+#~ msgstr "Actualizado el registro Media al final del Volumen: %s\n"
 
-#: 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"
+#~ msgid "Could not create pool record. ERR=%s\n"
+#~ msgstr "No es posible crear el registro Pool. ERR=%s\n"
 
-#: src/lib/bsys.c:627
-#, c-format
-msgid "Write final hdr error: ERR=%s\n"
-msgstr "Error de escritura HDR final: ERR=%s\n"
+#~ msgid "Created Pool record for Pool: %s\n"
+#~ msgstr "Creado el registro Pool para Pool: %s\n"
 
-#: src/lib/runscript.c:236
-#, c-format
-msgid "%s: run %s \"%s\"\n"
-msgstr "%s: ejecutar %s \"%s\"\n"
+#~ msgid "Could not get Client record. ERR=%s\n"
+#~ msgstr "No se ha podido obtener el registro del cliente. ERR=%s\n"
 
-#: src/lib/runscript.c:245
-#, c-format
-msgid "Runscript: %s could not execute. ERR=%s\n"
-msgstr "Runscript: No pudo ejecutar %s. ERR=%s\n"
+#~ msgid "Created Client record for Client: %s\n"
+#~ msgstr "Creado registro Cliente para Cliente: %s\n"
 
-#: src/lib/runscript.c:254
-#, c-format
-msgid "%s: %s\n"
-msgstr "%s: %s\n"
+#~ msgid "Fileset \"%s\" already exists.\n"
+#~ msgstr "Fileset \"%s\" ya existe.\n"
 
-#: src/lib/runscript.c:259
-#, c-format
-msgid "Runscript: %s returned non-zero status=%d. ERR=%s\n"
-msgstr "Runscript: %s devolvió estado=%d distinto de cero. ERR=%s\n"
+#~ msgid "Could not create FileSet record \"%s\". ERR=%s\n"
+#~ msgstr "No es posible crear registro FileSet \"%s\". ERR=%s\n"
 
-#: src/lib/lex.c:91 src/wx-console/console_thread.cpp:212
-#, c-format
-msgid "Problem probably begins at line %d.\n"
-msgstr "Probablemente comienza el problema en la línea %d\n"
+#~ msgid "Created FileSet record \"%s\"\n"
+#~ msgstr "Creado registro FileSet \"%s\"\n"
 
-#: src/lib/lex.c:96 src/wx-console/console_thread.cpp:217
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-"Error de configuración: %s\n"
-" : línea %d, columna %d en el archivo %s\n"
-"%s\n"
-"%s"
+#~ msgid "Could not create JobId record. ERR=%s\n"
+#~ msgstr "No es posible crear registro JobId. ERR=%s\n"
 
-#: src/lib/lex.c:100
-#, c-format
-msgid "Config error: %s\n"
-msgstr "Error de configuración: %s\n"
+#~ msgid "Could not update job start record. ERR=%s\n"
+#~ msgstr "No se pudo actualizar el registro job de inicio. ERR=%s\n"
 
-#: src/lib/lex.c:129
-msgid "Close of NULL file\n"
-msgstr "Cierre de archivo NULL\n"
+#~ msgid "Created new JobId=%u record for original JobId=%u\n"
+#~ msgstr "Creado nuevo registro JobId=%u para JobId=%u original\n"
 
-#: 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 ""
-"get_char: llamado después de EOF. Usted puede tener una comilla doble "
-"abierta sin el cierre de comillas dobles.\n"
+#~ msgid "Could not update JobId=%u record. ERR=%s\n"
+#~ msgstr "No se puede actualizar registro JobId=%u. ERR=%s\n"
 
-#: 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"
+#~ 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/lib/lex.c:292
-msgid "none"
-msgstr "ninguno"
+#~ msgid "Job Termination code: %d"
+#~ msgstr "Código de Terminación del Job: %d"
 
-#: src/lib/lex.c:293
-msgid "comment"
-msgstr "comentario"
+#~ msgid ""
+#~ "%s\n"
+#~ "JobId:                  %d\n"
+#~ "Job:                    %s\n"
+#~ "FileSet:                %s\n"
+#~ "Backup Level:           %s\n"
+#~ "Client:                 %s\n"
+#~ "Start time:             %s\n"
+#~ "End time:               %s\n"
+#~ "Files Written:          %s\n"
+#~ "Bytes Written:          %s\n"
+#~ "Volume Session Id:      %d\n"
+#~ "Volume Session Time:    %d\n"
+#~ "Last Volume Bytes:      %s\n"
+#~ "Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s\n"
+#~ "JobId: %d\n"
+#~ "Job: %s\n"
+#~ "FileSet: %s\n"
+#~ "Nivel de Respaldo: %s\n"
+#~ "Cliente: %s\n"
+#~ "Hora de Inicio: %s\n"
+#~ "Hora de Finalización: %s\n"
+#~ "Archivos Escritos: %s\n"
+#~ "Bytes Escritos: %s\n"
+#~ "Id Volumen Sesión: %d\n"
+#~ "Tiempo de la Sesión del Volumen: %d\n"
+#~ "Últimos Bytes del Volumen: %s\n"
+#~ "Terminación: %s\n"
+#~ "\n"
 
-#: src/lib/lex.c:294
-msgid "number"
-msgstr "numero"
+#~ msgid "Could not create JobMedia record. ERR=%s\n"
+#~ msgstr "No es posible crear registro JobMedia. ERR=%s\n"
 
-#: src/lib/lex.c:295
-msgid "ip_addr"
-msgstr "ip_addr"
+#~ msgid "Created JobMedia record JobId %d, MediaId %d\n"
+#~ msgstr "Creado registro JobMedia JobID %d, MediaID %d\n"
 
-#: src/lib/lex.c:296
-msgid "identifier"
-msgstr "identificar"
+#~ 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/lib/lex.c:297
-msgid "string"
-msgstr "cadena"
+#~ 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/lib/lex.c:298
-msgid "quoted_string"
-msgstr "quoted_string"
+#~ msgid "Updated MD5/SHA1 record\n"
+#~ msgstr "Actualizado registro MD5/SHA1\n"
 
-#: src/lib/lex.c:299
-msgid "include"
-msgstr "incluir"
+#~ msgid "Tape block size (%d) not multiple of system size (%d)\n"
+#~ msgstr ""
+#~ "Tamaño de bloque de cinta (%d) no es múltiplo del tamaño de sistema "
+#~ "(% d)\n"
 
-#: src/lib/lex.c:300
-msgid "include_quoted_string"
-msgstr "include_quoted_string"
+#~ msgid "Tape block size (%d) is not a power of 2\n"
+#~ msgstr "Tamaño de bloque de cinta (%d) no es una potencia de 2\n"
 
-#: src/lib/lex.c:301
-msgid "UTF-8 Byte Order Mark"
-msgstr "Marca de Orden de UTF-8 Byte"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "!!!! Warning large disk addressing disabled. boffset_t=%d should be 8 or "
+#~ "more !!!!!\n"
+#~ "\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "!!!! Advertencia, deshabilitado direccionamiento de discos largos. "
+#~ "boffset_t=%d debe ser de 8 o más !!!!!\n"
+#~ "\n"
+#~ "\n"
 
-#: src/lib/lex.c:302
-msgid "UTF-16le Byte Order Mark"
-msgstr "Marca de Orden de UTF-16le Byte"
+#~ msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
+#~ msgstr "32 bit printf/scanf problema. i=%d x32=%u y32=%u\n"
 
-#: 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"
+#~ msgid "64 bit printf/scanf problem. i=%d x64=%"
+#~ msgstr "64 bit printf/scanf problema. i=%d x64=%"
 
-#: 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 ""
-"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"
+#~ msgid "Tape block granularity is %d bytes.\n"
+#~ msgstr "Granularidad del bloque de cinta es %d bytes.\n"
 
-#: 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"
+#~ msgid "No archive name specified.\n"
+#~ msgstr "Nombre de archivo no especificado.\n"
 
-#: 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"
+#~ msgid "Improper number of arguments specified.\n"
+#~ msgstr "Número incorrecto de argumentos especificados.\n"
 
-#: 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"
+#~ msgid "btape does not work with DVD storage.\n"
+#~ msgstr "btape no funciona con el almacenamiento de DVD.\n"
 
-#: src/lib/lex.c:783
-#, c-format
-msgid "expected a name, got %s: %s"
-msgstr "esperaba un nombre, obtuvo %s: %s"
+#~ msgid "btape only works with tape storage.\n"
+#~ msgstr "btape sólo funciona con almacenamiento en cinta.\n"
 
-#: 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"
+#~ msgid "Total Volume bytes=%sB. Total Write rate = %sB/s\n"
+#~ msgstr "Volumen total bytes=%sB. Tasa total de Escritura = %sB/s\n"
 
-#: src/lib/lex.c:795
-#, c-format
-msgid "expected a string, got %s: %s"
-msgstr "esperaba una cadena, obtuvo %s: %s"
+#~ msgid "Volume bytes=%sB. Write rate = %sB/s\n"
+#~ msgstr "Volumen bytes=%sB. Tasa de Escritura = %sB/s\n"
 
-#: src/lib/var.c:2669
-msgid "everything ok"
-msgstr "todo bien"
+#~ msgid "open device %s: OK\n"
+#~ msgstr "abrir dispositivo %s: OK\n"
 
-#: src/lib/var.c:2670
-msgid "incomplete named character"
-msgstr "carácter nombrado incompleto"
+#~ msgid "Enter Volume Name: "
+#~ msgstr "Ingrese nombre de Volumen:"
 
-#: src/lib/var.c:2671
-msgid "incomplete hexadecimal value"
-msgstr "valor hexadecimal incompleto"
+#~ msgid "Device open failed. ERR=%s\n"
+#~ msgstr "Fallo al abrir dispositivo. ERR=%s\n"
 
-#: src/lib/var.c:2672
-msgid "invalid hexadecimal value"
-msgstr "valor hexadecimal inválido"
+#~ msgid "Wrote Volume label for volume \"%s\".\n"
+#~ msgstr "Escribe la etiqueta de Volumen para el volumen \"%s\".\n"
 
-#: src/lib/var.c:2673
-msgid "octal value too large"
-msgstr "valor octal demasiado grande"
+#~ msgid "Volume has no label.\n"
+#~ msgstr "Volumen no tiene etiqueta.\n"
 
-#: src/lib/var.c:2674
-msgid "invalid octal value"
-msgstr "valor octal inválido"
+#~ msgid "Volume label read correctly.\n"
+#~ msgstr "Etiqueta de volumen leída correctamente.\n"
 
-#: src/lib/var.c:2675
-msgid "incomplete octal value"
-msgstr "valor octal incompleto"
+#~ msgid "I/O error on device: ERR=%s"
+#~ msgstr "error de E/S en el dispositivo: ERR=%s"
 
-#: src/lib/var.c:2676
-msgid "incomplete grouped hexadecimal value"
-msgstr "valor hexadecimal agrupado incompleto"
+#, fuzzy
+#~ msgid "Volume type error: ERR=%s\n"
+#~ msgstr "Seek error: ERR=%s\n"
 
-#: src/lib/var.c:2677
-msgid "incorrect character class specification"
-msgstr "incorrecta especificación de clase de caracteres"
+#~ msgid "Volume name error\n"
+#~ msgstr "Nombre de Volumen error\n"
 
-#: src/lib/var.c:2678
-msgid "invalid expansion configuration"
-msgstr "configuración de expansión inválido"
+#~ msgid "Error creating label. ERR=%s"
+#~ msgstr "Error creando etiqueta. ERR=%s"
 
-#: src/lib/var.c:2679
-msgid "out of memory"
-msgstr "sin memoria"
+#~ msgid "Volume version error.\n"
+#~ msgstr "Volumen versión error.\n"
 
-#: src/lib/var.c:2680
-msgid "incomplete variable specification"
-msgstr "especificación de la variable incompleta"
+#~ msgid "Bad Volume label type.\n"
+#~ msgstr "Malo tipo de etiqueta de volumen.\n"
 
-#: src/lib/var.c:2681
-msgid "undefined variable"
-msgstr "variable no definida"
+#~ msgid "Unknown error.\n"
+#~ msgstr "Error desconocido.\n"
 
-#: src/lib/var.c:2682
-msgid "input is neither text nor variable"
-msgstr "de entrada no es ni texto ni variable"
+#~ msgid "Bad status from load. ERR=%s\n"
+#~ msgstr "Malo estado de carga. ERR=%s\n"
 
-#: src/lib/var.c:2683
-msgid "unknown command character in variable"
-msgstr "carácter de comando desconocido en la variable"
+#~ msgid "Loaded %s\n"
+#~ msgstr "Cargado %s\n"
 
-#: src/lib/var.c:2684
-msgid "malformatted search and replace operation"
-msgstr "mal-formada operación de búsqueda y reemplazo"
+#~ msgid "Bad status from rewind. ERR=%s\n"
+#~ msgstr "Malo estado de rebobinado. ERR=%s\n"
 
-#: src/lib/var.c:2685
-msgid "unknown flag in search and replace operation"
-msgstr "bandera desconocida en operación de búsqueda y reemplazo"
+#~ msgid "Rewound %s\n"
+#~ msgstr "Rebobinado %s\n"
 
-#: src/lib/var.c:2686
-msgid "invalid regex in search and replace operation"
-msgstr "regex no válida en operación de búsqueda y reemplazo"
+#~ msgid "Bad status from weof. ERR=%s\n"
+#~ msgstr "Malo estado de weof. ERR=%s\n"
 
-#: src/lib/var.c:2687
-msgid "missing parameter in command"
-msgstr "faltan parámetros en el comando"
+#~ msgid "Wrote 1 EOF to %s\n"
+#~ msgstr "Escribir 1 EOF para %s\n"
 
-#: src/lib/var.c:2688
-msgid "empty search string in search and replace operation"
-msgstr "palabra de búsqueda vacía en operación de búsqueda y reemplazo"
+#~ msgid "Wrote %d EOFs to %s\n"
+#~ msgstr "Escribir %d EOFs para %s\n"
 
-#: src/lib/var.c:2689
-msgid "start offset missing in cut operation"
-msgstr "inicio offset ausente en operación de corte"
+#~ msgid "Moved to end of medium.\n"
+#~ msgstr "Movido para el final de la media.\n"
 
-#: src/lib/var.c:2690
-msgid "offsets in cut operation delimited by unknown character"
-msgstr "offset en operación de corte delimitado por carácter desconocido"
+#~ msgid "Bad status from bsf. ERR=%s\n"
+#~ msgstr "Mal estado desde BSF. ERR=%s\n"
 
-#: src/lib/var.c:2691
-msgid "range out of bounds in cut operation"
-msgstr "rango fuera de límites en operaciones de corte"
+#~ msgid "Backspaced %d file%s.\n"
+#~ msgstr "Backspaced %d archivo%s.\n"
 
-#: src/lib/var.c:2692
-msgid "offset out of bounds in cut operation"
-msgstr "desplazamiento fuera de límites en operaciones de corte"
+#~ msgid "Bad status from bsr. ERR=%s\n"
+#~ msgstr "Malo estado de BSR. ERR=%s\n"
 
-#: src/lib/var.c:2693
-msgid "logic error in cut operation"
-msgstr "error lógico en la operación de corte"
+#~ msgid "Backspaced %d record%s.\n"
+#~ msgstr "Backspaced %d registro%s.\n"
 
-#: src/lib/var.c:2694
-msgid "malformatted transpose operation"
-msgstr "malformación en operación de transposición"
+#~ msgid "Configured device capabilities:\n"
+#~ msgstr "Capacidades del dispositivo configuradas:\n"
 
-#: src/lib/var.c:2695
-msgid "source and target class mismatch in transpose operation"
-msgstr "clase de origen y de destino desajustada en operación de transposición"
+#~ msgid "Device status:\n"
+#~ msgstr "Estado del Dispositivo:\n"
 
-#: src/lib/var.c:2696
-msgid "empty character class in transpose operation"
-msgstr "clase de caracteres vacía en operación de transposición"
+#~ msgid "Device parameters:\n"
+#~ msgstr "Parámetros del Dispositivo:\n"
 
-#: src/lib/var.c:2697
-msgid "incorrect character class in transpose operation"
-msgstr "clase de caracteres incorrectos en la operación adaptación"
+#~ msgid "Status:\n"
+#~ msgstr "Estados:\n"
 
-#: src/lib/var.c:2698
-msgid "malformatted padding operation"
-msgstr "malformación en operación de relleno"
+#~ msgid ""
+#~ "Test writing larger and larger records.\n"
+#~ "This is a torture test for records.\n"
+#~ "I am going to write\n"
+#~ "larger and larger records. It will stop when the record size\n"
+#~ "plus the header exceeds the block size (by default about 64K)\n"
+#~ msgstr ""
+#~ "Prueba de escritura de registros cada vez mayores.\n"
+#~ "Esta es una prueba de tortura para los registros.\n"
+#~ "Voy a escribir\n"
+#~ "registros cada vez mayores. Se detendrá cuando el tamaño de registro "
+#~ "además de la cabecera excede el tamaño de bloque (por defecto sobre 64K)\n"
 
-#: src/lib/var.c:2699
-msgid "width parameter missing in padding operation"
-msgstr "parámetro de anchura ausente en la operación de relleno"
+#~ msgid "Do you want to continue? (y/n): "
+#~ msgstr "Desea continuar? (y/n)"
 
-#: src/lib/var.c:2700
-msgid "fill string missing in padding operation"
-msgstr "cadena de llenado ausente en la operación de relleno"
+#~ msgid "Command aborted.\n"
+#~ msgstr "Comando Abortado.\n"
 
-#: src/lib/var.c:2701
-msgid "unknown quoted pair in search and replace operation"
-msgstr "par de citado desconocido en operación de búsqueda y reemplazo"
+#~ msgid "Block %d i=%d\n"
+#~ msgstr "Bloque %d i=%d\n"
 
-#: src/lib/var.c:2702
-msgid "sub-matching reference out of range"
-msgstr "referencia de sub-coincidente fuera de rango"
+#~ msgid "Skipping read backwards test because BSR turned off.\n"
+#~ msgstr ""
+#~ "Saltar prueba de lectura hacia atrás, porque BSR esta desactivado.\n"
 
-#: src/lib/var.c:2703
-msgid "invalid argument"
-msgstr "argumento invalido"
+#~ msgid ""
+#~ "\n"
+#~ "=== Write, backup, and re-read test ===\n"
+#~ "\n"
+#~ "I'm going to write three records and an EOF\n"
+#~ "then backup over the EOF and re-read the last record.\n"
+#~ "Bacula does this after writing the last block on the\n"
+#~ "tape to verify that the block was written correctly.\n"
+#~ "\n"
+#~ "This is not an *essential* feature ...\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "=== Prueba de escritura, copia de seguridad y re-lectura ===\n"
+#~ "\n"
+#~ "Yo voy a escribir 3 registros y un EOF\n"
+#~ "a continuación respaldar sobre el EOF y re-leer el ultimo registro.\n"
+#~ " Bacula hace esto después de escribir el último bloque en la\n"
+#~ "cinta para comprobar que el bloque ha sido escrito correctamente.\n"
+#~ "\n"
+#~ "Esta es una característica *esencial* ...\n"
+#~ "\n"
 
-#: src/lib/var.c:2704
-msgid "incomplete quoted pair"
-msgstr "par de la cita incompleta"
+#~ msgid "Error writing record to block.\n"
+#~ msgstr "Error al escribir registro al bloque.\n"
 
-#: src/lib/var.c:2705
-msgid "lookup function does not support variable arrays"
-msgstr "función de búsqueda no soporta conjuntos de variables"
+#~ msgid "Error writing block to device.\n"
+#~ msgstr "Error al escribir bloque al dispositivo.\n"
 
-#: src/lib/var.c:2706
-msgid "index of array variable contains an invalid character"
-msgstr "índice de la variable de matriz contiene un carácter inválido"
+#~ msgid "Wrote first record of %d bytes.\n"
+#~ msgstr "Escribió primer registro de %d bytes.\n"
 
-#: src/lib/var.c:2707
-msgid "index of array variable is incomplete"
-msgstr "índice de la variable de matriz está incompleta"
+#~ msgid "Wrote second record of %d bytes.\n"
+#~ msgstr "Escribió segundo registro de %d bytes.\n"
 
-#: src/lib/var.c:2708
-msgid "bracket expression in array variable's index not closed"
-msgstr "expresión de corchetes en el índice variable de matriz no cerrado"
+#~ msgid "Wrote third record of %d bytes.\n"
+#~ msgstr "Escribió tercer registro de %d bytes.\n"
 
-#: src/lib/var.c:2709
-msgid "division by zero error in index specification"
-msgstr "Error de división por cero en especificación del índice"
+#~ msgid "Backspace file failed! ERR=%s\n"
+#~ msgstr "Fallo en retroceso de archivo! ERR=%s\n"
 
-#: src/lib/var.c:2710
-msgid "unterminated loop construct"
-msgstr "no terminado la construcción de bucle"
+#~ msgid "Backspaced over EOF OK.\n"
+#~ msgstr "Retroceso sobre EOF OK.\n"
 
-#: src/lib/var.c:2711
-msgid "invalid character in loop limits"
-msgstr "carácter no válido en el bucle de límites"
+#~ msgid "Backspace record failed! ERR=%s\n"
+#~ msgstr "Fallo en retroceso de registro! ERR=%s\n"
 
-#: src/lib/var.c:2712
-msgid "malformed operation argument list"
-msgstr "lista de argumentos de operación mal formada "
+#~ msgid "Backspace record OK.\n"
+#~ msgstr "Retroceso de registro OK.\n"
 
-#: src/lib/var.c:2713
-msgid "undefined operation"
-msgstr "operación no definida"
+#~ msgid "Read block failed! ERR=%s\n"
+#~ msgstr "Lectura de bloque fallida! ERR=%s\n"
 
-#: src/lib/var.c:2714
-msgid "formatting failure"
-msgstr "Error de formato"
+#~ msgid "Bad data in record. Test failed!\n"
+#~ msgstr "Datos erróneos en el registro. Prueba fallida!\n"
 
-#: src/lib/var.c:2723
-msgid "unknown error"
-msgstr "error desconocido"
+#~ msgid ""
+#~ "\n"
+#~ "Block re-read correct. Test succeeded!\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Re-lectura de bloque correcta. Prueba Satisfactoria!\n"
 
-#: src/lib/address_conf.c:62
-#, c-format
-msgid "Only ipv4 and ipv6 are supported (%d)\n"
-msgstr "Solo ipv4 y ipv6 estan soportado (%d)\n"
+#~ msgid ""
+#~ "=== End Write, backup, and re-read test ===\n"
+#~ "\n"
+#~ msgstr ""
+#~ "=== Fin prueba de escritura, copia de seguridad, y re-lectura ===\n"
+#~ "\n"
 
-#: src/lib/address_conf.c:66
-#, c-format
-msgid "Only ipv4 is supported (%d)\n"
-msgstr "Solo ipv4 esta soportado (%d)\n"
+#~ msgid ""
+#~ "This is not terribly serious since Bacula only uses\n"
+#~ "this function to verify the last block written to the\n"
+#~ "tape. Bacula will skip the last block verification\n"
+#~ "if you add:\n"
+#~ "\n"
+#~ "Backward Space Record = No\n"
+#~ "\n"
+#~ "to your Storage daemon's Device resource definition.\n"
+#~ msgstr ""
+#~ "Esto no es terriblemente grave, desde que sólo utilices Bacula\n"
+#~ "esta función para verificar el último bloque por escrito en la\n"
+#~ "cinta. Bacula saltará la verificación del último bloque\n"
+#~ "si usted agrega:\n"
+#~ "\n"
+#~ "Backward Space Record = NO\n"
+#~ "\n"
+#~ " en la definición de los recursos de Dispositivos de su demonio Storage.\n"
 
-#: src/lib/address_conf.c:175
-#, c-format
-msgid "It was tried to assign a ipv6 address to a ipv4(%d)\n"
-msgstr "Se trató de asignar una dirección IPv6 a IPv4(%d)\n"
+#~ 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/lib/address_conf.c:184
-#, c-format
-msgid "It was tried to assign a ipv4 address to a ipv6(%d)\n"
-msgstr "Se trató de asignar una dirección IPv4 a IPv6(%d)\n"
+#~ 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/lib/address_conf.c:263
-#, c-format
-msgid "Can't add default address (%s)\n"
-msgstr "No se puede agregar dirección por defecto (%s)\n"
+#~ 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/lib/address_conf.c:292
-msgid "the old style addresses cannot be mixed with new style"
-msgstr ""
-"el viejo estilo de las direcciones no se pueden mezclar con el nuevo estilo"
+#~ msgid ""
+#~ "\n"
+#~ "Error writing record to block.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Error escribiendo registro al bloque.\n"
 
-#: src/lib/address_conf.c:313
-#, c-format
-msgid "can't resolve service(%s)"
-msgstr "no se puede resolver el servicio(%s)"
+#~ msgid ""
+#~ "\n"
+#~ "Error writing block to device.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Error escribiendo bloque al dispositivo.\n"
 
-#: src/lib/address_conf.c:322
-#, c-format
-msgid "can't resolve hostname(%s) %s"
-msgstr "no se puede resolver el hostname(%s) %s"
+#~ 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/lib/address_conf.c:412 src/lib/address_conf.c:443
-#, c-format
-msgid "Expected a block begin { , got: %s"
-msgstr "Esperaba un inicio de bloque {, obtuvo: %s"
+#~ 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/lib/address_conf.c:417
-msgid "Empty addr block is not allowed"
-msgstr "Bloque de direcciones vacío no está permitido"
+#~ msgid "Test with random data, should give the minimum throughput.\n"
+#~ msgstr "Prueba con datos aleatorios, deben dar el rendimiento mínimo.\n"
 
-#: src/lib/address_conf.c:421
-#, c-format
-msgid "Expected a string, got: %s"
-msgstr "Esperaba una cadena, obtuvo: %s"
+#~ msgid "Test with zero data and bacula block structure.\n"
+#~ msgstr "Prueba con cero de datos y estructura del bloque de Bacula.\n"
 
-#: src/lib/address_conf.c:430
-#, c-format
-msgid "Expected a string [ip|ipv4|ipv6], got: %s"
-msgstr "Espera una cadena [ip|ipv4|ipv6], obtuvo: %s"
+#~ msgid ""
+#~ "\n"
+#~ "=== Write, rewind, and re-read test ===\n"
+#~ "\n"
+#~ "I'm going to write %d records and an EOF\n"
+#~ "then write %d records and an EOF, then rewind,\n"
+#~ "and re-read the data to verify that it is correct.\n"
+#~ "\n"
+#~ "This is an *essential* feature ...\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "=== Probar Escritura, Rebobinado y Re-lectura === \n"
+#~ "\n"
+#~ "Voy a escribir %d registros y un EOF\n"
+#~ "a continuación escribiré %d registros y un EOF, a continuación, "
+#~ "rebobinar,\n"
+#~ "y re-leer los datos para verificar que son correctos.\n"
+#~ "\n"
+#~ "Este es una característica *esencial*...\n"
+#~ "\n"
 
-#: src/lib/address_conf.c:434
-#, c-format
-msgid "Expected a string [ip|ipv4], got: %s"
-msgstr "Espera una cadena [ip|ipv4], obtuvo: %s"
+#~ msgid "Wrote %d blocks of %d bytes.\n"
+#~ msgstr "Escribió %d bloques de %d bytes.\n"
 
-#: src/lib/address_conf.c:439 src/lib/address_conf.c:469
-#, c-format
-msgid "Expected a equal =, got: %s"
-msgstr "Esperaba una igual =, obtuvo: %s"
+#~ msgid "Rewind OK.\n"
+#~ msgstr "Rebobinar OK.\n"
 
-#: src/lib/address_conf.c:450 src/lib/address_conf.c:465
-#, c-format
-msgid "Expected a identifier [addr|port], got: %s"
-msgstr "Esperaba un identificador [addr|port], obtuvo: %s"
+#~ msgid "Got EOF on tape.\n"
+#~ msgstr "Obtuvo EOF en la cinta.\n"
 
-#: src/lib/address_conf.c:455
-msgid "Only one port per address block"
-msgstr "Sólo un puerto por bloque de direcciones"
+#~ msgid "Read block %d failed! ERR=%s\n"
+#~ msgstr "Fallo al leer bloque %d! ERR=%s\n"
 
-#: src/lib/address_conf.c:461
-msgid "Only one addr per address block"
-msgstr "Sólo una dirección por bloque de direcciones"
+#~ msgid "Read record failed. Block %d! ERR=%s\n"
+#~ msgstr "Fallo al leer registro. Bloque %d! ERR =%s\n"
 
-#: src/lib/address_conf.c:477
-#, c-format
-msgid "Expected a number or a string, got: %s"
-msgstr "Esperaba un numero o una cadena , obtuvo: %s"
+#~ 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/lib/address_conf.c:483 src/lib/address_conf.c:516
-#, c-format
-msgid "Expected an IP number or a hostname, got: %s"
-msgstr "Esperaba un numero IP o un hostname, obtuvo: %s"
+#~ msgid "%d blocks re-read correctly.\n"
+#~ msgstr "%d bloques releídos correctamente.\n"
 
-#: src/lib/address_conf.c:489
-msgid "State machine missmatch"
-msgstr "Estado de la máquina desajustado"
+#~ msgid ""
+#~ "=== Test Succeeded. End Write, rewind, and re-read test ===\n"
+#~ "\n"
+#~ msgstr ""
+#~ "=== Prueba Satisfactoria. Fin prueba de Escritura, Rebobinado y Re-"
+#~ "lectura ===\n"
+#~ "\n"
 
-#: src/lib/address_conf.c:495 src/lib/address_conf.c:507
-#, c-format
-msgid "Expected a end of block }, got: %s"
-msgstr "Esperaba un fin de bloque }, obtuvo: %s"
+#~ msgid "Block position test\n"
+#~ msgstr "Prueba de posición del bloque\n"
 
-#: src/lib/address_conf.c:501
-#, c-format
-msgid "Can't add hostname(%s) and port(%s) to addrlist (%s)"
-msgstr ""
-"No se puede agregar el nombre de maquina(%s) y puerto(%s) a addrlist(%s)"
+#~ msgid "Reposition to file:block %d:%d\n"
+#~ msgstr "Reposición para archivo:bloque %d:%d\n"
 
-#: src/lib/address_conf.c:521 src/lib/address_conf.c:535
-#, c-format
-msgid "can't add port (%s) to (%s)"
-msgstr "no puede agregar el puerto (%s) a (%s)"
+#~ msgid "Reposition error.\n"
+#~ msgstr "Error de reposición.\n"
 
-#: src/lib/address_conf.c:530
-#, c-format
-msgid "Expected a port number or string, got: %s"
-msgstr "Esperaba un numero de puerto o cadena, obtuvo: %s"
+#~ msgid ""
+#~ "Read block %d failed! file=%d blk=%d. ERR=%s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Fallo al leer bloque %d! archivo=%d blk=%d. ERR=%s\n"
+#~ "\n"
 
-#: src/lib/edit.c:478
-#, fuzzy
-msgid "Empty name not allowed.\n"
-msgstr "Bloque de direcciones vacío no está permitido"
+#~ msgid ""
+#~ "This may be because the tape drive block size is not\n"
+#~ " set to variable blocking as normally used by Bacula.\n"
+#~ " Please see the Tape Testing chapter in the manual and \n"
+#~ " look for using mt with defblksize and setoptions\n"
+#~ "If your tape drive block size is correct, then perhaps\n"
+#~ " your SCSI driver is *really* stupid and does not\n"
+#~ " correctly report the file:block after a FSF. In this\n"
+#~ " case try setting:\n"
+#~ "    Fast Forward Space File = no\n"
+#~ " in your Device resource.\n"
+#~ msgstr ""
+#~ "Esto puede ser porque el tamaño del bloque de la\n"
+#~ "unidad de cinta no está establecido en la variable\n"
+#~ "de bloqueo como utilizado normalmente por Bacula.\n"
+#~ "Consulte el capítulo Probando Cintas en el manual y\n"
+#~ "busque por usando mt con defblksize y setoptions.\n"
+#~ "Si el tamaño del bloque de la unidad de cinta es correcto,\n"
+#~ "entonces quizá el controlador SCSI es *realmente* estúpido\n"
+#~ "y no informa correctamente el archivo:bloque después de un FSF.\n"
+#~ "En este caso, intente configurar:\n"
+#~ " Fast Forward Space File = no\n"
+#~ "en su recurso de Dispositivos.\n"
+
+#~ msgid "Read record failed! ERR=%s\n"
+#~ msgstr "Fallo al leer registro! ERR=%s\n"
+
+#~ msgid "Block %d re-read correctly.\n"
+#~ msgstr "Bloque %d re-leído correctamente.\n"
 
-#: src/lib/edit.c:488
-#, c-format
-msgid "Illegal character \"%c\" in name.\n"
-msgstr "Carácter ilegal \"%c\" en el nombre.\n"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "=== Append files test ===\n"
+#~ "\n"
+#~ "This test is essential to Bacula.\n"
+#~ "\n"
+#~ "I'm going to write one record  in file 0,\n"
+#~ "                   two records in file 1,\n"
+#~ "             and three records in file 2\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "=== Prueba de Añadir Archivos===\n"
+#~ "\n"
+#~ "Esta prueba es esencial para Bacula.\n"
+#~ "\n"
+#~ "Voy a escribir un registro en el archivo 0,\n"
+#~ " dos registros en el archivo 1,\n"
+#~ " y tres registros en el archivo de 2\n"
+#~ "\n"
 
-#: src/lib/edit.c:495
-msgid "Name too long.\n"
-msgstr "Nombre demasiado largo.\n"
+#~ msgid "Now moving to end of medium.\n"
+#~ msgstr "Moviendo ahora a final de medio.\n"
 
-#: src/findlib/savecwd.c:60
-#, c-format
-msgid "Cannot open current directory: ERR=%s\n"
-msgstr "No se puede abrir el directorio actual: ERR=%s\n"
+#~ 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/findlib/savecwd.c:71
-#, c-format
-msgid "Cannot get current directory: ERR=%s\n"
-msgstr "No se puede obtener el directorio actual: ERR=%s\n"
+#~ msgid "This is correct!"
+#~ msgstr "Esto es correcto!"
 
-#: src/findlib/savecwd.c:95 src/findlib/savecwd.c:106
-#, c-format
-msgid "Cannot reset current directory: ERR=%s\n"
-msgstr "No se puede restablecer el directorio actual: ERR=%s\n"
+#~ msgid "This is NOT correct!!!!"
+#~ msgstr "Esto NO es correcto!"
 
-#: src/findlib/mkpath.c:137
-#, c-format
-msgid "Cannot create directory %s: ERR=%s\n"
-msgstr "No se puede crear directorio %s: ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "Now the important part, I am going to attempt to append to the tape.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ahora la parte importante, voy a tratar de anexar a la cinta.\n"
+#~ "\n"
 
-#: src/findlib/mkpath.c:141 src/findlib/mkpath.c:202
-#, c-format
-msgid "%s exists but is not a directory.\n"
-msgstr "%s existe pero no es un directorio.\n"
+#~ msgid ""
+#~ "Done appending, there should be no I/O errors\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Añadiendo hecho, no debería haber ningún error de E/S\n"
+#~ "\n"
 
-#: src/findlib/mkpath.c:164
-#, c-format
-msgid "Cannot change owner and/or group of %s: ERR=%s\n"
-msgstr "No se puede cambiar el propietario y/o grupo de %s: ERR=%s\n"
+#~ msgid "Doing Bacula scan of blocks:\n"
+#~ msgstr "Hacer Bacula exploración de los bloques:\n"
 
-#: src/findlib/mkpath.c:169
-#, c-format
-msgid "Cannot change permissions of %s: ERR=%s\n"
-msgstr "No puede cambiar los permisos de %s: ERR=%s\n"
+#~ msgid "End scanning the tape.\n"
+#~ msgstr "Fin del escaneo de la cinta.\n"
 
-#: src/findlib/mkpath.c:239
-#, c-format
-msgid "%c: is not a valid drive.\n"
-msgstr "%c: no es una unidad válida.\n"
+#~ 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/findlib/mkpath.c:283
-msgid "Too many subdirectories. Some permissions not reset.\n"
-msgstr "Demasiados subdirectorios. Algunos permisos no se restablece.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Autochanger enabled, but no name or no command device specified.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Auto-cambiador habilitado, pero ningún nombre o comando de dispositivo "
+#~ "especificado.\n"
 
-#: src/findlib/attribs.c:483
-#, c-format
-msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
-msgstr ""
-"Tamaño del archivo %s restaurado no es correcto. Original %s, restaurado "
-"%s.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Ah, I see you have an autochanger configured.\n"
+#~ "To test the autochanger you must have a blank tape\n"
+#~ " that I can write on in Slot 1.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ah, veo que tienen un auto-cargador configurado.\n"
+#~ "Para probar el auto-cargador debe tener una cinta en blanco\n"
+#~ " que yo pueda escribir en la Ranura 1.\n"
 
-#: src/findlib/attribs.c:509 src/findlib/attribs.c:516
-#, c-format
-msgid "Unable to set file owner %s: ERR=%s\n"
-msgstr "No se pudo establecer propietario del archivo %s: ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "Do you wish to continue with the Autochanger test? (y/n): "
+#~ msgstr ""
+#~ "\n"
+#~ "¿Desea continuar con la prueba del auto-cambiador? (y/n):"
 
-#: src/findlib/attribs.c:522
-#, c-format
-msgid "Unable to set file modes %s: ERR=%s\n"
-msgstr "No se pudo establecer modos del archivo %s: ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "=== Autochanger test ===\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "=== Prueba Auto-cambiador ===\n"
+#~ "\n"
 
-#: src/findlib/attribs.c:532
-#, c-format
-msgid "Unable to set file times %s: ERR=%s\n"
-msgstr "No se pudo establecer tiempos del archivo %s: ERR=%s\n"
+#~ msgid "3301 Issuing autochanger \"loaded\" command.\n"
+#~ msgstr "3301 Emitiendo comando auto-cambiador \"cargado\".\n"
 
-#: src/findlib/attribs.c:546
-#, c-format
-msgid "Unable to set file flags %s: ERR=%s\n"
-msgstr "No es posible establecer banderas  en archivo %s: ERR=%s\n"
+#~ msgid "3991 Bad autochanger command: %s\n"
+#~ msgstr "3991 Malo comando cargador: %s\n"
 
-#: src/findlib/attribs.c:799
-#, c-format
-msgid "Error in %s file %s: ERR=%s\n"
-msgstr "Error en %s archivo %s: ERR=%s\n"
+#~ msgid "3991 result=\"%s\": ERR=%s\n"
+#~ msgstr "3991 resultado=\"%s\": ERR=%s\n"
 
-#: src/findlib/attribs.c:816
-#, c-format
-msgid "Error in %s: ERR=%s\n"
-msgstr "Error en %s: ERR=%s\n"
+#~ msgid "Slot %d loaded. I am going to unload it.\n"
+#~ msgstr "Ranura %d cargada. Voy a descargarla.\n"
 
-#: src/findlib/enable_priv.c:92
-msgid "AdjustTokenPrivileges set "
-msgstr "Establecer AdjustTokenPrivileges "
+#~ msgid "Nothing loaded in the drive. OK.\n"
+#~ msgstr "Nada cargado en la unidad. OK.\n"
 
-#: src/findlib/create_file.c:124
-#, c-format
-msgid "File skipped. Not newer: %s\n"
-msgstr "Archivo omitido. No más reciente: %s\n"
+#~ msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
+#~ msgstr "3302 Emitiendo comando auto-cambiador \"descargar %d %d\".\n"
 
-#: src/findlib/create_file.c:131
-#, c-format
-msgid "File skipped. Not older: %s\n"
-msgstr "Archivo omitido. No más viejo: %s\n"
+#~ msgid "unload status=%s %d\n"
+#~ msgstr "estado descargar=%s %d\n"
 
-#: src/findlib/create_file.c:141
-#, c-format
-msgid "File skipped. Already exists: %s\n"
-msgstr "Archivo omitido. Ya existe: %s\n"
+#~ msgid "Bad"
+#~ msgstr "Malo"
 
-#: src/findlib/create_file.c:167
-#, c-format
-msgid "File %s already exists and could not be replaced. ERR=%s.\n"
-msgstr "El archivo %s ya existe y no puede ser reemplazado. ERR=%s.\n"
+#~ msgid "3992 Bad autochanger command: %s\n"
+#~ msgstr "3992 Malo comando cargador: %s\n"
 
-#: src/findlib/create_file.c:218 src/findlib/create_file.c:282
-#: src/findlib/create_file.c:378
-#, c-format
-msgid "bpkt already open fid=%d\n"
-msgstr "bpkt ya abierto fid=%d\n"
+#~ msgid "3992 result=\"%s\": ERR=%s\n"
+#~ msgstr "3992 resultado=\"%s\": ERR=%s\n"
 
-#: 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"
+#~ msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
+#~ msgstr "3303 Emitiendo comando auto-cambiador \"cargar %d %d\".\n"
 
-#: src/findlib/create_file.c:241
-#, c-format
-msgid "Cannot make fifo %s: ERR=%s\n"
-msgstr "No puede crear fifo %s: ERR=%s\n"
+#~ msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
+#~ msgstr "3303 Estado auto-cambiador \"carga %d %d\" está OK.\n"
 
-#: src/findlib/create_file.c:259
-#, c-format
-msgid "Cannot make node %s: ERR=%s\n"
-msgstr "No puede crear nodo %s: ERR=%s\n"
+#~ msgid "3993 Bad autochanger command: %s\n"
+#~ msgstr "3993 Malo comando cargador: %s\n"
 
-#: src/findlib/create_file.c:304
-#, c-format
-msgid "Could not symlink %s -> %s: ERR=%s\n"
-msgstr "No se pudo crear enlace simbólico %s -> %s: ERR=%s\n"
+#~ msgid "3993 result=\"%s\": ERR=%s\n"
+#~ msgstr "3993 resultado=\"%s\": ERR=%s\n"
 
-#: src/findlib/create_file.c:329 src/findlib/create_file.c:342
-#, c-format
-msgid "Could not restore file flags for file %s: ERR=%s\n"
-msgstr ""
-"No se pudo restaurar el archivo de banderas para el archivo% s: ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "The test failed, probably because you need to put\n"
+#~ "a longer sleep time in the mtx-script in the load) case.\n"
+#~ "Adding a 30 second sleep and trying again ...\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Fallo la prueba, probablemente porque es necesario poner\n"
+#~ "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/findlib/create_file.c:333 src/findlib/create_file.c:350
-#, c-format
-msgid "Could not hard link %s -> %s: ERR=%s\n"
-msgstr "No se pudo crear enlace duro %s -> %s: ERR=%s\n"
+#~ msgid "Wrote EOF to %s\n"
+#~ msgstr "Escribió EOF para %s\n"
 
-#: src/findlib/create_file.c:346
-#, c-format
-msgid "Could not reset file flags for file %s: ERR=%s\n"
-msgstr ""
-"No se pudo restablecer el archivo de banderas para el archivo %s: ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "The test worked this time. Please add:\n"
+#~ "\n"
+#~ "   sleep %d\n"
+#~ "\n"
+#~ "to your mtx-changer script in the load) case.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La prueba funcionó esta vez. Por favor, añada:\n"
+#~ "\n"
+#~ " sleep %d\n"
+#~ "\n"
+#~ "en su script mtx-cambiador dentro de de la clausula load).\n"
+#~ "\n"
 
-#: src/findlib/create_file.c:401
-#, c-format
-msgid "Original file %s have been deleted: type=%d\n"
-msgstr "Archivo  %s original se han eliminado: tipo=%d\n"
+#~ msgid ""
+#~ "\n"
+#~ "The test autochanger worked!!\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La prueba del auto-cargador funcionó!!\n"
+#~ "\n"
 
-#: src/findlib/create_file.c:413
-#, c-format
-msgid "Original file %s not saved: type=%d\n"
-msgstr "Archivo original %s no guardado: tipo=%d\n"
+#~ 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/findlib/create_file.c:416
-#, c-format
-msgid "Unknown file type %d; not restored: %s\n"
-msgstr "Tipo de archivo desconocido %d; no restaurado: %s\n"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "=== Forward space files test ===\n"
+#~ "\n"
+#~ "This test is essential to Bacula.\n"
+#~ "\n"
+#~ "I'm going to write five files then test forward spacing\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "=== Probar espaciar archivos hacia adelante ===\n"
+#~ "\n"
+#~ "Esta prueba es esencial para Bacula.\n"
+#~ "\n"
+#~ "Voy a escribir cinco archivo, a continuación probar espaciado hacia "
+#~ "adelante\n"
+#~ "\n"
 
-#: src/findlib/create_file.c:460
-#, c-format
-msgid "Zero length filename: %s\n"
-msgstr "Nombre de archivo con longitud cero: %s\n"
+#~ msgid "Now forward spacing 1 file.\n"
+#~ msgstr "Ahora espaciando 1 archivo hacia adelante.\n"
 
-#: src/findlib/bfile.c:97
-msgid "Unix attributes"
-msgstr "Atributos Unix"
+#~ msgid "Bad status from fsr. ERR=%s\n"
+#~ msgstr "Malo estado desde FSR. ERR=%s\n"
 
-#: src/findlib/bfile.c:99
-msgid "File data"
-msgstr "Archivo de datos"
+#~ 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/findlib/bfile.c:101
-msgid "MD5 digest"
-msgstr "Sumario MD5"
+#~ msgid "Now forward spacing 2 files.\n"
+#~ msgstr "Ahora espaciando 2 archivo hacia adelante.\n"
 
-#: src/findlib/bfile.c:103
-msgid "GZIP data"
-msgstr "GZIP datos"
+#~ msgid "Now forward spacing 4 files.\n"
+#~ msgstr "Ahora espaciando 4 archivo hacia adelante.\n"
 
-#: src/findlib/bfile.c:105
-#, fuzzy
-msgid "Compressed data"
-msgstr "Datos dispersos"
+#~ msgid ""
+#~ "The test worked this time. Please add:\n"
+#~ "\n"
+#~ "   Fast Forward Space File = no\n"
+#~ "\n"
+#~ "to your Device resource for this drive.\n"
+#~ msgstr ""
+#~ "La prueba funcionó esta vez. Por favor, añadir:\n"
+#~ "\n"
+#~ " Fast Forward Space File = no\n"
+#~ "\n"
+#~ "a su recurso Device para esta unidad.\n"
 
-#: src/findlib/bfile.c:107
-msgid "Extended attributes"
-msgstr "Atributos extendidos"
+#~ msgid "Now forward spacing 1 more file.\n"
+#~ msgstr "Ahora espaciando un archivo mas hacia adelante.\n"
 
-#: src/findlib/bfile.c:109
-msgid "Sparse data"
-msgstr "Datos dispersos"
+#~ 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/findlib/bfile.c:111
-msgid "GZIP sparse data"
-msgstr "Datos GZIP dispersos"
+#~ msgid ""
+#~ "\n"
+#~ "=== End Forward space files test ===\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "=== Finalizo prueba de Espaciar archivos hacia adelante ===\n"
+#~ "\n"
 
-#: src/findlib/bfile.c:113
-#, fuzzy
-msgid "Compressed sparse data"
-msgstr "Datos GZIP dispersos"
+#~ msgid ""
+#~ "\n"
+#~ "The forward space file test failed.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Fallida la prueba de espaciar archivos hacia adelante.\n"
 
-#: src/findlib/bfile.c:115
-msgid "Program names"
-msgstr "Programa de nombres"
+#~ msgid ""
+#~ "You have Fast Forward Space File enabled.\n"
+#~ "I am turning it off then retrying the test.\n"
+#~ msgstr ""
+#~ "usted tiene habilitado Espaciar Archivos Hacia Adelante Rápido.\n"
+#~ "Voy deshabilitarlo y luego volver a intentar la prueba.\n"
 
-#: src/findlib/bfile.c:117
-msgid "Program data"
-msgstr "Datos de programa"
+#~ msgid ""
+#~ "You must correct this error or Bacula will not work.\n"
+#~ "Some systems, e.g. OpenBSD, require you to set\n"
+#~ "   Use MTIOCGET= no\n"
+#~ "in your device resource. Use with caution.\n"
+#~ msgstr ""
+#~ "Usted debe corregir este error o Bacula no funcionará.\n"
+#~ "Algunos Sistemas, por ejemplo OpenBSD, requiere que usted establezca\n"
+#~ "Use MTIOCGET = no\n"
+#~ "en su recurso de dispositivo. Utilizar con precaución.\n"
 
-#: src/findlib/bfile.c:119
-msgid "SHA1 digest"
-msgstr "Sumario SHA1"
+#~ msgid ""
+#~ "\n"
+#~ "Append test failed. Attempting again.\n"
+#~ "Setting \"Hardware End of Medium = no\n"
+#~ "    and \"Fast Forward Space File = no\n"
+#~ "and retrying append test.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Prueba de Añadir fallida. Intentando de nuevo.\n"
+#~ "Configurando \"Hardware End of Medium = no\n"
+#~ " y \"Fast Forward Space File = no\n"
+#~ "y volviendo a intentar la prueba de añadir.\n"
+#~ "\n"
 
-#: src/findlib/bfile.c:121
-msgid "Win32 data"
-msgstr "Win32 datos"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "It looks like the test worked this time, please add:\n"
+#~ "\n"
+#~ "    Hardware End of Medium = No\n"
+#~ "\n"
+#~ "    Fast Forward Space File = No\n"
+#~ "to your Device resource in the Storage conf file.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Parece que la prueba funcionó esta vez, por favor, añadir:\n"
+#~ "\n"
+#~ " Hardware End of Medium = No\n"
+#~ "\n"
+#~ " Fast Forward Space File = No\n"
+#~ "a su recurso de Device en el archivo configuración del Storage.\n"
 
-#: src/findlib/bfile.c:123
-msgid "Win32 GZIP data"
-msgstr "Win32 GZIP datos"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "That appears *NOT* to have corrected the problem.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Parece que *NO* se ha corregido el problema.\n"
 
-#: src/findlib/bfile.c:125
-#, fuzzy
-msgid "Win32 compressed data"
-msgstr "Win32 datos"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "It looks like the append failed. Attempting again.\n"
+#~ "Setting \"BSF at EOM = yes\" and retrying append test.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Parece que ha fallado el añadir.Intentando de nuevo.\n"
+#~ "Configurando  \"BSF en EOM = yes\" y reintentando probar añadir.\n"
 
-#: src/findlib/bfile.c:127
-msgid "MacOS Fork data"
-msgstr "Datos rama MacOS"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "It looks like the test worked this time, please add:\n"
+#~ "\n"
+#~ "    Hardware End of Medium = No\n"
+#~ "    Fast Forward Space File = No\n"
+#~ "    BSF at EOM = yes\n"
+#~ "\n"
+#~ "to your Device resource in the Storage conf file.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Parece que la prueba funcionó esta vez, por favor agregue:\n"
+#~ "\n"
+#~ "Hardware End of Medium = No\n"
+#~ " Fast Forward Space File = No\n"
+#~ " BSF at EOM = yes\n"
+#~ "\n"
+#~ "en su recurso Device en el archivo de configuración del Storage.\n"
 
-#: src/findlib/bfile.c:129
-msgid "HFS+ attribs"
-msgstr "HFS+ attribs"
+#~ msgid ""
+#~ "\n"
+#~ "Append test failed.\n"
+#~ "\n"
+#~ "\n"
+#~ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
+#~ "Unable to correct the problem. You MUST fix this\n"
+#~ "problem before Bacula can use your tape drive correctly\n"
+#~ "\n"
+#~ "Perhaps running Bacula in fixed block mode will work.\n"
+#~ "Do so by setting:\n"
+#~ "\n"
+#~ "Minimum Block Size = nnn\n"
+#~ "Maximum Block Size = nnn\n"
+#~ "\n"
+#~ "in your Storage daemon's Device definition.\n"
+#~ "nnn must match your tape driver's block size, which\n"
+#~ "can be determined by reading your tape manufacturers\n"
+#~ "information, and the information on your kernel dirver.\n"
+#~ "Fixed block sizes, however, are not normally an ideal solution.\n"
+#~ "\n"
+#~ "Some systems, e.g. OpenBSD, require you to set\n"
+#~ "   Use MTIOCGET= no\n"
+#~ "in your device resource. Use with caution.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Fallo prueba Anexar.\n"
+#~ "\n"
+#~ "\n"
+#~ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
+#~ "No se puede corregir el problema. Usted DEBE corregir este\n"
+#~ "problema antes de que Bacula pueda utilizar su unidad de cinta "
+#~ "correctamente \n"
+#~ "\n"
+#~ "Tal vez ejecutando Bacula en modo de bloque fijo va a funcionar.\n"
+#~ "Hacerlo estableciendo:\n"
+#~ "\n"
+#~ "Minimum Block Size = nnn\n"
+#~ "Maximum Block Size = nnn\n"
+#~ "\n"
+#~ "en la definición de dispositivo del demonio Storage.\n"
+#~ "nnn debe coincidir con el tamaño de bloque controlador de su cinta, que\n"
+#~ "puede determinarse mediante lectura de información del fabricante de la "
+#~ "cinta, y la información en su driver del núcleo.\n"
+#~ "Tamaños de bloque fijo, sin embargo, normalmente no son una solución "
+#~ "ideal.\n"
+#~ "\n"
+#~ "Algunos sistemas, por ejemplo OpenBSD, exigen que se establezcan\n"
+#~ "Use MTIOCGET= no\n"
+#~ "en su recurso de dispositivo. Utilice con precaución.\n"
 
-#: src/findlib/bfile.c:131
-msgid "Standard Unix ACL attribs"
-msgstr "ACL estándar de Unix attribs"
+#~ msgid ""
+#~ "\n"
+#~ "The above Bacula scan should have output identical to what follows.\n"
+#~ "Please double check it ...\n"
+#~ "=== Sample correct output ===\n"
+#~ "1 block of 64448 bytes in file 1\n"
+#~ "End of File mark.\n"
+#~ "2 blocks of 64448 bytes in file 2\n"
+#~ "End of File mark.\n"
+#~ "3 blocks of 64448 bytes in file 3\n"
+#~ "End of File mark.\n"
+#~ "1 block of 64448 bytes in file 4\n"
+#~ "End of File mark.\n"
+#~ "Total files=4, blocks=7, bytes = 451,136\n"
+#~ "=== End sample correct output ===\n"
+#~ "\n"
+#~ "If the above scan output is not identical to the\n"
+#~ "sample output, you MUST correct the problem\n"
+#~ "or Bacula will not be able to write multiple Jobs to \n"
+#~ "the tape.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "La anterior Bacula análisis debe tener una salida idéntica a lo que "
+#~ "sigue.\n"
+#~ "Por favor, verifique bien ...\n"
+#~ "Ejemplo de la salida correcta ===   n1 bloque de 64448 bytes en el "
+#~ "archivo 1\n"
+#~ "Fin de la marca de archivo.\n"
+#~ "2 bloques de 64.448 bytes en el archivo 2\n"
+#~ "Fin de la marca de archivo.\n"
+#~ "3 bloques de 64448 bytes en el archivo 3\n"
+#~ "Fin de la marca de archivo.\n"
+#~ "1 bloque de 64448 bytes en el archivo 4\n"
+#~ "Fin de la marca de archivo.\n"
+#~ "Total de archivos = 4, bloques = 7, bytes = 451.136\n"
+#~ "===Fin ejemplo de la salida correcta===\n"
+#~ "\n"
+#~ "Si la anterior salida de escaneo no es idéntica a la \n"
+#~ "salida de ejemplo, usted DEBE corregir el problema\n"
+#~ "o Bacula no será capaz de escribir varios Jobs en\n"
+#~ "la cinta.\n"
+#~ "\n"
 
-#: src/findlib/bfile.c:133
-msgid "Default Unix ACL attribs"
-msgstr "ACL por defecto de Unix attribs"
+#~ msgid "Bad status from fsf. ERR=%s\n"
+#~ msgstr "Malo estado desde FSF. ERR=%s\n"
 
-#: src/findlib/bfile.c:135
-msgid "SHA256 digest"
-msgstr "Sumario SHA256"
+#~ msgid "Forward spaced 1 file.\n"
+#~ msgstr "Espaciado 1 archivo hacia adelante.\n"
 
-#: src/findlib/bfile.c:137
-msgid "SHA512 digest"
-msgstr "Sumario SAH512"
+#~ msgid "Forward spaced %d files.\n"
+#~ msgstr "Espaciados %d archivos hacia adelante.\n"
 
-#: src/findlib/bfile.c:139
-msgid "Signed digest"
-msgstr "Sumario Firmado"
+#~ msgid "Forward spaced 1 record.\n"
+#~ msgstr "Espaciado 1 registro hacia adelante.\n"
 
-#: src/findlib/bfile.c:141
-msgid "Encrypted File data"
-msgstr "Cifrado de Archivo de datos"
+#~ msgid "Forward spaced %d records.\n"
+#~ msgstr "Espaciados %d registros hacia adelante.\n"
 
-#: src/findlib/bfile.c:143
-msgid "Encrypted Win32 data"
-msgstr "Cifrado de datos Win32"
+#~ msgid "Wrote one record of %d bytes.\n"
+#~ msgstr "Escribió un registro de %d bytes.\n"
 
-#: src/findlib/bfile.c:145
-msgid "Encrypted session data"
-msgstr "Cifrado de datos de sesiones "
+#~ msgid "Wrote block to device.\n"
+#~ msgstr "Escribió bloques al dispositivo.\n"
 
-#: src/findlib/bfile.c:147
-msgid "Encrypted GZIP data"
-msgstr "Cifrado de datos GZIP"
+#~ msgid "Enter length to read: "
+#~ msgstr "Introduzca la longitud para leer:"
 
-#: src/findlib/bfile.c:149
-#, fuzzy
-msgid "Encrypted compressed data"
-msgstr "Cifrado de datos de sesiones "
+#~ msgid "Bad length entered, using default of 1024 bytes.\n"
+#~ msgstr "Mala longitud introducida, utilizando 1024 bytes por defecto.\n"
 
-#: src/findlib/bfile.c:151
-msgid "Encrypted Win32 GZIP data"
-msgstr "Cifrado de datos Win32 GZIP"
+#~ msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
+#~ msgstr "Lectura de %d bytes obtuvo stat=%d. ERR=%s\n"
 
-#: src/findlib/bfile.c:153
-#, fuzzy
-msgid "Encrypted Win32 Compressed data"
-msgstr "Cifrado de datos Win32"
+#~ msgid "End of tape\n"
+#~ msgstr "Fin de la cinta\n"
 
-#: src/findlib/bfile.c:155
-msgid "Encrypted MacOS fork data"
-msgstr "Datos encriptados rama MacOS"
+#~ msgid "Starting scan at file %u\n"
+#~ msgstr "Iniciando escaneo en el archivo %u\n"
 
-#: src/findlib/bfile.c:157
-msgid "AIX Specific ACL attribs"
-msgstr "Atributos ACL específicos de AIX"
+#~ msgid "read error on %s. ERR=%s.\n"
+#~ msgstr "error de lectura en %s. ERR=%s.\n"
 
-#: src/findlib/bfile.c:159
-msgid "Darwin Specific ACL attribs"
-msgstr "Atributos ACL específicos de Darwin"
+#~ msgid "Bad status from read %d. ERR=%s\n"
+#~ msgstr "Malo estado desde lectura %d. ERR=%s\n"
 
-#: src/findlib/bfile.c:161
-msgid "FreeBSD Specific Default ACL attribs"
-msgstr "Atributos ACL por defecto específicos de FreeBSD"
+#~ msgid "1 block of %d bytes in file %d\n"
+#~ msgstr "1 bloque de %d bytes en el archivo %d\n"
 
-#: src/findlib/bfile.c:163
-msgid "FreeBSD Specific Access ACL attribs"
-msgstr "Atributos ACL de acceso específicos de FreeBSD"
+#~ msgid "%d blocks of %d bytes in file %d\n"
+#~ msgstr "%d bloques de %d bytes en archivo %d\n"
 
-#: src/findlib/bfile.c:165
-msgid "HPUX Specific ACL attribs"
-msgstr "Atributos ACL específicos de HPUX"
+#~ msgid "End of File mark.\n"
+#~ msgstr "Fin de la marca de archivo.\n"
 
-#: src/findlib/bfile.c:167
-msgid "Irix Specific Default ACL attribs"
-msgstr "Atributos ACL por defecto específicos de Irix"
+#~ msgid "Total files=%d, blocks=%d, bytes = %s\n"
+#~ msgstr "Total de archivos=%d, bloques=%d, bytes = %s\n"
 
-#: src/findlib/bfile.c:169
-msgid "Irix Specific Access ACL attribs"
-msgstr "Atributos ACL de acceso específicos de Irix"
+#~ msgid "Short block read.\n"
+#~ msgstr "Leer bloque corto.\n"
 
-#: src/findlib/bfile.c:171
-msgid "Linux Specific Default ACL attribs"
-msgstr "Atributos ACL por defecto específicos de Linux"
+#~ msgid "Error reading block. ERR=%s\n"
+#~ msgstr "Error leyendo el bloque. ERR=%s\n"
 
-#: src/findlib/bfile.c:173
-msgid "Linux Specific Access ACL attribs"
-msgstr "Atributos ACL de acceso específicos de Linux"
+#~ msgid ""
+#~ "Block=%u file,blk=%u,%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm="
+#~ "%s rlen=%d\n"
+#~ msgstr ""
+#~ "Bloque=%u archivo,blk=%u,%u blen=%u Primero rec FI=%s SessId=%u SessTim="
+#~ "%u Strm=%s rlen=%d\n"
 
-#: src/findlib/bfile.c:175
-#, fuzzy
-msgid "TRU64 Specific Default ACL attribs"
-msgstr "Atributos ACL por defecto específicos de Irix"
+#~ msgid "Device status: %u. ERR=%s\n"
+#~ msgstr "Estado del dispositivo: %u. ERR=%s\n"
 
-#: src/findlib/bfile.c:177
-#, fuzzy
-msgid "TRU64 Specific Access ACL attribs"
-msgstr "Atributos ACL de acceso específicos de Irix"
+#~ msgid ""
+#~ "\n"
+#~ "This command simulates Bacula writing to a tape.\n"
+#~ "It requires either one or two blank tapes, which it\n"
+#~ "will label and write.\n"
+#~ "\n"
+#~ "If you have an autochanger configured, it will use\n"
+#~ "the tapes that are in slots 1 and 2, otherwise, you will\n"
+#~ "be prompted to insert the tapes when necessary.\n"
+#~ "\n"
+#~ "It will print a status approximately\n"
+#~ "every 322 MB, and write an EOF every %s.  If you have\n"
+#~ "selected the simple test option, after writing the first tape\n"
+#~ "it will rewind it and re-read the last block written.\n"
+#~ "\n"
+#~ "If you have selected the multiple tape test, when the first tape\n"
+#~ "fills, it will ask for a second, and after writing a few more \n"
+#~ "blocks, it will stop.  Then it will begin re-reading the\n"
+#~ "two tapes.\n"
+#~ "\n"
+#~ "This may take a long time -- hours! ...\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Este comando simula Bacula escrito en una cinta.\n"
+#~ "Se requiere de una o dos cintas en blanco, que se pueda etiquetar y "
+#~ "escribir.\n"
+#~ "\n"
+#~ "Si usted tiene un auto-cargador configurado, se usará\n"
+#~ "las cintas que se encuentran en las ranuras 1 y 2, de lo contrario,\n"
+#~ "se le pedirá que inserte las cintas cuando sea necesario.\n"
+#~ "\n"
+#~ "Se imprimirá un estado a aproximadamente cada 322 MB, y escribirá un EOF "
+#~ "cada %s.Si ha seleccionado\n"
+#~ "la opción de prueba simple, después de escribir la primera cinta\n"
+#~ "se rebobinará y volverá a leer el último bloque escrito.\n"
+#~ "\n"
+#~ "Si ha seleccionado\n"
+#~ "la prueba de la cinta múltiple, cuando la primera cinta se llena, se le "
+#~ "preguntará por la segunda, y después de escribir unos pocos\n"
+#~ "bloques más, se detendrá. Entonces comenzará a releer las\n"
+#~ "dos cintas.\n"
+#~ "\n"
+#~ "Esto puede tomar mucho tiempo - horas! ...\n"
 
-#: src/findlib/bfile.c:179
-#, fuzzy
-msgid "Solaris Specific POSIX ACL attribs"
-msgstr "Atributos ACL específicos de Solaris"
+#~ msgid ""
+#~ "Do you want to run the simplified test (s) with one tape\n"
+#~ "or the complete multiple tape (m) test: (s/m) "
+#~ msgstr ""
+#~ "¿Desea ejecutar la prueba simplificada (s) con una cinta\n"
+#~ "o la prueba completa con múltiples (m) cintas?: (s/m)"
 
-#: src/findlib/bfile.c:181
-#, fuzzy
-msgid "Solaris Specific NFSv4/ZFS ACL attribs"
-msgstr "Atributos ACL específicos de Solaris"
+#~ msgid "Simple test (single tape) selected.\n"
+#~ msgstr "Prueba simple (una sola cinta) seleccionada.\n"
 
-#: src/findlib/bfile.c:183
-#, fuzzy
-msgid "AFS Specific ACL attribs"
-msgstr "Atributos ACL específicos de AIX"
+#~ msgid "Multiple tape test selected.\n"
+#~ msgstr "Múltiples cintas de prueba seleccionados.\n"
 
-#: src/findlib/bfile.c:185
-#, fuzzy
-msgid "AIX Specific POSIX ACL attribs"
-msgstr "Atributos ACL específicos de AIX"
+#~ msgid "Wrote Start of Session label.\n"
+#~ msgstr "Escribe la etiqueta de Inicio de Sesión.\n"
 
-#: src/findlib/bfile.c:187
-#, fuzzy
-msgid "AIX Specific NFSv4 ACL attribs"
-msgstr "Atributos ACL específicos de AIX"
+#~ msgid "%s Begin writing Bacula records to tape ...\n"
+#~ msgstr "%s Empezar a escribir registros Bacula en cinta ...\n"
 
-#: src/findlib/bfile.c:189
-#, fuzzy
-msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
-msgstr "Atributos ACL de acceso específicos de FreeBSD"
+#~ msgid "%s Begin writing Bacula records to first tape ...\n"
+#~ msgstr "%s Empezar a escribir registros Bacula en la primera cinta ...\n"
 
-#: src/findlib/bfile.c:191
-#, fuzzy
-msgid "GNU Hurd Specific Default ACL attribs"
-msgstr "Atributos ACL por defecto específicos de Irix"
+#~ msgid "Flush block failed.\n"
+#~ msgstr "Fallo Flush bloque.\n"
 
-#: src/findlib/bfile.c:193
-#, fuzzy
-msgid "GNU Hurd Specific Access ACL attribs"
-msgstr "Atributos ACL de acceso específicos de Irix"
+#~ 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/findlib/bfile.c:195
-#, fuzzy
-msgid "GNU Hurd Specific Extended attribs"
-msgstr "Atributos Extendidos Específicos de Linux"
+#~ msgid "%s Flush block, write EOF\n"
+#~ msgstr "%s Flush bloque, escribir EOF\n"
 
-#: src/findlib/bfile.c:197
-#, fuzzy
-msgid "IRIX Specific Extended attribs"
-msgstr "Atributos Extendidos Específicos de Linux"
+#~ msgid "Wrote 1000 blocks on second tape. Done.\n"
+#~ msgstr "Escribió 1000 bloques en segunda cinta. Hecho.\n"
 
-#: src/findlib/bfile.c:199
-#, fuzzy
-msgid "TRU64 Specific Extended attribs"
-msgstr "Atributos Extendidos Específicos de Linux"
+#~ msgid "Not OK\n"
+#~ msgstr "No OK\n"
 
-#: src/findlib/bfile.c:201
-#, fuzzy
-msgid "AIX Specific Extended attribs"
-msgstr "Atributos Extendidos Específicos de Linux"
+#~ msgid "Job canceled.\n"
+#~ msgstr "Job cancelado.\n"
 
-#: src/findlib/bfile.c:203
-msgid "OpenBSD Specific Extended attribs"
-msgstr "Atributos Extendidos específicos de OpenBSD"
+#~ msgid "Set ok=false after write_block_to_device.\n"
+#~ msgstr "Establecer ok=false después de write_block_to_device.\n"
 
-#: 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"
+#~ msgid "Wrote End of Session label.\n"
+#~ msgstr "Escribió etiqueta de Fin de Sesión.\n"
 
-#: src/findlib/bfile.c:207
-msgid "Solaris Specific Extended attribs"
-msgstr "Atributos Extendidos Específicos de Solaris"
+#~ 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/findlib/bfile.c:209
-msgid "Darwin Specific Extended attribs"
-msgstr "Atributos Extendidos Específicos de Darwin"
+#~ msgid "Could not create state file: %s ERR=%s\n"
+#~ msgstr "No se puede crear archivo de estado: %s ERR=%s\n"
 
-#: src/findlib/bfile.c:211
-msgid "FreeBSD Specific Extended attribs"
-msgstr "Atributos Extendidos Específicos de FreeBSD"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "%s Hecho llenado de cinta en %d:%d. Ahora empezando a releer la "
+#~ "cinta ...\n"
 
-#: src/findlib/bfile.c:213
-msgid "Linux Specific Extended attribs"
-msgstr "Atributos Extendidos Específicos de Linux"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "%s Hecho llenado de cintas en %d:%d. Ahora empezando a releer la primera "
+#~ "cinta ...\n"
 
-#: src/findlib/bfile.c:215
-msgid "NetBSD Specific Extended attribs"
-msgstr "Atributos Extendidos Específicos de NetBSD"
+#~ msgid "do_unfill failed.\n"
+#~ msgstr "do_unfill fallido.\n"
 
-#: src/findlib/find.c:237
-#, fuzzy, c-format
-msgid "Plugin: \"%s\" not found.\n"
-msgstr "Plugin=%s no encontrado.\n"
+#~ msgid "%s: Error during test.\n"
+#~ msgstr "%s: Error durante la prueba.\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "The state file level has changed. You must redo\n"
+#~ "the fill command.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "El estado del archivo de nivel de ha cambiado. Usted debe rehacer\n"
+#~ "el comando llenar.\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "Could not find the state file: %s ERR=%s\n"
+#~ "You must redo the fill command.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "No se pudo encontrar el archivo de estado: %s ERR=%s\n"
+#~ "Usted debe rehacer el comando llenar.\n"
 
-#: 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"
+#~ msgid "Mount first tape. Press enter when ready: "
+#~ msgstr "Monte primera cinta. Cuando esté listo, presione ENTER:"
 
-#: 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"
+#~ msgid "Rewinding.\n"
+#~ msgstr "Rebobinado.\n"
 
-#: 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"
+#~ msgid "Reading the first 10000 records from %u:%u.\n"
+#~ msgstr "Leyendo los primeros 10.000 registros desde %u:%u.\n"
 
-#: 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"
+#~ msgid "Reposition from %u:%u to %u:%u\n"
+#~ msgstr "Reposición desde %u:%u para %u:%u\n"
 
-#: 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"
+#~ msgid "Reposition error. ERR=%s\n"
+#~ msgstr "Error de reposición. ERR=%s\n"
 
-#: src/findlib/find_one.c:418
-#, c-format
-msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
-msgstr ""
-"Directorio de nivel superior \"%s\" tiene un tipo de unidad \"%s\" no "
-"listado\n"
+#~ msgid "Reading block %u.\n"
+#~ msgstr "Leyendo bloque %u.\n"
 
-#: src/cats/sql_create.c:101
-#, c-format
-msgid "Create DB Job record %s failed. ERR=%s\n"
-msgstr "Creación de registro de Job %s en BD fallido. ERR=%s\n"
+#~ msgid "Error reading block: ERR=%s\n"
+#~ msgstr "Error leyendo bloque: ERR=%s.\n"
 
-#: src/cats/sql_create.c:145
-#, c-format
-msgid "Create JobMedia record %s failed: ERR=%s\n"
-msgstr "Creación de registro de JobMedia %s fallido. ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "The last block on the tape matches. Test succeeded.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "El último bloque de la cinta concuerdan. Prueba Satisfactoria.\n"
+#~ "\n"
 
-#: src/cats/sql_create.c:154
-#, c-format
-msgid "Update Media record %s failed: ERR=%s\n"
-msgstr "Actualización del registro de Media %s fallido: ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "The last block of the first tape matches.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "El último bloque de la primera cinta concuerdan.\n"
+#~ "\n"
 
-#: src/cats/sql_create.c:189
-#, c-format
-msgid "pool record %s already exists\n"
-msgstr "registro del pool %s ya existe\n"
+#~ msgid "Mount second tape. Press enter when ready: "
+#~ msgstr "Monte la segunda cinta. Cuando esté listo, presione ENTER:"
 
-#: src/cats/sql_create.c:221
-#, c-format
-msgid "Create db Pool record %s failed: ERR=%s\n"
-msgstr "Creación del registro BD Pool %s fallido: ERR=%s\n"
+#~ msgid "Reposition from %u:%u to 0:1\n"
+#~ msgstr "Reposición desde %u:%u para 0:1\n"
 
-#: src/cats/sql_create.c:254
-#, c-format
-msgid "Device record %s already exists\n"
-msgstr "Registro de Dispositivo %s ya existe\n"
+#~ msgid "Reading block %d.\n"
+#~ msgstr "Leyendo bloque %d.\n"
 
-#: src/cats/sql_create.c:271
-#, c-format
-msgid "Create db Device record %s failed: ERR=%s\n"
-msgstr "Creación del registro de BD Device %s fallido: ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "The first block on the second tape matches.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "El primer bloque de la segunda cinta concuerdan.\n"
+#~ "\n"
 
-#: src/cats/sql_create.c:306
-#, c-format
-msgid "More than one Storage record!: %d\n"
-msgstr "Mas de un registro de almacenamiento!: %d\n"
+#~ msgid ""
+#~ "\n"
+#~ "The last block on the second tape matches. Test succeeded.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "El último bloque de la segunda cinta concuerdan. Prueba Satisfactoria.\n"
+#~ "\n"
 
-#: src/cats/sql_create.c:311
-#, c-format
-msgid "error fetching Storage row: %s\n"
-msgstr "error obteniendo fila del Almacenamiento:%s\n"
+#~ msgid "10000 records read now at %d:%d\n"
+#~ msgstr "Leer 10000 registros ahora desde %d:%d\n"
 
-#: src/cats/sql_create.c:332
-#, c-format
-msgid "Create DB Storage record %s failed. ERR=%s\n"
-msgstr "Creación del registro BD Almacenamiento %s fallido. ERR=%s\n"
+#~ msgid "Last block written"
+#~ msgstr "Ultimo bloque escrito"
 
-#: src/cats/sql_create.c:366
-#, c-format
-msgid "mediatype record %s already exists\n"
-msgstr "registro de tipo de media %s ya existe\n"
+#~ msgid "Block read back"
+#~ msgstr "Bloque que leer"
 
-#: src/cats/sql_create.c:383
-#, c-format
-msgid "Create db mediatype record %s failed: ERR=%s\n"
-msgstr "Fallo al crear la db_mediatype_record %s: ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "The blocks differ at byte %u\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Los bloques difieren en %u byte\n"
 
-#: src/cats/sql_create.c:424
-#, c-format
-msgid "Volume \"%s\" already exists.\n"
-msgstr "Volumen \"%s\" ya existe.\n"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "!!!! The last block written and the block\n"
+#~ "that was read back differ. The test FAILED !!!!\n"
+#~ "This must be corrected before you use Bacula\n"
+#~ "to write multi-tape Volumes.!!!!\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "!!!! El último bloque escrito y el bloque\n"
+#~ "que se vuelve a leer difieren. La prueba FALLO !!!!\n"
+#~ "Esto debe ser corregido antes de utilizar Bacula\n"
+#~ "para escribir volúmenes multi-cinta !!!!\n"
 
-#: src/cats/sql_create.c:470
-#, c-format
-msgid "Create DB Media record %s failed. ERR=%s\n"
-msgstr "Creación del registro BD Almacenamiento %s fallido. ERR=%s\n"
+#~ 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/cats/sql_create.c:521
-#, c-format
-msgid "More than one Client!: %d\n"
-msgstr "Mas de un cliente!: %d\n"
+#~ 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/cats/sql_create.c:526
-#, c-format
-msgid "error fetching Client row: %s\n"
-msgstr "error al obtener la fila Cliente:%s\n"
+#~ msgid "Block not written"
+#~ msgstr "Bloque no escrito"
 
-#: src/cats/sql_create.c:554
-#, c-format
-msgid "Create DB Client record %s failed. ERR=%s\n"
-msgstr "Creación del registro BD Cliente %s fallido. ERR=%s\n"
+#~ 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/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"
+#~ msgid "Test writing blocks of 64512 bytes to tape.\n"
+#~ msgstr "Prueba de escritura de bloques de 64512 bytes a cinta.\n"
 
-#: 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"
+#~ msgid "How many blocks do you want to write? (1000): "
+#~ msgstr "¿Cuántos bloques usted quiere escribir? (1000):"
 
-#: 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"
+#~ msgid "Begin writing %d Bacula blocks to tape ...\n"
+#~ msgstr "Empezando a escribir %d bloques Bacula en la cinta ...\n"
 
-#: 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"
+#~ msgid "Begin writing raw blocks of %u bytes.\n"
+#~ msgstr "Empezando a escribir bloques raw de %u bytes.\n"
 
-#: src/cats/sql_create.c:704
-#, c-format
-msgid "More than one FileSet!: %d\n"
-msgstr "Más de un FileSet!: %d\n"
+#~ msgid "test autochanger"
+#~ msgstr "prueba Autochanger"
 
-#: src/cats/sql_create.c:709
-#, c-format
-msgid "error fetching FileSet row: ERR=%s\n"
-msgstr "error al obtener la fila FileSet: ERR=%s\n"
+#~ msgid "backspace file"
+#~ msgstr "archivo de retroceso"
 
-#: src/cats/sql_create.c:740
-#, c-format
-msgid "Create DB FileSet record %s failed. ERR=%s\n"
-msgstr "Creación del registro BD FileSet %s fallido. ERR=%s\n"
+#~ msgid "backspace record"
+#~ msgstr "registro de retroceso"
 
-#: 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"
+#~ msgid "list device capabilities"
+#~ msgstr "lista de las capacidades del dispositivo"
 
-#: 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"
+#~ msgid "clear tape errors"
+#~ msgstr "Errores Cinta de Limpieza"
 
-#: 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"
+#~ msgid "go to end of Bacula data for append"
+#~ msgstr "ir al final de los datos de Bacula para añadir"
 
-#: 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"
+#~ msgid "go to the physical end of medium"
+#~ msgstr "ir al final del medio físico"
 
-#: 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"
+#~ msgid "fill tape, write onto second volume"
+#~ msgstr "llenar cinta, escribir en segundo volumen"
 
-#: src/cats/sql_create.c:1074
-msgid "Cannot Copy/Migrate job using BaseJob.\n"
-msgstr ""
+#~ msgid "read filled tape"
+#~ msgstr "leer cinta llena"
 
-#: 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"
+#~ msgid "forward space a file"
+#~ msgstr "espaciar un archivo hacia adelante"
 
-#: 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"
+#~ msgid "forward space a record"
+#~ msgstr "espaciar un registro hacia adelante"
 
-#: src/cats/sql_get.c:151
-#, c-format
-msgid "Error fetching row: %s\n"
-msgstr "Error obteniendo fila: %s\n"
+#~ msgid "print this command"
+#~ msgstr "imprimir este comando"
 
-#: src/cats/sql_get.c:158
-#, fuzzy, c-format
-msgid "get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"
-msgstr "get_file_record falta 1 obtuvo filas=%d\n"
+#~ msgid "write a Bacula label to the tape"
+#~ msgstr "escribir una etiqueta Bacula en la cinta"
 
-#: src/cats/sql_get.c:166
-#, c-format
-msgid "File record for PathId=%s FilenameId=%s not found.\n"
-msgstr "Registro File para PathID=%s FilenameID=%s no encontrado.\n"
+#~ msgid "load a tape"
+#~ msgstr "cargar una cinta"
 
-#: src/cats/sql_get.c:172
-msgid "File record not found in Catalog.\n"
-msgstr "Registro File no se encuentra en Catalogo.\n"
+#~ msgid "quit btape"
+#~ msgstr "salir btape"
 
-#: src/cats/sql_get.c:199
-#, c-format
-msgid "More than one Filename!: %s for file: %s\n"
-msgstr "Más de un Filename!: %s en archivo: %s\n"
+#~ msgid "use write() to fill tape"
+#~ msgstr "usar write() para llenar la cinta"
 
-#: src/cats/sql_get.c:209
-#, c-format
-msgid "Get DB Filename record %s found bad record: %d\n"
-msgstr "Obtener registro BD Filename %s encuentro registro malo: %d\n"
+#~ msgid "read and print the Bacula tape label"
+#~ msgstr "leer e imprimir la etiqueta Bacula de la cinta"
 
-#: src/cats/sql_get.c:215
-#, c-format
-msgid "Filename record: %s not found.\n"
-msgstr "Registro Filename: %s no encontrado.\n"
+#~ msgid "test record handling functions"
+#~ msgstr "prueba de manejo de registro de funciones"
 
-#: src/cats/sql_get.c:219
-#, c-format
-msgid "Filename record: %s not found in Catalog.\n"
-msgstr "Registro Filename: %s no encontrado en Catalogo.\n"
+#~ msgid "rewind the tape"
+#~ msgstr "rebobinar la cinta"
 
-#: src/cats/sql_get.c:262
-#, c-format
-msgid "Get DB path record %s found bad record: %s\n"
-msgstr "Obtener registro ruta %s de BD encontró malo registro: %s\n"
+#~ msgid "read() tape block by block to EOT and report"
+#~ msgstr "leer() cinta bloque por bloque para EOT y reportar"
 
-#: src/cats/sql_get.c:275
-#, c-format
-msgid "Path record: %s not found.\n"
-msgstr "Registro Path: %s no encontrado.\n"
+#~ msgid "Bacula read block by block to EOT and report"
+#~ msgstr "Bacula leer bloque por bloque para EOT y reportar"
 
-#: src/cats/sql_get.c:279
-#, c-format
-msgid "Path record: %s not found in Catalog.\n"
-msgstr "Registro Path: %s no encontrado en el Catalogo.\n"
+#~ msgid ""
+#~ "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] "
+#~ "report drive speed"
+#~ msgstr ""
+#~ "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] "
+#~ "informe de velocidad de la unidad"
 
-#: src/cats/sql_get.c:318
-#, c-format
-msgid "No Job found for JobId %s\n"
-msgstr "No se encontró un job para el JobId %s\n"
+#~ msgid "print tape status"
+#~ msgstr "imprimir estado de la cinta"
 
-#: src/cats/sql_get.c:391 src/cats/sql_get.c:448
-#, c-format
-msgid "No volumes found for JobId=%d\n"
-msgstr "Volúmenes no encontrados para JobId=%d\n"
+#~ msgid "General test Bacula tape functions"
+#~ msgstr "Prueba general de las funciones de cinta Bacula"
 
-#: src/cats/sql_get.c:397 src/cats/sql_get.c:459
-#, c-format
-msgid "Error fetching row %d: ERR=%s\n"
-msgstr "Error obteniendo fila %d: ERR=%s\n"
+#~ msgid "write an EOF on the tape"
+#~ msgstr "escribir un EOF en la cinta"
 
-#: src/cats/sql_get.c:411
-#, c-format
-msgid "No Volume for JobId %d found in Catalog.\n"
-msgstr "Volúmenes para JobId=%d no encontrado en el Catalogo.\n"
+#~ msgid "write a single Bacula block"
+#~ msgstr "escribir un único bloque de Bacula"
 
-#: src/cats/sql_get.c:552
-#, c-format
-msgid "Pool id select failed: ERR=%s\n"
-msgstr "Fallo al selecciona id del Pool: ERR=%s\n"
+#~ msgid "read a single record"
+#~ msgstr "leer un solo registro"
 
-#: src/cats/sql_get.c:589
-#, c-format
-msgid "Client id select failed: ERR=%s\n"
-msgstr "Fallo al seleccionar ID del Cliente: ERR=%s\n"
+#~ msgid "read a single Bacula block"
+#~ msgstr "leer un único bloque de Bacula"
 
-#: src/cats/sql_get.c:635
-#, c-format
-msgid "More than one Pool!: %s\n"
-msgstr "Mas de un Poll!: %s\n"
+#~ msgid "quick fill command"
+#~ msgstr "comando de llenado rápido"
 
-#: src/cats/sql_get.c:679
-msgid "Pool record not found in Catalog.\n"
-msgstr "Registro del Pool no encontrado en Catalogo.\n"
+#~ msgid "\"%s\" is an invalid command\n"
+#~ msgstr "\"%s\" es un comando inválido\n"
 
-#: src/cats/sql_get.c:717
-#, c-format
-msgid "More than one Client!: %s\n"
-msgstr "Mas de un Cliente!: %s\n"
+#~ msgid "Interactive commands:\n"
+#~ msgstr "Comandos interactivos:\n"
 
-#: src/cats/sql_get.c:734 src/cats/sql_get.c:738
-msgid "Client record not found in Catalog.\n"
-msgstr "Registro de cliente no encontrado en catalogo.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: btape <options> <device_name>\n"
+#~ "       -b <file>   specify bootstrap 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"
+#~ "       -p          proceed inspite of I/O errors\n"
+#~ "       -s          turn off signals\n"
+#~ "       -v          be verbose\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ "\n"
+#~ "Utilice: btape <opciones> <nombre-dispositivo>\n"
+#~ " -b <archivo> especifica un archivo bootstrap\n"
+#~ " -c <archivo>  especifica un archivo File de configuración\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -p proceder a pesar de los errores de E/S\n"
+#~ " -s desactivar señales\n"
+#~ " -v detallado\n"
+#~ " -? imprime esta mensaje.\n"
+#~ "\n"
 
-#: src/cats/sql_get.c:765
-#, c-format
-msgid "More than one Counter!: %d\n"
-msgstr "Mas de un Contador!: %d\n"
+#~ 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/cats/sql_get.c:770
-#, c-format
-msgid "error fetching Counter row: %s\n"
-msgstr "error al obtener fila Contador: %s\n"
+#~ 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/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"
+#~ msgid "End of Volume \"%s\" %d records.\n"
+#~ msgstr "Fin del Volumen \"%s\" %d registros.\n"
 
-#: 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"
+#~ msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
+#~ msgstr "Leer bloque=%u, VolBytes=%s velocidad=%sB/s\n"
 
-#: src/cats/sql_get.c:835
-#, c-format
-msgid "FileSet record \"%s\" not found.\n"
-msgstr "Registro FileSet \"%s\" no encontrado.\n"
+#~ msgid "Cannot open Dev=%s, Vol=%s\n"
+#~ msgstr "No se puede abrir Dev=%s, Vol=%s\n"
 
-#: src/cats/sql_get.c:845
-msgid "FileSet record not found in Catalog.\n"
-msgstr "Registro FileSet no encontrado en Catalogo.\n"
+#~ msgid "Nohdr,"
+#~ msgstr "Nohdr,"
 
-#: 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"
+#~ msgid "partial,"
+#~ msgstr "parcial,"
 
-#: src/cats/sql_get.c:979
-#, c-format
-msgid "query dbids failed: ERR=%s\n"
-msgstr "Consulta fallida a dbids: ERR=%s\n"
+#~ msgid "empty,"
+#~ msgstr "vacío,"
 
-#: src/cats/sql_get.c:1034
-#, c-format
-msgid "More than one Volume!: %s\n"
-msgstr "Mas de un Volumen!: %s\n"
+#~ msgid "Nomatch,"
+#~ msgstr "Nomatch,"
 
-#: src/cats/sql_get.c:1090
-#, c-format
-msgid "Media record MediaId=%s not found.\n"
-msgstr "Registro Media MediaID=%s no encontrado.\n"
+#~ msgid "cont,"
+#~ msgstr "cont,"
 
-#: 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"
+#~ msgid "No Storage resource defined in %s. Cannot continue.\n"
+#~ msgstr "Recurso Storage no definido en %s. No se puede continuar.\n"
 
-#: 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"
+#~ msgid "Volume name or names is too long. Please use a .bsr file.\n"
+#~ msgstr ""
+#~ "Nombre de Volumen o nombres es demasiado largo. Por favor, use un "
+#~ "archivo .BSR.\n"
 
-#: 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"
+#~ msgid "Cannot find device \"%s\" in config file %s.\n"
+#~ msgstr ""
+#~ "No se puede encontrar el dispositivo \"%s\" en el archivo de "
+#~ "configuración %s.\n"
 
-#: src/cats/sql_find.c:98 src/cats/sql_find.c:127 src/cats/sql_find.c:182
-#, c-format
-msgid ""
-"Query error for start time request: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-"Error de consulta al solicitar tiempo inicial: ERR=%s\n"
-"CMD=%s\n"
+#~ msgid "Cannot init device %s\n"
+#~ msgstr "No se pudo iniciar dispositivo %s\n"
 
-#: src/cats/sql_find.c:104 src/cats/sql_find.c:188
-msgid "No prior Full backup Job record found.\n"
-msgstr "No encontrado registro anterior de Job de respaldo completo.\n"
+#~ msgid "Cannot open %s\n"
+#~ msgstr "No se pudo abrir %s\n"
 
-#: src/cats/sql_find.c:116
-#, c-format
-msgid "Unknown level=%d\n"
-msgstr "Nivel desconocido=%d\n"
+#~ msgid "Could not find device \"%s\" in config file %s.\n"
+#~ msgstr ""
+#~ "No se pudo encontrar dispositivo \"%s\" en el archivo de configuración "
+#~ "%s.\n"
 
-#: src/cats/sql_find.c:133
-#, c-format
-msgid ""
-"No Job record found: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-"No se encuentra el registro de trabajo: ERR=%s\n"
-" CMD=%s\n"
+#~ msgid "Using device: \"%s\" for writing.\n"
+#~ msgstr "Utilizando el dispositivo: \"%s\" para escritura.\n"
 
-#: src/cats/sql_find.c:291
-#, c-format
-msgid "Unknown Job level=%d\n"
-msgstr "Nivel del Job desconocido=%d\n"
+#~ msgid "Using device: \"%s\" for reading.\n"
+#~ msgstr "Utilizando el dispositivo: \"%s\" para lectura.\n"
 
-#: src/cats/sql_find.c:301
-#, c-format
-msgid "No Job found for: %s.\n"
-msgstr "No se encontró ningún Job para: %s.\n"
+#~ msgid "Unexpected End of Data\n"
+#~ msgstr "Fin Inesperado de los Datos\n"
 
-#: src/cats/sql_find.c:312
-#, c-format
-msgid "No Job found for: %s\n"
-msgstr "Job no encontrado para:%s\n"
+#~ msgid "Unexpected End of Tape\n"
+#~ msgstr "Fin Inesperado de la Cinta\n"
 
-#: src/cats/sql_find.c:393
-#, c-format
-msgid "Request for Volume item %d greater than max %d or less than 1\n"
-msgstr "Solicitud de ítem Volumen %d mayor que el máximo %d o menor que 1\n"
+#~ msgid "Unexpected End of File\n"
+#~ msgstr "Fin Inesperado del Archivo\n"
 
-#: src/cats/sql_find.c:408
-#, c-format
-msgid "No Volume record found for item %d.\n"
-msgstr "Registro de ítem Volumen no encontrado %d.\n"
+#~ msgid "Tape Door is Open\n"
+#~ msgstr "Puerta de la cinta está abierta\n"
 
-#: 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"
+#~ msgid "Unexpected Tape is Off-line\n"
+#~ msgstr "Inesperado Cinta esta off-line\n"
 
-#: 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"
+#~ msgid "Unable to stat device %s: ERR=%s\n"
+#~ msgstr "No se puede stat dispositivo %s: ERR=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "%s is an unknown device type. Must be tape or directory\n"
+#~ " or have RequiresMount=yes for DVD. st_mode=%x\n"
+#~ 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/cats/sqlite.c:204
-msgid "unknown"
-msgstr "desconocido"
+#~ msgid "Unable to stat mount point %s: ERR=%s\n"
+#~ msgstr "No se puede stat punto de montaje %s: ERR=%s\n"
 
-#: 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"
+#~ 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"
+
+#~ msgid "Min block size > max on device %s\n"
+#~ msgstr "Mínimo tamaño de bloque > máximo en el dispositivo %s\n"
+
+#~ 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/cats/ingres.c:87
 #, fuzzy
-msgid "Failed to allocate space for query filter.\n"
-msgstr "No se pudo asignar memoria para la firma de cifrado.\n"
+#~ 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/cats/ingres.c:108
 #, fuzzy
-msgid "Failed to allocate space for query filters.\n"
-msgstr "No se pudo asignar memoria para la firma de cifrado.\n"
+#~ 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/cats/ingres.c:267
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to Ingres server.\n"
-"Database=%s User=%s\n"
-"It is probably not running or your password is incorrect.\n"
-msgstr ""
-"No se puede conectar al servidor MySQL.\n"
-"Base de Datos=%s Usuario=%s\n"
+#~ msgid "Unable to init cond variable: ERR=%s\n"
+#~ msgstr "No se puede iniciar variable cond: ERR=%s\n"
 
-#: 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"
+#~ msgid "Unable to init spool mutex: ERR=%s\n"
+#~ msgstr "No se puede iniciar mutex: ERR=%s\n"
 
-#: src/cats/sql.c:184
-#, c-format
-msgid ""
-"Potential performance problem:\n"
-"max_connections=%d set for %s database \"%s\" should be larger than "
-"Director's MaxConcurrentJobs=%d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init acquire mutex: ERR=%s\n"
+#~ msgstr "No se puede iniciar mutex: ERR=%s\n"
 
-#: src/cats/sql.c:229
-#, c-format
-msgid ""
-"query %s failed:\n"
-"%s\n"
-msgstr ""
-"consulta %s fallida:\n"
-"%s\n"
+#, fuzzy
+#~ msgid "Unable to init read acquire mutex: ERR=%s\n"
+#~ msgstr "No se puede iniciar mutex: ERR=%s\n"
 
-#: src/cats/sql.c:251
-#, c-format
-msgid ""
-"insert %s failed:\n"
-"%s\n"
-msgstr ""
-"Inserción %s fallida:\n"
-"%s\n"
+#, fuzzy
+#~ msgid "Unable to init volcat mutex: ERR=%s\n"
+#~ msgstr "No se puede iniciar mutex: ERR=%s\n"
 
-#: src/cats/sql.c:261
-#, c-format
-msgid "Insertion problem: affected_rows=%s\n"
-msgstr "Problemas con la inserción: filas afectadas=%s\n"
+#, fuzzy
+#~ msgid "Unable to init dcrs mutex: ERR=%s\n"
+#~ msgstr "No se puede iniciar mutex: ERR=%s\n"
 
-#: src/cats/sql.c:282
-#, c-format
-msgid ""
-"update %s failed:\n"
-"%s\n"
-msgstr ""
-"Actualizar %s fallida:\n"
-"%s\n"
+#~ msgid "Illegal mode given to open dev.\n"
+#~ msgstr "Modo ilegal dado para abrir dev.\n"
 
-#: src/cats/sql.c:292
-#, c-format
-msgid "Update failed: affected_rows=%s for %s\n"
-msgstr "Actualización fallida: celdas afectadas =%s por %s\n"
+#~ msgid "Bad device call. Device not open\n"
+#~ msgstr "Mala llamada de dispositivo. Dispositivo no abierto\n"
 
-#: src/cats/sql.c:314
-#, c-format
-msgid ""
-"delete %s failed:\n"
-"%s\n"
-msgstr ""
-"Borrado %s fallido:\n"
-"%s\n"
+#~ msgid "Seek error: ERR=%s\n"
+#~ msgstr "Seek error: ERR=%s\n"
 
-#: src/cats/sql.c:408
-#, c-format
-msgid "Path length is zero. File=%s\n"
-msgstr "La longitud de la ruta es nula. Archivo=%s\n"
+#~ msgid "lseek error on %s. ERR=%s.\n"
+#~ msgstr "Iseek error en %s. ERR=%s.\n"
 
-#: src/cats/sql.c:603
-msgid "No results to list.\n"
-msgstr "No hay resultados para listar.\n"
+#~ msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
+#~ msgstr "Fin de medio en Volumen \"%s\" Bytes=%s Bloques=%s en %s.\n"
 
-#: src/cats/sql.c:721
-#, fuzzy
-msgid "Could not init database batch connection\n"
-msgstr "No se pudo iniciar base de datos de Bacula\n"
+#~ msgid "New volume \"%s\" mounted on device %s at %s.\n"
+#~ msgstr "Nuevo volumen \"%s\" montado en el dispositivo %s en %s.\n"
 
-#: 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"
+#~ msgid "write_block_to_device Volume label failed. ERR=%s"
+#~ msgstr "Fallo de etiqueta de volumen write_block_to_device. ERR=%s"
 
-#: 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"
+#~ msgid "write_block_to_device overflow block failed. ERR=%s"
+#~ msgstr "Fallo de desbordamiento de bloque  write_block_to_device. ERR=%s"
 
-#: src/cats/postgresql.c:246
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to PostgreSQL server. Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-"No se puede conectar al servidor PostgreSQL.\n"
-"Base de datos=%s Usuario=%s\n"
-", probablemente no funciona o tu contraseña es incorrecta.\n"
+#~ msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
+#~ msgstr ""
+#~ "Error catastrófico. No se puede escribir bloque de desbordamiento al "
+#~ "dispositivo %s. ERR=%s"
+
+#~ msgid "Unable to open device %s: ERR=%s\n"
+#~ msgstr "No se puede abrir el dispositivo %s: ERR=%s\n"
 
-#: src/cats/postgresql.c:350
-msgid "PQescapeStringConn returned non-zero.\n"
-msgstr "PQescapeStringConn devuelto no-cero.\n"
+#~ msgid "Unable to open archive %s: ERR=%s\n"
+#~ msgstr "No se puede abrir archivo %s: ERR=%s\n"
+
+#~ msgid "Connection request from %s failed.\n"
+#~ msgstr "Fallo solicitud de conexión desde %s.\n"
+
+#~ msgid "Invalid connection from %s. Len=%d\n"
+#~ msgstr "Inválida conexión desde %s. Len=%d\n"
 
-#: src/cats/postgresql.c:368
 #, fuzzy
-msgid "PQescapeByteaConn returned NULL.\n"
-msgstr "PQescapeStringConn devuelto no-cero.\n"
+#~ msgid "Bad client command: %s"
+#~ msgstr "Malo comando nivel: %s\n"
 
-#: src/cats/postgresql.c:399
 #, fuzzy
-msgid "PQunescapeByteaConn returned NULL.\n"
-msgstr "PQescapeStringConn devuelto no-cero.\n"
+#~ msgid "Client daemon"
+#~ msgstr "demonio File"
 
-#: src/cats/postgresql.c:813
-#, c-format
-msgid "error fetching currval: %s\n"
-msgstr "error al obtener el valor: %s\n"
+#, fuzzy
+#~ msgid "Failed to connect to Client daemon: %s:%d\n"
+#~ msgstr "Error al conectar con el demonio de Storage: %s:%d\n"
 
-#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
-#, c-format
-msgid "error starting batch mode: %s"
-msgstr "Error iniciando modo batch: %s"
+#~ msgid "3991 Bad setdebug command: %s\n"
+#~ msgstr "3991 Malo comando setdebug: %s\n"
 
-#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
-#, c-format
-msgid "error ending batch mode: %s"
-msgstr "Error finalizando modo batch: %s"
+#~ msgid "3903 Error scanning cancel command.\n"
+#~ msgstr "3903 Error escaneando comando cancel.\n"
 
-#: src/cats/postgresql.c:1088
-#, c-format
-msgid "error copying in batch mode: %s"
-msgstr "Error copiando en modo batch: %s"
+#~ msgid "3904 Job %s not found.\n"
+#~ msgstr "3904 Job %s no encontrado.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
+#~ msgstr "JobId %s, Job %s marcado para ser cancelado.\n"
 
-#: src/cats/sql_list.c:59
-#, c-format
-msgid "Query failed: %s\n"
-msgstr "Consulta fallida: %s\n"
+#~ 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/cats/sql_list.c:275
-msgid "These JobIds have copies as follows:\n"
-msgstr "Estos JobIds tienen copias de la siguiente manera:\n"
+#~ msgid "3903 Error scanning label command: %s\n"
+#~ msgstr "3903 Error escaneando comando cancel: %s\n"
 
-#: src/cats/sql_list.c:277
-msgid "The catalog contains copies as follows:\n"
-msgstr "El catálogo contiene copias de la siguiente manera:\n"
+#, fuzzy
+#~ msgid "3910 Unable to open device \"%s\": ERR=%s\n"
+#~ msgstr "3910 No se puede abrir el dispositivo %s: ERR=%s\n"
 
-#: src/cats/dbi.c:117
-#, c-format
-msgid "Unknown database type: %s\n"
-msgstr "Tipo de base de datos desconocido: %s\n"
+#~ 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/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 ""
-"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"
+#~ msgid "3921 Wrong volume mounted.\n"
+#~ msgstr "3921 Volumen incorrecto montado.\n"
 
-#: src/cats/dbi.c:299
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-"No se pudo conectar a la interfaz DBI.\n"
-"Tipo=%s Base de Datos=%s Usuario=%s\n"
-"Probablemente no este ejecutando o su contraseña es incorrecta.\n"
+#~ msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
+#~ msgstr "3922 No se puede renombrar un volumen ANSI/IBM etiquetado.\n"
 
-#: src/cats/dbi.c:1439
-#, c-format
-msgid "error inserting batch mode: %s"
-msgstr "Error insertando en modo batch: %s"
+#~ msgid "3912 Failed to label Volume: ERR=%s\n"
+#~ msgstr "3912 Fallo al etiquetar el Volumen: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "3915 Failed to label Volume: ERR=%s\n"
+#~ msgstr "3912 Fallo al etiquetar el Volumen: ERR=%s\n"
 
-#: 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"
+#~ 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/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"
+#~ 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/cats/cats_dummy.c:39
-msgid "Please replace this dummy libbaccats library with a proper one.\n"
-msgstr ""
+#~ msgid "3001 Mounted Volume: %s\n"
+#~ msgstr "3001 Volumen Montado: %s\n"
 
-#: src/cats/sql_delete.c:80
-#, c-format
-msgid "No pool record %s exists\n"
-msgstr "Registro de pool %s inexistente\n"
+#, fuzzy
+#~ msgid ""
+#~ "3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "3902 No se puede montar el volumen en Storage Device %s debido a que:\n"
+#~ "%s"
 
-#: src/cats/sql_delete.c:85
-#, c-format
-msgid "Expecting one pool record, got %d\n"
-msgstr "Esperando un registro pool, tiene %d\n"
+#~ msgid ""
+#~ "\n"
+#~ "     Device \"%s\" requested by DIR could not be opened or does not "
+#~ "exist.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Dispositivo \"%s\" solicitado por el DIR no se pudo abrir o no existe.\n"
 
-#: src/cats/sql_delete.c:91
-#, c-format
-msgid "Error fetching row %s\n"
-msgstr "Error obteniendo fila %s\n"
+#~ msgid ""
+#~ "\n"
+#~ "     Device \"%s\" in changer \"%s\" requested by DIR could not be opened "
+#~ "or does not exist.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Dispositivo \"%s\" en el cambiador \"%s\" solicitado por el DIR no se "
+#~ "pudo abrir o no existe.\n"
 
-#: src/cats/mysql.c:207
-#, c-format
-msgid ""
-"Unable to connect to MySQL server.\n"
-"Database=%s User=%s\n"
-"MySQL connect failed either server not running or your authorization is "
-"incorrect.\n"
-msgstr ""
-"No se puede conectar al servidor MySQL.\n"
-"Base de Datos=%s Usuario=%s\n"
+#~ msgid "Specified slot ignored. "
+#~ msgstr "Ranura especificado ignorado."
 
-#: 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"
+#, fuzzy
+#~ msgid "3901 Unable to open device \"%s\": ERR=%s\n"
+#~ msgstr "3901 No se puede abrir el dispositivo %s: ERR=%s\n"
 
-#: src/wx-console/console_conf.c:147 src/console/console_conf.c:140
-#: src/qt-console/bat_conf.cpp:141
-#, c-format
-msgid "No record for %d %s\n"
-msgstr "Ningún registro para %d %s\n"
+#, fuzzy
+#~ msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
+#~ msgstr "3001 Dispositivo %s esta montado con volumen \"%s\"\n"
 
-#: src/wx-console/console_conf.c:156 src/console/console_conf.c:149
-#, c-format
-msgid "Console: name=%s rcfile=%s histfile=%s\n"
-msgstr "Console: nombre=%s rcfile=%s histfile=%s\n"
+#, fuzzy
+#~ 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 ""
+#~ "3905 Dispositivo %s abierto, pero ninguno volumen Bacula está montado.\n"
+#~ "Si esto no es una cinta en blanco, trate de desmontar y volver a montar "
+#~ "el volumen.\n"
 
-#: src/wx-console/console_conf.c:160 src/console/console_conf.c:153
-#: src/qt-console/bat_conf.cpp:150
-#, c-format
-msgid "Director: name=%s address=%s DIRport=%d\n"
-msgstr "Director: nombre=%s dirección=%s DIRport=%d\n"
+#, fuzzy
+#~ msgid "3001 Device \"%s\" is doing acquire.\n"
+#~ msgstr "3001% s dispositivo está haciendo adquirir.\n"
 
-#: src/wx-console/authenticate.c:142 src/console/authenticate.c:138
-msgid "TLS negotiation failed\n"
-msgstr "Negociación TLS fallida\n"
+#, fuzzy
+#~ msgid "3903 Device \"%s\" is being labeled.\n"
+#~ msgstr "3903 Dispositivo %s ha sido etiquetada.\n"
 
-#: src/wx-console/authenticate.c:150
-msgid "Bad response to Hello command: ERR="
-msgstr "mala respuesta al comando Hello: ERR ="
+#, fuzzy
+#~ msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
+#~ msgstr "3001 Dispositivo %s ya está montado con el volumen \"%s\"\n"
 
-#: src/wx-console/authenticate.c:167 src/console/authenticate.c:169
 #, fuzzy
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-"Problema de Autorización de Director.\n"
-"El más probable es que las contraseñas no están de acuerdo.\n"
-"Si usted esta utilizando TLS, puede haber habido un error de validación de "
-"certificado durante el apretón de manos TLS.\n"
-"Por favor, consulte http://www.bacula.org/en/rel-manual/"
-"Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 para ayuda.\n"
+#~ msgid "3002 Device \"%s\" is mounted.\n"
+#~ msgstr "3002 Dispositivo %s está montado.\n"
 
-#: src/console/console.c:126
-#, c-format
-msgid ""
-"\n"
-"Version: "
-msgstr ""
-"\n"
-"Versión: "
+#~ msgid "3907 %s"
+#~ msgstr "3907 %s"
 
-#: src/console/console.c:178
-msgid "input from file"
-msgstr "entrada desde archivo"
+#, fuzzy
+#~ msgid "3906 File device \"%s\" is always mounted.\n"
+#~ msgstr "3906 Dispositivo de Archivo %s está siempre montado.\n"
 
-#: src/console/console.c:179
-msgid "output to file"
-msgstr "salida a archivo"
+#, fuzzy
+#~ msgid "3930 Device \"%s\" is being released.\n"
+#~ msgstr "3903 Dispositivo %s ha sido etiquetada.\n"
 
-#: src/console/console.c:180
-msgid "quit"
-msgstr "salir"
+#, fuzzy
+#~ msgid "3905 Unknown wait state %d\n"
+#~ msgstr "Estado del Analizador %d desconocido\n"
 
-#: src/console/console.c:181
-msgid "output to file and terminal"
-msgstr "salida a archivo y pantalla"
+#~ msgid "3909 Error scanning mount command: %s\n"
+#~ msgstr "3909 Error escaneando comando mount: %s\n"
 
-#: src/console/console.c:182
-msgid "sleep specified time"
-msgstr "tiempo de espera especificado"
+#, fuzzy
+#~ msgid "3002 Device \"%s\" unmounted.\n"
+#~ msgstr "3002 Dispositivo %s desmontado.\n"
 
-#: src/console/console.c:183
-msgid "print current time"
-msgstr "imprimir hora actual"
+#, fuzzy
+#~ msgid "3901 Device \"%s\" is already unmounted.\n"
+#~ msgstr "3901 Dispositivos %s ya está desmontado.\n"
 
-#: src/console/console.c:184
-msgid "print Console's version"
-msgstr "imprimir la versión de la Consola"
+#, fuzzy
+#~ msgid "3001 Device \"%s\" unmounted.\n"
+#~ msgstr "3001 Dispositivo %s desmontado.\n"
 
-#: src/console/console.c:185
-msgid "echo command string"
-msgstr "cadena de comando echo"
+#, fuzzy
+#~ msgid "3902 Device \"%s\" is busy in acquire.\n"
+#~ msgstr "3902 Dispositivo %s está ocupado en adquirir.\n"
 
-#: src/console/console.c:186
-msgid "execute an external command"
-msgstr "ejecutar un comando externo"
+#~ msgid "3907 Error scanning unmount command: %s\n"
+#~ msgstr "3907 Error escaneando comando unmount: %s\n"
 
-#: src/console/console.c:187
-msgid "exit = quit"
-msgstr "exit = salir"
+#~ msgid "3916 Error scanning action_on_purge command\n"
+#~ msgstr "3916 Error de escaneando comando action_on_purge\n"
 
-#: src/console/console.c:188
-msgid "zed_keys = use zed keys instead of bash keys"
-msgstr "zed_keys = usar las teclas zed en lugar de teclas bash"
+#, fuzzy
+#~ msgid "3921 Device \"%s\" already released.\n"
+#~ msgstr "3921 Dispositivo %s ya liberado.\n"
 
-#: src/console/console.c:189
-msgid "help listing"
-msgstr "listado de ayuda"
+#, fuzzy
+#~ msgid "3922 Device \"%s\" waiting for sysop.\n"
+#~ msgstr "3922 Dispositivo %s aguardando por sysop.\n"
 
-#: src/console/console.c:191
-msgid "set command separator"
-msgstr "configurar separador de comandos"
+#, fuzzy
+#~ msgid "3922 Device \"%s\" waiting for mount.\n"
+#~ msgstr "3922 Dispositivo %s aguardando por montar.\n"
 
-#: src/console/console.c:225
-msgid ": is an invalid command\n"
-msgstr ": es un comando invalido\n"
+#, fuzzy
+#~ msgid "3923 Device \"%s\" is busy in acquire.\n"
+#~ msgstr "3923 Dispositivo %s está ocupado en adquirir.\n"
 
-#: src/console/console.c:675
-msgid "Illegal separator character.\n"
-msgstr "Ilegal carácter de separación.\n"
+#, fuzzy
+#~ msgid "3914 Device \"%s\" is being labeled.\n"
+#~ msgstr "3914 Dispositivo %s ha sido etiquetada.\n"
 
-#: src/console/console.c:708
-msgid "Command logic problem\n"
-msgstr "Problema lógico de comando\n"
+#, fuzzy
+#~ msgid "3022 Device \"%s\" released.\n"
+#~ msgstr "3022 Dispositivo %s liberado.\n"
 
-#: src/console/console.c:925
-#, fuzzy, c-format
-msgid "Can't find %s in Director list\n"
-msgstr "No se puede encontrar el recurso Director %s\n"
+#~ msgid "3927 Error scanning release command: %s\n"
+#~ msgstr "3927 Error escaneando  comando de liberación: %s\n"
 
-#: src/console/console.c:933
-msgid "Available Directors:\n"
-msgstr "Directors disponibles:\n"
+#~ msgid "Could not create bootstrap file %s: ERR=%s\n"
+#~ msgstr "No se pudo crear el archivo de arranque %s: ERR=%s\n"
 
-#: src/console/console.c:937
-#, c-format
-msgid "%2d:  %s at %s:%d\n"
-msgstr "%2d: %s en %s:%d\n"
+#~ msgid "Error parsing bootstrap file.\n"
+#~ msgstr "Error analizando archivo bootstrap.\n"
 
-#: src/console/console.c:941
-msgid "Select Director by entering a number: "
-msgstr "Seleccione Director introduciendo un numero:"
+#, fuzzy
+#~ msgid "3998 Device \"%s\" is not an autochanger.\n"
+#~ msgstr "3995 Dispositivo %s no es un auto-cargador.\n"
 
-#: src/console/console.c:948
-#, c-format
-msgid "%s is not a number. You must enter a number between 1 and %d\n"
-msgstr "%s no es un número. Debe introducir un número entre 1 y %d\n"
+#, fuzzy
+#~ msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
+#~ msgstr ""
+#~ "3908 Error comando scanning auto-cambiador drives/list/ranuras: %s\n"
 
-#: src/console/console.c:955
-#, c-format
-msgid "You must enter a number between 1 and %d\n"
-msgstr "Debe de introducir un numero entre 1 y %d\n"
+#~ msgid "3909 Error scanning readlabel command: %s\n"
+#~ msgstr "3909 Error comando scanning readlabel: %s\n"
 
-#: src/console/console.c:1160 src/wx-console/console_thread.cpp:399
-#: 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"
+#~ msgid "3001 Volume=%s Slot=%d\n"
+#~ msgstr "3001 Volumen=%s Ranura=%d\n"
 
-#: src/console/console.c:1180 src/wx-console/console_thread.cpp:420
-#: 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"
+#, fuzzy
+#~ msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
+#~ msgstr "3931 Dispositivo %s está BLOQUEADO. Usuario sin montar.\n"
 
-#: src/console/console.c:1210
-msgid "Enter a period to cancel a command.\n"
-msgstr "Introduzca un período para cancelar un comando.\n"
+#, fuzzy
+#~ msgid ""
+#~ "3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/"
+#~ "mount.\n"
+#~ msgstr ""
+#~ "3932 Dispositivo %s está BLOQUEADO. Usuario sin montar en espera por "
+#~ "medios/montar.\n"
 
-#: src/console/console.c:1304 src/qt-console/main.cpp:232
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in %s. At least one CA certificate store is required.\n"
-msgstr ""
-"Ni \"Certificado TLS CA\" o \"Directorio de Certificado TLS CA\" están "
-"definidos para Director \"%s\" en %s. Por lo menos un almacén de "
-"Certificados CA es necesario.\n"
+#, fuzzy
+#~ msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
+#~ msgstr "3933 Dispositivo %s está BLOQUEADO esperando por media.\n"
 
-#: src/console/console.c:1313 src/qt-console/main.cpp:241
-#, c-format
-msgid ""
-"No Director resource defined in %s\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-"Recurso Director no definido en %s\n"
-"Sin eso no sé cómo hablar con el Director :-(\n"
+#, fuzzy
+#~ msgid "3934 Device \"%s\" is being initialized.\n"
+#~ msgstr "3934 Dispositivo %s se está inicializado.\n"
 
-#: src/console/console.c:1333 src/qt-console/main.cpp:262
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s.\n"
-msgstr ""
-"Ni \"Certificado TLS CA\" o \"Directorio de Certificado TLS CA\" están "
-"definidos para Console \"%s\" en %s.\n"
+#, fuzzy
+#~ msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
+#~ msgstr "3935 Dispositivo %s está BLOQUEADO etiquetando un Volumen.\n"
 
-#: src/console/console.c:1359
-msgid "Too many arguments on input command.\n"
-msgstr "Demasiados argumentos en comando de entrada.\n"
+#, fuzzy
+#~ msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
+#~ msgstr "3935 Dispositivo %s está BLOQUEADO por razón desconocida.\n"
 
-#: src/console/console.c:1363
-msgid "First argument to input command must be a filename.\n"
-msgstr ""
-"Primer argumento para comandos de entrada debe ser un nombre de archivo.\n"
+#, fuzzy
+#~ msgid "3936 Device \"%s\" is busy reading.\n"
+#~ msgstr "3936 Dispositivo %s está ocupado leyendo.\n"
 
-#: src/console/console.c:1369
-#, c-format
-msgid "Cannot open file %s for input. ERR=%s\n"
-msgstr "No se puede abrir el archivo %s para entrada. ERR=%s\n"
+#, fuzzy
+#~ msgid "3937 Device \"%s\" is busy with writers=%d reserved=%d.\n"
+#~ msgstr "3937 Dispositivo %s está ocupado con %d escritura(s).\n"
 
-#: src/console/console.c:1401
-msgid "Too many arguments on output/tee command.\n"
-msgstr "Demasiados argumentos en la salida del comando output/tee.\n"
+#, fuzzy
+#~ msgid "Command error with FD, hanging up. ERR=%s\n"
+#~ msgstr "Error de comando con FD, colgando. %s\n"
 
-#: src/console/console.c:1418
-#, c-format
-msgid "Cannot open file %s for output. ERR=%s\n"
-msgstr "No se puede abrir el archivo %s para salida. ERR=%s\n"
+#~ msgid "Command error with FD, hanging up.\n"
+#~ msgstr "Error de comando con FD, colgando.\n"
 
-#: src/console/console.c:1437
-msgid "Too many arguments. Enclose command in double quotes.\n"
-msgstr "Demasiados argumentos. Incluya comando entre comillas dobles.\n"
+#~ msgid "FD command not found: %s\n"
+#~ msgstr "Comando FD no encontrado:% s \n"
 
-#: src/console/console.c:1446
-#, c-format
-msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
-msgstr "No puede popen(\"%s\", \"r\"): ERR=%s\n"
+#~ msgid "Attempt to append on non-open session.\n"
+#~ msgstr "Intento de anexar en sesión no abierta.\n"
 
-#: src/tools/testls.c:59
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -q          quiet, don't print filenames (debug)\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
-msgstr ""
-"\n"
-"Utilice: testls [-d nivel_ depuración] [-] [patrón1 ...]\n"
-" -a imprime atributos extendidos (depuración de Win32)\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -e especifica archivo de exclusión de patrones\n"
-" -i especifica archivo de inclusión de patrones\n"
-" - leer patrón(es) desde stdin\n"
+#~ msgid "Attempt to close non-open session.\n"
+#~ msgstr "Intento de cerrar sesión no abierta.\n"
 
-#: src/tools/testls.c:155
-#, c-format
-msgid "Could not open include file: %s\n"
-msgstr "No se pudo abrir el archivo incluir: %s\n"
+#~ msgid "Attempt to open already open session.\n"
+#~ msgstr "Intento de abrir sesión ya abierta.\n"
 
-#: src/tools/testls.c:168
-#, c-format
-msgid "Could not open exclude file: %s\n"
-msgstr "No se pudo abrir el archivo excluir: %s\n"
+#~ msgid "Attempt to read on non-open session.\n"
+#~ msgstr "Intento de leer sesión no abierta.\n"
 
-#: src/tools/testls.c:182
-#, c-format
-msgid "Files seen = %d\n"
-msgstr ""
+#~ msgid "Attempt to open read on non-open session.\n"
+#~ msgstr "Intento de abrir leer sesión no abierta.\n"
 
-#: src/tools/testls.c:215 src/tools/testfind.c:322
-#, c-format
-msgid "Err: Could not access %s: %s\n"
-msgstr "Err: No es posible acceder %s: %s\n"
+#~ msgid "Bad call to reposition. Device not open\n"
+#~ msgstr "Mala llamada a reposición. El dispositivo no abre\n"
 
-#: src/tools/testls.c:218 src/tools/testfind.c:325
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
-msgstr "Err: no podía seguir ff->link %s: %s\n"
+#~ 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/tools/testls.c:221 src/tools/testfind.c:328
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
-msgstr "Err: no se pudo stat %s: %s\n"
+#, fuzzy
+#~ msgid "Could not open(%s,%s,0640): ERR=%s\n"
+#~ msgstr "No se pudo abrir %s: ERR=%s\n"
 
-#: src/tools/testls.c:224 src/tools/testfind.c:331
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
-msgstr "Saltar: Archivo no guardado. Sin cambios. %s\n"
+#~ msgid "Unable to truncate device %s. ERR=%s\n"
+#~ msgstr "No se puede truncar el dispositivo %s. ERR=%s\n"
 
-#: src/tools/testls.c:227 src/tools/testfind.c:334
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
-msgstr "Err: Intento de copia de seguridad. No guardado. %s\n"
+#~ msgid "Unable to stat device %s. ERR=%s\n"
+#~ msgstr "No se pudo stat dispositivo %s. ERR=%s\n"
 
-#: src/tools/testls.c:230
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
-msgstr "Recursión deshabilitada. No entró al directorio. %s\n"
+#~ msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
+#~ msgstr "Dispositivo %s no admite ftruncate(). Recreando el archivo %s.\n"
 
-#: src/tools/testls.c:233
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
-msgstr ""
-"Saltar: Cambio de sistema de archivos prohibido. No entró al directorio. %s\n"
+#~ msgid "Could not reopen: %s, ERR=%s\n"
+#~ msgstr "No se pudo reabrir: %s, ERR=%s\n"
 
-#: src/tools/testls.c:236 src/tools/testfind.c:337
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
-msgstr "Err: no se pudo abrir el directorio %s: %s\n"
+#~ msgid "Device %s cannot be %smounted. ERR=%s\n"
+#~ msgstr "Dispositivo %s no puede ser %smounted. ERR=%s\n"
 
-#: src/tools/testls.c:239 src/tools/testfind.c:340
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
-msgstr "Err: Archivo desconocido ff->tipo %d: %s\n"
+#, fuzzy
+#~ msgid "Client socket not open. Could not connect to Client.\n"
+#~ msgstr "Fallo al conectar con el cliente.\n"
 
-#: src/tools/bvfs_test.c:56 src/tools/ing_test.c:57
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -j <jobids>       specify jobids\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -T                truncate cache table before starting\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -n <nombre> especifica el nombre de la base de datos (por defecto bacula)\n"
-" -u <usuario> especifica el nombre de usuario de la base de datos (por "
-"defecto bacula)\n"
-" -P <contraseña> especifica la contraseña de la base de datos (por defecto "
-"none)\n"
-" -h <servidor> especifica servidor de la base de datos (por defecto NULL)\n"
-" -w <directorio> especifica el directorio de trabajo\n"
-" -j <jobids> especifica jobids\n"
-" -p <ruta> especifica la ruta\n"
-" -f <archivo> especifica el archivo\n"
-" -l <limite> tupla máxima a buscar\n"
-" -T Truncar tabla de caché antes de empezar\n"
-" -v detallado\n"
-" -? imprime esta mensaje\n"
-"\n"
+#, fuzzy
+#~ msgid "Recv request to Client failed. ERR=%s\n"
+#~ msgstr "Fallo solicitud de conexión desde %s.\n"
 
-#: src/tools/bbatch.c:79
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"Example : bbatch -w /path/to/workdir -h localhost -f dat1 -f dat -f datx\n"
-" will start 3 thread and load dat1, dat and datx in your catalog\n"
-"See bbatch.c to generate datafile\n"
-"\n"
-"Usage: bbatch [ options ] -w working/dir -f datafile\n"
-"       -b                with batch mode\n"
-"       -B                without batch mode\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -r <jobids>       call restore code with given jobids\n"
-"       -v                verbose\n"
-"       -f <file>         specify data file\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-"Ejemplo : bbatch -w /ruta/para/directorio/trabajo -h localhost -f dat1 -f "
-"dat -f datx\n"
-" inicializará 3 hilos y cargará dat1, dat y datx en su catalogo\n"
-"Vea bbatch.c para generar archivos de datos\n"
-"\n"
-"Utilice: bbatch [opciones] -w directorio/trabajo -f archivo_de_datos\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -n <nombre> especifica el nombre de la base de datos (por defecto bacula)\n"
-" -u <usuario> especifica el nombre de usuario de la base de datos (por "
-"defecto bacula)\n"
-" -P <contraseña> especifica la contraseña de la base de datos (por defecto "
-"none)\n"
-" -h <servidor> especifica servidor de la base de datos (por defecto NULL)\n"
-" -w <directorio> especifica el directorio de trabajo\n"
-" -v detallado\n"
-" -f <archivo> especifica archivo de datos\n"
-" -? imprime esta mensaje\n"
-"\n"
+#, fuzzy
+#~ msgid "Bad Hello from Client: %s.\n"
+#~ msgstr "Malo comando Hello desde Director en %s: %s\n"
 
-#: src/tools/bbatch.c:211
-#, c-format
-msgid "Computing file list for jobid=%s files=%lld secs=%d\n"
-msgstr ""
+#~ msgid "Unable to authenticate File daemon\n"
+#~ msgstr "No se puede autenticar demonio File\n"
 
-#: src/tools/bbatch.c:315
-#, c-format
-msgid "Error opening datafile %s\n"
-msgstr "Error abriendo archivo de datos %s\n"
+#~ msgid "FD connect failed: Job name not found: %s\n"
+#~ msgstr "Fallo al conectar a FD: Nombre del Job no encontrado: %s\n"
 
-#: src/tools/bbatch.c:325
-msgid "Error while inserting file\n"
-msgstr "Error insertando el archivo\n"
+#~ msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
+#~ msgstr "Hey!!!! JobId %u Job %s ya autenticada.\n"
 
-#: src/tools/ing_test.c:231 src/tools/ing_test.c:264 src/tools/ing_test.c:302
-msgid "Stmt went wrong\n"
-msgstr ""
+#~ msgid "In free_jcr(), but still attached to device!!!!\n"
+#~ msgstr "En free_jcr(), pero todavía conectado al dispositivo!!!!\n"
 
-#: src/tools/ing_test.c:320
-msgid "CREATE-Stmt went wrong\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Couldn't rewind %s device %s: ERR=%s\n"
+#~ msgstr "No se puede rebobinar dispositivo %s: ERR=%s\n"
 
-#: src/tools/ing_test.c:325
-msgid "DROP-Stmt went wrong\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Wrong Volume mounted on %s device %s: Wanted %s have %s\n"
+#~ msgstr ""
+#~ "Volumen incorrecto montado en el dispositivo %s: Esperaba %s tiene %s\n"
 
-#: src/tools/fstype.c:48
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-v] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Utilice: fstype [-v] ruta ...\n"
-"\n"
-" Imprime el tipo de sistema de archivo de un determinado archivo/"
-"directorio.\n"
-"Las siguientes opciones son compatibles:\n"
-"\n"
-" -v imprimir tanto tipo de rutas y sistema de archivos.\n"
-" -? imprimir este mensaje.\n"
-"\n"
+#~ msgid "Too many tries: %s"
+#~ msgstr "Demasiados intentos: %s"
 
-#: src/tools/fstype.c:102 src/tools/drivetype.c:78
-#, c-format
-msgid "%s: unknown\n"
-msgstr "%s: desconocido\n"
+#, fuzzy
+#~ msgid ""
+#~ "Requested Volume \"%s\" on %s device %s is not a Bacula labeled Volume, "
+#~ "because: ERR=%s"
+#~ msgstr ""
+#~ "Volumen requerido \"%s\" en %s no es un volumen etiquetado Bacula, debido "
+#~ "a que: ERR=%s"
 
-#: src/tools/bregex.c:153 src/tools/bwild.c:122 src/tools/bregtest.c:137
-#, c-format
-msgid "Could not open data file: %s\n"
-msgstr "No se pudo abrir el archivo de datos: %s\n"
+#~ msgid "Could not read Volume label from block.\n"
+#~ msgstr "No se pudo leer la etiqueta de volumen desde bloque.\n"
 
-#: src/tools/drivetype.c:47
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Usage: drivetype [-v] path ...\n"
-"\n"
-"       Print the drive type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -l     print local fixed hard drive\n"
-"       -a     display information on all drives\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Utilice: drivetype [-v] ruta ...\n"
-"\n"
-" Imprime el tipo de unidad dado a archivo/directorio esta activada.\n"
-" Las siguientes opciones están soportados:\n"
-"\n"
-" -v imprime ambos tipos de rutas y archivo de sistemas.\n"
-" -? imprime esta mensaje.\n"
-"\n"
+#~ msgid "Could not unserialize Volume label: ERR=%s\n"
+#~ msgstr "No se pudo unserialize etiqueta del Volumen: ERR=%s\n"
 
-#: src/tools/testfind.c:70
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -c          specify config file containing FileSet resources\n"
-"       -f          specify which FileSet to use\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
-msgstr ""
-"\n"
-"Utilice: testfind [-d nivel_ depuración] [-] [patrón1 ...]\n"
-" -a imprime atributos extendidos (depuración de Win32)\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -c especifica archivo de conteniendo recursos FileSet\n"
-" -f especifica cual FileSet para usar\n"
-" -? imprime esta mensaje.\n"
-"\n"
-"Los patrones son archivos de inclusión - normalmente directorios.\n"
-"Nivel de depuración >= 1 imprime cada archivo encontrado.\n"
-"Nivel de depuración >= 10 imprime ruta/archivo para catalogo.\n"
-"Los errores siempre se imprimen.\n"
-"Archivos/rutas truncados es numero con longitud > 255.\n"
-"Truncamiento es sólo en catálogo..\n"
-"\n"
+#~ msgid "Volume Header Id bad: %s\n"
+#~ msgstr "Malo Id de cabecera de Volumen: %s\n"
 
-#: src/tools/testfind.c:235
-#, c-format
-msgid ""
-"\n"
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
-msgstr ""
-"\n"
-"Total de Archivos : %d\n"
-"Longitud máxima de archivo: %d\n"
-"Longitud máxima de ruta: %d\n"
-"Archivos truncados: %d\n"
-"Rutas truncadas: %d\n"
-"Enlaces duros : %d\n"
-
-#: src/tools/testfind.c:278
-#, c-format
-msgid "Reg: %s\n"
-msgstr "Reg: %s\n"
+#, fuzzy
+#~ msgid "Volume on %s device %s has wrong Bacula version. Wanted %d got %d\n"
+#~ msgstr ""
+#~ "Volumen en %s tiene la versión incorrecta de Bacula. Busco %d tiene %d\n"
 
-#: src/tools/testfind.c:300
-msgid "\t[will not descend: recursion turned off]"
-msgstr "\t[no descenderá: recursividad desactivado]"
+#, fuzzy
+#~ msgid "Volume on %s device %s has bad Bacula label type: %x\n"
+#~ msgstr "Volumen en %s tiene una malo tipo de etiqueta Bacula: %x\n"
 
-#: src/tools/testfind.c:302
-msgid "\t[will not descend: file system change not allowed]"
-msgstr "\t[no descenderá: no permitido cambio de sistema de archivo]"
+#, fuzzy
+#~ msgid "Could not reserve volume %s on %s device %s\n"
+#~ msgstr "No es posible reservar volumen %s en %s\n"
 
-#: src/tools/testfind.c:304
-msgid "\t[will not descend: disallowed file system]"
-msgstr "\t[no descenderá: sistema de archivo no permitido]"
+#, fuzzy
+#~ msgid "Cannot write Volume label to block for %s device %s\n"
+#~ msgstr ""
+#~ "No se puede escribir la etiqueta de volumen para bloquear el dispositivo "
+#~ "%s\n"
 
-#: src/tools/testfind.c:306
-msgid "\t[will not descend: disallowed drive type]"
-msgstr "\t[no descenderá: tipo de unidad no permitido]"
+#, fuzzy
+#~ msgid "Open %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Fallo al abrir dispositivo %s Volumen \"%s\": ERR=%s\n"
 
-#: src/tools/testfind.c:390
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
-msgstr "===== Nombre de Archivo truncado para 255 caracteres: %s\n"
+#, fuzzy
+#~ msgid "Rewind error on %s device %s: ERR=%s\n"
+#~ msgstr "Error de rebobinado en el dispositivo %s: ERR=%s\n"
 
-#: src/tools/testfind.c:407
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
-msgstr "========== Nombre de Ruta truncado para 255 caracteres: %s\n"
+#, fuzzy
+#~ msgid "Truncate error on %s device %s: ERR=%s\n"
+#~ msgstr "Error al truncar en el dispositivo %s :ERR=%s\n"
 
-#: src/tools/testfind.c:416
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
-msgstr "========== La longitud de la ruta es nula. Archivo=%s\n"
+#, fuzzy
+#~ msgid "Failed to re-open DVD after truncate on %s 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/tools/testfind.c:419
-#, c-format
-msgid "Path: %s\n"
-msgstr "Ruta: %s\n"
+#, fuzzy
+#~ msgid "Unable to write %s device %s: ERR=%s\n"
+#~ msgstr "No es posible escribir el dispositivo %s: ERR=%s\n"
 
-#: src/tools/cats_test.c:60
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -q                print only errors\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s)\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -n <nombre> especifica el nombre de la base de datos (por defecto bacula)\n"
-" -u <usuario> especifica el nombre de usuario de la base de datos (por "
-"defecto bacula)\n"
-" -P <contraseña> especifica la contraseña de la base de datos (por defecto "
-"none)\n"
-" -h <servidor> especifica servidor de la base de datos (por defecto NULL)\n"
-" -w <directorio> especifica el directorio de trabajo\n"
-" -j <jobids> especifica jobids\n"
-" -p <ruta> especifica la ruta\n"
-" -f <archivo> especifica el archivo\n"
-" -l <limite> tupla máxima a buscar\n"
-" -T Truncar tabla de caché antes de empezar\n"
-" -v detallado\n"
-" -? imprime esta mensaje\n"
-"\n"
+#, fuzzy
+#~ msgid "Recycled volume \"%s\" on %s device %s, all previous data lost.\n"
+#~ msgstr ""
+#~ "Volumen \"%s\" reciclado en el dispositivo %s, todos los datos anteriores "
+#~ "perdidos.\n"
 
-#: src/tools/cats_test.c:376
-#, fuzzy, c-format
-msgid "Could not open, database \"%s\".\n"
-msgstr "No se puede abrir la base de datos \"%s\".\n"
+#, fuzzy
+#~ msgid "Wrote label to prelabeled Volume \"%s\" on %s device %s\n"
+#~ msgstr ""
+#~ "Escribió etiqueta de volumen  \"%s\" pre-etiquetada en el dispositivo %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Bad Volume session label request=%d\n"
+#~ msgstr "Mala etiqueta de Volumen de sesión = %d\n"
 
-#: src/tools/bsmtp.c:159
-#, c-format
-msgid "Fatal fgets error: ERR=%s\n"
-msgstr "fgets fatal error: ERR=%s\n"
+#~ 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/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"
-"       -f          set the From: field\n"
-"       -h          use mailhost:port as the SMTP server\n"
-"       -s          set the Subject: field\n"
-"       -r          set the Reply-To: field\n"
-"       -l          set the maximum number of lines to send (default: "
-"unlimited)\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Utilice: %s [-f desde] [-h servidor de correo] [-s asunto] [-c con copia] "
-"[destinatario ...]\n"
-" -8 conjunto charset a UTF-8\n"
-" -c establece el campo Cc:\n"
-" -d <nn> establece el nivel de depuración para <nn>\n"
-" -dt imprime un timestamp en salida de depuración\n"
-" -f establece el campo Desde:\n"
-" -h use servidor de correo:puerto como servidor SMTP\n"
-" -s establece el campo Asunto:\n"
-" -r establece el campo Responder-Para:\n"
-" -l establece el número máximo de líneas a enviar (por defecto: sin límite)\n"
-" -? imprimir este mensaje.\n"
-"\n"
+#~ msgid "Unknown %d"
+#~ msgstr "Desconocido %d"
 
-#: src/tools/bsmtp.c:379
-msgid "Fatal error: no recipient given.\n"
-msgstr "Fatal error: destinatario no determinado.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Volume Label:\n"
+#~ "Id                : %sVerNo             : %d\n"
+#~ "VolName           : %s\n"
+#~ "PrevVolName       : %s\n"
+#~ "VolFile           : %d\n"
+#~ "LabelType         : %s\n"
+#~ "LabelSize         : %d\n"
+#~ "PoolName          : %s\n"
+#~ "MediaType         : %s\n"
+#~ "PoolType          : %s\n"
+#~ "HostName          : %s\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Volumen Label:\n"
+#~ "Id : %sVerNo : %d\n"
+#~ "VolName : %s\n"
+#~ "PrevVolName : %s\n"
+#~ "VolFile : %d\n"
+#~ "LabelType : %s\n"
+#~ "LabelSize : %d\n"
+#~ "PoolName : %s\n"
+#~ "MediaType : %s\n"
+#~ "PoolType : %s\n"
+#~ "HostName : %s\n"
+
+#~ msgid "Date label written: %s\n"
+#~ msgstr "Fecha de etiqueta escrito: %s\n"
+
+#~ msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
+#~ msgstr "Fecha de etiqueta escrito: %04d-%02d-%02d at %02d:%02d\n"
 
-#: src/tools/bsmtp.c:407
-#, c-format
-msgid "Fatal gethostname error: ERR=%s\n"
-msgstr "gethostname fatal error: ERR=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "%s Record:\n"
+#~ "JobId             : %d\n"
+#~ "VerNum            : %d\n"
+#~ "PoolName          : %s\n"
+#~ "PoolType          : %s\n"
+#~ "JobName           : %s\n"
+#~ "ClientName        : %s\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s Registro:\n"
+#~ "JobId : %d\n"
+#~ "VerNum : %d\n"
+#~ "Nombre Pool : %s\n"
+#~ "Tipo del Pool : %s\n"
+#~ "Nombre del Job : %s\n"
+#~ "Nombre del Cliente : %s\n"
 
-#: 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"
+#~ msgid ""
+#~ "Job (unique name) : %s\n"
+#~ "FileSet           : %s\n"
+#~ "JobType           : %c\n"
+#~ "JobLevel          : %c\n"
+#~ msgstr ""
+#~ "Job (nombre único) : %s\n"
+#~ "FileSet : %s\n"
+#~ "Tipo de Job : %c\n"
+#~ "JobLevel : %c\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"
+#~ msgid ""
+#~ "JobFiles          : %s\n"
+#~ "JobBytes          : %s\n"
+#~ "StartBlock        : %s\n"
+#~ "EndBlock          : %s\n"
+#~ "StartFile         : %s\n"
+#~ "EndFile           : %s\n"
+#~ "JobErrors         : %s\n"
+#~ "JobStatus         : %c\n"
+#~ msgstr ""
+#~ "JobFiles : %s\n"
+#~ "JobBytes : %s\n"
+#~ "StartBlock : %s\n"
+#~ "EndBlock : %s\n"
+#~ "StartFile : %s\n"
+#~ "EndFile : %s\n"
+#~ "JobErrors : %s\n"
+#~ "JobStatus : %c\n"
 
-#: 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"
+#~ msgid "Date written      : %s\n"
+#~ msgstr "Fecha escrito: %s\n"
 
-#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
-msgid "Retrying connection using \"localhost\".\n"
-msgstr "Reintentando la conexión usando \"localhost\".\n"
+#~ msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
+#~ msgstr "Fecha escrito: %04d-%02d-%02d at %02d:%02d\n"
 
-#: src/tools/bsmtp.c:514
-#, fuzzy, c-format
-msgid "Failed to connect to mailhost %s\n"
-msgstr "Fallo al conectar con el cliente.\n"
+#~ msgid "Fresh Volume"
+#~ msgstr "Volumen fresco"
 
-#: 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"
+#~ msgid "Volume"
+#~ msgstr "Volumen"
 
-#: 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"
+#~ msgid "End of Media"
+#~ msgstr "Fin de la Media"
 
-#: 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"
+#~ msgid "End of Tape"
+#~ msgstr "Fin de la Cinta"
 
-#: src/tools/bsmtp.c:560
-#, c-format
-msgid "Fatal _open_osfhandle error: ERR=%s\n"
-msgstr "Fatal error _open_osfhandle: ERR=%s\n"
+#~ 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/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"
+#~ 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/tools/bsmtp.c:576
-#, c-format
-msgid "Fatal dup error: ERR=%s\n"
-msgstr "Fatal error dup: ERR=%s\n"
+#~ msgid "   Job=%s Date=%s Level=%c Type=%c\n"
+#~ msgstr "Job=%s Fecha=%s Nivel=%c Tipo=%c\n"
 
-#: src/tools/dbcheck.c:195
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
-msgstr ""
-"Advertencia, saltando los parámetros adicionales para el directorio de "
-"trabajo/dbname/usuario/contraseña/maquina.\n"
+#~ 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"
 
-#: src/tools/dbcheck.c:212
-#, c-format
-msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
-msgstr ""
-"Error, no puede encontrar el nombre del Catálogo [%s] en el archivo [%s] de "
-"configuración dado\n"
+#~ msgid "pthread_cond_wait failure. ERR=%s\n"
+#~ msgstr "pthread_cond_wait fallido. ERR=%s\n"
 
-#: src/tools/dbcheck.c:214
-#, c-format
-msgid "Error there is no Catalog section in the given config file [%s]\n"
-msgstr ""
-"Error, no hay una sección de Catálogo en el archivo de configuración dado "
-"[% s]\n"
+#~ msgid "unknown blocked code"
+#~ msgstr "Código desconocido bloqueado"
 
-#: src/tools/dbcheck.c:223
-msgid "Error no Director resource defined.\n"
-msgstr "Error, recurso Director no definido.\n"
+#, fuzzy
+#~ msgid "Too many errors trying to mount %s device %s.\n"
+#~ msgstr "Demasiados errores tratando de montar el dispositivo %s.\n"
 
-#: src/tools/dbcheck.c:247
-msgid "Wrong number of arguments.\n"
-msgstr "Número incorrecto de argumentos.\n"
+#~ msgid "Job %d canceled.\n"
+#~ msgstr "Job %d cancelado.\n"
 
-#: src/tools/dbcheck.c:252
-msgid "Working directory not supplied.\n"
-msgstr "Directorio de trabajo no suministrado.\n"
+#, fuzzy
+#~ msgid "Open of %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Fallo al abrir dispositivo %s Volumen \"%s\": ERR=%s\n"
 
-#: src/tools/dbcheck.c:288
-msgid "Database port must be a numeric value.\n"
-msgstr "Puerto de la BD debe ser un valor numérico.\n"
+#~ msgid "Volume \"%s\" previously written, moving to end of data.\n"
+#~ msgstr ""
+#~ "Volumen \"%s\" previamente escrito, moviendo a finales de los datos.\n"
 
-#: src/tools/dbcheck.c:291
-msgid "Database port must be a int value.\n"
-msgstr "Puerto de la BD debe ser un valor entero.\n"
+#, fuzzy
+#~ msgid "Unable to position to end of data on %s device %s: ERR=%s\n"
+#~ msgstr ""
+#~ "No se puede posicionar al final los datos en el dispositivo %s: ERR=%s\n"
 
-#: src/tools/dbcheck.c:365
-#, c-format
-msgid "Hello, this is the database check/correct program.\n"
-msgstr ""
-"Hola, este es el programa de comprobación/corrección de la base de datos.\n"
+#, fuzzy
+#~ msgid "Volume \"%s\" not on %s device %s.\n"
+#~ msgstr "Volumen \"%s\" no en dispositivo %s.\n"
 
-#: src/tools/dbcheck.c:367
-#, c-format
-msgid "Modify database is on."
-msgstr "Modificación de base de datos esta activada."
+#~ msgid ""
+#~ "Director wanted Volume \"%s\".\n"
+#~ "    Current Volume \"%s\" not acceptable because:\n"
+#~ "    %s"
+#~ msgstr ""
+#~ "Director quería Volumen \"%s\".\n"
+#~ " Volumen actual \"%s\" no es aceptable porque:\n"
+#~ " %s"
 
-#: src/tools/dbcheck.c:369
-#, c-format
-msgid "Modify database is off."
-msgstr "Modificación base de datos esta desactivada."
+#~ 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/tools/dbcheck.c:371 src/tools/dbcheck.c:432
-#, c-format
-msgid " Verbose is on.\n"
-msgstr "Detallado esta activado.\n"
+#~ msgid ""
+#~ "Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
+#~ "Volume=%s Catalog=%s\n"
+#~ msgstr ""
+#~ "Bacula no puedo escribir en el volumen DVD \"%s\" porque: Los tamaños no "
+#~ "coinciden! Volumen=%s Catálogo=%s\n"
 
-#: src/tools/dbcheck.c:373 src/tools/dbcheck.c:434
-#, c-format
-msgid " Verbose is off.\n"
-msgstr "Detallado está apagado.\n"
+#~ 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/tools/dbcheck.c:375
-#, c-format
-msgid "Please select the function you want to perform.\n"
-msgstr "Por favor seleccione la función que desea realizar.\n"
+#, fuzzy
+#~ msgid ""
+#~ "For Volume \"%s\":\n"
+#~ "The number of files mismatch! Volume=%u Catalog=%u\n"
+#~ "Correcting Catalog\n"
+#~ 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/tools/dbcheck.c:379
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-"\n"
-" 1) Activar bandera modificar base de datos\n"
-" 2) Activar bandera detallado\n"
-" 3) Reparar malos registros de Nombre de Archivo\n"
-" 4) Reparar malos registros de Rutas\n"
-" 5) Eliminar registros de Nombre de Archivo duplicados\n"
-" 6) Eliminar registros de Rutas duplicados\n"
-" 7) Eliminar registros de Jobmedia huérfanos\n"
-" 8) Eliminar registros de Archivo huérfanos\n"
-" 9) Eliminar registros de Rutas huérfanos\n"
-" 10) Eliminar registros de nombre de archivo huérfanos\n"
-" 11) Eliminar registros de FileSet huérfanos\n"
-" 12) Eliminar registros de Cliente huérfanos\n"
-" 13) Eliminar registros de Job huérfanos\n"
-" 14) Eliminar todos los registros de Administración\n"
-" 15) Eliminar todos los registros de Restauración\n"
-" 16) Todos (3-15)\n"
-" 17) Salir\n"
-
-#: src/tools/dbcheck.c:398
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-"\n"
-" 1) Activar bandera modificar base de datos\n"
-" 2) Activar bandera detallado\n"
-" 3) Verificar malos registros de Nombre de Archivo\n"
-" 4) Verificar malos registros de Rutas\n"
-" 5) Verificar registros de Nombre de Archivo duplicados\n"
-" 6) Verificar registros de Rutas duplicados\n"
-" 7) Verificar registros de Jobmedia huérfanos\n"
-" 8) Verificar registros de Archivo huérfanos\n"
-" 9) Verificar registros de Rutas huérfanos\n"
-" 10) Verificar registros de nombre de archivo huérfanos\n"
-" 11) Verificar registros de FileSet huérfanos\n"
-" 12) Verificar registros de Cliente huérfanos\n"
-" 13) Verificar registros de Job huérfanos\n"
-" 14) Verificar todos los registros de Administración\n"
-" 15) Verificar todos los registros de Restauración\n"
-" 16) Todos (3-15)\n"
-" 17) Salir\n"
-
-#: src/tools/dbcheck.c:418
-msgid "Select function number: "
-msgstr "Seleccione número de función:"
-
-#: src/tools/dbcheck.c:425
-#, c-format
-msgid "Database will be modified.\n"
-msgstr "Base de datos será modificada.\n"
+#, fuzzy
+#~ msgid "Error updating Catalog\n"
+#~ msgstr "Error abriendo archivo de datos %s\n"
+
+#~ msgid ""
+#~ "Bacula cannot write on tape Volume \"%s\" because:\n"
+#~ "The number of files mismatch! Volume=%u Catalog=%u\n"
+#~ 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"
+
+#~ 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"
+
+#, fuzzy
+#~ msgid ""
+#~ "For Volume \"%s\":\n"
+#~ "   The sizes do not match! Volume=%s Catalog=%s\n"
+#~ "   Correcting Catalog\n"
+#~ msgstr ""
+#~ "Bacula no puedo escribir en el volumen DVD \"%s\" porque: Los tamaños no "
+#~ "coinciden! Volumen=%s Catálogo=%s\n"
+
+#~ msgid ""
+#~ "Bacula cannot write on disk Volume \"%s\" because: The sizes do not "
+#~ "match! Volume=%s Catalog=%s\n"
+#~ msgstr ""
+#~ "Bacula no puede escribir en el Volumen de cinta \"%s\" porque:Los tamaños "
+#~ "no coinciden! Volumen=%s Catalogo=%s\n"
+
+#, fuzzy
+#~ msgid "Labeled new Volume \"%s\" on %s device %s.\n"
+#~ msgstr "Etiquetada nuevo Volumen \"%s\" en el dispositivo %s.\n"
+
+#, fuzzy
+#~ msgid "%s device %s not configured to autolabel Volumes.\n"
+#~ msgstr "Dispositivo %s no configurado para volúmenes autolabel.\n"
+
+#~ msgid "Marking Volume \"%s\" in Error in Catalog.\n"
+#~ msgstr "Marcado volumen \"%s\" en Error en el Catálogo.\n"
+
+#~ msgid ""
+#~ "Autochanger Volume \"%s\" not found in slot %d.\n"
+#~ "    Setting InChanger to zero in catalog.\n"
+#~ msgstr ""
+#~ "Volumen auto-cambiador \"%s\" no se encuentra en la ranura %d\n"
+#~ "Estableciendo InChanger a cero en el catálogo.\n"
+
+#~ msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
+#~ msgstr "Hey !!!!! No WroteVol cero !!!!!\n"
+
+#~ msgid ""
+#~ "Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
+#~ msgstr ""
+#~ "Posición de la cinta no válida en el volumen \"%s\" en el dispositivo %s. "
+#~ "Esperaba %d, obtuvo %d\n"
+
+#, fuzzy
+#~ msgid "Cannot open %s Dev=%s, Vol=%s for reading.\n"
+#~ msgstr "No se puede abrir Dev=%s, Vol=%s\n"
+
+#~ msgid "Unable to set eotmodel on device %s: ERR=%s\n"
+#~ msgstr "No se puede establecer eotmodel en el dispositivo %s: ERR=%s\n"
+
+#~ msgid " Bacula status:"
+#~ msgstr "Estado del Bacula:"
+
+#~ msgid " file=%d block=%d\n"
+#~ msgstr "archivo=%d bloque=%d\n"
+
+#~ msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
+#~ msgstr "ioctl MTIOCGET error en %s. ERR=%s.\n"
+
+#~ msgid " Device status:"
+#~ msgstr "Estado del Dispositivo:"
+
+#~ msgid "unknown func code %d"
+#~ msgstr "código de función %d desconocido"
+
+#~ msgid "I/O function \"%s\" not supported on this device.\n"
+#~ msgstr "I/O función \"%s\" no es compatible con este dispositivo. \n"
+
+#~ msgid "Cannot open bootstrap file %s: %s\n"
+#~ msgstr "No se puede abrir el archivo bootstrap %s: %s\n"
+
+#~ msgid "Device \"%s\" in bsr at inappropriate place.\n"
+#~ msgstr "Dispositivo %s en BSR en el lugar inadecuado.\n"
+
+#~ msgid "REGEX '%s' compile error. ERR=%s\n"
+#~ msgstr "error de compilación REGEX '%s'. ERR=%s\n"
+
+#~ msgid "JobType not yet implemented\n"
+#~ msgstr "JobType aún no se han implementado\n"
+
+#~ msgid "JobLevel not yet implemented\n"
+#~ msgstr "JobLevel aún no se han implementado\n"
+
+#~ msgid "MediaType %s in bsr at inappropriate place.\n"
+#~ msgstr "MediaType %s en BSR en el lugar inadecuado.\n"
+
+#~ msgid "Slot %d in bsr at inappropriate place.\n"
+#~ msgstr "Ranura %d en BSR en el lugar inadecuado.\n"
+
+#~ msgid "VolFile     : %u-%u\n"
+#~ msgstr "VolFile : %u-%u\n"
+
+#~ msgid "VolBlock    : %u-%u\n"
+#~ msgstr "VolBlock : %u-%u\n"
+
+#~ msgid "VolAddr    : %llu-%llu\n"
+#~ msgstr "VolAddr : %llu-%llu\n"
+
+#~ msgid "FileIndex   : %u\n"
+#~ msgstr "FileIndex : %u\n"
+
+#~ msgid "FileIndex   : %u-%u\n"
+#~ msgstr "FileIndex : %u-%u\n"
+
+#~ msgid "JobId       : %u\n"
+#~ msgstr "JobId : %u\n"
+
+#~ msgid "JobId       : %u-%u\n"
+#~ msgstr "JobId : %u-%u\n"
+
+#~ msgid "SessId      : %u\n"
+#~ msgstr "SessId : %u\n"
+
+#~ msgid "SessId      : %u-%u\n"
+#~ msgstr "SessId : %u-%u\n"
+
+#~ msgid "VolumeName  : %s\n"
+#~ msgstr "VolumeName : %s\n"
+
+#~ msgid "  MediaType : %s\n"
+#~ msgstr "MediaType : %s\n"
+
+#~ msgid "  Device    : %s\n"
+#~ msgstr "Dispositivo : %s\n"
+
+#~ msgid "  Slot      : %d\n"
+#~ msgstr "Ranura : %d\n"
+
+#~ msgid "Client      : %s\n"
+#~ msgstr "Cliente : %s\n"
+
+#~ msgid "Job          : %s\n"
+#~ msgstr "Job : %s\n"
+
+#~ msgid "SessTime    : %u\n"
+#~ msgstr "SessTime : %u\n"
+
+#~ msgid "BSR is NULL\n"
+#~ msgstr "BSR is NULL\n"
+
+#~ msgid "Next        : 0x%x\n"
+#~ msgstr "Siguiente : 0x%x\n"
+
+#~ msgid "Root bsr    : 0x%x\n"
+#~ msgstr "Root bsr : 0x%x\n"
+
+#~ msgid "count       : %u\n"
+#~ msgstr "contado : %u\n"
+
+#~ msgid "found       : %u\n"
+#~ msgstr "encontrado : %u\n"
+
+#~ msgid "done        : %s\n"
+#~ msgstr "realizado : %s\n"
+
+#~ msgid "positioning : %d\n"
+#~ msgstr "posicionamiento : %d\n"
+
+#~ msgid "fast_reject : %d\n"
+#~ msgstr "fast_reject : %d\n"
+
+#~ msgid ""
+#~ "Bootstrap file error: %s\n"
+#~ "            : Line %d, col %d of file %s\n"
+#~ "%s\n"
+#~ msgstr ""
+#~ "Error archivo Bootstrap: %s\n"
+#~ " : Linea %d, columna %d del archivo %s\n"
+#~ "%s\n"
+
+#~ msgid "No Volume names found for restore.\n"
+#~ msgstr "Nombres de Volumen no encontrados para restaurar.\n"
+
+#~ msgid ">filed: Error Hdr=%s\n"
+#~ msgstr ">filed: Error Hdr=%s\n"
+
+#~ msgid "Error sending to File daemon. ERR=%s\n"
+#~ msgstr "Error enviando para demonio File. ERR=%s\n"
+
+#~ msgid "Error sending to FD. ERR=%s\n"
+#~ msgstr "Error enviando para FD. ERR=%s\n"
+
+#~ msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
+#~ msgstr "Fin del Volumen en archivo %u en dispositivo %s, Volumen \"%s\"\n"
+
+#~ msgid "End of all volumes.\n"
+#~ msgstr "Fin de todos los volúmenes.\n"
+
+#~ msgid "Did fsr in attemp to skip bad record.\n"
+#~ msgstr "fsr hizo en un intento para saltar malo registro.\n"
+
+#~ msgid "Forward spacing Volume \"%s\" to file:block %u:%u.\n"
+#~ msgstr ""
+#~ "Espaciando hacia adelante Volumen \"%s\" para archivo:bloque %u:%u.\n"
+
+#~ msgid "Begin Session"
+#~ msgstr "Inicio de Sesión"
+
+#~ msgid "End Session"
+#~ msgstr "Fin de Sesión"
+
+#~ msgid "Unknown code %d\n"
+#~ msgstr "Código desconocido %d\n"
+
+#~ msgid "unknown: %d"
+#~ msgstr "desconocido: %d"
+
+#~ msgid "Damaged buffer\n"
+#~ msgstr "Buffer dañado\n"
+
+#~ msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
+#~ msgstr ""
+#~ "Chequeo de Sanidad fracasado. maxlen=%d datalen=%d. Bloque descartado.\n"
+
+#~ msgid "Unable to initialize reservation lock. ERR=%s\n"
+#~ msgstr "No se puede inicializar bloqueo de reserva. ERR=%s\n"
+
+#~ msgid "Hey! num_writers=%d!!!!\n"
+#~ msgstr "Hey! num_writers=%d!!!!\n"
+
+#~ msgid "3939 Could not get dcr\n"
+#~ msgstr "3939 No se pudo obtener DCR\n"
+
+#~ msgid "Device reservation failed for JobId=%d: %s\n"
+#~ msgstr "Reservación del Dispositivo fallida para JobId=%d: %s\n"
+
+#~ msgid "Failed command: %s\n"
+#~ msgstr "Comando fallido: %s\n"
+
+#~ msgid "3926 Could not get dcr for device: %s\n"
+#~ msgstr "3926 No se pudo obtener dcr para el dispositivo: %s\n"
+
+#, fuzzy
+#~ msgid "3603 JobId=%u %s device %s is busy reading.\n"
+#~ msgstr "3603 JobId=%u dispositivo %s está ocupado leyendo.\n"
+
+#, fuzzy
+#~ msgid "3604 JobId=%u %s device %s is BLOCKED due to user unmount.\n"
+#~ msgstr ""
+#~ "3604 JobId=%u dispositivo %s está BLOQUEADO debido al desmonte de "
+#~ "usuario.\n"
+
+#, fuzzy
+#~ msgid "3601 JobId=%u %s device %s is BLOCKED due to user unmount.\n"
+#~ msgstr ""
+#~ "3601 JobId=%u dispositivo %s está BLOQUEADO debido al desmontar por el "
+#~ "usuario.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "3602 JobId=%u %s device %s is busy (already reading/writing). read=%d, "
+#~ "writers=%d reserved=%d\n"
+#~ msgstr ""
+#~ "3602 JobId=%u dispositivo %s está ocupado (ya leyendo/escribiendo).\n"
+
+#, fuzzy
+#~ msgid "3609 JobId=%u Max concurrent jobs=%d exceeded on %s device %s.\n"
+#~ msgstr ""
+#~ "3609 JobId=%u Máximo trabajos simultáneos superado en la unidad %s.\n"
+
+#, fuzzy
+#~ msgid "3611 JobId=%u Volume max jobs=%d exceeded on %s device %s.\n"
+#~ msgstr "3610 JobId=%u máximo volumen jobs excedido en la unidad %s.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on %s "
+#~ "device %s.\n"
+#~ msgstr ""
+#~ "3608 JobId=%u requiere Pool=\"%s\", pero hay Pool=\"%s\" nreserve=%d en "
+#~ "la unidad %s.\n"
+
+#, fuzzy
+#~ msgid "3605 JobId=%u wants free drive but %s device %s is busy.\n"
+#~ msgstr ""
+#~ "3605 JobId=%u requiere la unidad disponible, pero el dispositivo %s está "
+#~ "ocupado.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "3606 JobId=%u prefers mounted drives, but %s device %s has no Volume.\n"
+#~ msgstr ""
+#~ "3606 JobId=%u prefiere unidades montadas, pero la unidad %s no tiene "
+#~ "Volumen.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on %s device %s.\n"
+#~ msgstr ""
+#~ "3607 JobId=%u quiere Vol=\"%s\" la unidad tiene Vol=\"%s\" en la unidad "
+#~ "%s.\n"
+
+#~ msgid "Logic error!!!! JobId=%u Should not get here.\n"
+#~ msgstr "Error lógico!! JobId=%u No debería llegar hasta aquí.\n"
+
+#, fuzzy
+#~ msgid "3910 JobId=%u Logic error!!!! %s device %s Should not get here.\n"
+#~ msgstr ""
+#~ "3910 JobId=%u Error de lógica!!! la unidad %s no debería llegar aquí.\n"
+
+#~ msgid "Logic error!!!! Should not get here.\n"
+#~ msgstr "Error lógico!!! No debe llegar aquí.\n"
+
+#, fuzzy
+#~ msgid "3911 JobId=%u failed reserve %s device %s.\n"
+#~ msgstr "3911 JobId=%u fallo al reservar unidad %s.\n"
+
+#~ msgid "Spooling statistics:\n"
+#~ msgstr "Estadísticas de cola:\n"
+
+#~ msgid ""
+#~ "Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/"
+#~ "job.\n"
+#~ msgstr ""
+#~ "Encolando datos: %u jobs activos, %s bytes; %u total de jobs, %s máximo "
+#~ "bytes/job.\n"
+
+#~ msgid ""
+#~ "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
+#~ msgstr ""
+#~ "Encolando Atributos: %u jobs activos, %s bytes; %u jobs total, %s bytes "
+#~ "máximos.\n"
+
+#~ msgid "Spooling data ...\n"
+#~ msgstr "Datos en cola ...\n"
+
+#~ msgid "Bad return from despool WroteVol=%d\n"
+#~ msgstr "Mal retorno de despool WroteVol=%d\n"
+
+#~ msgid "Open data spool file %s failed: ERR=%s\n"
+#~ msgstr "Fallo al abrir archivo %s de datos de cola: ERR=%s\n"
+
+#~ msgid "Despooling zero bytes. Your disk is probably FULL!\n"
+#~ msgstr "Desencolando cero bytes. El disco probablemente esta LLENO!\n"
+
+#~ msgid "Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"
+#~ msgstr ""
+#~ "Perpetrando datos encolados al volumen \"%s\". Desencolando %s bytes ...\n"
+
+#~ msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
+#~ msgstr "Escribiendo datos encolados al volumen. Desencolando %s bytes ...\n"
+
+#~ msgid ""
+#~ "Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/"
+#~ "second\n"
+#~ msgstr ""
+#~ "Tiempo transcurrido desencolando = %02d:%02d:%02d, Tasa de transferencia "
+#~ "= %s Bytes/segundo\n"
+
+#~ msgid "Ftruncate spool file failed: ERR=%s\n"
+#~ msgstr "Fallo ftruncate archivo de cola: ERR=%s\n"
+
+#~ msgid "Spool header read error. ERR=%s\n"
+#~ msgstr "Error de lectura de la cola. ERR=%s\n"
+
+#~ msgid "Spool read error. Wanted %u bytes, got %d\n"
+#~ msgstr "Error de lectura de la cola. Esperaba %u bytes, obtuvo %d\n"
+
+#~ msgid "Spool header read error. Wanted %u bytes, got %d\n"
+#~ msgstr ""
+#~ "Error de lectura de cabecera de la cola. Esperaba %u bytes, obtuvo %d\n"
+
+#~ msgid "Spool block too big. Max %u bytes, got %u\n"
+#~ 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"
+
+#, fuzzy
+#~ msgid ""
+#~ "User specified Job spool size reached: JobSpoolSize=%s MaxJobSpoolSize="
+#~ "%s\n"
+#~ msgstr "Tamaño de cola especificada por el usuario alcanzado.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "User specified Device spool size reached: DevSpoolSize=%s MaxDevSpoolSize="
+#~ "%s\n"
+#~ msgstr "Tamaño de cola especificada por el usuario alcanzado.\n"
+
+#~ msgid "Bad return from despool in write_block.\n"
+#~ msgstr "Malo retorno desde despool en write_block.\n"
+
+#~ msgid "Spooling data again ...\n"
+#~ msgstr "Encolando datos de nuevo ...\n"
+
+#~ msgid "Error writing header to spool file. ERR=%s\n"
+#~ msgstr "Error escribiendo encabezado para archivo de cola. ERR=%s\n"
+
+#~ msgid ""
+#~ "Error writing header to spool file. Disk probably full. Attempting "
+#~ "recovery. Wanted to write=%d got=%d\n"
+#~ msgstr ""
+#~ "Error al escribir encabezado al archivo de cola. Probablemente disco "
+#~ "lleno. Intentando recuperación. Esperaba escribir=%d tiene=%d\n"
+
+#~ msgid "Fatal despooling error."
+#~ msgstr "Error fatal desencolando."
+
+#~ msgid "Retrying after header spooling error failed.\n"
+#~ msgstr "Fallido reintento después de error encolando encabezado.\n"
+
+#~ msgid "Error writing data to spool file. ERR=%s\n"
+#~ msgstr "Error escribiendo datos en archivo de cola. ERR=%s\n"
+
+#~ msgid "Retrying after data spooling error failed.\n"
+#~ msgstr "Fallido reintento después de error encolando dato.\n"
+
+#~ msgid "Network error on BlastAttributes.\n"
+#~ msgstr "Error de red en BlastAttributes.\n"
+
+#~ msgid "Fseek on attributes file failed: ERR=%s\n"
+#~ msgstr "Fallo fseek en los atributos de archivo: ERR=%s\n"
+
+#~ msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
+#~ msgstr "Enviando attrs encolados al Director. Desencolando %s bytes ...\n"
+
+#~ msgid "fopen attr spool file %s failed: ERR=%s\n"
+#~ msgstr "Fallo fopen en archivo %s de atributo de cola: ERR=%s\n"
+
+#~ msgid "Used Volume status:\n"
+#~ msgstr "Estado de Volumen Usados:\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Device status:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Estado del dispositivo:\n"
+
+#~ msgid "Autochanger \"%s\" with devices:\n"
+#~ msgstr "Auto-cambiador \"%s\" con los dispositivos:\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Device %s is %s:\n"
+#~ "    Volume:      %s\n"
+#~ "    Pool:        %s\n"
+#~ "    Media type:  %s\n"
+#~ msgstr ""
+#~ "Dispositivo %s está montado con:\n"
+#~ " Volumen: %s\n"
+#~ " Pool: %s\n"
+#~ " Tipo de Media: %s\n"
+
+#, fuzzy
+#~ msgid "waiting for"
+#~ msgstr "Esperando por montaje"
+
+#, fuzzy
+#~ msgid "*unknown*"
+#~ msgstr "desconocido"
+
+#, fuzzy
+#~ 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"
+
+#~ msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
+#~ msgstr "Total de Bytes=%s Bloques=%s Bytes/bloques=%s\n"
+
+#~ 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"
+
+#~ msgid "    Positioned at File=%s Block=%s\n"
+#~ msgstr "Situado en el archivo=%s Bloque=%s\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Device %s is not open.\n"
+#~ msgstr "Dispositivo %s no está abierto.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Device \"%s\" is not open or does not exist.\n"
+#~ msgstr "Dispositivo \"%s\" no está abierto o no existe.\n"
+
+#, fuzzy
+#~ msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
+#~ msgstr "Demonio iniciado %s, %d Job ejecutando desde el inicio.\n"
+
+#~ msgid ""
+#~ "No DEVICE structure.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ninguna estructura del DISPOSITIVO.\n"
+#~ "\n"
+
+#~ msgid "    Device is BLOCKED. User unmounted.\n"
+#~ msgstr "Dispositivo está BLOQUEADO. Usuario desmontado.\n"
+
+#~ msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
+#~ msgstr ""
+#~ "    Dispositivo está BLOQUEADO. Usuario desmontado durante espera por "
+#~ "media/mount.\n"
+
+#~ msgid ""
+#~ "    Device is BLOCKED waiting for mount of volume \"%s\",\n"
+#~ "       Pool:        %s\n"
+#~ "       Media type:  %s\n"
+#~ msgstr ""
+#~ "Dispositivo está BLOQUEADO esperando por montaje de volumen \"%s\",\n"
+#~ " Pool: %s\n"
+#~ " Tipo de Media: %s\n"
+
+#~ msgid ""
+#~ "    Device is BLOCKED waiting to create a volume for:\n"
+#~ "       Pool:        %s\n"
+#~ "       Media type:  %s\n"
+#~ msgstr ""
+#~ "Dispositivo está BLOQUEADO esperando para crear un volumen para:\n"
+#~ " Pool: %s\n"
+#~ " Tipo de Media: %s\n"
+
+#~ msgid "    Device is BLOCKED waiting for media.\n"
+#~ msgstr "Dispositivo está bloqueado esperando por medios.\n"
+
+#~ msgid "    Device is being initialized.\n"
+#~ msgstr "Dispositivo se está inicializando.\n"
+
+#~ msgid "    Device is blocked labeling a Volume.\n"
+#~ msgstr "El dispositivo está bloqueado etiquetando un volumen.\n"
 
-#: src/tools/dbcheck.c:427
-#, c-format
-msgid "Database will NOT be modified.\n"
-msgstr "Base de datos NO será modificada.\n"
+#, fuzzy
+#~ msgid "    Slot %d %s loaded in drive %d.\n"
+#~ msgstr "Ranura %d esta cargado en la unidad %d.\n"
 
-#: src/tools/dbcheck.c:518
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
-msgstr "JobId=%s Nombre=\"%s\" HoraInicio=%s\n"
+#~ msgid "    Drive %d is not loaded.\n"
+#~ msgstr "Unidad %d no está cargada.\n"
 
-#: src/tools/dbcheck.c:525
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
-msgstr "Huérfanos JobMediaId=%s JobId=%s Volumen=\"%s\"\n"
+#~ msgid "Device state:\n"
+#~ msgstr "Estado del dispositivo:\n"
 
-#: src/tools/dbcheck.c:532
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
-msgstr "Huérfanos FileId=%s JobId=%s Volumen=\"%s\"\n"
+#, fuzzy
+#~ msgid "  num_writers=%d reserves=%d block=%d\n"
+#~ msgstr ""
+#~ "num_writers=%d reservado=%d bloque=%d\n"
+#~ "\n"
 
-#: src/tools/dbcheck.c:539
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
-msgstr "Huérfanos FileSetId=%s FileSet=\"%s\" MD5=%s\n"
+#, fuzzy
+#~ msgid "Attached JobsIds: "
+#~ msgstr ""
+#~ "\n"
+#~ "Scheduled Jobs:\n"
 
-#: src/tools/dbcheck.c:546
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
-msgstr "Huérfanos ClientId=%s Nombre=\"%s\"\n"
+#, fuzzy
+#~ msgid "  Archive name: %s Device name: %s\n"
+#~ msgstr "Nombre del archivo: %s Nombre del dispositivo: %s\n"
 
-#: src/tools/dbcheck.c:599
-#, c-format
-msgid "Deleting: %s\n"
-msgstr "Eliminando: %s\n"
+#, fuzzy
+#~ msgid "  File=%u block=%u\n"
+#~ msgstr "Archivo=%u bloque=%u\n"
 
-#: src/tools/dbcheck.c:671
-#, c-format
-msgid "Checking for duplicate Filename entries.\n"
-msgstr "Comprobando entradas Nombre de Archivo(Filename) duplicadas.\n"
+#, fuzzy
+#~ msgid "  Min block=%u Max block=%u\n"
+#~ msgstr "Bloque Min=%u Bloque Max=%u\n"
 
-#: src/tools/dbcheck.c:682
-#, c-format
-msgid "Found %d duplicate Filename records.\n"
-msgstr "Encontrados %d registros Nombre de Archivo(Filename) duplicados.\n"
+#~ msgid "%s Job %s waiting for Client connection.\n"
+#~ msgstr "%s Job %s esperando por conexión de cliente.\n"
 
-#: src/tools/dbcheck.c:683
-msgid "Print the list? (yes/no): "
-msgstr "Imprimir la lista? (sí/no):"
+#~ msgid ""
+#~ "Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
+#~ "    pool=\"%s\" device=%s\n"
+#~ msgstr ""
+#~ "Leyendo: %s %s trabajo %s JobId=%d Volumen=\"%s\"\n"
+#~ " pool=\"%s\" dispositivo=%s\n"
 
-#: src/tools/dbcheck.c:706 src/tools/dbcheck.c:771
-#, c-format
-msgid "Found %d for: %s\n"
-msgstr "Encontrados %d para: %s\n"
+#~ msgid ""
+#~ "Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
+#~ "    pool=\"%s\" device=%s\n"
+#~ msgstr ""
+#~ "Escribiendo: %s %s trabajo %s JobId=%d Volumen=\"%s\"\n"
+#~ " pool=\"%s\" dispositivo=%s\n"
 
-#: src/tools/dbcheck.c:736
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
-msgstr "Comprobando entradas Path duplicadas.\n"
+#~ msgid "    spooling=%d despooling=%d despool_wait=%d\n"
+#~ msgstr "encolando=%d desencolando=%d despool_wait=%d\n"
 
-#: src/tools/dbcheck.c:747
-#, c-format
-msgid "Found %d duplicate Path records.\n"
-msgstr "Encontrados %d registros de Rutas duplicados.\n"
+#, fuzzy
+#~ msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
+#~ msgstr "Archivos=%s Bytes=%s Bytes/sec=%s Errores=%d\n"
 
-#: src/tools/dbcheck.c:748 src/tools/dbcheck.c:810 src/tools/dbcheck.c:856
-#: src/tools/dbcheck.c:924 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1025
-#: src/tools/dbcheck.c:1067 src/tools/dbcheck.c:1109 src/tools/dbcheck.c:1146
-#: src/tools/dbcheck.c:1179 src/tools/dbcheck.c:1213 src/tools/dbcheck.c:1280
-msgid "Print them? (yes/no): "
-msgstr "Imprimirlos? (sí/no):"
+#~ 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/tools/dbcheck.c:801
-#, c-format
-msgid "Checking for orphaned JobMedia entries.\n"
-msgstr "Comprobando entradas JobMedia huérfanas.\n"
+#~ msgid "    FDSocket closed\n"
+#~ msgstr "FDSocket cerrado\n"
 
-#: src/tools/dbcheck.c:809
-#, c-format
-msgid "Found %d orphaned JobMedia records.\n"
-msgstr "Encontrados %d registros JobMedia huérfanos.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Jobs waiting to reserve a drive:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Jobs esperando para reservar una unidad:\n"
 
-#: src/tools/dbcheck.c:827
-#, c-format
-msgid "Deleting %d orphaned JobMedia records.\n"
-msgstr "Eliminando %d registros JobMedia huérfanos.\n"
+#, fuzzy
+#~ msgid "3900 No arg in .status command: %s\n"
+#~ msgstr "Comando .status malo: %s\n"
 
-#: src/tools/dbcheck.c:844
-#, c-format
-msgid "Checking for orphaned File entries. This may take some time!\n"
-msgstr "Comprobando entradas Files huérfanas. Esto puede tomar algún tiempo.\n"
+#, fuzzy
+#~ msgid "3900 Unknown arg in .status command: %s\n"
+#~ msgstr "Comando .status malo: %s\n"
 
-#: src/tools/dbcheck.c:855
-#, c-format
-msgid "Found %d orphaned File records.\n"
-msgstr "Encontrados %d registros File huérfanos.\n"
+#~ msgid "Bacula Storage: Idle"
+#~ msgstr "Bacula Storage: Libre"
 
-#: src/tools/dbcheck.c:872
-#, c-format
-msgid "Deleting %d orphaned File records.\n"
-msgstr "Eliminando %d registros File huérfanos.\n"
+#~ msgid "Bacula Storage: Running"
+#~ msgstr "Bacula Storage: Ejecutando"
 
-#: src/tools/dbcheck.c:891
-#, c-format
-msgid "Pruning orphaned Path entries isn't possible when using BVFS.\n"
-msgstr ""
+#~ msgid "Bacula Storage: Last Job Canceled"
+#~ msgstr "Bacula Storage: Último Job Cancelado"
 
-#: src/tools/dbcheck.c:900 src/tools/dbcheck.c:958
-msgid "Create temporary index? (yes/no): "
-msgstr "Crear índice temporal? (sí/no):"
+#~ msgid "Bacula Storage: Last Job Failed"
+#~ msgstr "Bacula Storage: Último Job Fallido"
 
-#: src/tools/dbcheck.c:912
-#, c-format
-msgid "Checking for orphaned Path entries. This may take some time!\n"
-msgstr ""
-"Comprobando de entradas huérfanas de Ruta. Esto puede tomar algún tiempo!\n"
+#~ msgid "Bacula Storage: Last Job had Warnings"
+#~ msgstr "Bacula Storage: Último Job con Advertencias"
 
-#: src/tools/dbcheck.c:923
-#, c-format
-msgid "Found %d orphaned Path records.\n"
-msgstr "Se han encontrado %d registros huérfanos de Ruta.\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\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"
+#~ "        -f          run in foreground (for debugging)\n"
+#~ "        -g <group>  set groupid to group\n"
+#~ "        -m          print kaboom output (for debugging)\n"
+#~ "        -p          proceed despite I/O errors\n"
+#~ "        -s          no signals (for debugging)\n"
+#~ "        -t          test - read config and exit\n"
+#~ "        -u <user>   userid to <user>\n"
+#~ "        -v          verbose user messages\n"
+#~ "        -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ "\n"
+#~ "Utilice: stored [opciones] [-c archivo_configuración] "
+#~ "[archivo_configuración]\n"
+#~ " -c <archivo> usar <archivo> como archivo de configuración\n"
+#~ " -d <nn> establecer el nivel de depuración para <nn>\n"
+#~ " -dt imprimir timestamp en salida de depuración\n"
+#~ " -f ejecutar en primer plano (para depuración)\n"
+#~ " -g <grupo> establecer groupid para grupo\n"
+#~ " -m imprimir salida kaboom para depuración)\n"
+#~ " -p continuar a pesar de errores de E/S\n"
+#~ " -s sin señales (para depuración)\n"
+#~ " -t prueba - leer la configuración y salir\n"
+#~ " -u <usuario> establecer userid para <usuario>\n"
+#~ " -v mensajes de usuario detallados\n"
+#~ " -? imprimir este mensaje.\n"
+#~ "\n"
 
-#: src/tools/dbcheck.c:936
-#, c-format
-msgid "Deleting %d orphaned Path records.\n"
-msgstr "Eliminando %d registros huérfanos de Ruta.\n"
+#~ msgid "Volume Session Time is ZERO!\n"
+#~ msgstr "Tiempo de Sesión de Volumen es CERO!\n"
 
-#: src/tools/dbcheck.c:970
-#, c-format
-msgid "Checking for orphaned Filename entries. This may take some time!\n"
-msgstr ""
-"Comprobando de entradas de Nombre de Archivo huérfanos. Esto puede tomar "
-"algún tiempo!\n"
+#~ msgid "Unable to create thread. ERR=%s\n"
+#~ msgstr "No se puede crear hilo. ERR=%s\n"
 
-#: src/tools/dbcheck.c:981
-#, c-format
-msgid "Found %d orphaned Filename records.\n"
-msgstr "Se han encontrado %d registros de Nombre de Archivos huérfanos.\n"
+#~ msgid "Only one Storage resource permitted in %s\n"
+#~ msgstr "Sólo un recurso Storage permitido en %s\n"
 
-#: src/tools/dbcheck.c:994
-#, c-format
-msgid "Deleting %d orphaned Filename records.\n"
-msgstr "Eliminando %d registros de Nombre de Archivos huérfanos.\n"
+#~ msgid "No Director resource defined in %s. Cannot continue.\n"
+#~ msgstr "Recurso Director no definido en %s. No se puede continuar.\n"
 
-#: src/tools/dbcheck.c:1014
-#, c-format
-msgid "Checking for orphaned FileSet entries. This takes some time!\n"
-msgstr ""
-"Comprobando de entradas FileSet huérfanos. Esto puede tomar algún tiempo!\n"
+#~ msgid "No Device resource defined in %s. Cannot continue.\n"
+#~ msgstr "Recurso Device no definido en %s. No se puede continuar.\n"
 
-#: src/tools/dbcheck.c:1024
-#, c-format
-msgid "Found %d orphaned FileSet records.\n"
-msgstr "Se han encontrado %d registros FileSet huérfanos.\n"
+#~ msgid "No Messages resource defined in %s. Cannot continue.\n"
+#~ msgstr "Recurso Mensajes no definido en %s. No se puede continuar.\n"
 
-#: src/tools/dbcheck.c:1039
-#, c-format
-msgid "Deleting %d orphaned FileSet records.\n"
-msgstr "Eliminando %d registros FileSet huérfanos.\n"
+#~ msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
+#~ msgstr ""
+#~ "Archivo \"TLS Certificate\" no definido para Storage \"%s\" en %s.\n"
 
-#: src/tools/dbcheck.c:1048
-#, c-format
-msgid "Checking for orphaned Client entries.\n"
-msgstr ""
-"Comprobando entradas de Clientes huérfanos. Esto puede tomar algún tiempo!\n"
+#~ msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
+#~ msgstr "Archivo \"TLS Key\" no definido para Storage \"%s\" en %s.\n"
 
-#: src/tools/dbcheck.c:1066
-#, c-format
-msgid "Found %d orphaned Client records.\n"
-msgstr "Se han encontrado %d registros de Clientes huérfanos.\n"
+#~ msgid ""
+#~ "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined "
+#~ "for Storage \"%s\" in %s. At least one CA certificate store is required "
+#~ "when using \"TLS Verify Peer\".\n"
+#~ msgstr ""
+#~ "Ni \"Certificado TLS CA \" o \"Directorio del Certificado TLS CA\" están "
+#~ "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/tools/dbcheck.c:1081
-#, c-format
-msgid "Deleting %d orphaned Client records.\n"
-msgstr "Eliminando %d registros de Clientes huérfanos.\n"
+#~ msgid "Could not initialize %s\n"
+#~ msgstr "No se puede iniciar %s\n"
 
-#: src/tools/dbcheck.c:1090
-#, c-format
-msgid "Checking for orphaned Job entries.\n"
-msgstr ""
-"Comprobando entradas de Job huérfanos. Esto puede tomar algún tiempo!\n"
+#~ msgid "Could not open device %s\n"
+#~ msgstr "No se pudo abrir el dispositivo %s\n"
 
-#: src/tools/dbcheck.c:1108
-#, c-format
-msgid "Found %d orphaned Job records.\n"
-msgstr "Se han encontrado %d registros de Job huérfanos.\n"
+#~ msgid "Could not mount device %s\n"
+#~ msgstr "No se pudo montar el dispositivo %s\n"
 
-#: src/tools/dbcheck.c:1123
-#, c-format
-msgid "Deleting %d orphaned Job records.\n"
-msgstr "Eliminando %d registros de Job huérfanos.\n"
+#~ msgid "Expected a Device Type keyword, got: %s"
+#~ msgstr "Esperaba una palabra clave Tipo Device, obtuvo: %s"
 
-#: src/tools/dbcheck.c:1125
-#, c-format
-msgid "Deleting JobMedia records of orphaned Job records.\n"
-msgstr "Eliminando registros JobMedia de registros de Job huérfanos.\n"
+#~ msgid ""
+#~ "Maximum Block Size configured value %u is greater than allowed maximum: %u"
+#~ msgstr ""
+#~ "Valor máximo de tamaño bloque configurado %u es mayor de lo máximo "
+#~ "permitido: %u"
 
-#: src/tools/dbcheck.c:1127
-#, c-format
-msgid "Deleting Log records of orphaned Job records.\n"
-msgstr "Eliminando registros Log de registros de Job huérfanos.\n"
+#~ msgid "Warning: no \"%s\" resource (%d) defined.\n"
+#~ msgstr "Advertencia: Recurso \"%s\" (%d) no definido.\n"
 
-#: src/tools/dbcheck.c:1136
-#, c-format
-msgid "Checking for Admin Job entries.\n"
-msgstr "Comprobando entradas para Job Administrativo.\n"
+#~ msgid "dump_resource type=%d\n"
+#~ msgstr "dump_resource tipo=%d\n"
 
-#: src/tools/dbcheck.c:1145
-#, c-format
-msgid "Found %d Admin Job records.\n"
-msgstr "Se han encontrado %d registros de Job Administrativo.\n"
+#~ msgid "Warning: unknown resource type %d\n"
+#~ msgstr "Advertencia: Tipo de recurso %d desconocido\n"
 
-#: src/tools/dbcheck.c:1160
-#, c-format
-msgid "Deleting %d Admin Job records.\n"
-msgstr "Eliminando %d registros de Job Administrativo.\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/tools/dbcheck.c:1169
-#, c-format
-msgid "Checking for Restore Job entries.\n"
-msgstr "Comprobando entradas para Job de Restauración.\n"
+#~ msgid "Too many items in \"%s\" resource\n"
+#~ msgstr "Demasiados elementos en recursos \"%s\"\n"
 
-#: src/tools/dbcheck.c:1178
-#, c-format
-msgid "Found %d Restore Job records.\n"
-msgstr "Se han encontrado %d registros de Job de Restauración.\n"
+#~ msgid "Cannot find AutoChanger resource %s\n"
+#~ msgstr "No puede encontrar recurso Auto-cambiador %s\n"
 
-#: src/tools/dbcheck.c:1193
-#, c-format
-msgid "Deleting %d Restore Job records.\n"
-msgstr "Eliminando %d registros de Job de Restauración.\n"
+#, fuzzy
+#~ msgid "Unable to init lock: ERR=%s\n"
+#~ msgstr "No se puede iniciar mutex: ERR=%s\n"
 
-#: src/tools/dbcheck.c:1203
-#, c-format
-msgid "Checking for Filenames with a trailing slash\n"
-msgstr "Comprobando Nombres de Archivo con una barra diagonal\n"
+#~ msgid ""
+#~ "Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
+#~ msgstr ""
+#~ "Intento para definir secundo recurso \"%s\" denominado \"%s\" no está "
+#~ "permitido.\n"
 
-#: src/tools/dbcheck.c:1212
-#, c-format
-msgid "Found %d bad Filename records.\n"
-msgstr "Se han encontrado %d malos registros de Nombre de Archivo.\n"
+#~ msgid "No tape loaded or drive offline on %s.\n"
+#~ msgstr "Ninguna cinta cargada o unidad offline en %s.\n"
 
-#: src/tools/dbcheck.c:1230 src/tools/dbcheck.c:1296
-#, c-format
-msgid "Reparing %d bad Filename records.\n"
-msgstr "Reparando %d malos registros de Nombre de Archivo.\n"
+#~ msgid "Rewind error on %s. ERR=%s.\n"
+#~ msgstr "Rebobinar error en %s. ERR=%s.\n"
 
-#: src/tools/dbcheck.c:1270
-#, c-format
-msgid "Checking for Paths without a trailing slash\n"
-msgstr "Comprobando Rutas sin una barra diagonal\n"
+#~ msgid "Bad call to eod. Device %s not open\n"
+#~ msgstr "Mala llamada para eod. Dispositivo %s no abierto\n"
 
-#: src/tools/dbcheck.c:1279
-#, c-format
-msgid "Found %d bad Path records.\n"
-msgstr "Se han encontrado %d malos registros de Rutas.\n"
+#~ msgid "ioctl MTEOM error on %s. ERR=%s.\n"
+#~ msgstr "ioctl MTEOM error en %s. ERR=%s.\n"
 
-#: src/tools/dbcheck.c:1442
-#, c-format
-msgid ""
-"Ok. Index over the %s column already exists and dbcheck will work faster.\n"
-msgstr ""
-"Listo. Índice sobre la columna %s ya existe y dbcheck funcionará más "
-"rápido.\n"
+#~ msgid "Bad call to load_dev. Device not open\n"
+#~ msgstr "Mala llamada a load_dev. Dispositivo no abierto\n"
 
-#: src/tools/dbcheck.c:1445
-#, c-format
-msgid ""
-"Note. Index over the %s column not found, that can greatly slow down "
-"dbcheck.\n"
-msgstr ""
-"Nota. Índice sobre la columna %s no encontrado, esto puede en gran medida "
-"ralentizar dbcheck.\n"
+#~ msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
+#~ msgstr "ioctl MTLOAD error en %s. ERR=%s.\n"
 
-#: src/tools/dbcheck.c:1460
-#, c-format
-msgid "Create temporary index... This may take some time!\n"
-msgstr "Crear índice temporal... Esto puede tomar algún tiempo!\n"
+#~ msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
+#~ msgstr "ioctl MTOFFL error en %s. ERR=%s.\n"
 
-#: src/tools/dbcheck.c:1468
-#, c-format
-msgid "Temporary index created.\n"
-msgstr "Índice temporal creado.\n"
+#~ msgid "Bad call to fsf. Device not open\n"
+#~ msgstr "Mala llamada a fsf. Dispositivo no abierto\n"
 
-#: src/tools/dbcheck.c:1483
-#, c-format
-msgid "Drop temporary index.\n"
-msgstr "Eliminar índice temporal.\n"
+#~ msgid "Device %s at End of Tape.\n"
+#~ msgstr "Dispositivo %s en el final de la cinta.\n"
 
-#: src/tools/dbcheck.c:1493
-#, c-format
-msgid "Temporary index %s deleted.\n"
-msgstr "Índice temporal %s eliminado.\n"
+#~ msgid "ioctl MTFSF error on %s. ERR=%s.\n"
+#~ msgstr "ioctl MTFSF error en %s. ERR=%s.\n"
 
-#: src/filed/verify.c:57
-#, c-format
-msgid "Cannot malloc %d network read buffer\n"
-msgstr "No se pudo leer búfer de red malloc %d\n"
+#~ msgid "Bad call to bsf. Device not open\n"
+#~ msgstr "Mala llamada a bsf. Dispositivo no abierto\n"
 
-#: src/filed/verify.c:127
-#, c-format
-msgid "     Could not access %s: ERR=%s\n"
-msgstr "No es posible acceder %s: ERR=%s\n"
+#~ 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/filed/verify.c:134
-#, c-format
-msgid "     Could not follow link %s: ERR=%s\n"
-msgstr "     No es posible seguir el enlace %s: ERR=%s\n"
+#~ msgid "ioctl MTBSF error on %s. ERR=%s.\n"
+#~ msgstr "ioctl MTBSF error en %s. ERR=%s.\n"
 
-#: src/filed/verify.c:141
-#, c-format
-msgid "     Could not stat %s: ERR=%s\n"
-msgstr "No se pudo stat %s: ERR=%s\n"
+#~ msgid "Bad call to fsr. Device not open\n"
+#~ msgstr "Mala llamada a FSR. El dispositivo no abre\n"
 
-#: src/filed/verify.c:147 src/filed/backup.c:450
-#, c-format
-msgid "     Unchanged file skipped: %s\n"
-msgstr "Archivo sin modificar omitido: %s\n"
+#~ msgid "ioctl MTFSR not permitted on %s.\n"
+#~ msgstr "ioctl MTFSR no permitido en %s.\n"
 
-#: src/filed/verify.c:150
-#, c-format
-msgid "     Archive file skipped: %s\n"
-msgstr "Archivo Archive omitido: %s\n"
+#~ msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
+#~ msgstr "ioctl MTFSR %d error en %s. ERR=%s.\n"
 
-#: src/filed/verify.c:153
-#, c-format
-msgid "     Recursion turned off. Directory skipped: %s\n"
-msgstr "Recursión apagado. Directorio omitido: %s\n"
+#~ msgid "Bad call to bsr_dev. Device not open\n"
+#~ msgstr "Mala llamada a bsr_dev. El dispositivo no abre\n"
 
-#: src/filed/verify.c:157
-#, c-format
-msgid "     File system change prohibited. Directory skipped: %s\n"
-msgstr "Prohibido el cambio de sistema de archivos. Directorio omitido: %s\n"
+#~ msgid "ioctl MTBSR not permitted on %s.\n"
+#~ msgstr "ioctl MTBSR no permitido en %s.\n"
 
-#: src/filed/verify.c:165
-#, c-format
-msgid "     Could not open directory %s: ERR=%s\n"
-msgstr "No se pudo abrir el directorio %s: ERR=%s\n"
+#~ msgid "ioctl MTBSR error on %s. ERR=%s.\n"
+#~ msgstr "ioctl MTBSR error en %s. ERR=%s.\n"
 
-#: src/filed/verify.c:170
-#, c-format
-msgid "     Unknown file type %d: %s\n"
-msgstr "Tipo de archivo desconocido %d: %s\n"
+#~ msgid "Bad call to weof_dev. Device not open\n"
+#~ msgstr "Mala llamada a weof_dev. El dispositivo no abre\n"
 
-#: src/filed/verify.c:214 src/filed/verify_vol.c:206
-#, c-format
-msgid "Network error in send to Director: ERR=%s\n"
-msgstr "Error de red en enviar al Director: ERR=%s\n"
+#~ msgid "Attempt to WEOF on non-appendable Volume\n"
+#~ msgstr "Intento de WEOF en Volumen no-appendable\n"
 
-#: 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"
+#~ msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
+#~ msgstr "ioctl MTWEOF error en %s. ERR=%s.\n"
 
-#: src/filed/verify.c:309
-#, c-format
-msgid "     Cannot open %s: ERR=%s.\n"
-msgstr "No se puede abrir %s: ERR=%s.\n"
+#~ msgid "Read and write devices not properly initialized.\n"
+#~ msgstr ""
+#~ "Dispositivos de lectura y escritura no se han iniciado correctamente.\n"
 
-#: src/filed/verify.c:323
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s.\n"
-msgstr "No se puede abrir recursos fork para %s: ERR=%s.\n"
+#~ msgid "No Volume names found for %s.\n"
+#~ msgstr "Nombres de Volúmenes no encontrados para %s.\n"
 
-#: src/filed/verify.c:386
-#, c-format
-msgid "Error reading file %s: ERR=%s\n"
-msgstr "Error leyendo archivo %s: 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/filed/accurate.c:201
-#, c-format
-msgid "Space saved with Base jobs: %lld MB\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not reserve volume \"%s\", because job canceled.\n"
+#~ msgstr "No es posible reservar volumen %s en %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "Could not reserve volume \"%s\" for append, because it will be read.\n"
+#~ msgstr "No es posible reservar volumen %s en %s\n"
 
-#: src/filed/accurate.c:508
-msgid "2991 Bad accurate command\n"
-msgstr "2991 Malo comando accurate\n"
+#, fuzzy
+#~ msgid "Cannot free Volume \"%s\", because it is reserved by someone else.\n"
+#~ msgstr "No se puede podar Volumen \"%s\", porque el esta archivo.\n"
 
-#: src/filed/status.c:89
-#, fuzzy, c-format
-msgid "Daemon started %s. Jobs: run=%d running=%d.\n"
-msgstr "Demonio iniciado %s, %d Job ejecutando desde el inicio.\n"
+#, fuzzy
+#~ msgid "Volume %s is busy swapping.\n"
+#~ msgstr "3936 Dispositivo %s está ocupado leyendo.\n"
 
-#: src/filed/status.c:149
-#, fuzzy, c-format
-msgid " Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d "
-msgstr "Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d\n"
+#, fuzzy
+#~ msgid "%s device %s is busy.\n"
+#~ msgstr "3936 Dispositivo %s está ocupado leyendo.\n"
 
-#: src/filed/status.c:194
-#, c-format
-msgid "Director connected at: %s\n"
-msgstr "Director conectado en: %s\n"
+#~ msgid "pthread timedwait error. ERR=%s\n"
+#~ msgstr "error timedwait pthread. ERR=%s\n"
 
-#: src/filed/status.c:196
-#, c-format
-msgid "JobId %d Job %s is running.\n"
-msgstr "JobId %d Job %s se está ejecutando.\n"
+#~ msgid "JobId=%s, Job %s waiting to reserve a device.\n"
+#~ msgstr "JobId=%s, Job %s esperando para reservar un dispositivo.\n"
 
-#: src/filed/status.c:199
-#, fuzzy, c-format
-msgid "    %s%s %s Job started: %s\n"
-msgstr " %s%s Job iniciado: %s\n"
+#, fuzzy
+#~ msgid "JobId=%s, Job %s waiting device %s.\n"
+#~ msgstr "JobId=%s, Job %s esperando para reservar un dispositivo.\n"
 
-#: src/filed/status.c:212
-#, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
-msgstr "Archivos=%s Bytes=%s Bytes/sec=%s Errores=%d\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "Example : bbatch -w /path/to/workdir -h localhost -f dat1 -f dat -f datx\n"
+#~ " will start 3 thread and load dat1, dat and datx in your catalog\n"
+#~ "See bbatch.c to generate datafile\n"
+#~ "\n"
+#~ "Usage: bbatch [ options ] -w working/dir -f datafile\n"
+#~ "       -b                with batch mode\n"
+#~ "       -B                without batch mode\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -n <name>         specify the database name (default bacula)\n"
+#~ "       -u <user>         specify database user name (default bacula)\n"
+#~ "       -P <password      specify database password (default none)\n"
+#~ "       -h <host>         specify database host (default NULL)\n"
+#~ "       -w <working>      specify working directory\n"
+#~ "       -r <jobids>       call restore code with given jobids\n"
+#~ "       -v                verbose\n"
+#~ "       -f <file>         specify data file\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ "Ejemplo : bbatch -w /ruta/para/directorio/trabajo -h localhost -f dat1 -f "
+#~ "dat -f datx\n"
+#~ " inicializará 3 hilos y cargará dat1, dat y datx en su catalogo\n"
+#~ "Vea bbatch.c para generar archivos de datos\n"
+#~ "\n"
+#~ "Utilice: bbatch [opciones] -w directorio/trabajo -f archivo_de_datos\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -n <nombre> especifica el nombre de la base de datos (por defecto "
+#~ "bacula)\n"
+#~ " -u <usuario> especifica el nombre de usuario de la base de datos (por "
+#~ "defecto bacula)\n"
+#~ " -P <contraseña> especifica la contraseña de la base de datos (por "
+#~ "defecto none)\n"
+#~ " -h <servidor> especifica servidor de la base de datos (por defecto "
+#~ "NULL)\n"
+#~ " -w <directorio> especifica el directorio de trabajo\n"
+#~ " -v detallado\n"
+#~ " -f <archivo> especifica archivo de datos\n"
+#~ " -? imprime esta mensaje\n"
+#~ "\n"
 
-#: src/filed/status.c:218
-#, c-format
-msgid "    Files Examined=%s\n"
-msgstr "Archivos examinados=%s\n"
+#~ msgid "Error opening datafile %s\n"
+#~ msgstr "Error abriendo archivo de datos %s\n"
 
-#: src/filed/status.c:223
-#, c-format
-msgid "    Processing file: %s\n"
-msgstr "Procesando archivo: %s\n"
+#~ msgid "Error while inserting file\n"
+#~ msgstr "Error insertando el archivo\n"
 
-#: src/filed/status.c:234
-msgid "    SDSocket closed.\n"
-msgstr "SDSocket cerrado.\n"
+#~ msgid "Could not open data file: %s\n"
+#~ msgstr "No se pudo abrir el archivo de datos: %s\n"
 
-#: src/filed/status.c:244 src/filed/status.c:335 src/filed/status.c:409
-msgid "====\n"
-msgstr "====\n"
+#~ msgid "Fatal malformed reply from %s: %s\n"
+#~ msgstr "Fatal malformación de respuesta desde %s: %s\n"
+
+#~ msgid "Fatal fgets error: ERR=%s\n"
+#~ msgstr "fgets fatal error: ERR=%s\n"
 
-#: src/filed/status.c:306
 #, fuzzy
-msgid " SDSocket=closed\n"
-msgstr "SDSocket cerrado.\n"
+#~ 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"
+#~ "       -f          set the From: field\n"
+#~ "       -h          use mailhost:port as the SMTP server\n"
+#~ "       -s          set the Subject: field\n"
+#~ "       -r          set the Reply-To: field\n"
+#~ "       -l          set the maximum number of lines to send (default: "
+#~ "unlimited)\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Utilice: %s [-f desde] [-h servidor de correo] [-s asunto] [-c con copia] "
+#~ "[destinatario ...]\n"
+#~ " -8 conjunto charset a UTF-8\n"
+#~ " -c establece el campo Cc:\n"
+#~ " -d <nn> establece el nivel de depuración para <nn>\n"
+#~ " -dt imprime un timestamp en salida de depuración\n"
+#~ " -f establece el campo Desde:\n"
+#~ " -h use servidor de correo:puerto como servidor SMTP\n"
+#~ " -s establece el campo Asunto:\n"
+#~ " -r establece el campo Responder-Para:\n"
+#~ " -l establece el número máximo de líneas a enviar (por defecto: sin "
+#~ "límite)\n"
+#~ " -? imprimir este mensaje.\n"
+#~ "\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"
-
-#: src/filed/status.c:497
-msgid "2900 Bad .status command, wrong argument.\n"
-msgstr "2900 Malo comando .status, malo argumento.\n"
-
-#: src/filed/status.c:565
-msgid "Bacula Client: Idle"
-msgstr "Bacula Cliente: Inactivo"
-
-#: src/filed/status.c:576
-msgid "Bacula Client: Running"
-msgstr "Bacula Cliente: Funcionando"
-
-#: src/filed/status.c:590
-msgid "Bacula Client: Last Job Canceled"
-msgstr "Bacula Cliente: Ultimo Job Cancelado"
-
-#: src/filed/status.c:594
-msgid "Bacula Client: Last Job Failed"
-msgstr "Bacula Cliente: Ultimo Job Fallido"
-
-#: src/filed/status.c:598
-msgid "Bacula Client: Last Job had Warnings"
-msgstr "Bacula Cliente: Ultimo Job con Advertencias"
-
-#: 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"
+#~ msgid "Fatal error: no recipient given.\n"
+#~ msgstr "Fatal error: destinatario no determinado.\n"
 
-#: 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"
+#~ msgid "Fatal gethostname error: ERR=%s\n"
+#~ msgstr "gethostname fatal error: ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+#~ msgstr "Fallo fatal gethostbyname para mi mismo \"%s\": ERR=%s\n"
 
-#: 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"
+#~ msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
+#~ msgstr "Fallo fatal gethostbyname para mi mismo \"%s\": ERR=%s\n"
 
-#: 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"
+#~ msgid "Error unknown mail host \"%s\": ERR=%s\n"
+#~ msgstr "Error servidor de correo \"%s\" desconocido: ERR=%s\n"
 
-#: 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"
+#~ msgid "Retrying connection using \"localhost\".\n"
+#~ msgstr "Reintentando la conexión usando \"localhost\".\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Failed to connect to mailhost %s\n"
+#~ msgstr "Fallo al conectar con el cliente.\n"
 
-#: 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"
+#~ msgid "Fatal error: Unknown address family for smtp host: %d\n"
+#~ msgstr ""
+#~ "Fatal error: Desconocida familia de direcciones para servidor smtp: %d\n"
 
-#: 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"
+#~ msgid "Fatal socket error: ERR=%s\n"
+#~ msgstr "Fatal error de socket: ERR=%s\n"
 
-#: 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"
+#~ msgid "Fatal connect error to %s: ERR=%s\n"
+#~ msgstr "Fatal error de conexión para %s: ERR=%s\n"
 
-#: 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"
+#~ msgid "Fatal _open_osfhandle error: ERR=%s\n"
+#~ msgstr "Fatal error _open_osfhandle: ERR=%s\n"
 
-#: 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"
+#~ msgid "Fatal fdopen error: ERR=%s\n"
+#~ msgstr "Fatal error fdopen: ERR=%s\n"
 
-#: 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"
+#~ msgid "Fatal dup error: ERR=%s\n"
+#~ msgstr "Fatal error dup: ERR=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -n <name>         specify the database name (default bacula)\n"
+#~ "       -u <user>         specify database user name (default bacula)\n"
+#~ "       -P <password      specify database password (default none)\n"
+#~ "       -h <host>         specify database host (default NULL)\n"
+#~ "       -w <working>      specify working directory\n"
+#~ "       -j <jobids>       specify jobids\n"
+#~ "       -p <path>         specify path\n"
+#~ "       -f <file>         specify file\n"
+#~ "       -l <limit>        maximum tuple to fetch\n"
+#~ "       -T                truncate cache table before starting\n"
+#~ "       -v                verbose\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -n <nombre> especifica el nombre de la base de datos (por defecto "
+#~ "bacula)\n"
+#~ " -u <usuario> especifica el nombre de usuario de la base de datos (por "
+#~ "defecto bacula)\n"
+#~ " -P <contraseña> especifica la contraseña de la base de datos (por "
+#~ "defecto none)\n"
+#~ " -h <servidor> especifica servidor de la base de datos (por defecto "
+#~ "NULL)\n"
+#~ " -w <directorio> especifica el directorio de trabajo\n"
+#~ " -j <jobids> especifica jobids\n"
+#~ " -p <ruta> especifica la ruta\n"
+#~ " -f <archivo> especifica el archivo\n"
+#~ " -l <limite> tupla máxima a buscar\n"
+#~ " -T Truncar tabla de caché antes de empezar\n"
+#~ " -v detallado\n"
+#~ " -? imprime esta mensaje\n"
+#~ "\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -n <name>         specify the database name (default bacula)\n"
+#~ "       -u <user>         specify database user name (default bacula)\n"
+#~ "       -P <password      specify database password (default none)\n"
+#~ "       -h <host>         specify database host (default NULL)\n"
+#~ "       -w <working>      specify working directory\n"
+#~ "       -p <path>         specify path\n"
+#~ "       -f <file>         specify file\n"
+#~ "       -l <limit>        maximum tuple to fetch\n"
+#~ "       -q                print only errors\n"
+#~ "       -v                verbose\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Versión: %s (%s)\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -n <nombre> especifica el nombre de la base de datos (por defecto "
+#~ "bacula)\n"
+#~ " -u <usuario> especifica el nombre de usuario de la base de datos (por "
+#~ "defecto bacula)\n"
+#~ " -P <contraseña> especifica la contraseña de la base de datos (por "
+#~ "defecto none)\n"
+#~ " -h <servidor> especifica servidor de la base de datos (por defecto "
+#~ "NULL)\n"
+#~ " -w <directorio> especifica el directorio de trabajo\n"
+#~ " -j <jobids> especifica jobids\n"
+#~ " -p <ruta> especifica la ruta\n"
+#~ " -f <archivo> especifica el archivo\n"
+#~ " -l <limite> tupla máxima a buscar\n"
+#~ " -T Truncar tabla de caché antes de empezar\n"
+#~ " -v detallado\n"
+#~ " -? imprime esta mensaje\n"
+#~ "\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Could not open, database \"%s\".\n"
+#~ msgstr "No se puede abrir la base de datos \"%s\".\n"
 
-#: 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"
+#~ msgid ""
+#~ "Warning skipping the additional parameters for working directory/dbname/"
+#~ "user/password/host.\n"
+#~ msgstr ""
+#~ "Advertencia, saltando los parámetros adicionales para el directorio de "
+#~ "trabajo/dbname/usuario/contraseña/maquina.\n"
 
-#: 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"
+#~ msgid ""
+#~ "Error can not find the Catalog name[%s] in the given config file [%s]\n"
+#~ msgstr ""
+#~ "Error, no puede encontrar el nombre del Catálogo [%s] en el archivo [%s] "
+#~ "de configuración dado\n"
 
-#: 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"
+#~ msgid "Error there is no Catalog section in the given config file [%s]\n"
+#~ msgstr ""
+#~ "Error, no hay una sección de Catálogo en el archivo de configuración dado "
+#~ "[% s]\n"
 
-#: 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"
+#~ msgid "Error no Director resource defined.\n"
+#~ msgstr "Error, recurso Director no definido.\n"
 
-#: 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"
+#~ msgid "Wrong number of arguments.\n"
+#~ msgstr "Número incorrecto de argumentos.\n"
 
-#: 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"
+#~ msgid "Working directory not supplied.\n"
+#~ msgstr "Directorio de trabajo no suministrado.\n"
 
-#: 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"
+#~ msgid "Database port must be a numeric value.\n"
+#~ msgstr "Puerto de la BD debe ser un valor numérico.\n"
 
-#: 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"
+#~ msgid "Database port must be a int value.\n"
+#~ msgstr "Puerto de la BD debe ser un valor entero.\n"
 
-#: 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"
+#~ msgid "Hello, this is the database check/correct program.\n"
+#~ msgstr ""
+#~ "Hola, este es el programa de comprobación/corrección de la base de "
+#~ "datos.\n"
 
-#: 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"
+#~ msgid "Modify database is on."
+#~ msgstr "Modificación de base de datos esta activada."
 
-#: 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"
+#~ msgid "Modify database is off."
+#~ msgstr "Modificación base de datos esta desactivada."
 
-#: 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"
+#~ msgid " Verbose is on.\n"
+#~ msgstr "Detallado esta activado.\n"
 
-#: 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"
+#~ msgid " Verbose is off.\n"
+#~ msgstr "Detallado está apagado.\n"
 
-#: 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"
+#~ msgid "Please select the function you want to perform.\n"
+#~ msgstr "Por favor seleccione la función que desea realizar.\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "     1) Toggle modify database flag\n"
+#~ "     2) Toggle verbose flag\n"
+#~ "     3) Repair bad Filename records\n"
+#~ "     4) Repair bad Path records\n"
+#~ "     5) Eliminate duplicate Filename records\n"
+#~ "     6) Eliminate duplicate Path records\n"
+#~ "     7) Eliminate orphaned Jobmedia records\n"
+#~ "     8) Eliminate orphaned File records\n"
+#~ "     9) Eliminate orphaned Path records\n"
+#~ "    10) Eliminate orphaned Filename records\n"
+#~ "    11) Eliminate orphaned FileSet records\n"
+#~ "    12) Eliminate orphaned Client records\n"
+#~ "    13) Eliminate orphaned Job records\n"
+#~ "    14) Eliminate all Admin records\n"
+#~ "    15) Eliminate all Restore records\n"
+#~ "    16) All (3-15)\n"
+#~ "    17) Quit\n"
+#~ msgstr ""
+#~ "\n"
+#~ " 1) Activar bandera modificar base de datos\n"
+#~ " 2) Activar bandera detallado\n"
+#~ " 3) Reparar malos registros de Nombre de Archivo\n"
+#~ " 4) Reparar malos registros de Rutas\n"
+#~ " 5) Eliminar registros de Nombre de Archivo duplicados\n"
+#~ " 6) Eliminar registros de Rutas duplicados\n"
+#~ " 7) Eliminar registros de Jobmedia huérfanos\n"
+#~ " 8) Eliminar registros de Archivo huérfanos\n"
+#~ " 9) Eliminar registros de Rutas huérfanos\n"
+#~ " 10) Eliminar registros de nombre de archivo huérfanos\n"
+#~ " 11) Eliminar registros de FileSet huérfanos\n"
+#~ " 12) Eliminar registros de Cliente huérfanos\n"
+#~ " 13) Eliminar registros de Job huérfanos\n"
+#~ " 14) Eliminar todos los registros de Administración\n"
+#~ " 15) Eliminar todos los registros de Restauración\n"
+#~ " 16) Todos (3-15)\n"
+#~ " 17) Salir\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "     1) Toggle modify database flag\n"
+#~ "     2) Toggle verbose flag\n"
+#~ "     3) Check for bad Filename records\n"
+#~ "     4) Check for bad Path records\n"
+#~ "     5) Check for duplicate Filename records\n"
+#~ "     6) Check for duplicate Path records\n"
+#~ "     7) Check for orphaned Jobmedia records\n"
+#~ "     8) Check for orphaned File records\n"
+#~ "     9) Check for orphaned Path records\n"
+#~ "    10) Check for orphaned Filename records\n"
+#~ "    11) Check for orphaned FileSet records\n"
+#~ "    12) Check for orphaned Client records\n"
+#~ "    13) Check for orphaned Job records\n"
+#~ "    14) Check for all Admin records\n"
+#~ "    15) Check for all Restore records\n"
+#~ "    16) All (3-15)\n"
+#~ "    17) Quit\n"
+#~ msgstr ""
+#~ "\n"
+#~ " 1) Activar bandera modificar base de datos\n"
+#~ " 2) Activar bandera detallado\n"
+#~ " 3) Verificar malos registros de Nombre de Archivo\n"
+#~ " 4) Verificar malos registros de Rutas\n"
+#~ " 5) Verificar registros de Nombre de Archivo duplicados\n"
+#~ " 6) Verificar registros de Rutas duplicados\n"
+#~ " 7) Verificar registros de Jobmedia huérfanos\n"
+#~ " 8) Verificar registros de Archivo huérfanos\n"
+#~ " 9) Verificar registros de Rutas huérfanos\n"
+#~ " 10) Verificar registros de nombre de archivo huérfanos\n"
+#~ " 11) Verificar registros de FileSet huérfanos\n"
+#~ " 12) Verificar registros de Cliente huérfanos\n"
+#~ " 13) Verificar registros de Job huérfanos\n"
+#~ " 14) Verificar todos los registros de Administración\n"
+#~ " 15) Verificar todos los registros de Restauración\n"
+#~ " 16) Todos (3-15)\n"
+#~ " 17) Salir\n"
 
-#: 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"
+#~ msgid "Select function number: "
+#~ msgstr "Seleccione número de función:"
 
-#: 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"
+#~ msgid "Database will be modified.\n"
+#~ msgstr "Base de datos será modificada.\n"
 
-#: 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"
+#~ msgid "Database will NOT be modified.\n"
+#~ msgstr "Base de datos NO será modificada.\n"
 
-#: 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"
+#~ msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
+#~ msgstr "JobId=%s Nombre=\"%s\" HoraInicio=%s\n"
 
-#: 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"
+#~ msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
+#~ msgstr "Huérfanos JobMediaId=%s JobId=%s Volumen=\"%s\"\n"
 
-#: 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"
+#~ msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
+#~ msgstr "Huérfanos FileId=%s JobId=%s Volumen=\"%s\"\n"
 
-#: 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"
+#~ msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
+#~ msgstr "Huérfanos FileSetId=%s FileSet=\"%s\" MD5=%s\n"
 
-#: 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"
+#~ msgid "Orphaned ClientId=%s Name=\"%s\"\n"
+#~ msgstr "Huérfanos ClientId=%s Nombre=\"%s\"\n"
 
-#: 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"
+#~ msgid "Deleting: %s\n"
+#~ msgstr "Eliminando: %s\n"
 
-#: 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"
+#~ msgid "Checking for duplicate Filename entries.\n"
+#~ msgstr "Comprobando entradas Nombre de Archivo(Filename) duplicadas.\n"
 
-#: 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"
+#~ msgid "Found %d duplicate Filename records.\n"
+#~ msgstr "Encontrados %d registros Nombre de Archivo(Filename) duplicados.\n"
 
-#: 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 ""
-"No se puede restaurar los datos de xattr %s en el archivo \"%s\": No todos "
-"los datos disponibles en flujo xattr\n"
+#~ msgid "Print the list? (yes/no): "
+#~ msgstr "Imprimir la lista? (sí/no):"
 
-#: 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"
+#~ msgid "Found %d for: %s\n"
+#~ msgstr "Encontrados %d para: %s\n"
 
-#: 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"
+#~ msgid "Checking for duplicate Path entries.\n"
+#~ msgstr "Comprobando entradas Path duplicadas.\n"
 
-#: 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"
+#~ msgid "Found %d duplicate Path records.\n"
+#~ msgstr "Encontrados %d registros de Rutas duplicados.\n"
 
-#: 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"
+#~ msgid "Print them? (yes/no): "
+#~ msgstr "Imprimirlos? (sí/no):"
 
-#: 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"
+#~ msgid "Checking for orphaned JobMedia entries.\n"
+#~ msgstr "Comprobando entradas JobMedia huérfanas.\n"
 
-#: 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"
+#~ msgid "Found %d orphaned JobMedia records.\n"
+#~ msgstr "Encontrados %d registros JobMedia huérfanos.\n"
 
-#: 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"
+#~ msgid "Deleting %d orphaned JobMedia records.\n"
+#~ msgstr "Eliminando %d registros JobMedia huérfanos.\n"
 
-#: 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"
+#~ msgid "Checking for orphaned File entries. This may take some time!\n"
+#~ msgstr ""
+#~ "Comprobando entradas Files huérfanas. Esto puede tomar algún tiempo.\n"
 
-#: src/filed/xattr.c:3891
-#, c-format
-msgid ""
-"Can't restore Extended Attributes of %s - incompatible xattr stream "
-"encountered - %d\n"
-msgstr ""
-"No se puede restaurar los atributos extendidos de %s - incompatible flujo "
-"xattr encontrado - %d\n"
+#~ msgid "Found %d orphaned File records.\n"
+#~ msgstr "Encontrados %d registros File huérfanos.\n"
 
-#: 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"
+#~ msgid "Deleting %d orphaned File records.\n"
+#~ msgstr "Eliminando %d registros File huérfanos.\n"
+
+#~ msgid "Create temporary index? (yes/no): "
+#~ msgstr "Crear índice temporal? (sí/no):"
+
+#~ msgid "Checking for orphaned Path entries. This may take some time!\n"
+#~ msgstr ""
+#~ "Comprobando de entradas huérfanas de Ruta. Esto puede tomar algún "
+#~ "tiempo!\n"
+
+#~ msgid "Found %d orphaned Path records.\n"
+#~ msgstr "Se han encontrado %d registros huérfanos de Ruta.\n"
+
+#~ msgid "Deleting %d orphaned Path records.\n"
+#~ msgstr "Eliminando %d registros huérfanos de Ruta.\n"
+
+#~ msgid "Checking for orphaned Filename entries. This may take some time!\n"
+#~ msgstr ""
+#~ "Comprobando de entradas de Nombre de Archivo huérfanos. Esto puede tomar "
+#~ "algún tiempo!\n"
 
-#: 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"
+#~ msgid "Found %d orphaned Filename records.\n"
+#~ msgstr "Se han encontrado %d registros de Nombre de Archivos huérfanos.\n"
 
-#: 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"
+#~ msgid "Deleting %d orphaned Filename records.\n"
+#~ msgstr "Eliminando %d registros de Nombre de Archivos huérfanos.\n"
 
-#: src/filed/fd_plugins.c:775
-msgid "Plugin save packet not found.\n"
-msgstr "Plugin guardar paquetes no encontrado.\n"
+#~ msgid "Checking for orphaned FileSet entries. This takes some time!\n"
+#~ msgstr ""
+#~ "Comprobando de entradas FileSet huérfanos. Esto puede tomar algún "
+#~ "tiempo!\n"
 
-#: src/filed/fd_plugins.c:910
-#, c-format
-msgid "Plugin=%s not found.\n"
-msgstr "Plugin=%s no encontrado.\n"
+#~ msgid "Found %d orphaned FileSet records.\n"
+#~ msgstr "Se han encontrado %d registros FileSet huérfanos.\n"
 
-#: 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"
+#~ msgid "Deleting %d orphaned FileSet records.\n"
+#~ msgstr "Eliminando %d registros FileSet huérfanos.\n"
 
-#: 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"
+#~ msgid "Checking for orphaned Client entries.\n"
+#~ msgstr ""
+#~ "Comprobando entradas de Clientes huérfanos. Esto puede tomar algún "
+#~ "tiempo!\n"
 
-#: 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"
+#~ msgid "Found %d orphaned Client records.\n"
+#~ msgstr "Se han encontrado %d registros de Clientes huérfanos.\n"
 
-#: src/filed/filed.c:76
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -d <nn>     set debug level to <nn>\n"
-"        -dt         print a timestamp in debug output\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g          groupid\n"
-"        -k          keep readall capabilities\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test configuration file and exit\n"
-"        -u          userid\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Utilice: bacula-fd [-f -s] [-c archivo_de_configuración] [-d "
-"nivel_depuración]\n"
-" -c <archivo> establecer archivo de configuración para archivo \n"
-" -d <nn> establecer el nivel de depuración para <nn>\n"
-" -dt imprimir timestamp en salida de depuración\n"
-" -f ejecutar en primer plano (para depuración)\n"
-" -g groupid\n"
-" -k keep readall capabilities\n"
-" -m imprimir salida kaboom para depuración)\n"
-" -s sin señales(para depuración)\n"
-" -t prueba - leer la configuración y salir\n"
-" -u userid\n"
-" -v mensajes de usuario detallados\n"
-" -? imprimir este mensaje.\n"
-"\n"
+#~ msgid "Deleting %d orphaned Client records.\n"
+#~ msgstr "Eliminando %d registros de Clientes huérfanos.\n"
 
-#: src/filed/filed.c:199
-msgid "-k option has no meaning without -u option.\n"
-msgstr "la opción -k no tiene sentido sin la opción -u.\n"
+#~ msgid "Checking for orphaned Job entries.\n"
+#~ msgstr ""
+#~ "Comprobando entradas de Job huérfanos. Esto puede tomar algún tiempo!\n"
 
-#: src/filed/filed.c:337
-#, c-format
-msgid ""
-"No File daemon resource defined in %s\n"
-"Without that I don't know who I am :-(\n"
-msgstr ""
-"Ninguno recurso File Daemon definido en %s\n"
-"Sin eso yo no sé quién soy :-(\n"
+#~ msgid "Found %d orphaned Job records.\n"
+#~ msgstr "Se han encontrado %d registros de Job huérfanos.\n"
 
-#: src/filed/filed.c:342
-#, c-format
-msgid "Only one Client resource permitted in %s\n"
-msgstr "Sólo un recurso de cliente permitido en %s\n"
+#~ msgid "Deleting %d orphaned Job records.\n"
+#~ msgstr "Eliminando %d registros de Job huérfanos.\n"
 
-#: src/filed/filed.c:366
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"File daemon in %s.\n"
-msgstr ""
-"Ninguno \"Certificado TLS de CA\" o \"Directorio de Certificado TLS de CA\" "
-"están definidos para el demonio File en %s.\n"
+#~ msgid "Deleting JobMedia records of orphaned Job records.\n"
+#~ msgstr "Eliminando registros JobMedia de registros de Job huérfanos.\n"
 
-#: src/filed/filed.c:390
-msgid "PKI encryption/signing enabled but not compiled into Bacula.\n"
-msgstr "Cifrado o Firma PKI habilitado, pero no compilado en Bacula.\n"
+#~ msgid "Deleting Log records of orphaned Job records.\n"
+#~ msgstr "Eliminando registros Log de registros de Job huérfanos.\n"
 
-#: src/filed/filed.c:401
-#, c-format
-msgid ""
-"\"PKI Key Pair\" must be defined for File daemon \"%s\" in %s if either "
-"\"PKI Sign\" or \"PKI Encrypt\" are enabled.\n"
-msgstr ""
-"\"Par de Claves PKI\" debe estar definido para el demonio File \"%s\" en %s, "
-"si uno o otro \"Firma PKI\" o \"Cifrar PKI\" están habilitados.\n"
+#~ msgid "Checking for Admin Job entries.\n"
+#~ msgstr "Comprobando entradas para Job Administrativo.\n"
 
-#: src/filed/filed.c:413 src/filed/filed.c:444 src/filed/filed.c:485
-msgid "Failed to allocate a new keypair object.\n"
-msgstr "No se ha podido asignar un nuevo objeto keypair.\n"
+#~ msgid "Found %d Admin Job records.\n"
+#~ msgstr "Se han encontrado %d registros de Job Administrativo.\n"
 
-#: src/filed/filed.c:417
-#, c-format
-msgid "Failed to load public certificate for File daemon \"%s\" in %s.\n"
-msgstr "Fallo al cargar certificado publico para File Daemon \"%s\" en %s.\n"
+#~ msgid "Deleting %d Admin Job records.\n"
+#~ msgstr "Eliminando %d registros de Job Administrativo.\n"
 
-#: src/filed/filed.c:423
-#, c-format
-msgid "Failed to load private key for File daemon \"%s\" in %s.\n"
-msgstr "Fallo al cargar llave privada para File Daemon \"%s\" en %s.\n"
+#~ msgid "Checking for Restore Job entries.\n"
+#~ msgstr "Comprobando entradas para Job de Restauración.\n"
 
-#: src/filed/filed.c:453
-#, c-format
-msgid "Failed to load private key from file %s for File daemon \"%s\" in %s.\n"
-msgstr ""
-"Fallo al cargar llave privada desde el archivo %s para File Daemon \"%s\" en "
-"%s.\n"
+#~ msgid "Found %d Restore Job records.\n"
+#~ msgstr "Se han encontrado %d registros de Job de Restauración.\n"
 
-#: src/filed/filed.c:460
-#, c-format
-msgid ""
-"Failed to load trusted signer certificate from file %s for File daemon \"%s"
-"\" in %s.\n"
-msgstr ""
-"Fallo al cargar certificado del firmante desde el archivo %s para File "
-"Daemon \"%s\" en %s.\n"
+#~ msgid "Deleting %d Restore Job records.\n"
+#~ msgstr "Eliminando %d registros de Job de Restauración.\n"
 
-#: src/filed/filed.c:491
-#, c-format
-msgid ""
-"Failed to load master key certificate from file %s for File daemon \"%s\" in "
-"%s.\n"
-msgstr ""
-"Fallo al cargar certificado de llave maestro desde el archivo %s para File "
-"Daemon \"%s\" en %s.\n"
+#~ msgid "Checking for Filenames with a trailing slash\n"
+#~ msgstr "Comprobando Nombres de Archivo con una barra diagonal\n"
 
-#: src/filed/filed.c:507
-#, c-format
-msgid "No Director resource defined in %s\n"
-msgstr "Recurso Director no definido en %s\n"
+#~ msgid "Found %d bad Filename records.\n"
+#~ msgstr "Se han encontrado %d malos registros de Nombre de Archivo.\n"
 
-#: 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"
+#~ msgid "Reparing %d bad Filename records.\n"
+#~ msgstr "Reparando %d malos registros de Nombre de Archivo.\n"
 
-#: 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"
+#~ msgid "Checking for Paths without a trailing slash\n"
+#~ msgstr "Comprobando Rutas sin una barra diagonal\n"
 
-#: 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"
+#~ msgid "Found %d bad Path records.\n"
+#~ msgstr "Se han encontrado %d malos registros de Rutas.\n"
 
-#: src/filed/acl.c:386
-#, fuzzy, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
-"support\n"
-msgstr ""
-"Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
-"soporte a acl\n"
+#~ msgid ""
+#~ "Ok. Index over the %s column already exists and dbcheck will work "
+#~ "faster.\n"
+#~ msgstr ""
+#~ "Listo. Índice sobre la columna %s ya existe y dbcheck funcionará más "
+#~ "rápido.\n"
 
-#: src/filed/acl.c:394
-#, fuzzy, c-format
-msgid ""
-"Trying to restore NFSv4 acl on file \"%s\" on filesystem without NFS4 acl "
-"support\n"
-msgstr ""
-"Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
-"soporte a acl\n"
+#~ msgid ""
+#~ "Note. Index over the %s column not found, that can greatly slow down "
+#~ "dbcheck.\n"
+#~ msgstr ""
+#~ "Nota. Índice sobre la columna %s no encontrado, esto puede en gran medida "
+#~ "ralentizar dbcheck.\n"
 
-#: 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"
+#~ msgid "Create temporary index... This may take some time!\n"
+#~ msgstr "Crear índice temporal... Esto puede tomar algún tiempo!\n"
 
-#: 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"
+#~ msgid "Temporary index created.\n"
+#~ msgstr "Índice temporal creado.\n"
 
-#: 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"
+#~ msgid "Drop temporary index.\n"
+#~ msgstr "Eliminar índice temporal.\n"
 
-#: 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"
+#~ msgid "Temporary index %s deleted.\n"
+#~ msgstr "Índice temporal %s eliminado.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Usage: drivetype [-v] path ...\n"
+#~ "\n"
+#~ "       Print the drive type a given file/directory is on.\n"
+#~ "       The following options are supported:\n"
+#~ "\n"
+#~ "       -l     print local fixed hard drive\n"
+#~ "       -a     display information on all drives\n"
+#~ "       -v     print both path and file system type.\n"
+#~ "       -?     print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Utilice: drivetype [-v] ruta ...\n"
+#~ "\n"
+#~ " Imprime el tipo de unidad dado a archivo/directorio esta activada.\n"
+#~ " Las siguientes opciones están soportados:\n"
+#~ "\n"
+#~ " -v imprime ambos tipos de rutas y archivo de sistemas.\n"
+#~ " -? imprime esta mensaje.\n"
+#~ "\n"
 
-#: 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"
+#~ msgid "%s: unknown\n"
+#~ msgstr "%s: desconocido\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "Usage: fstype [-v] path ...\n"
+#~ "\n"
+#~ "       Print the file system type a given file/directory is on.\n"
+#~ "       The following options are supported:\n"
+#~ "\n"
+#~ "       -v     print both path and file system type.\n"
+#~ "       -?     print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Utilice: fstype [-v] ruta ...\n"
+#~ "\n"
+#~ " Imprime el tipo de sistema de archivo de un determinado archivo/"
+#~ "directorio.\n"
+#~ "Las siguientes opciones son compatibles:\n"
+#~ "\n"
+#~ " -v imprimir tanto tipo de rutas y sistema de archivos.\n"
+#~ " -? imprimir este mensaje.\n"
+#~ "\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
+#~ "       -a          print extended attributes (Win32 debug)\n"
+#~ "       -d <nn>     set debug level to <nn>\n"
+#~ "       -dt         print timestamp in debug output\n"
+#~ "       -c          specify config file containing FileSet resources\n"
+#~ "       -f          specify which FileSet to use\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ "Patterns are used for file inclusion -- normally directories.\n"
+#~ "Debug level >= 1 prints each file found.\n"
+#~ "Debug level >= 10 prints path/file for catalog.\n"
+#~ "Errors are always printed.\n"
+#~ "Files/paths truncated is the number of files/paths with len > 255.\n"
+#~ "Truncation is only in the catalog.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Utilice: testfind [-d nivel_ depuración] [-] [patrón1 ...]\n"
+#~ " -a imprime atributos extendidos (depuración de Win32)\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -c especifica archivo de conteniendo recursos FileSet\n"
+#~ " -f especifica cual FileSet para usar\n"
+#~ " -? imprime esta mensaje.\n"
+#~ "\n"
+#~ "Los patrones son archivos de inclusión - normalmente directorios.\n"
+#~ "Nivel de depuración >= 1 imprime cada archivo encontrado.\n"
+#~ "Nivel de depuración >= 10 imprime ruta/archivo para catalogo.\n"
+#~ "Los errores siempre se imprimen.\n"
+#~ "Archivos/rutas truncados es numero con longitud > 255.\n"
+#~ "Truncamiento es sólo en catálogo..\n"
+#~ "\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "Total files    : %d\n"
+#~ "Max file length: %d\n"
+#~ "Max path length: %d\n"
+#~ "Files truncated: %d\n"
+#~ "Paths truncated: %d\n"
+#~ "Hard links     : %d\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Total de Archivos : %d\n"
+#~ "Longitud máxima de archivo: %d\n"
+#~ "Longitud máxima de ruta: %d\n"
+#~ "Archivos truncados: %d\n"
+#~ "Rutas truncadas: %d\n"
+#~ "Enlaces duros : %d\n"
 
-#: 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"
+#~ msgid "Reg: %s\n"
+#~ msgstr "Reg: %s\n"
 
-#: 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"
+#~ msgid "\t[will not descend: recursion turned off]"
+#~ msgstr "\t[no descenderá: recursividad desactivado]"
 
-#: src/filed/acl.c:1246
-#, fuzzy, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
-msgstr ""
-"Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
-"soporte a acl\n"
+#~ msgid "\t[will not descend: file system change not allowed]"
+#~ msgstr "\t[no descenderá: no permitido cambio de sistema de archivo]"
 
-#: 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"
+#~ msgid "\t[will not descend: disallowed file system]"
+#~ msgstr "\t[no descenderá: sistema de archivo no permitido]"
 
-#: 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"
+#~ msgid "\t[will not descend: disallowed drive type]"
+#~ msgstr "\t[no descenderá: tipo de unidad no permitido]"
 
-#: 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"
+#~ msgid "Err: Could not access %s: %s\n"
+#~ msgstr "Err: No es posible acceder %s: %s\n"
 
-#: 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"
+#~ msgid "Err: Could not follow ff->link %s: %s\n"
+#~ msgstr "Err: no podía seguir ff->link %s: %s\n"
 
-#: 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"
+#~ msgid "Err: Could not stat %s: %s\n"
+#~ msgstr "Err: no se pudo stat %s: %s\n"
 
-#: 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"
+#~ msgid "Skip: File not saved. No change. %s\n"
+#~ msgstr "Saltar: Archivo no guardado. Sin cambios. %s\n"
 
-#: src/filed/acl.c:1834
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without acl support\n"
-msgstr ""
-"Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
-"soporte a acl\n"
+#~ msgid "Err: Attempt to backup archive. Not saved. %s\n"
+#~ msgstr "Err: Intento de copia de seguridad. No guardado. %s\n"
 
-#: 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 ""
-"Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
-"soporte a acl aclent\n"
+#~ msgid "Err: Could not open directory %s: %s\n"
+#~ msgstr "Err: no se pudo abrir el directorio %s: %s\n"
 
-#: src/filed/acl.c:1874
-#, fuzzy, c-format
-msgid ""
-"Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
-"support\n"
-msgstr ""
-"Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
-"soporte a acl ace\n"
+#~ msgid "Err: Unknown file ff->type %d: %s\n"
+#~ msgstr "Err: Archivo desconocido ff->tipo %d: %s\n"
 
-#: 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"
+#~ msgid "===== Filename truncated to 255 chars: %s\n"
+#~ msgstr "===== Nombre de Archivo truncado para 255 caracteres: %s\n"
 
-#: 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"
+#~ msgid "========== Path name truncated to 255 chars: %s\n"
+#~ msgstr "========== Nombre de Ruta truncado para 255 caracteres: %s\n"
 
-#: 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"
+#~ msgid "========== Path length is zero. File=%s\n"
+#~ msgstr "========== La longitud de la ruta es nula. Archivo=%s\n"
 
-#: 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"
+#~ msgid "Path: %s\n"
+#~ msgstr "Ruta: %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
+#~ "       -a          print extended attributes (Win32 debug)\n"
+#~ "       -d <nn>     set debug level to <nn>\n"
+#~ "       -dt         print timestamp in debug output\n"
+#~ "       -e          specify file of exclude patterns\n"
+#~ "       -i          specify file of include patterns\n"
+#~ "       -q          quiet, don't print filenames (debug)\n"
+#~ "       -           read pattern(s) from stdin\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ "Patterns are file inclusion -- normally directories.\n"
+#~ "Debug level >= 1 prints each file found.\n"
+#~ "Debug level >= 10 prints path/file for catalog.\n"
+#~ "Errors always printed.\n"
+#~ "Files/paths truncated is number with len > 255.\n"
+#~ "Truncation is only in catalog.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Utilice: testls [-d nivel_ depuración] [-] [patrón1 ...]\n"
+#~ " -a imprime atributos extendidos (depuración de Win32)\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -e especifica archivo de exclusión de patrones\n"
+#~ " -i especifica archivo de inclusión de patrones\n"
+#~ " - leer patrón(es) desde stdin\n"
 
-#: 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"
+#~ msgid "Could not open include file: %s\n"
+#~ msgstr "No se pudo abrir el archivo incluir: %s\n"
 
-#: 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"
+#~ msgid "Could not open exclude file: %s\n"
+#~ msgstr "No se pudo abrir el archivo excluir: %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"
+#~ msgid "Recursion turned off. Directory not entered. %s\n"
+#~ msgstr "Recursión deshabilitada. No entró al directorio. %s\n"
 
-#: src/filed/acl.c:2363
-#, c-format
-msgid "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
-msgstr ""
-"No puede restaurar ACL de %s - incompatible flujo acl encontrado - %d\n"
+#~ msgid "Skip: File system change prohibited. Directory not entered. %s\n"
+#~ msgstr ""
+#~ "Saltar: Cambio de sistema de archivos prohibido. No entró al directorio. "
+#~ "%s\n"
 
-#: src/filed/verify_vol.c:63
-msgid "Storage command not issued before Verify.\n"
-msgstr "Comando Storage no publicado antes de Verificar.\n"
+#, fuzzy
+#~ msgid "Invalid jobid argument\n"
+#~ msgstr "argumento invalido"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unknown ObjectType %s\n"
+#~ msgstr "Tipo de base de datos desconocido: %s\n"
 
-#: 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"
+#~ msgid "No FreeSpace command defined.\n"
+#~ msgstr "Comando FreeSpace no definido.\n"
 
-#: 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"
+#~ msgid "Cannot run free space command. Results=%s ERR=%s\n"
+#~ msgstr ""
+#~ "No se puede ejecutar comando de espacio libre. Resultados=%s ERR=%s\n"
 
-#: src/filed/verify_vol.c:143
-#, c-format
-msgid "Error scanning record header: %s\n"
-msgstr "Error escaneando registro de cabecera: %s\n"
+#~ msgid "Error writing part %d to the DVD: ERR=%s\n"
+#~ msgstr "Error escribiendo parte %d en el DVD: ERR=%s\n"
 
-#: src/filed/backup.c:102
-msgid "Cannot set buffer size FD->SD.\n"
-msgstr "No puede establecer el tamaño del búfer FD-> SD.\n"
+#~ msgid "Error while writing current part to the DVD: %s"
+#~ msgstr "Error al escribir parte actual al DVD: %s"
 
-#: src/filed/backup.c:194
-#, c-format
-msgid "Encountered %ld acl errors while doing backup\n"
-msgstr "Detectado %ld errores de acl al hacer copia de seguridad\n"
+#~ msgid "Part %d (%lld bytes) written to DVD.\n"
+#~ msgstr "Parte %d (%lld bytes) escrito al DVD.\n"
 
-#: src/filed/backup.c:198
-#, c-format
-msgid "Encountered %ld xattr errors while doing backup\n"
-msgstr "Detectado %ld errores de xattr al hacer copia de seguridad\n"
+#~ msgid "Remaining free space %s on %s\n"
+#~ msgstr "Espacio libre restante %s en %s\n"
 
-#: src/filed/backup.c:267 src/filed/backup.c:276
-msgid "An error occurred while encrypting the stream.\n"
-msgstr "A ocurrido un error al cifrar el stream.\n"
+#~ 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/filed/backup.c:387
-#, c-format
-msgid "     Recursion turned off. Will not descend from %s into %s\n"
-msgstr "Recursión desactivado. No descenderá de %s dentro de %s\n"
+#~ msgid ""
+#~ "Error writing. Current part less than total number of parts (%d/%d, "
+#~ "device=%s)\n"
+#~ msgstr ""
+#~ "Error al escribir. Parte actual menor que número total de partes (%d/%d, "
+#~ "dispositivo=%s)\n"
 
-#: src/filed/backup.c:394
-#, fuzzy, c-format
-msgid "     %s is a different filesystem. Will not descend from %s into it.\n"
-msgstr ""
-"%s es un sistema de ficheros diferentes. No descenderá de %s dentro de %s\n"
+#~ msgid "Unable to write last on %s: ERR=%s\n"
+#~ msgstr "No se puede escribir última en %s: ERR=%s\n"
 
-#: src/filed/backup.c:400
-#, c-format
-msgid "     Disallowed filesystem. Will not descend from %s into %s\n"
-msgstr "Sistema de Archivos no permitido. No descenderá de %s en %s\n"
+#, fuzzy
+#~ msgid ""
+#~ "Out of freespace caused 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/filed/backup.c:405
-#, c-format
-msgid "     Disallowed drive type. Will not descend into %s\n"
-msgstr "Tipo de unidad no permitido. No descenderá en %s\n"
+#~ msgid ""
+#~ "Error while writing, current part number is less than the total number of "
+#~ "parts (%d/%d, device=%s)\n"
+#~ msgstr ""
+#~ "Error al escribir, número de parte actual es menor que el número total de "
+#~ "partes (%d/%d, dispositivo=%s)\n"
 
-#: src/filed/backup.c:416
-#, c-format
-msgid "     Socket file skipped: %s\n"
-msgstr "Archivo de Socket omitido: %s\n"
+#~ 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/filed/backup.c:429
-#, c-format
-msgid "     Could not access \"%s\": ERR=%s\n"
-msgstr "No se pudo acceder a \"%s\": ERR=%s\n"
+#~ 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 ""
+#~ "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/filed/backup.c:436
-#, c-format
-msgid "     Could not follow link \"%s\": ERR=%s\n"
-msgstr "No se pudo seguir el enlace \"%s\": ERR=%s\n"
+#~ msgid ""
+#~ "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
+#~ "free_space_errno=%d).\n"
+#~ msgstr ""
+#~ "Fin de Volumen \"%s\" en %u:%u en el dispositivo %s (part_size=%s, "
+#~ "free_space=%s, free_space_errno=%d).\n"
 
-#: src/filed/backup.c:443
-#, c-format
-msgid "     Could not stat \"%s\": ERR=%s\n"
-msgstr "No se pudo stat \"%s\": ERR=%s\n"
+#~ msgid "Could not initialize Python\n"
+#~ msgstr "No se pudo inicializar Python\n"
 
-#: src/filed/backup.c:453
-#, c-format
-msgid "     Archive file not saved: %s\n"
-msgstr "Archivo no guardado: %s\n"
+#~ msgid "Could not Run Python string %s\n"
+#~ msgstr "No se pudo ejecutar Python cadena %s\n"
 
-#: src/filed/backup.c:457
-#, c-format
-msgid "     Could not open directory \"%s\": ERR=%s\n"
-msgstr "No se puede abrir directorio \"%s\": ERR=%s.\n"
+#~ msgid "Could not initialize Python Job type.\n"
+#~ msgstr "No se pudo inicializar Job tipo Python.\n"
 
-#: 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"
+#~ msgid "Could not import Python script %s/%s. Python disabled.\n"
+#~ msgstr "No se puede importar script Python %s/%s. Python deshabilitado.\n"
 
-#: 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"
+#~ msgid "Could not create Python Job Object.\n"
+#~ msgstr "No es posible crear objeto Job Python.\n"
 
-#: src/filed/backup.c:630
-#, c-format
-msgid "     Cannot open \"%s\": ERR=%s.\n"
-msgstr "No se puede abrir \"%s\": ERR=%s.\n"
+#~ msgid "Python function \"%s\" not found.\n"
+#~ msgstr "Python función \"%s\" no encontrada.\n"
 
-#: 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"
+#~ msgid "Unknown Python daemon event %s\n"
+#~ msgstr "Demonio Python evento %s desconocido\n"
 
-#: 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"
+#~ msgid "Unable to initialize the Python lock. ERR=%s\n"
+#~ msgstr "No se puede inicializar el bloqueo de Python. ERR=%s\n"
 
-#: 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"
+#~ msgid "Cannot open current directory: ERR=%s\n"
+#~ msgstr "No se puede abrir el directorio actual: ERR=%s\n"
 
-#: 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"
+#~ msgid "Cannot get current directory: ERR=%s\n"
+#~ msgstr "No se puede obtener el directorio actual: ERR=%s\n"
 
-#: src/filed/backup.c:931
-#, c-format
-msgid "Compression deflateParams error: %d\n"
-msgstr "Error de compresión DeflateParams: %d\n"
+#~ msgid "Cannot reset current directory: ERR=%s\n"
+#~ msgstr "No se puede restablecer el directorio actual: ERR=%s\n"
 
-#: src/filed/backup.c:968
-#, fuzzy
-msgid "Encrypting sparse or offset data not supported.\n"
-msgstr "Cifrado de datos dispersos no soportado.\n"
+#~ msgid "Error in %s file %s: ERR=%s\n"
+#~ msgstr "Error en %s archivo %s: ERR=%s\n"
 
-#: src/filed/backup.c:975
-msgid "Failed to initialize encryption context.\n"
-msgstr "Fallo al inicializar el contexto de cifrado.\n"
+#~ msgid "Error in %s: ERR=%s\n"
+#~ msgstr "Error en %s: ERR=%s\n"
 
-#: src/filed/backup.c:1085
-#, c-format
-msgid "Compression deflate error: %d\n"
-msgstr "Error de compresión Deflate: %d\n"
+#~ msgid "AdjustTokenPrivileges set "
+#~ msgstr "Establecer AdjustTokenPrivileges "
 
-#: src/filed/backup.c:1092
-#, c-format
-msgid "Compression deflateReset error: %d\n"
-msgstr "Error de compresión DeflateReset: %d\n"
+#~ msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
+#~ msgstr ""
+#~ "Generar instantáneas(snapshots) VSS. Driver=\"%s\", Drive(s)=\"%s\"\n"
 
-#: src/filed/backup.c:1126
-#, fuzzy, c-format
-msgid "Compression LZO error: %d\n"
-msgstr "Error de compresión Deflate: %d\n"
+#, fuzzy
+#~ msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
+#~ msgstr "Fallo al generar VSS snapshots.\n"
 
-#: src/filed/backup.c:1171 src/filed/backup.c:1187
-msgid "Encryption error\n"
-msgstr "Error de cifrado\n"
+#, fuzzy
+#~ msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
+#~ msgstr "Fallo al generar VSS snapshots.\n"
 
-#: 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"
+#~ msgid "VSS Writer (PrepareForBackup): %s\n"
+#~ msgstr "VSS Writer (PrepareForBackup): %s\n"
 
-#: src/filed/backup.c:1216
-#, fuzzy, c-format
-msgid "Too many errors. JobErrors=%d.\n"
-msgstr "Demasiados errores.\n"
+#~ 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/backup.c:1226
-msgid "Encryption padding error\n"
-msgstr "Error de relleno de cifrado\n"
+#, fuzzy
+#~ msgid "VSS was not initialized properly. ERR=%s\n"
+#~ msgstr ""
+#~ "VSS no se inicializo correctamente. Suporte VSS está desactivado. ERR=%s\n"
 
-#: 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"
+#~ 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/backup.c:1549
-#, c-format
-msgid "VSS Writer (BackupComplete): %s\n"
-msgstr "VSS Writer (BackupComplete): %s\n"
+#, fuzzy
+#~ msgid "VSS Writer (RestoreComplete): %s\n"
+#~ msgstr "VSS Writer (BackupComplete): %s\n"
 
-#: src/filed/restore.c:114
-#, c-format
-msgid "Size of data or stream of %s not correct. Original %s, restored %s.\n"
-msgstr ""
-"Tamaño de datos o flujo de %s no es correcto. Original %s, restaurado %s\n"
+#~ msgid "Job pointer not found."
+#~ msgstr "No se encuentra el puntero del Job."
 
-#: src/filed/restore.c:134
-#, c-format
-msgid "Invalid length of Finder Info (got %d, not 32)\n"
-msgstr "Longitud no válida de Buscador de Información (obtuvo %d, no 32)\n"
+#~ msgid "Attribute %s not found."
+#~ msgstr "Atributo %s no encontrado."
 
-#: src/filed/restore.c:139
-#, c-format
-msgid "Could not set Finder Info on %s\n"
-msgstr "No se pudo establecer Finder Info en %s\n"
+#~ msgid "Cannot delete attribute %s"
+#~ msgstr "No se puedo eliminar atributo %s"
 
-#: src/filed/restore.c:418
-#, fuzzy
-msgid "LZO init failed\n"
-msgstr "Negociación TLS fallida\n"
+#~ msgid "Cannot find attribute %s"
+#~ msgstr "No se puedo encontrar atributo %s"
 
-#: src/filed/restore.c:660
-msgid "Unexpected cryptographic session data stream.\n"
-msgstr "Inesperado flujo de datos de sesión criptográfica.\n"
+#~ msgid "Read-only attribute"
+#~ msgstr "Atributo Solo-Lectura"
 
-#: src/filed/restore.c:670
-msgid ""
-"No private decryption keys have been defined to decrypt encrypted backup "
-"data.\n"
-msgstr ""
-"Ninguna claves privadas de descifrado se ha definido para descifrar los "
-"datos cifrados de las copia de seguridad.\n"
+#, fuzzy
+#~ 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/filed/restore.c:681
-msgid "Could not create digest.\n"
-msgstr "No es posible crear sumario.\n"
+#~ msgid ""
+#~ "Cancel: %s\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Cancelar: %s\n"
+#~ "\n"
+#~ "%s"
 
-#: 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"
+#~ msgid "Confirm cancel?"
+#~ msgstr "Confirmar cancelar?"
 
-#: src/filed/restore.c:702
-msgid "Decrypt of the session key failed.\n"
-msgstr "Fallo al descifrar la clave de sesión.\n"
+#~ msgid "Disable a job"
+#~ msgstr "Deshabilitar un job"
 
-#: 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"
+#~ msgid "Enable a job"
+#~ msgstr "Habilitar un job"
 
-#: 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"
+#~ msgid "Python control commands"
+#~ msgstr "Comandos de control de Python"
 
-#: 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"
+#~ msgid "Python interpreter restarted.\n"
+#~ msgstr "Interprete Python reiniciado.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Illegal JobId %s ignored\n"
+#~ msgstr "Clonar JobId %d iniciado.\n"
 
-#: src/filed/restore.c:992
-msgid "Unexpected cryptographic signature data stream.\n"
-msgstr "Inesperado signatura de datos de sesión criptográfica.\n"
+#~ msgid "Please Plugin Options string: "
+#~ msgstr "Por favor, cadena de Opciones de Plugin:"
 
-#: 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"
+#~ msgid "%6d %-6s  %-20s %s\n"
+#~ msgstr "%6d %-6s %-20s %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "               %-30s\n"
+#~ msgstr "Job : %s\n"
 
-#: 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"
+#~ msgid "Pool record not found."
+#~ msgstr "Registro Pool no encontrado"
 
-#: src/filed/restore.c:1072
-#, c-format
-msgid ""
-"%d non-supported data streams and %d non-supported attrib streams ignored.\n"
-msgstr ""
-"%d incompatible flujos de datos y %d incompatible atributos de flujos "
-"ignorados.\n"
+#~ msgid "Priority must be 1-100"
+#~ msgstr "Prioridad debe ser 1-100"
 
-#: 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"
+#~ msgid "Job Level can be set only during JobInit"
+#~ msgstr "Nivel de Job sólo se puede ajustar durante JobInit"
 
-#: src/filed/restore.c:1079
-#, c-format
-msgid "%d non-supported Finder Info streams ignored.\n"
-msgstr "%d incompatible flujo Finder Info ignorado.\n"
+#~ msgid "Bad JobLevel string"
+#~ msgstr "Mala cadena JobLevel"
 
-#: src/filed/restore.c:1082
-#, c-format
-msgid "%d non-supported acl streams ignored.\n"
-msgstr "%d incompatible flujo de acl ignorado.\n"
+#~ msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
+#~ msgstr "1992 Error de actualización de Media. VolFiles=%u, CatFiles=%u\n"
 
-#: src/filed/restore.c:1085
-#, c-format
-msgid "%d non-supported crypto streams ignored.\n"
-msgstr "%d incompatible flujo de cifrado ignorado.\n"
+#~ msgid ""
+#~ "Written by Nicolas Boichat (2004)\n"
+#~ "\n"
+#~ "Version: %s (%s) %s %s %s\n"
+#~ "\n"
+#~ "Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+#~ "       -c <file>     set configuration file to file\n"
+#~ "       -d <nn>       set debug level to <nn>\n"
+#~ "       -dt           print timestamp in debug output\n"
+#~ "       -t            test - read configuration and exit\n"
+#~ "       -?            print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Escrito por Nicolas Boichat (2004)\n"
+#~ "\n"
+#~ "Versión: %s (%s) %s %s %s\n"
+#~ "\n"
+#~ "Utilice: tray-monitor [-c archivo_configuración] [-d nivel_depuración]\n"
+#~ " -c <archivo> establece archivo de configuración para archivo\n"
+#~ " -d <nn> establece nivel de depuración para <nn>\n"
+#~ " -dt imprime timestamp en salida de depuración\n"
+#~ " -t prueba - leer configuración y salir\n"
+#~ " -? imprimir este mensaje.\n"
+#~ "\n"
 
-#: src/filed/restore.c:1088
-#, c-format
-msgid "%d non-supported xattr streams ignored.\n"
-msgstr "ignorado %d no soportado flujo xattr.\n"
+#~ msgid "Bacula daemon status monitor"
+#~ msgstr "Monitor de Estado del demonio Bacula"
 
-#: src/filed/restore.c:1168
-msgid "Zlib errno"
-msgstr "Zlib error"
+#~ msgid "Open status window..."
+#~ msgstr "Abrir la ventana de estado..."
 
-#: src/filed/restore.c:1170
-msgid "Zlib stream error"
-msgstr "Zlib error de stream"
+#~ msgid "Exit"
+#~ msgstr "Salir"
 
-#: src/filed/restore.c:1172
-msgid "Zlib data error"
-msgstr "Zlib error de datos"
+#~ msgid "Bacula tray monitor"
+#~ msgstr "Bacula tray monitor"
 
-#: src/filed/restore.c:1174
-msgid "Zlib memory error"
-msgstr "Zlib error de memoria"
+#~ msgid " (DIR)"
+#~ msgstr "(DIR)"
 
-#: src/filed/restore.c:1176
-msgid "Zlib buffer error"
-msgstr "Zlib error de buffer"
+#~ msgid " (FD)"
+#~ msgstr "(FD)"
 
-#: src/filed/restore.c:1178
-msgid "Zlib version error"
-msgstr "Zlib error de version"
+#~ msgid " (SD)"
+#~ msgstr "(SD)"
 
-#: src/filed/restore.c:1218
-#, c-format
-msgid "Missing cryptographic signature for %s\n"
-msgstr "Falta la firma criptográfica para %s\n"
+#~ msgid "Unknown status."
+#~ msgstr "Estado desconocido."
 
-#: 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"
+#~ msgid "Refresh interval in seconds: "
+#~ msgstr "Intervalo de actualización en segundos:"
 
-#: 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"
+#~ msgid "Refresh now"
+#~ msgstr "Actualizar Ahora"
 
-#: 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"
+#~ msgid "About"
+#~ msgstr "Sobre"
 
-#: 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"
+#~ msgid "Close"
+#~ msgstr "Cerrar"
 
-#: 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"
+#~ msgid "Disconnecting from Director %s:%d\n"
+#~ msgstr "Desconectando del Director %s:%d\n"
 
-#: 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"
+#~ msgid "Disconnecting from Client %s:%d\n"
+#~ msgstr "Desconectando del Cliente %s:%d\n"
 
-#: src/filed/restore.c:1533
-msgid "Decryption error\n"
-msgstr "Error de descifrado\n"
+#~ msgid "Disconnecting from Storage %s:%d\n"
+#~ msgstr "Desconectando del Almacenamiento %s:%d\n"
 
-#: 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"
+#~ msgid "Bacula Tray Monitor"
+#~ msgstr "Bacula Tray Monitor"
 
-#: 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"
+#~ msgid "Written by Nicolas Boichat\n"
+#~ msgstr "Escrito por Nicolás Boichat\n"
 
-#: 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"
+#~ msgid "Version"
+#~ msgstr "Version"
 
-#: src/filed/restore.c:1819
-msgid "Open File Manager paused\n"
-msgstr "Administrador Open File pausado\n"
+#~ msgid ""
+#~ "Current job: %s\n"
+#~ "Last job: %s"
+#~ msgstr ""
+#~ "Job actual: %s\n"
+#~ "Ultimo job: %s"
 
-#: src/filed/restore.c:1823
-msgid "FAILED to pause Open File Manager\n"
-msgstr "Fallo al pausar Administrador Open File\n"
+#~ msgid " (%d errors)"
+#~ msgstr "(%d errores)"
 
-#: src/filed/restore.c:1831
-#, c-format
-msgid "Running as '%s'. Privmask=%#08x\n"
-msgstr "Ejecutando como '%s'. Privmask=%#08x\n"
+#~ msgid " (%d error)"
+#~ msgstr "(%d error)"
 
-#: src/filed/restore.c:1833
-msgid "Failed to retrieve current UserName\n"
-msgstr "Fallo al recuperar UserName actual\n"
+#~ msgid "No current job."
+#~ msgstr "Ningún trabajo actual."
 
-#: src/filed/job.c:456
-#, c-format
-msgid "2901 Job %s not found.\n"
-msgstr "2901 Job %s no encontrado.\n"
+#~ msgid "Job status: Created"
+#~ msgstr "Estado del trabajo: Creado"
 
-#: 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"
+#~ msgid "Job status: Running"
+#~ msgstr "Estado del trabajo: Ejecutando"
 
-#: src/filed/job.c:469
-msgid "2902 Error scanning cancel command.\n"
-msgstr "2902 Error escaneando comando cancelar.\n"
+#~ msgid "Job status: Blocked"
+#~ msgstr "Estado del trabajo: Bloqueado"
 
-#: src/filed/job.c:492
-#, c-format
-msgid "2991 Bad setdebug command: %s\n"
-msgstr "2991 Comando setdebug malo: %s\n"
+#~ msgid "Job status: Terminated"
+#~ msgstr "Estado del trabajo: Terminado"
 
-#: src/filed/job.c:515
-#, c-format
-msgid "Bad estimate command: %s"
-msgstr "Malo comando estimate: %s"
+#~ msgid "Job status: Terminated in error"
+#~ msgstr "Estado del trabajo: Terminado con error"
 
-#: src/filed/job.c:516
-msgid "2992 Bad estimate command.\n"
-msgstr "2992 Malo comando estimación.\n"
+#~ msgid "Job status: Error"
+#~ msgstr "Estado del trabajo: Error"
 
-#: src/filed/job.c:539
-#, c-format
-msgid "Bad Job Command: %s"
-msgstr "Malo Comando Job: %s"
+#~ msgid "Job status: Fatal error"
+#~ msgstr "Estado del trabajo: Fatal error"
 
-#: src/filed/job.c:578
-#, c-format
-msgid "Bad RunBeforeJob command: %s\n"
-msgstr "Malo comando RunBeforeJob: %s\n"
+#~ msgid "Job status: Verify differences"
+#~ msgstr "Estado del Job: Verificar las diferencias"
 
-#: src/filed/job.c:579 src/filed/job.c:598
-msgid "2905 Bad RunBeforeJob command.\n"
-msgstr "2905 Malo comando RunBeforeJob.\n"
+#~ msgid "Job status: Canceled"
+#~ msgstr "Estado del Job: Cancelado"
 
-#: src/filed/job.c:609
-msgid "2905 Bad RunBeforeNow command.\n"
-msgstr "2905 Malo comando RunBeforeNow.\n"
+#~ msgid "Job status: Waiting on File daemon"
+#~ msgstr "Estado del Job: Esperando en demonio File"
 
-#: src/filed/job.c:628
-#, c-format
-msgid "Bad RunAfter command: %s\n"
-msgstr "Malo comando RunAfter: %s\n"
+#~ msgid "Job status: Waiting on the Storage daemon"
+#~ msgstr "Estado del Job: Esperando en demonio Storage"
 
-#: src/filed/job.c:629
-msgid "2905 Bad RunAfterJob command.\n"
-msgstr "2905 Malo comando RunAfterJob.\n"
+#~ msgid "Job status: Waiting for new media"
+#~ msgstr "Estado del Job: Esperando por nuevo medio"
 
-#: src/filed/job.c:665
-#, c-format
-msgid "Bad RunScript command: %s\n"
-msgstr "Malo comando RunScript: %s\n"
+#~ msgid "Job status: Waiting for Mount"
+#~ msgstr "Estado del Job: Esperando por montar"
 
-#: src/filed/job.c:666
-msgid "2905 Bad RunScript command.\n"
-msgstr "2905 Malo comando RunScript.\n"
+#~ msgid "Job status: Waiting for storage resource"
+#~ msgstr "Estado del Job: Esperando por recurso storage"
 
-#: src/filed/job.c:720
-#, fuzzy, c-format
-msgid "Bad RestoreObject command: %s\n"
-msgstr "Malo comando storage: %s"
+#~ msgid "Job status: Waiting for job resource"
+#~ msgstr "Estado del Job: Esperando por recurso job"
 
-#: src/filed/job.c:785
-#, fuzzy
-msgid "2909 Bad RestoreObject command.\n"
-msgstr "2905 Malo comando RunBeforeJob.\n"
+#~ msgid "Job status: Waiting for Client resource"
+#~ msgstr "Estado del Job: Esperando por recurso Cliente"
 
-#: 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"
+#~ msgid "Job status: Waiting for maximum jobs"
+#~ msgstr "Estado del Job: Esperando por jobs máximos "
 
-#: 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"
+#~ msgid "Job status: Waiting for start time"
+#~ msgstr "Estado del Job: Esperando por hora de inicio "
 
-#: 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"
+#~ msgid "Job status: Waiting for higher priority jobs to finish"
+#~ msgstr "Estado del Job: Esperando por jobs de prioridad mayor por finalizar"
 
-#: 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"
+#~ msgid "Unknown job status %c."
+#~ msgstr "Estado del job desconocido %c."
 
-#: src/filed/job.c:1182
-#, c-format
-msgid "Invalid FileSet command: %s\n"
-msgstr "Comando FilseSet invalido: %s\n"
+#~ msgid "Job status: Unknown(%c)"
+#~ msgstr "Estado del job: Desconocido (%c)"
 
-#: src/filed/job.c:1655
-#, c-format
-msgid ""
-"DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
-msgstr ""
-"Relojes de DIR y FD difieren por %lld segundos, FD compensando "
-"automáticamente.\n"
+#~ msgid "Bad scan : '%s' %d\n"
+#~ msgstr "Mala análisis: '%s' %d\n"
 
-#: src/filed/job.c:1664
-#, c-format
-msgid "Unknown backup level: %s\n"
-msgstr "Nivel de copia de seguridad desconocido: %s\n"
+#~ msgid "Connecting to Client %s:%d\n"
+#~ msgstr "Conectando con Cliente %s:%d\n"
 
-#: src/filed/job.c:1677
-#, c-format
-msgid "Bad level command: %s\n"
-msgstr "Malo comando nivel: %s\n"
+#~ msgid "Connecting to Storage %s:%d\n"
+#~ msgstr "Conectando con Storage %s:%d\n"
 
-#: src/filed/job.c:1699
-#, c-format
-msgid "Bad session command: %s"
-msgstr "Malo comando sesión: %s"
+#~ msgid "Cannot connect to daemon.\n"
+#~ msgstr "No se puede conectar al demonio.\n"
 
-#: src/filed/job.c:1760
-#, c-format
-msgid "Bad storage command: %s"
-msgstr "Malo comando storage: %s"
+#~ msgid "Opened connection with Director daemon.\n"
+#~ msgstr "Conexión abierta con demonio Director.\n"
 
-#: 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"
+#~ msgid "Opened connection with File daemon.\n"
+#~ msgstr "Conexión abierta con demonio File.\n"
 
-#: src/filed/job.c:1793
-msgid "Failed to authenticate Storage daemon.\n"
-msgstr "Fallo al autenticar demonio Storage.\n"
+#~ msgid "Opened connection with Storage daemon.\n"
+#~ msgstr "Conexión abierta con demonio Storage.\n"
 
-#: src/filed/job.c:1840
-msgid "ACL support not configured for your machine.\n"
-msgstr "Soporte ACL no configurado para su máquina. \n"
+#, fuzzy
+#~ msgid "<< Error: BNET_SUB_PROMPT signal received. >>\n"
+#~ msgstr "<< Error: BNET_PROMPT señal recibida. >>\n"
 
-#: 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"
+#~ msgid "<< Heartbeat signal received, answered. >>\n"
+#~ msgstr "<< Heartbeat señal recibida, respondió. >>\n"
 
-#: src/filed/job.c:1853
-msgid "Cannot contact Storage daemon\n"
-msgstr "No puede contactar demonio Storage\n"
+#~ msgid "<< Unexpected signal received : %s >>\n"
+#~ msgstr "<< Inesperada señal recibida: %s >>\n"
 
-#: src/filed/job.c:1872
-#, c-format
-msgid "Bad response to append open: %s\n"
-msgstr "Mala respuesta para añadir abierto: %s\n"
+#~ msgid "<ERROR>\n"
+#~ msgstr "<ERROR>\n"
 
-#: src/filed/job.c:1877
-msgid "Bad response from stored to open command\n"
-msgstr "Mala respuesta desde almacén para comando abrir\n"
+#~ msgid "<STOP>\n"
+#~ msgstr "<PARE>\n"
 
-#: 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"
+#~ msgid "End of physical tape.\n"
+#~ msgstr "Fin de la cinta física.\n"
 
-#: src/filed/job.c:1912
-#, fuzzy, c-format
-msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
-msgstr "Fallo al generar VSS snapshots.\n"
+#~ msgid "Init Catalog"
+#~ msgstr "Catálogo de inicio"
 
-#: src/filed/job.c:1919
-#, fuzzy, c-format
-msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
-msgstr "Fallo al generar VSS snapshots.\n"
+#~ msgid "Volume to Catalog"
+#~ msgstr "Volumen para Catalogo"
 
-#: src/filed/job.c:1925
-#, c-format
-msgid "VSS Writer (PrepareForBackup): %s\n"
-msgstr "VSS Writer (PrepareForBackup): %s\n"
+#~ msgid "Disk to Catalog"
+#~ msgstr "Disco para Catalogo"
 
-#: 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"
+#~ msgid "Data"
+#~ msgstr "Datos"
 
-#: 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"
+#~ msgid "part"
+#~ msgstr "parte"
 
-#: src/filed/job.c:1985
-msgid "Append Close with SD failed.\n"
-msgstr "Añadir Cierre con SD fallido.\n"
+#~ msgid "file"
+#~ msgstr "archivo"
 
-#: 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"
+#~ msgid "End of %s %u on device %s, Volume \"%s\"\n"
+#~ msgstr "Fin de %s %u en dispositivo %s, Volumen \"%s\"\n"
 
-#: src/filed/job.c:2019
-#, c-format
-msgid "2994 Bad verify command: %s\n"
-msgstr "2994 Malo comando verificar: %s\n"
+#~ msgid "Want to append, but device %s is busy reading.\n"
+#~ msgstr "Esperando anexar, pero el dispositivo %s está ocupado leyendo.\n"
 
-#: 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"
+#~ msgid "Append data error.\n"
+#~ msgstr "Error al añadir datos.\n"
 
-#: src/filed/job.c:2146
-#, c-format
-msgid "Bad replace command. CMD=%s\n"
-msgstr "Comando replace malo. CMD=%s\n"
+#~ msgid "Error in ParseTuple\n"
+#~ msgstr "Error en ParseTuple\n"
 
-#: src/filed/job.c:2169
-#, c-format
-msgid "Bad where regexp. where=%s\n"
-msgstr "Mala regexp where. where=%s\n"
+#~ msgid "Parse tuple error in job_write\n"
+#~ msgstr "Error de análisis de tupla en job_write\n"
 
-#: 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"
+#~ msgid "Error in Python method %s\n"
+#~ msgstr "Error en el método Python %s\n"
 
-#: src/filed/job.c:2252
-#, fuzzy, c-format
-msgid "VSS Writer (RestoreComplete): %s\n"
-msgstr "VSS Writer (BackupComplete): %s\n"
+#, fuzzy
+#~ msgid "Truncate on attributes file failed: ERR=%s\n"
+#~ msgstr "Fallo fseek en los atributos de archivo: ERR=%s\n"
 
-#: src/filed/job.c:2302
-msgid "Improper calling sequence.\n"
-msgstr "Secuencia de llamada impropia.\n"
+#~ msgid "Could not open: %s, ERR=%s\n"
+#~ msgstr "No se pudo abrir: %s, ERR=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "Error writing final part to DVD. This Volume may not be readable.\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Error al escribir la parte final a DVD. Este volumen puede no ser "
+#~ "legible.\n"
+#~ "%s"
 
-#: 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"
+#~ 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/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"
+#, fuzzy
+#~ msgid "Failed to allocate space for query filter.\n"
+#~ msgstr "No se pudo asignar memoria para la firma de cifrado.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Failed to allocate space for query filters.\n"
+#~ msgstr "No se pudo asignar memoria para la firma de cifrado.\n"
 
-#: src/filed/authenticate.c:68
-#, c-format
-msgid "I only authenticate directors, not %d\n"
-msgstr "Yo sólo autentifico directores, no %d\n"
+#, fuzzy
+#~ msgid ""
+#~ "Unable to connect to Ingres server.\n"
+#~ "Database=%s User=%s\n"
+#~ "It is probably not running or your password is incorrect.\n"
+#~ msgstr ""
+#~ "No se puede conectar al servidor MySQL.\n"
+#~ "Base de Datos=%s Usuario=%s\n"
 
-#: src/filed/authenticate.c:100
-#, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
-msgstr "Conexión desde Director %s desconocido  en %s rechazada.\n"
+#, fuzzy
+#~ msgid "A user name for Ingres must be supplied.\n"
+#~ msgstr "Un nombre de usuario para DBI debe ser suministrado.\n"
 
-#: src/filed/authenticate.c:144
-#, c-format
-msgid "Incorrect password given by Director at %s.\n"
-msgstr "Contraseña incorrecta dada por el Director en %s.\n"
+#~ msgid ""
+#~ "Unable to locate the DBD drivers to DBI interface in: \n"
+#~ "db_driverdir=%s. It is probaly not found any drivers\n"
+#~ 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/filed/authenticate.c:263
-msgid ""
-"Authorization key rejected by Storage daemon.\n"
-"Please see "
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
+#~ "Possible causes: SQL server not running; password incorrect; "
+#~ "max_connections exceeded.\n"
+#~ msgstr ""
+#~ "No se pudo conectar a la interfaz DBI.\n"
+#~ "Tipo=%s Base de Datos=%s Usuario=%s\n"
+#~ "Probablemente no este ejecutando o su contraseña es incorrecta.\n"
 
-#: examples/nagios/check_bacula/check_bacula.c:59
-#, c-format
-msgid ""
-"Copyright (C) 2005 Christian Masopust\n"
-"Written by Christian Masopust (2005)\n"
-"\n"
-"Version: "
-msgstr ""
+#~ msgid "error inserting batch mode: %s"
+#~ msgstr "Error insertando en modo batch: %s"
 
-#: 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"
+#~ msgid "Driver type not specified in Catalog resource.\n"
+#~ msgstr "Tipo de controlador no especificado en los recursos de Catálogo.\n"
 
-#: src/win32/compat/compat.cpp:2721
-msgid ""
-"\n"
-"\n"
-"Bacula ERROR: "
-msgstr ""
-"\n"
-"\n"
-"Bacula ERROR: "
+#~ msgid "Invalid driver type, must be \"dbi:<type>\"\n"
+#~ msgstr "Tipo de controlador no válido, debe ser \"dbi:<tipo>\"\n"
 
-#: src/win32/libwin32/service.cpp:107
-msgid "RegisterServiceCtlHandler failed"
-msgstr "RegisterServiceCtlHandler fallido"
+#~ msgid "A user name for DBI must be supplied.\n"
+#~ msgstr "Un nombre de usuario para DBI debe ser suministrado.\n"
 
-#: src/win32/libwin32/service.cpp:108
-msgid "Failure contacting the Service Handler"
-msgstr "Error al contactar con el Manejador de Servicio"
+#~ msgid "Bad response to Hello command: ERR="
+#~ msgstr "mala respuesta al comando Hello: ERR ="
 
-#: src/win32/libwin32/service.cpp:119
-msgid "Service start report failed"
-msgstr "Fallo en inicio de Servicio de Reporte"
+#~ msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
+#~ msgstr "Archivos=%s Bytes=%s Bytes/sec=%s Errores=%d\n"
 
-#: src/win32/libwin32/service.cpp:172
-msgid "StartServiceCtrlDispatcher failed."
-msgstr "StartServiceCtrlDispatcher fallido."
+#~ msgid "Bacula Client: Idle"
+#~ msgstr "Bacula Cliente: Inactivo"
 
-#: src/win32/libwin32/service.cpp:179
-msgid "KERNEL32.DLL not found: Bacula service not started"
-msgstr "KERNEL32.DLL no encontrado: Servicio Bacula no iniciado"
+#~ msgid "Bacula Client: Running"
+#~ msgstr "Bacula Cliente: Funcionando"
 
-#: src/win32/libwin32/service.cpp:189
-msgid "Registry service not found: Bacula service not started"
-msgstr "Servicio Registry no encontrado: Servicio Bacula no iniciado"
+#~ msgid "Bacula Client: Last Job Canceled"
+#~ msgstr "Bacula Cliente: Ultimo Job Cancelado"
 
-#: src/win32/libwin32/service.cpp:191
-msgid "Registry service entry point not found"
-msgstr "Registro de servicio no se encuentra punto de entrada"
+#~ msgid "Bacula Client: Last Job Failed"
+#~ msgstr "Bacula Cliente: Ultimo Job Fallido"
 
-#: src/win32/libwin32/service.cpp:212
-msgid "Report Service failure"
-msgstr "Reporte de Servicio fallido"
+#~ msgid "Bacula Client: Last Job had Warnings"
+#~ msgstr "Bacula Cliente: Ultimo Job con Advertencias"
 
-#: src/win32/libwin32/service.cpp:243
-msgid "Unable to install the service"
-msgstr "No se puede instalar el servicio"
+#~ msgid "Failed to authenticate Storage daemon.\n"
+#~ msgstr "Fallo al autenticar demonio Storage.\n"
 
-#: src/win32/libwin32/service.cpp:251
-msgid "Service command length too long"
-msgstr "Longitud de comandos de servicio demasiado largo"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "Bacula ERROR: "
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Bacula ERROR: "
 
-#: src/win32/libwin32/service.cpp:252
-msgid "Service command length too long. Service not registered."
-msgstr ""
-"Longitud de comandos de servicio demasiado largo. Servicio no registrado."
+#~ msgid "RegisterServiceCtlHandler failed"
+#~ msgstr "RegisterServiceCtlHandler fallido"
 
-#: src/win32/libwin32/service.cpp:265
-msgid ""
-"The Service Control Manager could not be contacted - the service was not "
-"installed"
-msgstr ""
-"El Manejador de Control de Servicios no puede ser contactado - el servicio "
-"no fue instalado"
+#~ msgid "Failure contacting the Service Handler"
+#~ msgstr "Error al contactar con el Manejador de Servicio"
 
-#: src/win32/libwin32/service.cpp:288 src/win32/libwin32/service.cpp:317
-#: src/win32/libwin32/service.cpp:365 src/win32/libwin32/service.cpp:373
-#: src/win32/libwin32/service.cpp:377
-msgid "The Bacula service: "
-msgstr "El servicio Bacula:"
+#~ msgid "Service start report failed"
+#~ msgstr "Fallo en inicio de Servicio de Reporte"
 
-#: src/win32/libwin32/service.cpp:295
-msgid ""
-"Provides file backup and restore services. Bacula -- the network backup "
-"solution."
-msgstr ""
-"Proporciona servicios de copia de seguridad y restauración. Bacula - la "
-"solución de copia de seguridad de red."
+#~ msgid "StartServiceCtrlDispatcher failed."
+#~ msgstr "StartServiceCtrlDispatcher fallido."
 
-#: src/win32/libwin32/service.cpp:306
-msgid "Cannot write System Registry for "
-msgstr "No se puede escribir Registro de Sistema para"
+#~ msgid "KERNEL32.DLL not found: Bacula service not started"
+#~ msgstr "KERNEL32.DLL no encontrado: Servicio Bacula no iniciado"
 
-#: src/win32/libwin32/service.cpp:307
-msgid ""
-"The System Registry could not be updated - the Bacula service was not "
-"installed"
-msgstr ""
-"El Registro del Sistema no ha podido ser actualizado - el servicio Bacula no "
-"se ha instalado"
+#~ msgid "Registry service not found: Bacula service not started"
+#~ msgstr "Servicio Registry no encontrado: Servicio Bacula no iniciado"
 
-#: src/win32/libwin32/service.cpp:316
-msgid "Cannot add Bacula key to System Registry"
-msgstr "No se puede agregar clave Bacula al Registro del Sistema"
+#~ msgid "Registry service entry point not found"
+#~ msgstr "Registro de servicio no se encuentra punto de entrada"
 
-#: src/win32/libwin32/service.cpp:327
-msgid "The "
-msgstr "El"
+#~ msgid "Report Service failure"
+#~ msgstr "Reporte de Servicio fallido"
 
-#: src/win32/libwin32/service.cpp:385
-#, fuzzy
-msgid "An existing Bacula service: "
-msgstr "Un servicio Bacula existente:"
+#~ msgid "Unable to install the service"
+#~ msgstr "No se puede instalar el servicio"
 
-#: src/win32/libwin32/service.cpp:394
-msgid ""
-"The service Manager could not be contacted - the Bacula service was not "
-"removed"
-msgstr ""
-"El Administrador de Servicio no puedo ser contactado - El Servicio Bacula no "
-"se elimino"
+#~ msgid "Service command length too long"
+#~ msgstr "Longitud de comandos de servicio demasiado largo"
 
-#: src/win32/libwin32/service.cpp:407
-msgid ""
-"Could not find registry entry.\n"
-"Service probably not registerd - the Bacula service was not removed"
-msgstr ""
-"No se pudo encontrar la entrada del Registro.\n"
-"Servicio probablemente no Registrado - el servicio de Bacula no se ha quitado"
+#~ msgid "Service command length too long. Service not registered."
+#~ msgstr ""
+#~ "Longitud de comandos de servicio demasiado largo. Servicio no registrado."
 
-#: src/win32/libwin32/service.cpp:414
-msgid "Could not delete Registry key for "
-msgstr "No se pudo borrar la clave del Registro para"
+#~ msgid ""
+#~ "The Service Control Manager could not be contacted - the service was not "
+#~ "installed"
+#~ msgstr ""
+#~ "El Manejador de Control de Servicios no puede ser contactado - el "
+#~ "servicio no fue instalado"
 
-#: src/win32/libwin32/service.cpp:425
-msgid "Bacula could not be contacted, probably not running"
-msgstr "Bacula no pudo ser contactado, probablemente no se está ejecutando"
+#~ msgid "The Bacula service: "
+#~ msgstr "El servicio Bacula:"
 
-#: src/win32/libwin32/service.cpp:433
-msgid "The Bacula service has been removed"
-msgstr "El servicio Bacula se ha eliminado"
+#~ msgid ""
+#~ "Provides file backup and restore services. Bacula -- the network backup "
+#~ "solution."
+#~ msgstr ""
+#~ "Proporciona servicios de copia de seguridad y restauración. Bacula - la "
+#~ "solución de copia de seguridad de red."
 
-#: src/win32/libwin32/service.cpp:474
-msgid "SetServiceStatus failed"
-msgstr "SetServiceStatus fallido"
+#~ msgid "Cannot write System Registry for "
+#~ msgstr "No se puede escribir Registro de Sistema para"
 
-#: src/win32/libwin32/service.cpp:500
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s error: %ld at %s:%d"
-msgstr ""
-"\n"
-"\n"
-"%s error: %ld en %s:%d"
+#~ msgid ""
+#~ "The System Registry could not be updated - the Bacula service was not "
+#~ "installed"
+#~ msgstr ""
+#~ "El Registro del Sistema no ha podido ser actualizado - el servicio Bacula "
+#~ "no se ha instalado"
 
-#: src/win32/libwin32/service.cpp:576
-#, c-format
-msgid "Locked by: %s, duration: %ld seconds\n"
-msgstr "Bloqueado por: %s, duración: %ld segundos\n"
+#~ msgid "Cannot add Bacula key to System Registry"
+#~ msgstr "No se puede agregar clave Bacula al Registro del Sistema"
 
-#: src/win32/libwin32/service.cpp:580
-#, c-format
-msgid "No longer locked\n"
-msgstr "Ya no está bloqueado\n"
+#~ msgid "The "
+#~ msgstr "El"
 
-#: src/win32/libwin32/service.cpp:584
-msgid "Could not lock database"
-msgstr "No se pudo bloquear la base de datos"
+#, fuzzy
+#~ msgid "An existing Bacula service: "
+#~ msgstr "Un servicio Bacula existente:"
 
-#: src/win32/libwin32/main.cpp:245
-msgid "Bad Command Line Option"
-msgstr "Mala Opción de Línea de Comandos"
+#~ msgid ""
+#~ "The service Manager could not be contacted - the Bacula service was not "
+#~ "removed"
+#~ msgstr ""
+#~ "El Administrador de Servicio no puedo ser contactado - El Servicio Bacula "
+#~ "no se elimino"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:65
-msgid "Config file editor"
-msgstr "Editor de archivos de configuración"
+#~ msgid ""
+#~ "Could not find registry entry.\n"
+#~ "Service probably not registerd - the Bacula service was not removed"
+#~ msgstr ""
+#~ "No se pudo encontrar la entrada del Registro.\n"
+#~ "Servicio probablemente no Registrado - el servicio de Bacula no se ha "
+#~ "quitado"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:75
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr "# Bacula bwx-console Archivo de Configuración\n"
+#~ msgid "Could not delete Registry key for "
+#~ msgstr "No se pudo borrar la clave del Registro para"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr "Guardar y cerrar"
+#~ msgid "Bacula could not be contacted, probably not running"
+#~ msgstr "Bacula no pudo ser contactado, probablemente no se está ejecutando"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:112
-msgid "Close without saving"
-msgstr "Cerrar sin guardar"
+#~ msgid "The Bacula service has been removed"
+#~ msgstr "El servicio Bacula se ha eliminado"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-#, c-format
-msgid "Unable to write to %s\n"
-msgstr "No se puede escribir en %s\n"
-
-#: src/wx-console/wxbconfigfileeditor.cpp:140
-msgid "Error while saving"
-msgstr "Error al guardar"
-
-#: src/wx-console/wxbrestorepanel.cpp:234
-#: src/wx-console/wxbrestorepanel.cpp:1947
-#: src/wx-console/wxbrestorepanel.cpp:1976
-msgid "Enter restore mode"
-msgstr "Introduzca el modo de restauración"
-
-#: src/wx-console/wxbrestorepanel.cpp:237
-msgid "Cancel restore"
-msgstr "Cancelar restauración"
-
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr "Agregar"
-
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
-msgid "Remove"
-msgstr "Eliminar"
-
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
-msgid "Refresh"
-msgstr "Actualizar"
-
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr "M"
-
-#: src/wx-console/wxbrestorepanel.cpp:290
-msgid "Filename"
-msgstr "Nombre de Archivo"
-
-#: src/wx-console/wxbrestorepanel.cpp:294
-msgid "Size"
-msgstr "Tamaño"
-
-#: src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr "Fecha"
-
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr "Permiso"
-
-#: src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr "Usuario"
-
-#: src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr "Grupo"
-
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1897
-msgid "Job Name"
-msgstr "Nombre del Job"
-
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1153
-#: src/wx-console/wxbrestorepanel.cpp:1156
-#: src/wx-console/wxbrestorepanel.cpp:1239
-#: src/wx-console/wxbrestorepanel.cpp:1849
-#: src/wx-console/wxbrestorepanel.cpp:1851
-#: src/wx-console/wxbrestorepanel.cpp:1912
-msgid "Fileset"
-msgstr "Fileset"
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1233
-#: src/wx-console/wxbrestorepanel.cpp:1249
-#: src/wx-console/wxbrestorepanel.cpp:1251
-#: src/wx-console/wxbrestorepanel.cpp:1259
-#: src/wx-console/wxbrestorepanel.cpp:1261
-#: src/wx-console/wxbrestorepanel.cpp:1280
-#: src/wx-console/wxbrestorepanel.cpp:1287
-#: src/wx-console/wxbrestorepanel.cpp:1839
-#: src/wx-console/wxbrestorepanel.cpp:1850
-#: src/wx-console/wxbrestorepanel.cpp:1971
-msgid "Before"
-msgstr "Antes de"
-
-#: src/wx-console/wxbrestorepanel.cpp:342
-msgid "Please configure parameters concerning files to restore :"
-msgstr ""
-"Por favor, configure los parámetros relativos a los archivos a restaurar:"
+#~ msgid "SetServiceStatus failed"
+#~ msgstr "SetServiceStatus fallido"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1905
-msgid "always"
-msgstr "siempre"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "%s error: %ld at %s:%d"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "%s error: %ld en %s:%d"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if newer"
-msgstr "si los nuevos"
+#~ msgid "Locked by: %s, duration: %ld seconds\n"
+#~ msgstr "Bloqueado por: %s, duración: %ld segundos\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if older"
-msgstr "si los viejos"
+#~ msgid "No longer locked\n"
+#~ msgstr "Ya no está bloqueado\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1908
-msgid "never"
-msgstr "nunca"
+#~ msgid "Could not lock database"
+#~ msgstr "No se pudo bloquear la base de datos"
 
-#: src/wx-console/wxbrestorepanel.cpp:359
-msgid "Please configure parameters concerning files restoration :"
-msgstr ""
-"Por favor, configure los parámetros relativos a los archivos de restauración"
+#~ msgid "Bad Command Line Option"
+#~ msgstr "Mala Opción de Línea de Comandos"
 
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr "Obteniendo los parámetros de la lista."
+#~ msgid "Config file editor"
+#~ msgstr "Editor de archivos de configuración"
 
-#: src/wx-console/wxbrestorepanel.cpp:435
-msgid "Error : no clients returned by the director."
-msgstr "Error: el director no devolvió ningún cliente"
+#~ msgid "Save and close"
+#~ msgstr "Guardar y cerrar"
 
-#: src/wx-console/wxbrestorepanel.cpp:459
-msgid "Error : no filesets returned by the director."
-msgstr "Error: el director no devolvió ningún fileset"
+#~ msgid "Close without saving"
+#~ msgstr "Cerrar sin guardar"
 
-#: src/wx-console/wxbrestorepanel.cpp:483
-msgid "Error : no storage returned by the director."
-msgstr "Error: el director no devolvió ningún storage"
+#~ msgid "Unable to write to %s\n"
+#~ msgstr "No se puede escribir en %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
-msgid "Error : no jobs returned by the director."
-msgstr "Error: no hay Jobs devuelto por el director."
+#~ msgid "Error while saving"
+#~ msgstr "Error al guardar"
 
-#: src/wx-console/wxbrestorepanel.cpp:516
-msgid "RestoreFiles"
-msgstr "RestoreFiles"
+#~ msgid "Enter restore mode"
+#~ msgstr "Introduzca el modo de restauración"
 
-#: src/wx-console/wxbrestorepanel.cpp:551
-msgid "Please configure your restore parameters."
-msgstr "Por favor, configure los parámetros de restauración."
+#~ msgid "Cancel restore"
+#~ msgstr "Cancelar restauración"
 
-#: src/wx-console/wxbrestorepanel.cpp:556
-msgid "Please select a client."
-msgstr "Por favor seleccione un cliente."
+#~ msgid "Add"
+#~ msgstr "Agregar"
 
-#: src/wx-console/wxbrestorepanel.cpp:560
-msgid "Please select a restore date."
-msgstr "Por favor seleccione una fecha de restauración."
+#~ msgid "Remove"
+#~ msgstr "Eliminar"
 
-#: src/wx-console/wxbrestorepanel.cpp:565
-msgid "Building restore tree..."
-msgstr "Construyendo árbol de restauración..."
+#~ msgid "Refresh"
+#~ msgstr "Actualizar"
 
-#: src/wx-console/wxbrestorepanel.cpp:613
-msgid "Error while starting restore: "
-msgstr "Error al iniciar restauración:"
+#~ msgid "M"
+#~ msgstr "M"
 
-#: src/wx-console/wxbrestorepanel.cpp:705
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
-"Haga clic derecho sobre un archivo o un directorio, o haga doble clic en su "
-"marca para añadirlo a la lista de restauración."
+#~ msgid "Filename"
+#~ msgstr "Nombre de Archivo"
 
-#: src/wx-console/wxbrestorepanel.cpp:720 src/wx-console/wxbmainframe.cpp:685
-msgid "Unexpected question has been received.\n"
-msgstr "Pregunta inesperada ha sido recibida.\n"
+#~ msgid "Size"
+#~ msgstr "Tamaño"
 
-#: src/wx-console/wxbrestorepanel.cpp:742
-#: src/wx-console/wxbrestorepanel.cpp:764
-msgid "bwx-console: unexpected restore question."
-msgstr "bwx-console: inesperada consulta de restauración."
+#~ msgid "Date"
+#~ msgstr "Fecha"
 
-#: src/wx-console/wxbrestorepanel.cpp:775
-msgid " files selected to be restored."
-msgstr "archivos seleccionados para ser restaurado."
+#~ msgid "Perm."
+#~ msgstr "Permiso"
 
-#: src/wx-console/wxbrestorepanel.cpp:780
-msgid " file selected to be restored."
-msgstr "archivo seleccionado para ser restaurado."
+#~ msgid "User"
+#~ msgstr "Usuario"
 
-#: src/wx-console/wxbrestorepanel.cpp:787
-#, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
-"Por favor, configure su restauración (%ld archivos seleccionados para ser "
-"restaurado)..."
+#~ msgid "Group"
+#~ msgstr "Grupo"
 
-#: src/wx-console/wxbrestorepanel.cpp:797
-msgid "Restore failed : no file selected.\n"
-msgstr "Restauración fallida: ningún archivo seleccionado.\n"
+#~ msgid "Job Name"
+#~ msgstr "Nombre del Job"
 
-#: src/wx-console/wxbrestorepanel.cpp:798
-msgid "Restore failed : no file selected."
-msgstr "Restauración fallida: ningún archivo seleccionado."
+#~ msgid "Fileset"
+#~ msgstr "Fileset"
 
-#: src/wx-console/wxbrestorepanel.cpp:808
-msgid "Restoring, please wait..."
-msgstr "Restaurando, por favor espere..."
+#~ msgid "Before"
+#~ msgstr "Antes de"
 
-#: src/wx-console/wxbrestorepanel.cpp:821
-msgid "Job queued. JobId="
-msgstr "Cola de Job. JobId="
+#~ msgid "Please configure parameters concerning files to restore :"
+#~ msgstr ""
+#~ "Por favor, configure los parámetros relativos a los archivos a restaurar:"
 
-#: src/wx-console/wxbrestorepanel.cpp:823
-msgid "Restore queued, jobid="
-msgstr "Cola de Restauración, JobID ="
+#~ msgid "always"
+#~ msgstr "siempre"
 
-#: src/wx-console/wxbrestorepanel.cpp:827
-msgid "Job failed."
-msgstr "Job fallido."
+#~ msgid "if newer"
+#~ msgstr "si los nuevos"
 
-#: src/wx-console/wxbrestorepanel.cpp:828
-msgid "Restore failed, please look at messages.\n"
-msgstr "Fallo en restauración, por favor, mirar los mensajes.\n"
+#~ msgid "if older"
+#~ msgstr "si los viejos"
 
-#: src/wx-console/wxbrestorepanel.cpp:829
-msgid "Restore failed, please look at messages in console."
-msgstr "Fallo en restauración, por favor, mirar los mensajes en la consola."
+#~ msgid "never"
+#~ msgstr "nunca"
 
-#: src/wx-console/wxbrestorepanel.cpp:835
-#: src/wx-console/wxbrestorepanel.cpp:836
-msgid "Failed to retrieve jobid.\n"
-msgstr "No se ha podido recuperar jobId.\n"
+#~ msgid "Please configure parameters concerning files restoration :"
+#~ msgstr ""
+#~ "Por favor, configure los parámetros relativos a los archivos de "
+#~ "restauración"
 
-#: src/wx-console/wxbrestorepanel.cpp:862
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion.\n"
-msgstr ""
-"Restaurar está programado para ejecutarse. bwx-consola no esperara a su "
-"conclusión.\n"
+#~ msgid "Getting parameters list."
+#~ msgstr "Obteniendo los parámetros de la lista."
 
-#: src/wx-console/wxbrestorepanel.cpp:863
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion."
-msgstr ""
-"Restaurar está programado para ejecutarse. bwx-consola no esperara a su "
-"conclusión."
+#~ msgid "Error : no clients returned by the director."
+#~ msgstr "Error: el director no devolvió ningún cliente"
 
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job created, but not yet running."
-msgstr "Job de restauración creado, pero aún no se ejecuta."
+#~ msgid "Error : no filesets returned by the director."
+#~ msgstr "Error: el director no devolvió ningún fileset"
 
-#: src/wx-console/wxbrestorepanel.cpp:894
-#, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr ""
-"Job de restauración en ejecución, por favor espere (%ld de %ld archivos "
-"restaurados) ..."
+#~ msgid "Error : no storage returned by the director."
+#~ msgstr "Error: el director no devolvió ningún storage"
 
-#: src/wx-console/wxbrestorepanel.cpp:898
-msgid "Restore job terminated successfully."
-msgstr "Trabajo de restauración terminado correctamente."
+#~ msgid "Error : no jobs returned by the director."
+#~ msgstr "Error: no hay Jobs devuelto por el director."
 
-#: src/wx-console/wxbrestorepanel.cpp:899
-msgid "Restore job terminated successfully.\n"
-msgstr "Trabajo de restauración terminado correctamente.\n"
+#~ msgid "RestoreFiles"
+#~ msgstr "RestoreFiles"
 
-#: src/wx-console/wxbrestorepanel.cpp:904
-msgid "Restore job terminated in error, see messages in console."
-msgstr ""
-"Trabajo de restauración terminado con error, ver los mensajes en la consola."
+#~ msgid "Please configure your restore parameters."
+#~ msgstr "Por favor, configure los parámetros de restauración."
 
-#: src/wx-console/wxbrestorepanel.cpp:905
-msgid "Restore job terminated in error, see messages.\n"
-msgstr "Trabajo de restauración terminado con error, ver los mensajes.\n"
+#~ msgid "Please select a client."
+#~ msgstr "Por favor seleccione un cliente."
 
-#: src/wx-console/wxbrestorepanel.cpp:910
-msgid "Restore job reported a non-fatal error."
-msgstr "Trabajo de restauración no reporto error fatal."
+#~ msgid "Please select a restore date."
+#~ msgstr "Por favor seleccione una fecha de restauración."
 
-#: src/wx-console/wxbrestorepanel.cpp:914
-msgid "Restore job reported a fatal error."
-msgstr "Trabajo de restauración reporto un error fatal."
+#~ msgid "Building restore tree..."
+#~ msgstr "Construyendo árbol de restauración..."
 
-#: src/wx-console/wxbrestorepanel.cpp:919
-msgid "Restore job cancelled by user."
-msgstr "Trabajo de restauración cancelado por el usuario."
+#~ msgid "Error while starting restore: "
+#~ msgstr "Error al iniciar restauración:"
 
-#: src/wx-console/wxbrestorepanel.cpp:920
-msgid "Restore job cancelled by user.\n"
-msgstr "Trabajo de restauración cancelado por el usuario.\n"
+#~ msgid ""
+#~ "Right click on a file or on a directory, or double-click on its mark to "
+#~ "add it to the restore list."
+#~ msgstr ""
+#~ "Haga clic derecho sobre un archivo o un directorio, o haga doble clic en "
+#~ "su marca para añadirlo a la lista de restauración."
 
-#: src/wx-console/wxbrestorepanel.cpp:925
-msgid "Restore job is waiting on File daemon."
-msgstr "Trabajo de restauración esta esperando demonio File."
+#~ msgid "Unexpected question has been received.\n"
+#~ msgstr "Pregunta inesperada ha sido recibida.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:929
-msgid "Restore job is waiting for new media."
-msgstr "Trabajo de restauración esta esperando por un nuevo medio."
+#~ msgid " files selected to be restored."
+#~ msgstr "archivos seleccionados para ser restaurado."
 
-#: src/wx-console/wxbrestorepanel.cpp:933
-msgid "Restore job is waiting for storage resource."
-msgstr "Trabajo de restauración esta esperando por recurso de almacenamiento."
+#~ msgid " file selected to be restored."
+#~ msgstr "archivo seleccionado para ser restaurado."
 
-#: src/wx-console/wxbrestorepanel.cpp:937
-msgid "Restore job is waiting for job resource."
-msgstr "Job de restauración está esperando por recurso job."
+#~ msgid "Please configure your restore (%ld files selected to be restored)..."
+#~ msgstr ""
+#~ "Por favor, configure su restauración (%ld archivos seleccionados para ser "
+#~ "restaurado)..."
 
-#: src/wx-console/wxbrestorepanel.cpp:941
-msgid "Restore job is waiting for Client resource."
-msgstr "Trabajo de restauración esta esperando por recurso de Cliente."
+#~ msgid "Restore failed : no file selected.\n"
+#~ msgstr "Restauración fallida: ningún archivo seleccionado.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:945
-msgid "Restore job is waiting for maximum jobs."
-msgstr "Trabajo de restauración esta esperando por trabajo máximo."
+#~ msgid "Restore failed : no file selected."
+#~ msgstr "Restauración fallida: ningún archivo seleccionado."
 
-#: src/wx-console/wxbrestorepanel.cpp:949
-msgid "Restore job is waiting for start time."
-msgstr "Trabajo de restauración esta esperando por hora de inicio."
+#~ msgid "Restoring, please wait..."
+#~ msgstr "Restaurando, por favor espere..."
 
-#: src/wx-console/wxbrestorepanel.cpp:953
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr ""
-"Job de restauración está esperando por jobs de mayor prioridad para "
-"finalizar."
+#~ msgid "Job queued. JobId="
+#~ msgstr "Cola de Job. JobId="
 
-#: src/wx-console/wxbrestorepanel.cpp:1002
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
-"El Job de restauración no se ha iniciado en el plazo de un minuto, bwx-"
-"console no va a esperar para su realización más.\n"
+#~ msgid "Restore queued, jobid="
+#~ msgstr "Cola de Restauración, JobID ="
 
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
-"El Job de restauración no se ha iniciado en el plazo de un minuto, bwx-"
-"console no va a esperar para su realización más."
+#~ msgid "Job failed."
+#~ msgstr "Job fallido."
 
-#: src/wx-console/wxbrestorepanel.cpp:1013
-msgid "Restore done successfully.\n"
-msgstr "Restauración finalizada con suceso.\n"
+#~ msgid "Restore failed, please look at messages.\n"
+#~ msgstr "Fallo en restauración, por favor, mirar los mensajes.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1014
-msgid "Restore done successfully."
-msgstr "Restauración finalizada con suceso."
+#~ msgid "Restore failed, please look at messages in console."
+#~ msgstr "Fallo en restauración, por favor, mirar los mensajes en la consola."
 
-#: src/wx-console/wxbrestorepanel.cpp:1086
-msgid "Applying restore configuration changes..."
-msgstr "Aplicando cambios de configuración de restauración..."
+#~ msgid "Failed to retrieve jobid.\n"
+#~ msgstr "No se ha podido recuperar jobId.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1138
-msgid "Failed to find the selected client."
-msgstr "Fallo al encontrar el cliente seleccionado."
+#~ msgid "Restore job created, but not yet running."
+#~ msgstr "Job de restauración creado, pero aún no se ejecuta."
 
-#: src/wx-console/wxbrestorepanel.cpp:1158
-msgid "Failed to find the selected fileset."
-msgstr "Fallo al encontrar el fileset seleccionado."
+#~ msgid "Restore job running, please wait (%ld of %ld files restored)..."
+#~ msgstr ""
+#~ "Job de restauración en ejecución, por favor espere (%ld de %ld archivos "
+#~ "restaurados) ..."
 
-#: src/wx-console/wxbrestorepanel.cpp:1178
-msgid "Failed to find the selected storage."
-msgstr "Fallo al encontrar el almacenamiento seleccionado."
+#~ msgid "Restore job terminated successfully."
+#~ msgstr "Trabajo de restauración terminado correctamente."
 
-#: src/wx-console/wxbrestorepanel.cpp:1199
-#: src/wx-console/wxbrestorepanel.cpp:1886
-msgid "Run Restore job"
-msgstr "Ejecutando Job de restauración"
+#~ msgid "Restore job terminated successfully.\n"
+#~ msgstr "Trabajo de restauración terminado correctamente.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1216
-msgid "Restore configuration changes were applied."
-msgstr "Restaurar los cambios de configuración aplicados."
+#~ msgid "Restore job terminated in error, see messages in console."
+#~ msgstr ""
+#~ "Trabajo de restauración terminado con error, ver los mensajes en la "
+#~ "consola."
 
-#: src/wx-console/wxbrestorepanel.cpp:1225
-msgid "Restore cancelled.\n"
-msgstr "Restauración cancelada.\n"
+#~ msgid "Restore job terminated in error, see messages.\n"
+#~ msgstr "Trabajo de restauración terminado con error, ver los mensajes.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1226
-msgid "Restore cancelled."
-msgstr "Restauración cancelada."
+#~ msgid "Restore job reported a non-fatal error."
+#~ msgstr "Trabajo de restauración no reporto error fatal."
 
-#: src/wx-console/wxbrestorepanel.cpp:1248
-msgid "No results to list."
-msgstr "No hay resultados para listar."
+#~ msgid "Restore job reported a fatal error."
+#~ msgstr "Trabajo de restauración reporto un error fatal."
 
-#: src/wx-console/wxbrestorepanel.cpp:1250
-msgid "No backup found for this client."
-msgstr "Respaldos no encontrados para este cliente."
+#~ msgid "Restore job cancelled by user."
+#~ msgstr "Trabajo de restauración cancelado por el usuario."
 
-#: src/wx-console/wxbrestorepanel.cpp:1257
-msgid "ERROR"
-msgstr "ERROR"
+#~ msgid "Restore job cancelled by user.\n"
+#~ msgstr "Trabajo de restauración cancelado por el usuario.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1258
-msgid "Query failed"
-msgstr "Consulta fallida"
+#~ msgid "Restore job is waiting on File daemon."
+#~ msgstr "Trabajo de restauración esta esperando demonio File."
 
-#: src/wx-console/wxbrestorepanel.cpp:1260
-msgid "Cannot get previous backups list, see console."
-msgstr ""
-"No se puede obtener lista de copias de seguridad anteriores, ver la consola."
+#~ msgid "Restore job is waiting for new media."
+#~ msgstr "Trabajo de restauración esta esperando por un nuevo medio."
 
-#: src/wx-console/wxbrestorepanel.cpp:1896
-msgid "JobName:"
-msgstr "JobName:"
+#~ msgid "Restore job is waiting for storage resource."
+#~ msgstr ""
+#~ "Trabajo de restauración esta esperando por recurso de almacenamiento."
 
-#: src/wx-console/wxbrestorepanel.cpp:1898
-msgid "Bootstrap:"
-msgstr "Bootstrap:"
+#~ msgid "Restore job is waiting for job resource."
+#~ msgstr "Job de restauración está esperando por recurso job."
 
-#: src/wx-console/wxbrestorepanel.cpp:1900
-msgid "Where:"
-msgstr "Donde:"
+#~ msgid "Restore job is waiting for Client resource."
+#~ msgstr "Trabajo de restauración esta esperando por recurso de Cliente."
 
-#: src/wx-console/wxbrestorepanel.cpp:1903
-msgid "Replace:"
-msgstr "Reemplazar:"
+#~ msgid "Restore job is waiting for maximum jobs."
+#~ msgstr "Trabajo de restauración esta esperando por trabajo máximo."
 
-#: src/wx-console/wxbrestorepanel.cpp:1906
-msgid "ifnewer"
-msgstr "ifnewer"
+#~ msgid "Restore job is waiting for start time."
+#~ msgstr "Trabajo de restauración esta esperando por hora de inicio."
 
-#: src/wx-console/wxbrestorepanel.cpp:1907
-msgid "ifolder"
-msgstr "ifolder"
+#~ msgid "Restore job is waiting for higher priority jobs to finish."
+#~ msgstr ""
+#~ "Job de restauración está esperando por jobs de mayor prioridad para "
+#~ "finalizar."
 
-#: src/wx-console/wxbrestorepanel.cpp:1911
-msgid "FileSet:"
-msgstr "FileSet:"
+#~ msgid "Restore done successfully.\n"
+#~ msgstr "Restauración finalizada con suceso.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1913
-msgid "Client:"
-msgstr "Cliente:"
+#~ msgid "Restore done successfully."
+#~ msgstr "Restauración finalizada con suceso."
 
-#: src/wx-console/wxbrestorepanel.cpp:1915
-msgid "Storage:"
-msgstr "Storage:"
+#~ msgid "Applying restore configuration changes..."
+#~ msgstr "Aplicando cambios de configuración de restauración..."
 
-#: src/wx-console/wxbrestorepanel.cpp:1917
-msgid "When:"
-msgstr "Cuando:"
+#~ msgid "Failed to find the selected client."
+#~ msgstr "Fallo al encontrar el cliente seleccionado."
 
-#: src/wx-console/wxbrestorepanel.cpp:1920
-msgid "Priority:"
-msgstr "Prioridad:"
+#~ msgid "Failed to find the selected fileset."
+#~ msgstr "Fallo al encontrar el fileset seleccionado."
 
-#: src/wx-console/wxbrestorepanel.cpp:2028
-msgid "Restoring..."
-msgstr "Restaurando..."
+#~ msgid "Failed to find the selected storage."
+#~ msgstr "Fallo al encontrar el almacenamiento seleccionado."
 
-#: src/wx-console/console_thread.cpp:125
-#, 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 ""
-"Ni \"Certificado TLS CA \" o \"Directorio del Certificado TLS CA\" están "
-"definidos para el Director \"%s\" en el archivo de configuración.\n"
-"Por lo menos un almacén de certificados CA es necesario.\n"
+#~ msgid "Run Restore job"
+#~ msgstr "Ejecutando Job de restauración"
 
-#: src/wx-console/console_thread.cpp:132
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-"Recurso Director no definido en el archivo de configuración.\n"
-"Sin eso, yo no sé cómo hablar con el Director :-(\n"
+#~ msgid "Restore configuration changes were applied."
+#~ msgstr "Restaurar los cambios de configuración aplicados."
 
-#: src/wx-console/console_thread.cpp:151
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
-msgstr ""
-"Ni \"Certificado TLS CA \" o \"Directorio del Certificado TLS CA\" están "
-"definidos para la Consola \"%s\" en el archivo de configuración.\n"
+#~ msgid "Restore cancelled."
+#~ msgstr "Restauración cancelada."
 
-#: src/wx-console/console_thread.cpp:173
-msgid "Error while initializing windows sockets...\n"
-msgstr "Error durante la inicialización de Windows Sockets ...\n"
+#~ msgid "No results to list."
+#~ msgstr "No hay resultados para listar."
 
-#: src/wx-console/console_thread.cpp:189
-msgid "Error while cleaning up windows sockets...\n"
-msgstr "Error durante la limpieza de Windows Sockets ...\n"
+#~ msgid "No backup found for this client."
+#~ msgstr "Respaldos no encontrados para este cliente."
 
-#: src/wx-console/console_thread.cpp:228
-msgid "Error while initializing library."
-msgstr "Error al inicializar la librería."
+#~ msgid "ERROR"
+#~ msgstr "ERROR"
 
-#: src/wx-console/console_thread.cpp:256
-msgid "Cryptographic library initialization failed.\n"
-msgstr "Fallo en inicialización de la librería criptográfica.\n"
+#~ msgid "Query failed"
+#~ msgstr "Consulta fallida"
 
-#: src/wx-console/console_thread.cpp:260
-msgid "Please correct configuration file.\n"
-msgstr "Por favor, corrija el archivo de configuración.\n"
+#~ msgid "Cannot get previous backups list, see console."
+#~ msgstr ""
+#~ "No se puede obtener lista de copias de seguridad anteriores, ver la "
+#~ "consola."
 
-#: src/wx-console/console_thread.cpp:302
-msgid "Error : Library not initialized\n"
-msgstr "Error: Librería no inicializada\n"
+#~ msgid "JobName:"
+#~ msgstr "JobName:"
 
-#: src/wx-console/console_thread.cpp:313
-msgid "Error : No configuration file loaded\n"
-msgstr "Error: No hay archivo de configuración cargado\n"
+#~ msgid "Bootstrap:"
+#~ msgstr "Bootstrap:"
 
-#: src/wx-console/console_thread.cpp:323
-msgid "Connecting...\n"
-msgstr "Conectando...\n"
+#~ msgid "Where:"
+#~ msgstr "Donde:"
 
-#: src/wx-console/console_thread.cpp:339
-msgid "Error : No director defined in config file.\n"
-msgstr "Error: Director no definido en el archivo de configuración.\n"
+#~ msgid "Replace:"
+#~ msgstr "Reemplazar:"
 
-#: src/wx-console/console_thread.cpp:351
-msgid "Multiple directors found in your config file.\n"
-msgstr "Varios directores encontrados en su  archivo de configuración.\n"
+#~ msgid "ifnewer"
+#~ msgstr "ifnewer"
 
-#: src/wx-console/console_thread.cpp:360
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr "Por favor, elija un director (1-%d): "
+#~ msgid "ifolder"
+#~ msgstr "ifolder"
 
-#: src/wx-console/console_thread.cpp:389
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr "Frase de contraseña para Console \"%s\" TLS clave privada:"
+#~ msgid "FileSet:"
+#~ msgstr "FileSet:"
 
-#: src/wx-console/console_thread.cpp:410
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr "Frase de contraseña para Director \"%s\" TLS clave privada:"
+#~ msgid "Client:"
+#~ msgstr "Cliente:"
 
-#: src/wx-console/console_thread.cpp:432
-msgid "Failed to connect to the director\n"
-msgstr "Error al conectar con el director\n"
+#~ msgid "Storage:"
+#~ msgstr "Storage:"
 
-#: src/wx-console/console_thread.cpp:442
-msgid "Connected\n"
-msgstr "Conectado\n"
+#~ msgid "When:"
+#~ msgstr "Cuando:"
 
-#: src/wx-console/console_thread.cpp:499
-msgid "<< Unexpected signal received : "
-msgstr "<<Señal inesperada recibida:"
+#~ msgid "Priority:"
+#~ msgstr "Prioridad:"
 
-#: src/wx-console/console_thread.cpp:519
-msgid "Connection terminated\n"
-msgstr "Conexión terminada\n"
+#~ msgid "Restoring..."
+#~ msgstr "Restaurando..."
 
-#: src/wx-console/wxbconfigpanel.cpp:213
-msgid "Apply"
-msgstr "Aplicar"
+#~ 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 ""
+#~ "Ni \"Certificado TLS CA \" o \"Directorio del Certificado TLS CA\" están "
+#~ "definidos para el Director \"%s\" en el archivo de configuración.\n"
+#~ "Por lo menos un almacén de certificados CA es necesario.\n"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-#: src/wx-console/wxbmainframe.cpp:291
-msgid "Type your command below:"
-msgstr "Escriba su comando a continuación:"
+#~ msgid ""
+#~ "No Director resource defined in config file.\n"
+#~ "Without that I don't how to speak to the Director :-(\n"
+#~ msgstr ""
+#~ "Recurso Director no definido en el archivo de configuración.\n"
+#~ "Sin eso, yo no sé cómo hablar con el Director :-(\n"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:117
-msgid "Unknown command."
-msgstr "Comando desconocido."
+#~ msgid ""
+#~ "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined "
+#~ "for Console \"%s\" in config file.\n"
+#~ msgstr ""
+#~ "Ni \"Certificado TLS CA \" o \"Directorio del Certificado TLS CA\" están "
+#~ "definidos para la Consola \"%s\" en el archivo de configuración.\n"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:126
-msgid "Possible completions: "
-msgstr "Posibles complementos:"
+#~ msgid "Error while initializing windows sockets...\n"
+#~ msgstr "Error durante la inicialización de Windows Sockets ...\n"
 
-#: src/wx-console/main.cpp:119
-msgid "Bacula bwx-console"
-msgstr "Bacula bwx-console"
+#~ msgid "Error while cleaning up windows sockets...\n"
+#~ msgstr "Error durante la limpieza de Windows Sockets ...\n"
 
-#: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
-#, c-format
-msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr "Bienvenido a bacula bwx-console %s (%s)!\n"
+#~ msgid "Error while initializing library."
+#~ msgstr "Error al inicializar la librería."
 
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr "&Acerca de...\tF1"
+#~ msgid "Cryptographic library initialization failed.\n"
+#~ msgstr "Fallo en inicialización de la librería criptográfica.\n"
 
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr "Mostrar diálogo Acerca de"
+#~ msgid "Please correct configuration file.\n"
+#~ msgstr "Por favor, corrija el archivo de configuración.\n"
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
-msgid "Connect"
-msgstr "Conectar"
+#~ msgid "Error : Library not initialized\n"
+#~ msgstr "Error: Librería no inicializada\n"
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
-msgid "Connect to the director"
-msgstr "Conectar con director"
+#~ msgid "Error : No configuration file loaded\n"
+#~ msgstr "Error: No hay archivo de configuración cargado\n"
 
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect"
-msgstr "Desconectar"
+#~ msgid "Connecting...\n"
+#~ msgstr "Conectando...\n"
 
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect of the director"
-msgstr "Desconectar del director"
+#~ msgid "Error : No director defined in config file.\n"
+#~ msgstr "Error: Director no definido en el archivo de configuración.\n"
 
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change of configuration file"
-msgstr "Cambio del archivo de configuración"
+#~ msgid "Multiple directors found in your config file.\n"
+#~ msgstr "Varios directores encontrados en su  archivo de configuración.\n"
 
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change your default configuration file"
-msgstr "Cambiar el archivo de configuración predeterminado"
+#~ msgid "Please choose a director (1-%d): "
+#~ msgstr "Por favor, elija un director (1-%d): "
 
-#: src/wx-console/wxbmainframe.cpp:252
-msgid "Edit your configuration file"
-msgstr "Edite su archivo de configuración"
+#~ msgid "Passphrase for Console \"%s\" TLS private key: "
+#~ msgstr "Frase de contraseña para Console \"%s\" TLS clave privada:"
 
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr "E&xit\tAlt-X"
+#~ msgid "Passphrase for Director \"%s\" TLS private key: "
+#~ msgstr "Frase de contraseña para Director \"%s\" TLS clave privada:"
 
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr "Salga de este programa"
+#~ msgid "Failed to connect to the director\n"
+#~ msgstr "Error al conectar con el director\n"
 
-#: src/wx-console/wxbmainframe.cpp:258
-msgid "&File"
-msgstr "&Archivo"
+#~ msgid "Connected\n"
+#~ msgstr "Conectado\n"
 
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr "&Ayuda"
+#~ msgid "<< Unexpected signal received : "
+#~ msgstr "<<Señal inesperada recibida:"
 
-#: src/wx-console/wxbmainframe.cpp:283
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
-"Advertencia: Unicode está deshabilitado porque está utilizando wxWidgets "
-"para GTK+ 1.2.\n"
+#~ msgid "Connection terminated\n"
+#~ msgstr "Conexión terminada\n"
 
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
-"Advertencia: Hay un problema con wxWidgets para GTK+ 2.0 sin el soporte "
-"Unicode al manejar nombres de archivos no-ASCII: Cada carácter no-ASCII en "
-"nombres de archivos será sustituido por un signo de interrogación.\n"
-"Si este comportamiento te molesta, por favor construya bwx-consola para una "
-"versión Unicode de wxWidgets para GTK+ 2.0.\n"
-"---\n"
-
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr "Enviar"
-
-#: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr ""
-"Error al analizar los argumentos de línea de comandos, usando valores por "
-"defecto.\n"
+#~ msgid "Apply"
+#~ msgstr "Aplicar"
 
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr "Utilice: bwx-console [-c archivo_configuración] [-w tmp]\n"
+#~ msgid "Type your command below:"
+#~ msgstr "Escriba su comando a continuación:"
 
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
-"Parece que es la primera vez que ejecute bwx-consola.\n"
-"Este archivo (%s) ha sido elegido como el archivo de configuración por "
-"defecto.\n"
-"¿Desea editar lo? (si hace clic en NO usted tendrá que seleccionar otro "
-"archivo)"
+#~ msgid "Unknown command."
+#~ msgstr "Comando desconocido."
 
-#: src/wx-console/wxbmainframe.cpp:419
-msgid "First run"
-msgstr "Primera ejecución"
+#~ msgid "Possible completions: "
+#~ msgstr "Posibles complementos:"
 
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
-"No se puede leer %s\n"
-"Error: %s\n"
-" ¿Deseas seleccionar otro? (Presione no para editar este archivo)"
+#~ msgid "&About...\tF1"
+#~ msgstr "&Acerca de...\tF1"
 
-#: src/wx-console/wxbmainframe.cpp:438
-msgid "Unable to read configuration file"
-msgstr "No es posible leer el archivo de configuración"
+#~ msgid "Show about dialog"
+#~ msgstr "Mostrar diálogo Acerca de"
 
-#: src/wx-console/wxbmainframe.cpp:450
-msgid "Please choose a configuration file to use"
-msgstr "Por favor, elija un archivo de configuración para usar"
+#~ msgid "Connect"
+#~ msgstr "Conectar"
 
-#: src/wx-console/wxbmainframe.cpp:463
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
-"Este archivo de configuración se ha leído correctamente, utilizar el por "
-"defecto?"
+#~ msgid "Connect to the director"
+#~ msgstr "Conectar con director"
 
-#: src/wx-console/wxbmainframe.cpp:464
-msgid "Configuration file read successfully"
-msgstr "Archivo de configuración leído correctamente"
+#~ msgid "Disconnect"
+#~ msgstr "Desconectar"
 
-#: src/wx-console/wxbmainframe.cpp:474
-#, c-format
-msgid "Using this configuration file: %s\n"
-msgstr "Usando este fichero de configuración: %s\n"
+#~ msgid "Disconnect of the director"
+#~ msgstr "Desconectar del director"
 
-#: src/wx-console/wxbmainframe.cpp:479
-msgid "Connecting to the director..."
-msgstr "Conectando con director..."
+#~ msgid "Change of configuration file"
+#~ msgstr "Cambio del archivo de configuración"
 
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr "Fallo al anular el registro del analizador de datos!"
+#~ msgid "Change your default configuration file"
+#~ msgstr "Cambiar el archivo de configuración predeterminado"
 
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr "Saliendo.\n"
+#~ msgid "Edit your configuration file"
+#~ msgstr "Edite su archivo de configuración"
 
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
-msgstr ""
-"Bienvenido a Bacula bwx-console.\n"
-"Escrito por Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
+#~ msgid "E&xit\tAlt-X"
+#~ msgstr "E&xit\tAlt-X"
 
-#: src/wx-console/wxbmainframe.cpp:521
-msgid "About Bacula bwx-console"
-msgstr "Acerca de Bacula bwx-console"
+#~ msgid "Quit this program"
+#~ msgstr "Salga de este programa"
 
-#: src/wx-console/wxbmainframe.cpp:527
-msgid "Please choose your default configuration file"
-msgstr "Por favor, seleccione su archivo de configuración por defecto"
+#~ msgid "&File"
+#~ msgstr "&Archivo"
 
-#: src/wx-console/wxbmainframe.cpp:531
-msgid "Use this configuration file as default?"
-msgstr "Utilizar este archivo de configuración por defecto?"
+#~ msgid "&Help"
+#~ msgstr "&Ayuda"
 
-#: src/wx-console/wxbmainframe.cpp:532
-msgid "Configuration file"
-msgstr "Archivo de configuración"
+#~ msgid "Send"
+#~ msgstr "Enviar"
 
-#: src/wx-console/wxbmainframe.cpp:603
-msgid "Console thread terminated."
-msgstr "Hilo de Consola terminado."
+#~ msgid "Error while parsing command line arguments, using defaults.\n"
+#~ msgstr ""
+#~ "Error al analizar los argumentos de línea de comandos, usando valores por "
+#~ "defecto.\n"
 
-#: src/wx-console/wxbmainframe.cpp:611
-msgid "Connection to the director lost. Quit program?"
-msgstr "Conexión perdida con el director. Salir del programa?"
+#~ msgid "First run"
+#~ msgstr "Primera ejecución"
 
-#: src/wx-console/wxbmainframe.cpp:612
-msgid "Connection lost"
-msgstr "Conexión perdida"
+#~ msgid ""
+#~ "Unable to read %s\n"
+#~ "Error: %s\n"
+#~ "Do you want to choose another one? (Press no to edit this file)"
+#~ msgstr ""
+#~ "No se puede leer %s\n"
+#~ "Error: %s\n"
+#~ " ¿Deseas seleccionar otro? (Presione no para editar este archivo)"
 
-#: src/wx-console/wxbmainframe.cpp:628
-msgid "Connected to the director."
-msgstr "Conectado al director."
+#~ msgid "Unable to read configuration file"
+#~ msgstr "No es posible leer el archivo de configuración"
 
-#: src/wx-console/wxbmainframe.cpp:651
-msgid "Reconnect"
-msgstr "Reconectar"
+#~ msgid "Please choose a configuration file to use"
+#~ msgstr "Por favor, elija un archivo de configuración para usar"
 
-#: src/wx-console/wxbmainframe.cpp:652
-msgid "Reconnect to the director"
-msgstr "Reconectar al director"
+#~ msgid ""
+#~ "This configuration file has been successfully read, use it as default?"
+#~ msgstr ""
+#~ "Este archivo de configuración se ha leído correctamente, utilizar el por "
+#~ "defecto?"
 
-#: src/wx-console/wxbmainframe.cpp:666
-msgid "Disconnected of the director."
-msgstr "Desconectado al director."
+#~ msgid "Configuration file read successfully"
+#~ msgstr "Archivo de configuración leído correctamente"
 
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr "bwx-console: inesperada consulta del director."
+#~ msgid "Using this configuration file: %s\n"
+#~ msgstr "Usando este fichero de configuración: %s\n"
 
-#: src/qt-console/tray-monitor/tray-monitor.cpp:67
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-"Escrito por Nicolas Boichat (2004)\n"
-"\n"
-"Versión: %s (%s) %s %s %s\n"
-"\n"
-"Utilice: tray-monitor [-c archivo_configuración] [-d nivel_depuración]\n"
-" -c <archivo> establece archivo de configuración para archivo\n"
-" -d <nn> establece nivel de depuración para <nn>\n"
-" -dt imprime timestamp en salida de depuración\n"
-" -t prueba - leer configuración y salir\n"
-" -? imprimir este mensaje.\n"
-"\n"
+#~ msgid "Connecting to the director..."
+#~ msgstr "Conectando con director..."
 
-#: src/qt-console/bcomm/dircomm.cpp:92
-#, c-format
-msgid "Already connected\"%s\".\n"
-msgstr "Ya conectado\"%s\".\n"
+#~ msgid "Failed to unregister a data parser !"
+#~ msgstr "Fallo al anular el registro del analizador de datos!"
 
-#: src/qt-console/bcomm/dircomm.cpp:105
-#, c-format
-msgid ""
-"Connecting to Director %s:%d\n"
-"\n"
-msgstr ""
-"Conectando con Director %s:%d\n"
-"\n"
+#~ msgid "Quitting.\n"
+#~ msgstr "Saliendo.\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:208
-msgid "Initializing ..."
-msgstr "Inicializando ..."
+#~ msgid "Please choose your default configuration file"
+#~ msgstr "Por favor, seleccione su archivo de configuración por defecto"
 
-#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
-msgid "Connected"
-msgstr "Conectado"
+#~ msgid "Use this configuration file as default?"
+#~ msgstr "Utilizar este archivo de configuración por defecto?"
 
-#: src/qt-console/bcomm/dircomm.cpp:348
-msgid "Command completed ..."
-msgstr "Comando completado ..."
+#~ msgid "Configuration file"
+#~ msgstr "Archivo de configuración"
 
-#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
-msgid "Processing command ..."
-msgstr "Procesando comando ..."
+#~ msgid "Console thread terminated."
+#~ msgstr "Hilo de Consola terminado."
 
-#: src/qt-console/bcomm/dircomm.cpp:362
-msgid "At main prompt waiting for input ..."
-msgstr "En prompt principal esperando por una entrada..."
+#~ msgid "Connection to the director lost. Quit program?"
+#~ msgstr "Conexión perdida con el director. Salir del programa?"
 
-#: 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..."
+#~ msgid "Connection lost"
+#~ msgstr "Conexión perdida"
 
-#: src/qt-console/bcomm/dircomm.cpp:390
-msgid "Command failed."
-msgstr "Comando fallido."
+#~ msgid "Connected to the director."
+#~ msgstr "Conectado al director."
 
-#: src/qt-console/bcomm/dircomm.cpp:463
-msgid "Director disconnected."
-msgstr "Director desconectado."
+#~ msgid "Reconnect"
+#~ msgstr "Reconectar"
 
-#: src/qt-console/bat_conf.cpp:154
-#, c-format
-msgid "Console: name=%s\n"
-msgstr "Console: nombre=%s\n"
+#~ msgid "Reconnect to the director"
+#~ msgstr "Reconectar al director"
 
-#: src/qt-console/main.cpp:191
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: 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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Versión: %s (%s) %s %s %s\n"
-"\n"
-"Utilice: bat [-s] [-c archivo_de_configuración] [-d nivel_depuración "
-"[archivo_de_configuración]\n"
-" -c <archivo> establecer archivo de configuración para el archivo\n"
-" -dnn establecer el nivel de depuración a nn\n"
-" -s no hay señales\n"
-" -t prueba - leer la configuración y salir\n"
-" -? imprimir este mensaje.\n"
-"\n"
+#~ msgid "Disconnected of the director."
+#~ msgstr "Desconectado al director."
 
 #~ msgid "Using Device \"%s\"\n"
 #~ msgstr "Usando Dispositivo \"%s\"\n"
diff --git a/po/es_AR.po b/po/es_AR.po
index 37bdd17..efd60b2 100644
--- a/po/es_AR.po
+++ b/po/es_AR.po
@@ -1,6 +1,6 @@
 # Spanish translations for branch package
 # Traducciones al espa�ol para el paquete branch.
-# Copyright (C) 2006 Free Software Foundation Europe e.V.
+# Copyright (C) 2006-2014 Free Software Foundation Europe e.V.
 # This file is distributed under the same license as the branch package.
 #  <kern at sibbald.com>, 2006.
 #
@@ -557,7 +557,7 @@ msgstr ""
 #: src/console/authenticate.c:100 src/dird/authenticate.c:106
 #: src/dird/authenticate.c:206 src/filed/authenticate.c:119
 #: src/filed/authenticate.c:215 src/stored/authenticate.c:128
-#: src/stored/authenticate.c:232 src/wx-console/authenticate.c:106
+#: src/stored/authenticate.c:232
 msgid ""
 "Authorization problem: Remote server did not advertise required TLS "
 "support.\n"
@@ -566,26 +566,24 @@ msgstr ""
 #: src/console/authenticate.c:107 src/dird/authenticate.c:113
 #: src/dird/authenticate.c:213 src/filed/authenticate.c:127
 #: src/filed/authenticate.c:223 src/stored/authenticate.c:136
-#: src/stored/authenticate.c:240 src/wx-console/authenticate.c:112
+#: src/stored/authenticate.c:240
 msgid "Authorization problem: Remote server requires TLS.\n"
 msgstr ""
 
-#: src/console/authenticate.c:117 src/wx-console/authenticate.c:121
+#: src/console/authenticate.c:117
 msgid "TLS negotiation failed\n"
 msgstr ""
 
-#: src/console/authenticate.c:129 src/gnome2-console/authenticate.c:85
-#: src/tray-monitor/authenticate.c:87
+#: src/console/authenticate.c:129
 #, c-format
 msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/console/authenticate.c:136 src/gnome2-console/authenticate.c:95
-#: src/tray-monitor/authenticate.c:94 src/wx-console/authenticate.c:136
+#: src/console/authenticate.c:136
 msgid "Director rejected Hello command\n"
 msgstr ""
 
-#: src/console/authenticate.c:146 src/wx-console/authenticate.c:146
+#: src/console/authenticate.c:146
 msgid ""
 "Director authorization problem.\n"
 "Most likely the passwords do not agree.\n"
@@ -663,12 +661,11 @@ msgid ": is an illegal command\n"
 msgstr ""
 
 #: src/console/console.c:400 src/filed/filed.c:183
-#: src/gnome2-console/console.c:271
 msgid "TLS library initialization failed.\n"
 msgstr ""
 
 #: src/console/console.c:404 src/dird/dird.c:200 src/dird/dird.c:410
-#: src/dird/dird.c:413 src/filed/filed.c:188 src/gnome2-console/console.c:275
+#: src/dird/dird.c:413 src/filed/filed.c:188
 #: src/stored/stored.c:193
 #, c-format
 msgid "Please correct configuration file: %s\n"
@@ -692,19 +689,17 @@ msgstr ""
 msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/console/console.c:455 src/tray-monitor/tray-monitor.c:858
+#: src/console/console.c:455
 #, c-format
 msgid "Connecting to Director %s:%d\n"
 msgstr ""
 
-#: src/console/console.c:471 src/gnome2-console/console.c:504
-#: src/wx-console/console_thread.cpp:370
+#: src/console/console.c:471
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
-#: src/console/console.c:492 src/gnome2-console/console.c:526
-#: src/wx-console/console_thread.cpp:391
+#: src/console/console.c:492
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
@@ -716,27 +711,25 @@ msgstr ""
 #: src/console/console.c:582 src/console/console.c:611 src/dird/dird.c:496
 #: src/dird/dird.c:711 src/dird/dird.c:777 src/dird/dird.c:829
 #: src/filed/filed.c:302 src/filed/filed.c:348
-#: src/gnome2-console/console.c:140 src/gnome2-console/console.c:169
-#: src/stored/stored.c:309 src/wx-console/console_thread.cpp:94
-#: src/wx-console/console_thread.cpp:120
+#: src/stored/stored.c:309
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/console/console.c:589 src/gnome2-console/console.c:147
+#: src/console/console.c:589
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/console/console.c:598 src/gnome2-console/console.c:156
+#: src/console/console.c:598
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/console/console.c:618 src/gnome2-console/console.c:176
+#: src/console/console.c:618
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -765,19 +758,17 @@ msgstr ""
 msgid "Cannot open file %s for output. ERR=%s\n"
 msgstr ""
 
-#: src/console/console_conf.c:123 src/gnome2-console/console_conf.c:122
-#: src/wx-console/console_conf.c:128
+#: src/console/console_conf.c:123
 #, c-format
 msgid "No record for %d %s\n"
 msgstr ""
 
-#: src/console/console_conf.c:132 src/wx-console/console_conf.c:137
+#: src/console/console_conf.c:132
 #, c-format
 msgid "Console: name=%s rcfile=%s histfile=%s\n"
 msgstr ""
 
-#: src/console/console_conf.c:136 src/gnome2-console/console_conf.c:131
-#: src/wx-console/console_conf.c:141
+#: src/console/console_conf.c:136
 #, c-format
 msgid "Director: name=%s address=%s DIRport=%d\n"
 msgstr ""
@@ -785,27 +776,20 @@ msgstr ""
 #: src/console/console_conf.c:140 src/console/console_conf.c:216
 #: src/console/console_conf.c:261 src/console/console_conf.c:288
 #: src/filed/filed_conf.c:268 src/filed/filed_conf.c:327
-#: src/filed/filed_conf.c:357 src/gnome2-console/console_conf.c:142
-#: src/gnome2-console/console_conf.c:220 src/gnome2-console/console_conf.c:268
-#: src/gnome2-console/console_conf.c:298 src/stored/stored_conf.c:510
+#: src/filed/filed_conf.c:357 src/stored/stored_conf.c:510
 #: src/stored/stored_conf.c:598 src/stored/stored_conf.c:633
-#: src/wx-console/console_conf.c:145 src/wx-console/console_conf.c:220
-#: src/wx-console/console_conf.c:265 src/wx-console/console_conf.c:292
 #, c-format
 msgid "Unknown resource type %d\n"
 msgstr ""
 
 #: src/console/console_conf.c:242 src/dird/dird_conf.c:1112
 #: src/dird/dird_conf.c:1127 src/filed/filed_conf.c:296
-#: src/gnome2-console/console_conf.c:246 src/tray-monitor/tray_conf.c:262
-#: src/wx-console/console_conf.c:246
 #, c-format
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
 #: src/console/console_conf.c:304 src/dird/dird_conf.c:1299
-#: src/filed/filed_conf.c:374 src/gnome2-console/console_conf.c:314
-#: src/tray-monitor/tray_conf.c:341 src/wx-console/console_conf.c:308
+#: src/filed/filed_conf.c:374
 #, c-format
 msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
@@ -855,7 +839,6 @@ msgid ""
 msgstr ""
 
 #: src/dird/authenticate.c:67 src/dird/authenticate.c:68
-#: src/tray-monitor/authenticate.c:121
 #, c-format
 msgid "Error sending Hello to Storage daemon. ERR=%s\n"
 msgstr ""
@@ -881,17 +864,16 @@ msgstr ""
 msgid "TLS negotiation failed.\n"
 msgstr ""
 
-#: src/dird/authenticate.c:132 src/tray-monitor/authenticate.c:134
+#: src/dird/authenticate.c:132
 #, c-format
 msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
 msgstr ""
 
 #: src/dird/authenticate.c:139 src/dird/authenticate.c:140
-#: src/tray-monitor/authenticate.c:141
 msgid "Storage daemon rejected Hello command\n"
 msgstr ""
 
-#: src/dird/authenticate.c:167 src/tray-monitor/authenticate.c:166
+#: src/dird/authenticate.c:167
 #, c-format
 msgid "Error sending Hello to File daemon. ERR=%s\n"
 msgstr ""
@@ -911,13 +893,11 @@ msgid ""
 msgstr ""
 
 #: src/dird/authenticate.c:232 src/dird/authenticate.c:234
-#: src/tray-monitor/authenticate.c:179
 #, c-format
 msgid "Bad response from File daemon to Hello command: ERR=%s\n"
 msgstr ""
 
 #: src/dird/authenticate.c:241 src/dird/authenticate.c:242
-#: src/tray-monitor/authenticate.c:186
 msgid "File daemon rejected Hello command\n"
 msgstr ""
 
@@ -1351,7 +1331,7 @@ msgid ""
 "File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:443 src/tray-monitor/tray_conf.c:152
+#: src/dird/dird_conf.c:443
 #, c-format
 msgid "No %s resource defined\n"
 msgstr ""
@@ -1571,18 +1551,17 @@ msgstr ""
 msgid "      opcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:786 src/tray-monitor/tray_conf.c:179
+#: src/dird/dird_conf.c:786
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1080 src/tray-monitor/tray_conf.c:232
+#: src/dird/dird_conf.c:1080
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
 #: src/dird/dird_conf.c:1118 src/lib/parse_conf.c:211
-#: src/tray-monitor/tray_conf.c:268
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr ""
@@ -1623,12 +1602,12 @@ msgstr ""
 msgid "Cannot find Schedule resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1217 src/tray-monitor/tray_conf.c:287
+#: src/dird/dird_conf.c:1217
 #, c-format
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1277 src/tray-monitor/tray_conf.c:322
+#: src/dird/dird_conf.c:1277
 #, c-format
 msgid "Unknown resource type %d in save_resrouce.\n"
 msgstr ""
@@ -1693,7 +1672,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:73 src/tray-monitor/tray-monitor.c:867
+#: src/dird/fd_cmds.c:73
 msgid "File daemon"
 msgstr ""
 
@@ -2068,7 +2047,6 @@ msgid ""
 msgstr ""
 
 #: src/dird/msgchan.c:78 src/filed/job.c:1129
-#: src/tray-monitor/tray-monitor.c:874
 msgid "Storage daemon"
 msgstr ""
 
@@ -3410,7 +3388,7 @@ msgid "Enter a list of directories to restore for found JobIds"
 msgstr ""
 
 #: src/dird/ua_restore.c:297 src/dird/ua_status.c:713 src/filed/status.c:251
-#: src/stored/status.c:412 src/wx-console/wxbconfigpanel.cpp:191
+#: src/stored/status.c:412
 msgid "Cancel"
 msgstr ""
 
@@ -3917,53 +3895,23 @@ msgid "Level"
 msgstr ""
 
 #: src/dird/ua_run.c:642 src/dird/ua_select.c:152
-#: src/wx-console/wxbrestorepanel.cpp:321
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:458
-#: src/wx-console/wxbrestorepanel.cpp:459
-#: src/wx-console/wxbrestorepanel.cpp:469
-#: src/wx-console/wxbrestorepanel.cpp:470
-#: src/wx-console/wxbrestorepanel.cpp:1133
-#: src/wx-console/wxbrestorepanel.cpp:1794
-#: src/wx-console/wxbrestorepanel.cpp:1865
 msgid "Storage"
 msgstr ""
 
 #: src/dird/ua_run.c:645 src/dird/ua_select.c:282 src/dird/ua_select.c:391
-#: src/wx-console/wxbrestorepanel.cpp:318
-#: src/wx-console/wxbrestorepanel.cpp:336
-#: src/wx-console/wxbrestorepanel.cpp:410
-#: src/wx-console/wxbrestorepanel.cpp:411
-#: src/wx-console/wxbrestorepanel.cpp:421
-#: src/wx-console/wxbrestorepanel.cpp:422
-#: src/wx-console/wxbrestorepanel.cpp:669
-#: src/wx-console/wxbrestorepanel.cpp:1103
-#: src/wx-console/wxbrestorepanel.cpp:1190
-#: src/wx-console/wxbrestorepanel.cpp:1787
-#: src/wx-console/wxbrestorepanel.cpp:1789
-#: src/wx-console/wxbrestorepanel.cpp:1863
-#: src/wx-console/wxbrestorepanel.cpp:1918
 msgid "Client"
 msgstr ""
 
-#: src/dird/ua_run.c:646 src/wx-console/wxbrestorepanel.cpp:338
-#: src/wx-console/wxbrestorepanel.cpp:823
-#: src/wx-console/wxbrestorepanel.cpp:1867
+#: src/dird/ua_run.c:646
 msgid "When"
 msgstr ""
 
-#: src/dird/ua_run.c:647 src/wx-console/wxbrestorepanel.cpp:339
-#: src/wx-console/wxbrestorepanel.cpp:1096
-#: src/wx-console/wxbrestorepanel.cpp:1869
+#: src/dird/ua_run.c:647
 msgid "Priority"
 msgstr ""
 
 #: src/dird/ua_run.c:650 src/dird/ua_select.c:476 src/dird/ua_select.c:566
 #: src/dird/ua_update.c:400 src/dird/ua_update.c:475
-#: src/wx-console/wxbrestorepanel.cpp:320
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1783
 msgid "Pool"
 msgstr ""
 
@@ -3971,24 +3919,15 @@ msgstr ""
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:655 src/wx-console/wxbrestorepanel.cpp:331
-#: src/wx-console/wxbrestorepanel.cpp:1848
+#: src/dird/ua_run.c:655
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:656 src/wx-console/wxbrestorepanel.cpp:332
-#: src/wx-console/wxbrestorepanel.cpp:1072
-#: src/wx-console/wxbrestorepanel.cpp:1850
+#: src/dird/ua_run.c:656
 msgid "Where"
 msgstr ""
 
-#: src/dird/ua_run.c:657 src/wx-console/wxbrestorepanel.cpp:334
-#: src/wx-console/wxbrestorepanel.cpp:1080
-#: src/wx-console/wxbrestorepanel.cpp:1854
-#: src/wx-console/wxbrestorepanel.cpp:1855
-#: src/wx-console/wxbrestorepanel.cpp:1856
-#: src/wx-console/wxbrestorepanel.cpp:1857
-#: src/wx-console/wxbrestorepanel.cpp:1858
+#: src/dird/ua_run.c:657
 msgid "Replace"
 msgstr ""
 
@@ -4573,7 +4512,6 @@ msgstr ""
 
 #: src/dird/ua_status.c:716 src/filed/status.c:254 src/lib/util.c:187
 #: src/lib/util.c:254 src/stored/btape.c:1158 src/stored/status.c:415
-#: src/wx-console/wxbconfigpanel.cpp:180
 msgid "OK"
 msgstr ""
 
@@ -6253,370 +6191,10 @@ msgstr ""
 msgid "Cannot return to saved working directory: %s\n"
 msgstr ""
 
-#: src/gnome2-console/authenticate.c:74
-#, c-format
-msgid "%s: Director authorization problem.\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:75
-msgid "Director authorization problem.\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:77
-msgid ""
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:87
-#, c-format
-msgid "%s: Bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:89
-msgid "The Director is probably not running.\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:88
-#, c-format
-msgid ""
-"Copyright (C) 2002-2005 Kern Sibbald\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: gnome-console [-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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:219
-#, c-format
-msgid "Pthread cond init error = %s\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:357
-msgid " Not Connected"
-msgstr ""
-
-#: src/gnome2-console/console.c:478
-#, c-format
-msgid " Connecting to Director %s:%d"
-msgstr ""
-
-#: src/gnome2-console/console.c:479
-#, c-format
-msgid ""
-"Connecting to Director %s:%d\n"
-"\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:494 src/wx-console/console_thread.cpp:360
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr ""
-
-#: src/gnome2-console/console.c:516 src/wx-console/console_thread.cpp:381
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr ""
-
-#: src/gnome2-console/console.c:535 src/tray-monitor/tray-monitor.c:860
-#: src/wx-console/console_thread.cpp:399
-msgid "Director daemon"
-msgstr ""
-
-#: src/gnome2-console/console.c:547
-msgid " Initializing ..."
-msgstr ""
-
-#: src/gnome2-console/console.c:583
-msgid " Connected"
-msgstr ""
-
-#: src/gnome2-console/console.c:591
-msgid " Processing command ..."
-msgstr ""
-
-#: src/gnome2-console/console.c:626
-msgid " At prompt waiting for input ..."
-msgstr ""
-
-#: src/gnome2-console/console.c:746
-msgid " Ready"
-msgstr ""
-
-#: src/gnome2-console/console_conf.c:135
-#, c-format
-msgid "Console: name=%s\n"
-msgstr ""
-
-#: src/gnome2-console/console_conf.c:138
-#, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr ""
-
-#: src/gnome2-console/interface.c:32
-msgid "_Connect"
-msgstr ""
-
-#: src/gnome2-console/interface.c:33 src/gnome2-console/interface.c:232
-msgid "Connect to Director"
-msgstr ""
-
-#: src/gnome2-console/interface.c:39
-msgid "_Disconnect"
-msgstr ""
-
-#: src/gnome2-console/interface.c:40
-msgid "Disconnect from Director"
-msgstr ""
-
-#: src/gnome2-console/interface.c:93
-msgid "_Display Messages"
-msgstr ""
-
-#: src/gnome2-console/interface.c:129
-msgid "_File"
-msgstr ""
-
-#: src/gnome2-console/interface.c:136
-msgid "_Edit"
-msgstr ""
-
-#: src/gnome2-console/interface.c:143
-msgid "_View"
-msgstr ""
-
-#: src/gnome2-console/interface.c:144 src/gnome2-console/interface.c:252
-msgid "Display Messages"
-msgstr ""
-
-#: src/gnome2-console/interface.c:150
-msgid "_Settings"
-msgstr ""
-
-#: src/gnome2-console/interface.c:157
-msgid "_Help"
-msgstr ""
-
-#: src/gnome2-console/interface.c:197
-msgid "Bacula Console"
-msgstr ""
-
-#: src/gnome2-console/interface.c:231 src/wx-console/wxbmainframe.cpp:229
-#: src/wx-console/wxbmainframe.cpp:597
-msgid "Connect"
-msgstr ""
-
-#: src/gnome2-console/interface.c:241
-msgid "Run"
-msgstr ""
-
-#: src/gnome2-console/interface.c:242 src/gnome2-console/interface.c:677
-#: src/gnome2-console/interface.c:690
-msgid "Run a Job"
-msgstr ""
-
-#: src/gnome2-console/interface.c:251
-msgid "Msgs"
-msgstr ""
-
-#: src/gnome2-console/interface.c:261 src/lib/util.c:292
-#: src/wx-console/wxbrestorepanel.cpp:384
-#: src/wx-console/wxbrestorepanel.cpp:1949
+#: src/lib/util.c:292
 msgid "Restore"
 msgstr ""
 
-#: src/gnome2-console/interface.c:271
-msgid "Label"
-msgstr ""
-
-#: src/gnome2-console/interface.c:299
-msgid " Command: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:307
-msgid "Enter Commands Here"
-msgstr ""
-
-#: src/gnome2-console/interface.c:318
-msgid " Status: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:326
-msgid "  "
-msgstr ""
-
-#: src/gnome2-console/interface.c:422
-msgid "About Bacula Console"
-msgstr ""
-
-#: src/gnome2-console/interface.c:436
-msgid "Bacula Console\n"
-msgstr ""
-
-#: src/gnome2-console/interface.c:444
-msgid "Copyright (c) 2000 - 2004, Kern Sibbald and John Walker"
-msgstr ""
-
-#: src/gnome2-console/interface.c:450
-msgid "Authors: Kern Sibbald and John Walker"
-msgstr ""
-
-#: src/gnome2-console/interface.c:456
-msgid "The Leading Open Source Backup Solution."
-msgstr ""
-
-#: src/gnome2-console/interface.c:521 src/gnome2-console/interface.c:536
-msgid "Select Director"
-msgstr ""
-
-#: src/gnome2-console/interface.c:708 src/gnome2-console/interface.c:1616
-msgid "Job:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:728
-msgid "   Type:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:757 src/gnome2-console/interface.c:1644
-#: src/wx-console/wxbrestorepanel.cpp:1862
-msgid "Client:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:787 src/gnome2-console/interface.c:1672
-msgid "FileSet: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:813 src/wx-console/wxbrestorepanel.cpp:1868
-msgid "Priority:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:836
-msgid "Level:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:866 src/gnome2-console/interface.c:1418
-#: src/gnome2-console/interface.c:1700
-msgid "Pool:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:895 src/gnome2-console/interface.c:1393
-#: src/gnome2-console/interface.c:1728 src/wx-console/wxbrestorepanel.cpp:1864
-msgid "Storage:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:924
-msgid "Messages:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:952
-msgid "Where: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:970 src/wx-console/wxbrestorepanel.cpp:1866
-msgid "When:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:988 src/wx-console/wxbrestorepanel.cpp:1847
-msgid "Bootstrap:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1108
-msgid "_New"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1177
-msgid "Restore File Selection"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1226
-msgid "Current dir:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1252
-msgid "Files Selected: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:1373 src/gnome2-console/interface.c:1383
-msgid "Label a Volume"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1444
-msgid "Volume Name:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1459
-msgid "Slot:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1585
-msgid "Restore Files Dialog"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1599
-msgid "Restore Files"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1756
-msgid "Before:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1799
-msgid "Select Files"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1883
-msgid "Progress"
-msgstr ""
-
-#: src/gnome2-console/restore.c:121
-msgid "Mark"
-msgstr ""
-
-#: src/gnome2-console/restore.c:121
-msgid "File"
-msgstr ""
-
-#: src/gnome2-console/restore.c:121
-msgid "Mode"
-msgstr ""
-
-#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:288
-msgid "User"
-msgstr ""
-
-#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:292
-msgid "Group"
-msgstr ""
-
-#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:276
-msgid "Size"
-msgstr ""
-
-#: src/gnome2-console/restore.c:121 src/wx-console/wxbrestorepanel.cpp:280
-msgid "Date"
-msgstr ""
-
-#: src/gnome2-console/support.c:41
-#, c-format
-msgid "Widget not found: %s"
-msgstr ""
-
-#: src/gnome2-console/support.c:60 src/gnome2-console/support.c:85
-#, c-format
-msgid "Couldn't find pixmap file: %s"
-msgstr ""
-
-#: src/gnome2-console/support.c:92
-#, c-format
-msgid "Failed to load pixbuf file: %s: %s\n"
-msgstr ""
-
 #: src/lib/tls.c:105
 #, c-format
 msgid ""
@@ -7270,20 +6848,6 @@ msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
 msgstr ""
 
-#: src/lib/lex.c:79 src/wx-console/console_thread.cpp:186
-#, c-format
-msgid "Problem probably begins at line %d.\n"
-msgstr ""
-
-#: src/lib/lex.c:84 src/wx-console/console_thread.cpp:191
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-
 #: src/lib/lex.c:88
 #, c-format
 msgid "Config error: %s\n"
@@ -13196,458 +12760,83 @@ msgstr ""
 msgid "Skip: File system change prohibited. Directory not entered. %s\n"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:78
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/baconfig.h:55
+#, c-format
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:127
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/baconfig.h:62
+msgid "*None*"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:172
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors "
-"for help.\n"
+#: src/filed/win32/winmain.cpp:228 src/filed/win32/winmain.cpp:236
+msgid "Bacula Usage"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:102
-#, c-format
-msgid ""
-"Copyright (C) 2000-2004 Kern Sibbald and John Walker\n"
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -dnn          set debug level to nn\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
+#: src/filed/win32/winmain.cpp:233
+msgid "Bad Command Line Options"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:251
-#, c-format
-msgid ""
-"Error: %d Monitor resource defined in %s. You must define one and only one "
-"Monitor resource.\n"
+#: src/filed/win32/winmain.cpp:326
+msgid "Another instance of Bacula is already running"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:282
-#, c-format
-msgid ""
-"No Client, Storage nor Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
+#: src/filed/win32/winservice.cpp:131 src/filed/win32/winservice.cpp:145
+msgid "No existing instance of Bacula could be contacted"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:304
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
+#: src/filed/win32/winservice.cpp:218
+msgid "KERNEL32.DLL not found: Bacula service not started"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:319
-msgid "Open status window..."
+#: src/filed/win32/winservice.cpp:228
+msgid "Registry service not found: Bacula service not started"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:325
-msgid "Exit"
+#: src/filed/win32/winservice.cpp:230
+msgid "Registry service not found"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:337
-msgid "Bacula tray monitor"
+#: src/filed/win32/winservice.cpp:260
+msgid "StartServiceCtrlDispatcher failed."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:362
-msgid " (DIR)"
+#: src/filed/win32/winservice.cpp:278
+msgid "RegisterServiceCtlHandler failed"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:366
-msgid " (FD)"
+#: src/filed/win32/winservice.cpp:279
+msgid "Contact Register Service Handler failure"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:370
-msgid " (SD)"
+#: src/filed/win32/winservice.cpp:295
+msgid "ReportStatus STOPPED failed 1"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:383
-msgid "Unknown status."
+#: src/filed/win32/winservice.cpp:318
+msgid "Report Service failure"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:424
-msgid "Refresh interval in seconds: "
+#: src/filed/win32/winservice.cpp:355
+msgid "Unable to install Bacula service"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:432
-msgid "Refresh now"
+#: src/filed/win32/winservice.cpp:373
+msgid "Service command length too long"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:436
-msgid "About"
+#: src/filed/win32/winservice.cpp:374
+msgid "Service command length too long. Service not registered."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:440
-msgid "Close"
+#: src/filed/win32/winservice.cpp:389
+msgid "Cannot write System Registry"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:460
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:463
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:466
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:502 src/tray-monitor/tray-monitor.c:512
-msgid "Bacula Tray Monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:503 src/tray-monitor/tray-monitor.c:513
-msgid ""
-"Copyright (C) 2004-2005 Kern Sibbald\n"
-"Written by Nicolas Boichat\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:505 src/tray-monitor/tray-monitor.c:515
-msgid "Version:"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:583
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:656
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:668
-#, c-format
-msgid " (%d errors)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:671
-#, c-format
-msgid " (%d error)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:708
-msgid "No current job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:711
-msgid "No last job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:719
-msgid "Job status: Created"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:724
-msgid "Job status: Running"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:728
-msgid "Job status: Blocked"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:733
-msgid "Job status: Terminated"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:738
-msgid "Job status: Terminated in error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:744
-msgid "Job status: Error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:748
-msgid "Job status: Fatal error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:753
-msgid "Job status: Verify differences"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:758
-msgid "Job status: Canceled"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:763
-msgid "Job status: Waiting on File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:768
-msgid "Job status: Waiting on the Storage daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:773
-msgid "Job status: Waiting for new media"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:778
-msgid "Job status: Waiting for Mount"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:783
-msgid "Job status: Waiting for storage resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:788
-msgid "Job status: Waiting for job resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:793
-msgid "Job status: Waiting for Client resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:798
-msgid "Job status: Waiting for maximum jobs"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:803
-msgid "Job status: Waiting for start time"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:808
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:813
-#, c-format
-msgid "Unknown job status %c."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:814
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:821
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:859
-#, c-format
-msgid "Connecting to Director %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:865
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:866
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:872
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:873
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:878 src/tray-monitor/tray-monitor.c:916
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:884
-msgid "Cannot connect to daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:885
-msgid "Cannot connect to daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:897
-#, c-format
-msgid "Authentication error : %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:904
-msgid "Opened connection with Director daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:905
-msgid "Opened connection with Director daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:908
-msgid "Opened connection with File daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:909
-msgid "Opened connection with File daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:912
-msgid "Opened connection with Storage daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:913
-msgid "Opened connection with Storage daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:948
-msgid "<< Error: BNET_PROMPT signal received. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:953 src/wx-console/console_thread.cpp:465
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:957
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:962
-msgid "<ERROR>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:966
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:972
-msgid "<STOP>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:976
-msgid "Error : Connection closed."
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:161
-#, c-format
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:167
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:171
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:175
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:129
-msgid "Bad response to Hello command: ERR="
-msgstr ""
-
-#: src/baconfig.h:55
-#, c-format
-msgid "Failed ASSERT: %s\n"
-msgstr ""
-
-#: src/baconfig.h:62
-msgid "*None*"
-msgstr ""
-
-#: src/filed/win32/winmain.cpp:228 src/filed/win32/winmain.cpp:236
-msgid "Bacula Usage"
-msgstr ""
-
-#: src/filed/win32/winmain.cpp:233
-msgid "Bad Command Line Options"
-msgstr ""
-
-#: src/filed/win32/winmain.cpp:326
-msgid "Another instance of Bacula is already running"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:131 src/filed/win32/winservice.cpp:145
-msgid "No existing instance of Bacula could be contacted"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:218
-msgid "KERNEL32.DLL not found: Bacula service not started"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:228
-msgid "Registry service not found: Bacula service not started"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:230
-msgid "Registry service not found"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:260
-msgid "StartServiceCtrlDispatcher failed."
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:278
-msgid "RegisterServiceCtlHandler failed"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:279
-msgid "Contact Register Service Handler failure"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:295
-msgid "ReportStatus STOPPED failed 1"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:318
-msgid "Report Service failure"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:355
-msgid "Unable to install Bacula service"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:373
-msgid "Service command length too long"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:374
-msgid "Service command length too long. Service not registered."
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:389
-msgid "Cannot write System Registry"
-msgstr ""
-
-#: src/filed/win32/winservice.cpp:390
-msgid ""
-"The System Registry could not be updated - the Bacula service was not "
-"installed"
+#: src/filed/win32/winservice.cpp:390
+msgid ""
+"The System Registry could not be updated - the Bacula service was not "
+"installed"
 msgstr ""
 
 #: src/filed/win32/winservice.cpp:397
@@ -13752,714 +12941,3 @@ msgstr ""
 #: src/filed/win32/winservice.cpp:740
 msgid "Could not lock database"
 msgstr ""
-
-#: src/wx-console/console_thread.cpp:101
-#, 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 ""
-
-#: src/wx-console/console_thread.cpp:108
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:127
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:148
-msgid "Error while initializing windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:163
-msgid "Error while cleaning up windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:201
-msgid "Error while initializing library."
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:227
-msgid "Cryptographic library initialization failed.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:231
-msgid "Please correct configuration file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:273
-msgid "Error : Library not initialized\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:284
-msgid "Error : No configuration file loaded\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:294
-msgid "Connecting...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:310
-msgid "Error : No director defined in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:322
-msgid "Multiple directors found in your config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:331
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:403
-msgid "Failed to connect to the director\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:413
-msgid "Connected\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:470
-msgid "<< Unexpected signal received : "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:490
-msgid "Connection terminated\n"
-msgstr ""
-
-#: src/wx-console/main.cpp:101
-msgid "Bacula wx-console"
-msgstr ""
-
-#: src/wx-console/main.cpp:106 src/wx-console/wxbmainframe.cpp:248
-#, c-format
-msgid "Welcome to bacula wx-console %s (%s)!\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:44
-msgid "Config file editor"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:54
-msgid "# Bacula wx-console Configuration File\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:90
-msgid "Save and close"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:91
-msgid "Close without saving"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:118
-#, c-format
-msgid "Unable to write to %s\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:119
-msgid "Error while saving"
-msgstr ""
-
-#: src/wx-console/wxbconfigpanel.cpp:184
-msgid "Apply"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:61
-#: src/wx-console/wxbhistorytextctrl.cpp:132
-#: src/wx-console/wxbmainframe.cpp:272
-msgid "Type your command below:"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:96
-msgid "Unknown command."
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:105
-msgid "Possible completions: "
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:227
-msgid "&About...\tF1"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:227
-msgid "Show about dialog"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:229 src/wx-console/wxbmainframe.cpp:598
-msgid "Connect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:230
-msgid "Disconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:230
-msgid "Disconnect of the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:232
-msgid "Change of configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:232
-msgid "Change your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:233
-msgid "Edit your configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:235
-msgid "E&xit\tAlt-X"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:235
-msgid "Quit this program"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:239
-msgid "&File"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:240
-msgid "&Help"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:257
-msgid "Console"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:264
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:268
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build wx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:279
-msgid "Send"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:356 src/wx-console/wxbmainframe.cpp:368
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:357 src/wx-console/wxbmainframe.cpp:369
-msgid "Usage: wx-console [-c configfile] [-w tmp]\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:397
-#, c-format
-msgid ""
-"It seems that it is the first time you run wx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:399
-msgid "First run"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:416
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:418
-msgid "Unable to read configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:430
-msgid "Please choose a configuration file to use"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:443
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:444
-msgid "Configuration file read successfully"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:454
-#, c-format
-msgid "Using this configuration file: %s\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:459
-msgid "Connecting to the director..."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:474
-msgid "Failed to unregister a data parser !"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:482
-msgid "Quitting.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:497
-msgid ""
-"Welcome to Bacula wx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"(C) 2005 Kern Sibbald\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:499
-msgid "About Bacula wx-console"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:505
-msgid "Please choose your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:509
-msgid "Use this configuration file as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:510
-msgid "Configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:581
-msgid "Console thread terminated."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:589
-msgid "Connection to the director lost. Quit program?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:590
-msgid "Connection lost"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:606
-msgid "Connected to the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:629
-msgid "Reconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:630
-msgid "Reconnect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:644
-msgid "Disconnected of the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:663 src/wx-console/wxbrestorepanel.cpp:689
-msgid "Unexpected question has been received.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:686 src/wx-console/wxbmainframe.cpp:703
-msgid "wx-console: unexpected director's question."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:216
-#: src/wx-console/wxbrestorepanel.cpp:1895
-#: src/wx-console/wxbrestorepanel.cpp:1924
-msgid "Enter restore mode"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:219
-msgid "Cancel restore"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:245
-#: src/wx-console/wxbrestorepanel.cpp:299
-msgid "Add"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:247
-#: src/wx-console/wxbrestorepanel.cpp:301
-msgid "Remove"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:249
-#: src/wx-console/wxbrestorepanel.cpp:303
-msgid "Refresh"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:268
-msgid "M"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:272
-msgid "Filename"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:284
-msgid "Perm."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:317
-#: src/wx-console/wxbrestorepanel.cpp:330
-#: src/wx-console/wxbrestorepanel.cpp:482
-#: src/wx-console/wxbrestorepanel.cpp:492
-#: src/wx-console/wxbrestorepanel.cpp:495
-#: src/wx-console/wxbrestorepanel.cpp:1760
-#: src/wx-console/wxbrestorepanel.cpp:1846
-msgid "Job Name"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:319
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:434
-#: src/wx-console/wxbrestorepanel.cpp:435
-#: src/wx-console/wxbrestorepanel.cpp:445
-#: src/wx-console/wxbrestorepanel.cpp:446
-#: src/wx-console/wxbrestorepanel.cpp:1118
-#: src/wx-console/wxbrestorepanel.cpp:1191
-#: src/wx-console/wxbrestorepanel.cpp:1798
-#: src/wx-console/wxbrestorepanel.cpp:1800
-#: src/wx-console/wxbrestorepanel.cpp:1861
-msgid "Fileset"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:322
-#: src/wx-console/wxbrestorepanel.cpp:1185
-#: src/wx-console/wxbrestorepanel.cpp:1201
-#: src/wx-console/wxbrestorepanel.cpp:1203
-#: src/wx-console/wxbrestorepanel.cpp:1211
-#: src/wx-console/wxbrestorepanel.cpp:1213
-#: src/wx-console/wxbrestorepanel.cpp:1232
-#: src/wx-console/wxbrestorepanel.cpp:1239
-#: src/wx-console/wxbrestorepanel.cpp:1788
-#: src/wx-console/wxbrestorepanel.cpp:1799
-#: src/wx-console/wxbrestorepanel.cpp:1919
-msgid "Before"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:324
-msgid "Please configure parameters concerning files to restore :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:333
-#: src/wx-console/wxbrestorepanel.cpp:1854
-msgid "always"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:333
-msgid "if newer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:333
-msgid "if older"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:333
-#: src/wx-console/wxbrestorepanel.cpp:1857
-msgid "never"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:341
-msgid "Please configure parameters concerning files restoration :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:406
-msgid "Getting parameters list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:414
-msgid "Error : no clients returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:438
-msgid "Error : no filesets returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:462
-msgid "Error : no storage returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:485
-#: src/wx-console/wxbrestorepanel.cpp:509
-msgid "Error : no jobs returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:495
-msgid "RestoreFiles"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:530
-msgid "Please configure your restore parameters."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:541
-msgid "Building restore tree..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:584
-msgid "Error while starting restore: "
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:674
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:711
-#: src/wx-console/wxbrestorepanel.cpp:733
-msgid "wx-console: unexpected restore question."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:744
-msgid " files selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:749
-msgid " file selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:756
-#, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:766
-msgid "Restore failed : no file selected.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:767
-msgid "Restore failed : no file selected."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:777
-msgid "Restoring, please wait..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:790
-msgid "Job started. JobId="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:792
-msgid "Restore started, jobid="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:796
-msgid "Job failed."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:797
-msgid "Restore failed, please look at messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:798
-msgid "Restore failed, please look at messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:804
-#: src/wx-console/wxbrestorepanel.cpp:805
-msgid "Failed to retrieve jobid.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:831
-msgid ""
-"Restore is scheduled in more than two minutes, wx-console will not wait for "
-"its completion.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:832
-msgid ""
-"Restore is scheduled in more than two minutes, wx-console will not wait for "
-"its completion."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:858
-msgid "Restore job created, but not yet running."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:863
-#, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:867
-msgid "Restore job terminated successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:868
-msgid "Restore job terminated successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:873
-msgid "Restore job terminated in error, see messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:874
-msgid "Restore job terminated in error, see messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:879
-msgid "Restore job reported a non-fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:883
-msgid "Restore job reported a fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:888
-msgid "Restore job cancelled by user."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job cancelled by user.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:894
-msgid "Restore job is waiting on File daemon."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:898
-msgid "Restore job is waiting for new media."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:902
-msgid "Restore job is waiting for storage resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:906
-msgid "Restore job is waiting for job resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:910
-msgid "Restore job is waiting for Client resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:914
-msgid "Restore job is waiting for maximum jobs."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:918
-msgid "Restore job is waiting for start time."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:922
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:971
-msgid ""
-"The restore job has not been started within one minute, wx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:972
-msgid ""
-"The restore job has not been started within one minute, wx-console will not "
-"wait for its completion anymore."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:982
-msgid "Restore done successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:983
-msgid "Restore done successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1054
-msgid "Applying restore configuration changes..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1105
-msgid "Failed to find the selected client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1120
-msgid "Failed to find the selected fileset."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1135
-msgid "Failed to find the selected storage."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1152
-#: src/wx-console/wxbrestorepanel.cpp:1835
-msgid "Run Restore job"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1168
-msgid "Restore configuration changes were applied."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1177
-msgid "Restore cancelled.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1178
-msgid "Restore cancelled."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1200
-msgid "No results to list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1202
-msgid "No backup found for this client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1209
-msgid "ERROR"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1210
-msgid "Query failed"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1212
-msgid "Cannot get previous backups list, see console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1845
-msgid "JobName:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1849
-msgid "Where:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1852
-msgid "Replace:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1855
-msgid "ifnewer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1856
-msgid "ifolder"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1860
-msgid "FileSet:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1976
-msgid "Restoring..."
-msgstr ""
diff --git a/po/fi.po b/po/fi.po
index 7997d35..7d7589d 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,5 +1,5 @@
 # Finnish translations for branch package.
-# Copyright (C) 2007 Kern Sibbald
+# Copyright (C) 2007-2014 Kern Sibbald
 # This file is distributed under the same license as the branch package.
 # Kern Sibbald <kern at sibbald.com>, 2007.
 #
@@ -609,7 +609,6 @@ msgid ""
 msgstr ""
 
 #: src/dird/authenticate.c:80 src/dird/authenticate.c:81
-#: src/tray-monitor/authenticate.c:132
 #, c-format
 msgid "Error sending Hello to Storage daemon. ERR=%s\n"
 msgstr ""
@@ -632,7 +631,7 @@ msgstr ""
 
 #: src/dird/authenticate.c:120 src/console/authenticate.c:114
 #: src/filed/authenticate.c:251 src/stored/authenticate.c:131
-#: src/stored/authenticate.c:232 src/wx-console/authenticate.c:127
+#: src/stored/authenticate.c:232
 msgid ""
 "Authorization problem: Remote server did not advertise required TLS "
 "support.\n"
@@ -641,7 +640,6 @@ msgstr ""
 #: src/dird/authenticate.c:127 src/console/authenticate.c:121
 #: src/filed/authenticate.c:147 src/filed/authenticate.c:259
 #: src/stored/authenticate.c:139 src/stored/authenticate.c:240
-#: src/wx-console/authenticate.c:133
 msgid "Authorization problem: Remote server requires TLS.\n"
 msgstr ""
 
@@ -655,7 +653,7 @@ msgstr ""
 msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/authenticate.c:152 src/tray-monitor/authenticate.c:152
+#: src/dird/authenticate.c:152
 msgid "Storage daemon rejected Hello command\n"
 msgstr ""
 
@@ -700,7 +698,7 @@ msgstr ""
 msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
 msgstr ""
 
-#: src/dird/authenticate.c:250 src/tray-monitor/authenticate.c:191
+#: src/dird/authenticate.c:250
 #, c-format
 msgid "Bad response from File daemon to Hello command: ERR=%s\n"
 msgstr ""
@@ -710,7 +708,7 @@ msgstr ""
 msgid "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/authenticate.c:259 src/tray-monitor/authenticate.c:198
+#: src/dird/authenticate.c:259
 msgid "File daemon rejected Hello command\n"
 msgstr ""
 
@@ -1037,13 +1035,13 @@ msgid ""
 msgstr ""
 
 #: src/dird/dird.c:224 src/console/console.c:426 src/filed/filed.c:182
-#: src/gnome2-console/console.c:286 src/stored/stored.c:210
+#: src/stored/stored.c:210
 msgid "Cryptography library initialization failed.\n"
 msgstr ""
 
 #: src/dird/dird.c:228 src/dird/dird.c:234 src/dird/dird.c:474
 #: src/dird/dird.c:477 src/console/console.c:430 src/filed/filed.c:187
-#: src/gnome2-console/console.c:290 src/stored/stored.c:214
+#: src/stored/stored.c:214
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr ""
@@ -1080,9 +1078,7 @@ msgstr ""
 #: src/dird/dird.c:563 src/dird/dird.c:764 src/dird/dird.c:816
 #: src/dird/dird.c:920 src/console/console.c:657 src/console/console.c:686
 #: src/filed/filed.c:288 src/filed/filed.c:446
-#: src/gnome2-console/console.c:153 src/gnome2-console/console.c:182
-#: src/stored/stored.c:332 src/wx-console/console_thread.cpp:114
-#: src/wx-console/console_thread.cpp:140
+#: src/stored/stored.c:332
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
@@ -1185,7 +1181,7 @@ msgstr ""
 msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:508 src/tray-monitor/tray_conf.c:168
+#: src/dird/dird_conf.c:508
 #, c-format
 msgid "No %s resource defined\n"
 msgstr ""
@@ -1459,26 +1455,24 @@ msgstr ""
 msgid "      opcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:893 src/tray-monitor/tray_conf.c:199
+#: src/dird/dird_conf.c:893
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1199 src/tray-monitor/tray_conf.c:257
+#: src/dird/dird_conf.c:1199
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
 #: src/dird/dird_conf.c:1231 src/dird/dird_conf.c:1246
 #: src/dird/dird_conf.c:1842 src/console/console_conf.c:257
-#: src/filed/filed_conf.c:347 src/gnome2-console/console_conf.c:258
-#: src/tray-monitor/tray_conf.c:288 src/wx-console/console_conf.c:265
+#: src/filed/filed_conf.c:347
 #, c-format
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
 #: src/dird/dird_conf.c:1237 src/lib/parse_conf.c:234
-#: src/tray-monitor/tray_conf.c:294
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr ""
@@ -1525,7 +1519,6 @@ msgid "Cannot find Schedule resource %s\n"
 msgstr ""
 
 #: src/dird/dird_conf.c:1383 src/dird/dird_conf.c:1443
-#: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #, c-format
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
@@ -1536,8 +1529,7 @@ msgid "Name item is required in %s resource, but not found.\n"
 msgstr ""
 
 #: src/dird/dird_conf.c:1466 src/console/console_conf.c:320
-#: src/filed/filed_conf.c:432 src/gnome2-console/console_conf.c:327
-#: src/tray-monitor/tray_conf.c:372 src/wx-console/console_conf.c:328
+#: src/filed/filed_conf.c:432
 #, c-format
 msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
@@ -1634,7 +1626,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:94 src/tray-monitor/tray-monitor.c:914
+#: src/dird/fd_cmds.c:94
 msgid "File daemon"
 msgstr ""
 
@@ -2229,7 +2221,6 @@ msgid "Storage from Pool's NextPool resource"
 msgstr ""
 
 #: src/dird/msgchan.c:106 src/filed/job.c:1301
-#: src/tray-monitor/tray-monitor.c:921
 msgid "Storage daemon"
 msgstr ""
 
@@ -2964,33 +2955,12 @@ msgid "Director"
 msgstr ""
 
 #: src/dird/ua_cmds.c:998 src/dird/ua_dotcmds.c:284 src/dird/ua_run.c:265
-#: src/dird/ua_select.c:168 src/wx-console/wxbrestorepanel.cpp:339
-#: src/wx-console/wxbrestorepanel.cpp:355
-#: src/wx-console/wxbrestorepanel.cpp:479
-#: src/wx-console/wxbrestorepanel.cpp:480
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1154
-#: src/wx-console/wxbrestorepanel.cpp:1818
-#: src/wx-console/wxbrestorepanel.cpp:1889
+#: src/dird/ua_select.c:168
 msgid "Storage"
 msgstr ""
 
 #: src/dird/ua_cmds.c:999 src/dird/ua_dotcmds.c:285 src/dird/ua_run.c:271
 #: src/dird/ua_select.c:311 src/dird/ua_select.c:420
-#: src/wx-console/wxbrestorepanel.cpp:336
-#: src/wx-console/wxbrestorepanel.cpp:354
-#: src/wx-console/wxbrestorepanel.cpp:431
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:690
-#: src/wx-console/wxbrestorepanel.cpp:1124
-#: src/wx-console/wxbrestorepanel.cpp:1211
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1813
-#: src/wx-console/wxbrestorepanel.cpp:1887
-#: src/wx-console/wxbrestorepanel.cpp:1943
 msgid "Client"
 msgstr ""
 
@@ -3704,7 +3674,7 @@ msgid "Enter a list of directories to restore for found JobIds"
 msgstr ""
 
 #: src/dird/ua_restore.c:418 src/dird/ua_status.c:760 src/filed/status.c:256
-#: src/stored/status.c:521 src/wx-console/wxbconfigpanel.cpp:212
+#: src/stored/status.c:521
 msgid "Cancel"
 msgstr ""
 
@@ -3998,23 +3968,16 @@ msgstr ""
 msgid "Restore Client"
 msgstr ""
 
-#: src/dird/ua_run.c:273 src/wx-console/wxbrestorepanel.cpp:356
-#: src/wx-console/wxbrestorepanel.cpp:844
-#: src/wx-console/wxbrestorepanel.cpp:1891
+#: src/dird/ua_run.c:273
 msgid "When"
 msgstr ""
 
-#: src/dird/ua_run.c:274 src/wx-console/wxbrestorepanel.cpp:357
-#: src/wx-console/wxbrestorepanel.cpp:1117
-#: src/wx-console/wxbrestorepanel.cpp:1894
+#: src/dird/ua_run.c:274
 msgid "Priority"
 msgstr ""
 
 #: src/dird/ua_run.c:278 src/dird/ua_select.c:506 src/dird/ua_select.c:596
-#: src/dird/ua_update.c:529 src/wx-console/wxbrestorepanel.cpp:338
-#: src/wx-console/wxbrestorepanel.cpp:527
-#: src/wx-console/wxbrestorepanel.cpp:537
-#: src/wx-console/wxbrestorepanel.cpp:1807
+#: src/dird/ua_update.c:529
 msgid "Pool"
 msgstr ""
 
@@ -4022,14 +3985,11 @@ msgstr ""
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:283 src/wx-console/wxbrestorepanel.cpp:349
-#: src/wx-console/wxbrestorepanel.cpp:1872
+#: src/dird/ua_run.c:283
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:284 src/wx-console/wxbrestorepanel.cpp:350
-#: src/wx-console/wxbrestorepanel.cpp:1093
-#: src/wx-console/wxbrestorepanel.cpp:1874
+#: src/dird/ua_run.c:284
 msgid "Where"
 msgstr ""
 
@@ -4037,13 +3997,7 @@ msgstr ""
 msgid "File Relocation"
 msgstr ""
 
-#: src/dird/ua_run.c:286 src/wx-console/wxbrestorepanel.cpp:352
-#: src/wx-console/wxbrestorepanel.cpp:1101
-#: src/wx-console/wxbrestorepanel.cpp:1878
-#: src/wx-console/wxbrestorepanel.cpp:1879
-#: src/wx-console/wxbrestorepanel.cpp:1880
-#: src/wx-console/wxbrestorepanel.cpp:1881
-#: src/wx-console/wxbrestorepanel.cpp:1882
+#: src/dird/ua_run.c:286
 msgid "Replace"
 msgstr ""
 
@@ -5020,7 +4974,6 @@ msgstr ""
 
 #: src/dird/ua_status.c:763 src/filed/status.c:259 src/lib/util.c:188
 #: src/lib/util.c:255 src/stored/btape.c:1189 src/stored/status.c:524
-#: src/wx-console/wxbconfigpanel.cpp:201
 msgid "OK"
 msgstr ""
 
@@ -5789,22 +5742,20 @@ msgstr ""
 msgid "File: %s\n"
 msgstr ""
 
-#: src/console/authenticate.c:131 src/wx-console/authenticate.c:142
+#: src/console/authenticate.c:131
 msgid "TLS negotiation failed\n"
 msgstr ""
 
-#: src/console/authenticate.c:143 src/gnome2-console/authenticate.c:98
-#: src/tray-monitor/authenticate.c:97
+#: src/console/authenticate.c:143
 #, c-format
 msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/console/authenticate.c:150 src/gnome2-console/authenticate.c:108
-#: src/tray-monitor/authenticate.c:104 src/wx-console/authenticate.c:157
+#: src/console/authenticate.c:150
 msgid "Director rejected Hello command\n"
 msgstr ""
 
-#: src/console/authenticate.c:160 src/wx-console/authenticate.c:167
+#: src/console/authenticate.c:160
 msgid ""
 "Director authorization problem.\n"
 "Most likely the passwords do not agree.\n"
@@ -5895,19 +5846,17 @@ msgstr ""
 msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/console/console.c:521 src/tray-monitor/tray-monitor.c:905
+#: src/console/console.c:521
 #, c-format
 msgid "Connecting to Director %s:%d\n"
 msgstr ""
 
-#: src/console/console.c:538 src/gnome2-console/console.c:526
-#: src/wx-console/console_thread.cpp:391
+#: src/console/console.c:538
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
-#: src/console/console.c:558 src/gnome2-console/console.c:548
-#: src/wx-console/console_thread.cpp:412
+#: src/console/console.c:558
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
@@ -5916,21 +5865,21 @@ msgstr ""
 msgid "Enter a period to cancel a command.\n"
 msgstr ""
 
-#: src/console/console.c:664 src/gnome2-console/console.c:160
+#: src/console/console.c:664
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/console/console.c:673 src/gnome2-console/console.c:169
+#: src/console/console.c:673
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/console/console.c:693 src/gnome2-console/console.c:189
+#: src/console/console.c:693
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -5973,19 +5922,17 @@ msgstr ""
 msgid "Autochanger error: ERR=%s\n"
 msgstr ""
 
-#: src/console/console_conf.c:138 src/gnome2-console/console_conf.c:134
-#: src/wx-console/console_conf.c:147
+#: src/console/console_conf.c:138
 #, c-format
 msgid "No record for %d %s\n"
 msgstr ""
 
-#: src/console/console_conf.c:147 src/wx-console/console_conf.c:156
+#: src/console/console_conf.c:147
 #, c-format
 msgid "Console: name=%s rcfile=%s histfile=%s\n"
 msgstr ""
 
-#: src/console/console_conf.c:151 src/gnome2-console/console_conf.c:143
-#: src/wx-console/console_conf.c:160
+#: src/console/console_conf.c:151
 #, c-format
 msgid "Director: name=%s address=%s DIRport=%d\n"
 msgstr ""
@@ -5993,12 +5940,8 @@ msgstr ""
 #: src/console/console_conf.c:155 src/console/console_conf.c:231
 #: src/console/console_conf.c:276 src/console/console_conf.c:303
 #: src/filed/filed_conf.c:319 src/filed/filed_conf.c:384
-#: src/filed/filed_conf.c:414 src/gnome2-console/console_conf.c:154
-#: src/gnome2-console/console_conf.c:232 src/gnome2-console/console_conf.c:280
-#: src/gnome2-console/console_conf.c:310 src/stored/stored_conf.c:528
+#: src/filed/filed_conf.c:414 src/stored/stored_conf.c:528
 #: src/stored/stored_conf.c:616 src/stored/stored_conf.c:651
-#: src/wx-console/console_conf.c:164 src/wx-console/console_conf.c:239
-#: src/wx-console/console_conf.c:284 src/wx-console/console_conf.c:311
 #, c-format
 msgid "Unknown resource type %d\n"
 msgstr ""
@@ -7289,345 +7232,6 @@ msgstr ""
 msgid "Cannot return to saved working directory: %s\n"
 msgstr ""
 
-#: src/gnome2-console/authenticate.c:87
-#, c-format
-msgid "%s: Director authorization problem.\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:88
-msgid "Director authorization problem.\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:90
-msgid ""
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:100
-#, c-format
-msgid "%s: Bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:102
-msgid "The Director is probably not running.\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:102
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: bgnome-console [-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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:234
-#, c-format
-msgid "Pthread cond init error = %s\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:379
-msgid " Not Connected"
-msgstr ""
-
-#: src/gnome2-console/console.c:500
-#, c-format
-msgid " Connecting to Director %s:%d"
-msgstr ""
-
-#: src/gnome2-console/console.c:501
-#, c-format
-msgid ""
-"Connecting to Director %s:%d\n"
-"\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:516 src/wx-console/console_thread.cpp:381
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr ""
-
-#: src/gnome2-console/console.c:538 src/wx-console/console_thread.cpp:402
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr ""
-
-#: src/gnome2-console/console.c:557 src/tray-monitor/tray-monitor.c:907
-#: src/wx-console/console_thread.cpp:420
-msgid "Director daemon"
-msgstr ""
-
-#: src/gnome2-console/console.c:569
-msgid " Initializing ..."
-msgstr ""
-
-#: src/gnome2-console/console.c:605
-msgid " Connected"
-msgstr ""
-
-#: src/gnome2-console/console.c:613
-msgid " Processing command ..."
-msgstr ""
-
-#: src/gnome2-console/console.c:648
-msgid " At prompt waiting for input ..."
-msgstr ""
-
-#: src/gnome2-console/console.c:768
-msgid " Ready"
-msgstr ""
-
-#: src/gnome2-console/console_conf.c:147
-#, c-format
-msgid "Console: name=%s\n"
-msgstr ""
-
-#: src/gnome2-console/console_conf.c:150 src/tray-monitor/tray_conf.c:195
-#, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr ""
-
-#: src/gnome2-console/interface.c:202
-msgid "Bacula Console"
-msgstr ""
-
-#: src/gnome2-console/interface.c:235 src/wx-console/wxbmainframe.cpp:248
-#: src/wx-console/wxbmainframe.cpp:619
-msgid "Connect"
-msgstr ""
-
-#: src/gnome2-console/interface.c:238
-msgid "Connect to Director"
-msgstr ""
-
-#: src/gnome2-console/interface.c:242
-msgid "Run"
-msgstr ""
-
-#: src/gnome2-console/interface.c:245 src/gnome2-console/interface.c:682
-#: src/gnome2-console/interface.c:696
-msgid "Run a Job"
-msgstr ""
-
-#: src/gnome2-console/interface.c:249
-msgid "Dir Status"
-msgstr ""
-
-#: src/gnome2-console/interface.c:255 src/lib/util.c:293
-#: src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:1974
-msgid "Restore"
-msgstr ""
-
-#: src/gnome2-console/interface.c:261
-msgid "Label"
-msgstr ""
-
-#: src/gnome2-console/interface.c:267
-msgid "Msgs"
-msgstr ""
-
-#: src/gnome2-console/interface.c:270
-msgid "Display Messages"
-msgstr ""
-
-#: src/gnome2-console/interface.c:294
-msgid " Command: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:303
-msgid "Enter Commands Here"
-msgstr ""
-
-#: src/gnome2-console/interface.c:314
-msgid " Status: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:323 src/gnome2-console/interface.c:1709
-msgid "  "
-msgstr ""
-
-#: src/gnome2-console/interface.c:424
-msgid "About Bacula Console"
-msgstr ""
-
-#: src/gnome2-console/interface.c:439
-msgid "Bacula Console\n"
-msgstr ""
-
-#: src/gnome2-console/interface.c:448
-msgid "Copyright (c) 2000 - 2004, Kern Sibbald and John Walker"
-msgstr ""
-
-#: src/gnome2-console/interface.c:453
-msgid "Authors: Kern Sibbald and John Walker"
-msgstr ""
-
-#: src/gnome2-console/interface.c:458
-msgid "The Leading Open Source Backup Solution."
-msgstr ""
-
-#: src/gnome2-console/interface.c:523 src/gnome2-console/interface.c:540
-msgid "Select Director"
-msgstr ""
-
-#: src/gnome2-console/interface.c:570
-msgid "         "
-msgstr ""
-
-#: src/gnome2-console/interface.c:715 src/gnome2-console/interface.c:1631
-msgid "Job:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:736
-msgid "   Type:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:756 src/gnome2-console/interface.c:785
-#: src/gnome2-console/interface.c:1284 src/gnome2-console/interface.c:1680
-msgid " "
-msgstr ""
-
-#: src/gnome2-console/interface.c:765 src/gnome2-console/interface.c:1660
-#: src/wx-console/wxbrestorepanel.cpp:1886
-msgid "Client:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:795 src/gnome2-console/interface.c:1689
-msgid "FileSet: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:820 src/wx-console/wxbrestorepanel.cpp:1893
-msgid "Priority:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:836
-msgid "Level:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:857
-msgid "             "
-msgstr ""
-
-#: src/gnome2-console/interface.c:867 src/gnome2-console/interface.c:1433
-#: src/gnome2-console/interface.c:1718
-msgid "Pool:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:888 src/gnome2-console/interface.c:919
-#: src/gnome2-console/interface.c:949 src/gnome2-console/interface.c:969
-#: src/gnome2-console/interface.c:989 src/gnome2-console/interface.c:1009
-#: src/gnome2-console/interface.c:1014 src/gnome2-console/interface.c:1483
-#: src/gnome2-console/interface.c:1739 src/gnome2-console/interface.c:1769
-#: src/gnome2-console/interface.c:1788 src/gnome2-console/interface.c:1793
-msgid "   "
-msgstr ""
-
-#: src/gnome2-console/interface.c:898 src/gnome2-console/interface.c:1407
-#: src/gnome2-console/interface.c:1748 src/wx-console/wxbrestorepanel.cpp:1888
-msgid "Storage:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:929
-msgid "Messages:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:959
-msgid "Where: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:979 src/wx-console/wxbrestorepanel.cpp:1890
-msgid "When:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:999 src/wx-console/wxbrestorepanel.cpp:1871
-msgid "Bootstrap:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1194
-msgid "Restore File Selection"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1238
-msgid "Current dir:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1265
-msgid "Files Selected: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:1385 src/gnome2-console/interface.c:1396
-msgid "Label a Volume"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1458
-msgid "Volume Name:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1472
-msgid "Slot:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1598
-msgid "Restore Files Dialog"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1613
-msgid "Restore Files"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1778
-msgid "Before:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1824
-msgid "Select Files"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1907
-msgid "Progress"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149
-msgid "Mark"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149
-msgid "File"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149
-msgid "Mode"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149 src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149 src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149 src/wx-console/wxbrestorepanel.cpp:294
-msgid "Size"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149 src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr ""
-
-#: src/gnome2-console/support.c:60 src/gnome2-console/support.c:85
-#, c-format
-msgid "Couldn't find pixmap file: %s"
-msgstr ""
-
 #: src/lib/address_conf.c:63
 #, c-format
 msgid "Only ipv4 and ipv6 are supported (%d)\n"
@@ -8240,20 +7844,6 @@ msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
 msgstr ""
 
-#: src/lib/lex.c:93 src/wx-console/console_thread.cpp:208
-#, c-format
-msgid "Problem probably begins at line %d.\n"
-msgstr ""
-
-#: src/lib/lex.c:98 src/wx-console/console_thread.cpp:213
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-
 #: src/lib/lex.c:102
 #, c-format
 msgid "Config error: %s\n"
@@ -9229,7 +8819,7 @@ msgstr ""
 msgid "Copy"
 msgstr ""
 
-#: src/lib/util.c:305 src/wx-console/wxbmainframe.cpp:276
+#: src/lib/util.c:305
 msgid "Console"
 msgstr ""
 
@@ -14540,460 +14130,78 @@ msgstr ""
 msgid "Skip: File system change prohibited. Directory not entered. %s\n"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:88
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:138
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:145
+#: src/baconfig.h:72
 #, c-format
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:178
-#, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
+#: src/baconfig.h:79
+msgid "*None*"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:184
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/win32/dird/winmain.cpp:193 src/win32/dird/winmain.cpp:200
+#: src/win32/filed/winmain.cpp:224 src/win32/filed/winmain.cpp:231
+#: src/win32/stored/baculasd/winmain.cpp:225
+#: src/win32/stored/baculasd/winmain.cpp:232
+msgid "Bacula Usage"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:113
-#, c-format
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -dnn          set debug level to nn\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
+#: src/win32/dird/winmain.cpp:197 src/win32/filed/winmain.cpp:228
+#: src/win32/stored/baculasd/winmain.cpp:229
+msgid "Bad Command Line Options"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:262
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
+#: src/win32/dird/winservice.cpp:119 src/win32/filed/winservice.cpp:238
+#: src/win32/stored/baculasd/winservice.cpp:169
+msgid "StartServiceCtrlDispatcher failed."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:293
-#, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
+#: src/win32/dird/winservice.cpp:135 src/win32/filed/winservice.cpp:256
+#: src/win32/stored/baculasd/winservice.cpp:185
+msgid "RegisterServiceCtlHandler failed"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:315
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
+#: src/win32/dird/winservice.cpp:136 src/win32/filed/winservice.cpp:257
+#: src/win32/stored/baculasd/winservice.cpp:186
+msgid "Contact Register Service Handler failure"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:330
-msgid "Open status window..."
+#: src/win32/dird/winservice.cpp:152 src/win32/filed/winservice.cpp:273
+#: src/win32/stored/baculasd/winservice.cpp:202
+msgid "ReportStatus STOPPED failed 1"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:336
-msgid "Exit"
+#: src/win32/dird/winservice.cpp:175 src/win32/filed/winservice.cpp:296
+#: src/win32/stored/baculasd/winservice.cpp:225
+msgid "Report Service failure"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:348
-msgid "Bacula tray monitor"
+#: src/win32/dird/winservice.cpp:211
+msgid "Unable to install Bacula Director service"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:373
-msgid " (DIR)"
+#: src/win32/dird/winservice.cpp:219 src/win32/filed/winservice.cpp:340
+#: src/win32/stored/baculasd/winservice.cpp:269
+msgid "Service command length too long"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:377
-msgid " (FD)"
+#: src/win32/dird/winservice.cpp:220 src/win32/filed/winservice.cpp:341
+#: src/win32/stored/baculasd/winservice.cpp:270
+msgid "Service command length too long. Service not registered."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:381
-msgid " (SD)"
+#: src/win32/dird/winservice.cpp:233
+msgid ""
+"The Service Control Manager could not be contacted - the Bacula Director "
+"service was not installed"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:394
-msgid "Unknown status."
+#: src/win32/dird/winservice.cpp:258
+msgid "The Bacula Director service could not be installed"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:464
-msgid "Refresh interval in seconds: "
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:472
-msgid "Refresh now"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:476
-msgid "About"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:480
-msgid "Close"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:500
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:503
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:506
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:543 src/tray-monitor/tray-monitor.c:554
-msgid "Bacula Tray Monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:545 src/tray-monitor/tray-monitor.c:556
-msgid "Written by Nicolas Boichat\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:546 src/tray-monitor/tray-monitor.c:557
-msgid "Version"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:625
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:699
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:711
-#, c-format
-msgid " (%d errors)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:714
-#, c-format
-msgid " (%d error)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:752
-msgid "No current job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:755
-msgid "No last job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:763
-msgid "Job status: Created"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:768
-msgid "Job status: Running"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:772
-msgid "Job status: Blocked"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:777
-msgid "Job status: Terminated"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:782
-msgid "Job status: Terminated in error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:788
-msgid "Job status: Error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:792
-msgid "Job status: Fatal error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:797
-msgid "Job status: Verify differences"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:802
-msgid "Job status: Canceled"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:807
-msgid "Job status: Waiting on File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:812
-msgid "Job status: Waiting on the Storage daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:817
-msgid "Job status: Waiting for new media"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:822
-msgid "Job status: Waiting for Mount"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:827
-msgid "Job status: Waiting for storage resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:832
-msgid "Job status: Waiting for job resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:837
-msgid "Job status: Waiting for Client resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:842
-msgid "Job status: Waiting for maximum jobs"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:847
-msgid "Job status: Waiting for start time"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:852
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:857
-#, c-format
-msgid "Unknown job status %c."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:858
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:865
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:906
-#, c-format
-msgid "Connecting to Director %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:912
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:913
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:919
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:920
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:925 src/tray-monitor/tray-monitor.c:963
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:931
-msgid "Cannot connect to daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:932
-msgid "Cannot connect to daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:944
-#, c-format
-msgid "Authentication error : %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:951
-msgid "Opened connection with Director daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:952
-msgid "Opened connection with Director daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:955
-msgid "Opened connection with File daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:956
-msgid "Opened connection with File daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:959
-msgid "Opened connection with Storage daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:960
-msgid "Opened connection with Storage daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:997
-msgid "<< Error: BNET_PROMPT signal received. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1002 src/wx-console/console_thread.cpp:486
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1006
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1011
-msgid "<ERROR>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1015
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1021
-msgid "<STOP>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1025
-msgid "Error : Connection closed."
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:177
-#, c-format
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:187
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:150
-msgid "Bad response to Hello command: ERR="
-msgstr ""
-
-#: src/baconfig.h:72
-#, c-format
-msgid "Failed ASSERT: %s\n"
-msgstr ""
-
-#: src/baconfig.h:79
-msgid "*None*"
-msgstr ""
-
-#: src/win32/dird/winmain.cpp:193 src/win32/dird/winmain.cpp:200
-#: src/win32/filed/winmain.cpp:224 src/win32/filed/winmain.cpp:231
-#: src/win32/stored/baculasd/winmain.cpp:225
-#: src/win32/stored/baculasd/winmain.cpp:232
-msgid "Bacula Usage"
-msgstr ""
-
-#: src/win32/dird/winmain.cpp:197 src/win32/filed/winmain.cpp:228
-#: src/win32/stored/baculasd/winmain.cpp:229
-msgid "Bad Command Line Options"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:119 src/win32/filed/winservice.cpp:238
-#: src/win32/stored/baculasd/winservice.cpp:169
-msgid "StartServiceCtrlDispatcher failed."
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:135 src/win32/filed/winservice.cpp:256
-#: src/win32/stored/baculasd/winservice.cpp:185
-msgid "RegisterServiceCtlHandler failed"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:136 src/win32/filed/winservice.cpp:257
-#: src/win32/stored/baculasd/winservice.cpp:186
-msgid "Contact Register Service Handler failure"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:152 src/win32/filed/winservice.cpp:273
-#: src/win32/stored/baculasd/winservice.cpp:202
-msgid "ReportStatus STOPPED failed 1"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:175 src/win32/filed/winservice.cpp:296
-#: src/win32/stored/baculasd/winservice.cpp:225
-msgid "Report Service failure"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:211
-msgid "Unable to install Bacula Director service"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:219 src/win32/filed/winservice.cpp:340
-#: src/win32/stored/baculasd/winservice.cpp:269
-msgid "Service command length too long"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:220 src/win32/filed/winservice.cpp:341
-#: src/win32/stored/baculasd/winservice.cpp:270
-msgid "Service command length too long. Service not registered."
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:233
-msgid ""
-"The Service Control Manager could not be contacted - the Bacula Director "
-"service was not installed"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:258
-msgid "The Bacula Director service could not be installed"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:264
-msgid "Provides director services. Bacula -- the network backup solution."
+#: src/win32/dird/winservice.cpp:264
+msgid "Provides director services. Bacula -- the network backup solution."
 msgstr ""
 
 #: src/win32/dird/winservice.cpp:272
@@ -15221,710 +14429,3 @@ msgstr ""
 msgid ""
 "The SCM could not be contacted - the Bacula Storage service was not removed"
 msgstr ""
-
-#: src/wx-console/console_thread.cpp:121
-#, 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 ""
-
-#: src/wx-console/console_thread.cpp:128
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:147
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:169
-msgid "Error while initializing windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:185
-msgid "Error while cleaning up windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:224
-msgid "Error while initializing library."
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:248
-msgid "Cryptographic library initialization failed.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:252
-msgid "Please correct configuration file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:294
-msgid "Error : Library not initialized\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:305
-msgid "Error : No configuration file loaded\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:315
-msgid "Connecting...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:331
-msgid "Error : No director defined in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:343
-msgid "Multiple directors found in your config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:352
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:424
-msgid "Failed to connect to the director\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:434
-msgid "Connected\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:491
-msgid "<< Unexpected signal received : "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:511
-msgid "Connection terminated\n"
-msgstr ""
-
-#: src/wx-console/main.cpp:119
-msgid "Bacula bwx-console"
-msgstr ""
-
-#: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
-#, c-format
-msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:65
-msgid "Config file editor"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:75
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:112
-msgid "Close without saving"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-#, c-format
-msgid "Unable to write to %s\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:140
-msgid "Error while saving"
-msgstr ""
-
-#: src/wx-console/wxbconfigpanel.cpp:205
-msgid "Apply"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-#: src/wx-console/wxbmainframe.cpp:291
-msgid "Type your command below:"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:117
-msgid "Unknown command."
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:126
-msgid "Possible completions: "
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
-msgid "Connect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect of the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change of configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:252
-msgid "Edit your configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:258
-msgid "&File"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:283
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:419
-msgid "First run"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:438
-msgid "Unable to read configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:450
-msgid "Please choose a configuration file to use"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:463
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:464
-msgid "Configuration file read successfully"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:474
-#, c-format
-msgid "Using this configuration file: %s\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:479
-msgid "Connecting to the director..."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:521
-msgid "About Bacula bwx-console"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:527
-msgid "Please choose your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:531
-msgid "Use this configuration file as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:532
-msgid "Configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:603
-msgid "Console thread terminated."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:611
-msgid "Connection to the director lost. Quit program?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:612
-msgid "Connection lost"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:628
-msgid "Connected to the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:651
-msgid "Reconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:652
-msgid "Reconnect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:666
-msgid "Disconnected of the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:685 src/wx-console/wxbrestorepanel.cpp:710
-msgid "Unexpected question has been received.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:234
-#: src/wx-console/wxbrestorepanel.cpp:1920
-#: src/wx-console/wxbrestorepanel.cpp:1949
-msgid "Enter restore mode"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:237
-msgid "Cancel restore"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
-msgid "Remove"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
-msgid "Refresh"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:290
-msgid "Filename"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1784
-#: src/wx-console/wxbrestorepanel.cpp:1870
-msgid "Job Name"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1139
-#: src/wx-console/wxbrestorepanel.cpp:1212
-#: src/wx-console/wxbrestorepanel.cpp:1822
-#: src/wx-console/wxbrestorepanel.cpp:1824
-#: src/wx-console/wxbrestorepanel.cpp:1885
-msgid "Fileset"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1206
-#: src/wx-console/wxbrestorepanel.cpp:1222
-#: src/wx-console/wxbrestorepanel.cpp:1224
-#: src/wx-console/wxbrestorepanel.cpp:1232
-#: src/wx-console/wxbrestorepanel.cpp:1234
-#: src/wx-console/wxbrestorepanel.cpp:1253
-#: src/wx-console/wxbrestorepanel.cpp:1260
-#: src/wx-console/wxbrestorepanel.cpp:1812
-#: src/wx-console/wxbrestorepanel.cpp:1823
-#: src/wx-console/wxbrestorepanel.cpp:1944
-msgid "Before"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:342
-msgid "Please configure parameters concerning files to restore :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1878
-msgid "always"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if newer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if older"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1881
-msgid "never"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:359
-msgid "Please configure parameters concerning files restoration :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:435
-msgid "Error : no clients returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:459
-msgid "Error : no filesets returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:483
-msgid "Error : no storage returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
-msgid "Error : no jobs returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:516
-msgid "RestoreFiles"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:551
-msgid "Please configure your restore parameters."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:562
-msgid "Building restore tree..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:605
-msgid "Error while starting restore: "
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:695
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:732
-#: src/wx-console/wxbrestorepanel.cpp:754
-msgid "bwx-console: unexpected restore question."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:765
-msgid " files selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:770
-msgid " file selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:777
-#, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:787
-msgid "Restore failed : no file selected.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:788
-msgid "Restore failed : no file selected."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:798
-msgid "Restoring, please wait..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:811
-msgid "Job queued. JobId="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:813
-msgid "Restore queued, jobid="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:817
-msgid "Job failed."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:818
-msgid "Restore failed, please look at messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:819
-msgid "Restore failed, please look at messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:825
-#: src/wx-console/wxbrestorepanel.cpp:826
-msgid "Failed to retrieve jobid.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:852
-msgid ""
-"Restore is scheduled in more than two minutes, bwx-console will not wait for "
-"its completion.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:853
-msgid ""
-"Restore is scheduled in more than two minutes, bwx-console will not wait for "
-"its completion."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:879
-msgid "Restore job created, but not yet running."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:884
-#, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:888
-msgid "Restore job terminated successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job terminated successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:894
-msgid "Restore job terminated in error, see messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:895
-msgid "Restore job terminated in error, see messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:900
-msgid "Restore job reported a non-fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:904
-msgid "Restore job reported a fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:909
-msgid "Restore job cancelled by user."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:910
-msgid "Restore job cancelled by user.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:915
-msgid "Restore job is waiting on File daemon."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:919
-msgid "Restore job is waiting for new media."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:923
-msgid "Restore job is waiting for storage resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:927
-msgid "Restore job is waiting for job resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:931
-msgid "Restore job is waiting for Client resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:935
-msgid "Restore job is waiting for maximum jobs."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:939
-msgid "Restore job is waiting for start time."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:943
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:992
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:993
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid "Restore done successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1004
-msgid "Restore done successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1075
-msgid "Applying restore configuration changes..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1126
-msgid "Failed to find the selected client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1141
-msgid "Failed to find the selected fileset."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1156
-msgid "Failed to find the selected storage."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1859
-msgid "Run Restore job"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1189
-msgid "Restore configuration changes were applied."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1198
-msgid "Restore cancelled.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1199
-msgid "Restore cancelled."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1221
-msgid "No results to list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1223
-msgid "No backup found for this client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1230
-msgid "ERROR"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1231
-msgid "Query failed"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1233
-msgid "Cannot get previous backups list, see console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1869
-msgid "JobName:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1873
-msgid "Where:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1876
-msgid "Replace:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1879
-msgid "ifnewer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1880
-msgid "ifolder"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1884
-msgid "FileSet:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:2001
-msgid "Restoring..."
-msgstr ""
diff --git a/po/fr.po b/po/fr.po
index b295d5f..7c655e6 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,13 +1,13 @@
 # French translations for Bacula package
 # Traduction anglaise du package Bacula.
-# Copyright (C) 2005-2006 Free Software Foundation Europe e.V.
+# Copyright (C) 2005-2014 Free Software Foundation Europe e.V.
 # Nicolas Boichat <nicolas at boichat.ch>, 2005.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Bacula 1.38\n"
+"Project-Id-Version: Bacula 5.2\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2013-02-19 18:26+0100\n"
+"POT-Creation-Date: 2014-07-29 18:18+0200\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"
@@ -17,19143 +17,8349 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: src/dird/jobq.c:74
+#: src/baconfig.h:60 src/baconfig.h:61 src/baconfig.h:66 src/baconfig.h:67
 #, c-format
-msgid "pthread_attr_init: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/dird/jobq.c:83
-#, c-format
-msgid "pthread_mutex_init: ERR=%s\n"
+#: src/baconfig.h:76
+msgid "*None*"
 msgstr ""
 
-#: src/dird/jobq.c:89
-#, c-format
-msgid "pthread_cond_init: ERR=%s\n"
+#: src/lib/status.h:73
+msgid ""
+"\n"
+"Terminated Jobs:\n"
 msgstr ""
+"\n"
+"Job terminés :\n"
 
-#: src/dird/jobq.c:131
-#, c-format
-msgid "pthread_cond_broadcast: ERR=%s\n"
-msgstr ""
+#: src/lib/status.h:80
+msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
+msgstr " JobId  Type     Fichiers   Octets   Statut  Terminé         Nom\n"
 
-#: src/dird/jobq.c:139
-#, c-format
-msgid "pthread_cond_wait: ERR=%s\n"
-msgstr ""
+#: src/lib/status.h:82
+msgid "===================================================================\n"
+msgstr "===================================================================\n"
 
-#: src/dird/jobq.c:180
-#, c-format
-msgid "Job %s waiting %d seconds for scheduled start time.\n"
-msgstr ""
+#: src/lib/status.h:102
+msgid "Created"
+msgstr "Crée"
 
-#: 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"
+#: src/lib/status.h:106
+msgid "Error"
+msgstr "Erreur"
+
+#: src/lib/status.h:109
+msgid "Diffs"
 msgstr ""
 
-#: src/dird/jobq.c:242
+#: src/lib/status.h:112
+msgid "Cancel"
+msgstr "Annulé"
+
+#: src/lib/status.h:115
+msgid "OK"
+msgstr "OK"
+
+#: src/lib/status.h:118
+msgid "OK -- with warnings"
+msgstr "OK -- avec des avertissements"
+
+#: src/lib/status.h:122
+msgid "Other"
+msgstr "Autre"
+
+#: src/lib/status.h:134
+#, 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/lib/status.h:142
 #, c-format
-msgid "pthread_thread_create: ERR=%s\n"
-msgstr ""
+msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
+msgstr "%6d  %-6s %8s %10s %-7s  %-8s %s\n"
+
+#: src/lib/status.h:171 src/lib/status.h:182 src/lib/status.h:196
+#: src/lib/status.h:200 src/lib/status.h:204
+msgid "Bacula "
+msgstr "Bacula "
 
-#: src/dird/jobq.c:352
+#: src/qt-console/bat_conf.cpp:130
 #, c-format
-msgid "pthread_cond_signal: ERR=%s\n"
+msgid "No record for %d %s\n"
 msgstr ""
 
-#: src/dird/jobq.c:363
+#: src/qt-console/bat_conf.cpp:139
 #, c-format
-msgid "pthread_create: ERR=%s\n"
+msgid "Director: name=%s address=%s DIRport=%d\n"
 msgstr ""
 
-#: src/dird/jobq.c:647
+#: src/qt-console/bat_conf.cpp:143
+#, fuzzy, c-format
+msgid "Console: name=%s\n"
+msgstr "Console connecté à %s\n"
+
+#: src/qt-console/bat_conf.cpp:146
+#: src/qt-console/tray-monitor/tray_conf.cpp:183
 #, c-format
-msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
+msgid "ConsoleFont: name=%s font face=%s\n"
 msgstr ""
 
-#: src/dird/jobq.c:703 src/dird/jobq.c:708
-msgid "previous Job"
+#: src/qt-console/bat_conf.cpp:150 src/qt-console/bat_conf.cpp:231
+#: src/qt-console/bat_conf.cpp:279 src/qt-console/bat_conf.cpp:309
+#, c-format
+msgid "Unknown resource type %d\n"
 msgstr ""
 
-#: src/dird/jobq.c:745
+#: src/qt-console/bat_conf.cpp:257
+#: src/qt-console/tray-monitor/tray_conf.cpp:276
 #, c-format
-msgid ""
-"Job canceled. Attempt to read and write same device.\n"
-"    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
+msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:54
+#: src/qt-console/bat_conf.cpp:326
+#: src/qt-console/tray-monitor/tray_conf.cpp:360
 #, c-format
-msgid "The current %s retention period is: %s\n"
-msgstr "La période de rétention courante %s est : %s\n"
-
-#: src/dird/ua_select.c:59
-msgid "Continue? (yes/mod/no): "
-msgstr "Continuer ? (oui/mod/non) : "
-
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
-msgid "mod"
-msgstr "mod"
-
-#: src/dird/ua_select.c:63
-msgid "Enter new retention period: "
-msgstr "Saisissez une nouvelle période de rétention : "
-
-#: src/dird/ua_select.c:67
-msgid "Invalid period.\n"
-msgstr "Période invalide.\n"
-
-#: src/dird/ua_select.c:143
-msgid "You have the following choices:\n"
-msgstr "Vous avez les choix suivants :\n"
-
-#: src/dird/ua_select.c:159
-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: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
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1176
-#: src/wx-console/wxbrestorepanel.cpp:1845
-#: src/wx-console/wxbrestorepanel.cpp:1916
-msgid "Storage"
-msgstr "Stockage"
-
-#: src/dird/ua_select.c:167
-msgid "Select Storage resource"
-msgstr "Sélectionnez la ressource de Stockage"
-
-#: src/dird/ua_select.c:182 src/dird/ua_restore.c:1296
-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:226
-msgid "FileSet"
-msgstr "FileSet"
-
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300
-msgid "Select FileSet resource"
-msgstr "Sélectionnez le FileSet"
-
-#: 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"
-
-#: src/dird/ua_select.c:223
-msgid "You must specify a \"use <catalog-name>\" command before continuing.\n"
+msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:229
-msgid "The defined Catalog resources are:\n"
-msgstr "Les Catalogues définis sont :\n"
-
-#: src/dird/ua_select.c:237
-msgid "Catalog"
-msgstr "Catalogue"
-
-#: src/dird/ua_select.c:237
-msgid "Select Catalog resource"
-msgstr "Sélectionnez le Catalogue"
-
-#: src/dird/ua_select.c:255 src/dird/ua_select.c:281
-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:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
-#: src/dird/ua_run.c:225
-msgid "Job"
-msgstr "Job"
+#: src/qt-console/bcomm/dircomm.cpp:85
+#, fuzzy, c-format
+msgid "Already connected\"%s\".\n"
+msgstr "Console connecté à %s\n"
 
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289
-msgid "Select Job resource"
-msgstr "Sélectionnez le Job"
+#: src/qt-console/bcomm/dircomm.cpp:96
+#: src/qt-console/tray-monitor/tray-monitor.cpp:347
+#, fuzzy, c-format
+msgid "Connecting to Director %s:%d"
+msgstr "Connexion au Director %s:%d\n"
 
-#: src/dird/ua_select.c:308
+#: src/qt-console/bcomm/dircomm.cpp:98
 #, fuzzy, c-format
-msgid "Error: Restore Job resource \"%s\" does not exist.\n"
-msgstr "Erreur : le Pool \"%s\" n'existe pas.\n"
-
-#: src/dird/ua_select.c:322
-msgid "The defined Restore Job resources are:\n"
-msgstr "Les Job de restauration sont :\n"
-
-#: src/dird/ua_select.c:330
-msgid "Select Restore Job"
-msgstr "Sélectionnez le Job de restauration"
-
-#: src/dird/ua_select.c:347
-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: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
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:700
-#: src/wx-console/wxbrestorepanel.cpp:1133
-#: src/wx-console/wxbrestorepanel.cpp:1136
-#: src/wx-console/wxbrestorepanel.cpp:1238
-#: src/wx-console/wxbrestorepanel.cpp:1838
-#: src/wx-console/wxbrestorepanel.cpp:1840
-#: src/wx-console/wxbrestorepanel.cpp:1914
-#: src/wx-console/wxbrestorepanel.cpp:1970
-msgid "Client"
-msgstr "Client"
-
-#: src/dird/ua_select.c:355
-msgid "Select Client (File daemon) resource"
-msgstr "Sélectionnez le client (File daemon)"
-
-#: src/dird/ua_select.c:382
-#, c-format
-msgid "Error: Client resource %s does not exist.\n"
-msgstr "Erreur : le client %s n'est pas définie.\n"
+msgid ""
+"Connecting to Director %s:%d\n"
+"\n"
+msgstr "Connexion au Director %s:%d\n"
 
-#: src/dird/ua_select.c:407
+#: src/qt-console/bcomm/dircomm.cpp:150
 #, c-format
-msgid "Could not find Client %s: ERR=%s"
-msgstr "Impossible de trouver le client %s : ERR=%s"
+msgid "Failed to initialize TLS context for Console \"%s\".\n"
+msgstr "Impossible d'initialiser le contexte TLS pour la Console \"%s\".\n"
 
-#: src/dird/ua_select.c:417 src/dird/ua_select.c:471
+#: src/qt-console/bcomm/dircomm.cpp:173
 #, c-format
-msgid "Could not find Client \"%s\": ERR=%s"
-msgstr "Impossible de trouver le client \"%s\" : ERR=%s"
+msgid "Failed to initialize TLS context for Director \"%s\".\n"
+msgstr "Impossible d'initialiser le contexte TLS pour le Director \"%s\".\n"
 
-#: src/dird/ua_select.c:446
-#, c-format
-msgid "Error obtaining client ids. ERR=%s\n"
-msgstr "Erreur pendant l'obtention de l'identifiant du Client. ERR=%s\n"
+#: src/qt-console/bcomm/dircomm.cpp:195
+#: src/qt-console/tray-monitor/tray-monitor.cpp:352
+#, fuzzy
+msgid "Director daemon"
+msgstr "Director"
 
-#: src/dird/ua_select.c:450
-msgid "No clients defined. You must run a job before using this command.\n"
+#: src/qt-console/bcomm/dircomm.cpp:233
+msgid "Initializing ..."
 msgstr ""
-"Pas de client défini. Vous devez lancer une sauvegarde avant d'utiliser "
-"cette commande.\n"
-
-#: src/dird/ua_select.c:454
-msgid "Defined Clients:\n"
-msgstr "Clients définis :\n"
-
-#: src/dird/ua_select.c:464
-msgid "Select the Client"
-msgstr "Sélectionnez le 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 "Impossible de trouver le Pool \"%s\" : ERR=%s"
+#: src/qt-console/bcomm/dircomm.cpp:249 src/qt-console/console/console.cpp:130
+#, fuzzy
+msgid "Connected"
+msgstr "Connexion...\n"
 
-#: 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"
+#: src/qt-console/bcomm/dircomm.cpp:373
+#, fuzzy
+msgid "Command completed ..."
+msgstr "Commande annulée.\n"
 
-#: src/dird/ua_select.c:536
-msgid "No pools defined. Use the \"create\" command to create one.\n"
+#: src/qt-console/bcomm/dircomm.cpp:380 src/qt-console/console/console.cpp:367
+msgid "Processing command ..."
 msgstr ""
-"Pas de Pool défini. Utilisez la commande « create » pour en créer un.\n"
 
-#: src/dird/ua_select.c:540
-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:365
-#: src/baconfig.h:88
-msgid "*None*"
+#: src/qt-console/bcomm/dircomm.cpp:387
+msgid "At main prompt waiting for input ..."
 msgstr ""
 
-#: 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 "Pool"
-
-#: src/dird/ua_select.c:553
-msgid "Select the Pool"
-msgstr "Sélectionnez le Pool"
-
-#: src/dird/ua_select.c:591
-#, c-format
-msgid "No access to Pool \"%s\"\n"
-msgstr "Pas d'accès au Pool \"%s\"\n"
+#: src/qt-console/bcomm/dircomm.cpp:394 src/qt-console/bcomm/dircomm.cpp:407
+msgid "At prompt waiting for input ..."
+msgstr ""
 
-#: src/dird/ua_select.c:623
+#: src/qt-console/bcomm/dircomm.cpp:415
 #, fuzzy
-msgid "Enter *MediaId or Volume name: "
-msgstr "Saisissez le MediaId ou le nom du Volume : "
-
-#: 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:666
-msgid "Select Pool resource"
-msgstr "Sélectionnez le Pool"
-
-#: 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:701
-msgid "Enter the JobId to select: "
-msgstr "Entrez le JobId à sélectionner : "
+msgid "Command failed."
+msgstr "Commande annulée.\n"
 
-#: 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/qt-console/bcomm/dircomm.cpp:487
+#, fuzzy
+msgid "Director disconnected."
+msgstr "Connexion du director le %s\n"
 
-#: src/dird/ua_select.c:819
-#, c-format
-msgid "Automatically selected %s: %s\n"
-msgstr "Sélection automatique %s : %s\n"
+#: src/qt-console/bcomm/dircomm_auth.cpp:107
+#, fuzzy, c-format
+msgid "Director authorization problem at \"%s:%d\"\n"
+msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_select.c:830
+#: src/qt-console/bcomm/dircomm_auth.cpp:114
 #, c-format
 msgid ""
-"Your request has multiple choices for \"%s\". Selection is not possible in "
-"batch mode.\n"
+"Authorization problem: Remote server at \"%s:%d\" did not advertise required "
+"TLS support.\n"
 msgstr ""
 
-#: 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:854
-#, c-format
-msgid "Automatically selected: %s\n"
-msgstr "Sélection automatique : %s\n"
-
-#: 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:871
+#: src/qt-console/bcomm/dircomm_auth.cpp:122
 #, 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:920
-msgid "Storage name given twice.\n"
+msgid ""
+"Authorization problem with Director at \"%s:%d\": Remote server requires "
+"TLS.\n"
 msgstr ""
 
-#: 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:941
-#, c-format
-msgid "JobId %s is not running.\n"
-msgstr "JobId %s n'est pas en cours.\n"
-
-#: 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: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:963
-#, c-format
-msgid "Expecting ujobid=xxx, got: %s.\n"
-msgstr "Attendait l'option ujobid=xxx, pas : %s\n"
-
-#: 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:1015
-msgid "Enter autochanger drive[0]: "
-msgstr "Saisissez le numéro du lecteur de l'autochanger [0] : "
-
-#: src/dird/ua_select.c:1036
-msgid "Enter autochanger slot: "
-msgstr "Saisissez le slot de l'autochanger [0] : "
-
-#: src/dird/ua_select.c:1066
-msgid "Media Types defined in conf file:\n"
-msgstr ""
+#: src/qt-console/bcomm/dircomm_auth.cpp:133
+#, 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/dird/ua_select.c:1072
-msgid "Media Type"
-msgstr ""
+#: src/qt-console/bcomm/dircomm_auth.cpp:145
+#, 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/dird/ua_select.c:1072
-msgid "Select the Media Type"
-msgstr "Choisissez le type de Media"
+#: src/qt-console/bcomm/dircomm_auth.cpp:154
+#, 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/dird/ua_select.c:1111
+#: src/qt-console/bcomm/dircomm_auth.cpp:169
 #, fuzzy, c-format
-msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
+msgid ""
+"Authorization problem with Director at \"%s:%d\"\n"
+"Most likely the passwords do not agree.\n"
+"If you are using TLS, there may have been a certificate validation error "
+"during the TLS handshake.\n"
+"Please see "
 msgstr ""
-"JobId %s n'est pas en cours. Utilisez le nom du Job pour annuler un job "
-"inactif.\n"
-
-#: 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: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: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:1167
-msgid "None of your jobs are running.\n"
-msgstr "Aucun de vos jobs ne sont en cours.\n"
+"Problème d'authentification avec le director.\n"
+"Le plus souvent, les mots de pass ne correspondent pas.\n"
+"Si vous utilisez TLS, il peut y avoir une erreur de validation du "
+"certificat\n"
+"pendant l'initialisation de la connexion TLS.\n"
+"Vous trouverez de l'aide sur\n"
+"http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
 
-#: src/dird/ua_select.c:1172
-msgid "Select Job:\n"
-msgstr "Sélectionnez le Job :\n"
+#: src/qt-console/main.cpp:154
+msgid "Cryptography library initialization failed.\n"
+msgstr ""
 
-#: src/dird/ua_select.c:1181
+#: src/qt-console/main.cpp:158
 #, c-format
-msgid "JobId=%s Job=%s"
-msgstr "JobId=%s Job=%s"
-
-#: src/dird/ua_select.c:1185
-#, fuzzy, c-format
-msgid "Choose Job to %s"
-msgstr "Sélectionnez le Job à annuler"
+msgid "Please correct configuration file: %s\n"
+msgstr "Merci de corriger le fichier de configuration : %s\n"
 
-#: src/dird/ua_select.c:1192
+#: src/qt-console/main.cpp:180
 #, fuzzy, c-format
 msgid ""
-"Cancel: %s\n"
 "\n"
-"%s"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: 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          no signals\n"
+"       -t          test - read configuration and exit\n"
+"       -?          print this message.\n"
+"\n"
 msgstr ""
-"Annule : %s\n"
+") %s %s %s\n"
+"\n"
+"Usage : bconsole [-s] [-c config_file] [-d niveau_debug]\n"
+"       -c <file>   set configuration file to file\n"
+"       -dnn        set debug level to nn\n"
+"       -s          no signals\n"
+"       -t          test - lecture de la configuration et sortie\n"
 "\n"
-"%s"
-
-#: src/dird/ua_select.c:1193
-msgid "Confirm cancel?"
-msgstr "Confirmez l'annulation : "
-
-#: src/dird/ua_select.c:1199
-msgid "Confirm cancel (yes/no): "
-msgstr "Confirmez l'annulation (oui/non) : "
 
-#: 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"
+#: src/qt-console/main.cpp:213 src/qt-console/main.cpp:243
+msgid "TLS required but not configured in Bacula.\n"
+msgstr ""
 
-#: src/dird/bsr.c:173
+#: src/qt-console/main.cpp:221
 #, c-format
-msgid "Unable to get Job record. ERR=%s\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/dird/bsr.c:184
+#: src/qt-console/main.cpp:230
 #, c-format
-msgid "Unable to get Job Volume Parameters. ERR=%s\n"
+msgid ""
+"No Director resource defined in %s\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
+"Pas de director défini pour %s\n"
+"Sans cette définition, il n'est pas possible de se connecter à celui-ci.\n"
 
-#: src/dird/bsr.c:232
+#: src/qt-console/main.cpp:251
 #, c-format
-msgid "Unable to create bootstrap file %s. ERR=%s\n"
-msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in %s.\n"
+msgstr ""
 
-#: src/dird/bsr.c:241
+#: src/qt-console/tray-monitor/authenticate.cpp:75
 #, fuzzy
-msgid "No files found to read. No bootstrap file written.\n"
+msgid ""
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see "
 msgstr ""
-"Aucun fichier trouvé pour la restauration/migration. Pas de fichier "
-"Bootstrap écrit.\n"
-
-#: src/dird/bsr.c:245
-msgid "Error writing bsr file.\n"
-msgstr "Erreur pendant l'écriture du fichier bsr.\n"
+"Problème d'authentification avec le director.\n"
+"Le plus souvent, les mots de pass ne correspondent pas.\n"
+"Vous trouverez de l'aide sur\n"
+"http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
 
-#: src/dird/bsr.c:250
+#: src/qt-console/tray-monitor/authenticate.cpp:84
 #, c-format
-msgid "Bootstrap records written to %s\n"
-msgstr "Fichier bootstrap écrit sur %s\n"
+msgid "Bad response to Hello command: ERR=%s\n"
+msgstr "Mauvaise réponse à la commande Hello : ERR=%s\n"
 
-#: src/dird/bsr.c:298
-msgid ""
-"The job will require the following\n"
-"   Volume(s)                 Storage(s)                SD Device(s)\n"
-"===========================================================================\n"
-msgstr ""
-"Ce job va utiliser les éléments suivants :\n"
-"   Volume(s)                 Storage(s)                SD Device(s)\n"
-"===========================================================================\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:91
+msgid "Director rejected Hello command\n"
+msgstr "Le director a rejeté la commande Hello\n"
 
-#: src/dird/bsr.c:317
-msgid "No Volumes found to restore.\n"
-msgstr "Aucun volume trouvé pour la restauration.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:119
+#, c-format
+msgid "Error sending Hello to Storage daemon. ERR=%s\n"
+msgstr ""
 
-#: src/dird/bsr.c:319
+#: src/qt-console/tray-monitor/authenticate.cpp:125
+#, fuzzy
 msgid ""
-"\n"
-"Volumes marked with \"*\" are online.\n"
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see "
 msgstr ""
+"Le mot de passe ou le nom du Director et du Client ne sont pas identiques.\n"
 
-#: src/dird/ua_server.c:69
-#, c-format
-msgid "Cannot create UA thread: %s\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:132
+#, fuzzy, c-format
+msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
 msgstr ""
+"bdird<stored: « %s:%s » Mauvaise réponse à la commande Hello : ERR=%s\n"
 
-#: src/dird/ua_server.c:159
-msgid "You have messages.\n"
-msgstr "Vous avez des messages.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:139
+msgid "Storage daemon rejected Hello command\n"
+msgstr "Le storage a rejeté la commande Hello\n"
 
-#: src/dird/verify.c:86 src/dird/verify.c:318
-#, c-format
-msgid "Unimplemented Verify level %d(%c)\n"
-msgstr ""
+#: src/qt-console/tray-monitor/authenticate.cpp:165
+#, fuzzy, c-format
+msgid "Error sending Hello to File daemon. ERR=%s\n"
+msgstr "Erreur pendant lors de la récupération du pool. ERR=%s\n"
 
-#: src/dird/verify.c:148
+#: src/qt-console/tray-monitor/authenticate.cpp:171
+#, fuzzy
 msgid ""
-"Unable to find JobId of previous InitCatalog Job.\n"
-"Please run a Verify with Level=InitCatalog before\n"
-"running the current Job.\n"
+"Director and File daemon passwords or names not the same.\n"
+"Please see "
 msgstr ""
-"Impossible de trouvé JobId d'un précédent Job « InitCatalog.\n"
-"Il faut lancer un Job Verify avec l'option Level=InitCatalog avant\n"
-"de lancer le Job courant.\n"
-
-#: src/dird/verify.c:153
-msgid "Unable to find JobId of previous Job for this client.\n"
-msgstr "Impossible de trouver JobId d'un précédent Job pour ce client.\n"
+"Le mot de passe ou le nom du Director et du Client ne sont pas identiques.\n"
 
-#: src/dird/verify.c:170
+#: src/qt-console/tray-monitor/authenticate.cpp:178
 #, c-format
-msgid "Could not get job record for previous Job. ERR=%s"
+msgid "Bad response from File daemon to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:176
-#, c-format
-msgid "Last Job %d did not terminate normally. JobStatus=%c\n"
-msgstr "Le dernier job %d ne s'est pas terminé correctement. JobStatus=%c\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:185
+msgid "File daemon rejected Hello command\n"
+msgstr "Le Client a rejeté la commande Hello\\n\n"
 
-#: src/dird/verify.c:180
-#, c-format
-msgid "Verifying against JobId=%d Job=%s\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:55
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -d <nn>       set debug level to <nn>\n"
+"       -dt           print timestamp in debug output\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
+"\n"
 msgstr ""
+") %s %s %s\n"
+"\n"
+"Usage : bconsole [-s] [-c config_file] [-d niveau_debug]\n"
+"       -c <file>   set configuration file to file\n"
+"       -dnn        set debug level to nn\n"
+"       -s          no signals\n"
+"       -t          test - lecture de la configuration et sortie\n"
+"\n"
 
-#: src/dird/verify.c:219
+#: src/qt-console/tray-monitor/tray-monitor.cpp:204
 #, c-format
-msgid "Start Verify JobId=%s Level=%s Job=%s\n"
+msgid ""
+"Error: %d Monitor resources defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
 
-#: src/dird/verify.c:305
-msgid "Deprecated feature ... use bootstrap.\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:236
+#, fuzzy, c-format
+msgid ""
+"No Client, Storage or Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
 msgstr ""
+"Pas de director défini pour %s\n"
+"Sans cette définition, il n'est pas possible de se connecter à celui-ci.\n"
 
-#: src/dird/verify.c:372
+#: src/qt-console/tray-monitor/tray-monitor.cpp:251
 #, c-format
-msgid "Unimplemented verify level %d\n"
+msgid ""
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
 msgstr ""
 
-#: src/dird/verify.c:421
-msgid "Verify OK"
-msgstr "Vérification OK"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:319
+#, c-format
+msgid "Error, currentitem is not a Client or a Storage..\n"
+msgstr ""
 
-#: src/dird/verify.c:425
-msgid "*** Verify Error ***"
-msgstr "*** Erreur de Vérification ***"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:357
+#, fuzzy, c-format
+msgid "Connecting to Client %s:%d"
+msgstr "Connexion au client %s (%s:%d)\n"
 
-#: src/dird/verify.c:429
-msgid "Verify warnings"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:362
+msgid "File daemon"
 msgstr ""
 
-#: src/dird/verify.c:432
-msgid "Verify Canceled"
-msgstr "Vérification annulée"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:367
+#, fuzzy, c-format
+msgid "Connecting to Storage %s:%d"
+msgstr "Connexion au Director %s:%d\n"
 
-#: src/dird/verify.c:435
-msgid "Verify Differences"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:372
+msgid "Storage daemon"
 msgstr ""
 
-#: src/dird/verify.c:440
+#: src/qt-console/tray-monitor/tray-monitor.cpp:376
+#: src/qt-console/tray-monitor/tray-monitor.cpp:406
 #, c-format
-msgid "Inappropriate term code: %d %c\n"
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
 msgstr ""
 
-#: src/dird/verify.c:454
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s %s (%s): %s\n"
-"  Build OS:               %s %s %s\n"
-"  JobId :                 %d\n"
-"  Job :                   %s\n"
-"  FileSet:                %s\n"
-"  Client :                %s\n"
-"  Début :                 %s\n"
-"  Fin :                   %s\n"
-"  Fichiers attendus :     %s\n"
-"  Fichiers restaurés :    %s\n"
-"  Octets restaurés :      %s\n"
-"  Débit :                 %.1f Ko/s\n"
-"  Erreurs du FD :         %d\n"
-"  Statut de fin du FD :   %s\n"
-"  Statut de fin du SD :   %s\n"
-"  Etat :                  %s\n"
-
-#: src/dird/verify.c:489
+#: src/qt-console/tray-monitor/tray-monitor.cpp:381
+#, fuzzy
+msgid "Cannot connect to daemon."
+msgstr "Impossible de se connecter au démon Storage\n"
+
+#: src/qt-console/tray-monitor/tray-monitor.cpp:390
 #, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build:                  %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s (%s) : %s\n"
-"  Build:                  %s %s %s\\n\"\n"
-"  JobId :                 %d\n"
-"  Job :                   %s\n"
-"  FileSet :               %s\n"
-"  Client :                %s\n"
-"  Début :                 %s\n"
-"  Fin :                   %s\n"
-"  Fichiers attendus :     %s\n"
-"  Fichiers restaurés :    %s\n"
-"  Octets restaurés :      %s\n"
-"  Débit :                 %.1f Ko/s\n"
-"  Erreurs du FD :         %d\n"
-"  Statut de fin du FD :   %s\n"
-"  Statut de fin du SD :   %s\n"
-"  Etat :                  %s\n"
-
-#: src/dird/verify.c:567
-#, c-format
-msgid ""
-"bird<filed: bad attributes, expected 3 fields got %d\n"
-" mslen=%d msg=%s\n"
-msgstr ""
+msgid "Authentication error : %s"
+msgstr "Erreur sur l'autochangeur : ERR=%s\n"
 
-#: src/dird/verify.c:612
-#, c-format
-msgid "New file: %s\n"
-msgstr "Nouveau Fichier : %s\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:397
+#, fuzzy
+msgid "Opened connection with Director daemon."
+msgstr "Impossible de se connecter au Storage daemon.\n"
 
-#: src/dird/verify.c:613
-#, c-format
-msgid "File not in catalog: %s\n"
-msgstr "Fichier absent du catalogue : %s\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:400
+#, fuzzy
+msgid "Opened connection with File daemon."
+msgstr "Impossible de se connecter au client.\n"
 
-#: src/dird/verify.c:637
-#, c-format
-msgid "      st_ino   differ. Cat: %s File: %s\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:403
+#, fuzzy
+msgid "Opened connection with Storage daemon."
+msgstr "Impossible de se connecter au Storage daemon.\n"
 
-#: src/dird/verify.c:646
-#, c-format
-msgid "      st_mode  differ. Cat: %x File: %x\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:454
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
 msgstr ""
 
-#: src/dird/verify.c:654
-#, c-format
-msgid "      st_nlink differ. Cat: %d File: %d\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:463
+#, fuzzy
+msgid "Error : Connection closed."
+msgstr "Connexion...\n"
 
-#: src/dird/verify.c:662
+#: src/qt-console/tray-monitor/tray_conf.cpp:156
 #, c-format
-msgid "      st_uid   differ. Cat: %u File: %u\n"
+msgid "No %s resource defined\n"
 msgstr ""
 
-#: src/dird/verify.c:670
+#: src/qt-console/tray-monitor/tray_conf.cpp:165
 #, c-format
-msgid "      st_gid   differ. Cat: %u File: %u\n"
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:678
+#: src/qt-console/tray-monitor/tray_conf.cpp:171
 #, c-format
-msgid "      st_size  differ. Cat: %s File: %s\n"
-msgstr ""
-
-#: src/dird/verify.c:687
-msgid "      st_atime differs\n"
+msgid "Director: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:694
-msgid "      st_mtime differs\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray_conf.cpp:175
+#, fuzzy, c-format
+msgid "Client: name=%s address=%s FDport=%d\n"
+msgstr "Client \"%s\" adresse positionné à %s\n"
 
-#: src/dird/verify.c:701
-msgid "      st_ctime differs\n"
+#: src/qt-console/tray-monitor/tray_conf.cpp:179
+#, c-format
+msgid "Storage: name=%s address=%s SDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:708
+#: src/qt-console/tray-monitor/tray_conf.cpp:187
 #, c-format
-msgid "      st_size  decrease. Cat: %s File: %s\n"
+msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/verify.c:738
+#: src/qt-console/tray-monitor/tray_conf.cpp:245
 #, c-format
-msgid "MD5/SHA1 index %d not same as attributes %d\n"
+msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
-#: src/dird/verify.c:746
+#: src/qt-console/tray-monitor/tray_conf.cpp:282
 #, c-format
-msgid "      %s differs. File=%s Cat=%s\n"
-msgstr ""
+msgid "Too many items in %s resource\n"
+msgstr "Trop d'élément dans la ressource %s\n"
 
-#: src/dird/verify.c:757
+#: src/qt-console/tray-monitor/tray_conf.cpp:302
+#: src/qt-console/tray-monitor/tray_conf.cpp:340
 #, c-format
-msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
+msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
 
-#: src/dird/verify.c:796
-#, fuzzy, c-format
-msgid "The following files are in the Catalog but not on %s:\n"
-msgstr ""
-"Les fichiers suivants sont dans le catalogue mais absents du disque :\n"
+#~ msgid "Unable to initialize DB lock. ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
 
-#: src/dird/verify.c:811 src/tools/testfind.c:420
-#, c-format
-msgid "File: %s\n"
-msgstr "Fichier : %s\n"
+#~ msgid ""
+#~ "Unable to connect to MySQL server.\n"
+#~ "Database=%s User=%s\n"
+#~ "MySQL connect failed either server not running or your authorization is "
+#~ "incorrect.\n"
+#~ msgstr ""
+#~ "Impossible de se connecter au serveur MySQL.\n"
+#~ "Base=%s Utilisateur=%s\n"
+#~ "Le serveur n'est pas démarré ou bien votre password est invalide.\n"
 
-#: src/dird/admin.c:65
-#, c-format
-msgid "Start Admin JobId %d, Job=%s\n"
-msgstr ""
+#~ msgid "A user name for MySQL must be supplied.\n"
+#~ msgstr "Un nom d'utilisateur MySQL doit être fourni.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
+#~ "Possible causes: SQL server not running; password incorrect; "
+#~ "max_connections exceeded.\n"
+#~ msgstr ""
+#~ "Impossible de se connecter au serveur PostgreSQL.\n"
+#~ "Base=%s Utilisateur=%s\n"
+#~ "Le serveur n'est pas démarré ou bien votre password est invalide.\n"
 
-#: src/dird/admin.c:98
-msgid "Admin OK"
-msgstr "Admin OK"
+#, fuzzy
+#~ msgid "error starting batch mode: %s"
+#~ msgstr "erreur en terminant le mode batch: %s\n"
 
-#: src/dird/admin.c:102
-msgid "*** Admin Error ***"
-msgstr "*** Admin en Erreur ***"
+#, fuzzy
+#~ msgid "error ending batch mode: %s"
+#~ msgstr "erreur en terminant le mode batch: %s\n"
 
-#: src/dird/admin.c:106
-msgid "Admin Canceled"
-msgstr "Admin Annulé"
+#, fuzzy
+#~ msgid "error copying in batch mode: %s"
+#~ msgstr "erreur en terminant le mode batch: %s\n"
 
-#: 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 ""
+#~ msgid "A user name for PostgreSQL must be supplied.\n"
+#~ msgstr "Un nom d'utilisateur PostgreSQL doit être fourni.\n"
 
-#: src/dird/admin.c:118
-msgid "Bacula "
-msgstr "Bacula "
+#~ msgid "No results to list.\n"
+#~ msgstr "Liste vide.\n"
 
-#: src/dird/dird.c:150
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"       -f          run in foreground (for debugging)\n"
-"       -g          groupid\n"
-"       -m          print kaboom output (for debugging)\n"
-"       -r <job>    run <job> now\n"
-"       -s          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -u          userid\n"
-"       -v          verbose user messages\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -d <nn>        positionne le niveau de debug à nn\n"
-"      -dt            affiche un timestamp devant chaque ligne de debug\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -r <job>       lance <job> maintenant\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
+#, fuzzy
+#~ msgid "Could not init database batch connection\n"
+#~ msgstr "Impossible d'initialiser le Python\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Could not open database \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: 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"
+#~ msgid "pool record %s already exists\n"
+#~ msgstr "Le pool %s existe déjà en base\n"
 
-#: src/dird/dird.c:546
-msgid "Too many open reload requests. Request ignored.\n"
-msgstr ""
+#~ msgid "Device record %s already exists\n"
+#~ msgstr "Le device %s existe déjà en base\n"
 
-#: src/dird/dird.c:561
-msgid "Out of reload table entries. Giving up.\n"
-msgstr ""
+#~ msgid "Volume \"%s\" already exists.\n"
+#~ msgstr "Le volume \"%s\" existe déjà en base.\n"
 
-#: src/dird/dird.c:564
-msgid "Resetting previous configuration.\n"
-msgstr "Retour à la dernière configuration.\n"
+#, fuzzy
+#~ msgid "Create db Object record %s failed. ERR=%s"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: 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 ""
+#~ msgid "No prior Full backup Job record found.\n"
+#~ msgstr "Pas de précédent backup Full en base.\n"
 
-#: src/dird/dird.c:636 src/filed/filed.c:350
-#, c-format
-msgid "No Messages resource defined in %s\n"
-msgstr ""
+#~ msgid "Unknown Job level=%d\n"
+#~ msgstr "Niveau de job inconnu %d\n"
 
-#: src/dird/dird.c:641
-#, c-format
-msgid "Only one Director resource permitted in %s\n"
-msgstr ""
+#~ msgid "No Job found for: %s.\n"
+#~ msgstr "Pas de job trouvé pour : %s.\n"
 
-#: 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 ""
+#~ msgid "No Job found for: %s\n"
+#~ msgstr "Pas de job trouvé pour %s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Request for Volume item %d greater than max %d or less than 1\n"
+#~ msgstr "Le slot %d est ignoré car il est supérieur au maximum %d.\n"
 
-#: 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 ""
+#~ msgid "No Volume record found for item %d.\n"
+#~ msgstr "Pas de volume trouvé en base pour l'objet %d.\n"
 
-#: 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 "
-"Director \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
+#, fuzzy
+#~ msgid "query dbids failed: ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: 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 ""
+#~ msgid "Query failed: %s\n"
+#~ msgstr "Erreur sur la requête : %s\n"
 
-#: src/dird/dird.c:698
-#, c-format
-msgid "No Job records defined in %s\n"
-msgstr ""
+#~ msgid "unknown"
+#~ msgstr "inconnu"
 
-#: src/dird/dird.c:756 src/dird/dird.c:769
-#, c-format
-msgid "Hey something is wrong. p=0x%lu\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Director authorization problem.\n"
+#~ "Most likely the passwords do not agree.\n"
+#~ "If you are using TLS, there may have been a certificate validation error "
+#~ "during the TLS handshake.\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Problème d'authentification avec le director.\n"
+#~ "Le plus souvent, les mots de pass ne correspondent pas.\n"
+#~ "Si vous utilisez TLS, il peut y avoir une erreur de validation du "
+#~ "certificat\n"
+#~ "pendant l'initialisation de la connexion TLS.\n"
+#~ "Vous trouverez de l'aide sur\n"
+#~ "http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
 
-#: src/dird/dird.c:830
-#, c-format
-msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Version: "
+#~ msgstr ""
+#~ "\n"
+#~ "Version : "
 
-#: src/dird/dird.c:837
-msgid "Too many items in Job resource\n"
-msgstr ""
+#~ msgid "quit"
+#~ msgstr "quit"
 
-#: 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"
+#~ msgid "print current time"
+#~ msgstr "affiche la date courante"
 
-#: src/dird/dird.c:865
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
+#~ msgid "exit = quit"
+#~ msgstr "exit = quit"
 
-#: src/dird/dird.c:871
-#, c-format
-msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
+#~ msgid ": is an invalid command\n"
+#~ msgstr "%s : est une commande invalide.\n"
 
-#: src/dird/dird.c:878
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Illegal separator character.\n"
+#~ msgstr "Caractère illégal « %c » dans le nom.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Command logic problem\n"
+#~ msgstr "Commande annulée.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Can't find %s in Director list\n"
+#~ msgstr "Impossible de trouver la ressource Director \"%s\"\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "%s is not a number. You must enter a number between 1 and %d\n"
+#~ msgstr "Vous devez saisir un nombre entre 1 et %d\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 ""
+#~ msgid "You must enter a number between 1 and %d\n"
+#~ msgstr "Vous devez saisir un nombre entre 1 et %d\n"
 
-#: 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"
+#~ msgid "Connecting to Director %s:%d\n"
+#~ msgstr "Connexion au Director %s:%d\n"
 
-#: src/dird/dird.c:1019 src/tools/cats_test.c:377
-#, c-format
-msgid "%s"
-msgstr "%s"
+#~ msgid "Enter a period to cancel a command.\n"
+#~ msgstr "Tapez un point (.) pour annuler une commande.\n"
 
-#: 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"
+#~ msgid "Too many arguments on input command.\n"
+#~ msgstr "Trop d'arguments sur la commande.\n"
 
-#: 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"
+#~ msgid "First argument to input command must be a filename.\n"
+#~ msgstr "Le premier argument de la commande doit être un fichier.\n"
 
-#: 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"
+#~ msgid "Cannot open file %s for input. ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s pour lecture. ERR=%s\n"
 
-#: src/dird/inc_conf.c:312
-#, fuzzy, c-format
-msgid "Expected a strip path positive integer, got:%s:"
-msgstr "Attendait un entier positif, pas : %s\n"
+#~ msgid "Cannot open file %s for output. ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s pour la sortie. ERR=%s\n"
 
-#: src/dird/inc_conf.c:332
-#, c-format
-msgid "Expected a FileSet option keyword, got:%s:"
-msgstr "Attendait une option de FileSet, eu : %s:"
+#~ msgid "Too many arguments. Enclose command in double quotes.\n"
+#~ msgstr ""
+#~ "Trop d'arguments sur la commande. Essayez d'utiliser des « \" » autour "
+#~ "des commandes\n"
 
-#: src/dird/inc_conf.c:365
-msgid "Old style Include/Exclude not supported\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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"
+#~ msgid "Autochanger error: ERR=%s\n"
+#~ msgstr "Erreur sur l'autochangeur : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ 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/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 ""
+#~ msgid "Admin OK"
+#~ msgstr "Admin OK"
 
-#: src/dird/inc_conf.c:464
-#, c-format
-msgid "Regex compile error. ERR=%s\n"
-msgstr ""
+#~ msgid "*** Admin Error ***"
+#~ msgstr "*** Admin en Erreur ***"
 
-#: src/dird/inc_conf.c:485
-#, c-format
-msgid "Expected a regex string, got: %s\n"
-msgstr ""
+#~ msgid "Admin Canceled"
+#~ msgstr "Admin Annulé"
 
-#: src/dird/inc_conf.c:559
-#, c-format
-msgid "Expected a wild-card string, got: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Director unable to authenticate with Storage daemon at \"%s:%d\". "
+#~ "Possible causes:\n"
+#~ "Passwords or names not the same or\n"
+#~ "Maximum Concurrent Jobs exceeded on the SD or\n"
+#~ "SD networking messed up (restart daemon).\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Le Director a rencontré un problème d'authentification avec le Storage "
+#~ "Daemon \"%s:%d\".\n"
+#~ "Les causes possibles sont :\n"
+#~ "- Les mots de pass ne correspondent pas ;\n"
+#~ "- Le nombre maximum de job concurrent est atteint sur le SD ;\n"
+#~ "- La connexion réseau du SD est tombée (il faut le redémarrer).\n"
+#~ "Vous trouverez de l'aide sur\n"
+#~ "http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
 
-#: src/dird/inc_conf.c:582
-#, c-format
-msgid "Expected an fstype string, got: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
+#~ msgstr "Négociation TLS échouée avec le SD « %s:%d ».\n"
 
-#: src/dird/inc_conf.c:593
-msgid "ExcludeDirContaining directive not permitted in Exclude.\n"
-msgstr ""
+#~ msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
+#~ msgstr ""
+#~ "bdird<stored: « %s:%s » Mauvaise réponse à la commande Hello : ERR=%s\n"
 
-#: src/dird/inc_conf.c:620
-#, c-format
-msgid "Expected an drivetype string, got: %s\n"
-msgstr "Attendait un type de lecteur, pas : %s\n"
+#, fuzzy
+#~ msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
+#~ msgstr "Le Storage daemon « %s:%d » a rejeté la commande Hello\n"
 
-#: src/dird/inc_conf.c:644 src/dird/inc_conf.c:687
-#, c-format
-msgid "Backslash found. Use forward slashes or quote the string.: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:659 src/dird/inc_conf.c:702
-#, c-format
-msgid "Expected a filename, got: %s"
-msgstr "Attendait un nom de fichier, eu : %s"
-
-#: src/dird/inc_conf.c:676
-msgid "Plugin directive not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:719
-msgid "Options section not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
-#, c-format
-msgid "Expecting open brace. Got %s"
-msgstr "Attendait {, eu : %s"
+#, fuzzy
+#~ msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
+#~ msgstr "Erreur pendant lors de la récupération du pool. ERR=%s\n"
 
-#: src/dird/inc_conf.c:779
-#, c-format
-msgid "Expected a FileSet keyword, got: %s"
-msgstr "Attendait le mot clef FileSet, eu : %s"
+#~ msgid "Director and File daemon passwords or names not the same.\n"
+#~ msgstr ""
+#~ "Le mot de passe ou le nom du Director et du Client ne sont pas "
+#~ "identiques.\n"
 
-#: src/dird/ua_query.c:73 src/findlib/create_file.c:288
-#: src/findlib/create_file.c:391
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr "Impossible d'ouvrir %s : ERR=%s\n"
+#, fuzzy
+#~ msgid ""
+#~ "Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
+#~ "Passwords or names not the same or\n"
+#~ "Maximum Concurrent Jobs exceeded on the FD or\n"
+#~ "FD networking messed up (restart daemon).\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Impossible de s'authentifier avec le File Daemon  « %s:%d ».\n"
+#~ "Les causes possibles sont :\n"
+#~ "- Les mots de pass ne correspondent pas ;\n"
+#~ "- Le nombre maximum de job concurrent est atteint sur le FD ;\n"
+#~ "- La connexion réseau du FD est tombée (il faut le redémarrer).\n"
+#~ "Vous trouverez de l'aide sur\n"
+#~ "http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
 
-#: src/dird/ua_query.c:78
-msgid "Available queries:\n"
-msgstr "Requêtes disponibles :\n"
+#, fuzzy
+#~ msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
+#~ msgstr "Négociation TLS échouée avec le FD  « %s:%d ».\n"
 
-#: src/dird/ua_query.c:85
-msgid "Choose a query"
-msgstr "Choisissez une requête"
+#, fuzzy
+#~ msgid ""
+#~ "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
+#~ msgstr ""
+#~ "Mauvaise réponse du File Daemon  « %s:%d » à la commande Hello : ERR=%s\n"
 
-#: src/dird/ua_query.c:99
-msgid "Could not find query.\n"
-msgstr "Impossible de trouver la requête.\n"
+#, fuzzy
+#~ msgid "File daemon at \"%s:%d\" rejected Hello command\n"
+#~ msgstr "Le File Daemon  « %s:%d » a rejeté la commande Hello\n"
 
-#: src/dird/ua_query.c:117
-msgid "Too many prompts in query, max is 9.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "1000 OK: %d %s Version: %s (%s)\n"
+#~ msgstr "1000 OK: %s Version: %s (%s)\n"
 
-#: src/dird/ua_query.c:220
-#, c-format
-msgid "Warning prompt %d missing.\n"
-msgstr ""
+#~ msgid ""
+#~ "End auto prune.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Fin de la purge automatique.\n"
+#~ "\n"
 
-#: src/dird/ua_query.c:265
-msgid ""
-"Entering SQL query mode.\n"
-"Terminate each query with a semicolon.\n"
-"Terminate query mode with a blank line.\n"
-msgstr ""
+#~ msgid "Pool resource"
+#~ msgstr "Ressource Pool"
 
-#: src/dird/ua_query.c:268 src/dird/ua_query.c:284
-msgid "Enter SQL query: "
-msgstr "Saisissez votre requête SQL : "
+#~ msgid "No Storage specification found in Job or Pool.\n"
+#~ msgstr "Pas de Storage défini dans le Job ou le Pool.\n"
 
-#: src/dird/ua_query.c:286
-msgid "Add to SQL query: "
-msgstr ""
+#, fuzzy
+#~ msgid "Using BaseJobId(s): %s\n"
+#~ msgstr "Migration utilisant JobId=%s Job=%s\n"
 
-#: src/dird/ua_query.c:289
-msgid "End query mode.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot find previous jobids.\n"
+#~ msgstr "Impossible de trouver la ressource Job \"%s\"\n"
 
-#: 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"
+#~ msgid "Start Backup JobId %s, Job=%s\n"
+#~ msgstr "Démarrage du backup JobId %s, Job=%s\n"
 
-#: src/dird/newvol.c:104
-#, c-format
-msgid "Created new Volume \"%s\" in catalog.\n"
-msgstr "Le Volume \"%s\" a été créé dans le catalogue.\n"
+#~ msgid "No Job status returned from FD.\n"
+#~ msgstr "Impossible de récupérer le statut du Job depuis le FD.\n"
 
-#: src/dird/newvol.c:131
-#, fuzzy, c-format
-msgid "SQL failed, but ignored. ERR=%s\n"
-msgstr "fopen %s en erreur : ERR=%s\n"
+#, fuzzy
+#~ msgid "Error getting Client record for Job report: ERR=%s"
+#~ msgstr "Impossible de mettre à jour les informations du Volume : ERR=%s"
 
-#: 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"
+#~ msgid "Backup OK -- with warnings"
+#~ msgstr "Backup OK -- avec des erreurs"
 
-#: 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"
+#~ msgid "Backup OK"
+#~ msgstr "Backup OK"
 
-#: src/dird/expand.c:255
-#, c-format
-msgid "Count not update counter %s: ERR=%s\n"
-msgstr ""
+#~ msgid "*** Backup Error ***"
+#~ msgstr "*** Backup en erreur ***"
 
-#: src/dird/expand.c:427
-#, c-format
-msgid "Cannot create var context: ERR=%s\n"
-msgstr ""
+#~ msgid "Backup Canceled"
+#~ msgstr "Backup annulé"
 
-#: src/dird/expand.c:432
-#, c-format
-msgid "Cannot set var callback: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "%s (%sB)"
+#~ msgstr "Nouveau Fichier : %s\n"
 
-#: src/dird/expand.c:438
-#, c-format
-msgid "Cannot set var operate: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Backup Level:           %s%s\n"
+#~ "  Client:                 \"%s\" %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Pool:                   \"%s\" (From %s)\n"
+#~ "  Catalog:                \"%s\" (From %s)\n"
+#~ "  Storage:                \"%s\" (From %s)\n"
+#~ "  Scheduled time:         %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Elapsed time:           %s\n"
+#~ "  Priority:               %d\n"
+#~ "  FD Files Written:       %s\n"
+#~ "  SD Files Written:       %s\n"
+#~ "  FD Bytes Written:       %s (%sB)\n"
+#~ "  SD Bytes Written:       %s (%sB)\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  Software Compression:   %s\n"
+#~ "%s  VSS:                    %s\n"
+#~ "  Encryption:             %s\n"
+#~ "  Accurate:               %s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s\n"
+#~ "  Non-fatal FD errors:    %d\n"
+#~ "  SD Errors:              %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ "  Build OS :               %s %s %s\n"
+#~ "  JobId :                  %d\n"
+#~ "  Job :                    %s\n"
+#~ "  Niveau de backup :       %s%s\n"
+#~ "  Client :                 \"%s\" %s\n"
+#~ "  FileSet :                \"%s\" %s\n"
+#~ "  Pool :                   \"%s\" (Depuis %s)\n"
+#~ "  Catalog:                \"%s\" (Depuis %s)\n"
+#~ "  Storage :                \"%s\" (Depuis %s)\n"
+#~ "  Date prévue :            %s\n"
+#~ "  Date de début :          %s\n"
+#~ "  Date de fin :            %s\n"
+#~ "  Temps écoulé :           %s\n"
+#~ "  Priorité :               %d\n"
+#~ "  Fichiers écrits FD :     %s\n"
+#~ "  Fichiers écrits SD :     %s\n"
+#~ "  Octets écrits FD :       %s (%so)\n"
+#~ "  Octets écrits SD :       %s (%so)\n"
+#~ "  Débit :                  %.1f Ko/s\n"
+#~ "  Compression logicielle : %s\n"
+#~ "  VSS :                    %s\n"
+#~ "  Cryptage :               %s\n"
+#~ "  Accurate :               %s\n"
+#~ "  Nom des Volumes :        %s\n"
+#~ "  Volume Session Id :      %d\n"
+#~ "  Volume Session date :    %d\n"
+#~ "  Taille du volume :       %s (%so)\n"
+#~ "  Erreurs FD non fatales : %d\n"
+#~ "  Erreurs du SD :          %d\n"
+#~ "  Statut de fin du FD :    %s\n"
+#~ "  Statut de fin du SD :    %s\n"
+#~ "  Statut de fin :          %s\n"
+#~ "\n"
 
-#: src/dird/expand.c:444 src/dird/expand.c:459
-#, c-format
-msgid "Cannot unescape string: ERR=%s\n"
-msgstr ""
+#~ msgid "yes"
+#~ msgstr "oui"
 
-#: src/dird/expand.c:452
-#, c-format
-msgid "Cannot expand expression \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "no"
+#~ msgstr "non"
 
-#: src/dird/expand.c:470
-#, c-format
-msgid "Cannot destroy var context: ERR=%s\n"
-msgstr ""
+#~ msgid ""
+#~ "Could not open WriteBootstrap file:\n"
+#~ "%s: ERR=%s\n"
+#~ msgstr ""
+#~ "Impossible d'ouvrir le fichier bootstrap (WriteBootstrap) :\n"
+#~ "%s : ERR=%s\n"
 
-#: src/dird/recycle.c:69
-#, c-format
-msgid "Recycled volume \"%s\"\n"
-msgstr "Volume recyclé \"%s\"\n"
+#~ msgid "Unable to create bootstrap file %s. ERR=%s\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/dird/ua_purge.c:90
 #, fuzzy
-msgid ""
-"\n"
-"This command can be DANGEROUS!!!\n"
-"\n"
-"It purges (deletes) all Files from a Job,\n"
-"JobId, Client or Volume; or it purges (deletes)\n"
-"all Jobs from a Client or Volume without regard\n"
-"to retention periods. Normally you should use the\n"
-"PRUNE command, which respects retention periods.\n"
-msgstr ""
-"\n"
-"Cette commande peut être DANGEUREUSE !\n"
-"\n"
-"Elle supprime tous les enregistrements des fichiers d'un job, \n"
-"d'un client ou d'un volume ; ou bien elle supprime tous les jobs\n"
-"d'un client ou d'un volume sans s'occuper des périodes de rétention.\n"
-"\n"
-"Normalement vous devez utiliser la commande PRUNE qui respecte les périodes\n"
-"de rétention.\n"
-
-#: src/dird/ua_purge.c:157
-msgid "Choose item to purge"
-msgstr "Choisissez l'élément à purger"
+#~ msgid "No files found to read. No bootstrap file written.\n"
+#~ msgstr ""
+#~ "Aucun fichier trouvé pour la restauration/migration. Pas de fichier "
+#~ "Bootstrap écrit.\n"
 
-#: src/dird/ua_purge.c:204
-#, c-format
-msgid "Begin purging files for Client \"%s\"\n"
-msgstr "Début de la purge des fichiers du client \"%s\"\n"
+#~ msgid "Error writing bsr file.\n"
+#~ msgstr "Erreur pendant l'écriture du fichier bsr.\n"
 
-#: src/dird/ua_purge.c:213 src/dird/ua_purge.c:263
-#, c-format
-msgid "No Files found for client %s to purge from %s catalog.\n"
-msgstr "Pas de fichier à purger pour le client \"%s\" dans le catalogue %s.\n"
+#~ msgid "Bootstrap records written to %s\n"
+#~ msgstr "Fichier bootstrap écrit sur %s\n"
 
-#: src/dird/ua_purge.c:216
-#, c-format
-msgid "Files for %d Jobs for client \"%s\" purged from %s catalog.\n"
-msgstr "Fichiers de %d jobs du client \"%s\" purgé du catalogue %s.\n"
+#, fuzzy
+#~ msgid ""
+#~ "The Job will require the following (*=>InChanger):\n"
+#~ "   Volume(s)                 Storage(s)                SD Device(s)\n"
+#~ "===========================================================================\n"
+#~ msgstr ""
+#~ "Ce job va utiliser les éléments suivants :\n"
+#~ "   Volume(s)                 Storage(s)                SD Device(s)\n"
+#~ "===========================================================================\n"
 
-#: src/dird/ua_purge.c:254
-#, c-format
-msgid "Begin purging jobs from Client \"%s\"\n"
-msgstr "Début de purge des jobs du client \"%s\"\n"
+#~ msgid "No Volumes found to restore.\n"
+#~ msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/ua_purge.c:266
-#, c-format
-msgid "%d Jobs for client %s purged from %s catalog.\n"
-msgstr "%d jobs du client \"%s\" purgé du catalogue %s.\n"
+#~ msgid "1990 Invalid Catalog Request: %s"
+#~ msgstr "1990 Requête sur le Catalogue Invalide : %s"
 
-#: src/dird/ua_purge.c:464
-#, c-format
-msgid ""
-"\n"
-"Volume \"%s\" has VolStatus \"%s\" and cannot be purged.\n"
-"The VolStatus must be: Append, Full, Used, or Error to be purged.\n"
-msgstr ""
-"\n"
-"Le volume \"%s\" est en état \"%s\" et il ne peut pas être purgé.\n"
-"Son statut doit être : Append, Full, Used ou Error pour être purgé.\n"
+#~ msgid "Invalid Catalog request; DB not open: %s"
+#~ msgstr "Requête sur le Catalogue invalide ; la base n'est pas ouverte : %s"
 
-#: src/dird/ua_purge.c:492
-#, c-format
-msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
-msgstr "%d fichier%s du volume \"%s\" purgé du catalogue.\n"
+#, fuzzy
+#~ msgid "Pool \"%s\" not found for SD find media request.\n"
+#~ msgstr "La ressource Pool \"%s\" est introuvable pour le volume \"%s\"\n"
 
-#: src/dird/ua_purge.c:541
-#, c-format
-msgid ""
-"There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
-msgstr ""
-"Il n'y a plus de job associé avec le volume \"%s\". Il est marqué purgé.\n"
+#~ msgid "1901 No Media.\n"
+#~ msgstr "1901 Pas de Media.\n"
 
-#: 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"
+#~ msgid "not in Pool"
+#~ msgstr "non présent dans le Pool"
 
-#: 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"
+#~ msgid "is not Enabled"
+#~ msgstr "n'est pas activé (Enabled)"
 
-#: 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"
+#~ msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
+#~ msgstr "1998 Le statut du Volume \"%s\" est %s, %s.\n"
 
-#: src/dird/ua_purge.c:625
-#, c-format
-msgid "The volume \"%s\" has been truncated\n"
-msgstr ""
+#~ msgid "1997 Volume \"%s\" not in catalog.\n"
+#~ msgstr "1997 le Volume \"%s\" n'est pas dans le catalogue.\n"
 
-#: 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"
+#~ 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/ua_purge.c:713
-#, fuzzy, c-format
-msgid "No Volumes found to perform %s action.\n"
-msgstr "Pas de volume à labéliser ou pas de codebar.\n"
+#~ msgid "1993 Update Media error\n"
+#~ msgstr "1993 Erreur sur la mise à jour du Media\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "1992 Create JobMedia error\n"
+#~ msgstr "1991 Erreur sur la mise à jour du JobMedia\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Attribute create error: ERR=%s"
+#~ msgstr "Erreur sur l'autochangeur : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Restore object create error. %s"
+#~ msgstr "Restauration annulée"
 
-#: src/dird/vbackup.c:76 src/dird/migrate.c:114
-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"
+#, fuzzy
+#~ msgid "1994 Invalid Catalog Update: %s"
+#~ msgstr "1990 Requête sur le Catalogue Invalide : %s"
 
-#: 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:871
-#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
-msgid "Pool resource"
-msgstr "Ressource Pool"
+#, fuzzy
+#~ msgid "fread attr spool error. ERR=%s\n"
+#~ msgstr "Erreur pendant l'écriture des attributs dans le spool. ERR=%s\n"
 
-#: src/dird/vbackup.c:116 src/dird/migrate.c:285
 #, fuzzy
-msgid "Job Pool's NextPool resource"
-msgstr "Sélectionnez le Pool"
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\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"
+#~ "       -f          run in foreground (for debugging)\n"
+#~ "       -g          groupid\n"
+#~ "       -m          print kaboom output (for debugging)\n"
+#~ "       -r <job>    run <job> now\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - read configuration and exit\n"
+#~ "       -u          userid\n"
+#~ "       -v          verbose user messages\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -d <nn>        positionne le niveau de debug à nn\n"
+#~ "      -dt            affiche un timestamp devant chaque ligne de debug\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -r <job>       lance <job> maintenant\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/dird/vbackup.c:147
-#, fuzzy, c-format
-msgid "Start Virtual Backup JobId %s, Job=%s\n"
-msgstr "Démarrage du backup JobId %s, Job=%s\n"
+#~ msgid "Resetting previous configuration.\n"
+#~ msgstr "Retour à la dernière configuration.\n"
 
-#: src/dird/vbackup.c:151
-msgid ""
-"This Job is not an Accurate backup so is not equivalent to a Full backup.\n"
-msgstr ""
+#~ 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/vbackup.c:158
-#, fuzzy
-msgid "No previous Jobs found.\n"
-msgstr "Aucun Job trouvé pour la migration.\n"
+#~ 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/vbackup.c:180
-#, fuzzy, c-format
-msgid "Error getting Job record for previous Job: ERR=%s"
-msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
+#~ msgid "%s"
+#~ msgstr "%s"
 
-#: src/dird/vbackup.c:186 src/dird/migrate.c:131
 #, fuzzy
-msgid "Could not get or create the FileSet record.\n"
-msgstr "Impossible de créer la structure BSOCK cliente.\n"
+#~ msgid "Could not create storage record for %s\n"
+#~ msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Could not update storage record for %s\n"
+#~ msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: 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"
+#~ msgid "Job"
+#~ msgstr "Job"
 
-#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
-msgid "Backup OK"
-msgstr "Backup OK"
+#~ msgid "JobDefs"
+#~ msgstr "JobDefs"
 
-#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
-msgid "*** Backup Error ***"
-msgstr "*** Backup en erreur ***"
+#~ msgid "  --> RegexWhere=%s\n"
+#~ msgstr "  --> RegexWhere=%s\n"
 
-#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
-msgid "Backup Canceled"
-msgstr "Backup annulé"
+#, fuzzy
+#~ msgid "  --> PluginOptions=%s\n"
+#~ msgstr "  --> RunOnSuccess=%u\n"
 
-#: src/dird/vbackup.c:393
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           Virtual Full\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"Bacula %s %s (%s): %s\n"
-"  Build OS :               %s %s %s\n"
-"  JobId :                  %d\n"
-"  Job :                    %s\n"
-"  Niveau de backup :       %s%s\n"
-"  Client :                 \"%s\" %s\n"
-"  FileSet :                \"%s\" %s\n"
-"  Pool :                   \"%s\" (Depuis %s)\n"
-"  Storage :                \"%s\" (Depuis %s)\n"
-"  Date prévue :            %s\n"
-"  Date de début :          %s\n"
-"  Date de fin :            %s\n"
-"  Temps écoulé :           %s\n"
-"  Priorité :               %d\n"
-"  Fichiers écrits FD :     %s\n"
-"  Fichiers écrits SD :     %s\n"
-"  Octets écrits FD :       %s (%so)\n"
-"  Octets écrits SD :       %s (%so)\n"
-"  Débit :                  %.1f Ko/s\n"
-"  Compression logicielle : %s\n"
-"  Nom des Volumes :        %s\n"
-"  Volume Session Id :      %d\n"
-"  Volume Session date :    %d\n"
-"  Taille du volume :       %s (%so)\n"
-"  Erreurs FD non fatales : %d\n"
-"  Erreurs du SD :          %d\n"
-"  Statut de fin du FD :    %s\n"
-"  Statut de fin du SD :    %s\n"
-"  Statut de fin :          %s\n"
-
-#: src/dird/ua_output.c:69 src/dird/ua_output.c:93
-msgid "ON or OFF keyword missing.\n"
-msgstr "Mot clef ON ou OFF manquant.\n"
-
-#: src/dird/ua_output.c:113
-#, fuzzy
-msgid "Disabled Jobs:\n"
-msgstr "est bloqué"
-
-#: src/dird/ua_output.c:119
-#, fuzzy
-msgid "No disabled Jobs.\n"
-msgstr "Pas de job programmé.\n"
-
-#: src/dird/ua_output.c:163
-#, fuzzy
-msgid "disabled"
-msgstr "est bloqué"
-
-#: src/dird/ua_output.c:211
-msgid "Keywords for the show command are:\n"
-msgstr ""
+#~ msgid "  --> MaxRunTime=%u\n"
+#~ msgstr "  --> MaxRunTime=%u\n"
 
-#: src/dird/ua_output.c:217
-#, c-format
-msgid "%s resource %s not found.\n"
-msgstr "%s ressource %s introuvable.\n"
+#~ msgid "  --> MaxWaitTime=%u\n"
+#~ msgstr "  --> MaxWaitTime=%u\n"
 
-#: src/dird/ua_output.c:220
-#, c-format
-msgid "Resource %s not found\n"
-msgstr "Ressource %s introuvable\n"
+#~ msgid "  --> MaxStartDelay=%u\n"
+#~ msgstr "  --> MaxStartDelay=%u\n"
 
-#: src/dird/ua_output.c:290
-msgid "Hey! DB is NULL\n"
-msgstr ""
+#, fuzzy
+#~ msgid "  --> MaxRunSchedTime=%u\n"
+#~ msgstr "  --> MaxRunTime=%u\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "  --> Base %s\n"
+#~ msgstr "  --> Target=%s\n"
 
-#: src/dird/ua_output.c:465
-msgid "No Pool specified.\n"
-msgstr "Pas de Pool spécifié.\n"
+#~ msgid " --> RunScript\n"
+#~ msgstr " --> RunScript\n"
 
-#: src/dird/ua_output.c:486
-#, c-format
-msgid "Pool: %s\n"
-msgstr "Pool : %s\n"
+#~ msgid "  --> Command=%s\n"
+#~ msgstr "  --> Command=%s\n"
 
-#: src/dird/ua_output.c:502
-msgid "Ignoring invalid value for days. Max is 50.\n"
-msgstr ""
+#~ msgid "  --> Target=%s\n"
+#~ msgstr "  --> Target=%s\n"
 
-#: src/dird/ua_output.c:524
-#, c-format
-msgid "Unknown list keyword: %s\n"
-msgstr ""
+#~ msgid "  --> RunOnSuccess=%u\n"
+#~ msgstr "  --> RunOnSuccess=%u\n"
 
-#: 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"
+#~ msgid "  --> RunOnFailure=%u\n"
+#~ msgstr "  --> RunOnFailure=%u\n"
 
-#: 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"
+#~ msgid "  --> RunWhen=%u\n"
+#~ msgstr "  --> RunWhen=%u\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "      MaxRunSchedTime=%u\n"
+#~ msgstr "  --> MaxRunTime=%u\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "      Priority=%u\n"
+#~ msgstr "Priorité"
 
-#: 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"
+#, fuzzy
+#~ msgid "      ScratchPool=%s\n"
+#~ msgstr "Utilisation du Catalogue \"%s\"\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "      Catalog=%s\n"
+#~ msgstr "Utilisation du Catalogue \"%s\"\n"
 
-#: src/dird/ua_output.c:733
-#, c-format
-msgid "Pool %s not in database. %s"
-msgstr "Pool %s introuvable en base. %s"
+#~ msgid "Cannot find Pool resource %s\n"
+#~ msgstr "Impossible de trouver la ressource Pool \"%s\"\n"
 
-#: src/dird/ua_output.c:741
-#, c-format
-msgid "Pool %s created in database.\n"
-msgstr "Pool %s créé en base.\n"
+#~ msgid "Cannot find Console resource %s\n"
+#~ msgstr "Impossible de trouver la ressource Console \"%s\"\n"
 
-#: src/dird/ua_output.c:794
-msgid "You have no messages.\n"
-msgstr "Vous n'avez pas de messages.\n"
+#~ msgid "Cannot find Director resource %s\n"
+#~ msgstr "Impossible de trouver la ressource Director \"%s\"\n"
 
-#: src/dird/ua_output.c:874
-msgid "Message too long to display.\n"
-msgstr ""
+#~ msgid "Cannot find Storage resource %s\n"
+#~ msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 
-#: src/dird/ua_dotcmds.c:155 src/dird/ua_cmds.c:236
-#, c-format
-msgid "Can't use %s command in a runscript"
-msgstr ""
+#~ msgid "Cannot find Job resource %s\n"
+#~ msgstr "Impossible de trouver la ressource Job \"%s\"\n"
 
-#: src/dird/ua_dotcmds.c:175
-msgid ": is an invalid command.\n"
-msgstr ": est une commande invalide.\n"
+#~ msgid "Cannot find Counter resource %s\n"
+#~ msgstr "Impossible de trouver la ressource Counter \"%s\"\n"
 
-#: 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"
+#~ msgid "Cannot find Client resource %s\n"
+#~ msgstr "Impossible de trouver la ressource Client \"%s\"\n"
 
-#: 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:1160 src/dird/job.c:1164
-msgid "unknown source"
-msgstr "source inconnue"
+#~ msgid "Cannot find Schedule resource %s\n"
+#~ msgstr "Impossible de trouver la ressource Schedule \"%s\"\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Expected one of: %s, got: %s"
+#~ msgstr "Attendait %s, a pas : %s"
 
-#: 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"
+#~ msgid "Expected a Migration Job Type keyword, got: %s"
+#~ msgstr "Attendait un type de Job de Migration, eu : %s"
 
-#: 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"
+#~ msgid "Expected a Job Level keyword, got: %s"
+#~ msgstr "Attendait un niveau de sauvegarde, eu : %s"
 
-#: 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"
+#~ msgid "Expected a Restore replacement option, got: %s"
+#~ msgstr "Attendait un niveau de remplacement, eu : %s"
 
-#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
-#, fuzzy, c-format
-msgid "Unknown command: %s\n"
-msgstr "Erreur inconnue."
+#~ msgid "Expect %s, got: %s"
+#~ msgstr "Attendait %s, a pas : %s"
 
-#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
-msgid "Available daemons are: \n"
-msgstr "Les démons disponibles sont :\n"
+#~ msgid "Expecting open brace. Got %s"
+#~ msgstr "Attendait {, eu : %s"
 
-#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
-msgid "Director"
-msgstr "Director"
+#~ msgid "Expecting keyword, got: %s\n"
+#~ msgstr "Attendait un mot clef, eu : %s\n"
 
-#: src/dird/ua_dotcmds.c:736
-msgid "Select daemon type to make die"
-msgstr "Sélectionnez le composant a tuer"
+#~ msgid "expected an equals, got: %s"
+#~ msgstr "attendait un égale, eu : %s"
 
-#: src/dird/ua_dotcmds.c:762
-msgid "The Director will generate a deadlock.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Client: "
+#~ msgstr "Client"
 
-#: src/dird/ua_dotcmds.c:766
-msgid "The Director will segment fault.\n"
-msgstr ""
+#~ msgid ", since="
+#~ msgstr ", depuis="
 
-#: src/dird/ua_dotcmds.c:955
-msgid "Access to specified Client or FileSet not allowed.\n"
-msgstr ""
+#~ msgid ""
+#~ "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
+#~ msgstr ""
+#~ "Pas de précédent backup Full utilisable. Lancement d'un backup FULL.\n"
 
-#: 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 ""
+#~ msgid " (upgraded from %s)"
+#~ msgstr " (à la place de %s)"
 
-#: src/dird/ua_dotcmds.c:999
 #, fuzzy
-msgid "query keyword not found.\n"
-msgstr "%s ressource %s introuvable.\n"
-
-#: src/dird/ua_dotcmds.c:1026
-#, fuzzy, c-format
-msgid "List MediaType failed: ERR=%s\n"
-msgstr "fopen %s en erreur : ERR=%s\n"
+#~ msgid ""
+#~ "No prior or suitable Differential backup found in catalog. Doing "
+#~ "Differential backup.\n"
+#~ msgstr ""
+#~ "Pas de précédent backup Full utilisable. Lancement d'un backup FULL.\n"
 
-#: src/dird/ua_dotcmds.c:1040
-#, fuzzy, c-format
-msgid "List Media failed: ERR=%s\n"
-msgstr "fopen %s en erreur : ERR=%s\n"
+#~ msgid "Prior failed job found in catalog. Upgrading to %s.\n"
+#~ msgstr "Le job précédent était en erreur. Passage au type %s.\n"
 
-#: 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"
+#~ msgid "Cannot run program: %s. ERR=%s\n"
+#~ msgstr "Impossible de lancer la commande : %s. ERR=%s\n"
 
-#: src/dird/next_vol.c:166
-#, c-format
-msgid "Purging oldest volume \"%s\"\n"
-msgstr "Purge du plus ancien volume \"%s\"\n"
+#~ msgid "Error running program: %s. ERR=%s\n"
+#~ msgstr "Erreur dans l'exécution de la commande : %s. ERR=%s\n"
 
-#: src/dird/next_vol.c:172
-#, c-format
-msgid "Pruning oldest volume \"%s\"\n"
-msgstr "Prunning du plus ancien volume \"%s\"\n"
+#~ msgid "Cannot open included file: %s. ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier inclus : %s. ERR=%s\n"
 
-#: src/dird/next_vol.c:191
-msgid "We seem to be looping trying to find the next volume. I give up.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Client \"%s\" RunScript failed.\n"
+#~ msgstr "le client \"%s\" est introuvable.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "RestoreObject failed.\n"
+#~ msgstr "restauration de fichier"
 
-#: 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"
+#~ msgid "bget_dirmsg: unknown bnet signal %d\n"
+#~ msgstr "bget_dirmsg : signal bnet inconnu %d\n"
 
-#: 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"
+#~ msgid "Malformed message: %s\n"
+#~ msgstr "Message mal formé : %s\n"
 
-#: 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"
+#~ msgid "Bad response to %s command: wanted %s, got %s\n"
+#~ msgstr "Mauvaise réponse à la commande %s : voulait %s, pas %s\n"
 
-#: src/dird/next_vol.c:254
-#, fuzzy, c-format
-msgid ""
-"Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
-"Used.\n"
-msgstr ""
-"Nombre maximum de job sur le volume atteind. Marquage du volume \"%s\" comme "
-"Used.\n"
+#~ msgid "Socket error on %s command: ERR=%s\n"
+#~ msgstr "Erreur de socket sur la commande %s : ERR=%s\n"
 
-#: src/dird/next_vol.c:267
-#, c-format
-msgid "Catalog error updating volume \"%s\". ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a strip path positive integer, got:%s:"
+#~ msgstr "Attendait un entier positif, pas : %s\n"
 
-#: src/dird/next_vol.c:289
-msgid "volume has expired"
-msgstr "le volume a expiré"
+#~ msgid "Expected a FileSet option keyword, got:%s:"
+#~ msgstr "Attendait une option de FileSet, eu : %s:"
 
-#: src/dird/next_vol.c:307 src/dird/next_vol.c:351
-#, c-format
-msgid "Recycled current volume \"%s\"\n"
-msgstr ""
+#~ msgid "Expected an drivetype string, got: %s\n"
+#~ msgstr "Attendait un type de lecteur, pas : %s\n"
 
-#: src/dird/next_vol.c:312
-msgid "and recycling of current volume failed"
-msgstr ""
+#~ msgid "Expected a filename, got: %s"
+#~ msgstr "Attendait un nom de fichier, eu : %s"
 
-#: src/dird/next_vol.c:318
-msgid "but should be Append, Purged or Recycle"
-msgstr "mais doit être Append, Purged ou bien Recycle"
+#~ msgid "Expected a FileSet keyword, got: %s"
+#~ msgstr "Attendait le mot clef FileSet, eu : %s"
 
-#: src/dird/next_vol.c:327
-msgid "volume has recycling disabled"
-msgstr "le recyclage du volume est désactivé"
+#~ msgid "Could not open database \"%s\".\n"
+#~ msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/dird/next_vol.c:354
-msgid ""
-"but should be Append, Purged or Recycle (recycling of the current volume "
-"failed)"
-msgstr ""
+#~ msgid "unknown source"
+#~ msgstr "source inconnue"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Job resource"
+#~ msgstr "Pool à partir de sa définition"
 
-#: 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"
+#, fuzzy
+#~ msgid "Job canceled because max run sched time exceeded.\n"
+#~ msgstr ""
+#~ "Temps d'exécution maximum depuis la planification atteind. Abandon du "
+#~ "job.\n"
 
-#: 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"
+#~ msgid "Failed to connect to File daemon.\n"
+#~ msgstr "Impossible de se connecter au client.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Failed to select Storage daemon.\n"
+#~ msgstr "Impossible de se connecter au Storage daemon.\n"
 
-#: 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"
+#~ msgid "Failed to connect to Storage daemon.\n"
+#~ msgstr "Impossible de se connecter au Storage daemon.\n"
 
-#: src/dird/ua_cmds.c:120
 #, fuzzy
-msgid "Add media to a pool"
-msgstr "ajouter un média dans un pool"
+#~ msgid "canceled"
+#~ msgstr "Annulé"
 
-#: src/dird/ua_cmds.c:121
 #, fuzzy
-msgid "Autodisplay console messages"
-msgstr "autodisplay [on|off] -- messages de la console"
+#~ msgid "JobId %s, Job %s marked to be %s.\n"
+#~ msgstr "JobId %s, Job %s marqué pour être annulé.\n"
 
-#: src/dird/ua_cmds.c:122
-msgid "Automount after label"
-msgstr ""
+#~ msgid "Max wait time exceeded. Job canceled.\n"
+#~ msgstr "Temps d'attente maximum dépassé. Abandon du job.\n"
 
-#: src/dird/ua_cmds.c:123
-#, fuzzy
-msgid "Cancel a job"
-msgstr "Annulé"
+#~ msgid "Max run time exceeded. Job canceled.\n"
+#~ msgstr "Temps d'exécution maximum atteind. Abandon du job.\n"
 
-#: src/dird/ua_cmds.c:124
 #, fuzzy
-msgid "Create DB Pool from resource"
-msgstr "Pool à partir de sa définition"
+#~ msgid "Max run sched time exceeded. Job canceled.\n"
+#~ msgstr "Temps d'exécution maximum atteind. Abandon du job.\n"
 
-#: src/dird/ua_cmds.c:125
 #, fuzzy
-msgid "Delete volume, pool or job"
-msgstr "met à jour un volume, un pool ou bien des slots"
+#~ msgid "Pool \"%s\" not in database. ERR=%s"
+#~ msgstr "Pool %s introuvable en base. %s"
 
-#: src/dird/ua_cmds.c:126
 #, fuzzy
-msgid "Disable a job"
-msgstr "est bloqué"
-
-#: src/dird/ua_cmds.c:127
-msgid "Enable a job"
-msgstr ""
+#~ msgid "Created database record for Pool \"%s\".\n"
+#~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_cmds.c:128
 #, fuzzy
-msgid "Performs FileSet estimate, listing gives full listing"
-msgstr ""
-"estimate <listing> -- estime un FileSet (listing donne la liste des fichiers)"
+#~ msgid "Storage from Run NextPool override"
+#~ msgstr "Sélectionnez le Pool"
 
-#: src/dird/ua_cmds.c:131 src/dird/ua_cmds.c:155
-msgid "Terminate Bconsole session"
-msgstr ""
+#, fuzzy
+#~ msgid "Job's NextPool resource"
+#~ msgstr "Sélectionnez le Pool"
 
-#: src/dird/ua_cmds.c:132
 #, fuzzy
-msgid "Non-interactive gui mode"
-msgstr "gui [on|off] -- mode non interactif (pour interface graphique)"
+#~ msgid "Storage from Job's NextPool resource"
+#~ msgstr "Sélectionnez le Pool"
 
-#: src/dird/ua_cmds.c:133
 #, fuzzy
-msgid "Print help on specific command"
-msgstr "affiche cette commande"
+#~ msgid "Job Pool's NextPool resource"
+#~ msgstr "Sélectionnez le Pool"
 
-#: src/dird/ua_cmds.c:138
 #, fuzzy
-msgid "Label a tape"
-msgstr "labéliser une bande"
+#~ msgid "Storage from Pool's NextPool resource"
+#~ msgstr "Sélectionnez le Pool"
 
-#: src/dird/ua_cmds.c:139
 #, fuzzy
-msgid "List objects from catalog"
-msgstr "purge les enregistrements du catalogue"
+#~ msgid "Client resource"
+#~ msgstr "Pas de ressource « Restore Job » trouvée !\n"
 
-#: src/dird/ua_cmds.c:142
-msgid "Full or long list like list command"
-msgstr ""
+#~ msgid "No storage specified.\n"
+#~ msgstr "Pas de storage sélectionné.\n"
 
-#: src/dird/ua_cmds.c:145
 #, fuzzy
-msgid "Display pending messages"
-msgstr "Message de Bacula"
+#~ msgid "Could not start clone job: \"%s\".\n"
+#~ msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
+
+#~ 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/ua_cmds.c:146
 #, fuzzy
-msgid "Print current memory usage"
-msgstr "affiche la consommation mémoire courante"
+#~ msgid "Could not get or create the FileSet record.\n"
+#~ msgstr "Impossible de créer la structure BSOCK cliente.\n"
 
-#: src/dird/ua_cmds.c:147
 #, fuzzy
-msgid "Mount storage"
-msgstr "unmount <nom-storage> -- démonte un lecteur"
+#~ msgid "No previous Job found to %s.\n"
+#~ msgstr "Aucun Job trouvé pour la migration.\n"
 
-#: src/dird/ua_cmds.c:150
 #, fuzzy
-msgid "Prune expired records from catalog"
-msgstr "purge les entrées expirées du catalogue"
+#~ msgid "Create bootstrap file failed.\n"
+#~ msgstr "Impossible de restaurer sans un fichier bootstrap.\n"
 
-#: src/dird/ua_cmds.c:153
 #, fuzzy
-msgid "Purge records from catalog"
-msgstr "purge les enregistrements du catalogue"
+#~ msgid "Previous Job has no data to %s.\n"
+#~ msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/ua_cmds.c:154
-msgid "Python control commands"
-msgstr ""
+#, fuzzy
+#~ msgid "Job resource not found for \"%s\".\n"
+#~ msgstr "La ressource Pool \"%s\" est introuvable !\n"
 
-#: src/dird/ua_cmds.c:156
 #, fuzzy
-msgid "Query catalog"
-msgstr "interroger le catalogue"
+#~ msgid "Previous Job resource not found for \"%s\".\n"
+#~ msgstr "La ressource Pool \"%s\" est introuvable !\n"
 
-#: src/dird/ua_cmds.c:157
 #, fuzzy
-msgid "Restore files"
-msgstr "restauration de fichier"
+#~ msgid "setup job failed.\n"
+#~ msgstr "Job échoué.\n"
 
-#: src/dird/ua_cmds.c:162
 #, fuzzy
-msgid "Relabel a tape"
-msgstr "re-labélise une bande"
+#~ 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"
 
-#: src/dird/ua_cmds.c:165
 #, fuzzy
-msgid "Release storage"
-msgstr "Restaurer"
+#~ msgid "Start %s JobId %s, Job=%s\n"
+#~ msgstr "Démarrage du backup JobId %s, Job=%s\n"
 
-#: src/dird/ua_cmds.c:166
 #, fuzzy
-msgid "Reload conf file"
-msgstr "recharge la configuration"
+#~ msgid "Could not start migration/copy job.\n"
+#~ msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/dird/ua_cmds.c:167
 #, fuzzy
-msgid "Run a job"
-msgstr "Job en cours :\n"
+#~ msgid "%s JobId %d started.\n"
+#~ msgstr "Le job %d est annulé.\n"
+
+#~ msgid "%s OK -- with warnings"
+#~ msgstr "%s OK -- avec des avertissements"
+
+#~ msgid "*** %s Error ***"
+#~ msgstr "*** %s Erreur ***"
+
+#~ msgid "%s Canceled"
+#~ msgstr "%s Annulé"
 
-#: src/dird/ua_cmds.c:171
 #, fuzzy
-msgid "Report status"
-msgstr "Statut :\n"
+#~ msgid "%s -- no files to %s"
+#~ msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/ua_cmds.c:174
 #, fuzzy
-msgid "Sets debug level"
-msgstr "positionne le niveau de debug"
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  Prev Backup JobId:      %s\n"
+#~ "  Prev Backup Job:        %s\n"
+#~ "  New Backup JobId:       %s\n"
+#~ "  Current JobId:          %s\n"
+#~ "  Current Job:            %s\n"
+#~ "  Backup Level:           %s%s\n"
+#~ "  Client:                 %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Read Pool:              \"%s\" (From %s)\n"
+#~ "  Read Storage:           \"%s\" (From %s)\n"
+#~ "  Write Pool:             \"%s\" (From %s)\n"
+#~ "  Write Storage:          \"%s\" (From %s)\n"
+#~ "  Catalog:                \"%s\" (From %s)\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Elapsed time:           %s\n"
+#~ "  Priority:               %d\n"
+#~ "  SD Files Written:       %s\n"
+#~ "  SD Bytes Written:       %s (%sB)\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s\n"
+#~ "  SD Errors:              %d\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ "  Build OS :               %s %s %s\n"
+#~ "  Prec Backup JobId :      %s\n"
+#~ "  Prec Backup Job :        %s\n"
+#~ "  Nouveau JobId :          %s\n"
+#~ "  JobId courrant :         %s\n"
+#~ "  Job courrant :           %s\n"
+#~ "  Niveau de backup :       %s%s\n"
+#~ "  Client :                 %s\n"
+#~ "  FileSet :                \"%s\" %s\n"
+#~ "  Pool de lecture :        \"%s\" (Depuis %s)\n"
+#~ "  Storage de lecture :     \"%s\" (Depuis %s)\n"
+#~ "  Pool d'écriture :        \"%s\" (Depuis %s)\n"
+#~ "  Storage d'écriture :     \"%s\" (Depuis %s)\n"
+#~ "  Catalogue :              \"%s\" (Depuis %s)\n"
+#~ "  Date de début :          %s\n"
+#~ "  Date de fin :            %s\n"
+#~ "  Temps écoulé :           %s\n"
+#~ "  Priorité :               %d\n"
+#~ "  Fichiers écrits SD :     %s\n"
+#~ "  Octets écrits SD :       %s (%so)\n"
+#~ "  Débit :                  %.1f Ko/s\n"
+#~ "  Nom des Volumes :        %s\n"
+#~ "  Volume Session Id :      %d\n"
+#~ "  Volume Session date :    %d\n"
+#~ "  Taille du volume :       %s (%so)\n"
+#~ "  Erreurs du SD :          %d\n"
+#~ "  Statut de fin du SD :    %s\n"
+#~ "  Statut de fin :          %s\n"
 
-#: src/dird/ua_cmds.c:177
-msgid "Sets new client address -- if authorized"
-msgstr ""
+#, fuzzy
+#~ msgid "No %s SQL selection pattern specified.\n"
+#~ msgstr "Pas de storage sélectionné.\n"
 
-#: src/dird/ua_cmds.c:178
 #, fuzzy
-msgid "Show resource records"
-msgstr "Pool à partir de sa définition"
+#~ msgid "SQL failed. ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/ua_cmds.c:181
 #, fuzzy
-msgid "Use SQL to query catalog"
-msgstr "passer des commandes SQL pour interroger le catalogue"
+#~ msgid "No Volumes found to %s.\n"
+#~ msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/ua_cmds.c:182
 #, fuzzy
-msgid "Print current time"
-msgstr "affiche la date courante"
+#~ msgid "Invalid JobId found.\n"
+#~ msgstr "Période invalide.\n"
 
-#: src/dird/ua_cmds.c:183
 #, fuzzy
-msgid "Turn on/off trace to file"
-msgstr "active/désactive le fichier de trace"
+#~ msgid "Unknown %s Selection Type.\n"
+#~ msgstr "Job du Type=%d inconnu\n"
 
-#: src/dird/ua_cmds.c:184
 #, fuzzy
-msgid "Unmount storage"
-msgstr "unmount <nom-storage> -- démonte un lecteur"
+#~ msgid "No JobIds found to %s.\n"
+#~ msgstr "Pas de job trouvé pour : %s.\n"
 
-#: src/dird/ua_cmds.c:187
 #, fuzzy
-msgid "Umount - for old-time Unix guys, see unmount"
-msgstr "umount <nom-storage> -- démonte un lecteur"
+#~ msgid "The following %u JobId%s chosen to be %s: %s\n"
+#~ msgstr "Les fichiers suivants sont absents :\n"
 
-#: src/dird/ua_cmds.c:190
 #, fuzzy
-msgid "Update volume, pool or stats"
-msgstr "met à jour un volume, un pool ou bien des slots"
+#~ msgid "%s using JobId=%s Job=%s\n"
+#~ msgstr "Migration utilisant JobId=%s Job=%s\n"
 
-#: src/dird/ua_cmds.c:196
 #, fuzzy
-msgid "Use catalog xxx"
-msgstr "interroger le catalogue"
+#~ msgid "No %ss found to %s.\n"
+#~ msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/ua_cmds.c:197
-msgid "Does variable expansion"
-msgstr ""
+#, fuzzy
+#~ msgid "SQL to get uncopied jobs failed. ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/ua_cmds.c:198
 #, fuzzy
-msgid "Print Director version"
-msgstr "affiche la version du Director"
+#~ msgid "No %s %s selection pattern specified.\n"
+#~ msgstr "Pas de storage sélectionné.\n"
 
-#: src/dird/ua_cmds.c:199
 #, fuzzy
-msgid "Wait until no jobs are running"
-msgstr "Aucun de vos jobs ne sont en cours.\n"
+#~ msgid "SQL to get %s failed. ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/ua_cmds.c:247
-#, c-format
-msgid "%s: is an invalid command.\n"
-msgstr "%s : est une commande invalide.\n"
+#, fuzzy
+#~ msgid "No %s found to %s.\n"
+#~ msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/ua_cmds.c:288
-msgid ""
-"You probably don't want to be using this command since it\n"
-"creates database records without labeling the Volumes.\n"
-"You probably want to use the \"label\" command.\n"
-"\n"
-msgstr ""
+#~ msgid "Connecting to Storage daemon %s at %s:%d ...\n"
+#~ msgstr "Connexion au Storage Daemon %s (%s:%d)...\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Using Device \"%s\" to read.\n"
+#~ msgstr "Using Device \"%s\"\n"
 
-#: src/dird/ua_cmds.c:307
-msgid "Enter new maximum (zero for unlimited): "
-msgstr "Entrez le nouveau maximum (zéro pour illimité) : "
+#, fuzzy
+#~ msgid "Using Device \"%s\" to write.\n"
+#~ msgstr "Using Device \"%s\"\n"
 
-#: 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 : "
+#~ msgid "Could not open bootstrap file %s: ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier bootstrap %s : ERR=%s\n"
 
-#: 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"
+#~ msgid "Illegal character in Volume name \"%s\"\n"
+#~ msgstr "Caractère interdit dans le nom du Volume \"%s\"\n"
 
-#: src/dird/ua_cmds.c:341
-msgid "Enter Volume name: "
-msgstr "Entrez le nom du Volume : "
+#, fuzzy
+#~ msgid ""
+#~ "Created new Volume=\"%s\", Pool=\"%s\", MediaType=\"%s\" in catalog.\n"
+#~ msgstr "Le Volume \"%s\" a été créé dans le catalogue.\n"
 
-#: src/dird/ua_cmds.c:345
-msgid "Enter base volume name: "
-msgstr "Entrez le nom de base du volume : "
+#, fuzzy
+#~ msgid "SQL failed, but ignored. ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: 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"
+#~ 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/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"
+#~ msgid "Too many failures. Giving up creating Volume name.\n"
+#~ msgstr "Trop d'erreurs. Abandon de la création du volume.\n"
 
-#: src/dird/ua_cmds.c:369
-msgid "Enter the starting number: "
-msgstr "Entrez le nombre de départ : "
+#~ msgid "Purging oldest volume \"%s\"\n"
+#~ msgstr "Purge du plus ancien volume \"%s\"\n"
 
-#: 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"
+#~ msgid "Pruning oldest volume \"%s\"\n"
+#~ msgstr "Prunning du plus ancien volume \"%s\"\n"
 
-#: src/dird/ua_cmds.c:385
-msgid "Enter slot (0 for none): "
-msgstr "Saisissez le slot (0 pour aucun) : "
+#, fuzzy
+#~ 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/ua_cmds.c:389
-msgid "InChanger? yes/no: "
-msgstr "InChanger ? oui/non : "
+#~ msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
+#~ msgstr "Volume utilisé une fois. Marquage du volume \"%s\" comme Used.\n"
 
-#: 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"
+#, fuzzy
+#~ 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/ua_cmds.c:430 src/dird/ua_cmds.c:1032
-msgid "Turn on or off? "
-msgstr "Activer ou désactiver ? (on/off) "
+#, fuzzy
+#~ 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/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 ""
+#, fuzzy
+#~ msgid ""
+#~ "Max configured use duration=%s sec. 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/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 ""
+#~ msgid "volume has expired"
+#~ msgstr "le volume a expiré"
 
-#: src/dird/ua_cmds.c:631
-#, c-format
-msgid ""
-"Error: Pool %s already exists.\n"
-"Use update to change it.\n"
-msgstr ""
-"Erreur : Pool %s est déjà défini.\n"
-"Utilisez update pour le changer\n"
+#~ msgid "but should be Append, Purged or Recycle"
+#~ msgstr "mais doit être Append, Purged ou bien Recycle"
 
-#: src/dird/ua_cmds.c:642
-#, c-format
-msgid "Pool %s created.\n"
-msgstr "Pool %s créé.\n"
+#~ msgid "volume has recycling disabled"
+#~ msgstr "le recyclage du volume est désactivé"
 
-#: src/dird/ua_cmds.c:672
-msgid "Python interpreter restarted.\n"
-msgstr ""
+#~ msgid "Unable to get Pool record: ERR=%s"
+#~ msgstr "Impossible de récupérer le Pool depuis le catalogue : ERR=%s"
 
-#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
-msgid "Nothing done.\n"
-msgstr "Rien de fait.\n"
+#~ 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/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"
+#~ msgid "Failed to move Scratch Volume. ERR=%s\n"
+#~ msgstr "Impossible de déplacer un Volume du Scratch. ERR=%s\n"
 
-#: src/dird/ua_cmds.c:708
-#, c-format
-msgid "Client \"%s\" address set to %s\n"
-msgstr "Client \"%s\" adresse positionné à %s\n"
+#~ msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
+#~ msgstr "Utilisation du Volume \"%s\" du pool « Scratch ».\n"
 
-#: src/dird/ua_cmds.c:742
-#, c-format
-msgid "Job \"%s\" %sabled\n"
-msgstr ""
+#~ msgid "Recycled volume \"%s\"\n"
+#~ msgstr "Volume recyclé \"%s\"\n"
 
-#: src/dird/ua_cmds.c:920
-msgid "Enter new debug level: "
-msgstr "Saisissez le nouveau niveau de debug : "
+#, fuzzy
+#~ msgid "Could not get storage resource '%s'.\n"
+#~ msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 
-#: src/dird/ua_cmds.c:997
-msgid "All"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not acquire read storage lock for \"%s\""
+#~ msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 
-#: src/dird/ua_cmds.c:998
-msgid "Select daemon type to set debug level"
-msgstr "Sélectionnez le composant a mettre à jour"
+#~ msgid "Start Restore Job %s\n"
+#~ msgstr "Démarrage du Job de restauration %s\n"
 
-#: 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"
+#~ msgid "Restore OK -- warning file count mismatch"
+#~ msgstr "Restauration Ok -- attention le nombre de fichier ne correspond pas"
 
-#: src/dird/ua_cmds.c:1092
-msgid "Client name missing.\n"
-msgstr ""
+#~ msgid "Restore OK"
+#~ msgstr "Restauration OK"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Restore OK -- with warnings"
+#~ msgstr "Backup OK -- avec des erreurs"
 
-#: src/dird/ua_cmds.c:1109
-msgid "Job name missing.\n"
-msgstr ""
+#~ msgid "*** Restore Error ***"
+#~ msgstr "*** Restauration en erreur ***"
 
-#: src/dird/ua_cmds.c:1118
-#, fuzzy, c-format
-msgid "Fileset \"%s\" not found.\n"
-msgstr "Le FileSet \"%s\" est introuvable.\n"
+#~ msgid "Restore Canceled"
+#~ msgstr "Restauration annulée"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Restore Client:         %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Files Expected:         %s\n"
+#~ "  Files Restored:         %s\n"
+#~ "  Bytes Restored:         %s\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  FD Errors:              %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId :                 %d\n"
+#~ "  Job :                   %s\n"
+#~ "  Client :                %s\n"
+#~ "  Début :                 %s\n"
+#~ "  Fin :                   %s\n"
+#~ "  Fichiers attendus :     %s\n"
+#~ "  Fichiers restaurés :    %s\n"
+#~ "  Octets restaurés :      %s\n"
+#~ "  Débit :                 %.1f Ko/s\n"
+#~ "  Erreurs du FD :         %d\n"
+#~ "  Statut de fin du FD :   %s\n"
+#~ "  Statut de fin du SD :   %s\n"
+#~ "  Etat :                  %s\n"
 
-#: src/dird/ua_cmds.c:1127
-msgid "Fileset name missing.\n"
-msgstr ""
+#~ msgid "Expected an equals, got: %s"
+#~ msgstr "Attendait un égale, pas : %s"
 
-#: 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"
+#~ msgid "Expect a YES or NO, got: %s"
+#~ msgstr "Attendait Oui ou Non, eu : %s"
 
-#: src/dird/ua_cmds.c:1142
-msgid "Level value missing.\n"
-msgstr ""
+#~ msgid "Job %s not found\n"
+#~ msgstr "Job %s non trouvé\n"
 
-#: src/dird/ua_cmds.c:1149
 #, fuzzy
-msgid "Invalid value for accurate. It must be yes or no.\n"
-msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
+#~ msgid "Add media to a pool"
+#~ msgstr "ajouter un média dans un pool"
 
-#: src/dird/ua_cmds.c:1154
 #, fuzzy
-msgid "Accurate value missing.\n"
-msgstr "La valeur actuelle est : %s\n"
+#~ msgid "Autodisplay console messages"
+#~ msgstr "autodisplay [on|off] -- messages de la console"
 
-#: src/dird/ua_cmds.c:1167
-msgid "No job specified.\n"
-msgstr "Pas de job sélectionné.\n"
+#, fuzzy
+#~ msgid "Cancel a job"
+#~ msgstr "Annulé"
 
-#: src/dird/ua_cmds.c:1227
-msgid "Error sending include list.\n"
-msgstr "Erreur pendant l'envoi de la liste d'inclusion.\n"
+#, fuzzy
+#~ msgid "Create DB Pool from resource"
+#~ msgstr "Pool à partir de sa définition"
 
-#: src/dird/ua_cmds.c:1232
-msgid "Error sending exclude list.\n"
-msgstr "Erreur pendant l'envoi de la liste d'exclusion.\n"
+#, fuzzy
+#~ msgid "Delete volume, pool or job"
+#~ msgstr "met à jour un volume, un pool ou bien des slots"
 
-#: 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 ""
-"Généralement supprimer un pool ou bien un volume\n"
-"n'est pas une bonne idée car ils peuvent contenir des données.\n"
-"\n"
+#, fuzzy
+#~ msgid "Performs FileSet estimate, listing gives full listing"
+#~ msgstr ""
+#~ "estimate <listing> -- estime un FileSet (listing donne la liste des "
+#~ "fichiers)"
 
-#: src/dird/ua_cmds.c:1326
-msgid "Choose catalog item to delete"
-msgstr "Choisissez l'objet du catalogue à supprimer"
+#, fuzzy
+#~ msgid "Non-interactive gui mode"
+#~ msgstr "gui [on|off] -- mode non interactif (pour interface graphique)"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Print help on specific command"
+#~ msgstr "affiche cette commande"
 
-#: src/dird/ua_cmds.c:1404
-msgid "Enter JobId to delete: "
-msgstr "Saisissez le JobId à supprimer : "
+#, fuzzy
+#~ msgid "Label a tape"
+#~ msgstr "labéliser une bande"
 
-#: 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) : "
+#, fuzzy
+#~ msgid "List objects from catalog"
+#~ msgstr "purge les enregistrements du catalogue"
 
-#: src/dird/ua_cmds.c:1450
-#, c-format
-msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Display pending messages"
+#~ msgstr "Message de Bacula"
 
-#: src/dird/ua_cmds.c:1454
-#, c-format
-msgid "Illegal JobId range %s - %s, ignored\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Print current memory usage"
+#~ msgstr "affiche la consommation mémoire courante"
 
-#: 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"
+#, fuzzy
+#~ msgid "Mount storage"
+#~ msgstr "unmount <nom-storage> -- démonte un lecteur"
 
-#: src/dird/ua_cmds.c:1484
-#, c-format
-msgid ""
-"\n"
-"This command will delete volume %s\n"
-"and all Jobs saved on that volume from the Catalog\n"
-msgstr ""
-"\n"
-"Cette commande va supprimer le Volume %s\n"
-"et tous les Jobs sauvegardés sur celui-ci du Catalogue\n"
+#, fuzzy
+#~ msgid "Prune expired records from catalog"
+#~ msgstr "purge les entrées expirées du catalogue"
 
-#: 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) : "
+#, fuzzy
+#~ msgid "Purge records from catalog"
+#~ msgstr "purge les enregistrements du catalogue"
 
-#: src/dird/ua_cmds.c:1504
-msgid "Can't list jobs on this volume\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Query catalog"
+#~ msgstr "interroger le catalogue"
 
-#: 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) : "
+#, fuzzy
+#~ msgid "Restore files"
+#~ msgstr "restauration de fichier"
 
-#: 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"
+#, fuzzy
+#~ msgid "Relabel a tape"
+#~ msgstr "re-labélise une bande"
 
-#: src/dird/ua_cmds.c:1712
-msgid "ERR: Can't open db\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Release storage"
+#~ msgstr "Restaurer"
 
-#: src/dird/ua_cmds.c:1759
-msgid "Wait on mount timed out\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Reload conf file"
+#~ msgstr "recharge la configuration"
 
-#: src/dird/ua_cmds.c:1769
-msgid "ERR: Job was not found\n"
-msgstr "ERR: Job %s non trouvé\n"
+#, fuzzy
+#~ msgid "Run a job"
+#~ msgstr "Job en cours :\n"
 
-#: src/dird/ua_cmds.c:1845
 #, fuzzy
-msgid ""
-"  Command       Description\n"
-"  =======       ===========\n"
-msgstr ""
-"  Commande   Description\n"
-"  ========   ===========\n"
+#~ msgid "Report status"
+#~ msgstr "Statut :\n"
 
-#: src/dird/ua_cmds.c:1849
-#, c-format
-msgid ""
-"  %-13s %s\n"
-"\n"
-"Arguments:\n"
-"\t%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Stop a job"
+#~ msgstr "Job en cours :\n"
 
-#: src/dird/ua_cmds.c:1854
-#, fuzzy, c-format
-msgid "  %-13s %s\n"
-msgstr "  %-10s %s\n"
+#, fuzzy
+#~ msgid "Sets debug level"
+#~ msgstr "positionne le niveau de debug"
 
-#: src/dird/ua_cmds.c:1858
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Can't find %s command.\n"
-"\n"
-msgstr ": est une commande invalide.\n"
+#, fuzzy
+#~ msgid "Show resource records"
+#~ msgstr "Pool à partir de sa définition"
 
-#: src/dird/ua_cmds.c:1860
-msgid ""
-"\n"
-"When at a prompt, entering a period cancels the command.\n"
-"\n"
-msgstr ""
-"\n"
-"Sur une question, tapez un point (.) pour annuler la commande en cours.\n"
+#, fuzzy
+#~ msgid "Use SQL to query catalog"
+#~ msgstr "passer des commandes SQL pour interroger le catalogue"
 
-#: src/dird/ua_cmds.c:1896 src/filed/status.c:85
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Print current time"
+#~ msgstr "affiche la date courante"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Turn on/off trace to file"
+#~ msgstr "active/désactive le fichier de trace"
 
-#: src/dird/ua_cmds.c:2049
-#, c-format
-msgid "Could not open catalog database \"%s\".\n"
-msgstr "Impossible d'ouvrir le catalogue \"%s\".\n"
+#, fuzzy
+#~ msgid "Unmount storage"
+#~ msgstr "unmount <nom-storage> -- démonte un lecteur"
 
-#: src/dird/ua_cmds.c:2059
-#, c-format
-msgid "Using Catalog \"%s\"\n"
-msgstr "Utilisation du Catalogue \"%s\"\n"
+#, fuzzy
+#~ msgid "Umount - for old-time Unix guys, see unmount"
+#~ msgstr "umount <nom-storage> -- démonte un lecteur"
 
-#: src/dird/ua_tree.c:74
 #, fuzzy
-msgid "add dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-"marque récursivement les fichiers/répertoires pour être restaurés, les "
-"jokers (*) fonctionnent"
+#~ msgid "Update volume, pool or stats"
+#~ msgstr "met à jour un volume, un pool ou bien des slots"
 
-#: src/dird/ua_tree.c:75
-msgid "change current directory"
-msgstr "change le répertoire courant"
+#, fuzzy
+#~ msgid "Use catalog xxx"
+#~ msgstr "interroger le catalogue"
 
-#: src/dird/ua_tree.c:76
-msgid "count marked files in and below the cd"
-msgstr "compte le nombre de fichiers marqués à partir du répertoire courant"
+#, fuzzy
+#~ msgid "Print Director version"
+#~ msgstr "affiche la version du Director"
 
-#: src/dird/ua_tree.c:77
 #, fuzzy
-msgid "delete dir/file to be restored recursively in dir"
-msgstr "dé-sélectionne les fichiers/répertoires récursivement"
+#~ msgid "Wait until no jobs are running"
+#~ msgstr "Aucun de vos jobs ne sont en cours.\n"
 
-#: src/dird/ua_tree.c:78 src/dird/ua_tree.c:79
-msgid "long list current directory, wildcards allowed"
-msgstr "liste détaillée du répertoire courant, les jocker (*) fonctionnent"
+#~ msgid "%s: is an invalid command.\n"
+#~ msgstr "%s : est une commande invalide.\n"
 
-#: src/dird/ua_tree.c:80
-msgid "leave file selection mode"
-msgstr "sort de la sélection des fichiers"
+#~ 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_tree.c:81
-msgid "estimate restore size"
-msgstr "estime la taille de la restauration"
+#~ msgid "Enter new maximum (zero for unlimited): "
+#~ msgstr "Entrez le nouveau maximum (zéro pour illimité) : "
 
-#: src/dird/ua_tree.c:82
-msgid "same as done command"
-msgstr "synonyme de la commande  « done »"
+#~ 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_tree.c:83
-msgid "find files, wildcards allowed"
-msgstr "recherche des fichiers, les jokers (*) fonctionnent"
+#~ msgid "The number must be between 0 and %d\n"
+#~ msgstr "Le nombre doit être entre 0 et %d\n"
 
-#: src/dird/ua_tree.c:84 src/dird/ua_tree.c:97 src/dird/ua_tree.c:98
-msgid "print help"
-msgstr "affiche l'aide"
+#~ msgid "Enter Volume name: "
+#~ msgstr "Entrez le nom du Volume : "
 
-#: src/dird/ua_tree.c:85 src/dird/ua_tree.c:86
-msgid "list current directory, wildcards allowed"
-msgstr "affiche le contenu du répertoire courant, les jokers (*) fonctionnent"
+#~ msgid "Enter base volume name: "
+#~ msgstr "Entrez le nom de base du volume : "
 
-#: src/dird/ua_tree.c:87
-#, fuzzy
-msgid "list subdir in current directory, wildcards allowed"
-msgstr "affiche le contenu du répertoire courant, les jokers (*) fonctionnent"
+#~ msgid "Volume name too long.\n"
+#~ msgstr "Nom de Volume trop long.\n"
 
-#: src/dird/ua_tree.c:88
-msgid "list the marked files in and below the cd"
-msgstr "liste les fichiers marqués à partir du répertoire courant"
+#~ 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_tree.c:89
-#, fuzzy
-msgid "list the marked files in"
-msgstr "liste les fichiers marqués à partir du répertoire courant"
+#~ msgid "Enter the starting number: "
+#~ msgstr "Entrez le nombre de départ : "
 
-#: src/dird/ua_tree.c:90
-msgid "mark dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-"marque récursivement les fichiers/répertoires pour être restaurés, les "
-"jokers (*) fonctionnent"
+#~ 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_tree.c:91
-msgid "mark directory name to be restored (no files)"
-msgstr "marque un répertoire (seulement) pour la restauration"
+#~ msgid "Enter slot (0 for none): "
+#~ msgstr "Saisissez le slot (0 pour aucun) : "
 
-#: src/dird/ua_tree.c:92 src/dird/ua_tree.c:93
-msgid "print current working directory"
-msgstr "affiche le répertoire courant"
+#~ msgid "InChanger? yes/no: "
+#~ msgstr "InChanger ? oui/non : "
 
-#: src/dird/ua_tree.c:94
-msgid "unmark dir/file to be restored recursively in dir"
-msgstr "dé-sélectionne les fichiers/répertoires récursivement"
+#~ msgid "%d Volumes created in pool %s\n"
+#~ msgstr "%d Volumes créés dans le pool %s\n"
 
-#: src/dird/ua_tree.c:95
-msgid "unmark directory name only no recursion"
-msgstr "dé-sélectionne seulement un répertoire"
+#~ msgid "Turn on or off? "
+#~ msgstr "Activer ou désactiver ? (on/off) "
 
-#: src/dird/ua_tree.c:96
-msgid "quit and do not do restore"
-msgstr "quitte et annule la restauration"
+#~ msgid ""
+#~ "Error: Pool %s already exists.\n"
+#~ "Use update to change it.\n"
+#~ msgstr ""
+#~ "Erreur : Pool %s est déjà défini.\n"
+#~ "Utilisez update pour le changer\n"
 
-#: src/dird/ua_tree.c:118
-msgid ""
-"\n"
-"You are now entering file selection mode where you add (mark) and\n"
-"remove (unmark) files to be restored. No files are initially added, unless\n"
-"you used the \"all\" keyword on the command line.\n"
-"Enter \"done\" to leave this mode.\n"
-"\n"
-msgstr ""
-"\n"
-"Vous êtes dans le mode de sélection des fichiers ou vous devez ajouter "
-"(mark)\n"
-"et supprimez (unmark) les fichiers à restaurer. Aucun fichier n'est "
-"sélectionné\n"
-"par défaut sauf si vous avez utilisé l'option « all » dans la commande.\n"
-"Terminez votre saisie par « done »\n"
-"\n"
+#~ msgid "Pool %s created.\n"
+#~ msgstr "Pool %s créé.\n"
 
-#: 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"
+#~ msgid "Connecting to Client %s at %s:%d\n"
+#~ msgstr "Connexion au client %s (%s:%d)\n"
 
-#: src/dird/ua_tree.c:138 src/dird/ua_tree.c:157
-#, fuzzy, c-format
-msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
-msgstr "Commande invalide. Tapez « done » pour quitter.\n"
+#~ msgid "Failed to connect to Client.\n"
+#~ msgstr "Impossible de se connecter au Client.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Failed to set bandwidth limit to Client.\n"
+#~ msgstr "Impossible de se connecter au Client.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Running Job"
+#~ msgstr ""
+#~ "\n"
+#~ "Job en cours :\n"
 
-#: src/dird/ua_tree.c:387
-msgid "1 file marked.\n"
-msgstr "1 fichier sélectionné.\n"
+#, fuzzy
+#~ msgid "Enter new bandwidth limit kb/s: "
+#~ msgstr "Saisissez la valeur du nombre maximum de Job : "
 
-#: src/dird/ua_tree.c:389
-#, c-format
-msgid "%s files marked.\n"
-msgstr "%s fichiers sélectionnés.\n"
+#~ msgid "Unauthorized command from this console.\n"
+#~ msgstr "Commande interdite depuis cette console.\n"
 
-#: src/dird/ua_tree.c:417
-msgid "No directories marked.\n"
-msgstr "Pas de répertoire sélectionné.\n"
+#~ msgid "Client \"%s\" not found.\n"
+#~ msgstr "le client \"%s\" est introuvable.\n"
 
-#: src/dird/ua_tree.c:419
-msgid "1 directory marked.\n"
-msgstr "1 répertoire sélectionné.\n"
+#~ msgid "Client \"%s\" address set to %s\n"
+#~ msgstr "Client \"%s\" adresse positionné à %s\n"
 
-#: src/dird/ua_tree.c:421
-#, c-format
-msgid "%s directories marked.\n"
-msgstr "%s répertoires sélectionnés.\n"
+#~ msgid "Job \"%s\" not found.\n"
+#~ msgstr "Job \"%s\" non trouvé.\n"
 
-#: 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"
+#~ msgid "Connecting to Storage daemon %s at %s:%d\n"
+#~ msgstr "Connexion au Storage Daemon %s (%s:%d)\n"
 
-#: src/dird/ua_tree.c:453
-msgid "No file specification given.\n"
-msgstr ""
+#~ msgid "Connected to storage daemon\n"
+#~ msgstr "Connecté au Storage Daemon\n"
 
-#: 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"
+#~ msgid "Enter new debug level: "
+#~ msgstr "Saisissez le nouveau niveau de debug : "
 
-#: 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"
+#~ msgid "Available daemons are: \n"
+#~ msgstr "Les démons disponibles sont :\n"
 
-#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
-#, c-format
-msgid ""
-"  Command    Description\n"
-"  =======    ===========\n"
-msgstr ""
-"  Commande   Description\n"
-"  ========   ===========\n"
+#~ msgid "Director"
+#~ msgstr "Director"
 
-#: 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"
+#~ msgid "Storage"
+#~ msgstr "Stockage"
 
-#: src/dird/ua_tree.c:814
-msgid "Invalid path given.\n"
-msgstr ""
+#~ msgid "Client"
+#~ msgstr "Client"
 
-#: 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"
+#~ msgid "Select daemon type to set debug level"
+#~ msgstr "Sélectionnez le composant a mettre à jour"
 
-#: src/dird/ua_tree.c:864
-msgid "1 file unmarked.\n"
-msgstr "1 fichier dé-sélectionné.\n"
+#, fuzzy
+#~ msgid "No authorization for Client \"%s\"\n"
+#~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_tree.c:867
-#, c-format
-msgid "%s files unmarked.\n"
-msgstr "%s fichiers dé-sélectionnés.\n"
+#, fuzzy
+#~ msgid "Fileset \"%s\" not found.\n"
+#~ msgstr "Le FileSet \"%s\" est introuvable.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "No authorization for FileSet \"%s\"\n"
+#~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_tree.c:897
-msgid "1 directory unmarked.\n"
-msgstr "1 répertoire dé-sélectionné\n"
+#, fuzzy
+#~ msgid "Level \"%s\" not valid.\n"
+#~ msgstr "Le type %s est invalide.\n"
 
-#: src/dird/ua_tree.c:899
-#, c-format
-msgid "%d directories unmarked.\n"
-msgstr "%d répertoires dé-sélectionnés.\n"
+#, fuzzy
+#~ msgid "Invalid value for accurate. It must be yes or no.\n"
+#~ msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Accurate value missing.\n"
+#~ msgstr "La valeur actuelle est : %s\n"
 
-#: src/dird/dird_conf.c:576
-#, c-format
-msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
+#~ msgid "No job specified.\n"
+#~ msgstr "Pas de job sélectionné.\n"
 
-#: src/dird/dird_conf.c:581
-#, c-format
-msgid "   query_file=%s\n"
-msgstr ""
+#~ msgid "Error sending include list.\n"
+#~ msgstr "Erreur pendant l'envoi de la liste d'inclusion.\n"
 
-#: 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 ""
+#~ msgid "Error sending exclude list.\n"
+#~ msgstr "Erreur pendant l'envoi de la liste d'exclusion.\n"
 
-#: src/dird/dird_conf.c:589
-#, c-format
-msgid "Console: name=%s SSL=%d\n"
-msgstr ""
+#~ 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 ""
+#~ "Généralement supprimer un pool ou bien un volume\n"
+#~ "n'est pas une bonne idée car ils peuvent contenir des données.\n"
+#~ "\n"
 
-#: src/dird/dird_conf.c:594
-#, c-format
-msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
-msgstr ""
+#~ msgid "Choose catalog item to delete"
+#~ msgstr "Choisissez l'objet du catalogue à supprimer"
 
-#: src/dird/dird_conf.c:599
-#, c-format
-msgid "Counter: name=%s min=%d max=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:613
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
-msgstr ""
+#~ msgid "Nothing done.\n"
+#~ msgstr "Rien de fait.\n"
 
-#: src/dird/dird_conf.c:616
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
-msgstr ""
+#, fuzzy
+#~ 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/dird_conf.c:629
-#, c-format
-msgid ""
-"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
-"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr="
-"%d\n"
-"      poolid=%s volname=%s MediaType=%s\n"
-msgstr ""
+#~ msgid "Enter JobId to delete: "
+#~ msgstr "Saisissez le JobId à supprimer : "
 
-#: 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 ""
+#, fuzzy
+#~ 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/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 ""
+#~ msgid ""
+#~ "\n"
+#~ "This command will delete volume %s\n"
+#~ "and all Jobs saved on that volume from the Catalog\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Cette commande va supprimer le Volume %s\n"
+#~ "et tous les Jobs sauvegardés sur celui-ci du Catalogue\n"
 
-#: src/dird/dird_conf.c:669
-#, c-format
-msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
-msgstr ""
+#, fuzzy
+#~ 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/dird_conf.c:670
-msgid "JobDefs"
-msgstr "JobDefs"
+#, fuzzy
+#~ 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/dird_conf.c:674
-#, c-format
-msgid ""
-"     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
-"%d\n"
-msgstr ""
+#~ msgid "Using Catalog name=%s DB=%s\n"
+#~ msgstr "Utilisation du Catalogue name=%s DB=%s\n"
 
-#: src/dird/dird_conf.c:680
-#, c-format
-msgid "     SpoolSize=%s\n"
-msgstr ""
+#~ msgid "ERR: Job was not found\n"
+#~ msgstr "ERR: Job %s non trouvé\n"
 
-#: src/dird/dird_conf.c:683
-#, c-format
-msgid "     Accurate=%d\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "  Command       Description\n"
+#~ "  =======       ===========\n"
+#~ msgstr ""
+#~ "  Commande   Description\n"
+#~ "  ========   ===========\n"
 
-#: src/dird/dird_conf.c:686
-#, c-format
-msgid "     SelectionType=%d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "  %-13s %s\n"
+#~ msgstr "  %-10s %s\n"
 
-#: src/dird/dird_conf.c:701
-#, c-format
-msgid "  --> Where=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Can't find %s command.\n"
+#~ "\n"
+#~ msgstr ": est une commande invalide.\n"
 
-#: src/dird/dird_conf.c:704
-#, c-format
-msgid "  --> RegexWhere=%s\n"
-msgstr "  --> RegexWhere=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "When at a prompt, entering a period cancels the command.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Sur une question, tapez un point (.) pour annuler la commande en cours.\n"
 
-#: src/dird/dird_conf.c:707
-#, c-format
-msgid "  --> Bootstrap=%s\n"
-msgstr ""
+#~ msgid "Could not find a Catalog resource\n"
+#~ msgstr "Impossible de trouver un Catalogue\n"
 
-#: src/dird/dird_conf.c:710
-#, c-format
-msgid "  --> WriteBootstrap=%s\n"
-msgstr ""
+#~ msgid "Could not open catalog database \"%s\".\n"
+#~ msgstr "Impossible d'ouvrir le catalogue \"%s\".\n"
 
-#: src/dird/dird_conf.c:713
-#, fuzzy, c-format
-msgid "  --> PluginOptions=%s\n"
-msgstr "  --> RunOnSuccess=%u\n"
+#~ msgid "Using Catalog \"%s\"\n"
+#~ msgstr "Utilisation du Catalogue \"%s\"\n"
 
-#: src/dird/dird_conf.c:716
-#, c-format
-msgid "  --> MaxRunTime=%u\n"
-msgstr "  --> MaxRunTime=%u\n"
+#~ msgid ": is an invalid command.\n"
+#~ msgstr ": est une commande invalide.\n"
 
-#: src/dird/dird_conf.c:719
-#, c-format
-msgid "  --> MaxWaitTime=%u\n"
-msgstr "  --> MaxWaitTime=%u\n"
+#, fuzzy
+#~ msgid "Unable to get Job record for Job=%s\n"
+#~ msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
 
-#: src/dird/dird_conf.c:722
-#, c-format
-msgid "  --> MaxStartDelay=%u\n"
-msgstr "  --> MaxStartDelay=%u\n"
+#, fuzzy
+#~ msgid "Unable to get last Job record for Job=%s\n"
+#~ msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
 
-#: src/dird/dird_conf.c:725
-#, fuzzy, c-format
-msgid "  --> MaxRunSchedTime=%u\n"
-msgstr "  --> MaxRunTime=%u\n"
+#, fuzzy
+#~ msgid "Unable to get Client record for Client=%s\n"
+#~ msgstr ""
+#~ "Impossible de récupérer les informations du Media pour le Volume %s : ERR="
+#~ "%s\n"
 
-#: src/dird/dird_conf.c:737
-#, fuzzy, c-format
-msgid "  --> Base %s\n"
-msgstr "  --> Target=%s\n"
+#, fuzzy
+#~ msgid "Unable to get last Job record for Client=%s\n"
+#~ msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
 
-#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
-msgid " --> RunScript\n"
-msgstr " --> RunScript\n"
+#~ 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/dird_conf.c:744 src/lib/runscript.c:298
-#, c-format
-msgid "  --> Command=%s\n"
-msgstr "  --> Command=%s\n"
+#, fuzzy
+#~ msgid "Unknown command: %s\n"
+#~ msgstr "Erreur inconnue."
 
-#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
-#, c-format
-msgid "  --> Target=%s\n"
-msgstr "  --> Target=%s\n"
+#~ msgid "Select daemon type to make die"
+#~ msgstr "Sélectionnez le composant a tuer"
 
-#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
-#, c-format
-msgid "  --> RunOnSuccess=%u\n"
-msgstr "  --> RunOnSuccess=%u\n"
+#, fuzzy
+#~ msgid "query keyword not found.\n"
+#~ msgstr "%s ressource %s introuvable.\n"
 
-#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
-#, c-format
-msgid "  --> RunOnFailure=%u\n"
-msgstr "  --> RunOnFailure=%u\n"
+#, fuzzy
+#~ msgid "List MediaType failed: ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
-#, c-format
-msgid "  --> FailJobOnError=%u\n"
-msgstr ""
+#, fuzzy
+#~ msgid "List Media failed: ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
-#, c-format
-msgid "  --> RunWhen=%u\n"
-msgstr "  --> RunWhen=%u\n"
+#, fuzzy
+#~ msgid "List Location failed: ERR=%s\n"
+#~ msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: src/dird/dird_conf.c:775
-#, c-format
-msgid "  --> Run=%s\n"
-msgstr ""
+#~ msgid "Enter slot"
+#~ msgstr "Saisissez le slot"
 
-#: src/dird/dird_conf.c:779
-#, c-format
-msgid "  --> SelectionPattern=%s\n"
-msgstr ""
+#~ msgid "Expected a positive integer, got: %s\n"
+#~ msgstr "Attendait un entier positif, pas : %s\n"
 
-#: src/dird/dird_conf.c:793
-#, c-format
-msgid "FileSet: name=%s\n"
-msgstr ""
+#~ msgid "Invalid response. You must answer yes or no.\n"
+#~ msgstr "Réponse invalide. Vous devez répondre oui ou non.\n"
 
-#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
-#, c-format
-msgid "Schedule: name=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"
+#~ msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
 
-#: src/dird/dird_conf.c:892
-#, c-format
-msgid "  --> Run Level=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Illegal character \"%c\" in a comment.\n"
+#~ msgstr "Caractère illégal « %c » dans le nom.\n"
 
-#: src/dird/dird_conf.c:893
-msgid "      hour="
-msgstr ""
+#, fuzzy
+#~ msgid "Comment too long.\n"
+#~ msgstr "Nom trop long.\n"
 
-#: src/dird/dird_conf.c:902
-msgid "      mday="
-msgstr ""
+#, fuzzy
+#~ msgid "Comment must be at least one character long.\n"
+#~ msgstr "Le nom du volume doit comporter au moins un caractère\n"
 
-#: src/dird/dird_conf.c:911
-msgid "      month="
-msgstr ""
+#~ msgid "Negative numbers not permitted\n"
+#~ msgstr "Les nombres négatifs ne sont pas autorisés\n"
 
-#: src/dird/dird_conf.c:920
-msgid "      wday="
-msgstr ""
+#~ msgid "Input value is not an integer.\n"
+#~ msgstr "La valeur saisie n'est pas un nombre.\n"
 
-#: src/dird/dird_conf.c:929
-msgid "      wom="
-msgstr ""
+#~ msgid "Values must be be greater than zero.\n"
+#~ msgstr "Les valeurs doivent être supérieurs à zéro.\n"
 
-#: src/dird/dird_conf.c:938
-msgid "      woy="
-msgstr ""
+#~ msgid "Slot too large.\n"
+#~ msgstr "Slot trop grand.\n"
 
-#: src/dird/dird_conf.c:947
-#, c-format
-msgid "      mins=%d\n"
-msgstr ""
+#~ msgid "No slots in changer to scan.\n"
+#~ msgstr "Pas de slot dans le magasin à scanner.\n"
 
-#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
-msgid "     --> "
-msgstr ""
+#~ msgid "No Volumes found to label, or no barcodes.\n"
+#~ msgstr "Pas de volume à labéliser ou pas de codebar.\n"
 
-#: src/dird/dird_conf.c:974
-#, c-format
-msgid "Pool: name=%s PoolType=%s\n"
-msgstr ""
+#~ 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/dird_conf.c:976
-#, c-format
-msgid "      use_cat=%d use_once=%d cat_files=%d\n"
-msgstr ""
+#~ 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/dird_conf.c:979
-#, c-format
-msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
-msgstr ""
+#~ 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/dird_conf.c:982
-#, c-format
-msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
-msgstr ""
+#~ msgid "Catalog record for Volume \"%s\" is up to date.\n"
+#~ msgstr "Le volume \"%s\" est à jour dans le catalogue.\n"
 
-#: src/dird/dird_conf.c:986
-#, c-format
-msgid "      CleaningPrefix=%s LabelType=%d\n"
-msgstr ""
+#~ 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/dird_conf.c:988
-#, c-format
-msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
-msgstr ""
+#~ msgid ""
+#~ "Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
+#~ "relabeling.\n"
+#~ 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/dird_conf.c:992
-#, c-format
-msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
-msgstr ""
+#~ msgid "Enter new Volume name: "
+#~ msgstr "Saisissez le nouveau nom du Volume : "
 
-#: src/dird/dird_conf.c:996
-#, c-format
-msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
-msgstr ""
+#~ msgid "Media record for new Volume \"%s\" already exists.\n"
+#~ msgstr "Le nouveau volume \"%s\" existe déjà en base.\n"
 
-#: src/dird/dird_conf.c:1000
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s\n"
-msgstr ""
+#~ msgid "Enter slot (0 or Enter for none): "
+#~ msgstr "Saisissez le slot (0 ou Entrée pour aucun) : "
 
-#: src/dird/dird_conf.c:1004
-#, c-format
-msgid "      NextPool=%s\n"
-msgstr ""
+#~ msgid "Delete of Volume \"%s\" failed. ERR=%s"
+#~ msgstr "Impossible de supprimer le volume \"%s\". ERR=%s"
 
-#: src/dird/dird_conf.c:1007
-#, c-format
-msgid "      RecyclePool=%s\n"
-msgstr ""
+#~ msgid "Old volume \"%s\" deleted from catalog.\n"
+#~ msgstr "L'ancien volume \"%s\" a été supprimé du catalogue.\n"
 
-#: src/dird/dird_conf.c:1010
-#, fuzzy, c-format
-msgid "      ScratchPool=%s\n"
-msgstr "Utilisation du Catalogue \"%s\"\n"
+#~ msgid "Requesting to mount %s ...\n"
+#~ msgstr "Demande pour monter %s...\n"
 
-#: src/dird/dird_conf.c:1013
-#, fuzzy, c-format
-msgid "      Catalog=%s\n"
-msgstr "Utilisation du Catalogue \"%s\"\n"
+#~ msgid "Do not forget to mount the drive!!!\n"
+#~ msgstr "N'oubliez pas de monter le lecteur.\n"
 
-#: src/dird/dird_conf.c:1033
-#, c-format
-msgid "Messages: name=%s\n"
-msgstr ""
+#~ msgid ""
+#~ "The following Volumes will be labeled:\n"
+#~ "Slot  Volume\n"
+#~ "==============\n"
+#~ msgstr ""
+#~ "Les volumes suivants vont être labélisés :\n"
+#~ "Slot  Volume\n"
+#~ "==============\n"
 
-#: src/dird/dird_conf.c:1035
-#, c-format
-msgid "      mailcmd=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Do you want to label these Volumes? (yes|no): "
+#~ msgstr ""
+#~ "\n"
+#~ "Voulez vous restaurer tous les fichiers ? (oui|non) : "
 
-#: src/dird/dird_conf.c:1037
-#, c-format
-msgid "      opcmd=%s\n"
-msgstr ""
+#~ msgid "Error setting InChanger: ERR=%s"
+#~ msgstr "Impossible de positionner le flag InChanger : ERR=%s"
 
-#: 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 ""
+#~ msgid "Maximum pool Volumes=%d reached.\n"
+#~ msgstr "Le nombre maximum de volume (%d) pour ce pool est atteint.\n"
 
-#: 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 ""
+#~ msgid "Illegal character \"%c\" in a volume name.\n"
+#~ msgstr "Caractères « %c » interdits dans le nom d'un volume.\n"
 
-#: 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
-#: src/qt-console/bat_conf.cpp:265
-#, c-format
-msgid "%s item is required in %s resource, but not found.\n"
-msgstr ""
+#~ msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
+#~ msgstr "Envoie de la commande pour re-labéliser de \"%s\" à \"%s\"...\n"
 
-#: 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"
+#~ msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
+#~ msgstr "Demande de labélisation du volume \"%s\" Slot %d...\n"
 
-#: src/dird/dird_conf.c:1450
-#, c-format
-msgid "Cannot find Pool resource %s\n"
-msgstr "Impossible de trouver la ressource Pool \"%s\"\n"
+#~ msgid "Label command failed for Volume %s.\n"
+#~ msgstr "Impossible de labéliser le volume %s.\n"
 
-#: src/dird/dird_conf.c:1461
-#, c-format
-msgid "Cannot find Console resource %s\n"
-msgstr "Impossible de trouver la ressource Console \"%s\"\n"
+#~ msgid "Could not open SD socket.\n"
+#~ msgstr "Impossible d'ouvrir la socket avec le SD.\n"
 
-#: 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"
+#~ msgid "Invalid Slot number: %s\n"
+#~ msgstr "Numéro de slot invalide : %s\n"
 
-#: 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"
+#~ msgid "Invalid Volume name: %s\n"
+#~ msgstr "Nom de Volume invalide : %s\n"
 
-#: src/dird/dird_conf.c:1483
-#, c-format
-msgid "Cannot find Job resource %s\n"
-msgstr "Impossible de trouver la ressource Job \"%s\"\n"
+#~ msgid "Device \"%s\" has %d slots.\n"
+#~ msgstr "Le Device \"%s\" a %d slots.\n"
 
-#: src/dird/dird_conf.c:1533
-#, c-format
-msgid "Cannot find Counter resource %s\n"
-msgstr "Impossible de trouver la ressource Counter \"%s\"\n"
+#~ msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
+#~ msgstr "La ressource Pool \"%s\" est introuvable pour le volume \"%s\"\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "No Volumes found, or no barcodes.\n"
+#~ msgstr "Pas de volume à labéliser ou pas de codebar.\n"
 
-#: src/dird/dird_conf.c:1554
-#, c-format
-msgid "Cannot find Schedule resource %s\n"
-msgstr "Impossible de trouver la ressource Schedule \"%s\"\n"
+#~ msgid "ON or OFF keyword missing.\n"
+#~ msgstr "Mot clef ON ou OFF manquant.\n"
 
-#: 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
-#, c-format
-msgid "Unknown resource type %d in save_resource.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Disabled Jobs:\n"
+#~ msgstr "est bloqué"
 
-#: src/dird/dird_conf.c:1634
-#, c-format
-msgid "Name item is required in %s resource, but not found.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No disabled Jobs.\n"
+#~ msgstr "Pas de job programmé.\n"
 
-#: 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
-#, c-format
-msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "disabled"
+#~ msgstr "est bloqué"
 
-#: src/dird/dird_conf.c:1647
-#, c-format
-msgid "Inserting %s res: %s index=%d pass=%d\n"
-msgstr ""
+#~ msgid "%s resource %s not found.\n"
+#~ msgstr "%s ressource %s introuvable.\n"
 
-#: src/dird/dird_conf.c:1660
-#, fuzzy, c-format
-msgid "Expected one of: %s, got: %s"
-msgstr "Attendait %s, a pas : %s"
+#~ msgid "Resource %s not found\n"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: 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"
+#~ msgid "Jobid %d used %d Volume(s): %s\n"
+#~ msgstr "JobId %d a utilisé %d volume(s) : %s\n"
 
-#: src/dird/dird_conf.c:1758
-#, c-format
-msgid "Expected a Job Type keyword, got: %s"
-msgstr ""
+#~ msgid "No Pool specified.\n"
+#~ msgstr "Pas de Pool spécifié.\n"
 
-#: src/dird/dird_conf.c:1782
-#, c-format
-msgid "Expected a Job Level keyword, got: %s"
-msgstr "Attendait un niveau de sauvegarde, eu : %s"
+#~ msgid "Error obtaining pool ids. ERR=%s\n"
+#~ msgstr "Erreur pendant lors de la récupération du pool. ERR=%s\n"
 
-#: src/dird/dird_conf.c:1802
-#, c-format
-msgid "Expected a Restore replacement option, got: %s"
-msgstr "Attendait un niveau de remplacement, eu : %s"
+#~ msgid "Pool: %s\n"
+#~ msgstr "Pool : %s\n"
 
-#: 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"
+#~ msgid "%s is not a job name.\n"
+#~ msgstr "%s n'est pas un nom de job.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Could not find Pool for Job %s\n"
+#~ msgstr "Impossible d'ouvrir le device %s\n"
 
-#: src/dird/getmsg.c:176
-#, c-format
-msgid "bget_dirmsg: unknown bnet signal %d\n"
-msgstr "bget_dirmsg : signal bnet inconnu %d\n"
+#, fuzzy
+#~ 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/getmsg.c:194 src/dird/getmsg.c:200 src/dird/getmsg.c:213
-#: src/dird/getmsg.c:247 src/dird/getmsg.c:269 src/dird/getmsg.c:295
-#, c-format
-msgid "Malformed message: %s\n"
-msgstr "Message mal formé : %s\n"
+#, fuzzy
+#~ 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/getmsg.c:367
-#, c-format
-msgid "Bad response to %s command: wanted %s, got %s\n"
-msgstr "Mauvaise réponse à la commande %s : voulait %s, pas %s\n"
+#~ msgid "Could not find next Volume for Job %s.\n"
+#~ msgstr "Impossible de trouver le prochain volume pour le Job %s.\n"
 
-#: src/dird/getmsg.c:372
-#, c-format
-msgid "Socket error on %s command: ERR=%s\n"
-msgstr "Erreur de socket sur la commande %s : ERR=%s\n"
+#~ msgid "Pool %s not in database. %s"
+#~ msgstr "Pool %s introuvable en base. %s"
 
-#: src/dird/ua_restore.c:148
-msgid "\"RegexWhere\" specification not authorized.\n"
-msgstr ""
+#~ msgid "Pool %s created in database.\n"
+#~ msgstr "Pool %s créé en base.\n"
 
-#: src/dird/ua_restore.c:155
-msgid "\"where\" specification not authorized.\n"
-msgstr ""
+#~ msgid "You have no messages.\n"
+#~ msgstr "Vous n'avez pas de messages.\n"
 
-#: src/dird/ua_restore.c:177
-msgid ""
-"No Restore Job Resource found in bacula-dir.conf.\n"
-"You must create at least one before running this command.\n"
-msgstr ""
+#~ msgid "Choose item to prune"
+#~ msgstr "Que voulez vous purger du catalogue (prune)"
 
-#: src/dird/ua_restore.c:194
-msgid "Restore not done.\n"
-msgstr "Restauration non effectuée.\n"
+#~ 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_restore.c:205
-msgid "Unable to construct a valid BSR. Cannot continue.\n"
-msgstr "Impossible de générer un fichier bootstrap valide. Abandon.\n"
+#, fuzzy
+#~ msgid "Pruned Jobs from JobHisto catalog.\n"
+#~ msgstr "Purge du catalogue (prune) de %d %s du client %s.\n"
 
-#: src/dird/ua_restore.c:209 src/dird/ua_restore.c:221
-msgid "No files selected to be restored.\n"
-msgstr "Aucun fichier sélectionné pour la restauration.\n"
+#, fuzzy
+#~ msgid "Begin pruning Files.\n"
+#~ msgstr "Début de purge des fichiers du catalogue (prune).\n"
 
-#: src/dird/ua_restore.c:215
-msgid ""
-"\n"
-"1 file selected to be restored.\n"
-"\n"
-msgstr ""
-"\n"
-"1 fichier sélectionne pour la restauration.\n"
-"\n"
+#~ msgid "No Files found to prune.\n"
+#~ msgstr "Pas de fichier trouvé pour la purge du catalogue (prune).\n"
 
-#: src/dird/ua_restore.c:217
-#, c-format
-msgid ""
-"\n"
-"%s files selected to be restored.\n"
-"\n"
-msgstr ""
-"\n"
-"%s fichiers sélectionnés pour la restauration.\n"
+#~ 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_restore.c:236
 #, fuzzy
-msgid "No Client resource found!\n"
-msgstr "Pas de ressource « Restore Job » trouvée !\n"
+#~ msgid "Begin pruning Jobs older than %s.\n"
+#~ msgstr "Début de purge des Jobs du catalogue (prune).\n"
+
+#~ msgid "Pruned %d %s for client %s from catalog.\n"
+#~ msgstr "Purge du catalogue (prune) de %d %s du client %s.\n"
+
+#~ msgid "Jobs"
+#~ msgstr "Jobs"
+
+#~ msgid "No Jobs found to prune.\n"
+#~ msgstr "Pas de job trouvé pour la purge du catalogue (prune).\n"
 
-#: src/dird/ua_restore.c:333
 #, fuzzy
-msgid "The restore will use the following job(s) as Base\n"
-msgstr "Le job va utiliser les volumes suivants :\n"
+#~ msgid "Volume \"%s\""
+#~ msgstr "Fichiers du Volume"
 
-#: src/dird/ua_restore.c:354
-#, c-format
-msgid "Missing value for keyword: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "This command can be DANGEROUS!!!\n"
+#~ "\n"
+#~ "It purges (deletes) all Files from a Job,\n"
+#~ "JobId, Client or Volume; or it purges (deletes)\n"
+#~ "all Jobs from a Client or Volume without regard\n"
+#~ "to retention periods. Normally you should use the\n"
+#~ "PRUNE command, which respects retention periods.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Cette commande peut être DANGEUREUSE !\n"
+#~ "\n"
+#~ "Elle supprime tous les enregistrements des fichiers d'un job, \n"
+#~ "d'un client ou d'un volume ; ou bien elle supprime tous les jobs\n"
+#~ "d'un client ou d'un volume sans s'occuper des périodes de rétention.\n"
+#~ "\n"
+#~ "Normalement vous devez utiliser la commande PRUNE qui respecte les "
+#~ "périodes\n"
+#~ "de rétention.\n"
 
-#: src/dird/ua_restore.c:434
-msgid "List last 20 Jobs run"
-msgstr "Afficher les 20 derniers jobs lancés"
+#~ msgid "Choose item to purge"
+#~ msgstr "Choisissez l'élément à purger"
 
-#: src/dird/ua_restore.c:435
-msgid "List Jobs where a given File is saved"
-msgstr "Afficher les jobs où un fichier donné a été sauvegardé"
+#~ msgid "Begin purging files for Client \"%s\"\n"
+#~ msgstr "Début de la purge des fichiers du client \"%s\"\n"
 
-#: src/dird/ua_restore.c:436
-msgid "Enter list of comma separated JobIds to select"
-msgstr "Saisir une liste de JobIds à sélectionner (ex : 12,4,3)"
+#~ msgid "No Files found for client %s to purge from %s catalog.\n"
+#~ msgstr ""
+#~ "Pas de fichier à purger pour le client \"%s\" dans le catalogue %s.\n"
 
-#: src/dird/ua_restore.c:437
-msgid "Enter SQL list command"
-msgstr "Exécuter une requête SQL"
+#~ msgid "Files for %d Jobs for client \"%s\" purged from %s catalog.\n"
+#~ msgstr "Fichiers de %d jobs du client \"%s\" purgé du catalogue %s.\n"
 
-#: src/dird/ua_restore.c:438
-msgid "Select the most recent backup for a client"
-msgstr "Sélectionner la sauvegarde la plus récente pour un client"
+#~ msgid "Begin purging jobs from Client \"%s\"\n"
+#~ msgstr "Début de purge des jobs du client \"%s\"\n"
 
-#: src/dird/ua_restore.c:439
-msgid "Select backup for a client before a specified time"
-msgstr ""
-"Sélectionner la dernière sauvegarde pour un client avant une certaine date"
+#~ msgid "%d Jobs for client %s purged from %s catalog.\n"
+#~ msgstr "%d jobs du client \"%s\" purgé du catalogue %s.\n"
 
-#: src/dird/ua_restore.c:440
-msgid "Enter a list of files to restore"
-msgstr "Saisir la liste des fichiers à restaurer"
+#~ msgid ""
+#~ "\n"
+#~ "Volume \"%s\" has VolStatus \"%s\" and cannot be purged.\n"
+#~ "The VolStatus must be: Append, Full, Used, or Error to be purged.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Le volume \"%s\" est en état \"%s\" et il ne peut pas être purgé.\n"
+#~ "Son statut doit être : Append, Full, Used ou Error pour être purgé.\n"
 
-#: src/dird/ua_restore.c:441
-msgid "Enter a list of files to restore before a specified time"
-msgstr "Saisir la liste des fichiers à restaurer avant une certaine date"
+#~ msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
+#~ msgstr "%d fichier%s du volume \"%s\" purgé du catalogue.\n"
 
-#: src/dird/ua_restore.c:442
-msgid "Find the JobIds of the most recent backup for a client"
-msgstr "Afficher les JobIds de sauvegarde les plus récents pour un client"
+#~ msgid ""
+#~ "There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
+#~ msgstr ""
+#~ "Il n'y a plus de job associé avec le volume \"%s\". Il est marqué purgé.\n"
 
-#: src/dird/ua_restore.c:443
-msgid "Find the JobIds for a backup for a client before a specified time"
-msgstr "Afficher les JobIds de sauvegarde avant une certaine date"
+#, 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_restore.c:444
-msgid "Enter a list of directories to restore for found JobIds"
-msgstr "Saisir la liste des répertoires à restaurer (pour un JobId)"
+#, fuzzy
+#~ msgid "Unable to truncate volume \"%s\"\n"
+#~ msgstr "Impossible d'écrire le marqueur EOF. ERR=%s\n"
 
-#: src/dird/ua_restore.c:445
 #, fuzzy
-msgid "Select full restore to a specified Job date"
-msgstr ""
-"Sélectionner la dernière sauvegarde pour un client avant une certaine date"
+#~ msgid "No Volumes found to perform %s action.\n"
+#~ msgstr "Pas de volume à labéliser ou pas de codebar.\n"
 
-#: 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é"
+#~ 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_restore.c:491
-#, c-format
-msgid "Unknown keyword: %s\n"
-msgstr "Mot clef inconnu : %s\n"
+#~ 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_restore.c:520 src/dird/ua_update.c:957
-#, c-format
-msgid "Improper date format: %s\n"
-msgstr "Format de date invalide : %s\n"
+#~ msgid "Cannot purge Volume with VolStatus=%s\n"
+#~ msgstr "Impossible de purger un volume dans l'état (VolStatus) %s\n"
 
-#: src/dird/ua_restore.c:560
-#, c-format
-msgid "Error: Pool resource \"%s\" access not allowed.\n"
-msgstr "Erreur : l'utilisation du Pool \"%s\" n'est pas autorisé.\n"
+#~ msgid "Could not open %s: ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: src/dird/ua_restore.c:576
-msgid ""
-"\n"
-"First you select one or more JobIds that contain files\n"
-"to be restored. You will be presented several methods\n"
-"of specifying the JobIds. Then you will be allowed to\n"
-"select which files from those JobIds are to be restored.\n"
-"\n"
-msgstr ""
-"\n"
-"\n"
-"D'abord, vous devez sélectionner un ou plusieurs jobs (par leur JobId) qui\n"
-"contiennent les fichiers à restaurer. Il vous est présenté plusieurs "
-"méthodes\n"
-"pour choisir le bon JobId. Après, vous pourrez sélectionner les fichiers à\n"
-"restaurer parmi la liste totale des fichiers présents dans les jobs\n"
-"sélectionnés.\n"
-
-#: src/dird/ua_restore.c:589
-msgid "To select the JobIds, you have the following choices:\n"
-msgstr "Pour sélectionner les JobIds, vous avez les possibilités suivantes :\n"
-
-#: src/dird/ua_restore.c:594
-msgid "Select item: "
-msgstr "Choix : "
-
-#: src/dird/ua_restore.c:599 src/dird/ua_restore.c:634
-msgid "SQL query not authorized.\n"
-msgstr ""
+#~ msgid "Available queries:\n"
+#~ msgstr "Requêtes disponibles :\n"
 
-#: src/dird/ua_restore.c:612
-msgid "Enter Filename (no path):"
-msgstr "Saisissez le nom du fichier (sans le chemin) : "
+#~ msgid "Choose a query"
+#~ msgstr "Choisissez une requête"
 
-#: src/dird/ua_restore.c:627 src/dird/ua_restore.c:735
-msgid "Enter JobId(s), comma separated, to restore: "
-msgstr "Saisissez le ou les JobIds à restaurer (ex : id1,id2,id3) : "
+#~ msgid "Could not find query.\n"
+#~ msgstr "Impossible de trouver la requête.\n"
 
-#: src/dird/ua_restore.c:637
-msgid "Enter SQL list command: "
-msgstr "Exécuter une requête SQL : "
+#~ msgid "Enter SQL query: "
+#~ msgstr "Saisissez votre requête SQL : "
 
-#: src/dird/ua_restore.c:671 src/dird/ua_restore.c:694
-msgid ""
-"Enter file names with paths, or < to enter a filename\n"
-"containing a list of file names with paths, and terminate\n"
-"them with a blank line.\n"
-msgstr ""
-"Saisissez les répertoires complets ou bien < pour saisir le nom d'un\n"
-"fichier contenant la liste des répertoires et\n"
-"terminez la saisie par une ligne vide.\n"
+#~ msgid "Restore not done.\n"
+#~ msgstr "Restauration non effectuée.\n"
 
-#: src/dird/ua_restore.c:675 src/dird/ua_restore.c:698
-msgid "Enter full filename: "
-msgstr "Saisissez le nom complet du fichier : "
+#~ msgid "Unable to construct a valid BSR. Cannot continue.\n"
+#~ msgstr "Impossible de générer un fichier bootstrap valide. Abandon.\n"
 
-#: src/dird/ua_restore.c:733
-#, c-format
-msgid "You have already selected the following JobIds: %s\n"
-msgstr "Vous avez déjà sélectionné les JobIds suivants : %s\n"
+#~ msgid "No files selected to be restored.\n"
+#~ msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
-#: src/dird/ua_restore.c:751
-msgid ""
-"Enter full directory names or start the name\n"
-"with a < to indicate it is a filename containing a list\n"
-"of directories and terminate them with a blank line.\n"
-msgstr ""
-"Saisissez les répertoires complets ou bien le nom d'un\n"
-"fichier (commençant par <) contenant la liste des répertoires et\n"
-"terminez la saisie par une ligne vide.\n"
+#~ msgid ""
+#~ "\n"
+#~ "1 file selected to be restored.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "1 fichier sélectionne pour la restauration.\n"
+#~ "\n"
 
-#: src/dird/ua_restore.c:755
-msgid "Enter directory name: "
-msgstr "Saisissez le nom d'un répertoire : "
+#~ msgid ""
+#~ "\n"
+#~ "%s files selected to be restored.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s fichiers sélectionnés pour la restauration.\n"
 
-#: src/dird/ua_restore.c:771
 #, fuzzy
-msgid "Enter JobId to get the state to restore: "
-msgstr "Saisissez le JobId à supprimer : "
-
-#: src/dird/ua_restore.c:784
-#, c-format
-msgid "Selecting jobs to build the Full state at %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:810
-msgid "Invalid JobId in list.\n"
-msgstr ""
+#~ msgid "No Client resource found!\n"
+#~ msgstr "Pas de ressource « Restore Job » trouvée !\n"
 
-#: src/dird/ua_restore.c:829
-#, c-format
-msgid "Access to JobId=%s (Job \"%s\") not authorized. Not selected.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "The restore will use the following job(s) as Base\n"
+#~ msgstr "Le job va utiliser les volumes suivants :\n"
 
-#: src/dird/ua_restore.c:842
-msgid "No Jobs selected.\n"
-msgstr "Pas de job sélectionné.\n"
+#~ msgid "List last 20 Jobs run"
+#~ msgstr "Afficher les 20 derniers jobs lancés"
 
-#: src/dird/ua_restore.c:847
-#, c-format
-msgid "You have selected the following JobIds: %s\n"
-msgstr "Vous avez sélectionné les JobIds suivants : %s\n"
+#~ msgid "List Jobs where a given File is saved"
+#~ msgstr "Afficher les jobs où un fichier donné a été sauvegardé"
 
-#: src/dird/ua_restore.c:849
-#, c-format
-msgid "You have selected the following JobId: %s\n"
-msgstr "Vous avez sélectionné le JobId suivant : %s\n"
+#~ msgid "Enter list of comma separated JobIds to select"
+#~ msgstr "Saisir une liste de JobIds à sélectionner (ex : 12,4,3)"
 
-#: src/dird/ua_restore.c:859
-msgid ""
-"The restored files will the most current backup\n"
-"BEFORE the date you specify below.\n"
-"\n"
-msgstr ""
+#~ msgid "Enter SQL list command"
+#~ msgstr "Exécuter une requête SQL"
 
-#: src/dird/ua_restore.c:862
-msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
-msgstr "Saisissez la date au format YYYY-MM-DD HH:MM:SS : "
+#~ msgid "Select the most recent backup for a client"
+#~ msgstr "Sélectionner la sauvegarde la plus récente pour un client"
 
-#: src/dird/ua_restore.c:868
-msgid "Improper date format.\n"
-msgstr "Format de date invalide.\n"
+#~ msgid "Select backup for a client before a specified time"
+#~ msgstr ""
+#~ "Sélectionner la dernière sauvegarde pour un client avant une certaine date"
 
-#: src/dird/ua_restore.c:889
-#, c-format
-msgid "Cannot open file %s: ERR=%s\n"
-msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
+#~ msgid "Enter a list of files to restore"
+#~ msgstr "Saisir la liste des fichiers à restaurer"
 
-#: src/dird/ua_restore.c:897 src/dird/ua_restore.c:901
-#, c-format
-msgid "Error occurred on line %d of file \"%s\"\n"
-msgstr "Une erreur est survenue à la ligne %d de  \"%s\"\n"
+#~ msgid "Enter a list of files to restore before a specified time"
+#~ msgstr "Saisir la liste des fichiers à restaurer avant une certaine date"
 
-#: src/dird/ua_restore.c:945 src/dird/ua_restore.c:973
-#, c-format
-msgid "No database record found for: %s\n"
-msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
+#~ msgid "Find the JobIds of the most recent backup for a client"
+#~ msgstr "Afficher les JobIds de sauvegarde les plus récents pour un client"
 
-#: src/dird/ua_restore.c:961
-msgid "No JobId specified cannot continue.\n"
-msgstr ""
+#~ msgid "Find the JobIds for a backup for a client before a specified time"
+#~ msgstr "Afficher les JobIds de sauvegarde avant une certaine date"
 
-#: src/dird/ua_restore.c:994
-#, c-format
-msgid "No table found: %s\n"
-msgstr ""
+#~ msgid "Enter a list of directories to restore for found JobIds"
+#~ msgstr "Saisir la liste des répertoires à restaurer (pour un JobId)"
 
-#: src/dird/ua_restore.c:1052
-msgid ""
-"\n"
-"\n"
-"For one or more of the JobIds selected, no files were found,\n"
-"so file selection is not possible.\n"
-"Most likely your retention policy pruned the files.\n"
-msgstr ""
+#, fuzzy
+#~ 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:1055
-msgid ""
-"\n"
-"Do you want to restore all the files? (yes|no): "
-msgstr ""
-"\n"
-"Voulez vous restaurer tous les fichiers ? (oui|non) : "
+#~ msgid "Unknown keyword: %s\n"
+#~ msgstr "Mot clef inconnu : %s\n"
 
-#: src/dird/ua_restore.c:1058
-msgid ""
-"\n"
-"Regexp matching files to restore? (empty to abort): "
-msgstr ""
+#~ msgid "Improper date format: %s\n"
+#~ msgstr "Format de date invalide : %s\n"
 
-#: src/dird/ua_restore.c:1074
-#, fuzzy, c-format
-msgid "Regex compile error: %s\n"
-msgstr "erreur sockopt : %s\n"
+#~ msgid "Error: Pool resource \"%s\" does not exist.\n"
+#~ msgstr "Erreur : le Pool \"%s\" n'existe pas.\n"
 
-#: src/dird/ua_restore.c:1137
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Building directory tree for JobId(s) %s ...  "
-msgstr ""
-"\n"
-"Analyse des répertoires pour le JobId %s..."
+#~ msgid "Error: Pool resource \"%s\" access not allowed.\n"
+#~ msgstr "Erreur : l'utilisation du Pool \"%s\" n'est pas autorisé.\n"
 
-#: src/dird/ua_restore.c:1207
-#, fuzzy, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree and marked for extraction.\n"
-msgstr ""
-"\n"
-"1 Job, %s fichiers analysés et sélectionnés pour la restauration.\n"
+#~ msgid ""
+#~ "\n"
+#~ "First you select one or more JobIds that contain files\n"
+#~ "to be restored. You will be presented several methods\n"
+#~ "of specifying the JobIds. Then you will be allowed to\n"
+#~ "select which files from those JobIds are to be restored.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "D'abord, vous devez sélectionner un ou plusieurs jobs (par leur JobId) "
+#~ "qui\n"
+#~ "contiennent les fichiers à restaurer. Il vous est présenté plusieurs "
+#~ "méthodes\n"
+#~ "pour choisir le bon JobId. Après, vous pourrez sélectionner les fichiers "
+#~ "à\n"
+#~ "restaurer parmi la liste totale des fichiers présents dans les jobs\n"
+#~ "sélectionnés.\n"
+
+#~ msgid "To select the JobIds, you have the following choices:\n"
+#~ msgstr ""
+#~ "Pour sélectionner les JobIds, vous avez les possibilités suivantes :\n"
 
-#: src/dird/ua_restore.c:1210
-#, fuzzy, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree.\n"
-msgstr ""
-"\n"
-"1 Job, %s fichiers analysés\n"
+#~ msgid "Select item: "
+#~ msgstr "Choix : "
 
-#: src/dird/ua_restore.c:1285
-#, c-format
-msgid "Error getting FileSet \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "Enter Filename (no path):"
+#~ msgstr "Saisissez le nom du fichier (sans le chemin) : "
 
-#: src/dird/ua_restore.c:1290
-#, fuzzy, c-format
-msgid "FileSet argument: %s\n"
-msgstr "FileSet"
+#~ msgid "Enter JobId(s), comma separated, to restore: "
+#~ msgstr "Saisissez le ou les JobIds à restaurer (ex : id1,id2,id3) : "
 
-#: src/dird/ua_restore.c:1302
-#, fuzzy, c-format
-msgid "No FileSet found for client \"%s\".\n"
-msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
+#~ msgid "Enter SQL list command: "
+#~ msgstr "Exécuter une requête SQL : "
 
-#: src/dird/ua_restore.c:1308
-#, c-format
-msgid "Error getting FileSet record: %s\n"
-msgstr ""
+#~ msgid ""
+#~ "Enter file names with paths, or < to enter a filename\n"
+#~ "containing a list of file names with paths, and terminate\n"
+#~ "them with a blank line.\n"
+#~ msgstr ""
+#~ "Saisissez les répertoires complets ou bien < pour saisir le nom d'un\n"
+#~ "fichier contenant la liste des répertoires et\n"
+#~ "terminez la saisie par une ligne vide.\n"
 
-#: src/dird/ua_restore.c:1309
-msgid ""
-"This probably means you modified the FileSet.\n"
-"Continuing anyway.\n"
-msgstr ""
+#~ msgid "Enter full filename: "
+#~ msgstr "Saisissez le nom complet du fichier : "
 
-#: src/dird/ua_restore.c:1324
-#, c-format
-msgid "Pool \"%s\" not found, using any pool.\n"
-msgstr ""
+#~ msgid "You have already selected the following JobIds: %s\n"
+#~ msgstr "Vous avez déjà sélectionné les JobIds suivants : %s\n"
 
-#: src/dird/ua_restore.c:1351 src/dird/ua_restore.c:1367
-#, c-format
-msgid "No Full backup before %s found.\n"
-msgstr "Pas de backup Full trouvé avant %s.\n"
+#~ msgid ""
+#~ "Enter full directory names or start the name\n"
+#~ "with a < to indicate it is a filename containing a list\n"
+#~ "of directories and terminate them with a blank line.\n"
+#~ msgstr ""
+#~ "Saisissez les répertoires complets ou bien le nom d'un\n"
+#~ "fichier (commençant par <) contenant la liste des répertoires et\n"
+#~ "terminez la saisie par une ligne vide.\n"
 
-#: src/dird/ua_restore.c:1396
-msgid "No jobs found.\n"
-msgstr "Pas de jobs trouvé.\n"
+#~ msgid "Enter directory name: "
+#~ msgstr "Saisissez le nom d'un répertoire : "
 
-#: src/dird/ua_restore.c:1517
-#, c-format
-msgid "Warning default storage overridden by \"%s\" on command line.\n"
-msgstr ""
-"Attention, le storage par défaut est remplacé par  \"%s\" en ligne de "
-"commande.\n"
+#, fuzzy
+#~ msgid "Enter JobId to get the state to restore: "
+#~ msgstr "Saisissez le JobId à supprimer : "
 
-#: 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"
+#~ msgid "No Jobs selected.\n"
+#~ msgstr "Pas de job sélectionné.\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"
+#~ msgid "You have selected the following JobIds: %s\n"
+#~ msgstr "Vous avez sélectionné les JobIds suivants : %s\n"
 
-#: src/dird/ua_restore.c:1546
-#, c-format
-msgid ""
-"\n"
-"Unable to find Storage resource for\n"
-"MediaType \"%s\", needed by the Jobs you selected.\n"
-msgstr ""
+#~ msgid "You have selected the following JobId: %s\n"
+#~ msgstr "Vous avez sélectionné le JobId suivant : %s\n"
 
-#: src/dird/fd_cmds.c:95
-#, fuzzy
-msgid "Client: "
-msgstr "Client"
+#~ msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
+#~ msgstr "Saisissez la date au format YYYY-MM-DD HH:MM:SS : "
 
-#: src/dird/fd_cmds.c:137
-#, c-format
-msgid "File daemon \"%s\" rejected Job command: %s\n"
-msgstr ""
+#~ msgid "Improper date format.\n"
+#~ msgstr "Format de date invalide.\n"
 
-#: src/dird/fd_cmds.c:150
-#, c-format
-msgid "Error updating Client record. ERR=%s\n"
-msgstr ""
+#~ msgid "Cannot open file %s: ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/fd_cmds.c:155
-#, c-format
-msgid "FD gave bad response to JobId command: %s\n"
-msgstr ""
+#~ msgid "Error occurred on line %d of file \"%s\"\n"
+#~ msgstr "Une erreur est survenue à la ligne %d de  \"%s\"\n"
 
-#: src/dird/fd_cmds.c:184 src/dird/fd_cmds.c:272
-msgid ", since="
-msgstr ", depuis="
+#~ msgid "No database record found for: %s\n"
+#~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/fd_cmds.c:249
-msgid "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
-msgstr "Pas de précédent backup Full utilisable. Lancement d'un backup FULL.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Do you want to restore all the files? (yes|no): "
+#~ msgstr ""
+#~ "\n"
+#~ "Voulez vous restaurer tous les fichiers ? (oui|non) : "
 
-#: src/dird/fd_cmds.c:250 src/dird/fd_cmds.c:256 src/dird/fd_cmds.c:265
-#, c-format
-msgid " (upgraded from %s)"
-msgstr " (à la place de %s)"
+#, fuzzy
+#~ msgid "Regex compile error: %s\n"
+#~ msgstr "erreur sockopt : %s\n"
 
-#: src/dird/fd_cmds.c:255
 #, fuzzy
-msgid ""
-"No prior or suitable Differential backup found in catalog. Doing "
-"Differential backup.\n"
-msgstr "Pas de précédent backup Full utilisable. Lancement d'un backup FULL.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Building directory tree for JobId(s) %s ...  "
+#~ msgstr ""
+#~ "\n"
+#~ "Analyse des répertoires pour le JobId %s..."
 
-#: src/dird/fd_cmds.c:263
-#, c-format
-msgid "Prior failed job found in catalog. Upgrading to %s.\n"
-msgstr "Le job précédent était en erreur. Passage au type %s.\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "%s files inserted into the tree and marked for extraction.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "1 Job, %s fichiers analysés et sélectionnés pour la restauration.\n"
 
-#: src/dird/fd_cmds.c:328
-#, c-format
-msgid "Unimplemented backup level %d %c\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "%s files inserted into the tree.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "1 Job, %s fichiers analysés\n"
 
-#: src/dird/fd_cmds.c:401
-msgid ""
-"FD compression disabled for this Job because AllowCompress=No in Storage "
-"resource.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "FileSet argument: %s\n"
+#~ msgstr "FileSet"
 
-#: 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"
+#~ msgid "The defined FileSet resources are:\n"
+#~ msgstr "Les FileSet définis sont :\n"
 
-#: src/dird/fd_cmds.c:511 src/dird/fd_cmds.c:536 src/dird/fd_cmds.c:550
-msgid ">filed: write error on socket\n"
-msgstr ""
+#~ msgid "FileSet"
+#~ msgstr "FileSet"
 
-#: src/dird/fd_cmds.c:517
-#, c-format
-msgid "Error running program: %s. ERR=%s\n"
-msgstr "Erreur dans l'exécution de la commande : %s. ERR=%s\n"
+#~ msgid "Select FileSet resource"
+#~ msgstr "Sélectionnez le FileSet"
 
-#: src/dird/fd_cmds.c:526
-#, c-format
-msgid "Cannot open included file: %s. ERR=%s\n"
-msgstr "Impossible d'ouvrir le fichier inclus : %s. ERR=%s\n"
+#, fuzzy
+#~ msgid "No FileSet found for client \"%s\".\n"
+#~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/fd_cmds.c:672
-#, fuzzy, c-format
-msgid "Client \"%s\" RunScript failed.\n"
-msgstr "le client \"%s\" est introuvable.\n"
+#~ msgid "No Full backup before %s found.\n"
+#~ msgstr "Pas de backup Full trouvé avant %s.\n"
 
-#: src/dird/fd_cmds.c:695
-#, c-format
-msgid ""
-"Client \"%s\" may not be used to restore this job. Please upgrade your "
-"client.\n"
-msgstr ""
+#~ msgid "No jobs found.\n"
+#~ msgstr "Pas de jobs trouvé.\n"
 
-#: src/dird/fd_cmds.c:770
 #, fuzzy
-msgid "RestoreObject failed.\n"
-msgstr "restauration de fichier"
+#~ msgid ""
+#~ "\n"
+#~ "Warning Storage is overridden by \"%s\" on the command line.\n"
+#~ msgstr ""
+#~ "Attention, le storage par défaut est remplacé par  \"%s\" en ligne de "
+#~ "commande.\n"
 
-#: src/dird/fd_cmds.c:806
-#, c-format
-msgid ""
-"<filed: bad attributes, expected 3 fields got %d\n"
-"msglen=%d msg=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
+#~ msgstr ""
+#~ "Le Storage \"%s\" est introuvable, utilisation du Storage \"%s\" du "
+#~ "MediaType \"%s\".\n"
 
-#: 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 ""
+#~ 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/fd_cmds.c:862
-#, c-format
-msgid "%s index %d not same as attributes %d\n"
-msgstr ""
+#~ msgid "OK to run? (yes/mod/no): "
+#~ msgstr "OK pour le lancement ? (oui/mod/non) : "
 
-#: src/dird/fd_cmds.c:876
-#, c-format
-msgid "<filed: Network error getting attributes. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ 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_label.c:104
-msgid "Negative numbers not permitted\n"
-msgstr "Les nombres négatifs ne sont pas autorisés\n"
+#~ msgid "Job not run.\n"
+#~ msgstr "Job non lancé.\n"
 
-#: src/dird/ua_label.c:110 src/lib/sellist.c:76
-msgid "Range end is not integer.\n"
-msgstr ""
+#~ msgid "Job failed.\n"
+#~ msgstr "Job échoué.\n"
 
-#: src/dird/ua_label.c:115 src/lib/sellist.c:81
-msgid "Range start is not an integer.\n"
-msgstr ""
+#~ msgid "Job queued. JobId=%s\n"
+#~ msgstr "Job mis en queue. JobId=%s\n"
 
-#: src/dird/ua_label.c:121 src/lib/sellist.c:87
-msgid "Range end not bigger than start.\n"
-msgstr ""
+#~ msgid "Job \"%s\" not found\n"
+#~ msgstr "Le job \"%s\" est introuvable\n"
 
-#: 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"
+#~ msgid "A job name must be specified.\n"
+#~ msgstr "Un nom de Job doit être spécifié.\n"
 
-#: src/dird/ua_label.c:133
-msgid "Values must be be greater than zero.\n"
-msgstr "Les valeurs doivent être supérieurs à zéro.\n"
+#~ msgid "Pool \"%s\" not found.\n"
+#~ msgstr "Le pool  \"%s\" est introuvable.\n"
 
-#: src/dird/ua_label.c:137
-msgid "Slot too large.\n"
-msgstr "Slot trop grand.\n"
+#, fuzzy
+#~ msgid "NextPool \"%s\" not found.\n"
+#~ msgstr "Le pool  \"%s\" est introuvable.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "No authorization. NextPool \"%s\".\n"
+#~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Restore Client \"%s\" not found.\n"
+#~ msgstr "le client \"%s\" est introuvable.\n"
 
-#: 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"
+#~ msgid "FileSet \"%s\" not found.\n"
+#~ msgstr "Le FileSet \"%s\" est introuvable.\n"
 
-#: 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"
+#~ msgid "Storage \"%s\" not found.\n"
+#~ msgstr "Le Storage \"%s\" est introuvable.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "No JobId specified.\n"
+#~ msgstr "Pas de job sélectionné.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Invalid or no Job name specified.\n"
+#~ msgstr "Le job est déjà spécifié.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Enter the JobId list to select: "
+#~ msgstr "Entrez le JobId à sélectionner : "
 
-#: 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"
+#, fuzzy
+#~ msgid "Could not get job record for selected JobId=%d. ERR=%s"
+#~ msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
 
-#: src/dird/ua_label.c:394
-#, c-format
-msgid ""
-"Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
-"relabeling.\n"
-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"
+#~ msgid "You have the following choices:\n"
+#~ msgstr "Vous avez les choix suivants :\n"
 
-#: src/dird/ua_label.c:410
-msgid "Enter new Volume name: "
-msgstr "Saisissez le nouveau nom du Volume : "
+#, fuzzy
+#~ msgid "Select termination code: "
+#~ msgstr "Sélection terminée.\n"
 
-#: 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"
+#~ msgid "mod"
+#~ msgstr "mod"
 
-#: src/dird/ua_label.c:443
-msgid "Enter slot (0 or Enter for none): "
-msgstr "Saisissez le slot (0 ou Entrée pour aucun) : "
+#~ msgid "Parameters to modify:\n"
+#~ msgstr "Paramètre à modifier :\n"
 
-#: 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"
+#~ msgid "Level"
+#~ msgstr "Type"
 
-#: 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"
+#, fuzzy
+#~ msgid "Restore Client"
+#~ msgstr "Restauration annulée"
 
-#: src/dird/ua_label.c:485
-#, c-format
-msgid "Requesting to mount %s ...\n"
-msgstr "Demande pour monter %s...\n"
+#~ msgid "When"
+#~ msgstr "Quand"
 
-#: src/dird/ua_label.c:507
-msgid "Do not forget to mount the drive!!!\n"
-msgstr "N'oubliez pas de monter le lecteur.\n"
+#~ msgid "Priority"
+#~ msgstr "Priorité"
 
-#: src/dird/ua_label.c:547
-msgid ""
-"The following Volumes will be labeled:\n"
-"Slot  Volume\n"
-"==============\n"
-msgstr ""
-"Les volumes suivants vont être labélisés :\n"
-"Slot  Volume\n"
-"==============\n"
+#~ msgid "Pool"
+#~ msgstr "Pool"
 
-#: 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) : "
+#~ msgid "NextPool"
+#~ msgstr "Pool"
 
-#: src/dird/ua_label.c:576
-#, c-format
-msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
-msgstr ""
+#~ msgid "Verify Job"
+#~ msgstr "Job de vérification"
 
-#: src/dird/ua_label.c:582
-#, c-format
-msgid "Error setting InChanger: ERR=%s"
-msgstr "Impossible de positionner le flag InChanger : ERR=%s"
+#~ msgid "Bootstrap"
+#~ msgstr "Bootstrap"
 
-#: 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"
+#~ msgid "Where"
+#~ msgstr "Destination"
 
-#: src/dird/ua_label.c:613
-#, c-format
-msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
-msgstr ""
+#~ msgid "Replace"
+#~ msgstr "Écrasement"
 
-#: src/dird/ua_label.c:620
-#, c-format
-msgid "Catalog error on cleaning tape: %s"
-msgstr ""
+#~ msgid "JobId"
+#~ msgstr "JobId"
 
-#: 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"
+#~ msgid "Select parameter to modify"
+#~ msgstr "Sélectionnez le paramètre à modifier"
 
-#: 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"
+#~ 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_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"
+#~ msgid "Enter new Priority: "
+#~ msgstr "Saisissez la nouvelle priorité : "
 
-#: src/dird/ua_label.c:751
-#, c-format
-msgid "Catalog record for Volume \"%s\", Slot %d  successfully created.\n"
-msgstr ""
+#~ msgid "Priority must be a positive integer.\n"
+#~ msgstr "La priorité doit être un entier positif.\n"
 
-#: 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"
+#~ msgid "Please enter the Bootstrap file name: "
+#~ msgstr "Saisissez le nom du fichier Bootstrap : "
 
-#: src/dird/ua_label.c:802
-msgid "Could not open SD socket.\n"
-msgstr "Impossible d'ouvrir la socket avec le SD.\n"
+# Impossible d'ouvrir %s : ERR=%s
+#~ msgid "Warning cannot open %s: ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Command input"
+#~ msgstr "Erreur sur la commande : %s\n"
 
-#: src/dird/ua_label.c:893
-#, c-format
-msgid "Invalid Volume name: %s\n"
-msgstr "Nom de Volume invalide : %s\n"
+#, 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_label.c:987
-#, c-format
-msgid "Device \"%s\" has %d slots.\n"
-msgstr "Le Device \"%s\" a %d slots.\n"
+#~ msgid "Replace:\n"
+#~ msgstr "Écrasement :\n"
 
-#: 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"
+#~ msgid "Select replace option"
+#~ msgstr "Saisissez l'option d'écrasement"
+
+#~ 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"
+
+#~ msgid "Invalid replace option: %s\n"
+#~ msgstr "Option d'écrasement (Replace) invalide : %s\n"
 
-#: 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"
+#~ msgid "Storage from NextPool override"
+#~ msgstr "Sélectionnez le Pool"
 
-#: src/dird/ua_label.c:1250
-msgid ""
-" Slot |   Volume Name    |   Status  |     Media Type       |      "
-"Pool          |\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Please enter the path prefix to strip: "
+#~ msgstr "Saisissez le début du chemin (prefix) à enlever : "
 
-#: src/dird/ua_label.c:1251
-msgid ""
-"------+------------------+-----------+----------------------"
-"+--------------------|\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Please enter the path prefix to add (/ for none): "
+#~ msgstr "Saisissez le chemin (prefix) à ajouter (/ pour aucun) : "
 
-#: src/dird/scheduler.c:112
-#, c-format
-msgid "Job %s not found\n"
-msgstr "Job %s non trouvé\n"
+#, fuzzy
+#~ msgid "Please enter the file suffix to add: "
+#~ msgstr "Saisissez une extention à ajouter aux fichiers : "
 
-#: src/dird/scheduler.c:136
-msgid "Walk queue"
-msgstr ""
+#~ msgid "Please enter a valid regexp (!from!to!): "
+#~ msgstr "Saisissez une regexp valide (!rechercher!remplacer!) : "
 
-#: src/dird/scheduler.c:146
-msgid "Dequeued job"
-msgstr ""
+#~ msgid "Cannot use your regexp\n"
+#~ msgstr "Impossible d'utiliser votre regexp\n"
 
-#: src/dird/scheduler.c:149
-msgid "Scheduler logic error\n"
-msgstr ""
+#~ msgid "Please enter filename to test: "
+#~ msgstr "Saisissez un nom de fichier à tester : "
 
-#: src/dird/scheduler.c:190
-msgid "Run job"
-msgstr ""
+#~ msgid "%s -> %s\n"
+#~ msgstr "%s -> %s\n"
 
-#: src/dird/scheduler.c:223
-msgid "run override"
-msgstr ""
+#~ msgid "Cannot use your regexp.\n"
+#~ msgstr "Impossible d'utiliser votre regexp.\n"
 
-#: src/dird/scheduler.c:413
-msgid "Inserted job"
-msgstr ""
+#~ msgid "Levels:\n"
+#~ msgstr "Types :\n"
 
-#: src/dird/scheduler.c:421
-msgid "Appended job"
-msgstr ""
+#~ msgid "Full"
+#~ msgstr "Full"
 
-#: src/dird/scheduler.c:425
-msgid "Run queue"
-msgstr ""
+#~ msgid "Incremental"
+#~ msgstr "Incrémental"
 
-#: src/dird/run_conf.c:208
-#, c-format
-msgid "Expected an equals, got: %s"
-msgstr "Attendait un égale, pas : %s"
+#~ msgid "Differential"
+#~ msgstr "Différentiel"
 
-#: src/dird/run_conf.c:221 src/dird/run_conf.c:233 src/dird/run_conf.c:327
-#, c-format
-msgid "Expect a YES or NO, got: %s"
-msgstr "Attendait Oui ou Non, eu : %s"
+#~ msgid "Since"
+#~ msgstr "Depuis"
 
-#: src/dird/run_conf.c:247
-#, c-format
-msgid "Job level field: %s not found in run record"
-msgstr ""
+#~ msgid "Select level"
+#~ msgstr "Saisissez le type"
 
-#: src/dird/run_conf.c:265
-#, c-format
-msgid "Could not find specified Pool Resource: %s"
-msgstr ""
+#~ msgid "Initialize Catalog"
+#~ msgstr "Initialisez le catalogue"
 
-#: src/dird/run_conf.c:290
-#, c-format
-msgid "Could not find specified Storage Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:302
-#, c-format
-msgid "Could not find specified Messages Resource: %s"
-msgstr ""
+#~ msgid "Verify Volume Data (not yet implemented)"
+#~ msgstr "Vérification des données sur le volume (pas encore implémenté)"
 
-#: src/dird/run_conf.c:312 src/lib/parse_conf.c:736 src/lib/parse_conf.c:742
-#, c-format
-msgid "expected a time period, got: %s"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Run Admin Job\n"
+#~ "JobName:  %s\n"
+#~ "FileSet:  %s\n"
+#~ "Client:   %s\n"
+#~ "Storage:  %s\n"
+#~ "When:     %s\n"
+#~ "Priority: %d\n"
+#~ msgstr ""
+#~ "Lancement du job %s\n"
+#~ "JobName : %s\n"
+#~ "FileSet : %s\n"
+#~ "Client   : %s\n"
+#~ "Storage  : %s\n"
+#~ "Quand    : %s\n"
+#~ "Priorité : %d\n"
 
-#: src/dird/run_conf.c:331
-#, c-format
-msgid "Expected a keyword name, got: %s"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Run Backup job\n"
+#~ "JobName:  %s\n"
+#~ "Level:    %s\n"
+#~ "Client:   %s\n"
+#~ "FileSet:  %s\n"
+#~ "Pool:     %s (From %s)\n"
+#~ "%sStorage:  %s (From %s)\n"
+#~ "When:     %s\n"
+#~ "Priority: %d\n"
+#~ msgstr ""
+#~ "Lancement du job %s\n"
+#~ "JobName  : %s\n"
+#~ "Niveau   : %s\n"
+#~ "Client   : %s\n"
+#~ "FileSet  : %s\n"
+#~ "Pool     : %s (Depuis %s)\n"
+#~ "Storage  : %s (Depuis %s)\n"
+#~ "Quand    : %s\n"
+#~ "Priorité : %d\n"
 
-#: src/dird/run_conf.c:370
-msgid "Day number out of range (1-31)"
-msgstr ""
+#, fuzzy
+#~ 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/run_conf.c:387 src/dird/run_conf.c:542
-msgid "Week number out of range (0-53)"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Run Verify Job\n"
+#~ "JobName:     %s\n"
+#~ "Level:       %s\n"
+#~ "Client:      %s\n"
+#~ "FileSet:     %s\n"
+#~ "Pool:        %s (From %s)\n"
+#~ "Storage:     %s (From %s)\n"
+#~ "Verify Job:  %s\n"
+#~ "Verify List: %s\n"
+#~ "When:        %s\n"
+#~ "Priority:    %d\n"
+#~ msgstr ""
+#~ "Lancement du job %s\n"
+#~ "JobName    : %s\n"
+#~ "Niveau     : %s\n"
+#~ "Client     : %s\n"
+#~ "FileSet    : %s\n"
+#~ "Pool       : %s (Depuis %s)\n"
+#~ "Storage    : %s (Depuis %s)\n"
+#~ "Verify Job : %s\n"
+#~ "Verify List: %s\n"
+#~ "Quand      : %s\n"
+#~ "Priorité   : %d\n"
+
+#~ msgid "Please enter a JobId for restore: "
+#~ msgstr "Saisissez le JobId pour la restauration : "
 
-#: src/dird/run_conf.c:403
-#, c-format
-msgid "Job type field: %s in run record not found"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Run Restore job\n"
+#~ "JobName:         %s\n"
+#~ "Bootstrap:       %s\n"
+#~ "RegexWhere:      %s\n"
+#~ "Replace:         %s\n"
+#~ "FileSet:         %s\n"
+#~ "Backup Client:   %s\n"
+#~ "Restore Client:  %s\n"
+#~ "Storage:         %s\n"
+#~ "When:            %s\n"
+#~ "Catalog:         %s\n"
+#~ "Priority:        %d\n"
+#~ msgstr ""
+#~ "Lancement de la restauration\n"
+#~ "JobName :         %s\n"
+#~ "Bootstrap :       %s\n"
+#~ "RegexWhere :      %s\n"
+#~ "Écrasement :      %s\n"
+#~ "FileSet :         %s\n"
+#~ "Backup Client :   %s\n"
+#~ "Restore Client :  %s\n"
+#~ "Storage :         %s\n"
+#~ "Quand :           %s\n"
+#~ "Catalogue :       %s\n"
+#~ "Priorité :        %d\n"
 
-#: src/dird/run_conf.c:410
-#, c-format
-msgid "Unexpected token: %d:%s"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Run Restore job\n"
+#~ "JobName:         %s\n"
+#~ "Bootstrap:       %s\n"
+#~ "Where:           %s\n"
+#~ "Replace:         %s\n"
+#~ "FileSet:         %s\n"
+#~ "Backup Client:   %s\n"
+#~ "Restore Client:  %s\n"
+#~ "Storage:         %s\n"
+#~ "When:            %s\n"
+#~ "Catalog:         %s\n"
+#~ "Priority:        %d\n"
+#~ msgstr ""
+#~ "Lancement de la restauration\n"
+#~ "JobName :        %s\n"
+#~ "Bootstrap :      %s\n"
+#~ "Déplacement :    %s\n"
+#~ "Écrasement :     %s\n"
+#~ "FileSet :        %s\n"
+#~ "Backup Client :  %s\n"
+#~ "Restore Client : %s\n"
+#~ "Storage :        %s\n"
+#~ "Quand :          %s\n"
+#~ "Catalogue :      %s\n"
+#~ "Priorité :       %d\n"
+#~ "Options Plugins: %s\n"
 
-#: src/dird/run_conf.c:454
-msgid "Time must be preceded by keyword AT."
-msgstr ""
+#~ msgid ""
+#~ "Run Restore job\n"
+#~ "JobName:    %s\n"
+#~ "Bootstrap:  %s\n"
+#~ msgstr ""
+#~ "Lancement de la restauration\n"
+#~ "JobName :    %s\n"
+#~ "Bootstrap :  %s\n"
 
-#: src/dird/run_conf.c:463
-msgid "Time logic error.\n"
-msgstr ""
+#~ msgid "Where:      %s\n"
+#~ msgstr "Where :     %s\n"
 
-#: src/dird/run_conf.c:478 src/dird/run_conf.c:497
-msgid "Bad time specification."
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Replace:         %s\n"
+#~ "Client:          %s\n"
+#~ "Storage:         %s\n"
+#~ "JobId:           %s\n"
+#~ "When:            %s\n"
+#~ "Catalog:         %s\n"
+#~ "Priority:        %d\n"
+#~ msgstr ""
+#~ "Écrasement :      %s\n"
+#~ "Client :          %s\n"
+#~ "Storage :         %s\n"
+#~ "JobId :           %s\n"
+#~ "Quand :           %s\n"
+#~ "Catalogue :       %s\n"
+#~ "Priorité :        %d\n"
+#~ "Options Plugins : %s\n"
 
-#: src/dird/run_conf.c:511
-msgid "Range logic error.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Run Copy job\n"
+#~ msgstr "Sélectionnez le Job de restauration"
 
-#: src/dird/run_conf.c:520
-msgid "Bad day range specification."
-msgstr ""
+#, fuzzy
+#~ msgid "Run Migration job\n"
+#~ msgstr "Sélectionnez le Job de restauration"
 
-#: src/dird/run_conf.c:567
-msgid "Invalid month, week or position day range"
-msgstr ""
+#~ msgid "Unknown Job Type=%d\n"
+#~ msgstr "Job du Type=%d inconnu\n"
 
-#: src/dird/run_conf.c:582
-msgid "Invalid month, weekday or position range"
-msgstr ""
+#~ msgid "JobId specified twice.\n"
+#~ msgstr "Le JobId est déjà spécifié.\n"
 
-#: src/dird/run_conf.c:641
-msgid "Unexpected run state\n"
-msgstr ""
+#~ msgid "Client specified twice.\n"
+#~ msgstr "Le client est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:97
-msgid "Update choice:\n"
-msgstr "Élément à mettre à jour :\n"
+#~ msgid "FileSet specified twice.\n"
+#~ msgstr "Le FileSet est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:98
-msgid "Volume parameters"
-msgstr "Paramètres d'un volume"
+#~ msgid "Level specified twice.\n"
+#~ msgstr "Le type (Level) est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:99
-msgid "Pool from resource"
-msgstr "Pool à partir de sa définition"
+#~ msgid "Storage specified twice.\n"
+#~ msgstr "Le Storage est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:100
-msgid "Slots from autochanger"
-msgstr "Slots d'un autochangeur"
+#~ msgid "RegexWhere or Where specified twice.\n"
+#~ msgstr "RegexWhere ou Where est déjà spécifiée.\n"
 
-#: src/dird/ua_update.c:101
 #, fuzzy
-msgid "Long term statistics"
-msgstr "Spooling des données...\n"
+#~ msgid "No authorization for \"regexwhere\" specification.\n"
+#~ msgstr "La destination (Where) est déjà spécifiée.\n"
 
-#: src/dird/ua_update.c:102
-msgid "item"
-msgstr "item"
+#~ msgid "Where or RegexWhere specified twice.\n"
+#~ msgstr "RegexWhere ou Where est déjà spécifiée.\n"
 
-#: src/dird/ua_update.c:102
-msgid "Choose catalog item to update"
-msgstr "Choisissez l'élément à mettre à jour"
+#, fuzzy
+#~ msgid "No authoriztion for \"where\" specification.\n"
+#~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_update.c:145
-#, c-format
-msgid "Invalid VolStatus specified: %s\n"
-msgstr ""
+#~ msgid "Bootstrap specified twice.\n"
+#~ msgstr "Le bootstrap est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:154
-#, c-format
-msgid "New Volume status is: %s\n"
-msgstr "Le statut du volume est : %s\n"
+#~ msgid "Replace specified twice.\n"
+#~ msgstr "L'option d'écrasement (Replace) est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:164
-#, c-format
-msgid "Invalid retention period specified: %s\n"
-msgstr "Période de rétention invalide : %s\n"
+#~ msgid "When specified twice.\n"
+#~ msgstr "La planification (When) est déjà spécifiée.\n"
 
-#: src/dird/ua_update.c:172
-#, c-format
-msgid "New retention period is: %s\n"
-msgstr "La nouvelle période de rétention est : %s\n"
+#~ msgid "Priority specified twice.\n"
+#~ msgstr "La priorité (Priority) est déjà spécifiée.\n"
 
-#: src/dird/ua_update.c:183
-#, c-format
-msgid "Invalid use duration specified: %s\n"
-msgstr "Durée d'utilisation invalide : %s\n"
+#~ 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_update.c:191
-#, c-format
-msgid "New use duration is: %s\n"
-msgstr "La nouvelle durée d'utilisation est : %s\n"
+#~ msgid "Pool specified twice.\n"
+#~ msgstr "Le pool est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:205
-#, c-format
-msgid "New max jobs is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore Client specified twice.\n"
+#~ msgstr "Le client est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:218
-#, c-format
-msgid "New max files is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Plugin Options not yet implemented.\n"
+#~ msgstr "Le client est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:229
-#, c-format
-msgid "Invalid max. bytes specification: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Plugin Options specified twice.\n"
+#~ msgstr "Le client est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:237
-#, c-format
-msgid "New Max bytes is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No authoriztion for \"PluginOptions\" specification.\n"
+#~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_update.c:248 src/dird/ua_update.c:268
-msgid "Invalid value. It must be yes or no.\n"
-msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
+#, fuzzy
+#~ msgid "Spool flag specified twice.\n"
+#~ msgstr "Le pool est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:256
-#, c-format
-msgid "New Recycle flag is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Invalid spooldata flag.\n"
+#~ msgstr "Période invalide.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "IgnoreDuplicateCheck flag specified twice.\n"
+#~ msgstr "Le pool est déjà spécifié.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Invalid ignoreduplicatecheck flag.\n"
+#~ msgstr "Période invalide.\n"
 
-#: src/dird/ua_update.c:276
-#, c-format
-msgid "New InChanger flag is: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Accurate flag specified twice.\n"
+#~ msgstr "Le pool est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:294
-#, c-format
-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"
+#, fuzzy
+#~ msgid "Invalid accurate flag.\n"
+#~ msgstr "Période invalide.\n"
 
-#: src/dird/ua_update.c:304 src/dird/ua_update.c:728
-#, c-format
-msgid "Error updating media record Slot: ERR=%s"
-msgstr ""
+#~ msgid "Job name specified twice.\n"
+#~ msgstr "Le job est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:306
-#, c-format
-msgid "New Slot is: %d\n"
-msgstr "Le nouveau slot est : %d\n"
+#, fuzzy
+#~ msgid "Media Type specified twice.\n"
+#~ msgstr "L'option d'écrasement (Replace) est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:331
-#, c-format
-msgid "New Pool is: %s\n"
-msgstr "Le nouveau pool est : %s\n"
+#, fuzzy
+#~ msgid "NextPool specified twice.\n"
+#~ msgstr "Le pool est déjà spécifié.\n"
 
-#: src/dird/ua_update.c:374
-#, c-format
-msgid "New RecyclePool is: %s\n"
-msgstr "Le nouveau RecyclePool est : %s\n"
+#~ msgid "Invalid keyword: %s\n"
+#~ msgstr "Argument invalide : %s\n"
 
-#: src/dird/ua_update.c:394
-#, c-format
-msgid "Error updating Volume record: ERR=%s"
-msgstr ""
+#~ msgid "Catalog \"%s\" not found\n"
+#~ msgstr "Le catalogue \"%s\" est introuvable\n"
 
-#: src/dird/ua_update.c:396
-#, c-format
-msgid "Volume defaults updated from \"%s\" Pool record.\n"
-msgstr ""
+#~ msgid "The current %s retention period is: %s\n"
+#~ msgstr "La période de rétention courante %s est : %s\n"
 
-#: src/dird/ua_update.c:419 src/dird/ua_update.c:451
-#, c-format
-msgid "Error updating Volume records: ERR=%s"
-msgstr ""
+#~ msgid "Continue? (yes/mod/no): "
+#~ msgstr "Continuer ? (oui/mod/non) : "
 
-#: 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 ""
+#~ msgid "Enter new retention period: "
+#~ msgstr "Saisissez une nouvelle période de rétention : "
 
-#: src/dird/ua_update.c:443
-#, c-format
-msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
-msgstr ""
+#~ msgid "Invalid period.\n"
+#~ msgstr "Période invalide.\n"
 
-#: src/dird/ua_update.c:469
-#, fuzzy, c-format
-msgid "Error updating media record Enabled: ERR=%s"
-msgstr "Impossible de mettre à jour les informations du Volume : ERR=%s"
+#~ msgid "The defined Storage resources are:\n"
+#~ msgstr "Les ressources de Stockage définies sont :\n"
 
-#: src/dird/ua_update.c:472
-#, fuzzy, c-format
-msgid "New Enabled is: %d\n"
-msgstr "Le nouveau flag Enabled est : %d\n"
+#~ msgid "Select Storage resource"
+#~ msgstr "Sélectionnez la ressource de Stockage"
 
-#: 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"
+#~ msgid "The defined Catalog resources are:\n"
+#~ msgstr "Les Catalogues définis sont :\n"
 
-#: 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"
+#~ msgid "Catalog"
+#~ msgstr "Catalogue"
 
-#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
-msgid "Parameters to modify:\n"
-msgstr "Paramètre à modifier :\n"
+#~ msgid "Select Catalog resource"
+#~ msgstr "Sélectionnez le Catalogue"
 
-#: src/dird/ua_update.c:606
-msgid "Volume Status"
-msgstr "Statut d'un volume"
+#~ msgid "The defined Job resources are:\n"
+#~ msgstr "Les Job définis sont :\n"
 
-#: src/dird/ua_update.c:607
-msgid "Volume Retention Period"
-msgstr "Période de rétention d'un volume"
+#~ msgid "Select Job resource"
+#~ msgstr "Sélectionnez le Job"
 
-#: src/dird/ua_update.c:608
-msgid "Volume Use Duration"
-msgstr "Durée d'utilisation d'un volume"
+#, fuzzy
+#~ msgid "Error: Restore Job resource \"%s\" does not exist.\n"
+#~ msgstr "Erreur : le Pool \"%s\" n'existe pas.\n"
 
-#: src/dird/ua_update.c:609
-msgid "Maximum Volume Jobs"
-msgstr "Nombre maximum de job sur un volume"
+#~ msgid "The defined Restore Job resources are:\n"
+#~ msgstr "Les Job de restauration sont :\n"
 
-#: src/dird/ua_update.c:610
-msgid "Maximum Volume Files"
-msgstr "Nombre maximum de fichier sur un volume"
+#~ msgid "Select Restore Job"
+#~ msgstr "Sélectionnez le Job de restauration"
 
-#: src/dird/ua_update.c:611
-msgid "Maximum Volume Bytes"
-msgstr "Taille maximum d'un volume"
+#~ msgid "The defined Client resources are:\n"
+#~ msgstr "Les clients définis sont :\n"
 
-#: src/dird/ua_update.c:612
-msgid "Recycle Flag"
-msgstr "Flag de recyclage"
+#~ msgid "Select Client (File daemon) resource"
+#~ msgstr "Sélectionnez le client (File daemon)"
 
-#: src/dird/ua_update.c:613
-msgid "Slot"
-msgstr ""
+#~ msgid "Error: Client resource %s does not exist.\n"
+#~ msgstr "Erreur : le client %s n'est pas définie.\n"
 
-#: src/dird/ua_update.c:614
-msgid "InChanger Flag"
-msgstr "Flag InChanger"
+#~ msgid "Could not find Client %s: ERR=%s"
+#~ msgstr "Impossible de trouver le client %s : ERR=%s"
 
-#: src/dird/ua_update.c:615
-msgid "Volume Files"
-msgstr "Fichiers du Volume"
+#~ msgid "Could not find Client \"%s\": ERR=%s"
+#~ msgstr "Impossible de trouver le client \"%s\" : ERR=%s"
 
-#: src/dird/ua_update.c:617
-msgid "Volume from Pool"
-msgstr ""
+#~ msgid "Error obtaining client ids. ERR=%s\n"
+#~ msgstr "Erreur pendant l'obtention de l'identifiant du Client. ERR=%s\n"
 
-#: src/dird/ua_update.c:618
-msgid "All Volumes from Pool"
-msgstr ""
+#~ msgid "No clients defined. You must run a job before using this command.\n"
+#~ msgstr ""
+#~ "Pas de client défini. Vous devez lancer une sauvegarde avant d'utiliser "
+#~ "cette commande.\n"
 
-#: src/dird/ua_update.c:619
-msgid "All Volumes from all Pools"
-msgstr ""
+#~ msgid "Defined Clients:\n"
+#~ msgstr "Clients définis :\n"
 
-#: src/dird/ua_update.c:620
-msgid "Enabled"
-msgstr ""
+#~ msgid "Select the Client"
+#~ msgstr "Sélectionnez le client"
 
-#: src/dird/ua_update.c:621
-msgid "RecyclePool"
-msgstr "RecyclePool"
+#~ msgid "Could not find Pool \"%s\": ERR=%s"
+#~ msgstr "Impossible de trouver le Pool \"%s\" : ERR=%s"
 
-#: src/dird/ua_update.c:622
-msgid "Action On Purge"
-msgstr ""
+#~ msgid "No pools defined. Use the \"create\" command to create one.\n"
+#~ msgstr ""
+#~ "Pas de Pool défini. Utilisez la commande « create » pour en créer un.\n"
+
+#~ msgid "Defined Pools:\n"
+#~ msgstr "Pools définis :\n"
 
-#: src/dird/ua_update.c:623
-msgid "Done"
-msgstr "Fin"
+#~ msgid "Select the Pool"
+#~ msgstr "Sélectionnez le Pool"
 
-#: 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"
+#~ msgid "No access to Pool \"%s\"\n"
+#~ msgstr "Pas d'accès au Pool \"%s\"\n"
 
-#: src/dird/ua_update.c:632
-#, c-format
-msgid "Updating Volume \"%s\"\n"
-msgstr "Mise à jour du Volume \"%s\"\n"
+#, fuzzy
+#~ msgid "Enter *MediaId or Volume name: "
+#~ msgstr "Saisissez le MediaId ou le nom du Volume : "
 
-#: 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"
+#~ msgid "The defined Pool resources are:\n"
+#~ msgstr "Les Pools définis sont :\n"
 
-#: src/dird/ua_update.c:638
-msgid "Possible Values are:\n"
-msgstr "Les valeurs possibles sont :\n"
+#~ msgid "Select Pool resource"
+#~ msgstr "Sélectionnez le Pool"
 
-#: src/dird/ua_update.c:649
-msgid "Choose new Volume Status"
-msgstr "Saisissez le nouveau statut du volume (Volume Status)"
+#~ msgid "Enter the JobId to select: "
+#~ msgstr "Entrez le JobId à sélectionner : "
 
-#: 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"
+#~ msgid "Could not find Job \"%s\": ERR=%s"
+#~ msgstr "Impossible de trouver le Job \"%s\" : ERR=%s"
 
-#: src/dird/ua_update.c:657
-msgid "Enter Volume Retention period: "
-msgstr "Saisissez la période de rétention du volume : "
+#~ msgid "Automatically selected %s: %s\n"
+#~ msgstr "Sélection automatique %s : %s\n"
 
-#: 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"
+#~ msgid "Selection list for \"%s\" is empty!\n"
+#~ msgstr "La sélection pour \"%s\" est vide !\n"
 
-#: src/dird/ua_update.c:666
-msgid "Enter Volume Use Duration: "
-msgstr "Saisissez la durée d'utilisation du volume : "
+#~ msgid "Automatically selected: %s\n"
+#~ msgstr "Sélection automatique : %s\n"
 
-#: 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"
+#~ msgid "Selection aborted, nothing done.\n"
+#~ msgstr "Sélection annulée, rien de fait.\n"
 
-#: src/dird/ua_update.c:674
-msgid "Enter new Maximum Jobs: "
-msgstr "Saisissez la valeur du nombre maximum de Job : "
+#~ msgid "Please enter a number between 1 and %d\n"
+#~ msgstr "Merci de saisir un nombre entre 1 et %d\n"
 
-#: 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"
+#~ msgid "Expecting jobid=nn command, got: %s\n"
+#~ msgstr "Attendait l'option jobid=nn, pas : %s\n"
 
-#: src/dird/ua_update.c:682
-msgid "Enter new Maximum Files: "
-msgstr "Saisissez la valeur du nombre maximum de fichier (Maximum Files) : "
+#~ msgid "JobId %s is not running.\n"
+#~ msgstr "JobId %s n'est pas en cours.\n"
 
-#: src/dird/ua_update.c:689
-#, c-format
-msgid "Current value is: %s\n"
-msgstr "La valeur actuelle est : %s\n"
+#~ msgid "Expecting job=xxx, got: %s.\n"
+#~ msgstr "Attendait l'option job=xxx, pas : %s\n"
 
-#: src/dird/ua_update.c:690
-msgid "Enter new Maximum Bytes: "
-msgstr "Saisissez la nouvelle taille maximum (octets) : "
+#~ msgid "Job \"%s\" is not running.\n"
+#~ msgstr "Job \"%s\" n'est pas en cours.\n"
 
-#: src/dird/ua_update.c:698
-#, c-format
-msgid "Current recycle flag is: %s\n"
-msgstr "Le flag de recyclage courant est : %s\n"
+#~ msgid "Expecting ujobid=xxx, got: %s.\n"
+#~ msgstr "Attendait l'option ujobid=xxx, pas : %s\n"
 
-#: src/dird/ua_update.c:700
-msgid "Enter new Recycle status: "
-msgstr ""
+#~ msgid "Storage resource \"%s\": not found\n"
+#~ msgstr "Storage resource \"%s\" : non trouvé\n"
 
-#: src/dird/ua_update.c:707
-#, c-format
-msgid "Current Slot is: %d\n"
-msgstr "Le slot courant est : %d\n"
+#~ msgid "Enter autochanger drive[0]: "
+#~ msgstr "Saisissez le numéro du lecteur de l'autochanger [0] : "
 
-#: src/dird/ua_update.c:708
-msgid "Enter new Slot: "
-msgstr "Saisissez le nouveau slot : "
+#~ msgid "Enter autochanger slot: "
+#~ msgstr "Saisissez le slot de l'autochanger [0] : "
 
-#: src/dird/ua_update.c:715
-#, c-format
-msgid "Current InChanger flag is: %d\n"
-msgstr "Le flag InChanger courant est : %d\n"
+#~ msgid "Select the Media Type"
+#~ msgstr "Choisissez le type de Media"
 
-#: 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 : "
+#~ msgid "No Jobs running.\n"
+#~ msgstr "Pas de job en cours.\n"
 
-#: src/dird/ua_update.c:730
-#, c-format
-msgid "New InChanger flag is: %d\n"
-msgstr "Le nouveau flag InChanger est : %d\n"
+#~ msgid "None of your jobs are running.\n"
+#~ msgstr "Aucun de vos jobs ne sont en cours.\n"
 
-#: src/dird/ua_update.c:737
-msgid ""
-"Warning changing Volume Files can result\n"
-"in loss of data on your Volume\n"
-"\n"
-msgstr ""
-"Attention, changer le nombre de fichier du Volume peut\n"
-"vous faire perdre des données du Volume\n"
-"\n"
+#, fuzzy
+#~ msgid "Unauthorized command from this console for JobId=%d.\n"
+#~ msgstr "Commande interdite depuis cette console.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Warning Job JobId=%d is not running. Continuing anyway...\n"
+#~ msgstr "Attention le Job %s n'est pas en cours. Continuons quand même...\n"
 
-#: src/dird/ua_update.c:740
-msgid "Enter new number of Files for Volume: "
-msgstr "Saisissez le nouveau nombre de fichiers du Volume : "
+#, fuzzy
+#~ msgid "Confirm %s of %d Job%s (yes/no): "
+#~ msgstr "Confirmez l'annulation (oui/non) : "
 
-#: 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"
+#~ 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_update.c:746
 #, fuzzy
-msgid "Increase Volume Files? (yes/no): "
-msgstr "Le nouveau nombre de fichier du Volume est : %u\n"
+#~ msgid "Select Job(s):\n"
+#~ msgstr "Sélectionnez le Job :\n"
 
-#: 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"
+#~ msgid "JobId=%s Job=%s"
+#~ msgstr "JobId=%s Job=%s"
 
-#: src/dird/ua_update.c:768
-#, c-format
-msgid "Current Pool is: %s\n"
-msgstr "Le pool courant est : %s\n"
+#, fuzzy
+#~ msgid "Choose Job list to %s"
+#~ msgstr "Sélectionnez le Job à annuler"
 
-#: src/dird/ua_update.c:769
-msgid "Enter new Pool name: "
-msgstr "Saisissez le nouveau nom pour ce pool : "
+#~ msgid "You have messages.\n"
+#~ msgstr "Vous avez des messages.\n"
 
-#: src/dird/ua_update.c:790
-#, c-format
-msgid "Current Enabled is: %d\n"
-msgstr "La valeur actuelle de Enabled est : %d\n"
+#~ msgid "Status available for:\n"
+#~ msgstr "Statut disponible pour :\n"
 
-#: src/dird/ua_update.c:791
-msgid "Enter new Enabled: "
-msgstr "Saisissez la nouvelle valeur pour Enabled : "
+#~ msgid "Select daemon type for status"
+#~ msgstr "Saisissez le composant à afficher"
 
-#: src/dird/ua_update.c:810
-#, c-format
-msgid "Current RecyclePool is: %s\n"
-msgstr "Le RecyclePool courant est : %s\n"
+#~ msgid "%s Version: %s (%s) %s %s %s\n"
+#~ msgstr "%s Version : %s (%s) %s %s %s\n"
 
-#: src/dird/ua_update.c:812
-msgid "No current RecyclePool\n"
-msgstr "Pas de RecyclePool courant\n"
+#, fuzzy
+#~ 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_update.c:822
-#, fuzzy, c-format
-msgid "Current ActionOnPurge is: %s\n"
-msgstr "La valeur actuelle est : %s\n"
+#, fuzzy
+#~ 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"
 
-#: src/dird/ua_update.c:824
-msgid "Enter new ActionOnPurge (one of: Truncate, None): "
-msgstr ""
+#, fuzzy
+#~ msgid "No authorization for Storage \"%s\"\n"
+#~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_update.c:832
-msgid "Selection terminated.\n"
-msgstr "Sélection terminée.\n"
+#~ msgid ""
+#~ "\n"
+#~ "Failed to connect to Storage daemon %s.\n"
+#~ "====\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Impossible de se connecter au Storage Daemon %s.\n"
+#~ "====\n"
 
-#: src/dird/ua_update.c:852
-#, c-format
-msgid "Updating %i job(s).\n"
-msgstr ""
+#~ msgid ""
+#~ "Failed to connect to Client %s.\n"
+#~ "====\n"
+#~ msgstr ""
+#~ "Impossible de se connecter au client %s.\n"
+#~ "====\n"
 
-#: 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"
+#~ msgid "Connected to file daemon\n"
+#~ msgstr "Connecté avec le File Daemon\n"
 
-#: 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"
+#~ msgid ""
+#~ "\n"
+#~ "Scheduled Jobs:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Jobs planifiés :\n"
 
-#: src/dird/ua_update.c:918
 #, fuzzy
-msgid "Expect JobId keyword, not found.\n"
-msgstr "%s ressource %s introuvable.\n"
+#~ msgid ""
+#~ "Level          Type     Pri  Scheduled          Job Name           "
+#~ "Volume\n"
+#~ msgstr ""
+#~ "Type           Action   Pri  Planification      Nom                "
+#~ "Volume\n"
 
-#: src/dird/ua_update.c:943
 #, fuzzy
-msgid "Neither Client nor StartTime specified.\n"
-msgstr "Pas de storage sélectionné.\n"
+#~ msgid ""
+#~ "Level          Type     Pri  Scheduled          Job Name           "
+#~ "Schedule\n"
+#~ msgstr ""
+#~ "Type           Action   Pri  Planification      Nom                "
+#~ "Volume\n"
 
-#: src/dird/migrate.c:149 src/dird/migrate.c:163
-#, fuzzy, c-format
-msgid "No previous Job found to %s.\n"
-msgstr "Aucun Job trouvé pour la migration.\n"
+#, fuzzy
+#~ msgid "=====================================================================================\n"
+#~ msgstr "========================================================================\n"
 
-#: src/dird/migrate.c:155
 #, fuzzy
-msgid "Create bootstrap file failed.\n"
-msgstr "Impossible de restaurer sans un fichier bootstrap.\n"
+#~ msgid "%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"
+#~ msgstr "%-14s %-8s %3d  %-18s %-18s %s\n"
 
-#: src/dird/migrate.c:165
-#, fuzzy, c-format
-msgid "Previous Job has no data to %s.\n"
-msgstr "Aucun volume trouvé pour la restauration.\n"
+#~ msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
+#~ msgstr "%-14s %-8s %3d  %-18s %-18s %s\n"
 
-#: src/dird/migrate.c:182
-#, fuzzy, c-format
-msgid "Job resource not found for \"%s\".\n"
-msgstr "La ressource Pool \"%s\" est introuvable !\n"
+#~ msgid "No Scheduled Jobs.\n"
+#~ msgstr "Pas de job programmé.\n"
 
-#: src/dird/migrate.c:186
-#, fuzzy, c-format
-msgid "Previous Job resource not found for \"%s\".\n"
-msgstr "La ressource Pool \"%s\" est introuvable !\n"
+#~ msgid ""
+#~ "\n"
+#~ "Running Jobs:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Job en cours :\n"
+
+#~ msgid "Console connected at %s\n"
+#~ msgstr "Console connecté à %s\n"
+
+#~ msgid ""
+#~ "No Jobs running.\n"
+#~ "====\n"
+#~ msgstr ""
+#~ "Pas de job en cours.\n"
+#~ "====\n"
 
-#: src/dird/migrate.c:203
 #, fuzzy
-msgid "setup job failed.\n"
-msgstr "Job échoué.\n"
+#~ msgid " JobId  Type Level     Files     Bytes  Name              Status\n"
+#~ msgstr " JobId Type    Nom                        Statut\n"
 
-#: src/dird/migrate.c:258
-#, c-format
-msgid "Pool for JobId %s not in database. ERR=%s\n"
-msgstr ""
+#~ msgid "======================================================================\n"
+#~ msgstr "======================================================================\n"
 
-#: src/dird/migrate.c:266
-#, c-format
-msgid "Pool resource \"%s\" not found.\n"
-msgstr ""
+#~ msgid "is waiting execution"
+#~ msgstr "est en attente d'exécution"
 
-#: 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"
+#~ msgid "is running"
+#~ msgstr "est en cours"
 
-#: src/dird/migrate.c:327
-#, c-format
-msgid "JobId %s already %s probably by another Job. %s stopped.\n"
-msgstr ""
+#~ msgid "is blocked"
+#~ msgstr "est bloqué"
 
-#: src/dird/migrate.c:337
-#, fuzzy, c-format
-msgid "Start %s JobId %s, Job=%s\n"
-msgstr "Démarrage du backup JobId %s, Job=%s\n"
+#~ msgid "has terminated"
+#~ msgstr "est terminé"
 
-#: src/dird/migrate.c:712
-#, fuzzy, c-format
-msgid "No %s SQL selection pattern specified.\n"
-msgstr "Pas de storage sélectionné.\n"
+#, fuzzy
+#~ msgid "has terminated with warnings"
+#~ msgstr "Job terminés :\n"
 
-#: 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"
+#~ msgid "has errors"
+#~ msgstr "est en erreur"
 
-#: 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"
+#~ msgid "has a fatal error"
+#~ msgstr "est en erreur (fatale)"
+
+#~ msgid "has been canceled"
+#~ msgstr "a été annulé"
 
-#: 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"
+#~ msgid "is waiting on Client"
+#~ msgstr "est en attente du client %s"
 
-#: src/dird/migrate.c:837
-#, fuzzy, c-format
-msgid "Unknown %s Selection Type.\n"
-msgstr "Job du Type=%d inconnu\n"
+#~ msgid "is waiting on Client %s"
+#~ msgstr "est en attente du client %s"
 
-#: 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"
+#, fuzzy
+#~ msgid "is waiting on Storage \"%s\""
+#~ msgstr "est en attente du Storage %s"
 
-#: 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"
+#, fuzzy
+#~ msgid "is waiting on Storage"
+#~ msgstr "est en attente du Storage %s"
 
-#: src/dird/migrate.c:853
-msgid " was"
-msgstr ""
+#, fuzzy
+#~ msgid "is waiting for its start time (%s)"
+#~ msgstr "attend son heure de démarrage"
 
-#: src/dird/migrate.c:853
-msgid "s were"
-msgstr ""
+#~ msgid "is waiting for higher priority jobs to finish"
+#~ msgstr "attend qu'un job plus prioritaire se termine"
 
-#: src/dird/migrate.c:905
-#, fuzzy, c-format
-msgid "%s using JobId=%s Job=%s\n"
-msgstr "Migration utilisant JobId=%s Job=%s\n"
+#, fuzzy
+#~ msgid "is waiting for a Shared Storage device"
+#~ msgstr "est en attente du Storage %s"
 
-#: src/dird/migrate.c:939
-msgid "Could not start migration job.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "SD despooling Data"
+#~ msgstr "Spooling des données...\n"
 
-#: src/dird/migrate.c:941
-#, fuzzy, c-format
-msgid "%s JobId %d started.\n"
-msgstr "Le job %d est annulé.\n"
+#, fuzzy
+#~ msgid "SD despooling Attributes"
+#~ msgstr "Spooling des données...\n"
 
-#: src/dird/migrate.c:960
-#, fuzzy, c-format
-msgid "No %s found to %s.\n"
-msgstr "Aucun volume trouvé pour la restauration.\n"
+#~ msgid "is in unknown state %c"
+#~ msgstr "est dans un état inconnu %c"
 
-#: src/dird/migrate.c:964
-#, c-format
-msgid "SQL error. Expected 1 MediaId got %d\n"
-msgstr ""
+#~ msgid "is waiting for a mount request"
+#~ msgstr "est en attente d'un montage"
 
-#: 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"
+#~ msgid "is waiting for an appendable Volume"
+#~ msgstr "est en attente d'un volume libre"
 
-#: src/dird/migrate.c:1015
-msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
-msgstr ""
+#, fuzzy
+#~ msgid "is waiting for Client to connect to Storage daemon"
+#~ msgstr "attend que le client %s se connecte au Storage %s"
 
-#: 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"
+#~ msgid "is waiting for Client %s to connect to Storage %s"
+#~ msgstr "attend que le client %s se connecte au Storage %s"
 
-#: src/dird/migrate.c:1047
-#, fuzzy, c-format
-msgid "No %s %s selection pattern specified.\n"
-msgstr "Pas de storage sélectionné.\n"
+#, fuzzy
+#~ msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
+#~ msgstr "%6d %-6s  %-20s %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "%6d  %-4s %-3s %10s %10s %-17s %s\n"
+#~ msgstr "%6d  %-6s %8s %10s %-7s  %-8s %s\n"
 
-#: src/dird/migrate.c:1063
-#, c-format
-msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
-msgstr ""
+#~ msgid "No Terminated Jobs.\n"
+#~ msgstr "Pas de job terminé.\n"
 
-#: src/dird/migrate.c:1101
-#, c-format
-msgid "Regex pattern matched no Jobs to %s.\n"
-msgstr ""
+#~ msgid "====================================================================\n"
+#~ msgstr "=====================================================================\n"
 
-#: src/dird/migrate.c:1265
-#, c-format
-msgid "%s OK -- with warnings"
-msgstr "%s OK -- avec des avertissements"
+#~ msgid "\n"
+#~ msgstr "\n"
 
-#: src/dird/migrate.c:1267
-#, c-format
-msgid "%s OK"
-msgstr ""
+#, fuzzy
+#~ msgid "add dir/file to be restored recursively, wildcards allowed"
+#~ msgstr ""
+#~ "marque récursivement les fichiers/répertoires pour être restaurés, les "
+#~ "jokers (*) fonctionnent"
 
-#: src/dird/migrate.c:1272
-#, c-format
-msgid "*** %s Error ***"
-msgstr "*** %s Erreur ***"
+#~ msgid "change current directory"
+#~ msgstr "change le répertoire courant"
 
-#: src/dird/migrate.c:1282
-#, c-format
-msgid "%s Canceled"
-msgstr "%s Annulé"
+#~ msgid "count marked files in and below the cd"
+#~ msgstr "compte le nombre de fichiers marqués à partir du répertoire courant"
 
-#: src/dird/migrate.c:1291
-#, c-format
-msgid "Inappropriate %s term code"
-msgstr ""
+#, fuzzy
+#~ msgid "delete dir/file to be restored recursively in dir"
+#~ msgstr "dé-sélectionne les fichiers/répertoires récursivement"
 
-#: src/dird/migrate.c:1301
-#, fuzzy, c-format
-msgid "%s -- no files to %s"
-msgstr "Aucun volume trouvé pour la restauration.\n"
+#~ msgid "long list current directory, wildcards allowed"
+#~ msgstr "liste détaillée du répertoire courant, les jocker (*) fonctionnent"
 
-#: src/dird/migrate.c:1316
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  Prev Backup JobId:      %s\n"
-"  Prev Backup Job:        %s\n"
-"  New Backup JobId:       %s\n"
-"  Current JobId:          %s\n"
-"  Current Job:            %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Read Pool:              \"%s\" (From %s)\n"
-"  Read Storage:           \"%s\" (From %s)\n"
-"  Write Pool:             \"%s\" (From %s)\n"
-"  Write Storage:          \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s %s (%s): %s\n"
-"  Build OS :               %s %s %s\n"
-"  Prec Backup JobId :      %s\n"
-"  Prec Backup Job :        %s\n"
-"  Nouveau JobId :          %s\n"
-"  JobId courrant :         %s\n"
-"  Job courrant :           %s\n"
-"  Niveau de backup :       %s%s\n"
-"  Client :                 %s\n"
-"  FileSet :                \"%s\" %s\n"
-"  Pool de lecture :        \"%s\" (Depuis %s)\n"
-"  Storage de lecture :     \"%s\" (Depuis %s)\n"
-"  Pool d'écriture :        \"%s\" (Depuis %s)\n"
-"  Storage d'écriture :     \"%s\" (Depuis %s)\n"
-"  Catalogue :              \"%s\" (Depuis %s)\n"
-"  Date de début :          %s\n"
-"  Date de fin :            %s\n"
-"  Temps écoulé :           %s\n"
-"  Priorité :               %d\n"
-"  Fichiers écrits SD :     %s\n"
-"  Octets écrits SD :       %s (%so)\n"
-"  Débit :                  %.1f Ko/s\n"
-"  Nom des Volumes :        %s\n"
-"  Volume Session Id :      %d\n"
-"  Volume Session date :    %d\n"
-"  Taille du volume :       %s (%so)\n"
-"  Erreurs du SD :          %d\n"
-"  Statut de fin du SD :    %s\n"
-"  Statut de fin :          %s\n"
-
-#: src/dird/migrate.c:1427
-#, c-format
-msgid "No Next Pool specification found in Pool \"%s\".\n"
-msgstr ""
+#~ msgid "leave file selection mode"
+#~ msgstr "sort de la sélection des fichiers"
 
-#: src/dird/migrate.c:1433
-#, c-format
-msgid "No Storage specification found in Next Pool \"%s\".\n"
-msgstr ""
+#~ msgid "estimate restore size"
+#~ msgstr "estime la taille de la restauration"
 
-#: src/dird/migrate.c:1439
-#, fuzzy
-msgid "Storage from Pool's NextPool resource"
-msgstr "Sélectionnez le Pool"
+#~ msgid "same as done command"
+#~ msgstr "synonyme de la commande  « done »"
 
-#: src/dird/ua_prune.c:127
-msgid "Choose item to prune"
-msgstr "Que voulez vous purger du catalogue (prune)"
+#~ msgid "find files, wildcards allowed"
+#~ msgstr "recherche des fichiers, les jokers (*) fonctionnent"
 
-#: 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"
+#~ msgid "print help"
+#~ msgstr "affiche l'aide"
+
+#~ msgid "list current directory, wildcards allowed"
+#~ msgstr ""
+#~ "affiche le contenu du répertoire courant, les jokers (*) fonctionnent"
 
-#: 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"
+#~ msgid "list subdir in current directory, wildcards allowed"
+#~ msgstr ""
+#~ "affiche le contenu du répertoire courant, les jokers (*) fonctionnent"
+
+#~ msgid "list the marked files in and below the cd"
+#~ msgstr "liste les fichiers marqués à partir du répertoire courant"
 
-#: src/dird/ua_prune.c:305
 #, fuzzy
-msgid "Begin pruning Files.\n"
-msgstr "Début de purge des fichiers du catalogue (prune).\n"
+#~ msgid "list the marked files in"
+#~ msgstr "liste les fichiers marqués à partir du répertoire courant"
 
-#: 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"
+#~ msgid "mark dir/file to be restored recursively, wildcards allowed"
+#~ msgstr ""
+#~ "marque récursivement les fichiers/répertoires pour être restaurés, les "
+#~ "jokers (*) fonctionnent"
 
-#: 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"
+#~ msgid "mark directory name to be restored (no files)"
+#~ msgstr "marque un répertoire (seulement) pour la restauration"
 
-#: 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"
+#~ msgid "print current working directory"
+#~ msgstr "affiche le répertoire courant"
 
-#: 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"
+#~ msgid "unmark dir/file to be restored recursively in dir"
+#~ msgstr "dé-sélectionne les fichiers/répertoires récursivement"
 
-#: src/dird/ua_prune.c:601
-msgid "Jobs"
-msgstr "Jobs"
+#~ msgid "unmark directory name only no recursion"
+#~ msgstr "dé-sélectionne seulement un répertoire"
 
-#: 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"
+#~ msgid "quit and do not do restore"
+#~ msgstr "quitte et annule la restauration"
 
-#: src/dird/autoprune.c:75
-msgid ""
-"End auto prune.\n"
-"\n"
-msgstr ""
-"Fin de la purge automatique.\n"
-"\n"
+#~ msgid ""
+#~ "\n"
+#~ "You are now entering file selection mode where you add (mark) and\n"
+#~ "remove (unmark) files to be restored. No files are initially added, "
+#~ "unless\n"
+#~ "you used the \"all\" keyword on the command line.\n"
+#~ "Enter \"done\" to leave this mode.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Vous êtes dans le mode de sélection des fichiers ou vous devez ajouter "
+#~ "(mark)\n"
+#~ "et supprimez (unmark) les fichiers à restaurer. Aucun fichier n'est "
+#~ "sélectionné\n"
+#~ "par défaut sauf si vous avez utilisé l'option « all » dans la commande.\n"
+#~ "Terminez votre saisie par « done »\n"
+#~ "\n"
 
-#: src/dird/ua_run.c:154
-msgid "OK to run? (yes/mod/no): "
-msgstr "OK pour le lancement ? (oui/mod/non) : "
+#~ msgid "cwd is: %s\n"
+#~ msgstr "Le répertoire courant est : %s\n"
 
-#: src/dird/ua_run.c:193
-msgid "Job failed.\n"
-msgstr "Job échoué.\n"
+#, fuzzy
+#~ msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
+#~ msgstr "Commande invalide. Tapez « done » pour quitter.\n"
 
-#: src/dird/ua_run.c:196
-#, c-format
-msgid "Job queued. JobId=%s\n"
-msgstr "Job mis en queue. JobId=%s\n"
+#~ msgid "No files marked.\n"
+#~ msgstr "Aucun fichier sélectionné.\n"
 
-#: 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:223
-msgid "Level"
-msgstr "Type"
-
-#: src/dird/ua_run.c:228
-#, fuzzy
-msgid "Restore Client"
-msgstr "Restauration annulée"
-
-#: 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: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:240
-msgid "Verify Job"
-msgstr "Job de vérification"
-
-#: 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: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:245
-msgid "File Relocation"
-msgstr ""
+#~ msgid "1 file marked.\n"
+#~ msgstr "1 fichier sélectionné.\n"
 
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:1907
-#: src/wx-console/wxbrestorepanel.cpp:1908
-#: src/wx-console/wxbrestorepanel.cpp:1909
-msgid "Replace"
-msgstr "Écrasement"
-
-#: src/dird/ua_run.c:247
-msgid "JobId"
-msgstr "JobId"
-
-#: src/dird/ua_run.c:250
-msgid "Plugin Options"
-msgstr ""
+#~ msgid "%s files marked.\n"
+#~ msgstr "%s fichiers sélectionnés.\n"
 
-#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
-msgid "user selection"
-msgstr ""
+#~ msgid "No directories marked.\n"
+#~ msgstr "Pas de répertoire sélectionné.\n"
 
-#: 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) : "
+#~ msgid "1 directory marked.\n"
+#~ msgstr "1 répertoire sélectionné.\n"
 
-#: src/dird/ua_run.c:301 src/dird/ua_run.c:477
-msgid "Invalid time, using current time.\n"
-msgstr ""
+#~ msgid "%s directories marked.\n"
+#~ msgstr "%s répertoires sélectionnés.\n"
 
-#: src/dird/ua_run.c:308
-msgid "Enter new Priority: "
-msgstr "Saisissez la nouvelle priorité : "
+#~ 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_run.c:312
-msgid "Priority must be a positive integer.\n"
-msgstr "La priorité doit être un entier positif.\n"
+#~ msgid "Node %s has no children.\n"
+#~ msgstr "Le noeud %s n'a pas de fils.\n"
 
-#: src/dird/ua_run.c:333
-msgid "Please enter the Bootstrap file name: "
-msgstr "Saisissez le nom du fichier Bootstrap : "
+#~ 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"
 
-# Impossible d'ouvrir %s : ERR=%s
-#: src/dird/ua_run.c:345
-#, c-format
-msgid "Warning cannot open %s: ERR=%s\n"
-msgstr "Impossible d'ouvrir %s : ERR=%s\n"
+#~ msgid ""
+#~ "  Command    Description\n"
+#~ "  =======    ===========\n"
+#~ msgstr ""
+#~ "  Commande   Description\n"
+#~ "  ========   ===========\n"
 
-#: 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) : "
+#~ 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_run.c:386
-msgid "Replace:\n"
-msgstr "Écrasement :\n"
+#~ msgid "No files unmarked.\n"
+#~ msgstr "Pas de fichier dé-sélectionné.\n"
 
-#: src/dird/ua_run.c:390
-msgid "Select replace option"
-msgstr "Saisissez l'option d'écrasement"
+#~ msgid "1 file unmarked.\n"
+#~ msgstr "1 fichier dé-sélectionné.\n"
 
-#: 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"
+#~ msgid "%s files unmarked.\n"
+#~ msgstr "%s fichiers dé-sélectionnés.\n"
+
+#~ msgid "No directories unmarked.\n"
+#~ msgstr "Pas de répertoire dé-sélectionné\n"
+
+#~ msgid "1 directory unmarked.\n"
+#~ msgstr "1 répertoire dé-sélectionné\n"
+
+#~ msgid "%d directories unmarked.\n"
+#~ msgstr "%d répertoires dé-sélectionnés.\n"
+
+#~ msgid "Update choice:\n"
+#~ msgstr "Élément à mettre à jour :\n"
+
+#~ msgid "Volume parameters"
+#~ msgstr "Paramètres d'un volume"
+
+#~ msgid "Pool from resource"
+#~ msgstr "Pool à partir de sa définition"
+
+#~ msgid "Slots from autochanger"
+#~ msgstr "Slots d'un autochangeur"
 
-#: src/dird/ua_run.c:406
 #, fuzzy
-msgid "Please Plugin Options string: "
-msgstr "Saisissez le début du chemin (prefix) à enlever : "
+#~ msgid "Long term statistics"
+#~ msgstr "Spooling des données...\n"
 
-#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
-msgid "User input"
-msgstr ""
+#~ msgid "item"
+#~ msgstr "item"
 
-#: src/dird/ua_run.c:507
-#, c-format
-msgid "Invalid replace option: %s\n"
-msgstr "Option d'écrasement (Replace) invalide : %s\n"
+#~ msgid "Choose catalog item to update"
+#~ msgstr "Choisissez l'élément à mettre à jour"
 
-#: src/dird/ua_run.c:589
-#, c-format
-msgid "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
-msgstr ""
+#~ msgid "New Volume status is: %s\n"
+#~ msgstr "Le statut du volume est : %s\n"
 
-#: src/dird/ua_run.c:592
-msgid "This will replace your current Where value\n"
-msgstr ""
+#~ msgid "Invalid retention period specified: %s\n"
+#~ msgstr "Période de rétention invalide : %s\n"
 
-#: src/dird/ua_run.c:593
-msgid "Strip prefix"
-msgstr ""
+#~ msgid "New retention period is: %s\n"
+#~ msgstr "La nouvelle période de rétention est : %s\n"
 
-#: src/dird/ua_run.c:594
-msgid "Add prefix"
-msgstr ""
+#~ msgid "Invalid use duration specified: %s\n"
+#~ msgstr "Durée d'utilisation invalide : %s\n"
 
-#: src/dird/ua_run.c:595
-msgid "Add file suffix"
-msgstr ""
+#~ msgid "New use duration is: %s\n"
+#~ msgstr "La nouvelle durée d'utilisation est : %s\n"
 
-#: src/dird/ua_run.c:596
-msgid "Enter a regexp"
-msgstr ""
+#~ msgid "Invalid value. It must be yes or no.\n"
+#~ msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
 
-#: src/dird/ua_run.c:597
-msgid "Test filename manipulation"
-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_run.c:598
-msgid "Use this ?"
-msgstr ""
+#~ msgid "New Slot is: %d\n"
+#~ msgstr "Le nouveau slot est : %d\n"
+
+#~ msgid "New Pool is: %s\n"
+#~ msgstr "Le nouveau pool est : %s\n"
+
+#~ msgid "New RecyclePool is: %s\n"
+#~ msgstr "Le nouveau RecyclePool est : %s\n"
 
-#: src/dird/ua_run.c:603
 #, fuzzy
-msgid "Please enter the path prefix to strip: "
-msgstr "Saisissez le début du chemin (prefix) à enlever : "
+#~ msgid "Error updating media record Enabled: ERR=%s"
+#~ msgstr "Impossible de mettre à jour les informations du Volume : ERR=%s"
 
-#: 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) : "
+#~ msgid "New Enabled is: %d\n"
+#~ msgstr "Le nouveau flag Enabled est : %d\n"
 
-#: src/dird/ua_run.c:622
 #, fuzzy
-msgid "Please enter the file suffix to add: "
-msgstr "Saisissez une extention à ajouter aux fichiers : "
+#~ msgid "Error updating media record ActionOnPurge: ERR=%s"
+#~ msgstr "Impossible de mettre à jour les informations du Volume : ERR=%s"
 
-#: src/dird/ua_run.c:629
-msgid "Please enter a valid regexp (!from!to!): "
-msgstr "Saisissez une regexp valide (!rechercher!remplacer!) : "
+#, fuzzy
+#~ msgid "New ActionOnPurge is: %s\n"
+#~ msgstr "La nouvelle durée d'utilisation est : %s\n"
 
-#: src/dird/ua_run.c:642
-#, c-format
-msgid "regexwhere=%s\n"
-msgstr ""
+#~ msgid "Volume Status"
+#~ msgstr "Statut d'un volume"
 
-#: src/dird/ua_run.c:648
-#, c-format
-msgid "strip_prefix=%s add_prefix=%s add_suffix=%s result=%s\n"
-msgstr ""
+#~ msgid "Volume Retention Period"
+#~ msgstr "Période de rétention d'un volume"
 
-#: src/dird/ua_run.c:655
-msgid "Cannot use your regexp\n"
-msgstr "Impossible d'utiliser votre regexp\n"
+#~ msgid "Volume Use Duration"
+#~ msgstr "Durée d'utilisation d'un volume"
 
-#: src/dird/ua_run.c:658
-msgid "Enter a period (.) to stop this test\n"
-msgstr ""
+#~ msgid "Maximum Volume Jobs"
+#~ msgstr "Nombre maximum de job sur un volume"
 
-#: src/dird/ua_run.c:659
-msgid "Please enter filename to test: "
-msgstr "Saisissez un nom de fichier à tester : "
+#~ msgid "Maximum Volume Files"
+#~ msgstr "Nombre maximum de fichier sur un volume"
 
-#: src/dird/ua_run.c:661
-#, c-format
-msgid "%s -> %s\n"
-msgstr "%s -> %s\n"
-
-#: src/dird/ua_run.c:705
-msgid "Cannot use your regexp.\n"
-msgstr "Impossible d'utiliser votre regexp.\n"
-
-#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
-msgid "Levels:\n"
-msgstr "Types :\n"
-
-#: 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: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: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: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:724
-msgid "VirtualFull"
-msgstr ""
+#~ msgid "Maximum Volume Bytes"
+#~ msgstr "Taille maximum d'un volume"
 
-#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
-msgid "Select level"
-msgstr "Saisissez le type"
+#~ msgid "Recycle Flag"
+#~ msgstr "Flag de recyclage"
 
-#: src/dird/ua_run.c:749
-msgid "Initialize Catalog"
-msgstr "Initialisez le catalogue"
+#~ msgid "InChanger Flag"
+#~ msgstr "Flag InChanger"
 
-#: 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 ""
+#~ msgid "Volume Files"
+#~ msgstr "Fichiers du Volume"
 
-#: src/dird/ua_run.c:751 src/lib/util.c:444
-msgid "Verify Volume to Catalog"
-msgstr ""
+#~ msgid "RecyclePool"
+#~ msgstr "RecyclePool"
 
-#: src/dird/ua_run.c:752 src/lib/util.c:447
-msgid "Verify Disk to Catalog"
-msgstr ""
+#~ msgid "Done"
+#~ msgstr "Fin"
 
-#: 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é)"
+#~ msgid "Updating Volume \"%s\"\n"
+#~ msgstr "Mise à jour du Volume \"%s\"\n"
 
-#: src/dird/ua_run.c:774
-msgid "Level not appropriate for this Job. Cannot be changed.\n"
-msgstr ""
+#~ msgid "Current Volume status is: %s\n"
+#~ msgstr "Le statut actuel du volume (Volume status) est : %s\n"
 
-#: src/dird/ua_run.c:805
-#, fuzzy, c-format
-msgid ""
-"Run Admin Job\n"
-"JobName:  %s\n"
-"FileSet:  %s\n"
-"Client:   %s\n"
-"Storage:  %s\n"
-"When:     %s\n"
-"Priority: %d\n"
-msgstr ""
-"Lancement du job %s\n"
-"JobName : %s\n"
-"FileSet : %s\n"
-"Client   : %s\n"
-"Storage  : %s\n"
-"Quand    : %s\n"
-"Priorité : %d\n"
-
-#: src/dird/ua_run.c:849
-#, fuzzy, c-format
-msgid ""
-"Run Backup job\n"
-"JobName:  %s\n"
-"Level:    %s\n"
-"Client:   %s\n"
-"FileSet:  %s\n"
-"Pool:     %s (From %s)\n"
-"Storage:  %s (From %s)\n"
-"When:     %s\n"
-"Priority: %d\n"
-"%s%s%s"
-msgstr ""
-"Lancement du job %s\n"
-"JobName  : %s\n"
-"Niveau   : %s\n"
-"Client   : %s\n"
-"FileSet  : %s\n"
-"Pool     : %s (Depuis %s)\n"
-"Storage  : %s (Depuis %s)\n"
-"Quand    : %s\n"
-"Priorité : %d\n"
-
-#: 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"
+#~ msgid "Possible Values are:\n"
+#~ msgstr "Les valeurs possibles sont :\n"
 
-#: src/dird/ua_run.c:919
-#, fuzzy, c-format
-msgid ""
-"Run Verify Job\n"
-"JobName:     %s\n"
-"Level:       %s\n"
-"Client:      %s\n"
-"FileSet:     %s\n"
-"Pool:        %s (From %s)\n"
-"Storage:     %s (From %s)\n"
-"Verify Job:  %s\n"
-"Verify List: %s\n"
-"When:        %s\n"
-"Priority:    %d\n"
-msgstr ""
-"Lancement du job %s\n"
-"JobName    : %s\n"
-"Niveau     : %s\n"
-"Client     : %s\n"
-"FileSet    : %s\n"
-"Pool       : %s (Depuis %s)\n"
-"Storage    : %s (Depuis %s)\n"
-"Verify Job : %s\n"
-"Verify List: %s\n"
-"Quand      : %s\n"
-"Priorité   : %d\n"
-
-#: 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:988
-#, fuzzy, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"RegexWhere:      %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-"Lancement de la restauration\n"
-"JobName :         %s\n"
-"Bootstrap :       %s\n"
-"RegexWhere :      %s\n"
-"Écrasement :      %s\n"
-"FileSet :         %s\n"
-"Backup Client :   %s\n"
-"Restore Client :  %s\n"
-"Storage :         %s\n"
-"Quand :           %s\n"
-"Catalogue :       %s\n"
-"Priorité :        %d\n"
-
-#: src/dird/ua_run.c:1044
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"Where:           %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-"Lancement de la restauration\n"
-"JobName :        %s\n"
-"Bootstrap :      %s\n"
-"Déplacement :    %s\n"
-"Écrasement :     %s\n"
-"FileSet :        %s\n"
-"Backup Client :  %s\n"
-"Restore Client : %s\n"
-"Storage :        %s\n"
-"Quand :          %s\n"
-"Catalogue :      %s\n"
-"Priorité :       %d\n"
-"Options Plugins: %s\n"
-
-#: src/dird/ua_run.c:1075
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:    %s\n"
-"Bootstrap:  %s\n"
-msgstr ""
-"Lancement de la restauration\n"
-"JobName :    %s\n"
-"Bootstrap :  %s\n"
+#~ msgid "Choose new Volume Status"
+#~ msgstr "Saisissez le nouveau statut du volume (Volume Status)"
 
-#: src/dird/ua_run.c:1083
-#, c-format
-msgid "RegexWhere: %s\n"
-msgstr ""
+#~ msgid "Current retention period is: %s\n"
+#~ msgstr "La période de rétention actuelle est : %s\n"
 
-#: src/dird/ua_run.c:1086
-#, c-format
-msgid "Where:      %s\n"
-msgstr "Where :     %s\n"
+#~ msgid "Enter Volume Retention period: "
+#~ msgstr "Saisissez la période de rétention du volume : "
 
-#: src/dird/ua_run.c:1090
-#, c-format
-msgid ""
-"Replace:         %s\n"
-"Client:          %s\n"
-"Storage:         %s\n"
-"JobId:           %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-"Écrasement :      %s\n"
-"Client :          %s\n"
-"Storage :         %s\n"
-"JobId :           %s\n"
-"Quand :           %s\n"
-"Catalogue :       %s\n"
-"Priorité :        %d\n"
-"Options Plugins : %s\n"
+#~ msgid "Current use duration is: %s\n"
+#~ msgstr "La durée d'utilisation actuelle est : %s\n"
 
-#: src/dird/ua_run.c:1145
-#, fuzzy
-msgid "Run Copy job\n"
-msgstr "Sélectionnez le Job de restauration"
+#~ msgid "Enter Volume Use Duration: "
+#~ msgstr "Saisissez la durée d'utilisation du volume : "
 
-#: src/dird/ua_run.c:1147
-#, fuzzy
-msgid "Run Migration job\n"
-msgstr "Sélectionnez le Job de restauration"
+#~ msgid "Current max jobs is: %u\n"
+#~ msgstr "Le nombre maximum de Job actuel est : %u\n"
 
-#: src/dird/ua_run.c:1176
-#, c-format
-msgid "Unknown Job Type=%d\n"
-msgstr "Job du Type=%d inconnu\n"
+#~ msgid "Enter new Maximum Jobs: "
+#~ msgstr "Saisissez la valeur du nombre maximum de Job : "
 
-#: src/dird/ua_run.c:1245
-#, c-format
-msgid "Value missing for keyword %s\n"
-msgstr ""
+#~ msgid "Current max files is: %u\n"
+#~ msgstr "Le nombre maximum de fichier actuel est : %u\n"
 
-#: src/dird/ua_run.c:1252
-msgid "Job name specified twice.\n"
-msgstr "Le job est déjà spécifié.\n"
+#~ msgid "Enter new Maximum Files: "
+#~ msgstr "Saisissez la valeur du nombre maximum de fichier (Maximum Files) : "
 
-#: src/dird/ua_run.c:1260
-msgid "JobId specified twice.\n"
-msgstr "Le JobId est déjà spécifié.\n"
+#~ msgid "Current value is: %s\n"
+#~ msgstr "La valeur actuelle est : %s\n"
 
-#: 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"
+#~ msgid "Enter new Maximum Bytes: "
+#~ msgstr "Saisissez la nouvelle taille maximum (octets) : "
 
-#: src/dird/ua_run.c:1277
-msgid "FileSet specified twice.\n"
-msgstr "Le FileSet est déjà spécifié.\n"
+#~ msgid "Current recycle flag is: %s\n"
+#~ msgstr "Le flag de recyclage courant est : %s\n"
 
-#: src/dird/ua_run.c:1285
-msgid "Level specified twice.\n"
-msgstr "Le type (Level) est déjà spécifié.\n"
+#~ msgid "Current Slot is: %d\n"
+#~ msgstr "Le slot courant est : %d\n"
 
-#: src/dird/ua_run.c:1294
-msgid "Storage specified twice.\n"
-msgstr "Le Storage est déjà spécifié.\n"
+#~ msgid "Enter new Slot: "
+#~ msgstr "Saisissez le nouveau slot : "
 
-#: src/dird/ua_run.c:1302
-msgid "RegexWhere or Where specified twice.\n"
-msgstr "RegexWhere ou Where est déjà spécifiée.\n"
+#~ msgid "Current InChanger flag is: %d\n"
+#~ msgstr "Le flag InChanger courant est : %d\n"
 
-#: 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"
+#~ msgid "Set InChanger flag for Volume \"%s\": yes/no: "
+#~ msgstr "Positionner le flag InChanger ? oui/non : "
 
-#: src/dird/ua_run.c:1314
-msgid "Where or RegexWhere specified twice.\n"
-msgstr "RegexWhere ou Where est déjà spécifiée.\n"
+#~ msgid "New InChanger flag is: %d\n"
+#~ msgstr "Le nouveau flag InChanger est : %d\n"
 
-#: src/dird/ua_run.c:1319
-#, fuzzy
-msgid "No authoriztion for \"where\" specification.\n"
-msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
+#~ msgid ""
+#~ "Warning changing Volume Files can result\n"
+#~ "in loss of data on your Volume\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Attention, changer le nombre de fichier du Volume peut\n"
+#~ "vous faire perdre des données du Volume\n"
+#~ "\n"
+
+#~ msgid "Current Volume Files is: %u\n"
+#~ msgstr "Le nombre courant de fichier sur le Volume est : %u\n"
+
+#~ msgid "Enter new number of Files for Volume: "
+#~ msgstr "Saisissez le nouveau nombre de fichiers du Volume : "
 
-#: src/dird/ua_run.c:1326
-msgid "Bootstrap specified twice.\n"
-msgstr "Le bootstrap est déjà spécifié.\n"
+#~ 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_run.c:1334
-msgid "Replace specified twice.\n"
-msgstr "L'option d'écrasement (Replace) est déjà spécifié.\n"
+#, fuzzy
+#~ msgid "Increase Volume Files? (yes/no): "
+#~ msgstr "Le nouveau nombre de fichier du Volume est : %u\n"
 
-#: src/dird/ua_run.c:1342
-msgid "When specified twice.\n"
-msgstr "La planification (When) est déjà spécifiée.\n"
+#~ msgid "New Volume Files is: %u\n"
+#~ msgstr "Le nouveau nombre de fichier du Volume est : %u\n"
 
-#: src/dird/ua_run.c:1350
-msgid "Priority specified twice.\n"
-msgstr "La priorité (Priority) est déjà spécifiée.\n"
+#~ msgid "Current Pool is: %s\n"
+#~ msgstr "Le pool courant est : %s\n"
 
-#: 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"
+#~ msgid "Enter new Pool name: "
+#~ msgstr "Saisissez le nouveau nom pour ce pool : "
 
-#: src/dird/ua_run.c:1365
-msgid "Verify Job specified twice.\n"
-msgstr ""
+#~ msgid "Current Enabled is: %d\n"
+#~ msgstr "La valeur actuelle de Enabled est : %d\n"
 
-#: src/dird/ua_run.c:1393
-msgid "Migration Job specified twice.\n"
-msgstr ""
+#~ msgid "Enter new Enabled: "
+#~ msgstr "Saisissez la nouvelle valeur pour Enabled : "
 
-#: src/dird/ua_run.c:1401
-msgid "Pool specified twice.\n"
-msgstr "Le pool est déjà spécifié.\n"
+#~ msgid "Current RecyclePool is: %s\n"
+#~ msgstr "Le RecyclePool courant est : %s\n"
 
-#: src/dird/ua_run.c:1417
-#, fuzzy
-msgid "Restore Client specified twice.\n"
-msgstr "Le client est déjà spécifié.\n"
+#~ msgid "No current RecyclePool\n"
+#~ msgstr "Pas de RecyclePool courant\n"
 
-#: src/dird/ua_run.c:1424
 #, fuzzy
-msgid "Plugin Options not yet implemented.\n"
-msgstr "Le client est déjà spécifié.\n"
+#~ msgid "Current ActionOnPurge is: %s\n"
+#~ msgstr "La valeur actuelle est : %s\n"
+
+#~ msgid "Selection terminated.\n"
+#~ msgstr "Sélection terminée.\n"
+
+#~ msgid "db_update_pool_record returned %d. ERR=%s\n"
+#~ msgstr "db_update_pool_record a retourné %d. ERR=%s\n"
+
+#~ 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_run.c:1427
 #, fuzzy
-msgid "Plugin Options specified twice.\n"
-msgstr "Le client est déjà spécifié.\n"
+#~ msgid "Expect JobId keyword, not found.\n"
+#~ msgstr "%s ressource %s introuvable.\n"
 
-#: src/dird/ua_run.c:1432
 #, fuzzy
-msgid "No authoriztion for \"PluginOptions\" specification.\n"
-msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
+#~ msgid "Neither Client nor StartTime specified.\n"
+#~ msgstr "Pas de storage sélectionné.\n"
 
-#: src/dird/ua_run.c:1439
 #, fuzzy
-msgid "Spool flag specified twice.\n"
-msgstr "Le pool est déjà spécifié.\n"
+#~ msgid "Start Virtual Backup JobId %s, Job=%s\n"
+#~ msgstr "Démarrage du backup JobId %s, Job=%s\n"
 
-#: src/dird/ua_run.c:1446
 #, fuzzy
-msgid "Invalid spooldata flag.\n"
-msgstr "Période invalide.\n"
+#~ msgid "No valid Jobs found from user selection.\n"
+#~ msgstr "Pas de job trouvé pour : %s.\n"
 
-#: src/dird/ua_run.c:1455
 #, fuzzy
-msgid "IgnoreDuplicateCheck flag specified twice.\n"
-msgstr "Le pool est déjà spécifié.\n"
+#~ msgid "Using user supplied JobIds=%s\n"
+#~ msgstr "Migration utilisant JobId=%s Job=%s\n"
 
-#: src/dird/ua_run.c:1462
 #, fuzzy
-msgid "Invalid ignoreduplicatecheck flag.\n"
-msgstr "Période invalide.\n"
+#~ msgid "No previous Jobs found.\n"
+#~ msgstr "Aucun Job trouvé pour la migration.\n"
 
-#: src/dird/ua_run.c:1467
 #, fuzzy
-msgid "Accurate flag specified twice.\n"
-msgstr "Le pool est déjà spécifié.\n"
+#~ msgid "Error getting Job record for previous Job: ERR=%s"
+#~ msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
 
-#: src/dird/ua_run.c:1474
 #, fuzzy
-msgid "Invalid accurate flag.\n"
-msgstr "Période invalide.\n"
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  Backup Level:           Virtual Full\n"
+#~ "  Client:                 \"%s\" %s\n"
+#~ "  FileSet:                \"%s\" %s\n"
+#~ "  Pool:                   \"%s\" (From %s)\n"
+#~ "  Catalog:                \"%s\" (From %s)\n"
+#~ "  Storage:                \"%s\" (From %s)\n"
+#~ "  Scheduled time:         %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Elapsed time:           %s\n"
+#~ "  Priority:               %d\n"
+#~ "  SD Files Written:       %s\n"
+#~ "  SD Bytes Written:       %s (%sB)\n"
+#~ "  Rate:                   %.1f KB/s\n"
+#~ "  Volume name(s):         %s\n"
+#~ "  Volume Session Id:      %d\n"
+#~ "  Volume Session Time:    %d\n"
+#~ "  Last Volume Bytes:      %s (%sB)\n"
+#~ "  SD Errors:              %d\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bacula %s %s (%s): %s\n"
+#~ "  Build OS :               %s %s %s\n"
+#~ "  JobId :                  %d\n"
+#~ "  Job :                    %s\n"
+#~ "  Niveau de backup :       %s%s\n"
+#~ "  Client :                 \"%s\" %s\n"
+#~ "  FileSet :                \"%s\" %s\n"
+#~ "  Pool :                   \"%s\" (Depuis %s)\n"
+#~ "  Storage :                \"%s\" (Depuis %s)\n"
+#~ "  Date prévue :            %s\n"
+#~ "  Date de début :          %s\n"
+#~ "  Date de fin :            %s\n"
+#~ "  Temps écoulé :           %s\n"
+#~ "  Priorité :               %d\n"
+#~ "  Fichiers écrits FD :     %s\n"
+#~ "  Fichiers écrits SD :     %s\n"
+#~ "  Octets écrits FD :       %s (%so)\n"
+#~ "  Octets écrits SD :       %s (%so)\n"
+#~ "  Débit :                  %.1f Ko/s\n"
+#~ "  Compression logicielle : %s\n"
+#~ "  Nom des Volumes :        %s\n"
+#~ "  Volume Session Id :      %d\n"
+#~ "  Volume Session date :    %d\n"
+#~ "  Taille du volume :       %s (%so)\n"
+#~ "  Erreurs FD non fatales : %d\n"
+#~ "  Erreurs du SD :          %d\n"
+#~ "  Statut de fin du FD :    %s\n"
+#~ "  Statut de fin du SD :    %s\n"
+#~ "  Statut de fin :          %s\n"
 
-#: src/dird/ua_run.c:1495
-#, c-format
-msgid "Invalid keyword: %s\n"
-msgstr "Argument invalide : %s\n"
+#~ msgid ""
+#~ "Unable to find JobId of previous InitCatalog Job.\n"
+#~ "Please run a Verify with Level=InitCatalog before\n"
+#~ "running the current Job.\n"
+#~ msgstr ""
+#~ "Impossible de trouvé JobId d'un précédent Job « InitCatalog.\n"
+#~ "Il faut lancer un Job Verify avec l'option Level=InitCatalog avant\n"
+#~ "de lancer le Job courant.\n"
 
-#: src/dird/ua_run.c:1510
-#, c-format
-msgid "Catalog \"%s\" not found\n"
-msgstr "Le catalogue \"%s\" est introuvable\n"
+#~ msgid "Unable to find JobId of previous Job for this client.\n"
+#~ msgstr "Impossible de trouver JobId d'un précédent Job pour ce client.\n"
 
-#: src/dird/ua_run.c:1514
-#, c-format
-msgid "No authorization. Catalog \"%s\".\n"
-msgstr ""
+#~ msgid "Last Job %d did not terminate normally. JobStatus=%c\n"
+#~ msgstr "Le dernier job %d ne s'est pas terminé correctement. JobStatus=%c\n"
 
-#: src/dird/ua_run.c:1525
-#, c-format
-msgid "Job \"%s\" not found\n"
-msgstr "Le job \"%s\" est introuvable\n"
+#~ msgid "Verify OK"
+#~ msgstr "Vérification OK"
 
-#: src/dird/ua_run.c:1532
-msgid "A job name must be specified.\n"
-msgstr "Un nom de Job doit être spécifié.\n"
+#~ msgid "*** Verify Error ***"
+#~ msgstr "*** Erreur de Vérification ***"
 
-#: src/dird/ua_run.c:1538
-#, c-format
-msgid "No authorization. Job \"%s\".\n"
-msgstr ""
+#~ msgid "Verify Canceled"
+#~ msgstr "Vérification annulée"
 
-#: src/dird/ua_run.c:1546
-#, c-format
-msgid "Pool \"%s\" not found.\n"
-msgstr "Le pool  \"%s\" est introuvable.\n"
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  FileSet:                %s\n"
+#~ "  Verify Level:           %s\n"
+#~ "  Client:                 %s\n"
+#~ "  Verify JobId:           %d\n"
+#~ "  Verify Job:             %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Files Expected:         %s\n"
+#~ "  Files Examined:         %s\n"
+#~ "  Non-fatal FD errors:    %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  SD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s %s (%s): %s\n"
+#~ "  Build OS:               %s %s %s\n"
+#~ "  JobId :                 %d\n"
+#~ "  Job :                   %s\n"
+#~ "  FileSet:                %s\n"
+#~ "  Client :                %s\n"
+#~ "  Début :                 %s\n"
+#~ "  Fin :                   %s\n"
+#~ "  Fichiers attendus :     %s\n"
+#~ "  Fichiers restaurés :    %s\n"
+#~ "  Octets restaurés :      %s\n"
+#~ "  Débit :                 %.1f Ko/s\n"
+#~ "  Erreurs du FD :         %d\n"
+#~ "  Statut de fin du FD :   %s\n"
+#~ "  Statut de fin du SD :   %s\n"
+#~ "  Etat :                  %s\n"
 
-#: src/dird/ua_run.c:1556
-#, c-format
-msgid "No authorization. Pool \"%s\".\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "%s %s %s (%s):\n"
+#~ "  Build:                  %s %s %s\n"
+#~ "  JobId:                  %d\n"
+#~ "  Job:                    %s\n"
+#~ "  FileSet:                %s\n"
+#~ "  Verify Level:           %s\n"
+#~ "  Client:                 %s\n"
+#~ "  Verify JobId:           %d\n"
+#~ "  Verify Job:             %s\n"
+#~ "  Start time:             %s\n"
+#~ "  End time:               %s\n"
+#~ "  Files Examined:         %s\n"
+#~ "  Non-fatal FD errors:    %d\n"
+#~ "  FD termination status:  %s\n"
+#~ "  Termination:            %s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s %s (%s) : %s\n"
+#~ "  Build:                  %s %s %s\\n\"\n"
+#~ "  JobId :                 %d\n"
+#~ "  Job :                   %s\n"
+#~ "  FileSet :               %s\n"
+#~ "  Client :                %s\n"
+#~ "  Début :                 %s\n"
+#~ "  Fin :                   %s\n"
+#~ "  Fichiers attendus :     %s\n"
+#~ "  Fichiers restaurés :    %s\n"
+#~ "  Octets restaurés :      %s\n"
+#~ "  Débit :                 %.1f Ko/s\n"
+#~ "  Erreurs du FD :         %d\n"
+#~ "  Statut de fin du FD :   %s\n"
+#~ "  Statut de fin du SD :   %s\n"
+#~ "  Etat :                  %s\n"
+
+#~ msgid "New file: %s\n"
+#~ msgstr "Nouveau Fichier : %s\n"
 
-#: src/dird/ua_run.c:1566
-#, c-format
-msgid "Storage \"%s\" not found.\n"
-msgstr "Le Storage \"%s\" est introuvable.\n"
+#~ msgid "File not in catalog: %s\n"
+#~ msgstr "Fichier absent du catalogue : %s\n"
 
-#: src/dird/ua_run.c:1575 src/dird/job.c:1245
-msgid "No storage specified.\n"
-msgstr "Pas de storage sélectionné.\n"
+#, fuzzy
+#~ msgid "The following files are in the Catalog but not on %s:\n"
+#~ msgstr ""
+#~ "Les fichiers suivants sont dans le catalogue mais absents du disque :\n"
 
-#: src/dird/ua_run.c:1578
-#, c-format
-msgid "No authorization. Storage \"%s\".\n"
-msgstr ""
+#~ msgid "File: %s\n"
+#~ msgstr "Fichier : %s\n"
 
-#: src/dird/ua_run.c:1598 src/dird/ua_run.c:1618
-#, c-format
-msgid "No authorization. Client \"%s\".\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot verify checksum for %s\n"
+#~ msgstr "Impossible de trouver la ressource Schedule \"%s\"\n"
 
-#: src/dird/ua_run.c:1608
-#, fuzzy, c-format
-msgid "Restore Client \"%s\" not found.\n"
-msgstr "le client \"%s\" est introuvable.\n"
+#, fuzzy
+#~ msgid "2991 Bad accurate command\n"
+#~ msgstr "2991 Erreur dans la commande setdebug : %s\n"
 
-#: src/dird/ua_run.c:1627
-#, c-format
-msgid "FileSet \"%s\" not found.\n"
-msgstr "Le FileSet \"%s\" est introuvable.\n"
+#, fuzzy
+#~ msgid "aclx_get error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_run.c:1636
-#, c-format
-msgid "No authorization. FileSet \"%s\".\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unknown acl type encountered on file \"%s\": %ld\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/dird/ua_run.c:1644
-#, c-format
-msgid "Verify Job \"%s\" not found.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to convert acl into text on file \"%s\"\n"
+#~ msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/dird/ua_run.c:1654
-#, c-format
-msgid "Migration Job \"%s\" not found.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "aclx_put error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "acl_to_text error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "acl_get_file error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid ""
+#~ "acl_delete_def_file error on file \"%s\": filesystem doesn't support "
+#~ "ACLs\n"
+#~ msgstr ""
+#~ "Impossible de récupérer les informations du Media pour le Volume %s : ERR="
+#~ "%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ 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/dird/backup.c:96
-msgid "No Storage specification found in Job or Pool.\n"
-msgstr "Pas de Storage défini dans le Job ou le Pool.\n"
+#, fuzzy
+#~ msgid "acl_from_text error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/backup.c:256
-#, fuzzy, c-format
-msgid "Using BaseJobId(s): %s\n"
-msgstr "Migration utilisant JobId=%s Job=%s\n"
+#, fuzzy
+#~ msgid "acl_valid error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/backup.c:266
 #, fuzzy
-msgid "Cannot find previous jobids.\n"
-msgstr "Impossible de trouver la ressource Job \"%s\"\n"
+#~ 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/dird/backup.c:275
-msgid "Sending Accurate information.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "acl_set_file error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/backup.c:328
-#, c-format
-msgid "Start Backup JobId %s, Job=%s\n"
-msgstr "Démarrage du backup JobId %s, Job=%s\n"
+#, fuzzy
+#~ msgid "pathconf error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/backup.c:521
-#, c-format
-msgid "Unexpected Client Job message: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "getacl error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/backup.c:534
-#, c-format
-msgid "Network error with FD during %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "acltostr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "strtoacl error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/backup.c:657
-msgid "Backup failed -- incomplete"
-msgstr ""
+#, fuzzy
+#~ msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/backup.c:730
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  FD Files Written:       %s\n"
-"  SD Files Written:       %s\n"
-"  FD Bytes Written:       %s (%sB)\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Software Compression:   %s\n"
-"%s  VSS:                    %s\n"
-"  Encryption:             %s\n"
-"  Accurate:               %s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  Non-fatal FD errors:    %d\n"
-"  SD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s %s (%s): %s\n"
-"  Build OS :               %s %s %s\n"
-"  JobId :                  %d\n"
-"  Job :                    %s\n"
-"  Niveau de backup :       %s%s\n"
-"  Client :                 \"%s\" %s\n"
-"  FileSet :                \"%s\" %s\n"
-"  Pool :                   \"%s\" (Depuis %s)\n"
-"  Catalog:                \"%s\" (Depuis %s)\n"
-"  Storage :                \"%s\" (Depuis %s)\n"
-"  Date prévue :            %s\n"
-"  Date de début :          %s\n"
-"  Date de fin :            %s\n"
-"  Temps écoulé :           %s\n"
-"  Priorité :               %d\n"
-"  Fichiers écrits FD :     %s\n"
-"  Fichiers écrits SD :     %s\n"
-"  Octets écrits FD :       %s (%so)\n"
-"  Octets écrits SD :       %s (%so)\n"
-"  Débit :                  %.1f Ko/s\n"
-"  Compression logicielle : %s\n"
-"  VSS :                    %s\n"
-"  Cryptage :               %s\n"
-"  Accurate :               %s\n"
-"  Nom des Volumes :        %s\n"
-"  Volume Session Id :      %d\n"
-"  Volume Session date :    %d\n"
-"  Taille du volume :       %s (%so)\n"
-"  Erreurs FD non fatales : %d\n"
-"  Erreurs du SD :          %d\n"
-"  Statut de fin du FD :    %s\n"
-"  Statut de fin du SD :    %s\n"
-"  Statut de fin :          %s\n"
-"\n"
+#, fuzzy
+#~ msgid "setacl error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/backup.c:832
-#, c-format
-msgid "Could not get Job Volume Parameters to update Bootstrap file. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "acl_get error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/backup.c:868
-#, c-format
-msgid ""
-"Could not open WriteBootstrap file:\n"
-"%s: ERR=%s\n"
-msgstr ""
-"Impossible d'ouvrir le fichier bootstrap (WriteBootstrap) :\n"
-"%s : ERR=%s\n"
+#, fuzzy
+#~ 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/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"
+#, fuzzy
+#~ msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/restore.c:185 src/dird/restore.c:276
-#, fuzzy, c-format
-msgid "Could not get storage resource '%s'.\n"
-msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
+#, fuzzy
+#~ msgid "acl_set error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/restore.c:314
-#, fuzzy, c-format
-msgid "Could not acquire read storage lock for \"%s\""
-msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
+#, fuzzy
+#~ msgid "acltotext error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "aclfromtext error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/restore.c:513
-#, c-format
-msgid "Start Restore Job %s\n"
-msgstr "Démarrage du Job de restauration %s\n"
+#, fuzzy
+#~ msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/restore.c:564
-msgid "Restore OK -- warning file count mismatch"
-msgstr "Restauration Ok -- attention le nombre de fichier ne correspond pas"
+#, fuzzy
+#~ msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/restore.c:566
-msgid "Restore OK"
-msgstr "Restauration OK"
+#, fuzzy
+#~ msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/restore.c:570
 #, fuzzy
-msgid "Restore OK -- with warnings"
-msgstr "Backup OK -- avec des erreurs"
+#~ msgid "Unable to stat file \"%s\": ERR=%s\n"
+#~ msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/dird/restore.c:574
-msgid "*** Restore Error ***"
-msgstr "*** Restauration en erreur ***"
+#~ msgid "Connection from unknown Director %s at %s rejected.\n"
+#~ msgstr ""
+#~ "Connexion d'un Director inconnu %s à %s rejeté.\n"
+#~ "\n"
 
-#: src/dird/restore.c:584
-msgid "Restore Canceled"
-msgstr "Restauration annulée"
+#~ msgid "Incorrect password given by Director at %s.\n"
+#~ msgstr "Password incorrect donné par le Director à %s.\n"
 
-#: src/dird/restore.c:611
-#, fuzzy, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Restore Client:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Restored:         %s\n"
-"  Bytes Restored:         %s\n"
-"  Rate:                   %.1f KB/s\n"
-"  FD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-"%s %s %s (%s): %s\n"
-"  Build OS:               %s %s %s\n"
-"  JobId :                 %d\n"
-"  Job :                   %s\n"
-"  Client :                %s\n"
-"  Début :                 %s\n"
-"  Fin :                   %s\n"
-"  Fichiers attendus :     %s\n"
-"  Fichiers restaurés :    %s\n"
-"  Octets restaurés :      %s\n"
-"  Débit :                 %.1f Ko/s\n"
-"  Erreurs du FD :         %d\n"
-"  Statut de fin du FD :   %s\n"
-"  Statut de fin du SD :   %s\n"
-"  Etat :                  %s\n"
-
-#: src/dird/ua_status.c:174
-msgid "Status available for:\n"
-msgstr "Statut disponible pour :\n"
-
-#: src/dird/ua_status.c:180
-msgid "Select daemon type for status"
-msgstr "Saisissez le composant à afficher"
-
-#: 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"
+#, fuzzy
+#~ msgid "Unsupported cipher on this system.\n"
+#~ msgstr "Le cipher spécifié est non supporté\n"
 
-#: src/dird/ua_status.c:297
-#, fuzzy, c-format
-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"
+#~ msgid "     Could not access \"%s\": ERR=%s\n"
+#~ msgstr "     Impossible d'acceder à \"%s\" : ERR=%s\n"
 
-#: 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"
+#~ msgid "     Could not follow link \"%s\": ERR=%s\n"
+#~ msgstr "     Impossible de suivre le lien \"%s\" : ERR=%s\n"
 
-#: src/dird/ua_status.c:358
-#, c-format
-msgid ""
-"\n"
-"Failed to connect to Storage daemon %s.\n"
-"====\n"
-msgstr ""
-"\n"
-"Impossible de se connecter au Storage Daemon %s.\n"
-"====\n"
+#~ msgid "     Could not stat \"%s\": ERR=%s\n"
+#~ msgstr "     Impossible d'acceder à \"%s\" : ERR=%s\\n\n"
 
-#: src/dird/ua_status.c:400
-#, c-format
-msgid ""
-"Failed to connect to Client %s.\n"
-"====\n"
-msgstr ""
-"Impossible de se connecter au client %s.\n"
-"====\n"
+#~ msgid "     Could not open directory \"%s\": ERR=%s\n"
+#~ msgstr "     Impossible d'ouvrir le répertoire \"%s\" : ERR=%s\n"
 
-#: src/dird/ua_status.c:408
-msgid "Connected to file daemon\n"
-msgstr "Connecté avec le File Daemon\n"
+#~ msgid "     Unknown file type %d; not saved: %s\n"
+#~ msgstr "     Type de fichier inconnu %d ; non sauvé : %s\n"
 
-#: src/dird/ua_status.c:428
-msgid ""
-"\n"
-"Scheduled Jobs:\n"
-msgstr ""
-"\n"
-"Jobs planifiés :\n"
+#~ msgid "     Cannot open \"%s\": ERR=%s.\n"
+#~ msgstr "     Impossible d'ouvrir \"%s\" : ERR=%s.\n"
 
-#: src/dird/ua_status.c:429
-msgid ""
-"Level          Type     Pri  Scheduled          Name               Volume\n"
-msgstr ""
-"Type           Action   Pri  Planification      Nom                Volume\n"
+#, fuzzy
+#~ msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_status.c:430
-msgid "===================================================================================\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to allocate memory for crypto signature.\n"
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "An error occurred while adding signer the stream.\n"
+#~ msgstr "Entrez le nombre de départ : "
 
-#: src/dird/ua_status.c:490
-#, c-format
-msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
-msgstr "%-14s %-8s %3d  %-18s %-18s %s\n"
+#, fuzzy
+#~ msgid "Failed to initialize encryption context.\n"
+#~ msgstr "Impossible d'initialiser le contexte TLS pour la Console \"%s\".\n"
 
-#: src/dird/ua_status.c:544
-msgid "Ignoring invalid value for days. Max is 500.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Compression LZO error: %d\n"
+#~ msgstr "Erreur de décompression. ERR=%d\n"
 
-#: src/dird/ua_status.c:587
-msgid "No Scheduled Jobs.\n"
-msgstr "Pas de job programmé.\n"
+#, fuzzy
+#~ msgid "Plugin save packet not found.\n"
+#~ msgstr "le client \"%s\" est introuvable.\n"
 
-#: src/dird/ua_status.c:604 src/stored/status.c:450 src/filed/status.c:183
-msgid ""
-"\n"
-"Running Jobs:\n"
-msgstr ""
-"\n"
-"Job en cours :\n"
+#~ msgid "Plugin=%s not found.\n"
+#~ msgstr "Plugin=%s non trouvé.\n"
 
-#: src/dird/ua_status.c:612
-#, c-format
-msgid "Console connected at %s\n"
-msgstr "Console connecté à %s\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "%sVersion: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
+#~ "     -c <file>        use <file> as configuration file\n"
+#~ "     -d <n>[,<tags>]  set debug level to <nn>, debug tags to <tags>\n"
+#~ "     -dt              print a timestamp in debug output\n"
+#~ "     -f               run in foreground (for debugging)\n"
+#~ "     -g               groupid\n"
+#~ "     -k               keep readall capabilities\n"
+#~ "     -m               print kaboom output (for debugging)\n"
+#~ "     -s               no signals (for debugging)\n"
+#~ "     -t               test configuration file and exit\n"
+#~ "     -T               set trace on\n"
+#~ "     -u               userid\n"
+#~ "     -v               verbose user messages\n"
+#~ "     -?               print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -d <nn>        positionne le niveau de debug à nn\n"
+#~ "      -dt            affiche un timestamp sur chaque ligne de debug\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/dird/ua_status.c:622
-msgid ""
-"No Jobs running.\n"
-"====\n"
-msgstr ""
-"Pas de job en cours.\n"
-"====\n"
+#, fuzzy
+#~ msgid "Disable Command \"%s\" not found.\n"
+#~ msgstr "le client \"%s\" est introuvable.\n"
+
+#, fuzzy
+#~ msgid "Failed to allocate a new keypair object.\n"
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/dird/ua_status.c:628
-msgid " JobId Level   Name                       Status\n"
-msgstr " JobId Type    Nom                        Statut\n"
+#, fuzzy
+#~ msgid "Expected a Cipher Type keyword, got: %s"
+#~ msgstr "Attendait le mot clef FileSet, eu : %s"
+
+#, fuzzy
+#~ msgid "Command: \"%s\" is disabled.\n"
+#~ msgstr "Commande annulée.\n"
 
-#: src/dird/ua_status.c:629 src/filed/status.c:342
-msgid "======================================================================\n"
-msgstr "======================================================================\n"
+#, fuzzy
+#~ msgid "SD connect failed: Bad Hello command\n"
+#~ msgstr "Le director a rejeté la commande Hello\n"
 
-#: src/dird/ua_status.c:638
-msgid "is waiting execution"
-msgstr "est en attente d'exécution"
+#, fuzzy
+#~ msgid "SD connect failed: Job name not found: %s\n"
+#~ msgstr "Job non trouvé : %s\n"
 
-#: src/dird/ua_status.c:641
-msgid "is running"
-msgstr "est en cours"
+#, fuzzy
+#~ msgid "Bad command from %s. Len=%d.\n"
+#~ msgstr "Connexion invalide. Len=%d\n"
 
-#: src/dird/ua_status.c:644
-msgid "is blocked"
-msgstr "est bloqué"
+#~ msgid "2902 Error scanning cancel command.\n"
+#~ msgstr "2902 Erreur dans le décodage de la commande d'annulation.\n"
 
-#: src/dird/ua_status.c:647
-msgid "has terminated"
-msgstr "est terminé"
+#~ msgid "2901 Job %s not found.\n"
+#~ msgstr "2901 Le job %s est introuvable.\n"
 
-#: src/dird/ua_status.c:650
 #, fuzzy
-msgid "has terminated with warnings"
-msgstr "Job terminés :\n"
+#~ msgid "2001 Job \"%s\" marked to be %s.\n"
+#~ msgstr "2001 Le job %s va être annulé.\n"
 
-#: src/dird/ua_status.c:653
-msgid "has erred"
-msgstr ""
+#, fuzzy
+#~ msgid "2991 Bad setbandwidth command: %s\n"
+#~ msgstr "2991 Erreur dans la commande setdebug : %s\n"
 
-#: src/dird/ua_status.c:656
-msgid "has errors"
-msgstr "est en erreur"
+#~ msgid "2991 Bad setdebug command: %s\n"
+#~ msgstr "2991 Erreur dans la commande setdebug : %s\n"
 
-#: src/dird/ua_status.c:659
-msgid "has a fatal error"
-msgstr "est en erreur (fatale)"
+#~ msgid "Bad RunScript command: %s\n"
+#~ msgstr "Erreur dans la commande RunScript : %s\n"
 
-#: src/dird/ua_status.c:662
-msgid "has verify differences"
-msgstr ""
+#~ msgid "2905 Bad RunScript command.\n"
+#~ msgstr "2905 Erreur sur la commande RunScript.\n"
 
-#: src/dird/ua_status.c:665
-msgid "has been canceled"
-msgstr "a été annulé"
+#, fuzzy
+#~ msgid "Bad RestoreObject command: %s\n"
+#~ msgstr "Erreur dans la commande RunScript : %s\n"
 
-#: src/dird/ua_status.c:670
 #, fuzzy
-msgid "is waiting on Client"
-msgstr "est en attente du client %s"
+#~ msgid "2909 Bad RestoreObject command.\n"
+#~ msgstr "2905 Erreur sur la commande RunScript.\n"
 
-#: src/dird/ua_status.c:672
-#, c-format
-msgid "is waiting on Client %s"
-msgstr "est en attente du client %s"
+#~ 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/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"
+#, fuzzy
+#~ msgid ""
+#~ "DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
+#~ msgstr ""
+#~ "L'horloge du client et du director ont %d secondes d'écart, le client "
+#~ "s'est ajusté automatiquement.\n"
 
-#: src/dird/ua_status.c:684
 #, fuzzy
-msgid "is waiting on Storage"
-msgstr "est en attente du Storage %s"
+#~ msgid "Failed connect from Storage daemon. SD bsock=NULL.\n"
+#~ msgstr "Impossible de se connecter au Storage daemon.\n"
 
-#: src/dird/ua_status.c:690
-msgid "is waiting on max Storage jobs"
-msgstr ""
+#~ msgid "Cannot contact Storage daemon\n"
+#~ msgstr "Impossible de se connecter au démon Storage\n"
 
-#: src/dird/ua_status.c:693
-msgid "is waiting on max Client jobs"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad status %d %c returned from Storage Daemon.\n"
+#~ msgstr "Impossible de récupérer le statut du Job depuis le FD.\n"
 
-#: src/dird/ua_status.c:696
-msgid "is waiting on max Job jobs"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad response from SD to %s command. Wanted %s, got %s\n"
+#~ msgstr "Mauvaise réponse à la commande %s : voulait %s, pas %s\n"
 
-#: src/dird/ua_status.c:699
-msgid "is waiting on max total jobs"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not set Finder Info on %s\n"
+#~ msgstr "Impossible d'ouvrir le device %s\n"
 
-#: src/dird/ua_status.c:702
-msgid "is waiting for its start time"
-msgstr "attend son heure de démarrage"
+#, fuzzy
+#~ msgid "LZO init failed\n"
+#~ msgstr "Impossible de Rembobiner.\n"
 
-#: src/dird/ua_status.c:705
-msgid "is waiting for higher priority jobs to finish"
-msgstr "attend qu'un job plus prioritaire se termine"
+#, fuzzy
+#~ msgid "Could not create digest.\n"
+#~ msgstr "Impossible de créer la structure BSOCK cliente.\n"
 
-#: src/dird/ua_status.c:708 src/dird/ua_status.c:759 src/lib/util.c:241
-msgid "SD committing Data"
-msgstr ""
+#~ msgid "Decrypt of the session key failed.\n"
+#~ msgstr "Impossible de décrypter la clef de session.\n"
 
-#: 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"
+#~ msgid "Signer not found. Decryption failed.\n"
+#~ msgstr "La création de la signature a échouée"
 
-#: 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"
+#~ msgid "Unsupported digest algorithm. Decrypt failed.\n"
+#~ msgstr "Le digest spécifié n'est pas supporté : %d\n"
 
-#: src/dird/ua_status.c:717 src/dird/ua_status.c:768 src/lib/util.c:250
-msgid "Dir inserting Attributes"
-msgstr ""
+#, fuzzy
+#~ msgid "Unsupported encryption algorithm. Decrypt failed.\n"
+#~ msgstr "contentEncryptionAlgorithm non supporté : %d\n"
 
-#: src/dird/ua_status.c:722
-#, c-format
-msgid "is in unknown state %c"
-msgstr "est dans un état inconnu %c"
+#, fuzzy
+#~ msgid "Cannot open resource fork for %s.\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_status.c:736
-msgid "is waiting for a mount request"
-msgstr "est en attente d'un montage"
+#, fuzzy
+#~ msgid "Encountered %ld acl errors while doing restore\n"
+#~ msgstr "Saisir la liste des fichiers à restaurer"
 
-#: src/dird/ua_status.c:743
-msgid "is waiting for an appendable Volume"
-msgstr "est en attente d'un volume libre"
+#, fuzzy
+#~ msgid "%d non-supported crypto streams ignored.\n"
+#~ msgstr "contentEncryptionAlgorithm non supporté : %d\n"
 
-#: 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"
+#~ msgid "%d non-supported xattr streams ignored.\n"
+#~ msgstr "contentEncryptionAlgorithm non supporté : %d\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Signature validation failed for file %s: ERR=%s\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Digest one file failed for file: %s\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/dird/ua_status.c:788
-#, c-format
-msgid "%6d %-6s  %-20s %s\n"
-msgstr "%6d %-6s  %-20s %s\n"
+#, fuzzy
+#~ msgid "LZO uncompression error on file %s. ERR=%d\n"
+#~ msgstr "Erreur de décompression. ERR=%d\n"
 
-#: src/dird/ua_status.c:792
-#, c-format
-msgid "               %-30s\n"
-msgstr ""
+#, fuzzy
+#~ 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/dird/ua_status.c:812
-msgid "No Terminated Jobs.\n"
-msgstr "Pas de job terminé.\n"
+#~ msgid "Director connected at: %s\n"
+#~ msgstr "Connexion du director le %s\n"
 
-#: src/dird/ua_status.c:818 src/stored/status.c:572 src/filed/status.c:330
-msgid ""
-"\n"
-"Terminated Jobs:\n"
-msgstr ""
-"\n"
-"Job terminés :\n"
+#, fuzzy
+#~ msgid "    %s%s %s Job started: %s\n"
+#~ msgstr "Le job %d est annulé.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s Errors=%d\n"
+#~ "    Bwlimit=%s\n"
+#~ msgstr "    Fichiers=%s Octets=%s Octets/sec=%s Erreurs=%d\n"
 
-#: src/dird/ua_status.c:820
-msgid "====================================================================\n"
-msgstr "=====================================================================\n"
+#~ msgid "====\n"
+#~ msgstr "====\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "llistea error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "lgetea error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_status.c:859 src/stored/status.c:608 src/filed/status.c:370
-msgid "Diffs"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to serialize extended attributes on file \"%s\"\n"
+#~ msgstr "Impossible d'initialiser le contexte TLS pour la Console \"%s\".\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "lsetea error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "attr_list error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_status.c:871 src/stored/status.c:620 src/filed/status.c:379
-msgid "Other"
-msgstr "Autre"
+#, fuzzy
+#~ msgid "Received illegal xattr named %s on file \"%s\"\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "attr_set error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "llistxattr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_status.c:892
-msgid "\n"
-msgstr "\n"
+#, fuzzy
+#~ msgid "lgetxattr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_input.c:103
-msgid "Enter slot"
-msgstr "Saisissez le slot"
+#, fuzzy
+#~ msgid "lsetxattr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_input.c:107 src/dird/ua_input.c:113
-#, c-format
-msgid "Expected a positive integer, got: %s\n"
-msgstr "Attendait un entier positif, pas : %s\n"
+#, fuzzy
+#~ msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_input.c:170
-msgid "Invalid response. You must answer yes or no.\n"
-msgstr "Réponse invalide. Vous devez répondre oui ou non.\n"
+#, fuzzy
+#~ msgid "Failed to convert %d into namespace on file \"%s\"\n"
+#~ msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/dird/ua_input.c:193
 #, fuzzy
-msgid "Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"
-msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
+#~ msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/ua_input.c:220
-#, fuzzy, c-format
-msgid "Illegal character \"%c\" in a comment.\n"
-msgstr "Caractère illégal « %c » dans le nom.\n"
+#, fuzzy
+#~ 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/dird/ua_input.c:227
 #, fuzzy
-msgid "Comment too long.\n"
-msgstr "Nom trop long.\n"
+#~ msgid "Failed to convert %s into namespace on file \"%s\"\n"
+#~ msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/dird/ua_input.c:233
 #, fuzzy
-msgid "Comment must be at least one character long.\n"
-msgstr "Le nom du volume doit comporter au moins un caractère\n"
+#~ msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/pythondir.c:121 src/stored/pythonsd.c:101
-#: src/stored/pythonsd.c:166 src/filed/pythonfd.c:94 src/filed/pythonfd.c:148
-#: src/filed/pythonfd.c:212
-msgid "Job pointer not found."
-msgstr ""
+#, fuzzy
+#~ msgid "getproplist error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/pythondir.c:153
-msgid "Pool record not found."
-msgstr ""
+#, fuzzy
+#~ msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
+#~ msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/dird/pythondir.c:209 src/stored/pythonsd.c:143 src/filed/pythonfd.c:125
-#, c-format
-msgid "Attribute %s not found."
-msgstr "Attribut %s non trouvé."
+#, fuzzy
+#~ msgid "setproplist error on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/pythondir.c:252 src/dird/pythondir.c:258 src/stored/pythonsd.c:183
-#: src/filed/pythonfd.c:167
-msgid "Read-only attribute"
-msgstr ""
+#, fuzzy
+#~ 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/dird/pythondir.c:284
-msgid "Priority must be 1-100"
-msgstr "La priorité doit être comprise entre 1 et 100"
+#, fuzzy
+#~ 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/dird/pythondir.c:289
-msgid "Job Level can be set only during JobInit"
-msgstr ""
+#, fuzzy
+#~ 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/dird/pythondir.c:303
-msgid "Bad JobLevel string"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
+#~ msgstr "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
 
-#: src/dird/job.c:62
-#, c-format
-msgid "Could not init job queue: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
+#~ msgstr "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
 
-#: src/dird/job.c:94
-#, c-format
-msgid "Could not add job queue: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to read content of xattr %s on file \"%s\"\n"
+#~ msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: 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:1129 src/dird/job.c:1170
-#: src/dird/job.c:1179
 #, fuzzy
-msgid "Job resource"
-msgstr "Pool à partir de sa définition"
+#~ 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/dird/job.c:230 src/dird/job.c:349
-#, c-format
-msgid "Unimplemented job type: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to open file \"%s\": ERR=%s\n"
+#~ msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/dird/job.c:272
-msgid "Job canceled because max start delay time exceeded.\n"
-msgstr ""
+#, fuzzy
+#~ 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/dird/job.c:277
 #, fuzzy
-msgid "Job canceled because max run sched time exceeded.\n"
-msgstr ""
-"Temps d'exécution maximum depuis la planification atteind. Abandon du job.\n"
+#~ 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/dird/job.c:403
-#, c-format
-msgid "JobId %s, Job %s marked to be canceled.\n"
-msgstr "JobId %s, Job %s marqué pour être annulé.\n"
+#, fuzzy
+#~ 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/dird/job.c:413
-msgid "Failed to connect to File daemon.\n"
-msgstr "Impossible de se connecter au client.\n"
+#, fuzzy
+#~ msgid "Unable to convert acl from text on file \"%s\"\n"
+#~ msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/dird/job.c:548
-msgid "Max wait time exceeded. Job canceled.\n"
-msgstr "Temps d'attente maximum dépassé. Abandon du job.\n"
+#, fuzzy
+#~ 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/dird/job.c:553
-msgid "Max run time exceeded. Job canceled.\n"
-msgstr "Temps d'exécution maximum atteind. Abandon du job.\n"
+#, fuzzy
+#~ 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/dird/job.c:558
 #, fuzzy
-msgid "Max run sched time exceeded. Job canceled.\n"
-msgstr "Temps d'exécution maximum atteind. Abandon du job.\n"
+#~ 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/dird/job.c:680
-#, fuzzy, c-format
-msgid "Pool \"%s\" not in database. ERR=%s"
-msgstr "Pool %s introuvable en base. %s"
+#, fuzzy
+#~ 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/dird/job.c:684
-#, fuzzy, c-format
-msgid "Created database record for Pool \"%s\".\n"
-msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
+#, fuzzy
+#~ 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/dird/job.c:766 src/dird/job.c:809
-#, c-format
-msgid "JobId %d already running. Duplicate job not allowed.\n"
-msgstr ""
+#, fuzzy
+#~ 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/dird/job.c:797
-#, c-format
-msgid "Cancelling duplicate JobId=%d.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/job.c:828 src/dird/job.c:1116
-msgid "Run pool override"
-msgstr ""
+#, fuzzy
+#~ 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/dird/job.c:839
-msgid "Run FullPool override"
-msgstr ""
+#, fuzzy
+#~ 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/dird/job.c:841
-msgid "Job FullPool override"
-msgstr ""
+#, fuzzy
+#~ 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/dird/job.c:850
-msgid "Run IncPool override"
-msgstr ""
+#, fuzzy
+#~ 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/dird/job.c:852
-msgid "Job IncPool override"
-msgstr ""
+#, fuzzy
+#~ 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/dird/job.c:861
-msgid "Run DiffPool override"
-msgstr ""
+#, fuzzy
+#~ 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/dird/job.c:863
-msgid "Job DiffPool override"
-msgstr ""
+#, fuzzy
+#~ msgid "Plugin Name"
+#~ msgstr "Saisissez un nom de Volume : "
 
-#: src/dird/job.c:893 src/stored/bscan.c:1056
-#, c-format
-msgid "Could not create Client record. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore Object"
+#~ msgstr "Restauration OK"
 
-#: src/dird/job.c:929
-msgid "FileSet MD5 digest not found.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not restore file flags for file %s: ERR=%s\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/dird/job.c:934
-#, c-format
-msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not reset file flags for file %s: ERR=%s\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/dird/job.c:976
-#, c-format
-msgid "Error updating job record. %s"
-msgstr ""
+#, fuzzy
+#~ msgid "Plugin: \"%s\" not found.\n"
+#~ msgstr "Plugin=%s non trouvé.\n"
 
-#: src/dird/job.c:1121
-msgid "Run storage override"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot stat file %s: ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/dird/job.c:1189
 #, fuzzy
-msgid "Client resource"
-msgstr "Pas de ressource « Restore Job » trouvée !\n"
+#~ msgid "%s exists but is not a directory.\n"
+#~ msgstr "%s doit être un répertoire.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "%c: is not a valid drive.\n"
+#~ msgstr "%s : est une commande invalide.\n"
 
-#: src/dird/job.c:1409
-#, c-format
-msgid "Clone JobId %d started.\n"
-msgstr ""
+#~ msgid "Only ipv4 and ipv6 are supported (%d)\n"
+#~ msgstr "Seulement l'ipv4 et l'ipv6 sont supportés (%d)\n"
 
-#: src/dird/authenticate.c:83 src/dird/authenticate.c:84
-#: src/tray-monitor/authenticate.c:132
-#: src/qt-console/tray-monitor/authenticate.cpp:131
-#, c-format
-msgid "Error sending Hello to Storage daemon. ERR=%s\n"
-msgstr ""
+#~ msgid "Only ipv4 is supported (%d)\n"
+#~ msgstr "Seulement l'ipv4 est supporté (%d)\n"
 
-#: src/dird/authenticate.c:113
-msgid "Director and Storage daemon passwords or names not the same.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Can't add default IPv4 address (%s)\n"
+#~ msgstr "Impossible d'ajouter l'adresse par défaut (%s)\n"
 
-#: src/dird/authenticate.c:115
-#, fuzzy, c-format
-msgid ""
-"Director unable to authenticate with Storage daemon at \"%s:%d\". Possible "
-"causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the SD or\n"
-"SD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-"Le Director a rencontré un problème d'authentification avec le Storage "
-"Daemon \"%s:%d\".\n"
-"Les causes possibles sont :\n"
-"- Les mots de pass ne correspondent pas ;\n"
-"- Le nombre maximum de job concurrent est atteint sur le SD ;\n"
-"- La connexion réseau du SD est tombée (il faut le redémarrer).\n"
-"Vous trouverez de l'aide sur\n"
-"http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
-
-#: src/dird/authenticate.c:127 src/wx-console/authenticate.c:127
-#: src/console/authenticate.c:122
-msgid ""
-"Authorization problem: Remote server did not advertise required TLS "
-"support.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot resolve service(%s)"
+#~ msgstr "impossible de trouver une correspondance pour le service (%s)"
 
-#: src/dird/authenticate.c:134 src/stored/authenticate.c:146
-#: src/stored/authenticate.c:257 src/wx-console/authenticate.c:133
-#: src/console/authenticate.c:129 src/filed/authenticate.c:160
-#: src/filed/authenticate.c:279
-msgid "Authorization problem: Remote server requires TLS.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot resolve hostname(%s) %s"
+#~ msgstr "impossible de résoudre le hostname (%s) %s"
 
-#: src/dird/authenticate.c:143
-#, fuzzy, c-format
-msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
-msgstr "Négociation TLS échouée avec le SD « %s:%d ».\n"
+#, fuzzy
+#~ msgid "Expected a block to begin with { but got: %s"
+#~ msgstr "Attendait un début de bloc {, pas : %s"
 
-#: src/dird/authenticate.c:155
-#, c-format
-msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
-msgstr ""
-"bdird<stored: « %s:%s » Mauvaise réponse à la commande Hello : ERR=%s\n"
+#, fuzzy
+#~ msgid "Expected a string but got: %s"
+#~ msgstr "Attendait une chaîne, pas : %s"
 
-#: src/dird/authenticate.c:162 src/tray-monitor/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:151
-msgid "Storage daemon rejected Hello command\n"
-msgstr "Le storage a rejeté la commande Hello\n"
+#, fuzzy
+#~ msgid "Expected a string [ip|ipv4|ipv6] but got: %s"
+#~ msgstr "Attentait la chaîne [ip|ipv4|ipv6], pas : %s"
 
-#: src/dird/authenticate.c:163
-#, fuzzy, c-format
-msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
-msgstr "Le Storage daemon « %s:%d » a rejeté la commande Hello\n"
+#, fuzzy
+#~ msgid "Expected a string [ip|ipv4] but got: %s"
+#~ msgstr "Attendait la chaîne [ip|ipv4], pas : %s"
 
-#: src/dird/authenticate.c:192
-#, fuzzy, c-format
-msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
-msgstr "Erreur pendant lors de la récupération du pool. ERR=%s\n"
+#, fuzzy
+#~ msgid "Expected an equal = but got: %s"
+#~ msgstr "Attendait un égal =, pas : %s"
 
-#: src/dird/authenticate.c:222
-msgid "Director and File daemon passwords or names not the same.\n"
-msgstr ""
-"Le mot de passe ou le nom du Director et du Client ne sont pas identiques.\n"
+#, fuzzy
+#~ msgid "Expected an identifier [addr|port] but got: %s"
+#~ msgstr "Attendait un identifiant [addr|port], pas : %s"
 
-#: src/dird/authenticate.c:224
-#, fuzzy, c-format
-msgid ""
-"Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the FD or\n"
-"FD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-"Impossible de s'authentifier avec le File Daemon  « %s:%d ».\n"
-"Les causes possibles sont :\n"
-"- Les mots de pass ne correspondent pas ;\n"
-"- Le nombre maximum de job concurrent est atteint sur le FD ;\n"
-"- La connexion réseau du FD est tombée (il faut le redémarrer).\n"
-"Vous trouverez de l'aide sur\n"
-"http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
+#~ msgid "Only one port per address block"
+#~ msgstr "Seulement un port par bloc d'adresse"
 
-#: src/dird/authenticate.c:236
-#, c-format
-msgid ""
-"Authorization problem: FD \"%s:%s\" did not advertise required TLS support.\n"
-msgstr ""
+#~ msgid "Only one addr per address block"
+#~ msgstr "Seulement une adresse par bloc d'adresse"
 
-#: src/dird/authenticate.c:244
-#, c-format
-msgid "Authorization problem: FD at \"%s:%d\" requires TLS.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a identifier [addr|port] but got: %s"
+#~ msgstr "Attendait un identifiant [addr|port], pas : %s"
 
-#: src/dird/authenticate.c:254
-#, fuzzy, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
-msgstr "Négociation TLS échouée avec le FD  « %s:%d ».\n"
+#~ msgid "Expected a equal =, got: %s"
+#~ msgstr "Attendait un égal =, pas : %s"
 
-#: src/dird/authenticate.c:266 src/tray-monitor/authenticate.c:191
-#: src/qt-console/tray-monitor/authenticate.cpp:190
-#, c-format
-msgid "Bad response from File daemon to Hello command: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected a number or a string but got: %s"
+#~ msgstr "Attendait un nombre ou une chaîne, pas : %s"
 
-#: src/dird/authenticate.c:268
-#, fuzzy, c-format
-msgid "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
-msgstr ""
-"Mauvaise réponse du File Daemon  « %s:%d » à la commande Hello : ERR=%s\n"
+#, fuzzy
+#~ msgid "Expected an IP number or a hostname but got: %s"
+#~ msgstr "Attendait une adresse IP ou un nom de machine, pas : %s"
 
-#: src/dird/authenticate.c:277 src/tray-monitor/authenticate.c:198
-#: src/qt-console/tray-monitor/authenticate.cpp:197
-msgid "File daemon rejected Hello command\n"
-msgstr "Le Client a rejeté la commande Hello\\n\n"
+#, fuzzy
+#~ msgid "Expected a end of block with } but got: %s"
+#~ msgstr "Attendait une fin de bloc }, pas : %s"
 
-#: src/dird/authenticate.c:278
-#, fuzzy, c-format
-msgid "File daemon at \"%s:%d\" rejected Hello command\n"
-msgstr "Le File Daemon  « %s:%d » a rejeté la commande Hello\n"
+#, fuzzy
+#~ msgid "Cannot add hostname(%s) and port(%s) to addrlist (%s)"
+#~ msgstr ""
+#~ "Impossible d'ajouter le hostname (%s) et le port (%s) à la liste "
+#~ "d'adresse (%s)"
 
-#: src/dird/authenticate.c:302
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Len=%d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Expected an end of block with } but got: %s"
+#~ msgstr "Attendait une fin de bloc }, pas : %s"
 
-#: src/dird/authenticate.c:309
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Got: %s\n"
-msgstr ""
+#~ msgid "Expected an IP number or a hostname, got: %s"
+#~ msgstr "Attendait une adresse IP ou un nom de machine, pas : %s"
 
-#: src/dird/authenticate.c:377
-msgid ""
-"Authorization problem: Remote client did not advertise required TLS "
-"support.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot add port (%s) to (%s)"
+#~ msgstr "impossible d'ajouter le port (%s) à (%s)"
 
-#: src/dird/authenticate.c:385
-msgid "Authorization problem: Remote client requires TLS.\n"
-msgstr ""
+#~ msgid "Expected a port number or string, got: %s"
+#~ msgstr "Attendait un numéro de port ou une chaîne, pas : %s"
 
-#: src/dird/authenticate.c:400 src/filed/authenticate.c:169
-#: src/filed/authenticate.c:288
-msgid "TLS negotiation failed.\n"
-msgstr ""
+#~ msgid "Error scanning attributes: %s\n"
+#~ msgstr "Erreur pendant la lecture des attributs : %s\n"
 
-#: src/dird/authenticate.c:414
-#, c-format
-msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
-msgstr ""
+#~ msgid "Child died from signal %d: %s"
+#~ msgstr "Le processus fils est mort par le signal %d : %s"
 
-#: src/dird/authenticate.c:419
-#, c-format
-msgid "1000 OK: %s Version: %s (%s)\n"
-msgstr "1000 OK: %s Version: %s (%s)\n"
+#~ msgid "Status OK\n"
+#~ msgstr "Statut OK\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Attr spool write error. wrote=%d wanted=%d bytes. ERR=%s\n"
+#~ msgstr "Erreur pendant l'écriture des attributs dans le spool. ERR=%s\n"
 
-#: 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"
+#~ msgid "TLS connection initialization failed.\n"
+#~ msgstr "Initialisation de la connexion TLS échouée.\n"
 
-#: src/dird/catreq.c:154
-msgid "1901 No Media.\n"
-msgstr "1901 Pas de Media.\n"
+#~ msgid "TLS Negotiation failed.\n"
+#~ msgstr "Négociation TLS échouée.\n"
 
-#: src/dird/catreq.c:182
-msgid "not in Pool"
-msgstr "non présent dans le Pool"
+#~ msgid "TLS enabled but not configured.\n"
+#~ msgstr "TLS activé mais non configuré.\n"
 
-#: src/dird/catreq.c:184
-msgid "not correct MediaType"
-msgstr ""
+#~ msgid "TLS enable but not configured.\n"
+#~ msgstr "TLS actif mais non configuré.\n"
 
-#: src/dird/catreq.c:194
-msgid "is not Enabled"
-msgstr "n'est pas activé (Enabled)"
+#~ msgid "No problem."
+#~ msgstr "Pas de problème."
 
-#: 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"
+#~ msgid "Unknown error."
+#~ msgstr "Erreur inconnue."
 
-#: 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"
+#~ msgid "Unknown sig %d"
+#~ msgstr "sig inconnu %d"
 
-#: 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"
+#~ msgid "Cannot set SO_REUSEADDR on socket: %s\n"
+#~ msgstr ""
+#~ "Impossible de positionner l'option SO_REUSEADDR sur la socket : %s\n"
 
-#: src/dird/catreq.c:232
-#, c-format
-msgid "1991 Catalog Request for vol=%s failed: %s"
-msgstr ""
+#~ msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
+#~ msgstr "Impossible de s'attacher au port %d : ERR=%s : Réessaie...\n"
 
-#: src/dird/catreq.c:259
-#, c-format
-msgid ""
-"Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
-msgstr ""
+#~ msgid "Cannot bind port %d: ERR=%s.\n"
+#~ msgstr "Impossible de s'attacher au port %d : ERR=%s.\n"
 
-#: src/dird/catreq.c:262
-#, c-format
-msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No addr/port found to listen on.\n"
+#~ msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/catreq.c:318
-#, c-format
-msgid "Catalog error updating Media record. %s"
-msgstr ""
+#~ msgid "Could not init client queue: ERR=%s\n"
+#~ msgstr "Impossible d'initialiser la queue cliente : ERR=%s\n"
 
-#: src/dird/catreq.c:320
-msgid "1993 Update Media error\n"
-msgstr "1993 Erreur sur la mise à jour du Media\n"
+#~ msgid "Error in select: %s\n"
+#~ msgstr "Erreur sur le select : %s\n"
 
-#: src/dird/catreq.c:344
-#, c-format
-msgid "Catalog error creating JobMedia record. %s"
-msgstr ""
+#~ msgid "Connection from %s:%d refused by hosts.access\n"
+#~ msgstr "Connexion depuis %s:%d refusée par hosts.access\n"
 
-#: src/dird/catreq.c:346
-#, fuzzy
-msgid "1992 Create JobMedia error\n"
-msgstr "1991 Erreur sur la mise à jour du JobMedia\n"
+#~ msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
+#~ msgstr "Impossible de positionner SO_KEEPALIVE sur la socket : %s\n"
 
-#: src/dird/catreq.c:356
-#, c-format
-msgid "Invalid Catalog request: %s"
-msgstr ""
+#~ msgid "Could not create client BSOCK.\n"
+#~ msgstr "Impossible de créer la structure BSOCK cliente.\n"
 
-#: src/dird/catreq.c:443
-#, fuzzy, c-format
-msgid "Attribute create error: ERR=%s"
-msgstr "Erreur sur l'autochangeur : ERR=%s\n"
+#~ msgid "Could not add job to client queue: ERR=%s\n"
+#~ msgstr "Impossible d'ajouter le job à la queue cliente : ERR=%s\n"
 
-#: src/dird/catreq.c:538
-#, fuzzy, c-format
-msgid "Restore object create error. %s"
-msgstr "Restauration annulée"
+#~ msgid "Could not destroy client queue: ERR=%s\n"
+#~ msgstr "Impossible de détruire la queue cliente : ERR=%s\n"
 
-#: src/dird/catreq.c:544
-#, c-format
-msgid "%s not same File=%d as attributes=%d\n"
-msgstr ""
+#~ msgid ""
+#~ "Could not connect to %s on %s:%d. ERR=%s\n"
+#~ "Retrying ...\n"
+#~ msgstr ""
+#~ "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
+#~ "Réessaie...\n"
 
-#: src/dird/catreq.c:571
-#, c-format
-msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
-msgstr ""
+#~ 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/dird/catreq.c:586
-#, c-format
-msgid "attribute create error. %s"
-msgstr ""
+#, fuzzy
+#~ msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+#~ msgstr "Impossible de supprimer le volume \"%s\". ERR=%s"
 
-#: src/dird/catreq.c:592
-#, c-format
-msgid "Catalog error updating file digest. %s"
-msgstr ""
+#~ 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/dird/catreq.c:615
-#, fuzzy, c-format
-msgid "1994 Invalid Catalog Update: %s"
-msgstr "1990 Requête sur le Catalogue Invalide : %s"
+#, fuzzy
+#~ 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/dird/catreq.c:616
-#, c-format
-msgid "Invalid Catalog Update; DB not open: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
+#~ msgstr "Impossible de positionner SO_KEEPALIVE sur la socket : %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Could not init bsock mutex. ERR=%s\n"
+#~ msgstr "Impossible d'initialiser la queue cliente : ERR=%s\n"
 
-#: src/dird/msgchan.c:106 src/tray-monitor/tray-monitor.c:952
-#: src/filed/job.c:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
-msgid "Storage daemon"
-msgstr ""
+#, fuzzy
+#~ 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/dird/msgchan.c:205
-#, c-format
-msgid "Storage daemon rejected Job command: %s\n"
-msgstr ""
+#~ msgid "Read expected %d got %d from %s:%s:%d\n"
+#~ msgstr "Attendait %d en lecture, eu %d de %s:%s:%d\n"
 
-#: src/dird/msgchan.c:213
-#, c-format
-msgid "<stored: bad response to Job command: %s\n"
-msgstr ""
+#~ msgid "Read error from %s:%s:%d: ERR=%s\n"
+#~ msgstr "Erreur de lecture de %s:%s:%d : ERR=%s\n"
 
-#: src/dird/msgchan.c:273
-#, fuzzy, c-format
-msgid "Using Device \"%s\" to read.\n"
-msgstr "Using Device \"%s\"\n"
+#, fuzzy
+#~ msgid "fread attr spool error. Wanted=%d got=%d bytes. ERR=%s\n"
+#~ msgstr "Erreur pendant l'écriture des attributs dans le spool. ERR=%s\n"
 
-#: src/dird/msgchan.c:311
-#, fuzzy, c-format
-msgid "Using Device \"%s\" to write.\n"
-msgstr "Using Device \"%s\"\n"
+#, fuzzy
+#~ msgid "fread attr spool I/O error.\n"
+#~ msgstr "Erreur pendant l'écriture des attributs dans le spool. ERR=%s\n"
 
-#: src/dird/msgchan.c:318
-#, c-format
-msgid ""
-"\n"
-"     Storage daemon didn't accept Device \"%s\" because:\n"
-"     %s"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not malloc BSOCK data buffer\n"
+#~ msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/dird/msgchan.c:322
-#, c-format
-msgid ""
-"\n"
-"     Storage daemon didn't accept Device \"%s\" command.\n"
-msgstr ""
+#~ msgid "sockopt error: %s\n"
+#~ msgstr "erreur sockopt : %s\n"
 
-#: src/dird/msgchan.c:345 src/dird/msgchan.c:542
-#, c-format
-msgid "Cannot create message thread: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "fcntl F_GETFL error. ERR=%s\n"
+#~ msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/dird/msgchan.c:417
-msgid "Director's comm line to SD dropped.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "fcntl F_SETFL error. ERR=%s\n"
+#~ msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/tray-monitor/tray_conf.c:177
-#: src/qt-console/tray-monitor/tray_conf.cpp:177
-#, c-format
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: src/tray-monitor/tray_conf.c:183
-#: src/qt-console/tray-monitor/tray_conf.cpp:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr ""
+#~ msgid "Out of memory: ERR=%s\n"
+#~ msgstr "Plus de mémoire : ERR=%s\n"
 
-#: src/tray-monitor/tray_conf.c:187
-#: src/qt-console/tray-monitor/tray_conf.cpp:187
-#, fuzzy, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr "Client \"%s\" adresse positionné à %s\n"
+#~ msgid "Buffer overflow.\n"
+#~ msgstr "Buffer overflow.\n"
 
-#: src/tray-monitor/tray_conf.c:191
-#: src/qt-console/tray-monitor/tray_conf.cpp:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr ""
+#~ msgid "Bad errno"
+#~ msgstr "Mauvais errno"
 
-#: src/tray-monitor/tray_conf.c:195
-#: src/qt-console/tray-monitor/tray_conf.cpp:195
-#: src/qt-console/bat_conf.cpp:157
-#, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr ""
+#~ msgid "Cannot open pid file. %s ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier contenant le pid. %s ERR=%s\n"
 
-#: src/tray-monitor/tray-monitor.c:114
-#, fuzzy, c-format
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-") %s %s %s\n"
-"\n"
-"Usage : bconsole [-s] [-c config_file] [-d niveau_debug]\n"
-"       -c <file>   set configuration file to file\n"
-"       -dnn        set debug level to nn\n"
-"       -s          no signals\n"
-"       -t          test - lecture de la configuration et sortie\n"
-"\n"
+#~ msgid "Could not open pid file. %s ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier pid. %s ERR=%s\n"
 
-#: src/tray-monitor/tray-monitor.c:270
-#: src/qt-console/tray-monitor/tray-monitor.cpp:216
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
-msgstr ""
+#~ msgid "Could not create state file. %s ERR=%s\n"
+#~ msgstr "Impossible de créer le fichier d'état. %s ERR=%s\n"
 
-#: src/tray-monitor/tray-monitor.c:301
-#: src/qt-console/tray-monitor/tray-monitor.cpp:248
-#, fuzzy, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
-msgstr ""
-"Pas de director défini pour %s\n"
-"Sans cette définition, il n'est pas possible de se connecter à celui-ci.\n"
+#~ msgid "Unable to open certificate file"
+#~ msgstr "Impossible d'ouvrir de fichier de certificat"
 
-#: src/tray-monitor/tray-monitor.c:323
-#: src/qt-console/tray-monitor/tray-monitor.cpp:263
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
-msgstr ""
+#~ msgid "Unable to read certificate from file"
+#~ msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/tray-monitor/tray-monitor.c:330
-#, fuzzy
-msgid "Bacula daemon status monitor"
-msgstr "Bacula Storage : En cours"
+#~ msgid "Unable to extract public key from certificate"
+#~ msgstr "Impossible d'extraire la clef publique à partir du certificat"
 
-#: src/tray-monitor/tray-monitor.c:339
-msgid "Open status window..."
-msgstr ""
+#~ msgid ""
+#~ "Provided certificate does not include the required subjectKeyIdentifier "
+#~ "extension."
+#~ msgstr ""
+#~ "Le certificat fournis n'inclus pas l'extension subjectKeyIdentifier "
+#~ "requise"
 
-#: src/tray-monitor/tray-monitor.c:345
-msgid "Exit"
-msgstr ""
+#~ msgid "Unsupported key type provided: %d\n"
+#~ msgstr "Type de clef fourni non supporté : %d\n"
 
-#: src/tray-monitor/tray-monitor.c:357
-#, fuzzy
-msgid "Bacula tray monitor"
-msgstr "Bacula Storage : En cours"
+#~ msgid "Unable to open private key file"
+#~ msgstr "Impossible d'ouvrir le fichier de clef privée"
 
-#: src/tray-monitor/tray-monitor.c:382
-msgid " (DIR)"
-msgstr ""
+#~ msgid "Unable to read private key from file"
+#~ msgstr "Impossible de lire la clef privée à partir du fichier"
 
-#: src/tray-monitor/tray-monitor.c:386
-msgid " (FD)"
-msgstr ""
+#~ msgid "Unsupported digest type: %d\n"
+#~ msgstr "Le digest spécifié n'est pas supporté : %d\n"
 
-#: src/tray-monitor/tray-monitor.c:390
-msgid " (SD)"
-msgstr ""
+#~ msgid "OpenSSL digest finalize failed"
+#~ msgstr "Initialisation du digest OpenSSL à échoué"
 
-#: src/tray-monitor/tray-monitor.c:403
 #, fuzzy
-msgid "Unknown status."
-msgstr "Erreur inconnue."
-
-#: src/tray-monitor/tray-monitor.c:477
-msgid "Refresh interval in seconds: "
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:485
-msgid "Refresh now"
-msgstr ""
+#~ msgid "OpenSSL digest Verify final failed"
+#~ msgstr "Initialisation du contexte clef/IV du cipher OpenSSL à échoué"
 
-#: src/tray-monitor/tray-monitor.c:489
 #, fuzzy
-msgid "About"
-msgstr "Abort"
+#~ msgid "No signers found for crypto verify.\n"
+#~ msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/tray-monitor/tray-monitor.c:493
-msgid "Close"
-msgstr ""
+#~ msgid "Signature creation failed"
+#~ msgstr "La création de la signature a échouée"
 
-#: src/tray-monitor/tray-monitor.c:513
-#, fuzzy, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr "Connexion au Director %s:%d\n"
+#~ msgid "Signature decoding failed"
+#~ msgstr "Le décodage de la signature a échoué"
 
-#: src/tray-monitor/tray-monitor.c:516
-#, fuzzy, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr "Connexion au client %s (%s:%d)\n"
+#~ msgid "Unsupported cipher type specified\n"
+#~ msgstr "Le cipher spécifié est non supporté\n"
 
-#: src/tray-monitor/tray-monitor.c:519
-#, fuzzy, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr "Connexion au Director %s:%d\n"
+#~ msgid "CryptoData decoding failed"
+#~ msgstr "Le décodage du CryptoData a échoué"
 
-#: src/tray-monitor/tray-monitor.c:560 src/tray-monitor/tray-monitor.c:571
-msgid "Bacula Tray Monitor"
-msgstr ""
+#~ msgid "Failure decrypting the session key"
+#~ msgstr "Impossible de décrypter la clef de session"
 
-#: src/tray-monitor/tray-monitor.c:562 src/tray-monitor/tray-monitor.c:573
-msgid "Written by Nicolas Boichat\n"
-msgstr ""
+#~ msgid "Unsupported contentEncryptionAlgorithm: %d\n"
+#~ msgstr "contentEncryptionAlgorithm non supporté : %d\n"
 
-#: src/tray-monitor/tray-monitor.c:563 src/tray-monitor/tray-monitor.c:574
-msgid "Version"
-msgstr "Version"
+#~ msgid "OpenSSL cipher context initialization failed"
+#~ msgstr "Initialisation du contexte clef/IV du cipher OpenSSL à échoué"
 
-#: src/tray-monitor/tray-monitor.c:656
-#: src/qt-console/tray-monitor/tray-monitor.cpp:331
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr ""
+#~ msgid "Unable to init OpenSSL threading: ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le thread OpenSSL : ERR=%s\n"
 
-#: src/tray-monitor/tray-monitor.c:730
-#, fuzzy, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr "Le statut actuel du volume (Volume status) est : %s\n"
+#~ msgid "Failed to save OpenSSL PRNG\n"
+#~ msgstr "Impossible de sauvegarder le PRNG OpenSSL\n"
 
-#: src/tray-monitor/tray-monitor.c:742
-#, fuzzy, c-format
-msgid " (%d errors)"
-msgstr "est en erreur"
+#, fuzzy
+#~ msgid "Unsupported digest type=%d specified\n"
+#~ msgstr "Le cipher spécifié est non supporté\n"
 
-#: src/tray-monitor/tray-monitor.c:745
-#, fuzzy, c-format
-msgid " (%d error)"
-msgstr "BUS error"
+#~ msgid "No error"
+#~ msgstr "Pas d'erreur"
 
-#: src/tray-monitor/tray-monitor.c:783
 #, fuzzy
-msgid "No current job."
-msgstr "Pas de RecyclePool courant\n"
-
-#: src/tray-monitor/tray-monitor.c:786
-msgid "No last job."
-msgstr ""
+#~ msgid "Signer not found"
+#~ msgstr "Le Storage \"%s\" est introuvable.\n"
 
-#: src/tray-monitor/tray-monitor.c:794
-msgid "Job status: Created"
-msgstr ""
+#, fuzzy
+#~ msgid "Recipient not found"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: src/tray-monitor/tray-monitor.c:799
 #, fuzzy
-msgid "Job status: Running"
-msgstr "Pas de job en cours.\n"
+#~ msgid "Unsupported digest algorithm"
+#~ msgstr "Le digest spécifié n'est pas supporté : %d\n"
 
-#: src/tray-monitor/tray-monitor.c:803
-msgid "Job status: Blocked"
-msgstr ""
+#, fuzzy
+#~ msgid "Unsupported encryption algorithm"
+#~ msgstr "contentEncryptionAlgorithm non supporté : %d\n"
 
-#: src/tray-monitor/tray-monitor.c:808
 #, fuzzy
-msgid "Job status: Terminated"
-msgstr "est terminé"
+#~ msgid "Signature is invalid"
+#~ msgstr "La création de la signature a échouée"
 
-#: src/tray-monitor/tray-monitor.c:813
-msgid "Job status: Terminated in error"
-msgstr ""
+#~ msgid "Internal error"
+#~ msgstr "Erreur interne"
 
-#: src/tray-monitor/tray-monitor.c:819
-msgid "Job status: Error"
-msgstr ""
+#~ msgid "Unknown error"
+#~ msgstr "Erreur inconnue."
 
-#: src/tray-monitor/tray-monitor.c:823
 #, fuzzy
-msgid "Job status: Fatal error"
-msgstr "%s : %s Erreur fatale : "
+#~ msgid "Cannot fork to become daemon: ERR=%s\n"
+#~ msgstr "Impossible de forker pour passer en mode démon : %s\n"
 
-#: src/tray-monitor/tray-monitor.c:828
-#, fuzzy
-msgid "Job status: Verify differences"
-msgstr "Vérification des différences"
+#~ msgid "Illegal character \"%c\" in name.\n"
+#~ msgstr "Caractère illégal « %c » dans le nom.\n"
 
-#: src/tray-monitor/tray-monitor.c:833
-#, fuzzy
-msgid "Job status: Canceled"
-msgstr "Le job %s est annulé.\n"
+#~ msgid "Name too long.\n"
+#~ msgstr "Nom trop long.\n"
 
-#: src/tray-monitor/tray-monitor.c:838
 #, fuzzy
-msgid "Job status: Waiting on File daemon"
-msgstr "%s Job %s est en attente de la connexion du Client.\n"
+#~ 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/tray-monitor/tray-monitor.c:843
 #, fuzzy
-msgid "Job status: Waiting on the Storage daemon"
-msgstr "est en attente du Storage %s"
+#~ msgid "Cannot open config file %s: %s\n"
+#~ msgstr "Impossible d'ouvrir le fichier de configuration \"%s\" : %s\n"
 
-#: src/tray-monitor/tray-monitor.c:848
-#, fuzzy
-msgid "Job status: Waiting for new media"
-msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
+#~ msgid "Backup"
+#~ msgstr "Backup"
 
-#: src/tray-monitor/tray-monitor.c:853
-#, fuzzy
-msgid "Job status: Waiting for Mount"
-msgstr "En attente d'un montage"
+#~ msgid "Verifying"
+#~ msgstr "Vérification"
 
-#: src/tray-monitor/tray-monitor.c:858
-#, fuzzy
-msgid "Job status: Waiting for storage resource"
-msgstr "En attente du Storage"
+#~ msgid "Restoring"
+#~ msgstr "Restauration"
 
-#: src/tray-monitor/tray-monitor.c:863
-#, fuzzy
-msgid "Job status: Waiting for job resource"
-msgstr "En attente du Storage"
+#~ msgid "Archiving"
+#~ msgstr "Archivage"
 
-#: src/tray-monitor/tray-monitor.c:868
-#, fuzzy
-msgid "Job status: Waiting for Client resource"
-msgstr "%s Job %s est en attente de la connexion du Client.\n"
+#~ msgid "Copying"
+#~ msgstr "Copier"
 
-#: src/tray-monitor/tray-monitor.c:873
-msgid "Job status: Waiting for maximum jobs"
-msgstr ""
+#~ msgid "Migration"
+#~ msgstr "Migrer"
 
-#: src/tray-monitor/tray-monitor.c:878
 #, fuzzy
-msgid "Job status: Waiting for start time"
-msgstr "attend son heure de démarrage"
+#~ msgid "Scanning"
+#~ msgstr "En cours"
 
-#: src/tray-monitor/tray-monitor.c:883
-#, fuzzy
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr "attend qu'un job plus prioritaire se termine"
+#~ msgid "Unknown operation"
+#~ msgstr "Opération inconnue"
 
-#: src/tray-monitor/tray-monitor.c:888
-#, fuzzy, c-format
-msgid "Unknown job status %c."
-msgstr "est dans un état inconnu %c"
+#~ msgid "backup"
+#~ msgstr "backup"
 
-#: src/tray-monitor/tray-monitor.c:889
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr ""
+#~ msgid "verified"
+#~ msgstr "vérifié"
 
-#: src/tray-monitor/tray-monitor.c:896
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr ""
+#~ msgid "verify"
+#~ msgstr "Vérifier"
 
-#: src/tray-monitor/tray-monitor.c:936 src/console/console.c:1143
-#, c-format
-msgid "Connecting to Director %s:%d\n"
-msgstr "Connexion au Director %s:%d\n"
+#~ msgid "restored"
+#~ msgstr "Restauré"
 
-#: src/tray-monitor/tray-monitor.c:937
-#: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: src/qt-console/bcomm/dircomm.cpp:103
-#, fuzzy, c-format
-msgid "Connecting to Director %s:%d"
-msgstr "Connexion au Director %s:%d\n"
+#~ msgid "restore"
+#~ msgstr "restaurer"
 
-#: 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:173
-#, fuzzy
-msgid "Director daemon"
-msgstr "Director"
+#~ msgid "archived"
+#~ msgstr "archivé"
 
-#: src/tray-monitor/tray-monitor.c:943
-#, fuzzy, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr "Connexion au client %s (%s:%d)\n"
+#~ msgid "archive"
+#~ msgstr "archiver"
 
-#: src/tray-monitor/tray-monitor.c:944
-#: src/qt-console/tray-monitor/tray-monitor.cpp:366
-#, fuzzy, c-format
-msgid "Connecting to Client %s:%d"
-msgstr "Connexion au client %s (%s:%d)\n"
+#~ msgid "copied"
+#~ msgstr "copié"
 
-#: src/tray-monitor/tray-monitor.c:945
-#: src/qt-console/tray-monitor/tray-monitor.cpp:368
-msgid "File daemon"
-msgstr ""
+#~ msgid "copy"
+#~ msgstr "copier"
 
-#: src/tray-monitor/tray-monitor.c:950
-#, fuzzy, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr "Connexion au Director %s:%d\n"
+#~ msgid "migrated"
+#~ msgstr "migrer"
 
-#: src/tray-monitor/tray-monitor.c:951
-#: src/qt-console/tray-monitor/tray-monitor.cpp:373
-#, fuzzy, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr "Connexion au Director %s:%d\n"
+#~ msgid "migrate"
+#~ msgstr "migré"
 
-#: src/tray-monitor/tray-monitor.c:956 src/tray-monitor/tray-monitor.c:994
-#: src/qt-console/tray-monitor/tray-monitor.cpp:379
-#: src/qt-console/tray-monitor/tray-monitor.cpp:409
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr ""
+#~ msgid "scanned"
+#~ msgstr "scanné"
 
-#: src/tray-monitor/tray-monitor.c:962
-#, fuzzy
-msgid "Cannot connect to daemon.\n"
-msgstr "Impossible de se connecter au démon Storage\n"
+#~ msgid "scan"
+#~ msgstr "scanner"
 
-#: src/tray-monitor/tray-monitor.c:963
-#: src/qt-console/tray-monitor/tray-monitor.cpp:384
-#, fuzzy
-msgid "Cannot connect to daemon."
-msgstr "Impossible de se connecter au démon Storage\n"
+#~ msgid "unknown action"
+#~ msgstr "action inconnue"
 
-#: src/tray-monitor/tray-monitor.c:975
-#: src/qt-console/tray-monitor/tray-monitor.cpp:393
-#, fuzzy, c-format
-msgid "Authentication error : %s"
-msgstr "Erreur sur l'autochangeur : ERR=%s\n"
+#~ msgid "pthread key create failed: ERR=%s\n"
+#~ msgstr "erreur sur pthread_key_create. ERR=%s\n"
 
-#: src/tray-monitor/tray-monitor.c:982
-#, fuzzy
-msgid "Opened connection with Director daemon.\n"
-msgstr "Impossible de se connecter au Storage daemon.\n"
+#~ msgid "pthread_once failed. ERR=%s\n"
+#~ msgstr "erreur sur pthread_once. ERR=%s\n"
 
-#: src/tray-monitor/tray-monitor.c:983
-#: src/qt-console/tray-monitor/tray-monitor.cpp:400
 #, fuzzy
-msgid "Opened connection with Director daemon."
-msgstr "Impossible de se connecter au Storage daemon.\n"
+#~ msgid "Could not init msg_queue mutex. ERR=%s\n"
+#~ msgstr "Impossible d'initialiser la queue cliente : ERR=%s\n"
 
-#: src/tray-monitor/tray-monitor.c:986
-#, fuzzy
-msgid "Opened connection with File daemon.\n"
-msgstr "Impossible de se connecter au client.\n"
+#~ msgid "NULL jcr.\n"
+#~ msgstr "NULL jcr.\n"
 
-#: src/tray-monitor/tray-monitor.c:987
-#: src/qt-console/tray-monitor/tray-monitor.cpp:403
-#, fuzzy
-msgid "Opened connection with File daemon."
-msgstr "Impossible de se connecter au client.\n"
+#~ msgid "JCR use_count=%d JobId=%d\n"
+#~ msgstr "JCR use_count=%d JobId=%d\n"
 
-#: src/tray-monitor/tray-monitor.c:990
 #, fuzzy
-msgid "Opened connection with Storage daemon.\n"
-msgstr "Impossible de se connecter au Storage daemon.\n"
+#~ msgid "pthread_setspecific failed: ERR=%s\n"
+#~ msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: src/tray-monitor/tray-monitor.c:991
-#: src/qt-console/tray-monitor/tray-monitor.cpp:406
-#, fuzzy
-msgid "Opened connection with Storage daemon."
-msgstr "Impossible de se connecter au Storage daemon.\n"
+#~ msgid ""
+#~ "Watchdog sending kill after %d secs to thread stalled reading Storage "
+#~ "daemon.\n"
+#~ msgstr ""
+#~ "Le watchdog a envoyé un signal après %d secs au thread bloqué en écoute "
+#~ "du SD.\n"
 
-#: src/tray-monitor/tray-monitor.c:1028
-msgid "<< Error: BNET_SUB_PROMPT signal received. >>\n"
-msgstr ""
+#~ msgid ""
+#~ "Watchdog sending kill after %d secs to thread stalled reading File "
+#~ "daemon.\n"
+#~ msgstr ""
+#~ "Le watchdog a envoyé un signal après %d secs au thread bloqué en écoute "
+#~ "du FD.\n"
 
-#: src/tray-monitor/tray-monitor.c:1033 src/wx-console/console_thread.cpp:494
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr ""
+#~ msgid ""
+#~ "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
+#~ msgstr ""
+#~ "Le watchdog a envoyé un signal après %d secs au thread bloqué en écoute "
+#~ "du Director.\n"
 
-#: src/tray-monitor/tray-monitor.c:1037
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr ""
+#~ msgid "Problem probably begins at line %d.\n"
+#~ msgstr "Le problème commence sûrement au début de la ligne %d.\n"
 
-#: src/tray-monitor/tray-monitor.c:1042
-#, fuzzy
-msgid "<ERROR>\n"
-msgstr "%s : ERREUR : "
+#~ msgid ""
+#~ "Config error: %s\n"
+#~ "            : line %d, col %d of file %s\n"
+#~ "%s\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Erreur de config : %s\n"
+#~ "                 : ligne %d, col %d du fichier %s\n"
+#~ "%s\n"
+#~ "%s"
 
-#: src/tray-monitor/tray-monitor.c:1046
-#: src/qt-console/tray-monitor/tray-monitor.cpp:457
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr ""
+#~ msgid "Config error: %s\n"
+#~ msgstr "Erreur de config : %s\n"
 
-#: src/tray-monitor/tray-monitor.c:1052
-msgid "<STOP>\n"
-msgstr ""
+#~ 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/tray-monitor/tray-monitor.c:1056
-#: src/qt-console/tray-monitor/tray-monitor.cpp:466
-#, fuzzy
-msgid "Error : Connection closed."
-msgstr "Connexion...\n"
+#~ msgid "none"
+#~ msgstr "none"
 
-#: src/tray-monitor/authenticate.c:88
-#: src/qt-console/tray-monitor/authenticate.cpp:87
-#, fuzzy
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see "
-msgstr ""
-"Problème d'authentification avec le director.\n"
-"Le plus souvent, les mots de pass ne correspondent pas.\n"
-"Vous trouverez de l'aide sur\n"
-"http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
+#~ msgid "comment"
+#~ msgstr "comment"
 
-#: src/tray-monitor/authenticate.c:97 src/console/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:96
-#, c-format
-msgid "Bad response to Hello command: ERR=%s\n"
-msgstr "Mauvaise réponse à la commande Hello : ERR=%s\n"
+#~ msgid "number"
+#~ msgstr "number"
 
-#: src/tray-monitor/authenticate.c:104 src/wx-console/authenticate.c:157
-#: src/console/authenticate.c:159
-#: src/qt-console/tray-monitor/authenticate.cpp:103
-msgid "Director rejected Hello command\n"
-msgstr "Le director a rejeté la commande Hello\n"
+#~ msgid "ip_addr"
+#~ msgstr "ip_addr"
 
-#: src/tray-monitor/authenticate.c:138
-#: src/qt-console/tray-monitor/authenticate.cpp:137
-#, fuzzy
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-"Le mot de passe ou le nom du Director et du Client ne sont pas identiques.\n"
+# identifiant
+#~ msgid "identifier"
+#~ msgstr "identifier"
 
-#: src/tray-monitor/authenticate.c:145
-#: src/qt-console/tray-monitor/authenticate.cpp:144
-#, fuzzy, c-format
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
-msgstr ""
-"bdird<stored: « %s:%s » Mauvaise réponse à la commande Hello : ERR=%s\n"
+#~ msgid "string"
+#~ msgstr "string"
 
-#: src/tray-monitor/authenticate.c:178
-#: src/qt-console/tray-monitor/authenticate.cpp:177
-#, fuzzy, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
-msgstr "Erreur pendant lors de la récupération du pool. ERR=%s\n"
+#~ msgid "quoted_string"
+#~ msgstr "quoted_string"
 
-#: src/tray-monitor/authenticate.c:184
-#: src/qt-console/tray-monitor/authenticate.cpp:183
 #, fuzzy
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-"Le mot de passe ou le nom du Director et du Client ne sont pas identiques.\n"
-
-#: 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"
-
-#: src/stored/reserve.c:156
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
-msgstr ""
+#~ msgid "include"
+#~ msgstr "Depuis"
 
-#: src/stored/reserve.c:256
 #, fuzzy
-msgid "3939 Could not get dcr\n"
-msgstr "Impossible de créer la structure BSOCK cliente.\n"
+#~ msgid "include_quoted_string"
+#~ msgstr "quoted_string"
 
-#: 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"
+#~ msgid "expected a positive integer number, got: %s"
+#~ msgstr "attendait un nombre entier positif, pas : %s"
 
-#: src/stored/reserve.c:373
-#, c-format
-msgid "Failed command: %s\n"
-msgstr "Erreur sur la commande : %s\n"
+#~ msgid "Cannot open included config file %s: %s\n"
+#~ msgstr "Impossible d'ouvrir le fichier de configuration inclus %s : %s\n"
 
-#: src/stored/reserve.c:632 src/stored/dircmd.c:633
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
-msgstr ""
+#~ msgid "expected an integer or a range, got %s: %s"
+#~ msgstr "attendait un entier ou bien un intervalle, pas %s : %s"
 
-#: 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 ""
+#~ msgid "expected an integer number, got %s: %s"
+#~ msgstr "attendait un nombre entier, pas %s : %s"
 
-#: src/stored/reserve.c:652
-#, c-format
-msgid "3926 Could not get dcr for device: %s\n"
-msgstr ""
+#~ msgid "expected a name, got %s: %s"
+#~ msgstr "attendait un nom, pas %s : %s"
 
-#: 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"
+#~ 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/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"
+#~ msgid "expected a string, got %s: %s"
+#~ msgstr "attendait une chaîne, pas %s : %s"
 
-#: 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"
+#, fuzzy
+#~ msgid "Mutex lock failure. ERR=%s\n"
+#~ msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Mutex unlock failure. ERR=%s\n"
+#~ msgstr "rwl_writeunlock en échec sur %s:%d :. ERR=%s\n"
 
-#: src/stored/reserve.c:891
-#, fuzzy, c-format
-msgid ""
-"3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive "
-"%s.\n"
-msgstr ""
-"3608 JobId=%u voulait le Pool=\"%s\", mais c'est le Pool=\"%s\" qui est dans "
-"le drive %s.\n"
+#, fuzzy
+#~ msgid "pthread_create failed: ERR=%s\n"
+#~ msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: 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"
+#~ msgid "Out of memory requesting %d bytes\n"
+#~ msgstr "Plus de mémoire à l'allocation de %d octets\n"
 
-#: 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"
+#~ msgid "Bacula Message"
+#~ msgstr "Message de Bacula"
 
-#: 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"
+#~ msgid "close error: ERR=%s\n"
+#~ msgstr "erreur de fermeture : ERR=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "Mail program terminated in error.\n"
+#~ "CMD=%s\n"
+#~ "ERR=%s\n"
+#~ msgstr ""
+#~ "La commande mail s'est terminée en erreur.\n"
+#~ "CMD=%s\n"
+#~ "ERR=%s\n"
 
-#: 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"
+#~ msgid "fopen %s failed: ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/stored/reserve.c:1064
-#, c-format
-msgid "Logic error!!!! JobId=%u Should not get here.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Msg delivery error: Operator mail program terminated in error.\n"
+#~ "CMD=%s\n"
+#~ "ERR=%s\n"
+#~ msgstr ""
+#~ "La commande mail s'est terminée en erreur.\n"
+#~ "CMD=%s\n"
+#~ "ERR=%s\n"
 
-#: src/stored/reserve.c:1065
-#, c-format
-msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/stored/reserve.c:1068
-msgid "Logic error!!!! Should not get here.\n"
-msgstr ""
+#~ msgid "%s: Fatal Error because: "
+#~ msgstr "%s : Erreur Fatale car : "
 
-#: src/stored/reserve.c:1071
-#, c-format
-msgid "3911 JobId=%u failed reserve drive %s.\n"
-msgstr ""
+#~ msgid "%s: Fatal Error at %s:%d because:\n"
+#~ msgstr "%s : Erreur Fatale à %s:%d car :\n"
 
-#: src/stored/bls.c:79
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bls [options] <device-name>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -j              list jobs\n"
-"       -k              list blocks\n"
-"    (no j or k option) list saved files\n"
-"       -L              dump label\n"
-"       -p              proceed inspite of errors\n"
-"       -v              be verbose\n"
-"       -V              specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-"Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -dnn           positionne le niveau de debug à nn\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -r <job>       lance <job> maintenant\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
+#~ msgid "%s: ERROR: "
+#~ msgstr "%s : ERREUR : "
 
-#: src/stored/bls.c:149 src/stored/bextract.c:146
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
-msgstr ""
+#~ msgid "%s: ERROR in %s:%d "
+#~ msgstr "%s : ERREUR dans %s:%d "
 
-#: src/stored/bls.c:164 src/stored/bextract.c:161
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
-msgstr ""
+#~ msgid "%s: Warning: "
+#~ msgstr "%s : Attention : "
 
-#: src/stored/bls.c:211
-msgid "No archive name specified\n"
-msgstr ""
+#, fuzzy
+#~ msgid "%s JobId %u: Fatal error: "
+#~ msgstr "%s : %s Erreur fatale : "
 
-#: src/stored/bls.c:247
-#, c-format
-msgid ""
-"\n"
-"Warning, this Volume is a continuation of Volume %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "%s JobId %u: Error: "
+#~ msgstr "%s : %s Erreur : "
 
-#: src/stored/bls.c:290
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "%s JobId %u: Warning: "
+#~ msgstr "%s : Attention : "
 
-#: src/stored/bls.c:301
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
-msgstr ""
+#~ msgid "Unable to init mutex: ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
 
-#: src/stored/bls.c:303
-#, c-format
-msgid "End of file %u on device %s, Volume \"%s\"\n"
-msgstr ""
+#~ msgid "Unable to destroy mutex: ERR=%s\n"
+#~ msgstr "Impossible de détruire le mutex : ERR=%s\n"
 
-#: src/stored/bls.c:327
-#, c-format
-msgid ""
-"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm="
-"%s rlen=%d\n"
-msgstr ""
+#~ msgid "expected an =, got: %s"
+#~ msgstr "attendait un =, eu : %s"
 
-#: src/stored/bls.c:336
-#, c-format
-msgid "Block: %d size=%d\n"
-msgstr "Bloc : %d taille=%d\n"
+#~ msgid "Could not find config Resource \"%s\" referenced on line %d : %s\n"
+#~ msgstr "Impossible de trouver la ressource \"%s\" utilisée ligne %d : %s\n"
 
-#: src/stored/bls.c:386 src/stored/bextract.c:328 src/stored/bscan.c:688
-msgid "Cannot continue.\n"
-msgstr ""
+#~ msgid "Missing config Resource \"%s\" referenced on line %d : %s\n"
+#~ msgstr "Impossible de trouver la ressource \"%s\" utilisée ligne %d : %s\n"
 
-#: src/stored/bls.c:388
-msgid "Attrib unpack error!\n"
-msgstr ""
+#~ msgid "expected a size number, got: %s"
+#~ msgstr "attendait une taille, eu : %s"
 
-#: src/stored/bls.c:399
-#, c-format
-msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "expected a speed number, got: %s"
+#~ msgstr "attendait une taille, eu : %s"
 
-#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:330
-msgid "Fresh Volume Label"
-msgstr ""
+#, fuzzy
+#~ msgid "expected a %s, got: %s"
+#~ msgstr "attendait un =, eu : %s"
 
-#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:333
-msgid "Volume Label"
-msgstr ""
+#~ msgid "Expected a Tape Label keyword, got: %s"
+#~ msgstr "Attendait un Label de lecteur, a pas : %s"
 
-#: src/stored/bls.c:432 src/stored/label.c:1028 src/stored/bcopy.c:337
-msgid "Begin Job Session"
-msgstr ""
+#, fuzzy
+#~ msgid "Config filename too long.\n"
+#~ msgstr "Nom de Volume trop long.\n"
 
-#: src/stored/bls.c:437 src/stored/label.c:1031 src/stored/bcopy.c:341
-msgid "End Job Session"
-msgstr ""
+#~ msgid "Cannot open config file \"%s\": %s\n"
+#~ msgstr "Impossible d'ouvrir le fichier de configuration \"%s\" : %s\n"
 
-#: src/stored/bls.c:441 src/stored/bcopy.c:346
-msgid "End of Medium"
-msgstr ""
+#~ msgid "Expected a Resource name identifier, got: %s"
+#~ msgstr "Attendait un identifiant de Ressource, a pas : %s"
 
-#: src/stored/bls.c:444
-msgid "End of Physical Medium"
-msgstr ""
+#~ msgid "expected resource name, got: %s"
+#~ msgstr "attendait un nom de ressource, eu : %s"
 
-#: src/stored/bls.c:447
-msgid "Start of object"
-msgstr ""
+#~ msgid "unexpected token %d %s in resource definition"
+#~ msgstr "mot clés inattendu %d %s dans la définition de la ressource"
 
-#: src/stored/bls.c:450
-msgid "End of object"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to open Plugin directory %s: ERR=%s\n"
+#~ msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/stored/bls.c:453 src/stored/label.c:1040 src/stored/bcopy.c:349
-msgid "Unknown"
-msgstr ""
+#, fuzzy
+#~ msgid "dlopen plugin %s failed: ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: 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 ""
+# Impossible d'ouvrir le fichier de spool des attributs : ERR=%s
+#, fuzzy
+#~ 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"
 
-#: src/stored/dircmd.c:155
-#, fuzzy, c-format
-msgid "Connection request from %s failed.\n"
-msgstr "Demande de connexion échouée.\n"
+#~ msgid "Could not find userid=%s: ERR=%s\n"
+#~ msgstr "Impossible de trouver le userid %s : ERR=%s\n"
 
-#: src/stored/dircmd.c:166
-#, fuzzy, c-format
-msgid "Invalid connection from %s. Len=%d\n"
-msgstr "Connexion invalide. Len=%d\n"
+#, fuzzy
+#~ msgid "Could not find password entry. ERR=%s\n"
+#~ msgstr "Impossible de trouver le client %s : ERR=%s\n"
 
-#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
-msgid "Unable to authenticate Director\n"
-msgstr ""
+#~ msgid "Could not find group=%s: ERR=%s\n"
+#~ msgstr "Impossible de trouver le groupe=%s : ERR=%s\n"
 
-#: src/stored/dircmd.c:299
-#, c-format
-msgid "3991 Bad setdebug command: %s\n"
-msgstr ""
+#~ msgid "Could not initgroups for group=%s, userid=%s: ERR=%s\n"
+#~ msgstr ""
+#~ "Impossible d'utiliser initgroups pour le groupe=%s, userid=%s: ERR=%s\n"
+#~ "\n"
 
-#: src/stored/dircmd.c:326
-msgid "3903 Error scanning cancel command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not initgroups for userid=%s: ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: src/stored/dircmd.c:330
-#, c-format
-msgid "3904 Job %s not found.\n"
-msgstr "3904 Job %s non trouvé.\n"
+#, fuzzy
+#~ msgid "Could not set group=%s: ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: src/stored/dircmd.c:358
-#, fuzzy, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
-msgstr "JobId %s, Job %s marqué pour être annulé.\n"
+#, fuzzy
+#~ msgid "prctl failed: ERR=%s\n"
+#~ msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "setreuid failed: ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/stored/dircmd.c:442
-#, c-format
-msgid "3903 Error scanning label command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "cap_from_text failed: ERR=%s\n"
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "cap_set_proc failed: ERR=%s\n"
+#~ msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: 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"
+#~ msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
+#~ msgstr "rwl_writelock en échec sur %s:%d : ERR=%s\n"
 
-#: src/stored/dircmd.c:516
-msgid "3921 Wrong volume mounted.\n"
-msgstr "3921 Mauvais volume monté.\n"
+#~ msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
+#~ msgstr "rwl_writeunlock en échec sur %s:%d :. ERR=%s\n"
 
-#: 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"
+#~ msgid "%s: run %s \"%s\"\n"
+#~ msgstr "%s: exécution %s de la commande \"%s\"\n"
 
-#: 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"
+#~ msgid "Runscript: %s could not execute. ERR=%s\n"
+#~ msgstr "Runscript : impossible d'exécuter %s. ERR=%s\n"
 
-#: 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"
+#~ msgid "%s: %s\n"
+#~ msgstr "%s: %s\n"
 
-#: src/stored/dircmd.c:541
-#, c-format
-msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
-msgstr ""
+#~ msgid "Runscript: %s returned non-zero status=%d. ERR=%s\n"
+#~ msgstr ""
+#~ "Runscript : %s s'est terminé avec un statut différent de 0 statut=%d. ERR="
+#~ "%s\n"
 
-#: src/stored/dircmd.c:578
-#, c-format
-msgid "3001 Mounted Volume: %s\n"
-msgstr "3001 Volume monté : %s\n"
+#, fuzzy
+#~ msgid "Negative numbers not permitted.\n"
+#~ msgstr "Les nombres négatifs ne sont pas autorisés\n"
 
-#: src/stored/dircmd.c:582 src/stored/dircmd.c:1215
-#, fuzzy, c-format
-msgid ""
-"3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
-"%s"
-msgstr ""
-"3902 Impossible de monté le volume dans le storage device %s car :\n"
-"%s"
+#, fuzzy
+#~ msgid "User cancel requested.\n"
+#~ msgstr "Restauration annulée"
 
-#: src/stored/dircmd.c:696
 #, fuzzy
-msgid "Specified slot ignored. "
-msgstr "fopen %s en erreur : ERR=%s\n"
+#~ msgid "Selection items must be be greater than zero.\n"
+#~ msgstr "Les valeurs doivent être supérieurs à zéro.\n"
 
-#: 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: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: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"
-"If this is not a blank tape, try unmounting and remounting the Volume.\n"
-msgstr ""
-"3905 Le device %s est ouvert mais il n'y a pas de volume Bacula monté.\n"
-"Si ce n'est pas une cartouche vierge, essayer de la démonter puis de la "
-"remonter.\n"
-
-#: 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: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: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:788
-#, fuzzy, c-format
-msgid "3002 Device \"%s\" is mounted.\n"
-msgstr "3002 Le device %s est monté.\n"
+#, fuzzy
+#~ msgid "Selection item too large.\n"
+#~ msgstr "Slot trop grand.\n"
 
-#: 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"
+#~ msgid "Bacula interrupted by signal %d: %s\n"
+#~ msgstr "Bacula a reçu le signal %d : %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Kaboom! %s, %s got signal %d - %s at %s. Attempting traceback.\n"
+#~ msgstr ""
+#~ "Kaboom ! %s, %s a reçu le signal %d - %s. Tentative de dump des traces.\n"
 
-#: 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"
+#~ msgid "Kaboom! exepath=%s\n"
+#~ msgstr "Kaboom ! exepath=%s\n"
 
-#: src/stored/dircmd.c:806
-#, fuzzy, c-format
-msgid "3905 Unknown wait state %d\n"
-msgstr "est dans un état inconnu %c"
+#~ msgid "Fork error: ERR=%s\n"
+#~ msgstr "Fork en erreur : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Calling: %s %s %s %s\n"
+#~ msgstr "Exécution : %s %s %s\n"
 
-#: 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"
+#~ msgid "execv: %s failed: ERR=%s\n"
+#~ msgstr "execv : %s en échec : ERR=%s\n"
 
-#: 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"
+#~ msgid "BA_NSIG too small (%d) should be (%d)\n"
+#~ msgstr "BA_NSIG trop petit (%d) devrait être (%d)\n"
 
-#: src/stored/dircmd.c:866
-#, fuzzy, c-format
-msgid "3001 Device \"%s\" unmounted.\n"
-msgstr "3001 Le device %s est démonté.\n"
+#~ msgid "UNKNOWN SIGNAL"
+#~ msgstr "SIGNAL INCONNU"
 
-#: 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"
+#~ msgid "Hangup"
+#~ msgstr "Hangup"
 
-#: src/stored/dircmd.c:909
-#, c-format
-msgid "3907 Error scanning unmount command: %s\n"
-msgstr ""
+#~ msgid "Quit"
+#~ msgstr "Quit"
 
-#: 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"
+#~ msgid "Abort"
+#~ msgstr "Abort"
 
-#: 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"
+#~ msgid "IOT trap"
+#~ msgstr "IOT trap"
 
-#: 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"
+#~ msgid "BUS error"
+#~ msgstr "BUS error"
 
-#: 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"
+#~ msgid "Segmentation violation"
+#~ msgstr "Erreur de segmentation"
 
-#: 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"
+#~ msgid "Broken pipe"
+#~ msgstr "Tube brisé"
 
-#: 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"
+#~ msgid "Alarm clock"
+#~ msgstr "Alarm clock"
 
-#: src/stored/dircmd.c:1009
-#, fuzzy, c-format
-msgid "3022 Device \"%s\" released.\n"
-msgstr "3022 Le device %s est libéré.\n"
+#~ msgid "Continue"
+#~ msgstr "Continue"
 
-#: src/stored/dircmd.c:1020
-#, c-format
-msgid "3927 Error scanning release command: %s\n"
-msgstr ""
+#~ msgid "Out of memory\n"
+#~ msgstr "Plus de mémoire\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "sm_realloc %d at %p from %s:%d\n"
+#~ msgstr "Attendait %d en lecture, eu %d de %s:%s:%d\n"
 
-#: src/stored/dircmd.c:1062
-msgid "Error parsing bootstrap file.\n"
-msgstr ""
+#~ msgid "  NULL pointer.\n"
+#~ msgstr "  pointeur NULL.\n"
 
-#: src/stored/dircmd.c:1124
-#, fuzzy, c-format
-msgid "3998 Device \"%s\" is not an autochanger.\n"
-msgstr "3995 Le Device %s n'est pas un autochangeur.\n"
+#~ msgid "  Buffer address: %p\n"
+#~ msgstr "  Adresse du buffer : %p\n"
 
-#: 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"
+#~ msgid "Error initializing SSL context"
+#~ msgstr "Erreur pendant l'initialisation du contexte SSL"
 
-#: src/stored/dircmd.c:1183
-#, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
-msgstr ""
+#~ msgid "Error loading certificate file"
+#~ msgstr "Erreur dans le chargement du certificat"
 
-#: src/stored/dircmd.c:1211
-#, c-format
-msgid "3001 Volume=%s Slot=%d\n"
-msgstr "3001 Volume=%s Slot=%d\n"
+#~ msgid "Error loading private key"
+#~ msgstr "Erreur dans le chargement de la clef privée"
 
-#: 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"
+#~ msgid "Unable to open DH parameters file"
+#~ msgstr "Impossible d'ouvrir le fichier de paramètre DH"
 
-#: src/stored/dircmd.c:1247
-#, fuzzy, c-format
-msgid ""
-"3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/mount.\n"
-msgstr ""
-"3932 Device %s est BLOQUÉ, démonté par l'utilisateur alors que bacula était "
-"en attente d'un média.\n"
+#~ msgid "Unable to load DH parameters from specified file"
+#~ msgstr ""
+#~ "Impossible de charger les paramètres DH à partir du fichier spécifié"
 
-#: 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"
+#~ msgid "Failed to set TLS Diffie-Hellman parameters"
+#~ msgstr "Impossible de positionner les paramètres TLS Diffie-Hellman"
 
-#: 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"
+#~ msgid "Error creating new SSL object"
+#~ msgstr "Erreur pendant la création d'un nouvel objet SSL"
 
-#: 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"
+#~ msgid "Connect failure"
+#~ msgstr "Erreur de connexion"
 
-#: 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"
+#~ msgid "Running"
+#~ msgstr "En cours"
 
-#: 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"
+#~ msgid "Blocked"
+#~ msgstr "Bloqué"
 
-#: 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"
+#~ msgid "Non-fatal error"
+#~ msgstr "Erreur non fatale"
 
-#: src/stored/parse_bsr.c:122 src/stored/parse_bsr.c:126
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
-msgstr ""
+#~ msgid "Canceled"
+#~ msgstr "Annulé"
 
-#: src/stored/parse_bsr.c:148
-#, c-format
-msgid "Cannot open bootstrap file %s: %s\n"
-msgstr ""
+#~ msgid "Verify differences"
+#~ msgstr "Vérification des différences"
 
-#: src/stored/parse_bsr.c:279
-#, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
-msgstr ""
+#~ msgid "Waiting on FD"
+#~ msgstr "En attente du FD"
 
-#: src/stored/parse_bsr.c:311
-#, c-format
-msgid "Device \"%s\" in bsr at inappropriate place.\n"
-msgstr ""
+#~ msgid "Wait on SD"
+#~ msgstr "En attente du SD"
 
-#: src/stored/parse_bsr.c:484
-#, fuzzy, c-format
-msgid "REGEX '%s' compile error. ERR=%s\n"
-msgstr "erreur de fermeture : ERR=%s\n"
+#~ msgid "Wait for new Volume"
+#~ msgstr "En attente d'un nouveau Volume"
 
-#: src/stored/parse_bsr.c:494
-msgid "JobType not yet implemented\n"
-msgstr ""
+#~ msgid "Waiting for mount"
+#~ msgstr "En attente d'un montage"
 
-#: src/stored/parse_bsr.c:502
-msgid "JobLevel not yet implemented\n"
-msgstr ""
+#~ msgid "Waiting for Storage resource"
+#~ msgstr "En attente du Storage"
 
-#: src/stored/parse_bsr.c:719
-#, c-format
-msgid "Slot %d in bsr at inappropriate place.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Completed successfully"
+#~ msgstr "Restauration effectuée."
 
-#: src/stored/parse_bsr.c:743
-#, c-format
-msgid "VolFile     : %u-%u\n"
-msgstr ""
+#~ msgid "Completed with warnings"
+#~ msgstr "Terminé avec des avertissements"
 
-#: src/stored/parse_bsr.c:751
-#, c-format
-msgid "VolBlock    : %u-%u\n"
-msgstr ""
+#~ msgid "Terminated with errors"
+#~ msgstr "Terminé avec des erreurs"
 
-#: src/stored/parse_bsr.c:759
-#, c-format
-msgid "VolAddr    : %llu-%llu\n"
-msgstr ""
+#~ msgid "Fatal error"
+#~ msgstr "Erreur fatale"
 
-#: src/stored/parse_bsr.c:768
-#, c-format
-msgid "FileIndex   : %u\n"
-msgstr ""
+#~ msgid "Created, not yet running"
+#~ msgstr "Créé, mais non démarré"
 
-#: src/stored/parse_bsr.c:770
-#, c-format
-msgid "FileIndex   : %u-%u\n"
-msgstr ""
+#~ msgid "Canceled by user"
+#~ msgstr "Annulé par l'utilisateur"
 
-#: src/stored/parse_bsr.c:780
-#, c-format
-msgid "JobId       : %u\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Verify found differences"
+#~ msgstr "Vérification des différences"
 
-#: src/stored/parse_bsr.c:782
-#, c-format
-msgid "JobId       : %u-%u\n"
-msgstr ""
+#~ msgid "Waiting for File daemon"
+#~ msgstr "En attente du client"
 
-#: src/stored/parse_bsr.c:792
-#, c-format
-msgid "SessId      : %u\n"
-msgstr ""
+#~ msgid "Waiting for Storage daemon"
+#~ msgstr "En attente du Storage"
 
-#: src/stored/parse_bsr.c:794
-#, c-format
-msgid "SessId      : %u-%u\n"
-msgstr ""
+#~ msgid "Waiting for higher priority jobs"
+#~ msgstr "Attend qu'un job plus prioritaire se termine"
 
-#: src/stored/parse_bsr.c:803
-#, c-format
-msgid "VolumeName  : %s\n"
-msgstr ""
+#~ msgid "Batch inserting file records"
+#~ msgstr "Mise à jour du catalogue"
 
-#: src/stored/parse_bsr.c:804
-#, c-format
-msgid "  MediaType : %s\n"
-msgstr ""
+#~ msgid "Fatal Error"
+#~ msgstr "Erreur Fatale"
 
-#: src/stored/parse_bsr.c:805
-#, c-format
-msgid "  Device    : %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Migrated Job"
+#~ msgstr "Migrer"
 
-#: src/stored/parse_bsr.c:806
-#, c-format
-msgid "  Slot      : %d\n"
-msgstr ""
+#~ msgid "Verify"
+#~ msgstr "Vérifier"
 
-#: src/stored/parse_bsr.c:815
-#, c-format
-msgid "Client      : %s\n"
-msgstr ""
+#~ msgid "Restore"
+#~ msgstr "Restaurer"
 
-#: src/stored/parse_bsr.c:823
-#, c-format
-msgid "Job          : %s\n"
-msgstr ""
+#~ msgid "Admin"
+#~ msgstr "Admin"
 
-#: src/stored/parse_bsr.c:831
-#, c-format
-msgid "SessTime    : %u\n"
-msgstr ""
+#~ msgid "Archive"
+#~ msgstr "Archiver"
 
-#: src/stored/parse_bsr.c:842
-msgid "BSR is NULL\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Job Copy"
+#~ msgstr "Copier"
 
-#: src/stored/parse_bsr.c:846
-#, c-format
-msgid "Next        : 0x%x\n"
-msgstr ""
+#~ msgid "Copy"
+#~ msgstr "Copier"
 
-#: src/stored/parse_bsr.c:847
-#, c-format
-msgid "Root bsr    : 0x%x\n"
-msgstr ""
+#~ msgid "Migrate"
+#~ msgstr "Migrer"
 
-#: src/stored/parse_bsr.c:859
-#, c-format
-msgid "count       : %u\n"
-msgstr ""
+#~ msgid "Base"
+#~ msgstr "Base"
 
-#: src/stored/parse_bsr.c:860
-#, c-format
-msgid "found       : %u\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Disabled"
+#~ msgstr "est bloqué"
 
-#: src/stored/parse_bsr.c:863
-#, c-format
-msgid "done        : %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Recycle"
+#~ msgstr "RecyclePool"
 
-#: src/stored/parse_bsr.c:864
-#, c-format
-msgid "positioning : %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Invalid volume status"
+#~ msgstr "Nom de Volume invalide : %s\n"
 
-#: src/stored/parse_bsr.c:865
-#, c-format
-msgid "fast_reject : %d\n"
-msgstr ""
+#~ msgid "everything ok"
+#~ msgstr "tout est ok"
 
-#: src/stored/ansi_label.c:96
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
-msgstr ""
+#~ msgid "incomplete hexadecimal value"
+#~ msgstr "valeur hexadécimale incomplète"
 
-#: src/stored/ansi_label.c:106
-msgid "Insane! End of tape while reading ANSI label.\n"
-msgstr ""
+#~ msgid "invalid hexadecimal value"
+#~ msgstr "valeur hexadécimale invalide"
 
-#: src/stored/ansi_label.c:132
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
-msgstr ""
+#~ msgid "octal value too large"
+#~ msgstr "valeur octal trop grande"
 
-#: src/stored/ansi_label.c:155
-#, c-format
-msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
-msgstr ""
+#~ msgid "invalid octal value"
+#~ msgstr "valeur octal invalide"
 
-#: src/stored/ansi_label.c:166
-msgid "No HDR1 label while reading ANSI label.\n"
-msgstr ""
+#~ msgid "incomplete octal value"
+#~ msgstr "valeur octal incomplète"
 
-#: src/stored/ansi_label.c:172
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
-msgstr ""
+#~ msgid "out of memory"
+#~ msgstr "plus de mémoire"
 
-#: src/stored/ansi_label.c:184
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
-msgstr ""
+#~ msgid "undefined variable"
+#~ msgstr "variable non définie"
 
-#: src/stored/ansi_label.c:199
-msgid "Unknown or bad ANSI/IBM label record.\n"
-msgstr ""
+#~ msgid "input is neither text nor variable"
+#~ msgstr "l'entrée n'est ni du texte ni une variable"
 
-#: src/stored/ansi_label.c:207
-msgid "Too many records in while reading ANSI/IBM label.\n"
-msgstr ""
+#~ msgid "invalid argument"
+#~ msgstr "argument invalide"
 
-#: src/stored/ansi_label.c:307
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
-msgstr ""
+#~ msgid "undefined operation"
+#~ msgstr "opération indéfinie"
 
-#: src/stored/ansi_label.c:333
-#, fuzzy, c-format
-msgid "Could not write ANSI VOL1 label. Wanted size=%d got=%d ERR=%s\n"
-msgstr "Impossible de créer le fichier d'état : %s ERR=%s\n"
+#~ msgid "unknown error"
+#~ msgstr "erreur inconnue"
 
-#: src/stored/ansi_label.c:371 src/stored/ansi_label.c:400
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
-msgstr ""
+#~ 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/ansi_label.c:376 src/stored/ansi_label.c:407
-msgid "Could not write ANSI HDR1 label.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
+#~ "  %s device=%s\n"
+#~ msgstr ""
+#~ "Changement du Device de lecture. Want Media Type=\"%s\" have=\"%s\"\n"
+#~ "  device=%s\n"
 
-#: src/stored/ansi_label.c:412
-#, c-format
-msgid "Error writing EOF to tape. ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "Job %s canceled.\n"
+#~ msgstr "Le job %s est annulé.\n"
 
-#: src/stored/ansi_label.c:417
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Read open %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Impossible de supprimer le volume \"%s\". ERR=%s"
 
-#: src/stored/append.c:68
-msgid "DCR is NULL!!!\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Ready to read from volume \"%s\" on %s device %s.\n"
+#~ msgstr "Prêt à lire les données du volume \"%s\" depuis le device %s.\n"
 
-#: src/stored/append.c:73
-msgid "DEVICE is NULL!!!\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not ready %s device %s for append.\n"
+#~ msgstr "Impossible d'ouvrir le device %s\n"
 
-#: src/stored/append.c:83
-msgid "Unable to set network buffer size.\n"
-msgstr ""
+#~ 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/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 ""
+#~ msgid "Alert: %s"
+#~ msgstr "Alert: %s"
 
-#: 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"
+#, fuzzy
+#~ msgid "Could not write ANSI VOL1 label. Wanted size=%d got=%d ERR=%s\n"
+#~ msgstr "Impossible de créer le fichier d'état : %s ERR=%s\n"
 
-#: src/stored/append.c:122
-#, c-format
-msgid "Network send error to FD. ERR=%s\n"
-msgstr ""
+#~ msgid "Write session label failed. ERR=%s\n"
+#~ msgstr "Impossible d'écrire le label de session. ERR=%s\n"
 
-#: src/stored/append.c:159
-#, c-format
-msgid "Error reading data header from FD. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error reading data header from FD. n=%d msglen=%d ERR=%s\n"
+#~ msgstr ""
+#~ "Erreur pendant l'écriture des données vers le fichier de spool. ERR=%s\n"
 
-#: src/stored/append.c:167
-#, c-format
-msgid "Malformed data header from FD: %s\n"
-msgstr ""
+#, fuzzy
+#~ 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:187
-#, c-format
-msgid "FI=%d from FD not positive or sequential=%d\n"
-msgstr ""
+#, fuzzy
+#~ 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: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"
+#, fuzzy
+#~ 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: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"
+#~ msgid "Error getting Volume info: %s"
+#~ msgstr "Erreur pendant la récupération des informations sur un Volume : %s"
 
-#: 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 ""
+#~ 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/append.c:279 src/stored/mac.c:128
-msgid "Set ok=FALSE after write_block_to_device.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Job %s is waiting. Cannot find any appendable volumes.\n"
+#~ "Please use the \"label\" command to create a new Volume for:\n"
+#~ "    Storage:      %s\n"
+#~ "    Pool:         %s\n"
+#~ "    Media type:   %s\n"
+#~ msgstr ""
+#~ "Le Job %s est en attente. Bacula n'a pas pu trouver de media disponible.\n"
+#~ "Merci de créer un nouveau volume via la commande « label » pour :\n"
+#~ "    Storage :       %s\n"
+#~ "    Type du Media : %s\n"
+#~ "    Pool :          %s\n"
 
-#: 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"
+#~ 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/append.c:345
-#, c-format
-msgid "Error updating file attributes. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "%sPlease 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 ""
+#~ "Le Job %s est en attente. Bacula n'a pas pu trouver de media disponible.\n"
+#~ "Merci de créer un nouveau volume via la commande « label » pour :\n"
+#~ "    Storage :       %s\n"
+#~ "    Type du Media : %s\n"
+#~ "    Pool :          %s\n"
 
-#: src/stored/vol_mgr.c:93
-#, fuzzy, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
-msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
+#, fuzzy
+#~ msgid ""
+#~ "%sPlease mount read Volume \"%s\" for:\n"
+#~ "    Job:          %s\n"
+#~ "    Storage:      %s\n"
+#~ "    Pool:         %s\n"
+#~ "    Media type:   %s\n"
+#~ msgstr ""
+#~ "Le Job %s est en attente. Bacula n'a pas pu trouver de media disponible.\n"
+#~ "Merci de créer un nouveau volume via la commande « label » pour :\n"
+#~ "    Storage :       %s\n"
+#~ "    Type du Media : %s\n"
+#~ "    Pool :          %s\n"
 
-#: src/stored/label.c:93
-#, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Connection from unknown Director %s at %s rejected.\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Connexion d'un Director inconnu %s à %s rejeté.\n"
+#~ "\n"
 
-#: src/stored/label.c:110 src/stored/label.c:202
-#, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Incorrect password given by Director.\n"
+#~ "Please see "
+#~ msgstr "Password incorrect donné par le Director à %s.\n"
 
-#: src/stored/label.c:113 src/stored/label.c:190
-#, c-format
-msgid "Too many tries: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
+#~ msgstr "Négociation TLS échouée avec le SD « %s:%d ».\n"
 
-#: src/stored/label.c:130
-#, c-format
-msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
+#~ msgstr "Négociation TLS échouée avec le FD  « %s:%d ».\n"
 
-#: src/stored/label.c:135
-msgid "Could not read Volume label from block.\n"
-msgstr "Impossible de lire le label du Volume depuis le média.\n"
+#, fuzzy
+#~ 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/label.c:138
-#, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
-msgstr ""
+#~ 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/label.c:143
-#, c-format
-msgid "Volume Header Id bad: %s\n"
-msgstr ""
+#~ 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/label.c:175
-#, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
-msgstr ""
+#~ msgid ""
+#~ "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
+#~ "Results=%s\n"
+#~ msgstr ""
+#~ "3992 Erreur sur l'autochangeur « load slot %d, drive %d » : ERR=%s.\n"
+#~ "Resultat=%s\n"
 
-#: src/stored/label.c:186
-#, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
-msgstr "Le volume sur %s possède un mauvais label Bacula : %x\n"
+#~ msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
+#~ msgstr "3301 Envoi de la commande « loaded? drive %d » à l'autochangeur.\n"
 
-#: 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"
+#~ 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/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"
+#~ msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
+#~ msgstr "3302 Autochangeur « loaded drive %d », résultat : lecteur vide.\n"
 
-#: 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"
+#~ msgid ""
+#~ "3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
+#~ "Results=%s\n"
+#~ msgstr ""
+#~ "3991 Erreur sur l'autochangeur « loaded drive %d » : ERR=%s.\n"
+#~ "Resultat=%s\n"
 
-#: src/stored/label.c:451
-#, c-format
-msgid "Rewind error on device %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Lock failure on autochanger. ERR=%s\n"
+#~ msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: src/stored/label.c:458
-#, c-format
-msgid "Truncate error on device %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unlock failure on autochanger. ERR=%s\n"
+#~ msgstr "rwl_writeunlock en échec sur %s:%d :. ERR=%s\n"
 
-#: 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"
+#~ 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/label.c:487
-#, c-format
-msgid "Unable to write device %s: ERR=%s\n"
-msgstr ""
+#~ msgid ""
+#~ "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
+#~ "Results=%s\n"
+#~ msgstr ""
+#~ "3995 Erreur sur l'autochangeur « unload slot %d, drive %d » : ERR=%s.\n"
+#~ "Resultat=%s\n"
 
-#: 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"
+#, fuzzy
+#~ 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/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"
+#, fuzzy
+#~ 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/label.c:721
-#, fuzzy, c-format
-msgid "Bad Volume session label = %d\n"
-msgstr "Le Volume n'a pas de label.\n"
+#~ msgid "3993 Device %s not an autochanger device.\n"
+#~ msgstr "3993 Le Device %s n'est pas un autochangeur.\n"
 
-#: src/stored/label.c:776
-#, c-format
-msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
-msgstr ""
+#~ msgid "3306 Issuing autochanger \"%s\" command.\n"
+#~ msgstr "3306 Envoi de la commande \"%s\" à l'autochangeur.\n"
 
-#: src/stored/label.c:903
-#, c-format
-msgid "Unknown %d"
-msgstr ""
-
-#: src/stored/label.c:907
-#, c-format
-msgid ""
-"\n"
-"Volume Label:\n"
-"Id                : %sVerNo             : %d\n"
-"VolName           : %s\n"
-"PrevVolName       : %s\n"
-"VolFile           : %d\n"
-"LabelType         : %s\n"
-"LabelSize         : %d\n"
-"PoolName          : %s\n"
-"MediaType         : %s\n"
-"PoolType          : %s\n"
-"HostName          : %s\n"
-msgstr ""
-
-#: src/stored/label.c:929
-#, c-format
-msgid "Date label written: %s\n"
-msgstr ""
-
-#: src/stored/label.c:935
-#, c-format
-msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:955
-#, c-format
-msgid ""
-"\n"
-"%s Record:\n"
-"JobId             : %d\n"
-"VerNum            : %d\n"
-"PoolName          : %s\n"
-"PoolType          : %s\n"
-"JobName           : %s\n"
-"ClientName        : %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
+#~ "       -b bootstrap      specify a bootstrap file\n"
+#~ "       -c <file>         specify a Storage configuration file\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -i                specify input Volume names (separated by |)\n"
+#~ "       -o                specify output Volume names (separated by |)\n"
+#~ "       -p                proceed inspite of errors\n"
+#~ "       -v                verbose\n"
+#~ "       -w <dir>          specify working directory (default /tmp)\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -dnn           positionne le niveau de debug à nn\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -r <job>       lance <job> maintenant\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/stored/label.c:968
-#, c-format
-msgid ""
-"Job (unique name) : %s\n"
-"FileSet           : %s\n"
-"JobType           : %c\n"
-"JobLevel          : %c\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bextract <options> <bacula-archive-device-name> <directory-to-"
+#~ "store-files>\n"
+#~ "       -b <file>       specify a bootstrap file\n"
+#~ "       -c <file>       specify a Storage configuration file\n"
+#~ "       -d <nn>         set debug level to <nn>\n"
+#~ "       -dt             print timestamp in debug output\n"
+#~ "       -e <file>       exclude list\n"
+#~ "       -i <file>       include list\n"
+#~ "       -p              proceed inspite of I/O errors\n"
+#~ "       -v              verbose\n"
+#~ "       -V <volumes>    specify Volume names (separated by |)\n"
+#~ "       -?              print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Copyright (C) 2000-2005 Kern Sibbald.\n"
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -dnn           positionne le niveau de debug à nn\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -r <job>       lance <job> maintenant\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/stored/label.c:977
-#, c-format
-msgid ""
-"JobFiles          : %s\n"
-"JobBytes          : %s\n"
-"StartBlock        : %s\n"
-"EndBlock          : %s\n"
-"StartFile         : %s\n"
-"EndFile           : %s\n"
-"JobErrors         : %s\n"
-"JobStatus         : %c\n"
-msgstr ""
+#~ msgid "%s must be a directory.\n"
+#~ msgstr "%s doit être un répertoire.\n"
 
-#: src/stored/label.c:998
-#, c-format
-msgid "Date written      : %s\n"
-msgstr ""
+#~ msgid "%u files restored.\n"
+#~ msgstr "%u fichiers restaurés.\n"
 
-#: src/stored/label.c:1003
-#, c-format
-msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "%s was deleted.\n"
+#~ msgstr "Pas de job sélectionné.\n"
 
-#: src/stored/label.c:1022
-msgid "Fresh Volume"
-msgstr ""
+#~ msgid "Uncompression error. ERR=%d\n"
+#~ msgstr "Erreur de décompression. ERR=%d\n"
 
-#: src/stored/label.c:1025
-msgid "Volume"
-msgstr ""
+#, fuzzy
+#~ msgid "LZO uncompression error. ERR=%d\n"
+#~ msgstr "Erreur de décompression. ERR=%d\n"
 
-#: src/stored/label.c:1034 src/stored/read_record.c:428
-msgid "End of Media"
-msgstr ""
+#, fuzzy
+#~ 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/label.c:1037
-msgid "End of Tape"
-msgstr ""
+#~ msgid "Unable to write EOF. ERR=%s\n"
+#~ msgstr "Impossible d'écrire le marqueur EOF. ERR=%s\n"
 
-#: 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 ""
+#~ 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/label.c:1062
-msgid "End of physical tape.\n"
-msgstr ""
+#~ 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/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 ""
+#, fuzzy
+#~ msgid "Job failed or canceled.\n"
+#~ msgstr "Le job %d est annulé.\n"
 
-#: src/stored/label.c:1079
-#, c-format
-msgid "   Job=%s Date=%s Level=%c Type=%c\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Read zero bytes Vol=%s at %lld on device %s.\n"
+#~ msgstr "Prêt à lire les données du volume \"%s\" depuis le device %s.\n"
 
-#: src/stored/label.c:1088
-#, c-format
-msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "User defined maximum volume size %s will be exceeded on device %s.\n"
+#~ "   Marking Volume \"%s\" as Full.\n"
+#~ msgstr ""
+#~ "Nombre maximum de job sur le volume atteind. Marquage du volume \"%s\" "
+#~ "comme Used.\n"
 
-#: src/stored/status.c:99
-msgid "Used Volume status:\n"
-msgstr "Volume en cours d'utilisation :\n"
+#~ 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/status.c:117
-msgid ""
-"\n"
-"SD Resources:\n"
-msgstr ""
+#~ msgid "Re-read of last block succeeded.\n"
+#~ msgstr "La re-lecture du dernier bloc écrit a réussi.\n"
 
-#: src/stored/status.c:153
-msgid ""
-"\n"
-"Device status:\n"
-msgstr ""
-"\n"
-"Statut du Device :\n"
+#, fuzzy
+#~ msgid "Error sending Volume info to Director.\n"
+#~ msgstr "Erreur pendant la récupération des informations sur un Volume : %s"
 
-#: src/stored/status.c:157
-#, c-format
-msgid "Autochanger \"%s\" with devices:\n"
-msgstr "Autochangeur \"%s\" avec les Devices :\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bls [options] <device-name>\n"
+#~ "       -b <file>       specify a bootstrap file\n"
+#~ "       -c <file>       specify a Storage configuration file\n"
+#~ "       -d <nn>         set debug level to <nn>\n"
+#~ "       -dt             print timestamp in debug output\n"
+#~ "       -e <file>       exclude list\n"
+#~ "       -i <file>       include list\n"
+#~ "       -j              list jobs\n"
+#~ "       -k              list blocks\n"
+#~ "    (no j or k option) list saved files\n"
+#~ "       -L              dump label\n"
+#~ "       -p              proceed inspite of errors\n"
+#~ "       -v              be verbose\n"
+#~ "       -V              specify Volume names (separated by |)\n"
+#~ "       -?              print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Copyright (C) 2000-2005 Kern Sibbald.\n"
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -dnn           positionne le niveau de debug à nn\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -r <job>       lance <job> maintenant\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/stored/status.c:177
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Device %s is %s:\n"
-"    Volume:      %s\n"
-"    Pool:        %s\n"
-"    Media type:  %s\n"
-msgstr ""
-"Le Device %s est monté avec :\n"
-"    Volume :        %s\n"
-"    Pool :          %s\n"
-"    Type du Media : %s\n"
+#~ msgid "Block: %d size=%d\n"
+#~ msgstr "Bloc : %d taille=%d\n"
 
-#: src/stored/status.c:182
 #, fuzzy
-msgid "waiting for"
-msgstr "En attente d'un montage"
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bscan [ options ] <bacula-archive>\n"
+#~ "       -b bootstrap      specify a bootstrap file\n"
+#~ "       -c <file>         specify configuration file\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -m                update media info in database\n"
+#~ "       -D <driver name>  specify the driver database name (default NULL)\n"
+#~ "       -n <name>         specify the database name (default bacula)\n"
+#~ "       -u <user>         specify database user name (default bacula)\n"
+#~ "       -P <password>     specify database password (default none)\n"
+#~ "       -h <host>         specify database host (default NULL)\n"
+#~ "       -t <port>         specify database port (default 0)\n"
+#~ "       -p                proceed inspite of I/O errors\n"
+#~ "       -r                list records\n"
+#~ "       -s                synchronize or store in database\n"
+#~ "       -S                show scan progress periodically\n"
+#~ "       -v                verbose\n"
+#~ "       -V <Volumes>      specify Volume names (separated by |)\n"
+#~ "       -w <dir>          specify working directory (default from conf "
+#~ "file)\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Copyright (C) 2000-2005 Kern Sibbald.\n"
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -dnn           positionne le niveau de debug à nn\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -r <job>       lance <job> maintenant\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/stored/status.c:182
-msgid "mounted with"
-msgstr ""
+#, fuzzy
+#~ msgid "First Volume Size = %s\n"
+#~ msgstr "Le nombre courant de fichier sur le Volume est : %u\n"
 
-#: src/stored/status.c:184
 #, fuzzy
-msgid "*unknown*"
-msgstr "inconnu"
+#~ msgid "Could not get Client record. ERR=%s\n"
+#~ msgstr "Impossible d'initialiser la queue cliente : ERR=%s\n"
 
-#: 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"
+#~ msgid "Enter Volume Name: "
+#~ msgstr "Saisissez un nom de Volume : "
 
-#: 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"
+#~ msgid "Device open failed. ERR=%s\n"
+#~ msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: 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"
+#~ msgid "Volume has no label.\n"
+#~ msgstr "Le Volume n'a pas de label.\n"
 
-#: src/stored/status.c:220
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
-msgstr "    Positionné sur Fichier=%s Bloc=%s\n"
+#, fuzzy
+#~ msgid "Volume type error: ERR=%s\n"
+#~ msgstr "erreur de fermeture : ERR=%s\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"
+#~ msgid "Status:\n"
+#~ msgstr "Statut :\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"
+#~ msgid "Do you want to continue? (y/n): "
+#~ msgstr "Voulez vous continuer ? (y/n) : "
 
-#: 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"
+#~ msgid "Command aborted.\n"
+#~ msgstr "Commande annulée.\n"
 
-#: src/stored/status.c:293
-msgid ""
-"No DEVICE structure.\n"
-"\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Error writing record to block.\n"
+#~ msgstr "Erreur pendant l'écriture du fichier bsr.\n"
 
-#: src/stored/status.c:299
-msgid "    Device is BLOCKED. User unmounted.\n"
-msgstr "    Le Device est BLOQUÉ. Démonté par l'utilisateur.\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Error writing block to device.\n"
+#~ msgstr "Erreur pendant l'écriture du fichier bsr.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Wrote %d blocks of %d bytes.\n"
+#~ msgstr "Ecriture de 1000 blocs de %d octets.\n"
 
-#: src/stored/status.c:313
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting for mount of volume \"%s\",\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-"    Le Device est BLOQUÉ en attente du montage du volume \"%s\",\n"
-"        Pool :       %s\n"
-"        Media type : %s\n"
+#, fuzzy
+#~ msgid "%d blocks re-read correctly.\n"
+#~ msgstr "1000 blocs relus correctement.\n"
 
-#: src/stored/status.c:322
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting to create a volume for:\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-"    Le Device est BLOQUÉ en attente de création d'un volume :\n"
-"        Pool :       %s\n"
-"        Media type : %s\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "This command simulates Bacula writing to a tape.\n"
+#~ "It requires either one or two blank tapes, which it\n"
+#~ "will label and write.\n"
+#~ "\n"
+#~ "If you have an autochanger configured, it will use\n"
+#~ "the tapes that are in slots 1 and 2, otherwise, you will\n"
+#~ "be prompted to insert the tapes when necessary.\n"
+#~ "\n"
+#~ "It will print a status approximately\n"
+#~ "every 322 MB, and write an EOF every %s.  If you have\n"
+#~ "selected the simple test option, after writing the first tape\n"
+#~ "it will rewind it and re-read the last block written.\n"
+#~ "\n"
+#~ "If you have selected the multiple tape test, when the first tape\n"
+#~ "fills, it will ask for a second, and after writing a few more \n"
+#~ "blocks, it will stop.  Then it will begin re-reading the\n"
+#~ "two tapes.\n"
+#~ "\n"
+#~ "This may take a long time -- hours! ...\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Cette commande simule l'écriture d'une bande par Bacula.\n"
+#~ "Ce test requiert une ou deux bandes vierges qui vont être\n"
+#~ "labélisées et écrites.\n"
+#~ "\n"
+#~ "Si vous avez configuré un autochangeur, il utilisera les bandes\n"
+#~ "des slots 1 et 2, sinon, le programme vous demandera d'insérer\n"
+#~ "les bandes quand cela sera nécessaire.\n"
+#~ "\n"
+#~ "L'état d'avancement sera affiché tous les 322 Mo, et un EOF sera \n"
+#~ "écrit tous les 3,2 Go. Si vous avez choisi le test simple, après avoir\n"
+#~ "rempli la bande, elle sera rembobinée et le dernier bloc écrit sera\n"
+#~ "relu.\n"
+#~ "\n"
+#~ "Si vous avez choisi le test multi-bande, quand la première bande sera\n"
+#~ "remplie vous devrez insérer la nouvelle et après l'écriture de quelques\n"
+#~ "blocs les deux bandes seront relues.\n"
+#~ "\n"
+#~ "Ce test peut durer longtemps (voir des heures).\n"
 
-#: 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"
+#~ msgid ""
+#~ "Do you want to run the simplified test (s) with one tape\n"
+#~ "or the complete multiple tape (m) test: (s/m) "
+#~ 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/status.c:339
-msgid "    Device is being initialized.\n"
-msgstr "    Le Device est en cours d'initialisation.\n"
+#~ msgid "Simple test (single tape) selected.\n"
+#~ msgstr "Sélection du test simplifié (utilisant une seule bande).\n"
 
-#: src/stored/status.c:343
-msgid "    Device is blocked labeling a Volume.\n"
-msgstr "    Le Device est occupé à labéliser un Volume.\n"
+#~ msgid "Multiple tape test selected.\n"
+#~ msgstr "Sélection du test multiple.\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"
+#~ msgid "Wrote Start of Session label.\n"
+#~ msgstr "Écriture du label de début de session.\n"
 
-#: src/stored/status.c:356
-#, c-format
-msgid "    Drive %d is not loaded.\n"
-msgstr "    Le lecteur %d n'est pas chargé.\n"
+#, fuzzy
+#~ msgid "Flush block failed.\n"
+#~ msgstr "Flush de %s blocs, écriture de EOF\n"
 
-#: src/stored/status.c:371 src/stored/btape.c:688
-#, c-format
-msgid "Configured device capabilities:\n"
-msgstr ""
+#, fuzzy
+#~ 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/status.c:389
-msgid "Device state:\n"
-msgstr ""
+#~ msgid "%s Flush block, write EOF\n"
+#~ msgstr "Flush de %s blocs, écriture de EOF\n"
 
-#: src/stored/status.c:405
-#, c-format
-msgid "  num_writers=%d reserves=%d block=%d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Wrote 1000 blocks on second tape. Done.\n"
+#~ msgstr "Ecriture de 1000 blocs de %d octets.\n"
 
-#: src/stored/status.c:409
 #, fuzzy
-msgid "Attached Jobs: "
-msgstr ""
-"\n"
-"Jobs planifiés :\n"
+#~ msgid "Job canceled.\n"
+#~ msgstr "Le job %s est annulé.\n"
 
-#: src/stored/status.c:427 src/stored/btape.c:720
-#, c-format
-msgid "Device parameters:\n"
-msgstr ""
+#~ msgid "Wrote End of Session label.\n"
+#~ msgstr "Écriture du label de fin de session.\n"
 
-#: src/stored/status.c:429
-#, c-format
-msgid "  Archive name: %s Device name: %s\n"
-msgstr ""
+#~ 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/status.c:432
-#, fuzzy, c-format
-msgid "  File=%u block=%u\n"
-msgstr "Fichier=%u bloc=%u\n"
+#~ 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/status.c:434
-#, fuzzy, c-format
-msgid "  Min block=%u Max block=%u\n"
-msgstr "Min bloc=%u Max bloc=%u\n"
+#, fuzzy
+#~ msgid "do_unfill failed.\n"
+#~ msgstr "Job échoué.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "%s: Error during test.\n"
+#~ msgstr "Erreur pendant l'envoi de la liste d'inclusion.\n"
 
-#: src/stored/status.c:471
-#, c-format
-msgid ""
-"Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
-"    pool=\"%s\" device=%s\n"
-msgstr ""
-"Lecture : %s %s job %s JobId=%d Volume=\"%s\"\n"
-"   pool=\"%s\" device=%s\n"
+#~ msgid ""
+#~ "\n"
+#~ "Could not find the state file: %s ERR=%s\n"
+#~ "You must redo the fill command.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Impossible de trouver le fichier d'état : %s ERR=%s\n"
+#~ "Vous devez relancer la commande « fill ».\n"
 
-#: src/stored/status.c:484
-#, fuzzy, c-format
-msgid ""
-"Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
-"    pool=\"%s\" device=%s\n"
-msgstr ""
-"Ecriture : %s %s job %s JobId=%d Volume=\"%s\"\n"
-"   pool=\"%s\" device=%s\n"
+#~ msgid "Mount first tape. Press enter when ready: "
+#~ msgstr "Chargez la première bande et appuyez sur « Entrée » : "
 
-#: 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"
+#~ msgid "Rewinding.\n"
+#~ msgstr "Rembobinage.\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"
+#~ msgid "Reading the first 10000 records from %u:%u.\n"
+#~ msgstr "Lecture des 10000 premiers enregistrements depuis %u:%u.\n"
 
-#: src/stored/status.c:523
-#, c-format
-msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
-msgstr ""
+#~ msgid "Reposition from %u:%u to %u:%u\n"
+#~ msgstr "Re-positionnement de %u:%u à %u:%u\n"
 
-#: src/stored/status.c:529
-msgid "    FDSocket closed\n"
-msgstr ""
+#~ msgid "Reposition error. ERR=%s\n"
+#~ msgstr "Erreur pendant le re-positionnement. ERR=%s\n"
 
-#: src/stored/status.c:550
-msgid ""
-"\n"
-"Jobs waiting to reserve a drive:\n"
-msgstr ""
-"\n"
-"Jobs en attente de réservation de lecteur :\n"
+#~ msgid "Reading block %u.\n"
+#~ msgstr "Lecture du bloc %u.\n"
 
-#: src/stored/status.c:581
-msgid "===================================================================\n"
-msgstr "===================================================================\n"
+#~ msgid "Mount second tape. Press enter when ready: "
+#~ msgstr "Chargez une deuxième bande et appuyez sur « Entrée » : "
 
-#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
-msgid "Base"
-msgstr "Base"
+#~ msgid "Reposition from %u:%u to 0:1\n"
+#~ msgstr "Re-positionnement de %u:%u à 0:1\n"
 
-#: src/stored/status.c:680 src/filed/status.c:534
-msgid "Init Catalog"
-msgstr ""
+#~ msgid "Reading block %d.\n"
+#~ msgstr "Lecture du bloc %d.\n"
 
-#: src/stored/status.c:683 src/filed/status.c:537
-msgid "Volume to Catalog"
-msgstr ""
+#~ msgid "10000 records read now at %d:%d\n"
+#~ msgstr "10000 enregistrements lus maintenant à %d:%d\n"
 
-#: src/stored/status.c:686 src/filed/status.c:540
-msgid "Disk to Catalog"
-msgstr ""
+#~ msgid "Last block written"
+#~ msgstr "Dernier bloc écrit"
 
-#: src/stored/status.c:689 src/filed/status.c:543
-msgid "Data"
-msgstr ""
+#~ msgid "Block not written"
+#~ msgstr "Bloc non écrit"
 
-#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
-msgid "Unknown Job Level"
-msgstr ""
+#, fuzzy
+#~ 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/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"
+#~ msgid "print this command"
+#~ msgstr "affiche cette commande"
 
-#: src/stored/status.c:811
-#, fuzzy, c-format
-msgid "3900 Unknown arg in .status command: %s\n"
-msgstr "Erreur inconnue."
+#~ msgid "rewind the tape"
+#~ msgstr "rembobine la bande"
 
-#: src/stored/status.c:826
-msgid "Bacula Storage: Idle"
-msgstr "Bacula Storage : En attente"
+#~ 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/status.c:837
-msgid "Bacula Storage: Running"
-msgstr "Bacula Storage : En cours"
+#~ msgid "General test Bacula tape functions"
+#~ msgstr "test général des fonctions Bacula sur un lecteur de bande"
 
-#: src/stored/status.c:851
-msgid "Bacula Storage: Last Job Canceled"
-msgstr "Bacula Storage : Dernier Job annulé"
+#~ msgid "write an EOF on the tape"
+#~ msgstr "écrit un EOF sur la bande"
 
-#: src/stored/status.c:855
-msgid "Bacula Storage: Last Job Failed"
-msgstr "Bacula Storage : Dernier Job en erreur"
+#~ msgid "write a single Bacula block"
+#~ msgstr "écrit un seul bloc bacula"
 
-#: src/stored/status.c:859
-msgid "Bacula Storage: Last Job had Warnings"
-msgstr "Bacula Storage : Le dernier Job avait des erreurs"
+#~ msgid "read a single record"
+#~ msgstr "lit un seul enregistrement"
 
-#: src/stored/read_record.c:89
-#, c-format
-msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
-msgstr "Fin de Volume au fichier %u sur le Device %s, Volume \"%s\"\n"
+#~ msgid "read a single Bacula block"
+#~ msgstr "lit un seul bloc bacula"
 
-#: src/stored/read_record.c:93
-msgid "End of all volumes.\n"
-msgstr "Fin de tous les Volumes.\n"
+#~ msgid "\"%s\" is an invalid command\n"
+#~ msgstr "\"%s\" est une commande invalide.\n"
 
-#: src/stored/read_record.c:137
-msgid "part"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\n"
+#~ "Usage: btape <options> <device_name>\n"
+#~ "       -b <file>   specify bootstrap 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"
+#~ "       -p          proceed inspite of I/O errors\n"
+#~ "       -s          turn off signals\n"
+#~ "       -v          be verbose\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ ") %s %s %s\n"
+#~ "\n"
+#~ "Usage : bconsole [-s] [-c config_file] [-d niveau_debug]\n"
+#~ "       -c <file>   set configuration file to file\n"
+#~ "       -dnn        set debug level to nn\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - lecture de la configuration et sortie\n"
+#~ "\n"
 
-#: src/stored/read_record.c:140
-msgid "file"
-msgstr ""
+#, fuzzy
+#~ msgid "End of Volume \"%s\" %d records.\n"
+#~ msgstr "Le volume \"%s\" existe déjà en base.\n"
 
-#: src/stored/read_record.c:143
-#, c-format
-msgid "End of %s %u on device %s, Volume \"%s\"\n"
-msgstr "Fin de %s %u sur le device %s, Volume \"%s\"\n"
+#, fuzzy
+#~ 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"
 
-#: src/stored/read_record.c:158
-msgid "Did fsr in attemp to skip bad record.\n"
-msgstr ""
+#~ 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/read_record.c:397
-#, c-format
-msgid "Forward spacing Volume \"%s\" to file:block %u:%u.\n"
-msgstr "Postionnement en avant du Volume \"%s\" sur le fichier:bloc %u:%u.\n"
+#, fuzzy
+#~ 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/read_record.c:421
-msgid "Begin Session"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init spool mutex: ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
 
-#: src/stored/read_record.c:425
-msgid "End Session"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init acquire mutex: ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
 
-#: src/stored/read_record.c:431
-#, c-format
-msgid "Unknown code %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init read acquire mutex: ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
 
-#: src/stored/bextract.c:80
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
-"files>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -p              proceed inspite of I/O errors\n"
-"       -v              verbose\n"
-"       -V <volumes>    specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-"Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -dnn           positionne le niveau de debug à nn\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -r <job>       lance <job> maintenant\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
+#, fuzzy
+#~ msgid "Unable to init volcat mutex: ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
 
-#: 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"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init dcrs mutex: ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
 
-#: src/stored/bextract.c:218
-#, c-format
-msgid "%d Program Name and/or Program Data Stream records ignored.\n"
-msgstr ""
+#~ msgid "lseek error on %s. ERR=%s.\n"
+#~ msgstr "erreur de déplacement (lseek) sur %s : ERR=%s\n"
 
-#: src/stored/bextract.c:222
-#, c-format
-msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
-msgstr ""
+#~ msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
+#~ msgstr "Fin de média sur le Volume \"%s\" Octets=%s Blocs=%s à %s.\n"
 
-#: src/stored/bextract.c:249
-#, c-format
-msgid "Cannot stat %s. It must exist. ERR=%s\n"
-msgstr ""
+#~ msgid "New volume \"%s\" mounted on device %s at %s.\n"
+#~ msgstr "Nouveau volume \"%s\" monté sur le device %s à %s.\n"
 
-#: src/stored/bextract.c:253
-#, c-format
-msgid "%s must be a directory.\n"
-msgstr "%s doit être un répertoire.\n"
+#, fuzzy
+#~ msgid "Connection request from %s failed.\n"
+#~ msgstr "Demande de connexion échouée.\n"
 
-#: src/stored/bextract.c:274
-#, c-format
-msgid "%u files restored.\n"
-msgstr "%u fichiers restaurés.\n"
+#, fuzzy
+#~ msgid "Invalid connection from %s. Len=%d\n"
+#~ msgstr "Connexion invalide. Len=%d\n"
 
-#: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1480
-#, c-format
-msgid "Write error on %s: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad client command: %s"
+#~ msgstr "Erreur dans la commande RunScript : %s\n"
 
-#: src/stored/bextract.c:321 src/stored/bextract.c:587
-msgid "Logic error output file should be open but is not.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Client daemon"
+#~ msgstr "Director"
 
-#: src/stored/bextract.c:335 src/filed/restore.c:569
-#, c-format
-msgid "%s stream not supported on this Client.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to connect to Client daemon: %s:%d\n"
+#~ msgstr "Impossible de se connecter au client.\n"
 
-#: src/stored/bextract.c:345
-#, fuzzy, c-format
-msgid "%s was deleted.\n"
-msgstr "Pas de job sélectionné.\n"
+#~ msgid "3904 Job %s not found.\n"
+#~ msgstr "3904 Job %s non trouvé.\n"
 
-#: src/stored/bextract.c:393
-#, c-format
-msgid "Seek error on %s: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
+#~ msgstr "JobId %s, Job %s marqué pour être annulé.\n"
 
-#: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1335
-#, c-format
-msgid "Seek to %s error on %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3910 Unable to open device \"%s\": ERR=%s\n"
+#~ msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/stored/bextract.c:448
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
-msgstr "Erreur de décompression. ERR=%d\n"
+#~ 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/bextract.c:462 src/filed/restore.c:1450
-msgid "GZIP data stream found, but GZIP not configured!\n"
-msgstr ""
+#~ msgid "3921 Wrong volume mounted.\n"
+#~ msgstr "3921 Mauvais volume monté.\n"
 
-#: src/stored/bextract.c:517 src/filed/restore.c:1376
-#, c-format
-msgid "Compressed header version error. version=0x%x\n"
-msgstr ""
+#~ msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
+#~ msgstr "3922 Impossible de re-labéliser un Volume ANSI/IBM.\n"
 
-#: src/stored/bextract.c:522 src/filed/restore.c:1381
-#, c-format
-msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
-msgstr ""
+#~ msgid "3912 Failed to label Volume: ERR=%s\n"
+#~ msgstr "3912 Impossible de labéliser le Volume : ERR=%s\n"
 
-#: src/stored/bextract.c:544
-#, fuzzy, c-format
-msgid "LZO uncompression error. ERR=%d\n"
-msgstr "Erreur de décompression. ERR=%d\n"
+#, fuzzy
+#~ msgid "3915 Failed to label Volume: ERR=%s\n"
+#~ msgstr "3912 Impossible de labéliser le Volume : ERR=%s\n"
 
-#: src/stored/bextract.c:556 src/filed/restore.c:1414
-#, c-format
-msgid "Compression algorithm 0x%x found, but not supported!\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3914 Failed to label Volume (no media): ERR=%s\n"
+#~ msgstr "3912 Impossible de labéliser le Volume : ERR=%s\n"
 
-#: src/stored/bextract.c:578
-msgid "Got Program Name or Data Stream. Ignored.\n"
-msgstr ""
+#~ msgid "3001 Mounted Volume: %s\n"
+#~ msgstr "3001 Volume monté : %s\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid ""
+#~ "3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
+#~ "%s"
+#~ msgstr ""
+#~ "3902 Impossible de monté le volume dans le storage device %s car :\n"
+#~ "%s"
 
-#: src/stored/bcopy.c:74
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify a Storage configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -dnn           positionne le niveau de debug à nn\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -r <job>       lance <job> maintenant\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
+#, fuzzy
+#~ msgid "Specified slot ignored. "
+#~ msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/stored/bcopy.c:202 src/stored/device.c:298 src/stored/btape.c:473
-#, c-format
-msgid "dev open failed: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3901 Unable to open device \"%s\": ERR=%s\n"
+#~ msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/stored/bcopy.c:217
-msgid "Write of last block failed.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
+#~ msgstr "3001 Device %s est monté avec le volume \"%s\"\n"
 
-#: src/stored/bcopy.c:221
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
-msgstr ""
+#, fuzzy
+#~ 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 ""
+#~ "3905 Le device %s est ouvert mais il n'y a pas de volume Bacula monté.\n"
+#~ "Si ce n'est pas une cartouche vierge, essayer de la démonter puis de la "
+#~ "remonter.\n"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "3001 Device \"%s\" is doing acquire.\n"
+#~ msgstr "3902 Le Device %s est occupé en acquisition.\n"
 
-#: src/stored/bcopy.c:254
-msgid "Volume is prelabeled. This volume cannot be copied.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3903 Device \"%s\" is being labeled.\n"
+#~ msgstr "3934 Device %s est en cours d'initialisation.\n"
 
-#: src/stored/bcopy.c:257
-msgid "Volume label not copied.\n"
-msgstr ""
+#, fuzzy
+#~ 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/bcopy.c:263
-msgid "Copy skipped. Record does not match BSR filter.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3002 Device \"%s\" is mounted.\n"
+#~ msgstr "3002 Le device %s est monté.\n"
 
-#: 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 ""
+#~ msgid "3907 %s"
+#~ msgstr "3907 %s"
 
-#: src/stored/bcopy.c:294
-msgid "EOM label not copied.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3906 File device \"%s\" is always mounted.\n"
+#~ msgstr "3906 Le device fichier %s est toujours monté.\n"
 
-#: src/stored/bcopy.c:297
-msgid "EOT label not copied.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3930 Device \"%s\" is being released.\n"
+#~ msgstr "3934 Device %s est en cours d'initialisation.\n"
 
-#: src/stored/dvd.c:111
-msgid "No FreeSpace command defined.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3905 Unknown wait state %d\n"
+#~ msgstr "est dans un état inconnu %c"
 
-#: src/stored/dvd.c:145
-#, fuzzy, c-format
-msgid "Cannot run free space command. Results=%s ERR=%s\n"
-msgstr "Impossible de lancer la commande : %s. ERR=%s\n"
+#~ msgid "3909 Error scanning mount command: %s\n"
+#~ msgstr "3909 Erreur pendant la lecture de la commande de montage : %s\n"
 
-#: src/stored/dvd.c:261
-#, fuzzy, c-format
-msgid "Error writing part %d to the DVD: ERR=%s\n"
-msgstr "Erreur dans l'exécution de la commande : %s. ERR=%s\n"
+#, fuzzy
+#~ msgid "3002 Device \"%s\" unmounted.\n"
+#~ msgstr "3002 Le device %s est démonté.\n"
 
-#: src/stored/dvd.c:263
-#, c-format
-msgid "Error while writing current part to the DVD: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "3901 Device \"%s\" is already unmounted.\n"
+#~ msgstr "3901 Le device %s est déjà démonté.\n"
 
-#: src/stored/dvd.c:273
-#, c-format
-msgid "Part %d (%lld bytes) written to DVD.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3001 Device \"%s\" unmounted.\n"
+#~ msgstr "3001 Le device %s est démonté.\n"
 
-#: src/stored/dvd.c:292
-#, c-format
-msgid "Remaining free space %s on %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3902 Device \"%s\" is busy in acquire.\n"
+#~ msgstr "3902 Le Device %s est occupé en acquisition.\n"
 
-#: src/stored/dvd.c:358
-#, c-format
-msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
-msgstr ""
+#, 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/dvd.c:563
-#, c-format
-msgid ""
-"Error writing. Current part less than total number of parts (%d/%d, device="
-"%s)\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3921 Device \"%s\" already released.\n"
+#~ msgstr "3921 Le Device %s est déjà libéré.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "3922 Device \"%s\" waiting for sysop.\n"
+#~ msgstr "3922 Device %s est en attente d'une intervention sysop.\n"
 
-#: src/stored/butil.c:59
-msgid "Nohdr,"
-msgstr ""
+#, fuzzy
+#~ msgid "3922 Device \"%s\" waiting for mount.\n"
+#~ msgstr "3922 Le Device %s est en atttente d'un montage.\n"
 
-#: src/stored/butil.c:62
-msgid "partial,"
-msgstr ""
+#, fuzzy
+#~ msgid "3923 Device \"%s\" is busy in acquire.\n"
+#~ msgstr "3902 Le Device %s est occupé en acquisition.\n"
 
-#: src/stored/butil.c:65
-msgid "empty,"
-msgstr ""
+#, fuzzy
+#~ msgid "3914 Device \"%s\" is being labeled.\n"
+#~ msgstr "3934 Device %s est en cours d'initialisation.\n"
 
-#: src/stored/butil.c:68
-msgid "Nomatch,"
-msgstr ""
+#, fuzzy
+#~ msgid "3022 Device \"%s\" released.\n"
+#~ msgstr "3022 Le device %s est libéré.\n"
 
-#: src/stored/butil.c:71
-msgid "cont,"
-msgstr ""
+#~ msgid "Could not create bootstrap file %s: ERR=%s\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/stored/butil.c:148
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3998 Device \"%s\" is not an autochanger.\n"
+#~ msgstr "3995 Le Device %s n'est pas un autochangeur.\n"
 
-#: src/stored/butil.c:168
-#, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
-msgstr ""
+#, fuzzy
+#~ 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/butil.c:175
-#, c-format
-msgid "Cannot init device %s\n"
-msgstr ""
+#~ msgid "3001 Volume=%s Slot=%d\n"
+#~ msgstr "3001 Volume=%s Slot=%d\n"
 
-#: src/stored/butil.c:195
-#, c-format
-msgid "Cannot open %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
+#~ msgstr "3931 Device %s est BLOQUÉ, démonté par l'utilisateur.\n"
 
-#: src/stored/butil.c:282
-#, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/"
+#~ "mount.\n"
+#~ msgstr ""
+#~ "3932 Device %s est BLOQUÉ, démonté par l'utilisateur alors que bacula "
+#~ "était en attente d'un média.\n"
 
-#: src/stored/butil.c:287
-#, c-format
-msgid "Using device: \"%s\" for reading.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
+#~ msgstr "3933 Device %s est bloqué en attente d'un media.\n"
 
-#: src/stored/butil.c:290
-#, c-format
-msgid "Using device: \"%s\" for writing.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3934 Device \"%s\" is being initialized.\n"
+#~ msgstr "3934 Device %s est en cours d'initialisation.\n"
 
-#: src/stored/butil.c:306
-msgid "Unexpected End of Data\n"
-msgstr ""
+#, fuzzy
+#~ 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/butil.c:308
-msgid "Unexpected End of Tape\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
+#~ msgstr "3935 Device %s est bloqué pour une raison inconnue.\n"
 
-#: src/stored/butil.c:310
-msgid "Unexpected End of File\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3936 Device \"%s\" is busy reading.\n"
+#~ msgstr "3936 Device %s est occupé en lecture.\n"
 
-#: src/stored/butil.c:312
-msgid "Tape Door is Open\n"
-msgstr ""
+#, fuzzy
+#~ 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/butil.c:314
-msgid "Unexpected Tape is Off-line\n"
-msgstr ""
+#, fuzzy
+#~ msgid "FD command not found: %s\n"
+#~ msgstr "Job non trouvé : %s\n"
 
-#: src/stored/acquire.c:74
-#, c-format
-msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not open(%s,%s,0640): ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unable to stat device %s. ERR=%s\n"
+#~ msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/stored/acquire.c:92
-#, c-format
-msgid "Logic error: no next volume to read. Numvol=%d Curvol=%d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not reopen: %s, ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: src/stored/acquire.c:118
-#, c-format
-msgid ""
-"Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
-"  device=%s\n"
-msgstr ""
-"Changement du Device de lecture. Want Media Type=\"%s\" have=\"%s\"\n"
-"  device=%s\n"
+#~ msgid "Device %s cannot be %smounted. ERR=%s\n"
+#~ msgstr "Le Device %s ne peut pas être %smounted. ERR=%s\n"
 
-#: src/stored/acquire.c:162
-#, c-format
-msgid "Media Type change.  New read device %s chosen.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Client socket not open. Could not connect to Client.\n"
+#~ msgstr "Impossible de se connecter au Client.\n"
 
-#: src/stored/acquire.c:174
-#, c-format
-msgid "No suitable device found to read Volume \"%s\"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Recv request to Client failed. ERR=%s\n"
+#~ msgstr "Demande de connexion échouée.\n"
 
-#: src/stored/acquire.c:213
-#, fuzzy, c-format
-msgid "Job %s canceled.\n"
-msgstr "Le job %s est annulé.\n"
+#, fuzzy
+#~ msgid "Bad Hello from Client: %s.\n"
+#~ msgstr "Début de purge des jobs du client \"%s\"\n"
 
-#: src/stored/acquire.c:231
-#, c-format
-msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "FD connect failed: Job name not found: %s\n"
+#~ msgstr "Job non trouvé : %s\n"
 
-#: src/stored/acquire.c:321
-#, c-format
-msgid "Too many errors trying to mount device %s for reading.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Couldn't rewind %s device %s: ERR=%s\n"
+#~ msgstr "Impossible de trouver le userid %s : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Wrong Volume mounted on %s device %s: Wanted %s have %s\n"
+#~ msgstr "Nouveau volume \"%s\" monté sur le device %s à %s.\n"
 
-#: src/stored/acquire.c:381
-#, c-format
-msgid "Want to append, but device %s is busy reading.\n"
-msgstr ""
+#~ msgid "Could not read Volume label from block.\n"
+#~ msgstr "Impossible de lire le label du Volume depuis le média.\n"
 
-#: src/stored/acquire.c:414
-#, c-format
-msgid "Could not ready device %s for append.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Volume on %s device %s has bad Bacula label type: %x\n"
+#~ msgstr "Le volume sur %s possède un mauvais label Bacula : %x\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Could not reserve volume %s on %s device %s\n"
+#~ msgstr "Impossible de trouver le prochain volume pour le Job %s.\n"
 
-#: src/stored/acquire.c:552
-#, c-format
-msgid "Alert: %s"
-msgstr "Alert: %s"
+#, fuzzy
+#~ msgid "Cannot write Volume label to block for %s device %s\n"
+#~ msgstr "Impossible d'écrire le label du Volume sur le Device %s\n"
 
-#: src/stored/acquire.c:560
-#, c-format
-msgid "3997 Bad alert command: %s: ERR=%s.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Open %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Impossible de supprimer le volume \"%s\". ERR=%s"
 
-#: 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"
+#, fuzzy
+#~ msgid "Rewind error on %s device %s: ERR=%s\n"
+#~ msgstr "Erreur de lecture de %s:%s:%d : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Truncate error on %s device %s: ERR=%s\n"
+#~ msgstr "Erreur d'écriture à %u:%u sur le device %s. ERR=%s\n"
 
-#: src/stored/askdir.c:179
-msgid "Network error on bnet_recv in req_vol_info.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to re-open DVD after truncate on %s device %s: ERR=%s\n"
+#~ msgstr ""
+#~ "Impossible de se positionner à la fin du média sur le device %s : ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unable to write %s device %s: ERR=%s\n"
+#~ msgstr "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
 
-#: src/stored/askdir.c:376
-#, c-format
-msgid "Didn't get vol info vol=%s: ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid "Recycled volume \"%s\" on %s 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/askdir.c:432
-#, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Wrote label to prelabeled Volume \"%s\" on %s device %s\n"
+#~ msgstr ""
+#~ "Écriture du label sur le Volume pré-labélisé \"%s\" sur le lecteur %s\n"
 
-#: src/stored/askdir.c:439
-#, c-format
-msgid "Error creating JobMedia record: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad Volume session label request=%d\n"
+#~ msgstr "Le Volume n'a pas de label.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "pthread_cond_wait failure. ERR=%s\n"
+#~ msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: src/stored/askdir.c:533
-#, fuzzy, c-format
-msgid ""
-"Job %s is waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\" command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-"Le Job %s est en attente. Bacula n'a pas pu trouver de media disponible.\n"
-"Merci de créer un nouveau volume via la commande « label » pour :\n"
-"    Storage :       %s\n"
-"    Type du Media : %s\n"
-"    Pool :          %s\n"
+#, fuzzy
+#~ msgid "unknown blocked code"
+#~ msgstr "source inconnue"
 
-#: 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 ""
+#, fuzzy
+#~ msgid "Too many errors trying to mount %s device %s.\n"
+#~ msgstr "Le volume \"%s\" n'est pas dans le device %s.\n"
 
-#: src/stored/askdir.c:568
-msgid "pthread error in mount_next_volume.\n"
-msgstr ""
+#~ msgid "Job %d canceled.\n"
+#~ msgstr "Le job %d est annulé.\n"
 
-#: src/stored/askdir.c:601
-msgid "Cannot request another volume: no volume name given.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Open of %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Impossible de supprimer le volume \"%s\". ERR=%s"
 
-#: 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"
+#~ 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/askdir.c:624
-#, fuzzy, c-format
-msgid ""
-"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 ""
-"Le Job %s est en attente. Bacula n'a pas pu trouver de media disponible.\n"
-"Merci de créer un nouveau volume via la commande « label » pour :\n"
-"    Storage :       %s\n"
-"    Type du Media : %s\n"
-"    Pool :          %s\n"
+#, fuzzy
+#~ msgid "Unable to position to end of data on %s device %s: ERR=%s\n"
+#~ msgstr ""
+#~ "Impossible de se positionner à la fin du média sur le device %s : ERR=%s\n"
 
-#: src/stored/askdir.c:630
-#, fuzzy, c-format
-msgid ""
-"Please mount read Volume \"%s\" for:\n"
-"    Job:          %s\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-"Le Job %s est en attente. Bacula n'a pas pu trouver de media disponible.\n"
-"Merci de créer un nouveau volume via la commande « label » pour :\n"
-"    Storage :       %s\n"
-"    Type du Media : %s\n"
-"    Pool :          %s\n"
-
-#: src/stored/askdir.c:668
-msgid "pthread error in mount_volume\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Volume \"%s\" not on %s device %s.\n"
+#~ msgstr "Le volume \"%s\" n'est pas dans le device %s.\n"
 
-#: src/stored/record.c:75
-#, c-format
-msgid "unknown: %d"
-msgstr ""
+#~ msgid ""
+#~ "Director wanted Volume \"%s\".\n"
+#~ "    Current Volume \"%s\" not acceptable because:\n"
+#~ "    %s"
+#~ msgstr ""
+#~ "Le director voulait utiliser le volume \"%s\".\n"
+#~ "    Le volume courant \"%s\" n'est pas utilisable car :\n"
+#~ "    %s"
 
-#: src/stored/record.c:392
-msgid "Damaged buffer\n"
-msgstr ""
+#~ 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/record.c:670
-#, c-format
-msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
+#~ "Volume=%s Catalog=%s\n"
+#~ msgstr ""
+#~ "Impossible d'écrire sur le volume \"%s\" car :\n"
+#~ "Les tailles ne correspondent pas. Volume=%s Catalogue=%s\n"
 
-#: src/stored/read.c:65
-msgid "No Volume names found for restore.\n"
-msgstr ""
+#~ 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/read.c:120
-#, c-format
-msgid ">filed: Error Hdr=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "For Volume \"%s\":\n"
+#~ "The number of files mismatch! Volume=%u Catalog=%u\n"
+#~ "Correcting Catalog\n"
+#~ msgstr ""
+#~ "Impossible d'écrire sur le volume \"%s\" \n"
+#~ "car le nombre de fichiers ne correspond pas. Volume=%u Catalogue=%u\n"
 
-#: src/stored/read.c:121 src/stored/read.c:136
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error updating Catalog\n"
+#~ msgstr "Impossible d'ouvrir le fichier de données %s.\n"
 
-#: src/stored/read.c:135
-#, c-format
-msgid "Error sending to FD. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Bacula cannot write on tape Volume \"%s\" because:\n"
+#~ "The number of files mismatch! Volume=%u Catalog=%u\n"
+#~ msgstr ""
+#~ "Impossible d'écrire sur le volume \"%s\" \n"
+#~ "car le nombre de fichiers ne correspond pas. Volume=%u Catalogue=%u\n"
 
-#: src/stored/autochanger.c:65
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
-msgstr ""
+#, fuzzy
+#~ 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/autochanger.c:71
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "For Volume \"%s\":\n"
+#~ "   The sizes do not match! Volume=%s Catalog=%s\n"
+#~ "   Correcting Catalog\n"
+#~ msgstr ""
+#~ "Impossible d'écrire sur le volume \"%s\" car :\n"
+#~ "Les tailles ne correspondent pas. Volume=%s Catalogue=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "Bacula cannot write on disk Volume \"%s\" because: The sizes do not "
+#~ "match! Volume=%s Catalog=%s\n"
+#~ msgstr ""
+#~ "Impossible d'écrire sur le volume \"%s\" car :\n"
+#~ "Les tailles ne correspondent pas. Volume=%s Catalogue=%s\n"
 
-#: src/stored/autochanger.c:141
-msgid "Cartridge change or \"update slots\" may be required.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Labeled new Volume \"%s\" on %s device %s.\n"
+#~ msgstr "Le nouveau volume \"%s\" a été labélisé sur le device %s.\n"
 
-#: src/stored/autochanger.c:147
-#, c-format
-msgid "No \"Changer Device\" for %s. Manual load of Volume may be required.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "%s 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/autochanger.c:154
-#, c-format
-msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
-msgstr ""
+#~ msgid "Marking Volume \"%s\" in Error in Catalog.\n"
+#~ msgstr "Le volume \"%s\" est marqué en Erreur dans le catalogue.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid ""
+#~ "Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
+#~ msgstr ""
+#~ "Fin du volume \"%s\" à %u:%u sur le device %s. Ecriture de %u octets, eu "
+#~ "%d.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Cannot open %s Dev=%s, Vol=%s for reading.\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s pour lecture. ERR=%s\n"
 
-#: src/stored/autochanger.c:206
-#, c-format
-msgid ""
-"3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
-"Results=%s\n"
-msgstr ""
-"3992 Erreur sur l'autochangeur « load slot %d, drive %d » : ERR=%s.\n"
-"Resultat=%s\n"
+#, fuzzy
+#~ msgid "Unable to set eotmodel on device %s: ERR=%s\n"
+#~ msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: 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"
+#~ msgid " file=%d block=%d\n"
+#~ msgstr " fichier=%d bloc=%d\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "REGEX '%s' compile error. ERR=%s\n"
+#~ msgstr "erreur de fermeture : ERR=%s\n"
 
-#: 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"
+#~ msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
+#~ msgstr "Fin de Volume au fichier %u sur le Device %s, Volume \"%s\"\n"
 
-#: src/stored/autochanger.c:299
-#, c-format
-msgid ""
-"3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
-"Results=%s\n"
-msgstr ""
-"3991 Erreur sur l'autochangeur « loaded drive %d » : ERR=%s.\n"
-"Resultat=%s\n"
+#~ msgid "End of all volumes.\n"
+#~ msgstr "Fin de tous les Volumes.\n"
 
-#: 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"
+#~ msgid "Forward spacing Volume \"%s\" to file:block %u:%u.\n"
+#~ msgstr ""
+#~ "Postionnement en avant du Volume \"%s\" sur le fichier:bloc %u:%u.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unable to initialize reservation lock. ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "3939 Could not get dcr\n"
+#~ msgstr "Impossible de créer la structure BSOCK cliente.\n"
 
-#: src/stored/autochanger.c:387
-#, c-format
-msgid ""
-"3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
-"Results=%s\n"
-msgstr ""
-"3995 Erreur sur l'autochangeur « unload slot %d, drive %d » : ERR=%s.\n"
-"Resultat=%s\n"
+#, fuzzy
+#~ msgid "Device reservation failed for JobId=%d: %s\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: 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"
+#~ msgid "Failed command: %s\n"
+#~ msgstr "Erreur sur la commande : %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"
+#, fuzzy
+#~ msgid "3603 JobId=%u %s device %s is busy reading.\n"
+#~ msgstr "3603 JobId=%u device %s est occupé en lecture.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "3604 JobId=%u %s 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/autochanger.c:612
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
-msgstr "3306 Envoi de la commande \"%s\" à l'autochangeur.\n"
+#, fuzzy
+#~ msgid "3601 JobId=%u %s 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/autochanger.c:615
-msgid "3996 Open bpipe failed.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "3602 JobId=%u %s device %s is busy (already reading/writing). read=%d, "
+#~ "writers=%d reserved=%d\n"
+#~ msgstr "3602 JobId=%u device %s est occupé (à lire ou écrire).\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "3609 JobId=%u Max concurrent jobs=%d exceeded on %s device %s.\n"
+#~ msgstr ""
+#~ "3607 JobId=%u voulait Vol=\"%s\", c'est le Vol=\"%s\" qui est dans le "
+#~ "drive %s.\n"
 
-#: src/stored/stored.c:87
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : stored [options] [-c config_file] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -dnn           positionne le niveau de debug à nn\n"
-"      -dt            affiche un timestamp devant chaque ligne de debug\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -p             continue même en cas d'erreurs E/S\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
+#, fuzzy
+#~ msgid "3611 JobId=%u Volume max jobs=%d exceeded on %s device %s.\n"
+#~ msgstr ""
+#~ "3607 JobId=%u voulait Vol=\"%s\", c'est le Vol=\"%s\" qui est dans le "
+#~ "drive %s.\n"
 
-#: src/stored/stored.c:136 src/stored/btape.c:178
-#, c-format
-msgid "Tape block size (%d) not multiple of system size (%d)\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on %s "
+#~ "device %s.\n"
+#~ msgstr ""
+#~ "3608 JobId=%u voulait le Pool=\"%s\", mais c'est le Pool=\"%s\" qui est "
+#~ "dans le drive %s.\n"
 
-#: src/stored/stored.c:140 src/stored/btape.c:182
-#, c-format
-msgid "Tape block size (%d) is not a power of 2\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3605 JobId=%u wants free drive but %s device %s is busy.\n"
+#~ msgstr ""
+#~ "3605 JobId=%u voulait libérer le lecteur, mais le device %s est occupé.\n"
 
-#: src/stored/stored.c:268
-msgid "Volume Session Time is ZERO!\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "3606 JobId=%u prefers mounted drives, but %s device %s has no Volume.\n"
+#~ msgstr ""
+#~ "3606 JobId=%u voulait un lecteur monté, mais le lecteur %s est vide.\n"
 
-#: src/stored/stored.c:277
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on %s device %s.\n"
+#~ msgstr ""
+#~ "3607 JobId=%u voulait Vol=\"%s\", c'est le Vol=\"%s\" qui est dans le "
+#~ "drive %s.\n"
 
-#: src/stored/stored.c:310 src/stored/bscan.c:262
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3911 JobId=%u failed reserve %s device %s.\n"
+#~ msgstr ""
+#~ "3605 JobId=%u voulait libérer le lecteur, mais le device %s est occupé.\n"
 
-#: src/stored/stored.c:316
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Spooling statistics:\n"
+#~ msgstr "Spooling des données...\n"
 
-#: src/stored/stored.c:321
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
-msgstr ""
+#~ msgid "Spooling data ...\n"
+#~ msgstr "Spooling des données...\n"
 
-#: src/stored/stored.c:326
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
-msgstr ""
+#~ msgid "Open data spool file %s failed: ERR=%s\n"
+#~ msgstr "Erreur pendant l'ouverture fichier de spool %s. ERR=%s\n"
 
-#: src/stored/stored.c:334
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
-msgstr ""
+#~ msgid "Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"
+#~ msgstr ""
+#~ "Transfert des données spoolées sur le Volume \"%s\". Transfert de %s "
+#~ "octets...\n"
 
-#: src/stored/stored.c:341 src/stored/bscan.c:270
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
-msgstr ""
+#~ msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
+#~ msgstr ""
+#~ "Écriture des données spoolées sur le Volume. Transfert de %s octets...\n"
 
-#: src/stored/stored.c:363
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/"
+#~ "second\n"
+#~ msgstr ""
+#~ "Temps du transfert des données spoolées = %02d:%02d:%02d, Taux de "
+#~ "transfert = %s o/s\n"
 
-#: src/stored/stored.c:369
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
+#, fuzzy
+#~ 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/stored.c:375
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
+#, fuzzy
+#~ 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/stored.c:568
-#, c-format
-msgid "Could not initialize %s\n"
-msgstr "Impossible d'initialiser %s\n"
+#~ msgid "Spooling data again ...\n"
+#~ msgstr "Reprise du spool des données...\n"
 
-#: src/stored/stored.c:582
-#, c-format
-msgid "Could not open device %s\n"
-msgstr "Impossible d'ouvrir le device %s\n"
+#~ 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/stored.c:596
-#, c-format
-msgid "Could not mount device %s\n"
-msgstr "Impossible de monter le device %s\n"
+#~ msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
+#~ msgstr ""
+#~ "Transfert des attributs spoolés au Director. Transfert de %s octets...\n"
 
-#: src/stored/device.c:120
-#, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
-msgstr "Fin de média sur le Volume \"%s\" Octets=%s Blocs=%s à %s.\n"
+# Impossible d'ouvrir le fichier de spool des attributs : ERR=%s
+#~ 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/device.c:139
-#, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
-msgstr "Nouveau volume \"%s\" monté sur le device %s à %s.\n"
+#~ msgid "Used Volume status:\n"
+#~ msgstr "Volume en cours d'utilisation :\n"
 
-#: src/stored/device.c:151
-#, c-format
-msgid "write_block_to_device Volume label failed. ERR=%s"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Device status:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Statut du Device :\n"
 
-#: src/stored/device.c:186
-#, c-format
-msgid "write_block_to_device overflow block failed. ERR=%s"
-msgstr ""
+#~ msgid "Autochanger \"%s\" with devices:\n"
+#~ msgstr "Autochangeur \"%s\" avec les Devices :\n"
 
-#: src/stored/device.c:191
-#, c-format
-msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Device %s is %s:\n"
+#~ "    Volume:      %s\n"
+#~ "    Pool:        %s\n"
+#~ "    Media type:  %s\n"
+#~ msgstr ""
+#~ "Le Device %s est monté avec :\n"
+#~ "    Volume :        %s\n"
+#~ "    Pool :          %s\n"
+#~ "    Type du Media : %s\n"
 
-#: src/stored/device.c:327 src/stored/dev.c:512
-#, c-format
-msgid "Unable to open device %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "waiting for"
+#~ msgstr "En attente d'un montage"
 
-#: src/stored/device.c:329
-#, c-format
-msgid "Unable to open archive %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "*unknown*"
+#~ msgstr "inconnu"
 
-#: src/stored/fd_cmds.c:166
-#, c-format
-msgid "Command error with FD, hanging up. %s\n"
-msgstr ""
+#, fuzzy
+#~ 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/fd_cmds.c:169
-msgid "Command error with FD, hanging up.\n"
-msgstr ""
+#~ msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
+#~ msgstr "    Total Octets=%s Blocs=%s Octets/Bloc=%s\n"
 
-#: src/stored/fd_cmds.c:180
-#, fuzzy, c-format
-msgid "FD command not found: %s\n"
-msgstr "Job non trouvé : %s\n"
+#~ 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"
+
+#~ msgid "    Positioned at File=%s Block=%s\n"
+#~ msgstr "    Positionné sur Fichier=%s Bloc=%s\n"
 
-#: src/stored/fd_cmds.c:206
 #, fuzzy
-msgid "Append data error.\n"
-msgstr "Erreur non fatale"
+#~ msgid ""
+#~ "\n"
+#~ "Device %s is not open.\n"
+#~ msgstr "Le Device %s n'est pas ouvert.\n"
 
-#: src/stored/fd_cmds.c:211
-msgid "Attempt to append on non-open session.\n"
-msgstr ""
+#, fuzzy
+#~ 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/fd_cmds.c:223 src/stored/fd_cmds.c:266
-msgid "Attempt to close non-open session.\n"
-msgstr ""
+#, fuzzy
+#~ 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/fd_cmds.c:241
-msgid "Attempt to open already open session.\n"
-msgstr ""
+#~ msgid "    Device is BLOCKED. User unmounted.\n"
+#~ msgstr "    Le Device est BLOQUÉ. Démonté par l'utilisateur.\n"
 
-#: src/stored/fd_cmds.c:295
-msgid "Attempt to read on non-open session.\n"
-msgstr ""
+#~ 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/fd_cmds.c:313 src/stored/fd_cmds.c:322
-msgid "Attempt to open read on non-open session.\n"
-msgstr ""
+#~ msgid ""
+#~ "    Device is BLOCKED waiting for mount of volume \"%s\",\n"
+#~ "       Pool:        %s\n"
+#~ "       Media type:  %s\n"
+#~ msgstr ""
+#~ "    Le Device est BLOQUÉ en attente du montage du volume \"%s\",\n"
+#~ "        Pool :       %s\n"
+#~ "        Media type : %s\n"
 
-#: src/stored/mount.c:98
-#, c-format
-msgid "Too many errors trying to mount device %s.\n"
-msgstr ""
+#~ msgid ""
+#~ "    Device is BLOCKED waiting to create a volume for:\n"
+#~ "       Pool:        %s\n"
+#~ "       Media type:  %s\n"
+#~ msgstr ""
+#~ "    Le Device est BLOQUÉ en attente de création d'un volume :\n"
+#~ "        Pool :       %s\n"
+#~ "        Media type : %s\n"
 
-#: src/stored/mount.c:106
-#, c-format
-msgid "Job %d canceled.\n"
-msgstr "Le job %d est annulé.\n"
+#~ msgid "    Device is BLOCKED waiting for media.\n"
+#~ msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
 
-#: 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"
+#~ msgid "    Device is being initialized.\n"
+#~ msgstr "    Le Device est en cours d'initialisation.\n"
 
-#: 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"
+#~ msgid "    Device is blocked labeling a Volume.\n"
+#~ msgstr "    Le Device est occupé à labéliser un Volume.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "    Slot %d %s loaded in drive %d.\n"
+#~ msgstr "    Le slot %d est chargé dans le lecteur %d.\n"
 
-#: src/stored/mount.c:444
-#, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
-msgstr ""
-"Le director voulait utiliser le volume \"%s\".\n"
-"    Le volume courant \"%s\" n'est pas utilisable car :\n"
-"    %s"
+#~ msgid "    Drive %d is not loaded.\n"
+#~ msgstr "    Le lecteur %d n'est pas chargé.\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Attached JobsIds: "
+#~ msgstr ""
+#~ "\n"
+#~ "Jobs planifiés :\n"
 
-#: src/stored/mount.c:607
-#, fuzzy, c-format
-msgid ""
-"Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
-"Volume=%s Catalog=%s\n"
-msgstr ""
-"Impossible d'écrire sur le volume \"%s\" car :\n"
-"Les tailles ne correspondent pas. Volume=%s Catalogue=%s\n"
-
-#: 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:624
-#, fuzzy, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
-"Correcting Catalog\n"
-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: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:636
-#, fuzzy, c-format
-msgid ""
-"Bacula cannot write on tape Volume \"%s\" because:\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
-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: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:651
-#, fuzzy, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The sizes do not match! Volume=%s Catalog=%s\n"
-"Correcting Catalog\n"
-msgstr ""
-"Impossible d'écrire sur le volume \"%s\" car :\n"
-"Les tailles ne correspondent pas. Volume=%s Catalogue=%s\n"
-
-#: src/stored/mount.c:664
-#, fuzzy, c-format
-msgid ""
-"Bacula cannot write on disk Volume \"%s\" because: The sizes do not match! "
-"Volume=%s Catalog=%s\n"
-msgstr ""
-"Impossible d'écrire sur le volume \"%s\" car :\n"
-"Les tailles ne correspondent pas. Volume=%s Catalogue=%s\n"
-
-#: 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: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: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: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:787
-msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
-msgstr ""
-
-#: src/stored/mount.c:834
-#, fuzzy, c-format
-msgid ""
-"Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
-msgstr ""
-"Fin du volume \"%s\" à %u:%u sur le device %s. Ecriture de %u octets, eu "
-"%d.\n"
-
-#: src/stored/mount.c:875 src/stored/btape.c:3122
-#, c-format
-msgid "Cannot open Dev=%s, Vol=%s\n"
-msgstr ""
-
-#: src/stored/mac.c:81
-msgid "Read and write devices not properly initialized.\n"
-msgstr ""
-
-#: src/stored/mac.c:87
-#, c-format
-msgid "No Volume names found for %s.\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:160 src/filed/pythonfd.c:142
-#, c-format
-msgid "Cannot delete attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:193 src/filed/pythonfd.c:160 src/filed/pythonfd.c:176
-#, c-format
-msgid "Cannot find attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:208
-msgid "Error in ParseTuple\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:224
-msgid "Parse tuple error in job_write\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:261
-#, c-format
-msgid "Error in Python method %s\n"
-msgstr ""
-
-#: src/stored/spool.c:83
-#, fuzzy
-msgid "Spooling statistics:\n"
-msgstr "Spooling des données...\n"
-
-#: src/stored/spool.c:86
-#, c-format
-msgid ""
-"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
-msgstr ""
-
-#: src/stored/spool.c:94
-#, c-format
-msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
-msgstr ""
-
-#: src/stored/spool.c:112
-msgid "Spooling data ...\n"
-msgstr "Spooling des données...\n"
-
-#: src/stored/spool.c:138
-#, c-format
-msgid "Bad return from despool WroteVol=%d\n"
-msgstr ""
-
-#: src/stored/spool.c:171
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
-msgstr "Erreur pendant l'ouverture fichier de spool %s. ERR=%s\n"
-
-#: src/stored/spool.c:225
-msgid "Despooling zero bytes. Your disk is probably FULL!\n"
-msgstr ""
-
-#: src/stored/spool.c:234
-#, c-format
-msgid "Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"
-msgstr ""
-"Transfert des données spoolées sur le Volume \"%s\". Transfert de %s "
-"octets...\n"
-
-#: src/stored/spool.c:239
-#, c-format
-msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
-msgstr ""
-"Écriture des données spoolées sur le Volume. Transfert de %s octets...\n"
-
-#: src/stored/spool.c:339
-#, fuzzy, c-format
-msgid ""
-"Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-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:549 src/stored/spool.c:595
-#, c-format
-msgid "Ftruncate spool file failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:407
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:410
-#, c-format
-msgid "Spool read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:411
-#, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:418 src/stored/spool.c:419
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
-msgstr ""
-
-#: src/stored/spool.c:425 src/stored/spool.c:426
-#, c-format
-msgid "Spool data read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: 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: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:500
-msgid "Spooling data again ...\n"
-msgstr "Reprise du spool des données...\n"
-
-#: src/stored/spool.c:532
-#, c-format
-msgid "Error writing header to spool file. ERR=%s\n"
-msgstr ""
-
-#: 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:555 src/stored/spool.c:601
-msgid "Fatal despooling error."
-msgstr ""
-
-#: src/stored/spool.c:563
-msgid "Retrying after header spooling error failed.\n"
-msgstr ""
-
-#: 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:612
-msgid "Retrying after data spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:682
-msgid "Network error on BlastAttributes.\n"
-msgstr ""
-
-#: 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: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: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: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: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:504
-#, fuzzy
-msgid "unknown blocked code"
-msgstr "source inconnue"
-
-#: src/stored/stored_conf.c:241
-#, c-format
-msgid "Expected a Device Type keyword, got: %s"
-msgstr ""
-
-#: src/stored/stored_conf.c:255
-#, c-format
-msgid ""
-"Maximum Block Size configured value %u is greater than allowed maximum: %u"
-msgstr ""
-
-#: src/stored/stored_conf.c:269
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:272
-#, c-format
-msgid "dump_resource type=%d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:388
-#, c-format
-msgid "Warning: unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:645
-#: src/stored/stored_conf.c:680 src/wx-console/console_conf.c:164
-#: src/wx-console/console_conf.c:239 src/wx-console/console_conf.c:284
-#: src/wx-console/console_conf.c:311 src/console/console_conf.c:157
-#: src/console/console_conf.c:233 src/console/console_conf.c:278
-#: src/console/console_conf.c:305 src/filed/filed_conf.c:333
-#: src/filed/filed_conf.c:398 src/filed/filed_conf.c:428
-#: src/qt-console/bat_conf.cpp:161 src/qt-console/bat_conf.cpp:239
-#: src/qt-console/bat_conf.cpp:287 src/qt-console/bat_conf.cpp:317
-#, c-format
-msgid "Unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:584
-#, c-format
-msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:590
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
-msgstr "Trop d'éléments dans la ressource \"%s\"\n"
-
-#: src/stored/stored_conf.c:624
-#, c-format
-msgid "Cannot find AutoChanger resource %s\n"
-msgstr "Impossible de trouver la ressource AutoChanger %s\n"
-
-#: src/stored/stored_conf.c:640
-#, fuzzy, c-format
-msgid "Unable to init lock: ERR=%s\n"
-msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
-
-#: src/stored/stored_conf.c:698
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
-msgstr ""
-
-#: src/stored/dev.c:127
-#, c-format
-msgid "Unable to stat device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:155
-msgid "DVD support is now deprecated\n"
-msgstr ""
-
-#: src/stored/dev.c:231
-#, c-format
-msgid "Unable to stat mount point %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:236
-msgid ""
-"Mount and unmount commands must defined for a device which requires mount.\n"
-msgstr ""
-
-#: src/stored/dev.c:247
-#, c-format
-msgid "Min block size > max on device %s\n"
-msgstr ""
-
-#: 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: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:260
-#, c-format
-msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
-msgstr ""
-
-#: 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: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:551
-#, c-format
-msgid "Could not open file device %s. No Volume name given.\n"
-msgstr ""
-
-#: src/stored/dev.c:574
-#, c-format
-msgid "Could not open: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:639
-#, c-format
-msgid "No tape loaded or drive offline on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:649
-#, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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: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:775
-#, c-format
-msgid "ioctl MTEOM error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:865
-msgid "Bad device call. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:877
-#, c-format
-msgid "Seek error: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:914
-msgid " Bacula status:"
-msgstr ""
-
-#: 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:923
-msgid " Device status:"
-msgstr ""
-
-#: src/stored/dev.c:1022
-msgid "Bad call to load_dev. Device not open\n"
-msgstr ""
-
-#: 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:1077
-#, c-format
-msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1118
-msgid "Bad call to fsf. Device not open\n"
-msgstr ""
-
-#: 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:1160 src/stored/dev.c:1236
-#, c-format
-msgid "ioctl MTFSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:1285
-msgid "Bad call to bsf. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1291
-#, c-format
-msgid "Device %s cannot BSF because it is not a tape.\n"
-msgstr ""
-
-#: src/stored/dev.c:1308
-#, c-format
-msgid "ioctl MTBSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1327
-msgid "Bad call to fsr. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1337
-#, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1365
-#, c-format
-msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1383
-msgid "Bad call to bsr_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1393
-#, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1407
-#, c-format
-msgid "ioctl MTBSR error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1458
-msgid "Bad call to reposition. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1537
-msgid "Bad call to weof_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1547
-msgid "Attempt to WEOF on non-appendable Volume\n"
-msgstr ""
-
-#: src/stored/dev.c:1565
-#, c-format
-msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1664
-#, c-format
-msgid "unknown func code %d"
-msgstr ""
-
-#: src/stored/dev.c:1670
-#, c-format
-msgid "I/O function \"%s\" not supported on this device.\n"
-msgstr ""
-
-#: src/stored/dev.c:1844
-#, c-format
-msgid "Unable to truncate device %s. ERR=%s\n"
-msgstr ""
-
-#: 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:1875
-#, c-format
-msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
-msgstr ""
-
-#: 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: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: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"
-
-#: src/stored/bscan.c:118
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -m                update media info in database\n"
-"       -D <driver name>  specify the driver database name (default NULL)\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password>     specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -t <port>         specify database port (default 0)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -dnn           positionne le niveau de debug à nn\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -r <job>       lance <job> maintenant\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
-
-#: src/stored/bscan.c:278
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:282
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:296 src/stored/bscan.c:372
-#, fuzzy, c-format
-msgid "First Volume Size = %s\n"
-msgstr "Le nombre courant de fichier sur le Volume est : %u\n"
-
-#: src/stored/bscan.c:302 src/tools/bvfs_test.c:215 src/tools/bbatch.c:201
-#: src/tools/bbatch.c:250 src/tools/ing_test.c:191
-msgid "Could not init Bacula database\n"
-msgstr ""
-
-#: src/stored/bscan.c:309 src/tools/bvfs_test.c:224 src/tools/bbatch.c:257
-#: src/tools/ing_test.c:200
-#, c-format
-msgid "Using Database: %s, User: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:343
-#, c-format
-msgid "Create JobMedia for Job %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:353
-#, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:420
-#, c-format
-msgid "done: %d%%\n"
-msgstr ""
-
-#: src/stored/bscan.c:444
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
-msgstr ""
-
-#: src/stored/bscan.c:456
-#, c-format
-msgid "Pool record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:460
-#, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:466
-#, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:470
-#, c-format
-msgid "Pool type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:480
-#, c-format
-msgid "Media record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:487
-#, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:494
-#, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:498
-#, c-format
-msgid "Media type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:508
-#, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:515
-#, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:526
-#, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:531
-#, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:571
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:577
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:583
-#, c-format
-msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/bscan.c:647
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:658
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:670
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:701
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:766
-#, c-format
-msgid "Got MD5 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:774
-#, c-format
-msgid "Got SHA1 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:782
-#, c-format
-msgid "Got SHA256 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Got SHA512 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:798 src/stored/bscan.c:805
-msgid "Got signed digest record\n"
-msgstr ""
-
-#: src/stored/bscan.c:811
-#, c-format
-msgid "Got Prog Names Stream: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:817
-msgid "Got Prog Data Stream record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:862
-#, c-format
-msgid "Unknown stream type!!! stream=%d len=%i\n"
-msgstr ""
-
-#: src/stored/bscan.c:930
-#, c-format
-msgid "Could not create File Attributes record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:936
-#, c-format
-msgid "Created File record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:981
-#, c-format
-msgid "Could not create media record. ERR=%s\n"
-msgstr ""
-
-#: 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:989
-#, c-format
-msgid "Created Media record for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1010
-#, c-format
-msgid "Updated Media record at end of Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1027
-#, c-format
-msgid "Could not create pool record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1031
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
-msgstr ""
-
-#: 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:1060
-#, c-format
-msgid "Created Client record for Client: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1077
-#, c-format
-msgid "Fileset \"%s\" already exists.\n"
-msgstr ""
-
-#: src/stored/bscan.c:1081
-#, c-format
-msgid "Could not create FileSet record \"%s\". ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1086
-#, c-format
-msgid "Created FileSet record \"%s\"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1133
-#, c-format
-msgid "Could not create JobId record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1139
-#, c-format
-msgid "Could not update job start record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1142
-#, c-format
-msgid "Created new JobId=%u record for original JobId=%u\n"
-msgstr ""
-
-#: src/stored/bscan.c:1195
-#, c-format
-msgid "Could not update JobId=%u record. ERR=%s\n"
-msgstr ""
-
-#: 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:1225
-#, c-format
-msgid "Job Termination code: %d"
-msgstr ""
-
-#: src/stored/bscan.c:1230
-#, c-format
-msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1288
-#, c-format
-msgid "Could not create JobMedia record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1292
-#, c-format
-msgid "Created JobMedia record JobId %d, MediaId %d\n"
-msgstr ""
-
-#: 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:1322
-#, c-format
-msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1327
-msgid "Updated MD5/SHA1 record\n"
-msgstr ""
-
-#: 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:244
-#, c-format
-msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
-msgstr ""
-
-#: src/stored/job.c:261
-msgid "Unable to authenticate File daemon\n"
-msgstr ""
-
-#: src/stored/job.c:390
-msgid "In free_jcr(), but still attached to device!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:185
-#, c-format
-msgid ""
-"\n"
-"\n"
-"!!!! Warning large disk addressing disabled. boffset_t=%d should be 8 or "
-"more !!!!!\n"
-"\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:192
-#, c-format
-msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:201
-msgid "64 bit printf/scanf problem. i=%d x64=%"
-msgstr ""
-
-#: src/stored/btape.c:206
-#, c-format
-msgid "Tape block granularity is %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:279
-msgid "No archive name specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:283
-msgid "Improper number of arguments specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:297
-msgid "btape does not work with DVD storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:302
-msgid "btape only works with tape storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:383
-#, c-format
-msgid "Total Volume bytes=%sB. Total Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:409
-#, c-format
-msgid "Volume bytes=%sB. Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:477
-#, c-format
-msgid "open device %s: OK\n"
-msgstr ""
-
-#: src/stored/btape.c:500
-msgid "Enter Volume Name: "
-msgstr "Saisissez un nom de Volume : "
-
-#: src/stored/btape.c:507
-#, c-format
-msgid "Device open failed. ERR=%s\n"
-msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
-
-#: src/stored/btape.c:512
-#, c-format
-msgid "Wrote Volume label for volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/btape.c:526
-msgid "Volume has no label.\n"
-msgstr "Le Volume n'a pas de label.\n"
-
-#: src/stored/btape.c:529
-msgid "Volume label read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:532
-#, c-format
-msgid "I/O error on device: ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:535
-msgid "Volume name error\n"
-msgstr ""
-
-#: src/stored/btape.c:538
-#, c-format
-msgid "Error creating label. ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:541
-msgid "Volume version error.\n"
-msgstr ""
-
-#: src/stored/btape.c:544
-msgid "Bad Volume label type.\n"
-msgstr ""
-
-#: src/stored/btape.c:547
-msgid "Unknown error.\n"
-msgstr ""
-
-#: src/stored/btape.c:565
-#, c-format
-msgid "Bad status from load. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:567
-#, c-format
-msgid "Loaded %s\n"
-msgstr ""
-
-#: 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:1571
-#, c-format
-msgid "Rewound %s\n"
-msgstr ""
-
-#: src/stored/btape.c:605 src/stored/btape.c:1575
-#, c-format
-msgid "Bad status from weof. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:609
-#, c-format
-msgid "Wrote 1 EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:612
-#, c-format
-msgid "Wrote %d EOFs to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:630
-msgid "Moved to end of medium.\n"
-msgstr ""
-
-#: src/stored/btape.c:657
-#, c-format
-msgid "Bad status from bsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:659
-#, c-format
-msgid "Backspaced %d file%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:676
-#, c-format
-msgid "Bad status from bsr. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:678
-#, c-format
-msgid "Backspaced %d record%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:706
-#, c-format
-msgid "Device status:\n"
-msgstr ""
-
-#: src/stored/btape.c:725
-#, c-format
-msgid "Status:\n"
-msgstr "Statut :\n"
-
-#: src/stored/btape.c:740
-msgid ""
-"Test writing larger and larger records.\n"
-"This is a torture test for records.\n"
-"I am going to write\n"
-"larger and larger records. It will stop when the record size\n"
-"plus the header exceeds the block size (by default about 64K)\n"
-msgstr ""
-
-#: src/stored/btape.c:746
-msgid "Do you want to continue? (y/n): "
-msgstr "Voulez vous continuer ? (y/n) : "
-
-#: src/stored/btape.c:748 src/stored/btape.c:2200
-msgid "Command aborted.\n"
-msgstr "Commande annulée.\n"
-
-#: src/stored/btape.c:765
-#, c-format
-msgid "Block %d i=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:792
-msgid "Skipping read backwards test because BSR turned off.\n"
-msgstr ""
-
-#: src/stored/btape.c:796
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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: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:816
-#, c-format
-msgid "Wrote first record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:827
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:838
-#, c-format
-msgid "Wrote third record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:845 src/stored/btape.c:850
-#, c-format
-msgid "Backspace file failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:854
-msgid "Backspaced over EOF OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:856
-#, c-format
-msgid "Backspace record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:859
-msgid "Backspace record OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:862 src/stored/btape.c:868
-#, c-format
-msgid "Read block failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:873
-msgid "Bad data in record. Test failed!\n"
-msgstr ""
-
-#: src/stored/btape.c:877
-msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
-msgstr ""
-
-#: src/stored/btape.c:878
-msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
-msgstr ""
-
-#: 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"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
-msgstr ""
-
-#: 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:928 src/stored/btape.c:2879
-#, c-format
-msgid "Write failed at block %u. stat=%d ERR=%s\n"
-msgstr ""
-
-#: 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:971
-#, fuzzy
-msgid ""
-"\n"
-"Error writing record to block.\n"
-msgstr "Erreur pendant l'écriture du fichier bsr.\n"
-
-#: 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:1030
-msgid "The file_size is too big, stop this test with Ctrl-c.\n"
-msgstr ""
-
-#: src/stored/btape.c:1058
-msgid "Test with zero data, should give the maximum throughput.\n"
-msgstr ""
-
-#: 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:1085
-msgid "Test with zero data and bacula block structure.\n"
-msgstr ""
-
-#: src/stored/btape.c:1125
-#, c-format
-msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write %d records and an EOF\n"
-"then write %d records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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:1215 src/stored/btape.c:1295
-msgid "Rewind OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1228 src/stored/btape.c:1347
-msgid "Got EOF on tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:1233
-#, c-format
-msgid "Read block %d failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1239
-#, c-format
-msgid "Read record failed. Block %d! ERR=%s\n"
-msgstr ""
-
-#: 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:1252
-#, fuzzy, c-format
-msgid "%d blocks re-read correctly.\n"
-msgstr "1000 blocs relus correctement.\n"
-
-#: 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:1283
-msgid "Block position test\n"
-msgstr ""
-
-#: src/stored/btape.c:1338
-#, c-format
-msgid "Reposition to file:block %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:1340
-msgid "Reposition error.\n"
-msgstr ""
-
-#: 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:1355
-msgid ""
-"This may be because the tape drive block size is not\n"
-" set to variable blocking as normally used by Bacula.\n"
-" Please see the Tape Testing chapter in the manual and \n"
-" look for using mt with defblksize and setoptions\n"
-"If your tape drive block size is correct, then perhaps\n"
-" your SCSI driver is *really* stupid and does not\n"
-" correctly report the file:block after a FSF. In this\n"
-" case try setting:\n"
-"    Fast Forward Space File = no\n"
-" in your Device resource.\n"
-msgstr ""
-
-#: src/stored/btape.c:1371
-#, c-format
-msgid "Read record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1382
-#, c-format
-msgid "Block %d re-read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:1403
-msgid ""
-"\n"
-"\n"
-"=== Append files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1427
-msgid "Now moving to end of medium.\n"
-msgstr ""
-
-#: 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: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: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:1436
-msgid ""
-"\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1443
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1444
-msgid "Doing Bacula scan of blocks:\n"
-msgstr ""
-
-#: src/stored/btape.c:1446
-msgid "End scanning the tape.\n"
-msgstr ""
-
-#: 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:1472
-msgid ""
-"\n"
-"Autochanger enabled, but no name or no command device specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:1476
-msgid ""
-"\n"
-"Ah, I see you have an autochanger configured.\n"
-"To test the autochanger you must have a blank tape\n"
-" that I can write on in Slot 1.\n"
-msgstr ""
-
-#: src/stored/btape.c:1479
-msgid ""
-"\n"
-"Do you wish to continue with the Autochanger test? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:1486
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1495
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1504
-#, c-format
-msgid "3991 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1505
-#, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1509
-#, c-format
-msgid "Slot %d loaded. I am going to unload it.\n"
-msgstr ""
-
-#: src/stored/btape.c:1511
-msgid "Nothing loaded in the drive. OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1518
-#, c-format
-msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-#, c-format
-msgid "unload status=%s %d\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-msgid "Bad"
-msgstr ""
-
-#: src/stored/btape.c:1526
-#, c-format
-msgid "3992 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1527
-#, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1537
-#, c-format
-msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1545
-#, c-format
-msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1549
-#, c-format
-msgid "3993 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1550
-#, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1565
-msgid ""
-"\n"
-"The test failed, probably because you need to put\n"
-"a longer sleep time in the mtx-script in the load) case.\n"
-"Adding a 30 second sleep and trying again ...\n"
-msgstr ""
-
-#: src/stored/btape.c:1578
-#, c-format
-msgid "Wrote EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1582
-#, c-format
-msgid ""
-"\n"
-"The test worked this time. Please add:\n"
-"\n"
-"   sleep %d\n"
-"\n"
-"to your mtx-changer script in the load) case.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1587
-msgid ""
-"\n"
-"The test autochanger worked!!\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1598
-msgid "You must correct this error or the Autochanger will not work.\n"
-msgstr ""
-
-#: src/stored/btape.c:1616
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1641
-msgid "Now forward spacing 1 file.\n"
-msgstr ""
-
-#: 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:1646
-#, c-format
-msgid "We should be in file 1. I am at file %d. %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1653
-msgid "Now forward spacing 2 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1666
-msgid "Now forward spacing 4 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1678
-msgid ""
-"The test worked this time. Please add:\n"
-"\n"
-"   Fast Forward Space File = no\n"
-"\n"
-"to your Device resource for this drive.\n"
-msgstr ""
-
-#: src/stored/btape.c:1684
-msgid "Now forward spacing 1 more file.\n"
-msgstr ""
-
-#: 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:1693
-msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1697
-msgid ""
-"\n"
-"The forward space file test failed.\n"
-msgstr ""
-
-#: 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:1705
-msgid ""
-"You must correct this error or Bacula will not work.\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1739
-msgid ""
-"\n"
-"Append test failed. Attempting again.\n"
-"Setting \"Hardware End of Medium = no\n"
-"    and \"Fast Forward Space File = no\n"
-"and retrying append test.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1747
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"\n"
-"    Fast Forward Space File = No\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1754
-msgid ""
-"\n"
-"\n"
-"That appears *NOT* to have corrected the problem.\n"
-msgstr ""
-
-#: src/stored/btape.c:1759
-msgid ""
-"\n"
-"\n"
-"It looks like the append failed. Attempting again.\n"
-"Setting \"BSF at EOM = yes\" and retrying append test.\n"
-msgstr ""
-
-#: src/stored/btape.c:1764
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"    Fast Forward Space File = No\n"
-"    BSF at EOM = yes\n"
-"\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1775
-msgid ""
-"\n"
-"Append test failed.\n"
-"\n"
-"\n"
-"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
-"Unable to correct the problem. You MUST fix this\n"
-"problem before Bacula can use your tape drive correctly\n"
-"\n"
-"Perhaps running Bacula in fixed block mode will work.\n"
-"Do so by setting:\n"
-"\n"
-"Minimum Block Size = nnn\n"
-"Maximum Block Size = nnn\n"
-"\n"
-"in your Storage daemon's Device definition.\n"
-"nnn must match your tape driver's block size, which\n"
-"can be determined by reading your tape manufacturers\n"
-"information, and the information on your kernel dirver.\n"
-"Fixed block sizes, however, are not normally an ideal solution.\n"
-"\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1797
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1840
-#, c-format
-msgid "Bad status from fsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1844
-msgid "Forward spaced 1 file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1847
-#, c-format
-msgid "Forward spaced %d files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1866
-msgid "Forward spaced 1 record.\n"
-msgstr ""
-
-#: src/stored/btape.c:1869
-#, c-format
-msgid "Forward spaced %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:1914
-#, c-format
-msgid "Wrote one record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1916
-msgid "Wrote block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1930
-msgid "Enter length to read: "
-msgstr ""
-
-#: src/stored/btape.c:1935
-msgid "Bad length entered, using default of 1024 bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1944
-#, c-format
-msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1967 src/stored/btape.c:2016
-#, c-format
-msgid "End of tape\n"
-msgstr ""
-
-#: src/stored/btape.c:1972
-#, c-format
-msgid "Starting scan at file %u\n"
-msgstr ""
-
-#: src/stored/btape.c:1979
-#, c-format
-msgid "Bad status from read %d. ERR=%s\n"
-msgstr ""
-
-#: 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: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:2007 src/stored/btape.c:2079
-#, c-format
-msgid "End of File mark.\n"
-msgstr ""
-
-#: 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:2092
-#, c-format
-msgid "Short block read.\n"
-msgstr ""
-
-#: src/stored/btape.c:2095
-#, c-format
-msgid "Error reading block. ERR=%s\n"
-msgstr ""
-
-#: 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:2141
-#, c-format
-msgid "Device status: %u. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2173
-#, fuzzy, c-format
-msgid ""
-"\n"
-"This command simulates Bacula writing to a tape.\n"
-"It requires either one or two blank tapes, which it\n"
-"will label and write.\n"
-"\n"
-"If you have an autochanger configured, it will use\n"
-"the tapes that are in slots 1 and 2, otherwise, you will\n"
-"be prompted to insert the tapes when necessary.\n"
-"\n"
-"It will print a status approximately\n"
-"every 322 MB, and write an EOF every %s.  If you have\n"
-"selected the simple test option, after writing the first tape\n"
-"it will rewind it and re-read the last block written.\n"
-"\n"
-"If you have selected the multiple tape test, when the first tape\n"
-"fills, it will ask for a second, and after writing a few more \n"
-"blocks, it will stop.  Then it will begin re-reading the\n"
-"two tapes.\n"
-"\n"
-"This may take a long time -- hours! ...\n"
-"\n"
-msgstr ""
-"\n"
-"Cette commande simule l'écriture d'une bande par Bacula.\n"
-"Ce test requiert une ou deux bandes vierges qui vont être\n"
-"labélisées et écrites.\n"
-"\n"
-"Si vous avez configuré un autochangeur, il utilisera les bandes\n"
-"des slots 1 et 2, sinon, le programme vous demandera d'insérer\n"
-"les bandes quand cela sera nécessaire.\n"
-"\n"
-"L'état d'avancement sera affiché tous les 322 Mo, et un EOF sera \n"
-"écrit tous les 3,2 Go. Si vous avez choisi le test simple, après avoir\n"
-"rempli la bande, elle sera rembobinée et le dernier bloc écrit sera\n"
-"relu.\n"
-"\n"
-"Si vous avez choisi le test multi-bande, quand la première bande sera\n"
-"remplie vous devrez insérer la nouvelle et après l'écriture de quelques\n"
-"blocs les deux bandes seront relues.\n"
-"\n"
-"Ce test peut durer longtemps (voir des heures).\n"
-
-#: 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 ""
-"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:2194
-msgid "Simple test (single tape) selected.\n"
-msgstr "Sélection du test simplifié (utilisant une seule bande).\n"
-
-#: src/stored/btape.c:2197
-msgid "Multiple tape test selected.\n"
-msgstr "Sélection du test multiple.\n"
-
-#: 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:2258
-#, c-format
-msgid "%s Begin writing Bacula records to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2260
-#, c-format
-msgid "%s Begin writing Bacula records to first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2286
-#, fuzzy
-msgid "Flush block failed.\n"
-msgstr "Flush de %s blocs, écriture de EOF\n"
-
-#: 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:2311
-#, c-format
-msgid "%s Flush block, write EOF\n"
-msgstr "Flush de %s blocs, écriture de EOF\n"
-
-#: 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:2325
-msgid "Not OK\n"
-msgstr ""
-
-#: src/stored/btape.c:2349
-#, fuzzy
-msgid "Job canceled.\n"
-msgstr "Le job %s est annulé.\n"
-
-#: src/stored/btape.c:2360
-msgid "Set ok=false after write_block_to_device.\n"
-msgstr ""
-
-#: 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: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: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:2403
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2406
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2412
-#, fuzzy
-msgid "do_unfill failed.\n"
-msgstr "Job échoué.\n"
-
-#: 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:2452
-msgid ""
-"\n"
-"The state file level has changed. You must redo\n"
-"the fill command.\n"
-msgstr ""
-
-#: src/stored/btape.c:2459
-#, c-format
-msgid ""
-"\n"
-"Could not find the state file: %s ERR=%s\n"
-"You must redo the fill command.\n"
-msgstr ""
-"\n"
-"Impossible de trouver le fichier d'état : %s ERR=%s\n"
-"Vous devez relancer la commande « fill ».\n"
-
-#: 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:2541
-msgid "Rewinding.\n"
-msgstr "Rembobinage.\n"
-
-#: 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: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: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:2556
-#, c-format
-msgid "Reading block %u.\n"
-msgstr "Lecture du bloc %u.\n"
-
-#: 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:2563
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2566
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
-msgstr ""
-
-#: 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: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:2608 src/stored/btape.c:2624
-#, c-format
-msgid "Reading block %d.\n"
-msgstr "Lecture du bloc %d.\n"
-
-#: src/stored/btape.c:2614
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2630
-msgid ""
-"\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: 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:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
-msgid "Last block written"
-msgstr "Dernier bloc écrit"
-
-#: src/stored/btape.c:2675 src/stored/btape.c:2685
-msgid "Block read back"
-msgstr ""
-
-#: src/stored/btape.c:2676
-#, c-format
-msgid ""
-"\n"
-"\n"
-"The blocks differ at byte %u\n"
-msgstr ""
-
-#: src/stored/btape.c:2677
-msgid ""
-"\n"
-"\n"
-"!!!! The last block written and the block\n"
-"that was read back differ. The test FAILED !!!!\n"
-"This must be corrected before you use Bacula\n"
-"to write multi-tape Volumes.!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:2713
-#, c-format
-msgid "Last block at: %u:%u this_dev_block_num=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2727
-#, c-format
-msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:2731
-msgid "Block not written"
-msgstr "Bloc non écrit"
-
-#: 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:2797
-msgid "Test writing blocks of 64512 bytes to tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:2799
-msgid "How many blocks do you want to write? (1000): "
-msgstr ""
-
-#: src/stored/btape.c:2816
-#, c-format
-msgid "Begin writing %d Bacula blocks to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2859
-#, c-format
-msgid "Begin writing raw blocks of %u bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:2890
-msgid "test autochanger"
-msgstr ""
-
-#: src/stored/btape.c:2891
-msgid "backspace file"
-msgstr ""
-
-#: src/stored/btape.c:2892
-msgid "backspace record"
-msgstr ""
-
-#: src/stored/btape.c:2893
-msgid "list device capabilities"
-msgstr ""
-
-#: src/stored/btape.c:2894
-msgid "clear tape errors"
-msgstr ""
-
-#: src/stored/btape.c:2895
-msgid "go to end of Bacula data for append"
-msgstr ""
-
-#: src/stored/btape.c:2896
-msgid "go to the physical end of medium"
-msgstr ""
-
-#: src/stored/btape.c:2897
-msgid "fill tape, write onto second volume"
-msgstr ""
-
-#: src/stored/btape.c:2898
-msgid "read filled tape"
-msgstr ""
-
-#: src/stored/btape.c:2899
-msgid "forward space a file"
-msgstr ""
-
-#: src/stored/btape.c:2900
-msgid "forward space a record"
-msgstr ""
-
-#: src/stored/btape.c:2901
-msgid "print this command"
-msgstr "affiche cette commande"
-
-#: src/stored/btape.c:2902
-msgid "write a Bacula label to the tape"
-msgstr ""
-
-#: src/stored/btape.c:2903
-msgid "load a tape"
-msgstr ""
-
-#: src/stored/btape.c:2904
-msgid "quit btape"
-msgstr ""
-
-#: src/stored/btape.c:2905
-msgid "use write() to fill tape"
-msgstr ""
-
-#: src/stored/btape.c:2906
-msgid "read and print the Bacula tape label"
-msgstr ""
-
-#: src/stored/btape.c:2907
-msgid "test record handling functions"
-msgstr ""
-
-#: src/stored/btape.c:2908
-msgid "rewind the tape"
-msgstr "rembobine la bande"
-
-#: src/stored/btape.c:2909
-msgid "read() tape block by block to EOT and report"
-msgstr ""
-
-#: 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: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:2912
-msgid "print tape status"
-msgstr ""
-
-#: 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:2914
-msgid "write an EOF on the tape"
-msgstr "écrit un EOF sur la bande"
-
-#: src/stored/btape.c:2915
-msgid "write a single Bacula block"
-msgstr "écrit un seul bloc bacula"
-
-#: src/stored/btape.c:2916
-msgid "read a single record"
-msgstr "lit un seul enregistrement"
-
-#: src/stored/btape.c:2917
-msgid "read a single Bacula block"
-msgstr "lit un seul bloc bacula"
-
-#: src/stored/btape.c:2918
-msgid "quick fill command"
-msgstr ""
-
-#: 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:2948
-#, c-format
-msgid "Interactive commands:\n"
-msgstr ""
-
-#: src/stored/btape.c:2959
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap 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"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-") %s %s %s\n"
-"\n"
-"Usage : bconsole [-s] [-c config_file] [-d niveau_debug]\n"
-"       -c <file>   set configuration file to file\n"
-"       -dnn        set debug level to nn\n"
-"       -s          no signals\n"
-"       -t          test - lecture de la configuration et sortie\n"
-"\n"
-
-#: src/stored/btape.c:3047
-#, c-format
-msgid "Mount second Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3075
-#, c-format
-msgid "Mount blank Volume on device %s and press return when ready: "
-msgstr ""
-
-#: 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: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"
-
-#: src/stored/authenticate.c:61
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
-msgstr ""
-
-#: src/stored/authenticate.c:67 src/filed/authenticate.c:76
-#, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:78 src/filed/authenticate.c:88
-#, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:92
-#, fuzzy, c-format
-msgid ""
-"Connection from unknown Director %s at %s rejected.\n"
-"Please see "
-msgstr ""
-"Connexion d'un Director inconnu %s à %s rejeté.\n"
-"\n"
-
-#: src/stored/authenticate.c:129
-#, fuzzy
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see "
-msgstr "Password incorrect donné par le Director à %s.\n"
-
-#: src/stored/authenticate.c:137 src/stored/authenticate.c:248
-#: src/filed/authenticate.c:151 src/filed/authenticate.c:270
-msgid ""
-"Authorization problem: Remote server did not advertize required TLS "
-"support.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:155
-#, fuzzy, c-format
-msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
-msgstr "Négociation TLS échouée avec le SD « %s:%d ».\n"
-
-#: src/stored/authenticate.c:191
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:239 src/stored/authenticate.c:279
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:266
-#, fuzzy, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
-msgstr "Négociation TLS échouée avec le FD  « %s:%d ».\n"
-
-#: src/stored/wait.c:133
-#, c-format
-msgid "pthread timedwait error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/wait.c:239
-#, fuzzy, c-format
-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:102
-#, c-format
-msgid ""
-"Dump block %s %x: size=%d BlkNum=%d\n"
-"               Hdrcksum=%x cksum=%x\n"
-msgstr ""
-
-#: 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:171
-#, c-format
-msgid "%d block read errors not printed.\n"
-msgstr ""
-
-#: 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: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: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: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:458
-#, c-format
-msgid "Attempt to write on read-only Volume. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:464
-#, c-format
-msgid "Attempt to write on closed device=%s\n"
-msgstr ""
-
-#: src/stored/block.c:513
-#, c-format
-msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
-msgstr ""
-
-#: 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:554 src/stored/block.c:588
-msgid "Write block header zeroed.\n"
-msgstr ""
-
-#: 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: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:695 src/stored/block.c:701
-#, c-format
-msgid "Backspace file at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:708
-#, c-format
-msgid "Backspace record at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: 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: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: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: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:777
-#, c-format
-msgid ""
-"Error writing final EOF to tape. This Volume may not be readable.\n"
-"%s"
-msgstr ""
-
-#: 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: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:904
-#, c-format
-msgid "Unable to open device next part %s: ERR=%s\n"
-msgstr ""
-
-#: 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: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: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: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: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:1057
-#, c-format
-msgid "Read zero bytes at %u:%u on device %s.\n"
-msgstr ""
-
-#: 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:1107
-#, c-format
-msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
-msgstr ""
-
-#: src/stored/block.c:1127
-#, c-format
-msgid "Setting block buffer size to %u bytes.\n"
-msgstr ""
-
-#: 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: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:134
-#, c-format
-msgid "Failed to find any plugins in %s\n"
-msgstr ""
-
-#: 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: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: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"
-
-#: src/lib/pythonlib.c:116
-msgid "Could not initialize Python\n"
-msgstr "Impossible d'initialiser le Python\n"
-
-#: src/lib/pythonlib.c:121
-#, c-format
-msgid "Could not Run Python string %s\n"
-msgstr "Impossible de lancer la commande Python %s\n"
-
-#: src/lib/pythonlib.c:133
-msgid "Could not initialize Python Job type.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:138
-#, c-format
-msgid "Could not import Python script %s/%s. Python disabled.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:240
-msgid "Could not create Python Job Object.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:253 src/lib/pythonlib.c:277
-#, c-format
-msgid "Python function \"%s\" not found.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:292
-#, c-format
-msgid "Unknown Python daemon event %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:317
-#, fuzzy, c-format
-msgid "Unable to initialize the Python lock. ERR=%s\n"
-msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
-
-#: src/lib/watchdog.c:96
-#, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:193
-msgid "BUG! register_watchdog called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:196
-#, c-format
-msgid "BUG! Watchdog %p has NULL callback\n"
-msgstr ""
-
-#: src/lib/watchdog.c:199
-#, c-format
-msgid "BUG! Watchdog %p has zero interval\n"
-msgstr ""
-
-#: src/lib/watchdog.c:219
-msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:339
-#, c-format
-msgid "rwl_writelock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:354
-#, c-format
-msgid "rwl_writeunlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/attr.c:81
-#, c-format
-msgid "Error scanning attributes: %s\n"
-msgstr "Erreur pendant la lecture des attributs : %s\n"
-
-#: src/lib/smartall.c:145 src/lib/smartall.c:256 src/lib/smartall.c:271
-msgid "Out of memory\n"
-msgstr "Plus de mémoire\n"
-
-#: src/lib/smartall.c:150
-msgid "Too much memory used."
-msgstr ""
-
-#: src/lib/smartall.c:180
-#, c-format
-msgid "Attempt to free NULL called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:194
-#, c-format
-msgid "double free from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:202
-#, c-format
-msgid "qp->qnext->qprev != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:206
-#, c-format
-msgid "qp->qprev->qnext != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:215
-#, c-format
-msgid "Overrun buffer: len=%d addr=%p allocated: %s:%d called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:293
-#, c-format
-msgid "sm_realloc size: %d\n"
-msgstr ""
-
-#: src/lib/smartall.c:331
-#, fuzzy, c-format
-msgid "sm_realloc %d at %p from %s:%d\n"
-msgstr "Attendait %d en lecture, eu %d de %s:%s:%d\n"
-
-#: src/lib/smartall.c:391
-#, c-format
-msgid ""
-"\n"
-"Orphaned buffers exist.  Dump terminated following\n"
-"  discovery of bad links in chain of orphaned buffers.\n"
-"  Buffer address with bad links: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:436
-#, c-format
-msgid "Damaged buffer found. Called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:469
-#, c-format
-msgid ""
-"\n"
-"Damaged buffers found at %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:472
-msgid "  discovery of bad prev link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:475
-msgid "  discovery of bad next link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:478
-msgid "  discovery of data overrun.\n"
-msgstr ""
-
-#: src/lib/smartall.c:481
-msgid "  NULL pointer.\n"
-msgstr "  pointeur NULL.\n"
-
-#: src/lib/smartall.c:487
-#, c-format
-msgid "  Buffer address: %p\n"
-msgstr "  Adresse du buffer : %p\n"
-
-#: src/lib/smartall.c:494
-#, c-format
-msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
-msgstr ""
-
-#: 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: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: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: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: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:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
-msgid "Try write lock"
-msgstr ""
-
-#: 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:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
-msgid "Create thread"
-msgstr ""
-
-#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
-msgid "Join thread"
-msgstr ""
-
-#: 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:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
-#, c-format
-msgid "data %02d: value %d, %d updates\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:97
-msgid "Status OK\n"
-msgstr "Statut OK\n"
-
-#: src/lib/bget_msg.c:101
-#, c-format
-msgid "bget_msg: unknown signal %d\n"
-msgstr ""
-
-#: src/lib/bsock.c:131
-#, c-format
-msgid ""
-"Could not connect to %s on %s:%d. ERR=%s\n"
-"Retrying ...\n"
-msgstr ""
-"Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
-"Réessaie...\n"
-
-#: 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:207
-#, fuzzy, c-format
-msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
-msgstr "Impossible de supprimer le volume \"%s\". ERR=%s"
-
-#: 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: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: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:292
-#, fuzzy, c-format
-msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
-msgstr "Impossible de positionner SO_KEEPALIVE sur la socket : %s\n"
-
-#: 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:374
-#, c-format
-msgid "Socket has errors=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:381
-#, c-format
-msgid "Socket is terminated=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: 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: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:433
-#, c-format
-msgid "Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"
-msgstr ""
-
-#: 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:542
-#, c-format
-msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
-msgstr ""
-
-#: 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: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: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:742 src/lib/bsock.c:761
-#, c-format
-msgid "sockopt error: %s\n"
-msgstr "erreur sockopt : %s\n"
-
-#: 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: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: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: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: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: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: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: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: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:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
-#, fuzzy, c-format
-msgid ""
-"Authorization problem with Director at \"%s:%d\"\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-"Problème d'authentification avec le director.\n"
-"Le plus souvent, les mots de pass ne correspondent pas.\n"
-"Si vous utilisez TLS, il peut y avoir une erreur de validation du "
-"certificat\n"
-"pendant l'initialisation de la connexion TLS.\n"
-"Vous trouverez de l'aide sur\n"
-"http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
-
-#: 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:377
-#, c-format
-msgid "Could not get con mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:482
-msgid "Bacula Message"
-msgstr "Message de Bacula"
-
-#: src/lib/message.c:486
-#, c-format
-msgid "open mail pipe %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:577
-msgid "open mail pipe failed.\n"
-msgstr ""
-
-#: src/lib/message.c:590
-#, c-format
-msgid "close error: ERR=%s\n"
-msgstr "erreur de fermeture : ERR=%s\n"
-
-#: src/lib/message.c:601
-#, c-format
-msgid "Mail prog: %s"
-msgstr ""
-
-#: src/lib/message.c:610
-#, c-format
-msgid ""
-"Mail program terminated in error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-"La commande mail s'est terminée en erreur.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-
-#: 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: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"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-"La commande mail s'est terminée en erreur.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-
-#: 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:1230
-#, c-format
-msgid "%s: ABORTING due to ERROR in %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1234
-#, c-format
-msgid "%s: ERROR TERMINATION at %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1239
-#, c-format
-msgid "%s: Fatal Error because: "
-msgstr "%s : Erreur Fatale car : "
-
-#: 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:1245
-#, c-format
-msgid "%s: ERROR: "
-msgstr "%s : ERREUR : "
-
-#: src/lib/message.c:1247
-#, c-format
-msgid "%s: ERROR in %s:%d "
-msgstr "%s : ERREUR dans %s:%d "
-
-#: src/lib/message.c:1250
-#, c-format
-msgid "%s: Warning: "
-msgstr "%s : Attention : "
-
-#: src/lib/message.c:1253
-#, c-format
-msgid "%s: Security violation: "
-msgstr ""
-
-#: src/lib/message.c:1341
-#, c-format
-msgid "%s ABORTING due to ERROR\n"
-msgstr ""
-
-#: src/lib/message.c:1344
-#, c-format
-msgid "%s ERROR TERMINATION\n"
-msgstr ""
-
-#: src/lib/message.c:1347
-#, fuzzy, c-format
-msgid "%s JobId %u: Fatal error: "
-msgstr "%s : %s Erreur fatale : "
-
-#: src/lib/message.c:1356
-#, fuzzy, c-format
-msgid "%s JobId %u: Error: "
-msgstr "%s : %s Erreur : "
-
-#: src/lib/message.c:1362
-#, fuzzy, c-format
-msgid "%s JobId %u: Warning: "
-msgstr "%s : Attention : "
-
-#: src/lib/message.c:1368
-#, c-format
-msgid "%s JobId %u: Security violation: "
-msgstr ""
-
-#: 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: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: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: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: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:182
-#, c-format
-msgid "Error in select: %s\n"
-msgstr "Erreur sur le select : %s\n"
-
-#: 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:229
-msgid "Could not create client BSOCK.\n"
-msgstr "Impossible de créer la structure BSOCK cliente.\n"
-
-#: 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:253
-#, c-format
-msgid "Could not destroy client queue: ERR=%s\n"
-msgstr "Impossible de détruire la queue cliente : ERR=%s\n"
-
-#: src/lib/bpipe.c:361 src/lib/bpipe.c:444
-msgid "Program killed by Bacula (timeout)\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:65
-#, c-format
-msgid "ASSERT failed at %s:%i: %s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:70
-#, c-format
-msgid "ASSERT failed at %s:%i: %s \n"
-msgstr ""
-
-#: src/lib/lockmgr.c:100
-#, fuzzy, c-format
-msgid "Mutex lock failure. ERR=%s\n"
-msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
-
-#: src/lib/lockmgr.c:110
-#, fuzzy, c-format
-msgid "Mutex unlock failure. ERR=%s\n"
-msgstr "rwl_writeunlock en échec sur %s:%d :. ERR=%s\n"
-
-#: src/lib/lockmgr.c:275 src/lib/lockmgr.c:611 src/lib/lockmgr.c:639
-#: src/lib/jcr.c:321
-#, c-format
-msgid "pthread key create failed: ERR=%s\n"
-msgstr "erreur sur pthread_key_create. ERR=%s\n"
-
-#: src/lib/lockmgr.c:623
-#, fuzzy, c-format
-msgid "pthread_create failed: ERR=%s\n"
-msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
-
-#: src/lib/crypto.c:442
-msgid "Unable to open certificate file"
-msgstr "Impossible d'ouvrir de fichier de certificat"
-
-#: src/lib/crypto.c:449
-msgid "Unable to read certificate from file"
-msgstr "Impossible de lire le certificat à partir du fichier"
-
-#: src/lib/crypto.c:455
-msgid "Unable to extract public key from certificate"
-msgstr "Impossible d'extraire la clef publique à partir du certificat"
-
-#: src/lib/crypto.c:462
-msgid ""
-"Provided certificate does not include the required subjectKeyIdentifier "
-"extension."
-msgstr ""
-"Le certificat fournis n'inclus pas l'extension subjectKeyIdentifier requise"
-
-#: src/lib/crypto.c:469
-#, c-format
-msgid "Unsupported key type provided: %d\n"
-msgstr "Type de clef fourni non supporté : %d\n"
-
-#: src/lib/crypto.c:506 src/lib/crypto.c:554
-msgid "Unable to open private key file"
-msgstr "Impossible d'ouvrir le fichier de clef privée"
-
-#: src/lib/crypto.c:536 src/lib/crypto.c:570
-msgid "Unable to read private key from file"
-msgstr "Impossible de lire la clef privée à partir du fichier"
-
-#: src/lib/crypto.c:629
-#, c-format
-msgid "Unsupported digest type: %d\n"
-msgstr "Le digest spécifié n'est pas supporté : %d\n"
-
-#: src/lib/crypto.c:643
-msgid "OpenSSL digest initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:657
-msgid "OpenSSL digest update failed"
-msgstr ""
-
-#: src/lib/crypto.c:675
-msgid "OpenSSL digest finalize failed"
-msgstr "Initialisation du digest OpenSSL à échoué"
-
-#: src/lib/crypto.c:773
-msgid "OpenSSL digest_new failed"
-msgstr ""
-
-#: src/lib/crypto.c:779
-msgid "OpenSSL sign get digest failed"
-msgstr ""
-
-#: src/lib/crypto.c:818 src/lib/crypto.c:822
-#, fuzzy
-msgid "OpenSSL digest Verify final failed"
-msgstr "Initialisation du contexte clef/IV du cipher OpenSSL à échoué"
-
-#: src/lib/crypto.c:827
-#, fuzzy
-msgid "No signers found for crypto verify.\n"
-msgstr "Aucun volume trouvé pour la restauration.\n"
-
-#: src/lib/crypto.c:888
-msgid "Signature creation failed"
-msgstr "La création de la signature a échouée"
-
-#: src/lib/crypto.c:966
-msgid "Signature decoding failed"
-msgstr "Le décodage de la signature a échoué"
-
-#: src/lib/crypto.c:1043
-msgid "Unsupported cipher type specified\n"
-msgstr "Le cipher spécifié est non supporté\n"
-
-#: src/lib/crypto.c:1192
-msgid "CryptoData decoding failed"
-msgstr "Le décodage du CryptoData a échoué"
-
-#: src/lib/crypto.c:1236
-msgid "Failure decrypting the session key"
-msgstr "Impossible de décrypter la clef de session"
-
-#: src/lib/crypto.c:1287
-#, c-format
-msgid "Unsupported contentEncryptionAlgorithm: %d\n"
-msgstr "contentEncryptionAlgorithm non supporté : %d\n"
-
-#: src/lib/crypto.c:1297 src/lib/crypto.c:1303
-msgid "OpenSSL cipher context initialization failed"
-msgstr "Initialisation du contexte clef/IV du cipher OpenSSL à échoué"
-
-#: src/lib/crypto.c:1310
-msgid "Encryption session provided an invalid symmetric key"
-msgstr ""
-
-#: src/lib/crypto.c:1316
-msgid "Encryption session provided an invalid IV"
-msgstr ""
-
-#: src/lib/crypto.c:1322
-msgid "OpenSSL cipher context key/IV initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1392
-#, c-format
-msgid "Unable to init OpenSSL threading: ERR=%s\n"
-msgstr "Impossible d'initialiser le thread OpenSSL : ERR=%s\n"
-
-#: src/lib/crypto.c:1405
-msgid "Failed to seed OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1431
-msgid "Failed to save OpenSSL PRNG\n"
-msgstr "Impossible de sauvegarder le PRNG OpenSSL\n"
-
-#: src/lib/crypto.c:1492
-#, fuzzy, c-format
-msgid "Unsupported digest type=%d specified\n"
-msgstr "Le cipher spécifié est non supporté\n"
-
-#: src/lib/crypto.c:1512
-#, c-format
-msgid "SHA1Update() returned an error: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1655
-msgid "No error"
-msgstr "Pas d'erreur"
-
-#: src/lib/crypto.c:1657
-#, fuzzy
-msgid "Signer not found"
-msgstr "Le Storage \"%s\" est introuvable.\n"
-
-#: src/lib/crypto.c:1659
-#, fuzzy
-msgid "Recipient not found"
-msgstr "Ressource %s introuvable\n"
-
-#: src/lib/crypto.c:1661
-#, fuzzy
-msgid "Unsupported digest algorithm"
-msgstr "Le digest spécifié n'est pas supporté : %d\n"
-
-#: src/lib/crypto.c:1663
-#, fuzzy
-msgid "Unsupported encryption algorithm"
-msgstr "contentEncryptionAlgorithm non supporté : %d\n"
-
-#: src/lib/crypto.c:1665
-#, fuzzy
-msgid "Signature is invalid"
-msgstr "La création de la signature a échouée"
-
-#: src/lib/crypto.c:1667
-msgid "Decryption error"
-msgstr ""
-
-#: src/lib/crypto.c:1670
-msgid "Internal error"
-msgstr "Erreur interne"
-
-#: src/lib/crypto.c:1672
-msgid "Unknown error"
-msgstr "Erreur inconnue."
-
-#: src/lib/cram-md5.c:109 src/lib/cram-md5.c:137
-msgid "1999 Authorization failed.\n"
-msgstr ""
-
-#: src/lib/priv.c:68
-#, c-format
-msgid "Could not find userid=%s: ERR=%s\n"
-msgstr "Impossible de trouver le userid %s : ERR=%s\n"
-
-#: src/lib/priv.c:74
-#, fuzzy, c-format
-msgid "Could not find password entry. ERR=%s\n"
-msgstr "Impossible de trouver le client %s : ERR=%s\n"
-
-#: src/lib/priv.c:87
-#, c-format
-msgid "Could not find group=%s: ERR=%s\n"
-msgstr "Impossible de trouver le groupe=%s : ERR=%s\n"
-
-#: src/lib/priv.c:95
-#, c-format
-msgid "Could not initgroups for group=%s, userid=%s: ERR=%s\n"
-msgstr ""
-"Impossible d'utiliser initgroups pour le groupe=%s, userid=%s: ERR=%s\n"
-"\n"
-
-#: src/lib/priv.c:98
-#, fuzzy, c-format
-msgid "Could not initgroups for userid=%s: ERR=%s\n"
-msgstr "Impossible d'ouvrir %s : ERR=%s\n"
-
-#: src/lib/priv.c:105
-#, fuzzy, c-format
-msgid "Could not set group=%s: ERR=%s\n"
-msgstr "Impossible d'ouvrir %s : ERR=%s\n"
-
-#: src/lib/priv.c:115
-#, fuzzy, c-format
-msgid "prctl failed: ERR=%s\n"
-msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
-
-#: src/lib/priv.c:119
-#, fuzzy, c-format
-msgid "setreuid failed: ERR=%s\n"
-msgstr "fopen %s en erreur : ERR=%s\n"
-
-#: src/lib/priv.c:123
-#, fuzzy, c-format
-msgid "cap_from_text failed: ERR=%s\n"
-msgstr "fopen %s en erreur : ERR=%s\n"
-
-#: src/lib/priv.c:127
-#, fuzzy, c-format
-msgid "cap_set_proc failed: ERR=%s\n"
-msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
-
-#: src/lib/priv.c:131
-msgid "Keep readall caps not implemented this OS or missing libraries.\n"
-msgstr ""
-
-#: src/lib/priv.c:135
-#, c-format
-msgid "Could not set specified userid: %s\n"
-msgstr ""
-
-#: src/lib/openssl.c:143 src/lib/openssl.c:214
-#, c-format
-msgid "Unable to destroy mutex: ERR=%s\n"
-msgstr "Impossible de détruire le mutex : ERR=%s\n"
-
-#: src/lib/util.c:183
-msgid "Running"
-msgstr "En cours"
-
-#: src/lib/util.c:186
-msgid "Blocked"
-msgstr "Bloqué"
-
-#: src/lib/util.c:192
-msgid "Error: incomplete job"
-msgstr ""
-
-#: src/lib/util.c:199
-msgid "Non-fatal error"
-msgstr "Erreur non fatale"
-
-#: src/lib/util.c:205 src/lib/util.c:337
-msgid "Canceled"
-msgstr "Annulé"
-
-#: src/lib/util.c:208
-msgid "Verify differences"
-msgstr "Vérification des différences"
-
-#: src/lib/util.c:211
-msgid "Waiting on FD"
-msgstr "En attente du FD"
-
-#: src/lib/util.c:214
-msgid "Wait on SD"
-msgstr "En attente du SD"
-
-#: src/lib/util.c:217
-msgid "Wait for new Volume"
-msgstr "En attente d'un nouveau Volume"
-
-#: src/lib/util.c:220
-msgid "Waiting for mount"
-msgstr "En attente d'un montage"
-
-#: src/lib/util.c:223
-msgid "Waiting for Storage resource"
-msgstr "En attente du Storage"
-
-#: src/lib/util.c:226
-msgid "Waiting for Job resource"
-msgstr ""
-
-#: src/lib/util.c:229
-msgid "Waiting for Client resource"
-msgstr ""
-
-#: src/lib/util.c:232
-msgid "Waiting on Max Jobs"
-msgstr ""
-
-#: src/lib/util.c:235
-msgid "Waiting for Start Time"
-msgstr ""
-
-#: src/lib/util.c:238
-msgid "Waiting on Priority"
-msgstr ""
-
-#: src/lib/util.c:257
-#, c-format
-msgid "Unknown Job termination status=%d"
-msgstr ""
-
-#: src/lib/util.c:273
-#, fuzzy
-msgid "Completed successfully"
-msgstr "Restauration effectuée."
-
-#: src/lib/util.c:276
-msgid "Completed with warnings"
-msgstr "Terminé avec des avertissements"
-
-#: src/lib/util.c:279
-msgid "Terminated with errors"
-msgstr "Terminé avec des erreurs"
-
-#: src/lib/util.c:282
-msgid "Fatal error"
-msgstr "Erreur fatale"
-
-#: src/lib/util.c:285
-msgid "Created, not yet running"
-msgstr "Créé, mais non démarré"
-
-#: src/lib/util.c:288
-msgid "Canceled by user"
-msgstr "Annulé par l'utilisateur"
-
-#: src/lib/util.c:291
-#, fuzzy
-msgid "Verify found differences"
-msgstr "Vérification des différences"
-
-#: src/lib/util.c:294
-msgid "Waiting for File daemon"
-msgstr "En attente du client"
-
-#: src/lib/util.c:297
-msgid "Waiting for Storage daemon"
-msgstr "En attente du Storage"
-
-#: src/lib/util.c:300
-msgid "Waiting for higher priority jobs"
-msgstr "Attend qu'un job plus prioritaire se termine"
-
-#: src/lib/util.c:303
-msgid "Batch inserting file records"
-msgstr "Mise à jour du catalogue"
-
-#: src/lib/util.c:334
-msgid "Fatal Error"
-msgstr "Erreur Fatale"
-
-#: src/lib/util.c:340
-msgid "Differences"
-msgstr ""
-
-#: src/lib/util.c:343
-msgid "Unknown term code"
-msgstr ""
-
-#: src/lib/util.c:359 src/lib/jcr.c:232
-msgid "Backup"
-msgstr "Backup"
-
-#: src/lib/util.c:362
-#, fuzzy
-msgid "Migrated Job"
-msgstr "Migrer"
-
-#: src/lib/util.c:365
-msgid "Verify"
-msgstr "Vérifier"
-
-#: src/lib/util.c:368 src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:2000
-msgid "Restore"
-msgstr "Restaurer"
-
-#: src/lib/util.c:371 src/wx-console/wxbmainframe.cpp:276
-msgid "Console"
-msgstr ""
-
-#: src/lib/util.c:374
-msgid "System or Console"
-msgstr ""
-
-#: src/lib/util.c:377
-msgid "Admin"
-msgstr "Admin"
-
-#: src/lib/util.c:380 src/lib/util.c:470
-msgid "Archive"
-msgstr "Archiver"
-
-#: src/lib/util.c:383
-#, fuzzy
-msgid "Job Copy"
-msgstr "Copier"
-
-#: src/lib/util.c:386
-msgid "Copy"
-msgstr "Copier"
-
-#: src/lib/util.c:389
-msgid "Migrate"
-msgstr "Migrer"
-
-#: src/lib/util.c:392
-msgid "Scan"
-msgstr ""
-
-#: src/lib/util.c:396
-msgid "Unknown Type"
-msgstr ""
-
-#: src/lib/util.c:406
-msgid "Truncate"
-msgstr ""
-
-#: src/lib/util.c:409 src/filed/restore.c:1164
-msgid "None"
-msgstr ""
-
-#: src/lib/util.c:441
-msgid "Verify Init Catalog"
-msgstr ""
-
-#: src/lib/util.c:450
-msgid "Verify Data"
-msgstr ""
-
-#: src/lib/util.c:453
-msgid "Virtual Full"
-msgstr ""
-
-#: src/lib/util.c:469
-msgid "Append"
-msgstr ""
-
-#: src/lib/util.c:471
-#, fuzzy
-msgid "Disabled"
-msgstr "est bloqué"
-
-#: src/lib/util.c:473
-msgid "Used"
-msgstr ""
-
-#: src/lib/util.c:474
-msgid "Cleaning"
-msgstr ""
-
-#: src/lib/util.c:475
-msgid "Purged"
-msgstr ""
-
-#: src/lib/util.c:476
-#, fuzzy
-msgid "Recycle"
-msgstr "RecyclePool"
-
-#: src/lib/util.c:477
-msgid "Read-Only"
-msgstr ""
-
-#: src/lib/util.c:489
-#, fuzzy
-msgid "Invalid volume status"
-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:1180
-msgid "*none*"
-msgstr ""
-
-#: src/lib/util.c:867
-msgid "Working directory not defined. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:870
-#, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:874
-#, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:330 src/lib/devlock.c:330
-msgid "writeunlock called too many times.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:335 src/lib/devlock.c:335
-msgid "writeunlock by non-owner.\n"
-msgstr ""
-
-#: 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"
-
-#: src/lib/tls.c:90
-#, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
-msgstr ""
-
-#: src/lib/tls.c:127
-msgid "Error initializing SSL context"
-msgstr "Erreur pendant l'initialisation du contexte SSL"
-
-#: src/lib/tls.c:148
-msgid "Error loading certificate verification stores"
-msgstr ""
-
-#: src/lib/tls.c:153
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
-msgstr ""
-
-#: src/lib/tls.c:164
-msgid "Error loading certificate file"
-msgstr "Erreur dans le chargement du certificat"
-
-#: src/lib/tls.c:172
-msgid "Error loading private key"
-msgstr "Erreur dans le chargement de la clef privée"
-
-#: src/lib/tls.c:180
-msgid "Unable to open DH parameters file"
-msgstr "Impossible d'ouvrir le fichier de paramètre DH"
-
-#: src/lib/tls.c:186
-msgid "Unable to load DH parameters from specified file"
-msgstr "Impossible de charger les paramètres DH à partir du fichier spécifié"
-
-#: src/lib/tls.c:190
-msgid "Failed to set TLS Diffie-Hellman parameters"
-msgstr "Impossible de positionner les paramètres TLS Diffie-Hellman"
-
-#: src/lib/tls.c:200
-msgid "Error setting cipher list, no valid ciphers available\n"
-msgstr ""
-
-#: src/lib/tls.c:259
-msgid "Peer failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:304
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:416
-msgid "Error creating file descriptor-based BIO"
-msgstr ""
-
-#: src/lib/tls.c:427
-msgid "Error creating new SSL object"
-msgstr "Erreur pendant la création d'un nouvel objet SSL"
-
-#: src/lib/tls.c:491 src/lib/tls.c:514
-msgid "Connect failure"
-msgstr "Erreur de connexion"
-
-#: src/lib/tls.c:594 src/lib/tls.c:598
-msgid "TLS shutdown failure."
-msgstr ""
-
-#: src/lib/tls.c:653 src/lib/tls.c:679
-msgid "TLS read/write failure."
-msgstr ""
-
-#: src/lib/jcr.c:234
-msgid "Verifying"
-msgstr "Vérification"
-
-#: src/lib/jcr.c:236
-msgid "Restoring"
-msgstr "Restauration"
-
-#: src/lib/jcr.c:238
-msgid "Archiving"
-msgstr "Archivage"
-
-#: src/lib/jcr.c:240
-msgid "Copying"
-msgstr "Copier"
-
-#: src/lib/jcr.c:242
-msgid "Migration"
-msgstr "Migrer"
-
-#: src/lib/jcr.c:244
-#, fuzzy
-msgid "Scanning"
-msgstr "En cours"
-
-#: src/lib/jcr.c:246
-msgid "Unknown operation"
-msgstr "Opération inconnue"
-
-#: src/lib/jcr.c:255
-msgid "backup"
-msgstr "backup"
-
-#: src/lib/jcr.c:257
-msgid "verified"
-msgstr "vérifié"
-
-#: src/lib/jcr.c:257
-msgid "verify"
-msgstr "Vérifier"
-
-#: src/lib/jcr.c:259
-msgid "restored"
-msgstr "Restauré"
-
-#: src/lib/jcr.c:259
-msgid "restore"
-msgstr "restaurer"
-
-#: src/lib/jcr.c:261
-msgid "archived"
-msgstr "archivé"
-
-#: src/lib/jcr.c:261
-msgid "archive"
-msgstr "archiver"
-
-#: src/lib/jcr.c:263
-msgid "copied"
-msgstr "copié"
-
-#: src/lib/jcr.c:263
-msgid "copy"
-msgstr "copier"
-
-#: src/lib/jcr.c:265
-msgid "migrated"
-msgstr "migrer"
-
-#: src/lib/jcr.c:265
-msgid "migrate"
-msgstr "migré"
-
-#: src/lib/jcr.c:267
-msgid "scanned"
-msgstr "scanné"
-
-#: src/lib/jcr.c:267
-msgid "scan"
-msgstr "scanner"
-
-#: src/lib/jcr.c:269
-msgid "unknown action"
-msgstr "action inconnue"
-
-#: src/lib/jcr.c:343
-#, c-format
-msgid "pthread_once failed. ERR=%s\n"
-msgstr "erreur sur pthread_once. ERR=%s\n"
-
-#: src/lib/jcr.c:350
-#, fuzzy, c-format
-msgid "Could not init msg_queue mutex. ERR=%s\n"
-msgstr "Impossible d'initialiser la queue cliente : ERR=%s\n"
-
-#: src/lib/jcr.c:403
-msgid "NULL jcr.\n"
-msgstr "NULL jcr.\n"
-
-#: src/lib/jcr.c:509
-#, c-format
-msgid "JCR use_count=%d JobId=%d\n"
-msgstr "JCR use_count=%d JobId=%d\n"
-
-#: src/lib/jcr.c:619
-#, fuzzy, c-format
-msgid "pthread_setspecific failed: ERR=%s\n"
-msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
-
-#: src/lib/jcr.c:1103
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading Storage "
-"daemon.\n"
-msgstr ""
-"Le watchdog a envoyé un signal après %d secs au thread bloqué en écoute du "
-"SD.\n"
-
-#: src/lib/jcr.c:1115
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
-msgstr ""
-"Le watchdog a envoyé un signal après %d secs au thread bloqué en écoute du "
-"FD.\n"
-
-#: src/lib/jcr.c:1127
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading Director.\n"
-msgstr ""
-"Le watchdog a envoyé un signal après %d secs au thread bloqué en écoute du "
-"Director.\n"
-
-#: src/lib/res.c:65
-#, c-format
-msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
-msgstr "rwl_writelock en échec sur %s:%d : ERR=%s\n"
-
-#: src/lib/res.c:75
-#, c-format
-msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
-msgstr "rwl_writeunlock en échec sur %s:%d :. ERR=%s\n"
-
-#: src/lib/parse_conf.c:177
-msgid "***UNKNOWN***"
-msgstr ""
-
-#: src/lib/parse_conf.c:278 src/lib/parse_conf.c:299
-#, c-format
-msgid "expected an =, got: %s"
-msgstr "attendait un =, eu : %s"
-
-#: src/lib/parse_conf.c:308
-#, c-format
-msgid "Unknown item code: %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:348
-#, c-format
-msgid "message type: %s not found"
-msgstr ""
-
-#: src/lib/parse_conf.c:386
-#, c-format
-msgid "Attempt to redefine name \"%s\" to \"%s\"."
-msgstr ""
-
-#: src/lib/parse_conf.c:483
-#, c-format
-msgid "Attempt to redefine resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:519
-#, c-format
-msgid "Too many %s directives. Max. is %d. line %d: %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:530
-#, c-format
-msgid "Could not find config Resource \"%s\" referenced on line %d : %s\n"
-msgstr "Impossible de trouver la ressource \"%s\" utilisée ligne %d : %s\n"
-
-#: src/lib/parse_conf.c:593
-#, c-format
-msgid "Missing config Resource \"%s\" referenced on line %d : %s\n"
-msgstr "Impossible de trouver la ressource \"%s\" utilisée ligne %d : %s\n"
-
-#: src/lib/parse_conf.c:665
-#, c-format
-msgid "expected a size number, got: %s"
-msgstr "attendait une taille, eu : %s"
-
-#: src/lib/parse_conf.c:670
-#, fuzzy, c-format
-msgid "expected a speed number, got: %s"
-msgstr "attendait une taille, eu : %s"
-
-#: src/lib/parse_conf.c:681
-#, fuzzy, c-format
-msgid "expected a %s, got: %s"
-msgstr "attendait un =, eu : %s"
-
-#: src/lib/parse_conf.c:682
-msgid "size"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "speed"
-msgstr ""
-
-#: src/lib/parse_conf.c:803
-#, c-format
-msgid "Expected a Tape Label keyword, got: %s"
-msgstr "Attendait un Label de lecteur, a pas : %s"
-
-#: src/lib/parse_conf.c:886
-#, c-format
-msgid "Unable to initialize resource lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:894
-#, fuzzy
-msgid "Config filename too long.\n"
-msgstr "Nom de Volume trop long.\n"
-
-#: src/lib/parse_conf.c:917
-#, c-format
-msgid "Cannot open config file \"%s\": %s\n"
-msgstr "Impossible d'ouvrir le fichier de configuration \"%s\" : %s\n"
-
-#: src/lib/parse_conf.c:934
-msgid ""
-"Currently we cannot handle UTF-16 source files. Please convert the conf file "
-"to UTF-8\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:938
-#, c-format
-msgid "Expected a Resource name identifier, got: %s"
-msgstr "Attendait un identifiant de Ressource, a pas : %s"
-
-#: src/lib/parse_conf.c:954
-#, c-format
-msgid "expected resource name, got: %s"
-msgstr "attendait un nom de ressource, eu : %s"
-
-#: src/lib/parse_conf.c:965
-#, c-format
-msgid "not in resource definition: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:990
-#, c-format
-msgid ""
-"Keyword \"%s\" not permitted in this resource.\n"
-"Perhaps you left the trailing brace off of the previous resource."
-msgstr ""
-
-#: src/lib/parse_conf.c:1001
-msgid "Name not specified for resource"
-msgstr ""
-
-#: src/lib/parse_conf.c:1011
-#, c-format
-msgid "unexpected token %d %s in resource definition"
-msgstr "mot clés inattendu %d %s dans la définition de la ressource"
-
-#: src/lib/parse_conf.c:1017
-#, c-format
-msgid "Unknown parser state %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:1022
-msgid "End of conf file reached with unclosed resource."
-msgstr ""
-
-#: src/lib/mem_pool.c:112
-#, c-format
-msgid "MemPool index %d larger than max %d\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:130 src/lib/mem_pool.c:150 src/lib/mem_pool.c:186
-#: src/lib/mem_pool.c:257 src/lib/mem_pool.c:277 src/lib/mem_pool.c:312
-#: src/lib/mem_pool.c:623
-#, c-format
-msgid "Out of memory requesting %d bytes\n"
-msgstr "Plus de mémoire à l'allocation de %d octets\n"
-
-#: src/lib/mem_pool.c:167
-msgid "obuf is NULL\n"
-msgstr ""
-
-#: src/lib/berrno.c:63
-msgid "Child exited normally."
-msgstr ""
-
-#: src/lib/berrno.c:70
-msgid "Unknown error during program execvp"
-msgstr ""
-
-#: src/lib/berrno.c:73
-#, c-format
-msgid "Child exited with code %d"
-msgstr ""
-
-#: src/lib/berrno.c:81
-#, c-format
-msgid "Child died from signal %d: %s"
-msgstr "Le processus fils est mort par le signal %d : %s"
-
-#: src/lib/berrno.c:87
-msgid "Invalid errno. No error message possible."
-msgstr ""
-
-#: src/lib/bnet.c:134
-#, c-format
-msgid "Attr spool write error. ERR=%s\n"
-msgstr "Erreur pendant l'écriture des attributs dans le spool. ERR=%s\n"
-
-#: src/lib/bnet.c:279 src/lib/bnet.c:320
-msgid "TLS connection initialization failed.\n"
-msgstr "Initialisation de la connexion TLS échouée.\n"
-
-#: src/lib/bnet.c:287
-msgid "TLS Negotiation failed.\n"
-msgstr "Négociation TLS échouée.\n"
-
-#: src/lib/bnet.c:293 src/lib/bnet.c:335
-msgid ""
-"TLS certificate verification failed. Peer certificate did not match a "
-"required commonName\n"
-msgstr ""
-
-#: src/lib/bnet.c:342
-#, c-format
-msgid ""
-"TLS host certificate verification failed. Host name \"%s\" did not match "
-"presented certificate\n"
-msgstr ""
-
-#: src/lib/bnet.c:359
-msgid "TLS enabled but not configured.\n"
-msgstr "TLS activé mais non configuré.\n"
-
-#: src/lib/bnet.c:365
-msgid "TLS enable but not configured.\n"
-msgstr "TLS actif mais non configuré.\n"
-
-#: src/lib/bnet.c:481
-msgid "No problem."
-msgstr "Pas de problème."
-
-#: src/lib/bnet.c:484
-msgid "Authoritative answer for host not found."
-msgstr ""
-
-#: src/lib/bnet.c:487
-msgid "Non-authoritative for host not found, or ServerFail."
-msgstr ""
-
-#: src/lib/bnet.c:490
-msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
-msgstr ""
-
-#: src/lib/bnet.c:493
-msgid "Valid name, no data record of resquested type."
-msgstr ""
-
-#: src/lib/bnet.c:496
-msgid "Unknown error."
-msgstr "Erreur inconnue."
-
-#: src/lib/bnet.c:755
-#, c-format
-msgid "Unknown sig %d"
-msgstr "sig inconnu %d"
-
-#: src/lib/signal.c:67
-msgid "Invalid signal number"
-msgstr ""
-
-#: 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: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:169
-#, c-format
-msgid "Kaboom! exepath=%s\n"
-msgstr "Kaboom ! exepath=%s\n"
-
-#: src/lib/signal.c:210
-#, c-format
-msgid "Fork error: ERR=%s\n"
-msgstr "Fork en erreur : ERR=%s\n"
-
-#: 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:222
-#, c-format
-msgid "execv: %s failed: ERR=%s\n"
-msgstr "execv : %s en échec : ERR=%s\n"
-
-#: src/lib/signal.c:244
-#, c-format
-msgid "It looks like the traceback worked...\n"
-msgstr ""
-
-#: 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:312
-msgid "UNKNOWN SIGNAL"
-msgstr "SIGNAL INCONNU"
-
-#: src/lib/signal.c:313
-msgid "Hangup"
-msgstr "Hangup"
-
-#: src/lib/signal.c:314
-msgid "Interrupt"
-msgstr ""
-
-#: src/lib/signal.c:315
-msgid "Quit"
-msgstr "Quit"
-
-#: src/lib/signal.c:316
-msgid "Illegal instruction"
-msgstr ""
-
-#: src/lib/signal.c:317
-msgid "Trace/Breakpoint trap"
-msgstr ""
-
-#: src/lib/signal.c:318
-msgid "Abort"
-msgstr "Abort"
-
-#: src/lib/signal.c:320
-msgid "EMT instruction (Emulation Trap)"
-msgstr ""
-
-#: src/lib/signal.c:323
-msgid "IOT trap"
-msgstr "IOT trap"
-
-#: src/lib/signal.c:325
-msgid "BUS error"
-msgstr "BUS error"
-
-#: src/lib/signal.c:326
-msgid "Floating-point exception"
-msgstr ""
-
-#: src/lib/signal.c:327
-msgid "Kill, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:328
-msgid "User-defined signal 1"
-msgstr ""
-
-#: src/lib/signal.c:329
-msgid "Segmentation violation"
-msgstr "Erreur de segmentation"
-
-#: src/lib/signal.c:330
-msgid "User-defined signal 2"
-msgstr ""
-
-#: src/lib/signal.c:331
-msgid "Broken pipe"
-msgstr "Tube brisé"
-
-#: src/lib/signal.c:332
-msgid "Alarm clock"
-msgstr "Alarm clock"
-
-#: src/lib/signal.c:333
-msgid "Termination"
-msgstr ""
-
-#: src/lib/signal.c:335
-msgid "Stack fault"
-msgstr ""
-
-#: src/lib/signal.c:337
-msgid "Child status has changed"
-msgstr ""
-
-#: src/lib/signal.c:338
-msgid "Continue"
-msgstr "Continue"
-
-#: src/lib/signal.c:339
-msgid "Stop, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:340
-msgid "Keyboard stop"
-msgstr ""
-
-#: src/lib/signal.c:341
-msgid "Background read from tty"
-msgstr ""
-
-#: src/lib/signal.c:342
-msgid "Background write to tty"
-msgstr ""
-
-#: src/lib/signal.c:343
-msgid "Urgent condition on socket"
-msgstr ""
-
-#: src/lib/signal.c:344
-msgid "CPU limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:345
-msgid "File size limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:346
-msgid "Virtual alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:347
-msgid "Profiling alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:348
-msgid "Window size change"
-msgstr ""
-
-#: src/lib/signal.c:349
-msgid "I/O now possible"
-msgstr ""
-
-#: src/lib/signal.c:351
-msgid "Power failure restart"
-msgstr ""
-
-#: src/lib/signal.c:354
-msgid "No runnable lwp"
-msgstr ""
-
-#: src/lib/signal.c:357
-msgid "SIGLWP special signal used by thread library"
-msgstr ""
-
-#: src/lib/signal.c:360
-msgid "Checkpoint Freeze"
-msgstr ""
-
-#: src/lib/signal.c:363
-msgid "Checkpoint Thaw"
-msgstr ""
-
-#: src/lib/signal.c:366
-msgid "Thread Cancellation"
-msgstr ""
-
-#: 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: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:357
-msgid "Buffer overflow.\n"
-msgstr "Buffer overflow.\n"
-
-#: src/lib/bsys.c:423
-msgid "Bad errno"
-msgstr "Mauvais errno"
-
-#: src/lib/bsys.c:438
-#, c-format
-msgid "Memset for %d bytes at %s:%d\n"
-msgstr ""
-
-#: 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:483
-#, c-format
-msgid ""
-"%s is already running. pid=%d\n"
-"Check file %s\n"
-msgstr ""
-
-#: 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: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:627
-#, c-format
-msgid "Write final hdr error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:236
-#, c-format
-msgid "%s: run %s \"%s\"\n"
-msgstr "%s: exécution %s de la commande \"%s\"\n"
-
-#: src/lib/runscript.c:245
-#, c-format
-msgid "Runscript: %s could not execute. ERR=%s\n"
-msgstr "Runscript : impossible d'exécuter %s. ERR=%s\n"
-
-#: src/lib/runscript.c:254
-#, c-format
-msgid "%s: %s\n"
-msgstr "%s: %s\n"
-
-#: src/lib/runscript.c:259
-#, c-format
-msgid "Runscript: %s returned non-zero status=%d. ERR=%s\n"
-msgstr ""
-"Runscript : %s s'est terminé avec un statut différent de 0 statut=%d. ERR="
-"%s\n"
-
-#: src/lib/lex.c:91 src/wx-console/console_thread.cpp:212
-#, c-format
-msgid "Problem probably begins at line %d.\n"
-msgstr "Le problème commence sûrement au début de la ligne %d.\n"
-
-#: src/lib/lex.c:96 src/wx-console/console_thread.cpp:217
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-"Erreur de config : %s\n"
-"                 : ligne %d, col %d du fichier %s\n"
-"%s\n"
-"%s"
-
-#: src/lib/lex.c:100
-#, c-format
-msgid "Config error: %s\n"
-msgstr "Erreur de config : %s\n"
-
-#: src/lib/lex.c:129
-msgid "Close of NULL file\n"
-msgstr ""
-
-#: 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: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:292
-msgid "none"
-msgstr "none"
-
-#: src/lib/lex.c:293
-msgid "comment"
-msgstr "comment"
-
-#: src/lib/lex.c:294
-msgid "number"
-msgstr "number"
-
-#: src/lib/lex.c:295
-msgid "ip_addr"
-msgstr "ip_addr"
-
-# identifiant
-#: src/lib/lex.c:296
-msgid "identifier"
-msgstr "identifier"
-
-#: src/lib/lex.c:297
-msgid "string"
-msgstr "string"
-
-#: src/lib/lex.c:298
-msgid "quoted_string"
-msgstr "quoted_string"
-
-#: src/lib/lex.c:299
-#, fuzzy
-msgid "include"
-msgstr "Depuis"
-
-#: src/lib/lex.c:300
-#, fuzzy
-msgid "include_quoted_string"
-msgstr "quoted_string"
-
-#: src/lib/lex.c:301
-msgid "UTF-8 Byte Order Mark"
-msgstr ""
-
-#: src/lib/lex.c:302
-msgid "UTF-16le Byte Order Mark"
-msgstr ""
-
-#: 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: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: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: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: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:783
-#, c-format
-msgid "expected a name, got %s: %s"
-msgstr "attendait un nom, pas %s : %s"
-
-#: 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:795
-#, c-format
-msgid "expected a string, got %s: %s"
-msgstr "attendait une chaîne, pas %s : %s"
-
-#: src/lib/var.c:2669
-msgid "everything ok"
-msgstr "tout est ok"
-
-#: src/lib/var.c:2670
-msgid "incomplete named character"
-msgstr ""
-
-#: src/lib/var.c:2671
-msgid "incomplete hexadecimal value"
-msgstr "valeur hexadécimale incomplète"
-
-#: src/lib/var.c:2672
-msgid "invalid hexadecimal value"
-msgstr "valeur hexadécimale invalide"
-
-#: src/lib/var.c:2673
-msgid "octal value too large"
-msgstr "valeur octal trop grande"
-
-#: src/lib/var.c:2674
-msgid "invalid octal value"
-msgstr "valeur octal invalide"
-
-#: src/lib/var.c:2675
-msgid "incomplete octal value"
-msgstr "valeur octal incomplète"
-
-#: src/lib/var.c:2676
-msgid "incomplete grouped hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2677
-msgid "incorrect character class specification"
-msgstr ""
-
-#: src/lib/var.c:2678
-msgid "invalid expansion configuration"
-msgstr ""
-
-#: src/lib/var.c:2679
-msgid "out of memory"
-msgstr "plus de mémoire"
-
-#: src/lib/var.c:2680
-msgid "incomplete variable specification"
-msgstr ""
-
-#: src/lib/var.c:2681
-msgid "undefined variable"
-msgstr "variable non définie"
-
-#: src/lib/var.c:2682
-msgid "input is neither text nor variable"
-msgstr "l'entrée n'est ni du texte ni une variable"
-
-#: src/lib/var.c:2683
-msgid "unknown command character in variable"
-msgstr ""
-
-#: src/lib/var.c:2684
-msgid "malformatted search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2685
-msgid "unknown flag in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2686
-msgid "invalid regex in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2687
-msgid "missing parameter in command"
-msgstr ""
-
-#: src/lib/var.c:2688
-msgid "empty search string in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2689
-msgid "start offset missing in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2690
-msgid "offsets in cut operation delimited by unknown character"
-msgstr ""
-
-#: src/lib/var.c:2691
-msgid "range out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2692
-msgid "offset out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2693
-msgid "logic error in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2694
-msgid "malformatted transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2695
-msgid "source and target class mismatch in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2696
-msgid "empty character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2697
-msgid "incorrect character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2698
-msgid "malformatted padding operation"
-msgstr ""
-
-#: src/lib/var.c:2699
-msgid "width parameter missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2700
-msgid "fill string missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2701
-msgid "unknown quoted pair in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2702
-msgid "sub-matching reference out of range"
-msgstr ""
-
-#: src/lib/var.c:2703
-msgid "invalid argument"
-msgstr "argument invalide"
-
-#: src/lib/var.c:2704
-msgid "incomplete quoted pair"
-msgstr ""
-
-#: src/lib/var.c:2705
-msgid "lookup function does not support variable arrays"
-msgstr ""
-
-#: src/lib/var.c:2706
-msgid "index of array variable contains an invalid character"
-msgstr ""
-
-#: src/lib/var.c:2707
-msgid "index of array variable is incomplete"
-msgstr ""
-
-#: src/lib/var.c:2708
-msgid "bracket expression in array variable's index not closed"
-msgstr ""
-
-#: src/lib/var.c:2709
-msgid "division by zero error in index specification"
-msgstr ""
-
-#: src/lib/var.c:2710
-msgid "unterminated loop construct"
-msgstr ""
-
-#: src/lib/var.c:2711
-msgid "invalid character in loop limits"
-msgstr ""
-
-#: src/lib/var.c:2712
-msgid "malformed operation argument list"
-msgstr ""
-
-#: src/lib/var.c:2713
-msgid "undefined operation"
-msgstr "opération indéfinie"
-
-#: src/lib/var.c:2714
-msgid "formatting failure"
-msgstr ""
-
-#: src/lib/var.c:2723
-msgid "unknown error"
-msgstr "erreur inconnue"
-
-#: src/lib/address_conf.c:62
-#, c-format
-msgid "Only ipv4 and ipv6 are supported (%d)\n"
-msgstr "Seulement l'ipv4 et l'ipv6 sont supportés (%d)\n"
-
-#: src/lib/address_conf.c:66
-#, c-format
-msgid "Only ipv4 is supported (%d)\n"
-msgstr "Seulement l'ipv4 est supporté (%d)\n"
-
-#: src/lib/address_conf.c:175
-#, c-format
-msgid "It was tried to assign a ipv6 address to a ipv4(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:184
-#, c-format
-msgid "It was tried to assign a ipv4 address to a ipv6(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:263
-#, c-format
-msgid "Can't add default address (%s)\n"
-msgstr "Impossible d'ajouter l'adresse par défaut (%s)\n"
-
-#: src/lib/address_conf.c:292
-msgid "the old style addresses cannot be mixed with new style"
-msgstr ""
-
-#: src/lib/address_conf.c:313
-#, c-format
-msgid "can't resolve service(%s)"
-msgstr "impossible de trouver une correspondance pour le service (%s)"
-
-#: src/lib/address_conf.c:322
-#, c-format
-msgid "can't resolve hostname(%s) %s"
-msgstr "impossible de résoudre le hostname (%s) %s"
-
-#: src/lib/address_conf.c:412 src/lib/address_conf.c:443
-#, c-format
-msgid "Expected a block begin { , got: %s"
-msgstr "Attendait un début de bloc {, pas : %s"
-
-#: src/lib/address_conf.c:417
-msgid "Empty addr block is not allowed"
-msgstr ""
-
-#: src/lib/address_conf.c:421
-#, c-format
-msgid "Expected a string, got: %s"
-msgstr "Attendait une chaîne, pas : %s"
-
-#: src/lib/address_conf.c:430
-#, c-format
-msgid "Expected a string [ip|ipv4|ipv6], got: %s"
-msgstr "Attentait la chaîne [ip|ipv4|ipv6], pas : %s"
-
-#: src/lib/address_conf.c:434
-#, c-format
-msgid "Expected a string [ip|ipv4], got: %s"
-msgstr "Attendait la chaîne [ip|ipv4], pas : %s"
-
-#: src/lib/address_conf.c:439 src/lib/address_conf.c:469
-#, c-format
-msgid "Expected a equal =, got: %s"
-msgstr "Attendait un égal =, pas : %s"
-
-#: src/lib/address_conf.c:450 src/lib/address_conf.c:465
-#, c-format
-msgid "Expected a identifier [addr|port], got: %s"
-msgstr "Attendait un identifiant [addr|port], pas : %s"
-
-#: src/lib/address_conf.c:455
-msgid "Only one port per address block"
-msgstr "Seulement un port par bloc d'adresse"
-
-#: src/lib/address_conf.c:461
-msgid "Only one addr per address block"
-msgstr "Seulement une adresse par bloc d'adresse"
-
-#: src/lib/address_conf.c:477
-#, c-format
-msgid "Expected a number or a string, got: %s"
-msgstr "Attendait un nombre ou une chaîne, pas : %s"
-
-#: src/lib/address_conf.c:483 src/lib/address_conf.c:516
-#, c-format
-msgid "Expected an IP number or a hostname, got: %s"
-msgstr "Attendait une adresse IP ou un nom de machine, pas : %s"
-
-#: src/lib/address_conf.c:489
-msgid "State machine missmatch"
-msgstr ""
-
-#: src/lib/address_conf.c:495 src/lib/address_conf.c:507
-#, c-format
-msgid "Expected a end of block }, got: %s"
-msgstr "Attendait une fin de bloc }, pas : %s"
-
-#: src/lib/address_conf.c:501
-#, c-format
-msgid "Can't add hostname(%s) and port(%s) to addrlist (%s)"
-msgstr ""
-"Impossible d'ajouter le hostname (%s) et le port (%s) à la liste d'adresse "
-"(%s)"
-
-#: src/lib/address_conf.c:521 src/lib/address_conf.c:535
-#, c-format
-msgid "can't add port (%s) to (%s)"
-msgstr "impossible d'ajouter le port (%s) à (%s)"
-
-#: src/lib/address_conf.c:530
-#, c-format
-msgid "Expected a port number or string, got: %s"
-msgstr "Attendait un numéro de port ou une chaîne, pas : %s"
-
-#: src/lib/edit.c:478
-msgid "Empty name not allowed.\n"
-msgstr ""
-
-#: src/lib/edit.c:488
-#, c-format
-msgid "Illegal character \"%c\" in name.\n"
-msgstr "Caractère illégal « %c » dans le nom.\n"
-
-#: src/lib/edit.c:495
-msgid "Name too long.\n"
-msgstr "Nom trop long.\n"
-
-#: src/findlib/savecwd.c:60
-#, fuzzy, c-format
-msgid "Cannot open current directory: ERR=%s\n"
-msgstr "Impossible d'ouvrir le fichier inclus : %s. ERR=%s\n"
-
-#: src/findlib/savecwd.c:71
-#, fuzzy, c-format
-msgid "Cannot get current directory: ERR=%s\n"
-msgstr "change le répertoire courant"
-
-#: src/findlib/savecwd.c:95 src/findlib/savecwd.c:106
-#, fuzzy, c-format
-msgid "Cannot reset current directory: ERR=%s\n"
-msgstr "change le répertoire courant"
-
-#: src/findlib/mkpath.c:137
-#, c-format
-msgid "Cannot create directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:141 src/findlib/mkpath.c:202
-#, fuzzy, c-format
-msgid "%s exists but is not a directory.\n"
-msgstr "%s doit être un répertoire.\n"
-
-#: src/findlib/mkpath.c:164
-#, c-format
-msgid "Cannot change owner and/or group of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:169
-#, c-format
-msgid "Cannot change permissions of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:239
-#, fuzzy, c-format
-msgid "%c: is not a valid drive.\n"
-msgstr "%s : est une commande invalide.\n"
-
-#: src/findlib/mkpath.c:283
-msgid "Too many subdirectories. Some permissions not reset.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:483
-#, c-format
-msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:509 src/findlib/attribs.c:516
-#, c-format
-msgid "Unable to set file owner %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:522
-#, c-format
-msgid "Unable to set file modes %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:532
-#, c-format
-msgid "Unable to set file times %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:546
-#, c-format
-msgid "Unable to set file flags %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:799
-#, c-format
-msgid "Error in %s file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:816
-#, c-format
-msgid "Error in %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/enable_priv.c:92
-msgid "AdjustTokenPrivileges set "
-msgstr ""
-
-#: src/findlib/create_file.c:124
-#, c-format
-msgid "File skipped. Not newer: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:131
-#, c-format
-msgid "File skipped. Not older: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:141
-#, c-format
-msgid "File skipped. Already exists: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:167
-#, c-format
-msgid "File %s already exists and could not be replaced. ERR=%s.\n"
-msgstr ""
-
-#: src/findlib/create_file.c:218 src/findlib/create_file.c:282
-#: src/findlib/create_file.c:378
-#, c-format
-msgid "bpkt already open fid=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
-#, c-format
-msgid "Could not create %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:241
-#, c-format
-msgid "Cannot make fifo %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:259
-#, c-format
-msgid "Cannot make node %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:304
-#, c-format
-msgid "Could not symlink %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:329 src/findlib/create_file.c:342
-#, fuzzy, c-format
-msgid "Could not restore file flags for file %s: ERR=%s\n"
-msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
-
-#: src/findlib/create_file.c:333 src/findlib/create_file.c:350
-#, c-format
-msgid "Could not hard link %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:346
-#, fuzzy, c-format
-msgid "Could not reset file flags for file %s: ERR=%s\n"
-msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
-
-#: src/findlib/create_file.c:401
-#, c-format
-msgid "Original file %s have been deleted: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:413
-#, c-format
-msgid "Original file %s not saved: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:416
-#, c-format
-msgid "Unknown file type %d; not restored: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:460
-#, c-format
-msgid "Zero length filename: %s\n"
-msgstr ""
-
-#: src/findlib/bfile.c:97
-msgid "Unix attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:99
-msgid "File data"
-msgstr ""
-
-#: src/findlib/bfile.c:101
-msgid "MD5 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:103
-msgid "GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:105
-msgid "Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:107
-msgid "Extended attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:109
-msgid "Sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:111
-msgid "GZIP sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:113
-msgid "Compressed sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:115
-msgid "Program names"
-msgstr ""
-
-#: src/findlib/bfile.c:117
-msgid "Program data"
-msgstr ""
-
-#: src/findlib/bfile.c:119
-msgid "SHA1 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:121
-msgid "Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:123
-msgid "Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:125
-msgid "Win32 compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:127
-msgid "MacOS Fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:129
-msgid "HFS+ attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:131
-msgid "Standard Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:133
-msgid "Default Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:135
-msgid "SHA256 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:137
-msgid "SHA512 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:139
-msgid "Signed digest"
-msgstr ""
-
-#: src/findlib/bfile.c:141
-msgid "Encrypted File data"
-msgstr ""
-
-#: src/findlib/bfile.c:143
-msgid "Encrypted Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:145
-msgid "Encrypted session data"
-msgstr ""
-
-#: src/findlib/bfile.c:147
-msgid "Encrypted GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:149
-msgid "Encrypted compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:151
-msgid "Encrypted Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:153
-msgid "Encrypted Win32 Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:155
-msgid "Encrypted MacOS fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:157
-msgid "AIX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:159
-msgid "Darwin Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:161
-msgid "FreeBSD Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:163
-msgid "FreeBSD Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:165
-msgid "HPUX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:167
-msgid "Irix Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:169
-msgid "Irix Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:171
-msgid "Linux Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:173
-msgid "Linux Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:175
-msgid "TRU64 Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:177
-msgid "TRU64 Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:179
-msgid "Solaris Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:181
-msgid "Solaris Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:183
-msgid "AFS Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:185
-msgid "AIX Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:187
-msgid "AIX Specific NFSv4 ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:189
-msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:191
-msgid "GNU Hurd Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:193
-msgid "GNU Hurd Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:195
-msgid "GNU Hurd Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:197
-msgid "IRIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:199
-msgid "TRU64 Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:201
-msgid "AIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:203
-msgid "OpenBSD Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:205
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:207
-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: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:1460
-#, c-format
-msgid "Unknown include/exclude option: %c\n"
-msgstr ""
-
-#: src/findlib/find_one.c:227
-#, c-format
-msgid "     NODUMP flag set - will not process %s\n"
-msgstr ""
-
-#: 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:253
-#, c-format
-msgid "%s mtime changed during backup.\n"
-msgstr ""
-
-#: src/findlib/find_one.c:260
-#, c-format
-msgid "%s ctime changed during backup.\n"
-msgstr ""
-
-#: 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:403
-#, c-format
-msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
-msgstr ""
-
-#: src/findlib/find_one.c:418
-#, c-format
-msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
-msgstr ""
-
-#: src/cats/sql_create.c:101
-#, c-format
-msgid "Create DB Job record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:145
-#, c-format
-msgid "Create JobMedia record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:154
-#, c-format
-msgid "Update Media record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:189
-#, c-format
-msgid "pool record %s already exists\n"
-msgstr "Le pool %s existe déjà en base\n"
-
-#: src/cats/sql_create.c:221
-#, c-format
-msgid "Create db Pool record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:254
-#, c-format
-msgid "Device record %s already exists\n"
-msgstr "Le device %s existe déjà en base\n"
-
-#: src/cats/sql_create.c:271
-#, c-format
-msgid "Create db Device record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:306
-#, c-format
-msgid "More than one Storage record!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:311
-#, c-format
-msgid "error fetching Storage row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:332
-#, c-format
-msgid "Create DB Storage record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:366
-#, c-format
-msgid "mediatype record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:383
-#, c-format
-msgid "Create db mediatype record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:424
-#, c-format
-msgid "Volume \"%s\" already exists.\n"
-msgstr "Le volume \"%s\" existe déjà en base.\n"
-
-#: src/cats/sql_create.c:470
-#, c-format
-msgid "Create DB Media record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:521
-#, c-format
-msgid "More than one Client!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:526
-#, c-format
-msgid "error fetching Client row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:554
-#, c-format
-msgid "Create DB Client record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Create db Path record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:666
-#, c-format
-msgid "Create DB Counters record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:704
-#, c-format
-msgid "More than one FileSet!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:709
-#, c-format
-msgid "error fetching FileSet row: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:740
-#, c-format
-msgid "Create DB FileSet record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:989
-#, c-format
-msgid "Create db File record %s failed. ERR=%s"
-msgstr ""
-
-#: src/cats/sql_create.c:1015
-#, c-format
-msgid "More than one Filename! %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1021
-#, c-format
-msgid "Error fetching row for file=%s: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1038
-#, c-format
-msgid "Create db Filename record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
-msgid "ERR=JobIds are empty\n"
-msgstr ""
-
-#: 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"
-
-#: src/cats/sql_get.c:151
-#, c-format
-msgid "Error fetching row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:158
-#, c-format
-msgid "get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:166
-#, c-format
-msgid "File record for PathId=%s FilenameId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:172
-msgid "File record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:199
-#, c-format
-msgid "More than one Filename!: %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:209
-#, c-format
-msgid "Get DB Filename record %s found bad record: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:215
-#, c-format
-msgid "Filename record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:219
-#, c-format
-msgid "Filename record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:262
-#, c-format
-msgid "Get DB path record %s found bad record: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:275
-#, c-format
-msgid "Path record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:279
-#, c-format
-msgid "Path record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:318
-#, c-format
-msgid "No Job found for JobId %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:391 src/cats/sql_get.c:448
-#, c-format
-msgid "No volumes found for JobId=%d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:397 src/cats/sql_get.c:459
-#, c-format
-msgid "Error fetching row %d: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:411
-#, c-format
-msgid "No Volume for JobId %d found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:552
-#, c-format
-msgid "Pool id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:589
-#, c-format
-msgid "Client id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:635
-#, c-format
-msgid "More than one Pool!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:679
-msgid "Pool record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:717
-#, c-format
-msgid "More than one Client!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:734 src/cats/sql_get.c:738
-msgid "Client record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:765
-#, c-format
-msgid "More than one Counter!: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:770
-#, c-format
-msgid "error fetching Counter row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:790
-#, c-format
-msgid "Counter record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:830
-#, c-format
-msgid "Error got %s FileSets but expected only one!\n"
-msgstr ""
-
-#: src/cats/sql_get.c:835
-#, c-format
-msgid "FileSet record \"%s\" not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:845
-msgid "FileSet record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:941
-#, c-format
-msgid "Media id select failed: ERR=%s\n"
-msgstr ""
-
-#: 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:1034
-#, c-format
-msgid "More than one Volume!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1090
-#, c-format
-msgid "Media record MediaId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1093
-#, c-format
-msgid "Media record for Volume \"%s\" not found.\n"
-msgstr ""
-
-#: 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:1103
-#, c-format
-msgid "Media record for Vol=%s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:98 src/cats/sql_find.c:127 src/cats/sql_find.c:182
-#, c-format
-msgid ""
-"Query error for start time request: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:104 src/cats/sql_find.c:188
-msgid "No prior Full backup Job record found.\n"
-msgstr "Pas de précédent backup Full en base.\n"
-
-#: src/cats/sql_find.c:116
-#, c-format
-msgid "Unknown level=%d\n"
-msgstr ""
-
-#: src/cats/sql_find.c:133
-#, c-format
-msgid ""
-"No Job record found: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:291
-#, c-format
-msgid "Unknown Job level=%d\n"
-msgstr "Niveau de job inconnu %d\n"
-
-#: src/cats/sql_find.c:301
-#, c-format
-msgid "No Job found for: %s.\n"
-msgstr "Pas de job trouvé pour : %s.\n"
-
-#: src/cats/sql_find.c:312
-#, c-format
-msgid "No Job found for: %s\n"
-msgstr "Pas de job trouvé pour %s\n"
-
-#: src/cats/sql_find.c:393
-#, fuzzy, c-format
-msgid "Request for Volume item %d greater than max %d or less than 1\n"
-msgstr "Le slot %d est ignoré car il est supérieur au maximum %d.\n"
-
-#: src/cats/sql_find.c:408
-#, c-format
-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: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:181
-#, c-format
-msgid "Database %s does not exist, please create it.\n"
-msgstr ""
-
-#: src/cats/sqlite.c:203
-#, c-format
-msgid "Unable to open Database=%s. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sqlite.c:204
-msgid "unknown"
-msgstr "inconnu"
-
-#: 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 ""
-
-#: src/cats/ingres.c:87
-#, fuzzy
-msgid "Failed to allocate space for query filter.\n"
-msgstr "Impossible de se connecter au Director\n"
-
-#: src/cats/ingres.c:108
-#, fuzzy
-msgid "Failed to allocate space for query filters.\n"
-msgstr "Impossible de se connecter au Director\n"
-
-#: src/cats/ingres.c:267
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to Ingres server.\n"
-"Database=%s User=%s\n"
-"It is probably not running or your password is incorrect.\n"
-msgstr ""
-"Impossible de se connecter au serveur MySQL.\n"
-"Base=%s Utilisateur=%s\n"
-"Le serveur n'est pas démarré ou bien votre password est invalide.\n"
-
-#: 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"
-
-#: src/cats/sql.c:184
-#, c-format
-msgid ""
-"Potential performance problem:\n"
-"max_connections=%d set for %s database \"%s\" should be larger than "
-"Director's MaxConcurrentJobs=%d\n"
-msgstr ""
-
-#: src/cats/sql.c:229
-#, c-format
-msgid ""
-"query %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:251
-#, c-format
-msgid ""
-"insert %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:261
-#, c-format
-msgid "Insertion problem: affected_rows=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:282
-#, c-format
-msgid ""
-"update %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:292
-#, c-format
-msgid "Update failed: affected_rows=%s for %s\n"
-msgstr ""
-
-#: src/cats/sql.c:314
-#, c-format
-msgid ""
-"delete %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:408
-#, c-format
-msgid "Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:603
-msgid "No results to list.\n"
-msgstr "Liste vide.\n"
-
-#: src/cats/sql.c:721
-#, fuzzy
-msgid "Could not init database batch connection\n"
-msgstr "Impossible d'initialiser le Python\n"
-
-#: 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:181
-#, c-format
-msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:246
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to PostgreSQL server. Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-"Impossible de se connecter au serveur PostgreSQL.\n"
-"Base=%s Utilisateur=%s\n"
-"Le serveur n'est pas démarré ou bien votre password est invalide.\n"
-
-#: src/cats/postgresql.c:350
-msgid "PQescapeStringConn returned non-zero.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:368
-msgid "PQescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:399
-msgid "PQunescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:813
-#, c-format
-msgid "error fetching currval: %s\n"
-msgstr ""
-
-#: 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: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:1088
-#, fuzzy, c-format
-msgid "error copying in batch mode: %s"
-msgstr "erreur en terminant le mode batch: %s\n"
-
-#: 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"
-
-#: src/cats/sql_list.c:59
-#, c-format
-msgid "Query failed: %s\n"
-msgstr "Erreur sur la requête : %s\n"
-
-#: src/cats/sql_list.c:275
-msgid "These JobIds have copies as follows:\n"
-msgstr ""
-
-#: src/cats/sql_list.c:277
-msgid "The catalog contains copies as follows:\n"
-msgstr ""
-
-#: src/cats/dbi.c:117
-#, fuzzy, c-format
-msgid "Unknown database type: %s\n"
-msgstr "Mot clef inconnu : %s\n"
-
-#: 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:299
-#, fuzzy, c-format
-msgid ""
-"Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-"Impossible de se connecter au serveur PostgreSQL.\n"
-"Base=%s Utilisateur=%s\n"
-"Le serveur n'est pas démarré ou bien votre password est invalide.\n"
-
-#: 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:1456
-#, fuzzy
-msgid "Driver type not specified in Catalog resource.\n"
-msgstr "Impossible de trouver un Catalogue\n"
-
-#: 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:1464
-#, fuzzy
-msgid "A user name for DBI must be supplied.\n"
-msgstr "Un nom d'utilisateur MySQL doit être fourni.\n"
-
-#: src/cats/cats_dummy.c:39
-msgid "Please replace this dummy libbaccats library with a proper one.\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:80
-#, c-format
-msgid "No pool record %s exists\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:85
-#, c-format
-msgid "Expecting one pool record, got %d\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:91
-#, c-format
-msgid "Error fetching row %s\n"
-msgstr ""
-
-#: src/cats/mysql.c:207
-#, c-format
-msgid ""
-"Unable to connect to MySQL server.\n"
-"Database=%s User=%s\n"
-"MySQL connect failed either server not running or your authorization is "
-"incorrect.\n"
-msgstr ""
-"Impossible de se connecter au serveur MySQL.\n"
-"Base=%s Utilisateur=%s\n"
-"Le serveur n'est pas démarré ou bien votre password est invalide.\n"
-
-#: 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"
-
-#: src/wx-console/console_conf.c:147 src/console/console_conf.c:140
-#: src/qt-console/bat_conf.cpp:141
-#, c-format
-msgid "No record for %d %s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:156 src/console/console_conf.c:149
-#, c-format
-msgid "Console: name=%s rcfile=%s histfile=%s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:160 src/console/console_conf.c:153
-#: src/qt-console/bat_conf.cpp:150
-#, c-format
-msgid "Director: name=%s address=%s DIRport=%d\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:142 src/console/authenticate.c:138
-msgid "TLS negotiation failed\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:150
-#, fuzzy
-msgid "Bad response to Hello command: ERR="
-msgstr "Mauvaise réponse à la commande Hello : ERR=%s\n"
-
-#: src/wx-console/authenticate.c:167 src/console/authenticate.c:169
-#, fuzzy
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-"Problème d'authentification avec le director.\n"
-"Le plus souvent, les mots de pass ne correspondent pas.\n"
-"Si vous utilisez TLS, il peut y avoir une erreur de validation du "
-"certificat\n"
-"pendant l'initialisation de la connexion TLS.\n"
-"Vous trouverez de l'aide sur\n"
-"http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
-
-#: src/console/console.c:126
-#, c-format
-msgid ""
-"\n"
-"Version: "
-msgstr ""
-"\n"
-"Version : "
-
-#: src/console/console.c:178
-msgid "input from file"
-msgstr ""
-
-#: src/console/console.c:179
-msgid "output to file"
-msgstr ""
-
-#: src/console/console.c:180
-msgid "quit"
-msgstr "quit"
-
-#: src/console/console.c:181
-msgid "output to file and terminal"
-msgstr ""
-
-#: src/console/console.c:182
-msgid "sleep specified time"
-msgstr ""
-
-#: src/console/console.c:183
-msgid "print current time"
-msgstr "affiche la date courante"
-
-#: src/console/console.c:184
-msgid "print Console's version"
-msgstr ""
-
-#: src/console/console.c:185
-msgid "echo command string"
-msgstr ""
-
-#: src/console/console.c:186
-msgid "execute an external command"
-msgstr ""
-
-#: src/console/console.c:187
-msgid "exit = quit"
-msgstr "exit = quit"
-
-#: src/console/console.c:188
-msgid "zed_keys = use zed keys instead of bash keys"
-msgstr ""
-
-#: src/console/console.c:189
-msgid "help listing"
-msgstr ""
-
-#: src/console/console.c:191
-msgid "set command separator"
-msgstr ""
-
-#: src/console/console.c:225
-msgid ": is an invalid command\n"
-msgstr "%s : est une commande invalide.\n"
-
-#: src/console/console.c:675
-#, fuzzy
-msgid "Illegal separator character.\n"
-msgstr "Caractère illégal « %c » dans le nom.\n"
-
-#: src/console/console.c:708
-#, fuzzy
-msgid "Command logic problem\n"
-msgstr "Commande annulée.\n"
-
-#: src/console/console.c:925
-#, fuzzy, c-format
-msgid "Can't find %s in Director list\n"
-msgstr "Impossible de trouver la ressource Director \"%s\"\n"
-
-#: src/console/console.c:933
-msgid "Available Directors:\n"
-msgstr ""
-
-#: src/console/console.c:937
-#, c-format
-msgid "%2d:  %s at %s:%d\n"
-msgstr ""
-
-#: src/console/console.c:941
-msgid "Select Director by entering a number: "
-msgstr ""
-
-#: src/console/console.c:948
-#, fuzzy, c-format
-msgid "%s is not a number. 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:955
-#, c-format
-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: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: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"
-
-#: src/console/console.c:1210
-msgid "Enter a period to cancel a command.\n"
-msgstr "Tapez un point (.) pour annuler une commande.\n"
-
-#: src/console/console.c:1304 src/qt-console/main.cpp:232
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in %s. At least one CA certificate store is required.\n"
-msgstr ""
-
-#: src/console/console.c:1313 src/qt-console/main.cpp:241
-#, c-format
-msgid ""
-"No Director resource defined in %s\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-"Pas de director défini pour %s\n"
-"Sans cette définition, il n'est pas possible de se connecter à celui-ci.\n"
-
-#: src/console/console.c:1333 src/qt-console/main.cpp:262
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/console/console.c:1359
-msgid "Too many arguments on input command.\n"
-msgstr "Trop d'arguments sur la commande.\n"
-
-#: src/console/console.c:1363
-msgid "First argument to input command must be a filename.\n"
-msgstr "Le premier argument de la commande doit être un fichier.\n"
-
-#: src/console/console.c:1369
-#, c-format
-msgid "Cannot open file %s for input. ERR=%s\n"
-msgstr "Impossible d'ouvrir le fichier %s pour lecture. ERR=%s\n"
-
-#: src/console/console.c:1401
-msgid "Too many arguments on output/tee command.\n"
-msgstr ""
-
-#: src/console/console.c:1418
-#, c-format
-msgid "Cannot open file %s for output. ERR=%s\n"
-msgstr "Impossible d'ouvrir le fichier %s pour la sortie. ERR=%s\n"
-
-#: src/console/console.c:1437
-msgid "Too many arguments. Enclose command in double quotes.\n"
-msgstr ""
-"Trop d'arguments sur la commande. Essayez d'utiliser des « \" » autour des "
-"commandes\n"
-
-#: src/console/console.c:1446
-#, fuzzy, c-format
-msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
-msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
-
-#: src/tools/testls.c:59
-#, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -q          quiet, don't print filenames (debug)\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testls.c:155
-#, c-format
-msgid "Could not open include file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:168
-#, c-format
-msgid "Could not open exclude file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:182
-#, c-format
-msgid "Files seen = %d\n"
-msgstr ""
-
-#: src/tools/testls.c:215 src/tools/testfind.c:322
-#, c-format
-msgid "Err: Could not access %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:218 src/tools/testfind.c:325
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:221 src/tools/testfind.c:328
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:224 src/tools/testfind.c:331
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:227 src/tools/testfind.c:334
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:230
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:233
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:236 src/tools/testfind.c:337
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:239 src/tools/testfind.c:340
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
-msgstr ""
-
-#: src/tools/bvfs_test.c:56 src/tools/ing_test.c:57
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -j <jobids>       specify jobids\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -T                truncate cache table before starting\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -dnn           positionne le niveau de debug à nn\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -r <job>       lance <job> maintenant\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
-
-#: src/tools/bbatch.c:79
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"Example : bbatch -w /path/to/workdir -h localhost -f dat1 -f dat -f datx\n"
-" will start 3 thread and load dat1, dat and datx in your catalog\n"
-"See bbatch.c to generate datafile\n"
-"\n"
-"Usage: bbatch [ options ] -w working/dir -f datafile\n"
-"       -b                with batch mode\n"
-"       -B                without batch mode\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -r <jobids>       call restore code with given jobids\n"
-"       -v                verbose\n"
-"       -f <file>         specify data file\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -dnn           positionne le niveau de debug à nn\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -r <job>       lance <job> maintenant\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
-
-#: src/tools/bbatch.c:211
-#, c-format
-msgid "Computing file list for jobid=%s files=%lld secs=%d\n"
-msgstr ""
-
-#: src/tools/bbatch.c:315
-#, fuzzy, c-format
-msgid "Error opening datafile %s\n"
-msgstr "Impossible d'ouvrir le fichier de données %s.\n"
-
-#: src/tools/bbatch.c:325
-#, fuzzy
-msgid "Error while inserting file\n"
-msgstr "Entrez le nombre de départ : "
-
-#: src/tools/ing_test.c:231 src/tools/ing_test.c:264 src/tools/ing_test.c:302
-msgid "Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:320
-msgid "CREATE-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:325
-msgid "DROP-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/fstype.c:48
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-v] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/fstype.c:102 src/tools/drivetype.c:78
-#, c-format
-msgid "%s: unknown\n"
-msgstr ""
-
-#: src/tools/bregex.c:153 src/tools/bwild.c:122 src/tools/bregtest.c:137
-#, c-format
-msgid "Could not open data file: %s\n"
-msgstr "Impossible d'ouvrir le fichier de données %s.\n"
-
-#: src/tools/drivetype.c:47
-#, c-format
-msgid ""
-"\n"
-"Usage: drivetype [-v] path ...\n"
-"\n"
-"       Print the drive type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -l     print local fixed hard drive\n"
-"       -a     display information on all drives\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:70
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -c          specify config file containing FileSet resources\n"
-"       -f          specify which FileSet to use\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:235
-#, c-format
-msgid ""
-"\n"
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
-msgstr ""
-
-#: src/tools/testfind.c:278
-#, c-format
-msgid "Reg: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:300
-msgid "\t[will not descend: recursion turned off]"
-msgstr ""
-
-#: src/tools/testfind.c:302
-msgid "\t[will not descend: file system change not allowed]"
-msgstr ""
-
-#: src/tools/testfind.c:304
-msgid "\t[will not descend: disallowed file system]"
-msgstr ""
-
-#: src/tools/testfind.c:306
-msgid "\t[will not descend: disallowed drive type]"
-msgstr ""
-
-#: src/tools/testfind.c:390
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:407
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:416
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/tools/testfind.c:419
-#, c-format
-msgid "Path: %s\n"
-msgstr ""
-
-#: src/tools/cats_test.c:60
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -q                print only errors\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-"Copyright (C) 2000-2005 Kern Sibbald.\n"
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -dnn           positionne le niveau de debug à nn\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -r <job>       lance <job> maintenant\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
-
-#: src/tools/cats_test.c:376
-#, fuzzy, c-format
-msgid "Could not open, database \"%s\".\n"
-msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
-
-#: src/tools/bsmtp.c:151
-#, c-format
-msgid "Fatal malformed reply from %s: %s\n"
-msgstr ""
-
-#: 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: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"
-"       -f          set the From: field\n"
-"       -h          use mailhost:port as the SMTP server\n"
-"       -s          set the Subject: field\n"
-"       -r          set the Reply-To: field\n"
-"       -l          set the maximum number of lines to send (default: "
-"unlimited)\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -d <nn>        positionne le niveau de debug à nn\n"
-"      -dt            affiche un timestamp devant chaque ligne de debug\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -r <job>       lance <job> maintenant\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
-
-#: src/tools/bsmtp.c:379
-msgid "Fatal error: no recipient given.\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:407
-#, c-format
-msgid "Fatal gethostname error: ERR=%s\n"
-msgstr ""
-
-#: 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:486 src/tools/bsmtp.c:521
-#, c-format
-msgid "Error unknown mail host \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
-msgid "Retrying connection using \"localhost\".\n"
-msgstr ""
-
-#: 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:541 src/tools/bsmtp.c:546
-#, c-format
-msgid "Fatal socket error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:551
-#, c-format
-msgid "Fatal connect error to %s: ERR=%s\n"
-msgstr ""
-
-#: 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: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:576
-#, c-format
-msgid "Fatal dup error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:195
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:212
-#, c-format
-msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:214
-#, c-format
-msgid "Error there is no Catalog section in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:223
-msgid "Error no Director resource defined.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:247
-msgid "Wrong number of arguments.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:252
-msgid "Working directory not supplied.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:288
-msgid "Database port must be a numeric value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:291
-msgid "Database port must be a int value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:365
-#, c-format
-msgid "Hello, this is the database check/correct program.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:367
-#, c-format
-msgid "Modify database is on."
-msgstr ""
-
-#: src/tools/dbcheck.c:369
-#, c-format
-msgid "Modify database is off."
-msgstr ""
-
-#: src/tools/dbcheck.c:371 src/tools/dbcheck.c:432
-#, c-format
-msgid " Verbose is on.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:373 src/tools/dbcheck.c:434
-#, c-format
-msgid " Verbose is off.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:375
-#, c-format
-msgid "Please select the function you want to perform.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:379
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:398
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:418
-msgid "Select function number: "
-msgstr ""
-
-#: src/tools/dbcheck.c:425
-#, c-format
-msgid "Database will be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:427
-#, c-format
-msgid "Database will NOT be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:518
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:525
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:532
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:539
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:546
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:599
-#, c-format
-msgid "Deleting: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:671
-#, c-format
-msgid "Checking for duplicate Filename entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:682
-#, c-format
-msgid "Found %d duplicate Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:683
-msgid "Print the list? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:706 src/tools/dbcheck.c:771
-#, c-format
-msgid "Found %d for: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:736
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:747
-#, c-format
-msgid "Found %d duplicate Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:748 src/tools/dbcheck.c:810 src/tools/dbcheck.c:856
-#: src/tools/dbcheck.c:924 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1025
-#: src/tools/dbcheck.c:1067 src/tools/dbcheck.c:1109 src/tools/dbcheck.c:1146
-#: src/tools/dbcheck.c:1179 src/tools/dbcheck.c:1213 src/tools/dbcheck.c:1280
-msgid "Print them? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:801
-#, c-format
-msgid "Checking for orphaned JobMedia entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:809
-#, c-format
-msgid "Found %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:827
-#, c-format
-msgid "Deleting %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:844
-#, c-format
-msgid "Checking for orphaned File entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:855
-#, c-format
-msgid "Found %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:872
-#, c-format
-msgid "Deleting %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:891
-#, c-format
-msgid "Pruning orphaned Path entries isn't possible when using BVFS.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:900 src/tools/dbcheck.c:958
-#, fuzzy
-msgid "Create temporary index? (yes/no): "
-msgstr "Continuez ? (oui/non) : "
-
-#: src/tools/dbcheck.c:912
-#, c-format
-msgid "Checking for orphaned Path entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:923
-#, c-format
-msgid "Found %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:936
-#, c-format
-msgid "Deleting %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:970
-#, c-format
-msgid "Checking for orphaned Filename entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:981
-#, c-format
-msgid "Found %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:994
-#, c-format
-msgid "Deleting %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1014
-#, c-format
-msgid "Checking for orphaned FileSet entries. This takes some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1024
-#, c-format
-msgid "Found %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1039
-#, c-format
-msgid "Deleting %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1048
-#, c-format
-msgid "Checking for orphaned Client entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1066
-#, c-format
-msgid "Found %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1081
-#, c-format
-msgid "Deleting %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1090
-#, c-format
-msgid "Checking for orphaned Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1108
-#, c-format
-msgid "Found %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1123
-#, c-format
-msgid "Deleting %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1125
-#, c-format
-msgid "Deleting JobMedia records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1127
-#, c-format
-msgid "Deleting Log records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1136
-#, c-format
-msgid "Checking for Admin Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1145
-#, c-format
-msgid "Found %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1160
-#, c-format
-msgid "Deleting %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1169
-#, c-format
-msgid "Checking for Restore Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1178
-#, c-format
-msgid "Found %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1193
-#, c-format
-msgid "Deleting %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1203
-#, c-format
-msgid "Checking for Filenames with a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1212
-#, c-format
-msgid "Found %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1230 src/tools/dbcheck.c:1296
-#, c-format
-msgid "Reparing %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1270
-#, c-format
-msgid "Checking for Paths without a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1279
-#, c-format
-msgid "Found %d bad Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1442
-#, c-format
-msgid ""
-"Ok. Index over the %s column already exists and dbcheck will work faster.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1445
-#, c-format
-msgid ""
-"Note. Index over the %s column not found, that can greatly slow down "
-"dbcheck.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1460
-#, c-format
-msgid "Create temporary index... This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1468
-#, c-format
-msgid "Temporary index created.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1483
-#, c-format
-msgid "Drop temporary index.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1493
-#, c-format
-msgid "Temporary index %s deleted.\n"
-msgstr ""
-
-#: src/filed/verify.c:57
-#, c-format
-msgid "Cannot malloc %d network read buffer\n"
-msgstr ""
-
-#: src/filed/verify.c:127
-#, c-format
-msgid "     Could not access %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:134
-#, c-format
-msgid "     Could not follow link %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:141
-#, c-format
-msgid "     Could not stat %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:147 src/filed/backup.c:450
-#, c-format
-msgid "     Unchanged file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:150
-#, c-format
-msgid "     Archive file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:153
-#, c-format
-msgid "     Recursion turned off. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:157
-#, c-format
-msgid "     File system change prohibited. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:165
-#, c-format
-msgid "     Could not open directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:170
-#, c-format
-msgid "     Unknown file type %d: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:214 src/filed/verify_vol.c:206
-#, c-format
-msgid "Network error in send to Director: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
-#, c-format
-msgid "%s digest initialization failed\n"
-msgstr ""
-
-#: src/filed/verify.c:309
-#, c-format
-msgid "     Cannot open %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:323
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:386
-#, c-format
-msgid "Error reading file %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/accurate.c:201
-#, c-format
-msgid "Space saved with Base jobs: %lld MB\n"
-msgstr ""
-
-#: 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:508
-#, fuzzy
-msgid "2991 Bad accurate command\n"
-msgstr "2991 Erreur dans la commande setdebug : %s\n"
-
-#: src/filed/status.c:89
-#, 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/filed/status.c:149
-#, c-format
-msgid " Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d "
-msgstr ""
-
-#: src/filed/status.c:194
-#, c-format
-msgid "Director connected at: %s\n"
-msgstr "Connexion du director le %s\n"
-
-#: src/filed/status.c:196
-#, c-format
-msgid "JobId %d Job %s is running.\n"
-msgstr ""
-
-#: src/filed/status.c:199
-#, fuzzy, c-format
-msgid "    %s%s %s Job started: %s\n"
-msgstr "Le job %d est annulé.\n"
-
-#: src/filed/status.c:212
-#, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
-msgstr "    Fichiers=%s Octets=%s Octets/sec=%s Erreurs=%d\n"
-
-#: src/filed/status.c:218
-#, c-format
-msgid "    Files Examined=%s\n"
-msgstr ""
-
-#: src/filed/status.c:223
-#, c-format
-msgid "    Processing file: %s\n"
-msgstr ""
-
-#: src/filed/status.c:234
-msgid "    SDSocket closed.\n"
-msgstr ""
-
-#: src/filed/status.c:244 src/filed/status.c:335 src/filed/status.c:409
-msgid "====\n"
-msgstr "====\n"
-
-#: src/filed/status.c:306
-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 ""
-
-#: src/filed/status.c:497
-msgid "2900 Bad .status command, wrong argument.\n"
-msgstr ""
-
-#: src/filed/status.c:565
-msgid "Bacula Client: Idle"
-msgstr ""
-
-#: src/filed/status.c:576
-msgid "Bacula Client: Running"
-msgstr ""
-
-#: src/filed/status.c:590
-msgid "Bacula Client: Last Job Canceled"
-msgstr ""
-
-#: src/filed/status.c:594
-msgid "Bacula Client: Last Job Failed"
-msgstr ""
-
-#: src/filed/status.c:598
-msgid "Bacula Client: Last Job had Warnings"
-msgstr ""
-
-#: 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:245
-#, c-format
-msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:259
-#, c-format
-msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
-msgstr ""
-
-#: 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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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:3673
-#, c-format
-msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3734
-#, c-format
-msgid "Failed to restore extensible attributes on file \"%s\"\n"
-msgstr ""
-
-#: 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: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:3891
-#, c-format
-msgid ""
-"Can't restore Extended Attributes of %s - incompatible xattr stream "
-"encountered - %d\n"
-msgstr ""
-
-#: 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:563
-#, c-format
-msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
-msgstr ""
-
-#: 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:775
-#, fuzzy
-msgid "Plugin save packet not found.\n"
-msgstr "le client \"%s\" est introuvable.\n"
-
-#: 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:977
-#, c-format
-msgid "Plugin createFile call failed. Stat=%d file=%s\n"
-msgstr ""
-
-#: 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:1859
-msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
-msgstr ""
-
-#: src/filed/filed.c:76
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -d <nn>     set debug level to <nn>\n"
-"        -dt         print a timestamp in debug output\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g          groupid\n"
-"        -k          keep readall capabilities\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test configuration file and exit\n"
-"        -u          userid\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-"\n"
-"Version : %s (%s)\n"
-"\n"
-"Usage : bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
-"      -c <fich>      utilise fich comme fichier de configuration\n"
-"      -d <nn>        positionne le niveau de debug à nn\n"
-"      -dt            affiche un timestamp sur chaque ligne de debug\n"
-"      -f             reste en avant-plan (pour debugger)\n"
-"      -g             groupid\n"
-"      -s             pas de signaux\n"
-"      -t             test - lit seulement le fichier de configuration\n"
-"      -u             userid\n"
-"      -v             affiche les messages utilisateurs\n"
-"      -?             affiche ce message.\n"
-"\n"
-
-#: src/filed/filed.c:199
-msgid "-k option has no meaning without -u option.\n"
-msgstr ""
-
-#: src/filed/filed.c:337
-#, c-format
-msgid ""
-"No File daemon resource defined in %s\n"
-"Without that I don't know who I am :-(\n"
-msgstr ""
-
-#: src/filed/filed.c:342
-#, c-format
-msgid "Only one Client resource permitted in %s\n"
-msgstr ""
-
-#: src/filed/filed.c:366
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"File daemon in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:390
-msgid "PKI encryption/signing enabled but not compiled into Bacula.\n"
-msgstr ""
-
-#: src/filed/filed.c:401
-#, c-format
-msgid ""
-"\"PKI Key Pair\" must be defined for File daemon \"%s\" in %s if either "
-"\"PKI Sign\" or \"PKI Encrypt\" are enabled.\n"
-msgstr ""
-
-#: src/filed/filed.c:413 src/filed/filed.c:444 src/filed/filed.c:485
-#, fuzzy
-msgid "Failed to allocate a new keypair object.\n"
-msgstr "Impossible de se connecter au Director\n"
-
-#: src/filed/filed.c:417
-#, c-format
-msgid "Failed to load public certificate for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:423
-#, c-format
-msgid "Failed to load private key for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:453
-#, c-format
-msgid "Failed to load private key from file %s for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:460
-#, c-format
-msgid ""
-"Failed to load trusted signer certificate from file %s for File daemon \"%s"
-"\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:491
-#, c-format
-msgid ""
-"Failed to load master key certificate from file %s for File daemon \"%s\" in "
-"%s.\n"
-msgstr ""
-
-#: src/filed/filed.c:507
-#, c-format
-msgid "No Director resource defined in %s\n"
-msgstr ""
-
-#: 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: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: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:386
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
-"support\n"
-msgstr ""
-
-#: 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: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: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: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: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:906
-#, fuzzy, c-format
-msgid ""
-"acl_delete_def_file error on file \"%s\": filesystem doesn't support ACLs\n"
-msgstr ""
-"Impossible de récupérer les informations du Media pour le Volume %s : ERR="
-"%s\n"
-
-#: 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: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: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: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: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: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:1246
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
-msgstr ""
-
-#: 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: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: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: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: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: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:1834
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without acl support\n"
-msgstr ""
-
-#: 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:1874
-#, c-format
-msgid ""
-"Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
-"support\n"
-msgstr ""
-
-#: 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: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: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: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: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: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: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 ""
-
-#: src/filed/verify_vol.c:63
-msgid "Storage command not issued before Verify.\n"
-msgstr ""
-
-#: 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:498
-#, c-format
-msgid "Data record error. ERR=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/filed/verify_vol.c:143
-#, c-format
-msgid "Error scanning record header: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:102
-msgid "Cannot set buffer size FD->SD.\n"
-msgstr ""
-
-#: src/filed/backup.c:194
-#, c-format
-msgid "Encountered %ld acl errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:198
-#, c-format
-msgid "Encountered %ld xattr errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:267 src/filed/backup.c:276
-msgid "An error occurred while encrypting the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:387
-#, c-format
-msgid "     Recursion turned off. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:394
-#, c-format
-msgid "     %s is a different filesystem. Will not descend from %s into it.\n"
-msgstr ""
-
-#: src/filed/backup.c:400
-#, c-format
-msgid "     Disallowed filesystem. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:405
-#, c-format
-msgid "     Disallowed drive type. Will not descend into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:416
-#, c-format
-msgid "     Socket file skipped: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:429
-#, c-format
-msgid "     Could not access \"%s\": ERR=%s\n"
-msgstr "     Impossible d'acceder à \"%s\" : ERR=%s\n"
-
-#: src/filed/backup.c:436
-#, c-format
-msgid "     Could not follow link \"%s\": ERR=%s\n"
-msgstr "     Impossible de suivre le lien \"%s\" : ERR=%s\n"
-
-#: src/filed/backup.c:443
-#, c-format
-msgid "     Could not stat \"%s\": ERR=%s\n"
-msgstr "     Impossible d'acceder à \"%s\" : ERR=%s\\n\n"
-
-#: src/filed/backup.c:453
-#, c-format
-msgid "     Archive file not saved: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:457
-#, c-format
-msgid "     Could not open directory \"%s\": ERR=%s\n"
-msgstr "     Impossible d'ouvrir le répertoire \"%s\" : ERR=%s\n"
-
-#: 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:522
-#, c-format
-msgid "%s signature digest initialization failed\n"
-msgstr ""
-
-#: 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: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:763
-#, fuzzy
-msgid "Failed to allocate memory for crypto signature.\n"
-msgstr "Impossible de se connecter au Director\n"
-
-#: 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:813
-msgid "An error occurred finalizing signing the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:931
-#, c-format
-msgid "Compression deflateParams error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:968
-msgid "Encrypting sparse or offset data not supported.\n"
-msgstr ""
-
-#: 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:1085
-#, c-format
-msgid "Compression deflate error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1092
-#, c-format
-msgid "Compression deflateReset error: %d\n"
-msgstr ""
-
-#: 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:1171 src/filed/backup.c:1187
-msgid "Encryption error\n"
-msgstr ""
-
-#: src/filed/backup.c:1213
-#, c-format
-msgid "Read error on file %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:1216
-#, c-format
-msgid "Too many errors. JobErrors=%d.\n"
-msgstr ""
-
-#: src/filed/backup.c:1226
-msgid "Encryption padding error\n"
-msgstr ""
-
-#: src/filed/backup.c:1290
-msgid "Invalid file flags, no supported data stream type.\n"
-msgstr ""
-
-#: src/filed/backup.c:1549
-#, c-format
-msgid "VSS Writer (BackupComplete): %s\n"
-msgstr ""
-
-#: src/filed/restore.c:114
-#, c-format
-msgid "Size of data or stream of %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/filed/restore.c:134
-#, c-format
-msgid "Invalid length of Finder Info (got %d, not 32)\n"
-msgstr ""
-
-#: src/filed/restore.c:139
-#, fuzzy, c-format
-msgid "Could not set Finder Info on %s\n"
-msgstr "Impossible d'ouvrir le device %s\n"
+#~ msgid "  File=%u block=%u\n"
+#~ msgstr "Fichier=%u bloc=%u\n"
 
-#: src/filed/restore.c:418
 #, fuzzy
-msgid "LZO init failed\n"
-msgstr "Impossible de Rembobiner.\n"
+#~ msgid "  Min block=%u Max block=%u\n"
+#~ msgstr "Min bloc=%u Max bloc=%u\n"
 
-#: src/filed/restore.c:660
-msgid "Unexpected cryptographic session data stream.\n"
-msgstr ""
+#~ msgid "%s Job %s waiting for Client connection.\n"
+#~ msgstr "%s Job %s est en attente de la connexion du Client.\n"
 
-#: src/filed/restore.c:670
-msgid ""
-"No private decryption keys have been defined to decrypt encrypted backup "
-"data.\n"
-msgstr ""
+#~ msgid ""
+#~ "Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
+#~ "    pool=\"%s\" device=%s\n"
+#~ msgstr ""
+#~ "Lecture : %s %s job %s JobId=%d Volume=\"%s\"\n"
+#~ "   pool=\"%s\" device=%s\n"
 
-#: 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:699
-msgid "Missing private key required to decrypt encrypted backup data.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "An error occurred while decoding encrypted session data stream: %s\n"
-msgstr ""
-
-#: 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:783 src/filed/restore.c:835
-#, c-format
-msgid "Failed to initialize decryption context for %s\n"
-msgstr ""
-
-#: 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:992
-msgid "Unexpected cryptographic signature data stream.\n"
-msgstr ""
-
-#: src/filed/restore.c:1000
-#, c-format
-msgid "Failed to decode message signature for %s\n"
-msgstr ""
-
-#: 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:1068
-#, c-format
-msgid "Encountered %ld xattr errors while doing restore\n"
-msgstr ""
-
-#: 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:1076
-#, c-format
-msgid "%d non-supported resource fork streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1079
-#, c-format
-msgid "%d non-supported Finder Info streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1082
-#, c-format
-msgid "%d non-supported acl streams ignored.\n"
-msgstr ""
-
-#: 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:1088
-#, fuzzy, c-format
-msgid "%d non-supported xattr streams ignored.\n"
-msgstr "contentEncryptionAlgorithm non supporté : %d\n"
-
-#: src/filed/restore.c:1168
-msgid "Zlib errno"
-msgstr ""
-
-#: src/filed/restore.c:1170
-msgid "Zlib stream error"
-msgstr ""
-
-#: src/filed/restore.c:1172
-msgid "Zlib data error"
-msgstr ""
-
-#: src/filed/restore.c:1174
-msgid "Zlib memory error"
-msgstr ""
-
-#: src/filed/restore.c:1176
-msgid "Zlib buffer error"
-msgstr ""
-
-#: src/filed/restore.c:1178
-msgid "Zlib version error"
-msgstr ""
-
-#: src/filed/restore.c:1218
-#, c-format
-msgid "Missing cryptographic signature for %s\n"
-msgstr ""
-
-#: 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: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"
+#~ msgid ""
+#~ "Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
+#~ "    pool=\"%s\" device=%s\n"
+#~ msgstr ""
+#~ "Ecriture : %s %s job %s JobId=%d Volume=\"%s\"\n"
+#~ "   pool=\"%s\" device=%s\n"
 
-#: src/filed/restore.c:1307
-#, c-format
-msgid "Signature validation failed for %s: %s\n"
-msgstr ""
+#~ msgid "    spooling=%d despooling=%d despool_wait=%d\n"
+#~ msgstr "    spooling=%d despooling=%d despool_wait=%d\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
+#~ msgstr "    Fichiers=%s Octets=%s Octets/sec=%s Erreurs=%d\n"
 
-#: src/filed/restore.c:1441
-#, c-format
-msgid "Uncompression error on file %s. ERR=%s\n"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Jobs waiting to reserve a drive:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Jobs en attente de réservation de lecteur :\n"
 
-#: src/filed/restore.c:1474
-#, c-format
-msgid "Write error in Win32 Block Decomposition on %s: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3900 No arg in .status command: %s\n"
+#~ msgstr "3909 Erreur pendant la lecture de la commande de montage : %s\n"
 
-#: src/filed/restore.c:1533
-msgid "Decryption error\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3900 Unknown arg in .status command: %s\n"
+#~ msgstr "Erreur inconnue."
 
-#: src/filed/restore.c:1626
-msgid "Logic error: output file should be open\n"
-msgstr ""
+#~ msgid "Bacula Storage: Idle"
+#~ msgstr "Bacula Storage : En attente"
 
-#: src/filed/restore.c:1664
-msgid "Logic error: output file should not be open\n"
-msgstr ""
+#~ msgid "Bacula Storage: Running"
+#~ msgstr "Bacula Storage : En cours"
 
-#: src/filed/restore.c:1698
-#, c-format
-msgid "Decryption error. buf_len=%d decrypt_len=%d on file %s\n"
-msgstr ""
+#~ msgid "Bacula Storage: Last Job Canceled"
+#~ msgstr "Bacula Storage : Dernier Job annulé"
 
-#: src/filed/restore.c:1819
-msgid "Open File Manager paused\n"
-msgstr ""
+#~ msgid "Bacula Storage: Last Job Failed"
+#~ msgstr "Bacula Storage : Dernier Job en erreur"
 
-#: src/filed/restore.c:1823
-msgid "FAILED to pause Open File Manager\n"
-msgstr ""
+#~ msgid "Bacula Storage: Last Job had Warnings"
+#~ msgstr "Bacula Storage : Le dernier Job avait des erreurs"
 
-#: src/filed/restore.c:1831
-#, c-format
-msgid "Running as '%s'. Privmask=%#08x\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\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"
+#~ "        -f          run in foreground (for debugging)\n"
+#~ "        -g <group>  set groupid to group\n"
+#~ "        -m          print kaboom output (for debugging)\n"
+#~ "        -p          proceed despite I/O errors\n"
+#~ "        -s          no signals (for debugging)\n"
+#~ "        -t          test - read config and exit\n"
+#~ "        -u <user>   userid to <user>\n"
+#~ "        -v          verbose user messages\n"
+#~ "        -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : stored [options] [-c config_file] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -dnn           positionne le niveau de debug à nn\n"
+#~ "      -dt            affiche un timestamp devant chaque ligne de debug\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -p             continue même en cas d'erreurs E/S\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/filed/restore.c:1833
-msgid "Failed to retrieve current UserName\n"
-msgstr ""
+#~ msgid "Could not initialize %s\n"
+#~ msgstr "Impossible d'initialiser %s\n"
 
-#: src/filed/job.c:456
-#, c-format
-msgid "2901 Job %s not found.\n"
-msgstr "2901 Le job %s est introuvable.\n"
+#~ msgid "Could not open device %s\n"
+#~ msgstr "Impossible d'ouvrir le device %s\n"
 
-#: 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"
+#~ msgid "Could not mount device %s\n"
+#~ msgstr "Impossible de monter le device %s\n"
 
-#: 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"
+#~ msgid "Too many items in \"%s\" resource\n"
+#~ msgstr "Trop d'éléments dans la ressource \"%s\"\n"
 
-#: src/filed/job.c:492
-#, c-format
-msgid "2991 Bad setdebug command: %s\n"
-msgstr "2991 Erreur dans la commande setdebug : %s\n"
+#~ msgid "Cannot find AutoChanger resource %s\n"
+#~ msgstr "Impossible de trouver la ressource AutoChanger %s\n"
 
-#: src/filed/job.c:515
-#, c-format
-msgid "Bad estimate command: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init lock: ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
 
-#: src/filed/job.c:516
-msgid "2992 Bad estimate command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad call to eod. Device %s not open\n"
+#~ msgstr "Le Device %s n'est pas ouvert.\n"
 
-#: src/filed/job.c:539
-#, c-format
-msgid "Bad Job Command: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to initialize volume list lock. ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
 
-#: src/filed/job.c:578
-#, c-format
-msgid "Bad RunBeforeJob command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not reserve volume \"%s\", because job canceled.\n"
+#~ msgstr "Impossible de trouver le prochain volume pour le Job %s.\n"
 
-#: src/filed/job.c:579 src/filed/job.c:598
-msgid "2905 Bad RunBeforeJob command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Could not reserve volume \"%s\" for append, because it will be read.\n"
+#~ msgstr "Impossible de trouver le prochain volume pour le Job %s.\n"
 
-#: src/filed/job.c:609
-msgid "2905 Bad RunBeforeNow command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot free Volume \"%s\", because it is reserved by someone else.\n"
+#~ msgstr "Impossible de pruner le Volume \"%s\" car il est archivé.\n"
 
-#: src/filed/job.c:628
-#, c-format
-msgid "Bad RunAfter command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Volume %s is busy swapping.\n"
+#~ msgstr "Le device %s est occupé en lecture.\n"
 
-#: src/filed/job.c:629
-msgid "2905 Bad RunAfterJob command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "%s device %s is busy.\n"
+#~ msgstr "Le device %s est occupé en lecture.\n"
 
-#: src/filed/job.c:665
-#, c-format
-msgid "Bad RunScript command: %s\n"
-msgstr "Erreur dans la commande RunScript : %s\n"
+#, fuzzy
+#~ 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/filed/job.c:666
-msgid "2905 Bad RunScript command.\n"
-msgstr "2905 Erreur sur la commande RunScript.\n"
+#, fuzzy
+#~ msgid "JobId=%s, Job %s waiting device %s.\n"
+#~ msgstr "Le job %s est en attente de réservation d'un device.\n"
 
-#: src/filed/job.c:720
-#, fuzzy, c-format
-msgid "Bad RestoreObject command: %s\n"
-msgstr "Erreur dans la commande RunScript : %s\n"
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "Example : bbatch -w /path/to/workdir -h localhost -f dat1 -f dat -f datx\n"
+#~ " will start 3 thread and load dat1, dat and datx in your catalog\n"
+#~ "See bbatch.c to generate datafile\n"
+#~ "\n"
+#~ "Usage: bbatch [ options ] -w working/dir -f datafile\n"
+#~ "       -b                with batch mode\n"
+#~ "       -B                without batch mode\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -n <name>         specify the database name (default bacula)\n"
+#~ "       -u <user>         specify database user name (default bacula)\n"
+#~ "       -P <password      specify database password (default none)\n"
+#~ "       -h <host>         specify database host (default NULL)\n"
+#~ "       -w <working>      specify working directory\n"
+#~ "       -r <jobids>       call restore code with given jobids\n"
+#~ "       -v                verbose\n"
+#~ "       -f <file>         specify data file\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Copyright (C) 2000-2005 Kern Sibbald.\n"
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -dnn           positionne le niveau de debug à nn\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -r <job>       lance <job> maintenant\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/filed/job.c:785
 #, fuzzy
-msgid "2909 Bad RestoreObject command.\n"
-msgstr "2905 Erreur sur la commande RunScript.\n"
+#~ msgid "Error opening datafile %s\n"
+#~ msgstr "Impossible d'ouvrir le fichier de données %s.\n"
 
-#: src/filed/job.c:824
-#, c-format
-msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error while inserting file\n"
+#~ msgstr "Entrez le nombre de départ : "
 
-#: 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"
+#~ msgid "Could not open data file: %s\n"
+#~ msgstr "Impossible d'ouvrir le fichier de données %s.\n"
 
-#: src/filed/job.c:877
-#, c-format
-msgid "Cannot open FileSet input file: %s. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Fatal fgets error: ERR=%s\n"
+#~ msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/filed/job.c:1031
-#, c-format
-msgid "REGEX %s compile error. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ 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"
+#~ "       -f          set the From: field\n"
+#~ "       -h          use mailhost:port as the SMTP server\n"
+#~ "       -s          set the Subject: field\n"
+#~ "       -r          set the Reply-To: field\n"
+#~ "       -l          set the maximum number of lines to send (default: "
+#~ "unlimited)\n"
+#~ "       -?          print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -d <nn>        positionne le niveau de debug à nn\n"
+#~ "      -dt            affiche un timestamp devant chaque ligne de debug\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -r <job>       lance <job> maintenant\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/filed/job.c:1182
-#, c-format
-msgid "Invalid FileSet command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/job.c:1655
-#, fuzzy, c-format
-msgid ""
-"DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
-msgstr ""
-"L'horloge du client et du director ont %d secondes d'écart, le client s'est "
-"ajusté automatiquement.\n"
+#, fuzzy
+#~ msgid "Failed to connect to mailhost %s\n"
+#~ msgstr "Impossible de se connecter au Client.\n"
 
-#: src/filed/job.c:1664
-#, c-format
-msgid "Unknown backup level: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Fatal _open_osfhandle error: ERR=%s\n"
+#~ msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/filed/job.c:1677
-#, c-format
-msgid "Bad level command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -n <name>         specify the database name (default bacula)\n"
+#~ "       -u <user>         specify database user name (default bacula)\n"
+#~ "       -P <password      specify database password (default none)\n"
+#~ "       -h <host>         specify database host (default NULL)\n"
+#~ "       -w <working>      specify working directory\n"
+#~ "       -j <jobids>       specify jobids\n"
+#~ "       -p <path>         specify path\n"
+#~ "       -f <file>         specify file\n"
+#~ "       -l <limit>        maximum tuple to fetch\n"
+#~ "       -T                truncate cache table before starting\n"
+#~ "       -v                verbose\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Copyright (C) 2000-2005 Kern Sibbald.\n"
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -dnn           positionne le niveau de debug à nn\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -r <job>       lance <job> maintenant\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/filed/job.c:1699
-#, c-format
-msgid "Bad session command: %s"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "       -d <nn>           set debug level to <nn>\n"
+#~ "       -dt               print timestamp in debug output\n"
+#~ "       -n <name>         specify the database name (default bacula)\n"
+#~ "       -u <user>         specify database user name (default bacula)\n"
+#~ "       -P <password      specify database password (default none)\n"
+#~ "       -h <host>         specify database host (default NULL)\n"
+#~ "       -w <working>      specify working directory\n"
+#~ "       -p <path>         specify path\n"
+#~ "       -f <file>         specify file\n"
+#~ "       -l <limit>        maximum tuple to fetch\n"
+#~ "       -q                print only errors\n"
+#~ "       -v                verbose\n"
+#~ "       -?                print this message\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Copyright (C) 2000-2005 Kern Sibbald.\n"
+#~ "\n"
+#~ "Version : %s (%s)\n"
+#~ "\n"
+#~ "Usage : dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+#~ "      -c <fich>      utilise fich comme fichier de configuration\n"
+#~ "      -dnn           positionne le niveau de debug à nn\n"
+#~ "      -f             reste en avant-plan (pour debugger)\n"
+#~ "      -g             groupid\n"
+#~ "      -r <job>       lance <job> maintenant\n"
+#~ "      -s             pas de signaux\n"
+#~ "      -t             test - lit seulement le fichier de configuration\n"
+#~ "      -u             userid\n"
+#~ "      -v             affiche les messages utilisateurs\n"
+#~ "      -?             affiche ce message.\n"
+#~ "\n"
 
-#: src/filed/job.c:1760
-#, c-format
-msgid "Bad storage command: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not open, database \"%s\".\n"
+#~ msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/filed/job.c:1781
-#, c-format
-msgid "Failed to connect to Storage daemon: %s:%d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Create temporary index? (yes/no): "
+#~ msgstr "Continuez ? (oui/non) : "
 
-#: src/filed/job.c:1793
-msgid "Failed to authenticate Storage daemon.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Invalid jobid argument\n"
+#~ msgstr "argument invalide"
 
-#: src/filed/job.c:1840
-msgid "ACL support not configured for your machine.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unknown ObjectType %s\n"
+#~ msgstr "Mot clef inconnu : %s\n"
 
-#: src/filed/job.c:1844
-msgid "XATTR support not configured for your machine.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot run free space command. Results=%s ERR=%s\n"
+#~ msgstr "Impossible de lancer la commande : %s. ERR=%s\n"
 
-#: src/filed/job.c:1853
-msgid "Cannot contact Storage daemon\n"
-msgstr "Impossible de se connecter au démon Storage\n"
+#, fuzzy
+#~ msgid "Error writing part %d to the DVD: ERR=%s\n"
+#~ msgstr "Erreur dans l'exécution de la commande : %s. ERR=%s\n"
 
-#: src/filed/job.c:1872
-#, c-format
-msgid "Bad response to append open: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to write last on %s: ERR=%s\n"
+#~ msgstr "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
 
-#: src/filed/job.c:1877
-msgid "Bad response from stored to open command\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Out of freespace caused 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/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"
+#~ msgid "Could not initialize Python\n"
+#~ msgstr "Impossible d'initialiser le Python\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"
+#~ msgid "Could not Run Python string %s\n"
+#~ msgstr "Impossible de lancer la commande Python %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Unable to initialize the Python lock. ERR=%s\n"
+#~ msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
 
-#: src/filed/job.c:1925
-#, c-format
-msgid "VSS Writer (PrepareForBackup): %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot open current directory: ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier inclus : %s. ERR=%s\n"
 
-#: src/filed/job.c:1930
-msgid "No drive letters found for generating VSS snapshots.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot get current directory: ERR=%s\n"
+#~ msgstr "change le répertoire courant"
 
-#: 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"
+#, fuzzy
+#~ msgid "Cannot reset current directory: ERR=%s\n"
+#~ msgstr "change le répertoire courant"
 
-#: src/filed/job.c:1985
-msgid "Append Close with SD failed.\n"
-msgstr ""
+#~ 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:1989
-#, c-format
-msgid "Bad status %d returned from Storage Daemon.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
+#~ msgstr "Erreur durant la création des snapshots VSS.\n"
 
-#: src/filed/job.c:2019
-#, c-format
-msgid "2994 Bad verify command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
+#~ msgstr "Erreur durant la création des snapshots VSS.\n"
 
-#: src/filed/job.c:2034 src/filed/job.c:2075
-#, c-format
-msgid "2994 Bad verify level: %s\n"
-msgstr ""
+#, fuzzy
+#~ 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:2146
-#, c-format
-msgid "Bad replace command. CMD=%s\n"
-msgstr ""
+#~ msgid "Attribute %s not found."
+#~ msgstr "Attribut %s non trouvé."
 
-#: src/filed/job.c:2169
-#, c-format
-msgid "Bad where regexp. where=%s\n"
-msgstr ""
+#, fuzzy
+#~ 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/filed/job.c:2207
-#, c-format
-msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Cancel: %s\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Annule : %s\n"
+#~ "\n"
+#~ "%s"
 
-#: src/filed/job.c:2252
-#, c-format
-msgid "VSS Writer (RestoreComplete): %s\n"
-msgstr ""
+#~ msgid "Confirm cancel?"
+#~ msgstr "Confirmez l'annulation : "
 
-#: src/filed/job.c:2302
-msgid "Improper calling sequence.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Disable a job"
+#~ msgstr "est bloqué"
 
-#: src/filed/job.c:2322
-#, c-format
-msgid "Bad response to SD read open: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Please Plugin Options string: "
+#~ msgstr "Saisissez le début du chemin (prefix) à enlever : "
 
-#: src/filed/job.c:2327
-msgid "Bad response from stored to read open command\n"
-msgstr ""
+#~ msgid "%6d %-6s  %-20s %s\n"
+#~ msgstr "%6d %-6s  %-20s %s\n"
 
-#: src/filed/job.c:2391
-#, c-format
-msgid "Comm error with SD. bad response to %s. ERR=%s\n"
-msgstr ""
+#~ msgid "Priority must be 1-100"
+#~ msgstr "La priorité doit être comprise entre 1 et 100"
 
-#: src/filed/job.c:2394
-#, c-format
-msgid "Bad response to %s command. Wanted %s, got %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Written by Nicolas Boichat (2004)\n"
+#~ "\n"
+#~ "Version: %s (%s) %s %s %s\n"
+#~ "\n"
+#~ "Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+#~ "       -c <file>     set configuration file to file\n"
+#~ "       -d <nn>       set debug level to <nn>\n"
+#~ "       -dt           print timestamp in debug output\n"
+#~ "       -t            test - read configuration and exit\n"
+#~ "       -?            print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ ") %s %s %s\n"
+#~ "\n"
+#~ "Usage : bconsole [-s] [-c config_file] [-d niveau_debug]\n"
+#~ "       -c <file>   set configuration file to file\n"
+#~ "       -dnn        set debug level to nn\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - lecture de la configuration et sortie\n"
+#~ "\n"
 
-#: src/filed/authenticate.c:68
-#, c-format
-msgid "I only authenticate directors, not %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bacula daemon status monitor"
+#~ msgstr "Bacula Storage : En cours"
 
-#: src/filed/authenticate.c:100
-#, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
-msgstr ""
-"Connexion d'un Director inconnu %s à %s rejeté.\n"
-"\n"
+#, fuzzy
+#~ msgid "Bacula tray monitor"
+#~ msgstr "Bacula Storage : En cours"
 
-#: src/filed/authenticate.c:144
-#, c-format
-msgid "Incorrect password given by Director at %s.\n"
-msgstr "Password incorrect donné par le Director à %s.\n"
+#, fuzzy
+#~ msgid "Unknown status."
+#~ msgstr "Erreur inconnue."
 
-#: src/filed/authenticate.c:263
-msgid ""
-"Authorization key rejected by Storage daemon.\n"
-"Please see "
-msgstr ""
+#, fuzzy
+#~ msgid "About"
+#~ msgstr "Abort"
 
-#: examples/nagios/check_bacula/check_bacula.c:59
-#, c-format
-msgid ""
-"Copyright (C) 2005 Christian Masopust\n"
-"Written by Christian Masopust (2005)\n"
-"\n"
-"Version: "
-msgstr ""
+#, fuzzy
+#~ msgid "Disconnecting from Director %s:%d\n"
+#~ msgstr "Connexion au Director %s:%d\n"
 
-#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
-#, c-format
-msgid "Failed ASSERT: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Disconnecting from Client %s:%d\n"
+#~ msgstr "Connexion au client %s (%s:%d)\n"
 
-#: src/win32/compat/compat.cpp:2721
 #, fuzzy
-msgid ""
-"\n"
-"\n"
-"Bacula ERROR: "
-msgstr "Bacula "
+#~ msgid "Disconnecting from Storage %s:%d\n"
+#~ msgstr "Connexion au Director %s:%d\n"
 
-#: src/win32/libwin32/service.cpp:107
-msgid "RegisterServiceCtlHandler failed"
-msgstr ""
+#~ msgid "Version"
+#~ msgstr "Version"
 
-#: src/win32/libwin32/service.cpp:108
 #, fuzzy
-msgid "Failure contacting the Service Handler"
-msgstr "Impossible de décrypter la clef de session"
+#~ msgid ""
+#~ "Current job: %s\n"
+#~ "Last job: %s"
+#~ msgstr "Le statut actuel du volume (Volume status) est : %s\n"
 
-#: src/win32/libwin32/service.cpp:119
-msgid "Service start report failed"
-msgstr ""
+#, fuzzy
+#~ msgid " (%d errors)"
+#~ msgstr "est en erreur"
 
-#: src/win32/libwin32/service.cpp:172
-msgid "StartServiceCtrlDispatcher failed."
-msgstr ""
+#, fuzzy
+#~ msgid " (%d error)"
+#~ msgstr "BUS error"
 
-#: src/win32/libwin32/service.cpp:179
 #, fuzzy
-msgid "KERNEL32.DLL not found: Bacula service not started"
-msgstr "Ressource %s introuvable\n"
+#~ msgid "No current job."
+#~ msgstr "Pas de RecyclePool courant\n"
 
-#: src/win32/libwin32/service.cpp:189
 #, fuzzy
-msgid "Registry service not found: Bacula service not started"
-msgstr "Ressource %s introuvable\n"
+#~ msgid "Job status: Running"
+#~ msgstr "Pas de job en cours.\n"
 
-#: src/win32/libwin32/service.cpp:191
 #, fuzzy
-msgid "Registry service entry point not found"
-msgstr "Ressource %s introuvable\n"
+#~ msgid "Job status: Terminated"
+#~ msgstr "est terminé"
 
-#: src/win32/libwin32/service.cpp:212
-msgid "Report Service failure"
-msgstr ""
+#, fuzzy
+#~ msgid "Job status: Fatal error"
+#~ msgstr "%s : %s Erreur fatale : "
 
-#: src/win32/libwin32/service.cpp:243
 #, fuzzy
-msgid "Unable to install the service"
-msgstr "Impossible d'écrire le marqueur EOF. ERR=%s\n"
+#~ msgid "Job status: Verify differences"
+#~ msgstr "Vérification des différences"
 
-#: src/win32/libwin32/service.cpp:251
-msgid "Service command length too long"
-msgstr ""
+#, fuzzy
+#~ msgid "Job status: Canceled"
+#~ msgstr "Le job %s est annulé.\n"
 
-#: src/win32/libwin32/service.cpp:252
-msgid "Service command length too long. Service not registered."
-msgstr ""
+#, fuzzy
+#~ msgid "Job status: Waiting on File daemon"
+#~ msgstr "%s Job %s est en attente de la connexion du Client.\n"
 
-#: src/win32/libwin32/service.cpp:265
 #, fuzzy
-msgid ""
-"The Service Control Manager could not be contacted - the service was not "
-"installed"
-msgstr "Ressource %s introuvable\n"
+#~ msgid "Job status: Waiting on the Storage daemon"
+#~ msgstr "est en attente du Storage %s"
 
-#: src/win32/libwin32/service.cpp:288 src/win32/libwin32/service.cpp:317
-#: src/win32/libwin32/service.cpp:365 src/win32/libwin32/service.cpp:373
-#: src/win32/libwin32/service.cpp:377
 #, fuzzy
-msgid "The Bacula service: "
-msgstr "Bacula Storage : Dernier Job annulé"
+#~ msgid "Job status: Waiting for new media"
+#~ msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
 
-#: src/win32/libwin32/service.cpp:295
-msgid ""
-"Provides file backup and restore services. Bacula -- the network backup "
-"solution."
-msgstr ""
+#, fuzzy
+#~ msgid "Job status: Waiting for Mount"
+#~ msgstr "En attente d'un montage"
 
-#: src/win32/libwin32/service.cpp:306
 #, fuzzy
-msgid "Cannot write System Registry for "
-msgstr "Impossible de détruire la mémoire partagée : %s\n"
+#~ msgid "Job status: Waiting for storage resource"
+#~ msgstr "En attente du Storage"
 
-#: src/win32/libwin32/service.cpp:307
 #, fuzzy
-msgid ""
-"The System Registry could not be updated - the Bacula service was not "
-"installed"
-msgstr "Ressource %s introuvable\n"
+#~ msgid "Job status: Waiting for job resource"
+#~ msgstr "En attente du Storage"
 
-#: src/win32/libwin32/service.cpp:316
-msgid "Cannot add Bacula key to System Registry"
-msgstr ""
+#, fuzzy
+#~ msgid "Job status: Waiting for Client resource"
+#~ msgstr "%s Job %s est en attente de la connexion du Client.\n"
 
-#: src/win32/libwin32/service.cpp:327
-msgid "The "
-msgstr ""
+#, fuzzy
+#~ msgid "Job status: Waiting for start time"
+#~ msgstr "attend son heure de démarrage"
 
-#: src/win32/libwin32/service.cpp:385
 #, fuzzy
-msgid "An existing Bacula service: "
-msgstr "Bacula Storage : Dernier Job annulé"
+#~ msgid "Job status: Waiting for higher priority jobs to finish"
+#~ msgstr "attend qu'un job plus prioritaire se termine"
 
-#: src/win32/libwin32/service.cpp:394
 #, fuzzy
-msgid ""
-"The service Manager could not be contacted - the Bacula service was not "
-"removed"
-msgstr "Ressource %s introuvable\n"
+#~ msgid "Unknown job status %c."
+#~ msgstr "est dans un état inconnu %c"
 
-#: src/win32/libwin32/service.cpp:407
 #, fuzzy
-msgid ""
-"Could not find registry entry.\n"
-"Service probably not registerd - the Bacula service was not removed"
-msgstr "Ressource %s introuvable\n"
+#~ msgid "Connecting to Client %s:%d\n"
+#~ msgstr "Connexion au client %s (%s:%d)\n"
 
-#: src/win32/libwin32/service.cpp:414
 #, fuzzy
-msgid "Could not delete Registry key for "
-msgstr "Impossible de détruire la mémoire partagée : %s\n"
+#~ msgid "Connecting to Storage %s:%d\n"
+#~ msgstr "Connexion au Director %s:%d\n"
 
-#: src/win32/libwin32/service.cpp:425
-msgid "Bacula could not be contacted, probably not running"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot connect to daemon.\n"
+#~ msgstr "Impossible de se connecter au démon Storage\n"
 
-#: src/win32/libwin32/service.cpp:433
 #, fuzzy
-msgid "The Bacula service has been removed"
-msgstr "Ressource %s introuvable\n"
+#~ msgid "Opened connection with Director daemon.\n"
+#~ msgstr "Impossible de se connecter au Storage daemon.\n"
 
-#: src/win32/libwin32/service.cpp:474
-msgid "SetServiceStatus failed"
-msgstr ""
+#, fuzzy
+#~ msgid "Opened connection with File daemon.\n"
+#~ msgstr "Impossible de se connecter au client.\n"
 
-#: src/win32/libwin32/service.cpp:500
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s error: %ld at %s:%d"
-msgstr ""
+#, fuzzy
+#~ msgid "Opened connection with Storage daemon.\n"
+#~ msgstr "Impossible de se connecter au Storage daemon.\n"
 
-#: src/win32/libwin32/service.cpp:576
-#, c-format
-msgid "Locked by: %s, duration: %ld seconds\n"
-msgstr ""
+#, fuzzy
+#~ msgid "<ERROR>\n"
+#~ msgstr "%s : ERREUR : "
 
-#: src/win32/libwin32/service.cpp:580
-#, c-format
-msgid "No longer locked\n"
-msgstr ""
+#~ msgid "End of %s %u on device %s, Volume \"%s\"\n"
+#~ msgstr "Fin de %s %u sur le device %s, Volume \"%s\"\n"
 
-#: src/win32/libwin32/service.cpp:584
 #, fuzzy
-msgid "Could not lock database"
-msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
+#~ msgid "Append data error.\n"
+#~ msgstr "Erreur non fatale"
 
-#: src/win32/libwin32/main.cpp:245
-msgid "Bad Command Line Option"
-msgstr ""
+# Impossible d'ouvrir le fichier de spool des attributs : ERR=%s
+#, fuzzy
+#~ msgid "Truncate on attributes file failed: ERR=%s\n"
+#~ msgstr "Impossible d'ouvrir le fichier de spool des attributs %s : ERR=%s\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:65
 #, fuzzy
-msgid "Config file editor"
-msgstr "La création de la signature a échouée"
+#~ msgid "Unable to open device part=%d %s: ERR=%s\n"
+#~ msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:75
 #, fuzzy
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr "Merci de corriger le fichier de configuration : %s\n"
+#~ msgid "Failed to allocate space for query filter.\n"
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to allocate space for query filters.\n"
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:112
 #, fuzzy
-msgid "Close without saving"
-msgstr "Terminé avec des avertissements"
+#~ msgid ""
+#~ "Unable to connect to Ingres server.\n"
+#~ "Database=%s User=%s\n"
+#~ "It is probably not running or your password is incorrect.\n"
+#~ msgstr ""
+#~ "Impossible de se connecter au serveur MySQL.\n"
+#~ "Base=%s Utilisateur=%s\n"
+#~ "Le serveur n'est pas démarré ou bien votre password est invalide.\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-#, fuzzy, c-format
-msgid "Unable to write to %s\n"
-msgstr "Impossible d'écrire le marqueur EOF. ERR=%s\n"
+#, fuzzy
+#~ msgid "A user name for Ingres must be supplied.\n"
+#~ msgstr "Un nom d'utilisateur MySQL doit être fourni.\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:140
 #, fuzzy
-msgid "Error while saving"
-msgstr "Entrez le nombre de départ : "
+#~ msgid ""
+#~ "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
+#~ "Possible causes: SQL server not running; password incorrect; "
+#~ "max_connections exceeded.\n"
+#~ msgstr ""
+#~ "Impossible de se connecter au serveur PostgreSQL.\n"
+#~ "Base=%s Utilisateur=%s\n"
+#~ "Le serveur n'est pas démarré ou bien votre password est invalide.\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 "Saisissez le nom d'un répertoire : "
+#~ msgid "error inserting batch mode: %s"
+#~ msgstr "erreur en terminant le mode batch: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:237
 #, fuzzy
-msgid "Cancel restore"
-msgstr "Annulé"
+#~ msgid "Driver type not specified in Catalog resource.\n"
+#~ msgstr "Impossible de trouver un Catalogue\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr ""
+#, fuzzy
+#~ msgid "Invalid driver type, must be \"dbi:<type>\"\n"
+#~ msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
 #, fuzzy
-msgid "Remove"
-msgstr "Restaurer"
+#~ msgid "A user name for DBI must be supplied.\n"
+#~ msgstr "Un nom d'utilisateur MySQL doit être fourni.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
 #, fuzzy
-msgid "Refresh"
-msgstr "Restaurer"
+#~ msgid "Bad response to Hello command: ERR="
+#~ msgstr "Mauvaise réponse à la commande Hello : ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr ""
+#~ msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
+#~ msgstr "    Fichiers=%s Octets=%s Octets/sec=%s Erreurs=%d\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:290
 #, fuzzy
-msgid "Filename"
-msgstr "FileSet"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "Bacula ERROR: "
+#~ msgstr "Bacula "
 
-#: src/wx-console/wxbrestorepanel.cpp:294
 #, fuzzy
-msgid "Size"
-msgstr "Depuis"
-
-#: src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr ""
+#~ msgid "Failure contacting the Service Handler"
+#~ msgstr "Impossible de décrypter la clef de session"
 
-#: src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr ""
+#, fuzzy
+#~ msgid "KERNEL32.DLL not found: Bacula service not started"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr ""
+#, fuzzy
+#~ msgid "Registry service not found: Bacula service not started"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1897
-#, fuzzy
-msgid "Job Name"
-msgstr "Job échoué.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1153
-#: src/wx-console/wxbrestorepanel.cpp:1156
-#: src/wx-console/wxbrestorepanel.cpp:1239
-#: src/wx-console/wxbrestorepanel.cpp:1849
-#: src/wx-console/wxbrestorepanel.cpp:1851
-#: src/wx-console/wxbrestorepanel.cpp:1912
-#, fuzzy
-msgid "Fileset"
-msgstr "FileSet"
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1233
-#: src/wx-console/wxbrestorepanel.cpp:1249
-#: src/wx-console/wxbrestorepanel.cpp:1251
-#: src/wx-console/wxbrestorepanel.cpp:1259
-#: src/wx-console/wxbrestorepanel.cpp:1261
-#: src/wx-console/wxbrestorepanel.cpp:1280
-#: src/wx-console/wxbrestorepanel.cpp:1287
-#: src/wx-console/wxbrestorepanel.cpp:1839
-#: src/wx-console/wxbrestorepanel.cpp:1850
-#: src/wx-console/wxbrestorepanel.cpp:1971
-#, fuzzy
-msgid "Before"
-msgstr "Restaurer"
-
-#: src/wx-console/wxbrestorepanel.cpp:342
-#, fuzzy
-msgid "Please configure parameters concerning files to restore :"
-msgstr "Aucun fichier sélectionné pour la restauration.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1905
-msgid "always"
-msgstr ""
+#, fuzzy
+#~ msgid "Registry service entry point not found"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
 #, fuzzy
-msgid "if newer"
-msgstr "Type"
+#~ msgid "Unable to install the service"
+#~ msgstr "Impossible d'écrire le marqueur EOF. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
 #, fuzzy
-msgid "if older"
-msgstr "FileSet"
+#~ msgid ""
+#~ "The Service Control Manager could not be contacted - the service was not "
+#~ "installed"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1908
 #, fuzzy
-msgid "never"
-msgstr "Type"
+#~ msgid "The Bacula service: "
+#~ msgstr "Bacula Storage : Dernier Job annulé"
 
-#: src/wx-console/wxbrestorepanel.cpp:359
 #, fuzzy
-msgid "Please configure parameters concerning files restoration :"
-msgstr "Aucun fichier sélectionné pour la restauration.\n"
+#~ msgid "Cannot write System Registry for "
+#~ msgstr "Impossible de détruire la mémoire partagée : %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "The System Registry could not be updated - the Bacula service was not "
+#~ "installed"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:435
 #, fuzzy
-msgid "Error : no clients returned by the director."
-msgstr "Impossible de se connecter au Director\n"
+#~ msgid "An existing Bacula service: "
+#~ msgstr "Bacula Storage : Dernier Job annulé"
 
-#: src/wx-console/wxbrestorepanel.cpp:459
 #, fuzzy
-msgid "Error : no filesets returned by the director."
-msgstr "Impossible de se connecter au Director\n"
+#~ msgid ""
+#~ "The service Manager could not be contacted - the Bacula service was not "
+#~ "removed"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:483
 #, fuzzy
-msgid "Error : no storage returned by the director."
-msgstr "Impossible de se connecter au Director\n"
+#~ msgid ""
+#~ "Could not find registry entry.\n"
+#~ "Service probably not registerd - the Bacula service was not removed"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
 #, fuzzy
-msgid "Error : no jobs returned by the director."
-msgstr "Impossible de se connecter au Director\n"
+#~ msgid "Could not delete Registry key for "
+#~ msgstr "Impossible de détruire la mémoire partagée : %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:516
 #, fuzzy
-msgid "RestoreFiles"
-msgstr "restauration de fichier"
+#~ msgid "The Bacula service has been removed"
+#~ msgstr "Ressource %s introuvable\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:551
 #, fuzzy
-msgid "Please configure your restore parameters."
-msgstr "Aucun fichier sélectionné pour la restauration.\n"
+#~ msgid "Could not lock database"
+#~ msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:556
 #, fuzzy
-msgid "Please select a client."
-msgstr "Impossible de se connecter au Client.\n"
+#~ msgid "Config file editor"
+#~ msgstr "La création de la signature a échouée"
 
-#: src/wx-console/wxbrestorepanel.cpp:560
 #, fuzzy
-msgid "Please select a restore date."
-msgstr "Aucun fichier sélectionné pour la restauration.\n"
+#~ msgid "Close without saving"
+#~ msgstr "Terminé avec des avertissements"
 
-#: src/wx-console/wxbrestorepanel.cpp:565
 #, fuzzy
-msgid "Building restore tree..."
-msgstr ""
-"\n"
-"Analyse des répertoires pour le JobId %s..."
+#~ msgid "Unable to write to %s\n"
+#~ msgstr "Impossible d'écrire le marqueur EOF. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:613
 #, fuzzy
-msgid "Error while starting restore: "
-msgstr "Entrez le nombre de départ : "
+#~ msgid "Error while saving"
+#~ msgstr "Entrez le nombre de départ : "
 
-#: src/wx-console/wxbrestorepanel.cpp:705
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
+#, fuzzy
+#~ msgid "Enter restore mode"
+#~ msgstr "Saisissez le nom d'un répertoire : "
 
-#: src/wx-console/wxbrestorepanel.cpp:720 src/wx-console/wxbmainframe.cpp:685
-msgid "Unexpected question has been received.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cancel restore"
+#~ msgstr "Annulé"
 
-#: src/wx-console/wxbrestorepanel.cpp:742
-#: src/wx-console/wxbrestorepanel.cpp:764
-msgid "bwx-console: unexpected restore question."
-msgstr ""
+#, fuzzy
+#~ msgid "Remove"
+#~ msgstr "Restaurer"
 
-#: src/wx-console/wxbrestorepanel.cpp:775
 #, fuzzy
-msgid " files selected to be restored."
-msgstr "Aucun fichier sélectionné pour la restauration.\n"
+#~ msgid "Refresh"
+#~ msgstr "Restaurer"
 
-#: src/wx-console/wxbrestorepanel.cpp:780
 #, fuzzy
-msgid " file selected to be restored."
-msgstr "Aucun fichier sélectionné pour la restauration.\n"
+#~ msgid "Filename"
+#~ msgstr "FileSet"
 
-#: src/wx-console/wxbrestorepanel.cpp:787
-#, fuzzy, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr "Aucun fichier sélectionné pour la restauration.\n"
+#, fuzzy
+#~ msgid "Size"
+#~ msgstr "Depuis"
 
-#: src/wx-console/wxbrestorepanel.cpp:797
 #, fuzzy
-msgid "Restore failed : no file selected.\n"
-msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
+#~ msgid "Job Name"
+#~ msgstr "Job échoué.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:798
 #, fuzzy
-msgid "Restore failed : no file selected."
-msgstr "Impossible de se connecter au Client.\n"
+#~ msgid "Fileset"
+#~ msgstr "FileSet"
 
-#: src/wx-console/wxbrestorepanel.cpp:808
 #, fuzzy
-msgid "Restoring, please wait..."
-msgstr "string"
+#~ msgid "Before"
+#~ msgstr "Restaurer"
 
-#: src/wx-console/wxbrestorepanel.cpp:821
 #, fuzzy
-msgid "Job queued. JobId="
-msgstr "Job mis en queue. JobId=%s\n"
+#~ msgid "Please configure parameters concerning files to restore :"
+#~ msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:823
 #, fuzzy
-msgid "Restore queued, jobid="
-msgstr "Job démarré. JobId=%s\n"
+#~ msgid "if newer"
+#~ msgstr "Type"
 
-#: src/wx-console/wxbrestorepanel.cpp:827
 #, fuzzy
-msgid "Job failed."
-msgstr "Job échoué.\n"
+#~ msgid "if older"
+#~ msgstr "FileSet"
 
-#: src/wx-console/wxbrestorepanel.cpp:828
 #, fuzzy
-msgid "Restore failed, please look at messages.\n"
-msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
+#~ msgid "never"
+#~ msgstr "Type"
 
-#: src/wx-console/wxbrestorepanel.cpp:829
-msgid "Restore failed, please look at messages in console."
-msgstr ""
+#, fuzzy
+#~ msgid "Please configure parameters concerning files restoration :"
+#~ msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:835
-#: src/wx-console/wxbrestorepanel.cpp:836
 #, fuzzy
-msgid "Failed to retrieve jobid.\n"
-msgstr "Impossible de se connecter au Client.\n"
+#~ msgid "Error : no clients returned by the director."
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:862
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error : no filesets returned by the director."
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:863
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion."
-msgstr ""
+#, fuzzy
+#~ msgid "Error : no storage returned by the director."
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:889
 #, fuzzy
-msgid "Restore job created, but not yet running."
-msgstr "Restauration annulée"
+#~ msgid "Error : no jobs returned by the director."
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:894
-#, fuzzy, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr "%s Job %s est en attente de la connexion du Client.\n"
+#, fuzzy
+#~ msgid "RestoreFiles"
+#~ msgstr "restauration de fichier"
 
-#: src/wx-console/wxbrestorepanel.cpp:898
 #, fuzzy
-msgid "Restore job terminated successfully."
-msgstr "Restauration non effectuée.\n"
+#~ msgid "Please configure your restore parameters."
+#~ msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:899
 #, fuzzy
-msgid "Restore job terminated successfully.\n"
-msgstr "Restauration non effectuée.\n"
+#~ msgid "Please select a client."
+#~ msgstr "Impossible de se connecter au Client.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:904
 #, fuzzy
-msgid "Restore job terminated in error, see messages in console."
-msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
+#~ msgid "Please select a restore date."
+#~ msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:905
 #, fuzzy
-msgid "Restore job terminated in error, see messages.\n"
-msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
+#~ msgid "Building restore tree..."
+#~ msgstr ""
+#~ "\n"
+#~ "Analyse des répertoires pour le JobId %s..."
 
-#: src/wx-console/wxbrestorepanel.cpp:910
 #, fuzzy
-msgid "Restore job reported a non-fatal error."
-msgstr "Restauration annulée"
+#~ msgid "Error while starting restore: "
+#~ msgstr "Entrez le nombre de départ : "
 
-#: src/wx-console/wxbrestorepanel.cpp:914
 #, fuzzy
-msgid "Restore job reported a fatal error."
-msgstr "Restauration annulée"
+#~ msgid " files selected to be restored."
+#~ msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:919
 #, fuzzy
-msgid "Restore job cancelled by user."
-msgstr "Restauration annulée"
+#~ msgid " file selected to be restored."
+#~ msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:920
 #, fuzzy
-msgid "Restore job cancelled by user.\n"
-msgstr "Restauration annulée"
+#~ msgid "Please configure your restore (%ld files selected to be restored)..."
+#~ msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:925
 #, fuzzy
-msgid "Restore job is waiting on File daemon."
-msgstr "%s Job %s est en attente de la connexion du Client.\n"
+#~ msgid "Restore failed : no file selected.\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:929
 #, fuzzy
-msgid "Restore job is waiting for new media."
-msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
+#~ msgid "Restore failed : no file selected."
+#~ msgstr "Impossible de se connecter au Client.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:933
 #, fuzzy
-msgid "Restore job is waiting for storage resource."
-msgstr "En attente du Storage"
+#~ msgid "Restoring, please wait..."
+#~ msgstr "string"
 
-#: src/wx-console/wxbrestorepanel.cpp:937
 #, fuzzy
-msgid "Restore job is waiting for job resource."
-msgstr "En attente du Storage"
+#~ msgid "Job queued. JobId="
+#~ msgstr "Job mis en queue. JobId=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:941
 #, fuzzy
-msgid "Restore job is waiting for Client resource."
-msgstr "%s Job %s est en attente de la connexion du Client.\n"
+#~ msgid "Restore queued, jobid="
+#~ msgstr "Job démarré. JobId=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:945
 #, fuzzy
-msgid "Restore job is waiting for maximum jobs."
-msgstr "En attente du Storage"
+#~ msgid "Job failed."
+#~ msgstr "Job échoué.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:949
 #, fuzzy
-msgid "Restore job is waiting for start time."
-msgstr "attend son heure de démarrage"
+#~ msgid "Restore failed, please look at messages.\n"
+#~ msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:953
 #, fuzzy
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr "attend qu'un job plus prioritaire se termine"
-
-#: src/wx-console/wxbrestorepanel.cpp:1002
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
+#~ msgid "Failed to retrieve jobid.\n"
+#~ msgstr "Impossible de se connecter au Client.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1013
 #, fuzzy
-msgid "Restore done successfully.\n"
-msgstr "Restauration non effectuée.\n"
+#~ msgid "Restore job created, but not yet running."
+#~ msgstr "Restauration annulée"
 
-#: src/wx-console/wxbrestorepanel.cpp:1014
 #, fuzzy
-msgid "Restore done successfully."
-msgstr "Restauration non effectuée.\n"
+#~ msgid "Restore job running, please wait (%ld of %ld files restored)..."
+#~ msgstr "%s Job %s est en attente de la connexion du Client.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1086
 #, fuzzy
-msgid "Applying restore configuration changes..."
-msgstr "Merci de corriger le fichier de configuration : %s\n"
+#~ msgid "Restore job terminated successfully."
+#~ msgstr "Restauration non effectuée.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1138
 #, fuzzy
-msgid "Failed to find the selected client."
-msgstr "Impossible de se connecter au Client.\n"
+#~ msgid "Restore job terminated successfully.\n"
+#~ msgstr "Restauration non effectuée.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1158
 #, fuzzy
-msgid "Failed to find the selected fileset."
-msgstr "Impossible de se connecter au Client.\n"
+#~ msgid "Restore job terminated in error, see messages in console."
+#~ msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1178
 #, fuzzy
-msgid "Failed to find the selected storage."
-msgstr "Impossible de se connecter au Storage daemon.\n"
+#~ 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:1199
-#: src/wx-console/wxbrestorepanel.cpp:1886
 #, fuzzy
-msgid "Run Restore job"
-msgstr "Sélectionnez le Job de restauration"
-
-#: src/wx-console/wxbrestorepanel.cpp:1216
-msgid "Restore configuration changes were applied."
-msgstr ""
+#~ msgid "Restore job reported a non-fatal error."
+#~ msgstr "Restauration annulée"
 
-#: src/wx-console/wxbrestorepanel.cpp:1225
 #, fuzzy
-msgid "Restore cancelled.\n"
-msgstr "Restauration annulée"
+#~ msgid "Restore job reported a fatal error."
+#~ msgstr "Restauration annulée"
 
-#: src/wx-console/wxbrestorepanel.cpp:1226
 #, fuzzy
-msgid "Restore cancelled."
-msgstr "Restauration annulée"
+#~ msgid "Restore job cancelled by user."
+#~ msgstr "Restauration annulée"
 
-#: src/wx-console/wxbrestorepanel.cpp:1248
 #, fuzzy
-msgid "No results to list."
-msgstr "Liste vide.\n"
+#~ msgid "Restore job cancelled by user.\n"
+#~ msgstr "Restauration annulée"
 
-#: src/wx-console/wxbrestorepanel.cpp:1250
 #, fuzzy
-msgid "No backup found for this client."
-msgstr "Pas de job trouvé pour : %s.\n"
+#~ msgid "Restore job is waiting on File daemon."
+#~ msgstr "%s Job %s est en attente de la connexion du Client.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1257
 #, fuzzy
-msgid "ERROR"
-msgstr "%s : ERREUR : "
+#~ msgid "Restore job is waiting for new media."
+#~ msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1258
 #, fuzzy
-msgid "Query failed"
-msgstr "Erreur sur la requête : %s\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:1260
-msgid "Cannot get previous backups list, see console."
-msgstr ""
+#~ msgid "Restore job is waiting for storage resource."
+#~ msgstr "En attente du Storage"
 
-#: src/wx-console/wxbrestorepanel.cpp:1896
 #, fuzzy
-msgid "JobName:"
-msgstr "Job échoué.\n"
+#~ msgid "Restore job is waiting for job resource."
+#~ msgstr "En attente du Storage"
 
-#: src/wx-console/wxbrestorepanel.cpp:1898
 #, fuzzy
-msgid "Bootstrap:"
-msgstr "Bootstrap"
+#~ msgid "Restore job is waiting for Client resource."
+#~ msgstr "%s Job %s est en attente de la connexion du Client.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1900
 #, fuzzy
-msgid "Where:"
-msgstr "Destination"
+#~ msgid "Restore job is waiting for maximum jobs."
+#~ msgstr "En attente du Storage"
 
-#: src/wx-console/wxbrestorepanel.cpp:1903
 #, fuzzy
-msgid "Replace:"
-msgstr "Écrasement :\n"
+#~ msgid "Restore job is waiting for start time."
+#~ msgstr "attend son heure de démarrage"
 
-#: src/wx-console/wxbrestorepanel.cpp:1906
 #, fuzzy
-msgid "ifnewer"
-msgstr "Type"
+#~ msgid "Restore job is waiting for higher priority jobs to finish."
+#~ msgstr "attend qu'un job plus prioritaire se termine"
 
-#: src/wx-console/wxbrestorepanel.cpp:1907
 #, fuzzy
-msgid "ifolder"
-msgstr "FileSet"
+#~ msgid "Restore done successfully.\n"
+#~ msgstr "Restauration non effectuée.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1911
 #, fuzzy
-msgid "FileSet:"
-msgstr "FileSet"
+#~ msgid "Restore done successfully."
+#~ msgstr "Restauration non effectuée.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1913
 #, fuzzy
-msgid "Client:"
-msgstr "Client"
+#~ msgid "Applying restore configuration changes..."
+#~ msgstr "Merci de corriger le fichier de configuration : %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1915
 #, fuzzy
-msgid "Storage:"
-msgstr "Stockage"
+#~ msgid "Failed to find the selected client."
+#~ msgstr "Impossible de se connecter au Client.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1917
 #, fuzzy
-msgid "When:"
-msgstr "Quand"
+#~ msgid "Failed to find the selected fileset."
+#~ msgstr "Impossible de se connecter au Client.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1920
 #, fuzzy
-msgid "Priority:"
-msgstr "Priorité"
+#~ msgid "Failed to find the selected storage."
+#~ msgstr "Impossible de se connecter au Storage daemon.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:2028
 #, fuzzy
-msgid "Restoring..."
-msgstr "string"
-
-#: src/wx-console/console_thread.cpp:125
-#, 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 ""
+#~ msgid "Run Restore job"
+#~ msgstr "Sélectionnez le Job de restauration"
 
-#: 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 ""
-"Pas de director défini pour %s\n"
-"Sans cette définition, il n'est pas possible de se connecter à celui-ci.\n"
-
-#: src/wx-console/console_thread.cpp:151
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
-msgstr ""
+#~ msgid "Restore cancelled."
+#~ msgstr "Restauration annulée"
 
-#: src/wx-console/console_thread.cpp:173
 #, fuzzy
-msgid "Error while initializing windows sockets...\n"
-msgstr "Erreur pendant l'initialisation du contexte SSL"
+#~ msgid "No results to list."
+#~ msgstr "Liste vide.\n"
 
-#: src/wx-console/console_thread.cpp:189
 #, fuzzy
-msgid "Error while cleaning up windows sockets...\n"
-msgstr "Erreur pendant l'initialisation du contexte SSL"
+#~ msgid "No backup found for this client."
+#~ msgstr "Pas de job trouvé pour : %s.\n"
 
-#: src/wx-console/console_thread.cpp:228
 #, fuzzy
-msgid "Error while initializing library."
-msgstr "Erreur pendant l'initialisation du contexte SSL"
+#~ msgid "ERROR"
+#~ msgstr "%s : ERREUR : "
 
-#: src/wx-console/console_thread.cpp:256
 #, fuzzy
-msgid "Cryptographic library initialization failed.\n"
-msgstr "Initialisation de la connexion TLS échouée.\n"
+#~ msgid "Query failed"
+#~ msgstr "Erreur sur la requête : %s\n"
 
-#: src/wx-console/console_thread.cpp:260
 #, fuzzy
-msgid "Please correct configuration file.\n"
-msgstr "Merci de corriger le fichier de configuration : %s\n"
+#~ msgid "JobName:"
+#~ msgstr "Job échoué.\n"
 
-#: src/wx-console/console_thread.cpp:302
 #, fuzzy
-msgid "Error : Library not initialized\n"
-msgstr "Impossible d'initialiser %s\n"
+#~ msgid "Bootstrap:"
+#~ msgstr "Bootstrap"
 
-#: src/wx-console/console_thread.cpp:313
 #, fuzzy
-msgid "Error : No configuration file loaded\n"
-msgstr "La création de la signature a échouée"
-
-#: src/wx-console/console_thread.cpp:323
-msgid "Connecting...\n"
-msgstr "Connexion...\n"
-
-#: src/wx-console/console_thread.cpp:339
-msgid "Error : No director defined in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:351
-msgid "Multiple directors found in your config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:360
-#, fuzzy, c-format
-msgid "Please choose a director (1-%d): "
-msgstr "Aucun fichier sélectionné pour la restauration.\n"
-
-#: src/wx-console/console_thread.cpp:389
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:410
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:432
-msgid "Failed to connect to the director\n"
-msgstr "Impossible de se connecter au Director\n"
+#~ msgid "Where:"
+#~ msgstr "Destination"
 
-#: src/wx-console/console_thread.cpp:442
 #, fuzzy
-msgid "Connected\n"
-msgstr "Connexion...\n"
+#~ msgid "Replace:"
+#~ msgstr "Écrasement :\n"
 
-#: 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 "Sélection terminée.\n"
-
-#: src/wx-console/wxbconfigpanel.cpp:213
-msgid "Apply"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-#: src/wx-console/wxbmainframe.cpp:291
-msgid "Type your command below:"
-msgstr "Saisissez votre commande ci-dessous : "
+#~ msgid "ifnewer"
+#~ msgstr "Type"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:117
 #, fuzzy
-msgid "Unknown command."
-msgstr "Erreur inconnue."
+#~ msgid "ifolder"
+#~ msgstr "FileSet"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:126
 #, fuzzy
-msgid "Possible completions: "
-msgstr "Les valeurs possibles sont :\n"
+#~ msgid "FileSet:"
+#~ msgstr "FileSet"
 
-#: src/wx-console/main.cpp:119
 #, fuzzy
-msgid "Bacula bwx-console"
-msgstr "Message de Bacula"
-
-#: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
-#, c-format
-msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr ""
+#~ msgid "Client:"
+#~ msgstr "Client"
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
 #, fuzzy
-msgid "Connect"
-msgstr "Connexion...\n"
+#~ msgid "Storage:"
+#~ msgstr "Stockage"
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
 #, fuzzy
-msgid "Connect to the director"
-msgstr "Impossible de se connecter au Director\n"
+#~ msgid "When:"
+#~ msgstr "Quand"
 
-#: src/wx-console/wxbmainframe.cpp:249
 #, fuzzy
-msgid "Disconnect"
-msgstr "Connexion...\n"
+#~ msgid "Priority:"
+#~ msgstr "Priorité"
 
-#: src/wx-console/wxbmainframe.cpp:249
 #, fuzzy
-msgid "Disconnect of the director"
-msgstr "Impossible de se connecter au Director\n"
+#~ msgid "Restoring..."
+#~ msgstr "string"
 
-#: src/wx-console/wxbmainframe.cpp:251
 #, fuzzy
-msgid "Change of configuration file"
-msgstr "La création de la signature a échouée"
+#~ msgid ""
+#~ "No Director resource defined in config file.\n"
+#~ "Without that I don't how to speak to the Director :-(\n"
+#~ msgstr ""
+#~ "Pas de director défini pour %s\n"
+#~ "Sans cette définition, il n'est pas possible de se connecter à celui-ci.\n"
 
-#: src/wx-console/wxbmainframe.cpp:251
 #, fuzzy
-msgid "Change your default configuration file"
-msgstr "Impossible de lire le certificat à partir du fichier"
+#~ msgid "Error while initializing windows sockets...\n"
+#~ msgstr "Erreur pendant l'initialisation du contexte SSL"
 
-#: src/wx-console/wxbmainframe.cpp:252
 #, fuzzy
-msgid "Edit your configuration file"
-msgstr "La création de la signature a échouée"
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr ""
+#~ msgid "Error while cleaning up windows sockets...\n"
+#~ msgstr "Erreur pendant l'initialisation du contexte SSL"
 
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr ""
+#, fuzzy
+#~ msgid "Error while initializing library."
+#~ msgstr "Erreur pendant l'initialisation du contexte SSL"
 
-#: src/wx-console/wxbmainframe.cpp:258
 #, fuzzy
-msgid "&File"
-msgstr "FileSet"
+#~ msgid "Cryptographic library initialization failed.\n"
+#~ msgstr "Initialisation de la connexion TLS échouée.\n"
 
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr ""
+#, fuzzy
+#~ msgid "Please correct configuration file.\n"
+#~ msgstr "Merci de corriger le fichier de configuration : %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:283
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error : Library not initialized\n"
+#~ msgstr "Impossible d'initialiser %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error : No configuration file loaded\n"
+#~ msgstr "La création de la signature a échouée"
 
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr ""
+#~ msgid "Connecting...\n"
+#~ msgstr "Connexion...\n"
 
-#: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Please choose a director (1-%d): "
+#~ msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr ""
+#~ msgid "Failed to connect to the director\n"
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
+#, fuzzy
+#~ msgid "Connected\n"
+#~ msgstr "Connexion...\n"
 
-#: src/wx-console/wxbmainframe.cpp:419
 #, fuzzy
-msgid "First run"
-msgstr "est en cours"
+#~ msgid "Connection terminated\n"
+#~ msgstr "Sélection terminée.\n"
 
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
+#~ msgid "Type your command below:"
+#~ msgstr "Saisissez votre commande ci-dessous : "
 
-#: src/wx-console/wxbmainframe.cpp:438
 #, fuzzy
-msgid "Unable to read configuration file"
-msgstr "Impossible de lire le certificat à partir du fichier"
+#~ msgid "Unknown command."
+#~ msgstr "Erreur inconnue."
 
-#: src/wx-console/wxbmainframe.cpp:450
 #, fuzzy
-msgid "Please choose a configuration file to use"
-msgstr "Merci de corriger le fichier de configuration : %s\n"
+#~ msgid "Possible completions: "
+#~ msgstr "Les valeurs possibles sont :\n"
 
-#: src/wx-console/wxbmainframe.cpp:463
 #, fuzzy
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr "Merci de corriger le fichier de configuration : %s\n"
+#~ msgid "Connect"
+#~ msgstr "Connexion...\n"
 
-#: src/wx-console/wxbmainframe.cpp:464
 #, fuzzy
-msgid "Configuration file read successfully"
-msgstr "La création de la signature a échouée"
-
-#: src/wx-console/wxbmainframe.cpp:474
-#, fuzzy, c-format
-msgid "Using this configuration file: %s\n"
-msgstr "Merci de corriger le fichier de configuration : %s\n"
+#~ msgid "Connect to the director"
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/wx-console/wxbmainframe.cpp:479
 #, fuzzy
-msgid "Connecting to the director..."
-msgstr "Connexion au Director %s:%d\n"
-
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
-msgstr ""
+#~ msgid "Disconnect"
+#~ msgstr "Connexion...\n"
 
-#: src/wx-console/wxbmainframe.cpp:521
 #, fuzzy
-msgid "About Bacula bwx-console"
-msgstr "Message de Bacula"
+#~ msgid "Disconnect of the director"
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/wx-console/wxbmainframe.cpp:527
 #, fuzzy
-msgid "Please choose your default configuration file"
-msgstr "Merci de corriger le fichier de configuration : %s\n"
+#~ msgid "Change of configuration file"
+#~ msgstr "La création de la signature a échouée"
 
-#: src/wx-console/wxbmainframe.cpp:531
 #, fuzzy
-msgid "Use this configuration file as default?"
-msgstr "Merci de corriger le fichier de configuration : %s\n"
+#~ msgid "Change your default configuration file"
+#~ msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/wx-console/wxbmainframe.cpp:532
 #, fuzzy
-msgid "Configuration file"
-msgstr "La création de la signature a échouée"
+#~ msgid "Edit your configuration file"
+#~ msgstr "La création de la signature a échouée"
 
-#: src/wx-console/wxbmainframe.cpp:603
 #, fuzzy
-msgid "Console thread terminated."
-msgstr "est terminé"
+#~ msgid "&File"
+#~ msgstr "FileSet"
 
-#: src/wx-console/wxbmainframe.cpp:611
 #, fuzzy
-msgid "Connection to the director lost. Quit program?"
-msgstr "Connexion au Director %s:%d\n"
+#~ msgid "First run"
+#~ msgstr "est en cours"
 
-#: src/wx-console/wxbmainframe.cpp:612
 #, fuzzy
-msgid "Connection lost"
-msgstr "Connexion...\n"
+#~ msgid "Unable to read configuration file"
+#~ msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/wx-console/wxbmainframe.cpp:628
 #, fuzzy
-msgid "Connected to the director."
-msgstr "Impossible de se connecter au Director\n"
+#~ msgid "Please choose a configuration file to use"
+#~ msgstr "Merci de corriger le fichier de configuration : %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:651
 #, fuzzy
-msgid "Reconnect"
-msgstr "Connexion...\n"
+#~ msgid ""
+#~ "This configuration file has been successfully read, use it as default?"
+#~ msgstr "Merci de corriger le fichier de configuration : %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:652
 #, fuzzy
-msgid "Reconnect to the director"
-msgstr "Impossible de se connecter au Director\n"
+#~ msgid "Configuration file read successfully"
+#~ msgstr "La création de la signature a échouée"
 
-#: src/wx-console/wxbmainframe.cpp:666
 #, fuzzy
-msgid "Disconnected of the director."
-msgstr "Impossible de se connecter au Director\n"
-
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr ""
-
-#: src/qt-console/tray-monitor/tray-monitor.cpp:67
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-") %s %s %s\n"
-"\n"
-"Usage : bconsole [-s] [-c config_file] [-d niveau_debug]\n"
-"       -c <file>   set configuration file to file\n"
-"       -dnn        set debug level to nn\n"
-"       -s          no signals\n"
-"       -t          test - lecture de la configuration et sortie\n"
-"\n"
-
-#: src/qt-console/bcomm/dircomm.cpp:92
-#, fuzzy, c-format
-msgid "Already connected\"%s\".\n"
-msgstr "Console connecté à %s\n"
+#~ msgid "Using this configuration file: %s\n"
+#~ msgstr "Merci de corriger le fichier de configuration : %s\n"
 
-#: 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"
+#, fuzzy
+#~ msgid "Connecting to the director..."
+#~ msgstr "Connexion au Director %s:%d\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:208
-msgid "Initializing ..."
-msgstr ""
+#, fuzzy
+#~ msgid "Please choose your default configuration file"
+#~ msgstr "Merci de corriger le fichier de configuration : %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
 #, fuzzy
-msgid "Connected"
-msgstr "Connexion...\n"
+#~ msgid "Use this configuration file as default?"
+#~ msgstr "Merci de corriger le fichier de configuration : %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:348
 #, fuzzy
-msgid "Command completed ..."
-msgstr "Commande annulée.\n"
+#~ msgid "Configuration file"
+#~ msgstr "La création de la signature a échouée"
 
-#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
-msgid "Processing command ..."
-msgstr ""
+#, fuzzy
+#~ msgid "Console thread terminated."
+#~ msgstr "est terminé"
 
-#: src/qt-console/bcomm/dircomm.cpp:362
-msgid "At main prompt waiting for input ..."
-msgstr ""
+#, fuzzy
+#~ msgid "Connection to the director lost. Quit program?"
+#~ msgstr "Connexion au Director %s:%d\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
-msgid "At prompt waiting for input ..."
-msgstr ""
+#, fuzzy
+#~ msgid "Connection lost"
+#~ msgstr "Connexion...\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:390
 #, fuzzy
-msgid "Command failed."
-msgstr "Commande annulée.\n"
+#~ msgid "Connected to the director."
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:463
 #, fuzzy
-msgid "Director disconnected."
-msgstr "Connexion du director le %s\n"
+#~ msgid "Reconnect"
+#~ msgstr "Connexion...\n"
 
-#: src/qt-console/bat_conf.cpp:154
-#, fuzzy, c-format
-msgid "Console: name=%s\n"
-msgstr "Console connecté à %s\n"
+#, fuzzy
+#~ msgid "Reconnect to the director"
+#~ msgstr "Impossible de se connecter au Director\n"
 
-#: src/qt-console/main.cpp:191
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: 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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-") %s %s %s\n"
-"\n"
-"Usage : bconsole [-s] [-c config_file] [-d niveau_debug]\n"
-"       -c <file>   set configuration file to file\n"
-"       -dnn        set debug level to nn\n"
-"       -s          no signals\n"
-"       -t          test - lecture de la configuration et sortie\n"
-"\n"
+#, fuzzy
+#~ msgid "Disconnected of the director."
+#~ msgstr "Impossible de se connecter au Director\n"
 
 #~ msgid ""
 #~ "====\n"
@@ -19251,10 +8457,6 @@ msgstr ""
 #~ msgid "There is no valid DVD in device %s.\n"
 #~ msgstr "Le volume \"%s\" n'est pas dans le device %s.\n"
 
-#, fuzzy
-#~ msgid "Could not mount DVD device %s.\n"
-#~ msgstr "Le volume \"%s\" n'est pas dans le device %s.\n"
-
 #~ msgid "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
 #~ msgstr "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
 
@@ -19269,11 +8471,6 @@ msgstr ""
 #~ msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
 #, fuzzy
-#~ msgid "Error reading catalog DB control file. ERR=%s\n"
-#~ msgstr ""
-#~ "Erreur pendant l'écriture des données vers le fichier de spool. ERR=%s\n"
-
-#, fuzzy
 #~ msgid "Could not connect to storage daemon"
 #~ msgstr "Impossible de se connecter au Storage daemon.\n"
 
@@ -19337,10 +8534,6 @@ msgstr ""
 #~ msgstr "Nouveau Fichier : %s\n"
 
 #, fuzzy
-#~ msgid "%d files (%s)"
-#~ msgstr "Nouveau Fichier : %s\n"
-
-#, fuzzy
 #~ msgid "1 file selected (%s)"
 #~ msgstr ""
 #~ "\n"
@@ -19355,10 +8548,6 @@ msgstr ""
 #~ "\n"
 
 #, fuzzy
-#~ msgid "An error occurred while extracting files."
-#~ msgstr "Entrez le nombre de départ : "
-
-#, fuzzy
 #~ msgid "Command not found."
 #~ msgstr "Commande annulée.\n"
 
@@ -19415,10 +8604,6 @@ msgstr ""
 #~ msgstr "Type"
 
 #, fuzzy
-#~ msgid " Command: "
-#~ msgstr "Erreur sur la commande : %s\n"
-
-#, fuzzy
 #~ msgid "Enter Commands Here"
 #~ msgstr "Exécuter une requête SQL : "
 
@@ -19488,10 +8673,6 @@ msgstr ""
 #~ msgstr "labéliser une bande"
 
 #, fuzzy
-#~ msgid "Volume Name:"
-#~ msgstr "Saisissez un nom de Volume : "
-
-#, fuzzy
 #~ msgid "Restore Files Dialog"
 #~ msgstr "restauration de fichier"
 
@@ -19508,29 +8689,6 @@ msgstr ""
 #~ msgstr "Saisissez le type"
 
 #, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Version: %s (%s) %s %s %s\n"
-#~ "\n"
-#~ "Usage: bgnome-console [-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          no signals\n"
-#~ "       -t          test - read configuration and exit\n"
-#~ "       -?          print this message.\n"
-#~ "\n"
-#~ msgstr ""
-#~ ") %s %s %s\n"
-#~ "\n"
-#~ "Usage : bconsole [-s] [-c config_file] [-d niveau_debug]\n"
-#~ "       -c <file>   set configuration file to file\n"
-#~ "       -dnn        set debug level to nn\n"
-#~ "       -s          no signals\n"
-#~ "       -t          test - lecture de la configuration et sortie\n"
-#~ "\n"
-
-#, fuzzy
 #~ msgid "Pthread cond init error = %s\n"
 #~ msgstr "Erreur pendant l'écriture des attributs dans le spool. ERR=%s\n"
 
@@ -19598,10 +8756,6 @@ msgstr ""
 #~ msgid "No Volumes found to migrate.\n"
 #~ msgstr "Aucun volume trouvé pour la migration.\n"
 
-#, fuzzy
-#~ msgid "No JobIds found to migrate.\n"
-#~ msgstr "Aucun volume trouvé pour la restauration.\n"
-
 #~ msgid ""
 #~ "\n"
 #~ "%d Jobs, %s files inserted into the tree and marked for extraction.\n"
@@ -19833,9 +8987,6 @@ msgstr ""
 #~ msgid "OpenSSL error occured"
 #~ msgstr "Une erreur OpenSSL s'est produite"
 
-#~ msgid "Device %s is busy reading.\n"
-#~ msgstr "Le device %s est occupé en lecture.\n"
-
 #, fuzzy
 #~ msgid "Job started. JobId="
 #~ msgstr "Job démarré. JobId=%s\n"
@@ -19928,9 +9079,6 @@ msgstr ""
 #~ msgid "fd"
 #~ msgstr "fd"
 
-#~ msgid "========================================================================\n"
-#~ msgstr "========================================================================\n"
-
 #~ msgid "readlabel %s Slot=%d drive=%d\n"
 #~ msgstr "readlabel %s Slot=%d drive=%d\n"
 
diff --git a/po/it.po b/po/it.po
index 939c1dc..4350b55 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,11 +1,11 @@
 # Italian translations for Bacula package
 # Traduzioni italiane per il pacchetto Bacula..
-# Copyright (C) 2005-2006 Free Software Foundation Europe e.V.
+# Copyright (C) 2005-2014 Free Software Foundation Europe e.V.
 #  <fparacchini at alteanet.it>, 2005.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Bacula 1.38\n"
+"Project-Id-Version: Bacula 5.28\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
 "POT-Creation-Date: 2007-08-10 23:23+0200\n"
 "PO-Revision-Date: 2005-08-08 17:50+0200\n"
@@ -609,7 +609,6 @@ msgid ""
 msgstr ""
 
 #: src/dird/authenticate.c:80 src/dird/authenticate.c:81
-#: src/tray-monitor/authenticate.c:132
 #, c-format
 msgid "Error sending Hello to Storage daemon. ERR=%s\n"
 msgstr ""
@@ -632,7 +631,7 @@ msgstr ""
 
 #: src/dird/authenticate.c:120 src/console/authenticate.c:114
 #: src/filed/authenticate.c:251 src/stored/authenticate.c:131
-#: src/stored/authenticate.c:232 src/wx-console/authenticate.c:127
+#: src/stored/authenticate.c:232
 msgid ""
 "Authorization problem: Remote server did not advertise required TLS "
 "support.\n"
@@ -641,7 +640,6 @@ msgstr ""
 #: src/dird/authenticate.c:127 src/console/authenticate.c:121
 #: src/filed/authenticate.c:147 src/filed/authenticate.c:259
 #: src/stored/authenticate.c:139 src/stored/authenticate.c:240
-#: src/wx-console/authenticate.c:133
 msgid "Authorization problem: Remote server requires TLS.\n"
 msgstr ""
 
@@ -655,7 +653,7 @@ msgstr ""
 msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/authenticate.c:152 src/tray-monitor/authenticate.c:152
+#: src/dird/authenticate.c:152
 msgid "Storage daemon rejected Hello command\n"
 msgstr ""
 
@@ -700,7 +698,7 @@ msgstr ""
 msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
 msgstr ""
 
-#: src/dird/authenticate.c:250 src/tray-monitor/authenticate.c:191
+#: src/dird/authenticate.c:250
 #, c-format
 msgid "Bad response from File daemon to Hello command: ERR=%s\n"
 msgstr ""
@@ -710,7 +708,7 @@ msgstr ""
 msgid "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/authenticate.c:259 src/tray-monitor/authenticate.c:198
+#: src/dird/authenticate.c:259
 msgid "File daemon rejected Hello command\n"
 msgstr ""
 
@@ -1037,13 +1035,13 @@ msgid ""
 msgstr ""
 
 #: src/dird/dird.c:224 src/console/console.c:426 src/filed/filed.c:182
-#: src/gnome2-console/console.c:286 src/stored/stored.c:210
+#: src/stored/stored.c:210
 msgid "Cryptography library initialization failed.\n"
 msgstr ""
 
 #: src/dird/dird.c:228 src/dird/dird.c:234 src/dird/dird.c:474
 #: src/dird/dird.c:477 src/console/console.c:430 src/filed/filed.c:187
-#: src/gnome2-console/console.c:290 src/stored/stored.c:214
+#: src/stored/stored.c:214
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr ""
@@ -1080,9 +1078,7 @@ msgstr ""
 #: src/dird/dird.c:563 src/dird/dird.c:764 src/dird/dird.c:816
 #: src/dird/dird.c:920 src/console/console.c:657 src/console/console.c:686
 #: src/filed/filed.c:288 src/filed/filed.c:446
-#: src/gnome2-console/console.c:153 src/gnome2-console/console.c:182
-#: src/stored/stored.c:332 src/wx-console/console_thread.cpp:114
-#: src/wx-console/console_thread.cpp:140
+#: src/stored/stored.c:332
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
@@ -1185,7 +1181,7 @@ msgstr ""
 msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:508 src/tray-monitor/tray_conf.c:168
+#: src/dird/dird_conf.c:508
 #, c-format
 msgid "No %s resource defined\n"
 msgstr ""
@@ -1459,26 +1455,24 @@ msgstr ""
 msgid "      opcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:893 src/tray-monitor/tray_conf.c:199
+#: src/dird/dird_conf.c:893
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1199 src/tray-monitor/tray_conf.c:257
+#: src/dird/dird_conf.c:1199
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
 #: src/dird/dird_conf.c:1231 src/dird/dird_conf.c:1246
 #: src/dird/dird_conf.c:1842 src/console/console_conf.c:257
-#: src/filed/filed_conf.c:347 src/gnome2-console/console_conf.c:258
-#: src/tray-monitor/tray_conf.c:288 src/wx-console/console_conf.c:265
+#: src/filed/filed_conf.c:347
 #, c-format
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
 #: src/dird/dird_conf.c:1237 src/lib/parse_conf.c:234
-#: src/tray-monitor/tray_conf.c:294
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr ""
@@ -1525,7 +1519,6 @@ msgid "Cannot find Schedule resource %s\n"
 msgstr ""
 
 #: src/dird/dird_conf.c:1383 src/dird/dird_conf.c:1443
-#: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #, c-format
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
@@ -1536,8 +1529,7 @@ msgid "Name item is required in %s resource, but not found.\n"
 msgstr ""
 
 #: src/dird/dird_conf.c:1466 src/console/console_conf.c:320
-#: src/filed/filed_conf.c:432 src/gnome2-console/console_conf.c:327
-#: src/tray-monitor/tray_conf.c:372 src/wx-console/console_conf.c:328
+#: src/filed/filed_conf.c:432
 #, c-format
 msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
@@ -1634,7 +1626,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:94 src/tray-monitor/tray-monitor.c:914
+#: src/dird/fd_cmds.c:94
 msgid "File daemon"
 msgstr ""
 
@@ -2229,7 +2221,6 @@ msgid "Storage from Pool's NextPool resource"
 msgstr ""
 
 #: src/dird/msgchan.c:106 src/filed/job.c:1301
-#: src/tray-monitor/tray-monitor.c:921
 msgid "Storage daemon"
 msgstr ""
 
@@ -2964,33 +2955,12 @@ msgid "Director"
 msgstr ""
 
 #: src/dird/ua_cmds.c:998 src/dird/ua_dotcmds.c:284 src/dird/ua_run.c:265
-#: src/dird/ua_select.c:168 src/wx-console/wxbrestorepanel.cpp:339
-#: src/wx-console/wxbrestorepanel.cpp:355
-#: src/wx-console/wxbrestorepanel.cpp:479
-#: src/wx-console/wxbrestorepanel.cpp:480
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1154
-#: src/wx-console/wxbrestorepanel.cpp:1818
-#: src/wx-console/wxbrestorepanel.cpp:1889
+#: src/dird/ua_select.c:168
 msgid "Storage"
 msgstr ""
 
 #: src/dird/ua_cmds.c:999 src/dird/ua_dotcmds.c:285 src/dird/ua_run.c:271
 #: src/dird/ua_select.c:311 src/dird/ua_select.c:420
-#: src/wx-console/wxbrestorepanel.cpp:336
-#: src/wx-console/wxbrestorepanel.cpp:354
-#: src/wx-console/wxbrestorepanel.cpp:431
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:690
-#: src/wx-console/wxbrestorepanel.cpp:1124
-#: src/wx-console/wxbrestorepanel.cpp:1211
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1813
-#: src/wx-console/wxbrestorepanel.cpp:1887
-#: src/wx-console/wxbrestorepanel.cpp:1943
 msgid "Client"
 msgstr ""
 
@@ -3704,7 +3674,7 @@ msgid "Enter a list of directories to restore for found JobIds"
 msgstr ""
 
 #: src/dird/ua_restore.c:418 src/dird/ua_status.c:760 src/filed/status.c:256
-#: src/stored/status.c:521 src/wx-console/wxbconfigpanel.cpp:212
+#: src/stored/status.c:521
 msgid "Cancel"
 msgstr ""
 
@@ -3998,23 +3968,16 @@ msgstr ""
 msgid "Restore Client"
 msgstr ""
 
-#: src/dird/ua_run.c:273 src/wx-console/wxbrestorepanel.cpp:356
-#: src/wx-console/wxbrestorepanel.cpp:844
-#: src/wx-console/wxbrestorepanel.cpp:1891
+#: src/dird/ua_run.c:273
 msgid "When"
 msgstr ""
 
-#: src/dird/ua_run.c:274 src/wx-console/wxbrestorepanel.cpp:357
-#: src/wx-console/wxbrestorepanel.cpp:1117
-#: src/wx-console/wxbrestorepanel.cpp:1894
+#: src/dird/ua_run.c:274
 msgid "Priority"
 msgstr ""
 
 #: src/dird/ua_run.c:278 src/dird/ua_select.c:506 src/dird/ua_select.c:596
-#: src/dird/ua_update.c:529 src/wx-console/wxbrestorepanel.cpp:338
-#: src/wx-console/wxbrestorepanel.cpp:527
-#: src/wx-console/wxbrestorepanel.cpp:537
-#: src/wx-console/wxbrestorepanel.cpp:1807
+#: src/dird/ua_update.c:529
 msgid "Pool"
 msgstr ""
 
@@ -4022,14 +3985,11 @@ msgstr ""
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:283 src/wx-console/wxbrestorepanel.cpp:349
-#: src/wx-console/wxbrestorepanel.cpp:1872
+#: src/dird/ua_run.c:283
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:284 src/wx-console/wxbrestorepanel.cpp:350
-#: src/wx-console/wxbrestorepanel.cpp:1093
-#: src/wx-console/wxbrestorepanel.cpp:1874
+#: src/dird/ua_run.c:284
 msgid "Where"
 msgstr ""
 
@@ -4037,13 +3997,7 @@ msgstr ""
 msgid "File Relocation"
 msgstr ""
 
-#: src/dird/ua_run.c:286 src/wx-console/wxbrestorepanel.cpp:352
-#: src/wx-console/wxbrestorepanel.cpp:1101
-#: src/wx-console/wxbrestorepanel.cpp:1878
-#: src/wx-console/wxbrestorepanel.cpp:1879
-#: src/wx-console/wxbrestorepanel.cpp:1880
-#: src/wx-console/wxbrestorepanel.cpp:1881
-#: src/wx-console/wxbrestorepanel.cpp:1882
+#: src/dird/ua_run.c:286
 msgid "Replace"
 msgstr ""
 
@@ -5020,7 +4974,6 @@ msgstr ""
 
 #: src/dird/ua_status.c:763 src/filed/status.c:259 src/lib/util.c:188
 #: src/lib/util.c:255 src/stored/btape.c:1189 src/stored/status.c:524
-#: src/wx-console/wxbconfigpanel.cpp:201
 msgid "OK"
 msgstr ""
 
@@ -5789,22 +5742,20 @@ msgstr ""
 msgid "File: %s\n"
 msgstr ""
 
-#: src/console/authenticate.c:131 src/wx-console/authenticate.c:142
+#: src/console/authenticate.c:131
 msgid "TLS negotiation failed\n"
 msgstr ""
 
-#: src/console/authenticate.c:143 src/gnome2-console/authenticate.c:98
-#: src/tray-monitor/authenticate.c:97
+#: src/console/authenticate.c:143
 #, c-format
 msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/console/authenticate.c:150 src/gnome2-console/authenticate.c:108
-#: src/tray-monitor/authenticate.c:104 src/wx-console/authenticate.c:157
+#: src/console/authenticate.c:150
 msgid "Director rejected Hello command\n"
 msgstr ""
 
-#: src/console/authenticate.c:160 src/wx-console/authenticate.c:167
+#: src/console/authenticate.c:160
 msgid ""
 "Director authorization problem.\n"
 "Most likely the passwords do not agree.\n"
@@ -5895,48 +5846,15 @@ msgstr ""
 msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/console/console.c:521 src/tray-monitor/tray-monitor.c:905
+#: src/console/console.c:521
 #, c-format
 msgid "Connecting to Director %s:%d\n"
 msgstr ""
 
-#: src/console/console.c:538 src/gnome2-console/console.c:526
-#: src/wx-console/console_thread.cpp:391
-#, c-format
-msgid "Failed to initialize TLS context for Console \"%s\".\n"
-msgstr ""
-
-#: src/console/console.c:558 src/gnome2-console/console.c:548
-#: src/wx-console/console_thread.cpp:412
-#, c-format
-msgid "Failed to initialize TLS context for Director \"%s\".\n"
-msgstr ""
-
 #: src/console/console.c:588
 msgid "Enter a period to cancel a command.\n"
 msgstr ""
 
-#: src/console/console.c:664 src/gnome2-console/console.c:160
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in %s. At least one CA certificate store is required.\n"
-msgstr ""
-
-#: src/console/console.c:673 src/gnome2-console/console.c:169
-#, c-format
-msgid ""
-"No Director resource defined in %s\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/console/console.c:693 src/gnome2-console/console.c:189
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s.\n"
-msgstr ""
-
 #: src/console/console.c:849
 msgid "Too many arguments on input command.\n"
 msgstr ""
@@ -5973,32 +5891,21 @@ msgstr ""
 msgid "Autochanger error: ERR=%s\n"
 msgstr ""
 
-#: src/console/console_conf.c:138 src/gnome2-console/console_conf.c:134
-#: src/wx-console/console_conf.c:147
+#: src/console/console_conf.c:138
 #, c-format
 msgid "No record for %d %s\n"
 msgstr ""
 
-#: src/console/console_conf.c:147 src/wx-console/console_conf.c:156
+#: src/console/console_conf.c:147
 #, c-format
 msgid "Console: name=%s rcfile=%s histfile=%s\n"
 msgstr ""
 
-#: src/console/console_conf.c:151 src/gnome2-console/console_conf.c:143
-#: src/wx-console/console_conf.c:160
-#, c-format
-msgid "Director: name=%s address=%s DIRport=%d\n"
-msgstr ""
-
 #: src/console/console_conf.c:155 src/console/console_conf.c:231
 #: src/console/console_conf.c:276 src/console/console_conf.c:303
 #: src/filed/filed_conf.c:319 src/filed/filed_conf.c:384
-#: src/filed/filed_conf.c:414 src/gnome2-console/console_conf.c:154
-#: src/gnome2-console/console_conf.c:232 src/gnome2-console/console_conf.c:280
-#: src/gnome2-console/console_conf.c:310 src/stored/stored_conf.c:528
+#: src/filed/filed_conf.c:414 src/stored/stored_conf.c:528
 #: src/stored/stored_conf.c:616 src/stored/stored_conf.c:651
-#: src/wx-console/console_conf.c:164 src/wx-console/console_conf.c:239
-#: src/wx-console/console_conf.c:284 src/wx-console/console_conf.c:311
 #, c-format
 msgid "Unknown resource type %d\n"
 msgstr ""
@@ -7289,345 +7196,10 @@ msgstr ""
 msgid "Cannot return to saved working directory: %s\n"
 msgstr ""
 
-#: src/gnome2-console/authenticate.c:87
-#, c-format
-msgid "%s: Director authorization problem.\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:88
-msgid "Director authorization problem.\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:90
-msgid ""
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:100
-#, c-format
-msgid "%s: Bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/gnome2-console/authenticate.c:102
-msgid "The Director is probably not running.\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:102
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: bgnome-console [-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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:234
-#, c-format
-msgid "Pthread cond init error = %s\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:379
-msgid " Not Connected"
-msgstr ""
-
-#: src/gnome2-console/console.c:500
-#, c-format
-msgid " Connecting to Director %s:%d"
-msgstr ""
-
-#: src/gnome2-console/console.c:501
-#, c-format
-msgid ""
-"Connecting to Director %s:%d\n"
-"\n"
-msgstr ""
-
-#: src/gnome2-console/console.c:516 src/wx-console/console_thread.cpp:381
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr ""
-
-#: src/gnome2-console/console.c:538 src/wx-console/console_thread.cpp:402
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr ""
-
-#: src/gnome2-console/console.c:557 src/tray-monitor/tray-monitor.c:907
-#: src/wx-console/console_thread.cpp:420
-msgid "Director daemon"
-msgstr ""
-
-#: src/gnome2-console/console.c:569
-msgid " Initializing ..."
-msgstr ""
-
-#: src/gnome2-console/console.c:605
-msgid " Connected"
-msgstr ""
-
-#: src/gnome2-console/console.c:613
-msgid " Processing command ..."
-msgstr ""
-
-#: src/gnome2-console/console.c:648
-msgid " At prompt waiting for input ..."
-msgstr ""
-
-#: src/gnome2-console/console.c:768
-msgid " Ready"
-msgstr ""
-
-#: src/gnome2-console/console_conf.c:147
-#, c-format
-msgid "Console: name=%s\n"
-msgstr ""
-
-#: src/gnome2-console/console_conf.c:150 src/tray-monitor/tray_conf.c:195
-#, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr ""
-
-#: src/gnome2-console/interface.c:202
-msgid "Bacula Console"
-msgstr ""
-
-#: src/gnome2-console/interface.c:235 src/wx-console/wxbmainframe.cpp:248
-#: src/wx-console/wxbmainframe.cpp:619
-msgid "Connect"
-msgstr ""
-
-#: src/gnome2-console/interface.c:238
-msgid "Connect to Director"
-msgstr ""
-
-#: src/gnome2-console/interface.c:242
-msgid "Run"
-msgstr ""
-
-#: src/gnome2-console/interface.c:245 src/gnome2-console/interface.c:682
-#: src/gnome2-console/interface.c:696
-msgid "Run a Job"
-msgstr ""
-
-#: src/gnome2-console/interface.c:249
-msgid "Dir Status"
-msgstr ""
-
-#: src/gnome2-console/interface.c:255 src/lib/util.c:293
-#: src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:1974
+#: src/lib/util.c:293
 msgid "Restore"
 msgstr ""
 
-#: src/gnome2-console/interface.c:261
-msgid "Label"
-msgstr ""
-
-#: src/gnome2-console/interface.c:267
-msgid "Msgs"
-msgstr ""
-
-#: src/gnome2-console/interface.c:270
-msgid "Display Messages"
-msgstr ""
-
-#: src/gnome2-console/interface.c:294
-msgid " Command: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:303
-msgid "Enter Commands Here"
-msgstr ""
-
-#: src/gnome2-console/interface.c:314
-msgid " Status: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:323 src/gnome2-console/interface.c:1709
-msgid "  "
-msgstr ""
-
-#: src/gnome2-console/interface.c:424
-msgid "About Bacula Console"
-msgstr ""
-
-#: src/gnome2-console/interface.c:439
-msgid "Bacula Console\n"
-msgstr ""
-
-#: src/gnome2-console/interface.c:448
-msgid "Copyright (c) 2000 - 2004, Kern Sibbald and John Walker"
-msgstr ""
-
-#: src/gnome2-console/interface.c:453
-msgid "Authors: Kern Sibbald and John Walker"
-msgstr ""
-
-#: src/gnome2-console/interface.c:458
-msgid "The Leading Open Source Backup Solution."
-msgstr ""
-
-#: src/gnome2-console/interface.c:523 src/gnome2-console/interface.c:540
-msgid "Select Director"
-msgstr ""
-
-#: src/gnome2-console/interface.c:570
-msgid "         "
-msgstr ""
-
-#: src/gnome2-console/interface.c:715 src/gnome2-console/interface.c:1631
-msgid "Job:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:736
-msgid "   Type:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:756 src/gnome2-console/interface.c:785
-#: src/gnome2-console/interface.c:1284 src/gnome2-console/interface.c:1680
-msgid " "
-msgstr ""
-
-#: src/gnome2-console/interface.c:765 src/gnome2-console/interface.c:1660
-#: src/wx-console/wxbrestorepanel.cpp:1886
-msgid "Client:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:795 src/gnome2-console/interface.c:1689
-msgid "FileSet: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:820 src/wx-console/wxbrestorepanel.cpp:1893
-msgid "Priority:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:836
-msgid "Level:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:857
-msgid "             "
-msgstr ""
-
-#: src/gnome2-console/interface.c:867 src/gnome2-console/interface.c:1433
-#: src/gnome2-console/interface.c:1718
-msgid "Pool:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:888 src/gnome2-console/interface.c:919
-#: src/gnome2-console/interface.c:949 src/gnome2-console/interface.c:969
-#: src/gnome2-console/interface.c:989 src/gnome2-console/interface.c:1009
-#: src/gnome2-console/interface.c:1014 src/gnome2-console/interface.c:1483
-#: src/gnome2-console/interface.c:1739 src/gnome2-console/interface.c:1769
-#: src/gnome2-console/interface.c:1788 src/gnome2-console/interface.c:1793
-msgid "   "
-msgstr ""
-
-#: src/gnome2-console/interface.c:898 src/gnome2-console/interface.c:1407
-#: src/gnome2-console/interface.c:1748 src/wx-console/wxbrestorepanel.cpp:1888
-msgid "Storage:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:929
-msgid "Messages:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:959
-msgid "Where: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:979 src/wx-console/wxbrestorepanel.cpp:1890
-msgid "When:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:999 src/wx-console/wxbrestorepanel.cpp:1871
-msgid "Bootstrap:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1194
-msgid "Restore File Selection"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1238
-msgid "Current dir:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1265
-msgid "Files Selected: "
-msgstr ""
-
-#: src/gnome2-console/interface.c:1385 src/gnome2-console/interface.c:1396
-msgid "Label a Volume"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1458
-msgid "Volume Name:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1472
-msgid "Slot:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1598
-msgid "Restore Files Dialog"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1613
-msgid "Restore Files"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1778
-msgid "Before:"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1824
-msgid "Select Files"
-msgstr ""
-
-#: src/gnome2-console/interface.c:1907
-msgid "Progress"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149
-msgid "Mark"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149
-msgid "File"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149
-msgid "Mode"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149 src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149 src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149 src/wx-console/wxbrestorepanel.cpp:294
-msgid "Size"
-msgstr ""
-
-#: src/gnome2-console/restore.c:149 src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr ""
-
-#: src/gnome2-console/support.c:60 src/gnome2-console/support.c:85
-#, c-format
-msgid "Couldn't find pixmap file: %s"
-msgstr ""
-
 #: src/lib/address_conf.c:63
 #, c-format
 msgid "Only ipv4 and ipv6 are supported (%d)\n"
@@ -8240,20 +7812,11 @@ msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
 msgstr ""
 
-#: src/lib/lex.c:93 src/wx-console/console_thread.cpp:208
+#: src/lib/lex.c:93
 #, c-format
 msgid "Problem probably begins at line %d.\n"
 msgstr ""
 
-#: src/lib/lex.c:98 src/wx-console/console_thread.cpp:213
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-
 #: src/lib/lex.c:102
 #, c-format
 msgid "Config error: %s\n"
@@ -9229,7 +8792,7 @@ msgstr ""
 msgid "Copy"
 msgstr ""
 
-#: src/lib/util.c:305 src/wx-console/wxbmainframe.cpp:276
+#: src/lib/util.c:305
 msgid "Console"
 msgstr ""
 
@@ -14540,432 +14103,50 @@ msgstr ""
 msgid "Skip: File system change prohibited. Directory not entered. %s\n"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:88
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/baconfig.h:72
+#, c-format
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:138
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/baconfig.h:79
+msgid "*None*"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:145
-#, c-format
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
+#: src/win32/dird/winmain.cpp:193 src/win32/dird/winmain.cpp:200
+#: src/win32/filed/winmain.cpp:224 src/win32/filed/winmain.cpp:231
+#: src/win32/stored/baculasd/winmain.cpp:225
+#: src/win32/stored/baculasd/winmain.cpp:232
+msgid "Bacula Usage"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:178
-#, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
+#: src/win32/dird/winmain.cpp:197 src/win32/filed/winmain.cpp:228
+#: src/win32/stored/baculasd/winmain.cpp:229
+msgid "Bad Command Line Options"
 msgstr ""
 
-#: src/tray-monitor/authenticate.c:184
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors for "
-"help.\n"
+#: src/win32/dird/winservice.cpp:119 src/win32/filed/winservice.cpp:238
+#: src/win32/stored/baculasd/winservice.cpp:169
+msgid "StartServiceCtrlDispatcher failed."
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:113
-#, c-format
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -dnn          set debug level to nn\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
+#: src/win32/dird/winservice.cpp:135 src/win32/filed/winservice.cpp:256
+#: src/win32/stored/baculasd/winservice.cpp:185
+msgid "RegisterServiceCtlHandler failed"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:262
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
+#: src/win32/dird/winservice.cpp:136 src/win32/filed/winservice.cpp:257
+#: src/win32/stored/baculasd/winservice.cpp:186
+msgid "Contact Register Service Handler failure"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:293
-#, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
+#: src/win32/dird/winservice.cpp:152 src/win32/filed/winservice.cpp:273
+#: src/win32/stored/baculasd/winservice.cpp:202
+msgid "ReportStatus STOPPED failed 1"
 msgstr ""
 
-#: src/tray-monitor/tray-monitor.c:315
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:330
-msgid "Open status window..."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:336
-msgid "Exit"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:348
-msgid "Bacula tray monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:373
-msgid " (DIR)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:377
-msgid " (FD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:381
-msgid " (SD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:394
-msgid "Unknown status."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:464
-msgid "Refresh interval in seconds: "
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:472
-msgid "Refresh now"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:476
-msgid "About"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:480
-msgid "Close"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:500
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:503
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:506
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:543 src/tray-monitor/tray-monitor.c:554
-msgid "Bacula Tray Monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:545 src/tray-monitor/tray-monitor.c:556
-msgid "Written by Nicolas Boichat\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:546 src/tray-monitor/tray-monitor.c:557
-msgid "Version"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:625
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:699
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:711
-#, c-format
-msgid " (%d errors)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:714
-#, c-format
-msgid " (%d error)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:752
-msgid "No current job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:755
-msgid "No last job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:763
-msgid "Job status: Created"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:768
-msgid "Job status: Running"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:772
-msgid "Job status: Blocked"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:777
-msgid "Job status: Terminated"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:782
-msgid "Job status: Terminated in error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:788
-msgid "Job status: Error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:792
-msgid "Job status: Fatal error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:797
-msgid "Job status: Verify differences"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:802
-msgid "Job status: Canceled"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:807
-msgid "Job status: Waiting on File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:812
-msgid "Job status: Waiting on the Storage daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:817
-msgid "Job status: Waiting for new media"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:822
-msgid "Job status: Waiting for Mount"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:827
-msgid "Job status: Waiting for storage resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:832
-msgid "Job status: Waiting for job resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:837
-msgid "Job status: Waiting for Client resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:842
-msgid "Job status: Waiting for maximum jobs"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:847
-msgid "Job status: Waiting for start time"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:852
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:857
-#, c-format
-msgid "Unknown job status %c."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:858
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:865
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:906
-#, c-format
-msgid "Connecting to Director %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:912
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:913
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:919
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:920
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:925 src/tray-monitor/tray-monitor.c:963
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:931
-msgid "Cannot connect to daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:932
-msgid "Cannot connect to daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:944
-#, c-format
-msgid "Authentication error : %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:951
-msgid "Opened connection with Director daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:952
-msgid "Opened connection with Director daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:955
-msgid "Opened connection with File daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:956
-msgid "Opened connection with File daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:959
-msgid "Opened connection with Storage daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:960
-msgid "Opened connection with Storage daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:997
-msgid "<< Error: BNET_PROMPT signal received. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1002 src/wx-console/console_thread.cpp:486
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1006
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1011
-msgid "<ERROR>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1015
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1021
-msgid "<STOP>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1025
-msgid "Error : Connection closed."
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:177
-#, c-format
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:187
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:150
-msgid "Bad response to Hello command: ERR="
-msgstr ""
-
-#: src/baconfig.h:72
-#, c-format
-msgid "Failed ASSERT: %s\n"
-msgstr ""
-
-#: src/baconfig.h:79
-msgid "*None*"
-msgstr ""
-
-#: src/win32/dird/winmain.cpp:193 src/win32/dird/winmain.cpp:200
-#: src/win32/filed/winmain.cpp:224 src/win32/filed/winmain.cpp:231
-#: src/win32/stored/baculasd/winmain.cpp:225
-#: src/win32/stored/baculasd/winmain.cpp:232
-msgid "Bacula Usage"
-msgstr ""
-
-#: src/win32/dird/winmain.cpp:197 src/win32/filed/winmain.cpp:228
-#: src/win32/stored/baculasd/winmain.cpp:229
-msgid "Bad Command Line Options"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:119 src/win32/filed/winservice.cpp:238
-#: src/win32/stored/baculasd/winservice.cpp:169
-msgid "StartServiceCtrlDispatcher failed."
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:135 src/win32/filed/winservice.cpp:256
-#: src/win32/stored/baculasd/winservice.cpp:185
-msgid "RegisterServiceCtlHandler failed"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:136 src/win32/filed/winservice.cpp:257
-#: src/win32/stored/baculasd/winservice.cpp:186
-msgid "Contact Register Service Handler failure"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:152 src/win32/filed/winservice.cpp:273
-#: src/win32/stored/baculasd/winservice.cpp:202
-msgid "ReportStatus STOPPED failed 1"
-msgstr ""
-
-#: src/win32/dird/winservice.cpp:175 src/win32/filed/winservice.cpp:296
-#: src/win32/stored/baculasd/winservice.cpp:225
-msgid "Report Service failure"
+#: src/win32/dird/winservice.cpp:175 src/win32/filed/winservice.cpp:296
+#: src/win32/stored/baculasd/winservice.cpp:225
+msgid "Report Service failure"
 msgstr ""
 
 #: src/win32/dird/winservice.cpp:211
@@ -15221,710 +14402,3 @@ msgstr ""
 msgid ""
 "The SCM could not be contacted - the Bacula Storage service was not removed"
 msgstr ""
-
-#: src/wx-console/console_thread.cpp:121
-#, 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 ""
-
-#: src/wx-console/console_thread.cpp:128
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:147
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:169
-msgid "Error while initializing windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:185
-msgid "Error while cleaning up windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:224
-msgid "Error while initializing library."
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:248
-msgid "Cryptographic library initialization failed.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:252
-msgid "Please correct configuration file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:294
-msgid "Error : Library not initialized\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:305
-msgid "Error : No configuration file loaded\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:315
-msgid "Connecting...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:331
-msgid "Error : No director defined in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:343
-msgid "Multiple directors found in your config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:352
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:424
-msgid "Failed to connect to the director\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:434
-msgid "Connected\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:491
-msgid "<< Unexpected signal received : "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:511
-msgid "Connection terminated\n"
-msgstr ""
-
-#: src/wx-console/main.cpp:119
-msgid "Bacula bwx-console"
-msgstr ""
-
-#: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
-#, c-format
-msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:65
-msgid "Config file editor"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:75
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:112
-msgid "Close without saving"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-#, c-format
-msgid "Unable to write to %s\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:140
-msgid "Error while saving"
-msgstr ""
-
-#: src/wx-console/wxbconfigpanel.cpp:205
-msgid "Apply"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-#: src/wx-console/wxbmainframe.cpp:291
-msgid "Type your command below:"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:117
-msgid "Unknown command."
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:126
-msgid "Possible completions: "
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
-msgid "Connect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect of the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change of configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:252
-msgid "Edit your configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:258
-msgid "&File"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:283
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:419
-msgid "First run"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:438
-msgid "Unable to read configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:450
-msgid "Please choose a configuration file to use"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:463
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:464
-msgid "Configuration file read successfully"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:474
-#, c-format
-msgid "Using this configuration file: %s\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:479
-msgid "Connecting to the director..."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:521
-msgid "About Bacula bwx-console"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:527
-msgid "Please choose your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:531
-msgid "Use this configuration file as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:532
-msgid "Configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:603
-msgid "Console thread terminated."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:611
-msgid "Connection to the director lost. Quit program?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:612
-msgid "Connection lost"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:628
-msgid "Connected to the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:651
-msgid "Reconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:652
-msgid "Reconnect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:666
-msgid "Disconnected of the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:685 src/wx-console/wxbrestorepanel.cpp:710
-msgid "Unexpected question has been received.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:234
-#: src/wx-console/wxbrestorepanel.cpp:1920
-#: src/wx-console/wxbrestorepanel.cpp:1949
-msgid "Enter restore mode"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:237
-msgid "Cancel restore"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
-msgid "Remove"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
-msgid "Refresh"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:290
-msgid "Filename"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1784
-#: src/wx-console/wxbrestorepanel.cpp:1870
-msgid "Job Name"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1139
-#: src/wx-console/wxbrestorepanel.cpp:1212
-#: src/wx-console/wxbrestorepanel.cpp:1822
-#: src/wx-console/wxbrestorepanel.cpp:1824
-#: src/wx-console/wxbrestorepanel.cpp:1885
-msgid "Fileset"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1206
-#: src/wx-console/wxbrestorepanel.cpp:1222
-#: src/wx-console/wxbrestorepanel.cpp:1224
-#: src/wx-console/wxbrestorepanel.cpp:1232
-#: src/wx-console/wxbrestorepanel.cpp:1234
-#: src/wx-console/wxbrestorepanel.cpp:1253
-#: src/wx-console/wxbrestorepanel.cpp:1260
-#: src/wx-console/wxbrestorepanel.cpp:1812
-#: src/wx-console/wxbrestorepanel.cpp:1823
-#: src/wx-console/wxbrestorepanel.cpp:1944
-msgid "Before"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:342
-msgid "Please configure parameters concerning files to restore :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1878
-msgid "always"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if newer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if older"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1881
-msgid "never"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:359
-msgid "Please configure parameters concerning files restoration :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:435
-msgid "Error : no clients returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:459
-msgid "Error : no filesets returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:483
-msgid "Error : no storage returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
-msgid "Error : no jobs returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:516
-msgid "RestoreFiles"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:551
-msgid "Please configure your restore parameters."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:562
-msgid "Building restore tree..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:605
-msgid "Error while starting restore: "
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:695
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:732
-#: src/wx-console/wxbrestorepanel.cpp:754
-msgid "bwx-console: unexpected restore question."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:765
-msgid " files selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:770
-msgid " file selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:777
-#, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:787
-msgid "Restore failed : no file selected.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:788
-msgid "Restore failed : no file selected."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:798
-msgid "Restoring, please wait..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:811
-msgid "Job queued. JobId="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:813
-msgid "Restore queued, jobid="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:817
-msgid "Job failed."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:818
-msgid "Restore failed, please look at messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:819
-msgid "Restore failed, please look at messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:825
-#: src/wx-console/wxbrestorepanel.cpp:826
-msgid "Failed to retrieve jobid.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:852
-msgid ""
-"Restore is scheduled in more than two minutes, bwx-console will not wait for "
-"its completion.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:853
-msgid ""
-"Restore is scheduled in more than two minutes, bwx-console will not wait for "
-"its completion."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:879
-msgid "Restore job created, but not yet running."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:884
-#, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:888
-msgid "Restore job terminated successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job terminated successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:894
-msgid "Restore job terminated in error, see messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:895
-msgid "Restore job terminated in error, see messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:900
-msgid "Restore job reported a non-fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:904
-msgid "Restore job reported a fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:909
-msgid "Restore job cancelled by user."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:910
-msgid "Restore job cancelled by user.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:915
-msgid "Restore job is waiting on File daemon."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:919
-msgid "Restore job is waiting for new media."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:923
-msgid "Restore job is waiting for storage resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:927
-msgid "Restore job is waiting for job resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:931
-msgid "Restore job is waiting for Client resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:935
-msgid "Restore job is waiting for maximum jobs."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:939
-msgid "Restore job is waiting for start time."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:943
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:992
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:993
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid "Restore done successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1004
-msgid "Restore done successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1075
-msgid "Applying restore configuration changes..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1126
-msgid "Failed to find the selected client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1141
-msgid "Failed to find the selected fileset."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1156
-msgid "Failed to find the selected storage."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1859
-msgid "Run Restore job"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1189
-msgid "Restore configuration changes were applied."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1198
-msgid "Restore cancelled.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1199
-msgid "Restore cancelled."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1221
-msgid "No results to list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1223
-msgid "No backup found for this client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1230
-msgid "ERROR"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1231
-msgid "Query failed"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1233
-msgid "Cannot get previous backups list, see console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1869
-msgid "JobName:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1873
-msgid "Where:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1876
-msgid "Replace:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1879
-msgid "ifnewer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1880
-msgid "ifolder"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1884
-msgid "FileSet:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:2001
-msgid "Restoring..."
-msgstr ""
diff --git a/po/nl.po b/po/nl.po
index 6418d0c..ed26301 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,5 +1,5 @@
 # Dutch translation of Bacula
-# Copyright (C) 2012 Kern Sibbald
+# Copyright (C) 2012-2014 Kern Sibbald
 # This file is distributed under the same license as the PACKAGE package.
 # W. van den Akker <wvdakker at wilsoft.nl>, 2012
 #
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Bacula 5.2.7\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2013-02-19 18:26+0100\n"
+"POT-Creation-Date: 2014-07-29 18:18+0200\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"
@@ -16,18111 +16,1460 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/dird/jobq.c:74
+#: src/baconfig.h:60 src/baconfig.h:61 src/baconfig.h:66 src/baconfig.h:67
 #, c-format
-msgid "pthread_attr_init: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/dird/jobq.c:83
-#, c-format
-msgid "pthread_mutex_init: ERR=%s\n"
-msgstr ""
+#: src/baconfig.h:76
+msgid "*None*"
+msgstr "*Geen*"
 
-#: src/dird/jobq.c:89
-#, c-format
-msgid "pthread_cond_init: ERR=%s\n"
+#: src/lib/status.h:73
+msgid ""
+"\n"
+"Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/jobq.c:131
-#, c-format
-msgid "pthread_cond_broadcast: ERR=%s\n"
+#: src/lib/status.h:80
+msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/jobq.c:139
-#, c-format
-msgid "pthread_cond_wait: ERR=%s\n"
+#: src/lib/status.h:82
+msgid "===================================================================\n"
 msgstr ""
 
-#: src/dird/jobq.c:180
-#, c-format
-msgid "Job %s waiting %d seconds for scheduled start time.\n"
-msgstr "Job %s wacht %d seconde voor de start tijd.\n"
+#: src/lib/status.h:102
+msgid "Created"
+msgstr ""
 
-#: 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 "Kan job cond variabele niet initialiseren: ERR=%s\n"
+#: src/lib/status.h:106
+msgid "Error"
+msgstr ""
 
-#: src/dird/jobq.c:242
-#, c-format
-msgid "pthread_thread_create: ERR=%s\n"
+#: src/lib/status.h:109
+msgid "Diffs"
 msgstr ""
 
-#: src/dird/jobq.c:352
-#, c-format
-msgid "pthread_cond_signal: ERR=%s\n"
+#: src/lib/status.h:112
+msgid "Cancel"
 msgstr ""
 
-#: src/dird/jobq.c:363
-#, c-format
-msgid "pthread_create: ERR=%s\n"
+#: src/lib/status.h:115
+msgid "OK"
 msgstr ""
 
-#: src/dird/jobq.c:647
-#, c-format
-msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
-msgstr "Opnieuw ingeplande Job %s in %s start opnieuw in %d seconden (%s).\n"
+#: src/lib/status.h:118
+msgid "OK -- with warnings"
+msgstr ""
 
-#: src/dird/jobq.c:703 src/dird/jobq.c:708
-msgid "previous Job"
-msgstr "vorige Job"
+#: src/lib/status.h:122
+msgid "Other"
+msgstr ""
 
-#: src/dird/jobq.c:745
+#: src/lib/status.h:134
 #, c-format
-msgid ""
-"Job canceled. Attempt to read and write same device.\n"
-"    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
+msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%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
+#: src/lib/status.h:142
 #, c-format
-msgid "The current %s retention period is: %s\n"
-msgstr "De huidige %s retention periode: %s\n"
-
-#: src/dird/ua_select.c:59
-msgid "Continue? (yes/mod/no): "
-msgstr "Doorgaan? (ja, wijz, nee):"
-
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
-msgid "mod"
+msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:63
-msgid "Enter new retention period: "
-msgstr "Geef nieuwe retention periode:"
-
-#: src/dird/ua_select.c:67
-msgid "Invalid period.\n"
-msgstr "Onjuiste periode.\n"
-
-#: src/dird/ua_select.c:143
-msgid "You have the following choices:\n"
-msgstr "U heeft de volgende keuzes:\n"
-
-#: src/dird/ua_select.c:159
-msgid "The defined Storage resources are:\n"
-msgstr "De gedefinieerde Opslag media zijn:\n"
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1176
-#: src/wx-console/wxbrestorepanel.cpp:1845
-#: src/wx-console/wxbrestorepanel.cpp:1916
-msgid "Storage"
-msgstr "Opslag"
-
-#: src/dird/ua_select.c:167
-msgid "Select Storage resource"
-msgstr "Selecteer opslag medium"
-
-#: src/dird/ua_select.c:182 src/dird/ua_restore.c:1296
-msgid "The defined FileSet resources are:\n"
-msgstr "De gedefinieerde Fileset media zijn:\n"
-
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
-msgid "FileSet"
+#: src/lib/status.h:171 src/lib/status.h:182 src/lib/status.h:196
+#: src/lib/status.h:200 src/lib/status.h:204
+msgid "Bacula "
 msgstr ""
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300
-msgid "Select FileSet resource"
-msgstr "Selecteer FileSet bron"
-
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
-msgid "Could not find a Catalog resource\n"
-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"
+#: src/qt-console/bat_conf.cpp:130
+#, c-format
+msgid "No record for %d %s\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 "De gedefinieerde Catalog media zijn:\n"
-
-#: src/dird/ua_select.c:237
-msgid "Catalog"
+#: src/qt-console/bat_conf.cpp:139
+#, c-format
+msgid "Director: name=%s address=%s DIRport=%d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:237
-msgid "Select Catalog resource"
-msgstr "Selecteer Catalog media"
-
-#: src/dird/ua_select.c:255 src/dird/ua_select.c:281
-msgid "The defined Job resources are:\n"
-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:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
-#: src/dird/ua_run.c:225
-msgid "Job"
-msgstr "Job"
-
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289
-msgid "Select Job resource"
-msgstr "Selecteer Job media:"
+#: src/qt-console/bat_conf.cpp:143
+#, c-format
+msgid "Console: name=%s\n"
+msgstr "Console: naam=%s\n"
 
-#: src/dird/ua_select.c:308
+#: src/qt-console/bat_conf.cpp:146
+#: src/qt-console/tray-monitor/tray_conf.cpp:183
 #, c-format
-msgid "Error: Restore Job resource \"%s\" does not exist.\n"
+msgid "ConsoleFont: name=%s font face=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:322
-msgid "The defined Restore Job resources are:\n"
+#: src/qt-console/bat_conf.cpp:150 src/qt-console/bat_conf.cpp:231
+#: src/qt-console/bat_conf.cpp:279 src/qt-console/bat_conf.cpp:309
+#, c-format
+msgid "Unknown resource type %d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:330
-msgid "Select Restore Job"
-msgstr "Selecteer Job om terug te zetten"
-
-#: src/dird/ua_select.c:347
-msgid "The defined Client resources are:\n"
-msgstr "De gedefinieerde Clients zijn:\n"
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:700
-#: src/wx-console/wxbrestorepanel.cpp:1133
-#: src/wx-console/wxbrestorepanel.cpp:1136
-#: src/wx-console/wxbrestorepanel.cpp:1238
-#: src/wx-console/wxbrestorepanel.cpp:1838
-#: src/wx-console/wxbrestorepanel.cpp:1840
-#: src/wx-console/wxbrestorepanel.cpp:1914
-#: src/wx-console/wxbrestorepanel.cpp:1970
-msgid "Client"
-msgstr "Client"
-
-#: src/dird/ua_select.c:355
-msgid "Select Client (File daemon) resource"
-msgstr "Selecteer een Client (File daemon)"
-
-#: src/dird/ua_select.c:382
+#: src/qt-console/bat_conf.cpp:257
+#: src/qt-console/tray-monitor/tray_conf.cpp:276
 #, c-format
-msgid "Error: Client resource %s does not exist.\n"
-msgstr "Fout: Client %s bestaat niet.\n"
+msgid "%s item is required in %s resource, but not found.\n"
+msgstr ""
 
-#: src/dird/ua_select.c:407
+#: src/qt-console/bat_conf.cpp:326
+#: src/qt-console/tray-monitor/tray_conf.cpp:360
 #, c-format
-msgid "Could not find Client %s: ERR=%s"
-msgstr "Kan Client niet vinden %s: ERR=%s"
+msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
+msgstr ""
 
-#: src/dird/ua_select.c:417 src/dird/ua_select.c:471
+#: src/qt-console/bcomm/dircomm.cpp:85
 #, c-format
-msgid "Could not find Client \"%s\": ERR=%s"
-msgstr "Kan Client niet vinden \"%s\": ERR=%s"
+msgid "Already connected\"%s\".\n"
+msgstr "Al verbonden\"%s\".\n"
 
-#: src/dird/ua_select.c:446
+#: src/qt-console/bcomm/dircomm.cpp:96
+#: src/qt-console/tray-monitor/tray-monitor.cpp:347
 #, c-format
-msgid "Error obtaining client ids. ERR=%s\n"
+msgid "Connecting to Director %s:%d"
 msgstr ""
 
-#: src/dird/ua_select.c:450
-msgid "No clients defined. You must run a job before using this command.\n"
+#: src/qt-console/bcomm/dircomm.cpp:98
+#, c-format
+msgid ""
+"Connecting to Director %s:%d\n"
+"\n"
 msgstr ""
+"Verbinden met Director %s:%d\n"
+"\n"
 
-#: src/dird/ua_select.c:454
-msgid "Defined Clients:\n"
-msgstr "Gedefinieerde Clients:\n"
-
-#: src/dird/ua_select.c:464
-msgid "Select the Client"
-msgstr "Selecteer Client"
-
-#: src/dird/ua_select.c:497 src/dird/ua_select.c:521 src/dird/ua_select.c:566
+#: src/qt-console/bcomm/dircomm.cpp:150
 #, c-format
-msgid "Could not find Pool \"%s\": ERR=%s"
+msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
+#: src/qt-console/bcomm/dircomm.cpp:173
 #, c-format
-msgid "Error obtaining pool ids. ERR=%s\n"
+msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:536
-msgid "No pools defined. Use the \"create\" command to create one.\n"
+#: src/qt-console/bcomm/dircomm.cpp:195
+#: src/qt-console/tray-monitor/tray-monitor.cpp:352
+msgid "Director daemon"
 msgstr ""
 
-#: src/dird/ua_select.c:540
-msgid "Defined Pools:\n"
-msgstr "Gedefinieerde Pools:\n"
+#: src/qt-console/bcomm/dircomm.cpp:233
+msgid "Initializing ..."
+msgstr "Initialiseren ..."
 
-#: 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 "*Geen*"
+#: src/qt-console/bcomm/dircomm.cpp:249 src/qt-console/console/console.cpp:130
+msgid "Connected"
+msgstr "Verbonden"
 
-#: 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 "Pool"
+#: src/qt-console/bcomm/dircomm.cpp:373
+msgid "Command completed ..."
+msgstr "Opdracht gereed ..."
 
-#: src/dird/ua_select.c:553
-msgid "Select the Pool"
-msgstr "Selecteer Pool"
+#: src/qt-console/bcomm/dircomm.cpp:380 src/qt-console/console/console.cpp:367
+msgid "Processing command ..."
+msgstr "Opdracht aan het uitvoeren ..."
 
-#: src/dird/ua_select.c:591
-#, c-format
-msgid "No access to Pool \"%s\"\n"
-msgstr "Geen toegang tot Pool \"%s\"\n"
+#: src/qt-console/bcomm/dircomm.cpp:387
+msgid "At main prompt waiting for input ..."
+msgstr "Wacht op invoer op opdrachtregel in hoofdscherm ..."
 
-#: src/dird/ua_select.c:623
-msgid "Enter *MediaId or Volume name: "
-msgstr "Voer *MediaId of Volume naam in:"
+#: src/qt-console/bcomm/dircomm.cpp:394 src/qt-console/bcomm/dircomm.cpp:407
+msgid "At prompt waiting for input ..."
+msgstr "Wacht op invoer op opdrachtregel ..."
 
-#: src/dird/ua_select.c:658
-msgid "The defined Pool resources are:\n"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:415
+msgid "Command failed."
+msgstr "Opdracht mislukt."
 
-#: src/dird/ua_select.c:666
-msgid "Select Pool resource"
-msgstr "Selecteer Pool"
+#: src/qt-console/bcomm/dircomm.cpp:487
+msgid "Director disconnected."
+msgstr "Director niet verbonden."
 
-#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
+#: src/qt-console/bcomm/dircomm_auth.cpp:107
 #, c-format
-msgid "Error: Pool resource \"%s\" does not exist.\n"
+msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:701
-msgid "Enter the JobId to select: "
-msgstr "Voer de gekozen Job in:"
-
-#: src/dird/ua_select.c:739
-#, c-format
-msgid "Could not find Job \"%s\": ERR=%s"
-msgstr "Kan Job niet vinden \"%s\": ERR=%s"
-
-#: src/dird/ua_select.c:819
+#: src/qt-console/bcomm/dircomm_auth.cpp:114
 #, c-format
-msgid "Automatically selected %s: %s\n"
+msgid ""
+"Authorization problem: Remote server at \"%s:%d\" did not advertise required "
+"TLS support.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:830
+#: src/qt-console/bcomm/dircomm_auth.cpp:122
 #, c-format
 msgid ""
-"Your request has multiple choices for \"%s\". Selection is not possible in "
-"batch mode.\n"
+"Authorization problem with Director at \"%s:%d\": Remote server requires "
+"TLS.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:848
+#: src/qt-console/bcomm/dircomm_auth.cpp:133
 #, c-format
-msgid "Selection list for \"%s\" is empty!\n"
+msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:854
+#: src/qt-console/bcomm/dircomm_auth.cpp:145
 #, c-format
-msgid "Automatically selected: %s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:866
-msgid "Selection aborted, nothing done.\n"
+msgid ""
+"Bad response to Hello command: ERR=%s\n"
+"The Director at \"%s:%d\" is probably not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:871
+#: src/qt-console/bcomm/dircomm_auth.cpp:154
 #, c-format
-msgid "Please enter a number between 1 and %d\n"
-msgstr "Voer een nummer in tussen 1 en %d\n"
-
-#: src/dird/ua_select.c:920
-msgid "Storage name given twice.\n"
+msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr ""
 
-#: src/dird/ua_select.c:937
+#: src/qt-console/bcomm/dircomm_auth.cpp:169
 #, c-format
-msgid "Expecting jobid=nn command, got: %s\n"
+msgid ""
+"Authorization problem with Director at \"%s:%d\"\n"
+"Most likely the passwords do not agree.\n"
+"If you are using TLS, there may have been a certificate validation error "
+"during the TLS handshake.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:941
-#, c-format
-msgid "JobId %s is not running.\n"
-msgstr "JobID %s is niet in uitvoering.\n"
-
-#: src/dird/ua_select.c:951
-#, c-format
-msgid "Expecting job=xxx, got: %s.\n"
+#: src/qt-console/main.cpp:154
+msgid "Cryptography library initialization failed.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
-#, c-format
-msgid "Job \"%s\" is not running.\n"
-msgstr "Job \"%s\" is niet in uitvoering.\n"
-
-#: src/dird/ua_select.c:963
+#: src/qt-console/main.cpp:158
 #, c-format
-msgid "Expecting ujobid=xxx, got: %s.\n"
+msgid "Please correct configuration file: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:983
+#: src/qt-console/main.cpp:180
 #, c-format
-msgid "Storage resource \"%s\": not found\n"
+msgid ""
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: 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          no signals\n"
+"       -t          test - read configuration and exit\n"
+"       -?          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"
 
-#: src/dird/ua_select.c:1015
-msgid "Enter autochanger drive[0]: "
-msgstr "Voer autochanger drive[0] in: "
-
-#: src/dird/ua_select.c:1036
-msgid "Enter autochanger slot: "
-msgstr "Voer autochanger slot in:"
-
-#: src/dird/ua_select.c:1066
-msgid "Media Types defined in conf file:\n"
+#: src/qt-console/main.cpp:213 src/qt-console/main.cpp:243
+msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1072
-msgid "Media Type"
-msgstr "Type media"
-
-#: src/dird/ua_select.c:1072
-msgid "Select the Media Type"
-msgstr "Selecteer media type"
-
-#: src/dird/ua_select.c:1111
+#: src/qt-console/main.cpp:221
 #, c-format
-msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
+#: src/qt-console/main.cpp:230
 #, c-format
-msgid "Warning Job %s is not running. Continuing anyway ...\n"
+msgid ""
+"No Director resource defined in %s\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: 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"
+#: src/qt-console/main.cpp:251
+#, c-format
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
-msgid "No Jobs running.\n"
-msgstr "Geen Jobs in uitvoering.\n"
-
-#: src/dird/ua_select.c:1167
-msgid "None of your jobs are running.\n"
-msgstr "Geen van uw opdrachten zijn in uitvoering.\n"
-
-#: src/dird/ua_select.c:1172
-msgid "Select Job:\n"
-msgstr "Selecteer Job:\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:75
+msgid ""
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see "
+msgstr ""
 
-#: src/dird/ua_select.c:1181
+#: src/qt-console/tray-monitor/authenticate.cpp:84
 #, c-format
-msgid "JobId=%s Job=%s"
+msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1185
-#, c-format
-msgid "Choose Job to %s"
+#: src/qt-console/tray-monitor/authenticate.cpp:91
+msgid "Director rejected Hello command\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1192
+#: src/qt-console/tray-monitor/authenticate.cpp:119
 #, c-format
-msgid ""
-"Cancel: %s\n"
-"\n"
-"%s"
+msgid "Error sending Hello to Storage daemon. ERR=%s\n"
 msgstr ""
-"Anuleer: %s\n"
-"\n"
-"%s"
-
-#: src/dird/ua_select.c:1193
-msgid "Confirm cancel?"
-msgstr "Bevestig annulering?"
-
-#: src/dird/ua_select.c:1199
-#, fuzzy
-msgid "Confirm cancel (yes/no): "
-msgstr "Bevestig annulering (yes/no)"
 
-#: 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\" niet gevonden.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:125
+msgid ""
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see "
+msgstr ""
 
-#: src/dird/bsr.c:173
+#: src/qt-console/tray-monitor/authenticate.cpp:132
 #, c-format
-msgid "Unable to get Job record. ERR=%s\n"
+msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/bsr.c:184
-#, c-format
-msgid "Unable to get Job Volume Parameters. ERR=%s\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:139
+msgid "Storage daemon rejected Hello command\n"
 msgstr ""
 
-#: src/dird/bsr.c:232
+#: src/qt-console/tray-monitor/authenticate.cpp:165
 #, c-format
-msgid "Unable to create bootstrap file %s. ERR=%s\n"
+msgid "Error sending Hello to File daemon. ERR=%s\n"
 msgstr ""
 
-#: src/dird/bsr.c:241
-msgid "No files found to read. No bootstrap file written.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:171
+msgid ""
+"Director and File daemon passwords or names not the same.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/bsr.c:245
-msgid "Error writing bsr file.\n"
-msgstr "Fout bij schrijven van bsr bestand.\n"
-
-#: src/dird/bsr.c:250
+#: src/qt-console/tray-monitor/authenticate.cpp:178
 #, c-format
-msgid "Bootstrap records written to %s\n"
+msgid "Bad response from File daemon to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/bsr.c:298
-msgid ""
-"The job will require the following\n"
-"   Volume(s)                 Storage(s)                SD Device(s)\n"
-"===========================================================================\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:185
+msgid "File daemon rejected Hello command\n"
 msgstr ""
 
-#: src/dird/bsr.c:317
-msgid "No Volumes found to restore.\n"
-msgstr "Geen Volumes gevonden om terug te zetten.\n"
-
-#: src/dird/bsr.c:319
+#: src/qt-console/tray-monitor/tray-monitor.cpp:55
+#, c-format
 msgid ""
 "\n"
-"Volumes marked with \"*\" are online.\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -d <nn>       set debug level to <nn>\n"
+"       -dt           print timestamp in debug output\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
+"\n"
 msgstr ""
 "\n"
-"Volumes gemarkeerd met \"*\" staan online.\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/ua_server.c:69
+#: src/qt-console/tray-monitor/tray-monitor.cpp:204
 #, c-format
-msgid "Cannot create UA thread: %s\n"
+msgid ""
+"Error: %d Monitor resources defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
 
-#: src/dird/ua_server.c:159
-msgid "You have messages.\n"
-msgstr "U heeft berichten.\n"
-
-#: src/dird/verify.c:86 src/dird/verify.c:318
+#: src/qt-console/tray-monitor/tray-monitor.cpp:236
 #, c-format
-msgid "Unimplemented Verify level %d(%c)\n"
+msgid ""
+"No Client, Storage or Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
 msgstr ""
 
-#: src/dird/verify.c:148
+#: src/qt-console/tray-monitor/tray-monitor.cpp:251
+#, c-format
 msgid ""
-"Unable to find JobId of previous InitCatalog Job.\n"
-"Please run a Verify with Level=InitCatalog before\n"
-"running the current Job.\n"
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
 msgstr ""
 
-#: src/dird/verify.c:153
-msgid "Unable to find JobId of previous Job for this client.\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:319
+#, c-format
+msgid "Error, currentitem is not a Client or a Storage..\n"
 msgstr ""
 
-#: src/dird/verify.c:170
+#: src/qt-console/tray-monitor/tray-monitor.cpp:357
 #, c-format
-msgid "Could not get job record for previous Job. ERR=%s"
+msgid "Connecting to Client %s:%d"
 msgstr ""
 
-#: src/dird/verify.c:176
-#, c-format
-msgid "Last Job %d did not terminate normally. JobStatus=%c\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:362
+msgid "File daemon"
 msgstr ""
 
-#: src/dird/verify.c:180
+#: src/qt-console/tray-monitor/tray-monitor.cpp:367
 #, c-format
-msgid "Verifying against JobId=%d Job=%s\n"
+msgid "Connecting to Storage %s:%d"
+msgstr ""
+
+#: src/qt-console/tray-monitor/tray-monitor.cpp:372
+msgid "Storage daemon"
 msgstr ""
 
-#: src/dird/verify.c:219
+#: src/qt-console/tray-monitor/tray-monitor.cpp:376
+#: src/qt-console/tray-monitor/tray-monitor.cpp:406
 #, c-format
-msgid "Start Verify JobId=%s Level=%s Job=%s\n"
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
 msgstr ""
 
-#: src/dird/verify.c:305
-msgid "Deprecated feature ... use bootstrap.\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:381
+msgid "Cannot connect to daemon."
 msgstr ""
 
-#: src/dird/verify.c:372
+#: src/qt-console/tray-monitor/tray-monitor.cpp:390
 #, c-format
-msgid "Unimplemented verify level %d\n"
+msgid "Authentication error : %s"
 msgstr ""
 
-#: src/dird/verify.c:421
-msgid "Verify OK"
-msgstr "Controle OK"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:397
+msgid "Opened connection with Director daemon."
+msgstr ""
 
-#: src/dird/verify.c:425
-msgid "*** Verify Error ***"
-msgstr "*** Fout bij controleren ***"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:400
+msgid "Opened connection with File daemon."
+msgstr ""
 
-#: src/dird/verify.c:429
-msgid "Verify warnings"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:403
+msgid "Opened connection with Storage daemon."
 msgstr ""
 
-#: src/dird/verify.c:432
-msgid "Verify Canceled"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:454
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
 msgstr ""
 
-#: src/dird/verify.c:435
-msgid "Verify Differences"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:463
+msgid "Error : Connection closed."
 msgstr ""
 
-#: src/dird/verify.c:440
+#: src/qt-console/tray-monitor/tray_conf.cpp:156
 #, c-format
-msgid "Inappropriate term code: %d %c\n"
+msgid "No %s resource defined\n"
 msgstr ""
 
-#: src/dird/verify.c:454
+#: src/qt-console/tray-monitor/tray_conf.cpp:165
 #, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:489
+#: src/qt-console/tray-monitor/tray_conf.cpp:171
 #, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build:                  %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+msgid "Director: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:567
+#: src/qt-console/tray-monitor/tray_conf.cpp:175
 #, c-format
-msgid ""
-"bird<filed: bad attributes, expected 3 fields got %d\n"
-" mslen=%d msg=%s\n"
+msgid "Client: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:612
+#: src/qt-console/tray-monitor/tray_conf.cpp:179
 #, c-format
-msgid "New file: %s\n"
-msgstr "Nieuw bestand: %s\n"
-
-#: src/dird/verify.c:613
-#, c-format
-msgid "File not in catalog: %s\n"
-msgstr "Bestand niet in catalog: %s\n"
-
-#: src/dird/verify.c:637
-#, c-format
-msgid "      st_ino   differ. Cat: %s File: %s\n"
-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 "      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 "      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 "      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 "      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 "      st_size  verschil. Cat: %s Bestand: %s\n"
-
-#: src/dird/verify.c:687
-msgid "      st_atime differs\n"
-msgstr "      st_atime verschilt\n"
-
-#: src/dird/verify.c:694
-msgid "      st_mtime differs\n"
-msgstr "      st_mtime verschilt\n"
-
-#: src/dird/verify.c:701
-msgid "      st_ctime differs\n"
-msgstr "      st_ctime verschilt\n"
-
-#: src/dird/verify.c:708
-#, c-format
-msgid "      st_size  decrease. Cat: %s File: %s\n"
-msgstr ""
-
-#: src/dird/verify.c:738
-#, c-format
-msgid "MD5/SHA1 index %d not same as attributes %d\n"
-msgstr ""
-
-#: src/dird/verify.c:746
-#, c-format
-msgid "      %s differs. File=%s Cat=%s\n"
-msgstr ""
-
-#: src/dird/verify.c:757
-#, c-format
-msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
-msgstr ""
-
-#: src/dird/verify.c:796
-#, c-format
-msgid "The following files are in the Catalog but not on %s:\n"
-msgstr ""
-
-#: src/dird/verify.c:811 src/tools/testfind.c:420
-#, c-format
-msgid "File: %s\n"
-msgstr "Bestand: %s\n"
-
-#: src/dird/admin.c:65
-#, c-format
-msgid "Start Admin JobId %d, Job=%s\n"
-msgstr ""
-
-#: 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:98
-msgid "Admin OK"
-msgstr ""
-
-#: src/dird/admin.c:102
-msgid "*** Admin Error ***"
-msgstr "*** Admin Fout ***"
-
-#: src/dird/admin.c:106
-msgid "Admin Canceled"
-msgstr "Admin geannuleerd"
-
-#: 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 ""
-
-#: src/dird/admin.c:118
-msgid "Bacula "
-msgstr ""
-
-#: src/dird/dird.c:150
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"       -f          run in foreground (for debugging)\n"
-"       -g          groupid\n"
-"       -m          print kaboom output (for debugging)\n"
-"       -r <job>    run <job> now\n"
-"       -s          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -u          userid\n"
-"       -v          verbose user messages\n"
-"       -?          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: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: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:546
-msgid "Too many open reload requests. Request ignored.\n"
-msgstr ""
-
-#: src/dird/dird.c:561
-msgid "Out of reload table entries. Giving up.\n"
-msgstr ""
-
-#: src/dird/dird.c:564
-msgid "Resetting previous configuration.\n"
-msgstr ""
-
-#: 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:636 src/filed/filed.c:350
-#, c-format
-msgid "No Messages resource defined in %s\n"
-msgstr ""
-
-#: src/dird/dird.c:641
-#, c-format
-msgid "Only one Director resource permitted in %s\n"
-msgstr ""
-
-#: 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: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: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: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 "
-"Director \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: 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:698
-#, c-format
-msgid "No Job records defined in %s\n"
-msgstr ""
-
-#: 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:830
-#, c-format
-msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
-msgstr ""
-
-#: src/dird/dird.c:837
-msgid "Too many items in Job resource\n"
-msgstr ""
-
-#: src/dird/dird.c:841
-#, c-format
-msgid "No storage specified in Job \"%s\" nor in Pool.\n"
-msgstr ""
-
-#: src/dird/dird.c:865
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:871
-#, c-format
-msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:878
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: 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: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: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:1019 src/tools/cats_test.c:377
-#, c-format
-msgid "%s"
-msgstr ""
-
-#: src/dird/dird.c:1098
-#, c-format
-msgid "Could not create storage record for %s\n"
-msgstr ""
-
-#: src/dird/dird.c:1106
-#, c-format
-msgid "Could not update storage record for %s\n"
-msgstr ""
-
-#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:312
-#, c-format
-msgid "Expected a strip path positive integer, got:%s:"
-msgstr ""
-
-#: src/dird/inc_conf.c:332
-#, c-format
-msgid "Expected a FileSet option keyword, got:%s:"
-msgstr ""
-
-#: src/dird/inc_conf.c:365
-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: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: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:2039
-#, c-format
-msgid "Keyword %s not permitted in this resource"
-msgstr ""
-
-#: src/dird/inc_conf.c:464
-#, c-format
-msgid "Regex compile error. ERR=%s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:485
-#, c-format
-msgid "Expected a regex string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:559
-#, c-format
-msgid "Expected a wild-card string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:582
-#, c-format
-msgid "Expected an fstype string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:593
-msgid "ExcludeDirContaining directive not permitted in Exclude.\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:620
-#, c-format
-msgid "Expected an drivetype string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:644 src/dird/inc_conf.c:687
-#, c-format
-msgid "Backslash found. Use forward slashes or quote the string.: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:659 src/dird/inc_conf.c:702
-#, c-format
-msgid "Expected a filename, got: %s"
-msgstr ""
-
-#: src/dird/inc_conf.c:676
-msgid "Plugin directive not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:719
-msgid "Options section not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
-#, c-format
-msgid "Expecting open brace. Got %s"
-msgstr ""
-
-#: src/dird/inc_conf.c:779
-#, c-format
-msgid "Expected a FileSet keyword, got: %s"
-msgstr ""
-
-#: src/dird/ua_query.c:73 src/findlib/create_file.c:288
-#: src/findlib/create_file.c:391
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_query.c:78
-msgid "Available queries:\n"
-msgstr ""
-
-#: src/dird/ua_query.c:85
-msgid "Choose a query"
-msgstr ""
-
-#: src/dird/ua_query.c:99
-msgid "Could not find query.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:117
-msgid "Too many prompts in query, max is 9.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:220
-#, c-format
-msgid "Warning prompt %d missing.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:265
-msgid ""
-"Entering SQL query mode.\n"
-"Terminate each query with a semicolon.\n"
-"Terminate query mode with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:268 src/dird/ua_query.c:284
-msgid "Enter SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:286
-msgid "Add to SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:289
-msgid "End query mode.\n"
-msgstr ""
-
-#: src/dird/newvol.c:90
-#, c-format
-msgid "Illegal character in Volume name \"%s\"\n"
-msgstr "Onjuist karakter in Volume naam \"%s\"\n"
-
-#: src/dird/newvol.c:104
-#, c-format
-msgid "Created new Volume \"%s\" in catalog.\n"
-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: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:150
-msgid "Too many failures. Giving up creating Volume name.\n"
-msgstr "Teveel mislukte pogingen. Aanmaken volume naam gestopt.\n"
-
-#: src/dird/expand.c:255
-#, c-format
-msgid "Count not update counter %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:427
-#, c-format
-msgid "Cannot create var context: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:432
-#, c-format
-msgid "Cannot set var callback: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:438
-#, c-format
-msgid "Cannot set var operate: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:444 src/dird/expand.c:459
-#, c-format
-msgid "Cannot unescape string: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:452
-#, c-format
-msgid "Cannot expand expression \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:470
-#, c-format
-msgid "Cannot destroy var context: ERR=%s\n"
-msgstr ""
-
-#: src/dird/recycle.c:69
-#, c-format
-msgid "Recycled volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:90
-msgid ""
-"\n"
-"This command can be DANGEROUS!!!\n"
-"\n"
-"It purges (deletes) all Files from a Job,\n"
-"JobId, Client or Volume; or it purges (deletes)\n"
-"all Jobs from a Client or Volume without regard\n"
-"to retention periods. Normally you should use the\n"
-"PRUNE command, which respects retention periods.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:157
-msgid "Choose item to purge"
-msgstr ""
-
-#: src/dird/ua_purge.c:204
-#, c-format
-msgid "Begin purging files for Client \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:213 src/dird/ua_purge.c:263
-#, c-format
-msgid "No Files found for client %s to purge from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:216
-#, c-format
-msgid "Files for %d Jobs for client \"%s\" purged from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:254
-#, c-format
-msgid "Begin purging jobs from Client \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:266
-#, c-format
-msgid "%d Jobs for client %s purged from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:464
-#, c-format
-msgid ""
-"\n"
-"Volume \"%s\" has VolStatus \"%s\" and cannot be purged.\n"
-"The VolStatus must be: Append, Full, Used, or Error to be purged.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:492
-#, c-format
-msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:541
-#, c-format
-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: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: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:623
-msgid "Can't update volume size in the catalog\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:625
-#, c-format
-msgid "The volume \"%s\" has been truncated\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:627
-#, c-format
-msgid "Unable to truncate volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:713
-#, c-format
-msgid "No Volumes found to perform %s action.\n"
-msgstr ""
-
-#: 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:800
-#, c-format
-msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:805
-#, c-format
-msgid "Cannot purge Volume with VolStatus=%s\n"
-msgstr ""
-
-#: src/dird/vbackup.c:76 src/dird/migrate.c:114
-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:871
-#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
-msgid "Pool resource"
-msgstr ""
-
-#: src/dird/vbackup.c:116 src/dird/migrate.c:285
-msgid "Job Pool's NextPool resource"
-msgstr ""
-
-#: src/dird/vbackup.c:147
-#, c-format
-msgid "Start Virtual Backup JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/vbackup.c:151
-msgid ""
-"This Job is not an Accurate backup so is not equivalent to a Full backup.\n"
-msgstr ""
-
-#: src/dird/vbackup.c:158
-msgid "No previous Jobs found.\n"
-msgstr ""
-
-#: src/dird/vbackup.c:180
-#, c-format
-msgid "Error getting Job record for previous Job: ERR=%s"
-msgstr ""
-
-#: src/dird/vbackup.c:186 src/dird/migrate.c:131
-msgid "Could not get or create the FileSet record.\n"
-msgstr ""
-
-#: 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: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:329 src/dird/backup.c:651 src/dird/backup.c:660
-#: src/stored/bscan.c:1214
-msgid "Backup OK -- with warnings"
-msgstr "Backup OK -- met waarschuwingen"
-
-#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
-msgid "Backup OK"
-msgstr ""
-
-#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
-msgid "*** Backup Error ***"
-msgstr "*** Backup Fout ***"
-
-#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
-msgid "Backup Canceled"
-msgstr "Backup geannuleerd"
-
-#: src/dird/vbackup.c:393
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           Virtual Full\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_output.c:69 src/dird/ua_output.c:93
-msgid "ON or OFF keyword missing.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:113
-msgid "Disabled Jobs:\n"
-msgstr ""
-
-#: src/dird/ua_output.c:119
-msgid "No disabled Jobs.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:163
-msgid "disabled"
-msgstr ""
-
-#: src/dird/ua_output.c:211
-msgid "Keywords for the show command are:\n"
-msgstr ""
-
-#: src/dird/ua_output.c:217
-#, c-format
-msgid "%s resource %s not found.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:220
-#, c-format
-msgid "Resource %s not found\n"
-msgstr ""
-
-#: src/dird/ua_output.c:290
-msgid "Hey! DB is NULL\n"
-msgstr ""
-
-#: src/dird/ua_output.c:447
-#, c-format
-msgid "Jobid %d used %d Volume(s): %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:465
-msgid "No Pool specified.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:486
-#, c-format
-msgid "Pool: %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:502
-msgid "Ignoring invalid value for days. Max is 50.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:524
-#, c-format
-msgid "Unknown list keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:549
-#, c-format
-msgid "%s is not a job name.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:563
-#, c-format
-msgid "Could not find Pool for Job %s\n"
-msgstr ""
-
-#: 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: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:593
-#, c-format
-msgid "Could not find next Volume for Job %s.\n"
-msgstr ""
-
-#: 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:733
-#, c-format
-msgid "Pool %s not in database. %s"
-msgstr ""
-
-#: src/dird/ua_output.c:741
-#, c-format
-msgid "Pool %s created in database.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:794
-msgid "You have no messages.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:874
-msgid "Message too long to display.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:155 src/dird/ua_cmds.c:236
-#, c-format
-msgid "Can't use %s command in a runscript"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:175
-msgid ": is an invalid command.\n"
-msgstr ""
-
-#: 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: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:1160 src/dird/job.c:1164
-msgid "unknown source"
-msgstr ""
-
-#: 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: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: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: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:694 src/dird/ua_dotcmds.c:788
-#, c-format
-msgid "Unknown command: %s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
-msgid "Available daemons are: \n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
-msgid "Director"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:736
-msgid "Select daemon type to make die"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:762
-msgid "The Director will generate a deadlock.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:766
-msgid "The Director will segment fault.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:955
-msgid "Access to specified Client or FileSet not allowed.\n"
-msgstr ""
-
-#: 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:999
-msgid "query keyword not found.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1026
-#, c-format
-msgid "List MediaType failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1040
-#, c-format
-msgid "List Media failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1054
-#, c-format
-msgid "List Location failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/next_vol.c:166
-#, c-format
-msgid "Purging oldest volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/next_vol.c:172
-#, c-format
-msgid "Pruning oldest volume \"%s\"\n"
-msgstr ""
-
-#: 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:218
-#, c-format
-msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
-msgstr ""
-
-#: src/dird/next_vol.c:226
-#, c-format
-msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
-msgstr ""
-
-#: 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:243
-#, c-format
-msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
-msgstr ""
-
-#: 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:267
-#, c-format
-msgid "Catalog error updating volume \"%s\". ERR=%s"
-msgstr ""
-
-#: src/dird/next_vol.c:289
-msgid "volume has expired"
-msgstr ""
-
-#: 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:312
-msgid "and recycling of current volume failed"
-msgstr ""
-
-#: src/dird/next_vol.c:318
-msgid "but should be Append, Purged or Recycle"
-msgstr ""
-
-#: src/dird/next_vol.c:327
-msgid "volume has recycling disabled"
-msgstr ""
-
-#: 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: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:421
-#, c-format
-msgid "Unable to get Pool record: ERR=%s"
-msgstr ""
-
-#: 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:448
-#, c-format
-msgid "Failed to move Scratch Volume. ERR=%s\n"
-msgstr ""
-
-#: src/dird/next_vol.c:453
-#, c-format
-msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:120
-msgid "Add media to a pool"
-msgstr ""
-
-#: src/dird/ua_cmds.c:121
-msgid "Autodisplay console messages"
-msgstr ""
-
-#: src/dird/ua_cmds.c:122
-msgid "Automount after label"
-msgstr ""
-
-#: src/dird/ua_cmds.c:123
-msgid "Cancel a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:124
-msgid "Create DB Pool from resource"
-msgstr ""
-
-#: src/dird/ua_cmds.c:125
-msgid "Delete volume, pool or job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:126
-msgid "Disable a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:127
-msgid "Enable a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:128
-msgid "Performs FileSet estimate, listing gives full listing"
-msgstr ""
-
-#: src/dird/ua_cmds.c:131 src/dird/ua_cmds.c:155
-msgid "Terminate Bconsole session"
-msgstr ""
-
-#: src/dird/ua_cmds.c:132
-msgid "Non-interactive gui mode"
-msgstr ""
-
-#: src/dird/ua_cmds.c:133
-msgid "Print help on specific command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:138
-msgid "Label a tape"
-msgstr ""
-
-#: src/dird/ua_cmds.c:139
-msgid "List objects from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:142
-msgid "Full or long list like list command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:145
-msgid "Display pending messages"
-msgstr ""
-
-#: src/dird/ua_cmds.c:146
-msgid "Print current memory usage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:147
-msgid "Mount storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:150
-msgid "Prune expired records from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:153
-msgid "Purge records from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:154
-msgid "Python control commands"
-msgstr ""
-
-#: src/dird/ua_cmds.c:156
-msgid "Query catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:157
-msgid "Restore files"
-msgstr ""
-
-#: src/dird/ua_cmds.c:162
-msgid "Relabel a tape"
-msgstr ""
-
-#: src/dird/ua_cmds.c:165
-msgid "Release storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:166
-msgid "Reload conf file"
-msgstr ""
-
-#: src/dird/ua_cmds.c:167
-msgid "Run a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:171
-msgid "Report status"
-msgstr ""
-
-#: src/dird/ua_cmds.c:174
-msgid "Sets debug level"
-msgstr ""
-
-#: src/dird/ua_cmds.c:177
-msgid "Sets new client address -- if authorized"
-msgstr ""
-
-#: src/dird/ua_cmds.c:178
-msgid "Show resource records"
-msgstr ""
-
-#: src/dird/ua_cmds.c:181
-msgid "Use SQL to query catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:182
-msgid "Print current time"
-msgstr ""
-
-#: src/dird/ua_cmds.c:183
-msgid "Turn on/off trace to file"
-msgstr ""
-
-#: src/dird/ua_cmds.c:184
-msgid "Unmount storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:187
-msgid "Umount - for old-time Unix guys, see unmount"
-msgstr ""
-
-#: src/dird/ua_cmds.c:190
-msgid "Update volume, pool or stats"
-msgstr ""
-
-#: src/dird/ua_cmds.c:196
-msgid "Use catalog xxx"
-msgstr ""
-
-#: src/dird/ua_cmds.c:197
-msgid "Does variable expansion"
-msgstr ""
-
-#: src/dird/ua_cmds.c:198
-msgid "Print Director version"
-msgstr ""
-
-#: src/dird/ua_cmds.c:199
-msgid "Wait until no jobs are running"
-msgstr ""
-
-#: src/dird/ua_cmds.c:247
-#, c-format
-msgid "%s: is an invalid command.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:288
-msgid ""
-"You probably don't want to be using this command since it\n"
-"creates database records without labeling the Volumes.\n"
-"You probably want to use the \"label\" command.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:306
-#, c-format
-msgid "Pool already has maximum volumes=%d\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:307
-msgid "Enter new maximum (zero for unlimited): "
-msgstr ""
-
-#: 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:333
-#, c-format
-msgid "The number must be between 0 and %d\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:341
-msgid "Enter Volume name: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:345
-msgid "Enter base volume name: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
-msgid "Volume name too long.\n"
-msgstr ""
-
-#: 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:369
-msgid "Enter the starting number: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:374
-msgid "Start number must be greater than zero.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:385
-msgid "Enter slot (0 for none): "
-msgstr ""
-
-#: src/dird/ua_cmds.c:389
-msgid "InChanger? yes/no: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:414
-#, c-format
-msgid "%d Volumes created in pool %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
-msgid "Turn on or off? "
-msgstr ""
-
-#: 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: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:631
-#, c-format
-msgid ""
-"Error: Pool %s already exists.\n"
-"Use update to change it.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:642
-#, c-format
-msgid "Pool %s created.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:672
-msgid "Python interpreter restarted.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
-msgid "Nothing done.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "Client \"%s\" address set to %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:742
-#, c-format
-msgid "Job \"%s\" %sabled\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:920
-msgid "Enter new debug level: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:997
-msgid "All"
-msgstr ""
-
-#: src/dird/ua_cmds.c:998
-msgid "Select daemon type to set debug level"
-msgstr ""
-
-#: 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:1092
-msgid "Client name missing.\n"
-msgstr ""
-
-#: 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:1109
-msgid "Job name missing.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1118
-#, c-format
-msgid "Fileset \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1122
-#, c-format
-msgid "No authorization for FileSet \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1127
-msgid "Fileset name missing.\n"
-msgstr ""
-
-#: 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:1142
-msgid "Level value missing.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1149
-msgid "Invalid value for accurate. It must be yes or no.\n"
-msgstr ""
-
-#: 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:1227
-msgid "Error sending include list.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1232
-msgid "Error sending exclude list.\n"
-msgstr ""
-
-#: 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:1326
-msgid "Choose catalog item to delete"
-msgstr ""
-
-#: 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: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 "Jobid %s and associated records deleted from the catalog.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1484
-#, c-format
-msgid ""
-"\n"
-"This command will delete volume %s\n"
-"and all Jobs saved on that volume from the Catalog\n"
-msgstr ""
-
-#: 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:1504
-msgid "Can't list jobs on this volume\n"
-msgstr ""
-
-#: 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:1644
-#, c-format
-msgid "Using Catalog name=%s DB=%s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1712
-msgid "ERR: Can't open db\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1759
-msgid "Wait on mount timed out\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1769
-msgid "ERR: Job was not found\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1845
-msgid ""
-"  Command       Description\n"
-"  =======       ===========\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1849
-#, c-format
-msgid ""
-"  %-13s %s\n"
-"\n"
-"Arguments:\n"
-"\t%s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1854
-#, c-format
-msgid "  %-13s %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1858
-#, c-format
-msgid ""
-"\n"
-"Can't find %s command.\n"
-"\n"
-msgstr ""
-
-#: 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:1896 src/filed/status.c:85
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s %s\n"
-msgstr ""
-
-#: 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:2049
-#, c-format
-msgid "Could not open catalog database \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:2059
-#, c-format
-msgid "Using Catalog \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:74
-msgid "add dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:75
-msgid "change current directory"
-msgstr ""
-
-#: src/dird/ua_tree.c:76
-msgid "count marked files in and below the cd"
-msgstr ""
-
-#: src/dird/ua_tree.c:77
-msgid "delete dir/file to be restored recursively in dir"
-msgstr ""
-
-#: src/dird/ua_tree.c:78 src/dird/ua_tree.c:79
-msgid "long list current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:80
-msgid "leave file selection mode"
-msgstr ""
-
-#: src/dird/ua_tree.c:81
-msgid "estimate restore size"
-msgstr ""
-
-#: src/dird/ua_tree.c:82
-msgid "same as done command"
-msgstr ""
-
-#: src/dird/ua_tree.c:83
-msgid "find files, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:84 src/dird/ua_tree.c:97 src/dird/ua_tree.c:98
-msgid "print help"
-msgstr ""
-
-#: src/dird/ua_tree.c:85 src/dird/ua_tree.c:86
-msgid "list current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:87
-msgid "list subdir in current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:88
-msgid "list the marked files in and below the cd"
-msgstr ""
-
-#: src/dird/ua_tree.c:89
-msgid "list the marked files in"
-msgstr ""
-
-#: src/dird/ua_tree.c:90
-msgid "mark dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:91
-msgid "mark directory name to be restored (no files)"
-msgstr ""
-
-#: src/dird/ua_tree.c:92 src/dird/ua_tree.c:93
-msgid "print current working directory"
-msgstr ""
-
-#: src/dird/ua_tree.c:94
-msgid "unmark dir/file to be restored recursively in dir"
-msgstr ""
-
-#: src/dird/ua_tree.c:95
-msgid "unmark directory name only no recursion"
-msgstr ""
-
-#: src/dird/ua_tree.c:96
-msgid "quit and do not do restore"
-msgstr ""
-
-#: src/dird/ua_tree.c:118
-msgid ""
-"\n"
-"You are now entering file selection mode where you add (mark) and\n"
-"remove (unmark) files to be restored. No files are initially added, unless\n"
-"you used the \"all\" keyword on the command line.\n"
-"Enter \"done\" to leave this mode.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
-#, c-format
-msgid "cwd is: %s\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:138 src/dird/ua_tree.c:157
-#, c-format
-msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
-msgstr ""
-
-#: 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:387
-msgid "1 file marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:389
-#, c-format
-msgid "%s files marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:417
-msgid "No directories marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:419
-msgid "1 directory marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:421
-#, c-format
-msgid "%s directories marked.\n"
-msgstr ""
-
-#: 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:453
-msgid "No file specification given.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:674
-#, c-format
-msgid "Node %s has no children.\n"
-msgstr ""
-
-#: 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:778 src/stored/btape.c:2949
-#, c-format
-msgid ""
-"  Command    Description\n"
-"  =======    ===========\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:801
-msgid "Too few or too many arguments. Try using double quotes.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:814
-msgid "Invalid path given.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
-msgid "No files unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:864
-msgid "1 file unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:867
-#, c-format
-msgid "%s files unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
-msgid "No directories unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:897
-msgid "1 directory unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:899
-#, c-format
-msgid "%d directories unmarked.\n"
-msgstr ""
-
-#: 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:576
-#, c-format
-msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:581
-#, c-format
-msgid "   query_file=%s\n"
-msgstr ""
-
-#: 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:589
-#, c-format
-msgid "Console: name=%s SSL=%d\n"
-msgstr ""
-
-#: 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:599
-#, c-format
-msgid "Counter: name=%s min=%d max=%d\n"
-msgstr ""
-
-#: 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:616
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:629
-#, c-format
-msgid ""
-"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
-"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr="
-"%d\n"
-"      poolid=%s volname=%s MediaType=%s\n"
-msgstr ""
-
-#: 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: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:669
-#, c-format
-msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:670
-msgid "JobDefs"
-msgstr ""
-
-#: 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:680
-#, c-format
-msgid "     SpoolSize=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:683
-#, c-format
-msgid "     Accurate=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:686
-#, c-format
-msgid "     SelectionType=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:701
-#, c-format
-msgid "  --> Where=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:704
-#, c-format
-msgid "  --> RegexWhere=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:707
-#, c-format
-msgid "  --> Bootstrap=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:710
-#, c-format
-msgid "  --> WriteBootstrap=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:713
-#, c-format
-msgid "  --> PluginOptions=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:716
-#, c-format
-msgid "  --> MaxRunTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:719
-#, c-format
-msgid "  --> MaxWaitTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:722
-#, c-format
-msgid "  --> MaxStartDelay=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:725
-#, c-format
-msgid "  --> MaxRunSchedTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:737
-#, c-format
-msgid "  --> Base %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
-msgid " --> RunScript\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
-#, c-format
-msgid "  --> Command=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
-#, c-format
-msgid "  --> Target=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
-#, c-format
-msgid "  --> RunOnSuccess=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
-#, c-format
-msgid "  --> RunOnFailure=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
-#, c-format
-msgid "  --> FailJobOnError=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
-#, c-format
-msgid "  --> RunWhen=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:775
-#, c-format
-msgid "  --> Run=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:779
-#, c-format
-msgid "  --> SelectionPattern=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:793
-#, c-format
-msgid "FileSet: name=%s\n"
-msgstr ""
-
-#: 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:892
-#, c-format
-msgid "  --> Run Level=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:893
-msgid "      hour="
-msgstr ""
-
-#: src/dird/dird_conf.c:902
-msgid "      mday="
-msgstr ""
-
-#: src/dird/dird_conf.c:911
-msgid "      month="
-msgstr ""
-
-#: src/dird/dird_conf.c:920
-msgid "      wday="
-msgstr ""
-
-#: src/dird/dird_conf.c:929
-msgid "      wom="
-msgstr ""
-
-#: src/dird/dird_conf.c:938
-msgid "      woy="
-msgstr ""
-
-#: src/dird/dird_conf.c:947
-#, c-format
-msgid "      mins=%d\n"
-msgstr ""
-
-#: 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:974
-#, c-format
-msgid "Pool: name=%s PoolType=%s\n"
-msgstr ""
-
-#: 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:979
-#, c-format
-msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:982
-#, c-format
-msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:986
-#, c-format
-msgid "      CleaningPrefix=%s LabelType=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:988
-#, c-format
-msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:992
-#, c-format
-msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:996
-#, c-format
-msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1000
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1004
-#, c-format
-msgid "      NextPool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1007
-#, c-format
-msgid "      RecyclePool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1010
-#, c-format
-msgid "      ScratchPool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1013
-#, c-format
-msgid "      Catalog=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1033
-#, c-format
-msgid "Messages: name=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1035
-#, c-format
-msgid "      mailcmd=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1037
-#, c-format
-msgid "      opcmd=%s\n"
-msgstr ""
-
-#: 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: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: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
-#: src/qt-console/bat_conf.cpp:265
-#, c-format
-msgid "%s item is required in %s resource, but not found.\n"
-msgstr ""
-
-#: 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:1450
-#, c-format
-msgid "Cannot find Pool resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1461
-#, c-format
-msgid "Cannot find Console resource %s\n"
-msgstr ""
-
-#: 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:1474 src/stored/stored_conf.c:617
-#, c-format
-msgid "Cannot find Storage resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1483
-#, c-format
-msgid "Cannot find Job resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1533
-#, c-format
-msgid "Cannot find Counter resource %s\n"
-msgstr ""
-
-#: 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:1554
-#, c-format
-msgid "Cannot find Schedule resource %s\n"
-msgstr ""
-
-#: 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
-#, c-format
-msgid "Unknown resource type %d in save_resource.\n"
-msgstr ""
-
-#: 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: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
-#, c-format
-msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1647
-#, c-format
-msgid "Inserting %s res: %s index=%d pass=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1660
-#, c-format
-msgid "Expected one of: %s, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1732
-#, c-format
-msgid "Expected a Migration Job Type keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1758
-#, c-format
-msgid "Expected a Job Type keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1782
-#, c-format
-msgid "Expected a Job Level keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1802
-#, c-format
-msgid "Expected a Restore replacement option, got: %s"
-msgstr ""
-
-#: 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:1874 src/lib/parse_conf.c:478
-#, c-format
-msgid "Could not find config Resource %s referenced on line %d : %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:176
-#, c-format
-msgid "bget_dirmsg: unknown bnet signal %d\n"
-msgstr ""
-
-#: src/dird/getmsg.c:194 src/dird/getmsg.c:200 src/dird/getmsg.c:213
-#: src/dird/getmsg.c:247 src/dird/getmsg.c:269 src/dird/getmsg.c:295
-#, c-format
-msgid "Malformed message: %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:367
-#, c-format
-msgid "Bad response to %s command: wanted %s, got %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:372
-#, c-format
-msgid "Socket error on %s command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:148
-msgid "\"RegexWhere\" specification not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:155
-msgid "\"where\" specification not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:177
-msgid ""
-"No Restore Job Resource found in bacula-dir.conf.\n"
-"You must create at least one before running this command.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:194
-msgid "Restore not done.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:205
-msgid "Unable to construct a valid BSR. Cannot continue.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:209 src/dird/ua_restore.c:221
-msgid "No files selected to be restored.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:215
-msgid ""
-"\n"
-"1 file selected to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:217
-#, c-format
-msgid ""
-"\n"
-"%s files selected to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:236
-msgid "No Client resource found!\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:333
-msgid "The restore will use the following job(s) as Base\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:354
-#, c-format
-msgid "Missing value for keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:434
-msgid "List last 20 Jobs run"
-msgstr ""
-
-#: src/dird/ua_restore.c:435
-msgid "List Jobs where a given File is saved"
-msgstr ""
-
-#: src/dird/ua_restore.c:436
-msgid "Enter list of comma separated JobIds to select"
-msgstr ""
-
-#: src/dird/ua_restore.c:437
-msgid "Enter SQL list command"
-msgstr ""
-
-#: src/dird/ua_restore.c:438
-msgid "Select the most recent backup for a client"
-msgstr ""
-
-#: src/dird/ua_restore.c:439
-msgid "Select backup for a client before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:440
-msgid "Enter a list of files to restore"
-msgstr ""
-
-#: src/dird/ua_restore.c:441
-msgid "Enter a list of files to restore before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:442
-msgid "Find the JobIds of the most recent backup for a client"
-msgstr ""
-
-#: src/dird/ua_restore.c:443
-msgid "Find the JobIds for a backup for a client before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:444
-msgid "Enter a list of directories to restore for found JobIds"
-msgstr ""
-
-#: src/dird/ua_restore.c:445
-msgid "Select full restore to a specified Job date"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_restore.c:491
-#, c-format
-msgid "Unknown keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
-#, c-format
-msgid "Improper date format: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:560
-#, c-format
-msgid "Error: Pool resource \"%s\" access not allowed.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:576
-msgid ""
-"\n"
-"First you select one or more JobIds that contain files\n"
-"to be restored. You will be presented several methods\n"
-"of specifying the JobIds. Then you will be allowed to\n"
-"select which files from those JobIds are to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:589
-msgid "To select the JobIds, you have the following choices:\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:594
-msgid "Select item: "
-msgstr ""
-
-#: src/dird/ua_restore.c:599 src/dird/ua_restore.c:634
-msgid "SQL query not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:612
-msgid "Enter Filename (no path):"
-msgstr ""
-
-#: src/dird/ua_restore.c:627 src/dird/ua_restore.c:735
-msgid "Enter JobId(s), comma separated, to restore: "
-msgstr ""
-
-#: src/dird/ua_restore.c:637
-msgid "Enter SQL list command: "
-msgstr ""
-
-#: src/dird/ua_restore.c:671 src/dird/ua_restore.c:694
-msgid ""
-"Enter file names with paths, or < to enter a filename\n"
-"containing a list of file names with paths, and terminate\n"
-"them with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:675 src/dird/ua_restore.c:698
-msgid "Enter full filename: "
-msgstr ""
-
-#: src/dird/ua_restore.c:733
-#, c-format
-msgid "You have already selected the following JobIds: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:751
-msgid ""
-"Enter full directory names or start the name\n"
-"with a < to indicate it is a filename containing a list\n"
-"of directories and terminate them with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:755
-msgid "Enter directory name: "
-msgstr ""
-
-#: src/dird/ua_restore.c:771
-msgid "Enter JobId to get the state to restore: "
-msgstr ""
-
-#: src/dird/ua_restore.c:784
-#, c-format
-msgid "Selecting jobs to build the Full state at %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:810
-msgid "Invalid JobId in list.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:829
-#, c-format
-msgid "Access to JobId=%s (Job \"%s\") not authorized. Not selected.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:842
-msgid "No Jobs selected.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:847
-#, c-format
-msgid "You have selected the following JobIds: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:849
-#, c-format
-msgid "You have selected the following JobId: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:859
-msgid ""
-"The restored files will the most current backup\n"
-"BEFORE the date you specify below.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:862
-msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
-msgstr ""
-
-#: src/dird/ua_restore.c:868
-msgid "Improper date format.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:889
-#, c-format
-msgid "Cannot open file %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:897 src/dird/ua_restore.c:901
-#, c-format
-msgid "Error occurred on line %d of file \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:945 src/dird/ua_restore.c:973
-#, c-format
-msgid "No database record found for: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:961
-msgid "No JobId specified cannot continue.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:994
-#, c-format
-msgid "No table found: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1052
-msgid ""
-"\n"
-"\n"
-"For one or more of the JobIds selected, no files were found,\n"
-"so file selection is not possible.\n"
-"Most likely your retention policy pruned the files.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1055
-msgid ""
-"\n"
-"Do you want to restore all the files? (yes|no): "
-msgstr ""
-
-#: src/dird/ua_restore.c:1058
-msgid ""
-"\n"
-"Regexp matching files to restore? (empty to abort): "
-msgstr ""
-
-#: src/dird/ua_restore.c:1074
-#, c-format
-msgid "Regex compile error: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1137
-#, c-format
-msgid ""
-"\n"
-"Building directory tree for JobId(s) %s ...  "
-msgstr ""
-
-#: src/dird/ua_restore.c:1207
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree and marked for extraction.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1210
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1285
-#, c-format
-msgid "Error getting FileSet \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1290
-#, c-format
-msgid "FileSet argument: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1302
-#, c-format
-msgid "No FileSet found for client \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1308
-#, c-format
-msgid "Error getting FileSet record: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1309
-msgid ""
-"This probably means you modified the FileSet.\n"
-"Continuing anyway.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1324
-#, c-format
-msgid "Pool \"%s\" not found, using any pool.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1351 src/dird/ua_restore.c:1367
-#, c-format
-msgid "No Full backup before %s found.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1396
-msgid "No jobs found.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1517
-#, c-format
-msgid "Warning default storage overridden by \"%s\" on command line.\n"
-msgstr ""
-
-#: 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:1546
-#, c-format
-msgid ""
-"\n"
-"Unable to find Storage resource for\n"
-"MediaType \"%s\", needed by the Jobs you selected.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:95
-msgid "Client: "
-msgstr ""
-
-#: src/dird/fd_cmds.c:137
-#, c-format
-msgid "File daemon \"%s\" rejected Job command: %s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:150
-#, c-format
-msgid "Error updating Client record. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:155
-#, c-format
-msgid "FD gave bad response to JobId command: %s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:184 src/dird/fd_cmds.c:272
-msgid ", since="
-msgstr ""
-
-#: src/dird/fd_cmds.c:249
-msgid "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:250 src/dird/fd_cmds.c:256 src/dird/fd_cmds.c:265
-#, c-format
-msgid " (upgraded from %s)"
-msgstr ""
-
-#: src/dird/fd_cmds.c:255
-msgid ""
-"No prior or suitable Differential backup found in catalog. Doing "
-"Differential backup.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:263
-#, c-format
-msgid "Prior failed job found in catalog. Upgrading to %s.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:328
-#, c-format
-msgid "Unimplemented backup level %d %c\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:401
-msgid ""
-"FD compression disabled for this Job because AllowCompress=No in Storage "
-"resource.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:500 src/filed/job.c:854
-#, c-format
-msgid "Cannot run program: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:511 src/dird/fd_cmds.c:536 src/dird/fd_cmds.c:550
-msgid ">filed: write error on socket\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:517
-#, c-format
-msgid "Error running program: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:526
-#, c-format
-msgid "Cannot open included file: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:672
-#, c-format
-msgid "Client \"%s\" RunScript failed.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:695
-#, c-format
-msgid ""
-"Client \"%s\" may not be used to restore this job. Please upgrade your "
-"client.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:770
-msgid "RestoreObject failed.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:806
-#, c-format
-msgid ""
-"<filed: bad attributes, expected 3 fields got %d\n"
-"msglen=%d msg=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/fd_cmds.c:862
-#, c-format
-msgid "%s index %d not same as attributes %d\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:876
-#, c-format
-msgid "<filed: Network error getting attributes. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_label.c:104
-msgid "Negative numbers not permitted\n"
-msgstr ""
-
-#: 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/lib/sellist.c:81
-msgid "Range start is not an integer.\n"
-msgstr ""
-
-#: 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/lib/sellist.c:94
-msgid "Input value is not an integer.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:133
-msgid "Values must be be greater than zero.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:137
-msgid "Slot too large.\n"
-msgstr ""
-
-#: 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: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:219 src/dird/ua_label.c:542
-msgid "No Volumes found to label, or no barcodes.\n"
-msgstr ""
-
-#: 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:267
-#, c-format
-msgid "No VolName for Slot=%d InChanger set to zero.\n"
-msgstr ""
-
-#: 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:292
-#, c-format
-msgid "Catalog record for Volume \"%s\" is up to date.\n"
-msgstr ""
-
-#: 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:394
-#, c-format
-msgid ""
-"Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
-"relabeling.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:410
-msgid "Enter new Volume name: "
-msgstr ""
-
-#: src/dird/ua_label.c:425
-#, c-format
-msgid "Media record for new Volume \"%s\" already exists.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:443
-msgid "Enter slot (0 or Enter for none): "
-msgstr ""
-
-#: src/dird/ua_label.c:471
-#, c-format
-msgid "Delete of Volume \"%s\" failed. ERR=%s"
-msgstr ""
-
-#: src/dird/ua_label.c:474
-#, c-format
-msgid "Old volume \"%s\" deleted from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:485
-#, c-format
-msgid "Requesting to mount %s ...\n"
-msgstr ""
-
-#: src/dird/ua_label.c:507
-msgid "Do not forget to mount the drive!!!\n"
-msgstr ""
-
-#: src/dird/ua_label.c:547
-msgid ""
-"The following Volumes will be labeled:\n"
-"Slot  Volume\n"
-"==============\n"
-msgstr ""
-
-#: src/dird/ua_label.c:556
-msgid "Do you want to label these Volumes? (yes|no): "
-msgstr ""
-
-#: 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:582
-#, c-format
-msgid "Error setting InChanger: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_label.c:605
-#, c-format
-msgid "Maximum pool Volumes=%d reached.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:613
-#, c-format
-msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:620
-#, c-format
-msgid "Catalog error on cleaning tape: %s"
-msgstr ""
-
-#: src/dird/ua_label.c:656
-#, c-format
-msgid "Illegal character \"%c\" in a volume name.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:703
-#, c-format
-msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
-msgstr ""
-
-#: src/dird/ua_label.c:710
-#, c-format
-msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
-msgstr ""
-
-#: 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:764
-#, c-format
-msgid "Label command failed for Volume %s.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:802
-msgid "Could not open SD socket.\n"
-msgstr ""
-
-#: 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:893
-#, c-format
-msgid "Invalid Volume name: %s\n"
-msgstr ""
-
-#: src/dird/ua_label.c:987
-#, c-format
-msgid "Device \"%s\" has %d slots.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1033
-#, c-format
-msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1247
-msgid "No Volumes found, or no barcodes.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1250
-msgid ""
-" Slot |   Volume Name    |   Status  |     Media Type       |      "
-"Pool          |\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1251
-msgid ""
-"------+------------------+-----------+----------------------"
-"+--------------------|\n"
-msgstr ""
-
-#: src/dird/scheduler.c:112
-#, c-format
-msgid "Job %s not found\n"
-msgstr ""
-
-#: src/dird/scheduler.c:136
-msgid "Walk queue"
-msgstr ""
-
-#: src/dird/scheduler.c:146
-msgid "Dequeued job"
-msgstr ""
-
-#: src/dird/scheduler.c:149
-msgid "Scheduler logic error\n"
-msgstr ""
-
-#: src/dird/scheduler.c:190
-msgid "Run job"
-msgstr ""
-
-#: src/dird/scheduler.c:223
-msgid "run override"
-msgstr ""
-
-#: src/dird/scheduler.c:413
-msgid "Inserted job"
-msgstr ""
-
-#: src/dird/scheduler.c:421
-msgid "Appended job"
-msgstr ""
-
-#: src/dird/scheduler.c:425
-msgid "Run queue"
-msgstr ""
-
-#: src/dird/run_conf.c:208
-#, c-format
-msgid "Expected an equals, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:221 src/dird/run_conf.c:233 src/dird/run_conf.c:327
-#, c-format
-msgid "Expect a YES or NO, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:247
-#, c-format
-msgid "Job level field: %s not found in run record"
-msgstr ""
-
-#: src/dird/run_conf.c:265
-#, c-format
-msgid "Could not find specified Pool Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:290
-#, c-format
-msgid "Could not find specified Storage Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:302
-#, c-format
-msgid "Could not find specified Messages Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:312 src/lib/parse_conf.c:736 src/lib/parse_conf.c:742
-#, c-format
-msgid "expected a time period, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:331
-#, c-format
-msgid "Expected a keyword name, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:370
-msgid "Day number out of range (1-31)"
-msgstr ""
-
-#: src/dird/run_conf.c:387 src/dird/run_conf.c:542
-msgid "Week number out of range (0-53)"
-msgstr ""
-
-#: src/dird/run_conf.c:403
-#, c-format
-msgid "Job type field: %s in run record not found"
-msgstr ""
-
-#: src/dird/run_conf.c:410
-#, c-format
-msgid "Unexpected token: %d:%s"
-msgstr ""
-
-#: src/dird/run_conf.c:454
-msgid "Time must be preceded by keyword AT."
-msgstr ""
-
-#: src/dird/run_conf.c:463
-msgid "Time logic error.\n"
-msgstr ""
-
-#: src/dird/run_conf.c:478 src/dird/run_conf.c:497
-msgid "Bad time specification."
-msgstr ""
-
-#: src/dird/run_conf.c:511
-msgid "Range logic error.\n"
-msgstr ""
-
-#: src/dird/run_conf.c:520
-msgid "Bad day range specification."
-msgstr ""
-
-#: src/dird/run_conf.c:567
-msgid "Invalid month, week or position day range"
-msgstr ""
-
-#: src/dird/run_conf.c:582
-msgid "Invalid month, weekday or position range"
-msgstr ""
-
-#: src/dird/run_conf.c:641
-msgid "Unexpected run state\n"
-msgstr ""
-
-#: src/dird/ua_update.c:97
-msgid "Update choice:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:98
-msgid "Volume parameters"
-msgstr ""
-
-#: src/dird/ua_update.c:99
-msgid "Pool from resource"
-msgstr ""
-
-#: src/dird/ua_update.c:100
-msgid "Slots from autochanger"
-msgstr ""
-
-#: src/dird/ua_update.c:101
-msgid "Long term statistics"
-msgstr ""
-
-#: src/dird/ua_update.c:102
-msgid "item"
-msgstr ""
-
-#: src/dird/ua_update.c:102
-msgid "Choose catalog item to update"
-msgstr ""
-
-#: src/dird/ua_update.c:145
-#, c-format
-msgid "Invalid VolStatus specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:154
-#, c-format
-msgid "New Volume status is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:164
-#, c-format
-msgid "Invalid retention period specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:172
-#, c-format
-msgid "New retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:183
-#, c-format
-msgid "Invalid use duration specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:191
-#, c-format
-msgid "New use duration is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:205
-#, c-format
-msgid "New max jobs is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:218
-#, c-format
-msgid "New max files is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:229
-#, c-format
-msgid "Invalid max. bytes specification: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:237
-#, c-format
-msgid "New Max bytes is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:248 src/dird/ua_update.c:268
-msgid "Invalid value. It must be yes or no.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:256
-#, c-format
-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: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: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 ""
-
-#: src/dird/ua_update.c:276
-#, c-format
-msgid "New InChanger flag is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:294
-#, c-format
-msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
-msgstr ""
-
-#: 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:306
-#, c-format
-msgid "New Slot is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:331
-#, c-format
-msgid "New Pool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:374
-#, c-format
-msgid "New RecyclePool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:394
-#, c-format
-msgid "Error updating Volume record: ERR=%s"
-msgstr ""
-
-#: 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:451
-#, c-format
-msgid "Error updating Volume records: ERR=%s"
-msgstr ""
-
-#: 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:443
-#, c-format
-msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:469
-#, c-format
-msgid "Error updating media record Enabled: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_update.c:472
-#, c-format
-msgid "New Enabled is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:487
-#, c-format
-msgid "Error updating media record ActionOnPurge: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_update.c:490
-#, c-format
-msgid "New ActionOnPurge is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
-msgid "Parameters to modify:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:606
-msgid "Volume Status"
-msgstr ""
-
-#: src/dird/ua_update.c:607
-msgid "Volume Retention Period"
-msgstr ""
-
-#: src/dird/ua_update.c:608
-msgid "Volume Use Duration"
-msgstr ""
-
-#: src/dird/ua_update.c:609
-msgid "Maximum Volume Jobs"
-msgstr ""
-
-#: src/dird/ua_update.c:610
-msgid "Maximum Volume Files"
-msgstr ""
-
-#: src/dird/ua_update.c:611
-msgid "Maximum Volume Bytes"
-msgstr ""
-
-#: src/dird/ua_update.c:612
-msgid "Recycle Flag"
-msgstr ""
-
-#: src/dird/ua_update.c:613
-msgid "Slot"
-msgstr ""
-
-#: src/dird/ua_update.c:614
-msgid "InChanger Flag"
-msgstr ""
-
-#: src/dird/ua_update.c:615
-msgid "Volume Files"
-msgstr ""
-
-#: src/dird/ua_update.c:617
-msgid "Volume from Pool"
-msgstr ""
-
-#: src/dird/ua_update.c:618
-msgid "All Volumes from Pool"
-msgstr ""
-
-#: src/dird/ua_update.c:619
-msgid "All Volumes from all Pools"
-msgstr ""
-
-#: src/dird/ua_update.c:620
-msgid "Enabled"
-msgstr ""
-
-#: src/dird/ua_update.c:621
-msgid "RecyclePool"
-msgstr ""
-
-#: src/dird/ua_update.c:622
-msgid "Action On Purge"
-msgstr ""
-
-#: src/dird/ua_update.c:623
-msgid "Done"
-msgstr ""
-
-#: 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:632
-#, c-format
-msgid "Updating Volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_update.c:637
-#, c-format
-msgid "Current Volume status is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:638
-msgid "Possible Values are:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:649
-msgid "Choose new Volume Status"
-msgstr ""
-
-#: src/dird/ua_update.c:655
-#, c-format
-msgid "Current retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:657
-msgid "Enter Volume Retention period: "
-msgstr ""
-
-#: src/dird/ua_update.c:664
-#, c-format
-msgid "Current use duration is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:666
-msgid "Enter Volume Use Duration: "
-msgstr ""
-
-#: src/dird/ua_update.c:673
-#, c-format
-msgid "Current max jobs is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:674
-msgid "Enter new Maximum Jobs: "
-msgstr ""
-
-#: src/dird/ua_update.c:681
-#, c-format
-msgid "Current max files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:682
-msgid "Enter new Maximum Files: "
-msgstr ""
-
-#: src/dird/ua_update.c:689
-#, c-format
-msgid "Current value is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:690
-msgid "Enter new Maximum Bytes: "
-msgstr ""
-
-#: src/dird/ua_update.c:698
-#, c-format
-msgid "Current recycle flag is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:700
-msgid "Enter new Recycle status: "
-msgstr ""
-
-#: src/dird/ua_update.c:707
-#, c-format
-msgid "Current Slot is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:708
-msgid "Enter new Slot: "
-msgstr ""
-
-#: src/dird/ua_update.c:715
-#, c-format
-msgid "Current InChanger flag is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:716
-#, c-format
-msgid "Set InChanger flag for Volume \"%s\": yes/no: "
-msgstr ""
-
-#: src/dird/ua_update.c:730
-#, c-format
-msgid "New InChanger flag is: %d\n"
-msgstr ""
-
-#: 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:739
-#, c-format
-msgid "Current Volume Files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:740
-msgid "Enter new number of Files for Volume: "
-msgstr ""
-
-#: src/dird/ua_update.c:745
-msgid "Normally, you should only increase Volume Files by one!\n"
-msgstr ""
-
-#: src/dird/ua_update.c:746
-msgid "Increase Volume Files? (yes/no): "
-msgstr ""
-
-#: src/dird/ua_update.c:756
-#, c-format
-msgid "New Volume Files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:768
-#, c-format
-msgid "Current Pool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:769
-msgid "Enter new Pool name: "
-msgstr ""
-
-#: src/dird/ua_update.c:790
-#, c-format
-msgid "Current Enabled is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:791
-msgid "Enter new Enabled: "
-msgstr ""
-
-#: src/dird/ua_update.c:810
-#, c-format
-msgid "Current RecyclePool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:812
-msgid "No current RecyclePool\n"
-msgstr ""
-
-#: src/dird/ua_update.c:822
-#, c-format
-msgid "Current ActionOnPurge is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:824
-msgid "Enter new ActionOnPurge (one of: Truncate, None): "
-msgstr ""
-
-#: src/dird/ua_update.c:832
-msgid "Selection terminated.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:852
-#, c-format
-msgid "Updating %i job(s).\n"
-msgstr ""
-
-#: src/dird/ua_update.c:884
-#, c-format
-msgid "db_update_pool_record returned %d. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:891
-msgid "Pool DB record updated from resource.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:918
-msgid "Expect JobId keyword, not found.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:943
-msgid "Neither Client nor StartTime specified.\n"
-msgstr ""
-
-#: src/dird/migrate.c:149 src/dird/migrate.c:163
-#, c-format
-msgid "No previous Job found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:155
-msgid "Create bootstrap file failed.\n"
-msgstr ""
-
-#: src/dird/migrate.c:165
-#, c-format
-msgid "Previous Job has no data to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:182
-#, c-format
-msgid "Job resource not found for \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:186
-#, c-format
-msgid "Previous Job resource not found for \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:203
-msgid "setup job failed.\n"
-msgstr ""
-
-#: src/dird/migrate.c:258
-#, c-format
-msgid "Pool for JobId %s not in database. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:266
-#, c-format
-msgid "Pool resource \"%s\" not found.\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/migrate.c:327
-#, c-format
-msgid "JobId %s already %s probably by another Job. %s stopped.\n"
-msgstr ""
-
-#: src/dird/migrate.c:337
-#, c-format
-msgid "Start %s JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:712
-#, c-format
-msgid "No %s SQL selection pattern specified.\n"
-msgstr ""
-
-#: 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: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:777 src/dird/migrate.c:866 src/dird/migrate.c:886
-msgid "Invalid JobId found.\n"
-msgstr ""
-
-#: src/dird/migrate.c:837
-#, c-format
-msgid "Unknown %s Selection Type.\n"
-msgstr ""
-
-#: 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:852
-#, c-format
-msgid "The following %u JobId%s chosen to be %s: %s\n"
-msgstr ""
-
-#: src/dird/migrate.c:853
-msgid " was"
-msgstr ""
-
-#: src/dird/migrate.c:853
-msgid "s were"
-msgstr ""
-
-#: src/dird/migrate.c:905
-#, c-format
-msgid "%s using JobId=%s Job=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:939
-msgid "Could not start migration job.\n"
-msgstr ""
-
-#: src/dird/migrate.c:941
-#, c-format
-msgid "%s JobId %d started.\n"
-msgstr ""
-
-#: src/dird/migrate.c:960
-#, c-format
-msgid "No %s found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:964
-#, c-format
-msgid "SQL error. Expected 1 MediaId got %d\n"
-msgstr ""
-
-#: src/dird/migrate.c:993 src/dird/migrate.c:1123
-#, c-format
-msgid "No %ss found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1015
-msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
-msgstr ""
-
-#: src/dird/migrate.c:1024
-#, c-format
-msgid "SQL to get uncopied jobs failed. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1047
-#, c-format
-msgid "No %s %s selection pattern specified.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1058
-#, c-format
-msgid "SQL to get %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1063
-#, c-format
-msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1101
-#, c-format
-msgid "Regex pattern matched no Jobs to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1265
-#, c-format
-msgid "%s OK -- with warnings"
-msgstr ""
-
-#: src/dird/migrate.c:1267
-#, c-format
-msgid "%s OK"
-msgstr ""
-
-#: src/dird/migrate.c:1272
-#, c-format
-msgid "*** %s Error ***"
-msgstr ""
-
-#: src/dird/migrate.c:1282
-#, c-format
-msgid "%s Canceled"
-msgstr ""
-
-#: src/dird/migrate.c:1291
-#, c-format
-msgid "Inappropriate %s term code"
-msgstr ""
-
-#: src/dird/migrate.c:1301
-#, c-format
-msgid "%s -- no files to %s"
-msgstr ""
-
-#: src/dird/migrate.c:1316
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  Prev Backup JobId:      %s\n"
-"  Prev Backup Job:        %s\n"
-"  New Backup JobId:       %s\n"
-"  Current JobId:          %s\n"
-"  Current Job:            %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Read Pool:              \"%s\" (From %s)\n"
-"  Read Storage:           \"%s\" (From %s)\n"
-"  Write Pool:             \"%s\" (From %s)\n"
-"  Write Storage:          \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/migrate.c:1427
-#, c-format
-msgid "No Next Pool specification found in Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:1433
-#, c-format
-msgid "No Storage specification found in Next Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:1439
-msgid "Storage from Pool's NextPool resource"
-msgstr ""
-
-#: src/dird/ua_prune.c:127
-msgid "Choose item to prune"
-msgstr ""
-
-#: src/dird/ua_prune.c:175
-#, c-format
-msgid "Cannot prune Volume \"%s\" because it is archived.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:217
-msgid "Pruned Jobs from JobHisto catalog.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:305
-msgid "Begin pruning Files.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:320
-msgid "No Files found to prune.\n"
-msgstr ""
-
-#: 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:489
-#, c-format
-msgid "Begin pruning Jobs older than %s.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:600
-#, c-format
-msgid "Pruned %d %s for client %s from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:601
-msgid "Jobs"
-msgstr ""
-
-#: src/dird/ua_prune.c:603
-msgid "No Jobs found to prune.\n"
-msgstr ""
-
-#: src/dird/autoprune.c:75
-msgid ""
-"End auto prune.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_run.c:154
-msgid "OK to run? (yes/mod/no): "
-msgstr ""
-
-#: src/dird/ua_run.c:193
-msgid "Job failed.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:196
-#, c-format
-msgid "Job queued. JobId=%s\n"
-msgstr ""
-
-#: 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:223
-msgid "Level"
-msgstr ""
-
-#: src/dird/ua_run.c:228
-msgid "Restore Client"
-msgstr ""
-
-#: 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: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:240
-msgid "Verify Job"
-msgstr ""
-
-#: 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: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:245
-msgid "File Relocation"
-msgstr ""
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:1907
-#: src/wx-console/wxbrestorepanel.cpp:1908
-#: src/wx-console/wxbrestorepanel.cpp:1909
-msgid "Replace"
-msgstr ""
-
-#: src/dird/ua_run.c:247
-msgid "JobId"
-msgstr ""
-
-#: src/dird/ua_run.c:250
-msgid "Plugin Options"
-msgstr ""
-
-#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
-msgid "user selection"
-msgstr ""
-
-#: 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:301 src/dird/ua_run.c:477
-msgid "Invalid time, using current time.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:308
-msgid "Enter new Priority: "
-msgstr ""
-
-#: src/dird/ua_run.c:312
-msgid "Priority must be a positive integer.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:333
-msgid "Please enter the Bootstrap file name: "
-msgstr ""
-
-#: src/dird/ua_run.c:345
-#, c-format
-msgid "Warning cannot open %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:364
-msgid "Please enter the full path prefix for restore (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:386
-msgid "Replace:\n"
-msgstr ""
-
-#: src/dird/ua_run.c:390
-msgid "Select replace option"
-msgstr ""
-
-#: 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:406
-msgid "Please Plugin Options string: "
-msgstr ""
-
-#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
-msgid "User input"
-msgstr ""
-
-#: src/dird/ua_run.c:507
-#, c-format
-msgid "Invalid replace option: %s\n"
-msgstr ""
-
-#: 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:592
-msgid "This will replace your current Where value\n"
-msgstr ""
-
-#: src/dird/ua_run.c:593
-msgid "Strip prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:594
-msgid "Add prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:595
-msgid "Add file suffix"
-msgstr ""
-
-#: src/dird/ua_run.c:596
-msgid "Enter a regexp"
-msgstr ""
-
-#: src/dird/ua_run.c:597
-msgid "Test filename manipulation"
-msgstr ""
-
-#: src/dird/ua_run.c:598
-msgid "Use this ?"
-msgstr ""
-
-#: src/dird/ua_run.c:603
-msgid "Please enter the path prefix to strip: "
-msgstr ""
-
-#: src/dird/ua_run.c:611
-msgid "Please enter the path prefix to add (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:622
-msgid "Please enter the file suffix to add: "
-msgstr ""
-
-#: src/dird/ua_run.c:629
-msgid "Please enter a valid regexp (!from!to!): "
-msgstr ""
-
-#: src/dird/ua_run.c:642
-#, c-format
-msgid "regexwhere=%s\n"
-msgstr ""
-
-#: 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:655
-msgid "Cannot use your regexp\n"
-msgstr ""
-
-#: src/dird/ua_run.c:658
-msgid "Enter a period (.) to stop this test\n"
-msgstr ""
-
-#: src/dird/ua_run.c:659
-msgid "Please enter filename to test: "
-msgstr ""
-
-#: src/dird/ua_run.c:661
-#, c-format
-msgid "%s -> %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:705
-msgid "Cannot use your regexp.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
-msgid "Levels:\n"
-msgstr ""
-
-#: 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:721 src/stored/status.c:668 src/lib/util.c:429
-#: src/filed/status.c:522
-msgid "Incremental"
-msgstr ""
-
-#: 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:723 src/stored/status.c:674 src/lib/util.c:435
-#: src/filed/status.c:528
-msgid "Since"
-msgstr ""
-
-#: src/dird/ua_run.c:724
-msgid "VirtualFull"
-msgstr ""
-
-#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
-msgid "Select level"
-msgstr ""
-
-#: src/dird/ua_run.c:749
-msgid "Initialize Catalog"
-msgstr ""
-
-#: 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:751 src/lib/util.c:444
-msgid "Verify Volume to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:752 src/lib/util.c:447
-msgid "Verify Disk to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:753
-msgid "Verify Volume Data (not yet implemented)"
-msgstr ""
-
-#: src/dird/ua_run.c:774
-msgid "Level not appropriate for this Job. Cannot be changed.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:805
-#, c-format
-msgid ""
-"Run Admin Job\n"
-"JobName:  %s\n"
-"FileSet:  %s\n"
-"Client:   %s\n"
-"Storage:  %s\n"
-"When:     %s\n"
-"Priority: %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:849
-#, c-format
-msgid ""
-"Run Backup job\n"
-"JobName:  %s\n"
-"Level:    %s\n"
-"Client:   %s\n"
-"FileSet:  %s\n"
-"Pool:     %s (From %s)\n"
-"Storage:  %s (From %s)\n"
-"When:     %s\n"
-"Priority: %d\n"
-"%s%s%s"
-msgstr ""
-
-#: 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:919
-#, c-format
-msgid ""
-"Run Verify Job\n"
-"JobName:     %s\n"
-"Level:       %s\n"
-"Client:      %s\n"
-"FileSet:     %s\n"
-"Pool:        %s (From %s)\n"
-"Storage:     %s (From %s)\n"
-"Verify Job:  %s\n"
-"Verify List: %s\n"
-"When:        %s\n"
-"Priority:    %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:948
-msgid "Please enter a JobId for restore: "
-msgstr ""
-
-#: src/dird/ua_run.c:988
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"RegexWhere:      %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1044
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"Where:           %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1075
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:    %s\n"
-"Bootstrap:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1083
-#, c-format
-msgid "RegexWhere: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1086
-#, c-format
-msgid "Where:      %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1090
-#, c-format
-msgid ""
-"Replace:         %s\n"
-"Client:          %s\n"
-"Storage:         %s\n"
-"JobId:           %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1145
-msgid "Run Copy job\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1147
-msgid "Run Migration job\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1176
-#, c-format
-msgid "Unknown Job Type=%d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1245
-#, c-format
-msgid "Value missing for keyword %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1252
-msgid "Job name specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1260
-msgid "JobId specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
-msgid "Client specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1277
-msgid "FileSet specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1285
-msgid "Level specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1294
-msgid "Storage specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1302
-msgid "RegexWhere or Where specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1307
-msgid "No authorization for \"regexwhere\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1314
-msgid "Where or RegexWhere specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1319
-msgid "No authoriztion for \"where\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1326
-msgid "Bootstrap specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1334
-msgid "Replace specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1342
-msgid "When specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1350
-msgid "Priority specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1355
-msgid "Priority must be positive nonzero setting it to 10.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1365
-msgid "Verify Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1393
-msgid "Migration Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1401
-msgid "Pool specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1417
-msgid "Restore Client specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1424
-msgid "Plugin Options not yet implemented.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1427
-msgid "Plugin Options specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1432
-msgid "No authoriztion for \"PluginOptions\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1439
-msgid "Spool flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1446
-msgid "Invalid spooldata flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1455
-msgid "IgnoreDuplicateCheck flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1462
-msgid "Invalid ignoreduplicatecheck flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1467
-msgid "Accurate flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1474
-msgid "Invalid accurate flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1495
-#, c-format
-msgid "Invalid keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1510
-#, c-format
-msgid "Catalog \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1514
-#, c-format
-msgid "No authorization. Catalog \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1525
-#, c-format
-msgid "Job \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1532
-msgid "A job name must be specified.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1538
-#, c-format
-msgid "No authorization. Job \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1546
-#, c-format
-msgid "Pool \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1556
-#, c-format
-msgid "No authorization. Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1566
-#, c-format
-msgid "Storage \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1575 src/dird/job.c:1245
-msgid "No storage specified.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1578
-#, c-format
-msgid "No authorization. Storage \"%s\".\n"
-msgstr ""
-
-#: 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:1608
-#, c-format
-msgid "Restore Client \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1627
-#, c-format
-msgid "FileSet \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1636
-#, c-format
-msgid "No authorization. FileSet \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1644
-#, c-format
-msgid "Verify Job \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1654
-#, c-format
-msgid "Migration Job \"%s\" not found.\n"
-msgstr ""
-
-#: 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: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: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: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: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 ""
-
-#: src/dird/backup.c:96
-msgid "No Storage specification found in Job or Pool.\n"
-msgstr ""
-
-#: src/dird/backup.c:256
-#, c-format
-msgid "Using BaseJobId(s): %s\n"
-msgstr ""
-
-#: src/dird/backup.c:266
-msgid "Cannot find previous jobids.\n"
-msgstr ""
-
-#: src/dird/backup.c:275
-msgid "Sending Accurate information.\n"
-msgstr ""
-
-#: src/dird/backup.c:328
-#, c-format
-msgid "Start Backup JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/backup.c:521
-#, c-format
-msgid "Unexpected Client Job message: %s\n"
-msgstr ""
-
-#: src/dird/backup.c:534
-#, c-format
-msgid "Network error with FD during %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/backup.c:569
-msgid "No Job status returned from FD.\n"
-msgstr ""
-
-#: src/dird/backup.c:657
-msgid "Backup failed -- incomplete"
-msgstr ""
-
-#: src/dird/backup.c:730
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  FD Files Written:       %s\n"
-"  SD Files Written:       %s\n"
-"  FD Bytes Written:       %s (%sB)\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Software Compression:   %s\n"
-"%s  VSS:                    %s\n"
-"  Encryption:             %s\n"
-"  Accurate:               %s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  Non-fatal FD errors:    %d\n"
-"  SD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: 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:868
-#, c-format
-msgid ""
-"Could not open WriteBootstrap file:\n"
-"%s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/restore.c:137 src/dird/msgchan.c:476
-#, c-format
-msgid "Could not open bootstrap file %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/restore.c:185 src/dird/restore.c:276
-#, c-format
-msgid "Could not get storage resource '%s'.\n"
-msgstr ""
-
-#: src/dird/restore.c:314
-#, c-format
-msgid "Could not acquire read storage lock for \"%s\""
-msgstr ""
-
-#: 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:513
-#, c-format
-msgid "Start Restore Job %s\n"
-msgstr ""
-
-#: src/dird/restore.c:564
-msgid "Restore OK -- warning file count mismatch"
-msgstr ""
-
-#: src/dird/restore.c:566
-msgid "Restore OK"
-msgstr ""
-
-#: src/dird/restore.c:570
-msgid "Restore OK -- with warnings"
-msgstr ""
-
-#: src/dird/restore.c:574
-msgid "*** Restore Error ***"
-msgstr ""
-
-#: src/dird/restore.c:584
-msgid "Restore Canceled"
-msgstr ""
-
-#: src/dird/restore.c:611
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Restore Client:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Restored:         %s\n"
-"  Bytes Restored:         %s\n"
-"  Rate:                   %.1f KB/s\n"
-"  FD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_status.c:174
-msgid "Status available for:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:180
-msgid "Select daemon type for status"
-msgstr ""
-
-#: src/dird/ua_status.c:294 src/stored/status.c:248
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:297
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_status.c:358
-#, c-format
-msgid ""
-"\n"
-"Failed to connect to Storage daemon %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:400
-#, c-format
-msgid ""
-"Failed to connect to Client %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:408
-msgid "Connected to file daemon\n"
-msgstr ""
-
-#: src/dird/ua_status.c:428
-msgid ""
-"\n"
-"Scheduled Jobs:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:429
-msgid ""
-"Level          Type     Pri  Scheduled          Name               Volume\n"
-msgstr ""
-
-#: src/dird/ua_status.c:430
-msgid "===================================================================================\n"
-msgstr ""
-
-#: 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:490
-#, c-format
-msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:544
-msgid "Ignoring invalid value for days. Max is 500.\n"
-msgstr ""
-
-#: src/dird/ua_status.c:587
-msgid "No Scheduled Jobs.\n"
-msgstr ""
-
-#: 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:612
-#, c-format
-msgid "Console connected at %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:622
-msgid ""
-"No Jobs running.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:628
-msgid " JobId Level   Name                       Status\n"
-msgstr ""
-
-#: src/dird/ua_status.c:629 src/filed/status.c:342
-msgid "======================================================================\n"
-msgstr ""
-
-#: src/dird/ua_status.c:638
-msgid "is waiting execution"
-msgstr ""
-
-#: src/dird/ua_status.c:641
-msgid "is running"
-msgstr ""
-
-#: src/dird/ua_status.c:644
-msgid "is blocked"
-msgstr ""
-
-#: src/dird/ua_status.c:647
-msgid "has terminated"
-msgstr ""
-
-#: src/dird/ua_status.c:650
-msgid "has terminated with warnings"
-msgstr ""
-
-#: src/dird/ua_status.c:653
-msgid "has erred"
-msgstr ""
-
-#: src/dird/ua_status.c:656
-msgid "has errors"
-msgstr ""
-
-#: src/dird/ua_status.c:659
-msgid "has a fatal error"
-msgstr ""
-
-#: src/dird/ua_status.c:662
-msgid "has verify differences"
-msgstr ""
-
-#: src/dird/ua_status.c:665
-msgid "has been canceled"
-msgstr ""
-
-#: src/dird/ua_status.c:670
-msgid "is waiting on Client"
-msgstr ""
-
-#: src/dird/ua_status.c:672
-#, c-format
-msgid "is waiting on Client %s"
-msgstr ""
-
-#: 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:684
-msgid "is waiting on Storage"
-msgstr ""
-
-#: src/dird/ua_status.c:690
-msgid "is waiting on max Storage jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:693
-msgid "is waiting on max Client jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:696
-msgid "is waiting on max Job jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:699
-msgid "is waiting on max total jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:702
-msgid "is waiting for its start time"
-msgstr ""
-
-#: src/dird/ua_status.c:705
-msgid "is waiting for higher priority jobs to finish"
-msgstr ""
-
-#: 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:711 src/dird/ua_status.c:762 src/lib/util.c:244
-msgid "SD despooling Data"
-msgstr ""
-
-#: 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:717 src/dird/ua_status.c:768 src/lib/util.c:250
-msgid "Dir inserting Attributes"
-msgstr ""
-
-#: src/dird/ua_status.c:722
-#, c-format
-msgid "is in unknown state %c"
-msgstr ""
-
-#: src/dird/ua_status.c:736
-msgid "is waiting for a mount request"
-msgstr ""
-
-#: src/dird/ua_status.c:743
-msgid "is waiting for an appendable Volume"
-msgstr ""
-
-#: src/dird/ua_status.c:751
-msgid "is waiting for Client to connect to Storage daemon"
-msgstr ""
-
-#: 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:784
-#, c-format
-msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:788
-#, c-format
-msgid "%6d %-6s  %-20s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:792
-#, c-format
-msgid "               %-30s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:812
-msgid "No Terminated Jobs.\n"
-msgstr ""
-
-#: 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: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:820
-msgid "====================================================================\n"
-msgstr ""
-
-#: 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: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:859 src/stored/status.c:608 src/filed/status.c:370
-msgid "Diffs"
-msgstr ""
-
-#: 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: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:871 src/stored/status.c:620 src/filed/status.c:379
-msgid "Other"
-msgstr ""
-
-#: 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: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:892
-msgid "\n"
-msgstr ""
-
-#: src/dird/ua_input.c:103
-msgid "Enter slot"
-msgstr ""
-
-#: src/dird/ua_input.c:107 src/dird/ua_input.c:113
-#, c-format
-msgid "Expected a positive integer, got: %s\n"
-msgstr ""
-
-#: src/dird/ua_input.c:170
-msgid "Invalid response. You must answer yes or no.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:193
-msgid "Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"
-msgstr ""
-
-#: src/dird/ua_input.c:220
-#, c-format
-msgid "Illegal character \"%c\" in a comment.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:227
-msgid "Comment too long.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:233
-msgid "Comment must be at least one character long.\n"
-msgstr ""
-
-#: src/dird/pythondir.c:121 src/stored/pythonsd.c:101
-#: src/stored/pythonsd.c:166 src/filed/pythonfd.c:94 src/filed/pythonfd.c:148
-#: src/filed/pythonfd.c:212
-msgid "Job pointer not found."
-msgstr ""
-
-#: src/dird/pythondir.c:153
-msgid "Pool record not found."
-msgstr ""
-
-#: src/dird/pythondir.c:209 src/stored/pythonsd.c:143 src/filed/pythonfd.c:125
-#, c-format
-msgid "Attribute %s not found."
-msgstr ""
-
-#: src/dird/pythondir.c:252 src/dird/pythondir.c:258 src/stored/pythonsd.c:183
-#: src/filed/pythonfd.c:167
-msgid "Read-only attribute"
-msgstr ""
-
-#: src/dird/pythondir.c:284
-msgid "Priority must be 1-100"
-msgstr ""
-
-#: src/dird/pythondir.c:289
-msgid "Job Level can be set only during JobInit"
-msgstr ""
-
-#: src/dird/pythondir.c:303
-msgid "Bad JobLevel string"
-msgstr ""
-
-#: src/dird/job.c:62
-#, c-format
-msgid "Could not init job queue: ERR=%s\n"
-msgstr ""
-
-#: src/dird/job.c:94
-#, c-format
-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:1129 src/dird/job.c:1170
-#: src/dird/job.c:1179
-msgid "Job resource"
-msgstr ""
-
-#: src/dird/job.c:230 src/dird/job.c:349
-#, c-format
-msgid "Unimplemented job type: %d\n"
-msgstr ""
-
-#: src/dird/job.c:272
-msgid "Job canceled because max start delay time exceeded.\n"
-msgstr ""
-
-#: src/dird/job.c:277
-msgid "Job canceled because max run sched time exceeded.\n"
-msgstr ""
-
-#: src/dird/job.c:403
-#, c-format
-msgid "JobId %s, Job %s marked to be canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:413
-msgid "Failed to connect to File daemon.\n"
-msgstr ""
-
-#: src/dird/job.c:548
-msgid "Max wait time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:553
-msgid "Max run time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:558
-msgid "Max run sched time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:680
-#, c-format
-msgid "Pool \"%s\" not in database. ERR=%s"
-msgstr ""
-
-#: src/dird/job.c:684
-#, c-format
-msgid "Created database record for Pool \"%s\".\n"
-msgstr ""
-
-#: 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:797
-#, c-format
-msgid "Cancelling duplicate JobId=%d.\n"
-msgstr ""
-
-#: src/dird/job.c:828 src/dird/job.c:1116
-msgid "Run pool override"
-msgstr ""
-
-#: src/dird/job.c:839
-msgid "Run FullPool override"
-msgstr ""
-
-#: src/dird/job.c:841
-msgid "Job FullPool override"
-msgstr ""
-
-#: src/dird/job.c:850
-msgid "Run IncPool override"
-msgstr ""
-
-#: src/dird/job.c:852
-msgid "Job IncPool override"
-msgstr ""
-
-#: src/dird/job.c:861
-msgid "Run DiffPool override"
-msgstr ""
-
-#: src/dird/job.c:863
-msgid "Job DiffPool override"
-msgstr ""
-
-#: 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:929
-msgid "FileSet MD5 digest not found.\n"
-msgstr ""
-
-#: src/dird/job.c:934
-#, c-format
-msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
-msgstr ""
-
-#: src/dird/job.c:976
-#, c-format
-msgid "Error updating job record. %s"
-msgstr ""
-
-#: src/dird/job.c:1121
-msgid "Run storage override"
-msgstr ""
-
-#: src/dird/job.c:1189
-msgid "Client resource"
-msgstr ""
-
-#: src/dird/job.c:1406
-#, c-format
-msgid "Could not start clone job: \"%s\".\n"
-msgstr ""
-
-#: src/dird/job.c:1409
-#, c-format
-msgid "Clone JobId %d started.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:83 src/dird/authenticate.c:84
-#: src/tray-monitor/authenticate.c:132
-#: src/qt-console/tray-monitor/authenticate.cpp:131
-#, c-format
-msgid "Error sending Hello to Storage daemon. ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:113
-msgid "Director and Storage daemon passwords or names not the same.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:115
-#, c-format
-msgid ""
-"Director unable to authenticate with Storage daemon at \"%s:%d\". Possible "
-"causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the SD or\n"
-"SD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-
-#: src/dird/authenticate.c:127 src/wx-console/authenticate.c:127
-#: src/console/authenticate.c:122
-msgid ""
-"Authorization problem: Remote server did not advertise required TLS "
-"support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:134 src/stored/authenticate.c:146
-#: src/stored/authenticate.c:257 src/wx-console/authenticate.c:133
-#: src/console/authenticate.c:129 src/filed/authenticate.c:160
-#: src/filed/authenticate.c:279
-msgid "Authorization problem: Remote server requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:143
-#, c-format
-msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
-msgstr ""
-
-#: src/dird/authenticate.c:155
-#, c-format
-msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:162 src/tray-monitor/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:151
-msgid "Storage daemon rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:163
-#, c-format
-msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:192
-#, c-format
-msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:222
-msgid "Director and File daemon passwords or names not the same.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:224
-#, c-format
-msgid ""
-"Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the FD or\n"
-"FD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-
-#: src/dird/authenticate.c:236
-#, c-format
-msgid ""
-"Authorization problem: FD \"%s:%s\" did not advertise required TLS support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:244
-#, c-format
-msgid "Authorization problem: FD at \"%s:%d\" requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:254
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
-msgstr ""
-
-#: src/dird/authenticate.c:266 src/tray-monitor/authenticate.c:191
-#: src/qt-console/tray-monitor/authenticate.cpp:190
-#, c-format
-msgid "Bad response from File daemon to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:268
-#, c-format
-msgid "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:277 src/tray-monitor/authenticate.c:198
-#: src/qt-console/tray-monitor/authenticate.cpp:197
-msgid "File daemon rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:278
-#, c-format
-msgid "File daemon at \"%s:%d\" rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:302
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Len=%d\n"
-msgstr ""
-
-#: src/dird/authenticate.c:309
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Got: %s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:377
-msgid ""
-"Authorization problem: Remote client did not advertise required TLS "
-"support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:385
-msgid "Authorization problem: Remote client requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:400 src/filed/authenticate.c:169
-#: src/filed/authenticate.c:288
-msgid "TLS negotiation failed.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:414
-#, c-format
-msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:419
-#, c-format
-msgid "1000 OK: %s Version: %s (%s)\n"
-msgstr ""
-
-#: src/dird/catreq.c:128 src/dird/catreq.c:355
-#, c-format
-msgid "1990 Invalid Catalog Request: %s"
-msgstr ""
-
-#: src/dird/catreq.c:129
-#, c-format
-msgid "Invalid Catalog request; DB not open: %s"
-msgstr ""
-
-#: src/dird/catreq.c:154
-msgid "1901 No Media.\n"
-msgstr ""
-
-#: src/dird/catreq.c:182
-msgid "not in Pool"
-msgstr ""
-
-#: src/dird/catreq.c:184
-msgid "not correct MediaType"
-msgstr ""
-
-#: src/dird/catreq.c:194
-msgid "is not Enabled"
-msgstr ""
-
-#: src/dird/catreq.c:203
-#, c-format
-msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
-msgstr ""
-
-#: src/dird/catreq.c:208
-#, c-format
-msgid "1997 Volume \"%s\" not in catalog.\n"
-msgstr ""
-
-#: src/dird/catreq.c:230
-#, c-format
-msgid "Unable to get Media record for Volume %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/catreq.c:232
-#, c-format
-msgid "1991 Catalog Request for vol=%s failed: %s"
-msgstr ""
-
-#: 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:262
-#, c-format
-msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
-msgstr ""
-
-#: src/dird/catreq.c:318
-#, c-format
-msgid "Catalog error updating Media record. %s"
-msgstr ""
-
-#: src/dird/catreq.c:320
-msgid "1993 Update Media error\n"
-msgstr ""
-
-#: src/dird/catreq.c:344
-#, c-format
-msgid "Catalog error creating JobMedia record. %s"
-msgstr ""
-
-#: src/dird/catreq.c:346
-msgid "1992 Create JobMedia error\n"
-msgstr ""
-
-#: 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"
-msgstr ""
-
-#: src/dird/catreq.c:544
-#, c-format
-msgid "%s not same File=%d as attributes=%d\n"
-msgstr ""
-
-#: src/dird/catreq.c:571
-#, c-format
-msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
-msgstr ""
-
-#: src/dird/catreq.c:586
-#, c-format
-msgid "attribute create error. %s"
-msgstr ""
-
-#: src/dird/catreq.c:592
-#, c-format
-msgid "Catalog error updating file digest. %s"
-msgstr ""
-
-#: src/dird/catreq.c:615
-#, c-format
-msgid "1994 Invalid Catalog Update: %s"
-msgstr ""
-
-#: src/dird/catreq.c:616
-#, c-format
-msgid "Invalid Catalog Update; DB not open: %s"
-msgstr ""
-
-#: 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:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
-msgid "Storage daemon"
-msgstr ""
-
-#: src/dird/msgchan.c:205
-#, c-format
-msgid "Storage daemon rejected Job command: %s\n"
-msgstr ""
-
-#: src/dird/msgchan.c:213
-#, c-format
-msgid "<stored: bad response to Job command: %s\n"
-msgstr ""
-
-#: 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"
-"     Storage daemon didn't accept Device \"%s\" because:\n"
-"     %s"
-msgstr ""
-
-#: src/dird/msgchan.c:322
-#, c-format
-msgid ""
-"\n"
-"     Storage daemon didn't accept Device \"%s\" command.\n"
-msgstr ""
-
-#: 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
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:183
-#: src/qt-console/tray-monitor/tray_conf.cpp:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:187
-#: src/qt-console/tray-monitor/tray_conf.cpp:187
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:191
-#: src/qt-console/tray-monitor/tray_conf.cpp:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:195
-#: src/qt-console/tray-monitor/tray_conf.cpp:195
-#: src/qt-console/bat_conf.cpp:157
-#, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:114
-#, c-format
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:270
-#: src/qt-console/tray-monitor/tray-monitor.cpp:216
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:301
-#: src/qt-console/tray-monitor/tray-monitor.cpp:248
-#, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:323
-#: src/qt-console/tray-monitor/tray-monitor.cpp:263
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:330
-msgid "Bacula daemon status monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:339
-msgid "Open status window..."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:345
-msgid "Exit"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:357
-msgid "Bacula tray monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:382
-msgid " (DIR)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:386
-msgid " (FD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:390
-msgid " (SD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:403
-msgid "Unknown status."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:477
-msgid "Refresh interval in seconds: "
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:485
-msgid "Refresh now"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:489
-msgid "About"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:493
-msgid "Close"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:513
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:516
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:519
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:560 src/tray-monitor/tray-monitor.c:571
-msgid "Bacula Tray Monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:562 src/tray-monitor/tray-monitor.c:573
-msgid "Written by Nicolas Boichat\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:563 src/tray-monitor/tray-monitor.c:574
-msgid "Version"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:656
-#: src/qt-console/tray-monitor/tray-monitor.cpp:331
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:730
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:742
-#, c-format
-msgid " (%d errors)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:745
-#, c-format
-msgid " (%d error)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:783
-msgid "No current job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:786
-msgid "No last job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:794
-msgid "Job status: Created"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:799
-msgid "Job status: Running"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:803
-msgid "Job status: Blocked"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:808
-msgid "Job status: Terminated"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:813
-msgid "Job status: Terminated in error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:819
-msgid "Job status: Error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:823
-msgid "Job status: Fatal error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:828
-msgid "Job status: Verify differences"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:833
-msgid "Job status: Canceled"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:838
-msgid "Job status: Waiting on File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:843
-msgid "Job status: Waiting on the Storage daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:848
-msgid "Job status: Waiting for new media"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:853
-msgid "Job status: Waiting for Mount"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:858
-msgid "Job status: Waiting for storage resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:863
-msgid "Job status: Waiting for job resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:868
-msgid "Job status: Waiting for Client resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:873
-msgid "Job status: Waiting for maximum jobs"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:878
-msgid "Job status: Waiting for start time"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:883
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:888
-#, c-format
-msgid "Unknown job status %c."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:889
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:896
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:936 src/console/console.c:1143
-#, c-format
-msgid "Connecting to Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:937
-#: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: 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:173
-msgid "Director daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:943
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:944
-#: src/qt-console/tray-monitor/tray-monitor.cpp:366
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:945
-#: src/qt-console/tray-monitor/tray-monitor.cpp:368
-msgid "File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:950
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:951
-#: src/qt-console/tray-monitor/tray-monitor.cpp:373
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:956 src/tray-monitor/tray-monitor.c:994
-#: src/qt-console/tray-monitor/tray-monitor.cpp:379
-#: src/qt-console/tray-monitor/tray-monitor.cpp:409
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:962
-msgid "Cannot connect to daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:963
-#: src/qt-console/tray-monitor/tray-monitor.cpp:384
-msgid "Cannot connect to daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:975
-#: src/qt-console/tray-monitor/tray-monitor.cpp:393
-#, c-format
-msgid "Authentication error : %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:982
-msgid "Opened connection with Director daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:983
-#: src/qt-console/tray-monitor/tray-monitor.cpp:400
-msgid "Opened connection with Director daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:986
-msgid "Opened connection with File daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:987
-#: src/qt-console/tray-monitor/tray-monitor.cpp:403
-msgid "Opened connection with File daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:990
-msgid "Opened connection with Storage daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:991
-#: src/qt-console/tray-monitor/tray-monitor.cpp:406
-msgid "Opened connection with Storage daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1028
-msgid "<< Error: BNET_SUB_PROMPT signal received. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1033 src/wx-console/console_thread.cpp:494
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1037
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1042
-msgid "<ERROR>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1046
-#: src/qt-console/tray-monitor/tray-monitor.cpp:457
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1052
-msgid "<STOP>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1056
-#: src/qt-console/tray-monitor/tray-monitor.cpp:466
-msgid "Error : Connection closed."
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:88
-#: src/qt-console/tray-monitor/authenticate.cpp:87
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see "
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:97 src/console/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:96
-#, c-format
-msgid "Bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:104 src/wx-console/authenticate.c:157
-#: src/console/authenticate.c:159
-#: src/qt-console/tray-monitor/authenticate.cpp:103
-msgid "Director rejected Hello command\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:138
-#: src/qt-console/tray-monitor/authenticate.cpp:137
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:145
-#: src/qt-console/tray-monitor/authenticate.cpp:144
-#, c-format
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:178
-#: src/qt-console/tray-monitor/authenticate.cpp:177
-#, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:184
-#: src/qt-console/tray-monitor/authenticate.cpp:183
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/reserve.c:87
-#, c-format
-msgid "Unable to initialize reservation lock. ERR=%s\n"
-msgstr ""
-
-#: src/stored/reserve.c:156
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
-msgstr ""
-
-#: src/stored/reserve.c:256
-msgid "3939 Could not get dcr\n"
-msgstr ""
-
-#: src/stored/reserve.c:364
-#, c-format
-msgid "Device reservation failed for JobId=%d: %s\n"
-msgstr ""
-
-#: src/stored/reserve.c:373
-#, c-format
-msgid "Failed command: %s\n"
-msgstr ""
-
-#: src/stored/reserve.c:632 src/stored/dircmd.c:633
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
-msgstr ""
-
-#: 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:652
-#, c-format
-msgid "3926 Could not get dcr for device: %s\n"
-msgstr ""
-
-#: 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:788
-#, c-format
-msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
-msgstr ""
-
-#: src/stored/reserve.c:840
-#, c-format
-msgid "3603 JobId=%u device %s is busy reading.\n"
-msgstr ""
-
-#: 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: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:914
-#, c-format
-msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: src/stored/reserve.c:926
-#, c-format
-msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: 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:987
-#, c-format
-msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
-msgstr ""
-
-#: 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:1064
-#, c-format
-msgid "Logic error!!!! JobId=%u Should not get here.\n"
-msgstr ""
-
-#: 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:1068
-msgid "Logic error!!!! Should not get here.\n"
-msgstr ""
-
-#: src/stored/reserve.c:1071
-#, c-format
-msgid "3911 JobId=%u failed reserve drive %s.\n"
-msgstr ""
-
-#: src/stored/bls.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bls [options] <device-name>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -j              list jobs\n"
-"       -k              list blocks\n"
-"    (no j or k option) list saved files\n"
-"       -L              dump label\n"
-"       -p              proceed inspite of errors\n"
-"       -v              be verbose\n"
-"       -V              specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bls.c:149 src/stored/bextract.c:146
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:164 src/stored/bextract.c:161
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:211
-msgid "No archive name specified\n"
-msgstr ""
-
-#: src/stored/bls.c:247
-#, c-format
-msgid ""
-"\n"
-"Warning, this Volume is a continuation of Volume %s\n"
-msgstr ""
-
-#: src/stored/bls.c:290
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:301
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/bls.c:303
-#, c-format
-msgid "End of file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:327
-#, c-format
-msgid ""
-"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm="
-"%s rlen=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:336
-#, c-format
-msgid "Block: %d size=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:386 src/stored/bextract.c:328 src/stored/bscan.c:688
-msgid "Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bls.c:388
-msgid "Attrib unpack error!\n"
-msgstr ""
-
-#: src/stored/bls.c:399
-#, c-format
-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:330
-msgid "Fresh Volume Label"
-msgstr ""
-
-#: 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:1028 src/stored/bcopy.c:337
-msgid "Begin Job Session"
-msgstr ""
-
-#: 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:346
-msgid "End of Medium"
-msgstr ""
-
-#: src/stored/bls.c:444
-msgid "End of Physical Medium"
-msgstr ""
-
-#: src/stored/bls.c:447
-msgid "Start of object"
-msgstr ""
-
-#: src/stored/bls.c:450
-msgid "End of object"
-msgstr ""
-
-#: 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: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: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 ""
-
-#: src/stored/dircmd.c:155
-#, c-format
-msgid "Connection request from %s failed.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:166
-#, c-format
-msgid "Invalid connection from %s. Len=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
-msgid "Unable to authenticate Director\n"
-msgstr ""
-
-#: src/stored/dircmd.c:299
-#, c-format
-msgid "3991 Bad setdebug command: %s\n"
-msgstr ""
-
-#: 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:358
-#, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
-msgstr ""
-
-#: 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:442
-#, c-format
-msgid "3903 Error scanning label command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:492
-#, c-format
-msgid "3910 Unable to open device \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:509
-#, c-format
-msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:516
-msgid "3921 Wrong volume mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:520
-msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:528
-#, c-format
-msgid "3912 Failed to label Volume: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:538
-#, c-format
-msgid "3914 Failed to label Volume (no media): ERR=%s\n"
-msgstr ""
-
-#: 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:578
-#, c-format
-msgid "3001 Mounted Volume: %s\n"
-msgstr ""
-
-#: 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:696
-msgid "Specified slot ignored. "
-msgstr ""
-
-#: 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:732 src/stored/dircmd.c:761
-#, c-format
-msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: 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:745
-#, c-format
-msgid "3001 Device \"%s\" is doing acquire.\n"
-msgstr ""
-
-#: 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:776
-#, c-format
-msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:788
-#, c-format
-msgid "3002 Device \"%s\" is mounted.\n"
-msgstr ""
-
-#: 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:793
-#, c-format
-msgid "3906 File device \"%s\" is always mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:802
-#, c-format
-msgid "3930 Device \"%s\" is being released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:806
-#, c-format
-msgid "3905 Unknown wait state %d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:816
-#, c-format
-msgid "3909 Error scanning mount command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
-#, c-format
-msgid "3002 Device \"%s\" unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:851
-#, c-format
-msgid "3901 Device \"%s\" is already unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:866
-#, c-format
-msgid "3001 Device \"%s\" unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:871
-#, c-format
-msgid "3902 Device \"%s\" is busy in acquire.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:909
-#, c-format
-msgid "3907 Error scanning unmount command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:937
-msgid "3916 Error scanning action_on_purge command\n"
-msgstr ""
-
-#: src/stored/dircmd.c:980
-#, c-format
-msgid "3921 Device \"%s\" already released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:987
-#, c-format
-msgid "3922 Device \"%s\" waiting for sysop.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:993
-#, c-format
-msgid "3922 Device \"%s\" waiting for mount.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:997
-#, c-format
-msgid "3923 Device \"%s\" is busy in acquire.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1001
-#, c-format
-msgid "3914 Device \"%s\" is being labeled.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1009
-#, c-format
-msgid "3022 Device \"%s\" released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1020
-#, c-format
-msgid "3927 Error scanning release command: %s\n"
-msgstr ""
-
-#: 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:1062
-msgid "Error parsing bootstrap file.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1124
-#, c-format
-msgid "3998 Device \"%s\" is not an autochanger.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1141
-#, c-format
-msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1183
-#, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1211
-#, c-format
-msgid "3001 Volume=%s Slot=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1243
-#, c-format
-msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
-msgstr ""
-
-#: 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:1251
-#, c-format
-msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1255
-#, c-format
-msgid "3934 Device \"%s\" is being initialized.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1259
-#, c-format
-msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1263
-#, c-format
-msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1268
-#, c-format
-msgid "3936 Device \"%s\" is busy reading.\n"
-msgstr ""
-
-#: 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:122 src/stored/parse_bsr.c:126
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:148
-#, c-format
-msgid "Cannot open bootstrap file %s: %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:279
-#, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:311
-#, c-format
-msgid "Device \"%s\" in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:484
-#, c-format
-msgid "REGEX '%s' compile error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:494
-msgid "JobType not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:502
-msgid "JobLevel not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:719
-#, c-format
-msgid "Slot %d in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:743
-#, c-format
-msgid "VolFile     : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:751
-#, c-format
-msgid "VolBlock    : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:759
-#, c-format
-msgid "VolAddr    : %llu-%llu\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:768
-#, c-format
-msgid "FileIndex   : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:770
-#, c-format
-msgid "FileIndex   : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:780
-#, c-format
-msgid "JobId       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:782
-#, c-format
-msgid "JobId       : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:792
-#, c-format
-msgid "SessId      : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:794
-#, c-format
-msgid "SessId      : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:803
-#, c-format
-msgid "VolumeName  : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:804
-#, c-format
-msgid "  MediaType : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:805
-#, c-format
-msgid "  Device    : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:806
-#, c-format
-msgid "  Slot      : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:815
-#, c-format
-msgid "Client      : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:823
-#, c-format
-msgid "Job          : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:831
-#, c-format
-msgid "SessTime    : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:842
-msgid "BSR is NULL\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:846
-#, c-format
-msgid "Next        : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:847
-#, c-format
-msgid "Root bsr    : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:859
-#, c-format
-msgid "count       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:860
-#, c-format
-msgid "found       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:863
-#, c-format
-msgid "done        : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:864
-#, c-format
-msgid "positioning : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:865
-#, c-format
-msgid "fast_reject : %d\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:96
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:106
-msgid "Insane! End of tape while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:132
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:155
-#, c-format
-msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:166
-msgid "No HDR1 label while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:172
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:184
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:199
-msgid "Unknown or bad ANSI/IBM label record.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:207
-msgid "Too many records in while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:307
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:333
-#, c-format
-msgid "Could not write ANSI VOL1 label. Wanted size=%d got=%d ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:371 src/stored/ansi_label.c:400
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:376 src/stored/ansi_label.c:407
-msgid "Could not write ANSI HDR1 label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:412
-#, c-format
-msgid "Error writing EOF to tape. ERR=%s"
-msgstr ""
-
-#: src/stored/ansi_label.c:417
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
-msgstr ""
-
-#: src/stored/append.c:68
-msgid "DCR is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:73
-msgid "DEVICE is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:83
-msgid "Unable to set network buffer size.\n"
-msgstr ""
-
-#: 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:110 src/stored/btape.c:2235
-#, c-format
-msgid "Write session label failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:122
-#, c-format
-msgid "Network send error to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:159
-#, c-format
-msgid "Error reading data header from FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:167
-#, c-format
-msgid "Malformed data header from FD: %s\n"
-msgstr ""
-
-#: src/stored/append.c:187
-#, c-format
-msgid "FI=%d from FD not positive or sequential=%d\n"
-msgstr ""
-
-#: src/stored/append.c:235
-#, c-format
-msgid "Network error reading from FD. ERR=%s\n"
-msgstr ""
-
-#: 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: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:279 src/stored/mac.c:128
-msgid "Set ok=FALSE after write_block_to_device.\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/vol_mgr.c:93
-#, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:93
-#, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:110 src/stored/label.c:202
-#, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
-msgstr ""
-
-#: src/stored/label.c:113 src/stored/label.c:190
-#, c-format
-msgid "Too many tries: %s"
-msgstr ""
-
-#: src/stored/label.c:130
-#, c-format
-msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
-msgstr ""
-
-#: src/stored/label.c:135
-msgid "Could not read Volume label from block.\n"
-msgstr ""
-
-#: src/stored/label.c:138
-#, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:143
-#, c-format
-msgid "Volume Header Id bad: %s\n"
-msgstr ""
-
-#: src/stored/label.c:175
-#, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
-msgstr ""
-
-#: src/stored/label.c:186
-#, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
-msgstr ""
-
-#: 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:277
-#, c-format
-msgid "Cannot write Volume label to block for device %s\n"
-msgstr ""
-
-#: 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:451
-#, c-format
-msgid "Rewind error on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:458
-#, c-format
-msgid "Truncate error on device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:487
-#, c-format
-msgid "Unable to write device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:518
-#, c-format
-msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
-msgstr ""
-
-#: src/stored/label.c:521
-#, c-format
-msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
-msgstr ""
-
-#: src/stored/label.c:721
-#, c-format
-msgid "Bad Volume session label = %d\n"
-msgstr ""
-
-#: src/stored/label.c:776
-#, c-format
-msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
-msgstr ""
-
-#: src/stored/label.c:903
-#, c-format
-msgid "Unknown %d"
-msgstr ""
-
-#: src/stored/label.c:907
-#, c-format
-msgid ""
-"\n"
-"Volume Label:\n"
-"Id                : %sVerNo             : %d\n"
-"VolName           : %s\n"
-"PrevVolName       : %s\n"
-"VolFile           : %d\n"
-"LabelType         : %s\n"
-"LabelSize         : %d\n"
-"PoolName          : %s\n"
-"MediaType         : %s\n"
-"PoolType          : %s\n"
-"HostName          : %s\n"
-msgstr ""
-
-#: src/stored/label.c:929
-#, c-format
-msgid "Date label written: %s\n"
-msgstr ""
-
-#: src/stored/label.c:935
-#, c-format
-msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:955
-#, c-format
-msgid ""
-"\n"
-"%s Record:\n"
-"JobId             : %d\n"
-"VerNum            : %d\n"
-"PoolName          : %s\n"
-"PoolType          : %s\n"
-"JobName           : %s\n"
-"ClientName        : %s\n"
-msgstr ""
-
-#: src/stored/label.c:968
-#, c-format
-msgid ""
-"Job (unique name) : %s\n"
-"FileSet           : %s\n"
-"JobType           : %c\n"
-"JobLevel          : %c\n"
-msgstr ""
-
-#: src/stored/label.c:977
-#, c-format
-msgid ""
-"JobFiles          : %s\n"
-"JobBytes          : %s\n"
-"StartBlock        : %s\n"
-"EndBlock          : %s\n"
-"StartFile         : %s\n"
-"EndFile           : %s\n"
-"JobErrors         : %s\n"
-"JobStatus         : %c\n"
-msgstr ""
-
-#: src/stored/label.c:998
-#, c-format
-msgid "Date written      : %s\n"
-msgstr ""
-
-#: src/stored/label.c:1003
-#, c-format
-msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:1022
-msgid "Fresh Volume"
-msgstr ""
-
-#: src/stored/label.c:1025
-msgid "Volume"
-msgstr ""
-
-#: src/stored/label.c:1034 src/stored/read_record.c:428
-msgid "End of Media"
-msgstr ""
-
-#: src/stored/label.c:1037
-msgid "End of Tape"
-msgstr ""
-
-#: 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:1062
-msgid "End of physical tape.\n"
-msgstr ""
-
-#: 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:1079
-#, c-format
-msgid "   Job=%s Date=%s Level=%c Type=%c\n"
-msgstr ""
-
-#: src/stored/label.c:1088
-#, c-format
-msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
-msgstr ""
-
-#: src/stored/status.c:99
-msgid "Used Volume status:\n"
-msgstr ""
-
-#: src/stored/status.c:117
-msgid ""
-"\n"
-"SD Resources:\n"
-msgstr ""
-
-#: src/stored/status.c:153
-msgid ""
-"\n"
-"Device status:\n"
-msgstr ""
-
-#: src/stored/status.c:157
-#, c-format
-msgid "Autochanger \"%s\" with devices:\n"
-msgstr ""
-
-#: src/stored/status.c:177
-#, c-format
-msgid ""
-"\n"
-"Device %s is %s:\n"
-"    Volume:      %s\n"
-"    Pool:        %s\n"
-"    Media type:  %s\n"
-msgstr ""
-
-#: 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 ""
-"\n"
-"Device %s open but no Bacula volume is currently mounted.\n"
-msgstr ""
-
-#: src/stored/status.c:199
-#, c-format
-msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:214
-#, c-format
-msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:220
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:227
-#, c-format
-msgid ""
-"\n"
-"Device %s is not open.\n"
-msgstr ""
-
-#: src/stored/status.c:231
-#, c-format
-msgid ""
-"\n"
-"Device \"%s\" is not open or does not exist.\n"
-msgstr ""
-
-#: src/stored/status.c:255
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
-msgstr ""
-
-#: src/stored/status.c:293
-msgid ""
-"No DEVICE structure.\n"
-"\n"
-msgstr ""
-
-#: src/stored/status.c:299
-msgid "    Device is BLOCKED. User unmounted.\n"
-msgstr ""
-
-#: src/stored/status.c:303
-msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
-msgstr ""
-
-#: src/stored/status.c:313
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting for mount of volume \"%s\",\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:322
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting to create a volume for:\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:333
-msgid "    Device is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/status.c:339
-msgid "    Device is being initialized.\n"
-msgstr ""
-
-#: src/stored/status.c:343
-msgid "    Device is blocked labeling a Volume.\n"
-msgstr ""
-
-#: src/stored/status.c:352
-#, c-format
-msgid "    Slot %d %s loaded in drive %d.\n"
-msgstr ""
-
-#: src/stored/status.c:356
-#, c-format
-msgid "    Drive %d is not loaded.\n"
-msgstr ""
-
-#: src/stored/status.c:371 src/stored/btape.c:688
-#, c-format
-msgid "Configured device capabilities:\n"
-msgstr ""
-
-#: src/stored/status.c:389
-msgid "Device state:\n"
-msgstr ""
-
-#: src/stored/status.c:405
-#, c-format
-msgid "  num_writers=%d reserves=%d block=%d\n"
-msgstr ""
-
-#: src/stored/status.c:409
-msgid "Attached Jobs: "
-msgstr ""
-
-#: src/stored/status.c:427 src/stored/btape.c:720
-#, c-format
-msgid "Device parameters:\n"
-msgstr ""
-
-#: src/stored/status.c:429
-#, c-format
-msgid "  Archive name: %s Device name: %s\n"
-msgstr ""
-
-#: src/stored/status.c:432
-#, c-format
-msgid "  File=%u block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:434
-#, c-format
-msgid "  Min block=%u Max block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:455
-#, c-format
-msgid "%s Job %s waiting for Client connection.\n"
-msgstr ""
-
-#: 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:484
-#, c-format
-msgid ""
-"Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
-"    pool=\"%s\" device=%s\n"
-msgstr ""
-
-#: src/stored/status.c:495
-#, c-format
-msgid "    spooling=%d despooling=%d despool_wait=%d\n"
-msgstr ""
-
-#: src/stored/status.c:511
-#, c-format
-msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
-msgstr ""
-
-#: src/stored/status.c:523
-#, c-format
-msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
-msgstr ""
-
-#: src/stored/status.c:529
-msgid "    FDSocket closed\n"
-msgstr ""
-
-#: src/stored/status.c:550
-msgid ""
-"\n"
-"Jobs waiting to reserve a drive:\n"
-msgstr ""
-
-#: src/stored/status.c:581
-msgid "===================================================================\n"
-msgstr ""
-
-#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
-msgid "Base"
-msgstr ""
-
-#: src/stored/status.c:680 src/filed/status.c:534
-msgid "Init Catalog"
-msgstr ""
-
-#: src/stored/status.c:683 src/filed/status.c:537
-msgid "Volume to Catalog"
-msgstr ""
-
-#: src/stored/status.c:686 src/filed/status.c:540
-msgid "Disk to Catalog"
-msgstr ""
-
-#: src/stored/status.c:689 src/filed/status.c:543
-msgid "Data"
-msgstr ""
-
-#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
-msgid "Unknown Job Level"
-msgstr ""
-
-#: src/stored/status.c:763
-#, c-format
-msgid "3900 No arg in .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:811
-#, c-format
-msgid "3900 Unknown arg in .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:826
-msgid "Bacula Storage: Idle"
-msgstr ""
-
-#: src/stored/status.c:837
-msgid "Bacula Storage: Running"
-msgstr ""
-
-#: src/stored/status.c:851
-msgid "Bacula Storage: Last Job Canceled"
-msgstr ""
-
-#: src/stored/status.c:855
-msgid "Bacula Storage: Last Job Failed"
-msgstr ""
-
-#: src/stored/status.c:859
-msgid "Bacula Storage: Last Job had Warnings"
-msgstr ""
-
-#: src/stored/read_record.c:89
-#, c-format
-msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:93
-msgid "End of all volumes.\n"
-msgstr ""
-
-#: src/stored/read_record.c:137
-msgid "part"
-msgstr ""
-
-#: src/stored/read_record.c:140
-msgid "file"
-msgstr ""
-
-#: src/stored/read_record.c:143
-#, c-format
-msgid "End of %s %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:158
-msgid "Did fsr in attemp to skip bad record.\n"
-msgstr ""
-
-#: src/stored/read_record.c:397
-#, c-format
-msgid "Forward spacing Volume \"%s\" to file:block %u:%u.\n"
-msgstr ""
-
-#: src/stored/read_record.c:421
-msgid "Begin Session"
-msgstr ""
-
-#: src/stored/read_record.c:425
-msgid "End Session"
-msgstr ""
-
-#: src/stored/read_record.c:431
-#, c-format
-msgid "Unknown code %d\n"
-msgstr ""
-
-#: src/stored/bextract.c:80
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
-"files>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -p              proceed inspite of I/O errors\n"
-"       -v              verbose\n"
-"       -V <volumes>    specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-
-#: 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"
-msgstr ""
-
-#: src/stored/bextract.c:218
-#, c-format
-msgid "%d Program Name and/or Program Data Stream records ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:222
-#, c-format
-msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:249
-#, c-format
-msgid "Cannot stat %s. It must exist. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:253
-#, c-format
-msgid "%s must be a directory.\n"
-msgstr ""
-
-#: src/stored/bextract.c:274
-#, c-format
-msgid "%u files restored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1480
-#, c-format
-msgid "Write error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:321 src/stored/bextract.c:587
-msgid "Logic error output file should be open but is not.\n"
-msgstr ""
-
-#: src/stored/bextract.c:335 src/filed/restore.c:569
-#, c-format
-msgid "%s stream not supported on this Client.\n"
-msgstr ""
-
-#: src/stored/bextract.c:345
-#, c-format
-msgid "%s was deleted.\n"
-msgstr ""
-
-#: src/stored/bextract.c:393
-#, c-format
-msgid "Seek error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1335
-#, c-format
-msgid "Seek to %s error on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:448
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
-msgstr ""
-
-#: 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:1376
-#, c-format
-msgid "Compressed header version error. version=0x%x\n"
-msgstr ""
-
-#: src/stored/bextract.c:522 src/filed/restore.c:1381
-#, c-format
-msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
-msgstr ""
-
-#: src/stored/bextract.c:544
-#, c-format
-msgid "LZO uncompression error. ERR=%d\n"
-msgstr ""
-
-#: src/stored/bextract.c:556 src/filed/restore.c:1414
-#, c-format
-msgid "Compression algorithm 0x%x found, but not supported!\n"
-msgstr ""
-
-#: src/stored/bextract.c:578
-msgid "Got Program Name or Data Stream. Ignored.\n"
-msgstr ""
-
-#: 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:74
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify a Storage configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: 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:217
-msgid "Write of last block failed.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:221
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
-msgstr ""
-
-#: 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:254
-msgid "Volume is prelabeled. This volume cannot be copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:257
-msgid "Volume label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:263
-msgid "Copy skipped. Record does not match BSR filter.\n"
-msgstr ""
-
-#: 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:294
-msgid "EOM label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:297
-msgid "EOT label not copied.\n"
-msgstr ""
-
-#: src/stored/dvd.c:111
-msgid "No FreeSpace command defined.\n"
-msgstr ""
-
-#: src/stored/dvd.c:145
-#, c-format
-msgid "Cannot run free space command. Results=%s ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:261
-#, c-format
-msgid "Error writing part %d to the DVD: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:263
-#, c-format
-msgid "Error while writing current part to the DVD: %s"
-msgstr ""
-
-#: src/stored/dvd.c:273
-#, c-format
-msgid "Part %d (%lld bytes) written to DVD.\n"
-msgstr ""
-
-#: src/stored/dvd.c:292
-#, c-format
-msgid "Remaining free space %s on %s\n"
-msgstr ""
-
-#: src/stored/dvd.c:358
-#, c-format
-msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
-msgstr ""
-
-#: 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:570
-#, c-format
-msgid "Unable to write last on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/butil.c:59
-msgid "Nohdr,"
-msgstr ""
-
-#: src/stored/butil.c:62
-msgid "partial,"
-msgstr ""
-
-#: src/stored/butil.c:65
-msgid "empty,"
-msgstr ""
-
-#: src/stored/butil.c:68
-msgid "Nomatch,"
-msgstr ""
-
-#: src/stored/butil.c:71
-msgid "cont,"
-msgstr ""
-
-#: src/stored/butil.c:148
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
-msgstr ""
-
-#: src/stored/butil.c:168
-#, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:175
-#, c-format
-msgid "Cannot init device %s\n"
-msgstr ""
-
-#: src/stored/butil.c:195
-#, c-format
-msgid "Cannot open %s\n"
-msgstr ""
-
-#: src/stored/butil.c:282
-#, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:287
-#, c-format
-msgid "Using device: \"%s\" for reading.\n"
-msgstr ""
-
-#: src/stored/butil.c:290
-#, c-format
-msgid "Using device: \"%s\" for writing.\n"
-msgstr ""
-
-#: src/stored/butil.c:306
-msgid "Unexpected End of Data\n"
-msgstr ""
-
-#: src/stored/butil.c:308
-msgid "Unexpected End of Tape\n"
-msgstr ""
-
-#: src/stored/butil.c:310
-msgid "Unexpected End of File\n"
-msgstr ""
-
-#: src/stored/butil.c:312
-msgid "Tape Door is Open\n"
-msgstr ""
-
-#: src/stored/butil.c:314
-msgid "Unexpected Tape is Off-line\n"
-msgstr ""
-
-#: src/stored/acquire.c:74
-#, c-format
-msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
-msgstr ""
-
-#: src/stored/acquire.c:83
-#, c-format
-msgid "No volumes specified for reading. Job %s canceled.\n"
-msgstr ""
-
-#: 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:118
-#, c-format
-msgid ""
-"Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
-"  device=%s\n"
-msgstr ""
-
-#: src/stored/acquire.c:162
-#, c-format
-msgid "Media Type change.  New read device %s chosen.\n"
-msgstr ""
-
-#: src/stored/acquire.c:174
-#, c-format
-msgid "No suitable device found to read Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/acquire.c:213
-#, c-format
-msgid "Job %s canceled.\n"
-msgstr ""
-
-#: src/stored/acquire.c:231
-#, c-format
-msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/acquire.c:321
-#, c-format
-msgid "Too many errors trying to mount device %s for reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:329
-#, c-format
-msgid "Ready to read from volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: src/stored/acquire.c:381
-#, c-format
-msgid "Want to append, but device %s is busy reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:414
-#, c-format
-msgid "Could not ready device %s for append.\n"
-msgstr ""
-
-#: 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:552
-#, c-format
-msgid "Alert: %s"
-msgstr ""
-
-#: src/stored/acquire.c:560
-#, c-format
-msgid "3997 Bad alert command: %s: ERR=%s.\n"
-msgstr ""
-
-#: 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/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:197
-#, c-format
-msgid "Error getting Volume info: %s"
-msgstr ""
-
-#: src/stored/askdir.c:376
-#, c-format
-msgid "Didn't get vol info vol=%s: ERR=%s"
-msgstr ""
-
-#: src/stored/askdir.c:432
-#, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
-msgstr ""
-
-#: src/stored/askdir.c:439
-#, c-format
-msgid "Error creating JobMedia record: %s\n"
-msgstr ""
-
-#: 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:533
-#, c-format
-msgid ""
-"Job %s is waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\" command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: 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:568
-msgid "pthread error in mount_next_volume.\n"
-msgstr ""
-
-#: src/stored/askdir.c:601
-msgid "Cannot request another volume: no volume name given.\n"
-msgstr ""
-
-#: 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:624
-#, c-format
-msgid ""
-"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:630
-#, c-format
-msgid ""
-"Please mount read Volume \"%s\" for:\n"
-"    Job:          %s\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: src/stored/askdir.c:668
-msgid "pthread error in mount_volume\n"
-msgstr ""
-
-#: src/stored/record.c:75
-#, c-format
-msgid "unknown: %d"
-msgstr ""
-
-#: src/stored/record.c:392
-msgid "Damaged buffer\n"
-msgstr ""
-
-#: src/stored/record.c:670
-#, c-format
-msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
-msgstr ""
-
-#: src/stored/read.c:65
-msgid "No Volume names found for restore.\n"
-msgstr ""
-
-#: src/stored/read.c:120
-#, c-format
-msgid ">filed: Error Hdr=%s\n"
-msgstr ""
-
-#: src/stored/read.c:121 src/stored/read.c:136
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
-msgstr ""
-
-#: src/stored/read.c:135
-#, c-format
-msgid "Error sending to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/autochanger.c:65
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:71
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: 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:141
-msgid "Cartridge change or \"update slots\" may be required.\n"
-msgstr ""
-
-#: 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:154
-#, c-format
-msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:185
-#, c-format
-msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:193
-#, c-format
-msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:280
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:287
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
-msgstr ""
-
-#: 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:316
-#, c-format
-msgid "Lock failure on autochanger. ERR=%s\n"
-msgstr ""
-
-#: src/stored/autochanger.c:330
-#, c-format
-msgid "Unlock failure on autochanger. ERR=%s\n"
-msgstr ""
-
-#: 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:387
-#, c-format
-msgid ""
-"3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
-"Results=%s\n"
-msgstr ""
-
-#: 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:541
-#, c-format
-msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:585
-#, c-format
-msgid "3993 Device %s not an autochanger device.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:612
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:615
-msgid "3996 Open bpipe failed.\n"
-msgstr ""
-
-#: 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
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/stored/stored.c:136 src/stored/btape.c:178
-#, c-format
-msgid "Tape block size (%d) not multiple of system size (%d)\n"
-msgstr ""
-
-#: src/stored/stored.c:140 src/stored/btape.c:182
-#, c-format
-msgid "Tape block size (%d) is not a power of 2\n"
-msgstr ""
-
-#: src/stored/stored.c:268
-msgid "Volume Session Time is ZERO!\n"
-msgstr ""
-
-#: src/stored/stored.c:277
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored.c:310 src/stored/bscan.c:262
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:316
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
-msgstr ""
-
-#: src/stored/stored.c:321
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:326
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:334
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:341 src/stored/bscan.c:270
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:363
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:369
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:375
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: src/stored/stored.c:568
-#, c-format
-msgid "Could not initialize %s\n"
-msgstr ""
-
-#: src/stored/stored.c:582
-#, c-format
-msgid "Could not open device %s\n"
-msgstr ""
-
-#: src/stored/stored.c:596
-#, c-format
-msgid "Could not mount device %s\n"
-msgstr ""
-
-#: src/stored/device.c:120
-#, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:139
-#, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:151
-#, c-format
-msgid "write_block_to_device Volume label failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:186
-#, c-format
-msgid "write_block_to_device overflow block failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:191
-#, c-format
-msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:327 src/stored/dev.c:512
-#, c-format
-msgid "Unable to open device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/device.c:329
-#, c-format
-msgid "Unable to open archive %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:166
-#, c-format
-msgid "Command error with FD, hanging up. %s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:169
-msgid "Command error with FD, hanging up.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:180
-#, c-format
-msgid "FD command not found: %s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:206
-msgid "Append data error.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:211
-msgid "Attempt to append on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:223 src/stored/fd_cmds.c:266
-msgid "Attempt to close non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:241
-msgid "Attempt to open already open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:295
-msgid "Attempt to read on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:313 src/stored/fd_cmds.c:322
-msgid "Attempt to open read on non-open session.\n"
-msgstr ""
-
-#: src/stored/mount.c:98
-#, c-format
-msgid "Too many errors trying to mount device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:106
-#, c-format
-msgid "Job %d canceled.\n"
-msgstr ""
-
-#: src/stored/mount.c:282
-#, c-format
-msgid "Volume \"%s\" previously written, moving to end of data.\n"
-msgstr ""
-
-#: 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:411 src/stored/mount.c:737
-#, c-format
-msgid "Volume \"%s\" not on device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:444
-#, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
-msgstr ""
-
-#: src/stored/mount.c:624
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: src/stored/mount.c:631 src/stored/mount.c:659
-msgid "Error updating Catalog\n"
-msgstr ""
-
-#: 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:647
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" size=%s\n"
-msgstr ""
-
-#: src/stored/mount.c:651
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The sizes do not match! Volume=%s Catalog=%s\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: 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:727
-#, c-format
-msgid "Labeled new Volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:732
-#, c-format
-msgid "Device %s not configured to autolabel Volumes.\n"
-msgstr ""
-
-#: src/stored/mount.c:751
-#, c-format
-msgid "Marking Volume \"%s\" in Error in Catalog.\n"
-msgstr ""
-
-#: 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:787
-msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
-msgstr ""
-
-#: 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:875 src/stored/btape.c:3122
-#, c-format
-msgid "Cannot open Dev=%s, Vol=%s\n"
-msgstr ""
-
-#: src/stored/mac.c:81
-msgid "Read and write devices not properly initialized.\n"
-msgstr ""
-
-#: src/stored/mac.c:87
-#, c-format
-msgid "No Volume names found for %s.\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:160 src/filed/pythonfd.c:142
-#, c-format
-msgid "Cannot delete attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:193 src/filed/pythonfd.c:160 src/filed/pythonfd.c:176
-#, c-format
-msgid "Cannot find attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:208
-msgid "Error in ParseTuple\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:224
-msgid "Parse tuple error in job_write\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:261
-#, c-format
-msgid "Error in Python method %s\n"
-msgstr ""
-
-#: src/stored/spool.c:83
-msgid "Spooling statistics:\n"
-msgstr ""
-
-#: src/stored/spool.c:86
-#, c-format
-msgid ""
-"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
-msgstr ""
-
-#: src/stored/spool.c:94
-#, c-format
-msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
-msgstr ""
-
-#: src/stored/spool.c:112
-msgid "Spooling data ...\n"
-msgstr ""
-
-#: src/stored/spool.c:138
-#, c-format
-msgid "Bad return from despool WroteVol=%d\n"
-msgstr ""
-
-#: src/stored/spool.c:171
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:225
-msgid "Despooling zero bytes. Your disk is probably FULL!\n"
-msgstr ""
-
-#: src/stored/spool.c:234
-#, c-format
-msgid "Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:239
-#, c-format
-msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:339
-#, c-format
-msgid ""
-"Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/spool.c:407
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:410
-#, c-format
-msgid "Spool read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:411
-#, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:418 src/stored/spool.c:419
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
-msgstr ""
-
-#: src/stored/spool.c:425 src/stored/spool.c:426
-#, c-format
-msgid "Spool data read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: 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:492
-msgid "Bad return from despool in write_block.\n"
-msgstr ""
-
-#: src/stored/spool.c:500
-msgid "Spooling data again ...\n"
-msgstr ""
-
-#: src/stored/spool.c:532
-#, c-format
-msgid "Error writing header to spool file. ERR=%s\n"
-msgstr ""
-
-#: 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:555 src/stored/spool.c:601
-msgid "Fatal despooling error."
-msgstr ""
-
-#: src/stored/spool.c:563
-msgid "Retrying after header spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:579
-#, c-format
-msgid "Error writing data to spool file. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:612
-msgid "Retrying after data spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:682
-msgid "Network error on BlastAttributes.\n"
-msgstr ""
-
-#: 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:718
-#, c-format
-msgid "Truncate on attributes file failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:742
-#, c-format
-msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:768
-#, c-format
-msgid "fopen attr spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/lock.c:405
-#, c-format
-msgid "pthread_cond_wait failure. ERR=%s\n"
-msgstr ""
-
-#: src/stored/lock.c:504
-msgid "unknown blocked code"
-msgstr ""
-
-#: src/stored/stored_conf.c:241
-#, c-format
-msgid "Expected a Device Type keyword, got: %s"
-msgstr ""
-
-#: src/stored/stored_conf.c:255
-#, c-format
-msgid ""
-"Maximum Block Size configured value %u is greater than allowed maximum: %u"
-msgstr ""
-
-#: src/stored/stored_conf.c:269
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:272
-#, c-format
-msgid "dump_resource type=%d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:388
-#, c-format
-msgid "Warning: unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:645
-#: src/stored/stored_conf.c:680 src/wx-console/console_conf.c:164
-#: src/wx-console/console_conf.c:239 src/wx-console/console_conf.c:284
-#: src/wx-console/console_conf.c:311 src/console/console_conf.c:157
-#: src/console/console_conf.c:233 src/console/console_conf.c:278
-#: src/console/console_conf.c:305 src/filed/filed_conf.c:333
-#: src/filed/filed_conf.c:398 src/filed/filed_conf.c:428
-#: src/qt-console/bat_conf.cpp:161 src/qt-console/bat_conf.cpp:239
-#: src/qt-console/bat_conf.cpp:287 src/qt-console/bat_conf.cpp:317
-#, c-format
-msgid "Unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:584
-#, c-format
-msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:590
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:624
-#, c-format
-msgid "Cannot find AutoChanger resource %s\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:640
-#, c-format
-msgid "Unable to init lock: ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:698
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
-msgstr ""
-
-#: src/stored/dev.c:127
-#, c-format
-msgid "Unable to stat device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:155
-msgid "DVD support is now deprecated\n"
-msgstr ""
-
-#: src/stored/dev.c:231
-#, c-format
-msgid "Unable to stat mount point %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:236
-msgid ""
-"Mount and unmount commands must defined for a device which requires mount.\n"
-msgstr ""
-
-#: src/stored/dev.c:247
-#, c-format
-msgid "Min block size > max on device %s\n"
-msgstr ""
-
-#: 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:256
-#, c-format
-msgid "Max block size %u not multiple of device %s block size=%d.\n"
-msgstr ""
-
-#: src/stored/dev.c:260
-#, c-format
-msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
-msgstr ""
-
-#: 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: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:551
-#, c-format
-msgid "Could not open file device %s. No Volume name given.\n"
-msgstr ""
-
-#: src/stored/dev.c:574
-#, c-format
-msgid "Could not open: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:639
-#, c-format
-msgid "No tape loaded or drive offline on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:649
-#, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "Bad call to eod. Device %s not open\n"
-msgstr ""
-
-#: src/stored/dev.c:775
-#, c-format
-msgid "ioctl MTEOM error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:865
-msgid "Bad device call. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:877
-#, c-format
-msgid "Seek error: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:914
-msgid " Bacula status:"
-msgstr ""
-
-#: 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:923
-msgid " Device status:"
-msgstr ""
-
-#: src/stored/dev.c:1022
-msgid "Bad call to load_dev. Device not open\n"
-msgstr ""
-
-#: 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:1077
-#, c-format
-msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1118
-msgid "Bad call to fsf. Device not open\n"
-msgstr ""
-
-#: 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:1160 src/stored/dev.c:1236
-#, c-format
-msgid "ioctl MTFSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:1285
-msgid "Bad call to bsf. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1291
-#, c-format
-msgid "Device %s cannot BSF because it is not a tape.\n"
-msgstr ""
-
-#: src/stored/dev.c:1308
-#, c-format
-msgid "ioctl MTBSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1327
-msgid "Bad call to fsr. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1337
-#, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1365
-#, c-format
-msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1383
-msgid "Bad call to bsr_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1393
-#, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1407
-#, c-format
-msgid "ioctl MTBSR error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1458
-msgid "Bad call to reposition. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1537
-msgid "Bad call to weof_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1547
-msgid "Attempt to WEOF on non-appendable Volume\n"
-msgstr ""
-
-#: src/stored/dev.c:1565
-#, c-format
-msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1664
-#, c-format
-msgid "unknown func code %d"
-msgstr ""
-
-#: src/stored/dev.c:1670
-#, c-format
-msgid "I/O function \"%s\" not supported on this device.\n"
-msgstr ""
-
-#: src/stored/dev.c:1844
-#, c-format
-msgid "Unable to truncate device %s. ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:1861
-#, c-format
-msgid "Unable to stat device %s. ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:1875
-#, c-format
-msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1887
-#, c-format
-msgid "Could not reopen: %s, ERR=%s\n"
-msgstr ""
-
-#: 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:2481
-#, c-format
-msgid "Unable to set eotmodel on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:118
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -m                update media info in database\n"
-"       -D <driver name>  specify the driver database name (default NULL)\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password>     specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -t <port>         specify database port (default 0)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:278
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:282
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:296 src/stored/bscan.c:372
-#, c-format
-msgid "First Volume Size = %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:302 src/tools/bvfs_test.c:215 src/tools/bbatch.c:201
-#: src/tools/bbatch.c:250 src/tools/ing_test.c:191
-msgid "Could not init Bacula database\n"
-msgstr ""
-
-#: src/stored/bscan.c:309 src/tools/bvfs_test.c:224 src/tools/bbatch.c:257
-#: src/tools/ing_test.c:200
-#, c-format
-msgid "Using Database: %s, User: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:343
-#, c-format
-msgid "Create JobMedia for Job %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:353
-#, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:420
-#, c-format
-msgid "done: %d%%\n"
-msgstr ""
-
-#: src/stored/bscan.c:444
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
-msgstr ""
-
-#: src/stored/bscan.c:456
-#, c-format
-msgid "Pool record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:460
-#, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:466
-#, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:470
-#, c-format
-msgid "Pool type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:480
-#, c-format
-msgid "Media record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:487
-#, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:494
-#, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:498
-#, c-format
-msgid "Media type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:508
-#, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:515
-#, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:526
-#, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:531
-#, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:571
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:577
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:583
-#, c-format
-msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/bscan.c:647
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:658
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:670
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:701
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:766
-#, c-format
-msgid "Got MD5 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:774
-#, c-format
-msgid "Got SHA1 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:782
-#, c-format
-msgid "Got SHA256 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Got SHA512 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:798 src/stored/bscan.c:805
-msgid "Got signed digest record\n"
-msgstr ""
-
-#: src/stored/bscan.c:811
-#, c-format
-msgid "Got Prog Names Stream: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:817
-msgid "Got Prog Data Stream record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:862
-#, c-format
-msgid "Unknown stream type!!! stream=%d len=%i\n"
-msgstr ""
-
-#: src/stored/bscan.c:930
-#, c-format
-msgid "Could not create File Attributes record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:936
-#, c-format
-msgid "Created File record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:981
-#, c-format
-msgid "Could not create media record. ERR=%s\n"
-msgstr ""
-
-#: 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:989
-#, c-format
-msgid "Created Media record for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1010
-#, c-format
-msgid "Updated Media record at end of Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1027
-#, c-format
-msgid "Could not create pool record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1031
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1050
-#, c-format
-msgid "Could not get Client record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1060
-#, c-format
-msgid "Created Client record for Client: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1077
-#, c-format
-msgid "Fileset \"%s\" already exists.\n"
-msgstr ""
-
-#: src/stored/bscan.c:1081
-#, c-format
-msgid "Could not create FileSet record \"%s\". ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1086
-#, c-format
-msgid "Created FileSet record \"%s\"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1133
-#, c-format
-msgid "Could not create JobId record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1139
-#, c-format
-msgid "Could not update job start record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1142
-#, c-format
-msgid "Created new JobId=%u record for original JobId=%u\n"
-msgstr ""
-
-#: src/stored/bscan.c:1195
-#, c-format
-msgid "Could not update JobId=%u record. ERR=%s\n"
-msgstr ""
-
-#: 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:1225
-#, c-format
-msgid "Job Termination code: %d"
-msgstr ""
-
-#: src/stored/bscan.c:1230
-#, c-format
-msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1288
-#, c-format
-msgid "Could not create JobMedia record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1292
-#, c-format
-msgid "Created JobMedia record JobId %d, MediaId %d\n"
-msgstr ""
-
-#: 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:1322
-#, c-format
-msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1327
-msgid "Updated MD5/SHA1 record\n"
-msgstr ""
-
-#: src/stored/job.c:234
-#, c-format
-msgid "FD connect failed: Job name not found: %s\n"
-msgstr ""
-
-#: src/stored/job.c:244
-#, c-format
-msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
-msgstr ""
-
-#: src/stored/job.c:261
-msgid "Unable to authenticate File daemon\n"
-msgstr ""
-
-#: src/stored/job.c:390
-msgid "In free_jcr(), but still attached to device!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:185
-#, c-format
-msgid ""
-"\n"
-"\n"
-"!!!! Warning large disk addressing disabled. boffset_t=%d should be 8 or "
-"more !!!!!\n"
-"\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:192
-#, c-format
-msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:201
-msgid "64 bit printf/scanf problem. i=%d x64=%"
-msgstr ""
-
-#: src/stored/btape.c:206
-#, c-format
-msgid "Tape block granularity is %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:279
-msgid "No archive name specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:283
-msgid "Improper number of arguments specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:297
-msgid "btape does not work with DVD storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:302
-msgid "btape only works with tape storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:383
-#, c-format
-msgid "Total Volume bytes=%sB. Total Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:409
-#, c-format
-msgid "Volume bytes=%sB. Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:477
-#, c-format
-msgid "open device %s: OK\n"
-msgstr ""
-
-#: src/stored/btape.c:500
-msgid "Enter Volume Name: "
-msgstr ""
-
-#: src/stored/btape.c:507
-#, c-format
-msgid "Device open failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:512
-#, c-format
-msgid "Wrote Volume label for volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/btape.c:526
-msgid "Volume has no label.\n"
-msgstr ""
-
-#: src/stored/btape.c:529
-msgid "Volume label read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:532
-#, c-format
-msgid "I/O error on device: ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:535
-msgid "Volume name error\n"
-msgstr ""
-
-#: src/stored/btape.c:538
-#, c-format
-msgid "Error creating label. ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:541
-msgid "Volume version error.\n"
-msgstr ""
-
-#: src/stored/btape.c:544
-msgid "Bad Volume label type.\n"
-msgstr ""
-
-#: src/stored/btape.c:547
-msgid "Unknown error.\n"
-msgstr ""
-
-#: src/stored/btape.c:565
-#, c-format
-msgid "Bad status from load. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:567
-#, c-format
-msgid "Loaded %s\n"
-msgstr ""
-
-#: 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:1571
-#, c-format
-msgid "Rewound %s\n"
-msgstr ""
-
-#: src/stored/btape.c:605 src/stored/btape.c:1575
-#, c-format
-msgid "Bad status from weof. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:609
-#, c-format
-msgid "Wrote 1 EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:612
-#, c-format
-msgid "Wrote %d EOFs to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:630
-msgid "Moved to end of medium.\n"
-msgstr ""
-
-#: src/stored/btape.c:657
-#, c-format
-msgid "Bad status from bsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:659
-#, c-format
-msgid "Backspaced %d file%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:676
-#, c-format
-msgid "Bad status from bsr. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:678
-#, c-format
-msgid "Backspaced %d record%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:706
-#, c-format
-msgid "Device status:\n"
-msgstr ""
-
-#: src/stored/btape.c:725
-#, c-format
-msgid "Status:\n"
-msgstr ""
-
-#: src/stored/btape.c:740
-msgid ""
-"Test writing larger and larger records.\n"
-"This is a torture test for records.\n"
-"I am going to write\n"
-"larger and larger records. It will stop when the record size\n"
-"plus the header exceeds the block size (by default about 64K)\n"
-msgstr ""
-
-#: src/stored/btape.c:746
-msgid "Do you want to continue? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:748 src/stored/btape.c:2200
-msgid "Command aborted.\n"
-msgstr ""
-
-#: src/stored/btape.c:765
-#, c-format
-msgid "Block %d i=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:792
-msgid "Skipping read backwards test because BSR turned off.\n"
-msgstr ""
-
-#: src/stored/btape.c:796
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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: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:816
-#, c-format
-msgid "Wrote first record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:827
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:838
-#, c-format
-msgid "Wrote third record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:845 src/stored/btape.c:850
-#, c-format
-msgid "Backspace file failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:854
-msgid "Backspaced over EOF OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:856
-#, c-format
-msgid "Backspace record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:859
-msgid "Backspace record OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:862 src/stored/btape.c:868
-#, c-format
-msgid "Read block failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:873
-msgid "Bad data in record. Test failed!\n"
-msgstr ""
-
-#: src/stored/btape.c:877
-msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
-msgstr ""
-
-#: src/stored/btape.c:878
-msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
-msgstr ""
-
-#: 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"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
-msgstr ""
-
-#: 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:928 src/stored/btape.c:2879
-#, c-format
-msgid "Write failed at block %u. stat=%d ERR=%s\n"
-msgstr ""
-
-#: 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:971
-msgid ""
-"\n"
-"Error writing record to block.\n"
-msgstr ""
-
-#: src/stored/btape.c:975
-msgid ""
-"\n"
-"Error writing block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1030
-msgid "The file_size is too big, stop this test with Ctrl-c.\n"
-msgstr ""
-
-#: src/stored/btape.c:1058
-msgid "Test with zero data, should give the maximum throughput.\n"
-msgstr ""
-
-#: 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:1085
-msgid "Test with zero data and bacula block structure.\n"
-msgstr ""
-
-#: src/stored/btape.c:1125
-#, c-format
-msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write %d records and an EOF\n"
-"then write %d records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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:1215 src/stored/btape.c:1295
-msgid "Rewind OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1228 src/stored/btape.c:1347
-msgid "Got EOF on tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:1233
-#, c-format
-msgid "Read block %d failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1239
-#, c-format
-msgid "Read record failed. Block %d! ERR=%s\n"
-msgstr ""
-
-#: 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:1252
-#, c-format
-msgid "%d blocks re-read correctly.\n"
-msgstr ""
-
-#: 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:1283
-msgid "Block position test\n"
-msgstr ""
-
-#: src/stored/btape.c:1338
-#, c-format
-msgid "Reposition to file:block %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:1340
-msgid "Reposition error.\n"
-msgstr ""
-
-#: 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:1355
-msgid ""
-"This may be because the tape drive block size is not\n"
-" set to variable blocking as normally used by Bacula.\n"
-" Please see the Tape Testing chapter in the manual and \n"
-" look for using mt with defblksize and setoptions\n"
-"If your tape drive block size is correct, then perhaps\n"
-" your SCSI driver is *really* stupid and does not\n"
-" correctly report the file:block after a FSF. In this\n"
-" case try setting:\n"
-"    Fast Forward Space File = no\n"
-" in your Device resource.\n"
-msgstr ""
-
-#: src/stored/btape.c:1371
-#, c-format
-msgid "Read record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1382
-#, c-format
-msgid "Block %d re-read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:1403
-msgid ""
-"\n"
-"\n"
-"=== Append files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1427
-msgid "Now moving to end of medium.\n"
-msgstr ""
-
-#: 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: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: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:1436
-msgid ""
-"\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1443
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1444
-msgid "Doing Bacula scan of blocks:\n"
-msgstr ""
-
-#: src/stored/btape.c:1446
-msgid "End scanning the tape.\n"
-msgstr ""
-
-#: 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:1472
-msgid ""
-"\n"
-"Autochanger enabled, but no name or no command device specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:1476
-msgid ""
-"\n"
-"Ah, I see you have an autochanger configured.\n"
-"To test the autochanger you must have a blank tape\n"
-" that I can write on in Slot 1.\n"
-msgstr ""
-
-#: src/stored/btape.c:1479
-msgid ""
-"\n"
-"Do you wish to continue with the Autochanger test? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:1486
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1495
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1504
-#, c-format
-msgid "3991 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1505
-#, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1509
-#, c-format
-msgid "Slot %d loaded. I am going to unload it.\n"
-msgstr ""
-
-#: src/stored/btape.c:1511
-msgid "Nothing loaded in the drive. OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1518
-#, c-format
-msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-#, c-format
-msgid "unload status=%s %d\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-msgid "Bad"
-msgstr ""
-
-#: src/stored/btape.c:1526
-#, c-format
-msgid "3992 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1527
-#, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1537
-#, c-format
-msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1545
-#, c-format
-msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1549
-#, c-format
-msgid "3993 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1550
-#, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1565
-msgid ""
-"\n"
-"The test failed, probably because you need to put\n"
-"a longer sleep time in the mtx-script in the load) case.\n"
-"Adding a 30 second sleep and trying again ...\n"
-msgstr ""
-
-#: src/stored/btape.c:1578
-#, c-format
-msgid "Wrote EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1582
-#, c-format
-msgid ""
-"\n"
-"The test worked this time. Please add:\n"
-"\n"
-"   sleep %d\n"
-"\n"
-"to your mtx-changer script in the load) case.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1587
-msgid ""
-"\n"
-"The test autochanger worked!!\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1598
-msgid "You must correct this error or the Autochanger will not work.\n"
-msgstr ""
-
-#: src/stored/btape.c:1616
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1641
-msgid "Now forward spacing 1 file.\n"
-msgstr ""
-
-#: 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:1646
-#, c-format
-msgid "We should be in file 1. I am at file %d. %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1653
-msgid "Now forward spacing 2 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1666
-msgid "Now forward spacing 4 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1678
-msgid ""
-"The test worked this time. Please add:\n"
-"\n"
-"   Fast Forward Space File = no\n"
-"\n"
-"to your Device resource for this drive.\n"
-msgstr ""
-
-#: src/stored/btape.c:1684
-msgid "Now forward spacing 1 more file.\n"
-msgstr ""
-
-#: 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:1693
-msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1697
-msgid ""
-"\n"
-"The forward space file test failed.\n"
-msgstr ""
-
-#: 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:1705
-msgid ""
-"You must correct this error or Bacula will not work.\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1739
-msgid ""
-"\n"
-"Append test failed. Attempting again.\n"
-"Setting \"Hardware End of Medium = no\n"
-"    and \"Fast Forward Space File = no\n"
-"and retrying append test.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1747
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"\n"
-"    Fast Forward Space File = No\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1754
-msgid ""
-"\n"
-"\n"
-"That appears *NOT* to have corrected the problem.\n"
-msgstr ""
-
-#: src/stored/btape.c:1759
-msgid ""
-"\n"
-"\n"
-"It looks like the append failed. Attempting again.\n"
-"Setting \"BSF at EOM = yes\" and retrying append test.\n"
-msgstr ""
-
-#: src/stored/btape.c:1764
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"    Fast Forward Space File = No\n"
-"    BSF at EOM = yes\n"
-"\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1775
-msgid ""
-"\n"
-"Append test failed.\n"
-"\n"
-"\n"
-"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
-"Unable to correct the problem. You MUST fix this\n"
-"problem before Bacula can use your tape drive correctly\n"
-"\n"
-"Perhaps running Bacula in fixed block mode will work.\n"
-"Do so by setting:\n"
-"\n"
-"Minimum Block Size = nnn\n"
-"Maximum Block Size = nnn\n"
-"\n"
-"in your Storage daemon's Device definition.\n"
-"nnn must match your tape driver's block size, which\n"
-"can be determined by reading your tape manufacturers\n"
-"information, and the information on your kernel dirver.\n"
-"Fixed block sizes, however, are not normally an ideal solution.\n"
-"\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1797
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1840
-#, c-format
-msgid "Bad status from fsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1844
-msgid "Forward spaced 1 file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1847
-#, c-format
-msgid "Forward spaced %d files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1866
-msgid "Forward spaced 1 record.\n"
-msgstr ""
-
-#: src/stored/btape.c:1869
-#, c-format
-msgid "Forward spaced %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:1914
-#, c-format
-msgid "Wrote one record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1916
-msgid "Wrote block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1930
-msgid "Enter length to read: "
-msgstr ""
-
-#: src/stored/btape.c:1935
-msgid "Bad length entered, using default of 1024 bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1944
-#, c-format
-msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1967 src/stored/btape.c:2016
-#, c-format
-msgid "End of tape\n"
-msgstr ""
-
-#: src/stored/btape.c:1972
-#, c-format
-msgid "Starting scan at file %u\n"
-msgstr ""
-
-#: src/stored/btape.c:1979
-#, c-format
-msgid "Bad status from read %d. ERR=%s\n"
-msgstr ""
-
-#: 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: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:2007 src/stored/btape.c:2079
-#, c-format
-msgid "End of File mark.\n"
-msgstr ""
-
-#: 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:2092
-#, c-format
-msgid "Short block read.\n"
-msgstr ""
-
-#: src/stored/btape.c:2095
-#, c-format
-msgid "Error reading block. ERR=%s\n"
-msgstr ""
-
-#: 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:2141
-#, c-format
-msgid "Device status: %u. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2173
-#, c-format
-msgid ""
-"\n"
-"This command simulates Bacula writing to a tape.\n"
-"It requires either one or two blank tapes, which it\n"
-"will label and write.\n"
-"\n"
-"If you have an autochanger configured, it will use\n"
-"the tapes that are in slots 1 and 2, otherwise, you will\n"
-"be prompted to insert the tapes when necessary.\n"
-"\n"
-"It will print a status approximately\n"
-"every 322 MB, and write an EOF every %s.  If you have\n"
-"selected the simple test option, after writing the first tape\n"
-"it will rewind it and re-read the last block written.\n"
-"\n"
-"If you have selected the multiple tape test, when the first tape\n"
-"fills, it will ask for a second, and after writing a few more \n"
-"blocks, it will stop.  Then it will begin re-reading the\n"
-"two tapes.\n"
-"\n"
-"This may take a long time -- hours! ...\n"
-"\n"
-msgstr ""
-
-#: 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:2194
-msgid "Simple test (single tape) selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2197
-msgid "Multiple tape test selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2239
-msgid "Wrote Start of Session label.\n"
-msgstr ""
-
-#: src/stored/btape.c:2258
-#, c-format
-msgid "%s Begin writing Bacula records to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2260
-#, c-format
-msgid "%s Begin writing Bacula records to first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2286
-msgid "Flush block failed.\n"
-msgstr ""
-
-#: 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:2311
-#, c-format
-msgid "%s Flush block, write EOF\n"
-msgstr ""
-
-#: src/stored/btape.c:2320
-msgid "Wrote 1000 blocks on second tape. Done.\n"
-msgstr ""
-
-#: src/stored/btape.c:2325
-msgid "Not OK\n"
-msgstr ""
-
-#: src/stored/btape.c:2349
-msgid "Job canceled.\n"
-msgstr ""
-
-#: src/stored/btape.c:2360
-msgid "Set ok=false after write_block_to_device.\n"
-msgstr ""
-
-#: src/stored/btape.c:2364
-msgid "Wrote End of Session label.\n"
-msgstr ""
-
-#: 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:2392
-#, c-format
-msgid "Could not create state file: %s ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2403
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2406
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2412
-msgid "do_unfill failed.\n"
-msgstr ""
-
-#: src/stored/btape.c:2417
-#, c-format
-msgid "%s: Error during test.\n"
-msgstr ""
-
-#: 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:2459
-#, c-format
-msgid ""
-"\n"
-"Could not find the state file: %s ERR=%s\n"
-"You must redo the fill command.\n"
-msgstr ""
-
-#: src/stored/btape.c:2525
-msgid "Mount first tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2541
-msgid "Rewinding.\n"
-msgstr ""
-
-#: src/stored/btape.c:2546
-#, c-format
-msgid "Reading the first 10000 records from %u:%u.\n"
-msgstr ""
-
-#: 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:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
-#, c-format
-msgid "Reposition error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2556
-#, c-format
-msgid "Reading block %u.\n"
-msgstr ""
-
-#: 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:2563
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2566
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2590
-msgid "Mount second tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2603
-#, c-format
-msgid "Reposition from %u:%u to 0:1\n"
-msgstr ""
-
-#: src/stored/btape.c:2608 src/stored/btape.c:2624
-#, c-format
-msgid "Reading block %d.\n"
-msgstr ""
-
-#: src/stored/btape.c:2614
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2630
-msgid ""
-"\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2647
-#, c-format
-msgid "10000 records read now at %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
-msgid "Last block written"
-msgstr ""
-
-#: src/stored/btape.c:2675 src/stored/btape.c:2685
-msgid "Block read back"
-msgstr ""
-
-#: src/stored/btape.c:2676
-#, c-format
-msgid ""
-"\n"
-"\n"
-"The blocks differ at byte %u\n"
-msgstr ""
-
-#: src/stored/btape.c:2677
-msgid ""
-"\n"
-"\n"
-"!!!! The last block written and the block\n"
-"that was read back differ. The test FAILED !!!!\n"
-"This must be corrected before you use Bacula\n"
-"to write multi-tape Volumes.!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:2713
-#, c-format
-msgid "Last block at: %u:%u this_dev_block_num=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2727
-#, c-format
-msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:2731
-msgid "Block not written"
-msgstr ""
-
-#: 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:2797
-msgid "Test writing blocks of 64512 bytes to tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:2799
-msgid "How many blocks do you want to write? (1000): "
-msgstr ""
-
-#: src/stored/btape.c:2816
-#, c-format
-msgid "Begin writing %d Bacula blocks to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2859
-#, c-format
-msgid "Begin writing raw blocks of %u bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:2890
-msgid "test autochanger"
-msgstr ""
-
-#: src/stored/btape.c:2891
-msgid "backspace file"
-msgstr ""
-
-#: src/stored/btape.c:2892
-msgid "backspace record"
-msgstr ""
-
-#: src/stored/btape.c:2893
-msgid "list device capabilities"
-msgstr ""
-
-#: src/stored/btape.c:2894
-msgid "clear tape errors"
-msgstr ""
-
-#: src/stored/btape.c:2895
-msgid "go to end of Bacula data for append"
-msgstr ""
-
-#: src/stored/btape.c:2896
-msgid "go to the physical end of medium"
-msgstr ""
-
-#: src/stored/btape.c:2897
-msgid "fill tape, write onto second volume"
-msgstr ""
-
-#: src/stored/btape.c:2898
-msgid "read filled tape"
-msgstr ""
-
-#: src/stored/btape.c:2899
-msgid "forward space a file"
-msgstr ""
-
-#: src/stored/btape.c:2900
-msgid "forward space a record"
-msgstr ""
-
-#: src/stored/btape.c:2901
-msgid "print this command"
-msgstr ""
-
-#: src/stored/btape.c:2902
-msgid "write a Bacula label to the tape"
-msgstr ""
-
-#: src/stored/btape.c:2903
-msgid "load a tape"
-msgstr ""
-
-#: src/stored/btape.c:2904
-msgid "quit btape"
-msgstr ""
-
-#: src/stored/btape.c:2905
-msgid "use write() to fill tape"
-msgstr ""
-
-#: src/stored/btape.c:2906
-msgid "read and print the Bacula tape label"
-msgstr ""
-
-#: src/stored/btape.c:2907
-msgid "test record handling functions"
-msgstr ""
-
-#: src/stored/btape.c:2908
-msgid "rewind the tape"
-msgstr ""
-
-#: src/stored/btape.c:2909
-msgid "read() tape block by block to EOT and report"
-msgstr ""
-
-#: src/stored/btape.c:2910
-msgid "Bacula read block by block to EOT and report"
-msgstr ""
-
-#: 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:2912
-msgid "print tape status"
-msgstr ""
-
-#: src/stored/btape.c:2913
-msgid "General test Bacula tape functions"
-msgstr ""
-
-#: src/stored/btape.c:2914
-msgid "write an EOF on the tape"
-msgstr ""
-
-#: src/stored/btape.c:2915
-msgid "write a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2916
-msgid "read a single record"
-msgstr ""
-
-#: src/stored/btape.c:2917
-msgid "read a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2918
-msgid "quick fill command"
-msgstr ""
-
-#: src/stored/btape.c:2939
-#, c-format
-msgid "\"%s\" is an invalid command\n"
-msgstr ""
-
-#: src/stored/btape.c:2948
-#, c-format
-msgid "Interactive commands:\n"
-msgstr ""
-
-#: src/stored/btape.c:2959
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap 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"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:3047
-#, c-format
-msgid "Mount second Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3075
-#, c-format
-msgid "Mount blank Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3095
-#, c-format
-msgid "End of Volume \"%s\" %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:3109
-#, c-format
-msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:61
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
-msgstr ""
-
-#: src/stored/authenticate.c:67 src/filed/authenticate.c:76
-#, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:78 src/filed/authenticate.c:88
-#, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:92
-#, c-format
-msgid ""
-"Connection from unknown Director %s at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:129
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:137 src/stored/authenticate.c:248
-#: src/filed/authenticate.c:151 src/filed/authenticate.c:270
-msgid ""
-"Authorization problem: Remote server did not advertize required TLS "
-"support.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:155
-#, c-format
-msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
-msgstr ""
-
-#: src/stored/authenticate.c:191
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:239 src/stored/authenticate.c:279
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:266
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
-msgstr ""
-
-#: src/stored/wait.c:133
-#, c-format
-msgid "pthread timedwait error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/wait.c:239
-#, c-format
-msgid "JobId=%s, Job %s waiting to reserve a device.\n"
-msgstr ""
-
-#: 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:115
-#, c-format
-msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
-msgstr ""
-
-#: src/stored/block.c:171
-#, c-format
-msgid "%d block read errors not printed.\n"
-msgstr ""
-
-#: 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: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: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:452
-#, c-format
-msgid "Cannot write block. Device at EOM. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:458
-#, c-format
-msgid "Attempt to write on read-only Volume. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:464
-#, c-format
-msgid "Attempt to write on closed device=%s\n"
-msgstr ""
-
-#: src/stored/block.c:513
-#, c-format
-msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
-msgstr ""
-
-#: src/stored/block.c:528
-#, c-format
-msgid "Unable to write EOF. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:554 src/stored/block.c:588
-msgid "Write block header zeroed.\n"
-msgstr ""
-
-#: 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: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:695 src/stored/block.c:701
-#, c-format
-msgid "Backspace file at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:708
-#, c-format
-msgid "Backspace record at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:725
-#, c-format
-msgid "Re-read last block at EOT failed. ERR=%s"
-msgstr ""
-
-#: 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: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:744
-msgid "Re-read of last block succeeded.\n"
-msgstr ""
-
-#: 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:791
-#, c-format
-msgid ""
-"Error writing final part to DVD. This Volume may not be readable.\n"
-"%s"
-msgstr ""
-
-#: 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:904
-#, c-format
-msgid "Unable to open device next part %s: ERR=%s\n"
-msgstr ""
-
-#: 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: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: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:1017
-#, c-format
-msgid "Unable to open device part=%d %s: ERR=%s\n"
-msgstr ""
-
-#: 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:1057
-#, c-format
-msgid "Read zero bytes at %u:%u on device %s.\n"
-msgstr ""
-
-#: 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:1107
-#, c-format
-msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
-msgstr ""
-
-#: src/stored/block.c:1127
-#, c-format
-msgid "Setting block buffer size to %u bytes.\n"
-msgstr ""
-
-#: 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:117
-#, c-format
-msgid "Failed to open Plugin directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:134
-#, c-format
-msgid "Failed to find any plugins in %s\n"
-msgstr ""
-
-#: src/lib/plugins.c:168
-#, c-format
-msgid "dlopen plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:179
-#, c-format
-msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:188
-#, c-format
-msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:116
-msgid "Could not initialize Python\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:121
-#, c-format
-msgid "Could not Run Python string %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:133
-msgid "Could not initialize Python Job type.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:138
-#, c-format
-msgid "Could not import Python script %s/%s. Python disabled.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:240
-msgid "Could not create Python Job Object.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:253 src/lib/pythonlib.c:277
-#, c-format
-msgid "Python function \"%s\" not found.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:292
-#, c-format
-msgid "Unknown Python daemon event %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:317
-#, c-format
-msgid "Unable to initialize the Python lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:96
-#, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:193
-msgid "BUG! register_watchdog called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:196
-#, c-format
-msgid "BUG! Watchdog %p has NULL callback\n"
-msgstr ""
-
-#: src/lib/watchdog.c:199
-#, c-format
-msgid "BUG! Watchdog %p has zero interval\n"
-msgstr ""
-
-#: src/lib/watchdog.c:219
-msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:339
-#, c-format
-msgid "rwl_writelock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:354
-#, c-format
-msgid "rwl_writeunlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/attr.c:81
-#, c-format
-msgid "Error scanning attributes: %s\n"
-msgstr ""
-
-#: src/lib/smartall.c:145 src/lib/smartall.c:256 src/lib/smartall.c:271
-msgid "Out of memory\n"
-msgstr ""
-
-#: src/lib/smartall.c:150
-msgid "Too much memory used."
-msgstr ""
-
-#: src/lib/smartall.c:180
-#, c-format
-msgid "Attempt to free NULL called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:194
-#, c-format
-msgid "double free from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:202
-#, c-format
-msgid "qp->qnext->qprev != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:206
-#, c-format
-msgid "qp->qprev->qnext != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:215
-#, c-format
-msgid "Overrun buffer: len=%d addr=%p allocated: %s:%d called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:293
-#, c-format
-msgid "sm_realloc size: %d\n"
-msgstr ""
-
-#: src/lib/smartall.c:331
-#, c-format
-msgid "sm_realloc %d at %p from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:391
-#, c-format
-msgid ""
-"\n"
-"Orphaned buffers exist.  Dump terminated following\n"
-"  discovery of bad links in chain of orphaned buffers.\n"
-"  Buffer address with bad links: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:436
-#, c-format
-msgid "Damaged buffer found. Called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:469
-#, c-format
-msgid ""
-"\n"
-"Damaged buffers found at %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:472
-msgid "  discovery of bad prev link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:475
-msgid "  discovery of bad next link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:478
-msgid "  discovery of data overrun.\n"
-msgstr ""
-
-#: src/lib/smartall.c:481
-msgid "  NULL pointer.\n"
-msgstr ""
-
-#: src/lib/smartall.c:487
-#, c-format
-msgid "  Buffer address: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:494
-#, c-format
-msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
-msgstr ""
-
-#: 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: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: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: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: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:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
-msgid "Try write lock"
-msgstr ""
-
-#: 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:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
-msgid "Create thread"
-msgstr ""
-
-#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
-msgid "Join thread"
-msgstr ""
-
-#: 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:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
-#, c-format
-msgid "data %02d: value %d, %d updates\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:97
-msgid "Status OK\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:101
-#, c-format
-msgid "bget_msg: unknown signal %d\n"
-msgstr ""
-
-#: 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:137
-#, c-format
-msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:207
-#, c-format
-msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:260
-#, c-format
-msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:273
-#, c-format
-msgid "Source address bind error. proto=%d. ERR=%s\n"
-msgstr ""
-
-#: 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:292
-#, c-format
-msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
-msgstr ""
-
-#: src/lib/bsock.c:339
-#, c-format
-msgid "Could not init bsock mutex. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:374
-#, c-format
-msgid "Socket has errors=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:381
-#, c-format
-msgid "Socket is terminated=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: 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:427
-#, c-format
-msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
-msgstr ""
-
-#: 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:522 src/lib/bsock.c:583
-#, c-format
-msgid "Read expected %d got %d from %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:542
-#, c-format
-msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
-msgstr ""
-
-#: src/lib/bsock.c:572
-#, c-format
-msgid "Read error from %s:%s:%d: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:663
-msgid "fread attr spool I/O error.\n"
-msgstr ""
-
-#: src/lib/bsock.c:724
-msgid "Could not malloc BSOCK data buffer\n"
-msgstr ""
-
-#: src/lib/bsock.c:742 src/lib/bsock.c:761
-#, c-format
-msgid "sockopt error: %s\n"
-msgstr ""
-
-#: 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:787 src/lib/bsock.c:821
-#, c-format
-msgid "fcntl F_GETFL error. ERR=%s\n"
-msgstr ""
-
-#: 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:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
-#, c-format
-msgid "Director authorization problem at \"%s:%d\"\n"
-msgstr ""
-
-#: 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: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: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: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: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:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
-#, c-format
-msgid ""
-"Authorization problem with Director at \"%s:%d\"\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-
-#: 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:377
-#, c-format
-msgid "Could not get con mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:482
-msgid "Bacula Message"
-msgstr ""
-
-#: src/lib/message.c:486
-#, c-format
-msgid "open mail pipe %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:577
-msgid "open mail pipe failed.\n"
-msgstr ""
-
-#: src/lib/message.c:590
-#, c-format
-msgid "close error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:601
-#, c-format
-msgid "Mail prog: %s"
-msgstr ""
-
-#: src/lib/message.c:610
-#, c-format
-msgid ""
-"Mail program terminated in error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:713
-#, c-format
-msgid "fopen %s failed: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:911
-#, c-format
-msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:1230
-#, c-format
-msgid "%s: ABORTING due to ERROR in %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1234
-#, c-format
-msgid "%s: ERROR TERMINATION at %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1239
-#, c-format
-msgid "%s: Fatal Error because: "
-msgstr ""
-
-#: src/lib/message.c:1241
-#, c-format
-msgid "%s: Fatal Error at %s:%d because:\n"
-msgstr ""
-
-#: src/lib/message.c:1245
-#, c-format
-msgid "%s: ERROR: "
-msgstr ""
-
-#: src/lib/message.c:1247
-#, c-format
-msgid "%s: ERROR in %s:%d "
-msgstr ""
-
-#: src/lib/message.c:1250
-#, c-format
-msgid "%s: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1253
-#, c-format
-msgid "%s: Security violation: "
-msgstr ""
-
-#: src/lib/message.c:1341
-#, c-format
-msgid "%s ABORTING due to ERROR\n"
-msgstr ""
-
-#: src/lib/message.c:1344
-#, c-format
-msgid "%s ERROR TERMINATION\n"
-msgstr ""
-
-#: src/lib/message.c:1347
-#, c-format
-msgid "%s JobId %u: Fatal error: "
-msgstr ""
-
-#: src/lib/message.c:1356
-#, c-format
-msgid "%s JobId %u: Error: "
-msgstr ""
-
-#: src/lib/message.c:1362
-#, c-format
-msgid "%s JobId %u: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1368
-#, c-format
-msgid "%s JobId %u: Security violation: "
-msgstr ""
-
-#: 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:138
-#, c-format
-msgid "Cannot set SO_REUSEADDR on socket: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:147
-#, c-format
-msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:152
-#, c-format
-msgid "Cannot bind port %d: ERR=%s.\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:163
-#, c-format
-msgid "Could not init client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:182
-#, c-format
-msgid "Error in select: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:203
-#, c-format
-msgid "Connection from %s:%d refused by hosts.access\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:229
-msgid "Could not create client BSOCK.\n"
-msgstr ""
-
-#: 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:253
-#, c-format
-msgid "Could not destroy client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bpipe.c:361 src/lib/bpipe.c:444
-msgid "Program killed by Bacula (timeout)\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:65
-#, c-format
-msgid "ASSERT failed at %s:%i: %s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:70
-#, c-format
-msgid "ASSERT failed at %s:%i: %s \n"
-msgstr ""
-
-#: src/lib/lockmgr.c:100
-#, c-format
-msgid "Mutex lock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:110
-#, c-format
-msgid "Mutex unlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:275 src/lib/lockmgr.c:611 src/lib/lockmgr.c:639
-#: src/lib/jcr.c:321
-#, c-format
-msgid "pthread key create failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:623
-#, c-format
-msgid "pthread_create failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/crypto.c:442
-msgid "Unable to open certificate file"
-msgstr ""
-
-#: src/lib/crypto.c:449
-msgid "Unable to read certificate from file"
-msgstr ""
-
-#: src/lib/crypto.c:455
-msgid "Unable to extract public key from certificate"
-msgstr ""
-
-#: src/lib/crypto.c:462
-msgid ""
-"Provided certificate does not include the required subjectKeyIdentifier "
-"extension."
-msgstr ""
-
-#: src/lib/crypto.c:469
-#, c-format
-msgid "Unsupported key type provided: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:506 src/lib/crypto.c:554
-msgid "Unable to open private key file"
-msgstr ""
-
-#: src/lib/crypto.c:536 src/lib/crypto.c:570
-msgid "Unable to read private key from file"
-msgstr ""
-
-#: src/lib/crypto.c:629
-#, c-format
-msgid "Unsupported digest type: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:643
-msgid "OpenSSL digest initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:657
-msgid "OpenSSL digest update failed"
-msgstr ""
-
-#: src/lib/crypto.c:675
-msgid "OpenSSL digest finalize failed"
-msgstr ""
-
-#: src/lib/crypto.c:773
-msgid "OpenSSL digest_new failed"
-msgstr ""
-
-#: src/lib/crypto.c:779
-msgid "OpenSSL sign get digest failed"
-msgstr ""
-
-#: src/lib/crypto.c:818 src/lib/crypto.c:822
-msgid "OpenSSL digest Verify final failed"
-msgstr ""
-
-#: src/lib/crypto.c:827
-msgid "No signers found for crypto verify.\n"
-msgstr ""
-
-#: src/lib/crypto.c:888
-msgid "Signature creation failed"
-msgstr ""
-
-#: src/lib/crypto.c:966
-msgid "Signature decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1043
-msgid "Unsupported cipher type specified\n"
-msgstr ""
-
-#: src/lib/crypto.c:1192
-msgid "CryptoData decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1236
-msgid "Failure decrypting the session key"
-msgstr ""
-
-#: src/lib/crypto.c:1287
-#, c-format
-msgid "Unsupported contentEncryptionAlgorithm: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1297 src/lib/crypto.c:1303
-msgid "OpenSSL cipher context initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1310
-msgid "Encryption session provided an invalid symmetric key"
-msgstr ""
-
-#: src/lib/crypto.c:1316
-msgid "Encryption session provided an invalid IV"
-msgstr ""
-
-#: src/lib/crypto.c:1322
-msgid "OpenSSL cipher context key/IV initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1392
-#, c-format
-msgid "Unable to init OpenSSL threading: ERR=%s\n"
-msgstr ""
-
-#: src/lib/crypto.c:1405
-msgid "Failed to seed OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1431
-msgid "Failed to save OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1492
-#, c-format
-msgid "Unsupported digest type=%d specified\n"
-msgstr ""
-
-#: src/lib/crypto.c:1512
-#, c-format
-msgid "SHA1Update() returned an error: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1655
-msgid "No error"
-msgstr ""
-
-#: src/lib/crypto.c:1657
-msgid "Signer not found"
-msgstr ""
-
-#: src/lib/crypto.c:1659
-msgid "Recipient not found"
-msgstr ""
-
-#: src/lib/crypto.c:1661
-msgid "Unsupported digest algorithm"
-msgstr ""
-
-#: src/lib/crypto.c:1663
-msgid "Unsupported encryption algorithm"
-msgstr ""
-
-#: src/lib/crypto.c:1665
-msgid "Signature is invalid"
-msgstr ""
-
-#: src/lib/crypto.c:1667
-msgid "Decryption error"
-msgstr ""
-
-#: src/lib/crypto.c:1670
-msgid "Internal error"
-msgstr ""
-
-#: src/lib/crypto.c:1672
-msgid "Unknown error"
-msgstr ""
-
-#: src/lib/cram-md5.c:109 src/lib/cram-md5.c:137
-msgid "1999 Authorization failed.\n"
-msgstr ""
-
-#: src/lib/priv.c:68
-#, c-format
-msgid "Could not find userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:74
-#, c-format
-msgid "Could not find password entry. ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:87
-#, c-format
-msgid "Could not find group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:95
-#, c-format
-msgid "Could not initgroups for group=%s, userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:98
-#, c-format
-msgid "Could not initgroups for userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:105
-#, c-format
-msgid "Could not set group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:115
-#, c-format
-msgid "prctl failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:119
-#, c-format
-msgid "setreuid failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:123
-#, c-format
-msgid "cap_from_text failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:127
-#, c-format
-msgid "cap_set_proc failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:131
-msgid "Keep readall caps not implemented this OS or missing libraries.\n"
-msgstr ""
-
-#: src/lib/priv.c:135
-#, c-format
-msgid "Could not set specified userid: %s\n"
-msgstr ""
-
-#: src/lib/openssl.c:143 src/lib/openssl.c:214
-#, c-format
-msgid "Unable to destroy mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/util.c:183
-msgid "Running"
-msgstr ""
-
-#: src/lib/util.c:186
-msgid "Blocked"
-msgstr ""
-
-#: src/lib/util.c:192
-msgid "Error: incomplete job"
-msgstr ""
-
-#: src/lib/util.c:199
-msgid "Non-fatal error"
-msgstr ""
-
-#: src/lib/util.c:205 src/lib/util.c:337
-msgid "Canceled"
-msgstr ""
-
-#: src/lib/util.c:208
-msgid "Verify differences"
-msgstr ""
-
-#: src/lib/util.c:211
-msgid "Waiting on FD"
-msgstr ""
-
-#: src/lib/util.c:214
-msgid "Wait on SD"
-msgstr ""
-
-#: src/lib/util.c:217
-msgid "Wait for new Volume"
-msgstr ""
-
-#: src/lib/util.c:220
-msgid "Waiting for mount"
-msgstr ""
-
-#: src/lib/util.c:223
-msgid "Waiting for Storage resource"
-msgstr ""
-
-#: src/lib/util.c:226
-msgid "Waiting for Job resource"
-msgstr ""
-
-#: src/lib/util.c:229
-msgid "Waiting for Client resource"
-msgstr ""
-
-#: src/lib/util.c:232
-msgid "Waiting on Max Jobs"
-msgstr ""
-
-#: src/lib/util.c:235
-msgid "Waiting for Start Time"
-msgstr ""
-
-#: src/lib/util.c:238
-msgid "Waiting on Priority"
-msgstr ""
-
-#: src/lib/util.c:257
-#, c-format
-msgid "Unknown Job termination status=%d"
-msgstr ""
-
-#: src/lib/util.c:273
-msgid "Completed successfully"
-msgstr ""
-
-#: src/lib/util.c:276
-msgid "Completed with warnings"
-msgstr ""
-
-#: src/lib/util.c:279
-msgid "Terminated with errors"
-msgstr ""
-
-#: src/lib/util.c:282
-msgid "Fatal error"
-msgstr ""
-
-#: src/lib/util.c:285
-msgid "Created, not yet running"
-msgstr ""
-
-#: src/lib/util.c:288
-msgid "Canceled by user"
-msgstr ""
-
-#: src/lib/util.c:291
-msgid "Verify found differences"
-msgstr ""
-
-#: src/lib/util.c:294
-msgid "Waiting for File daemon"
-msgstr ""
-
-#: src/lib/util.c:297
-msgid "Waiting for Storage daemon"
-msgstr ""
-
-#: src/lib/util.c:300
-msgid "Waiting for higher priority jobs"
-msgstr ""
-
-#: src/lib/util.c:303
-msgid "Batch inserting file records"
-msgstr ""
-
-#: src/lib/util.c:334
-msgid "Fatal Error"
-msgstr ""
-
-#: src/lib/util.c:340
-msgid "Differences"
-msgstr ""
-
-#: src/lib/util.c:343
-msgid "Unknown term code"
-msgstr ""
-
-#: src/lib/util.c:359 src/lib/jcr.c:232
-msgid "Backup"
-msgstr ""
-
-#: src/lib/util.c:362
-msgid "Migrated Job"
-msgstr ""
-
-#: src/lib/util.c:365
-msgid "Verify"
-msgstr ""
-
-#: src/lib/util.c:368 src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:2000
-msgid "Restore"
-msgstr ""
-
-#: src/lib/util.c:371 src/wx-console/wxbmainframe.cpp:276
-msgid "Console"
-msgstr ""
-
-#: src/lib/util.c:374
-msgid "System or Console"
-msgstr ""
-
-#: src/lib/util.c:377
-msgid "Admin"
-msgstr ""
-
-#: src/lib/util.c:380 src/lib/util.c:470
-msgid "Archive"
-msgstr ""
-
-#: src/lib/util.c:383
-msgid "Job Copy"
-msgstr ""
-
-#: src/lib/util.c:386
-msgid "Copy"
-msgstr ""
-
-#: src/lib/util.c:389
-msgid "Migrate"
-msgstr ""
-
-#: src/lib/util.c:392
-msgid "Scan"
-msgstr ""
-
-#: src/lib/util.c:396
-msgid "Unknown Type"
-msgstr ""
-
-#: src/lib/util.c:406
-msgid "Truncate"
-msgstr ""
-
-#: src/lib/util.c:409 src/filed/restore.c:1164
-msgid "None"
-msgstr ""
-
-#: src/lib/util.c:441
-msgid "Verify Init Catalog"
-msgstr ""
-
-#: src/lib/util.c:450
-msgid "Verify Data"
-msgstr ""
-
-#: src/lib/util.c:453
-msgid "Virtual Full"
-msgstr ""
-
-#: src/lib/util.c:469
-msgid "Append"
-msgstr ""
-
-#: src/lib/util.c:471
-msgid "Disabled"
-msgstr ""
-
-#: src/lib/util.c:473
-msgid "Used"
-msgstr ""
-
-#: src/lib/util.c:474
-msgid "Cleaning"
-msgstr ""
-
-#: src/lib/util.c:475
-msgid "Purged"
-msgstr ""
-
-#: src/lib/util.c:476
-msgid "Recycle"
-msgstr ""
-
-#: src/lib/util.c:477
-msgid "Read-Only"
-msgstr ""
-
-#: src/lib/util.c:489
-msgid "Invalid volume status"
-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:1180
-msgid "*none*"
-msgstr ""
-
-#: src/lib/util.c:867
-msgid "Working directory not defined. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:870
-#, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:874
-#, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:330 src/lib/devlock.c:330
-msgid "writeunlock called too many times.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:335 src/lib/devlock.c:335
-msgid "writeunlock by non-owner.\n"
-msgstr ""
-
-#: src/lib/daemon.c:65
-#, c-format
-msgid "Cannot fork to become daemon: ERR=%s\n"
-msgstr ""
-
-#: src/lib/tls.c:90
-#, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
-msgstr ""
-
-#: src/lib/tls.c:127
-msgid "Error initializing SSL context"
-msgstr ""
-
-#: src/lib/tls.c:148
-msgid "Error loading certificate verification stores"
-msgstr ""
-
-#: src/lib/tls.c:153
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
-msgstr ""
-
-#: src/lib/tls.c:164
-msgid "Error loading certificate file"
-msgstr ""
-
-#: src/lib/tls.c:172
-msgid "Error loading private key"
-msgstr ""
-
-#: src/lib/tls.c:180
-msgid "Unable to open DH parameters file"
-msgstr ""
-
-#: src/lib/tls.c:186
-msgid "Unable to load DH parameters from specified file"
-msgstr ""
-
-#: src/lib/tls.c:190
-msgid "Failed to set TLS Diffie-Hellman parameters"
-msgstr ""
-
-#: src/lib/tls.c:200
-msgid "Error setting cipher list, no valid ciphers available\n"
-msgstr ""
-
-#: src/lib/tls.c:259
-msgid "Peer failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:304
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:416
-msgid "Error creating file descriptor-based BIO"
-msgstr ""
-
-#: src/lib/tls.c:427
-msgid "Error creating new SSL object"
-msgstr ""
-
-#: src/lib/tls.c:491 src/lib/tls.c:514
-msgid "Connect failure"
-msgstr ""
-
-#: src/lib/tls.c:594 src/lib/tls.c:598
-msgid "TLS shutdown failure."
-msgstr ""
-
-#: src/lib/tls.c:653 src/lib/tls.c:679
-msgid "TLS read/write failure."
-msgstr ""
-
-#: src/lib/jcr.c:234
-msgid "Verifying"
-msgstr ""
-
-#: src/lib/jcr.c:236
-msgid "Restoring"
-msgstr ""
-
-#: src/lib/jcr.c:238
-msgid "Archiving"
-msgstr ""
-
-#: src/lib/jcr.c:240
-msgid "Copying"
-msgstr ""
-
-#: src/lib/jcr.c:242
-msgid "Migration"
-msgstr ""
-
-#: src/lib/jcr.c:244
-msgid "Scanning"
-msgstr ""
-
-#: src/lib/jcr.c:246
-msgid "Unknown operation"
-msgstr ""
-
-#: src/lib/jcr.c:255
-msgid "backup"
-msgstr ""
-
-#: src/lib/jcr.c:257
-msgid "verified"
-msgstr ""
-
-#: src/lib/jcr.c:257
-msgid "verify"
-msgstr ""
-
-#: src/lib/jcr.c:259
-msgid "restored"
-msgstr ""
-
-#: src/lib/jcr.c:259
-msgid "restore"
-msgstr ""
-
-#: src/lib/jcr.c:261
-msgid "archived"
-msgstr ""
-
-#: src/lib/jcr.c:261
-msgid "archive"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copied"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copy"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrated"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrate"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scanned"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scan"
-msgstr ""
-
-#: src/lib/jcr.c:269
-msgid "unknown action"
-msgstr ""
-
-#: src/lib/jcr.c:343
-#, c-format
-msgid "pthread_once failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/jcr.c:350
-#, c-format
-msgid "Could not init msg_queue mutex. ERR=%s\n"
-msgstr ""
-
-#: src/lib/jcr.c:403
-msgid "NULL jcr.\n"
-msgstr ""
-
-#: src/lib/jcr.c:509
-#, c-format
-msgid "JCR use_count=%d JobId=%d\n"
-msgstr ""
-
-#: src/lib/jcr.c:619
-#, c-format
-msgid "pthread_setspecific failed: ERR=%s\n"
-msgstr ""
-
-#: 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:1115
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
-msgstr ""
-
-#: src/lib/jcr.c:1127
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading Director.\n"
-msgstr ""
-
-#: src/lib/res.c:65
-#, c-format
-msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
-msgstr ""
-
-#: src/lib/res.c:75
-#, c-format
-msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:177
-msgid "***UNKNOWN***"
-msgstr ""
-
-#: src/lib/parse_conf.c:278 src/lib/parse_conf.c:299
-#, c-format
-msgid "expected an =, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:308
-#, c-format
-msgid "Unknown item code: %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:348
-#, c-format
-msgid "message type: %s not found"
-msgstr ""
-
-#: src/lib/parse_conf.c:386
-#, c-format
-msgid "Attempt to redefine name \"%s\" to \"%s\"."
-msgstr ""
-
-#: src/lib/parse_conf.c:483
-#, c-format
-msgid "Attempt to redefine resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:519
-#, c-format
-msgid "Too many %s directives. Max. is %d. line %d: %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:530
-#, c-format
-msgid "Could not find config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:593
-#, c-format
-msgid "Missing config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:665
-#, c-format
-msgid "expected a size number, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:670
-#, c-format
-msgid "expected a speed number, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:681
-#, c-format
-msgid "expected a %s, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "size"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "speed"
-msgstr ""
-
-#: src/lib/parse_conf.c:803
-#, c-format
-msgid "Expected a Tape Label keyword, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:886
-#, c-format
-msgid "Unable to initialize resource lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:894
-msgid "Config filename too long.\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:917
-#, c-format
-msgid "Cannot open config file \"%s\": %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:934
-msgid ""
-"Currently we cannot handle UTF-16 source files. Please convert the conf file "
-"to UTF-8\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:938
-#, c-format
-msgid "Expected a Resource name identifier, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:954
-#, c-format
-msgid "expected resource name, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:965
-#, c-format
-msgid "not in resource definition: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:990
-#, c-format
-msgid ""
-"Keyword \"%s\" not permitted in this resource.\n"
-"Perhaps you left the trailing brace off of the previous resource."
-msgstr ""
-
-#: src/lib/parse_conf.c:1001
-msgid "Name not specified for resource"
-msgstr ""
-
-#: src/lib/parse_conf.c:1011
-#, c-format
-msgid "unexpected token %d %s in resource definition"
-msgstr ""
-
-#: src/lib/parse_conf.c:1017
-#, c-format
-msgid "Unknown parser state %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:1022
-msgid "End of conf file reached with unclosed resource."
-msgstr ""
-
-#: src/lib/mem_pool.c:112
-#, c-format
-msgid "MemPool index %d larger than max %d\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:130 src/lib/mem_pool.c:150 src/lib/mem_pool.c:186
-#: src/lib/mem_pool.c:257 src/lib/mem_pool.c:277 src/lib/mem_pool.c:312
-#: src/lib/mem_pool.c:623
-#, c-format
-msgid "Out of memory requesting %d bytes\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:167
-msgid "obuf is NULL\n"
-msgstr ""
-
-#: src/lib/berrno.c:63
-msgid "Child exited normally."
-msgstr ""
-
-#: src/lib/berrno.c:70
-msgid "Unknown error during program execvp"
-msgstr ""
-
-#: src/lib/berrno.c:73
-#, c-format
-msgid "Child exited with code %d"
-msgstr ""
-
-#: src/lib/berrno.c:81
-#, c-format
-msgid "Child died from signal %d: %s"
-msgstr ""
-
-#: src/lib/berrno.c:87
-msgid "Invalid errno. No error message possible."
-msgstr ""
-
-#: src/lib/bnet.c:134
-#, c-format
-msgid "Attr spool write error. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet.c:279 src/lib/bnet.c:320
-msgid "TLS connection initialization failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:287
-msgid "TLS Negotiation failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:293 src/lib/bnet.c:335
-msgid ""
-"TLS certificate verification failed. Peer certificate did not match a "
-"required commonName\n"
-msgstr ""
-
-#: src/lib/bnet.c:342
-#, c-format
-msgid ""
-"TLS host certificate verification failed. Host name \"%s\" did not match "
-"presented certificate\n"
-msgstr ""
-
-#: src/lib/bnet.c:359
-msgid "TLS enabled but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:365
-msgid "TLS enable but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:481
-msgid "No problem."
-msgstr ""
-
-#: src/lib/bnet.c:484
-msgid "Authoritative answer for host not found."
-msgstr ""
-
-#: src/lib/bnet.c:487
-msgid "Non-authoritative for host not found, or ServerFail."
-msgstr ""
-
-#: src/lib/bnet.c:490
-msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
-msgstr ""
-
-#: src/lib/bnet.c:493
-msgid "Valid name, no data record of resquested type."
-msgstr ""
-
-#: src/lib/bnet.c:496
-msgid "Unknown error."
-msgstr ""
-
-#: src/lib/bnet.c:755
-#, c-format
-msgid "Unknown sig %d"
-msgstr ""
-
-#: src/lib/signal.c:67
-msgid "Invalid signal number"
-msgstr ""
-
-#: 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:167
-#, c-format
-msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
-msgstr ""
-
-#: src/lib/signal.c:169
-#, c-format
-msgid "Kaboom! exepath=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:210
-#, c-format
-msgid "Fork error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:218
-#, c-format
-msgid "Calling: %s %s %s %s\n"
-msgstr ""
-
-#: src/lib/signal.c:222
-#, c-format
-msgid "execv: %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:244
-#, c-format
-msgid "It looks like the traceback worked...\n"
-msgstr ""
-
-#: 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:312
-msgid "UNKNOWN SIGNAL"
-msgstr ""
-
-#: src/lib/signal.c:313
-msgid "Hangup"
-msgstr ""
-
-#: src/lib/signal.c:314
-msgid "Interrupt"
-msgstr ""
-
-#: src/lib/signal.c:315
-msgid "Quit"
-msgstr ""
-
-#: src/lib/signal.c:316
-msgid "Illegal instruction"
-msgstr ""
-
-#: src/lib/signal.c:317
-msgid "Trace/Breakpoint trap"
-msgstr ""
-
-#: src/lib/signal.c:318
-msgid "Abort"
-msgstr ""
-
-#: src/lib/signal.c:320
-msgid "EMT instruction (Emulation Trap)"
-msgstr ""
-
-#: src/lib/signal.c:323
-msgid "IOT trap"
-msgstr ""
-
-#: src/lib/signal.c:325
-msgid "BUS error"
-msgstr ""
-
-#: src/lib/signal.c:326
-msgid "Floating-point exception"
-msgstr ""
-
-#: src/lib/signal.c:327
-msgid "Kill, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:328
-msgid "User-defined signal 1"
-msgstr ""
-
-#: src/lib/signal.c:329
-msgid "Segmentation violation"
-msgstr ""
-
-#: src/lib/signal.c:330
-msgid "User-defined signal 2"
-msgstr ""
-
-#: src/lib/signal.c:331
-msgid "Broken pipe"
-msgstr ""
-
-#: src/lib/signal.c:332
-msgid "Alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:333
-msgid "Termination"
-msgstr ""
-
-#: src/lib/signal.c:335
-msgid "Stack fault"
-msgstr ""
-
-#: src/lib/signal.c:337
-msgid "Child status has changed"
-msgstr ""
-
-#: src/lib/signal.c:338
-msgid "Continue"
-msgstr ""
-
-#: src/lib/signal.c:339
-msgid "Stop, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:340
-msgid "Keyboard stop"
-msgstr ""
-
-#: src/lib/signal.c:341
-msgid "Background read from tty"
-msgstr ""
-
-#: src/lib/signal.c:342
-msgid "Background write to tty"
-msgstr ""
-
-#: src/lib/signal.c:343
-msgid "Urgent condition on socket"
-msgstr ""
-
-#: src/lib/signal.c:344
-msgid "CPU limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:345
-msgid "File size limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:346
-msgid "Virtual alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:347
-msgid "Profiling alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:348
-msgid "Window size change"
-msgstr ""
-
-#: src/lib/signal.c:349
-msgid "I/O now possible"
-msgstr ""
-
-#: src/lib/signal.c:351
-msgid "Power failure restart"
-msgstr ""
-
-#: src/lib/signal.c:354
-msgid "No runnable lwp"
-msgstr ""
-
-#: src/lib/signal.c:357
-msgid "SIGLWP special signal used by thread library"
-msgstr ""
-
-#: src/lib/signal.c:360
-msgid "Checkpoint Freeze"
-msgstr ""
-
-#: src/lib/signal.c:363
-msgid "Checkpoint Thaw"
-msgstr ""
-
-#: src/lib/signal.c:366
-msgid "Thread Cancellation"
-msgstr ""
-
-#: 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: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:357
-msgid "Buffer overflow.\n"
-msgstr ""
-
-#: src/lib/bsys.c:423
-msgid "Bad errno"
-msgstr ""
-
-#: src/lib/bsys.c:438
-#, c-format
-msgid "Memset for %d bytes at %s:%d\n"
-msgstr ""
-
-#: src/lib/bsys.c:468
-#, c-format
-msgid "Cannot open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:483
-#, c-format
-msgid ""
-"%s is already running. pid=%d\n"
-"Check file %s\n"
-msgstr ""
-
-#: src/lib/bsys.c:497
-#, c-format
-msgid "Could not open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:608
-#, c-format
-msgid "Could not create state file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:627
-#, c-format
-msgid "Write final hdr error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:236
-#, c-format
-msgid "%s: run %s \"%s\"\n"
-msgstr ""
-
-#: src/lib/runscript.c:245
-#, c-format
-msgid "Runscript: %s could not execute. ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:254
-#, c-format
-msgid "%s: %s\n"
-msgstr ""
-
-#: src/lib/runscript.c:259
-#, c-format
-msgid "Runscript: %s returned non-zero status=%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lex.c:91 src/wx-console/console_thread.cpp:212
-#, c-format
-msgid "Problem probably begins at line %d.\n"
-msgstr ""
-
-#: src/lib/lex.c:96 src/wx-console/console_thread.cpp:217
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-
-#: src/lib/lex.c:100
-#, c-format
-msgid "Config error: %s\n"
-msgstr ""
-
-#: src/lib/lex.c:129
-msgid "Close of NULL file\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "Config token too long, file: %s, line %d, begins at line %d\n"
-msgstr ""
-
-#: src/lib/lex.c:292
-msgid "none"
-msgstr ""
-
-#: src/lib/lex.c:293
-msgid "comment"
-msgstr ""
-
-#: src/lib/lex.c:294
-msgid "number"
-msgstr ""
-
-#: src/lib/lex.c:295
-msgid "ip_addr"
-msgstr ""
-
-#: src/lib/lex.c:296
-msgid "identifier"
-msgstr ""
-
-#: src/lib/lex.c:297
-msgid "string"
-msgstr ""
-
-#: src/lib/lex.c:298
-msgid "quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:299
-msgid "include"
-msgstr ""
-
-#: src/lib/lex.c:300
-msgid "include_quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:301
-msgid "UTF-8 Byte Order Mark"
-msgstr ""
-
-#: src/lib/lex.c:302
-msgid "UTF-16le Byte Order Mark"
-msgstr ""
-
-#: 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: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:625 src/lib/lex.c:653
-#, c-format
-msgid "Cannot open included config file %s: %s\n"
-msgstr ""
-
-#: 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: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:783
-#, c-format
-msgid "expected a name, got %s: %s"
-msgstr ""
-
-#: src/lib/lex.c:787
-#, c-format
-msgid "name %s length %d too long, max is %d\n"
-msgstr ""
-
-#: src/lib/lex.c:795
-#, c-format
-msgid "expected a string, got %s: %s"
-msgstr ""
-
-#: src/lib/var.c:2669
-msgid "everything ok"
-msgstr ""
-
-#: src/lib/var.c:2670
-msgid "incomplete named character"
-msgstr ""
-
-#: src/lib/var.c:2671
-msgid "incomplete hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2672
-msgid "invalid hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2673
-msgid "octal value too large"
-msgstr ""
-
-#: src/lib/var.c:2674
-msgid "invalid octal value"
-msgstr ""
-
-#: src/lib/var.c:2675
-msgid "incomplete octal value"
-msgstr ""
-
-#: src/lib/var.c:2676
-msgid "incomplete grouped hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2677
-msgid "incorrect character class specification"
-msgstr ""
-
-#: src/lib/var.c:2678
-msgid "invalid expansion configuration"
-msgstr ""
-
-#: src/lib/var.c:2679
-msgid "out of memory"
-msgstr ""
-
-#: src/lib/var.c:2680
-msgid "incomplete variable specification"
-msgstr ""
-
-#: src/lib/var.c:2681
-msgid "undefined variable"
-msgstr ""
-
-#: src/lib/var.c:2682
-msgid "input is neither text nor variable"
-msgstr ""
-
-#: src/lib/var.c:2683
-msgid "unknown command character in variable"
-msgstr ""
-
-#: src/lib/var.c:2684
-msgid "malformatted search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2685
-msgid "unknown flag in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2686
-msgid "invalid regex in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2687
-msgid "missing parameter in command"
-msgstr ""
-
-#: src/lib/var.c:2688
-msgid "empty search string in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2689
-msgid "start offset missing in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2690
-msgid "offsets in cut operation delimited by unknown character"
-msgstr ""
-
-#: src/lib/var.c:2691
-msgid "range out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2692
-msgid "offset out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2693
-msgid "logic error in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2694
-msgid "malformatted transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2695
-msgid "source and target class mismatch in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2696
-msgid "empty character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2697
-msgid "incorrect character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2698
-msgid "malformatted padding operation"
-msgstr ""
-
-#: src/lib/var.c:2699
-msgid "width parameter missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2700
-msgid "fill string missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2701
-msgid "unknown quoted pair in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2702
-msgid "sub-matching reference out of range"
-msgstr ""
-
-#: src/lib/var.c:2703
-msgid "invalid argument"
-msgstr ""
-
-#: src/lib/var.c:2704
-msgid "incomplete quoted pair"
-msgstr ""
-
-#: src/lib/var.c:2705
-msgid "lookup function does not support variable arrays"
-msgstr ""
-
-#: src/lib/var.c:2706
-msgid "index of array variable contains an invalid character"
-msgstr ""
-
-#: src/lib/var.c:2707
-msgid "index of array variable is incomplete"
-msgstr ""
-
-#: src/lib/var.c:2708
-msgid "bracket expression in array variable's index not closed"
-msgstr ""
-
-#: src/lib/var.c:2709
-msgid "division by zero error in index specification"
-msgstr ""
-
-#: src/lib/var.c:2710
-msgid "unterminated loop construct"
-msgstr ""
-
-#: src/lib/var.c:2711
-msgid "invalid character in loop limits"
-msgstr ""
-
-#: src/lib/var.c:2712
-msgid "malformed operation argument list"
-msgstr ""
-
-#: src/lib/var.c:2713
-msgid "undefined operation"
-msgstr ""
-
-#: src/lib/var.c:2714
-msgid "formatting failure"
-msgstr ""
-
-#: src/lib/var.c:2723
-msgid "unknown error"
-msgstr ""
-
-#: src/lib/address_conf.c:62
-#, c-format
-msgid "Only ipv4 and ipv6 are supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:66
-#, c-format
-msgid "Only ipv4 is supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:175
-#, c-format
-msgid "It was tried to assign a ipv6 address to a ipv4(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:184
-#, c-format
-msgid "It was tried to assign a ipv4 address to a ipv6(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:263
-#, c-format
-msgid "Can't add default address (%s)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:292
-msgid "the old style addresses cannot be mixed with new style"
-msgstr ""
-
-#: src/lib/address_conf.c:313
-#, c-format
-msgid "can't resolve service(%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:322
-#, c-format
-msgid "can't resolve hostname(%s) %s"
-msgstr ""
-
-#: src/lib/address_conf.c:412 src/lib/address_conf.c:443
-#, c-format
-msgid "Expected a block begin { , got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:417
-msgid "Empty addr block is not allowed"
-msgstr ""
-
-#: src/lib/address_conf.c:421
-#, c-format
-msgid "Expected a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:430
-#, c-format
-msgid "Expected a string [ip|ipv4|ipv6], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:434
-#, c-format
-msgid "Expected a string [ip|ipv4], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:439 src/lib/address_conf.c:469
-#, c-format
-msgid "Expected a equal =, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:450 src/lib/address_conf.c:465
-#, c-format
-msgid "Expected a identifier [addr|port], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:455
-msgid "Only one port per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:461
-msgid "Only one addr per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:477
-#, c-format
-msgid "Expected a number or a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:483 src/lib/address_conf.c:516
-#, c-format
-msgid "Expected an IP number or a hostname, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:489
-msgid "State machine missmatch"
-msgstr ""
-
-#: src/lib/address_conf.c:495 src/lib/address_conf.c:507
-#, c-format
-msgid "Expected a end of block }, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:501
-#, c-format
-msgid "Can't add hostname(%s) and port(%s) to addrlist (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:521 src/lib/address_conf.c:535
-#, c-format
-msgid "can't add port (%s) to (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:530
-#, c-format
-msgid "Expected a port number or string, got: %s"
-msgstr ""
-
-#: src/lib/edit.c:478
-msgid "Empty name not allowed.\n"
-msgstr ""
-
-#: src/lib/edit.c:488
-#, c-format
-msgid "Illegal character \"%c\" in name.\n"
-msgstr ""
-
-#: src/lib/edit.c:495
-msgid "Name too long.\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:60
-#, c-format
-msgid "Cannot open current directory: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:71
-#, c-format
-msgid "Cannot get current directory: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:95 src/findlib/savecwd.c:106
-#, c-format
-msgid "Cannot reset current directory: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:137
-#, c-format
-msgid "Cannot create directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:141 src/findlib/mkpath.c:202
-#, c-format
-msgid "%s exists but is not a directory.\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:164
-#, c-format
-msgid "Cannot change owner and/or group of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:169
-#, c-format
-msgid "Cannot change permissions of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:239
-#, c-format
-msgid "%c: is not a valid drive.\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:283
-msgid "Too many subdirectories. Some permissions not reset.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:483
-#, c-format
-msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:509 src/findlib/attribs.c:516
-#, c-format
-msgid "Unable to set file owner %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:522
-#, c-format
-msgid "Unable to set file modes %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:532
-#, c-format
-msgid "Unable to set file times %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:546
-#, c-format
-msgid "Unable to set file flags %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:799
-#, c-format
-msgid "Error in %s file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:816
-#, c-format
-msgid "Error in %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/enable_priv.c:92
-msgid "AdjustTokenPrivileges set "
-msgstr ""
-
-#: src/findlib/create_file.c:124
-#, c-format
-msgid "File skipped. Not newer: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:131
-#, c-format
-msgid "File skipped. Not older: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:141
-#, c-format
-msgid "File skipped. Already exists: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:167
-#, c-format
-msgid "File %s already exists and could not be replaced. ERR=%s.\n"
-msgstr ""
-
-#: src/findlib/create_file.c:218 src/findlib/create_file.c:282
-#: src/findlib/create_file.c:378
-#, c-format
-msgid "bpkt already open fid=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
-#, c-format
-msgid "Could not create %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:241
-#, c-format
-msgid "Cannot make fifo %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:259
-#, c-format
-msgid "Cannot make node %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:304
-#, c-format
-msgid "Could not symlink %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:329 src/findlib/create_file.c:342
-#, c-format
-msgid "Could not restore file flags for file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:333 src/findlib/create_file.c:350
-#, c-format
-msgid "Could not hard link %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:346
-#, c-format
-msgid "Could not reset file flags for file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:401
-#, c-format
-msgid "Original file %s have been deleted: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:413
-#, c-format
-msgid "Original file %s not saved: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:416
-#, c-format
-msgid "Unknown file type %d; not restored: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:460
-#, c-format
-msgid "Zero length filename: %s\n"
-msgstr ""
-
-#: src/findlib/bfile.c:97
-msgid "Unix attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:99
-msgid "File data"
-msgstr ""
-
-#: src/findlib/bfile.c:101
-msgid "MD5 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:103
-msgid "GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:105
-msgid "Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:107
-msgid "Extended attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:109
-msgid "Sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:111
-msgid "GZIP sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:113
-msgid "Compressed sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:115
-msgid "Program names"
-msgstr ""
-
-#: src/findlib/bfile.c:117
-msgid "Program data"
-msgstr ""
-
-#: src/findlib/bfile.c:119
-msgid "SHA1 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:121
-msgid "Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:123
-msgid "Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:125
-msgid "Win32 compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:127
-msgid "MacOS Fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:129
-msgid "HFS+ attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:131
-msgid "Standard Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:133
-msgid "Default Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:135
-msgid "SHA256 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:137
-msgid "SHA512 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:139
-msgid "Signed digest"
-msgstr ""
-
-#: src/findlib/bfile.c:141
-msgid "Encrypted File data"
-msgstr ""
-
-#: src/findlib/bfile.c:143
-msgid "Encrypted Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:145
-msgid "Encrypted session data"
-msgstr ""
-
-#: src/findlib/bfile.c:147
-msgid "Encrypted GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:149
-msgid "Encrypted compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:151
-msgid "Encrypted Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:153
-msgid "Encrypted Win32 Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:155
-msgid "Encrypted MacOS fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:157
-msgid "AIX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:159
-msgid "Darwin Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:161
-msgid "FreeBSD Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:163
-msgid "FreeBSD Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:165
-msgid "HPUX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:167
-msgid "Irix Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:169
-msgid "Irix Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:171
-msgid "Linux Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:173
-msgid "Linux Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:175
-msgid "TRU64 Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:177
-msgid "TRU64 Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:179
-msgid "Solaris Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:181
-msgid "Solaris Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:183
-msgid "AFS Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:185
-msgid "AIX Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:187
-msgid "AIX Specific NFSv4 ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:189
-msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:191
-msgid "GNU Hurd Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:193
-msgid "GNU Hurd Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:195
-msgid "GNU Hurd Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:197
-msgid "IRIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:199
-msgid "TRU64 Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:201
-msgid "AIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:203
-msgid "OpenBSD Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:205
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:207
-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:237
-#, c-format
-msgid "Plugin: \"%s\" not found.\n"
-msgstr ""
-
-#: 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:227
-#, c-format
-msgid "     NODUMP flag set - will not process %s\n"
-msgstr ""
-
-#: src/findlib/find_one.c:248
-#, c-format
-msgid "Cannot stat file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/find_one.c:253
-#, c-format
-msgid "%s mtime changed during backup.\n"
-msgstr ""
-
-#: src/findlib/find_one.c:260
-#, c-format
-msgid "%s ctime changed during backup.\n"
-msgstr ""
-
-#: 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:403
-#, c-format
-msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
-msgstr ""
-
-#: src/findlib/find_one.c:418
-#, c-format
-msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
-msgstr ""
-
-#: src/cats/sql_create.c:101
-#, c-format
-msgid "Create DB Job record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:145
-#, c-format
-msgid "Create JobMedia record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:154
-#, c-format
-msgid "Update Media record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:189
-#, c-format
-msgid "pool record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:221
-#, c-format
-msgid "Create db Pool record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:254
-#, c-format
-msgid "Device record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:271
-#, c-format
-msgid "Create db Device record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:306
-#, c-format
-msgid "More than one Storage record!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:311
-#, c-format
-msgid "error fetching Storage row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:332
-#, c-format
-msgid "Create DB Storage record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:366
-#, c-format
-msgid "mediatype record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:383
-#, c-format
-msgid "Create db mediatype record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:424
-#, c-format
-msgid "Volume \"%s\" already exists.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:470
-#, c-format
-msgid "Create DB Media record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:521
-#, c-format
-msgid "More than one Client!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:526
-#, c-format
-msgid "error fetching Client row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:554
-#, c-format
-msgid "Create DB Client record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Create db Path record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:666
-#, c-format
-msgid "Create DB Counters record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:704
-#, c-format
-msgid "More than one FileSet!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:709
-#, c-format
-msgid "error fetching FileSet row: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:740
-#, c-format
-msgid "Create DB FileSet record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:989
-#, c-format
-msgid "Create db File record %s failed. ERR=%s"
-msgstr ""
-
-#: src/cats/sql_create.c:1015
-#, c-format
-msgid "More than one Filename! %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1021
-#, c-format
-msgid "Error fetching row for file=%s: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1038
-#, c-format
-msgid "Create db Filename record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
-msgid "ERR=JobIds are empty\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1219
-#, c-format
-msgid "Create db Object record %s failed. ERR=%s"
-msgstr ""
-
-#: src/cats/sql_get.c:151
-#, c-format
-msgid "Error fetching row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:158
-#, c-format
-msgid "get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:166
-#, c-format
-msgid "File record for PathId=%s FilenameId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:172
-msgid "File record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:199
-#, c-format
-msgid "More than one Filename!: %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:209
-#, c-format
-msgid "Get DB Filename record %s found bad record: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:215
-#, c-format
-msgid "Filename record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:219
-#, c-format
-msgid "Filename record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:262
-#, c-format
-msgid "Get DB path record %s found bad record: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:275
-#, c-format
-msgid "Path record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:279
-#, c-format
-msgid "Path record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:318
-#, c-format
-msgid "No Job found for JobId %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:391 src/cats/sql_get.c:448
-#, c-format
-msgid "No volumes found for JobId=%d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:397 src/cats/sql_get.c:459
-#, c-format
-msgid "Error fetching row %d: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:411
-#, c-format
-msgid "No Volume for JobId %d found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:552
-#, c-format
-msgid "Pool id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:589
-#, c-format
-msgid "Client id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:635
-#, c-format
-msgid "More than one Pool!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:679
-msgid "Pool record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:717
-#, c-format
-msgid "More than one Client!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:734 src/cats/sql_get.c:738
-msgid "Client record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:765
-#, c-format
-msgid "More than one Counter!: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:770
-#, c-format
-msgid "error fetching Counter row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:790
-#, c-format
-msgid "Counter record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:830
-#, c-format
-msgid "Error got %s FileSets but expected only one!\n"
-msgstr ""
-
-#: src/cats/sql_get.c:835
-#, c-format
-msgid "FileSet record \"%s\" not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:845
-msgid "FileSet record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:941
-#, c-format
-msgid "Media id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:979
-#, c-format
-msgid "query dbids failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1034
-#, c-format
-msgid "More than one Volume!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1090
-#, c-format
-msgid "Media record MediaId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1093
-#, c-format
-msgid "Media record for Volume \"%s\" not found.\n"
-msgstr ""
-
-#: 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:1103
-#, c-format
-msgid "Media record for Vol=%s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:98 src/cats/sql_find.c:127 src/cats/sql_find.c:182
-#, c-format
-msgid ""
-"Query error for start time request: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:104 src/cats/sql_find.c:188
-msgid "No prior Full backup Job record found.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:116
-#, c-format
-msgid "Unknown level=%d\n"
-msgstr ""
-
-#: src/cats/sql_find.c:133
-#, c-format
-msgid ""
-"No Job record found: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:291
-#, c-format
-msgid "Unknown Job level=%d\n"
-msgstr ""
-
-#: src/cats/sql_find.c:301
-#, c-format
-msgid "No Job found for: %s.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:312
-#, c-format
-msgid "No Job found for: %s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:393
-#, c-format
-msgid "Request for Volume item %d greater than max %d or less than 1\n"
-msgstr ""
-
-#: src/cats/sql_find.c:408
-#, c-format
-msgid "No Volume record found for item %d.\n"
-msgstr ""
-
-#: 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:181
-#, c-format
-msgid "Database %s does not exist, please create it.\n"
-msgstr ""
-
-#: src/cats/sqlite.c:203
-#, c-format
-msgid "Unable to open Database=%s. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sqlite.c:204
-msgid "unknown"
-msgstr ""
-
-#: 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 ""
-
-#: src/cats/ingres.c:87
-msgid "Failed to allocate space for query filter.\n"
-msgstr ""
-
-#: src/cats/ingres.c:108
-msgid "Failed to allocate space for query filters.\n"
-msgstr ""
-
-#: src/cats/ingres.c:267
-#, c-format
-msgid ""
-"Unable to connect to Ingres server.\n"
-"Database=%s User=%s\n"
-"It is probably not running or your password is incorrect.\n"
-msgstr ""
-
-#: src/cats/ingres.c:1087
-msgid "A user name for Ingres must be supplied.\n"
-msgstr ""
-
-#: src/cats/sql.c:184
-#, c-format
-msgid ""
-"Potential performance problem:\n"
-"max_connections=%d set for %s database \"%s\" should be larger than "
-"Director's MaxConcurrentJobs=%d\n"
-msgstr ""
-
-#: src/cats/sql.c:229
-#, c-format
-msgid ""
-"query %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:251
-#, c-format
-msgid ""
-"insert %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:261
-#, c-format
-msgid "Insertion problem: affected_rows=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:282
-#, c-format
-msgid ""
-"update %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:292
-#, c-format
-msgid "Update failed: affected_rows=%s for %s\n"
-msgstr ""
-
-#: src/cats/sql.c:314
-#, c-format
-msgid ""
-"delete %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:408
-#, c-format
-msgid "Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:603
-msgid "No results to list.\n"
-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:727
-#, c-format
-msgid "Could not open database \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:181
-#, c-format
-msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:246
-#, c-format
-msgid ""
-"Unable to connect to PostgreSQL server. Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:350
-msgid "PQescapeStringConn returned non-zero.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:368
-msgid "PQescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:399
-msgid "PQunescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:813
-#, c-format
-msgid "error fetching currval: %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
-#, c-format
-msgid "error starting batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
-#, c-format
-msgid "error ending batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1088
-#, c-format
-msgid "error copying in batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1110
-msgid "A user name for PostgreSQL must be supplied.\n"
-msgstr ""
-
-#: src/cats/sql_list.c:59
-#, c-format
-msgid "Query failed: %s\n"
-msgstr ""
-
-#: src/cats/sql_list.c:275
-msgid "These JobIds have copies as follows:\n"
-msgstr ""
-
-#: src/cats/sql_list.c:277
-msgid "The catalog contains copies as follows:\n"
-msgstr ""
-
-#: src/cats/dbi.c:117
-#, c-format
-msgid "Unknown database type: %s\n"
-msgstr ""
-
-#: 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:299
-#, c-format
-msgid ""
-"Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-
-#: src/cats/dbi.c:1439
-#, c-format
-msgid "error inserting batch mode: %s"
-msgstr ""
-
-#: src/cats/dbi.c:1456
-msgid "Driver type not specified in Catalog resource.\n"
-msgstr ""
-
-#: src/cats/dbi.c:1460
-msgid "Invalid driver type, must be \"dbi:<type>\"\n"
-msgstr ""
-
-#: src/cats/dbi.c:1464
-msgid "A user name for DBI must be supplied.\n"
-msgstr ""
-
-#: src/cats/cats_dummy.c:39
-msgid "Please replace this dummy libbaccats library with a proper one.\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:80
-#, c-format
-msgid "No pool record %s exists\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:85
-#, c-format
-msgid "Expecting one pool record, got %d\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:91
-#, c-format
-msgid "Error fetching row %s\n"
-msgstr ""
-
-#: src/cats/mysql.c:207
-#, c-format
-msgid ""
-"Unable to connect to MySQL server.\n"
-"Database=%s User=%s\n"
-"MySQL connect failed either server not running or your authorization is "
-"incorrect.\n"
-msgstr ""
-
-#: src/cats/mysql.c:692
-msgid "A user name for MySQL must be supplied.\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:147 src/console/console_conf.c:140
-#: src/qt-console/bat_conf.cpp:141
-#, c-format
-msgid "No record for %d %s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:156 src/console/console_conf.c:149
-#, c-format
-msgid "Console: name=%s rcfile=%s histfile=%s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:160 src/console/console_conf.c:153
-#: src/qt-console/bat_conf.cpp:150
-#, c-format
-msgid "Director: name=%s address=%s DIRport=%d\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:142 src/console/authenticate.c:138
-msgid "TLS negotiation failed\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:150
-msgid "Bad response to Hello command: ERR="
-msgstr ""
-
-#: src/wx-console/authenticate.c:167 src/console/authenticate.c:169
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-
-#: src/console/console.c:126
-#, c-format
-msgid ""
-"\n"
-"Version: "
-msgstr ""
-
-#: src/console/console.c:178
-msgid "input from file"
-msgstr ""
-
-#: src/console/console.c:179
-msgid "output to file"
-msgstr ""
-
-#: src/console/console.c:180
-msgid "quit"
-msgstr ""
-
-#: src/console/console.c:181
-msgid "output to file and terminal"
-msgstr ""
-
-#: src/console/console.c:182
-msgid "sleep specified time"
-msgstr ""
-
-#: src/console/console.c:183
-msgid "print current time"
-msgstr ""
-
-#: src/console/console.c:184
-msgid "print Console's version"
-msgstr ""
-
-#: src/console/console.c:185
-msgid "echo command string"
-msgstr ""
-
-#: src/console/console.c:186
-msgid "execute an external command"
-msgstr ""
-
-#: src/console/console.c:187
-msgid "exit = quit"
-msgstr ""
-
-#: src/console/console.c:188
-msgid "zed_keys = use zed keys instead of bash keys"
-msgstr ""
-
-#: src/console/console.c:189
-msgid "help listing"
-msgstr ""
-
-#: src/console/console.c:191
-msgid "set command separator"
-msgstr ""
-
-#: src/console/console.c:225
-msgid ": is an invalid command\n"
-msgstr ""
-
-#: src/console/console.c:675
-msgid "Illegal separator character.\n"
-msgstr ""
-
-#: src/console/console.c:708
-msgid "Command logic problem\n"
-msgstr ""
-
-#: src/console/console.c:925
-#, c-format
-msgid "Can't find %s in Director list\n"
-msgstr ""
-
-#: src/console/console.c:933
-msgid "Available Directors:\n"
-msgstr ""
-
-#: src/console/console.c:937
-#, c-format
-msgid "%2d:  %s at %s:%d\n"
-msgstr ""
-
-#: src/console/console.c:941
-msgid "Select Director by entering a number: "
-msgstr ""
-
-#: src/console/console.c:948
-#, c-format
-msgid "%s is not a number. You must enter a number between 1 and %d\n"
-msgstr ""
-
-#: src/console/console.c:955
-#, c-format
-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: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:154
-#, c-format
-msgid "Failed to initialize TLS context for Director \"%s\".\n"
-msgstr ""
-
-#: src/console/console.c:1210
-msgid "Enter a period to cancel a command.\n"
-msgstr ""
-
-#: src/console/console.c:1304 src/qt-console/main.cpp:232
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in %s. At least one CA certificate store is required.\n"
-msgstr ""
-
-#: src/console/console.c:1313 src/qt-console/main.cpp:241
-#, c-format
-msgid ""
-"No Director resource defined in %s\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/console/console.c:1333 src/qt-console/main.cpp:262
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/console/console.c:1359
-msgid "Too many arguments on input command.\n"
-msgstr ""
-
-#: src/console/console.c:1363
-msgid "First argument to input command must be a filename.\n"
-msgstr ""
-
-#: src/console/console.c:1369
-#, c-format
-msgid "Cannot open file %s for input. ERR=%s\n"
-msgstr ""
-
-#: src/console/console.c:1401
-msgid "Too many arguments on output/tee command.\n"
-msgstr ""
-
-#: src/console/console.c:1418
-#, c-format
-msgid "Cannot open file %s for output. ERR=%s\n"
-msgstr ""
-
-#: src/console/console.c:1437
-msgid "Too many arguments. Enclose command in double quotes.\n"
-msgstr ""
-
-#: src/console/console.c:1446
-#, c-format
-msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
-msgstr ""
-
-#: src/tools/testls.c:59
-#, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -q          quiet, don't print filenames (debug)\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testls.c:155
-#, c-format
-msgid "Could not open include file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:168
-#, c-format
-msgid "Could not open exclude file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:182
-#, c-format
-msgid "Files seen = %d\n"
-msgstr ""
-
-#: src/tools/testls.c:215 src/tools/testfind.c:322
-#, c-format
-msgid "Err: Could not access %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:218 src/tools/testfind.c:325
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:221 src/tools/testfind.c:328
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:224 src/tools/testfind.c:331
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:227 src/tools/testfind.c:334
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:230
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:233
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:236 src/tools/testfind.c:337
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:239 src/tools/testfind.c:340
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
-msgstr ""
-
-#: src/tools/bvfs_test.c:56 src/tools/ing_test.c:57
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -j <jobids>       specify jobids\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -T                truncate cache table before starting\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"Example : bbatch -w /path/to/workdir -h localhost -f dat1 -f dat -f datx\n"
-" will start 3 thread and load dat1, dat and datx in your catalog\n"
-"See bbatch.c to generate datafile\n"
-"\n"
-"Usage: bbatch [ options ] -w working/dir -f datafile\n"
-"       -b                with batch mode\n"
-"       -B                without batch mode\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -r <jobids>       call restore code with given jobids\n"
-"       -v                verbose\n"
-"       -f <file>         specify data file\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:211
-#, c-format
-msgid "Computing file list for jobid=%s files=%lld secs=%d\n"
-msgstr ""
-
-#: src/tools/bbatch.c:315
-#, c-format
-msgid "Error opening datafile %s\n"
-msgstr ""
-
-#: src/tools/bbatch.c:325
-msgid "Error while inserting file\n"
-msgstr ""
-
-#: src/tools/ing_test.c:231 src/tools/ing_test.c:264 src/tools/ing_test.c:302
-msgid "Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:320
-msgid "CREATE-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:325
-msgid "DROP-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/fstype.c:48
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-v] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/fstype.c:102 src/tools/drivetype.c:78
-#, c-format
-msgid "%s: unknown\n"
-msgstr ""
-
-#: src/tools/bregex.c:153 src/tools/bwild.c:122 src/tools/bregtest.c:137
-#, c-format
-msgid "Could not open data file: %s\n"
-msgstr ""
-
-#: src/tools/drivetype.c:47
-#, c-format
-msgid ""
-"\n"
-"Usage: drivetype [-v] path ...\n"
-"\n"
-"       Print the drive type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -l     print local fixed hard drive\n"
-"       -a     display information on all drives\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:70
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -c          specify config file containing FileSet resources\n"
-"       -f          specify which FileSet to use\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:235
-#, c-format
-msgid ""
-"\n"
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
-msgstr ""
-
-#: src/tools/testfind.c:278
-#, c-format
-msgid "Reg: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:300
-msgid "\t[will not descend: recursion turned off]"
-msgstr ""
-
-#: src/tools/testfind.c:302
-msgid "\t[will not descend: file system change not allowed]"
-msgstr ""
-
-#: src/tools/testfind.c:304
-msgid "\t[will not descend: disallowed file system]"
-msgstr ""
-
-#: src/tools/testfind.c:306
-msgid "\t[will not descend: disallowed drive type]"
-msgstr ""
-
-#: src/tools/testfind.c:390
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:407
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:416
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/tools/testfind.c:419
-#, c-format
-msgid "Path: %s\n"
-msgstr ""
-
-#: src/tools/cats_test.c:60
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -q                print only errors\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/cats_test.c:376
-#, c-format
-msgid "Could not open, database \"%s\".\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:151
-#, c-format
-msgid "Fatal malformed reply from %s: %s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:159
-#, c-format
-msgid "Fatal fgets error: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"       -f          set the From: field\n"
-"       -h          use mailhost:port as the SMTP server\n"
-"       -s          set the Subject: field\n"
-"       -r          set the Reply-To: field\n"
-"       -l          set the maximum number of lines to send (default: "
-"unlimited)\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:379
-msgid "Fatal error: no recipient given.\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:407
-#, c-format
-msgid "Fatal gethostname error: ERR=%s\n"
-msgstr ""
-
-#: 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:486 src/tools/bsmtp.c:521
-#, c-format
-msgid "Error unknown mail host \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
-msgid "Retrying connection using \"localhost\".\n"
-msgstr ""
-
-#: 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:541 src/tools/bsmtp.c:546
-#, c-format
-msgid "Fatal socket error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:551
-#, c-format
-msgid "Fatal connect error to %s: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:560
-#, c-format
-msgid "Fatal _open_osfhandle error: ERR=%s\n"
-msgstr ""
-
-#: 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:576
-#, c-format
-msgid "Fatal dup error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:195
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:212
-#, c-format
-msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:214
-#, c-format
-msgid "Error there is no Catalog section in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:223
-msgid "Error no Director resource defined.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:247
-msgid "Wrong number of arguments.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:252
-msgid "Working directory not supplied.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:288
-msgid "Database port must be a numeric value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:291
-msgid "Database port must be a int value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:365
-#, c-format
-msgid "Hello, this is the database check/correct program.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:367
-#, c-format
-msgid "Modify database is on."
-msgstr ""
-
-#: src/tools/dbcheck.c:369
-#, c-format
-msgid "Modify database is off."
-msgstr ""
-
-#: src/tools/dbcheck.c:371 src/tools/dbcheck.c:432
-#, c-format
-msgid " Verbose is on.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:373 src/tools/dbcheck.c:434
-#, c-format
-msgid " Verbose is off.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:375
-#, c-format
-msgid "Please select the function you want to perform.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:379
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:398
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:418
-msgid "Select function number: "
-msgstr ""
-
-#: src/tools/dbcheck.c:425
-#, c-format
-msgid "Database will be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:427
-#, c-format
-msgid "Database will NOT be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:518
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:525
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:532
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:539
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:546
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:599
-#, c-format
-msgid "Deleting: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:671
-#, c-format
-msgid "Checking for duplicate Filename entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:682
-#, c-format
-msgid "Found %d duplicate Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:683
-msgid "Print the list? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:706 src/tools/dbcheck.c:771
-#, c-format
-msgid "Found %d for: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:736
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:747
-#, c-format
-msgid "Found %d duplicate Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:748 src/tools/dbcheck.c:810 src/tools/dbcheck.c:856
-#: src/tools/dbcheck.c:924 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1025
-#: src/tools/dbcheck.c:1067 src/tools/dbcheck.c:1109 src/tools/dbcheck.c:1146
-#: src/tools/dbcheck.c:1179 src/tools/dbcheck.c:1213 src/tools/dbcheck.c:1280
-msgid "Print them? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:801
-#, c-format
-msgid "Checking for orphaned JobMedia entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:809
-#, c-format
-msgid "Found %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:827
-#, c-format
-msgid "Deleting %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:844
-#, c-format
-msgid "Checking for orphaned File entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:855
-#, c-format
-msgid "Found %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:872
-#, c-format
-msgid "Deleting %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:891
-#, c-format
-msgid "Pruning orphaned Path entries isn't possible when using BVFS.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:900 src/tools/dbcheck.c:958
-msgid "Create temporary index? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:912
-#, c-format
-msgid "Checking for orphaned Path entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:923
-#, c-format
-msgid "Found %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:936
-#, c-format
-msgid "Deleting %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:970
-#, c-format
-msgid "Checking for orphaned Filename entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:981
-#, c-format
-msgid "Found %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:994
-#, c-format
-msgid "Deleting %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1014
-#, c-format
-msgid "Checking for orphaned FileSet entries. This takes some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1024
-#, c-format
-msgid "Found %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1039
-#, c-format
-msgid "Deleting %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1048
-#, c-format
-msgid "Checking for orphaned Client entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1066
-#, c-format
-msgid "Found %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1081
-#, c-format
-msgid "Deleting %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1090
-#, c-format
-msgid "Checking for orphaned Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1108
-#, c-format
-msgid "Found %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1123
-#, c-format
-msgid "Deleting %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1125
-#, c-format
-msgid "Deleting JobMedia records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1127
-#, c-format
-msgid "Deleting Log records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1136
-#, c-format
-msgid "Checking for Admin Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1145
-#, c-format
-msgid "Found %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1160
-#, c-format
-msgid "Deleting %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1169
-#, c-format
-msgid "Checking for Restore Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1178
-#, c-format
-msgid "Found %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1193
-#, c-format
-msgid "Deleting %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1203
-#, c-format
-msgid "Checking for Filenames with a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1212
-#, c-format
-msgid "Found %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1230 src/tools/dbcheck.c:1296
-#, c-format
-msgid "Reparing %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1270
-#, c-format
-msgid "Checking for Paths without a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1279
-#, c-format
-msgid "Found %d bad Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1442
-#, c-format
-msgid ""
-"Ok. Index over the %s column already exists and dbcheck will work faster.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1445
-#, c-format
-msgid ""
-"Note. Index over the %s column not found, that can greatly slow down "
-"dbcheck.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1460
-#, c-format
-msgid "Create temporary index... This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1468
-#, c-format
-msgid "Temporary index created.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1483
-#, c-format
-msgid "Drop temporary index.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1493
-#, c-format
-msgid "Temporary index %s deleted.\n"
-msgstr ""
-
-#: src/filed/verify.c:57
-#, c-format
-msgid "Cannot malloc %d network read buffer\n"
-msgstr ""
-
-#: src/filed/verify.c:127
-#, c-format
-msgid "     Could not access %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:134
-#, c-format
-msgid "     Could not follow link %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:141
-#, c-format
-msgid "     Could not stat %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:147 src/filed/backup.c:450
-#, c-format
-msgid "     Unchanged file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:150
-#, c-format
-msgid "     Archive file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:153
-#, c-format
-msgid "     Recursion turned off. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:157
-#, c-format
-msgid "     File system change prohibited. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:165
-#, c-format
-msgid "     Could not open directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:170
-#, c-format
-msgid "     Unknown file type %d: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:214 src/filed/verify_vol.c:206
-#, c-format
-msgid "Network error in send to Director: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
-#, c-format
-msgid "%s digest initialization failed\n"
-msgstr ""
-
-#: src/filed/verify.c:309
-#, c-format
-msgid "     Cannot open %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:323
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:386
-#, c-format
-msgid "Error reading file %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/accurate.c:201
-#, c-format
-msgid "Space saved with Base jobs: %lld MB\n"
-msgstr ""
-
-#: src/filed/accurate.c:400
-#, c-format
-msgid "Cannot verify checksum for %s\n"
-msgstr ""
-
-#: src/filed/accurate.c:508
-msgid "2991 Bad accurate command\n"
-msgstr ""
-
-#: src/filed/status.c:89
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d running=%d.\n"
-msgstr ""
-
-#: src/filed/status.c:149
-#, c-format
-msgid " Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d "
-msgstr ""
-
-#: src/filed/status.c:194
-#, c-format
-msgid "Director connected at: %s\n"
-msgstr ""
-
-#: src/filed/status.c:196
-#, c-format
-msgid "JobId %d Job %s is running.\n"
-msgstr ""
-
-#: src/filed/status.c:199
-#, c-format
-msgid "    %s%s %s Job started: %s\n"
-msgstr ""
-
-#: src/filed/status.c:212
-#, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
-msgstr ""
-
-#: src/filed/status.c:218
-#, c-format
-msgid "    Files Examined=%s\n"
-msgstr ""
-
-#: src/filed/status.c:223
-#, c-format
-msgid "    Processing file: %s\n"
-msgstr ""
-
-#: src/filed/status.c:234
-msgid "    SDSocket closed.\n"
-msgstr ""
-
-#: src/filed/status.c:244 src/filed/status.c:335 src/filed/status.c:409
-msgid "====\n"
-msgstr ""
-
-#: src/filed/status.c:306
-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 ""
-
-#: src/filed/status.c:497
-msgid "2900 Bad .status command, wrong argument.\n"
-msgstr ""
-
-#: src/filed/status.c:565
-msgid "Bacula Client: Idle"
-msgstr ""
-
-#: src/filed/status.c:576
-msgid "Bacula Client: Running"
-msgstr ""
-
-#: src/filed/status.c:590
-msgid "Bacula Client: Last Job Canceled"
-msgstr ""
-
-#: src/filed/status.c:594
-msgid "Bacula Client: Last Job Failed"
-msgstr ""
-
-#: src/filed/status.c:598
-msgid "Bacula Client: Last Job had Warnings"
-msgstr ""
-
-#: 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:245
-#, c-format
-msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:259
-#, c-format
-msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
-msgstr ""
-
-#: 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:467 src/filed/xattr.c:520
-#, c-format
-msgid "lgetea error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:643
-#, c-format
-msgid "lsetea error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:968
-#, c-format
-msgid "Received illegal xattr named %s on file \"%s\"\n"
-msgstr ""
-
-#: 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:1161 src/filed/xattr.c:1196
-#, c-format
-msgid "llistxattr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1435
-#, c-format
-msgid "lsetxattr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1648
-#, c-format
-msgid "Failed to convert %d into namespace on file \"%s\"\n"
-msgstr ""
-
-#: 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:1907
-#, c-format
-msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:1920
-#, c-format
-msgid "Failed to convert %s into namespace on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:1941
-#, c-format
-msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2262
-#, c-format
-msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:2291
-#, c-format
-msgid "setproplist error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2679
-#, c-format
-msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2886
-#, c-format
-msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:2909
-#, c-format
-msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:2984
-#, c-format
-msgid "Unable to read content of xattr %s on file \"%s\"\n"
-msgstr ""
-
-#: 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:3081 src/filed/xattr.c:3330
-#, c-format
-msgid "Unable to open file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:3146
-#, c-format
-msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3238
-#, c-format
-msgid "Unable to convert acl from text on file \"%s\"\n"
-msgstr ""
-
-#: 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:3344
-#, c-format
-msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3408
-#, c-format
-msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3448
-#, c-format
-msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3466
-#, c-format
-msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3484
-#, c-format
-msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:3570
-#, c-format
-msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3629
-#, c-format
-msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3673
-#, c-format
-msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3734
-#, c-format
-msgid "Failed to restore extensible attributes on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3747
-#, c-format
-msgid "Failed to restore extended attributes on file \"%s\"\n"
-msgstr ""
-
-#: 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:3891
-#, c-format
-msgid ""
-"Can't restore Extended Attributes of %s - incompatible xattr stream "
-"encountered - %d\n"
-msgstr ""
-
-#: 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:563
-#, c-format
-msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
-msgstr ""
-
-#: 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:775
-msgid "Plugin save packet not found.\n"
-msgstr ""
-
-#: src/filed/fd_plugins.c:910
-#, c-format
-msgid "Plugin=%s not found.\n"
-msgstr ""
-
-#: src/filed/fd_plugins.c:977
-#, c-format
-msgid "Plugin createFile call failed. Stat=%d file=%s\n"
-msgstr ""
-
-#: 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:1859
-msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
-msgstr ""
-
-#: src/filed/filed.c:76
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -d <nn>     set debug level to <nn>\n"
-"        -dt         print a timestamp in debug output\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g          groupid\n"
-"        -k          keep readall capabilities\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test configuration file and exit\n"
-"        -u          userid\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/filed/filed.c:199
-msgid "-k option has no meaning without -u option.\n"
-msgstr ""
-
-#: src/filed/filed.c:337
-#, c-format
-msgid ""
-"No File daemon resource defined in %s\n"
-"Without that I don't know who I am :-(\n"
-msgstr ""
-
-#: src/filed/filed.c:342
-#, c-format
-msgid "Only one Client resource permitted in %s\n"
-msgstr ""
-
-#: src/filed/filed.c:366
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"File daemon in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:390
-msgid "PKI encryption/signing enabled but not compiled into Bacula.\n"
-msgstr ""
-
-#: src/filed/filed.c:401
-#, c-format
-msgid ""
-"\"PKI Key Pair\" must be defined for File daemon \"%s\" in %s if either "
-"\"PKI Sign\" or \"PKI Encrypt\" are enabled.\n"
-msgstr ""
-
-#: src/filed/filed.c:413 src/filed/filed.c:444 src/filed/filed.c:485
-msgid "Failed to allocate a new keypair object.\n"
-msgstr ""
-
-#: src/filed/filed.c:417
-#, c-format
-msgid "Failed to load public certificate for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:423
-#, c-format
-msgid "Failed to load private key for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:453
-#, c-format
-msgid "Failed to load private key from file %s for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:460
-#, c-format
-msgid ""
-"Failed to load trusted signer certificate from file %s for File daemon \"%s"
-"\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:491
-#, c-format
-msgid ""
-"Failed to load master key certificate from file %s for File daemon \"%s\" in "
-"%s.\n"
-msgstr ""
-
-#: src/filed/filed.c:507
-#, c-format
-msgid "No Director resource defined in %s\n"
-msgstr ""
-
-#: 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:280
-#, c-format
-msgid "Unknown acl type encountered on file \"%s\": %ld\n"
-msgstr ""
-
-#: 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:386
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
-"support\n"
-msgstr ""
-
-#: 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:442 src/filed/acl.c:452
-#, c-format
-msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:478
-#, c-format
-msgid "aclx_put error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:823
-#, c-format
-msgid "acl_to_text error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:853
-#, c-format
-msgid "acl_get_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:912
-#, c-format
-msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:923
-#, c-format
-msgid "acl_from_text error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:939
-#, c-format
-msgid "acl_valid error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:980
-#, c-format
-msgid "acl_set_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1246
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
-msgstr ""
-
-#: src/filed/acl.c:1531
-#, c-format
-msgid "getacl error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:1566
-#, c-format
-msgid "acltostr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1627
-#, c-format
-msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
-msgstr ""
-
-#: src/filed/acl.c:1635
-#, c-format
-msgid "setacl error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:1760
-#, c-format
-msgid "acl_get error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1863
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
-"support\n"
-msgstr ""
-
-#: 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:1890
-#, c-format
-msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1937
-#, c-format
-msgid "acl_set error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2023
-#, c-format
-msgid "acltotext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2046
-#, c-format
-msgid "aclfromtext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2066
-#, c-format
-msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/filed/verify_vol.c:63
-msgid "Storage command not issued before Verify.\n"
-msgstr ""
-
-#: 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:498
-#, c-format
-msgid "Data record error. ERR=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/filed/verify_vol.c:143
-#, c-format
-msgid "Error scanning record header: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:102
-msgid "Cannot set buffer size FD->SD.\n"
-msgstr ""
-
-#: src/filed/backup.c:194
-#, c-format
-msgid "Encountered %ld acl errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:198
-#, c-format
-msgid "Encountered %ld xattr errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:267 src/filed/backup.c:276
-msgid "An error occurred while encrypting the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:387
-#, c-format
-msgid "     Recursion turned off. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:394
-#, c-format
-msgid "     %s is a different filesystem. Will not descend from %s into it.\n"
-msgstr ""
-
-#: src/filed/backup.c:400
-#, c-format
-msgid "     Disallowed filesystem. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:405
-#, c-format
-msgid "     Disallowed drive type. Will not descend into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:416
-#, c-format
-msgid "     Socket file skipped: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:429
-#, c-format
-msgid "     Could not access \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:436
-#, c-format
-msgid "     Could not follow link \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:443
-#, c-format
-msgid "     Could not stat \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:453
-#, c-format
-msgid "     Archive file not saved: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:457
-#, c-format
-msgid "     Could not open directory \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:466
-#, c-format
-msgid "     Unknown file type %d; not saved: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:522
-#, c-format
-msgid "%s signature digest initialization failed\n"
-msgstr ""
-
-#: src/filed/backup.c:630
-#, c-format
-msgid "     Cannot open \"%s\": ERR=%s.\n"
-msgstr ""
-
-#: src/filed/backup.c:667
-#, c-format
-msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
-msgstr ""
-
-#: src/filed/backup.c:763
-msgid "Failed to allocate memory for crypto signature.\n"
-msgstr ""
-
-#: 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:813
-msgid "An error occurred finalizing signing the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:931
-#, c-format
-msgid "Compression deflateParams error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:968
-msgid "Encrypting sparse or offset data not supported.\n"
-msgstr ""
-
-#: src/filed/backup.c:975
-msgid "Failed to initialize encryption context.\n"
-msgstr ""
-
-#: src/filed/backup.c:1085
-#, c-format
-msgid "Compression deflate error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1092
-#, c-format
-msgid "Compression deflateReset error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1126
-#, c-format
-msgid "Compression LZO error: %d\n"
-msgstr "Compressie LZO fout: %d\n"
-
-#: src/filed/backup.c:1171 src/filed/backup.c:1187
-msgid "Encryption error\n"
-msgstr "Fout in versleuteling \n"
-
-#: src/filed/backup.c:1213
-#, c-format
-msgid "Read error on file %s. ERR=%s\n"
-msgstr "Lees fout op bestand %s. FOUT=%s\n"
-
-#: src/filed/backup.c:1216
-#, c-format
-msgid "Too many errors. JobErrors=%d.\n"
-msgstr "Te veel fouten. OpdrachtFouten=%d.\n"
-
-#: src/filed/backup.c:1226
-msgid "Encryption padding error\n"
-msgstr ""
-
-#: src/filed/backup.c:1290
-msgid "Invalid file flags, no supported data stream type.\n"
-msgstr ""
-
-#: src/filed/backup.c:1549
-#, c-format
-msgid "VSS Writer (BackupComplete): %s\n"
-msgstr ""
-
-#: src/filed/restore.c:114
-#, c-format
-msgid "Size of data or stream of %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/filed/restore.c:134
-#, c-format
-msgid "Invalid length of Finder Info (got %d, not 32)\n"
-msgstr ""
-
-#: src/filed/restore.c:139
-#, c-format
-msgid "Could not set Finder Info on %s\n"
-msgstr ""
-
-#: src/filed/restore.c:418
-msgid "LZO init failed\n"
-msgstr "Initialiseren LZO mislukt\n"
-
-#: src/filed/restore.c:660
-msgid "Unexpected cryptographic session data stream.\n"
-msgstr ""
-
-#: src/filed/restore.c:670
-msgid ""
-"No private decryption keys have been defined to decrypt encrypted backup "
-"data.\n"
-msgstr ""
-
-#: src/filed/restore.c:681
-msgid "Could not create digest.\n"
-msgstr ""
-
-#: src/filed/restore.c:699
-msgid "Missing private key required to decrypt encrypted backup data.\n"
-msgstr ""
-
-#: src/filed/restore.c:702
-msgid "Decrypt of the session key failed.\n"
-msgstr ""
-
-#: src/filed/restore.c:708
-#, c-format
-msgid "An error occurred while decoding encrypted session data stream: %s\n"
-msgstr ""
-
-#: 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:783 src/filed/restore.c:835
-#, c-format
-msgid "Failed to initialize decryption context for %s\n"
-msgstr ""
-
-#: src/filed/restore.c:847
-#, c-format
-msgid "Cannot open resource fork for %s.\n"
-msgstr ""
-
-#: src/filed/restore.c:992
-msgid "Unexpected cryptographic signature data stream.\n"
-msgstr ""
-
-#: src/filed/restore.c:1000
-#, c-format
-msgid "Failed to decode message signature for %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1064
-#, c-format
-msgid "Encountered %ld acl errors while doing restore\n"
-msgstr ""
-
-#: src/filed/restore.c:1068
-#, c-format
-msgid "Encountered %ld xattr errors while doing restore\n"
-msgstr ""
-
-#: 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:1076
-#, c-format
-msgid "%d non-supported resource fork streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1079
-#, c-format
-msgid "%d non-supported Finder Info streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1082
-#, c-format
-msgid "%d non-supported acl streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1085
-#, c-format
-msgid "%d non-supported crypto streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1088
-#, c-format
-msgid "%d non-supported xattr streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1168
-msgid "Zlib errno"
-msgstr "Zlib foutnr."
-
-#: src/filed/restore.c:1170
-msgid "Zlib stream error"
-msgstr "Zlib datastroom fout"
-
-#: src/filed/restore.c:1172
-msgid "Zlib data error"
-msgstr "Zlib data fout"
-
-#: src/filed/restore.c:1174
-msgid "Zlib memory error"
-msgstr "Zlib geheugen fout"
-
-#: src/filed/restore.c:1176
-msgid "Zlib buffer error"
-msgstr "Zlib buffer fout"
-
-#: src/filed/restore.c:1178
-msgid "Zlib version error"
-msgstr "Zlib versie fout"
-
-#: src/filed/restore.c:1218
-#, c-format
-msgid "Missing cryptographic signature for %s\n"
-msgstr ""
-
-#: 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:1268
-#, c-format
-msgid "Digest one file failed for file: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1307
-#, c-format
-msgid "Signature validation failed for %s: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1404
-#, c-format
-msgid "LZO uncompression error on file %s. ERR=%d\n"
-msgstr ""
-
-#: src/filed/restore.c:1441
-#, c-format
-msgid "Uncompression error on file %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/restore.c:1474
-#, c-format
-msgid "Write error in Win32 Block Decomposition on %s: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1533
-msgid "Decryption error\n"
-msgstr ""
-
-#: src/filed/restore.c:1626
-msgid "Logic error: output file should be open\n"
-msgstr ""
-
-#: src/filed/restore.c:1664
-msgid "Logic error: output file should not be open\n"
-msgstr ""
-
-#: 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:1819
-msgid "Open File Manager paused\n"
-msgstr ""
-
-#: src/filed/restore.c:1823
-msgid "FAILED to pause Open File Manager\n"
-msgstr ""
-
-#: src/filed/restore.c:1831
-#, c-format
-msgid "Running as '%s'. Privmask=%#08x\n"
-msgstr ""
-
-#: src/filed/restore.c:1833
-msgid "Failed to retrieve current UserName\n"
-msgstr ""
-
-#: src/filed/job.c:456
-#, c-format
-msgid "2901 Job %s not found.\n"
-msgstr ""
-
-#: src/filed/job.c:466
-#, c-format
-msgid "2001 Job %s marked to be canceled.\n"
-msgstr ""
-
-#: src/filed/job.c:469
-msgid "2902 Error scanning cancel command.\n"
+msgid "Storage: name=%s address=%s SDport=%d\n"
 msgstr ""
 
-#: src/filed/job.c:492
+#: src/qt-console/tray-monitor/tray_conf.cpp:187
 #, c-format
-msgid "2991 Bad setdebug command: %s\n"
+msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/filed/job.c:515
+#: src/qt-console/tray-monitor/tray_conf.cpp:245
 #, c-format
-msgid "Bad estimate command: %s"
-msgstr ""
-
-#: src/filed/job.c:516
-msgid "2992 Bad estimate command.\n"
+msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
-#: src/filed/job.c:539
+#: src/qt-console/tray-monitor/tray_conf.cpp:282
 #, c-format
-msgid "Bad Job Command: %s"
+msgid "Too many items in %s resource\n"
 msgstr ""
 
-#: src/filed/job.c:578
+#: src/qt-console/tray-monitor/tray_conf.cpp:302
+#: src/qt-console/tray-monitor/tray_conf.cpp:340
 #, c-format
-msgid "Bad RunBeforeJob command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:579 src/filed/job.c:598
-msgid "2905 Bad RunBeforeJob command.\n"
-msgstr ""
-
-#: src/filed/job.c:609
-msgid "2905 Bad RunBeforeNow command.\n"
+msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
 
-#: src/filed/job.c:628
-#, c-format
-msgid "Bad RunAfter command: %s\n"
-msgstr ""
+#~ msgid ""
+#~ "Copyright (C) 2005 Christian Masopust\n"
+#~ "Written by Christian Masopust (2005)\n"
+#~ "\n"
+#~ "Version: "
+#~ msgstr ""
+#~ "Copyright (C) 2005 Christian Masopust\n"
+#~ "Gemaakt door Christian Masopust (2005)\n"
+#~ "\n"
+#~ "Versie: "
 
-#: src/filed/job.c:629
-msgid "2905 Bad RunAfterJob command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not init database batch connection\n"
+#~ msgstr "Data parser kon niet geregistreerd worden!"
 
-#: src/filed/job.c:665
-#, c-format
-msgid "Bad RunScript command: %s\n"
-msgstr ""
+#~ msgid "*** Admin Error ***"
+#~ msgstr "*** Admin Fout ***"
 
-#: src/filed/job.c:666
-msgid "2905 Bad RunScript command.\n"
-msgstr ""
+#~ msgid "Admin Canceled"
+#~ msgstr "Admin geannuleerd"
 
-#: src/filed/job.c:720
-#, c-format
-msgid "Bad RestoreObject command: %s\n"
-msgstr ""
+#~ msgid "Backup OK -- with warnings"
+#~ msgstr "Backup OK -- met waarschuwingen"
 
-#: src/filed/job.c:785
-msgid "2909 Bad RestoreObject command.\n"
-msgstr ""
+#~ msgid "*** Backup Error ***"
+#~ msgstr "*** Backup Fout ***"
 
-#: src/filed/job.c:824
-#, c-format
-msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
-msgstr ""
+#~ msgid "Backup Canceled"
+#~ msgstr "Backup geannuleerd"
 
-#: src/filed/job.c:866
-#, c-format
-msgid "Error running program: %s. stat=%d: ERR=%s\n"
-msgstr ""
+#~ msgid "Error writing bsr file.\n"
+#~ msgstr "Fout bij schrijven van bsr bestand.\n"
 
-#: src/filed/job.c:877
-#, c-format
-msgid "Cannot open FileSet input file: %s. ERR=%s\n"
-msgstr ""
+#~ msgid "No Volumes found to restore.\n"
+#~ msgstr "Geen Volumes gevonden om terug te zetten.\n"
 
-#: src/filed/job.c:1031
-#, c-format
-msgid "REGEX %s compile error. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Volumes marked with \"*\" are in the Autochanger.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Volumes gemarkeerd met \"*\" staan online.\n"
 
-#: src/filed/job.c:1182
-#, c-format
-msgid "Invalid FileSet command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\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"
+#~ "       -f          run in foreground (for debugging)\n"
+#~ "       -g          groupid\n"
+#~ "       -m          print kaboom output (for debugging)\n"
+#~ "       -r <job>    run <job> now\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - read configuration and exit\n"
+#~ "       -u          userid\n"
+#~ "       -v          verbose user messages\n"
+#~ "       -?          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"
+
+#~ msgid "Job"
+#~ msgstr "Job"
+
+#~ msgid "Unable to init job cond variable: ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/filed/job.c:1655
-#, c-format
-msgid ""
-"DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to select Storage daemon.\n"
+#~ msgstr "Kan de geselecteerde opslag niet vinden."
 
-#: src/filed/job.c:1664
-#, c-format
-msgid "Unknown backup level: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "canceled"
+#~ msgstr "Backup geannuleerd"
 
-#: src/filed/job.c:1677
-#, c-format
-msgid "Bad level command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Job's NextPool resource"
+#~ msgstr "Selecteer Pool"
 
-#: src/filed/job.c:1699
-#, c-format
-msgid "Bad session command: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "Storage from Job's NextPool resource"
+#~ msgstr "Selecteer Pool"
 
-#: src/filed/job.c:1760
-#, c-format
-msgid "Bad storage command: %s"
-msgstr ""
+#~ msgid "Job %s waiting %d seconds for scheduled start time.\n"
+#~ msgstr "Job %s wacht %d seconde voor de start tijd.\n"
 
-#: src/filed/job.c:1781
-#, c-format
-msgid "Failed to connect to Storage daemon: %s:%d\n"
-msgstr ""
+#~ msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
+#~ msgstr ""
+#~ "Opnieuw ingeplande Job %s in %s start opnieuw in %d seconden (%s).\n"
 
-#: src/filed/job.c:1793
-msgid "Failed to authenticate Storage daemon.\n"
-msgstr ""
+#~ msgid "previous Job"
+#~ msgstr "vorige Job"
 
-#: src/filed/job.c:1840
-msgid "ACL support not configured for your machine.\n"
-msgstr ""
+#~ 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/filed/job.c:1844
-msgid "XATTR support not configured for your machine.\n"
-msgstr ""
+#~ msgid "Illegal character in Volume name \"%s\"\n"
+#~ msgstr "Onjuist karakter in Volume naam \"%s\"\n"
 
-#: src/filed/job.c:1853
-msgid "Cannot contact Storage daemon\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Created new Volume=\"%s\", Pool=\"%s\", MediaType=\"%s\" in catalog.\n"
+#~ msgstr "Nieuw volume \"%s\" aangemaakt in catalogus.\n"
 
-#: src/filed/job.c:1872
-#, c-format
-msgid "Bad response to append open: %s\n"
-msgstr ""
+#~ 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/filed/job.c:1877
-msgid "Bad response from stored to open command\n"
-msgstr ""
+#~ msgid "Too many failures. Giving up creating Volume name.\n"
+#~ msgstr "Teveel mislukte pogingen. Aanmaken volume naam gestopt.\n"
 
-#: src/filed/job.c:1909
-#, c-format
-msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Stop a job"
+#~ msgstr "Uitvoeren herstel opdracht"
 
-#: src/filed/job.c:1912
-#, c-format
-msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to set bandwidth limit to Client.\n"
+#~ msgstr "Kan de geselecteerde client niet vinden."
 
-#: src/filed/job.c:1919
-#, c-format
-msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
-msgstr ""
+#~ msgid "Job \"%s\" not found.\n"
+#~ msgstr "Job \"%s\" niet gevonden.\n"
 
-#: src/filed/job.c:1925
-#, c-format
-msgid "VSS Writer (PrepareForBackup): %s\n"
-msgstr ""
+#~ msgid "Storage"
+#~ msgstr "Opslag"
 
-#: src/filed/job.c:1930
-msgid "No drive letters found for generating VSS snapshots.\n"
-msgstr ""
+#~ msgid "Client"
+#~ msgstr "Client"
 
-#: src/filed/job.c:1934
-#, c-format
-msgid "VSS was not initialized properly. ERR=%s\n"
-msgstr ""
+#~ msgid "Could not find a Catalog resource\n"
+#~ msgstr "Kan Catalog medium niet vinden\n"
 
-#: src/filed/job.c:1985
-msgid "Append Close with SD failed.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to get Job record for Job=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/filed/job.c:1989
-#, c-format
-msgid "Bad status %d returned from Storage Daemon.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to get last Job record for Job=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/filed/job.c:2019
-#, c-format
-msgid "2994 Bad verify command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to get Client record for Client=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/filed/job.c:2034 src/filed/job.c:2075
-#, c-format
-msgid "2994 Bad verify level: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to get last Job record for Client=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/filed/job.c:2146
-#, c-format
-msgid "Bad replace command. CMD=%s\n"
-msgstr ""
+#~ msgid "The defined FileSet resources are:\n"
+#~ msgstr "De gedefinieerde Fileset media zijn:\n"
 
-#: src/filed/job.c:2169
-#, c-format
-msgid "Bad where regexp. where=%s\n"
-msgstr ""
+#~ msgid "Select FileSet resource"
+#~ msgstr "Selecteer FileSet bron"
 
-#: src/filed/job.c:2207
-#, c-format
-msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "NextPool \"%s\" not found.\n"
+#~ msgstr "Job \"%s\" niet gevonden.\n"
 
-#: src/filed/job.c:2252
-#, c-format
-msgid "VSS Writer (RestoreComplete): %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No authorization. NextPool \"%s\".\n"
+#~ msgstr "Geen toegang tot Pool \"%s\"\n"
 
-#: src/filed/job.c:2302
-msgid "Improper calling sequence.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Enter the JobId list to select: "
+#~ msgstr "Voer de gekozen Job in:"
 
-#: src/filed/job.c:2322
-#, c-format
-msgid "Bad response to SD read open: %s\n"
-msgstr ""
+#~ msgid "You have the following choices:\n"
+#~ msgstr "U heeft de volgende keuzes:\n"
 
-#: src/filed/job.c:2327
-msgid "Bad response from stored to read open command\n"
-msgstr ""
+#~ msgid "Pool"
+#~ msgstr "Pool"
 
-#: src/filed/job.c:2391
-#, c-format
-msgid "Comm error with SD. bad response to %s. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "NextPool"
+#~ msgstr "Pool"
 
-#: src/filed/job.c:2394
-#, c-format
-msgid "Bad response to %s command. Wanted %s, got %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Command input"
+#~ msgstr "Onjuiste opdrachtregel optie"
 
-#: src/filed/authenticate.c:68
-#, c-format
-msgid "I only authenticate directors, not %d\n"
-msgstr ""
+#~ msgid "The current %s retention period is: %s\n"
+#~ msgstr "De huidige %s retention periode: %s\n"
 
-#: src/filed/authenticate.c:100
-#, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
-msgstr ""
+#~ msgid "Continue? (yes/mod/no): "
+#~ msgstr "Doorgaan? (ja, wijz, nee):"
 
-#: src/filed/authenticate.c:144
-#, c-format
-msgid "Incorrect password given by Director at %s.\n"
-msgstr ""
+#~ msgid "Enter new retention period: "
+#~ msgstr "Geef nieuwe retention periode:"
 
-#: src/filed/authenticate.c:263
-msgid ""
-"Authorization key rejected by Storage daemon.\n"
-"Please see "
-msgstr ""
+#~ msgid "Invalid period.\n"
+#~ msgstr "Onjuiste periode.\n"
 
-#: examples/nagios/check_bacula/check_bacula.c:59
-#, c-format
-msgid ""
-"Copyright (C) 2005 Christian Masopust\n"
-"Written by Christian Masopust (2005)\n"
-"\n"
-"Version: "
-msgstr ""
-"Copyright (C) 2005 Christian Masopust\n"
-"Gemaakt door Christian Masopust (2005)\n"
-"\n"
-"Versie: "
+#~ msgid "The defined Storage resources are:\n"
+#~ msgstr "De gedefinieerde Opslag media zijn:\n"
 
-#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
-#, c-format
-msgid "Failed ASSERT: %s\n"
-msgstr ""
+#~ msgid "Select Storage resource"
+#~ msgstr "Selecteer opslag medium"
 
-#: src/win32/compat/compat.cpp:2721
-msgid ""
-"\n"
-"\n"
-"Bacula ERROR: "
-msgstr ""
-"\n"
-"\n"
-"Bacula FOUT: "
+#~ 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/win32/libwin32/service.cpp:107
-msgid "RegisterServiceCtlHandler failed"
-msgstr ""
+#~ msgid "The defined Catalog resources are:\n"
+#~ msgstr "De gedefinieerde Catalog media zijn:\n"
 
-#: src/win32/libwin32/service.cpp:108
-msgid "Failure contacting the Service Handler"
-msgstr ""
+#~ msgid "Select Catalog resource"
+#~ msgstr "Selecteer Catalog media"
 
-#: src/win32/libwin32/service.cpp:119
-msgid "Service start report failed"
-msgstr ""
+#~ msgid "The defined Job resources are:\n"
+#~ msgstr "De gedefinieerde job resources zijn:\n"
 
-#: src/win32/libwin32/service.cpp:172
-msgid "StartServiceCtrlDispatcher failed."
-msgstr ""
+#~ msgid "Select Job resource"
+#~ msgstr "Selecteer Job media:"
 
-#: src/win32/libwin32/service.cpp:179
-msgid "KERNEL32.DLL not found: Bacula service not started"
-msgstr "KERNEL32.DLL niet gevonden. Bacula service niet gestart"
+#~ msgid "Select Restore Job"
+#~ msgstr "Selecteer Job om terug te zetten"
 
-#: src/win32/libwin32/service.cpp:189
-msgid "Registry service not found: Bacula service not started"
-msgstr ""
+#~ msgid "The defined Client resources are:\n"
+#~ msgstr "De gedefinieerde Clients zijn:\n"
 
-#: src/win32/libwin32/service.cpp:191
-msgid "Registry service entry point not found"
-msgstr ""
+#~ msgid "Select Client (File daemon) resource"
+#~ msgstr "Selecteer een Client (File daemon)"
 
-#: src/win32/libwin32/service.cpp:212
-msgid "Report Service failure"
-msgstr ""
+#~ msgid "Error: Client resource %s does not exist.\n"
+#~ msgstr "Fout: Client %s bestaat niet.\n"
 
-#: src/win32/libwin32/service.cpp:243
-msgid "Unable to install the service"
-msgstr "Kan de service niet installeren"
+#~ msgid "Could not find Client %s: ERR=%s"
+#~ msgstr "Kan Client niet vinden %s: ERR=%s"
 
-#: src/win32/libwin32/service.cpp:251
-msgid "Service command length too long"
-msgstr "Lengte service commando te lang"
+#~ msgid "Could not find Client \"%s\": ERR=%s"
+#~ msgstr "Kan Client niet vinden \"%s\": ERR=%s"
 
-#: src/win32/libwin32/service.cpp:252
-msgid "Service command length too long. Service not registered."
-msgstr "Lengte service commando te lang. Service niet geregistreerd"
+#~ msgid "Defined Clients:\n"
+#~ msgstr "Gedefinieerde Clients:\n"
 
-#: src/win32/libwin32/service.cpp:265
-msgid ""
-"The Service Control Manager could not be contacted - the service was not "
-"installed"
-msgstr ""
+#~ msgid "Select the Client"
+#~ msgstr "Selecteer Client"
 
-#: src/win32/libwin32/service.cpp:288 src/win32/libwin32/service.cpp:317
-#: src/win32/libwin32/service.cpp:365 src/win32/libwin32/service.cpp:373
-#: src/win32/libwin32/service.cpp:377
-msgid "The Bacula service: "
-msgstr "De Bacula service:"
+#~ msgid "Defined Pools:\n"
+#~ msgstr "Gedefinieerde Pools:\n"
 
-#: src/win32/libwin32/service.cpp:295
-msgid ""
-"Provides file backup and restore services. Bacula -- the network backup "
-"solution."
-msgstr ""
+#~ msgid "Select the Pool"
+#~ msgstr "Selecteer Pool"
 
-#: src/win32/libwin32/service.cpp:306
-msgid "Cannot write System Registry for "
-msgstr ""
+#~ msgid "No access to Pool \"%s\"\n"
+#~ msgstr "Geen toegang tot Pool \"%s\"\n"
 
-#: src/win32/libwin32/service.cpp:307
-msgid ""
-"The System Registry could not be updated - the Bacula service was not "
-"installed"
-msgstr ""
+#~ msgid "Enter *MediaId or Volume name: "
+#~ msgstr "Voer *MediaId of Volume naam in:"
 
-#: src/win32/libwin32/service.cpp:316
-msgid "Cannot add Bacula key to System Registry"
-msgstr "Kan Bacula sleutel niet aan Systeem Register toevoegen"
+#~ msgid "Select Pool resource"
+#~ msgstr "Selecteer Pool"
 
-#: src/win32/libwin32/service.cpp:327
-msgid "The "
-msgstr "De"
+#~ msgid "Enter the JobId to select: "
+#~ msgstr "Voer de gekozen Job in:"
 
-#: src/win32/libwin32/service.cpp:385
-msgid "An existing Bacula service: "
-msgstr "Een bestaande Bacula service:"
+#~ msgid "Could not find Job \"%s\": ERR=%s"
+#~ msgstr "Kan Job niet vinden \"%s\": ERR=%s"
 
-#: src/win32/libwin32/service.cpp:394
-msgid ""
-"The service Manager could not be contacted - the Bacula service was not "
-"removed"
-msgstr ""
+#~ msgid "Please enter a number between 1 and %d\n"
+#~ msgstr "Voer een nummer in tussen 1 en %d\n"
 
-#: src/win32/libwin32/service.cpp:407
-msgid ""
-"Could not find registry entry.\n"
-"Service probably not registerd - the Bacula service was not removed"
-msgstr ""
+#~ msgid "JobId %s is not running.\n"
+#~ msgstr "JobID %s is niet in uitvoering.\n"
 
-#: src/win32/libwin32/service.cpp:414
-msgid "Could not delete Registry key for "
-msgstr ""
+#~ msgid "Job \"%s\" is not running.\n"
+#~ msgstr "Job \"%s\" is niet in uitvoering.\n"
 
-#: src/win32/libwin32/service.cpp:425
-msgid "Bacula could not be contacted, probably not running"
-msgstr "Bacula kan niet worden bereikt, waarschijnlijk niet opgestart"
+#~ msgid "Enter autochanger drive[0]: "
+#~ msgstr "Voer autochanger drive[0] in: "
 
-#: src/win32/libwin32/service.cpp:433
-msgid "The Bacula service has been removed"
-msgstr "De Bacula service is verwijderd"
+#~ msgid "Enter autochanger slot: "
+#~ msgstr "Voer autochanger slot in:"
 
-#: src/win32/libwin32/service.cpp:474
-msgid "SetServiceStatus failed"
-msgstr ""
+#~ msgid "Media Type"
+#~ msgstr "Type media"
 
-#: src/win32/libwin32/service.cpp:500
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s error: %ld at %s:%d"
-msgstr ""
-"\n"
-"\n"
-"%s fout: %ld op %s:%d"
+#~ msgid "Select the Media Type"
+#~ msgstr "Selecteer media type"
 
-#: src/win32/libwin32/service.cpp:576
-#, c-format
-msgid "Locked by: %s, duration: %ld seconds\n"
-msgstr ""
+#~ msgid "No Jobs running.\n"
+#~ msgstr "Geen Jobs in uitvoering.\n"
 
-#: src/win32/libwin32/service.cpp:580
-#, c-format
-msgid "No longer locked\n"
-msgstr ""
+#~ msgid "None of your jobs are running.\n"
+#~ msgstr "Geen van uw opdrachten zijn in uitvoering.\n"
 
-#: src/win32/libwin32/service.cpp:584
-msgid "Could not lock database"
-msgstr ""
+#, fuzzy
+#~ msgid "Confirm %s of %d Job%s (yes/no): "
+#~ msgstr "Bevestig annulering (yes/no)"
 
-#: src/win32/libwin32/main.cpp:245
-msgid "Bad Command Line Option"
-msgstr "Onjuiste opdrachtregel optie"
+#, fuzzy
+#~ msgid "Select Job(s):\n"
+#~ msgstr "Selecteer Job:\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:65
 #, fuzzy
-msgid "Config file editor"
-msgstr "Configuratiebestand"
+#~ msgid "Choose Job list to %s"
+#~ msgstr "Voer de gekozen Job in:"
+
+#~ msgid "You have messages.\n"
+#~ msgstr "U heeft berichten.\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:75
 #, fuzzy
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr "Corrigeer configuratie bestand aub.\n"
+#~ msgid "is waiting for its start time (%s)"
+#~ msgstr "Job %s wacht %d seconde voor de start tijd.\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr "Opslaan en afsluiten"
+#~ msgid "Verify OK"
+#~ msgstr "Controle OK"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:112
-msgid "Close without saving"
-msgstr ""
+#~ msgid "*** Verify Error ***"
+#~ msgstr "*** Fout bij controleren ***"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-#, fuzzy, c-format
-msgid "Unable to write to %s\n"
-msgstr "Kan de service niet installeren"
+#~ msgid "New file: %s\n"
+#~ msgstr "Nieuw bestand: %s\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:140
-msgid "Error while saving"
-msgstr ""
+#~ msgid "File not in catalog: %s\n"
+#~ msgstr "Bestand niet in catalog: %s\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 "Terugzetten afbreken"
-
-#: src/wx-console/wxbrestorepanel.cpp:237
-msgid "Cancel restore"
-msgstr "Terugzetten afbreken"
-
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr "Toevoegen"
-
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
-msgid "Remove"
-msgstr "Verwijderen"
-
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
-msgid "Refresh"
-msgstr "Verversen"
-
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr "M"
-
-#: src/wx-console/wxbrestorepanel.cpp:290
-msgid "Filename"
-msgstr "Bestandsnaam"
-
-#: src/wx-console/wxbrestorepanel.cpp:294
-msgid "Size"
-msgstr "Omvang"
-
-#: src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr "Datum"
-
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr "Perm."
-
-#: src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr "Gebruiker"
-
-#: src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr "Groep"
-
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1897
-msgid "Job Name"
-msgstr "Naam opdracht:"
-
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1153
-#: src/wx-console/wxbrestorepanel.cpp:1156
-#: src/wx-console/wxbrestorepanel.cpp:1239
-#: src/wx-console/wxbrestorepanel.cpp:1849
-#: src/wx-console/wxbrestorepanel.cpp:1851
-#: src/wx-console/wxbrestorepanel.cpp:1912
-#, fuzzy
-msgid "Fileset"
-msgstr "Bestandsnaam"
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1233
-#: src/wx-console/wxbrestorepanel.cpp:1249
-#: src/wx-console/wxbrestorepanel.cpp:1251
-#: src/wx-console/wxbrestorepanel.cpp:1259
-#: src/wx-console/wxbrestorepanel.cpp:1261
-#: src/wx-console/wxbrestorepanel.cpp:1280
-#: src/wx-console/wxbrestorepanel.cpp:1287
-#: src/wx-console/wxbrestorepanel.cpp:1839
-#: src/wx-console/wxbrestorepanel.cpp:1850
-#: src/wx-console/wxbrestorepanel.cpp:1971
-msgid "Before"
-msgstr ""
+#~ msgid "      st_ino   differ. Cat: %s File: %s\n"
+#~ msgstr "      st_ino   verschil. Cat: %s Bestand: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:342
-msgid "Please configure parameters concerning files to restore :"
-msgstr "Configureer parameters voor het terugzetten van bestanden aub :"
+#~ msgid "      st_mode  differ. Cat: %x File: %x\n"
+#~ msgstr "      st_mode  verschil. Cat: %x Bestand: %x\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1905
-msgid "always"
-msgstr "altijd"
+#~ msgid "      st_nlink differ. Cat: %d File: %d\n"
+#~ msgstr "      st_nlink verschil. Cat: %d Bestand: %d\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if newer"
-msgstr "indien nieuwer"
+#~ msgid "      st_uid   differ. Cat: %u File: %u\n"
+#~ msgstr "      st_uid   verschil. Cat: %u Bestand: %u\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if older"
-msgstr "indien ouder"
+#~ msgid "      st_gid   differ. Cat: %u File: %u\n"
+#~ msgstr "      st_gid   verschil. Cat: %u Bestand: %u\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1908
-msgid "never"
-msgstr "nooit"
+#~ msgid "      st_size  differ. Cat: %s File: %s\n"
+#~ msgstr "      st_size  verschil. Cat: %s Bestand: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:359
-#, fuzzy
-msgid "Please configure parameters concerning files restoration :"
-msgstr "Configureer parameters voor het terugzetten van bestanden aub :"
+#~ msgid "      st_atime differs\n"
+#~ msgstr "      st_atime verschilt\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr ""
+#~ msgid "      st_mtime differs\n"
+#~ msgstr "      st_mtime verschilt\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:435
-#, fuzzy
-msgid "Error : no clients returned by the director."
-msgstr "Verbonden met de director."
+#~ msgid "      st_ctime differs\n"
+#~ msgstr "      st_ctime verschilt\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:459
-msgid "Error : no filesets returned by the director."
-msgstr ""
+#~ msgid "File: %s\n"
+#~ msgstr "Bestand: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:483
 #, fuzzy
-msgid "Error : no storage returned by the director."
-msgstr "Verbonden met de director."
+#~ msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "Lees fout op bestand %s. FOUT=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
 #, fuzzy
-msgid "Error : no jobs returned by the director."
-msgstr "Verbonden met de director."
+#~ msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "Lees fout op bestand %s. FOUT=%s\n"
+
+#~ msgid "Compression LZO error: %d\n"
+#~ msgstr "Compressie LZO fout: %d\n"
+
+#~ msgid "Encryption error\n"
+#~ msgstr "Fout in versleuteling \n"
+
+#~ msgid "Read error on file %s. ERR=%s\n"
+#~ msgstr "Lees fout op bestand %s. FOUT=%s\n"
+
+#~ msgid "Too many errors. JobErrors=%d.\n"
+#~ msgstr "Te veel fouten. OpdrachtFouten=%d.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:516
 #, fuzzy
-msgid "RestoreFiles"
-msgstr "Terugzetten geannuleerd."
+#~ msgid ""
+#~ "\n"
+#~ "%sVersion: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
+#~ "     -c <file>        use <file> as configuration file\n"
+#~ "     -d <n>[,<tags>]  set debug level to <nn>, debug tags to <tags>\n"
+#~ "     -dt              print a timestamp in debug output\n"
+#~ "     -f               run in foreground (for debugging)\n"
+#~ "     -g               groupid\n"
+#~ "     -k               keep readall capabilities\n"
+#~ "     -m               print kaboom output (for debugging)\n"
+#~ "     -s               no signals (for debugging)\n"
+#~ "     -t               test configuration file and exit\n"
+#~ "     -T               set trace on\n"
+#~ "     -u               userid\n"
+#~ "     -v               verbose user messages\n"
+#~ "     -?               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/wx-console/wxbrestorepanel.cpp:551
-msgid "Please configure your restore parameters."
-msgstr ""
+#, fuzzy
+#~ msgid "Disable Command \"%s\" not found.\n"
+#~ msgstr "Job \"%s\" niet gevonden.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:556
 #, fuzzy
-msgid "Please select a client."
-msgstr "Kan de geselecteerde client niet vinden."
+#~ msgid "Command: \"%s\" is disabled.\n"
+#~ msgstr "Opdracht mislukt."
 
-#: src/wx-console/wxbrestorepanel.cpp:560
 #, fuzzy
-msgid "Please select a restore date."
-msgstr "Kiest u een director (1-%d): "
+#~ msgid "Failed connect from Storage daemon. SD bsock=NULL.\n"
+#~ msgstr "Kan de geselecteerde opslag niet vinden."
 
-#: src/wx-console/wxbrestorepanel.cpp:565
-msgid "Building restore tree..."
-msgstr ""
+#~ msgid "LZO init failed\n"
+#~ msgstr "Initialiseren LZO mislukt\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:613
-msgid "Error while starting restore: "
-msgstr ""
+#~ msgid "Zlib errno"
+#~ msgstr "Zlib foutnr."
 
-#: src/wx-console/wxbrestorepanel.cpp:705
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
+#~ msgid "Zlib stream error"
+#~ msgstr "Zlib datastroom fout"
+
+#~ msgid "Zlib data error"
+#~ msgstr "Zlib data fout"
+
+#~ msgid "Zlib memory error"
+#~ msgstr "Zlib geheugen fout"
+
+#~ msgid "Zlib buffer error"
+#~ msgstr "Zlib buffer fout"
+
+#~ msgid "Zlib version error"
+#~ msgstr "Zlib versie fout"
 
-#: src/wx-console/wxbrestorepanel.cpp:720 src/wx-console/wxbmainframe.cpp:685
 #, fuzzy
-msgid "Unexpected question has been received.\n"
-msgstr "<< Onverwacht signaal ontvangen : "
+#~ msgid "Restore Object"
+#~ msgstr "Uitvoeren herstel opdracht"
 
-#: src/wx-console/wxbrestorepanel.cpp:742
-#: src/wx-console/wxbrestorepanel.cpp:764
 #, fuzzy
-msgid "bwx-console: unexpected restore question."
-msgstr "bwx-console: onverwachte director's opdracht"
+#~ msgid "No addr/port found to listen on.\n"
+#~ msgstr "Geen Volumes gevonden om terug te zetten.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:775
 #, fuzzy
-msgid " files selected to be restored."
-msgstr "Geen Volumes gevonden om terug te zetten.\n"
+#~ msgid "User cancel requested.\n"
+#~ msgstr "Terugzetten geannuleerd."
 
-#: src/wx-console/wxbrestorepanel.cpp:780
 #, fuzzy
-msgid " file selected to be restored."
-msgstr "Selecteer Job media:"
+#~ msgid "Selection item too large.\n"
+#~ msgstr "Selecteer Pool"
 
-#: src/wx-console/wxbrestorepanel.cpp:787
-#, fuzzy, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr "Configureer parameters voor het terugzetten van bestanden aub :"
+#, fuzzy
+#~ msgid "Job failed or canceled.\n"
+#~ msgstr "Terugzetten geannuleerd.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:797
 #, fuzzy
-msgid "Restore failed : no file selected.\n"
-msgstr "Kan de geselecteerde client niet vinden."
+#~ msgid "Error sending Volume info to Director.\n"
+#~ msgstr "Geen Volumes gevonden om terug te zetten.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:798
 #, fuzzy
-msgid "Restore failed : no file selected."
-msgstr "Kan de geselecteerde client niet vinden."
+#~ msgid "Unable to init spool mutex: ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:808
 #, fuzzy
-msgid "Restoring, please wait..."
-msgstr "Terugzetten..."
+#~ msgid "Unable to init acquire mutex: ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:821
-msgid "Job queued. JobId="
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init read acquire mutex: ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:823
-msgid "Restore queued, jobid="
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init volcat mutex: ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:827
-msgid "Job failed."
-msgstr "Job mislukt."
+#, fuzzy
+#~ msgid "Unable to init dcrs mutex: ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:828
-msgid "Restore failed, please look at messages.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Client daemon"
+#~ msgstr "Client"
 
-#: src/wx-console/wxbrestorepanel.cpp:829
-msgid "Restore failed, please look at messages in console."
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to connect to Client daemon: %s:%d\n"
+#~ msgstr "Verbinden met de director mislukt\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:835
-#: src/wx-console/wxbrestorepanel.cpp:836
-msgid "Failed to retrieve jobid.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not open(%s,%s,0640): ERR=%s\n"
+#~ msgstr "Kan Client niet vinden %s: ERR=%s"
 
-#: src/wx-console/wxbrestorepanel.cpp:862
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Recv request to Client failed. ERR=%s\n"
+#~ msgstr "Lees fout op bestand %s. FOUT=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:863
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion."
-msgstr ""
+#, fuzzy
+#~ msgid "Couldn't rewind %s device %s: ERR=%s\n"
+#~ msgstr "Kan Client niet vinden %s: ERR=%s"
 
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job created, but not yet running."
-msgstr ""
+#, fuzzy
+#~ msgid "Rewind error on %s device %s: ERR=%s\n"
+#~ msgstr "Lees fout op bestand %s. FOUT=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:894
-#, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr ""
+#, fuzzy
+#~ msgid "Truncate error on %s device %s: ERR=%s\n"
+#~ msgstr "Lees fout op bestand %s. FOUT=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:898
 #, fuzzy
-msgid "Restore job terminated successfully."
-msgstr "Terugzetten succesvol."
+#~ msgid "Unable to write %s device %s: ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:899
 #, fuzzy
-msgid "Restore job terminated successfully.\n"
-msgstr "Terugzetten succesvol.\n"
+#~ msgid "Unable to position to end of data on %s device %s: ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:904
-msgid "Restore job terminated in error, see messages in console."
-msgstr ""
+#, fuzzy
+#~ msgid "Volume \"%s\" not on %s device %s.\n"
+#~ msgstr "Job \"%s\" niet gevonden.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:905
-msgid "Restore job terminated in error, see messages.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Labeled new Volume \"%s\" on %s device %s.\n"
+#~ msgstr "Nieuw volume \"%s\" aangemaakt in catalogus.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:910
-msgid "Restore job reported a non-fatal error."
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to connect to mailhost %s\n"
+#~ msgstr "Verbinden met de director mislukt\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:914
-msgid "Restore job reported a fatal error."
-msgstr ""
+#~ msgid ""
+#~ "Cancel: %s\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Anuleer: %s\n"
+#~ "\n"
+#~ "%s"
 
-#: src/wx-console/wxbrestorepanel.cpp:919
-#, fuzzy
-msgid "Restore job cancelled by user."
-msgstr "Terugzetten geannuleerd."
+#~ msgid "Confirm cancel?"
+#~ msgstr "Bevestig annulering?"
 
-#: src/wx-console/wxbrestorepanel.cpp:920
-#, fuzzy
-msgid "Restore job cancelled by user.\n"
-msgstr "Terugzetten geannuleerd."
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "Bacula ERROR: "
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "Bacula FOUT: "
 
-#: src/wx-console/wxbrestorepanel.cpp:925
-msgid "Restore job is waiting on File daemon."
-msgstr ""
+#~ msgid "KERNEL32.DLL not found: Bacula service not started"
+#~ msgstr "KERNEL32.DLL niet gevonden. Bacula service niet gestart"
 
-#: src/wx-console/wxbrestorepanel.cpp:929
-msgid "Restore job is waiting for new media."
-msgstr ""
+#~ msgid "Unable to install the service"
+#~ msgstr "Kan de service niet installeren"
 
-#: src/wx-console/wxbrestorepanel.cpp:933
-msgid "Restore job is waiting for storage resource."
-msgstr ""
+#~ msgid "Service command length too long"
+#~ msgstr "Lengte service commando te lang"
 
-#: src/wx-console/wxbrestorepanel.cpp:937
-msgid "Restore job is waiting for job resource."
-msgstr ""
+#~ msgid "Service command length too long. Service not registered."
+#~ msgstr "Lengte service commando te lang. Service niet geregistreerd"
 
-#: src/wx-console/wxbrestorepanel.cpp:941
-msgid "Restore job is waiting for Client resource."
-msgstr ""
+#~ msgid "The Bacula service: "
+#~ msgstr "De Bacula service:"
 
-#: src/wx-console/wxbrestorepanel.cpp:945
-msgid "Restore job is waiting for maximum jobs."
-msgstr ""
+#~ msgid "Cannot add Bacula key to System Registry"
+#~ msgstr "Kan Bacula sleutel niet aan Systeem Register toevoegen"
 
-#: src/wx-console/wxbrestorepanel.cpp:949
-#, fuzzy
-msgid "Restore job is waiting for start time."
-msgstr "Job %s wacht %d seconde voor de start tijd.\n"
+#~ msgid "The "
+#~ msgstr "De"
 
-#: src/wx-console/wxbrestorepanel.cpp:953
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr ""
+#~ msgid "An existing Bacula service: "
+#~ msgstr "Een bestaande Bacula service:"
 
-#: src/wx-console/wxbrestorepanel.cpp:1002
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
+#~ msgid "Bacula could not be contacted, probably not running"
+#~ msgstr "Bacula kan niet worden bereikt, waarschijnlijk niet opgestart"
 
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
+#~ msgid "The Bacula service has been removed"
+#~ msgstr "De Bacula service is verwijderd"
 
-#: src/wx-console/wxbrestorepanel.cpp:1013
-msgid "Restore done successfully.\n"
-msgstr "Terugzetten succesvol.\n"
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "%s error: %ld at %s:%d"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "%s fout: %ld op %s:%d"
 
-#: src/wx-console/wxbrestorepanel.cpp:1014
-msgid "Restore done successfully."
-msgstr "Terugzetten succesvol."
+#, fuzzy
+#~ msgid "Config file editor"
+#~ msgstr "Configuratiebestand"
+
+#~ msgid "Save and close"
+#~ msgstr "Opslaan en afsluiten"
 
-#: src/wx-console/wxbrestorepanel.cpp:1086
 #, fuzzy
-msgid "Applying restore configuration changes..."
-msgstr "Corrigeer configuratie bestand aub.\n"
+#~ msgid "Unable to write to %s\n"
+#~ msgstr "Kan de service niet installeren"
 
-#: src/wx-console/wxbrestorepanel.cpp:1138
-msgid "Failed to find the selected client."
-msgstr "Kan de geselecteerde client niet vinden."
+#, fuzzy
+#~ msgid "Enter restore mode"
+#~ msgstr "Terugzetten afbreken"
 
-#: src/wx-console/wxbrestorepanel.cpp:1158
-msgid "Failed to find the selected fileset."
-msgstr "Kan de geselecteerde fileset niet vinden."
+#~ msgid "Cancel restore"
+#~ msgstr "Terugzetten afbreken"
 
-#: src/wx-console/wxbrestorepanel.cpp:1178
-msgid "Failed to find the selected storage."
-msgstr "Kan de geselecteerde opslag niet vinden."
+#~ msgid "Add"
+#~ msgstr "Toevoegen"
 
-#: src/wx-console/wxbrestorepanel.cpp:1199
-#: src/wx-console/wxbrestorepanel.cpp:1886
-msgid "Run Restore job"
-msgstr "Uitvoeren herstel opdracht"
+#~ msgid "Remove"
+#~ msgstr "Verwijderen"
 
-#: src/wx-console/wxbrestorepanel.cpp:1216
-msgid "Restore configuration changes were applied."
-msgstr ""
+#~ msgid "Refresh"
+#~ msgstr "Verversen"
 
-#: src/wx-console/wxbrestorepanel.cpp:1225
-#, fuzzy
-msgid "Restore cancelled.\n"
-msgstr "Terugzetten geannuleerd."
+#~ msgid "M"
+#~ msgstr "M"
+
+#~ msgid "Filename"
+#~ msgstr "Bestandsnaam"
+
+#~ msgid "Size"
+#~ msgstr "Omvang"
+
+#~ msgid "Date"
+#~ msgstr "Datum"
 
-#: src/wx-console/wxbrestorepanel.cpp:1226
-msgid "Restore cancelled."
-msgstr "Terugzetten geannuleerd."
+#~ msgid "Perm."
+#~ msgstr "Perm."
 
-#: src/wx-console/wxbrestorepanel.cpp:1248
-msgid "No results to list."
-msgstr "Geen resultaten gevonden om te tonen."
+#~ msgid "User"
+#~ msgstr "Gebruiker"
 
-#: src/wx-console/wxbrestorepanel.cpp:1250
-msgid "No backup found for this client."
-msgstr "Geen backup gevonden voor deze client."
+#~ msgid "Group"
+#~ msgstr "Groep"
 
-#: src/wx-console/wxbrestorepanel.cpp:1257
-msgid "ERROR"
-msgstr "FOUT"
+#~ msgid "Job Name"
+#~ msgstr "Naam opdracht:"
 
-#: src/wx-console/wxbrestorepanel.cpp:1258
 #, fuzzy
-msgid "Query failed"
-msgstr "Job mislukt."
+#~ msgid "Fileset"
+#~ msgstr "Bestandsnaam"
 
-#: src/wx-console/wxbrestorepanel.cpp:1260
-msgid "Cannot get previous backups list, see console."
-msgstr "Kan vorige backuplijst niet ophalen, zie console."
+#~ msgid "Please configure parameters concerning files to restore :"
+#~ msgstr "Configureer parameters voor het terugzetten van bestanden aub :"
 
-#: src/wx-console/wxbrestorepanel.cpp:1896
-msgid "JobName:"
-msgstr "JobNaam:"
+#~ msgid "always"
+#~ msgstr "altijd"
 
-#: src/wx-console/wxbrestorepanel.cpp:1898
-msgid "Bootstrap:"
-msgstr ""
+#~ msgid "if newer"
+#~ msgstr "indien nieuwer"
 
-#: src/wx-console/wxbrestorepanel.cpp:1900
-msgid "Where:"
-msgstr ""
+#~ msgid "if older"
+#~ msgstr "indien ouder"
 
-#: src/wx-console/wxbrestorepanel.cpp:1903
-msgid "Replace:"
-msgstr ""
+#~ msgid "never"
+#~ msgstr "nooit"
 
-#: src/wx-console/wxbrestorepanel.cpp:1906
 #, fuzzy
-msgid "ifnewer"
-msgstr "indien nieuwer"
+#~ msgid "Please configure parameters concerning files restoration :"
+#~ msgstr "Configureer parameters voor het terugzetten van bestanden aub :"
 
-#: src/wx-console/wxbrestorepanel.cpp:1907
 #, fuzzy
-msgid "ifolder"
-msgstr "indien ouder"
+#~ msgid "Error : no clients returned by the director."
+#~ msgstr "Verbonden met de director."
 
-#: src/wx-console/wxbrestorepanel.cpp:1911
 #, fuzzy
-msgid "FileSet:"
-msgstr "Bestandsnaam"
+#~ msgid "Error : no storage returned by the director."
+#~ msgstr "Verbonden met de director."
 
-#: src/wx-console/wxbrestorepanel.cpp:1913
 #, fuzzy
-msgid "Client:"
-msgstr "Client"
+#~ msgid "Error : no jobs returned by the director."
+#~ msgstr "Verbonden met de director."
 
-#: src/wx-console/wxbrestorepanel.cpp:1915
 #, fuzzy
-msgid "Storage:"
-msgstr "Opslag"
-
-#: src/wx-console/wxbrestorepanel.cpp:1917
-msgid "When:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1920
-msgid "Priority:"
-msgstr ""
+#~ msgid "RestoreFiles"
+#~ msgstr "Terugzetten geannuleerd."
 
-#: src/wx-console/wxbrestorepanel.cpp:2028
-msgid "Restoring..."
-msgstr "Terugzetten..."
+#, fuzzy
+#~ msgid "Please select a client."
+#~ msgstr "Kan de geselecteerde client niet vinden."
 
-#: src/wx-console/console_thread.cpp:125
-#, 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 ""
+#, fuzzy
+#~ msgid "Please select a restore date."
+#~ msgstr "Kiest u een director (1-%d): "
 
-#: src/wx-console/console_thread.cpp:132
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unexpected question has been received.\n"
+#~ msgstr "<< Onverwacht signaal ontvangen : "
 
-#: src/wx-console/console_thread.cpp:151
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
-msgstr ""
+#, fuzzy
+#~ msgid " files selected to be restored."
+#~ msgstr "Geen Volumes gevonden om terug te zetten.\n"
 
-#: src/wx-console/console_thread.cpp:173
-msgid "Error while initializing windows sockets...\n"
-msgstr ""
+#, fuzzy
+#~ msgid " file selected to be restored."
+#~ msgstr "Selecteer Job media:"
 
-#: src/wx-console/console_thread.cpp:189
-msgid "Error while cleaning up windows sockets...\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Please configure your restore (%ld files selected to be restored)..."
+#~ msgstr "Configureer parameters voor het terugzetten van bestanden aub :"
 
-#: src/wx-console/console_thread.cpp:228
-msgid "Error while initializing library."
-msgstr ""
+#, fuzzy
+#~ msgid "Restore failed : no file selected.\n"
+#~ msgstr "Kan de geselecteerde client niet vinden."
 
-#: src/wx-console/console_thread.cpp:256
-msgid "Cryptographic library initialization failed.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore failed : no file selected."
+#~ msgstr "Kan de geselecteerde client niet vinden."
 
-#: src/wx-console/console_thread.cpp:260
-msgid "Please correct configuration file.\n"
-msgstr "Corrigeer configuratie bestand aub.\n"
+#, fuzzy
+#~ msgid "Restoring, please wait..."
+#~ msgstr "Terugzetten..."
 
-#: src/wx-console/console_thread.cpp:302
-msgid "Error : Library not initialized\n"
-msgstr ""
+#~ msgid "Job failed."
+#~ msgstr "Job mislukt."
 
-#: src/wx-console/console_thread.cpp:313
 #, fuzzy
-msgid "Error : No configuration file loaded\n"
-msgstr "Wijzigen configuratiebestand"
-
-#: src/wx-console/console_thread.cpp:323
-msgid "Connecting...\n"
-msgstr "Verbinding maken ...\n"
+#~ msgid "Restore job terminated successfully."
+#~ msgstr "Terugzetten succesvol."
 
-#: src/wx-console/console_thread.cpp:339
-msgid "Error : No director defined in config file.\n"
-msgstr "Fout : Geen director gevonden in uw configuratie.\n"
+#, fuzzy
+#~ msgid "Restore job terminated successfully.\n"
+#~ msgstr "Terugzetten succesvol.\n"
 
-#: src/wx-console/console_thread.cpp:351
-msgid "Multiple directors found in your config file.\n"
-msgstr "Meerdere directors gevonden in uw configuratiebestand.\n"
+#, fuzzy
+#~ msgid "Restore job cancelled by user."
+#~ msgstr "Terugzetten geannuleerd."
 
-#: src/wx-console/console_thread.cpp:360
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr "Kiest u een director (1-%d): "
+#, fuzzy
+#~ msgid "Restore job cancelled by user.\n"
+#~ msgstr "Terugzetten geannuleerd."
 
-#: src/wx-console/console_thread.cpp:389
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr ""
+#~ msgid "Restore done successfully.\n"
+#~ msgstr "Terugzetten succesvol.\n"
 
-#: src/wx-console/console_thread.cpp:410
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr ""
+#~ msgid "Restore done successfully."
+#~ msgstr "Terugzetten succesvol."
 
-#: src/wx-console/console_thread.cpp:432
 #, fuzzy
-msgid "Failed to connect to the director\n"
-msgstr "Verbinding naar director opnieuw opzetten"
+#~ msgid "Applying restore configuration changes..."
+#~ msgstr "Corrigeer configuratie bestand aub.\n"
 
-#: src/wx-console/console_thread.cpp:442
-msgid "Connected\n"
-msgstr "Verbonden\n"
-
-#: src/wx-console/console_thread.cpp:499
-msgid "<< Unexpected signal received : "
-msgstr "<< Onverwacht signaal ontvangen : "
+#~ msgid "Failed to find the selected client."
+#~ msgstr "Kan de geselecteerde client niet vinden."
 
-#: src/wx-console/console_thread.cpp:519
-msgid "Connection terminated\n"
-msgstr "Verbinding verbroken\n"
+#~ msgid "Failed to find the selected fileset."
+#~ msgstr "Kan de geselecteerde fileset niet vinden."
 
-#: src/wx-console/wxbconfigpanel.cpp:213
-msgid "Apply"
-msgstr "Toepassen"
+#~ msgid "Restore cancelled."
+#~ msgstr "Terugzetten geannuleerd."
 
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-#: src/wx-console/wxbmainframe.cpp:291
-msgid "Type your command below:"
-msgstr "Voer uw opdracht hieronder in:"
+#~ msgid "No results to list."
+#~ msgstr "Geen resultaten gevonden om te tonen."
 
-#: src/wx-console/wxbhistorytextctrl.cpp:117
-msgid "Unknown command."
-msgstr "Onbekende opdracht."
+#~ msgid "No backup found for this client."
+#~ msgstr "Geen backup gevonden voor deze client."
 
-#: src/wx-console/wxbhistorytextctrl.cpp:126
-msgid "Possible completions: "
-msgstr ""
+#~ msgid "ERROR"
+#~ msgstr "FOUT"
 
-#: src/wx-console/main.cpp:119
 #, fuzzy
-msgid "Bacula bwx-console"
-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 "Welkom bij het bacula bwx-console %s (%s)!\n"
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr "&Over...\tF1"
+#~ msgid "Query failed"
+#~ msgstr "Job mislukt."
 
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr "Toon het Over scherm"
+#~ msgid "Cannot get previous backups list, see console."
+#~ msgstr "Kan vorige backuplijst niet ophalen, zie console."
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
-msgid "Connect"
-msgstr "Verbonden"
+#~ msgid "JobName:"
+#~ msgstr "JobNaam:"
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
-msgid "Connect to the director"
-msgstr "Verbinden met director"
+#, fuzzy
+#~ msgid "ifnewer"
+#~ msgstr "indien nieuwer"
 
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect"
-msgstr "Verbroken"
+#, fuzzy
+#~ msgid "ifolder"
+#~ msgstr "indien ouder"
 
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect of the director"
-msgstr "Verbroken van de director"
+#, fuzzy
+#~ msgid "FileSet:"
+#~ msgstr "Bestandsnaam"
 
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change of configuration file"
-msgstr "Wijziging van configuratiebestand"
+#, fuzzy
+#~ msgid "Client:"
+#~ msgstr "Client"
 
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change your default configuration file"
-msgstr "Wijzig standaard configuratiebestand"
+#, fuzzy
+#~ msgid "Storage:"
+#~ msgstr "Opslag"
 
-#: src/wx-console/wxbmainframe.cpp:252
-msgid "Edit your configuration file"
-msgstr "Wijzigen configuratiebestand"
+#~ msgid "Restoring..."
+#~ msgstr "Terugzetten..."
 
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr "&Verlaat\tAlt-X"
+#~ msgid "Please correct configuration file.\n"
+#~ msgstr "Corrigeer configuratie bestand aub.\n"
 
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr "Verlaat dit programma"
+#, fuzzy
+#~ msgid "Error : No configuration file loaded\n"
+#~ msgstr "Wijzigen configuratiebestand"
 
-#: src/wx-console/wxbmainframe.cpp:258
-msgid "&File"
-msgstr "&Bestand"
+#~ msgid "Connecting...\n"
+#~ msgstr "Verbinding maken ...\n"
 
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr "&Help"
+#~ msgid "Error : No director defined in config file.\n"
+#~ msgstr "Fout : Geen director gevonden in uw configuratie.\n"
 
-#: 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"
+#~ msgid "Multiple directors found in your config file.\n"
+#~ msgstr "Meerdere directors gevonden in uw configuratiebestand.\n"
 
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
+#~ msgid "Please choose a director (1-%d): "
+#~ msgstr "Kiest u een director (1-%d): "
 
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr "Versturen"
+#, fuzzy
+#~ msgid "Failed to connect to the director\n"
+#~ msgstr "Verbinding naar director opnieuw opzetten"
 
-#: 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"
+#~ msgid "Connected\n"
+#~ msgstr "Verbonden\n"
 
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr "Specificatie: bwx-console [-c configuratiebestand] [-w tmp]\n"
+#~ msgid "<< Unexpected signal received : "
+#~ msgstr "<< Onverwacht signaal ontvangen : "
 
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"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)"
+#~ msgid "Connection terminated\n"
+#~ msgstr "Verbinding verbroken\n"
 
-#: src/wx-console/wxbmainframe.cpp:419
-msgid "First run"
-msgstr "Eerste run"
+#~ msgid "Apply"
+#~ msgstr "Toepassen"
 
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"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)"
+#~ msgid "Type your command below:"
+#~ msgstr "Voer uw opdracht hieronder in:"
 
-#: src/wx-console/wxbmainframe.cpp:438
-msgid "Unable to read configuration file"
-msgstr "Kan configuratiebestand niet lezen"
+#~ msgid "Unknown command."
+#~ msgstr "Onbekende opdracht."
 
-#: src/wx-console/wxbmainframe.cpp:450
-msgid "Please choose a configuration file to use"
-msgstr "Kies een configuratiebestand om te gebruiken"
+#~ msgid "&About...\tF1"
+#~ msgstr "&Over...\tF1"
 
-#: src/wx-console/wxbmainframe.cpp:463
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr "Configuratiebestand met succes gelezen. Als standaard gebruiken?"
+#~ msgid "Show about dialog"
+#~ msgstr "Toon het Over scherm"
 
-#: src/wx-console/wxbmainframe.cpp:464
-msgid "Configuration file read successfully"
-msgstr "Configuratiebestand met succes gelezen"
+#~ msgid "Connect"
+#~ msgstr "Verbonden"
 
-#: src/wx-console/wxbmainframe.cpp:474
-#, c-format
-msgid "Using this configuration file: %s\n"
-msgstr "Dit configuratiebestand wordt gebruikt: %s\n"
+#~ msgid "Connect to the director"
+#~ msgstr "Verbinden met director"
 
-#: src/wx-console/wxbmainframe.cpp:479
-msgid "Connecting to the director..."
-msgstr "Verbinden met director ..."
+#~ msgid "Disconnect"
+#~ msgstr "Verbroken"
 
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr "Data parser kon niet geregistreerd worden!"
+#~ msgid "Disconnect of the director"
+#~ msgstr "Verbroken van de director"
 
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr "Bezig met afsluiten.\n"
+#~ msgid "Change of configuration file"
+#~ msgstr "Wijziging van configuratiebestand"
 
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"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"
+#~ msgid "Change your default configuration file"
+#~ msgstr "Wijzig standaard configuratiebestand"
 
-#: src/wx-console/wxbmainframe.cpp:521
-msgid "About Bacula bwx-console"
-msgstr "Over Bacula bwx-console"
+#~ msgid "Edit your configuration file"
+#~ msgstr "Wijzigen configuratiebestand"
 
-#: src/wx-console/wxbmainframe.cpp:527
-msgid "Please choose your default configuration file"
-msgstr "Kies aub uw standaard configuratiebestand"
+#~ msgid "E&xit\tAlt-X"
+#~ msgstr "&Verlaat\tAlt-X"
 
-#: src/wx-console/wxbmainframe.cpp:531
-msgid "Use this configuration file as default?"
-msgstr "Dit configuratiebestand als standaard gebruiken?"
+#~ msgid "Quit this program"
+#~ msgstr "Verlaat dit programma"
 
-#: src/wx-console/wxbmainframe.cpp:532
-msgid "Configuration file"
-msgstr "Configuratiebestand"
+#~ msgid "&File"
+#~ msgstr "&Bestand"
 
-#: src/wx-console/wxbmainframe.cpp:603
-msgid "Console thread terminated."
-msgstr "Console taak beeindigd."
+#~ msgid "&Help"
+#~ msgstr "&Help"
 
-#: src/wx-console/wxbmainframe.cpp:611
-msgid "Connection to the director lost. Quit program?"
-msgstr "Verbinding met de director verbroken. Programma stoppen?"
+#~ msgid "Send"
+#~ msgstr "Versturen"
 
-#: src/wx-console/wxbmainframe.cpp:612
-msgid "Connection lost"
-msgstr "Verbinding verloren"
+#~ 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:628
-msgid "Connected to the director."
-msgstr "Verbonden met de director."
+#~ msgid "First run"
+#~ msgstr "Eerste run"
 
-#: src/wx-console/wxbmainframe.cpp:651
-msgid "Reconnect"
-msgstr "Opnieuw verbinden"
+#~ msgid ""
+#~ "Unable to read %s\n"
+#~ "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:652
-msgid "Reconnect to the director"
-msgstr "Verbinding naar director opnieuw opzetten"
+#~ msgid "Unable to read configuration file"
+#~ msgstr "Kan configuratiebestand niet lezen"
 
-#: src/wx-console/wxbmainframe.cpp:666
-msgid "Disconnected of the director."
-msgstr "Verbinding verbroken met director"
+#~ msgid "Please choose a configuration file to use"
+#~ msgstr "Kies een configuratiebestand om te gebruiken"
 
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr "bwx-console: onverwachte director's opdracht"
+#~ msgid ""
+#~ "This configuration file has been successfully read, use it as default?"
+#~ msgstr "Configuratiebestand met succes gelezen. Als standaard gebruiken?"
 
-#: src/qt-console/tray-monitor/tray-monitor.cpp:67
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            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"
+#~ msgid "Configuration file read successfully"
+#~ msgstr "Configuratiebestand met succes gelezen"
 
-#: src/qt-console/bcomm/dircomm.cpp:92
-#, c-format
-msgid "Already connected\"%s\".\n"
-msgstr "Al verbonden\"%s\".\n"
+#~ msgid "Using this configuration file: %s\n"
+#~ msgstr "Dit configuratiebestand wordt gebruikt: %s\n"
 
-#: 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"
+#~ msgid "Connecting to the director..."
+#~ msgstr "Verbinden met director ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:208
-msgid "Initializing ..."
-msgstr "Initialiseren ..."
+#~ msgid "Failed to unregister a data parser !"
+#~ msgstr "Data parser kon niet geregistreerd worden!"
 
-#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
-msgid "Connected"
-msgstr "Verbonden"
+#~ msgid "Quitting.\n"
+#~ msgstr "Bezig met afsluiten.\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:348
-msgid "Command completed ..."
-msgstr "Opdracht gereed ..."
+#~ msgid "Please choose your default configuration file"
+#~ msgstr "Kies aub uw standaard configuratiebestand"
 
-#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
-msgid "Processing command ..."
-msgstr "Opdracht aan het uitvoeren ..."
+#~ msgid "Use this configuration file as default?"
+#~ msgstr "Dit configuratiebestand als standaard gebruiken?"
 
-#: src/qt-console/bcomm/dircomm.cpp:362
-msgid "At main prompt waiting for input ..."
-msgstr "Wacht op invoer op opdrachtregel in hoofdscherm ..."
+#~ msgid "Configuration file"
+#~ msgstr "Configuratiebestand"
 
-#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
-msgid "At prompt waiting for input ..."
-msgstr "Wacht op invoer op opdrachtregel ..."
+#~ msgid "Console thread terminated."
+#~ msgstr "Console taak beeindigd."
 
-#: src/qt-console/bcomm/dircomm.cpp:390
-msgid "Command failed."
-msgstr "Opdracht mislukt."
+#~ msgid "Connection to the director lost. Quit program?"
+#~ msgstr "Verbinding met de director verbroken. Programma stoppen?"
 
-#: src/qt-console/bcomm/dircomm.cpp:463
-msgid "Director disconnected."
-msgstr "Director niet verbonden."
+#~ msgid "Connection lost"
+#~ msgstr "Verbinding verloren"
 
-#: src/qt-console/bat_conf.cpp:154
-#, c-format
-msgid "Console: name=%s\n"
-msgstr "Console: naam=%s\n"
+#~ msgid "Connected to the director."
+#~ msgstr "Verbonden met de director."
 
-#: src/qt-console/main.cpp:191
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: 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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          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"
+#~ msgid "Reconnect"
+#~ msgstr "Opnieuw verbinden"
 
-#, fuzzy
-#~ msgid "Restart a job"
-#~ msgstr "Uitvoeren herstel opdracht"
+#~ msgid "Reconnect to the director"
+#~ msgstr "Verbinding naar director opnieuw opzetten"
 
-#, fuzzy
-#~ msgid "Failed to set bandwidth limit to Client.\n"
-#~ msgstr "Kan de geselecteerde client niet vinden."
+#~ msgid "Disconnected of the director."
+#~ msgstr "Verbinding verbroken met director"
 
 #, fuzzy
 #~ msgid "Unable to create component file %s. ERR=%s\n"
@@ -18137,15 +1486,3 @@ msgstr ""
 #, 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/pl.po b/po/pl.po
index 0e30878..9031b7e 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -15,7 +15,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/wx-console/authenticate.c:127 src/dird/authenticate.c:127
+#: src/dird/authenticate.c:127
 #: src/console/authenticate.c:125
 msgid ""
 "Authorization problem: Remote server did not advertise required TLS "
@@ -24,27 +24,22 @@ msgstr ""
 "Problem autoryzacji: Zdalny serwer nie zadeklarował wymaganego wsparcia dla "
 "TLS.\n"
 
-#: src/wx-console/authenticate.c:133 src/filed/authenticate.c:159
+#: src/filed/authenticate.c:159
 #: src/filed/authenticate.c:278 src/dird/authenticate.c:134
 #: src/console/authenticate.c:132 src/stored/authenticate.c:147
 #: src/stored/authenticate.c:258
 msgid "Authorization problem: Remote server requires TLS.\n"
 msgstr "Problem autoryzacji: Zdalny serwer wymaga TLS.\n"
 
-#: src/wx-console/authenticate.c:142 src/console/authenticate.c:141
+#: src/console/authenticate.c:141
 msgid "TLS negotiation failed\n"
 msgstr "Negocjacja TLS nie powiodła się\n"
 
-#: src/wx-console/authenticate.c:150
-msgid "Bad response to Hello command: ERR="
-msgstr "Zła odpowiedź na komend Hello: ERR="
-
-#: src/wx-console/authenticate.c:157 src/tray-monitor/authenticate.c:104
 #: src/console/authenticate.c:162
 msgid "Director rejected Hello command\n"
 msgstr "Director odrzucił komendę Hello\n"
 
-#: src/wx-console/authenticate.c:167 src/console/authenticate.c:172
+#: src/console/authenticate.c:172
 msgid ""
 "Director authorization problem.\n"
 "Most likely the passwords do not agree.\n"
@@ -60,25 +55,23 @@ msgstr ""
 "Zobacz http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
 "html#SECTION003760000000000000000 w celu uzyskania pomocy.\n"
 
-#: src/wx-console/console_conf.c:147 src/console/console_conf.c:140
+#: src/console/console_conf.c:140
 #: src/qt-console/bat_conf.cpp:141
 #, c-format
 msgid "No record for %d %s\n"
 msgstr "Brak rekordu dla %d %s\n"
 
-#: src/wx-console/console_conf.c:156 src/console/console_conf.c:149
+#: src/console/console_conf.c:149
 #, c-format
 msgid "Console: name=%s rcfile=%s histfile=%s\n"
 msgstr "Konsola: nazwa=%s plikrc=%s plikhist=%s\n"
 
-#: src/wx-console/console_conf.c:160 src/console/console_conf.c:153
+#: src/console/console_conf.c:153
 #: src/qt-console/bat_conf.cpp:150
 #, c-format
 msgid "Director: name=%s address=%s DIRport=%d\n"
 msgstr "Director: nazwa=%s adres=%s DIRport=%d\n"
 
-#: src/wx-console/console_conf.c:164 src/wx-console/console_conf.c:239
-#: src/wx-console/console_conf.c:284 src/wx-console/console_conf.c:311
 #: src/filed/filed_conf.c:333 src/filed/filed_conf.c:398
 #: src/filed/filed_conf.c:428 src/console/console_conf.c:157
 #: src/console/console_conf.c:233 src/console/console_conf.c:278
@@ -90,16 +83,16 @@ msgstr "Director: nazwa=%s adres=%s DIRport=%d\n"
 msgid "Unknown resource type %d\n"
 msgstr "Nieznany rodzaj zasobu %d\n"
 
-#: src/wx-console/console_conf.c:265 src/filed/filed_conf.c:361
-#: src/tray-monitor/tray_conf.c:288 src/dird/dird_conf.c:1371
+#: src/filed/filed_conf.c:361
+#: src/dird/dird_conf.c:1371
 #: src/dird/dird_conf.c:1386 src/console/console_conf.c:259
 #: src/qt-console/bat_conf.cpp:265
 #, c-format
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr "Element %s jest wymagany w zasobie %s, lecz nie został znaleziony.\n"
 
-#: src/wx-console/console_conf.c:328 src/filed/filed_conf.c:446
-#: src/tray-monitor/tray_conf.c:372 src/dird/dird_conf.c:1609
+#: src/filed/filed_conf.c:446
+#: src/dird/dird_conf.c:1609
 #: src/console/console_conf.c:322 src/qt-console/bat_conf.cpp:334
 #, c-format
 msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
@@ -1084,7 +1077,7 @@ msgstr "Za komenda session: %s"
 msgid "Bad storage command: %s"
 msgstr "Za komenda storage: %s"
 
-#: src/filed/job.c:1479 src/tray-monitor/tray-monitor.c:952
+#: src/filed/job.c:1479
 #: src/dird/msgchan.c:106
 msgid "Storage daemon"
 msgstr "Demon Skadowania"
@@ -1370,13 +1363,12 @@ msgid "Diffs"
 msgstr "Rnice"
 
 #: src/filed/status.c:296 src/dird/ua_status.c:868 src/dird/ua_restore.c:430
-#: src/stored/status.c:547 src/wx-console/wxbconfigpanel.cpp:220
+#: src/stored/status.c:547
 msgid "Cancel"
 msgstr "Anulowane"
 
 #: src/filed/status.c:299 src/lib/util.c:189 src/lib/util.c:321
 #: src/dird/ua_status.c:871 src/stored/btape.c:1514 src/stored/status.c:550
-#: src/wx-console/wxbconfigpanel.cpp:209
 msgid "OK"
 msgstr "OK"
 
@@ -1639,8 +1631,8 @@ msgstr "Brak definicji zasobu Messages w %s\n"
 #: src/filed/filed.c:355 src/filed/filed.c:514 src/dird/dird.c:625
 #: src/dird/dird.c:831 src/dird/dird.c:886 src/dird/dird.c:1044
 #: src/console/console.c:1291 src/console/console.c:1321
-#: src/stored/stored.c:381 src/wx-console/console_thread.cpp:118
-#: src/wx-console/console_thread.cpp:144 src/qt-console/main.cpp:212
+#: src/stored/stored.c:381
+#: src/qt-console/main.cpp:212
 #: src/qt-console/main.cpp:242
 msgid "TLS required but not configured in Bacula.\n"
 msgstr "Wymagane TLS lecz nie zostao skonfigurowane w Baculi.\n"
@@ -1743,488 +1735,67 @@ msgstr ""
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr "Nieudana inicjalizacja kontekstu TLS dla Dyrektora \"%s\" w %s.\n"
 
-#: src/tray-monitor/tray_conf.c:168 src/dird/dird_conf.c:558
+#: src/dird/dird_conf.c:558
 #, c-format
 msgid "No %s resource defined\n"
 msgstr "Nie zdefiniowano zasobu %s\n"
 
-#: src/tray-monitor/tray_conf.c:177
-#, c-format
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr "Monitor: nazwa=%s FDtimeout=%s SDtimeout=%s\n"
-
-#: src/tray-monitor/tray_conf.c:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr "Dyrektor: nazwa=%s adres=%s FDport=%d\n"
-
-#: src/tray-monitor/tray_conf.c:187
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr "Klient: nazwa=%s adres=%s FDport=%d\n"
-
-#: src/tray-monitor/tray_conf.c:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr "Storage: nazwa=%s adres=%s SDport=%d\n"
-
-#: src/tray-monitor/tray_conf.c:195 src/qt-console/bat_conf.cpp:157
+#: src/qt-console/bat_conf.cpp:157
 #, c-format
 msgid "ConsoleFont: name=%s font face=%s\n"
 msgstr "ConsoleFont: nazwa=%s krj czcionki=%s\n"
 
-#: src/tray-monitor/tray_conf.c:199 src/dird/dird_conf.c:1008
+#: src/dird/dird_conf.c:1008
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr "Nieznany typ zasobu %d w dump_resource.\n"
 
-#: src/tray-monitor/tray_conf.c:257 src/dird/dird_conf.c:1339
+#: src/dird/dird_conf.c:1339
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr "Nieznany typ zasobu %d w free_resource.\n"
 
-#: src/tray-monitor/tray_conf.c:294 src/lib/parse_conf.c:224
+#: src/lib/parse_conf.c:224
 #: src/dird/dird_conf.c:1377
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr "Zbyt duo elementw w zasobie %s\n"
 
-#: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #: src/dird/dird_conf.c:1526 src/dird/dird_conf.c:1586
 #, c-format
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr "Nieznany typ zasobu %d w save_resource.\n"
 
-#: src/tray-monitor/authenticate.c:88
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
-"html#SECTION003760000000000000000 for help.\n"
-msgstr ""
-"Problem autoryzacji Dyrektora.\n"
-"Najprawdopodobniej nie zgadzaj się hasa.\n"
-"Proszę zobacz http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
-"html#SECTION003760000000000000000 dla uzyskania pomocy.\n"
-
-#: src/tray-monitor/authenticate.c:97 src/console/authenticate.c:155
+#: src/console/authenticate.c:155
 #, c-format
 msgid "Bad response to Hello command: ERR=%s\n"
 msgstr "Za odpowiedź na komend Hello: ERR=%s\n"
 
-#: src/tray-monitor/authenticate.c:132 src/dird/authenticate.c:83
+#: src/dird/authenticate.c:83
 #: src/dird/authenticate.c:84
 #, c-format
 msgid "Error sending Hello to Storage daemon. ERR=%s\n"
 msgstr "Błąd w wysyaniu Hello do demona Przechowywania. ERR=%s\n"
 
-#: src/tray-monitor/authenticate.c:138
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
-"html#SECTION003760000000000000000 for help.\n"
-msgstr ""
-"Hasła demonów Dyrektora i Przechowywania nie s takie same.\n"
-"Proszę zobacz http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
-"html#SECTION003760000000000000000 dla uzyskania pomocy.\n"
-
-#: src/tray-monitor/authenticate.c:145
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
-msgstr "bdird<stored: zła odpowiedź na komendę Hello: ERR=%s\n"
-
-#: src/tray-monitor/authenticate.c:152 src/dird/authenticate.c:162
-msgid "Storage daemon rejected Hello command\n"
-msgstr "Demon Przechowywania odrzuci komend Hello\n"
-
-#: src/tray-monitor/authenticate.c:178
-#, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
-msgstr "Błąd w wysyaniu Hello do demona Plików. ERR=%s\n"
-
-#: src/tray-monitor/authenticate.c:184
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
-"html#SECTION003760000000000000000 for help.\n"
-msgstr ""
-"Hasła demonów Dyrektora i Plików nie s takie same.\n"
-"Proszę zobacz http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
-"html#SECTION003760000000000000000 dla uzyskania pomocy.\n"
-
-#: src/tray-monitor/authenticate.c:191 src/dird/authenticate.c:266
+#: src/dird/authenticate.c:266
 #, c-format
 msgid "Bad response from File daemon to Hello command: ERR=%s\n"
 msgstr "Za odpowiedź z demona Plików na komend Hello: ERR=%s\n"
 
-#: src/tray-monitor/authenticate.c:198 src/dird/authenticate.c:277
+#: src/dird/authenticate.c:277
 msgid "File daemon rejected Hello command\n"
 msgstr "Demona Plików odrzuci komend Hello\n"
 
-#: src/tray-monitor/tray-monitor.c:114
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-"Napisany przez Nicolas Boichat (2004)\n"
-"\n"
-"Wersja: %s (%s) %s %s %s\n"
-"\n"
-"Użycie: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     ustaw plik konfiguracyjny na <file>\n"
-"       -d <nn>       ustaw poziom debugowania na <nn>\n"
-"       -dt           wyświetla znaczniki czasowe w debugingu\n"
-"       -t            test - odczytuje konfigurację i kończy działanie\n"
-"       -?            wyświetla ten komunikat.\n"
-"\n"
-
-#: src/tray-monitor/tray-monitor.c:270
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
-msgstr ""
-"Bd: zdefiniowano %d zasoby Monitor w %s. Musisz zdefiniowa wycznie jeden i "
-"tylko jeden zasób Monitora.\n"
-
-#: src/tray-monitor/tray-monitor.c:301
-#, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
-msgstr ""
-"Brak definicji zasobu Klienta, Przechowywania lub Dyrektora w %s\n"
-"Bez tego nie wiem jak mam otrzyma status z demonów Plików, Przechowywania i "
-"Dyrektora. :-(\n"
-
-#: src/tray-monitor/tray-monitor.c:323
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
-msgstr ""
-"Niepoprawny interwa czasu zdefiniowany w %s\n"
-"Warto ta musi by wiksza lub rwna 1 sekundzie i mniejsza lub rwna 10 minutom "
-"(odczytana warto: %d).\n"
-
-#: src/tray-monitor/tray-monitor.c:330
-msgid "Bacula daemon status monitor"
-msgstr "Monitor statusu demona Bacula"
-
-#: src/tray-monitor/tray-monitor.c:339
-msgid "Open status window..."
-msgstr "Otwrz okno statusu..."
-
-#: src/tray-monitor/tray-monitor.c:345
-msgid "Exit"
-msgstr "Wyjcie"
-
-# Tray to tacka - nie do końca mi to pasuje: "Tackowy Monitor Baculi"
-#: src/tray-monitor/tray-monitor.c:357
-msgid "Bacula tray monitor"
-msgstr "Tackowy monitor Baculi"
-
-#: src/tray-monitor/tray-monitor.c:382
-msgid " (DIR)"
-msgstr " (DIR)"
-
-#: src/tray-monitor/tray-monitor.c:386
-msgid " (FD)"
-msgstr " (FD)"
-
-#: src/tray-monitor/tray-monitor.c:390
-msgid " (SD)"
-msgstr " (SD)"
-
-#: src/tray-monitor/tray-monitor.c:403
-msgid "Unknown status."
-msgstr "Nieznany status."
-
-#: src/tray-monitor/tray-monitor.c:477
-msgid "Refresh interval in seconds: "
-msgstr "Interwa odwierzania w sekundach: "
-
-#: src/tray-monitor/tray-monitor.c:485
-msgid "Refresh now"
-msgstr "Odwierz teraz"
-
-#: src/tray-monitor/tray-monitor.c:489
-msgid "About"
-msgstr "O Programie"
-
-#: src/tray-monitor/tray-monitor.c:493
-msgid "Close"
-msgstr "Zamknij"
-
-#: src/tray-monitor/tray-monitor.c:513
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr "Rozłączanie od Dyrektora %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:516
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr "Rozłączanie od Klienta %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:519
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr "Rozłączanie od Storage %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:560 src/tray-monitor/tray-monitor.c:571
-msgid "Bacula Tray Monitor"
-msgstr "Monitor programu Bacula"
-
-#: src/tray-monitor/tray-monitor.c:562 src/tray-monitor/tray-monitor.c:573
-msgid "Written by Nicolas Boichat\n"
-msgstr "Napisany przez Nicolas Boichat\n"
-
-#: src/tray-monitor/tray-monitor.c:563 src/tray-monitor/tray-monitor.c:574
-msgid "Version"
-msgstr "Wersja"
-
-#: src/tray-monitor/tray-monitor.c:656
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr "Bd, currentitem nie jest ani Klientem ani Storage...\n"
-
-#: src/tray-monitor/tray-monitor.c:730
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-"Aktualne zadanie: %s\n"
-"Ostatnie zadanie: %s"
-
-#: src/tray-monitor/tray-monitor.c:742
-#, c-format
-msgid " (%d errors)"
-msgstr " (%d bdw)"
-
-#: src/tray-monitor/tray-monitor.c:745
-#, c-format
-msgid " (%d error)"
-msgstr " (%d bd)"
-
-#: src/tray-monitor/tray-monitor.c:783
-msgid "No current job."
-msgstr "Brak aktualnego zadania."
-
-#: src/tray-monitor/tray-monitor.c:786
-msgid "No last job."
-msgstr "Brak ostatniego zadania."
-
-#: src/tray-monitor/tray-monitor.c:794
-msgid "Job status: Created"
-msgstr "Status zadania: Stworzone"
-
-#: src/tray-monitor/tray-monitor.c:799
-msgid "Job status: Running"
-msgstr "Status zadania: Uruchomione"
-
-#: src/tray-monitor/tray-monitor.c:803
-msgid "Job status: Blocked"
-msgstr "Status zadania: Zablokowane"
-
-#: src/tray-monitor/tray-monitor.c:808
-msgid "Job status: Terminated"
-msgstr "Status zadania: Zakoczone"
-
-#: src/tray-monitor/tray-monitor.c:813
-msgid "Job status: Terminated in error"
-msgstr "Status zadania: Zakoczone przez bd"
-
-#: src/tray-monitor/tray-monitor.c:819
-msgid "Job status: Error"
-msgstr "Status zadania: Bd"
-
-#: src/tray-monitor/tray-monitor.c:823
-msgid "Job status: Fatal error"
-msgstr "Status zadania: Błąd krytyczny"
-
-#: src/tray-monitor/tray-monitor.c:828
-msgid "Job status: Verify differences"
-msgstr "Status zadania: Rnice przy weryfikacji"
-
-#: src/tray-monitor/tray-monitor.c:833
-msgid "Job status: Canceled"
-msgstr "Status zadania: Anulowane"
-
-#: src/tray-monitor/tray-monitor.c:838
-msgid "Job status: Waiting on File daemon"
-msgstr "Status zadania: Oczekiwanie na demon Plików"
-
-#: src/tray-monitor/tray-monitor.c:843
-msgid "Job status: Waiting on the Storage daemon"
-msgstr "Status zadania: Oczekiwanie na demon Przechowywania"
-
-#: src/tray-monitor/tray-monitor.c:848
-msgid "Job status: Waiting for new media"
-msgstr "Status zadania: Oczekiwanie na nowe media"
-
-#: src/tray-monitor/tray-monitor.c:853
-msgid "Job status: Waiting for Mount"
-msgstr "Status zadania: Oczekiwanie na Zamontowanie"
-
-#: src/tray-monitor/tray-monitor.c:858
-msgid "Job status: Waiting for storage resource"
-msgstr "Status zadania: Oczekiwanie na zasoby przechowywania"
-
-#: src/tray-monitor/tray-monitor.c:863
-msgid "Job status: Waiting for job resource"
-msgstr "Status zadania: Oczekiwanie na zasoby zadania"
-
-#: src/tray-monitor/tray-monitor.c:868
-msgid "Job status: Waiting for Client resource"
-msgstr "Status zadania: Oczekiwanie na zasoby Klienta"
-
-#: src/tray-monitor/tray-monitor.c:873
-msgid "Job status: Waiting for maximum jobs"
-msgstr "Status zadania: Oczekiwanie ze wzgldu na maksymaln ilo zada"
-
-#: src/tray-monitor/tray-monitor.c:878
-msgid "Job status: Waiting for start time"
-msgstr "Status zadania: Oczekiwanie na czas uruchomienia"
-
-#: src/tray-monitor/tray-monitor.c:883
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr "Status zadania: Oczekiwanie na zakoczenie zadań o wyszym priorytecie"
-
-#: src/tray-monitor/tray-monitor.c:888
-#, c-format
-msgid "Unknown job status %c."
-msgstr "Nieznany status zadania %c."
-
-#: src/tray-monitor/tray-monitor.c:889
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr "Status zadania: Nieznany(%c)"
-
-#: src/tray-monitor/tray-monitor.c:896
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr "Ze skanowanie : '%s' %d\n"
-
-#: src/tray-monitor/tray-monitor.c:936 src/console/console.c:1138
+#: src/console/console.c:1138
 #, c-format
 msgid "Connecting to Director %s:%d\n"
 msgstr "Podłączenie do Dyrektora %s:%d\n"
 
-#: src/tray-monitor/tray-monitor.c:937 src/qt-console/bcomm/dircomm.cpp:102
+#: src/qt-console/bcomm/dircomm.cpp:102
 #, c-format
 msgid "Connecting to Director %s:%d"
 msgstr "Podłączenie do Dyrektora %s:%d"
 
-#: src/tray-monitor/tray-monitor.c:938 src/wx-console/console_thread.cpp:428
-#: src/qt-console/bcomm/dircomm.cpp:170
-msgid "Director daemon"
-msgstr "Demon Dyrektora"
-
-#: src/tray-monitor/tray-monitor.c:943
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr "Podłączenie do Klienta %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:944
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr "Podłączenie do Klienta %s:%d"
-
-#: src/tray-monitor/tray-monitor.c:945
-msgid "File daemon"
-msgstr "Demon Plików"
-
-#: src/tray-monitor/tray-monitor.c:950
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr "Podłączenie do Storage %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:951
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr "Podłączenie do Storage %s:%d"
-
-#: src/tray-monitor/tray-monitor.c:956 src/tray-monitor/tray-monitor.c:994
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr "Błąd currentitem nie jest Klientem, Storage ani Dyrektorem..\n"
-
-#: src/tray-monitor/tray-monitor.c:962
-msgid "Cannot connect to daemon.\n"
-msgstr "Nie można połączyć się do demona.\n"
-
-#: src/tray-monitor/tray-monitor.c:963
-msgid "Cannot connect to daemon."
-msgstr "Nie można połączyć się do demona."
-
-#: src/tray-monitor/tray-monitor.c:975
-#, c-format
-msgid "Authentication error : %s"
-msgstr "Bad autentykacji : %s"
-
-#: src/tray-monitor/tray-monitor.c:982
-msgid "Opened connection with Director daemon.\n"
-msgstr "Otwarte poczenie z demonem Dyrektora.\n"
-
-#: src/tray-monitor/tray-monitor.c:983
-msgid "Opened connection with Director daemon."
-msgstr "Otwarte poczenie z demonem Dyrektora."
-
-#: src/tray-monitor/tray-monitor.c:986
-msgid "Opened connection with File daemon.\n"
-msgstr "Otwarte poczenie z demonem plikw.\n"
-
-#: src/tray-monitor/tray-monitor.c:987
-msgid "Opened connection with File daemon."
-msgstr "Otwarte poczenie z demonem plikw."
-
-#: src/tray-monitor/tray-monitor.c:990
-msgid "Opened connection with Storage daemon.\n"
-msgstr "Otwarte poczenie z demonem Przechowywania.\n"
-
-#: src/tray-monitor/tray-monitor.c:991
-msgid "Opened connection with Storage daemon."
-msgstr "Otwarte poczenie z demonem Przechowywania."
-
-#: src/tray-monitor/tray-monitor.c:1028
-msgid "<< Error: BNET_PROMPT signal received. >>\n"
-msgstr "<< Błąd: otrzymano sygnał BNET_PROMPT. >>\n"
-
-#: src/tray-monitor/tray-monitor.c:1033 src/wx-console/console_thread.cpp:494
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr "<< Otrzymano sygnał Heartbeat, odpowiedziano. >>\n"
-
-#: src/tray-monitor/tray-monitor.c:1037
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr "<< Otrzymano nieoczekiwany sygnał : %s >>\n"
-
-#: src/tray-monitor/tray-monitor.c:1042
-msgid "<ERROR>\n"
-msgstr "<BŁĄD>\n"
-
-#: src/tray-monitor/tray-monitor.c:1046
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr "Błąd : BNET_HARDEOF lub BNET_ERROR"
-
-#: src/tray-monitor/tray-monitor.c:1052
-msgid "<STOP>\n"
-msgstr "<STOP>\n"
-
-#: src/tray-monitor/tray-monitor.c:1056
-msgid "Error : Connection closed."
-msgstr "Błąd : Połączenie zamknięte."
-
 #: src/cats/mysql.c:81
 msgid "A user name for MySQL must be supplied.\n"
 msgstr "Nazwa użytkownika dla MySQL powinna by dostarczona.\n"
@@ -3801,12 +3372,12 @@ msgstr "Nie można stworzyć pliku stanu. %s ERR=%s\n"
 msgid "Write final hdr error: ERR=%s\n"
 msgstr "Błąd zapisu . ERR=%s\n"
 
-#: src/lib/lex.c:93 src/wx-console/console_thread.cpp:212
+#: src/lib/lex.c:93
 #, c-format
 msgid "Problem probably begins at line %d.\n"
 msgstr "Problem najprawdopodobniej zaczyna się od linii %d.\n"
 
-#: src/lib/lex.c:98 src/wx-console/console_thread.cpp:217
+#: src/lib/lex.c:98
 msgid ""
 "Config error: %s\n"
 "            : line %d, col %d of file %s\n"
@@ -5006,13 +4577,12 @@ msgstr ""
 msgid "Verify"
 msgstr "Weryfikacja OK"
 
-#: src/lib/util.c:365 src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:2000
+#: src/lib/util.c:365
 #, fuzzy
 msgid "Restore"
 msgstr "Odtwarzanie Anulowane"
 
-#: src/lib/util.c:368 src/wx-console/wxbmainframe.cpp:276
+#: src/lib/util.c:368
 #, fuzzy
 msgid "Console"
 msgstr "Zamknij"
@@ -5620,16 +5190,7 @@ msgid "Level"
 msgstr "nigdy"
 
 #: src/dird/ua_run.c:210 src/dird/ua_select.c:167 src/dird/ua_cmds.c:1095
-#: src/dird/ua_dotcmds.c:478 src/wx-console/wxbrestorepanel.cpp:339
-#: src/wx-console/wxbrestorepanel.cpp:355
-#: src/wx-console/wxbrestorepanel.cpp:479
-#: src/wx-console/wxbrestorepanel.cpp:480
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1176
-#: src/wx-console/wxbrestorepanel.cpp:1845
-#: src/wx-console/wxbrestorepanel.cpp:1916
+#: src/dird/ua_dotcmds.c:478
 #, fuzzy
 msgid "Storage"
 msgstr "Demon Skadowania"
@@ -5652,43 +5213,22 @@ msgstr "Odtwarzanie Anulowane"
 
 #: src/dird/ua_run.c:216 src/dird/ua_select.c:337 src/dird/ua_select.c:446
 #: src/dird/ua_cmds.c:1096 src/dird/ua_dotcmds.c:479
-#: src/wx-console/wxbrestorepanel.cpp:336
-#: src/wx-console/wxbrestorepanel.cpp:354
-#: src/wx-console/wxbrestorepanel.cpp:431
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:700
-#: src/wx-console/wxbrestorepanel.cpp:1133
-#: src/wx-console/wxbrestorepanel.cpp:1136
-#: src/wx-console/wxbrestorepanel.cpp:1238
-#: src/wx-console/wxbrestorepanel.cpp:1838
-#: src/wx-console/wxbrestorepanel.cpp:1840
-#: src/wx-console/wxbrestorepanel.cpp:1914
-#: src/wx-console/wxbrestorepanel.cpp:1970
 #, fuzzy
 msgid "Client"
 msgstr "Klient:"
 
-#: src/dird/ua_run.c:218 src/wx-console/wxbrestorepanel.cpp:356
-#: src/wx-console/wxbrestorepanel.cpp:854
-#: src/wx-console/wxbrestorepanel.cpp:1918
+#: src/dird/ua_run.c:218
 #, fuzzy
 msgid "When"
 msgstr "Kiedy:"
 
-#: src/dird/ua_run.c:219 src/wx-console/wxbrestorepanel.cpp:357
-#: src/wx-console/wxbrestorepanel.cpp:1128
-#: src/wx-console/wxbrestorepanel.cpp:1921
+#: src/dird/ua_run.c:219
 #, fuzzy
 msgid "Priority"
 msgstr "Priorytet:"
 
 #: src/dird/ua_run.c:224 src/dird/ua_update.c:616 src/dird/ua_select.c:535
-#: src/dird/ua_select.c:633 src/wx-console/wxbrestorepanel.cpp:338
-#: src/wx-console/wxbrestorepanel.cpp:527
-#: src/wx-console/wxbrestorepanel.cpp:537
-#: src/wx-console/wxbrestorepanel.cpp:1834
+#: src/dird/ua_select.c:633
 msgid "Pool"
 msgstr ""
 
@@ -5697,15 +5237,12 @@ msgstr ""
 msgid "Verify Job"
 msgstr "Weryfikacja OK"
 
-#: src/dird/ua_run.c:229 src/wx-console/wxbrestorepanel.cpp:349
-#: src/wx-console/wxbrestorepanel.cpp:1899
+#: src/dird/ua_run.c:229
 #, fuzzy
 msgid "Bootstrap"
 msgstr "Bootstrap:"
 
-#: src/dird/ua_run.c:230 src/wx-console/wxbrestorepanel.cpp:350
-#: src/wx-console/wxbrestorepanel.cpp:1104
-#: src/wx-console/wxbrestorepanel.cpp:1901
+#: src/dird/ua_run.c:230
 #, fuzzy
 msgid "Where"
 msgstr "Gdzie:"
@@ -5715,13 +5252,7 @@ msgstr "Gdzie:"
 msgid "File Relocation"
 msgstr "Demon Plików"
 
-#: src/dird/ua_run.c:232 src/wx-console/wxbrestorepanel.cpp:352
-#: src/wx-console/wxbrestorepanel.cpp:1112
-#: src/wx-console/wxbrestorepanel.cpp:1905
-#: src/wx-console/wxbrestorepanel.cpp:1906
-#: src/wx-console/wxbrestorepanel.cpp:1907
-#: src/wx-console/wxbrestorepanel.cpp:1908
-#: src/wx-console/wxbrestorepanel.cpp:1909
+#: src/dird/ua_run.c:232
 #, fuzzy
 msgid "Replace"
 msgstr "Zamiana:"
@@ -11462,13 +10993,13 @@ msgstr "%s nie jest liczbą. Musisz wybrać liczbę między 1 a %d\n"
 msgid "You must enter a number between 1 and %d\n"
 msgstr "Musisz wybrać liczbę między 1 a %d\n"
 
-#: src/console/console.c:1155 src/wx-console/console_thread.cpp:399
+#: src/console/console.c:1155
 #: src/qt-console/bcomm/dircomm.cpp:130
 #, fuzzy, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr "Nieudana inicjalizacja kontekstu TLS dla Dyrektora \"%s\" w %s.\n"
 
-#: src/console/console.c:1175 src/wx-console/console_thread.cpp:420
+#: src/console/console.c:1175
 #: src/qt-console/bcomm/dircomm.cpp:152
 #, fuzzy, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
@@ -17516,797 +17047,6 @@ msgstr ""
 "\n"
 "BŁĄD Bacula: "
 
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr "&About...\tF1"
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr "Pokaż dialog o"
-
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
-msgid "Connect"
-msgstr "Połącz"
-
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
-msgid "Connect to the director"
-msgstr "Połącz do Dyrektora"
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect"
-msgstr "Rozłącz"
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect of the director"
-msgstr "Rozłączanie dyrektora"
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change of configuration file"
-msgstr "Zmiana pliku konfiguracyjnego"
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change your default configuration file"
-msgstr "Zmień swój domyślny plik konfiguracyjny"
-
-#: src/wx-console/wxbmainframe.cpp:252
-msgid "Edit your configuration file"
-msgstr "Wyedytuj swój plik konfiguracyjny"
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr "&Wyjście\tAlt-X"
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr "Zamknij ten program"
-
-#: src/wx-console/wxbmainframe.cpp:258
-msgid "&File"
-msgstr "&Pliki"
-
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr "&Pomoc"
-
-#: src/wx-console/wxbmainframe.cpp:267 src/wx-console/main.cpp:124
-#, c-format
-msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr "Witamy w konsoli baculi bwx-console %s (%s)!\n"
-
-#: src/wx-console/wxbmainframe.cpp:283
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
-"Ostrzeżenie : Unicode jest wyłączony ponieważ używane jest wxWidgets dla GTK+ 1.2.\n"
-
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:291
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-msgid "Type your command below:"
-msgstr "Napisz swoje polecenie poniżej:"
-
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr "Wysłano"
-
-#: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr "Błąd podczas parsowania argumentów lini komend, używam domyślnych.\n"
-
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr "Użycie: bwx-console [-c configfile] [-w tmp]\n"
-
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
-"wydaje się że to twoje pierwsze uruchomienie konsoli bwx.\n"
-"Ten plik (%s) został wybrany jako domyślny plik konfiguracyjny.\n"
-"Czy chcesz go edytować? (jeśli wybierzesz 'No' będziesz musiał wybrać inny "
-"plik)"
-
-#: src/wx-console/wxbmainframe.cpp:419
-msgid "First run"
-msgstr "Pierwsze uruchomienie"
-
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
-"Nie można odczytać %s\n"
-"Błąd: %s\n"
-"Czy chcesz wybrać inny? (Wybierz 'no' by edytowac ten plik)"
-
-#: src/wx-console/wxbmainframe.cpp:438
-msgid "Unable to read configuration file"
-msgstr "Nie można odczytać pliku konfiguracyjnego"
-
-#: src/wx-console/wxbmainframe.cpp:450
-msgid "Please choose a configuration file to use"
-msgstr "Proszę wybierz używany plik konfiguracyjny"
-
-#: src/wx-console/wxbmainframe.cpp:463
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr "Ten plik konfiguracyjny został z powodzeniem odczytany, czy użyć go jako domyślny?"
-
-#: src/wx-console/wxbmainframe.cpp:464
-msgid "Configuration file read successfully"
-msgstr "Plik konfiguracyjny odczytany z powodzeniem"
-
-#: src/wx-console/wxbmainframe.cpp:474
-msgid "Using this configuration file: %s\n"
-msgstr "Użyj tego pliku konfiguracyjnego: %s\n"
-
-#: src/wx-console/wxbmainframe.cpp:479
-msgid "Connecting to the director..."
-msgstr "Podłączenie do dyrektora..."
-
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr "Niepowodzenie przy wyrejestrowaniu parsera danych!"
-
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr "Wychodzenie.\n"
-
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
-msgstr ""
-"Witamy w Bacula bwx-console.\n"
-"Napisane przez 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 "O Bacula bwx-console"
-
-#: src/wx-console/wxbmainframe.cpp:527
-msgid "Please choose your default configuration file"
-msgstr "Proszę wybierz swój plik konfiguracyjny"
-
-#: src/wx-console/wxbmainframe.cpp:531
-msgid "Use this configuration file as default?"
-msgstr "Użyć tego pliku konfiguracyjnego jako domyślnego?"
-
-#: src/wx-console/wxbmainframe.cpp:532
-msgid "Configuration file"
-msgstr "Plik konfiguracyjny"
-
-#: src/wx-console/wxbmainframe.cpp:603
-msgid "Console thread terminated."
-msgstr "Zakończono wątek konsoli."
-
-#: src/wx-console/wxbmainframe.cpp:611
-msgid "Connection to the director lost. Quit program?"
-msgstr "Podłączenie do dyrektora utracone. Zkończyć program?"
-
-#: src/wx-console/wxbmainframe.cpp:612
-msgid "Connection lost"
-msgstr "Połączenie utracone."
-
-#: src/wx-console/wxbmainframe.cpp:628
-msgid "Connected to the director."
-msgstr "Podłączony do dyrektora."
-
-#: src/wx-console/wxbmainframe.cpp:651
-#, fuzzy
-msgid "Reconnect"
-msgstr "Utworzone"
-
-#: src/wx-console/wxbmainframe.cpp:652
-#, fuzzy
-msgid "Reconnect to the director"
-msgstr "Podłączenie do Dyrektora %s:%d"
-
-#: src/wx-console/wxbmainframe.cpp:666
-msgid "Disconnected of the director."
-msgstr "Rozłączanie dyrektora."
-
-#: src/wx-console/wxbmainframe.cpp:685 src/wx-console/wxbrestorepanel.cpp:720
-msgid "Unexpected question has been received.\n"
-msgstr "Otrzymano nieoczekiwane pytanie.\n"
-
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr "bwx-console: nieoczekiwane zapytanie Dyrektora."
-
-#: src/wx-console/wxbconfigpanel.cpp:213
-msgid "Apply"
-msgstr "Zastosuj"
-
-#: src/wx-console/console_thread.cpp:125
-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 ""
-"Ani \"TLS CA Certificate\", ani \"TLS CA Certificate Dir\" nie są "
-"zdefiniowane dla Dyrektora \"%s\" w pliku konfiguracyjnym.\n"
-" Co najmniej jedno skadowanie certyfikatu CA jest wymagane.\n"
-
-#: src/wx-console/console_thread.cpp:132
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-"Brak definicji zasobu Dyrektora w pliku konfiguracyjnym\n"
-"Bez tego nie wiem jak rozmawiać z Dyrektorem :-(\n"
-
-#: src/wx-console/console_thread.cpp:151
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
-msgstr ""
-"Ani \"TLS CA Certificate\", ani \"TLS CA Certificate Dir\" nie zostały "
-"zdefiniowane dla Konsoli \"%s\" w pliku konfiguracyjnym.\n"
-
-#: src/wx-console/console_thread.cpp:173
-msgid "Error while initializing windows sockets...\n"
-msgstr "Błąd w trakcie inicjalizacji gniazd windows...\n"
-
-#: src/wx-console/console_thread.cpp:189
-msgid "Error while cleaning up windows sockets...\n"
-msgstr "Błąd w trakcie czyszczenia gniazd windows...\n"
-
-#: src/wx-console/console_thread.cpp:228
-msgid "Error while initializing library."
-msgstr "Błąd w trakcie inicjalizacji biblioteki."
-
-#: src/wx-console/console_thread.cpp:256
-msgid "Cryptographic library initialization failed.\n"
-msgstr "Nieudana inicjalizacja biblioteki kryptograficznej.\n"
-
-#: src/wx-console/console_thread.cpp:260
-msgid "Please correct configuration file.\n"
-msgstr "Proszę popraw plik konfiguracyjny.\n"
-
-#: src/wx-console/console_thread.cpp:302
-msgid "Error : Library not initialized\n"
-msgstr "Błąd : Nie zainicjalizowana biblioteka\n"
-
-#: src/wx-console/console_thread.cpp:313
-msgid "Error : No configuration file loaded\n"
-msgstr "Błąd : Nie załadowano pliku konfiguracyjnego\n"
-
-#: src/wx-console/console_thread.cpp:323
-msgid "Connecting...\n"
-msgstr "Łączenie...\n"
-
-#: src/wx-console/console_thread.cpp:339
-msgid "Error : No director defined in config file.\n"
-msgstr "Błąd : Brak definicji dyrektora w pliku konfiguracyjnym.\n"
-
-#: src/wx-console/console_thread.cpp:351
-msgid "Multiple directors found in your config file.\n"
-msgstr "Znaleziono wielu dyrektorów w twoim pliku konfiguracyjnym.\n"
-
-#: src/wx-console/console_thread.cpp:360
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr "Proszę wybierz dyrektora (1-%d): "
-
-#: src/wx-console/console_thread.cpp:389
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr "Hasło dla klucza prywatnego TLS Konsoli \"%s\": "
-
-#: src/wx-console/console_thread.cpp:410
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr "Hasło dla klucza prywatnego TLS Dyrektora \"%s\": "
-
-#: src/wx-console/console_thread.cpp:432
-msgid "Failed to connect to the director\n"
-msgstr "Nieudane podłączenie do dyrektora\n"
-
-#: src/wx-console/console_thread.cpp:442
-msgid "Connected\n"
-msgstr "Podłączony\n"
-
-#: src/wx-console/console_thread.cpp:499
-msgid "<< Unexpected signal received : "
-msgstr "<< Otrzymano nieoczekiwany sygnał : "
-
-#: src/wx-console/console_thread.cpp:519
-msgid "Connection terminated\n"
-msgstr "Podłączenie zakończone\n"
-
-#: src/wx-console/wxbconfigfileeditor.cpp:65
-msgid "Config file editor"
-msgstr "Edytor pliku konfiguracyjnego"
-
-#: src/wx-console/wxbconfigfileeditor.cpp:75
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr "# Plik Konfiguracyjny Bacula bwx-console\n"
-
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr "Zapisz i zamknij"
-
-#: src/wx-console/wxbconfigfileeditor.cpp:112
-msgid "Close without saving"
-msgstr "Zamknij bez zapisywania"
-
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-msgid "Unable to write to %s\n"
-msgstr "Nie mogę pisać do %s\n"
-
-#: src/wx-console/wxbconfigfileeditor.cpp:140
-msgid "Error while saving"
-msgstr "Błąd w trakcie zapisywania"
-
-#: src/wx-console/main.cpp:119
-msgid "Bacula bwx-console"
-msgstr "Bacula bwx-console"
-
-#: src/wx-console/wxbrestorepanel.cpp:234
-#: src/wx-console/wxbrestorepanel.cpp:1947
-#: src/wx-console/wxbrestorepanel.cpp:1976
-msgid "Enter restore mode"
-msgstr "Wprowadź tryb odtwarzania"
-
-#: src/wx-console/wxbrestorepanel.cpp:237
-msgid "Cancel restore"
-msgstr "Anuluj odtwarzanie"
-
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr "Dodaj"
-
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
-msgid "Remove"
-msgstr "Usuń"
-
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
-msgid "Refresh"
-msgstr "Odwierz"
-
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr "M"
-
-#: src/wx-console/wxbrestorepanel.cpp:290
-msgid "Filename"
-msgstr "Nazwa pliku"
-
-#: src/wx-console/wxbrestorepanel.cpp:294
-msgid "Size"
-msgstr "Rozmiar"
-
-#: src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr "Data"
-
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr "Prawa"
-
-#: src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr "Użytkownik"
-
-#: src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr "Grupa"
-
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1897
-msgid "Job Name"
-msgstr "Nazwa Zadania"
-
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1153
-#: src/wx-console/wxbrestorepanel.cpp:1156
-#: src/wx-console/wxbrestorepanel.cpp:1239
-#: src/wx-console/wxbrestorepanel.cpp:1849
-#: src/wx-console/wxbrestorepanel.cpp:1851
-#: src/wx-console/wxbrestorepanel.cpp:1912
-msgid "Fileset"
-msgstr "Zestaw plików"
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1233
-#: src/wx-console/wxbrestorepanel.cpp:1249
-#: src/wx-console/wxbrestorepanel.cpp:1251
-#: src/wx-console/wxbrestorepanel.cpp:1259
-#: src/wx-console/wxbrestorepanel.cpp:1261
-#: src/wx-console/wxbrestorepanel.cpp:1280
-#: src/wx-console/wxbrestorepanel.cpp:1287
-#: src/wx-console/wxbrestorepanel.cpp:1839
-#: src/wx-console/wxbrestorepanel.cpp:1850
-#: src/wx-console/wxbrestorepanel.cpp:1971
-msgid "Before"
-msgstr "Przed"
-
-#: src/wx-console/wxbrestorepanel.cpp:342
-msgid "Please configure parameters concerning files to restore :"
-msgstr "Proszę skonfiguruj parametry związane z plikami do odtwarzania :"
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1905
-msgid "always"
-msgstr "zawsze"
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if newer"
-msgstr "jeśli nowszy"
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if older"
-msgstr "jeśli starszy"
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1908
-msgid "never"
-msgstr "nigdy"
-
-#: src/wx-console/wxbrestorepanel.cpp:359
-msgid "Please configure parameters concerning files restoration :"
-msgstr "Proszę skonfigurować parametry dotyczących odtwarzania plików :"
-
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr "Pobieranie listy parametrów."
-
-#: src/wx-console/wxbrestorepanel.cpp:435
-msgid "Error : no clients returned by the director."
-msgstr "Błąd : dyrektor nie zwrócił klientów."
-
-#: src/wx-console/wxbrestorepanel.cpp:459
-msgid "Error : no filesets returned by the director."
-msgstr "Błąd : dyrektor nie zwrócił żadnych fileset'ów."
-
-#: src/wx-console/wxbrestorepanel.cpp:483
-msgid "Error : no storage returned by the director."
-msgstr "Błąd : dyrektor nie zwrócił storage."
-
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
-msgid "Error : no jobs returned by the director."
-msgstr "Błąd : dyrektor nie zwrócił zadań."
-
-#: src/wx-console/wxbrestorepanel.cpp:516
-msgid "RestoreFiles"
-msgstr "RestoreFiles"
-
-#: src/wx-console/wxbrestorepanel.cpp:551
-msgid "Please configure your restore parameters."
-msgstr "Proszę skonfiguruj swoje parametry odtwarzania."
-
-#: src/wx-console/wxbrestorepanel.cpp:556
-msgid "Please select a client."
-msgstr "Proszę zaznacz klienta."
-
-#: src/wx-console/wxbrestorepanel.cpp:560
-msgid "Please select a restore date."
-msgstr "Proszę wskaż datę odtwarzania."
-
-#: src/wx-console/wxbrestorepanel.cpp:565
-msgid "Building restore tree..."
-msgstr "Budowanie drzewa odtwarzania..."
-
-#: src/wx-console/wxbrestorepanel.cpp:613
-msgid "Error while starting restore: "
-msgstr "Błąd w trakcie uruchamiania odtwarzania: "
-
-#: src/wx-console/wxbrestorepanel.cpp:705
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
-"Kliknięcie prawym przyciskiem myszy na pliku lub katalogu, lub podwójne "
-"kliknięcie na nich zaznacza je i dodaje do listy odtwarzania."
-
-#: src/wx-console/wxbrestorepanel.cpp:742
-#: src/wx-console/wxbrestorepanel.cpp:764
-msgid "bwx-console: unexpected restore question."
-msgstr "bwx-console: niespodziewane pytanie o odtwarzanie."
-
-#: src/wx-console/wxbrestorepanel.cpp:775
-msgid " files selected to be restored."
-msgstr " pliki zaznaczone do odtworzenia."
-
-#: src/wx-console/wxbrestorepanel.cpp:780
-msgid " file selected to be restored."
-msgstr " plik zaznaczony do odtworzenia."
-
-#: src/wx-console/wxbrestorepanel.cpp:787
-#, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
-"Proszę skonfiguruj swoje odtwarzanie (%ld plików zaznaczonych do "
-"odtwarzania)..."
-
-#: src/wx-console/wxbrestorepanel.cpp:797
-msgid "Restore failed : no file selected.\n"
-msgstr "Nieudane odtwarzanie, nie wskazano pliku.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:798
-msgid "Restore failed : no file selected."
-msgstr "Nieudane odtwarzanie, nie wskazano pliku."
-
-#: src/wx-console/wxbrestorepanel.cpp:808
-msgid "Restoring, please wait..."
-msgstr "Odtwarzanie, proszę czekać..."
-
-#: src/wx-console/wxbrestorepanel.cpp:821
-msgid "Job queued. JobId="
-msgstr "Zadanie zakolejkowane. JobId="
-
-#: src/wx-console/wxbrestorepanel.cpp:823
-msgid "Restore queued, jobid="
-msgstr "Odtwarzanie zakolejkowane, jobid="
-
-#: src/wx-console/wxbrestorepanel.cpp:827
-msgid "Job failed."
-msgstr "Zadanie nieudane."
-
-#: src/wx-console/wxbrestorepanel.cpp:828
-msgid "Restore failed, please look at messages.\n"
-msgstr "Nieudane odtwarzanie, proszę zweryfikuj komunikaty.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:829
-msgid "Restore failed, please look at messages in console."
-msgstr "Odtwarzanie nieudane, proszę spojrzeć na komunikaty na konsoli."
-
-#: src/wx-console/wxbrestorepanel.cpp:835
-#: src/wx-console/wxbrestorepanel.cpp:836
-msgid "Failed to retrieve jobid.\n"
-msgstr "Nieudane pobranie jobid.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:862
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion.\n"
-msgstr ""
-"Zadanie odtwarzania zaplanowane do uruchomienia. bwx-console nie będzie "
-"czekać na jego zakończenie.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:863
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion."
-msgstr ""
-"Zadanie odtwarzania zaplanowane do uruchomienia. bwx-console nie będzie "
-"czekać na jego zakończenie."
-
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job created, but not yet running."
-msgstr "Zadanie odtwarzania stworzone, lecz jeszcze nie uruchomione."
-
-#: src/wx-console/wxbrestorepanel.cpp:894
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr "Zadanie odtwarzania w trakcie, proszę czekać (%ld z %ld plików odtworzonych)..."
-
-#: src/wx-console/wxbrestorepanel.cpp:898
-msgid "Restore job terminated successfully."
-msgstr "Zadanie odtwarzania zakończone poprawnie."
-
-#: src/wx-console/wxbrestorepanel.cpp:899
-msgid "Restore job terminated successfully.\n"
-msgstr "Zadanie odtwarzania zakończone poprawnie.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:904
-msgid "Restore job terminated in error, see messages in console."
-msgstr "Zadanie odtwarzania zakończone z błędem, zobacz komunikaty na konsoli."
-
-#: src/wx-console/wxbrestorepanel.cpp:905
-msgid "Restore job terminated in error, see messages.\n"
-msgstr "Zadanie odtwarzania zakończone z błędem, zobacz komunikaty.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:910
-msgid "Restore job reported a non-fatal error."
-msgstr "Zadanie odtwarzania zaraportowało niekrytyczny błąd."
-
-#: src/wx-console/wxbrestorepanel.cpp:914
-msgid "Restore job reported a fatal error."
-msgstr "Zadanie odtwarzania zaraportowało błąd krytyczny."
-
-#: src/wx-console/wxbrestorepanel.cpp:919
-msgid "Restore job cancelled by user."
-msgstr "Zadanie odtwarzania anulowane przez użytkownika."
-
-#: src/wx-console/wxbrestorepanel.cpp:920
-msgid "Restore job cancelled by user.\n"
-msgstr "Zadanie odtwarzania anulowane przez użytkownika.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:925
-msgid "Restore job is waiting on File daemon."
-msgstr "Zadanie odtwarzania oczekuje na Demon Plików."
-
-#: src/wx-console/wxbrestorepanel.cpp:929
-msgid "Restore job is waiting for new media."
-msgstr "Zadanie odtwarzania oczekuje na nowe medium."
-
-#: src/wx-console/wxbrestorepanel.cpp:933
-msgid "Restore job is waiting for storage resource."
-msgstr "Zadanie odtwarzania oczekuje na zasoby storage."
-
-#: src/wx-console/wxbrestorepanel.cpp:937
-msgid "Restore job is waiting for job resource."
-msgstr "Zadanie odtwarzania oczekuje na zasoby dadania."
-
-#: src/wx-console/wxbrestorepanel.cpp:941
-msgid "Restore job is waiting for Client resource."
-msgstr "Zadanie odtwarzania oczekuje na zasoby Klienta."
-
-#: src/wx-console/wxbrestorepanel.cpp:945
-msgid "Restore job is waiting for maximum jobs."
-msgstr "Zadanie odtwarzania oczekuje z powodu maksymalnej iloiści zadań."
-
-#: src/wx-console/wxbrestorepanel.cpp:949
-msgid "Restore job is waiting for start time."
-msgstr "Zadanie odtwarzania oczekuje na czas uruchomienia."
-
-#: src/wx-console/wxbrestorepanel.cpp:953
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr "Zadanie odtwarzania oczekuje na zakończenie zadań o wyższym priorytecie."
-
-#: src/wx-console/wxbrestorepanel.cpp:1002
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
-"Zadanie odtwarzania nie wystartowało w ciągu minuty, bwx-console nie będzie "
-"już więcej czekać na jego zakończenie.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
-"Zadanie odtwarzania nie wystartowało w ciągu minuty, bwx-console nie będzie "
-"już więcej czekać na jego zakończenie."
-
-#: src/wx-console/wxbrestorepanel.cpp:1013
-msgid "Restore done successfully.\n"
-msgstr "Odtwarzanie wykonane poprawnie.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:1014
-msgid "Restore done successfully."
-msgstr "Odtwarzanie wykonane poprawnie."
-
-#: src/wx-console/wxbrestorepanel.cpp:1086
-msgid "Applying restore configuration changes..."
-msgstr "Zastosowanie zmian konfiguracyjnych odtwarzania..."
-
-#: src/wx-console/wxbrestorepanel.cpp:1138
-msgid "Failed to find the selected client."
-msgstr "Nie można znaleźć wskazanego klienta."
-
-#: src/wx-console/wxbrestorepanel.cpp:1158
-msgid "Failed to find the selected fileset."
-msgstr "Nie można znaleźć wskazanego fileset."
-
-#: src/wx-console/wxbrestorepanel.cpp:1178
-msgid "Failed to find the selected storage."
-msgstr "Nie można znaleźć wskazanego storage."
-
-#: src/wx-console/wxbrestorepanel.cpp:1199
-#: src/wx-console/wxbrestorepanel.cpp:1886
-msgid "Run Restore job"
-msgstr "Uruchom zadanie Odtwarzania"
-
-#: src/wx-console/wxbrestorepanel.cpp:1216
-msgid "Restore configuration changes were applied."
-msgstr "Odtworzenie zmian konfiguracji zostało zastosowane."
-
-#: src/wx-console/wxbrestorepanel.cpp:1225
-msgid "Restore cancelled.\n"
-msgstr "Odtwarzanie anulowane.\n"
-
-#: src/wx-console/wxbrestorepanel.cpp:1226
-msgid "Restore cancelled."
-msgstr "Odtwarzanie anulowane."
-
-#: src/wx-console/wxbrestorepanel.cpp:1248
-msgid "No results to list."
-msgstr "Brak rezultatów do wylistowania."
-
-#: src/wx-console/wxbrestorepanel.cpp:1250
-msgid "No backup found for this client."
-msgstr "Nie znaleziono backupu dla tego klienta."
-
-#: src/wx-console/wxbrestorepanel.cpp:1257
-msgid "ERROR"
-msgstr "BŁĄD"
-
-#: src/wx-console/wxbrestorepanel.cpp:1258
-msgid "Query failed"
-msgstr "Nieudane zapytanie"
-
-#: src/wx-console/wxbrestorepanel.cpp:1260
-msgid "Cannot get previous backups list, see console."
-msgstr "Nie moąna otrzymać listy poprzednich backupów, zobacz konsolę."
-
-#: src/wx-console/wxbrestorepanel.cpp:1896
-msgid "JobName:"
-msgstr "Nazwa Zadania:"
-
-#: src/wx-console/wxbrestorepanel.cpp:1898
-msgid "Bootstrap:"
-msgstr "Bootstrap:"
-
-#: src/wx-console/wxbrestorepanel.cpp:1900
-msgid "Where:"
-msgstr "Gdzie:"
-
-#: src/wx-console/wxbrestorepanel.cpp:1903
-msgid "Replace:"
-msgstr "Zamiana:"
-
-#: src/wx-console/wxbrestorepanel.cpp:1906
-msgid "ifnewer"
-msgstr "ifnewer"
-
-#: src/wx-console/wxbrestorepanel.cpp:1907
-msgid "ifolder"
-msgstr "ifolder"
-
-#: src/wx-console/wxbrestorepanel.cpp:1911
-msgid "FileSet:"
-msgstr "FileSet:"
-
-#: src/wx-console/wxbrestorepanel.cpp:1913
-msgid "Client:"
-msgstr "Klient:"
-
-#: src/wx-console/wxbrestorepanel.cpp:1915
-msgid "Storage:"
-msgstr "Storage:"
-
-#: src/wx-console/wxbrestorepanel.cpp:1917
-msgid "When:"
-msgstr "Kiedy:"
-
-#: src/wx-console/wxbrestorepanel.cpp:1920
-msgid "Priority:"
-msgstr "Priorytet:"
-
-#: src/wx-console/wxbrestorepanel.cpp:2028
-msgid "Restoring..."
-msgstr "Odtwarzanie..."
-
-#: src/wx-console/wxbhistorytextctrl.cpp:117
-msgid "Unknown command."
-msgstr "Nieznana komenda."
-
-#: src/wx-console/wxbhistorytextctrl.cpp:126
-msgid "Possible completions: "
-msgstr "Możliwe uzupełnienia: "
-
 #: src/qt-console/bat_conf.cpp:154
 msgid "Console: name=%s\n"
 msgstr "Konsola: nazwa=%s\n"
diff --git a/po/sv.po b/po/sv.po
index 4d9f9cb..a5b7408 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,5 +1,5 @@
 # Swedish translations for PACKAGE package.
-# Copyright (C) 2007 Kern Sibbald
+# Copyright (C) 2007-2014 Kern Sibbald
 # This file is distributed under the same license as the PACKAGE package.
 # Kern Sibbald <kern at bacula.org>, 2007.
 #
@@ -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: 2013-02-19 18:26+0100\n"
+"POT-Creation-Date: 2014-07-29 18:18+0200\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"
@@ -17,17993 +17,465 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/dird/jobq.c:74
+#: src/baconfig.h:60 src/baconfig.h:61 src/baconfig.h:66 src/baconfig.h:67
 #, c-format
-msgid "pthread_attr_init: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/dird/jobq.c:83
-#, c-format
-msgid "pthread_mutex_init: ERR=%s\n"
+#: src/baconfig.h:76
+msgid "*None*"
 msgstr ""
 
-#: src/dird/jobq.c:89
-#, c-format
-msgid "pthread_cond_init: ERR=%s\n"
+#: src/lib/status.h:73
+msgid ""
+"\n"
+"Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/jobq.c:131
-#, c-format
-msgid "pthread_cond_broadcast: ERR=%s\n"
+#: src/lib/status.h:80
+msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/jobq.c:139
-#, c-format
-msgid "pthread_cond_wait: ERR=%s\n"
+#: src/lib/status.h:82
+msgid "===================================================================\n"
 msgstr ""
 
-#: src/dird/jobq.c:180
-#, c-format
-msgid "Job %s waiting %d seconds for scheduled start time.\n"
+#: src/lib/status.h:102
+msgid "Created"
 msgstr ""
 
-#: 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"
+#: src/lib/status.h:106
+msgid "Error"
 msgstr ""
 
-#: src/dird/jobq.c:242
-#, c-format
-msgid "pthread_thread_create: ERR=%s\n"
+#: src/lib/status.h:109
+msgid "Diffs"
 msgstr ""
 
-#: src/dird/jobq.c:352
-#, c-format
-msgid "pthread_cond_signal: ERR=%s\n"
+#: src/lib/status.h:112
+msgid "Cancel"
 msgstr ""
 
-#: src/dird/jobq.c:363
-#, c-format
-msgid "pthread_create: ERR=%s\n"
+#: src/lib/status.h:115
+msgid "OK"
 msgstr ""
 
-#: src/dird/jobq.c:647
-#, c-format
-msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
+#: src/lib/status.h:118
+msgid "OK -- with warnings"
 msgstr ""
 
-#: src/dird/jobq.c:703 src/dird/jobq.c:708
-msgid "previous Job"
+#: src/lib/status.h:122
+msgid "Other"
 msgstr ""
 
-#: src/dird/jobq.c:745
+#: src/lib/status.h:134
 #, c-format
-msgid ""
-"Job canceled. Attempt to read and write same device.\n"
-"    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
+msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:54
+#: src/lib/status.h:142
 #, c-format
-msgid "The current %s retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:59
-msgid "Continue? (yes/mod/no): "
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_select.c:67
-msgid "Invalid period.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:143
-msgid "You have the following choices:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:159
-msgid "The defined Storage resources are:\n"
-msgstr ""
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1176
-#: src/wx-console/wxbrestorepanel.cpp:1845
-#: src/wx-console/wxbrestorepanel.cpp:1916
-msgid "Storage"
-msgstr ""
-
-#: src/dird/ua_select.c:167
-msgid "Select Storage resource"
-msgstr ""
-
-#: src/dird/ua_select.c:182 src/dird/ua_restore.c:1296
-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:226
-msgid "FileSet"
-msgstr ""
-
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300
-msgid "Select FileSet resource"
-msgstr ""
-
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
-msgid "Could not find a Catalog resource\n"
-msgstr ""
-
-#: src/dird/ua_select.c:223
-msgid "You must specify a \"use <catalog-name>\" command before continuing.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:229
-msgid "The defined Catalog resources are:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:237
-msgid "Catalog"
-msgstr ""
-
-#: src/dird/ua_select.c:237
-msgid "Select Catalog resource"
-msgstr ""
-
-#: src/dird/ua_select.c:255 src/dird/ua_select.c:281
-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:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
-#: src/dird/ua_run.c:225
-msgid "Job"
+msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289
-msgid "Select Job resource"
+#: src/lib/status.h:171 src/lib/status.h:182 src/lib/status.h:196
+#: src/lib/status.h:200 src/lib/status.h:204
+msgid "Bacula "
 msgstr ""
 
-#: src/dird/ua_select.c:308
+#: src/qt-console/bat_conf.cpp:130
 #, c-format
-msgid "Error: Restore Job resource \"%s\" does not exist.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:322
-msgid "The defined Restore Job resources are:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:330
-msgid "Select Restore Job"
-msgstr ""
-
-#: src/dird/ua_select.c:347
-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: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
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:700
-#: src/wx-console/wxbrestorepanel.cpp:1133
-#: src/wx-console/wxbrestorepanel.cpp:1136
-#: src/wx-console/wxbrestorepanel.cpp:1238
-#: src/wx-console/wxbrestorepanel.cpp:1838
-#: src/wx-console/wxbrestorepanel.cpp:1840
-#: src/wx-console/wxbrestorepanel.cpp:1914
-#: src/wx-console/wxbrestorepanel.cpp:1970
-msgid "Client"
-msgstr ""
-
-#: src/dird/ua_select.c:355
-msgid "Select Client (File daemon) resource"
+msgid "No record for %d %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:382
+#: src/qt-console/bat_conf.cpp:139
 #, c-format
-msgid "Error: Client resource %s does not exist.\n"
+msgid "Director: name=%s address=%s DIRport=%d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:407
+#: src/qt-console/bat_conf.cpp:143
 #, c-format
-msgid "Could not find Client %s: ERR=%s"
+msgid "Console: name=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:417 src/dird/ua_select.c:471
+#: src/qt-console/bat_conf.cpp:146
+#: src/qt-console/tray-monitor/tray_conf.cpp:183
 #, c-format
-msgid "Could not find Client \"%s\": ERR=%s"
+msgid "ConsoleFont: name=%s font face=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:446
+#: src/qt-console/bat_conf.cpp:150 src/qt-console/bat_conf.cpp:231
+#: src/qt-console/bat_conf.cpp:279 src/qt-console/bat_conf.cpp:309
 #, c-format
-msgid "Error obtaining client ids. ERR=%s\n"
+msgid "Unknown resource type %d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:450
-msgid "No clients defined. You must run a job before using this command.\n"
+#: src/qt-console/bat_conf.cpp:257
+#: src/qt-console/tray-monitor/tray_conf.cpp:276
+#, c-format
+msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:454
-msgid "Defined Clients:\n"
+#: src/qt-console/bat_conf.cpp:326
+#: src/qt-console/tray-monitor/tray_conf.cpp:360
+#, c-format
+msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:464
-msgid "Select the Client"
+#: src/qt-console/bcomm/dircomm.cpp:85
+#, c-format
+msgid "Already connected\"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:497 src/dird/ua_select.c:521 src/dird/ua_select.c:566
+#: src/qt-console/bcomm/dircomm.cpp:96
+#: src/qt-console/tray-monitor/tray-monitor.cpp:347
 #, c-format
-msgid "Could not find Pool \"%s\": ERR=%s"
+msgid "Connecting to Director %s:%d"
 msgstr ""
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
+#: src/qt-console/bcomm/dircomm.cpp:98
 #, c-format
-msgid "Error obtaining pool ids. ERR=%s\n"
+msgid ""
+"Connecting to Director %s:%d\n"
+"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:536
-msgid "No pools defined. Use the \"create\" command to create one.\n"
+#: src/qt-console/bcomm/dircomm.cpp:150
+#, c-format
+msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:540
-msgid "Defined Pools:\n"
+#: src/qt-console/bcomm/dircomm.cpp:173
+#, c-format
+msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:365
-#: src/baconfig.h:88
-msgid "*None*"
+#: src/qt-console/bcomm/dircomm.cpp:195
+#: src/qt-console/tray-monitor/tray-monitor.cpp:352
+msgid "Director daemon"
 msgstr ""
 
-#: 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"
+#: src/qt-console/bcomm/dircomm.cpp:233
+msgid "Initializing ..."
 msgstr ""
 
-#: src/dird/ua_select.c:553
-msgid "Select the Pool"
+#: src/qt-console/bcomm/dircomm.cpp:249 src/qt-console/console/console.cpp:130
+msgid "Connected"
 msgstr ""
 
-#: src/dird/ua_select.c:591
-#, c-format
-msgid "No access to Pool \"%s\"\n"
+#: src/qt-console/bcomm/dircomm.cpp:373
+msgid "Command completed ..."
 msgstr ""
 
-#: src/dird/ua_select.c:623
-msgid "Enter *MediaId or Volume name: "
+#: src/qt-console/bcomm/dircomm.cpp:380 src/qt-console/console/console.cpp:367
+msgid "Processing command ..."
 msgstr ""
 
-#: src/dird/ua_select.c:658
-msgid "The defined Pool resources are:\n"
+#: src/qt-console/bcomm/dircomm.cpp:387
+msgid "At main prompt waiting for input ..."
 msgstr ""
 
-#: src/dird/ua_select.c:666
-msgid "Select Pool resource"
+#: src/qt-console/bcomm/dircomm.cpp:394 src/qt-console/bcomm/dircomm.cpp:407
+msgid "At prompt waiting for input ..."
 msgstr ""
 
-#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
-#, c-format
-msgid "Error: Pool resource \"%s\" does not exist.\n"
+#: src/qt-console/bcomm/dircomm.cpp:415
+msgid "Command failed."
 msgstr ""
 
-#: src/dird/ua_select.c:701
-msgid "Enter the JobId to select: "
+#: src/qt-console/bcomm/dircomm.cpp:487
+msgid "Director disconnected."
 msgstr ""
 
-#: src/dird/ua_select.c:739
+#: src/qt-console/bcomm/dircomm_auth.cpp:107
 #, c-format
-msgid "Could not find Job \"%s\": ERR=%s"
+msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:819
+#: src/qt-console/bcomm/dircomm_auth.cpp:114
 #, c-format
-msgid "Automatically selected %s: %s\n"
+msgid ""
+"Authorization problem: Remote server at \"%s:%d\" did not advertise required "
+"TLS support.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:830
+#: src/qt-console/bcomm/dircomm_auth.cpp:122
 #, c-format
 msgid ""
-"Your request has multiple choices for \"%s\". Selection is not possible in "
-"batch mode.\n"
+"Authorization problem with Director at \"%s:%d\": Remote server requires "
+"TLS.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:848
+#: src/qt-console/bcomm/dircomm_auth.cpp:133
 #, c-format
-msgid "Selection list for \"%s\" is empty!\n"
+msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:854
+#: src/qt-console/bcomm/dircomm_auth.cpp:145
 #, c-format
-msgid "Automatically selected: %s\n"
+msgid ""
+"Bad response to Hello command: ERR=%s\n"
+"The Director at \"%s:%d\" is probably not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:866
-msgid "Selection aborted, nothing done.\n"
+#: src/qt-console/bcomm/dircomm_auth.cpp:154
+#, c-format
+msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr ""
 
-#: src/dird/ua_select.c:871
+#: src/qt-console/bcomm/dircomm_auth.cpp:169
 #, c-format
-msgid "Please enter a number between 1 and %d\n"
+msgid ""
+"Authorization problem with Director at \"%s:%d\"\n"
+"Most likely the passwords do not agree.\n"
+"If you are using TLS, there may have been a certificate validation error "
+"during the TLS handshake.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:920
-msgid "Storage name given twice.\n"
+#: src/qt-console/main.cpp:154
+msgid "Cryptography library initialization failed.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:937
+#: src/qt-console/main.cpp:158
 #, c-format
-msgid "Expecting jobid=nn command, got: %s\n"
+msgid "Please correct configuration file: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:941
+#: src/qt-console/main.cpp:180
 #, c-format
-msgid "JobId %s is not running.\n"
+msgid ""
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: 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          no signals\n"
+"       -t          test - read configuration and exit\n"
+"       -?          print this message.\n"
+"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:951
-#, c-format
-msgid "Expecting job=xxx, got: %s.\n"
+#: src/qt-console/main.cpp:213 src/qt-console/main.cpp:243
+msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
+#: src/qt-console/main.cpp:221
 #, c-format
-msgid "Job \"%s\" is not running.\n"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:963
+#: src/qt-console/main.cpp:230
 #, c-format
-msgid "Expecting ujobid=xxx, got: %s.\n"
+msgid ""
+"No Director resource defined in %s\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
 
-#: src/dird/ua_select.c:983
+#: src/qt-console/main.cpp:251
 #, c-format
-msgid "Storage resource \"%s\": not found\n"
-msgstr ""
-
-#: src/dird/ua_select.c:1015
-msgid "Enter autochanger drive[0]: "
-msgstr ""
-
-#: src/dird/ua_select.c:1036
-msgid "Enter autochanger slot: "
-msgstr ""
-
-#: src/dird/ua_select.c:1066
-msgid "Media Types defined in conf file:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:1072
-msgid "Media Type"
-msgstr ""
-
-#: src/dird/ua_select.c:1072
-msgid "Select the Media Type"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1111
-#, c-format
-msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:75
+msgid ""
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
+#: src/qt-console/tray-monitor/authenticate.cpp:84
 #, c-format
-msgid "Warning Job %s is not running. Continuing anyway ...\n"
-msgstr ""
-
-#: 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"
+msgid "Bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
-msgid "No Jobs running.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:91
+msgid "Director rejected Hello command\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1167
-msgid "None of your jobs are running.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:119
+#, c-format
+msgid "Error sending Hello to Storage daemon. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1172
-msgid "Select Job:\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:125
+msgid ""
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:1181
+#: src/qt-console/tray-monitor/authenticate.cpp:132
 #, c-format
-msgid "JobId=%s Job=%s"
+msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1185
-#, c-format
-msgid "Choose Job to %s"
+#: src/qt-console/tray-monitor/authenticate.cpp:139
+msgid "Storage daemon rejected Hello command\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1192
+#: src/qt-console/tray-monitor/authenticate.cpp:165
 #, c-format
-msgid ""
-"Cancel: %s\n"
-"\n"
-"%s"
-msgstr ""
-
-#: src/dird/ua_select.c:1193
-msgid "Confirm cancel?"
+msgid "Error sending Hello to File daemon. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1199
-msgid "Confirm cancel (yes/no): "
+#: src/qt-console/tray-monitor/authenticate.cpp:171
+msgid ""
+"Director and File daemon passwords or names not the same.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:1208 src/dird/ua_cmds.c:733 src/dird/ua_cmds.c:1100
+#: src/qt-console/tray-monitor/authenticate.cpp:178
 #, c-format
-msgid "Job \"%s\" not found.\n"
+msgid "Bad response from File daemon to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/bsr.c:173
-#, c-format
-msgid "Unable to get Job record. ERR=%s\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:185
+msgid "File daemon rejected Hello command\n"
 msgstr ""
 
-#: src/dird/bsr.c:184
+#: src/qt-console/tray-monitor/tray-monitor.cpp:55
 #, c-format
-msgid "Unable to get Job Volume Parameters. ERR=%s\n"
+msgid ""
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -d <nn>       set debug level to <nn>\n"
+"       -dt           print timestamp in debug output\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
+"\n"
 msgstr ""
 
-#: src/dird/bsr.c:232
+#: src/qt-console/tray-monitor/tray-monitor.cpp:204
 #, c-format
-msgid "Unable to create bootstrap file %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/bsr.c:241
-msgid "No files found to read. No bootstrap file written.\n"
-msgstr ""
-
-#: src/dird/bsr.c:245
-msgid "Error writing bsr file.\n"
+msgid ""
+"Error: %d Monitor resources defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
 
-#: src/dird/bsr.c:250
+#: src/qt-console/tray-monitor/tray-monitor.cpp:236
 #, c-format
-msgid "Bootstrap records written to %s\n"
-msgstr ""
-
-#: src/dird/bsr.c:298
 msgid ""
-"The job will require the following\n"
-"   Volume(s)                 Storage(s)                SD Device(s)\n"
-"===========================================================================\n"
-msgstr ""
-
-#: src/dird/bsr.c:317
-msgid "No Volumes found to restore.\n"
+"No Client, Storage or Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
 msgstr ""
 
-#: src/dird/bsr.c:319
+#: src/qt-console/tray-monitor/tray-monitor.cpp:251
+#, c-format
 msgid ""
-"\n"
-"Volumes marked with \"*\" are online.\n"
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
 msgstr ""
 
-#: src/dird/ua_server.c:69
+#: src/qt-console/tray-monitor/tray-monitor.cpp:319
 #, c-format
-msgid "Cannot create UA thread: %s\n"
-msgstr ""
-
-#: src/dird/ua_server.c:159
-msgid "You have messages.\n"
+msgid "Error, currentitem is not a Client or a Storage..\n"
 msgstr ""
 
-#: src/dird/verify.c:86 src/dird/verify.c:318
+#: src/qt-console/tray-monitor/tray-monitor.cpp:357
 #, c-format
-msgid "Unimplemented Verify level %d(%c)\n"
-msgstr ""
-
-#: src/dird/verify.c:148
-msgid ""
-"Unable to find JobId of previous InitCatalog Job.\n"
-"Please run a Verify with Level=InitCatalog before\n"
-"running the current Job.\n"
-msgstr ""
-
-#: src/dird/verify.c:153
-msgid "Unable to find JobId of previous Job for this client.\n"
+msgid "Connecting to Client %s:%d"
 msgstr ""
 
-#: src/dird/verify.c:170
-#, c-format
-msgid "Could not get job record for previous Job. ERR=%s"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:362
+msgid "File daemon"
 msgstr ""
 
-#: src/dird/verify.c:176
+#: src/qt-console/tray-monitor/tray-monitor.cpp:367
 #, c-format
-msgid "Last Job %d did not terminate normally. JobStatus=%c\n"
+msgid "Connecting to Storage %s:%d"
 msgstr ""
 
-#: src/dird/verify.c:180
-#, c-format
-msgid "Verifying against JobId=%d Job=%s\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:372
+msgid "Storage daemon"
 msgstr ""
 
-#: src/dird/verify.c:219
+#: src/qt-console/tray-monitor/tray-monitor.cpp:376
+#: src/qt-console/tray-monitor/tray-monitor.cpp:406
 #, c-format
-msgid "Start Verify JobId=%s Level=%s Job=%s\n"
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
 msgstr ""
 
-#: src/dird/verify.c:305
-msgid "Deprecated feature ... use bootstrap.\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:381
+msgid "Cannot connect to daemon."
 msgstr ""
 
-#: src/dird/verify.c:372
+#: src/qt-console/tray-monitor/tray-monitor.cpp:390
 #, c-format
-msgid "Unimplemented verify level %d\n"
+msgid "Authentication error : %s"
 msgstr ""
 
-#: src/dird/verify.c:421
-msgid "Verify OK"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:397
+msgid "Opened connection with Director daemon."
 msgstr ""
 
-#: src/dird/verify.c:425
-msgid "*** Verify Error ***"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:400
+msgid "Opened connection with File daemon."
 msgstr ""
 
-#: src/dird/verify.c:429
-msgid "Verify warnings"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:403
+msgid "Opened connection with Storage daemon."
 msgstr ""
 
-#: src/dird/verify.c:432
-msgid "Verify Canceled"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:454
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
 msgstr ""
 
-#: src/dird/verify.c:435
-msgid "Verify Differences"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:463
+msgid "Error : Connection closed."
 msgstr ""
 
-#: src/dird/verify.c:440
+#: src/qt-console/tray-monitor/tray_conf.cpp:156
 #, c-format
-msgid "Inappropriate term code: %d %c\n"
+msgid "No %s resource defined\n"
 msgstr ""
 
-#: src/dird/verify.c:454
+#: src/qt-console/tray-monitor/tray_conf.cpp:165
 #, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/verify.c:489
+#: src/qt-console/tray-monitor/tray_conf.cpp:171
 #, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build:                  %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+msgid "Director: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:567
+#: src/qt-console/tray-monitor/tray_conf.cpp:175
 #, c-format
-msgid ""
-"bird<filed: bad attributes, expected 3 fields got %d\n"
-" mslen=%d msg=%s\n"
+msgid "Client: name=%s address=%s FDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:612
+#: src/qt-console/tray-monitor/tray_conf.cpp:179
 #, c-format
-msgid "New file: %s\n"
+msgid "Storage: name=%s address=%s SDport=%d\n"
 msgstr ""
 
-#: src/dird/verify.c:613
+#: src/qt-console/tray-monitor/tray_conf.cpp:187
 #, c-format
-msgid "File not in catalog: %s\n"
+msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/verify.c:637
+#: src/qt-console/tray-monitor/tray_conf.cpp:245
 #, c-format
-msgid "      st_ino   differ. Cat: %s File: %s\n"
+msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
-#: src/dird/verify.c:646
+#: src/qt-console/tray-monitor/tray_conf.cpp:282
 #, c-format
-msgid "      st_mode  differ. Cat: %x File: %x\n"
+msgid "Too many items in %s resource\n"
 msgstr ""
 
-#: src/dird/verify.c:654
+#: src/qt-console/tray-monitor/tray_conf.cpp:302
+#: src/qt-console/tray-monitor/tray_conf.cpp:340
 #, c-format
-msgid "      st_nlink differ. Cat: %d File: %d\n"
-msgstr ""
-
-#: src/dird/verify.c:662
-#, c-format
-msgid "      st_uid   differ. Cat: %u File: %u\n"
-msgstr ""
-
-#: src/dird/verify.c:670
-#, c-format
-msgid "      st_gid   differ. Cat: %u File: %u\n"
-msgstr ""
-
-#: src/dird/verify.c:678
-#, c-format
-msgid "      st_size  differ. Cat: %s File: %s\n"
-msgstr ""
-
-#: src/dird/verify.c:687
-msgid "      st_atime differs\n"
-msgstr ""
-
-#: src/dird/verify.c:694
-msgid "      st_mtime differs\n"
-msgstr ""
-
-#: src/dird/verify.c:701
-msgid "      st_ctime differs\n"
-msgstr ""
-
-#: src/dird/verify.c:708
-#, c-format
-msgid "      st_size  decrease. Cat: %s File: %s\n"
-msgstr ""
-
-#: src/dird/verify.c:738
-#, c-format
-msgid "MD5/SHA1 index %d not same as attributes %d\n"
-msgstr ""
-
-#: src/dird/verify.c:746
-#, c-format
-msgid "      %s differs. File=%s Cat=%s\n"
-msgstr ""
-
-#: src/dird/verify.c:757
-#, c-format
-msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
-msgstr ""
-
-#: src/dird/verify.c:796
-#, c-format
-msgid "The following files are in the Catalog but not on %s:\n"
-msgstr ""
-
-#: src/dird/verify.c:811 src/tools/testfind.c:420
-#, c-format
-msgid "File: %s\n"
-msgstr ""
-
-#: src/dird/admin.c:65
-#, c-format
-msgid "Start Admin JobId %d, Job=%s\n"
-msgstr ""
-
-#: 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:98
-msgid "Admin OK"
-msgstr ""
-
-#: src/dird/admin.c:102
-msgid "*** Admin Error ***"
-msgstr ""
-
-#: src/dird/admin.c:106
-msgid "Admin Canceled"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/admin.c:118
-msgid "Bacula "
-msgstr ""
-
-#: src/dird/dird.c:150
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"       -f          run in foreground (for debugging)\n"
-"       -g          groupid\n"
-"       -m          print kaboom output (for debugging)\n"
-"       -r <job>    run <job> now\n"
-"       -s          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -u          userid\n"
-"       -v          verbose user messages\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: 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: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:546
-msgid "Too many open reload requests. Request ignored.\n"
-msgstr ""
-
-#: src/dird/dird.c:561
-msgid "Out of reload table entries. Giving up.\n"
-msgstr ""
-
-#: src/dird/dird.c:564
-msgid "Resetting previous configuration.\n"
-msgstr ""
-
-#: 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:636 src/filed/filed.c:350
-#, c-format
-msgid "No Messages resource defined in %s\n"
-msgstr ""
-
-#: src/dird/dird.c:641
-#, c-format
-msgid "Only one Director resource permitted in %s\n"
-msgstr ""
-
-#: 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: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: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: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 "
-"Director \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: 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:698
-#, c-format
-msgid "No Job records defined in %s\n"
-msgstr ""
-
-#: 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:830
-#, c-format
-msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
-msgstr ""
-
-#: src/dird/dird.c:837
-msgid "Too many items in Job resource\n"
-msgstr ""
-
-#: src/dird/dird.c:841
-#, c-format
-msgid "No storage specified in Job \"%s\" nor in Pool.\n"
-msgstr ""
-
-#: src/dird/dird.c:865
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:871
-#, c-format
-msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:878
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: 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: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: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:1019 src/tools/cats_test.c:377
-#, c-format
-msgid "%s"
-msgstr ""
-
-#: src/dird/dird.c:1098
-#, c-format
-msgid "Could not create storage record for %s\n"
-msgstr ""
-
-#: src/dird/dird.c:1106
-#, c-format
-msgid "Could not update storage record for %s\n"
-msgstr ""
-
-#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:312
-#, c-format
-msgid "Expected a strip path positive integer, got:%s:"
-msgstr ""
-
-#: src/dird/inc_conf.c:332
-#, c-format
-msgid "Expected a FileSet option keyword, got:%s:"
-msgstr ""
-
-#: src/dird/inc_conf.c:365
-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: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: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:2039
-#, c-format
-msgid "Keyword %s not permitted in this resource"
-msgstr ""
-
-#: src/dird/inc_conf.c:464
-#, c-format
-msgid "Regex compile error. ERR=%s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:485
-#, c-format
-msgid "Expected a regex string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:559
-#, c-format
-msgid "Expected a wild-card string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:582
-#, c-format
-msgid "Expected an fstype string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:593
-msgid "ExcludeDirContaining directive not permitted in Exclude.\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:620
-#, c-format
-msgid "Expected an drivetype string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:644 src/dird/inc_conf.c:687
-#, c-format
-msgid "Backslash found. Use forward slashes or quote the string.: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:659 src/dird/inc_conf.c:702
-#, c-format
-msgid "Expected a filename, got: %s"
-msgstr ""
-
-#: src/dird/inc_conf.c:676
-msgid "Plugin directive not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:719
-msgid "Options section not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
-#, c-format
-msgid "Expecting open brace. Got %s"
-msgstr ""
-
-#: src/dird/inc_conf.c:779
-#, c-format
-msgid "Expected a FileSet keyword, got: %s"
-msgstr ""
-
-#: src/dird/ua_query.c:73 src/findlib/create_file.c:288
-#: src/findlib/create_file.c:391
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_query.c:78
-msgid "Available queries:\n"
-msgstr ""
-
-#: src/dird/ua_query.c:85
-msgid "Choose a query"
-msgstr ""
-
-#: src/dird/ua_query.c:99
-msgid "Could not find query.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:117
-msgid "Too many prompts in query, max is 9.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:220
-#, c-format
-msgid "Warning prompt %d missing.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:265
-msgid ""
-"Entering SQL query mode.\n"
-"Terminate each query with a semicolon.\n"
-"Terminate query mode with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:268 src/dird/ua_query.c:284
-msgid "Enter SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:286
-msgid "Add to SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:289
-msgid "End query mode.\n"
-msgstr ""
-
-#: src/dird/newvol.c:90
-#, c-format
-msgid "Illegal character in Volume name \"%s\"\n"
-msgstr ""
-
-#: src/dird/newvol.c:104
-#, c-format
-msgid "Created new Volume \"%s\" in catalog.\n"
-msgstr ""
-
-#: src/dird/newvol.c:131
-#, c-format
-msgid "SQL failed, but ignored. ERR=%s\n"
-msgstr ""
-
-#: 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:150
-msgid "Too many failures. Giving up creating Volume name.\n"
-msgstr ""
-
-#: src/dird/expand.c:255
-#, c-format
-msgid "Count not update counter %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:427
-#, c-format
-msgid "Cannot create var context: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:432
-#, c-format
-msgid "Cannot set var callback: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:438
-#, c-format
-msgid "Cannot set var operate: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:444 src/dird/expand.c:459
-#, c-format
-msgid "Cannot unescape string: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:452
-#, c-format
-msgid "Cannot expand expression \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:470
-#, c-format
-msgid "Cannot destroy var context: ERR=%s\n"
-msgstr ""
-
-#: src/dird/recycle.c:69
-#, c-format
-msgid "Recycled volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:90
-msgid ""
-"\n"
-"This command can be DANGEROUS!!!\n"
-"\n"
-"It purges (deletes) all Files from a Job,\n"
-"JobId, Client or Volume; or it purges (deletes)\n"
-"all Jobs from a Client or Volume without regard\n"
-"to retention periods. Normally you should use the\n"
-"PRUNE command, which respects retention periods.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:157
-msgid "Choose item to purge"
-msgstr ""
-
-#: src/dird/ua_purge.c:204
-#, c-format
-msgid "Begin purging files for Client \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:213 src/dird/ua_purge.c:263
-#, c-format
-msgid "No Files found for client %s to purge from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:216
-#, c-format
-msgid "Files for %d Jobs for client \"%s\" purged from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:254
-#, c-format
-msgid "Begin purging jobs from Client \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:266
-#, c-format
-msgid "%d Jobs for client %s purged from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:464
-#, c-format
-msgid ""
-"\n"
-"Volume \"%s\" has VolStatus \"%s\" and cannot be purged.\n"
-"The VolStatus must be: Append, Full, Used, or Error to be purged.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:492
-#, c-format
-msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:541
-#, c-format
-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: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: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:623
-msgid "Can't update volume size in the catalog\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:625
-#, c-format
-msgid "The volume \"%s\" has been truncated\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:627
-#, c-format
-msgid "Unable to truncate volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:713
-#, c-format
-msgid "No Volumes found to perform %s action.\n"
-msgstr ""
-
-#: 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:800
-#, c-format
-msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:805
-#, c-format
-msgid "Cannot purge Volume with VolStatus=%s\n"
-msgstr ""
-
-#: src/dird/vbackup.c:76 src/dird/migrate.c:114
-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:871
-#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
-msgid "Pool resource"
-msgstr ""
-
-#: src/dird/vbackup.c:116 src/dird/migrate.c:285
-msgid "Job Pool's NextPool resource"
-msgstr ""
-
-#: src/dird/vbackup.c:147
-#, c-format
-msgid "Start Virtual Backup JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/vbackup.c:151
-msgid ""
-"This Job is not an Accurate backup so is not equivalent to a Full backup.\n"
-msgstr ""
-
-#: src/dird/vbackup.c:158
-msgid "No previous Jobs found.\n"
-msgstr ""
-
-#: src/dird/vbackup.c:180
-#, c-format
-msgid "Error getting Job record for previous Job: ERR=%s"
-msgstr ""
-
-#: src/dird/vbackup.c:186 src/dird/migrate.c:131
-msgid "Could not get or create the FileSet record.\n"
-msgstr ""
-
-#: 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: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: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:331 src/dird/backup.c:653 src/stored/bscan.c:1211
-msgid "Backup OK"
-msgstr ""
-
-#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
-msgid "*** Backup Error ***"
-msgstr ""
-
-#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
-msgid "Backup Canceled"
-msgstr ""
-
-#: src/dird/vbackup.c:393
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           Virtual Full\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_output.c:69 src/dird/ua_output.c:93
-msgid "ON or OFF keyword missing.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:113
-msgid "Disabled Jobs:\n"
-msgstr ""
-
-#: src/dird/ua_output.c:119
-msgid "No disabled Jobs.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:163
-msgid "disabled"
-msgstr ""
-
-#: src/dird/ua_output.c:211
-msgid "Keywords for the show command are:\n"
-msgstr ""
-
-#: src/dird/ua_output.c:217
-#, c-format
-msgid "%s resource %s not found.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:220
-#, c-format
-msgid "Resource %s not found\n"
-msgstr ""
-
-#: src/dird/ua_output.c:290
-msgid "Hey! DB is NULL\n"
-msgstr ""
-
-#: src/dird/ua_output.c:447
-#, c-format
-msgid "Jobid %d used %d Volume(s): %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:465
-msgid "No Pool specified.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:486
-#, c-format
-msgid "Pool: %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:502
-msgid "Ignoring invalid value for days. Max is 50.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:524
-#, c-format
-msgid "Unknown list keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:549
-#, c-format
-msgid "%s is not a job name.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:563
-#, c-format
-msgid "Could not find Pool for Job %s\n"
-msgstr ""
-
-#: 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: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:593
-#, c-format
-msgid "Could not find next Volume for Job %s.\n"
-msgstr ""
-
-#: 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:733
-#, c-format
-msgid "Pool %s not in database. %s"
-msgstr ""
-
-#: src/dird/ua_output.c:741
-#, c-format
-msgid "Pool %s created in database.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:794
-msgid "You have no messages.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:874
-msgid "Message too long to display.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:155 src/dird/ua_cmds.c:236
-#, c-format
-msgid "Can't use %s command in a runscript"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:175
-msgid ": is an invalid command.\n"
-msgstr ""
-
-#: 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: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:1160 src/dird/job.c:1164
-msgid "unknown source"
-msgstr ""
-
-#: 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: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: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: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:694 src/dird/ua_dotcmds.c:788
-#, c-format
-msgid "Unknown command: %s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
-msgid "Available daemons are: \n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
-msgid "Director"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:736
-msgid "Select daemon type to make die"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:762
-msgid "The Director will generate a deadlock.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:766
-msgid "The Director will segment fault.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:955
-msgid "Access to specified Client or FileSet not allowed.\n"
-msgstr ""
-
-#: 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:999
-msgid "query keyword not found.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1026
-#, c-format
-msgid "List MediaType failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1040
-#, c-format
-msgid "List Media failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1054
-#, c-format
-msgid "List Location failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/next_vol.c:166
-#, c-format
-msgid "Purging oldest volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/next_vol.c:172
-#, c-format
-msgid "Pruning oldest volume \"%s\"\n"
-msgstr ""
-
-#: 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:218
-#, c-format
-msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
-msgstr ""
-
-#: src/dird/next_vol.c:226
-#, c-format
-msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
-msgstr ""
-
-#: 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:243
-#, c-format
-msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
-msgstr ""
-
-#: 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:267
-#, c-format
-msgid "Catalog error updating volume \"%s\". ERR=%s"
-msgstr ""
-
-#: src/dird/next_vol.c:289
-msgid "volume has expired"
-msgstr ""
-
-#: 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:312
-msgid "and recycling of current volume failed"
-msgstr ""
-
-#: src/dird/next_vol.c:318
-msgid "but should be Append, Purged or Recycle"
-msgstr ""
-
-#: src/dird/next_vol.c:327
-msgid "volume has recycling disabled"
-msgstr ""
-
-#: 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: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:421
-#, c-format
-msgid "Unable to get Pool record: ERR=%s"
-msgstr ""
-
-#: 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:448
-#, c-format
-msgid "Failed to move Scratch Volume. ERR=%s\n"
-msgstr ""
-
-#: src/dird/next_vol.c:453
-#, c-format
-msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:120
-msgid "Add media to a pool"
-msgstr ""
-
-#: src/dird/ua_cmds.c:121
-msgid "Autodisplay console messages"
-msgstr ""
-
-#: src/dird/ua_cmds.c:122
-msgid "Automount after label"
-msgstr ""
-
-#: src/dird/ua_cmds.c:123
-msgid "Cancel a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:124
-msgid "Create DB Pool from resource"
-msgstr ""
-
-#: src/dird/ua_cmds.c:125
-msgid "Delete volume, pool or job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:126
-msgid "Disable a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:127
-msgid "Enable a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:128
-msgid "Performs FileSet estimate, listing gives full listing"
-msgstr ""
-
-#: src/dird/ua_cmds.c:131 src/dird/ua_cmds.c:155
-msgid "Terminate Bconsole session"
-msgstr ""
-
-#: src/dird/ua_cmds.c:132
-msgid "Non-interactive gui mode"
-msgstr ""
-
-#: src/dird/ua_cmds.c:133
-msgid "Print help on specific command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:138
-msgid "Label a tape"
-msgstr ""
-
-#: src/dird/ua_cmds.c:139
-msgid "List objects from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:142
-msgid "Full or long list like list command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:145
-msgid "Display pending messages"
-msgstr ""
-
-#: src/dird/ua_cmds.c:146
-msgid "Print current memory usage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:147
-msgid "Mount storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:150
-msgid "Prune expired records from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:153
-msgid "Purge records from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:154
-msgid "Python control commands"
-msgstr ""
-
-#: src/dird/ua_cmds.c:156
-msgid "Query catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:157
-msgid "Restore files"
-msgstr ""
-
-#: src/dird/ua_cmds.c:162
-msgid "Relabel a tape"
-msgstr ""
-
-#: src/dird/ua_cmds.c:165
-msgid "Release storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:166
-msgid "Reload conf file"
-msgstr ""
-
-#: src/dird/ua_cmds.c:167
-msgid "Run a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:171
-msgid "Report status"
-msgstr ""
-
-#: src/dird/ua_cmds.c:174
-msgid "Sets debug level"
-msgstr ""
-
-#: src/dird/ua_cmds.c:177
-msgid "Sets new client address -- if authorized"
-msgstr ""
-
-#: src/dird/ua_cmds.c:178
-msgid "Show resource records"
-msgstr ""
-
-#: src/dird/ua_cmds.c:181
-msgid "Use SQL to query catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:182
-msgid "Print current time"
-msgstr ""
-
-#: src/dird/ua_cmds.c:183
-msgid "Turn on/off trace to file"
-msgstr ""
-
-#: src/dird/ua_cmds.c:184
-msgid "Unmount storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:187
-msgid "Umount - for old-time Unix guys, see unmount"
-msgstr ""
-
-#: src/dird/ua_cmds.c:190
-msgid "Update volume, pool or stats"
-msgstr ""
-
-#: src/dird/ua_cmds.c:196
-msgid "Use catalog xxx"
-msgstr ""
-
-#: src/dird/ua_cmds.c:197
-msgid "Does variable expansion"
-msgstr ""
-
-#: src/dird/ua_cmds.c:198
-msgid "Print Director version"
-msgstr ""
-
-#: src/dird/ua_cmds.c:199
-msgid "Wait until no jobs are running"
-msgstr ""
-
-#: src/dird/ua_cmds.c:247
-#, c-format
-msgid "%s: is an invalid command.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:288
-msgid ""
-"You probably don't want to be using this command since it\n"
-"creates database records without labeling the Volumes.\n"
-"You probably want to use the \"label\" command.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:306
-#, c-format
-msgid "Pool already has maximum volumes=%d\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:307
-msgid "Enter new maximum (zero for unlimited): "
-msgstr ""
-
-#: 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:333
-#, c-format
-msgid "The number must be between 0 and %d\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:341
-msgid "Enter Volume name: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:345
-msgid "Enter base volume name: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
-msgid "Volume name too long.\n"
-msgstr ""
-
-#: 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:369
-msgid "Enter the starting number: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:374
-msgid "Start number must be greater than zero.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:385
-msgid "Enter slot (0 for none): "
-msgstr ""
-
-#: src/dird/ua_cmds.c:389
-msgid "InChanger? yes/no: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:414
-#, c-format
-msgid "%d Volumes created in pool %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
-msgid "Turn on or off? "
-msgstr ""
-
-#: 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: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:631
-#, c-format
-msgid ""
-"Error: Pool %s already exists.\n"
-"Use update to change it.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:642
-#, c-format
-msgid "Pool %s created.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:672
-msgid "Python interpreter restarted.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
-msgid "Nothing done.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "Client \"%s\" address set to %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:742
-#, c-format
-msgid "Job \"%s\" %sabled\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:920
-msgid "Enter new debug level: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:997
-msgid "All"
-msgstr ""
-
-#: src/dird/ua_cmds.c:998
-msgid "Select daemon type to set debug level"
-msgstr ""
-
-#: 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:1092
-msgid "Client name missing.\n"
-msgstr ""
-
-#: 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:1109
-msgid "Job name missing.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1118
-#, c-format
-msgid "Fileset \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1122
-#, c-format
-msgid "No authorization for FileSet \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1127
-msgid "Fileset name missing.\n"
-msgstr ""
-
-#: 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:1142
-msgid "Level value missing.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1149
-msgid "Invalid value for accurate. It must be yes or no.\n"
-msgstr ""
-
-#: 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:1227
-msgid "Error sending include list.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1232
-msgid "Error sending exclude list.\n"
-msgstr ""
-
-#: 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:1326
-msgid "Choose catalog item to delete"
-msgstr ""
-
-#: 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: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 "Jobid %s and associated records deleted from the catalog.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1484
-#, c-format
-msgid ""
-"\n"
-"This command will delete volume %s\n"
-"and all Jobs saved on that volume from the Catalog\n"
-msgstr ""
-
-#: 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:1504
-msgid "Can't list jobs on this volume\n"
-msgstr ""
-
-#: 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:1644
-#, c-format
-msgid "Using Catalog name=%s DB=%s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1712
-msgid "ERR: Can't open db\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1759
-msgid "Wait on mount timed out\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1769
-msgid "ERR: Job was not found\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1845
-msgid ""
-"  Command       Description\n"
-"  =======       ===========\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1849
-#, c-format
-msgid ""
-"  %-13s %s\n"
-"\n"
-"Arguments:\n"
-"\t%s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1854
-#, c-format
-msgid "  %-13s %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1858
-#, c-format
-msgid ""
-"\n"
-"Can't find %s command.\n"
-"\n"
-msgstr ""
-
-#: 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:1896 src/filed/status.c:85
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s %s\n"
-msgstr ""
-
-#: 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:2049
-#, c-format
-msgid "Could not open catalog database \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:2059
-#, c-format
-msgid "Using Catalog \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:74
-msgid "add dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:75
-msgid "change current directory"
-msgstr ""
-
-#: src/dird/ua_tree.c:76
-msgid "count marked files in and below the cd"
-msgstr ""
-
-#: src/dird/ua_tree.c:77
-msgid "delete dir/file to be restored recursively in dir"
-msgstr ""
-
-#: src/dird/ua_tree.c:78 src/dird/ua_tree.c:79
-msgid "long list current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:80
-msgid "leave file selection mode"
-msgstr ""
-
-#: src/dird/ua_tree.c:81
-msgid "estimate restore size"
-msgstr ""
-
-#: src/dird/ua_tree.c:82
-msgid "same as done command"
-msgstr ""
-
-#: src/dird/ua_tree.c:83
-msgid "find files, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:84 src/dird/ua_tree.c:97 src/dird/ua_tree.c:98
-msgid "print help"
-msgstr ""
-
-#: src/dird/ua_tree.c:85 src/dird/ua_tree.c:86
-msgid "list current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:87
-msgid "list subdir in current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:88
-msgid "list the marked files in and below the cd"
-msgstr ""
-
-#: src/dird/ua_tree.c:89
-msgid "list the marked files in"
-msgstr ""
-
-#: src/dird/ua_tree.c:90
-msgid "mark dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:91
-msgid "mark directory name to be restored (no files)"
-msgstr ""
-
-#: src/dird/ua_tree.c:92 src/dird/ua_tree.c:93
-msgid "print current working directory"
-msgstr ""
-
-#: src/dird/ua_tree.c:94
-msgid "unmark dir/file to be restored recursively in dir"
-msgstr ""
-
-#: src/dird/ua_tree.c:95
-msgid "unmark directory name only no recursion"
-msgstr ""
-
-#: src/dird/ua_tree.c:96
-msgid "quit and do not do restore"
-msgstr ""
-
-#: src/dird/ua_tree.c:118
-msgid ""
-"\n"
-"You are now entering file selection mode where you add (mark) and\n"
-"remove (unmark) files to be restored. No files are initially added, unless\n"
-"you used the \"all\" keyword on the command line.\n"
-"Enter \"done\" to leave this mode.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
-#, c-format
-msgid "cwd is: %s\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:138 src/dird/ua_tree.c:157
-#, c-format
-msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
-msgstr ""
-
-#: 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:387
-msgid "1 file marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:389
-#, c-format
-msgid "%s files marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:417
-msgid "No directories marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:419
-msgid "1 directory marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:421
-#, c-format
-msgid "%s directories marked.\n"
-msgstr ""
-
-#: 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:453
-msgid "No file specification given.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:674
-#, c-format
-msgid "Node %s has no children.\n"
-msgstr ""
-
-#: 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:778 src/stored/btape.c:2949
-#, c-format
-msgid ""
-"  Command    Description\n"
-"  =======    ===========\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:801
-msgid "Too few or too many arguments. Try using double quotes.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:814
-msgid "Invalid path given.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
-msgid "No files unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:864
-msgid "1 file unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:867
-#, c-format
-msgid "%s files unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
-msgid "No directories unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:897
-msgid "1 directory unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:899
-#, c-format
-msgid "%d directories unmarked.\n"
-msgstr ""
-
-#: 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:576
-#, c-format
-msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:581
-#, c-format
-msgid "   query_file=%s\n"
-msgstr ""
-
-#: 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:589
-#, c-format
-msgid "Console: name=%s SSL=%d\n"
-msgstr ""
-
-#: 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:599
-#, c-format
-msgid "Counter: name=%s min=%d max=%d\n"
-msgstr ""
-
-#: 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:616
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:629
-#, c-format
-msgid ""
-"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
-"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr="
-"%d\n"
-"      poolid=%s volname=%s MediaType=%s\n"
-msgstr ""
-
-#: 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: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:669
-#, c-format
-msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:670
-msgid "JobDefs"
-msgstr ""
-
-#: 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:680
-#, c-format
-msgid "     SpoolSize=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:683
-#, c-format
-msgid "     Accurate=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:686
-#, c-format
-msgid "     SelectionType=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:701
-#, c-format
-msgid "  --> Where=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:704
-#, c-format
-msgid "  --> RegexWhere=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:707
-#, c-format
-msgid "  --> Bootstrap=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:710
-#, c-format
-msgid "  --> WriteBootstrap=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:713
-#, c-format
-msgid "  --> PluginOptions=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:716
-#, c-format
-msgid "  --> MaxRunTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:719
-#, c-format
-msgid "  --> MaxWaitTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:722
-#, c-format
-msgid "  --> MaxStartDelay=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:725
-#, c-format
-msgid "  --> MaxRunSchedTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:737
-#, c-format
-msgid "  --> Base %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
-msgid " --> RunScript\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
-#, c-format
-msgid "  --> Command=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
-#, c-format
-msgid "  --> Target=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
-#, c-format
-msgid "  --> RunOnSuccess=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
-#, c-format
-msgid "  --> RunOnFailure=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
-#, c-format
-msgid "  --> FailJobOnError=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
-#, c-format
-msgid "  --> RunWhen=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:775
-#, c-format
-msgid "  --> Run=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:779
-#, c-format
-msgid "  --> SelectionPattern=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:793
-#, c-format
-msgid "FileSet: name=%s\n"
-msgstr ""
-
-#: 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:892
-#, c-format
-msgid "  --> Run Level=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:893
-msgid "      hour="
-msgstr ""
-
-#: src/dird/dird_conf.c:902
-msgid "      mday="
-msgstr ""
-
-#: src/dird/dird_conf.c:911
-msgid "      month="
-msgstr ""
-
-#: src/dird/dird_conf.c:920
-msgid "      wday="
-msgstr ""
-
-#: src/dird/dird_conf.c:929
-msgid "      wom="
-msgstr ""
-
-#: src/dird/dird_conf.c:938
-msgid "      woy="
-msgstr ""
-
-#: src/dird/dird_conf.c:947
-#, c-format
-msgid "      mins=%d\n"
-msgstr ""
-
-#: 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:974
-#, c-format
-msgid "Pool: name=%s PoolType=%s\n"
-msgstr ""
-
-#: 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:979
-#, c-format
-msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:982
-#, c-format
-msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:986
-#, c-format
-msgid "      CleaningPrefix=%s LabelType=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:988
-#, c-format
-msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:992
-#, c-format
-msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:996
-#, c-format
-msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1000
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1004
-#, c-format
-msgid "      NextPool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1007
-#, c-format
-msgid "      RecyclePool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1010
-#, c-format
-msgid "      ScratchPool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1013
-#, c-format
-msgid "      Catalog=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1033
-#, c-format
-msgid "Messages: name=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1035
-#, c-format
-msgid "      mailcmd=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1037
-#, c-format
-msgid "      opcmd=%s\n"
-msgstr ""
-
-#: 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: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: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
-#: src/qt-console/bat_conf.cpp:265
-#, c-format
-msgid "%s item is required in %s resource, but not found.\n"
-msgstr ""
-
-#: 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:1450
-#, c-format
-msgid "Cannot find Pool resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1461
-#, c-format
-msgid "Cannot find Console resource %s\n"
-msgstr ""
-
-#: 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:1474 src/stored/stored_conf.c:617
-#, c-format
-msgid "Cannot find Storage resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1483
-#, c-format
-msgid "Cannot find Job resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1533
-#, c-format
-msgid "Cannot find Counter resource %s\n"
-msgstr ""
-
-#: 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:1554
-#, c-format
-msgid "Cannot find Schedule resource %s\n"
-msgstr ""
-
-#: 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
-#, c-format
-msgid "Unknown resource type %d in save_resource.\n"
-msgstr ""
-
-#: 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: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
-#, c-format
-msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1647
-#, c-format
-msgid "Inserting %s res: %s index=%d pass=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1660
-#, c-format
-msgid "Expected one of: %s, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1732
-#, c-format
-msgid "Expected a Migration Job Type keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1758
-#, c-format
-msgid "Expected a Job Type keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1782
-#, c-format
-msgid "Expected a Job Level keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1802
-#, c-format
-msgid "Expected a Restore replacement option, got: %s"
-msgstr ""
-
-#: 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:1874 src/lib/parse_conf.c:478
-#, c-format
-msgid "Could not find config Resource %s referenced on line %d : %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:176
-#, c-format
-msgid "bget_dirmsg: unknown bnet signal %d\n"
-msgstr ""
-
-#: src/dird/getmsg.c:194 src/dird/getmsg.c:200 src/dird/getmsg.c:213
-#: src/dird/getmsg.c:247 src/dird/getmsg.c:269 src/dird/getmsg.c:295
-#, c-format
-msgid "Malformed message: %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:367
-#, c-format
-msgid "Bad response to %s command: wanted %s, got %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:372
-#, c-format
-msgid "Socket error on %s command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:148
-msgid "\"RegexWhere\" specification not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:155
-msgid "\"where\" specification not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:177
-msgid ""
-"No Restore Job Resource found in bacula-dir.conf.\n"
-"You must create at least one before running this command.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:194
-msgid "Restore not done.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:205
-msgid "Unable to construct a valid BSR. Cannot continue.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:209 src/dird/ua_restore.c:221
-msgid "No files selected to be restored.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:215
-msgid ""
-"\n"
-"1 file selected to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:217
-#, c-format
-msgid ""
-"\n"
-"%s files selected to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:236
-msgid "No Client resource found!\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:333
-msgid "The restore will use the following job(s) as Base\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:354
-#, c-format
-msgid "Missing value for keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:434
-msgid "List last 20 Jobs run"
-msgstr ""
-
-#: src/dird/ua_restore.c:435
-msgid "List Jobs where a given File is saved"
-msgstr ""
-
-#: src/dird/ua_restore.c:436
-msgid "Enter list of comma separated JobIds to select"
-msgstr ""
-
-#: src/dird/ua_restore.c:437
-msgid "Enter SQL list command"
-msgstr ""
-
-#: src/dird/ua_restore.c:438
-msgid "Select the most recent backup for a client"
-msgstr ""
-
-#: src/dird/ua_restore.c:439
-msgid "Select backup for a client before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:440
-msgid "Enter a list of files to restore"
-msgstr ""
-
-#: src/dird/ua_restore.c:441
-msgid "Enter a list of files to restore before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:442
-msgid "Find the JobIds of the most recent backup for a client"
-msgstr ""
-
-#: src/dird/ua_restore.c:443
-msgid "Find the JobIds for a backup for a client before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:444
-msgid "Enter a list of directories to restore for found JobIds"
-msgstr ""
-
-#: src/dird/ua_restore.c:445
-msgid "Select full restore to a specified Job date"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_restore.c:491
-#, c-format
-msgid "Unknown keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
-#, c-format
-msgid "Improper date format: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:560
-#, c-format
-msgid "Error: Pool resource \"%s\" access not allowed.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:576
-msgid ""
-"\n"
-"First you select one or more JobIds that contain files\n"
-"to be restored. You will be presented several methods\n"
-"of specifying the JobIds. Then you will be allowed to\n"
-"select which files from those JobIds are to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:589
-msgid "To select the JobIds, you have the following choices:\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:594
-msgid "Select item: "
-msgstr ""
-
-#: src/dird/ua_restore.c:599 src/dird/ua_restore.c:634
-msgid "SQL query not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:612
-msgid "Enter Filename (no path):"
-msgstr ""
-
-#: src/dird/ua_restore.c:627 src/dird/ua_restore.c:735
-msgid "Enter JobId(s), comma separated, to restore: "
-msgstr ""
-
-#: src/dird/ua_restore.c:637
-msgid "Enter SQL list command: "
-msgstr ""
-
-#: src/dird/ua_restore.c:671 src/dird/ua_restore.c:694
-msgid ""
-"Enter file names with paths, or < to enter a filename\n"
-"containing a list of file names with paths, and terminate\n"
-"them with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:675 src/dird/ua_restore.c:698
-msgid "Enter full filename: "
-msgstr ""
-
-#: src/dird/ua_restore.c:733
-#, c-format
-msgid "You have already selected the following JobIds: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:751
-msgid ""
-"Enter full directory names or start the name\n"
-"with a < to indicate it is a filename containing a list\n"
-"of directories and terminate them with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:755
-msgid "Enter directory name: "
-msgstr ""
-
-#: src/dird/ua_restore.c:771
-msgid "Enter JobId to get the state to restore: "
-msgstr ""
-
-#: src/dird/ua_restore.c:784
-#, c-format
-msgid "Selecting jobs to build the Full state at %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:810
-msgid "Invalid JobId in list.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:829
-#, c-format
-msgid "Access to JobId=%s (Job \"%s\") not authorized. Not selected.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:842
-msgid "No Jobs selected.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:847
-#, c-format
-msgid "You have selected the following JobIds: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:849
-#, c-format
-msgid "You have selected the following JobId: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:859
-msgid ""
-"The restored files will the most current backup\n"
-"BEFORE the date you specify below.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:862
-msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
-msgstr ""
-
-#: src/dird/ua_restore.c:868
-msgid "Improper date format.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:889
-#, c-format
-msgid "Cannot open file %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:897 src/dird/ua_restore.c:901
-#, c-format
-msgid "Error occurred on line %d of file \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:945 src/dird/ua_restore.c:973
-#, c-format
-msgid "No database record found for: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:961
-msgid "No JobId specified cannot continue.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:994
-#, c-format
-msgid "No table found: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1052
-msgid ""
-"\n"
-"\n"
-"For one or more of the JobIds selected, no files were found,\n"
-"so file selection is not possible.\n"
-"Most likely your retention policy pruned the files.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1055
-msgid ""
-"\n"
-"Do you want to restore all the files? (yes|no): "
-msgstr ""
-
-#: src/dird/ua_restore.c:1058
-msgid ""
-"\n"
-"Regexp matching files to restore? (empty to abort): "
-msgstr ""
-
-#: src/dird/ua_restore.c:1074
-#, c-format
-msgid "Regex compile error: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1137
-#, c-format
-msgid ""
-"\n"
-"Building directory tree for JobId(s) %s ...  "
-msgstr ""
-
-#: src/dird/ua_restore.c:1207
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree and marked for extraction.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1210
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1285
-#, c-format
-msgid "Error getting FileSet \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1290
-#, c-format
-msgid "FileSet argument: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1302
-#, c-format
-msgid "No FileSet found for client \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1308
-#, c-format
-msgid "Error getting FileSet record: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1309
-msgid ""
-"This probably means you modified the FileSet.\n"
-"Continuing anyway.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1324
-#, c-format
-msgid "Pool \"%s\" not found, using any pool.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1351 src/dird/ua_restore.c:1367
-#, c-format
-msgid "No Full backup before %s found.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1396
-msgid "No jobs found.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1517
-#, c-format
-msgid "Warning default storage overridden by \"%s\" on command line.\n"
-msgstr ""
-
-#: 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:1546
-#, c-format
-msgid ""
-"\n"
-"Unable to find Storage resource for\n"
-"MediaType \"%s\", needed by the Jobs you selected.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:95
-msgid "Client: "
-msgstr ""
-
-#: src/dird/fd_cmds.c:137
-#, c-format
-msgid "File daemon \"%s\" rejected Job command: %s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:150
-#, c-format
-msgid "Error updating Client record. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:155
-#, c-format
-msgid "FD gave bad response to JobId command: %s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:184 src/dird/fd_cmds.c:272
-msgid ", since="
-msgstr ""
-
-#: src/dird/fd_cmds.c:249
-msgid "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:250 src/dird/fd_cmds.c:256 src/dird/fd_cmds.c:265
-#, c-format
-msgid " (upgraded from %s)"
-msgstr ""
-
-#: src/dird/fd_cmds.c:255
-msgid ""
-"No prior or suitable Differential backup found in catalog. Doing "
-"Differential backup.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:263
-#, c-format
-msgid "Prior failed job found in catalog. Upgrading to %s.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:328
-#, c-format
-msgid "Unimplemented backup level %d %c\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:401
-msgid ""
-"FD compression disabled for this Job because AllowCompress=No in Storage "
-"resource.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:500 src/filed/job.c:854
-#, c-format
-msgid "Cannot run program: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:511 src/dird/fd_cmds.c:536 src/dird/fd_cmds.c:550
-msgid ">filed: write error on socket\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:517
-#, c-format
-msgid "Error running program: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:526
-#, c-format
-msgid "Cannot open included file: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:672
-#, c-format
-msgid "Client \"%s\" RunScript failed.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:695
-#, c-format
-msgid ""
-"Client \"%s\" may not be used to restore this job. Please upgrade your "
-"client.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:770
-msgid "RestoreObject failed.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:806
-#, c-format
-msgid ""
-"<filed: bad attributes, expected 3 fields got %d\n"
-"msglen=%d msg=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/fd_cmds.c:862
-#, c-format
-msgid "%s index %d not same as attributes %d\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:876
-#, c-format
-msgid "<filed: Network error getting attributes. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_label.c:104
-msgid "Negative numbers not permitted\n"
-msgstr ""
-
-#: 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/lib/sellist.c:81
-msgid "Range start is not an integer.\n"
-msgstr ""
-
-#: 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/lib/sellist.c:94
-msgid "Input value is not an integer.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:133
-msgid "Values must be be greater than zero.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:137
-msgid "Slot too large.\n"
-msgstr ""
-
-#: 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: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:219 src/dird/ua_label.c:542
-msgid "No Volumes found to label, or no barcodes.\n"
-msgstr ""
-
-#: 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:267
-#, c-format
-msgid "No VolName for Slot=%d InChanger set to zero.\n"
-msgstr ""
-
-#: 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:292
-#, c-format
-msgid "Catalog record for Volume \"%s\" is up to date.\n"
-msgstr ""
-
-#: 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:394
-#, c-format
-msgid ""
-"Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
-"relabeling.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:410
-msgid "Enter new Volume name: "
-msgstr ""
-
-#: src/dird/ua_label.c:425
-#, c-format
-msgid "Media record for new Volume \"%s\" already exists.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:443
-msgid "Enter slot (0 or Enter for none): "
-msgstr ""
-
-#: src/dird/ua_label.c:471
-#, c-format
-msgid "Delete of Volume \"%s\" failed. ERR=%s"
-msgstr ""
-
-#: src/dird/ua_label.c:474
-#, c-format
-msgid "Old volume \"%s\" deleted from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:485
-#, c-format
-msgid "Requesting to mount %s ...\n"
-msgstr ""
-
-#: src/dird/ua_label.c:507
-msgid "Do not forget to mount the drive!!!\n"
-msgstr ""
-
-#: src/dird/ua_label.c:547
-msgid ""
-"The following Volumes will be labeled:\n"
-"Slot  Volume\n"
-"==============\n"
-msgstr ""
-
-#: src/dird/ua_label.c:556
-msgid "Do you want to label these Volumes? (yes|no): "
-msgstr ""
-
-#: 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:582
-#, c-format
-msgid "Error setting InChanger: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_label.c:605
-#, c-format
-msgid "Maximum pool Volumes=%d reached.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:613
-#, c-format
-msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:620
-#, c-format
-msgid "Catalog error on cleaning tape: %s"
-msgstr ""
-
-#: src/dird/ua_label.c:656
-#, c-format
-msgid "Illegal character \"%c\" in a volume name.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:703
-#, c-format
-msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
-msgstr ""
-
-#: src/dird/ua_label.c:710
-#, c-format
-msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
-msgstr ""
-
-#: 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:764
-#, c-format
-msgid "Label command failed for Volume %s.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:802
-msgid "Could not open SD socket.\n"
-msgstr ""
-
-#: 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:893
-#, c-format
-msgid "Invalid Volume name: %s\n"
-msgstr ""
-
-#: src/dird/ua_label.c:987
-#, c-format
-msgid "Device \"%s\" has %d slots.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1033
-#, c-format
-msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1247
-msgid "No Volumes found, or no barcodes.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1250
-msgid ""
-" Slot |   Volume Name    |   Status  |     Media Type       |      "
-"Pool          |\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1251
-msgid ""
-"------+------------------+-----------+----------------------"
-"+--------------------|\n"
-msgstr ""
-
-#: src/dird/scheduler.c:112
-#, c-format
-msgid "Job %s not found\n"
-msgstr ""
-
-#: src/dird/scheduler.c:136
-msgid "Walk queue"
-msgstr ""
-
-#: src/dird/scheduler.c:146
-msgid "Dequeued job"
-msgstr ""
-
-#: src/dird/scheduler.c:149
-msgid "Scheduler logic error\n"
-msgstr ""
-
-#: src/dird/scheduler.c:190
-msgid "Run job"
-msgstr ""
-
-#: src/dird/scheduler.c:223
-msgid "run override"
-msgstr ""
-
-#: src/dird/scheduler.c:413
-msgid "Inserted job"
-msgstr ""
-
-#: src/dird/scheduler.c:421
-msgid "Appended job"
-msgstr ""
-
-#: src/dird/scheduler.c:425
-msgid "Run queue"
-msgstr ""
-
-#: src/dird/run_conf.c:208
-#, c-format
-msgid "Expected an equals, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:221 src/dird/run_conf.c:233 src/dird/run_conf.c:327
-#, c-format
-msgid "Expect a YES or NO, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:247
-#, c-format
-msgid "Job level field: %s not found in run record"
-msgstr ""
-
-#: src/dird/run_conf.c:265
-#, c-format
-msgid "Could not find specified Pool Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:290
-#, c-format
-msgid "Could not find specified Storage Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:302
-#, c-format
-msgid "Could not find specified Messages Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:312 src/lib/parse_conf.c:736 src/lib/parse_conf.c:742
-#, c-format
-msgid "expected a time period, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:331
-#, c-format
-msgid "Expected a keyword name, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:370
-msgid "Day number out of range (1-31)"
-msgstr ""
-
-#: src/dird/run_conf.c:387 src/dird/run_conf.c:542
-msgid "Week number out of range (0-53)"
-msgstr ""
-
-#: src/dird/run_conf.c:403
-#, c-format
-msgid "Job type field: %s in run record not found"
-msgstr ""
-
-#: src/dird/run_conf.c:410
-#, c-format
-msgid "Unexpected token: %d:%s"
-msgstr ""
-
-#: src/dird/run_conf.c:454
-msgid "Time must be preceded by keyword AT."
-msgstr ""
-
-#: src/dird/run_conf.c:463
-msgid "Time logic error.\n"
-msgstr ""
-
-#: src/dird/run_conf.c:478 src/dird/run_conf.c:497
-msgid "Bad time specification."
-msgstr ""
-
-#: src/dird/run_conf.c:511
-msgid "Range logic error.\n"
-msgstr ""
-
-#: src/dird/run_conf.c:520
-msgid "Bad day range specification."
-msgstr ""
-
-#: src/dird/run_conf.c:567
-msgid "Invalid month, week or position day range"
-msgstr ""
-
-#: src/dird/run_conf.c:582
-msgid "Invalid month, weekday or position range"
-msgstr ""
-
-#: src/dird/run_conf.c:641
-msgid "Unexpected run state\n"
-msgstr ""
-
-#: src/dird/ua_update.c:97
-msgid "Update choice:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:98
-msgid "Volume parameters"
-msgstr ""
-
-#: src/dird/ua_update.c:99
-msgid "Pool from resource"
-msgstr ""
-
-#: src/dird/ua_update.c:100
-msgid "Slots from autochanger"
-msgstr ""
-
-#: src/dird/ua_update.c:101
-msgid "Long term statistics"
-msgstr ""
-
-#: src/dird/ua_update.c:102
-msgid "item"
-msgstr ""
-
-#: src/dird/ua_update.c:102
-msgid "Choose catalog item to update"
-msgstr ""
-
-#: src/dird/ua_update.c:145
-#, c-format
-msgid "Invalid VolStatus specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:154
-#, c-format
-msgid "New Volume status is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:164
-#, c-format
-msgid "Invalid retention period specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:172
-#, c-format
-msgid "New retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:183
-#, c-format
-msgid "Invalid use duration specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:191
-#, c-format
-msgid "New use duration is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:205
-#, c-format
-msgid "New max jobs is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:218
-#, c-format
-msgid "New max files is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:229
-#, c-format
-msgid "Invalid max. bytes specification: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:237
-#, c-format
-msgid "New Max bytes is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:248 src/dird/ua_update.c:268
-msgid "Invalid value. It must be yes or no.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:256
-#, c-format
-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: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: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 ""
-
-#: src/dird/ua_update.c:276
-#, c-format
-msgid "New InChanger flag is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:294
-#, c-format
-msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
-msgstr ""
-
-#: 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:306
-#, c-format
-msgid "New Slot is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:331
-#, c-format
-msgid "New Pool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:374
-#, c-format
-msgid "New RecyclePool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:394
-#, c-format
-msgid "Error updating Volume record: ERR=%s"
-msgstr ""
-
-#: 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:451
-#, c-format
-msgid "Error updating Volume records: ERR=%s"
-msgstr ""
-
-#: 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:443
-#, c-format
-msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:469
-#, c-format
-msgid "Error updating media record Enabled: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_update.c:472
-#, c-format
-msgid "New Enabled is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:487
-#, c-format
-msgid "Error updating media record ActionOnPurge: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_update.c:490
-#, c-format
-msgid "New ActionOnPurge is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
-msgid "Parameters to modify:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:606
-msgid "Volume Status"
-msgstr ""
-
-#: src/dird/ua_update.c:607
-msgid "Volume Retention Period"
-msgstr ""
-
-#: src/dird/ua_update.c:608
-msgid "Volume Use Duration"
-msgstr ""
-
-#: src/dird/ua_update.c:609
-msgid "Maximum Volume Jobs"
-msgstr ""
-
-#: src/dird/ua_update.c:610
-msgid "Maximum Volume Files"
-msgstr ""
-
-#: src/dird/ua_update.c:611
-msgid "Maximum Volume Bytes"
-msgstr ""
-
-#: src/dird/ua_update.c:612
-msgid "Recycle Flag"
-msgstr ""
-
-#: src/dird/ua_update.c:613
-msgid "Slot"
-msgstr ""
-
-#: src/dird/ua_update.c:614
-msgid "InChanger Flag"
-msgstr ""
-
-#: src/dird/ua_update.c:615
-msgid "Volume Files"
-msgstr ""
-
-#: src/dird/ua_update.c:617
-msgid "Volume from Pool"
-msgstr ""
-
-#: src/dird/ua_update.c:618
-msgid "All Volumes from Pool"
-msgstr ""
-
-#: src/dird/ua_update.c:619
-msgid "All Volumes from all Pools"
-msgstr ""
-
-#: src/dird/ua_update.c:620
-msgid "Enabled"
-msgstr ""
-
-#: src/dird/ua_update.c:621
-msgid "RecyclePool"
-msgstr ""
-
-#: src/dird/ua_update.c:622
-msgid "Action On Purge"
-msgstr ""
-
-#: src/dird/ua_update.c:623
-msgid "Done"
-msgstr ""
-
-#: 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:632
-#, c-format
-msgid "Updating Volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_update.c:637
-#, c-format
-msgid "Current Volume status is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:638
-msgid "Possible Values are:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:649
-msgid "Choose new Volume Status"
-msgstr ""
-
-#: src/dird/ua_update.c:655
-#, c-format
-msgid "Current retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:657
-msgid "Enter Volume Retention period: "
-msgstr ""
-
-#: src/dird/ua_update.c:664
-#, c-format
-msgid "Current use duration is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:666
-msgid "Enter Volume Use Duration: "
-msgstr ""
-
-#: src/dird/ua_update.c:673
-#, c-format
-msgid "Current max jobs is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:674
-msgid "Enter new Maximum Jobs: "
-msgstr ""
-
-#: src/dird/ua_update.c:681
-#, c-format
-msgid "Current max files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:682
-msgid "Enter new Maximum Files: "
-msgstr ""
-
-#: src/dird/ua_update.c:689
-#, c-format
-msgid "Current value is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:690
-msgid "Enter new Maximum Bytes: "
-msgstr ""
-
-#: src/dird/ua_update.c:698
-#, c-format
-msgid "Current recycle flag is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:700
-msgid "Enter new Recycle status: "
-msgstr ""
-
-#: src/dird/ua_update.c:707
-#, c-format
-msgid "Current Slot is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:708
-msgid "Enter new Slot: "
-msgstr ""
-
-#: src/dird/ua_update.c:715
-#, c-format
-msgid "Current InChanger flag is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:716
-#, c-format
-msgid "Set InChanger flag for Volume \"%s\": yes/no: "
-msgstr ""
-
-#: src/dird/ua_update.c:730
-#, c-format
-msgid "New InChanger flag is: %d\n"
-msgstr ""
-
-#: 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:739
-#, c-format
-msgid "Current Volume Files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:740
-msgid "Enter new number of Files for Volume: "
-msgstr ""
-
-#: src/dird/ua_update.c:745
-msgid "Normally, you should only increase Volume Files by one!\n"
-msgstr ""
-
-#: src/dird/ua_update.c:746
-msgid "Increase Volume Files? (yes/no): "
-msgstr ""
-
-#: src/dird/ua_update.c:756
-#, c-format
-msgid "New Volume Files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:768
-#, c-format
-msgid "Current Pool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:769
-msgid "Enter new Pool name: "
-msgstr ""
-
-#: src/dird/ua_update.c:790
-#, c-format
-msgid "Current Enabled is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:791
-msgid "Enter new Enabled: "
-msgstr ""
-
-#: src/dird/ua_update.c:810
-#, c-format
-msgid "Current RecyclePool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:812
-msgid "No current RecyclePool\n"
-msgstr ""
-
-#: src/dird/ua_update.c:822
-#, c-format
-msgid "Current ActionOnPurge is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:824
-msgid "Enter new ActionOnPurge (one of: Truncate, None): "
-msgstr ""
-
-#: src/dird/ua_update.c:832
-msgid "Selection terminated.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:852
-#, c-format
-msgid "Updating %i job(s).\n"
-msgstr ""
-
-#: src/dird/ua_update.c:884
-#, c-format
-msgid "db_update_pool_record returned %d. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:891
-msgid "Pool DB record updated from resource.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:918
-msgid "Expect JobId keyword, not found.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:943
-msgid "Neither Client nor StartTime specified.\n"
-msgstr ""
-
-#: src/dird/migrate.c:149 src/dird/migrate.c:163
-#, c-format
-msgid "No previous Job found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:155
-msgid "Create bootstrap file failed.\n"
-msgstr ""
-
-#: src/dird/migrate.c:165
-#, c-format
-msgid "Previous Job has no data to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:182
-#, c-format
-msgid "Job resource not found for \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:186
-#, c-format
-msgid "Previous Job resource not found for \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:203
-msgid "setup job failed.\n"
-msgstr ""
-
-#: src/dird/migrate.c:258
-#, c-format
-msgid "Pool for JobId %s not in database. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:266
-#, c-format
-msgid "Pool resource \"%s\" not found.\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/migrate.c:327
-#, c-format
-msgid "JobId %s already %s probably by another Job. %s stopped.\n"
-msgstr ""
-
-#: src/dird/migrate.c:337
-#, c-format
-msgid "Start %s JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:712
-#, c-format
-msgid "No %s SQL selection pattern specified.\n"
-msgstr ""
-
-#: 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: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:777 src/dird/migrate.c:866 src/dird/migrate.c:886
-msgid "Invalid JobId found.\n"
-msgstr ""
-
-#: src/dird/migrate.c:837
-#, c-format
-msgid "Unknown %s Selection Type.\n"
-msgstr ""
-
-#: 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:852
-#, c-format
-msgid "The following %u JobId%s chosen to be %s: %s\n"
-msgstr ""
-
-#: src/dird/migrate.c:853
-msgid " was"
-msgstr ""
-
-#: src/dird/migrate.c:853
-msgid "s were"
-msgstr ""
-
-#: src/dird/migrate.c:905
-#, c-format
-msgid "%s using JobId=%s Job=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:939
-msgid "Could not start migration job.\n"
-msgstr ""
-
-#: src/dird/migrate.c:941
-#, c-format
-msgid "%s JobId %d started.\n"
-msgstr ""
-
-#: src/dird/migrate.c:960
-#, c-format
-msgid "No %s found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:964
-#, c-format
-msgid "SQL error. Expected 1 MediaId got %d\n"
-msgstr ""
-
-#: src/dird/migrate.c:993 src/dird/migrate.c:1123
-#, c-format
-msgid "No %ss found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1015
-msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
-msgstr ""
-
-#: src/dird/migrate.c:1024
-#, c-format
-msgid "SQL to get uncopied jobs failed. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1047
-#, c-format
-msgid "No %s %s selection pattern specified.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1058
-#, c-format
-msgid "SQL to get %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1063
-#, c-format
-msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1101
-#, c-format
-msgid "Regex pattern matched no Jobs to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1265
-#, c-format
-msgid "%s OK -- with warnings"
-msgstr ""
-
-#: src/dird/migrate.c:1267
-#, c-format
-msgid "%s OK"
-msgstr ""
-
-#: src/dird/migrate.c:1272
-#, c-format
-msgid "*** %s Error ***"
-msgstr ""
-
-#: src/dird/migrate.c:1282
-#, c-format
-msgid "%s Canceled"
-msgstr ""
-
-#: src/dird/migrate.c:1291
-#, c-format
-msgid "Inappropriate %s term code"
-msgstr ""
-
-#: src/dird/migrate.c:1301
-#, c-format
-msgid "%s -- no files to %s"
-msgstr ""
-
-#: src/dird/migrate.c:1316
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  Prev Backup JobId:      %s\n"
-"  Prev Backup Job:        %s\n"
-"  New Backup JobId:       %s\n"
-"  Current JobId:          %s\n"
-"  Current Job:            %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Read Pool:              \"%s\" (From %s)\n"
-"  Read Storage:           \"%s\" (From %s)\n"
-"  Write Pool:             \"%s\" (From %s)\n"
-"  Write Storage:          \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/migrate.c:1427
-#, c-format
-msgid "No Next Pool specification found in Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:1433
-#, c-format
-msgid "No Storage specification found in Next Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:1439
-msgid "Storage from Pool's NextPool resource"
-msgstr ""
-
-#: src/dird/ua_prune.c:127
-msgid "Choose item to prune"
-msgstr ""
-
-#: src/dird/ua_prune.c:175
-#, c-format
-msgid "Cannot prune Volume \"%s\" because it is archived.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:217
-msgid "Pruned Jobs from JobHisto catalog.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:305
-msgid "Begin pruning Files.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:320
-msgid "No Files found to prune.\n"
-msgstr ""
-
-#: 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:489
-#, c-format
-msgid "Begin pruning Jobs older than %s.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:600
-#, c-format
-msgid "Pruned %d %s for client %s from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:601
-msgid "Jobs"
-msgstr ""
-
-#: src/dird/ua_prune.c:603
-msgid "No Jobs found to prune.\n"
-msgstr ""
-
-#: src/dird/autoprune.c:75
-msgid ""
-"End auto prune.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_run.c:154
-msgid "OK to run? (yes/mod/no): "
-msgstr ""
-
-#: src/dird/ua_run.c:193
-msgid "Job failed.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:196
-#, c-format
-msgid "Job queued. JobId=%s\n"
-msgstr ""
-
-#: 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:223
-msgid "Level"
-msgstr ""
-
-#: src/dird/ua_run.c:228
-msgid "Restore Client"
-msgstr ""
-
-#: 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: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:240
-msgid "Verify Job"
-msgstr ""
-
-#: 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: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:245
-msgid "File Relocation"
-msgstr ""
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:1907
-#: src/wx-console/wxbrestorepanel.cpp:1908
-#: src/wx-console/wxbrestorepanel.cpp:1909
-msgid "Replace"
-msgstr ""
-
-#: src/dird/ua_run.c:247
-msgid "JobId"
-msgstr ""
-
-#: src/dird/ua_run.c:250
-msgid "Plugin Options"
-msgstr ""
-
-#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
-msgid "user selection"
-msgstr ""
-
-#: 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:301 src/dird/ua_run.c:477
-msgid "Invalid time, using current time.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:308
-msgid "Enter new Priority: "
-msgstr ""
-
-#: src/dird/ua_run.c:312
-msgid "Priority must be a positive integer.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:333
-msgid "Please enter the Bootstrap file name: "
-msgstr ""
-
-#: src/dird/ua_run.c:345
-#, c-format
-msgid "Warning cannot open %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:364
-msgid "Please enter the full path prefix for restore (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:386
-msgid "Replace:\n"
-msgstr ""
-
-#: src/dird/ua_run.c:390
-msgid "Select replace option"
-msgstr ""
-
-#: 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:406
-msgid "Please Plugin Options string: "
-msgstr ""
-
-#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
-msgid "User input"
-msgstr ""
-
-#: src/dird/ua_run.c:507
-#, c-format
-msgid "Invalid replace option: %s\n"
-msgstr ""
-
-#: 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:592
-msgid "This will replace your current Where value\n"
-msgstr ""
-
-#: src/dird/ua_run.c:593
-msgid "Strip prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:594
-msgid "Add prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:595
-msgid "Add file suffix"
-msgstr ""
-
-#: src/dird/ua_run.c:596
-msgid "Enter a regexp"
-msgstr ""
-
-#: src/dird/ua_run.c:597
-msgid "Test filename manipulation"
-msgstr ""
-
-#: src/dird/ua_run.c:598
-msgid "Use this ?"
-msgstr ""
-
-#: src/dird/ua_run.c:603
-msgid "Please enter the path prefix to strip: "
-msgstr ""
-
-#: src/dird/ua_run.c:611
-msgid "Please enter the path prefix to add (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:622
-msgid "Please enter the file suffix to add: "
-msgstr ""
-
-#: src/dird/ua_run.c:629
-msgid "Please enter a valid regexp (!from!to!): "
-msgstr ""
-
-#: src/dird/ua_run.c:642
-#, c-format
-msgid "regexwhere=%s\n"
-msgstr ""
-
-#: 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:655
-msgid "Cannot use your regexp\n"
-msgstr ""
-
-#: src/dird/ua_run.c:658
-msgid "Enter a period (.) to stop this test\n"
-msgstr ""
-
-#: src/dird/ua_run.c:659
-msgid "Please enter filename to test: "
-msgstr ""
-
-#: src/dird/ua_run.c:661
-#, c-format
-msgid "%s -> %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:705
-msgid "Cannot use your regexp.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
-msgid "Levels:\n"
-msgstr ""
-
-#: 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:721 src/stored/status.c:668 src/lib/util.c:429
-#: src/filed/status.c:522
-msgid "Incremental"
-msgstr ""
-
-#: 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:723 src/stored/status.c:674 src/lib/util.c:435
-#: src/filed/status.c:528
-msgid "Since"
-msgstr ""
-
-#: src/dird/ua_run.c:724
-msgid "VirtualFull"
-msgstr ""
-
-#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
-msgid "Select level"
-msgstr ""
-
-#: src/dird/ua_run.c:749
-msgid "Initialize Catalog"
-msgstr ""
-
-#: 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:751 src/lib/util.c:444
-msgid "Verify Volume to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:752 src/lib/util.c:447
-msgid "Verify Disk to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:753
-msgid "Verify Volume Data (not yet implemented)"
-msgstr ""
-
-#: src/dird/ua_run.c:774
-msgid "Level not appropriate for this Job. Cannot be changed.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:805
-#, c-format
-msgid ""
-"Run Admin Job\n"
-"JobName:  %s\n"
-"FileSet:  %s\n"
-"Client:   %s\n"
-"Storage:  %s\n"
-"When:     %s\n"
-"Priority: %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:849
-#, c-format
-msgid ""
-"Run Backup job\n"
-"JobName:  %s\n"
-"Level:    %s\n"
-"Client:   %s\n"
-"FileSet:  %s\n"
-"Pool:     %s (From %s)\n"
-"Storage:  %s (From %s)\n"
-"When:     %s\n"
-"Priority: %d\n"
-"%s%s%s"
-msgstr ""
-
-#: 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:919
-#, c-format
-msgid ""
-"Run Verify Job\n"
-"JobName:     %s\n"
-"Level:       %s\n"
-"Client:      %s\n"
-"FileSet:     %s\n"
-"Pool:        %s (From %s)\n"
-"Storage:     %s (From %s)\n"
-"Verify Job:  %s\n"
-"Verify List: %s\n"
-"When:        %s\n"
-"Priority:    %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:948
-msgid "Please enter a JobId for restore: "
-msgstr ""
-
-#: src/dird/ua_run.c:988
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"RegexWhere:      %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1044
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"Where:           %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1075
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:    %s\n"
-"Bootstrap:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1083
-#, c-format
-msgid "RegexWhere: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1086
-#, c-format
-msgid "Where:      %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1090
-#, c-format
-msgid ""
-"Replace:         %s\n"
-"Client:          %s\n"
-"Storage:         %s\n"
-"JobId:           %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1145
-msgid "Run Copy job\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1147
-msgid "Run Migration job\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1176
-#, c-format
-msgid "Unknown Job Type=%d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1245
-#, c-format
-msgid "Value missing for keyword %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1252
-msgid "Job name specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1260
-msgid "JobId specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
-msgid "Client specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1277
-msgid "FileSet specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1285
-msgid "Level specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1294
-msgid "Storage specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1302
-msgid "RegexWhere or Where specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1307
-msgid "No authorization for \"regexwhere\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1314
-msgid "Where or RegexWhere specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1319
-msgid "No authoriztion for \"where\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1326
-msgid "Bootstrap specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1334
-msgid "Replace specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1342
-msgid "When specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1350
-msgid "Priority specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1355
-msgid "Priority must be positive nonzero setting it to 10.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1365
-msgid "Verify Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1393
-msgid "Migration Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1401
-msgid "Pool specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1417
-msgid "Restore Client specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1424
-msgid "Plugin Options not yet implemented.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1427
-msgid "Plugin Options specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1432
-msgid "No authoriztion for \"PluginOptions\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1439
-msgid "Spool flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1446
-msgid "Invalid spooldata flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1455
-msgid "IgnoreDuplicateCheck flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1462
-msgid "Invalid ignoreduplicatecheck flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1467
-msgid "Accurate flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1474
-msgid "Invalid accurate flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1495
-#, c-format
-msgid "Invalid keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1510
-#, c-format
-msgid "Catalog \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1514
-#, c-format
-msgid "No authorization. Catalog \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1525
-#, c-format
-msgid "Job \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1532
-msgid "A job name must be specified.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1538
-#, c-format
-msgid "No authorization. Job \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1546
-#, c-format
-msgid "Pool \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1556
-#, c-format
-msgid "No authorization. Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1566
-#, c-format
-msgid "Storage \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1575 src/dird/job.c:1245
-msgid "No storage specified.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1578
-#, c-format
-msgid "No authorization. Storage \"%s\".\n"
-msgstr ""
-
-#: 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:1608
-#, c-format
-msgid "Restore Client \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1627
-#, c-format
-msgid "FileSet \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1636
-#, c-format
-msgid "No authorization. FileSet \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1644
-#, c-format
-msgid "Verify Job \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1654
-#, c-format
-msgid "Migration Job \"%s\" not found.\n"
-msgstr ""
-
-#: 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: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: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: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: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 ""
-
-#: src/dird/backup.c:96
-msgid "No Storage specification found in Job or Pool.\n"
-msgstr ""
-
-#: src/dird/backup.c:256
-#, c-format
-msgid "Using BaseJobId(s): %s\n"
-msgstr ""
-
-#: src/dird/backup.c:266
-msgid "Cannot find previous jobids.\n"
-msgstr ""
-
-#: src/dird/backup.c:275
-msgid "Sending Accurate information.\n"
-msgstr ""
-
-#: src/dird/backup.c:328
-#, c-format
-msgid "Start Backup JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/backup.c:521
-#, c-format
-msgid "Unexpected Client Job message: %s\n"
-msgstr ""
-
-#: src/dird/backup.c:534
-#, c-format
-msgid "Network error with FD during %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/backup.c:569
-msgid "No Job status returned from FD.\n"
-msgstr ""
-
-#: src/dird/backup.c:657
-msgid "Backup failed -- incomplete"
-msgstr ""
-
-#: src/dird/backup.c:730
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  FD Files Written:       %s\n"
-"  SD Files Written:       %s\n"
-"  FD Bytes Written:       %s (%sB)\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Software Compression:   %s\n"
-"%s  VSS:                    %s\n"
-"  Encryption:             %s\n"
-"  Accurate:               %s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  Non-fatal FD errors:    %d\n"
-"  SD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: 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:868
-#, c-format
-msgid ""
-"Could not open WriteBootstrap file:\n"
-"%s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/restore.c:137 src/dird/msgchan.c:476
-#, c-format
-msgid "Could not open bootstrap file %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/restore.c:185 src/dird/restore.c:276
-#, c-format
-msgid "Could not get storage resource '%s'.\n"
-msgstr ""
-
-#: src/dird/restore.c:314
-#, c-format
-msgid "Could not acquire read storage lock for \"%s\""
-msgstr ""
-
-#: 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:513
-#, c-format
-msgid "Start Restore Job %s\n"
-msgstr ""
-
-#: src/dird/restore.c:564
-msgid "Restore OK -- warning file count mismatch"
-msgstr ""
-
-#: src/dird/restore.c:566
-msgid "Restore OK"
-msgstr ""
-
-#: src/dird/restore.c:570
-msgid "Restore OK -- with warnings"
-msgstr ""
-
-#: src/dird/restore.c:574
-msgid "*** Restore Error ***"
-msgstr ""
-
-#: src/dird/restore.c:584
-msgid "Restore Canceled"
-msgstr ""
-
-#: src/dird/restore.c:611
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Restore Client:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Restored:         %s\n"
-"  Bytes Restored:         %s\n"
-"  Rate:                   %.1f KB/s\n"
-"  FD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_status.c:174
-msgid "Status available for:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:180
-msgid "Select daemon type for status"
-msgstr ""
-
-#: src/dird/ua_status.c:294 src/stored/status.c:248
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:297
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_status.c:358
-#, c-format
-msgid ""
-"\n"
-"Failed to connect to Storage daemon %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:400
-#, c-format
-msgid ""
-"Failed to connect to Client %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:408
-msgid "Connected to file daemon\n"
-msgstr ""
-
-#: src/dird/ua_status.c:428
-msgid ""
-"\n"
-"Scheduled Jobs:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:429
-msgid ""
-"Level          Type     Pri  Scheduled          Name               Volume\n"
-msgstr ""
-
-#: src/dird/ua_status.c:430
-msgid "===================================================================================\n"
-msgstr ""
-
-#: 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:490
-#, c-format
-msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:544
-msgid "Ignoring invalid value for days. Max is 500.\n"
-msgstr ""
-
-#: src/dird/ua_status.c:587
-msgid "No Scheduled Jobs.\n"
-msgstr ""
-
-#: 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:612
-#, c-format
-msgid "Console connected at %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:622
-msgid ""
-"No Jobs running.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:628
-msgid " JobId Level   Name                       Status\n"
-msgstr ""
-
-#: src/dird/ua_status.c:629 src/filed/status.c:342
-msgid "======================================================================\n"
-msgstr ""
-
-#: src/dird/ua_status.c:638
-msgid "is waiting execution"
-msgstr ""
-
-#: src/dird/ua_status.c:641
-msgid "is running"
-msgstr ""
-
-#: src/dird/ua_status.c:644
-msgid "is blocked"
-msgstr ""
-
-#: src/dird/ua_status.c:647
-msgid "has terminated"
-msgstr ""
-
-#: src/dird/ua_status.c:650
-msgid "has terminated with warnings"
-msgstr ""
-
-#: src/dird/ua_status.c:653
-msgid "has erred"
-msgstr ""
-
-#: src/dird/ua_status.c:656
-msgid "has errors"
-msgstr ""
-
-#: src/dird/ua_status.c:659
-msgid "has a fatal error"
-msgstr ""
-
-#: src/dird/ua_status.c:662
-msgid "has verify differences"
-msgstr ""
-
-#: src/dird/ua_status.c:665
-msgid "has been canceled"
-msgstr ""
-
-#: src/dird/ua_status.c:670
-msgid "is waiting on Client"
-msgstr ""
-
-#: src/dird/ua_status.c:672
-#, c-format
-msgid "is waiting on Client %s"
-msgstr ""
-
-#: 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:684
-msgid "is waiting on Storage"
-msgstr ""
-
-#: src/dird/ua_status.c:690
-msgid "is waiting on max Storage jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:693
-msgid "is waiting on max Client jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:696
-msgid "is waiting on max Job jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:699
-msgid "is waiting on max total jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:702
-msgid "is waiting for its start time"
-msgstr ""
-
-#: src/dird/ua_status.c:705
-msgid "is waiting for higher priority jobs to finish"
-msgstr ""
-
-#: 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:711 src/dird/ua_status.c:762 src/lib/util.c:244
-msgid "SD despooling Data"
-msgstr ""
-
-#: 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:717 src/dird/ua_status.c:768 src/lib/util.c:250
-msgid "Dir inserting Attributes"
-msgstr ""
-
-#: src/dird/ua_status.c:722
-#, c-format
-msgid "is in unknown state %c"
-msgstr ""
-
-#: src/dird/ua_status.c:736
-msgid "is waiting for a mount request"
-msgstr ""
-
-#: src/dird/ua_status.c:743
-msgid "is waiting for an appendable Volume"
-msgstr ""
-
-#: src/dird/ua_status.c:751
-msgid "is waiting for Client to connect to Storage daemon"
-msgstr ""
-
-#: 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:784
-#, c-format
-msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:788
-#, c-format
-msgid "%6d %-6s  %-20s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:792
-#, c-format
-msgid "               %-30s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:812
-msgid "No Terminated Jobs.\n"
-msgstr ""
-
-#: 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: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:820
-msgid "====================================================================\n"
-msgstr ""
-
-#: 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: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:859 src/stored/status.c:608 src/filed/status.c:370
-msgid "Diffs"
-msgstr ""
-
-#: 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: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:871 src/stored/status.c:620 src/filed/status.c:379
-msgid "Other"
-msgstr ""
-
-#: 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: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:892
-msgid "\n"
-msgstr ""
-
-#: src/dird/ua_input.c:103
-msgid "Enter slot"
-msgstr ""
-
-#: src/dird/ua_input.c:107 src/dird/ua_input.c:113
-#, c-format
-msgid "Expected a positive integer, got: %s\n"
-msgstr ""
-
-#: src/dird/ua_input.c:170
-msgid "Invalid response. You must answer yes or no.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:193
-msgid "Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"
-msgstr ""
-
-#: src/dird/ua_input.c:220
-#, c-format
-msgid "Illegal character \"%c\" in a comment.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:227
-msgid "Comment too long.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:233
-msgid "Comment must be at least one character long.\n"
-msgstr ""
-
-#: src/dird/pythondir.c:121 src/stored/pythonsd.c:101
-#: src/stored/pythonsd.c:166 src/filed/pythonfd.c:94 src/filed/pythonfd.c:148
-#: src/filed/pythonfd.c:212
-msgid "Job pointer not found."
-msgstr ""
-
-#: src/dird/pythondir.c:153
-msgid "Pool record not found."
-msgstr ""
-
-#: src/dird/pythondir.c:209 src/stored/pythonsd.c:143 src/filed/pythonfd.c:125
-#, c-format
-msgid "Attribute %s not found."
-msgstr ""
-
-#: src/dird/pythondir.c:252 src/dird/pythondir.c:258 src/stored/pythonsd.c:183
-#: src/filed/pythonfd.c:167
-msgid "Read-only attribute"
-msgstr ""
-
-#: src/dird/pythondir.c:284
-msgid "Priority must be 1-100"
-msgstr ""
-
-#: src/dird/pythondir.c:289
-msgid "Job Level can be set only during JobInit"
-msgstr ""
-
-#: src/dird/pythondir.c:303
-msgid "Bad JobLevel string"
-msgstr ""
-
-#: src/dird/job.c:62
-#, c-format
-msgid "Could not init job queue: ERR=%s\n"
-msgstr ""
-
-#: src/dird/job.c:94
-#, c-format
-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:1129 src/dird/job.c:1170
-#: src/dird/job.c:1179
-msgid "Job resource"
-msgstr ""
-
-#: src/dird/job.c:230 src/dird/job.c:349
-#, c-format
-msgid "Unimplemented job type: %d\n"
-msgstr ""
-
-#: src/dird/job.c:272
-msgid "Job canceled because max start delay time exceeded.\n"
-msgstr ""
-
-#: src/dird/job.c:277
-msgid "Job canceled because max run sched time exceeded.\n"
-msgstr ""
-
-#: src/dird/job.c:403
-#, c-format
-msgid "JobId %s, Job %s marked to be canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:413
-msgid "Failed to connect to File daemon.\n"
-msgstr ""
-
-#: src/dird/job.c:548
-msgid "Max wait time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:553
-msgid "Max run time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:558
-msgid "Max run sched time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:680
-#, c-format
-msgid "Pool \"%s\" not in database. ERR=%s"
-msgstr ""
-
-#: src/dird/job.c:684
-#, c-format
-msgid "Created database record for Pool \"%s\".\n"
-msgstr ""
-
-#: 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:797
-#, c-format
-msgid "Cancelling duplicate JobId=%d.\n"
-msgstr ""
-
-#: src/dird/job.c:828 src/dird/job.c:1116
-msgid "Run pool override"
-msgstr ""
-
-#: src/dird/job.c:839
-msgid "Run FullPool override"
-msgstr ""
-
-#: src/dird/job.c:841
-msgid "Job FullPool override"
-msgstr ""
-
-#: src/dird/job.c:850
-msgid "Run IncPool override"
-msgstr ""
-
-#: src/dird/job.c:852
-msgid "Job IncPool override"
-msgstr ""
-
-#: src/dird/job.c:861
-msgid "Run DiffPool override"
-msgstr ""
-
-#: src/dird/job.c:863
-msgid "Job DiffPool override"
-msgstr ""
-
-#: 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:929
-msgid "FileSet MD5 digest not found.\n"
-msgstr ""
-
-#: src/dird/job.c:934
-#, c-format
-msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
-msgstr ""
-
-#: src/dird/job.c:976
-#, c-format
-msgid "Error updating job record. %s"
-msgstr ""
-
-#: src/dird/job.c:1121
-msgid "Run storage override"
-msgstr ""
-
-#: src/dird/job.c:1189
-msgid "Client resource"
-msgstr ""
-
-#: src/dird/job.c:1406
-#, c-format
-msgid "Could not start clone job: \"%s\".\n"
-msgstr ""
-
-#: src/dird/job.c:1409
-#, c-format
-msgid "Clone JobId %d started.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:83 src/dird/authenticate.c:84
-#: src/tray-monitor/authenticate.c:132
-#: src/qt-console/tray-monitor/authenticate.cpp:131
-#, c-format
-msgid "Error sending Hello to Storage daemon. ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:113
-msgid "Director and Storage daemon passwords or names not the same.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:115
-#, c-format
-msgid ""
-"Director unable to authenticate with Storage daemon at \"%s:%d\". Possible "
-"causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the SD or\n"
-"SD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-
-#: src/dird/authenticate.c:127 src/wx-console/authenticate.c:127
-#: src/console/authenticate.c:122
-msgid ""
-"Authorization problem: Remote server did not advertise required TLS "
-"support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:134 src/stored/authenticate.c:146
-#: src/stored/authenticate.c:257 src/wx-console/authenticate.c:133
-#: src/console/authenticate.c:129 src/filed/authenticate.c:160
-#: src/filed/authenticate.c:279
-msgid "Authorization problem: Remote server requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:143
-#, c-format
-msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
-msgstr ""
-
-#: src/dird/authenticate.c:155
-#, c-format
-msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:162 src/tray-monitor/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:151
-msgid "Storage daemon rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:163
-#, c-format
-msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:192
-#, c-format
-msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:222
-msgid "Director and File daemon passwords or names not the same.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:224
-#, c-format
-msgid ""
-"Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the FD or\n"
-"FD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-
-#: src/dird/authenticate.c:236
-#, c-format
-msgid ""
-"Authorization problem: FD \"%s:%s\" did not advertise required TLS support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:244
-#, c-format
-msgid "Authorization problem: FD at \"%s:%d\" requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:254
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
-msgstr ""
-
-#: src/dird/authenticate.c:266 src/tray-monitor/authenticate.c:191
-#: src/qt-console/tray-monitor/authenticate.cpp:190
-#, c-format
-msgid "Bad response from File daemon to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:268
-#, c-format
-msgid "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:277 src/tray-monitor/authenticate.c:198
-#: src/qt-console/tray-monitor/authenticate.cpp:197
-msgid "File daemon rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:278
-#, c-format
-msgid "File daemon at \"%s:%d\" rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:302
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Len=%d\n"
-msgstr ""
-
-#: src/dird/authenticate.c:309
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Got: %s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:377
-msgid ""
-"Authorization problem: Remote client did not advertise required TLS "
-"support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:385
-msgid "Authorization problem: Remote client requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:400 src/filed/authenticate.c:169
-#: src/filed/authenticate.c:288
-msgid "TLS negotiation failed.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:414
-#, c-format
-msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:419
-#, c-format
-msgid "1000 OK: %s Version: %s (%s)\n"
-msgstr ""
-
-#: src/dird/catreq.c:128 src/dird/catreq.c:355
-#, c-format
-msgid "1990 Invalid Catalog Request: %s"
-msgstr ""
-
-#: src/dird/catreq.c:129
-#, c-format
-msgid "Invalid Catalog request; DB not open: %s"
-msgstr ""
-
-#: src/dird/catreq.c:154
-msgid "1901 No Media.\n"
-msgstr ""
-
-#: src/dird/catreq.c:182
-msgid "not in Pool"
-msgstr ""
-
-#: src/dird/catreq.c:184
-msgid "not correct MediaType"
-msgstr ""
-
-#: src/dird/catreq.c:194
-msgid "is not Enabled"
-msgstr ""
-
-#: src/dird/catreq.c:203
-#, c-format
-msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
-msgstr ""
-
-#: src/dird/catreq.c:208
-#, c-format
-msgid "1997 Volume \"%s\" not in catalog.\n"
-msgstr ""
-
-#: src/dird/catreq.c:230
-#, c-format
-msgid "Unable to get Media record for Volume %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/catreq.c:232
-#, c-format
-msgid "1991 Catalog Request for vol=%s failed: %s"
-msgstr ""
-
-#: 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:262
-#, c-format
-msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
-msgstr ""
-
-#: src/dird/catreq.c:318
-#, c-format
-msgid "Catalog error updating Media record. %s"
-msgstr ""
-
-#: src/dird/catreq.c:320
-msgid "1993 Update Media error\n"
-msgstr ""
-
-#: src/dird/catreq.c:344
-#, c-format
-msgid "Catalog error creating JobMedia record. %s"
-msgstr ""
-
-#: src/dird/catreq.c:346
-msgid "1992 Create JobMedia error\n"
-msgstr ""
-
-#: 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"
-msgstr ""
-
-#: src/dird/catreq.c:544
-#, c-format
-msgid "%s not same File=%d as attributes=%d\n"
-msgstr ""
-
-#: src/dird/catreq.c:571
-#, c-format
-msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
-msgstr ""
-
-#: src/dird/catreq.c:586
-#, c-format
-msgid "attribute create error. %s"
-msgstr ""
-
-#: src/dird/catreq.c:592
-#, c-format
-msgid "Catalog error updating file digest. %s"
-msgstr ""
-
-#: src/dird/catreq.c:615
-#, c-format
-msgid "1994 Invalid Catalog Update: %s"
-msgstr ""
-
-#: src/dird/catreq.c:616
-#, c-format
-msgid "Invalid Catalog Update; DB not open: %s"
-msgstr ""
-
-#: 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:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
-msgid "Storage daemon"
-msgstr ""
-
-#: src/dird/msgchan.c:205
-#, c-format
-msgid "Storage daemon rejected Job command: %s\n"
-msgstr ""
-
-#: src/dird/msgchan.c:213
-#, c-format
-msgid "<stored: bad response to Job command: %s\n"
-msgstr ""
-
-#: 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"
-"     Storage daemon didn't accept Device \"%s\" because:\n"
-"     %s"
-msgstr ""
-
-#: src/dird/msgchan.c:322
-#, c-format
-msgid ""
-"\n"
-"     Storage daemon didn't accept Device \"%s\" command.\n"
-msgstr ""
-
-#: 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
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:183
-#: src/qt-console/tray-monitor/tray_conf.cpp:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:187
-#: src/qt-console/tray-monitor/tray_conf.cpp:187
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:191
-#: src/qt-console/tray-monitor/tray_conf.cpp:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray_conf.c:195
-#: src/qt-console/tray-monitor/tray_conf.cpp:195
-#: src/qt-console/bat_conf.cpp:157
-#, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:114
-#, c-format
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:270
-#: src/qt-console/tray-monitor/tray-monitor.cpp:216
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:301
-#: src/qt-console/tray-monitor/tray-monitor.cpp:248
-#, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:323
-#: src/qt-console/tray-monitor/tray-monitor.cpp:263
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:330
-msgid "Bacula daemon status monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:339
-msgid "Open status window..."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:345
-msgid "Exit"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:357
-msgid "Bacula tray monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:382
-msgid " (DIR)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:386
-msgid " (FD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:390
-msgid " (SD)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:403
-msgid "Unknown status."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:477
-msgid "Refresh interval in seconds: "
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:485
-msgid "Refresh now"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:489
-msgid "About"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:493
-msgid "Close"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:513
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:516
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:519
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:560 src/tray-monitor/tray-monitor.c:571
-msgid "Bacula Tray Monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:562 src/tray-monitor/tray-monitor.c:573
-msgid "Written by Nicolas Boichat\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:563 src/tray-monitor/tray-monitor.c:574
-msgid "Version"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:656
-#: src/qt-console/tray-monitor/tray-monitor.cpp:331
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:730
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:742
-#, c-format
-msgid " (%d errors)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:745
-#, c-format
-msgid " (%d error)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:783
-msgid "No current job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:786
-msgid "No last job."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:794
-msgid "Job status: Created"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:799
-msgid "Job status: Running"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:803
-msgid "Job status: Blocked"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:808
-msgid "Job status: Terminated"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:813
-msgid "Job status: Terminated in error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:819
-msgid "Job status: Error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:823
-msgid "Job status: Fatal error"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:828
-msgid "Job status: Verify differences"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:833
-msgid "Job status: Canceled"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:838
-msgid "Job status: Waiting on File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:843
-msgid "Job status: Waiting on the Storage daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:848
-msgid "Job status: Waiting for new media"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:853
-msgid "Job status: Waiting for Mount"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:858
-msgid "Job status: Waiting for storage resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:863
-msgid "Job status: Waiting for job resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:868
-msgid "Job status: Waiting for Client resource"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:873
-msgid "Job status: Waiting for maximum jobs"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:878
-msgid "Job status: Waiting for start time"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:883
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:888
-#, c-format
-msgid "Unknown job status %c."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:889
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:896
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:936 src/console/console.c:1143
-#, c-format
-msgid "Connecting to Director %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:937
-#: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: 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:173
-msgid "Director daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:943
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:944
-#: src/qt-console/tray-monitor/tray-monitor.cpp:366
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:945
-#: src/qt-console/tray-monitor/tray-monitor.cpp:368
-msgid "File daemon"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:950
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:951
-#: src/qt-console/tray-monitor/tray-monitor.cpp:373
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:956 src/tray-monitor/tray-monitor.c:994
-#: src/qt-console/tray-monitor/tray-monitor.cpp:379
-#: src/qt-console/tray-monitor/tray-monitor.cpp:409
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:962
-msgid "Cannot connect to daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:963
-#: src/qt-console/tray-monitor/tray-monitor.cpp:384
-msgid "Cannot connect to daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:975
-#: src/qt-console/tray-monitor/tray-monitor.cpp:393
-#, c-format
-msgid "Authentication error : %s"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:982
-msgid "Opened connection with Director daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:983
-#: src/qt-console/tray-monitor/tray-monitor.cpp:400
-msgid "Opened connection with Director daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:986
-msgid "Opened connection with File daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:987
-#: src/qt-console/tray-monitor/tray-monitor.cpp:403
-msgid "Opened connection with File daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:990
-msgid "Opened connection with Storage daemon.\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:991
-#: src/qt-console/tray-monitor/tray-monitor.cpp:406
-msgid "Opened connection with Storage daemon."
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1028
-msgid "<< Error: BNET_SUB_PROMPT signal received. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1033 src/wx-console/console_thread.cpp:494
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1037
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1042
-msgid "<ERROR>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1046
-#: src/qt-console/tray-monitor/tray-monitor.cpp:457
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1052
-msgid "<STOP>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1056
-#: src/qt-console/tray-monitor/tray-monitor.cpp:466
-msgid "Error : Connection closed."
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:88
-#: src/qt-console/tray-monitor/authenticate.cpp:87
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see "
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:97 src/console/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:96
-#, c-format
-msgid "Bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:104 src/wx-console/authenticate.c:157
-#: src/console/authenticate.c:159
-#: src/qt-console/tray-monitor/authenticate.cpp:103
-msgid "Director rejected Hello command\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:138
-#: src/qt-console/tray-monitor/authenticate.cpp:137
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:145
-#: src/qt-console/tray-monitor/authenticate.cpp:144
-#, c-format
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:178
-#: src/qt-console/tray-monitor/authenticate.cpp:177
-#, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:184
-#: src/qt-console/tray-monitor/authenticate.cpp:183
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/reserve.c:87
-#, c-format
-msgid "Unable to initialize reservation lock. ERR=%s\n"
-msgstr ""
-
-#: src/stored/reserve.c:156
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
-msgstr ""
-
-#: src/stored/reserve.c:256
-msgid "3939 Could not get dcr\n"
-msgstr ""
-
-#: src/stored/reserve.c:364
-#, c-format
-msgid "Device reservation failed for JobId=%d: %s\n"
-msgstr ""
-
-#: src/stored/reserve.c:373
-#, c-format
-msgid "Failed command: %s\n"
-msgstr ""
-
-#: src/stored/reserve.c:632 src/stored/dircmd.c:633
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
-msgstr ""
-
-#: 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:652
-#, c-format
-msgid "3926 Could not get dcr for device: %s\n"
-msgstr ""
-
-#: 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:788
-#, c-format
-msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
-msgstr ""
-
-#: src/stored/reserve.c:840
-#, c-format
-msgid "3603 JobId=%u device %s is busy reading.\n"
-msgstr ""
-
-#: 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: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:914
-#, c-format
-msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: src/stored/reserve.c:926
-#, c-format
-msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: 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:987
-#, c-format
-msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
-msgstr ""
-
-#: 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:1064
-#, c-format
-msgid "Logic error!!!! JobId=%u Should not get here.\n"
-msgstr ""
-
-#: 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:1068
-msgid "Logic error!!!! Should not get here.\n"
-msgstr ""
-
-#: src/stored/reserve.c:1071
-#, c-format
-msgid "3911 JobId=%u failed reserve drive %s.\n"
-msgstr ""
-
-#: src/stored/bls.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bls [options] <device-name>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -j              list jobs\n"
-"       -k              list blocks\n"
-"    (no j or k option) list saved files\n"
-"       -L              dump label\n"
-"       -p              proceed inspite of errors\n"
-"       -v              be verbose\n"
-"       -V              specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bls.c:149 src/stored/bextract.c:146
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:164 src/stored/bextract.c:161
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:211
-msgid "No archive name specified\n"
-msgstr ""
-
-#: src/stored/bls.c:247
-#, c-format
-msgid ""
-"\n"
-"Warning, this Volume is a continuation of Volume %s\n"
-msgstr ""
-
-#: src/stored/bls.c:290
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:301
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/bls.c:303
-#, c-format
-msgid "End of file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:327
-#, c-format
-msgid ""
-"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm="
-"%s rlen=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:336
-#, c-format
-msgid "Block: %d size=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:386 src/stored/bextract.c:328 src/stored/bscan.c:688
-msgid "Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bls.c:388
-msgid "Attrib unpack error!\n"
-msgstr ""
-
-#: src/stored/bls.c:399
-#, c-format
-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:330
-msgid "Fresh Volume Label"
-msgstr ""
-
-#: 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:1028 src/stored/bcopy.c:337
-msgid "Begin Job Session"
-msgstr ""
-
-#: 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:346
-msgid "End of Medium"
-msgstr ""
-
-#: src/stored/bls.c:444
-msgid "End of Physical Medium"
-msgstr ""
-
-#: src/stored/bls.c:447
-msgid "Start of object"
-msgstr ""
-
-#: src/stored/bls.c:450
-msgid "End of object"
-msgstr ""
-
-#: 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: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: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 ""
-
-#: src/stored/dircmd.c:155
-#, c-format
-msgid "Connection request from %s failed.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:166
-#, c-format
-msgid "Invalid connection from %s. Len=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
-msgid "Unable to authenticate Director\n"
-msgstr ""
-
-#: src/stored/dircmd.c:299
-#, c-format
-msgid "3991 Bad setdebug command: %s\n"
-msgstr ""
-
-#: 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:358
-#, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
-msgstr ""
-
-#: 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:442
-#, c-format
-msgid "3903 Error scanning label command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:492
-#, c-format
-msgid "3910 Unable to open device \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:509
-#, c-format
-msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:516
-msgid "3921 Wrong volume mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:520
-msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:528
-#, c-format
-msgid "3912 Failed to label Volume: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:538
-#, c-format
-msgid "3914 Failed to label Volume (no media): ERR=%s\n"
-msgstr ""
-
-#: 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:578
-#, c-format
-msgid "3001 Mounted Volume: %s\n"
-msgstr ""
-
-#: 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:696
-msgid "Specified slot ignored. "
-msgstr ""
-
-#: 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:732 src/stored/dircmd.c:761
-#, c-format
-msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: 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:745
-#, c-format
-msgid "3001 Device \"%s\" is doing acquire.\n"
-msgstr ""
-
-#: 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:776
-#, c-format
-msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:788
-#, c-format
-msgid "3002 Device \"%s\" is mounted.\n"
-msgstr ""
-
-#: 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:793
-#, c-format
-msgid "3906 File device \"%s\" is always mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:802
-#, c-format
-msgid "3930 Device \"%s\" is being released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:806
-#, c-format
-msgid "3905 Unknown wait state %d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:816
-#, c-format
-msgid "3909 Error scanning mount command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
-#, c-format
-msgid "3002 Device \"%s\" unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:851
-#, c-format
-msgid "3901 Device \"%s\" is already unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:866
-#, c-format
-msgid "3001 Device \"%s\" unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:871
-#, c-format
-msgid "3902 Device \"%s\" is busy in acquire.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:909
-#, c-format
-msgid "3907 Error scanning unmount command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:937
-msgid "3916 Error scanning action_on_purge command\n"
-msgstr ""
-
-#: src/stored/dircmd.c:980
-#, c-format
-msgid "3921 Device \"%s\" already released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:987
-#, c-format
-msgid "3922 Device \"%s\" waiting for sysop.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:993
-#, c-format
-msgid "3922 Device \"%s\" waiting for mount.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:997
-#, c-format
-msgid "3923 Device \"%s\" is busy in acquire.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1001
-#, c-format
-msgid "3914 Device \"%s\" is being labeled.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1009
-#, c-format
-msgid "3022 Device \"%s\" released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1020
-#, c-format
-msgid "3927 Error scanning release command: %s\n"
-msgstr ""
-
-#: 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:1062
-msgid "Error parsing bootstrap file.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1124
-#, c-format
-msgid "3998 Device \"%s\" is not an autochanger.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1141
-#, c-format
-msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1183
-#, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1211
-#, c-format
-msgid "3001 Volume=%s Slot=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1243
-#, c-format
-msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
-msgstr ""
-
-#: 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:1251
-#, c-format
-msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1255
-#, c-format
-msgid "3934 Device \"%s\" is being initialized.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1259
-#, c-format
-msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1263
-#, c-format
-msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1268
-#, c-format
-msgid "3936 Device \"%s\" is busy reading.\n"
-msgstr ""
-
-#: 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:122 src/stored/parse_bsr.c:126
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:148
-#, c-format
-msgid "Cannot open bootstrap file %s: %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:279
-#, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:311
-#, c-format
-msgid "Device \"%s\" in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:484
-#, c-format
-msgid "REGEX '%s' compile error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:494
-msgid "JobType not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:502
-msgid "JobLevel not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:719
-#, c-format
-msgid "Slot %d in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:743
-#, c-format
-msgid "VolFile     : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:751
-#, c-format
-msgid "VolBlock    : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:759
-#, c-format
-msgid "VolAddr    : %llu-%llu\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:768
-#, c-format
-msgid "FileIndex   : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:770
-#, c-format
-msgid "FileIndex   : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:780
-#, c-format
-msgid "JobId       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:782
-#, c-format
-msgid "JobId       : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:792
-#, c-format
-msgid "SessId      : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:794
-#, c-format
-msgid "SessId      : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:803
-#, c-format
-msgid "VolumeName  : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:804
-#, c-format
-msgid "  MediaType : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:805
-#, c-format
-msgid "  Device    : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:806
-#, c-format
-msgid "  Slot      : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:815
-#, c-format
-msgid "Client      : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:823
-#, c-format
-msgid "Job          : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:831
-#, c-format
-msgid "SessTime    : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:842
-msgid "BSR is NULL\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:846
-#, c-format
-msgid "Next        : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:847
-#, c-format
-msgid "Root bsr    : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:859
-#, c-format
-msgid "count       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:860
-#, c-format
-msgid "found       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:863
-#, c-format
-msgid "done        : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:864
-#, c-format
-msgid "positioning : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:865
-#, c-format
-msgid "fast_reject : %d\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:96
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:106
-msgid "Insane! End of tape while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:132
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:155
-#, c-format
-msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:166
-msgid "No HDR1 label while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:172
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:184
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:199
-msgid "Unknown or bad ANSI/IBM label record.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:207
-msgid "Too many records in while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:307
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:333
-#, c-format
-msgid "Could not write ANSI VOL1 label. Wanted size=%d got=%d ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:371 src/stored/ansi_label.c:400
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:376 src/stored/ansi_label.c:407
-msgid "Could not write ANSI HDR1 label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:412
-#, c-format
-msgid "Error writing EOF to tape. ERR=%s"
-msgstr ""
-
-#: src/stored/ansi_label.c:417
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
-msgstr ""
-
-#: src/stored/append.c:68
-msgid "DCR is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:73
-msgid "DEVICE is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:83
-msgid "Unable to set network buffer size.\n"
-msgstr ""
-
-#: 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:110 src/stored/btape.c:2235
-#, c-format
-msgid "Write session label failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:122
-#, c-format
-msgid "Network send error to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:159
-#, c-format
-msgid "Error reading data header from FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:167
-#, c-format
-msgid "Malformed data header from FD: %s\n"
-msgstr ""
-
-#: src/stored/append.c:187
-#, c-format
-msgid "FI=%d from FD not positive or sequential=%d\n"
-msgstr ""
-
-#: src/stored/append.c:235
-#, c-format
-msgid "Network error reading from FD. ERR=%s\n"
-msgstr ""
-
-#: 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: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:279 src/stored/mac.c:128
-msgid "Set ok=FALSE after write_block_to_device.\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/vol_mgr.c:93
-#, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:93
-#, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:110 src/stored/label.c:202
-#, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
-msgstr ""
-
-#: src/stored/label.c:113 src/stored/label.c:190
-#, c-format
-msgid "Too many tries: %s"
-msgstr ""
-
-#: src/stored/label.c:130
-#, c-format
-msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
-msgstr ""
-
-#: src/stored/label.c:135
-msgid "Could not read Volume label from block.\n"
-msgstr ""
-
-#: src/stored/label.c:138
-#, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:143
-#, c-format
-msgid "Volume Header Id bad: %s\n"
-msgstr ""
-
-#: src/stored/label.c:175
-#, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
-msgstr ""
-
-#: src/stored/label.c:186
-#, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
-msgstr ""
-
-#: 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:277
-#, c-format
-msgid "Cannot write Volume label to block for device %s\n"
-msgstr ""
-
-#: 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:451
-#, c-format
-msgid "Rewind error on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:458
-#, c-format
-msgid "Truncate error on device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:487
-#, c-format
-msgid "Unable to write device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:518
-#, c-format
-msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
-msgstr ""
-
-#: src/stored/label.c:521
-#, c-format
-msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
-msgstr ""
-
-#: src/stored/label.c:721
-#, c-format
-msgid "Bad Volume session label = %d\n"
-msgstr ""
-
-#: src/stored/label.c:776
-#, c-format
-msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
-msgstr ""
-
-#: src/stored/label.c:903
-#, c-format
-msgid "Unknown %d"
-msgstr ""
-
-#: src/stored/label.c:907
-#, c-format
-msgid ""
-"\n"
-"Volume Label:\n"
-"Id                : %sVerNo             : %d\n"
-"VolName           : %s\n"
-"PrevVolName       : %s\n"
-"VolFile           : %d\n"
-"LabelType         : %s\n"
-"LabelSize         : %d\n"
-"PoolName          : %s\n"
-"MediaType         : %s\n"
-"PoolType          : %s\n"
-"HostName          : %s\n"
-msgstr ""
-
-#: src/stored/label.c:929
-#, c-format
-msgid "Date label written: %s\n"
-msgstr ""
-
-#: src/stored/label.c:935
-#, c-format
-msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:955
-#, c-format
-msgid ""
-"\n"
-"%s Record:\n"
-"JobId             : %d\n"
-"VerNum            : %d\n"
-"PoolName          : %s\n"
-"PoolType          : %s\n"
-"JobName           : %s\n"
-"ClientName        : %s\n"
-msgstr ""
-
-#: src/stored/label.c:968
-#, c-format
-msgid ""
-"Job (unique name) : %s\n"
-"FileSet           : %s\n"
-"JobType           : %c\n"
-"JobLevel          : %c\n"
-msgstr ""
-
-#: src/stored/label.c:977
-#, c-format
-msgid ""
-"JobFiles          : %s\n"
-"JobBytes          : %s\n"
-"StartBlock        : %s\n"
-"EndBlock          : %s\n"
-"StartFile         : %s\n"
-"EndFile           : %s\n"
-"JobErrors         : %s\n"
-"JobStatus         : %c\n"
-msgstr ""
-
-#: src/stored/label.c:998
-#, c-format
-msgid "Date written      : %s\n"
-msgstr ""
-
-#: src/stored/label.c:1003
-#, c-format
-msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:1022
-msgid "Fresh Volume"
-msgstr ""
-
-#: src/stored/label.c:1025
-msgid "Volume"
-msgstr ""
-
-#: src/stored/label.c:1034 src/stored/read_record.c:428
-msgid "End of Media"
-msgstr ""
-
-#: src/stored/label.c:1037
-msgid "End of Tape"
-msgstr ""
-
-#: 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:1062
-msgid "End of physical tape.\n"
-msgstr ""
-
-#: 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:1079
-#, c-format
-msgid "   Job=%s Date=%s Level=%c Type=%c\n"
-msgstr ""
-
-#: src/stored/label.c:1088
-#, c-format
-msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
-msgstr ""
-
-#: src/stored/status.c:99
-msgid "Used Volume status:\n"
-msgstr ""
-
-#: src/stored/status.c:117
-msgid ""
-"\n"
-"SD Resources:\n"
-msgstr ""
-
-#: src/stored/status.c:153
-msgid ""
-"\n"
-"Device status:\n"
-msgstr ""
-
-#: src/stored/status.c:157
-#, c-format
-msgid "Autochanger \"%s\" with devices:\n"
-msgstr ""
-
-#: src/stored/status.c:177
-#, c-format
-msgid ""
-"\n"
-"Device %s is %s:\n"
-"    Volume:      %s\n"
-"    Pool:        %s\n"
-"    Media type:  %s\n"
-msgstr ""
-
-#: 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 ""
-"\n"
-"Device %s open but no Bacula volume is currently mounted.\n"
-msgstr ""
-
-#: src/stored/status.c:199
-#, c-format
-msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:214
-#, c-format
-msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:220
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:227
-#, c-format
-msgid ""
-"\n"
-"Device %s is not open.\n"
-msgstr ""
-
-#: src/stored/status.c:231
-#, c-format
-msgid ""
-"\n"
-"Device \"%s\" is not open or does not exist.\n"
-msgstr ""
-
-#: src/stored/status.c:255
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
-msgstr ""
-
-#: src/stored/status.c:293
-msgid ""
-"No DEVICE structure.\n"
-"\n"
-msgstr ""
-
-#: src/stored/status.c:299
-msgid "    Device is BLOCKED. User unmounted.\n"
-msgstr ""
-
-#: src/stored/status.c:303
-msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
-msgstr ""
-
-#: src/stored/status.c:313
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting for mount of volume \"%s\",\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:322
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting to create a volume for:\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:333
-msgid "    Device is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/status.c:339
-msgid "    Device is being initialized.\n"
-msgstr ""
-
-#: src/stored/status.c:343
-msgid "    Device is blocked labeling a Volume.\n"
-msgstr ""
-
-#: src/stored/status.c:352
-#, c-format
-msgid "    Slot %d %s loaded in drive %d.\n"
-msgstr ""
-
-#: src/stored/status.c:356
-#, c-format
-msgid "    Drive %d is not loaded.\n"
-msgstr ""
-
-#: src/stored/status.c:371 src/stored/btape.c:688
-#, c-format
-msgid "Configured device capabilities:\n"
-msgstr ""
-
-#: src/stored/status.c:389
-msgid "Device state:\n"
-msgstr ""
-
-#: src/stored/status.c:405
-#, c-format
-msgid "  num_writers=%d reserves=%d block=%d\n"
-msgstr ""
-
-#: src/stored/status.c:409
-msgid "Attached Jobs: "
-msgstr ""
-
-#: src/stored/status.c:427 src/stored/btape.c:720
-#, c-format
-msgid "Device parameters:\n"
-msgstr ""
-
-#: src/stored/status.c:429
-#, c-format
-msgid "  Archive name: %s Device name: %s\n"
-msgstr ""
-
-#: src/stored/status.c:432
-#, c-format
-msgid "  File=%u block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:434
-#, c-format
-msgid "  Min block=%u Max block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:455
-#, c-format
-msgid "%s Job %s waiting for Client connection.\n"
-msgstr ""
-
-#: 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:484
-#, c-format
-msgid ""
-"Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
-"    pool=\"%s\" device=%s\n"
-msgstr ""
-
-#: src/stored/status.c:495
-#, c-format
-msgid "    spooling=%d despooling=%d despool_wait=%d\n"
-msgstr ""
-
-#: src/stored/status.c:511
-#, c-format
-msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
-msgstr ""
-
-#: src/stored/status.c:523
-#, c-format
-msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
-msgstr ""
-
-#: src/stored/status.c:529
-msgid "    FDSocket closed\n"
-msgstr ""
-
-#: src/stored/status.c:550
-msgid ""
-"\n"
-"Jobs waiting to reserve a drive:\n"
-msgstr ""
-
-#: src/stored/status.c:581
-msgid "===================================================================\n"
-msgstr ""
-
-#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
-msgid "Base"
-msgstr ""
-
-#: src/stored/status.c:680 src/filed/status.c:534
-msgid "Init Catalog"
-msgstr ""
-
-#: src/stored/status.c:683 src/filed/status.c:537
-msgid "Volume to Catalog"
-msgstr ""
-
-#: src/stored/status.c:686 src/filed/status.c:540
-msgid "Disk to Catalog"
-msgstr ""
-
-#: src/stored/status.c:689 src/filed/status.c:543
-msgid "Data"
-msgstr ""
-
-#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
-msgid "Unknown Job Level"
-msgstr ""
-
-#: src/stored/status.c:763
-#, c-format
-msgid "3900 No arg in .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:811
-#, c-format
-msgid "3900 Unknown arg in .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:826
-msgid "Bacula Storage: Idle"
-msgstr ""
-
-#: src/stored/status.c:837
-msgid "Bacula Storage: Running"
-msgstr ""
-
-#: src/stored/status.c:851
-msgid "Bacula Storage: Last Job Canceled"
-msgstr ""
-
-#: src/stored/status.c:855
-msgid "Bacula Storage: Last Job Failed"
-msgstr ""
-
-#: src/stored/status.c:859
-msgid "Bacula Storage: Last Job had Warnings"
-msgstr ""
-
-#: src/stored/read_record.c:89
-#, c-format
-msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:93
-msgid "End of all volumes.\n"
-msgstr ""
-
-#: src/stored/read_record.c:137
-msgid "part"
-msgstr ""
-
-#: src/stored/read_record.c:140
-msgid "file"
-msgstr ""
-
-#: src/stored/read_record.c:143
-#, c-format
-msgid "End of %s %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:158
-msgid "Did fsr in attemp to skip bad record.\n"
-msgstr ""
-
-#: src/stored/read_record.c:397
-#, c-format
-msgid "Forward spacing Volume \"%s\" to file:block %u:%u.\n"
-msgstr ""
-
-#: src/stored/read_record.c:421
-msgid "Begin Session"
-msgstr ""
-
-#: src/stored/read_record.c:425
-msgid "End Session"
-msgstr ""
-
-#: src/stored/read_record.c:431
-#, c-format
-msgid "Unknown code %d\n"
-msgstr ""
-
-#: src/stored/bextract.c:80
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
-"files>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -p              proceed inspite of I/O errors\n"
-"       -v              verbose\n"
-"       -V <volumes>    specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-
-#: 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"
-msgstr ""
-
-#: src/stored/bextract.c:218
-#, c-format
-msgid "%d Program Name and/or Program Data Stream records ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:222
-#, c-format
-msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:249
-#, c-format
-msgid "Cannot stat %s. It must exist. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:253
-#, c-format
-msgid "%s must be a directory.\n"
-msgstr ""
-
-#: src/stored/bextract.c:274
-#, c-format
-msgid "%u files restored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1480
-#, c-format
-msgid "Write error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:321 src/stored/bextract.c:587
-msgid "Logic error output file should be open but is not.\n"
-msgstr ""
-
-#: src/stored/bextract.c:335 src/filed/restore.c:569
-#, c-format
-msgid "%s stream not supported on this Client.\n"
-msgstr ""
-
-#: src/stored/bextract.c:345
-#, c-format
-msgid "%s was deleted.\n"
-msgstr ""
-
-#: src/stored/bextract.c:393
-#, c-format
-msgid "Seek error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1335
-#, c-format
-msgid "Seek to %s error on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:448
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
-msgstr ""
-
-#: 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:1376
-#, c-format
-msgid "Compressed header version error. version=0x%x\n"
-msgstr ""
-
-#: src/stored/bextract.c:522 src/filed/restore.c:1381
-#, c-format
-msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
-msgstr ""
-
-#: src/stored/bextract.c:544
-#, c-format
-msgid "LZO uncompression error. ERR=%d\n"
-msgstr ""
-
-#: src/stored/bextract.c:556 src/filed/restore.c:1414
-#, c-format
-msgid "Compression algorithm 0x%x found, but not supported!\n"
-msgstr ""
-
-#: src/stored/bextract.c:578
-msgid "Got Program Name or Data Stream. Ignored.\n"
-msgstr ""
-
-#: 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:74
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify a Storage configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: 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:217
-msgid "Write of last block failed.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:221
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
-msgstr ""
-
-#: 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:254
-msgid "Volume is prelabeled. This volume cannot be copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:257
-msgid "Volume label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:263
-msgid "Copy skipped. Record does not match BSR filter.\n"
-msgstr ""
-
-#: 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:294
-msgid "EOM label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:297
-msgid "EOT label not copied.\n"
-msgstr ""
-
-#: src/stored/dvd.c:111
-msgid "No FreeSpace command defined.\n"
-msgstr ""
-
-#: src/stored/dvd.c:145
-#, c-format
-msgid "Cannot run free space command. Results=%s ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:261
-#, c-format
-msgid "Error writing part %d to the DVD: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:263
-#, c-format
-msgid "Error while writing current part to the DVD: %s"
-msgstr ""
-
-#: src/stored/dvd.c:273
-#, c-format
-msgid "Part %d (%lld bytes) written to DVD.\n"
-msgstr ""
-
-#: src/stored/dvd.c:292
-#, c-format
-msgid "Remaining free space %s on %s\n"
-msgstr ""
-
-#: src/stored/dvd.c:358
-#, c-format
-msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
-msgstr ""
-
-#: 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:570
-#, c-format
-msgid "Unable to write last on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/butil.c:59
-msgid "Nohdr,"
-msgstr ""
-
-#: src/stored/butil.c:62
-msgid "partial,"
-msgstr ""
-
-#: src/stored/butil.c:65
-msgid "empty,"
-msgstr ""
-
-#: src/stored/butil.c:68
-msgid "Nomatch,"
-msgstr ""
-
-#: src/stored/butil.c:71
-msgid "cont,"
-msgstr ""
-
-#: src/stored/butil.c:148
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
-msgstr ""
-
-#: src/stored/butil.c:168
-#, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:175
-#, c-format
-msgid "Cannot init device %s\n"
-msgstr ""
-
-#: src/stored/butil.c:195
-#, c-format
-msgid "Cannot open %s\n"
-msgstr ""
-
-#: src/stored/butil.c:282
-#, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:287
-#, c-format
-msgid "Using device: \"%s\" for reading.\n"
-msgstr ""
-
-#: src/stored/butil.c:290
-#, c-format
-msgid "Using device: \"%s\" for writing.\n"
-msgstr ""
-
-#: src/stored/butil.c:306
-msgid "Unexpected End of Data\n"
-msgstr ""
-
-#: src/stored/butil.c:308
-msgid "Unexpected End of Tape\n"
-msgstr ""
-
-#: src/stored/butil.c:310
-msgid "Unexpected End of File\n"
-msgstr ""
-
-#: src/stored/butil.c:312
-msgid "Tape Door is Open\n"
-msgstr ""
-
-#: src/stored/butil.c:314
-msgid "Unexpected Tape is Off-line\n"
-msgstr ""
-
-#: src/stored/acquire.c:74
-#, c-format
-msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
-msgstr ""
-
-#: src/stored/acquire.c:83
-#, c-format
-msgid "No volumes specified for reading. Job %s canceled.\n"
-msgstr ""
-
-#: 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:118
-#, c-format
-msgid ""
-"Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
-"  device=%s\n"
-msgstr ""
-
-#: src/stored/acquire.c:162
-#, c-format
-msgid "Media Type change.  New read device %s chosen.\n"
-msgstr ""
-
-#: src/stored/acquire.c:174
-#, c-format
-msgid "No suitable device found to read Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/acquire.c:213
-#, c-format
-msgid "Job %s canceled.\n"
-msgstr ""
-
-#: src/stored/acquire.c:231
-#, c-format
-msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/acquire.c:321
-#, c-format
-msgid "Too many errors trying to mount device %s for reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:329
-#, c-format
-msgid "Ready to read from volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: src/stored/acquire.c:381
-#, c-format
-msgid "Want to append, but device %s is busy reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:414
-#, c-format
-msgid "Could not ready device %s for append.\n"
-msgstr ""
-
-#: 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:552
-#, c-format
-msgid "Alert: %s"
-msgstr ""
-
-#: src/stored/acquire.c:560
-#, c-format
-msgid "3997 Bad alert command: %s: ERR=%s.\n"
-msgstr ""
-
-#: 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/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:197
-#, c-format
-msgid "Error getting Volume info: %s"
-msgstr ""
-
-#: src/stored/askdir.c:376
-#, c-format
-msgid "Didn't get vol info vol=%s: ERR=%s"
-msgstr ""
-
-#: src/stored/askdir.c:432
-#, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
-msgstr ""
-
-#: src/stored/askdir.c:439
-#, c-format
-msgid "Error creating JobMedia record: %s\n"
-msgstr ""
-
-#: 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:533
-#, c-format
-msgid ""
-"Job %s is waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\" command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: 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:568
-msgid "pthread error in mount_next_volume.\n"
-msgstr ""
-
-#: src/stored/askdir.c:601
-msgid "Cannot request another volume: no volume name given.\n"
-msgstr ""
-
-#: 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:624
-#, c-format
-msgid ""
-"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:630
-#, c-format
-msgid ""
-"Please mount read Volume \"%s\" for:\n"
-"    Job:          %s\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: src/stored/askdir.c:668
-msgid "pthread error in mount_volume\n"
-msgstr ""
-
-#: src/stored/record.c:75
-#, c-format
-msgid "unknown: %d"
-msgstr ""
-
-#: src/stored/record.c:392
-msgid "Damaged buffer\n"
-msgstr ""
-
-#: src/stored/record.c:670
-#, c-format
-msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
-msgstr ""
-
-#: src/stored/read.c:65
-msgid "No Volume names found for restore.\n"
-msgstr ""
-
-#: src/stored/read.c:120
-#, c-format
-msgid ">filed: Error Hdr=%s\n"
-msgstr ""
-
-#: src/stored/read.c:121 src/stored/read.c:136
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
-msgstr ""
-
-#: src/stored/read.c:135
-#, c-format
-msgid "Error sending to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/autochanger.c:65
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:71
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: 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:141
-msgid "Cartridge change or \"update slots\" may be required.\n"
-msgstr ""
-
-#: 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:154
-#, c-format
-msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:185
-#, c-format
-msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:193
-#, c-format
-msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:280
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:287
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
-msgstr ""
-
-#: 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:316
-#, c-format
-msgid "Lock failure on autochanger. ERR=%s\n"
-msgstr ""
-
-#: src/stored/autochanger.c:330
-#, c-format
-msgid "Unlock failure on autochanger. ERR=%s\n"
-msgstr ""
-
-#: 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:387
-#, c-format
-msgid ""
-"3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
-"Results=%s\n"
-msgstr ""
-
-#: 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:541
-#, c-format
-msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:585
-#, c-format
-msgid "3993 Device %s not an autochanger device.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:612
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:615
-msgid "3996 Open bpipe failed.\n"
-msgstr ""
-
-#: 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
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/stored/stored.c:136 src/stored/btape.c:178
-#, c-format
-msgid "Tape block size (%d) not multiple of system size (%d)\n"
-msgstr ""
-
-#: src/stored/stored.c:140 src/stored/btape.c:182
-#, c-format
-msgid "Tape block size (%d) is not a power of 2\n"
-msgstr ""
-
-#: src/stored/stored.c:268
-msgid "Volume Session Time is ZERO!\n"
-msgstr ""
-
-#: src/stored/stored.c:277
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored.c:310 src/stored/bscan.c:262
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:316
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
-msgstr ""
-
-#: src/stored/stored.c:321
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:326
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:334
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:341 src/stored/bscan.c:270
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:363
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:369
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:375
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: src/stored/stored.c:568
-#, c-format
-msgid "Could not initialize %s\n"
-msgstr ""
-
-#: src/stored/stored.c:582
-#, c-format
-msgid "Could not open device %s\n"
-msgstr ""
-
-#: src/stored/stored.c:596
-#, c-format
-msgid "Could not mount device %s\n"
-msgstr ""
-
-#: src/stored/device.c:120
-#, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:139
-#, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:151
-#, c-format
-msgid "write_block_to_device Volume label failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:186
-#, c-format
-msgid "write_block_to_device overflow block failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:191
-#, c-format
-msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:327 src/stored/dev.c:512
-#, c-format
-msgid "Unable to open device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/device.c:329
-#, c-format
-msgid "Unable to open archive %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:166
-#, c-format
-msgid "Command error with FD, hanging up. %s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:169
-msgid "Command error with FD, hanging up.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:180
-#, c-format
-msgid "FD command not found: %s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:206
-msgid "Append data error.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:211
-msgid "Attempt to append on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:223 src/stored/fd_cmds.c:266
-msgid "Attempt to close non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:241
-msgid "Attempt to open already open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:295
-msgid "Attempt to read on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:313 src/stored/fd_cmds.c:322
-msgid "Attempt to open read on non-open session.\n"
-msgstr ""
-
-#: src/stored/mount.c:98
-#, c-format
-msgid "Too many errors trying to mount device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:106
-#, c-format
-msgid "Job %d canceled.\n"
-msgstr ""
-
-#: src/stored/mount.c:282
-#, c-format
-msgid "Volume \"%s\" previously written, moving to end of data.\n"
-msgstr ""
-
-#: 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:411 src/stored/mount.c:737
-#, c-format
-msgid "Volume \"%s\" not on device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:444
-#, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
-msgstr ""
-
-#: src/stored/mount.c:624
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: src/stored/mount.c:631 src/stored/mount.c:659
-msgid "Error updating Catalog\n"
-msgstr ""
-
-#: 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:647
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" size=%s\n"
-msgstr ""
-
-#: src/stored/mount.c:651
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The sizes do not match! Volume=%s Catalog=%s\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: 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:727
-#, c-format
-msgid "Labeled new Volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:732
-#, c-format
-msgid "Device %s not configured to autolabel Volumes.\n"
-msgstr ""
-
-#: src/stored/mount.c:751
-#, c-format
-msgid "Marking Volume \"%s\" in Error in Catalog.\n"
-msgstr ""
-
-#: 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:787
-msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
-msgstr ""
-
-#: 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:875 src/stored/btape.c:3122
-#, c-format
-msgid "Cannot open Dev=%s, Vol=%s\n"
-msgstr ""
-
-#: src/stored/mac.c:81
-msgid "Read and write devices not properly initialized.\n"
-msgstr ""
-
-#: src/stored/mac.c:87
-#, c-format
-msgid "No Volume names found for %s.\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:160 src/filed/pythonfd.c:142
-#, c-format
-msgid "Cannot delete attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:193 src/filed/pythonfd.c:160 src/filed/pythonfd.c:176
-#, c-format
-msgid "Cannot find attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:208
-msgid "Error in ParseTuple\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:224
-msgid "Parse tuple error in job_write\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:261
-#, c-format
-msgid "Error in Python method %s\n"
-msgstr ""
-
-#: src/stored/spool.c:83
-msgid "Spooling statistics:\n"
-msgstr ""
-
-#: src/stored/spool.c:86
-#, c-format
-msgid ""
-"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
-msgstr ""
-
-#: src/stored/spool.c:94
-#, c-format
-msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
-msgstr ""
-
-#: src/stored/spool.c:112
-msgid "Spooling data ...\n"
-msgstr ""
-
-#: src/stored/spool.c:138
-#, c-format
-msgid "Bad return from despool WroteVol=%d\n"
-msgstr ""
-
-#: src/stored/spool.c:171
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:225
-msgid "Despooling zero bytes. Your disk is probably FULL!\n"
-msgstr ""
-
-#: src/stored/spool.c:234
-#, c-format
-msgid "Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:239
-#, c-format
-msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:339
-#, c-format
-msgid ""
-"Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/spool.c:407
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:410
-#, c-format
-msgid "Spool read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:411
-#, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:418 src/stored/spool.c:419
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
-msgstr ""
-
-#: src/stored/spool.c:425 src/stored/spool.c:426
-#, c-format
-msgid "Spool data read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: 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:492
-msgid "Bad return from despool in write_block.\n"
-msgstr ""
-
-#: src/stored/spool.c:500
-msgid "Spooling data again ...\n"
-msgstr ""
-
-#: src/stored/spool.c:532
-#, c-format
-msgid "Error writing header to spool file. ERR=%s\n"
-msgstr ""
-
-#: 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:555 src/stored/spool.c:601
-msgid "Fatal despooling error."
-msgstr ""
-
-#: src/stored/spool.c:563
-msgid "Retrying after header spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:579
-#, c-format
-msgid "Error writing data to spool file. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:612
-msgid "Retrying after data spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:682
-msgid "Network error on BlastAttributes.\n"
-msgstr ""
-
-#: 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:718
-#, c-format
-msgid "Truncate on attributes file failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:742
-#, c-format
-msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:768
-#, c-format
-msgid "fopen attr spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/lock.c:405
-#, c-format
-msgid "pthread_cond_wait failure. ERR=%s\n"
-msgstr ""
-
-#: src/stored/lock.c:504
-msgid "unknown blocked code"
-msgstr ""
-
-#: src/stored/stored_conf.c:241
-#, c-format
-msgid "Expected a Device Type keyword, got: %s"
-msgstr ""
-
-#: src/stored/stored_conf.c:255
-#, c-format
-msgid ""
-"Maximum Block Size configured value %u is greater than allowed maximum: %u"
-msgstr ""
-
-#: src/stored/stored_conf.c:269
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:272
-#, c-format
-msgid "dump_resource type=%d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:388
-#, c-format
-msgid "Warning: unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:645
-#: src/stored/stored_conf.c:680 src/wx-console/console_conf.c:164
-#: src/wx-console/console_conf.c:239 src/wx-console/console_conf.c:284
-#: src/wx-console/console_conf.c:311 src/console/console_conf.c:157
-#: src/console/console_conf.c:233 src/console/console_conf.c:278
-#: src/console/console_conf.c:305 src/filed/filed_conf.c:333
-#: src/filed/filed_conf.c:398 src/filed/filed_conf.c:428
-#: src/qt-console/bat_conf.cpp:161 src/qt-console/bat_conf.cpp:239
-#: src/qt-console/bat_conf.cpp:287 src/qt-console/bat_conf.cpp:317
-#, c-format
-msgid "Unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:584
-#, c-format
-msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:590
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:624
-#, c-format
-msgid "Cannot find AutoChanger resource %s\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:640
-#, c-format
-msgid "Unable to init lock: ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:698
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
-msgstr ""
-
-#: src/stored/dev.c:127
-#, c-format
-msgid "Unable to stat device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:155
-msgid "DVD support is now deprecated\n"
-msgstr ""
-
-#: src/stored/dev.c:231
-#, c-format
-msgid "Unable to stat mount point %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:236
-msgid ""
-"Mount and unmount commands must defined for a device which requires mount.\n"
-msgstr ""
-
-#: src/stored/dev.c:247
-#, c-format
-msgid "Min block size > max on device %s\n"
-msgstr ""
-
-#: 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:256
-#, c-format
-msgid "Max block size %u not multiple of device %s block size=%d.\n"
-msgstr ""
-
-#: src/stored/dev.c:260
-#, c-format
-msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
-msgstr ""
-
-#: 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: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:551
-#, c-format
-msgid "Could not open file device %s. No Volume name given.\n"
-msgstr ""
-
-#: src/stored/dev.c:574
-#, c-format
-msgid "Could not open: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:639
-#, c-format
-msgid "No tape loaded or drive offline on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:649
-#, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "Bad call to eod. Device %s not open\n"
-msgstr ""
-
-#: src/stored/dev.c:775
-#, c-format
-msgid "ioctl MTEOM error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:865
-msgid "Bad device call. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:877
-#, c-format
-msgid "Seek error: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:914
-msgid " Bacula status:"
-msgstr ""
-
-#: 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:923
-msgid " Device status:"
-msgstr ""
-
-#: src/stored/dev.c:1022
-msgid "Bad call to load_dev. Device not open\n"
-msgstr ""
-
-#: 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:1077
-#, c-format
-msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1118
-msgid "Bad call to fsf. Device not open\n"
-msgstr ""
-
-#: 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:1160 src/stored/dev.c:1236
-#, c-format
-msgid "ioctl MTFSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:1285
-msgid "Bad call to bsf. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1291
-#, c-format
-msgid "Device %s cannot BSF because it is not a tape.\n"
-msgstr ""
-
-#: src/stored/dev.c:1308
-#, c-format
-msgid "ioctl MTBSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1327
-msgid "Bad call to fsr. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1337
-#, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1365
-#, c-format
-msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1383
-msgid "Bad call to bsr_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1393
-#, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1407
-#, c-format
-msgid "ioctl MTBSR error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1458
-msgid "Bad call to reposition. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1537
-msgid "Bad call to weof_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1547
-msgid "Attempt to WEOF on non-appendable Volume\n"
-msgstr ""
-
-#: src/stored/dev.c:1565
-#, c-format
-msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1664
-#, c-format
-msgid "unknown func code %d"
-msgstr ""
-
-#: src/stored/dev.c:1670
-#, c-format
-msgid "I/O function \"%s\" not supported on this device.\n"
-msgstr ""
-
-#: src/stored/dev.c:1844
-#, c-format
-msgid "Unable to truncate device %s. ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:1861
-#, c-format
-msgid "Unable to stat device %s. ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:1875
-#, c-format
-msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1887
-#, c-format
-msgid "Could not reopen: %s, ERR=%s\n"
-msgstr ""
-
-#: 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:2481
-#, c-format
-msgid "Unable to set eotmodel on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:118
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -m                update media info in database\n"
-"       -D <driver name>  specify the driver database name (default NULL)\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password>     specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -t <port>         specify database port (default 0)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:278
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:282
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:296 src/stored/bscan.c:372
-#, c-format
-msgid "First Volume Size = %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:302 src/tools/bvfs_test.c:215 src/tools/bbatch.c:201
-#: src/tools/bbatch.c:250 src/tools/ing_test.c:191
-msgid "Could not init Bacula database\n"
-msgstr ""
-
-#: src/stored/bscan.c:309 src/tools/bvfs_test.c:224 src/tools/bbatch.c:257
-#: src/tools/ing_test.c:200
-#, c-format
-msgid "Using Database: %s, User: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:343
-#, c-format
-msgid "Create JobMedia for Job %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:353
-#, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:420
-#, c-format
-msgid "done: %d%%\n"
-msgstr ""
-
-#: src/stored/bscan.c:444
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
-msgstr ""
-
-#: src/stored/bscan.c:456
-#, c-format
-msgid "Pool record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:460
-#, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:466
-#, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:470
-#, c-format
-msgid "Pool type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:480
-#, c-format
-msgid "Media record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:487
-#, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:494
-#, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:498
-#, c-format
-msgid "Media type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:508
-#, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:515
-#, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:526
-#, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:531
-#, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:571
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:577
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:583
-#, c-format
-msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/bscan.c:647
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:658
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:670
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:701
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:766
-#, c-format
-msgid "Got MD5 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:774
-#, c-format
-msgid "Got SHA1 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:782
-#, c-format
-msgid "Got SHA256 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Got SHA512 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:798 src/stored/bscan.c:805
-msgid "Got signed digest record\n"
-msgstr ""
-
-#: src/stored/bscan.c:811
-#, c-format
-msgid "Got Prog Names Stream: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:817
-msgid "Got Prog Data Stream record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:862
-#, c-format
-msgid "Unknown stream type!!! stream=%d len=%i\n"
-msgstr ""
-
-#: src/stored/bscan.c:930
-#, c-format
-msgid "Could not create File Attributes record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:936
-#, c-format
-msgid "Created File record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:981
-#, c-format
-msgid "Could not create media record. ERR=%s\n"
-msgstr ""
-
-#: 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:989
-#, c-format
-msgid "Created Media record for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1010
-#, c-format
-msgid "Updated Media record at end of Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1027
-#, c-format
-msgid "Could not create pool record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1031
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1050
-#, c-format
-msgid "Could not get Client record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1060
-#, c-format
-msgid "Created Client record for Client: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1077
-#, c-format
-msgid "Fileset \"%s\" already exists.\n"
-msgstr ""
-
-#: src/stored/bscan.c:1081
-#, c-format
-msgid "Could not create FileSet record \"%s\". ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1086
-#, c-format
-msgid "Created FileSet record \"%s\"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1133
-#, c-format
-msgid "Could not create JobId record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1139
-#, c-format
-msgid "Could not update job start record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1142
-#, c-format
-msgid "Created new JobId=%u record for original JobId=%u\n"
-msgstr ""
-
-#: src/stored/bscan.c:1195
-#, c-format
-msgid "Could not update JobId=%u record. ERR=%s\n"
-msgstr ""
-
-#: 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:1225
-#, c-format
-msgid "Job Termination code: %d"
-msgstr ""
-
-#: src/stored/bscan.c:1230
-#, c-format
-msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1288
-#, c-format
-msgid "Could not create JobMedia record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1292
-#, c-format
-msgid "Created JobMedia record JobId %d, MediaId %d\n"
-msgstr ""
-
-#: 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:1322
-#, c-format
-msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1327
-msgid "Updated MD5/SHA1 record\n"
-msgstr ""
-
-#: src/stored/job.c:234
-#, c-format
-msgid "FD connect failed: Job name not found: %s\n"
-msgstr ""
-
-#: src/stored/job.c:244
-#, c-format
-msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
-msgstr ""
-
-#: src/stored/job.c:261
-msgid "Unable to authenticate File daemon\n"
-msgstr ""
-
-#: src/stored/job.c:390
-msgid "In free_jcr(), but still attached to device!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:185
-#, c-format
-msgid ""
-"\n"
-"\n"
-"!!!! Warning large disk addressing disabled. boffset_t=%d should be 8 or "
-"more !!!!!\n"
-"\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:192
-#, c-format
-msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:201
-msgid "64 bit printf/scanf problem. i=%d x64=%"
-msgstr ""
-
-#: src/stored/btape.c:206
-#, c-format
-msgid "Tape block granularity is %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:279
-msgid "No archive name specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:283
-msgid "Improper number of arguments specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:297
-msgid "btape does not work with DVD storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:302
-msgid "btape only works with tape storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:383
-#, c-format
-msgid "Total Volume bytes=%sB. Total Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:409
-#, c-format
-msgid "Volume bytes=%sB. Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:477
-#, c-format
-msgid "open device %s: OK\n"
-msgstr ""
-
-#: src/stored/btape.c:500
-msgid "Enter Volume Name: "
-msgstr ""
-
-#: src/stored/btape.c:507
-#, c-format
-msgid "Device open failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:512
-#, c-format
-msgid "Wrote Volume label for volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/btape.c:526
-msgid "Volume has no label.\n"
-msgstr ""
-
-#: src/stored/btape.c:529
-msgid "Volume label read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:532
-#, c-format
-msgid "I/O error on device: ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:535
-msgid "Volume name error\n"
-msgstr ""
-
-#: src/stored/btape.c:538
-#, c-format
-msgid "Error creating label. ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:541
-msgid "Volume version error.\n"
-msgstr ""
-
-#: src/stored/btape.c:544
-msgid "Bad Volume label type.\n"
-msgstr ""
-
-#: src/stored/btape.c:547
-msgid "Unknown error.\n"
-msgstr ""
-
-#: src/stored/btape.c:565
-#, c-format
-msgid "Bad status from load. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:567
-#, c-format
-msgid "Loaded %s\n"
-msgstr ""
-
-#: 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:1571
-#, c-format
-msgid "Rewound %s\n"
-msgstr ""
-
-#: src/stored/btape.c:605 src/stored/btape.c:1575
-#, c-format
-msgid "Bad status from weof. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:609
-#, c-format
-msgid "Wrote 1 EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:612
-#, c-format
-msgid "Wrote %d EOFs to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:630
-msgid "Moved to end of medium.\n"
-msgstr ""
-
-#: src/stored/btape.c:657
-#, c-format
-msgid "Bad status from bsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:659
-#, c-format
-msgid "Backspaced %d file%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:676
-#, c-format
-msgid "Bad status from bsr. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:678
-#, c-format
-msgid "Backspaced %d record%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:706
-#, c-format
-msgid "Device status:\n"
-msgstr ""
-
-#: src/stored/btape.c:725
-#, c-format
-msgid "Status:\n"
-msgstr ""
-
-#: src/stored/btape.c:740
-msgid ""
-"Test writing larger and larger records.\n"
-"This is a torture test for records.\n"
-"I am going to write\n"
-"larger and larger records. It will stop when the record size\n"
-"plus the header exceeds the block size (by default about 64K)\n"
-msgstr ""
-
-#: src/stored/btape.c:746
-msgid "Do you want to continue? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:748 src/stored/btape.c:2200
-msgid "Command aborted.\n"
-msgstr ""
-
-#: src/stored/btape.c:765
-#, c-format
-msgid "Block %d i=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:792
-msgid "Skipping read backwards test because BSR turned off.\n"
-msgstr ""
-
-#: src/stored/btape.c:796
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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: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:816
-#, c-format
-msgid "Wrote first record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:827
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:838
-#, c-format
-msgid "Wrote third record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:845 src/stored/btape.c:850
-#, c-format
-msgid "Backspace file failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:854
-msgid "Backspaced over EOF OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:856
-#, c-format
-msgid "Backspace record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:859
-msgid "Backspace record OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:862 src/stored/btape.c:868
-#, c-format
-msgid "Read block failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:873
-msgid "Bad data in record. Test failed!\n"
-msgstr ""
-
-#: src/stored/btape.c:877
-msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
-msgstr ""
-
-#: src/stored/btape.c:878
-msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
-msgstr ""
-
-#: 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"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
-msgstr ""
-
-#: 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:928 src/stored/btape.c:2879
-#, c-format
-msgid "Write failed at block %u. stat=%d ERR=%s\n"
-msgstr ""
-
-#: 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:971
-msgid ""
-"\n"
-"Error writing record to block.\n"
-msgstr ""
-
-#: src/stored/btape.c:975
-msgid ""
-"\n"
-"Error writing block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1030
-msgid "The file_size is too big, stop this test with Ctrl-c.\n"
-msgstr ""
-
-#: src/stored/btape.c:1058
-msgid "Test with zero data, should give the maximum throughput.\n"
-msgstr ""
-
-#: 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:1085
-msgid "Test with zero data and bacula block structure.\n"
-msgstr ""
-
-#: src/stored/btape.c:1125
-#, c-format
-msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write %d records and an EOF\n"
-"then write %d records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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:1215 src/stored/btape.c:1295
-msgid "Rewind OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1228 src/stored/btape.c:1347
-msgid "Got EOF on tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:1233
-#, c-format
-msgid "Read block %d failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1239
-#, c-format
-msgid "Read record failed. Block %d! ERR=%s\n"
-msgstr ""
-
-#: 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:1252
-#, c-format
-msgid "%d blocks re-read correctly.\n"
-msgstr ""
-
-#: 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:1283
-msgid "Block position test\n"
-msgstr ""
-
-#: src/stored/btape.c:1338
-#, c-format
-msgid "Reposition to file:block %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:1340
-msgid "Reposition error.\n"
-msgstr ""
-
-#: 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:1355
-msgid ""
-"This may be because the tape drive block size is not\n"
-" set to variable blocking as normally used by Bacula.\n"
-" Please see the Tape Testing chapter in the manual and \n"
-" look for using mt with defblksize and setoptions\n"
-"If your tape drive block size is correct, then perhaps\n"
-" your SCSI driver is *really* stupid and does not\n"
-" correctly report the file:block after a FSF. In this\n"
-" case try setting:\n"
-"    Fast Forward Space File = no\n"
-" in your Device resource.\n"
-msgstr ""
-
-#: src/stored/btape.c:1371
-#, c-format
-msgid "Read record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1382
-#, c-format
-msgid "Block %d re-read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:1403
-msgid ""
-"\n"
-"\n"
-"=== Append files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1427
-msgid "Now moving to end of medium.\n"
-msgstr ""
-
-#: 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: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: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:1436
-msgid ""
-"\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1443
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1444
-msgid "Doing Bacula scan of blocks:\n"
-msgstr ""
-
-#: src/stored/btape.c:1446
-msgid "End scanning the tape.\n"
-msgstr ""
-
-#: 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:1472
-msgid ""
-"\n"
-"Autochanger enabled, but no name or no command device specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:1476
-msgid ""
-"\n"
-"Ah, I see you have an autochanger configured.\n"
-"To test the autochanger you must have a blank tape\n"
-" that I can write on in Slot 1.\n"
-msgstr ""
-
-#: src/stored/btape.c:1479
-msgid ""
-"\n"
-"Do you wish to continue with the Autochanger test? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:1486
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1495
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1504
-#, c-format
-msgid "3991 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1505
-#, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1509
-#, c-format
-msgid "Slot %d loaded. I am going to unload it.\n"
-msgstr ""
-
-#: src/stored/btape.c:1511
-msgid "Nothing loaded in the drive. OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1518
-#, c-format
-msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-#, c-format
-msgid "unload status=%s %d\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-msgid "Bad"
-msgstr ""
-
-#: src/stored/btape.c:1526
-#, c-format
-msgid "3992 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1527
-#, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1537
-#, c-format
-msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1545
-#, c-format
-msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1549
-#, c-format
-msgid "3993 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1550
-#, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1565
-msgid ""
-"\n"
-"The test failed, probably because you need to put\n"
-"a longer sleep time in the mtx-script in the load) case.\n"
-"Adding a 30 second sleep and trying again ...\n"
-msgstr ""
-
-#: src/stored/btape.c:1578
-#, c-format
-msgid "Wrote EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1582
-#, c-format
-msgid ""
-"\n"
-"The test worked this time. Please add:\n"
-"\n"
-"   sleep %d\n"
-"\n"
-"to your mtx-changer script in the load) case.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1587
-msgid ""
-"\n"
-"The test autochanger worked!!\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1598
-msgid "You must correct this error or the Autochanger will not work.\n"
-msgstr ""
-
-#: src/stored/btape.c:1616
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1641
-msgid "Now forward spacing 1 file.\n"
-msgstr ""
-
-#: 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:1646
-#, c-format
-msgid "We should be in file 1. I am at file %d. %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1653
-msgid "Now forward spacing 2 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1666
-msgid "Now forward spacing 4 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1678
-msgid ""
-"The test worked this time. Please add:\n"
-"\n"
-"   Fast Forward Space File = no\n"
-"\n"
-"to your Device resource for this drive.\n"
-msgstr ""
-
-#: src/stored/btape.c:1684
-msgid "Now forward spacing 1 more file.\n"
-msgstr ""
-
-#: 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:1693
-msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1697
-msgid ""
-"\n"
-"The forward space file test failed.\n"
-msgstr ""
-
-#: 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:1705
-msgid ""
-"You must correct this error or Bacula will not work.\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1739
-msgid ""
-"\n"
-"Append test failed. Attempting again.\n"
-"Setting \"Hardware End of Medium = no\n"
-"    and \"Fast Forward Space File = no\n"
-"and retrying append test.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1747
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"\n"
-"    Fast Forward Space File = No\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1754
-msgid ""
-"\n"
-"\n"
-"That appears *NOT* to have corrected the problem.\n"
-msgstr ""
-
-#: src/stored/btape.c:1759
-msgid ""
-"\n"
-"\n"
-"It looks like the append failed. Attempting again.\n"
-"Setting \"BSF at EOM = yes\" and retrying append test.\n"
-msgstr ""
-
-#: src/stored/btape.c:1764
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"    Fast Forward Space File = No\n"
-"    BSF at EOM = yes\n"
-"\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1775
-msgid ""
-"\n"
-"Append test failed.\n"
-"\n"
-"\n"
-"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
-"Unable to correct the problem. You MUST fix this\n"
-"problem before Bacula can use your tape drive correctly\n"
-"\n"
-"Perhaps running Bacula in fixed block mode will work.\n"
-"Do so by setting:\n"
-"\n"
-"Minimum Block Size = nnn\n"
-"Maximum Block Size = nnn\n"
-"\n"
-"in your Storage daemon's Device definition.\n"
-"nnn must match your tape driver's block size, which\n"
-"can be determined by reading your tape manufacturers\n"
-"information, and the information on your kernel dirver.\n"
-"Fixed block sizes, however, are not normally an ideal solution.\n"
-"\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1797
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1840
-#, c-format
-msgid "Bad status from fsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1844
-msgid "Forward spaced 1 file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1847
-#, c-format
-msgid "Forward spaced %d files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1866
-msgid "Forward spaced 1 record.\n"
-msgstr ""
-
-#: src/stored/btape.c:1869
-#, c-format
-msgid "Forward spaced %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:1914
-#, c-format
-msgid "Wrote one record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1916
-msgid "Wrote block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1930
-msgid "Enter length to read: "
-msgstr ""
-
-#: src/stored/btape.c:1935
-msgid "Bad length entered, using default of 1024 bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1944
-#, c-format
-msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1967 src/stored/btape.c:2016
-#, c-format
-msgid "End of tape\n"
-msgstr ""
-
-#: src/stored/btape.c:1972
-#, c-format
-msgid "Starting scan at file %u\n"
-msgstr ""
-
-#: src/stored/btape.c:1979
-#, c-format
-msgid "Bad status from read %d. ERR=%s\n"
-msgstr ""
-
-#: 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: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:2007 src/stored/btape.c:2079
-#, c-format
-msgid "End of File mark.\n"
-msgstr ""
-
-#: 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:2092
-#, c-format
-msgid "Short block read.\n"
-msgstr ""
-
-#: src/stored/btape.c:2095
-#, c-format
-msgid "Error reading block. ERR=%s\n"
-msgstr ""
-
-#: 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:2141
-#, c-format
-msgid "Device status: %u. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2173
-#, c-format
-msgid ""
-"\n"
-"This command simulates Bacula writing to a tape.\n"
-"It requires either one or two blank tapes, which it\n"
-"will label and write.\n"
-"\n"
-"If you have an autochanger configured, it will use\n"
-"the tapes that are in slots 1 and 2, otherwise, you will\n"
-"be prompted to insert the tapes when necessary.\n"
-"\n"
-"It will print a status approximately\n"
-"every 322 MB, and write an EOF every %s.  If you have\n"
-"selected the simple test option, after writing the first tape\n"
-"it will rewind it and re-read the last block written.\n"
-"\n"
-"If you have selected the multiple tape test, when the first tape\n"
-"fills, it will ask for a second, and after writing a few more \n"
-"blocks, it will stop.  Then it will begin re-reading the\n"
-"two tapes.\n"
-"\n"
-"This may take a long time -- hours! ...\n"
-"\n"
-msgstr ""
-
-#: 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:2194
-msgid "Simple test (single tape) selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2197
-msgid "Multiple tape test selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2239
-msgid "Wrote Start of Session label.\n"
-msgstr ""
-
-#: src/stored/btape.c:2258
-#, c-format
-msgid "%s Begin writing Bacula records to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2260
-#, c-format
-msgid "%s Begin writing Bacula records to first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2286
-msgid "Flush block failed.\n"
-msgstr ""
-
-#: 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:2311
-#, c-format
-msgid "%s Flush block, write EOF\n"
-msgstr ""
-
-#: src/stored/btape.c:2320
-msgid "Wrote 1000 blocks on second tape. Done.\n"
-msgstr ""
-
-#: src/stored/btape.c:2325
-msgid "Not OK\n"
-msgstr ""
-
-#: src/stored/btape.c:2349
-msgid "Job canceled.\n"
-msgstr ""
-
-#: src/stored/btape.c:2360
-msgid "Set ok=false after write_block_to_device.\n"
-msgstr ""
-
-#: src/stored/btape.c:2364
-msgid "Wrote End of Session label.\n"
-msgstr ""
-
-#: 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:2392
-#, c-format
-msgid "Could not create state file: %s ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2403
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2406
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2412
-msgid "do_unfill failed.\n"
-msgstr ""
-
-#: src/stored/btape.c:2417
-#, c-format
-msgid "%s: Error during test.\n"
-msgstr ""
-
-#: 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:2459
-#, c-format
-msgid ""
-"\n"
-"Could not find the state file: %s ERR=%s\n"
-"You must redo the fill command.\n"
-msgstr ""
-
-#: src/stored/btape.c:2525
-msgid "Mount first tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2541
-msgid "Rewinding.\n"
-msgstr ""
-
-#: src/stored/btape.c:2546
-#, c-format
-msgid "Reading the first 10000 records from %u:%u.\n"
-msgstr ""
-
-#: 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:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
-#, c-format
-msgid "Reposition error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2556
-#, c-format
-msgid "Reading block %u.\n"
-msgstr ""
-
-#: 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:2563
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2566
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2590
-msgid "Mount second tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2603
-#, c-format
-msgid "Reposition from %u:%u to 0:1\n"
-msgstr ""
-
-#: src/stored/btape.c:2608 src/stored/btape.c:2624
-#, c-format
-msgid "Reading block %d.\n"
-msgstr ""
-
-#: src/stored/btape.c:2614
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2630
-msgid ""
-"\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2647
-#, c-format
-msgid "10000 records read now at %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
-msgid "Last block written"
-msgstr ""
-
-#: src/stored/btape.c:2675 src/stored/btape.c:2685
-msgid "Block read back"
-msgstr ""
-
-#: src/stored/btape.c:2676
-#, c-format
-msgid ""
-"\n"
-"\n"
-"The blocks differ at byte %u\n"
-msgstr ""
-
-#: src/stored/btape.c:2677
-msgid ""
-"\n"
-"\n"
-"!!!! The last block written and the block\n"
-"that was read back differ. The test FAILED !!!!\n"
-"This must be corrected before you use Bacula\n"
-"to write multi-tape Volumes.!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:2713
-#, c-format
-msgid "Last block at: %u:%u this_dev_block_num=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2727
-#, c-format
-msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:2731
-msgid "Block not written"
-msgstr ""
-
-#: 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:2797
-msgid "Test writing blocks of 64512 bytes to tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:2799
-msgid "How many blocks do you want to write? (1000): "
-msgstr ""
-
-#: src/stored/btape.c:2816
-#, c-format
-msgid "Begin writing %d Bacula blocks to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2859
-#, c-format
-msgid "Begin writing raw blocks of %u bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:2890
-msgid "test autochanger"
-msgstr ""
-
-#: src/stored/btape.c:2891
-msgid "backspace file"
-msgstr ""
-
-#: src/stored/btape.c:2892
-msgid "backspace record"
-msgstr ""
-
-#: src/stored/btape.c:2893
-msgid "list device capabilities"
-msgstr ""
-
-#: src/stored/btape.c:2894
-msgid "clear tape errors"
-msgstr ""
-
-#: src/stored/btape.c:2895
-msgid "go to end of Bacula data for append"
-msgstr ""
-
-#: src/stored/btape.c:2896
-msgid "go to the physical end of medium"
-msgstr ""
-
-#: src/stored/btape.c:2897
-msgid "fill tape, write onto second volume"
-msgstr ""
-
-#: src/stored/btape.c:2898
-msgid "read filled tape"
-msgstr ""
-
-#: src/stored/btape.c:2899
-msgid "forward space a file"
-msgstr ""
-
-#: src/stored/btape.c:2900
-msgid "forward space a record"
-msgstr ""
-
-#: src/stored/btape.c:2901
-msgid "print this command"
-msgstr ""
-
-#: src/stored/btape.c:2902
-msgid "write a Bacula label to the tape"
-msgstr ""
-
-#: src/stored/btape.c:2903
-msgid "load a tape"
-msgstr ""
-
-#: src/stored/btape.c:2904
-msgid "quit btape"
-msgstr ""
-
-#: src/stored/btape.c:2905
-msgid "use write() to fill tape"
-msgstr ""
-
-#: src/stored/btape.c:2906
-msgid "read and print the Bacula tape label"
-msgstr ""
-
-#: src/stored/btape.c:2907
-msgid "test record handling functions"
-msgstr ""
-
-#: src/stored/btape.c:2908
-msgid "rewind the tape"
-msgstr ""
-
-#: src/stored/btape.c:2909
-msgid "read() tape block by block to EOT and report"
-msgstr ""
-
-#: src/stored/btape.c:2910
-msgid "Bacula read block by block to EOT and report"
-msgstr ""
-
-#: 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:2912
-msgid "print tape status"
-msgstr ""
-
-#: src/stored/btape.c:2913
-msgid "General test Bacula tape functions"
-msgstr ""
-
-#: src/stored/btape.c:2914
-msgid "write an EOF on the tape"
-msgstr ""
-
-#: src/stored/btape.c:2915
-msgid "write a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2916
-msgid "read a single record"
-msgstr ""
-
-#: src/stored/btape.c:2917
-msgid "read a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2918
-msgid "quick fill command"
-msgstr ""
-
-#: src/stored/btape.c:2939
-#, c-format
-msgid "\"%s\" is an invalid command\n"
-msgstr ""
-
-#: src/stored/btape.c:2948
-#, c-format
-msgid "Interactive commands:\n"
-msgstr ""
-
-#: src/stored/btape.c:2959
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap 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"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:3047
-#, c-format
-msgid "Mount second Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3075
-#, c-format
-msgid "Mount blank Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3095
-#, c-format
-msgid "End of Volume \"%s\" %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:3109
-#, c-format
-msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:61
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
-msgstr ""
-
-#: src/stored/authenticate.c:67 src/filed/authenticate.c:76
-#, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:78 src/filed/authenticate.c:88
-#, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:92
-#, c-format
-msgid ""
-"Connection from unknown Director %s at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:129
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:137 src/stored/authenticate.c:248
-#: src/filed/authenticate.c:151 src/filed/authenticate.c:270
-msgid ""
-"Authorization problem: Remote server did not advertize required TLS "
-"support.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:155
-#, c-format
-msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
-msgstr ""
-
-#: src/stored/authenticate.c:191
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:239 src/stored/authenticate.c:279
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:266
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
-msgstr ""
-
-#: src/stored/wait.c:133
-#, c-format
-msgid "pthread timedwait error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/wait.c:239
-#, c-format
-msgid "JobId=%s, Job %s waiting to reserve a device.\n"
-msgstr ""
-
-#: 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:115
-#, c-format
-msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
-msgstr ""
-
-#: src/stored/block.c:171
-#, c-format
-msgid "%d block read errors not printed.\n"
-msgstr ""
-
-#: 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: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: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:452
-#, c-format
-msgid "Cannot write block. Device at EOM. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:458
-#, c-format
-msgid "Attempt to write on read-only Volume. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:464
-#, c-format
-msgid "Attempt to write on closed device=%s\n"
-msgstr ""
-
-#: src/stored/block.c:513
-#, c-format
-msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
-msgstr ""
-
-#: src/stored/block.c:528
-#, c-format
-msgid "Unable to write EOF. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:554 src/stored/block.c:588
-msgid "Write block header zeroed.\n"
-msgstr ""
-
-#: 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: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:695 src/stored/block.c:701
-#, c-format
-msgid "Backspace file at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:708
-#, c-format
-msgid "Backspace record at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:725
-#, c-format
-msgid "Re-read last block at EOT failed. ERR=%s"
-msgstr ""
-
-#: 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: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:744
-msgid "Re-read of last block succeeded.\n"
-msgstr ""
-
-#: 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:791
-#, c-format
-msgid ""
-"Error writing final part to DVD. This Volume may not be readable.\n"
-"%s"
-msgstr ""
-
-#: 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:904
-#, c-format
-msgid "Unable to open device next part %s: ERR=%s\n"
-msgstr ""
-
-#: 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: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: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:1017
-#, c-format
-msgid "Unable to open device part=%d %s: ERR=%s\n"
-msgstr ""
-
-#: 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:1057
-#, c-format
-msgid "Read zero bytes at %u:%u on device %s.\n"
-msgstr ""
-
-#: 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:1107
-#, c-format
-msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
-msgstr ""
-
-#: src/stored/block.c:1127
-#, c-format
-msgid "Setting block buffer size to %u bytes.\n"
-msgstr ""
-
-#: 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:117
-#, c-format
-msgid "Failed to open Plugin directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:134
-#, c-format
-msgid "Failed to find any plugins in %s\n"
-msgstr ""
-
-#: src/lib/plugins.c:168
-#, c-format
-msgid "dlopen plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:179
-#, c-format
-msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:188
-#, c-format
-msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:116
-msgid "Could not initialize Python\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:121
-#, c-format
-msgid "Could not Run Python string %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:133
-msgid "Could not initialize Python Job type.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:138
-#, c-format
-msgid "Could not import Python script %s/%s. Python disabled.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:240
-msgid "Could not create Python Job Object.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:253 src/lib/pythonlib.c:277
-#, c-format
-msgid "Python function \"%s\" not found.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:292
-#, c-format
-msgid "Unknown Python daemon event %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:317
-#, c-format
-msgid "Unable to initialize the Python lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:96
-#, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:193
-msgid "BUG! register_watchdog called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:196
-#, c-format
-msgid "BUG! Watchdog %p has NULL callback\n"
-msgstr ""
-
-#: src/lib/watchdog.c:199
-#, c-format
-msgid "BUG! Watchdog %p has zero interval\n"
-msgstr ""
-
-#: src/lib/watchdog.c:219
-msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:339
-#, c-format
-msgid "rwl_writelock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:354
-#, c-format
-msgid "rwl_writeunlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/attr.c:81
-#, c-format
-msgid "Error scanning attributes: %s\n"
-msgstr ""
-
-#: src/lib/smartall.c:145 src/lib/smartall.c:256 src/lib/smartall.c:271
-msgid "Out of memory\n"
-msgstr ""
-
-#: src/lib/smartall.c:150
-msgid "Too much memory used."
-msgstr ""
-
-#: src/lib/smartall.c:180
-#, c-format
-msgid "Attempt to free NULL called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:194
-#, c-format
-msgid "double free from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:202
-#, c-format
-msgid "qp->qnext->qprev != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:206
-#, c-format
-msgid "qp->qprev->qnext != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:215
-#, c-format
-msgid "Overrun buffer: len=%d addr=%p allocated: %s:%d called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:293
-#, c-format
-msgid "sm_realloc size: %d\n"
-msgstr ""
-
-#: src/lib/smartall.c:331
-#, c-format
-msgid "sm_realloc %d at %p from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:391
-#, c-format
-msgid ""
-"\n"
-"Orphaned buffers exist.  Dump terminated following\n"
-"  discovery of bad links in chain of orphaned buffers.\n"
-"  Buffer address with bad links: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:436
-#, c-format
-msgid "Damaged buffer found. Called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:469
-#, c-format
-msgid ""
-"\n"
-"Damaged buffers found at %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:472
-msgid "  discovery of bad prev link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:475
-msgid "  discovery of bad next link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:478
-msgid "  discovery of data overrun.\n"
-msgstr ""
-
-#: src/lib/smartall.c:481
-msgid "  NULL pointer.\n"
-msgstr ""
-
-#: src/lib/smartall.c:487
-#, c-format
-msgid "  Buffer address: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:494
-#, c-format
-msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
-msgstr ""
-
-#: 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: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: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: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: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:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
-msgid "Try write lock"
-msgstr ""
-
-#: 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:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
-msgid "Create thread"
-msgstr ""
-
-#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
-msgid "Join thread"
-msgstr ""
-
-#: 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:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
-#, c-format
-msgid "data %02d: value %d, %d updates\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:97
-msgid "Status OK\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:101
-#, c-format
-msgid "bget_msg: unknown signal %d\n"
-msgstr ""
-
-#: 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:137
-#, c-format
-msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:207
-#, c-format
-msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:260
-#, c-format
-msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:273
-#, c-format
-msgid "Source address bind error. proto=%d. ERR=%s\n"
-msgstr ""
-
-#: 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:292
-#, c-format
-msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
-msgstr ""
-
-#: src/lib/bsock.c:339
-#, c-format
-msgid "Could not init bsock mutex. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:374
-#, c-format
-msgid "Socket has errors=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:381
-#, c-format
-msgid "Socket is terminated=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: 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:427
-#, c-format
-msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
-msgstr ""
-
-#: 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:522 src/lib/bsock.c:583
-#, c-format
-msgid "Read expected %d got %d from %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:542
-#, c-format
-msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
-msgstr ""
-
-#: src/lib/bsock.c:572
-#, c-format
-msgid "Read error from %s:%s:%d: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:663
-msgid "fread attr spool I/O error.\n"
-msgstr ""
-
-#: src/lib/bsock.c:724
-msgid "Could not malloc BSOCK data buffer\n"
-msgstr ""
-
-#: src/lib/bsock.c:742 src/lib/bsock.c:761
-#, c-format
-msgid "sockopt error: %s\n"
-msgstr ""
-
-#: 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:787 src/lib/bsock.c:821
-#, c-format
-msgid "fcntl F_GETFL error. ERR=%s\n"
-msgstr ""
-
-#: 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:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
-#, c-format
-msgid "Director authorization problem at \"%s:%d\"\n"
-msgstr ""
-
-#: 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: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: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: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: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:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
-#, c-format
-msgid ""
-"Authorization problem with Director at \"%s:%d\"\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-
-#: 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:377
-#, c-format
-msgid "Could not get con mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:482
-msgid "Bacula Message"
-msgstr ""
-
-#: src/lib/message.c:486
-#, c-format
-msgid "open mail pipe %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:577
-msgid "open mail pipe failed.\n"
-msgstr ""
-
-#: src/lib/message.c:590
-#, c-format
-msgid "close error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:601
-#, c-format
-msgid "Mail prog: %s"
-msgstr ""
-
-#: src/lib/message.c:610
-#, c-format
-msgid ""
-"Mail program terminated in error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:713
-#, c-format
-msgid "fopen %s failed: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:911
-#, c-format
-msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:1230
-#, c-format
-msgid "%s: ABORTING due to ERROR in %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1234
-#, c-format
-msgid "%s: ERROR TERMINATION at %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1239
-#, c-format
-msgid "%s: Fatal Error because: "
-msgstr ""
-
-#: src/lib/message.c:1241
-#, c-format
-msgid "%s: Fatal Error at %s:%d because:\n"
-msgstr ""
-
-#: src/lib/message.c:1245
-#, c-format
-msgid "%s: ERROR: "
-msgstr ""
-
-#: src/lib/message.c:1247
-#, c-format
-msgid "%s: ERROR in %s:%d "
-msgstr ""
-
-#: src/lib/message.c:1250
-#, c-format
-msgid "%s: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1253
-#, c-format
-msgid "%s: Security violation: "
-msgstr ""
-
-#: src/lib/message.c:1341
-#, c-format
-msgid "%s ABORTING due to ERROR\n"
-msgstr ""
-
-#: src/lib/message.c:1344
-#, c-format
-msgid "%s ERROR TERMINATION\n"
-msgstr ""
-
-#: src/lib/message.c:1347
-#, c-format
-msgid "%s JobId %u: Fatal error: "
-msgstr ""
-
-#: src/lib/message.c:1356
-#, c-format
-msgid "%s JobId %u: Error: "
-msgstr ""
-
-#: src/lib/message.c:1362
-#, c-format
-msgid "%s JobId %u: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1368
-#, c-format
-msgid "%s JobId %u: Security violation: "
-msgstr ""
-
-#: 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:138
-#, c-format
-msgid "Cannot set SO_REUSEADDR on socket: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:147
-#, c-format
-msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:152
-#, c-format
-msgid "Cannot bind port %d: ERR=%s.\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:163
-#, c-format
-msgid "Could not init client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:182
-#, c-format
-msgid "Error in select: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:203
-#, c-format
-msgid "Connection from %s:%d refused by hosts.access\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:229
-msgid "Could not create client BSOCK.\n"
-msgstr ""
-
-#: 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:253
-#, c-format
-msgid "Could not destroy client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bpipe.c:361 src/lib/bpipe.c:444
-msgid "Program killed by Bacula (timeout)\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:65
-#, c-format
-msgid "ASSERT failed at %s:%i: %s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:70
-#, c-format
-msgid "ASSERT failed at %s:%i: %s \n"
-msgstr ""
-
-#: src/lib/lockmgr.c:100
-#, c-format
-msgid "Mutex lock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:110
-#, c-format
-msgid "Mutex unlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:275 src/lib/lockmgr.c:611 src/lib/lockmgr.c:639
-#: src/lib/jcr.c:321
-#, c-format
-msgid "pthread key create failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:623
-#, c-format
-msgid "pthread_create failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/crypto.c:442
-msgid "Unable to open certificate file"
-msgstr ""
-
-#: src/lib/crypto.c:449
-msgid "Unable to read certificate from file"
-msgstr ""
-
-#: src/lib/crypto.c:455
-msgid "Unable to extract public key from certificate"
-msgstr ""
-
-#: src/lib/crypto.c:462
-msgid ""
-"Provided certificate does not include the required subjectKeyIdentifier "
-"extension."
-msgstr ""
-
-#: src/lib/crypto.c:469
-#, c-format
-msgid "Unsupported key type provided: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:506 src/lib/crypto.c:554
-msgid "Unable to open private key file"
-msgstr ""
-
-#: src/lib/crypto.c:536 src/lib/crypto.c:570
-msgid "Unable to read private key from file"
-msgstr ""
-
-#: src/lib/crypto.c:629
-#, c-format
-msgid "Unsupported digest type: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:643
-msgid "OpenSSL digest initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:657
-msgid "OpenSSL digest update failed"
-msgstr ""
-
-#: src/lib/crypto.c:675
-msgid "OpenSSL digest finalize failed"
-msgstr ""
-
-#: src/lib/crypto.c:773
-msgid "OpenSSL digest_new failed"
-msgstr ""
-
-#: src/lib/crypto.c:779
-msgid "OpenSSL sign get digest failed"
-msgstr ""
-
-#: src/lib/crypto.c:818 src/lib/crypto.c:822
-msgid "OpenSSL digest Verify final failed"
-msgstr ""
-
-#: src/lib/crypto.c:827
-msgid "No signers found for crypto verify.\n"
-msgstr ""
-
-#: src/lib/crypto.c:888
-msgid "Signature creation failed"
-msgstr ""
-
-#: src/lib/crypto.c:966
-msgid "Signature decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1043
-msgid "Unsupported cipher type specified\n"
-msgstr ""
-
-#: src/lib/crypto.c:1192
-msgid "CryptoData decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1236
-msgid "Failure decrypting the session key"
-msgstr ""
-
-#: src/lib/crypto.c:1287
-#, c-format
-msgid "Unsupported contentEncryptionAlgorithm: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1297 src/lib/crypto.c:1303
-msgid "OpenSSL cipher context initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1310
-msgid "Encryption session provided an invalid symmetric key"
-msgstr ""
-
-#: src/lib/crypto.c:1316
-msgid "Encryption session provided an invalid IV"
-msgstr ""
-
-#: src/lib/crypto.c:1322
-msgid "OpenSSL cipher context key/IV initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1392
-#, c-format
-msgid "Unable to init OpenSSL threading: ERR=%s\n"
-msgstr ""
-
-#: src/lib/crypto.c:1405
-msgid "Failed to seed OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1431
-msgid "Failed to save OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1492
-#, c-format
-msgid "Unsupported digest type=%d specified\n"
-msgstr ""
-
-#: src/lib/crypto.c:1512
-#, c-format
-msgid "SHA1Update() returned an error: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1655
-msgid "No error"
-msgstr ""
-
-#: src/lib/crypto.c:1657
-msgid "Signer not found"
-msgstr ""
-
-#: src/lib/crypto.c:1659
-msgid "Recipient not found"
-msgstr ""
-
-#: src/lib/crypto.c:1661
-msgid "Unsupported digest algorithm"
-msgstr ""
-
-#: src/lib/crypto.c:1663
-msgid "Unsupported encryption algorithm"
-msgstr ""
-
-#: src/lib/crypto.c:1665
-msgid "Signature is invalid"
-msgstr ""
-
-#: src/lib/crypto.c:1667
-msgid "Decryption error"
-msgstr ""
-
-#: src/lib/crypto.c:1670
-msgid "Internal error"
-msgstr ""
-
-#: src/lib/crypto.c:1672
-msgid "Unknown error"
-msgstr ""
-
-#: src/lib/cram-md5.c:109 src/lib/cram-md5.c:137
-msgid "1999 Authorization failed.\n"
-msgstr ""
-
-#: src/lib/priv.c:68
-#, c-format
-msgid "Could not find userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:74
-#, c-format
-msgid "Could not find password entry. ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:87
-#, c-format
-msgid "Could not find group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:95
-#, c-format
-msgid "Could not initgroups for group=%s, userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:98
-#, c-format
-msgid "Could not initgroups for userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:105
-#, c-format
-msgid "Could not set group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:115
-#, c-format
-msgid "prctl failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:119
-#, c-format
-msgid "setreuid failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:123
-#, c-format
-msgid "cap_from_text failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:127
-#, c-format
-msgid "cap_set_proc failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:131
-msgid "Keep readall caps not implemented this OS or missing libraries.\n"
-msgstr ""
-
-#: src/lib/priv.c:135
-#, c-format
-msgid "Could not set specified userid: %s\n"
-msgstr ""
-
-#: src/lib/openssl.c:143 src/lib/openssl.c:214
-#, c-format
-msgid "Unable to destroy mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/util.c:183
-msgid "Running"
-msgstr ""
-
-#: src/lib/util.c:186
-msgid "Blocked"
-msgstr ""
-
-#: src/lib/util.c:192
-msgid "Error: incomplete job"
-msgstr ""
-
-#: src/lib/util.c:199
-msgid "Non-fatal error"
-msgstr ""
-
-#: src/lib/util.c:205 src/lib/util.c:337
-msgid "Canceled"
-msgstr ""
-
-#: src/lib/util.c:208
-msgid "Verify differences"
-msgstr ""
-
-#: src/lib/util.c:211
-msgid "Waiting on FD"
-msgstr ""
-
-#: src/lib/util.c:214
-msgid "Wait on SD"
-msgstr ""
-
-#: src/lib/util.c:217
-msgid "Wait for new Volume"
-msgstr ""
-
-#: src/lib/util.c:220
-msgid "Waiting for mount"
-msgstr ""
-
-#: src/lib/util.c:223
-msgid "Waiting for Storage resource"
-msgstr ""
-
-#: src/lib/util.c:226
-msgid "Waiting for Job resource"
-msgstr ""
-
-#: src/lib/util.c:229
-msgid "Waiting for Client resource"
-msgstr ""
-
-#: src/lib/util.c:232
-msgid "Waiting on Max Jobs"
-msgstr ""
-
-#: src/lib/util.c:235
-msgid "Waiting for Start Time"
-msgstr ""
-
-#: src/lib/util.c:238
-msgid "Waiting on Priority"
-msgstr ""
-
-#: src/lib/util.c:257
-#, c-format
-msgid "Unknown Job termination status=%d"
-msgstr ""
-
-#: src/lib/util.c:273
-msgid "Completed successfully"
-msgstr ""
-
-#: src/lib/util.c:276
-msgid "Completed with warnings"
-msgstr ""
-
-#: src/lib/util.c:279
-msgid "Terminated with errors"
-msgstr ""
-
-#: src/lib/util.c:282
-msgid "Fatal error"
-msgstr ""
-
-#: src/lib/util.c:285
-msgid "Created, not yet running"
-msgstr ""
-
-#: src/lib/util.c:288
-msgid "Canceled by user"
-msgstr ""
-
-#: src/lib/util.c:291
-msgid "Verify found differences"
-msgstr ""
-
-#: src/lib/util.c:294
-msgid "Waiting for File daemon"
-msgstr ""
-
-#: src/lib/util.c:297
-msgid "Waiting for Storage daemon"
-msgstr ""
-
-#: src/lib/util.c:300
-msgid "Waiting for higher priority jobs"
-msgstr ""
-
-#: src/lib/util.c:303
-msgid "Batch inserting file records"
-msgstr ""
-
-#: src/lib/util.c:334
-msgid "Fatal Error"
-msgstr ""
-
-#: src/lib/util.c:340
-msgid "Differences"
-msgstr ""
-
-#: src/lib/util.c:343
-msgid "Unknown term code"
-msgstr ""
-
-#: src/lib/util.c:359 src/lib/jcr.c:232
-msgid "Backup"
-msgstr ""
-
-#: src/lib/util.c:362
-msgid "Migrated Job"
-msgstr ""
-
-#: src/lib/util.c:365
-msgid "Verify"
-msgstr ""
-
-#: src/lib/util.c:368 src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:2000
-msgid "Restore"
-msgstr ""
-
-#: src/lib/util.c:371 src/wx-console/wxbmainframe.cpp:276
-msgid "Console"
-msgstr ""
-
-#: src/lib/util.c:374
-msgid "System or Console"
-msgstr ""
-
-#: src/lib/util.c:377
-msgid "Admin"
-msgstr ""
-
-#: src/lib/util.c:380 src/lib/util.c:470
-msgid "Archive"
-msgstr ""
-
-#: src/lib/util.c:383
-msgid "Job Copy"
-msgstr ""
-
-#: src/lib/util.c:386
-msgid "Copy"
-msgstr ""
-
-#: src/lib/util.c:389
-msgid "Migrate"
-msgstr ""
-
-#: src/lib/util.c:392
-msgid "Scan"
-msgstr ""
-
-#: src/lib/util.c:396
-msgid "Unknown Type"
-msgstr ""
-
-#: src/lib/util.c:406
-msgid "Truncate"
-msgstr ""
-
-#: src/lib/util.c:409 src/filed/restore.c:1164
-msgid "None"
-msgstr ""
-
-#: src/lib/util.c:441
-msgid "Verify Init Catalog"
-msgstr ""
-
-#: src/lib/util.c:450
-msgid "Verify Data"
-msgstr ""
-
-#: src/lib/util.c:453
-msgid "Virtual Full"
-msgstr ""
-
-#: src/lib/util.c:469
-msgid "Append"
-msgstr ""
-
-#: src/lib/util.c:471
-msgid "Disabled"
-msgstr ""
-
-#: src/lib/util.c:473
-msgid "Used"
-msgstr ""
-
-#: src/lib/util.c:474
-msgid "Cleaning"
-msgstr ""
-
-#: src/lib/util.c:475
-msgid "Purged"
-msgstr ""
-
-#: src/lib/util.c:476
-msgid "Recycle"
-msgstr ""
-
-#: src/lib/util.c:477
-msgid "Read-Only"
-msgstr ""
-
-#: src/lib/util.c:489
-msgid "Invalid volume status"
-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:1180
-msgid "*none*"
-msgstr ""
-
-#: src/lib/util.c:867
-msgid "Working directory not defined. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:870
-#, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:874
-#, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:330 src/lib/devlock.c:330
-msgid "writeunlock called too many times.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:335 src/lib/devlock.c:335
-msgid "writeunlock by non-owner.\n"
-msgstr ""
-
-#: src/lib/daemon.c:65
-#, c-format
-msgid "Cannot fork to become daemon: ERR=%s\n"
-msgstr ""
-
-#: src/lib/tls.c:90
-#, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
-msgstr ""
-
-#: src/lib/tls.c:127
-msgid "Error initializing SSL context"
-msgstr ""
-
-#: src/lib/tls.c:148
-msgid "Error loading certificate verification stores"
-msgstr ""
-
-#: src/lib/tls.c:153
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
-msgstr ""
-
-#: src/lib/tls.c:164
-msgid "Error loading certificate file"
-msgstr ""
-
-#: src/lib/tls.c:172
-msgid "Error loading private key"
-msgstr ""
-
-#: src/lib/tls.c:180
-msgid "Unable to open DH parameters file"
-msgstr ""
-
-#: src/lib/tls.c:186
-msgid "Unable to load DH parameters from specified file"
-msgstr ""
-
-#: src/lib/tls.c:190
-msgid "Failed to set TLS Diffie-Hellman parameters"
-msgstr ""
-
-#: src/lib/tls.c:200
-msgid "Error setting cipher list, no valid ciphers available\n"
-msgstr ""
-
-#: src/lib/tls.c:259
-msgid "Peer failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:304
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:416
-msgid "Error creating file descriptor-based BIO"
-msgstr ""
-
-#: src/lib/tls.c:427
-msgid "Error creating new SSL object"
-msgstr ""
-
-#: src/lib/tls.c:491 src/lib/tls.c:514
-msgid "Connect failure"
-msgstr ""
-
-#: src/lib/tls.c:594 src/lib/tls.c:598
-msgid "TLS shutdown failure."
-msgstr ""
-
-#: src/lib/tls.c:653 src/lib/tls.c:679
-msgid "TLS read/write failure."
-msgstr ""
-
-#: src/lib/jcr.c:234
-msgid "Verifying"
-msgstr ""
-
-#: src/lib/jcr.c:236
-msgid "Restoring"
-msgstr ""
-
-#: src/lib/jcr.c:238
-msgid "Archiving"
-msgstr ""
-
-#: src/lib/jcr.c:240
-msgid "Copying"
-msgstr ""
-
-#: src/lib/jcr.c:242
-msgid "Migration"
-msgstr ""
-
-#: src/lib/jcr.c:244
-msgid "Scanning"
-msgstr ""
-
-#: src/lib/jcr.c:246
-msgid "Unknown operation"
-msgstr ""
-
-#: src/lib/jcr.c:255
-msgid "backup"
-msgstr ""
-
-#: src/lib/jcr.c:257
-msgid "verified"
-msgstr ""
-
-#: src/lib/jcr.c:257
-msgid "verify"
-msgstr ""
-
-#: src/lib/jcr.c:259
-msgid "restored"
-msgstr ""
-
-#: src/lib/jcr.c:259
-msgid "restore"
-msgstr ""
-
-#: src/lib/jcr.c:261
-msgid "archived"
-msgstr ""
-
-#: src/lib/jcr.c:261
-msgid "archive"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copied"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copy"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrated"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrate"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scanned"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scan"
-msgstr ""
-
-#: src/lib/jcr.c:269
-msgid "unknown action"
-msgstr ""
-
-#: src/lib/jcr.c:343
-#, c-format
-msgid "pthread_once failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/jcr.c:350
-#, c-format
-msgid "Could not init msg_queue mutex. ERR=%s\n"
-msgstr ""
-
-#: src/lib/jcr.c:403
-msgid "NULL jcr.\n"
-msgstr ""
-
-#: src/lib/jcr.c:509
-#, c-format
-msgid "JCR use_count=%d JobId=%d\n"
-msgstr ""
-
-#: src/lib/jcr.c:619
-#, c-format
-msgid "pthread_setspecific failed: ERR=%s\n"
-msgstr ""
-
-#: 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:1115
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
-msgstr ""
-
-#: src/lib/jcr.c:1127
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading Director.\n"
-msgstr ""
-
-#: src/lib/res.c:65
-#, c-format
-msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
-msgstr ""
-
-#: src/lib/res.c:75
-#, c-format
-msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:177
-msgid "***UNKNOWN***"
-msgstr ""
-
-#: src/lib/parse_conf.c:278 src/lib/parse_conf.c:299
-#, c-format
-msgid "expected an =, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:308
-#, c-format
-msgid "Unknown item code: %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:348
-#, c-format
-msgid "message type: %s not found"
-msgstr ""
-
-#: src/lib/parse_conf.c:386
-#, c-format
-msgid "Attempt to redefine name \"%s\" to \"%s\"."
-msgstr ""
-
-#: src/lib/parse_conf.c:483
-#, c-format
-msgid "Attempt to redefine resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:519
-#, c-format
-msgid "Too many %s directives. Max. is %d. line %d: %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:530
-#, c-format
-msgid "Could not find config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:593
-#, c-format
-msgid "Missing config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:665
-#, c-format
-msgid "expected a size number, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:670
-#, c-format
-msgid "expected a speed number, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:681
-#, c-format
-msgid "expected a %s, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "size"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "speed"
-msgstr ""
-
-#: src/lib/parse_conf.c:803
-#, c-format
-msgid "Expected a Tape Label keyword, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:886
-#, c-format
-msgid "Unable to initialize resource lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:894
-msgid "Config filename too long.\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:917
-#, c-format
-msgid "Cannot open config file \"%s\": %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:934
-msgid ""
-"Currently we cannot handle UTF-16 source files. Please convert the conf file "
-"to UTF-8\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:938
-#, c-format
-msgid "Expected a Resource name identifier, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:954
-#, c-format
-msgid "expected resource name, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:965
-#, c-format
-msgid "not in resource definition: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:990
-#, c-format
-msgid ""
-"Keyword \"%s\" not permitted in this resource.\n"
-"Perhaps you left the trailing brace off of the previous resource."
-msgstr ""
-
-#: src/lib/parse_conf.c:1001
-msgid "Name not specified for resource"
-msgstr ""
-
-#: src/lib/parse_conf.c:1011
-#, c-format
-msgid "unexpected token %d %s in resource definition"
-msgstr ""
-
-#: src/lib/parse_conf.c:1017
-#, c-format
-msgid "Unknown parser state %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:1022
-msgid "End of conf file reached with unclosed resource."
-msgstr ""
-
-#: src/lib/mem_pool.c:112
-#, c-format
-msgid "MemPool index %d larger than max %d\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:130 src/lib/mem_pool.c:150 src/lib/mem_pool.c:186
-#: src/lib/mem_pool.c:257 src/lib/mem_pool.c:277 src/lib/mem_pool.c:312
-#: src/lib/mem_pool.c:623
-#, c-format
-msgid "Out of memory requesting %d bytes\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:167
-msgid "obuf is NULL\n"
-msgstr ""
-
-#: src/lib/berrno.c:63
-msgid "Child exited normally."
-msgstr ""
-
-#: src/lib/berrno.c:70
-msgid "Unknown error during program execvp"
-msgstr ""
-
-#: src/lib/berrno.c:73
-#, c-format
-msgid "Child exited with code %d"
-msgstr ""
-
-#: src/lib/berrno.c:81
-#, c-format
-msgid "Child died from signal %d: %s"
-msgstr ""
-
-#: src/lib/berrno.c:87
-msgid "Invalid errno. No error message possible."
-msgstr ""
-
-#: src/lib/bnet.c:134
-#, c-format
-msgid "Attr spool write error. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet.c:279 src/lib/bnet.c:320
-msgid "TLS connection initialization failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:287
-msgid "TLS Negotiation failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:293 src/lib/bnet.c:335
-msgid ""
-"TLS certificate verification failed. Peer certificate did not match a "
-"required commonName\n"
-msgstr ""
-
-#: src/lib/bnet.c:342
-#, c-format
-msgid ""
-"TLS host certificate verification failed. Host name \"%s\" did not match "
-"presented certificate\n"
-msgstr ""
-
-#: src/lib/bnet.c:359
-msgid "TLS enabled but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:365
-msgid "TLS enable but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:481
-msgid "No problem."
-msgstr ""
-
-#: src/lib/bnet.c:484
-msgid "Authoritative answer for host not found."
-msgstr ""
-
-#: src/lib/bnet.c:487
-msgid "Non-authoritative for host not found, or ServerFail."
-msgstr ""
-
-#: src/lib/bnet.c:490
-msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
-msgstr ""
-
-#: src/lib/bnet.c:493
-msgid "Valid name, no data record of resquested type."
-msgstr ""
-
-#: src/lib/bnet.c:496
-msgid "Unknown error."
-msgstr ""
-
-#: src/lib/bnet.c:755
-#, c-format
-msgid "Unknown sig %d"
-msgstr ""
-
-#: src/lib/signal.c:67
-msgid "Invalid signal number"
-msgstr ""
-
-#: 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:167
-#, c-format
-msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
-msgstr ""
-
-#: src/lib/signal.c:169
-#, c-format
-msgid "Kaboom! exepath=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:210
-#, c-format
-msgid "Fork error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:218
-#, c-format
-msgid "Calling: %s %s %s %s\n"
-msgstr ""
-
-#: src/lib/signal.c:222
-#, c-format
-msgid "execv: %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:244
-#, c-format
-msgid "It looks like the traceback worked...\n"
-msgstr ""
-
-#: 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:312
-msgid "UNKNOWN SIGNAL"
-msgstr ""
-
-#: src/lib/signal.c:313
-msgid "Hangup"
-msgstr ""
-
-#: src/lib/signal.c:314
-msgid "Interrupt"
-msgstr ""
-
-#: src/lib/signal.c:315
-msgid "Quit"
-msgstr ""
-
-#: src/lib/signal.c:316
-msgid "Illegal instruction"
-msgstr ""
-
-#: src/lib/signal.c:317
-msgid "Trace/Breakpoint trap"
-msgstr ""
-
-#: src/lib/signal.c:318
-msgid "Abort"
-msgstr ""
-
-#: src/lib/signal.c:320
-msgid "EMT instruction (Emulation Trap)"
-msgstr ""
-
-#: src/lib/signal.c:323
-msgid "IOT trap"
-msgstr ""
-
-#: src/lib/signal.c:325
-msgid "BUS error"
-msgstr ""
-
-#: src/lib/signal.c:326
-msgid "Floating-point exception"
-msgstr ""
-
-#: src/lib/signal.c:327
-msgid "Kill, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:328
-msgid "User-defined signal 1"
-msgstr ""
-
-#: src/lib/signal.c:329
-msgid "Segmentation violation"
-msgstr ""
-
-#: src/lib/signal.c:330
-msgid "User-defined signal 2"
-msgstr ""
-
-#: src/lib/signal.c:331
-msgid "Broken pipe"
-msgstr ""
-
-#: src/lib/signal.c:332
-msgid "Alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:333
-msgid "Termination"
-msgstr ""
-
-#: src/lib/signal.c:335
-msgid "Stack fault"
-msgstr ""
-
-#: src/lib/signal.c:337
-msgid "Child status has changed"
-msgstr ""
-
-#: src/lib/signal.c:338
-msgid "Continue"
-msgstr ""
-
-#: src/lib/signal.c:339
-msgid "Stop, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:340
-msgid "Keyboard stop"
-msgstr ""
-
-#: src/lib/signal.c:341
-msgid "Background read from tty"
-msgstr ""
-
-#: src/lib/signal.c:342
-msgid "Background write to tty"
-msgstr ""
-
-#: src/lib/signal.c:343
-msgid "Urgent condition on socket"
-msgstr ""
-
-#: src/lib/signal.c:344
-msgid "CPU limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:345
-msgid "File size limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:346
-msgid "Virtual alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:347
-msgid "Profiling alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:348
-msgid "Window size change"
-msgstr ""
-
-#: src/lib/signal.c:349
-msgid "I/O now possible"
-msgstr ""
-
-#: src/lib/signal.c:351
-msgid "Power failure restart"
-msgstr ""
-
-#: src/lib/signal.c:354
-msgid "No runnable lwp"
-msgstr ""
-
-#: src/lib/signal.c:357
-msgid "SIGLWP special signal used by thread library"
-msgstr ""
-
-#: src/lib/signal.c:360
-msgid "Checkpoint Freeze"
-msgstr ""
-
-#: src/lib/signal.c:363
-msgid "Checkpoint Thaw"
-msgstr ""
-
-#: src/lib/signal.c:366
-msgid "Thread Cancellation"
-msgstr ""
-
-#: 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: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:357
-msgid "Buffer overflow.\n"
-msgstr ""
-
-#: src/lib/bsys.c:423
-msgid "Bad errno"
-msgstr ""
-
-#: src/lib/bsys.c:438
-#, c-format
-msgid "Memset for %d bytes at %s:%d\n"
-msgstr ""
-
-#: src/lib/bsys.c:468
-#, c-format
-msgid "Cannot open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:483
-#, c-format
-msgid ""
-"%s is already running. pid=%d\n"
-"Check file %s\n"
-msgstr ""
-
-#: src/lib/bsys.c:497
-#, c-format
-msgid "Could not open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:608
-#, c-format
-msgid "Could not create state file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:627
-#, c-format
-msgid "Write final hdr error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:236
-#, c-format
-msgid "%s: run %s \"%s\"\n"
-msgstr ""
-
-#: src/lib/runscript.c:245
-#, c-format
-msgid "Runscript: %s could not execute. ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:254
-#, c-format
-msgid "%s: %s\n"
-msgstr ""
-
-#: src/lib/runscript.c:259
-#, c-format
-msgid "Runscript: %s returned non-zero status=%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lex.c:91 src/wx-console/console_thread.cpp:212
-#, c-format
-msgid "Problem probably begins at line %d.\n"
-msgstr ""
-
-#: src/lib/lex.c:96 src/wx-console/console_thread.cpp:217
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-
-#: src/lib/lex.c:100
-#, c-format
-msgid "Config error: %s\n"
-msgstr ""
-
-#: src/lib/lex.c:129
-msgid "Close of NULL file\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "Config token too long, file: %s, line %d, begins at line %d\n"
-msgstr ""
-
-#: src/lib/lex.c:292
-msgid "none"
-msgstr ""
-
-#: src/lib/lex.c:293
-msgid "comment"
-msgstr ""
-
-#: src/lib/lex.c:294
-msgid "number"
-msgstr ""
-
-#: src/lib/lex.c:295
-msgid "ip_addr"
-msgstr ""
-
-#: src/lib/lex.c:296
-msgid "identifier"
-msgstr ""
-
-#: src/lib/lex.c:297
-msgid "string"
-msgstr ""
-
-#: src/lib/lex.c:298
-msgid "quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:299
-msgid "include"
-msgstr ""
-
-#: src/lib/lex.c:300
-msgid "include_quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:301
-msgid "UTF-8 Byte Order Mark"
-msgstr ""
-
-#: src/lib/lex.c:302
-msgid "UTF-16le Byte Order Mark"
-msgstr ""
-
-#: 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: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:625 src/lib/lex.c:653
-#, c-format
-msgid "Cannot open included config file %s: %s\n"
-msgstr ""
-
-#: 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: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:783
-#, c-format
-msgid "expected a name, got %s: %s"
-msgstr ""
-
-#: src/lib/lex.c:787
-#, c-format
-msgid "name %s length %d too long, max is %d\n"
-msgstr ""
-
-#: src/lib/lex.c:795
-#, c-format
-msgid "expected a string, got %s: %s"
-msgstr ""
-
-#: src/lib/var.c:2669
-msgid "everything ok"
-msgstr ""
-
-#: src/lib/var.c:2670
-msgid "incomplete named character"
-msgstr ""
-
-#: src/lib/var.c:2671
-msgid "incomplete hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2672
-msgid "invalid hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2673
-msgid "octal value too large"
-msgstr ""
-
-#: src/lib/var.c:2674
-msgid "invalid octal value"
-msgstr ""
-
-#: src/lib/var.c:2675
-msgid "incomplete octal value"
-msgstr ""
-
-#: src/lib/var.c:2676
-msgid "incomplete grouped hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2677
-msgid "incorrect character class specification"
-msgstr ""
-
-#: src/lib/var.c:2678
-msgid "invalid expansion configuration"
-msgstr ""
-
-#: src/lib/var.c:2679
-msgid "out of memory"
-msgstr ""
-
-#: src/lib/var.c:2680
-msgid "incomplete variable specification"
-msgstr ""
-
-#: src/lib/var.c:2681
-msgid "undefined variable"
-msgstr ""
-
-#: src/lib/var.c:2682
-msgid "input is neither text nor variable"
-msgstr ""
-
-#: src/lib/var.c:2683
-msgid "unknown command character in variable"
-msgstr ""
-
-#: src/lib/var.c:2684
-msgid "malformatted search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2685
-msgid "unknown flag in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2686
-msgid "invalid regex in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2687
-msgid "missing parameter in command"
-msgstr ""
-
-#: src/lib/var.c:2688
-msgid "empty search string in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2689
-msgid "start offset missing in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2690
-msgid "offsets in cut operation delimited by unknown character"
-msgstr ""
-
-#: src/lib/var.c:2691
-msgid "range out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2692
-msgid "offset out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2693
-msgid "logic error in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2694
-msgid "malformatted transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2695
-msgid "source and target class mismatch in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2696
-msgid "empty character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2697
-msgid "incorrect character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2698
-msgid "malformatted padding operation"
-msgstr ""
-
-#: src/lib/var.c:2699
-msgid "width parameter missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2700
-msgid "fill string missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2701
-msgid "unknown quoted pair in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2702
-msgid "sub-matching reference out of range"
-msgstr ""
-
-#: src/lib/var.c:2703
-msgid "invalid argument"
-msgstr ""
-
-#: src/lib/var.c:2704
-msgid "incomplete quoted pair"
-msgstr ""
-
-#: src/lib/var.c:2705
-msgid "lookup function does not support variable arrays"
-msgstr ""
-
-#: src/lib/var.c:2706
-msgid "index of array variable contains an invalid character"
-msgstr ""
-
-#: src/lib/var.c:2707
-msgid "index of array variable is incomplete"
-msgstr ""
-
-#: src/lib/var.c:2708
-msgid "bracket expression in array variable's index not closed"
-msgstr ""
-
-#: src/lib/var.c:2709
-msgid "division by zero error in index specification"
-msgstr ""
-
-#: src/lib/var.c:2710
-msgid "unterminated loop construct"
-msgstr ""
-
-#: src/lib/var.c:2711
-msgid "invalid character in loop limits"
-msgstr ""
-
-#: src/lib/var.c:2712
-msgid "malformed operation argument list"
-msgstr ""
-
-#: src/lib/var.c:2713
-msgid "undefined operation"
-msgstr ""
-
-#: src/lib/var.c:2714
-msgid "formatting failure"
-msgstr ""
-
-#: src/lib/var.c:2723
-msgid "unknown error"
-msgstr ""
-
-#: src/lib/address_conf.c:62
-#, c-format
-msgid "Only ipv4 and ipv6 are supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:66
-#, c-format
-msgid "Only ipv4 is supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:175
-#, c-format
-msgid "It was tried to assign a ipv6 address to a ipv4(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:184
-#, c-format
-msgid "It was tried to assign a ipv4 address to a ipv6(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:263
-#, c-format
-msgid "Can't add default address (%s)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:292
-msgid "the old style addresses cannot be mixed with new style"
-msgstr ""
-
-#: src/lib/address_conf.c:313
-#, c-format
-msgid "can't resolve service(%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:322
-#, c-format
-msgid "can't resolve hostname(%s) %s"
-msgstr ""
-
-#: src/lib/address_conf.c:412 src/lib/address_conf.c:443
-#, c-format
-msgid "Expected a block begin { , got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:417
-msgid "Empty addr block is not allowed"
-msgstr ""
-
-#: src/lib/address_conf.c:421
-#, c-format
-msgid "Expected a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:430
-#, c-format
-msgid "Expected a string [ip|ipv4|ipv6], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:434
-#, c-format
-msgid "Expected a string [ip|ipv4], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:439 src/lib/address_conf.c:469
-#, c-format
-msgid "Expected a equal =, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:450 src/lib/address_conf.c:465
-#, c-format
-msgid "Expected a identifier [addr|port], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:455
-msgid "Only one port per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:461
-msgid "Only one addr per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:477
-#, c-format
-msgid "Expected a number or a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:483 src/lib/address_conf.c:516
-#, c-format
-msgid "Expected an IP number or a hostname, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:489
-msgid "State machine missmatch"
-msgstr ""
-
-#: src/lib/address_conf.c:495 src/lib/address_conf.c:507
-#, c-format
-msgid "Expected a end of block }, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:501
-#, c-format
-msgid "Can't add hostname(%s) and port(%s) to addrlist (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:521 src/lib/address_conf.c:535
-#, c-format
-msgid "can't add port (%s) to (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:530
-#, c-format
-msgid "Expected a port number or string, got: %s"
-msgstr ""
-
-#: src/lib/edit.c:478
-msgid "Empty name not allowed.\n"
-msgstr ""
-
-#: src/lib/edit.c:488
-#, c-format
-msgid "Illegal character \"%c\" in name.\n"
-msgstr ""
-
-#: src/lib/edit.c:495
-msgid "Name too long.\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:60
-#, c-format
-msgid "Cannot open current directory: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:71
-#, c-format
-msgid "Cannot get current directory: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:95 src/findlib/savecwd.c:106
-#, c-format
-msgid "Cannot reset current directory: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:137
-#, c-format
-msgid "Cannot create directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:141 src/findlib/mkpath.c:202
-#, c-format
-msgid "%s exists but is not a directory.\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:164
-#, c-format
-msgid "Cannot change owner and/or group of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:169
-#, c-format
-msgid "Cannot change permissions of %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:239
-#, c-format
-msgid "%c: is not a valid drive.\n"
-msgstr ""
-
-#: src/findlib/mkpath.c:283
-msgid "Too many subdirectories. Some permissions not reset.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:483
-#, c-format
-msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/findlib/attribs.c:509 src/findlib/attribs.c:516
-#, c-format
-msgid "Unable to set file owner %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:522
-#, c-format
-msgid "Unable to set file modes %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:532
-#, c-format
-msgid "Unable to set file times %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:546
-#, c-format
-msgid "Unable to set file flags %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:799
-#, c-format
-msgid "Error in %s file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/attribs.c:816
-#, c-format
-msgid "Error in %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/enable_priv.c:92
-msgid "AdjustTokenPrivileges set "
-msgstr ""
-
-#: src/findlib/create_file.c:124
-#, c-format
-msgid "File skipped. Not newer: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:131
-#, c-format
-msgid "File skipped. Not older: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:141
-#, c-format
-msgid "File skipped. Already exists: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:167
-#, c-format
-msgid "File %s already exists and could not be replaced. ERR=%s.\n"
-msgstr ""
-
-#: src/findlib/create_file.c:218 src/findlib/create_file.c:282
-#: src/findlib/create_file.c:378
-#, c-format
-msgid "bpkt already open fid=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
-#, c-format
-msgid "Could not create %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:241
-#, c-format
-msgid "Cannot make fifo %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:259
-#, c-format
-msgid "Cannot make node %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:304
-#, c-format
-msgid "Could not symlink %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:329 src/findlib/create_file.c:342
-#, c-format
-msgid "Could not restore file flags for file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:333 src/findlib/create_file.c:350
-#, c-format
-msgid "Could not hard link %s -> %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:346
-#, c-format
-msgid "Could not reset file flags for file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:401
-#, c-format
-msgid "Original file %s have been deleted: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:413
-#, c-format
-msgid "Original file %s not saved: type=%d\n"
-msgstr ""
-
-#: src/findlib/create_file.c:416
-#, c-format
-msgid "Unknown file type %d; not restored: %s\n"
-msgstr ""
-
-#: src/findlib/create_file.c:460
-#, c-format
-msgid "Zero length filename: %s\n"
-msgstr ""
-
-#: src/findlib/bfile.c:97
-msgid "Unix attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:99
-msgid "File data"
-msgstr ""
-
-#: src/findlib/bfile.c:101
-msgid "MD5 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:103
-msgid "GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:105
-msgid "Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:107
-msgid "Extended attributes"
-msgstr ""
-
-#: src/findlib/bfile.c:109
-msgid "Sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:111
-msgid "GZIP sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:113
-msgid "Compressed sparse data"
-msgstr ""
-
-#: src/findlib/bfile.c:115
-msgid "Program names"
-msgstr ""
-
-#: src/findlib/bfile.c:117
-msgid "Program data"
-msgstr ""
-
-#: src/findlib/bfile.c:119
-msgid "SHA1 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:121
-msgid "Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:123
-msgid "Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:125
-msgid "Win32 compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:127
-msgid "MacOS Fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:129
-msgid "HFS+ attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:131
-msgid "Standard Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:133
-msgid "Default Unix ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:135
-msgid "SHA256 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:137
-msgid "SHA512 digest"
-msgstr ""
-
-#: src/findlib/bfile.c:139
-msgid "Signed digest"
-msgstr ""
-
-#: src/findlib/bfile.c:141
-msgid "Encrypted File data"
-msgstr ""
-
-#: src/findlib/bfile.c:143
-msgid "Encrypted Win32 data"
-msgstr ""
-
-#: src/findlib/bfile.c:145
-msgid "Encrypted session data"
-msgstr ""
-
-#: src/findlib/bfile.c:147
-msgid "Encrypted GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:149
-msgid "Encrypted compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:151
-msgid "Encrypted Win32 GZIP data"
-msgstr ""
-
-#: src/findlib/bfile.c:153
-msgid "Encrypted Win32 Compressed data"
-msgstr ""
-
-#: src/findlib/bfile.c:155
-msgid "Encrypted MacOS fork data"
-msgstr ""
-
-#: src/findlib/bfile.c:157
-msgid "AIX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:159
-msgid "Darwin Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:161
-msgid "FreeBSD Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:163
-msgid "FreeBSD Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:165
-msgid "HPUX Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:167
-msgid "Irix Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:169
-msgid "Irix Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:171
-msgid "Linux Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:173
-msgid "Linux Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:175
-msgid "TRU64 Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:177
-msgid "TRU64 Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:179
-msgid "Solaris Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:181
-msgid "Solaris Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:183
-msgid "AFS Specific ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:185
-msgid "AIX Specific POSIX ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:187
-msgid "AIX Specific NFSv4 ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:189
-msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:191
-msgid "GNU Hurd Specific Default ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:193
-msgid "GNU Hurd Specific Access ACL attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:195
-msgid "GNU Hurd Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:197
-msgid "IRIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:199
-msgid "TRU64 Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:201
-msgid "AIX Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:203
-msgid "OpenBSD Specific Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:205
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:207
-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:237
-#, c-format
-msgid "Plugin: \"%s\" not found.\n"
-msgstr ""
-
-#: 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:227
-#, c-format
-msgid "     NODUMP flag set - will not process %s\n"
-msgstr ""
-
-#: src/findlib/find_one.c:248
-#, c-format
-msgid "Cannot stat file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/find_one.c:253
-#, c-format
-msgid "%s mtime changed during backup.\n"
-msgstr ""
-
-#: src/findlib/find_one.c:260
-#, c-format
-msgid "%s ctime changed during backup.\n"
-msgstr ""
-
-#: 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:403
-#, c-format
-msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
-msgstr ""
-
-#: src/findlib/find_one.c:418
-#, c-format
-msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
-msgstr ""
-
-#: src/cats/sql_create.c:101
-#, c-format
-msgid "Create DB Job record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:145
-#, c-format
-msgid "Create JobMedia record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:154
-#, c-format
-msgid "Update Media record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:189
-#, c-format
-msgid "pool record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:221
-#, c-format
-msgid "Create db Pool record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:254
-#, c-format
-msgid "Device record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:271
-#, c-format
-msgid "Create db Device record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:306
-#, c-format
-msgid "More than one Storage record!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:311
-#, c-format
-msgid "error fetching Storage row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:332
-#, c-format
-msgid "Create DB Storage record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:366
-#, c-format
-msgid "mediatype record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:383
-#, c-format
-msgid "Create db mediatype record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:424
-#, c-format
-msgid "Volume \"%s\" already exists.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:470
-#, c-format
-msgid "Create DB Media record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:521
-#, c-format
-msgid "More than one Client!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:526
-#, c-format
-msgid "error fetching Client row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:554
-#, c-format
-msgid "Create DB Client record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Create db Path record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:666
-#, c-format
-msgid "Create DB Counters record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:704
-#, c-format
-msgid "More than one FileSet!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:709
-#, c-format
-msgid "error fetching FileSet row: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:740
-#, c-format
-msgid "Create DB FileSet record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:989
-#, c-format
-msgid "Create db File record %s failed. ERR=%s"
-msgstr ""
-
-#: src/cats/sql_create.c:1015
-#, c-format
-msgid "More than one Filename! %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1021
-#, c-format
-msgid "Error fetching row for file=%s: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1038
-#, c-format
-msgid "Create db Filename record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
-msgid "ERR=JobIds are empty\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1219
-#, c-format
-msgid "Create db Object record %s failed. ERR=%s"
-msgstr ""
-
-#: src/cats/sql_get.c:151
-#, c-format
-msgid "Error fetching row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:158
-#, c-format
-msgid "get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:166
-#, c-format
-msgid "File record for PathId=%s FilenameId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:172
-msgid "File record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:199
-#, c-format
-msgid "More than one Filename!: %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:209
-#, c-format
-msgid "Get DB Filename record %s found bad record: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:215
-#, c-format
-msgid "Filename record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:219
-#, c-format
-msgid "Filename record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:262
-#, c-format
-msgid "Get DB path record %s found bad record: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:275
-#, c-format
-msgid "Path record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:279
-#, c-format
-msgid "Path record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:318
-#, c-format
-msgid "No Job found for JobId %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:391 src/cats/sql_get.c:448
-#, c-format
-msgid "No volumes found for JobId=%d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:397 src/cats/sql_get.c:459
-#, c-format
-msgid "Error fetching row %d: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:411
-#, c-format
-msgid "No Volume for JobId %d found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:552
-#, c-format
-msgid "Pool id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:589
-#, c-format
-msgid "Client id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:635
-#, c-format
-msgid "More than one Pool!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:679
-msgid "Pool record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:717
-#, c-format
-msgid "More than one Client!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:734 src/cats/sql_get.c:738
-msgid "Client record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:765
-#, c-format
-msgid "More than one Counter!: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:770
-#, c-format
-msgid "error fetching Counter row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:790
-#, c-format
-msgid "Counter record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:830
-#, c-format
-msgid "Error got %s FileSets but expected only one!\n"
-msgstr ""
-
-#: src/cats/sql_get.c:835
-#, c-format
-msgid "FileSet record \"%s\" not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:845
-msgid "FileSet record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:941
-#, c-format
-msgid "Media id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:979
-#, c-format
-msgid "query dbids failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1034
-#, c-format
-msgid "More than one Volume!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1090
-#, c-format
-msgid "Media record MediaId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1093
-#, c-format
-msgid "Media record for Volume \"%s\" not found.\n"
-msgstr ""
-
-#: 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:1103
-#, c-format
-msgid "Media record for Vol=%s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:98 src/cats/sql_find.c:127 src/cats/sql_find.c:182
-#, c-format
-msgid ""
-"Query error for start time request: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:104 src/cats/sql_find.c:188
-msgid "No prior Full backup Job record found.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:116
-#, c-format
-msgid "Unknown level=%d\n"
-msgstr ""
-
-#: src/cats/sql_find.c:133
-#, c-format
-msgid ""
-"No Job record found: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:291
-#, c-format
-msgid "Unknown Job level=%d\n"
-msgstr ""
-
-#: src/cats/sql_find.c:301
-#, c-format
-msgid "No Job found for: %s.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:312
-#, c-format
-msgid "No Job found for: %s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:393
-#, c-format
-msgid "Request for Volume item %d greater than max %d or less than 1\n"
-msgstr ""
-
-#: src/cats/sql_find.c:408
-#, c-format
-msgid "No Volume record found for item %d.\n"
-msgstr ""
-
-#: 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:181
-#, c-format
-msgid "Database %s does not exist, please create it.\n"
-msgstr ""
-
-#: src/cats/sqlite.c:203
-#, c-format
-msgid "Unable to open Database=%s. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sqlite.c:204
-msgid "unknown"
-msgstr ""
-
-#: 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 ""
-
-#: src/cats/ingres.c:87
-msgid "Failed to allocate space for query filter.\n"
-msgstr ""
-
-#: src/cats/ingres.c:108
-msgid "Failed to allocate space for query filters.\n"
-msgstr ""
-
-#: src/cats/ingres.c:267
-#, c-format
-msgid ""
-"Unable to connect to Ingres server.\n"
-"Database=%s User=%s\n"
-"It is probably not running or your password is incorrect.\n"
-msgstr ""
-
-#: src/cats/ingres.c:1087
-msgid "A user name for Ingres must be supplied.\n"
-msgstr ""
-
-#: src/cats/sql.c:184
-#, c-format
-msgid ""
-"Potential performance problem:\n"
-"max_connections=%d set for %s database \"%s\" should be larger than "
-"Director's MaxConcurrentJobs=%d\n"
-msgstr ""
-
-#: src/cats/sql.c:229
-#, c-format
-msgid ""
-"query %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:251
-#, c-format
-msgid ""
-"insert %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:261
-#, c-format
-msgid "Insertion problem: affected_rows=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:282
-#, c-format
-msgid ""
-"update %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:292
-#, c-format
-msgid "Update failed: affected_rows=%s for %s\n"
-msgstr ""
-
-#: src/cats/sql.c:314
-#, c-format
-msgid ""
-"delete %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:408
-#, c-format
-msgid "Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:603
-msgid "No results to list.\n"
-msgstr ""
-
-#: src/cats/sql.c:721
-msgid "Could not init database batch connection\n"
-msgstr ""
-
-#: src/cats/sql.c:727
-#, c-format
-msgid "Could not open database \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:181
-#, c-format
-msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:246
-#, c-format
-msgid ""
-"Unable to connect to PostgreSQL server. Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:350
-msgid "PQescapeStringConn returned non-zero.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:368
-msgid "PQescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:399
-msgid "PQunescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:813
-#, c-format
-msgid "error fetching currval: %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
-#, c-format
-msgid "error starting batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
-#, c-format
-msgid "error ending batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1088
-#, c-format
-msgid "error copying in batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1110
-msgid "A user name for PostgreSQL must be supplied.\n"
-msgstr ""
-
-#: src/cats/sql_list.c:59
-#, c-format
-msgid "Query failed: %s\n"
-msgstr ""
-
-#: src/cats/sql_list.c:275
-msgid "These JobIds have copies as follows:\n"
-msgstr ""
-
-#: src/cats/sql_list.c:277
-msgid "The catalog contains copies as follows:\n"
-msgstr ""
-
-#: src/cats/dbi.c:117
-#, c-format
-msgid "Unknown database type: %s\n"
-msgstr ""
-
-#: 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:299
-#, c-format
-msgid ""
-"Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-
-#: src/cats/dbi.c:1439
-#, c-format
-msgid "error inserting batch mode: %s"
-msgstr ""
-
-#: src/cats/dbi.c:1456
-msgid "Driver type not specified in Catalog resource.\n"
-msgstr ""
-
-#: src/cats/dbi.c:1460
-msgid "Invalid driver type, must be \"dbi:<type>\"\n"
-msgstr ""
-
-#: src/cats/dbi.c:1464
-msgid "A user name for DBI must be supplied.\n"
-msgstr ""
-
-#: src/cats/cats_dummy.c:39
-msgid "Please replace this dummy libbaccats library with a proper one.\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:80
-#, c-format
-msgid "No pool record %s exists\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:85
-#, c-format
-msgid "Expecting one pool record, got %d\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:91
-#, c-format
-msgid "Error fetching row %s\n"
-msgstr ""
-
-#: src/cats/mysql.c:207
-#, c-format
-msgid ""
-"Unable to connect to MySQL server.\n"
-"Database=%s User=%s\n"
-"MySQL connect failed either server not running or your authorization is "
-"incorrect.\n"
-msgstr ""
-
-#: src/cats/mysql.c:692
-msgid "A user name for MySQL must be supplied.\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:147 src/console/console_conf.c:140
-#: src/qt-console/bat_conf.cpp:141
-#, c-format
-msgid "No record for %d %s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:156 src/console/console_conf.c:149
-#, c-format
-msgid "Console: name=%s rcfile=%s histfile=%s\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:160 src/console/console_conf.c:153
-#: src/qt-console/bat_conf.cpp:150
-#, c-format
-msgid "Director: name=%s address=%s DIRport=%d\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:142 src/console/authenticate.c:138
-msgid "TLS negotiation failed\n"
-msgstr ""
-
-#: src/wx-console/authenticate.c:150
-msgid "Bad response to Hello command: ERR="
-msgstr ""
-
-#: src/wx-console/authenticate.c:167 src/console/authenticate.c:169
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-
-#: src/console/console.c:126
-#, c-format
-msgid ""
-"\n"
-"Version: "
-msgstr ""
-
-#: src/console/console.c:178
-msgid "input from file"
-msgstr ""
-
-#: src/console/console.c:179
-msgid "output to file"
-msgstr ""
-
-#: src/console/console.c:180
-msgid "quit"
-msgstr ""
-
-#: src/console/console.c:181
-msgid "output to file and terminal"
-msgstr ""
-
-#: src/console/console.c:182
-msgid "sleep specified time"
-msgstr ""
-
-#: src/console/console.c:183
-msgid "print current time"
-msgstr ""
-
-#: src/console/console.c:184
-msgid "print Console's version"
-msgstr ""
-
-#: src/console/console.c:185
-msgid "echo command string"
-msgstr ""
-
-#: src/console/console.c:186
-msgid "execute an external command"
-msgstr ""
-
-#: src/console/console.c:187
-msgid "exit = quit"
-msgstr ""
-
-#: src/console/console.c:188
-msgid "zed_keys = use zed keys instead of bash keys"
-msgstr ""
-
-#: src/console/console.c:189
-msgid "help listing"
-msgstr ""
-
-#: src/console/console.c:191
-msgid "set command separator"
-msgstr ""
-
-#: src/console/console.c:225
-msgid ": is an invalid command\n"
-msgstr ""
-
-#: src/console/console.c:675
-msgid "Illegal separator character.\n"
-msgstr ""
-
-#: src/console/console.c:708
-msgid "Command logic problem\n"
-msgstr ""
-
-#: src/console/console.c:925
-#, c-format
-msgid "Can't find %s in Director list\n"
-msgstr ""
-
-#: src/console/console.c:933
-msgid "Available Directors:\n"
-msgstr ""
-
-#: src/console/console.c:937
-#, c-format
-msgid "%2d:  %s at %s:%d\n"
-msgstr ""
-
-#: src/console/console.c:941
-msgid "Select Director by entering a number: "
-msgstr ""
-
-#: src/console/console.c:948
-#, c-format
-msgid "%s is not a number. You must enter a number between 1 and %d\n"
-msgstr ""
-
-#: src/console/console.c:955
-#, c-format
-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: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:154
-#, c-format
-msgid "Failed to initialize TLS context for Director \"%s\".\n"
-msgstr ""
-
-#: src/console/console.c:1210
-msgid "Enter a period to cancel a command.\n"
-msgstr ""
-
-#: src/console/console.c:1304 src/qt-console/main.cpp:232
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in %s. At least one CA certificate store is required.\n"
-msgstr ""
-
-#: src/console/console.c:1313 src/qt-console/main.cpp:241
-#, c-format
-msgid ""
-"No Director resource defined in %s\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/console/console.c:1333 src/qt-console/main.cpp:262
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/console/console.c:1359
-msgid "Too many arguments on input command.\n"
-msgstr ""
-
-#: src/console/console.c:1363
-msgid "First argument to input command must be a filename.\n"
-msgstr ""
-
-#: src/console/console.c:1369
-#, c-format
-msgid "Cannot open file %s for input. ERR=%s\n"
-msgstr ""
-
-#: src/console/console.c:1401
-msgid "Too many arguments on output/tee command.\n"
-msgstr ""
-
-#: src/console/console.c:1418
-#, c-format
-msgid "Cannot open file %s for output. ERR=%s\n"
-msgstr ""
-
-#: src/console/console.c:1437
-msgid "Too many arguments. Enclose command in double quotes.\n"
-msgstr ""
-
-#: src/console/console.c:1446
-#, c-format
-msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
-msgstr ""
-
-#: src/tools/testls.c:59
-#, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -q          quiet, don't print filenames (debug)\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testls.c:155
-#, c-format
-msgid "Could not open include file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:168
-#, c-format
-msgid "Could not open exclude file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:182
-#, c-format
-msgid "Files seen = %d\n"
-msgstr ""
-
-#: src/tools/testls.c:215 src/tools/testfind.c:322
-#, c-format
-msgid "Err: Could not access %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:218 src/tools/testfind.c:325
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:221 src/tools/testfind.c:328
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:224 src/tools/testfind.c:331
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:227 src/tools/testfind.c:334
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:230
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:233
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:236 src/tools/testfind.c:337
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:239 src/tools/testfind.c:340
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
-msgstr ""
-
-#: src/tools/bvfs_test.c:56 src/tools/ing_test.c:57
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -j <jobids>       specify jobids\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -T                truncate cache table before starting\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"Example : bbatch -w /path/to/workdir -h localhost -f dat1 -f dat -f datx\n"
-" will start 3 thread and load dat1, dat and datx in your catalog\n"
-"See bbatch.c to generate datafile\n"
-"\n"
-"Usage: bbatch [ options ] -w working/dir -f datafile\n"
-"       -b                with batch mode\n"
-"       -B                without batch mode\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -r <jobids>       call restore code with given jobids\n"
-"       -v                verbose\n"
-"       -f <file>         specify data file\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:211
-#, c-format
-msgid "Computing file list for jobid=%s files=%lld secs=%d\n"
-msgstr ""
-
-#: src/tools/bbatch.c:315
-#, c-format
-msgid "Error opening datafile %s\n"
-msgstr ""
-
-#: src/tools/bbatch.c:325
-msgid "Error while inserting file\n"
-msgstr ""
-
-#: src/tools/ing_test.c:231 src/tools/ing_test.c:264 src/tools/ing_test.c:302
-msgid "Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:320
-msgid "CREATE-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:325
-msgid "DROP-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/fstype.c:48
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-v] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/fstype.c:102 src/tools/drivetype.c:78
-#, c-format
-msgid "%s: unknown\n"
-msgstr ""
-
-#: src/tools/bregex.c:153 src/tools/bwild.c:122 src/tools/bregtest.c:137
-#, c-format
-msgid "Could not open data file: %s\n"
-msgstr ""
-
-#: src/tools/drivetype.c:47
-#, c-format
-msgid ""
-"\n"
-"Usage: drivetype [-v] path ...\n"
-"\n"
-"       Print the drive type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -l     print local fixed hard drive\n"
-"       -a     display information on all drives\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:70
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -c          specify config file containing FileSet resources\n"
-"       -f          specify which FileSet to use\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:235
-#, c-format
-msgid ""
-"\n"
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
-msgstr ""
-
-#: src/tools/testfind.c:278
-#, c-format
-msgid "Reg: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:300
-msgid "\t[will not descend: recursion turned off]"
-msgstr ""
-
-#: src/tools/testfind.c:302
-msgid "\t[will not descend: file system change not allowed]"
-msgstr ""
-
-#: src/tools/testfind.c:304
-msgid "\t[will not descend: disallowed file system]"
-msgstr ""
-
-#: src/tools/testfind.c:306
-msgid "\t[will not descend: disallowed drive type]"
-msgstr ""
-
-#: src/tools/testfind.c:390
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:407
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:416
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/tools/testfind.c:419
-#, c-format
-msgid "Path: %s\n"
-msgstr ""
-
-#: src/tools/cats_test.c:60
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -q                print only errors\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/cats_test.c:376
-#, c-format
-msgid "Could not open, database \"%s\".\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:151
-#, c-format
-msgid "Fatal malformed reply from %s: %s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:159
-#, c-format
-msgid "Fatal fgets error: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"       -f          set the From: field\n"
-"       -h          use mailhost:port as the SMTP server\n"
-"       -s          set the Subject: field\n"
-"       -r          set the Reply-To: field\n"
-"       -l          set the maximum number of lines to send (default: "
-"unlimited)\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:379
-msgid "Fatal error: no recipient given.\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:407
-#, c-format
-msgid "Fatal gethostname error: ERR=%s\n"
-msgstr ""
-
-#: 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:486 src/tools/bsmtp.c:521
-#, c-format
-msgid "Error unknown mail host \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
-msgid "Retrying connection using \"localhost\".\n"
-msgstr ""
-
-#: 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:541 src/tools/bsmtp.c:546
-#, c-format
-msgid "Fatal socket error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:551
-#, c-format
-msgid "Fatal connect error to %s: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:560
-#, c-format
-msgid "Fatal _open_osfhandle error: ERR=%s\n"
-msgstr ""
-
-#: 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:576
-#, c-format
-msgid "Fatal dup error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:195
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:212
-#, c-format
-msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:214
-#, c-format
-msgid "Error there is no Catalog section in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:223
-msgid "Error no Director resource defined.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:247
-msgid "Wrong number of arguments.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:252
-msgid "Working directory not supplied.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:288
-msgid "Database port must be a numeric value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:291
-msgid "Database port must be a int value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:365
-#, c-format
-msgid "Hello, this is the database check/correct program.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:367
-#, c-format
-msgid "Modify database is on."
-msgstr ""
-
-#: src/tools/dbcheck.c:369
-#, c-format
-msgid "Modify database is off."
-msgstr ""
-
-#: src/tools/dbcheck.c:371 src/tools/dbcheck.c:432
-#, c-format
-msgid " Verbose is on.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:373 src/tools/dbcheck.c:434
-#, c-format
-msgid " Verbose is off.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:375
-#, c-format
-msgid "Please select the function you want to perform.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:379
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:398
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:418
-msgid "Select function number: "
-msgstr ""
-
-#: src/tools/dbcheck.c:425
-#, c-format
-msgid "Database will be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:427
-#, c-format
-msgid "Database will NOT be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:518
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:525
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:532
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:539
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:546
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:599
-#, c-format
-msgid "Deleting: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:671
-#, c-format
-msgid "Checking for duplicate Filename entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:682
-#, c-format
-msgid "Found %d duplicate Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:683
-msgid "Print the list? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:706 src/tools/dbcheck.c:771
-#, c-format
-msgid "Found %d for: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:736
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:747
-#, c-format
-msgid "Found %d duplicate Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:748 src/tools/dbcheck.c:810 src/tools/dbcheck.c:856
-#: src/tools/dbcheck.c:924 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1025
-#: src/tools/dbcheck.c:1067 src/tools/dbcheck.c:1109 src/tools/dbcheck.c:1146
-#: src/tools/dbcheck.c:1179 src/tools/dbcheck.c:1213 src/tools/dbcheck.c:1280
-msgid "Print them? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:801
-#, c-format
-msgid "Checking for orphaned JobMedia entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:809
-#, c-format
-msgid "Found %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:827
-#, c-format
-msgid "Deleting %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:844
-#, c-format
-msgid "Checking for orphaned File entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:855
-#, c-format
-msgid "Found %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:872
-#, c-format
-msgid "Deleting %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:891
-#, c-format
-msgid "Pruning orphaned Path entries isn't possible when using BVFS.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:900 src/tools/dbcheck.c:958
-msgid "Create temporary index? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:912
-#, c-format
-msgid "Checking for orphaned Path entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:923
-#, c-format
-msgid "Found %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:936
-#, c-format
-msgid "Deleting %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:970
-#, c-format
-msgid "Checking for orphaned Filename entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:981
-#, c-format
-msgid "Found %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:994
-#, c-format
-msgid "Deleting %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1014
-#, c-format
-msgid "Checking for orphaned FileSet entries. This takes some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1024
-#, c-format
-msgid "Found %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1039
-#, c-format
-msgid "Deleting %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1048
-#, c-format
-msgid "Checking for orphaned Client entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1066
-#, c-format
-msgid "Found %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1081
-#, c-format
-msgid "Deleting %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1090
-#, c-format
-msgid "Checking for orphaned Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1108
-#, c-format
-msgid "Found %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1123
-#, c-format
-msgid "Deleting %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1125
-#, c-format
-msgid "Deleting JobMedia records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1127
-#, c-format
-msgid "Deleting Log records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1136
-#, c-format
-msgid "Checking for Admin Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1145
-#, c-format
-msgid "Found %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1160
-#, c-format
-msgid "Deleting %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1169
-#, c-format
-msgid "Checking for Restore Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1178
-#, c-format
-msgid "Found %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1193
-#, c-format
-msgid "Deleting %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1203
-#, c-format
-msgid "Checking for Filenames with a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1212
-#, c-format
-msgid "Found %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1230 src/tools/dbcheck.c:1296
-#, c-format
-msgid "Reparing %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1270
-#, c-format
-msgid "Checking for Paths without a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1279
-#, c-format
-msgid "Found %d bad Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1442
-#, c-format
-msgid ""
-"Ok. Index over the %s column already exists and dbcheck will work faster.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1445
-#, c-format
-msgid ""
-"Note. Index over the %s column not found, that can greatly slow down "
-"dbcheck.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1460
-#, c-format
-msgid "Create temporary index... This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1468
-#, c-format
-msgid "Temporary index created.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1483
-#, c-format
-msgid "Drop temporary index.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1493
-#, c-format
-msgid "Temporary index %s deleted.\n"
-msgstr ""
-
-#: src/filed/verify.c:57
-#, c-format
-msgid "Cannot malloc %d network read buffer\n"
-msgstr ""
-
-#: src/filed/verify.c:127
-#, c-format
-msgid "     Could not access %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:134
-#, c-format
-msgid "     Could not follow link %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:141
-#, c-format
-msgid "     Could not stat %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:147 src/filed/backup.c:450
-#, c-format
-msgid "     Unchanged file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:150
-#, c-format
-msgid "     Archive file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:153
-#, c-format
-msgid "     Recursion turned off. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:157
-#, c-format
-msgid "     File system change prohibited. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:165
-#, c-format
-msgid "     Could not open directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:170
-#, c-format
-msgid "     Unknown file type %d: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:214 src/filed/verify_vol.c:206
-#, c-format
-msgid "Network error in send to Director: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
-#, c-format
-msgid "%s digest initialization failed\n"
-msgstr ""
-
-#: src/filed/verify.c:309
-#, c-format
-msgid "     Cannot open %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:323
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:386
-#, c-format
-msgid "Error reading file %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/accurate.c:201
-#, c-format
-msgid "Space saved with Base jobs: %lld MB\n"
-msgstr ""
-
-#: src/filed/accurate.c:400
-#, c-format
-msgid "Cannot verify checksum for %s\n"
-msgstr ""
-
-#: src/filed/accurate.c:508
-msgid "2991 Bad accurate command\n"
-msgstr ""
-
-#: src/filed/status.c:89
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d running=%d.\n"
-msgstr ""
-
-#: src/filed/status.c:149
-#, c-format
-msgid " Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d "
-msgstr ""
-
-#: src/filed/status.c:194
-#, c-format
-msgid "Director connected at: %s\n"
-msgstr ""
-
-#: src/filed/status.c:196
-#, c-format
-msgid "JobId %d Job %s is running.\n"
-msgstr ""
-
-#: src/filed/status.c:199
-#, c-format
-msgid "    %s%s %s Job started: %s\n"
-msgstr ""
-
-#: src/filed/status.c:212
-#, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
-msgstr ""
-
-#: src/filed/status.c:218
-#, c-format
-msgid "    Files Examined=%s\n"
-msgstr ""
-
-#: src/filed/status.c:223
-#, c-format
-msgid "    Processing file: %s\n"
-msgstr ""
-
-#: src/filed/status.c:234
-msgid "    SDSocket closed.\n"
-msgstr ""
-
-#: src/filed/status.c:244 src/filed/status.c:335 src/filed/status.c:409
-msgid "====\n"
-msgstr ""
-
-#: src/filed/status.c:306
-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 ""
-
-#: src/filed/status.c:497
-msgid "2900 Bad .status command, wrong argument.\n"
-msgstr ""
-
-#: src/filed/status.c:565
-msgid "Bacula Client: Idle"
-msgstr ""
-
-#: src/filed/status.c:576
-msgid "Bacula Client: Running"
-msgstr ""
-
-#: src/filed/status.c:590
-msgid "Bacula Client: Last Job Canceled"
-msgstr ""
-
-#: src/filed/status.c:594
-msgid "Bacula Client: Last Job Failed"
-msgstr ""
-
-#: src/filed/status.c:598
-msgid "Bacula Client: Last Job had Warnings"
-msgstr ""
-
-#: 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:245
-#, c-format
-msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:259
-#, c-format
-msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
-msgstr ""
-
-#: 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:467 src/filed/xattr.c:520
-#, c-format
-msgid "lgetea error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:643
-#, c-format
-msgid "lsetea error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:968
-#, c-format
-msgid "Received illegal xattr named %s on file \"%s\"\n"
-msgstr ""
-
-#: 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:1161 src/filed/xattr.c:1196
-#, c-format
-msgid "llistxattr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1435
-#, c-format
-msgid "lsetxattr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1648
-#, c-format
-msgid "Failed to convert %d into namespace on file \"%s\"\n"
-msgstr ""
-
-#: 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:1907
-#, c-format
-msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:1920
-#, c-format
-msgid "Failed to convert %s into namespace on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:1941
-#, c-format
-msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2262
-#, c-format
-msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:2291
-#, c-format
-msgid "setproplist error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2679
-#, c-format
-msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2886
-#, c-format
-msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:2909
-#, c-format
-msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:2984
-#, c-format
-msgid "Unable to read content of xattr %s on file \"%s\"\n"
-msgstr ""
-
-#: 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:3081 src/filed/xattr.c:3330
-#, c-format
-msgid "Unable to open file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:3146
-#, c-format
-msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3238
-#, c-format
-msgid "Unable to convert acl from text on file \"%s\"\n"
-msgstr ""
-
-#: 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:3344
-#, c-format
-msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3408
-#, c-format
-msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3448
-#, c-format
-msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3466
-#, c-format
-msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3484
-#, c-format
-msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:3570
-#, c-format
-msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3629
-#, c-format
-msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3673
-#, c-format
-msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3734
-#, c-format
-msgid "Failed to restore extensible attributes on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3747
-#, c-format
-msgid "Failed to restore extended attributes on file \"%s\"\n"
-msgstr ""
-
-#: 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:3891
-#, c-format
-msgid ""
-"Can't restore Extended Attributes of %s - incompatible xattr stream "
-"encountered - %d\n"
-msgstr ""
-
-#: 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:563
-#, c-format
-msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
-msgstr ""
-
-#: 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:775
-msgid "Plugin save packet not found.\n"
-msgstr ""
-
-#: src/filed/fd_plugins.c:910
-#, c-format
-msgid "Plugin=%s not found.\n"
-msgstr ""
-
-#: src/filed/fd_plugins.c:977
-#, c-format
-msgid "Plugin createFile call failed. Stat=%d file=%s\n"
-msgstr ""
-
-#: 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:1859
-msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
-msgstr ""
-
-#: src/filed/filed.c:76
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -d <nn>     set debug level to <nn>\n"
-"        -dt         print a timestamp in debug output\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g          groupid\n"
-"        -k          keep readall capabilities\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test configuration file and exit\n"
-"        -u          userid\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/filed/filed.c:199
-msgid "-k option has no meaning without -u option.\n"
-msgstr ""
-
-#: src/filed/filed.c:337
-#, c-format
-msgid ""
-"No File daemon resource defined in %s\n"
-"Without that I don't know who I am :-(\n"
-msgstr ""
-
-#: src/filed/filed.c:342
-#, c-format
-msgid "Only one Client resource permitted in %s\n"
-msgstr ""
-
-#: src/filed/filed.c:366
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"File daemon in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:390
-msgid "PKI encryption/signing enabled but not compiled into Bacula.\n"
-msgstr ""
-
-#: src/filed/filed.c:401
-#, c-format
-msgid ""
-"\"PKI Key Pair\" must be defined for File daemon \"%s\" in %s if either "
-"\"PKI Sign\" or \"PKI Encrypt\" are enabled.\n"
-msgstr ""
-
-#: src/filed/filed.c:413 src/filed/filed.c:444 src/filed/filed.c:485
-msgid "Failed to allocate a new keypair object.\n"
-msgstr ""
-
-#: src/filed/filed.c:417
-#, c-format
-msgid "Failed to load public certificate for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:423
-#, c-format
-msgid "Failed to load private key for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:453
-#, c-format
-msgid "Failed to load private key from file %s for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:460
-#, c-format
-msgid ""
-"Failed to load trusted signer certificate from file %s for File daemon \"%s"
-"\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:491
-#, c-format
-msgid ""
-"Failed to load master key certificate from file %s for File daemon \"%s\" in "
-"%s.\n"
-msgstr ""
-
-#: src/filed/filed.c:507
-#, c-format
-msgid "No Director resource defined in %s\n"
-msgstr ""
-
-#: 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:280
-#, c-format
-msgid "Unknown acl type encountered on file \"%s\": %ld\n"
-msgstr ""
-
-#: 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:386
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
-"support\n"
-msgstr ""
-
-#: 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:442 src/filed/acl.c:452
-#, c-format
-msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:478
-#, c-format
-msgid "aclx_put error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:823
-#, c-format
-msgid "acl_to_text error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:853
-#, c-format
-msgid "acl_get_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:912
-#, c-format
-msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:923
-#, c-format
-msgid "acl_from_text error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:939
-#, c-format
-msgid "acl_valid error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:980
-#, c-format
-msgid "acl_set_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1246
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
-msgstr ""
-
-#: src/filed/acl.c:1531
-#, c-format
-msgid "getacl error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:1566
-#, c-format
-msgid "acltostr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1627
-#, c-format
-msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
-msgstr ""
-
-#: src/filed/acl.c:1635
-#, c-format
-msgid "setacl error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:1760
-#, c-format
-msgid "acl_get error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1863
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
-"support\n"
-msgstr ""
-
-#: 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:1890
-#, c-format
-msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1937
-#, c-format
-msgid "acl_set error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2023
-#, c-format
-msgid "acltotext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2046
-#, c-format
-msgid "aclfromtext error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:2066
-#, c-format
-msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/filed/verify_vol.c:63
-msgid "Storage command not issued before Verify.\n"
-msgstr ""
-
-#: 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:498
-#, c-format
-msgid "Data record error. ERR=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/filed/verify_vol.c:143
-#, c-format
-msgid "Error scanning record header: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:102
-msgid "Cannot set buffer size FD->SD.\n"
-msgstr ""
-
-#: src/filed/backup.c:194
-#, c-format
-msgid "Encountered %ld acl errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:198
-#, c-format
-msgid "Encountered %ld xattr errors while doing backup\n"
-msgstr ""
-
-#: src/filed/backup.c:267 src/filed/backup.c:276
-msgid "An error occurred while encrypting the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:387
-#, c-format
-msgid "     Recursion turned off. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:394
-#, c-format
-msgid "     %s is a different filesystem. Will not descend from %s into it.\n"
-msgstr ""
-
-#: src/filed/backup.c:400
-#, c-format
-msgid "     Disallowed filesystem. Will not descend from %s into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:405
-#, c-format
-msgid "     Disallowed drive type. Will not descend into %s\n"
-msgstr ""
-
-#: src/filed/backup.c:416
-#, c-format
-msgid "     Socket file skipped: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:429
-#, c-format
-msgid "     Could not access \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:436
-#, c-format
-msgid "     Could not follow link \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:443
-#, c-format
-msgid "     Could not stat \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:453
-#, c-format
-msgid "     Archive file not saved: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:457
-#, c-format
-msgid "     Could not open directory \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:466
-#, c-format
-msgid "     Unknown file type %d; not saved: %s\n"
-msgstr ""
-
-#: src/filed/backup.c:522
-#, c-format
-msgid "%s signature digest initialization failed\n"
-msgstr ""
-
-#: src/filed/backup.c:630
-#, c-format
-msgid "     Cannot open \"%s\": ERR=%s.\n"
-msgstr ""
-
-#: src/filed/backup.c:667
-#, c-format
-msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
-msgstr ""
-
-#: src/filed/backup.c:763
-msgid "Failed to allocate memory for crypto signature.\n"
-msgstr ""
-
-#: 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:813
-msgid "An error occurred finalizing signing the stream.\n"
-msgstr ""
-
-#: src/filed/backup.c:931
-#, c-format
-msgid "Compression deflateParams error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:968
-msgid "Encrypting sparse or offset data not supported.\n"
-msgstr ""
-
-#: src/filed/backup.c:975
-msgid "Failed to initialize encryption context.\n"
-msgstr ""
-
-#: src/filed/backup.c:1085
-#, c-format
-msgid "Compression deflate error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1092
-#, c-format
-msgid "Compression deflateReset error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1126
-#, c-format
-msgid "Compression LZO error: %d\n"
-msgstr ""
-
-#: src/filed/backup.c:1171 src/filed/backup.c:1187
-msgid "Encryption error\n"
-msgstr ""
-
-#: src/filed/backup.c:1213
-#, c-format
-msgid "Read error on file %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/backup.c:1216
-#, c-format
-msgid "Too many errors. JobErrors=%d.\n"
-msgstr ""
-
-#: src/filed/backup.c:1226
-msgid "Encryption padding error\n"
-msgstr ""
-
-#: src/filed/backup.c:1290
-msgid "Invalid file flags, no supported data stream type.\n"
-msgstr ""
-
-#: src/filed/backup.c:1549
-#, c-format
-msgid "VSS Writer (BackupComplete): %s\n"
-msgstr ""
-
-#: src/filed/restore.c:114
-#, c-format
-msgid "Size of data or stream of %s not correct. Original %s, restored %s.\n"
-msgstr ""
-
-#: src/filed/restore.c:134
-#, c-format
-msgid "Invalid length of Finder Info (got %d, not 32)\n"
-msgstr ""
-
-#: src/filed/restore.c:139
-#, c-format
-msgid "Could not set Finder Info on %s\n"
-msgstr ""
-
-#: src/filed/restore.c:418
-msgid "LZO init failed\n"
-msgstr ""
-
-#: src/filed/restore.c:660
-msgid "Unexpected cryptographic session data stream.\n"
-msgstr ""
-
-#: src/filed/restore.c:670
-msgid ""
-"No private decryption keys have been defined to decrypt encrypted backup "
-"data.\n"
-msgstr ""
-
-#: src/filed/restore.c:681
-msgid "Could not create digest.\n"
-msgstr ""
-
-#: src/filed/restore.c:699
-msgid "Missing private key required to decrypt encrypted backup data.\n"
-msgstr ""
-
-#: src/filed/restore.c:702
-msgid "Decrypt of the session key failed.\n"
-msgstr ""
-
-#: src/filed/restore.c:708
-#, c-format
-msgid "An error occurred while decoding encrypted session data stream: %s\n"
-msgstr ""
-
-#: 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:783 src/filed/restore.c:835
-#, c-format
-msgid "Failed to initialize decryption context for %s\n"
-msgstr ""
-
-#: src/filed/restore.c:847
-#, c-format
-msgid "Cannot open resource fork for %s.\n"
-msgstr ""
-
-#: src/filed/restore.c:992
-msgid "Unexpected cryptographic signature data stream.\n"
-msgstr ""
-
-#: src/filed/restore.c:1000
-#, c-format
-msgid "Failed to decode message signature for %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1064
-#, c-format
-msgid "Encountered %ld acl errors while doing restore\n"
-msgstr ""
-
-#: src/filed/restore.c:1068
-#, c-format
-msgid "Encountered %ld xattr errors while doing restore\n"
-msgstr ""
-
-#: 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:1076
-#, c-format
-msgid "%d non-supported resource fork streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1079
-#, c-format
-msgid "%d non-supported Finder Info streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1082
-#, c-format
-msgid "%d non-supported acl streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1085
-#, c-format
-msgid "%d non-supported crypto streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1088
-#, c-format
-msgid "%d non-supported xattr streams ignored.\n"
-msgstr ""
-
-#: src/filed/restore.c:1168
-msgid "Zlib errno"
-msgstr ""
-
-#: src/filed/restore.c:1170
-msgid "Zlib stream error"
-msgstr ""
-
-#: src/filed/restore.c:1172
-msgid "Zlib data error"
-msgstr ""
-
-#: src/filed/restore.c:1174
-msgid "Zlib memory error"
-msgstr ""
-
-#: src/filed/restore.c:1176
-msgid "Zlib buffer error"
-msgstr ""
-
-#: src/filed/restore.c:1178
-msgid "Zlib version error"
-msgstr ""
-
-#: src/filed/restore.c:1218
-#, c-format
-msgid "Missing cryptographic signature for %s\n"
-msgstr ""
-
-#: 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:1268
-#, c-format
-msgid "Digest one file failed for file: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1307
-#, c-format
-msgid "Signature validation failed for %s: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1404
-#, c-format
-msgid "LZO uncompression error on file %s. ERR=%d\n"
-msgstr ""
-
-#: src/filed/restore.c:1441
-#, c-format
-msgid "Uncompression error on file %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/restore.c:1474
-#, c-format
-msgid "Write error in Win32 Block Decomposition on %s: %s\n"
-msgstr ""
-
-#: src/filed/restore.c:1533
-msgid "Decryption error\n"
-msgstr ""
-
-#: src/filed/restore.c:1626
-msgid "Logic error: output file should be open\n"
-msgstr ""
-
-#: src/filed/restore.c:1664
-msgid "Logic error: output file should not be open\n"
-msgstr ""
-
-#: 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:1819
-msgid "Open File Manager paused\n"
-msgstr ""
-
-#: src/filed/restore.c:1823
-msgid "FAILED to pause Open File Manager\n"
-msgstr ""
-
-#: src/filed/restore.c:1831
-#, c-format
-msgid "Running as '%s'. Privmask=%#08x\n"
-msgstr ""
-
-#: src/filed/restore.c:1833
-msgid "Failed to retrieve current UserName\n"
-msgstr ""
-
-#: src/filed/job.c:456
-#, c-format
-msgid "2901 Job %s not found.\n"
-msgstr ""
-
-#: src/filed/job.c:466
-#, c-format
-msgid "2001 Job %s marked to be canceled.\n"
-msgstr ""
-
-#: src/filed/job.c:469
-msgid "2902 Error scanning cancel command.\n"
-msgstr ""
-
-#: src/filed/job.c:492
-#, c-format
-msgid "2991 Bad setdebug command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:515
-#, c-format
-msgid "Bad estimate command: %s"
-msgstr ""
-
-#: src/filed/job.c:516
-msgid "2992 Bad estimate command.\n"
-msgstr ""
-
-#: src/filed/job.c:539
-#, c-format
-msgid "Bad Job Command: %s"
-msgstr ""
-
-#: src/filed/job.c:578
-#, c-format
-msgid "Bad RunBeforeJob command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:579 src/filed/job.c:598
-msgid "2905 Bad RunBeforeJob command.\n"
-msgstr ""
-
-#: src/filed/job.c:609
-msgid "2905 Bad RunBeforeNow command.\n"
-msgstr ""
-
-#: src/filed/job.c:628
-#, c-format
-msgid "Bad RunAfter command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:629
-msgid "2905 Bad RunAfterJob command.\n"
-msgstr ""
-
-#: src/filed/job.c:665
-#, c-format
-msgid "Bad RunScript command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:666
-msgid "2905 Bad RunScript command.\n"
-msgstr ""
-
-#: src/filed/job.c:720
-#, c-format
-msgid "Bad RestoreObject command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:785
-msgid "2909 Bad RestoreObject command.\n"
-msgstr ""
-
-#: src/filed/job.c:824
-#, c-format
-msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
-msgstr ""
-
-#: src/filed/job.c:866
-#, c-format
-msgid "Error running program: %s. stat=%d: ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:877
-#, c-format
-msgid "Cannot open FileSet input file: %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1031
-#, c-format
-msgid "REGEX %s compile error. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1182
-#, c-format
-msgid "Invalid FileSet command: %s\n"
-msgstr ""
-
-#: 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:1664
-#, c-format
-msgid "Unknown backup level: %s\n"
-msgstr ""
-
-#: src/filed/job.c:1677
-#, c-format
-msgid "Bad level command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:1699
-#, c-format
-msgid "Bad session command: %s"
-msgstr ""
-
-#: src/filed/job.c:1760
-#, c-format
-msgid "Bad storage command: %s"
-msgstr ""
-
-#: src/filed/job.c:1781
-#, c-format
-msgid "Failed to connect to Storage daemon: %s:%d\n"
-msgstr ""
-
-#: src/filed/job.c:1793
-msgid "Failed to authenticate Storage daemon.\n"
-msgstr ""
-
-#: src/filed/job.c:1840
-msgid "ACL support not configured for your machine.\n"
-msgstr ""
-
-#: src/filed/job.c:1844
-msgid "XATTR support not configured for your machine.\n"
-msgstr ""
-
-#: src/filed/job.c:1853
-msgid "Cannot contact Storage daemon\n"
-msgstr ""
-
-#: src/filed/job.c:1872
-#, c-format
-msgid "Bad response to append open: %s\n"
-msgstr ""
-
-#: src/filed/job.c:1877
-msgid "Bad response from stored to open command\n"
-msgstr ""
-
-#: src/filed/job.c:1909
-#, c-format
-msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
-msgstr ""
-
-#: src/filed/job.c:1912
-#, c-format
-msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1919
-#, c-format
-msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
-msgstr ""
-
-#: src/filed/job.c:1925
-#, c-format
-msgid "VSS Writer (PrepareForBackup): %s\n"
-msgstr ""
-
-#: src/filed/job.c:1930
-msgid "No drive letters found for generating VSS snapshots.\n"
-msgstr ""
-
-#: src/filed/job.c:1934
-#, c-format
-msgid "VSS was not initialized properly. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:1985
-msgid "Append Close with SD failed.\n"
-msgstr ""
-
-#: src/filed/job.c:1989
-#, c-format
-msgid "Bad status %d returned from Storage Daemon.\n"
-msgstr ""
-
-#: src/filed/job.c:2019
-#, c-format
-msgid "2994 Bad verify command: %s\n"
-msgstr ""
-
-#: src/filed/job.c:2034 src/filed/job.c:2075
-#, c-format
-msgid "2994 Bad verify level: %s\n"
-msgstr ""
-
-#: src/filed/job.c:2146
-#, c-format
-msgid "Bad replace command. CMD=%s\n"
-msgstr ""
-
-#: src/filed/job.c:2169
-#, c-format
-msgid "Bad where regexp. where=%s\n"
-msgstr ""
-
-#: 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:2252
-#, c-format
-msgid "VSS Writer (RestoreComplete): %s\n"
-msgstr ""
-
-#: src/filed/job.c:2302
-msgid "Improper calling sequence.\n"
-msgstr ""
-
-#: src/filed/job.c:2322
-#, c-format
-msgid "Bad response to SD read open: %s\n"
-msgstr ""
-
-#: src/filed/job.c:2327
-msgid "Bad response from stored to read open command\n"
-msgstr ""
-
-#: src/filed/job.c:2391
-#, c-format
-msgid "Comm error with SD. bad response to %s. ERR=%s\n"
-msgstr ""
-
-#: src/filed/job.c:2394
-#, c-format
-msgid "Bad response to %s command. Wanted %s, got %s\n"
-msgstr ""
-
-#: src/filed/authenticate.c:68
-#, c-format
-msgid "I only authenticate directors, not %d\n"
-msgstr ""
-
-#: src/filed/authenticate.c:100
-#, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
-msgstr ""
-
-#: src/filed/authenticate.c:144
-#, c-format
-msgid "Incorrect password given by Director at %s.\n"
-msgstr ""
-
-#: src/filed/authenticate.c:263
-msgid ""
-"Authorization key rejected by Storage daemon.\n"
-"Please see "
-msgstr ""
-
-#: examples/nagios/check_bacula/check_bacula.c:59
-#, c-format
-msgid ""
-"Copyright (C) 2005 Christian Masopust\n"
-"Written by Christian Masopust (2005)\n"
-"\n"
-"Version: "
-msgstr ""
-
-#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
-#, c-format
-msgid "Failed ASSERT: %s\n"
-msgstr ""
-
-#: src/win32/compat/compat.cpp:2721
-msgid ""
-"\n"
-"\n"
-"Bacula ERROR: "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:107
-msgid "RegisterServiceCtlHandler failed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:108
-msgid "Failure contacting the Service Handler"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:119
-msgid "Service start report failed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:172
-msgid "StartServiceCtrlDispatcher failed."
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:179
-msgid "KERNEL32.DLL not found: Bacula service not started"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:189
-msgid "Registry service not found: Bacula service not started"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:191
-msgid "Registry service entry point not found"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:212
-msgid "Report Service failure"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:243
-msgid "Unable to install the service"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:251
-msgid "Service command length too long"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:252
-msgid "Service command length too long. Service not registered."
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:265
-msgid ""
-"The Service Control Manager could not be contacted - the service was not "
-"installed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:288 src/win32/libwin32/service.cpp:317
-#: src/win32/libwin32/service.cpp:365 src/win32/libwin32/service.cpp:373
-#: src/win32/libwin32/service.cpp:377
-msgid "The Bacula service: "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:295
-msgid ""
-"Provides file backup and restore services. Bacula -- the network backup "
-"solution."
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:306
-msgid "Cannot write System Registry for "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:307
-msgid ""
-"The System Registry could not be updated - the Bacula service was not "
-"installed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:316
-msgid "Cannot add Bacula key to System Registry"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:327
-msgid "The "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:385
-msgid "An existing Bacula service: "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:394
-msgid ""
-"The service Manager could not be contacted - the Bacula service was not "
-"removed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:407
-msgid ""
-"Could not find registry entry.\n"
-"Service probably not registerd - the Bacula service was not removed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:414
-msgid "Could not delete Registry key for "
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:425
-msgid "Bacula could not be contacted, probably not running"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:433
-msgid "The Bacula service has been removed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:474
-msgid "SetServiceStatus failed"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:500
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s error: %ld at %s:%d"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:576
-#, c-format
-msgid "Locked by: %s, duration: %ld seconds\n"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:580
-#, c-format
-msgid "No longer locked\n"
-msgstr ""
-
-#: src/win32/libwin32/service.cpp:584
-msgid "Could not lock database"
-msgstr ""
-
-#: src/win32/libwin32/main.cpp:245
-msgid "Bad Command Line Option"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:65
-msgid "Config file editor"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:75
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:112
-msgid "Close without saving"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-#, c-format
-msgid "Unable to write to %s\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigfileeditor.cpp:140
-msgid "Error while saving"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:234
-#: src/wx-console/wxbrestorepanel.cpp:1947
-#: src/wx-console/wxbrestorepanel.cpp:1976
-msgid "Enter restore mode"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:237
-msgid "Cancel restore"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
-msgid "Remove"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
-msgid "Refresh"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:290
-msgid "Filename"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:294
-msgid "Size"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1897
-msgid "Job Name"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1153
-#: src/wx-console/wxbrestorepanel.cpp:1156
-#: src/wx-console/wxbrestorepanel.cpp:1239
-#: src/wx-console/wxbrestorepanel.cpp:1849
-#: src/wx-console/wxbrestorepanel.cpp:1851
-#: src/wx-console/wxbrestorepanel.cpp:1912
-msgid "Fileset"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1233
-#: src/wx-console/wxbrestorepanel.cpp:1249
-#: src/wx-console/wxbrestorepanel.cpp:1251
-#: src/wx-console/wxbrestorepanel.cpp:1259
-#: src/wx-console/wxbrestorepanel.cpp:1261
-#: src/wx-console/wxbrestorepanel.cpp:1280
-#: src/wx-console/wxbrestorepanel.cpp:1287
-#: src/wx-console/wxbrestorepanel.cpp:1839
-#: src/wx-console/wxbrestorepanel.cpp:1850
-#: src/wx-console/wxbrestorepanel.cpp:1971
-msgid "Before"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:342
-msgid "Please configure parameters concerning files to restore :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1905
-msgid "always"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if newer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if older"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1908
-msgid "never"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:359
-msgid "Please configure parameters concerning files restoration :"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:435
-msgid "Error : no clients returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:459
-msgid "Error : no filesets returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:483
-msgid "Error : no storage returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
-msgid "Error : no jobs returned by the director."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:516
-msgid "RestoreFiles"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:551
-msgid "Please configure your restore parameters."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:556
-msgid "Please select a client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:560
-msgid "Please select a restore date."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:565
-msgid "Building restore tree..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:613
-msgid "Error while starting restore: "
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:705
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:720 src/wx-console/wxbmainframe.cpp:685
-msgid "Unexpected question has been received.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:742
-#: src/wx-console/wxbrestorepanel.cpp:764
-msgid "bwx-console: unexpected restore question."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:775
-msgid " files selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:780
-msgid " file selected to be restored."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:787
-#, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:797
-msgid "Restore failed : no file selected.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:798
-msgid "Restore failed : no file selected."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:808
-msgid "Restoring, please wait..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:821
-msgid "Job queued. JobId="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:823
-msgid "Restore queued, jobid="
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:827
-msgid "Job failed."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:828
-msgid "Restore failed, please look at messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:829
-msgid "Restore failed, please look at messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:835
-#: src/wx-console/wxbrestorepanel.cpp:836
-msgid "Failed to retrieve jobid.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:862
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:863
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job created, but not yet running."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:894
-#, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:898
-msgid "Restore job terminated successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:899
-msgid "Restore job terminated successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:904
-msgid "Restore job terminated in error, see messages in console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:905
-msgid "Restore job terminated in error, see messages.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:910
-msgid "Restore job reported a non-fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:914
-msgid "Restore job reported a fatal error."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:919
-msgid "Restore job cancelled by user."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:920
-msgid "Restore job cancelled by user.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:925
-msgid "Restore job is waiting on File daemon."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:929
-msgid "Restore job is waiting for new media."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:933
-msgid "Restore job is waiting for storage resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:937
-msgid "Restore job is waiting for job resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:941
-msgid "Restore job is waiting for Client resource."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:945
-msgid "Restore job is waiting for maximum jobs."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:949
-msgid "Restore job is waiting for start time."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:953
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1002
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1013
-msgid "Restore done successfully.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1014
-msgid "Restore done successfully."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1086
-msgid "Applying restore configuration changes..."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1138
-msgid "Failed to find the selected client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1158
-msgid "Failed to find the selected fileset."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1178
-msgid "Failed to find the selected storage."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1199
-#: src/wx-console/wxbrestorepanel.cpp:1886
-msgid "Run Restore job"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1216
-msgid "Restore configuration changes were applied."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1225
-msgid "Restore cancelled.\n"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1226
-msgid "Restore cancelled."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1248
-msgid "No results to list."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1250
-msgid "No backup found for this client."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1257
-msgid "ERROR"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1258
-msgid "Query failed"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1260
-msgid "Cannot get previous backups list, see console."
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1896
-msgid "JobName:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1898
-msgid "Bootstrap:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1900
-msgid "Where:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1903
-msgid "Replace:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1906
-msgid "ifnewer"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1907
-msgid "ifolder"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1911
-msgid "FileSet:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1913
-msgid "Client:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1915
-msgid "Storage:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1917
-msgid "When:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:1920
-msgid "Priority:"
-msgstr ""
-
-#: src/wx-console/wxbrestorepanel.cpp:2028
-msgid "Restoring..."
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:125
-#, 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 ""
-
-#: src/wx-console/console_thread.cpp:132
-msgid ""
-"No Director resource defined in config file.\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:151
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:173
-msgid "Error while initializing windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:189
-msgid "Error while cleaning up windows sockets...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:228
-msgid "Error while initializing library."
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:256
-msgid "Cryptographic library initialization failed.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:260
-msgid "Please correct configuration file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:302
-msgid "Error : Library not initialized\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:313
-msgid "Error : No configuration file loaded\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:323
-msgid "Connecting...\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:339
-msgid "Error : No director defined in config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:351
-msgid "Multiple directors found in your config file.\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:360
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:389
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:410
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:432
-msgid "Failed to connect to the director\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:442
-msgid "Connected\n"
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:499
-msgid "<< Unexpected signal received : "
-msgstr ""
-
-#: src/wx-console/console_thread.cpp:519
-msgid "Connection terminated\n"
-msgstr ""
-
-#: src/wx-console/wxbconfigpanel.cpp:213
-msgid "Apply"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-#: src/wx-console/wxbmainframe.cpp:291
-msgid "Type your command below:"
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:117
-msgid "Unknown command."
-msgstr ""
-
-#: src/wx-console/wxbhistorytextctrl.cpp:126
-msgid "Possible completions: "
-msgstr ""
-
-#: src/wx-console/main.cpp:119
-msgid "Bacula bwx-console"
-msgstr ""
-
-#: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
-#, c-format
-msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
-msgid "Connect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
-msgid "Connect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:249
-msgid "Disconnect of the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change of configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:251
-msgid "Change your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:252
-msgid "Edit your configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:258
-msgid "&File"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:283
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:419
-msgid "First run"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:438
-msgid "Unable to read configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:450
-msgid "Please choose a configuration file to use"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:463
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:464
-msgid "Configuration file read successfully"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:474
-#, c-format
-msgid "Using this configuration file: %s\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:479
-msgid "Connecting to the director..."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:521
-msgid "About Bacula bwx-console"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:527
-msgid "Please choose your default configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:531
-msgid "Use this configuration file as default?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:532
-msgid "Configuration file"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:603
-msgid "Console thread terminated."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:611
-msgid "Connection to the director lost. Quit program?"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:612
-msgid "Connection lost"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:628
-msgid "Connected to the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:651
-msgid "Reconnect"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:652
-msgid "Reconnect to the director"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:666
-msgid "Disconnected of the director."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr ""
-
-#: src/qt-console/tray-monitor/tray-monitor.cpp:67
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:92
-#, c-format
-msgid "Already connected\"%s\".\n"
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:105
-#, c-format
-msgid ""
-"Connecting to Director %s:%d\n"
-"\n"
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:208
-msgid "Initializing ..."
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
-msgid "Connected"
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:348
-msgid "Command completed ..."
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
-msgid "Processing command ..."
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:362
-msgid "At main prompt waiting for input ..."
-msgstr ""
-
-#: 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:390
-msgid "Command failed."
-msgstr ""
-
-#: src/qt-console/bcomm/dircomm.cpp:463
-msgid "Director disconnected."
-msgstr ""
-
-#: src/qt-console/bat_conf.cpp:154
-#, c-format
-msgid "Console: name=%s\n"
-msgstr ""
-
-#: src/qt-console/main.cpp:191
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: 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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          print this message.\n"
-"\n"
+msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
diff --git a/po/uk.po b/po/uk.po
index 70a7e3a..da77d3d 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,14 +1,14 @@
 # Ukrainian translations for bacula package
 # Український переклад bacula.
-# Copyright (C) 2010 Kern Sibbald
+# Copyright (C) 2010-2014 Kern Sibbald
 # This file is distributed under the same license as the bacula package.
 # Vitaliy Kosharskiy <vkosharskiy at ukrcard.com.ua>, 2010.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bacula 3.0.3\n"
+"Project-Id-Version: bacula 5.0.3\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2013-02-19 18:26+0100\n"
+"POT-Creation-Date: 2014-07-29 18:18+0200\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"
@@ -19,18191 +19,2000 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: src/dird/jobq.c:74
+#: src/baconfig.h:60 src/baconfig.h:61 src/baconfig.h:66 src/baconfig.h:67
 #, c-format
-msgid "pthread_attr_init: ERR=%s\n"
+msgid "Failed ASSERT: %s\n"
 msgstr ""
 
-#: src/dird/jobq.c:83
-#, c-format
-msgid "pthread_mutex_init: ERR=%s\n"
+#: src/baconfig.h:76
+msgid "*None*"
 msgstr ""
 
-#: src/dird/jobq.c:89
-#, c-format
-msgid "pthread_cond_init: ERR=%s\n"
+#: src/lib/status.h:73
+msgid ""
+"\n"
+"Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/jobq.c:131
-#, c-format
-msgid "pthread_cond_broadcast: ERR=%s\n"
+#: src/lib/status.h:80
+msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/jobq.c:139
-#, c-format
-msgid "pthread_cond_wait: ERR=%s\n"
+#: src/lib/status.h:82
+msgid "===================================================================\n"
 msgstr ""
 
-#: src/dird/jobq.c:180
-#, c-format
-msgid "Job %s waiting %d seconds for scheduled start time.\n"
+#: src/lib/status.h:102
+msgid "Created"
 msgstr ""
 
-#: 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"
+#: src/lib/status.h:106
+msgid "Error"
 msgstr ""
 
-#: src/dird/jobq.c:242
-#, c-format
-msgid "pthread_thread_create: ERR=%s\n"
+#: src/lib/status.h:109
+msgid "Diffs"
 msgstr ""
 
-#: src/dird/jobq.c:352
-#, c-format
-msgid "pthread_cond_signal: ERR=%s\n"
+#: src/lib/status.h:112
+msgid "Cancel"
 msgstr ""
 
-#: src/dird/jobq.c:363
-#, c-format
-msgid "pthread_create: ERR=%s\n"
+#: src/lib/status.h:115
+msgid "OK"
 msgstr ""
 
-#: src/dird/jobq.c:647
-#, c-format
-msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
+#: src/lib/status.h:118
+msgid "OK -- with warnings"
 msgstr ""
 
-#: src/dird/jobq.c:703 src/dird/jobq.c:708
-msgid "previous Job"
+#: src/lib/status.h:122
+msgid "Other"
 msgstr ""
 
-#: src/dird/jobq.c:745
+#: src/lib/status.h:134
 #, c-format
-msgid ""
-"Job canceled. Attempt to read and write same device.\n"
-"    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
+msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:54
+#: src/lib/status.h:142
 #, c-format
-msgid "The current %s retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:59
-msgid "Continue? (yes/mod/no): "
-msgstr ""
-
-#: 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: "
+msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:67
-msgid "Invalid period.\n"
+#: src/lib/status.h:171 src/lib/status.h:182 src/lib/status.h:196
+#: src/lib/status.h:200 src/lib/status.h:204
+msgid "Bacula "
 msgstr ""
 
-#: src/dird/ua_select.c:143
-msgid "You have the following choices:\n"
-msgstr ""
+#: src/qt-console/bat_conf.cpp:130
+#, c-format
+msgid "No record for %d %s\n"
+msgstr "Відсутні записи для %d %s\n"
 
-#: src/dird/ua_select.c:159
-msgid "The defined Storage resources are:\n"
-msgstr ""
+#: src/qt-console/bat_conf.cpp:139
+#, c-format
+msgid "Director: name=%s address=%s DIRport=%d\n"
+msgstr "Керівник: назва=%s адреса=%s DIRport=%d\n"
 
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:490
-#: src/wx-console/wxbrestorepanel.cpp:491
-#: src/wx-console/wxbrestorepanel.cpp:1173
-#: src/wx-console/wxbrestorepanel.cpp:1176
-#: src/wx-console/wxbrestorepanel.cpp:1845
-#: src/wx-console/wxbrestorepanel.cpp:1916
-msgid "Storage"
-msgstr ""
+#: src/qt-console/bat_conf.cpp:143
+#, c-format
+msgid "Console: name=%s\n"
+msgstr "Консоль: назва=%s\n"
 
-#: src/dird/ua_select.c:167
-msgid "Select Storage resource"
-msgstr ""
+#: src/qt-console/bat_conf.cpp:146
+#: src/qt-console/tray-monitor/tray_conf.cpp:183
+#, fuzzy, c-format
+msgid "ConsoleFont: name=%s font face=%s\n"
+msgstr "Консоль: назва=%s rcfile=%s histfile=%s\n"
 
-#: src/dird/ua_select.c:182 src/dird/ua_restore.c:1296
-msgid "The defined FileSet resources are:\n"
-msgstr ""
+#: src/qt-console/bat_conf.cpp:150 src/qt-console/bat_conf.cpp:231
+#: src/qt-console/bat_conf.cpp:279 src/qt-console/bat_conf.cpp:309
+#, c-format
+msgid "Unknown resource type %d\n"
+msgstr "Невідомий тип ресурсу %d\n"
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
-msgid "FileSet"
-msgstr ""
+#: src/qt-console/bat_conf.cpp:257
+#: src/qt-console/tray-monitor/tray_conf.cpp:276
+#, c-format
+msgid "%s item is required in %s resource, but not found.\n"
+msgstr "Не знайдено необхідний елемент %s для ресурсу %s.\n"
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300
-msgid "Select FileSet resource"
-msgstr ""
+#: src/qt-console/bat_conf.cpp:326
+#: src/qt-console/tray-monitor/tray_conf.cpp:360
+#, c-format
+msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
+msgstr "Спроба визначити другий %s ресурс із назвою \"%s\" не дозволяється.\n"
 
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
-msgid "Could not find a Catalog resource\n"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:85
+#, c-format
+msgid "Already connected\"%s\".\n"
+msgstr "Вже приєднано\"%s\".\n"
 
-#: src/dird/ua_select.c:223
-msgid "You must specify a \"use <catalog-name>\" command before continuing.\n"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:96
+#: src/qt-console/tray-monitor/tray-monitor.cpp:347
+#, c-format
+msgid "Connecting to Director %s:%d"
+msgstr "Приєднуюсь до Керівника %s:%d"
 
-#: src/dird/ua_select.c:229
-msgid "The defined Catalog resources are:\n"
+#: src/qt-console/bcomm/dircomm.cpp:98
+#, c-format
+msgid ""
+"Connecting to Director %s:%d\n"
+"\n"
 msgstr ""
+"З'єднуюсь із Керівником %s:%d\n"
+"\n"
 
-#: src/dird/ua_select.c:237
-msgid "Catalog"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:150
+#, c-format
+msgid "Failed to initialize TLS context for Console \"%s\".\n"
+msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
 
-#: src/dird/ua_select.c:237
-msgid "Select Catalog resource"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:173
+#, c-format
+msgid "Failed to initialize TLS context for Director \"%s\".\n"
+msgstr "Ініціалізація контексту TLS для Керівника невдала \"%s\".\n"
 
-#: src/dird/ua_select.c:255 src/dird/ua_select.c:281
-msgid "The defined Job resources are:\n"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:195
+#: src/qt-console/tray-monitor/tray-monitor.cpp:352
+msgid "Director daemon"
+msgstr "Керівник"
 
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: 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 ""
+#: src/qt-console/bcomm/dircomm.cpp:233
+msgid "Initializing ..."
+msgstr "Ініціалізація ..."
 
-#: src/dird/ua_select.c:266 src/dird/ua_select.c:289
-msgid "Select Job resource"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:249 src/qt-console/console/console.cpp:130
+msgid "Connected"
+msgstr "З'єднано"
 
-#: src/dird/ua_select.c:308
-#, c-format
-msgid "Error: Restore Job resource \"%s\" does not exist.\n"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:373
+msgid "Command completed ..."
+msgstr "Команду виконано ..."
 
-#: src/dird/ua_select.c:322
-msgid "The defined Restore Job resources are:\n"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:380 src/qt-console/console/console.cpp:367
+msgid "Processing command ..."
+msgstr "Виконання команди ..."
 
-#: src/dird/ua_select.c:330
-msgid "Select Restore Job"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:387
+msgid "At main prompt waiting for input ..."
+msgstr "Очікуться введення у основній рядку ..."
 
-#: src/dird/ua_select.c:347
-msgid "The defined Client resources are:\n"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:394 src/qt-console/bcomm/dircomm.cpp:407
+msgid "At prompt waiting for input ..."
+msgstr "Очікуться введення у рядку ..."
 
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:432
-#: src/wx-console/wxbrestorepanel.cpp:442
-#: src/wx-console/wxbrestorepanel.cpp:443
-#: src/wx-console/wxbrestorepanel.cpp:700
-#: src/wx-console/wxbrestorepanel.cpp:1133
-#: src/wx-console/wxbrestorepanel.cpp:1136
-#: src/wx-console/wxbrestorepanel.cpp:1238
-#: src/wx-console/wxbrestorepanel.cpp:1838
-#: src/wx-console/wxbrestorepanel.cpp:1840
-#: src/wx-console/wxbrestorepanel.cpp:1914
-#: src/wx-console/wxbrestorepanel.cpp:1970
-msgid "Client"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:415
+msgid "Command failed."
+msgstr "Помилка команди"
 
-#: src/dird/ua_select.c:355
-msgid "Select Client (File daemon) resource"
-msgstr ""
+#: src/qt-console/bcomm/dircomm.cpp:487
+msgid "Director disconnected."
+msgstr "Керівник від'єднано"
 
-#: src/dird/ua_select.c:382
+#: src/qt-console/bcomm/dircomm_auth.cpp:107
 #, c-format
-msgid "Error: Client resource %s does not exist.\n"
-msgstr ""
+msgid "Director authorization problem at \"%s:%d\"\n"
+msgstr "Проблеми авторизації Директора \"%s:%d\"\n"
 
-#: src/dird/ua_select.c:407
+#: src/qt-console/bcomm/dircomm_auth.cpp:114
 #, c-format
-msgid "Could not find Client %s: ERR=%s"
+msgid ""
+"Authorization problem: Remote server at \"%s:%d\" did not advertise required "
+"TLS support.\n"
 msgstr ""
+"Проблеми авторизації: Віддалений сервер \"%s:%d\" не повідомляє про "
+"необхідність використання TLS.\n"
 
-#: src/dird/ua_select.c:417 src/dird/ua_select.c:471
+#: src/qt-console/bcomm/dircomm_auth.cpp:122
 #, c-format
-msgid "Could not find Client \"%s\": ERR=%s"
+msgid ""
+"Authorization problem with Director at \"%s:%d\": Remote server requires "
+"TLS.\n"
 msgstr ""
+"Проблеми авторизації Керівника \"%s:%d\": Віддалений сепвер вимагає TLS.\n"
 
-#: src/dird/ua_select.c:446
+#: src/qt-console/bcomm/dircomm_auth.cpp:133
 #, c-format
-msgid "Error obtaining client ids. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:450
-msgid "No clients defined. You must run a job before using this command.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:454
-msgid "Defined Clients:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:464
-msgid "Select the Client"
-msgstr ""
+msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
+msgstr "Встановлення TLS із Керівником невдале \"%s:%d\"\n"
 
-#: src/dird/ua_select.c:497 src/dird/ua_select.c:521 src/dird/ua_select.c:566
+#: src/qt-console/bcomm/dircomm_auth.cpp:145
 #, c-format
-msgid "Could not find Pool \"%s\": ERR=%s"
+msgid ""
+"Bad response to Hello command: ERR=%s\n"
+"The Director at \"%s:%d\" is probably not running.\n"
 msgstr ""
+"Погана відповідь на команду Hello: ERR=%s\n"
+"Керівник \"%s:%d\" ймовірно не запущений.\n"
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
+#: src/qt-console/bcomm/dircomm_auth.cpp:154
 #, c-format
-msgid "Error obtaining pool ids. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_select.c:536
-msgid "No pools defined. Use the \"create\" command to create one.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:540
-msgid "Defined Pools:\n"
-msgstr ""
-
-#: 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 ""
+msgid "Director at \"%s:%d\" rejected Hello command\n"
+msgstr "Керівник \"%s:%d\" відкинув команду Hello\n"
 
-#: 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"
+#: src/qt-console/bcomm/dircomm_auth.cpp:169
+#, fuzzy, c-format
+msgid ""
+"Authorization problem with Director at \"%s:%d\"\n"
+"Most likely the passwords do not agree.\n"
+"If you are using TLS, there may have been a certificate validation error "
+"during the TLS handshake.\n"
+"Please see "
 msgstr ""
+"Проблеми авторизації із Керівником \"%s:%d\"\n"
+"Швидше за все, проблема у паролях.\n"
+"Якщо Ви використовуєте TLS, можливо, невдала перевірка сертифікату під час "
+"TLS handshake.\n"
+"Для отримання допомоги, будь ласка, перегляньте http://www.bacula.org/en/rel-"
+"manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000.\n"
 
-#: src/dird/ua_select.c:553
-msgid "Select the Pool"
-msgstr ""
+#: src/qt-console/main.cpp:154
+msgid "Cryptography library initialization failed.\n"
+msgstr "Ініціалізація криптографії невдала.\n"
 
-#: src/dird/ua_select.c:591
+#: src/qt-console/main.cpp:158
 #, c-format
-msgid "No access to Pool \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_select.c:623
-msgid "Enter *MediaId or Volume name: "
-msgstr ""
-
-#: src/dird/ua_select.c:658
-msgid "The defined Pool resources are:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:666
-msgid "Select Pool resource"
-msgstr ""
+msgid "Please correct configuration file: %s\n"
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
+#: src/qt-console/main.cpp:180
 #, c-format
-msgid "Error: Pool resource \"%s\" does not exist.\n"
+msgid ""
+"\n"
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: 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          no signals\n"
+"       -t          test - read configuration and exit\n"
+"       -?          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/dird/ua_select.c:701
-msgid "Enter the JobId to select: "
-msgstr ""
+#: src/qt-console/main.cpp:213 src/qt-console/main.cpp:243
+msgid "TLS required but not configured in Bacula.\n"
+msgstr "TLS необхідний, але не налаштовано у Bacula.\n"
 
-#: src/dird/ua_select.c:739
+#: src/qt-console/main.cpp:221
 #, c-format
-msgid "Could not find Job \"%s\": ERR=%s"
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Director \"%s\" in %s. At least one CA certificate store is required.\n"
 msgstr ""
+"Жоден із параметрів \"TLS CA Certificate\" або \"TLS CA Certificate Dir\" не "
+"задано для Керівника \"%s\" у %s. Необхідне щонайменше одне сховище для "
+"сертифікату CA.\n"
 
-#: src/dird/ua_select.c:819
+#: src/qt-console/main.cpp:230
 #, c-format
-msgid "Automatically selected %s: %s\n"
+msgid ""
+"No Director resource defined in %s\n"
+"Without that I don't how to speak to the Director :-(\n"
 msgstr ""
+"У %s не задано ресурсу Керівника\n"
+"Без цього я не знаю як спілкуватись із Керівником :-(\n"
 
-#: src/dird/ua_select.c:830
+#: src/qt-console/main.cpp:251
 #, c-format
 msgid ""
-"Your request has multiple choices for \"%s\". Selection is not possible in "
-"batch mode.\n"
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Console \"%s\" in %s.\n"
 msgstr ""
-"Ваш запит до \"%s\" має декілька можливостей вибору. У пакетному режимі "
-"вибір не можливий.\n"
+"Жоден із параметрів \"TLS CA Certificate\" або \"TLS CA Certificate Dir\" не "
+"задано для Консолі \"%s\" у %s.\n"
 
-#: src/dird/ua_select.c:848
-#, c-format
-msgid "Selection list for \"%s\" is empty!\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:75
+#, fuzzy
+msgid ""
+"Director authorization problem.\n"
+"Most likely the passwords do not agree.\n"
+"Please see "
 msgstr ""
+"Проблеми під час авторизації Керівником.\n"
+"Швидше за все, невірні паролі.\n"
+"Для отримання допомоги, будь ласка, перегляньте http://www.bacula.org/en/rel-"
+"manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000.\n"
 
-#: src/dird/ua_select.c:854
+#: src/qt-console/tray-monitor/authenticate.cpp:84
 #, c-format
-msgid "Automatically selected: %s\n"
-msgstr ""
+msgid "Bad response to Hello command: ERR=%s\n"
+msgstr "Погана відповідь на команду Hello: ERR=%s\n"
 
-#: src/dird/ua_select.c:866
-msgid "Selection aborted, nothing done.\n"
-msgstr ""
+#: src/qt-console/tray-monitor/authenticate.cpp:91
+msgid "Director rejected Hello command\n"
+msgstr "Керівник не прийняв команду Hello\n"
 
-#: src/dird/ua_select.c:871
+#: src/qt-console/tray-monitor/authenticate.cpp:119
 #, c-format
-msgid "Please enter a number between 1 and %d\n"
-msgstr ""
+msgid "Error sending Hello to Storage daemon. ERR=%s\n"
+msgstr "Не вдалося надіслати Hello до Зберігача. ERR=%s\n"
 
-#: src/dird/ua_select.c:920
-msgid "Storage name given twice.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:125
+msgid ""
+"Director and Storage daemon passwords or names not the same.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:937
+#: src/qt-console/tray-monitor/authenticate.cpp:132
 #, c-format
-msgid "Expecting jobid=nn command, got: %s\n"
+msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:941
-#, c-format
-msgid "JobId %s is not running.\n"
-msgstr ""
+#: src/qt-console/tray-monitor/authenticate.cpp:139
+msgid "Storage daemon rejected Hello command\n"
+msgstr "Зберігач відхилив команду Hello\n"
 
-#: src/dird/ua_select.c:951
+#: src/qt-console/tray-monitor/authenticate.cpp:165
 #, c-format
-msgid "Expecting job=xxx, got: %s.\n"
-msgstr ""
+msgid "Error sending Hello to File daemon. ERR=%s\n"
+msgstr "Помилка надсилання Hello до Збирача. ERR=%s\n"
 
-#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
-#, c-format
-msgid "Job \"%s\" is not running.\n"
+#: src/qt-console/tray-monitor/authenticate.cpp:171
+msgid ""
+"Director and File daemon passwords or names not the same.\n"
+"Please see "
 msgstr ""
 
-#: src/dird/ua_select.c:963
+#: src/qt-console/tray-monitor/authenticate.cpp:178
 #, c-format
-msgid "Expecting ujobid=xxx, got: %s.\n"
-msgstr ""
+msgid "Bad response from File daemon to Hello command: ERR=%s\n"
+msgstr "Невірна відповідь від Збирача на команду Hello: ERR=%s\n"
 
-#: src/dird/ua_select.c:983
-#, c-format
-msgid "Storage resource \"%s\": not found\n"
-msgstr ""
+#: src/qt-console/tray-monitor/authenticate.cpp:185
+msgid "File daemon rejected Hello command\n"
+msgstr "Збирач відхилив команду Hello \n"
 
-#: src/dird/ua_select.c:1015
-msgid "Enter autochanger drive[0]: "
-msgstr ""
-
-#: src/dird/ua_select.c:1036
-msgid "Enter autochanger slot: "
-msgstr ""
-
-#: src/dird/ua_select.c:1066
-msgid "Media Types defined in conf file:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:1072
-msgid "Media Type"
-msgstr ""
-
-#: src/dird/ua_select.c:1072
-msgid "Select the Media Type"
-msgstr ""
-
-#: 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: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: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:1165 src/stored/status.c:538 src/filed/status.c:241
-msgid "No Jobs running.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:1167
-msgid "None of your jobs are running.\n"
-msgstr ""
-
-#: src/dird/ua_select.c:1172
-msgid "Select Job:\n"
-msgstr ""
-
-#: src/dird/ua_select.c:1181
-#, c-format
-msgid "JobId=%s Job=%s"
-msgstr ""
-
-#: src/dird/ua_select.c:1185
+#: src/qt-console/tray-monitor/tray-monitor.cpp:55
 #, fuzzy, c-format
-msgid "Choose Job to %s"
-msgstr "Оберіть те, що Ви хочете вичистити"
-
-#: src/dird/ua_select.c:1192
-#, c-format
 msgid ""
-"Cancel: %s\n"
 "\n"
-"%s"
-msgstr ""
-
-#: src/dird/ua_select.c:1193
-msgid "Confirm cancel?"
-msgstr ""
-
-#: src/dird/ua_select.c:1199
-msgid "Confirm cancel (yes/no): "
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/bsr.c:173
-#, c-format
-msgid "Unable to get Job record. ERR=%s\n"
-msgstr ""
-
-#: src/dird/bsr.c:184
-#, c-format
-msgid "Unable to get Job Volume Parameters. ERR=%s\n"
-msgstr ""
-
-#: src/dird/bsr.c:232
-#, c-format
-msgid "Unable to create bootstrap file %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/bsr.c:241
-msgid "No files found to read. No bootstrap file written.\n"
-msgstr ""
-
-#: src/dird/bsr.c:245
-msgid "Error writing bsr file.\n"
-msgstr ""
-
-#: src/dird/bsr.c:250
-#, c-format
-msgid "Bootstrap records written to %s\n"
-msgstr ""
-
-#: src/dird/bsr.c:298
-msgid ""
-"The job will require the following\n"
-"   Volume(s)                 Storage(s)                SD Device(s)\n"
-"===========================================================================\n"
-msgstr ""
-
-#: src/dird/bsr.c:317
-msgid "No Volumes found to restore.\n"
-msgstr ""
-
-#: src/dird/bsr.c:319
-msgid ""
+"Version: %s (%s) %s %s %s\n"
+"\n"
+"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     set configuration file to file\n"
+"       -d <nn>       set debug level to <nn>\n"
+"       -dt           print timestamp in debug output\n"
+"       -t            test - read configuration and exit\n"
+"       -?            print this message.\n"
 "\n"
-"Volumes marked with \"*\" are online.\n"
-msgstr ""
-
-#: src/dird/ua_server.c:69
-#, c-format
-msgid "Cannot create UA thread: %s\n"
-msgstr ""
-
-#: src/dird/ua_server.c:159
-msgid "You have messages.\n"
 msgstr ""
+"Автор Nicolas Boichat (2004)\n"
+"\n"
+"Версія: %s (%s) %s %s %s\n"
+"\n"
+"Використання: tray-monitor [-c config_file] [-d debug_level]\n"
+"       -c <file>     задати конфігураційний файл <file>\n"
+"       -d <nn>       встановити рівень відлагоджування у <nn>\n"
+"       -dt           виводити часову мітку у даних відлагоджування\n"
+"       -t            перевірка - прогитати конфігурацію і завершити\n"
+"       -?            показати це повідомлення.\n"
+"\n"
 
-#: src/dird/verify.c:86 src/dird/verify.c:318
+#: src/qt-console/tray-monitor/tray-monitor.cpp:204
 #, c-format
-msgid "Unimplemented Verify level %d(%c)\n"
-msgstr ""
-
-#: src/dird/verify.c:148
 msgid ""
-"Unable to find JobId of previous InitCatalog Job.\n"
-"Please run a Verify with Level=InitCatalog before\n"
-"running the current Job.\n"
-msgstr ""
-
-#: src/dird/verify.c:153
-msgid "Unable to find JobId of previous Job for this client.\n"
-msgstr ""
-
-#: src/dird/verify.c:170
-#, c-format
-msgid "Could not get job record for previous Job. ERR=%s"
-msgstr ""
-
-#: src/dird/verify.c:176
-#, c-format
-msgid "Last Job %d did not terminate normally. JobStatus=%c\n"
-msgstr ""
-
-#: src/dird/verify.c:180
-#, c-format
-msgid "Verifying against JobId=%d Job=%s\n"
-msgstr ""
-
-#: src/dird/verify.c:219
-#, c-format
-msgid "Start Verify JobId=%s Level=%s Job=%s\n"
-msgstr ""
-
-#: src/dird/verify.c:305
-msgid "Deprecated feature ... use bootstrap.\n"
-msgstr ""
-
-#: src/dird/verify.c:372
-#, c-format
-msgid "Unimplemented verify level %d\n"
-msgstr ""
-
-#: src/dird/verify.c:421
-msgid "Verify OK"
-msgstr ""
-
-#: src/dird/verify.c:425
-msgid "*** Verify Error ***"
-msgstr ""
-
-#: src/dird/verify.c:429
-msgid "Verify warnings"
-msgstr ""
-
-#: src/dird/verify.c:432
-msgid "Verify Canceled"
-msgstr ""
-
-#: src/dird/verify.c:435
-msgid "Verify Differences"
-msgstr ""
-
-#: src/dird/verify.c:440
-#, c-format
-msgid "Inappropriate term code: %d %c\n"
+"Error: %d Monitor resources defined in %s. You must define one and only one "
+"Monitor resource.\n"
 msgstr ""
+"Помилка: %d ресурсів Спостерігача визначено у %s. Ви повинні визначити одині "
+"тільки один ресурс Спостерігача.\n"
 
-#: src/dird/verify.c:454
+#: src/qt-console/tray-monitor/tray-monitor.cpp:236
 #, c-format
 msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+"No Client, Storage or Director resource defined in %s\n"
+"Without that I don't how to get status from the File, Storage or Director "
+"Daemon :-(\n"
 msgstr ""
+"У %s не визначено жодного ресурсу Клієнту, Зберігача або Керівника\n"
+"Без цього я не знаю як отримати статус Зберігача, Збирача або Керівника\n"
 
-#: src/dird/verify.c:489
+#: src/qt-console/tray-monitor/tray-monitor.cpp:251
 #, c-format
 msgid ""
-"%s %s %s (%s):\n"
-"  Build:                  %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  FileSet:                %s\n"
-"  Verify Level:           %s\n"
-"  Client:                 %s\n"
-"  Verify JobId:           %d\n"
-"  Verify Job:             %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Examined:         %s\n"
-"  Non-fatal FD errors:    %d\n"
-"  FD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
+"Invalid refresh interval defined in %s\n"
+"This value must be greater or equal to 1 second and less or equal to 10 "
+"minutes (read value: %d).\n"
 msgstr ""
+"Задано поганий інтервал оновлення у %s\n"
+"Це значення повинно бути не меньше 1 секунди та не більше 10 хвилин "
+"(теперішнє значення: %d).\n"
 
-#: src/dird/verify.c:567
+#: src/qt-console/tray-monitor/tray-monitor.cpp:319
 #, c-format
-msgid ""
-"bird<filed: bad attributes, expected 3 fields got %d\n"
-" mslen=%d msg=%s\n"
-msgstr ""
+msgid "Error, currentitem is not a Client or a Storage..\n"
+msgstr "Помилка. Поточний пункт не є Клієнтом або Зберігачем.\n"
 
-#: src/dird/verify.c:612
+#: src/qt-console/tray-monitor/tray-monitor.cpp:357
 #, c-format
-msgid "New file: %s\n"
-msgstr ""
+msgid "Connecting to Client %s:%d"
+msgstr "Приєднуюсь до Клієнта %s:%d"
 
-#: src/dird/verify.c:613
-#, c-format
-msgid "File not in catalog: %s\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:362
+msgid "File daemon"
+msgstr "Збирач"
 
-#: src/dird/verify.c:637
+#: src/qt-console/tray-monitor/tray-monitor.cpp:367
 #, c-format
-msgid "      st_ino   differ. Cat: %s File: %s\n"
-msgstr ""
+msgid "Connecting to Storage %s:%d"
+msgstr "Приєднуюсь до Зберігача %s:%d"
 
-#: src/dird/verify.c:646
-#, c-format
-msgid "      st_mode  differ. Cat: %x File: %x\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:372
+msgid "Storage daemon"
+msgstr "Зберігач"
 
-#: src/dird/verify.c:654
+#: src/qt-console/tray-monitor/tray-monitor.cpp:376
+#: src/qt-console/tray-monitor/tray-monitor.cpp:406
 #, c-format
-msgid "      st_nlink differ. Cat: %d File: %d\n"
-msgstr ""
+msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
+msgstr "Помилка. Поточний пункт не є Клієнтом або Зберігачем.\n"
 
-#: src/dird/verify.c:662
-#, c-format
-msgid "      st_uid   differ. Cat: %u File: %u\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:381
+msgid "Cannot connect to daemon."
+msgstr "Не можу приєднатись до демону."
 
-#: src/dird/verify.c:670
+#: src/qt-console/tray-monitor/tray-monitor.cpp:390
 #, c-format
-msgid "      st_gid   differ. Cat: %u File: %u\n"
-msgstr ""
+msgid "Authentication error : %s"
+msgstr "Помилка автентифікації : %s"
 
-#: src/dird/verify.c:678
-#, c-format
-msgid "      st_size  differ. Cat: %s File: %s\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:397
+msgid "Opened connection with Director daemon."
+msgstr "Відкриті з'єднання із Керівником."
 
-#: src/dird/verify.c:687
-msgid "      st_atime differs\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:400
+msgid "Opened connection with File daemon."
+msgstr "Відкриті з'єднання із Збирачем."
 
-#: src/dird/verify.c:694
-msgid "      st_mtime differs\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:403
+msgid "Opened connection with Storage daemon."
+msgstr "Відкриті з'єднання із Зберігачем."
 
-#: src/dird/verify.c:701
-msgid "      st_ctime differs\n"
+#: src/qt-console/tray-monitor/tray-monitor.cpp:454
+msgid "Error : BNET_HARDEOF or BNET_ERROR"
 msgstr ""
 
-#: src/dird/verify.c:708
-#, c-format
-msgid "      st_size  decrease. Cat: %s File: %s\n"
-msgstr ""
+#: src/qt-console/tray-monitor/tray-monitor.cpp:463
+msgid "Error : Connection closed."
+msgstr "Помилка : З'єднання завершено"
 
-#: src/dird/verify.c:738
+#: src/qt-console/tray-monitor/tray_conf.cpp:156
 #, c-format
-msgid "MD5/SHA1 index %d not same as attributes %d\n"
-msgstr ""
+msgid "No %s resource defined\n"
+msgstr "Ресурс %s не визначено\n"
 
-#: src/dird/verify.c:746
+#: src/qt-console/tray-monitor/tray_conf.cpp:165
 #, c-format
-msgid "      %s differs. File=%s Cat=%s\n"
-msgstr ""
+msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
+msgstr "Споглядач: назва=%s FDtimeout=%s SDtimeout=%s\n"
 
-#: src/dird/verify.c:757
+#: src/qt-console/tray-monitor/tray_conf.cpp:171
 #, c-format
-msgid "bdird<filed: bad attributes from filed n=%d : %s\n"
-msgstr ""
+msgid "Director: name=%s address=%s FDport=%d\n"
+msgstr "Керівник: назва=%s address=%s FDport=%d\n"
 
-#: src/dird/verify.c:796
+#: src/qt-console/tray-monitor/tray_conf.cpp:175
 #, c-format
-msgid "The following files are in the Catalog but not on %s:\n"
-msgstr ""
+msgid "Client: name=%s address=%s FDport=%d\n"
+msgstr "Клієнт: назва=%s address=%s FDport=%d\n"
 
-#: src/dird/verify.c:811 src/tools/testfind.c:420
+#: src/qt-console/tray-monitor/tray_conf.cpp:179
 #, c-format
-msgid "File: %s\n"
-msgstr ""
+msgid "Storage: name=%s address=%s SDport=%d\n"
+msgstr "Сховище: назва=%s address=%s SDport=%d\n"
 
-#: src/dird/admin.c:65
+#: src/qt-console/tray-monitor/tray_conf.cpp:187
 #, c-format
-msgid "Start Admin JobId %d, Job=%s\n"
-msgstr ""
+msgid "Unknown resource type %d in dump_resource.\n"
+msgstr "Невідомий тип ресурсу %d у dump_resource.\n"
 
-#: src/dird/admin.c:90 src/dird/vbackup.c:306 src/dird/migrate.c:1227
-#: src/dird/backup.c:628
+#: src/qt-console/tray-monitor/tray_conf.cpp:245
 #, c-format
-msgid "Error getting Job record for Job report: ERR=%s"
-msgstr ""
-
-#: src/dird/admin.c:98
-msgid "Admin OK"
-msgstr ""
-
-#: src/dird/admin.c:102
-msgid "*** Admin Error ***"
-msgstr ""
+msgid "Unknown resource type %d in free_resource.\n"
+msgstr "Невідомий тип ресурсу %d у free_resource.\n"
 
-#: src/dird/admin.c:106
-msgid "Admin Canceled"
-msgstr ""
+#: src/qt-console/tray-monitor/tray_conf.cpp:282
+#, c-format
+msgid "Too many items in %s resource\n"
+msgstr "Забагато елементів у ресурсі %s\n"
 
-#: src/dird/admin.c:110 src/dird/vbackup.c:356 src/dird/backup.c:684
-#: src/dird/restore.c:594
+#: src/qt-console/tray-monitor/tray_conf.cpp:302
+#: src/qt-console/tray-monitor/tray_conf.cpp:340
 #, c-format
-msgid "Inappropriate term code: %c\n"
-msgstr ""
+msgid "Unknown resource type %d in save_resource.\n"
+msgstr "Невідомий тип ресурсу %d у save_resource.\n"
 
-#: src/dird/admin.c:118
-msgid "Bacula "
-msgstr ""
+#, fuzzy
+#~ msgid "Could not init database batch connection\n"
+#~ msgstr "Не вдалось відкрити%s: ERR=%s\n"
 
-#: src/dird/dird.c:150
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"       -f          run in foreground (for debugging)\n"
-"       -g          groupid\n"
-"       -m          print kaboom output (for debugging)\n"
-"       -r <job>    run <job> now\n"
-"       -s          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -u          userid\n"
-"       -v          verbose user messages\n"
-"       -?          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"
+#, fuzzy
+#~ msgid "Create db Object record %s failed. ERR=%s"
+#~ msgstr "Не можливо створити теку %s: ERR=%s\n"
 
-#: 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"
+#~ msgid ""
+#~ "Authorization problem: Remote server did not advertise required TLS "
+#~ "support.\n"
+#~ msgstr ""
+#~ "Проблеми авторизації: Віддалений сервер не повідомив про необхідність "
+#~ "використання TLS.\n"
 
-#: 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"
+#~ msgid "Authorization problem: Remote server requires TLS.\n"
+#~ msgstr "Проблеми авторизації: Віддалений сервер вимагає використання TLS.\n"
 
-#: src/dird/dird.c:546
-msgid "Too many open reload requests. Request ignored.\n"
-msgstr ""
+#~ msgid "TLS negotiation failed\n"
+#~ msgstr "Невдале встановлення з'єднання TLS\n"
 
-#: src/dird/dird.c:561
-msgid "Out of reload table entries. Giving up.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Director authorization problem.\n"
+#~ "Most likely the passwords do not agree.\n"
+#~ "If you are using TLS, there may have been a certificate validation error "
+#~ "during the TLS handshake.\n"
+#~ "Please see "
+#~ msgstr ""
+#~ "Проблеми авторизації Керівника.\n"
+#~ "Швидше за все, проблема у паролях.\n"
+#~ "Якщо Ви використовуєте TLS, можливо, невдала перевірка сертифікату під "
+#~ "час TLS handshake.\n"
+#~ "Для отримання допомоги, будь ласка, перегляньте http://www.bacula.org/en/"
+#~ "rel-manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000.\n"
 
-#: src/dird/dird.c:564
-msgid "Resetting previous configuration.\n"
-msgstr ""
+#~ msgid ""
+#~ "\n"
+#~ "Version: "
+#~ msgstr ""
+#~ "\n"
+#~ "Вірсія: "
 
-#: 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:636 src/filed/filed.c:350
-#, c-format
-msgid "No Messages resource defined in %s\n"
-msgstr ""
-
-#: src/dird/dird.c:641
-#, c-format
-msgid "Only one Director resource permitted in %s\n"
-msgstr ""
-
-#: 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: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: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: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 "
-"Director \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: 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:698
-#, c-format
-msgid "No Job records defined in %s\n"
-msgstr ""
-
-#: 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:830
-#, c-format
-msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
-msgstr ""
-
-#: src/dird/dird.c:837
-msgid "Too many items in Job resource\n"
-msgstr ""
-
-#: src/dird/dird.c:841
-#, c-format
-msgid "No storage specified in Job \"%s\" nor in Pool.\n"
-msgstr ""
-
-#: src/dird/dird.c:865
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:871
-#, c-format
-msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:878
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: 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: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: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:1019 src/tools/cats_test.c:377
-#, c-format
-msgid "%s"
-msgstr ""
-
-#: 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:1106
-#, fuzzy, c-format
-msgid "Could not update storage record for %s\n"
-msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
-
-#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:312
-#, c-format
-msgid "Expected a strip path positive integer, got:%s:"
-msgstr ""
-
-#: src/dird/inc_conf.c:332
-#, c-format
-msgid "Expected a FileSet option keyword, got:%s:"
-msgstr ""
-
-#: src/dird/inc_conf.c:365
-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: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: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:2039
-#, c-format
-msgid "Keyword %s not permitted in this resource"
-msgstr ""
-
-#: src/dird/inc_conf.c:464
-#, c-format
-msgid "Regex compile error. ERR=%s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:485
-#, c-format
-msgid "Expected a regex string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:559
-#, c-format
-msgid "Expected a wild-card string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:582
-#, c-format
-msgid "Expected an fstype string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:593
-msgid "ExcludeDirContaining directive not permitted in Exclude.\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:620
-#, c-format
-msgid "Expected an drivetype string, got: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:644 src/dird/inc_conf.c:687
-#, c-format
-msgid "Backslash found. Use forward slashes or quote the string.: %s\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:659 src/dird/inc_conf.c:702
-#, c-format
-msgid "Expected a filename, got: %s"
-msgstr ""
-
-#: src/dird/inc_conf.c:676
-msgid "Plugin directive not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:719
-msgid "Options section not permitted in Exclude\n"
-msgstr ""
-
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
-#, c-format
-msgid "Expecting open brace. Got %s"
-msgstr ""
-
-#: src/dird/inc_conf.c:779
-#, c-format
-msgid "Expected a FileSet keyword, got: %s"
-msgstr ""
-
-#: src/dird/ua_query.c:73 src/findlib/create_file.c:288
-#: src/findlib/create_file.c:391
-#, c-format
-msgid "Could not open %s: ERR=%s\n"
-msgstr "Не вдалось відкрити%s: ERR=%s\n"
-
-#: src/dird/ua_query.c:78
-msgid "Available queries:\n"
-msgstr ""
-
-#: src/dird/ua_query.c:85
-msgid "Choose a query"
-msgstr ""
-
-#: src/dird/ua_query.c:99
-msgid "Could not find query.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:117
-msgid "Too many prompts in query, max is 9.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:220
-#, c-format
-msgid "Warning prompt %d missing.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:265
-msgid ""
-"Entering SQL query mode.\n"
-"Terminate each query with a semicolon.\n"
-"Terminate query mode with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_query.c:268 src/dird/ua_query.c:284
-msgid "Enter SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:286
-msgid "Add to SQL query: "
-msgstr ""
-
-#: src/dird/ua_query.c:289
-msgid "End query mode.\n"
-msgstr ""
-
-#: src/dird/newvol.c:90
-#, c-format
-msgid "Illegal character in Volume name \"%s\"\n"
-msgstr "Заборонені символи у назві Тому \"%s\"\n"
-
-#: src/dird/newvol.c:104
-#, c-format
-msgid "Created new Volume \"%s\" in catalog.\n"
-msgstr "У картотеці створено новий Том \"%s\".\n"
-
-#: src/dird/newvol.c:131
-#, c-format
-msgid "SQL failed, but ignored. ERR=%s\n"
-msgstr "Проігноровано помилку SQL. ERR=%s\n"
-
-#: 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:150
-msgid "Too many failures. Giving up creating Volume name.\n"
-msgstr "Занадто багато провалів. Відмова у створенні імені Тому.\n"
-
-#: src/dird/expand.c:255
-#, c-format
-msgid "Count not update counter %s: ERR=%s\n"
-msgstr "Лічильник %s не оновлено: ERR=%s\n"
-
-#: src/dird/expand.c:427
-#, c-format
-msgid "Cannot create var context: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:432
-#, c-format
-msgid "Cannot set var callback: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:438
-#, c-format
-msgid "Cannot set var operate: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:444 src/dird/expand.c:459
-#, c-format
-msgid "Cannot unescape string: ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:452
-#, c-format
-msgid "Cannot expand expression \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/dird/expand.c:470
-#, c-format
-msgid "Cannot destroy var context: ERR=%s\n"
-msgstr ""
-
-#: src/dird/recycle.c:69
-#, c-format
-msgid "Recycled volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:90
-#, fuzzy
-msgid ""
-"\n"
-"This command can be DANGEROUS!!!\n"
-"\n"
-"It purges (deletes) all Files from a Job,\n"
-"JobId, Client or Volume; or it purges (deletes)\n"
-"all Jobs from a Client or Volume without regard\n"
-"to retention periods. Normally you should use the\n"
-"PRUNE command, which respects retention periods.\n"
-msgstr ""
-"\n"
-"Ця команда НЕБЕЗПЕЧНА!!!\n"
-"\n"
-"Вона вичистить(знищить) усі Файли із Задачі,\n"
-"Номера Задачі, Клієнта або Тома; або вичистить(знищить)\n"
-"усі Задачі із Клієнта або Тома не враховуючи\n"
-"термінів зберігання. Зазвичай ви повинні використовувати\n"
-"команду PRUNE для дотримання термінів зберігання.\n"
-
-#: src/dird/ua_purge.c:157
-msgid "Choose item to purge"
-msgstr "Оберіть те, що Ви хочете вичистити"
-
-#: src/dird/ua_purge.c:204
-#, c-format
-msgid "Begin purging files for Client \"%s\"\n"
-msgstr "Починається чистка файлів Клієнта \"%s\"\n"
-
-#: src/dird/ua_purge.c:213 src/dird/ua_purge.c:263
-#, c-format
-msgid "No Files found for client %s to purge from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:216
-#, c-format
-msgid "Files for %d Jobs for client \"%s\" purged from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:254
-#, c-format
-msgid "Begin purging jobs from Client \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:266
-#, c-format
-msgid "%d Jobs for client %s purged from %s catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:464
-#, c-format
-msgid ""
-"\n"
-"Volume \"%s\" has VolStatus \"%s\" and cannot be purged.\n"
-"The VolStatus must be: Append, Full, Used, or Error to be purged.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:492
-#, c-format
-msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:541
-#, c-format
-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: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: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:623
-#, fuzzy
-msgid "Can't update volume size in the catalog\n"
-msgstr "У картотеці створено новий Том \"%s\".\n"
-
-#: src/dird/ua_purge.c:625
-#, c-format
-msgid "The volume \"%s\" has been truncated\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:627
-#, c-format
-msgid "Unable to truncate volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:713
-#, c-format
-msgid "No Volumes found to perform %s action.\n"
-msgstr ""
-
-#: 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:800
-#, c-format
-msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
-msgstr ""
-
-#: src/dird/ua_purge.c:805
-#, c-format
-msgid "Cannot purge Volume with VolStatus=%s\n"
-msgstr ""
-
-#: src/dird/vbackup.c:76 src/dird/migrate.c:114
-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:871
-#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
-msgid "Pool resource"
-msgstr ""
-
-#: src/dird/vbackup.c:116 src/dird/migrate.c:285
-msgid "Job Pool's NextPool resource"
-msgstr ""
-
-#: src/dird/vbackup.c:147
-#, c-format
-msgid "Start Virtual Backup JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/vbackup.c:151
-msgid ""
-"This Job is not an Accurate backup so is not equivalent to a Full backup.\n"
-msgstr ""
-
-#: src/dird/vbackup.c:158
-msgid "No previous Jobs found.\n"
-msgstr ""
-
-#: src/dird/vbackup.c:180
-#, c-format
-msgid "Error getting Job record for previous Job: ERR=%s"
-msgstr ""
-
-#: src/dird/vbackup.c:186 src/dird/migrate.c:131
-msgid "Could not get or create the FileSet record.\n"
-msgstr ""
-
-#: 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: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: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:331 src/dird/backup.c:653 src/stored/bscan.c:1211
-msgid "Backup OK"
-msgstr ""
-
-#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
-msgid "*** Backup Error ***"
-msgstr ""
-
-#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
-msgid "Backup Canceled"
-msgstr ""
-
-#: src/dird/vbackup.c:393
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           Virtual Full\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_output.c:69 src/dird/ua_output.c:93
-msgid "ON or OFF keyword missing.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:113
-msgid "Disabled Jobs:\n"
-msgstr ""
-
-#: src/dird/ua_output.c:119
-msgid "No disabled Jobs.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:163
-msgid "disabled"
-msgstr ""
-
-#: src/dird/ua_output.c:211
-msgid "Keywords for the show command are:\n"
-msgstr ""
-
-#: src/dird/ua_output.c:217
-#, c-format
-msgid "%s resource %s not found.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:220
-#, c-format
-msgid "Resource %s not found\n"
-msgstr ""
-
-#: src/dird/ua_output.c:290
-msgid "Hey! DB is NULL\n"
-msgstr ""
-
-#: src/dird/ua_output.c:447
-#, c-format
-msgid "Jobid %d used %d Volume(s): %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:465
-msgid "No Pool specified.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:486
-#, c-format
-msgid "Pool: %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:502
-msgid "Ignoring invalid value for days. Max is 50.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:524
-#, c-format
-msgid "Unknown list keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_output.c:549
-#, c-format
-msgid "%s is not a job name.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:563
-#, c-format
-msgid "Could not find Pool for Job %s\n"
-msgstr ""
-
-#: 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: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:593
-#, c-format
-msgid "Could not find next Volume for Job %s.\n"
-msgstr ""
-
-#: 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:733
-#, c-format
-msgid "Pool %s not in database. %s"
-msgstr ""
-
-#: src/dird/ua_output.c:741
-#, c-format
-msgid "Pool %s created in database.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:794
-msgid "You have no messages.\n"
-msgstr ""
-
-#: src/dird/ua_output.c:874
-msgid "Message too long to display.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:155 src/dird/ua_cmds.c:236
-#, c-format
-msgid "Can't use %s command in a runscript"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:175
-msgid ": is an invalid command.\n"
-msgstr ""
-
-#: 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: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:1160 src/dird/job.c:1164
-msgid "unknown source"
-msgstr ""
-
-#: 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: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: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: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:694 src/dird/ua_dotcmds.c:788
-#, c-format
-msgid "Unknown command: %s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
-msgid "Available daemons are: \n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
-msgid "Director"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:736
-msgid "Select daemon type to make die"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:762
-msgid "The Director will generate a deadlock.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:766
-msgid "The Director will segment fault.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:955
-msgid "Access to specified Client or FileSet not allowed.\n"
-msgstr ""
-
-#: 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:999
-msgid "query keyword not found.\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1026
-#, c-format
-msgid "List MediaType failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1040
-#, c-format
-msgid "List Media failed: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_dotcmds.c:1054
-#, fuzzy, c-format
-msgid "List Location failed: ERR=%s\n"
-msgstr "Невдале встановлення з'єднання TLS\n"
-
-#: src/dird/next_vol.c:166
-#, c-format
-msgid "Purging oldest volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/next_vol.c:172
-#, c-format
-msgid "Pruning oldest volume \"%s\"\n"
-msgstr ""
-
-#: 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:218
-#, c-format
-msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
-msgstr ""
-
-#: src/dird/next_vol.c:226
-#, c-format
-msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
-msgstr ""
-
-#: 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:243
-#, c-format
-msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
-msgstr ""
-
-#: 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:267
-#, c-format
-msgid "Catalog error updating volume \"%s\". ERR=%s"
-msgstr ""
-
-#: src/dird/next_vol.c:289
-msgid "volume has expired"
-msgstr ""
-
-#: 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:312
-msgid "and recycling of current volume failed"
-msgstr ""
-
-#: src/dird/next_vol.c:318
-msgid "but should be Append, Purged or Recycle"
-msgstr ""
-
-#: src/dird/next_vol.c:327
-msgid "volume has recycling disabled"
-msgstr ""
-
-#: 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: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:421
-#, c-format
-msgid "Unable to get Pool record: ERR=%s"
-msgstr ""
-
-#: 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:448
-#, c-format
-msgid "Failed to move Scratch Volume. ERR=%s\n"
-msgstr ""
-
-#: src/dird/next_vol.c:453
-#, c-format
-msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:120
-msgid "Add media to a pool"
-msgstr ""
-
-#: src/dird/ua_cmds.c:121
-msgid "Autodisplay console messages"
-msgstr ""
-
-#: src/dird/ua_cmds.c:122
-msgid "Automount after label"
-msgstr ""
-
-#: src/dird/ua_cmds.c:123
-msgid "Cancel a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:124
-msgid "Create DB Pool from resource"
-msgstr ""
-
-#: src/dird/ua_cmds.c:125
-msgid "Delete volume, pool or job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:126
-msgid "Disable a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:127
-msgid "Enable a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:128
-msgid "Performs FileSet estimate, listing gives full listing"
-msgstr ""
-
-#: src/dird/ua_cmds.c:131 src/dird/ua_cmds.c:155
-#, fuzzy
-msgid "Terminate Bconsole session"
-msgstr "вивести версію Консолі"
-
-#: src/dird/ua_cmds.c:132
-msgid "Non-interactive gui mode"
-msgstr ""
-
-#: src/dird/ua_cmds.c:133
-msgid "Print help on specific command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:138
-msgid "Label a tape"
-msgstr ""
-
-#: src/dird/ua_cmds.c:139
-msgid "List objects from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:142
-msgid "Full or long list like list command"
-msgstr ""
-
-#: src/dird/ua_cmds.c:145
-msgid "Display pending messages"
-msgstr ""
-
-#: src/dird/ua_cmds.c:146
-#, fuzzy
-msgid "Print current memory usage"
-msgstr "вивести поточний час"
-
-#: src/dird/ua_cmds.c:147
-msgid "Mount storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:150
-msgid "Prune expired records from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:153
-msgid "Purge records from catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:154
-msgid "Python control commands"
-msgstr ""
-
-#: src/dird/ua_cmds.c:156
-msgid "Query catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:157
-msgid "Restore files"
-msgstr ""
-
-#: src/dird/ua_cmds.c:162
-msgid "Relabel a tape"
-msgstr ""
-
-#: src/dird/ua_cmds.c:165
-msgid "Release storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:166
-msgid "Reload conf file"
-msgstr ""
-
-#: src/dird/ua_cmds.c:167
-msgid "Run a job"
-msgstr ""
-
-#: src/dird/ua_cmds.c:171
-msgid "Report status"
-msgstr ""
-
-#: src/dird/ua_cmds.c:174
-msgid "Sets debug level"
-msgstr ""
-
-#: src/dird/ua_cmds.c:177
-msgid "Sets new client address -- if authorized"
-msgstr ""
-
-#: src/dird/ua_cmds.c:178
-#, fuzzy
-msgid "Show resource records"
-msgstr "Невідомий тип ресурсу %d\n"
-
-#: src/dird/ua_cmds.c:181
-msgid "Use SQL to query catalog"
-msgstr ""
-
-#: src/dird/ua_cmds.c:182
-#, fuzzy
-msgid "Print current time"
-msgstr "вивести поточний час"
-
-#: src/dird/ua_cmds.c:183
-msgid "Turn on/off trace to file"
-msgstr ""
-
-#: src/dird/ua_cmds.c:184
-msgid "Unmount storage"
-msgstr ""
-
-#: src/dird/ua_cmds.c:187
-msgid "Umount - for old-time Unix guys, see unmount"
-msgstr ""
-
-#: src/dird/ua_cmds.c:190
-msgid "Update volume, pool or stats"
-msgstr ""
-
-#: src/dird/ua_cmds.c:196
-msgid "Use catalog xxx"
-msgstr ""
-
-#: src/dird/ua_cmds.c:197
-msgid "Does variable expansion"
-msgstr ""
-
-#: src/dird/ua_cmds.c:198
-#, fuzzy
-msgid "Print Director version"
-msgstr "Керівник"
-
-#: src/dird/ua_cmds.c:199
-msgid "Wait until no jobs are running"
-msgstr ""
-
-#: src/dird/ua_cmds.c:247
-#, c-format
-msgid "%s: is an invalid command.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:288
-msgid ""
-"You probably don't want to be using this command since it\n"
-"creates database records without labeling the Volumes.\n"
-"You probably want to use the \"label\" command.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:306
-#, c-format
-msgid "Pool already has maximum volumes=%d\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:307
-msgid "Enter new maximum (zero for unlimited): "
-msgstr ""
-
-#: 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:333
-#, c-format
-msgid "The number must be between 0 and %d\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:341
-msgid "Enter Volume name: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:345
-msgid "Enter base volume name: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
-msgid "Volume name too long.\n"
-msgstr ""
-
-#: 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:369
-msgid "Enter the starting number: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:374
-msgid "Start number must be greater than zero.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:385
-msgid "Enter slot (0 for none): "
-msgstr ""
-
-#: src/dird/ua_cmds.c:389
-msgid "InChanger? yes/no: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:414
-#, c-format
-msgid "%d Volumes created in pool %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
-msgid "Turn on or off? "
-msgstr ""
-
-#: 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: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:631
-#, c-format
-msgid ""
-"Error: Pool %s already exists.\n"
-"Use update to change it.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:642
-#, c-format
-msgid "Pool %s created.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:672
-msgid "Python interpreter restarted.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
-msgid "Nothing done.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "Client \"%s\" address set to %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:742
-#, c-format
-msgid "Job \"%s\" %sabled\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:920
-msgid "Enter new debug level: "
-msgstr ""
-
-#: src/dird/ua_cmds.c:997
-msgid "All"
-msgstr ""
-
-#: src/dird/ua_cmds.c:998
-msgid "Select daemon type to set debug level"
-msgstr ""
-
-#: 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:1092
-msgid "Client name missing.\n"
-msgstr ""
-
-#: 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:1109
-msgid "Job name missing.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1118
-#, c-format
-msgid "Fileset \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1122
-#, c-format
-msgid "No authorization for FileSet \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1127
-msgid "Fileset name missing.\n"
-msgstr ""
-
-#: 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:1142
-msgid "Level value missing.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1149
-msgid "Invalid value for accurate. It must be yes or no.\n"
-msgstr ""
-
-#: 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:1227
-msgid "Error sending include list.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1232
-msgid "Error sending exclude list.\n"
-msgstr ""
-
-#: 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:1326
-msgid "Choose catalog item to delete"
-msgstr ""
-
-#: 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: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 "Jobid %s and associated records deleted from the catalog.\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1484
-#, c-format
-msgid ""
-"\n"
-"This command will delete volume %s\n"
-"and all Jobs saved on that volume from the Catalog\n"
-msgstr ""
-
-#: 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:1504
-msgid "Can't list jobs on this volume\n"
-msgstr ""
-
-#: 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:1644
-#, c-format
-msgid "Using Catalog name=%s DB=%s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1712
-msgid "ERR: Can't open db\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1759
-msgid "Wait on mount timed out\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1769
-msgid "ERR: Job was not found\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1845
-msgid ""
-"  Command       Description\n"
-"  =======       ===========\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1849
-#, c-format
-msgid ""
-"  %-13s %s\n"
-"\n"
-"Arguments:\n"
-"\t%s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1854
-#, c-format
-msgid "  %-13s %s\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:1858
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Can't find %s command.\n"
-"\n"
-msgstr ": неправильна команда\n"
-
-#: 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:1896 src/filed/status.c:85
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s %s\n"
-msgstr ""
-
-#: 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:2049
-#, c-format
-msgid "Could not open catalog database \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_cmds.c:2059
-#, c-format
-msgid "Using Catalog \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:74
-msgid "add dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:75
-msgid "change current directory"
-msgstr ""
-
-#: src/dird/ua_tree.c:76
-msgid "count marked files in and below the cd"
-msgstr ""
-
-#: src/dird/ua_tree.c:77
-msgid "delete dir/file to be restored recursively in dir"
-msgstr ""
-
-#: src/dird/ua_tree.c:78 src/dird/ua_tree.c:79
-msgid "long list current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:80
-msgid "leave file selection mode"
-msgstr ""
-
-#: src/dird/ua_tree.c:81
-msgid "estimate restore size"
-msgstr ""
-
-#: src/dird/ua_tree.c:82
-msgid "same as done command"
-msgstr ""
-
-#: src/dird/ua_tree.c:83
-msgid "find files, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:84 src/dird/ua_tree.c:97 src/dird/ua_tree.c:98
-msgid "print help"
-msgstr ""
-
-#: src/dird/ua_tree.c:85 src/dird/ua_tree.c:86
-msgid "list current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:87
-msgid "list subdir in current directory, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:88
-msgid "list the marked files in and below the cd"
-msgstr ""
-
-#: src/dird/ua_tree.c:89
-msgid "list the marked files in"
-msgstr ""
-
-#: src/dird/ua_tree.c:90
-msgid "mark dir/file to be restored recursively, wildcards allowed"
-msgstr ""
-
-#: src/dird/ua_tree.c:91
-msgid "mark directory name to be restored (no files)"
-msgstr ""
-
-#: src/dird/ua_tree.c:92 src/dird/ua_tree.c:93
-msgid "print current working directory"
-msgstr ""
-
-#: src/dird/ua_tree.c:94
-msgid "unmark dir/file to be restored recursively in dir"
-msgstr ""
-
-#: src/dird/ua_tree.c:95
-msgid "unmark directory name only no recursion"
-msgstr ""
-
-#: src/dird/ua_tree.c:96
-msgid "quit and do not do restore"
-msgstr ""
-
-#: src/dird/ua_tree.c:118
-msgid ""
-"\n"
-"You are now entering file selection mode where you add (mark) and\n"
-"remove (unmark) files to be restored. No files are initially added, unless\n"
-"you used the \"all\" keyword on the command line.\n"
-"Enter \"done\" to leave this mode.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
-#, c-format
-msgid "cwd is: %s\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:138 src/dird/ua_tree.c:157
-#, c-format
-msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
-msgstr ""
-
-#: 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:387
-msgid "1 file marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:389
-#, c-format
-msgid "%s files marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:417
-msgid "No directories marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:419
-msgid "1 directory marked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:421
-#, c-format
-msgid "%s directories marked.\n"
-msgstr ""
-
-#: 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:453
-msgid "No file specification given.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:674
-#, c-format
-msgid "Node %s has no children.\n"
-msgstr ""
-
-#: 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:778 src/stored/btape.c:2949
-#, c-format
-msgid ""
-"  Command    Description\n"
-"  =======    ===========\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:801
-msgid "Too few or too many arguments. Try using double quotes.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:814
-msgid "Invalid path given.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
-msgid "No files unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:864
-msgid "1 file unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:867
-#, c-format
-msgid "%s files unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
-msgid "No directories unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:897
-msgid "1 directory unmarked.\n"
-msgstr ""
-
-#: src/dird/ua_tree.c:899
-#, c-format
-msgid "%d directories unmarked.\n"
-msgstr ""
-
-#: 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:576
-#, c-format
-msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:581
-#, c-format
-msgid "   query_file=%s\n"
-msgstr ""
-
-#: 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:589
-#, c-format
-msgid "Console: name=%s SSL=%d\n"
-msgstr ""
-
-#: 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:599
-#, c-format
-msgid "Counter: name=%s min=%d max=%d\n"
-msgstr ""
-
-#: 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:616
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:629
-#, c-format
-msgid ""
-"Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
-"      reserved=%d open=%d append=%d read=%d labeled=%d offline=%d autochgr="
-"%d\n"
-"      poolid=%s volname=%s MediaType=%s\n"
-msgstr ""
-
-#: 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: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:669
-#, c-format
-msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:670
-msgid "JobDefs"
-msgstr ""
-
-#: 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:680
-#, c-format
-msgid "     SpoolSize=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:683
-#, c-format
-msgid "     Accurate=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:686
-#, c-format
-msgid "     SelectionType=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:701
-#, c-format
-msgid "  --> Where=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:704
-#, c-format
-msgid "  --> RegexWhere=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:707
-#, c-format
-msgid "  --> Bootstrap=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:710
-#, c-format
-msgid "  --> WriteBootstrap=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:713
-#, c-format
-msgid "  --> PluginOptions=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:716
-#, c-format
-msgid "  --> MaxRunTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:719
-#, c-format
-msgid "  --> MaxWaitTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:722
-#, c-format
-msgid "  --> MaxStartDelay=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:725
-#, c-format
-msgid "  --> MaxRunSchedTime=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:737
-#, c-format
-msgid "  --> Base %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
-msgid " --> RunScript\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
-#, c-format
-msgid "  --> Command=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
-#, c-format
-msgid "  --> Target=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
-#, c-format
-msgid "  --> RunOnSuccess=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
-#, c-format
-msgid "  --> RunOnFailure=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
-#, c-format
-msgid "  --> FailJobOnError=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
-#, c-format
-msgid "  --> RunWhen=%u\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:775
-#, c-format
-msgid "  --> Run=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:779
-#, c-format
-msgid "  --> SelectionPattern=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:793
-#, c-format
-msgid "FileSet: name=%s\n"
-msgstr ""
-
-#: 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:892
-#, c-format
-msgid "  --> Run Level=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:893
-msgid "      hour="
-msgstr ""
-
-#: src/dird/dird_conf.c:902
-msgid "      mday="
-msgstr ""
-
-#: src/dird/dird_conf.c:911
-msgid "      month="
-msgstr ""
-
-#: src/dird/dird_conf.c:920
-msgid "      wday="
-msgstr ""
-
-#: src/dird/dird_conf.c:929
-msgid "      wom="
-msgstr ""
-
-#: src/dird/dird_conf.c:938
-msgid "      woy="
-msgstr ""
-
-#: src/dird/dird_conf.c:947
-#, c-format
-msgid "      mins=%d\n"
-msgstr ""
-
-#: 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:974
-#, c-format
-msgid "Pool: name=%s PoolType=%s\n"
-msgstr ""
-
-#: 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:979
-#, c-format
-msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:982
-#, c-format
-msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:986
-#, c-format
-msgid "      CleaningPrefix=%s LabelType=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:988
-#, c-format
-msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:992
-#, c-format
-msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:996
-#, c-format
-msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1000
-#, c-format
-msgid "      JobRetention=%s FileRetention=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1004
-#, c-format
-msgid "      NextPool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1007
-#, c-format
-msgid "      RecyclePool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1010
-#, c-format
-msgid "      ScratchPool=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1013
-#, c-format
-msgid "      Catalog=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1033
-#, c-format
-msgid "Messages: name=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1035
-#, c-format
-msgid "      mailcmd=%s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1037
-#, c-format
-msgid "      opcmd=%s\n"
-msgstr ""
-
-#: 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: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: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
-#: src/qt-console/bat_conf.cpp:265
-#, c-format
-msgid "%s item is required in %s resource, but not found.\n"
-msgstr "Не знайдено необхідний елемент %s для ресурсу %s.\n"
-
-#: 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:1450
-#, c-format
-msgid "Cannot find Pool resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1461
-#, c-format
-msgid "Cannot find Console resource %s\n"
-msgstr ""
-
-#: 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:1474 src/stored/stored_conf.c:617
-#, c-format
-msgid "Cannot find Storage resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1483
-#, c-format
-msgid "Cannot find Job resource %s\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1533
-#, c-format
-msgid "Cannot find Counter resource %s\n"
-msgstr ""
-
-#: 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:1554
-#, c-format
-msgid "Cannot find Schedule resource %s\n"
-msgstr ""
-
-#: 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
-#, c-format
-msgid "Unknown resource type %d in save_resource.\n"
-msgstr "Невідомий тип ресурсу %d у save_resource.\n"
-
-#: 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: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
-#, c-format
-msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
-msgstr "Спроба визначити другий %s ресурс із назвою \"%s\" не дозволяється.\n"
-
-#: src/dird/dird_conf.c:1647
-#, c-format
-msgid "Inserting %s res: %s index=%d pass=%d\n"
-msgstr ""
-
-#: src/dird/dird_conf.c:1660
-#, c-format
-msgid "Expected one of: %s, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1732
-#, c-format
-msgid "Expected a Migration Job Type keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1758
-#, c-format
-msgid "Expected a Job Type keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1782
-#, c-format
-msgid "Expected a Job Level keyword, got: %s"
-msgstr ""
-
-#: src/dird/dird_conf.c:1802
-#, c-format
-msgid "Expected a Restore replacement option, got: %s"
-msgstr ""
-
-#: 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:1874 src/lib/parse_conf.c:478
-#, c-format
-msgid "Could not find config Resource %s referenced on line %d : %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:176
-#, c-format
-msgid "bget_dirmsg: unknown bnet signal %d\n"
-msgstr ""
-
-#: src/dird/getmsg.c:194 src/dird/getmsg.c:200 src/dird/getmsg.c:213
-#: src/dird/getmsg.c:247 src/dird/getmsg.c:269 src/dird/getmsg.c:295
-#, c-format
-msgid "Malformed message: %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:367
-#, c-format
-msgid "Bad response to %s command: wanted %s, got %s\n"
-msgstr ""
-
-#: src/dird/getmsg.c:372
-#, c-format
-msgid "Socket error on %s command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:148
-msgid "\"RegexWhere\" specification not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:155
-msgid "\"where\" specification not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:177
-msgid ""
-"No Restore Job Resource found in bacula-dir.conf.\n"
-"You must create at least one before running this command.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:194
-msgid "Restore not done.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:205
-msgid "Unable to construct a valid BSR. Cannot continue.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:209 src/dird/ua_restore.c:221
-msgid "No files selected to be restored.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:215
-msgid ""
-"\n"
-"1 file selected to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:217
-#, c-format
-msgid ""
-"\n"
-"%s files selected to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:236
-msgid "No Client resource found!\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:333
-msgid "The restore will use the following job(s) as Base\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:354
-#, c-format
-msgid "Missing value for keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:434
-msgid "List last 20 Jobs run"
-msgstr ""
-
-#: src/dird/ua_restore.c:435
-msgid "List Jobs where a given File is saved"
-msgstr ""
-
-#: src/dird/ua_restore.c:436
-msgid "Enter list of comma separated JobIds to select"
-msgstr ""
-
-#: src/dird/ua_restore.c:437
-msgid "Enter SQL list command"
-msgstr ""
-
-#: src/dird/ua_restore.c:438
-msgid "Select the most recent backup for a client"
-msgstr ""
-
-#: src/dird/ua_restore.c:439
-msgid "Select backup for a client before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:440
-msgid "Enter a list of files to restore"
-msgstr ""
-
-#: src/dird/ua_restore.c:441
-msgid "Enter a list of files to restore before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:442
-msgid "Find the JobIds of the most recent backup for a client"
-msgstr ""
-
-#: src/dird/ua_restore.c:443
-msgid "Find the JobIds for a backup for a client before a specified time"
-msgstr ""
-
-#: src/dird/ua_restore.c:444
-msgid "Enter a list of directories to restore for found JobIds"
-msgstr ""
-
-#: src/dird/ua_restore.c:445
-msgid "Select full restore to a specified Job date"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_restore.c:491
-#, c-format
-msgid "Unknown keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
-#, c-format
-msgid "Improper date format: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:560
-#, c-format
-msgid "Error: Pool resource \"%s\" access not allowed.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:576
-msgid ""
-"\n"
-"First you select one or more JobIds that contain files\n"
-"to be restored. You will be presented several methods\n"
-"of specifying the JobIds. Then you will be allowed to\n"
-"select which files from those JobIds are to be restored.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:589
-msgid "To select the JobIds, you have the following choices:\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:594
-msgid "Select item: "
-msgstr ""
-
-#: src/dird/ua_restore.c:599 src/dird/ua_restore.c:634
-msgid "SQL query not authorized.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:612
-msgid "Enter Filename (no path):"
-msgstr ""
-
-#: src/dird/ua_restore.c:627 src/dird/ua_restore.c:735
-msgid "Enter JobId(s), comma separated, to restore: "
-msgstr ""
-
-#: src/dird/ua_restore.c:637
-msgid "Enter SQL list command: "
-msgstr ""
-
-#: src/dird/ua_restore.c:671 src/dird/ua_restore.c:694
-msgid ""
-"Enter file names with paths, or < to enter a filename\n"
-"containing a list of file names with paths, and terminate\n"
-"them with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:675 src/dird/ua_restore.c:698
-msgid "Enter full filename: "
-msgstr ""
-
-#: src/dird/ua_restore.c:733
-#, c-format
-msgid "You have already selected the following JobIds: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:751
-msgid ""
-"Enter full directory names or start the name\n"
-"with a < to indicate it is a filename containing a list\n"
-"of directories and terminate them with a blank line.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:755
-msgid "Enter directory name: "
-msgstr ""
-
-#: src/dird/ua_restore.c:771
-msgid "Enter JobId to get the state to restore: "
-msgstr ""
-
-#: src/dird/ua_restore.c:784
-#, c-format
-msgid "Selecting jobs to build the Full state at %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:810
-msgid "Invalid JobId in list.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:829
-#, c-format
-msgid "Access to JobId=%s (Job \"%s\") not authorized. Not selected.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:842
-msgid "No Jobs selected.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:847
-#, c-format
-msgid "You have selected the following JobIds: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:849
-#, c-format
-msgid "You have selected the following JobId: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:859
-msgid ""
-"The restored files will the most current backup\n"
-"BEFORE the date you specify below.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:862
-msgid "Enter date as YYYY-MM-DD HH:MM:SS :"
-msgstr ""
-
-#: src/dird/ua_restore.c:868
-msgid "Improper date format.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:889
-#, c-format
-msgid "Cannot open file %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:897 src/dird/ua_restore.c:901
-#, c-format
-msgid "Error occurred on line %d of file \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:945 src/dird/ua_restore.c:973
-#, c-format
-msgid "No database record found for: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:961
-msgid "No JobId specified cannot continue.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:994
-#, c-format
-msgid "No table found: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1052
-msgid ""
-"\n"
-"\n"
-"For one or more of the JobIds selected, no files were found,\n"
-"so file selection is not possible.\n"
-"Most likely your retention policy pruned the files.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1055
-msgid ""
-"\n"
-"Do you want to restore all the files? (yes|no): "
-msgstr ""
-
-#: src/dird/ua_restore.c:1058
-msgid ""
-"\n"
-"Regexp matching files to restore? (empty to abort): "
-msgstr ""
-
-#: src/dird/ua_restore.c:1074
-#, c-format
-msgid "Regex compile error: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1137
-#, c-format
-msgid ""
-"\n"
-"Building directory tree for JobId(s) %s ...  "
-msgstr ""
-
-#: src/dird/ua_restore.c:1207
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree and marked for extraction.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1210
-#, c-format
-msgid ""
-"\n"
-"%s files inserted into the tree.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1285
-#, c-format
-msgid "Error getting FileSet \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1290
-#, c-format
-msgid "FileSet argument: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1302
-#, c-format
-msgid "No FileSet found for client \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1308
-#, c-format
-msgid "Error getting FileSet record: %s\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1309
-msgid ""
-"This probably means you modified the FileSet.\n"
-"Continuing anyway.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1324
-#, c-format
-msgid "Pool \"%s\" not found, using any pool.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1351 src/dird/ua_restore.c:1367
-#, c-format
-msgid "No Full backup before %s found.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1396
-msgid "No jobs found.\n"
-msgstr ""
-
-#: src/dird/ua_restore.c:1517
-#, c-format
-msgid "Warning default storage overridden by \"%s\" on command line.\n"
-msgstr ""
-
-#: 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:1546
-#, c-format
-msgid ""
-"\n"
-"Unable to find Storage resource for\n"
-"MediaType \"%s\", needed by the Jobs you selected.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:95
-msgid "Client: "
-msgstr ""
-
-#: src/dird/fd_cmds.c:137
-#, c-format
-msgid "File daemon \"%s\" rejected Job command: %s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:150
-#, c-format
-msgid "Error updating Client record. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:155
-#, c-format
-msgid "FD gave bad response to JobId command: %s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:184 src/dird/fd_cmds.c:272
-msgid ", since="
-msgstr ""
-
-#: src/dird/fd_cmds.c:249
-msgid "No prior or suitable Full backup found in catalog. Doing FULL backup.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:250 src/dird/fd_cmds.c:256 src/dird/fd_cmds.c:265
-#, c-format
-msgid " (upgraded from %s)"
-msgstr ""
-
-#: src/dird/fd_cmds.c:255
-msgid ""
-"No prior or suitable Differential backup found in catalog. Doing "
-"Differential backup.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:263
-#, c-format
-msgid "Prior failed job found in catalog. Upgrading to %s.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:328
-#, c-format
-msgid "Unimplemented backup level %d %c\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:401
-msgid ""
-"FD compression disabled for this Job because AllowCompress=No in Storage "
-"resource.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:500 src/filed/job.c:854
-#, c-format
-msgid "Cannot run program: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:511 src/dird/fd_cmds.c:536 src/dird/fd_cmds.c:550
-msgid ">filed: write error on socket\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:517
-#, c-format
-msgid "Error running program: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:526
-#, c-format
-msgid "Cannot open included file: %s. ERR=%s\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:672
-#, c-format
-msgid "Client \"%s\" RunScript failed.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:695
-#, c-format
-msgid ""
-"Client \"%s\" may not be used to restore this job. Please upgrade your "
-"client.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:770
-msgid "RestoreObject failed.\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:806
-#, c-format
-msgid ""
-"<filed: bad attributes, expected 3 fields got %d\n"
-"msglen=%d msg=%s\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/fd_cmds.c:862
-#, c-format
-msgid "%s index %d not same as attributes %d\n"
-msgstr ""
-
-#: src/dird/fd_cmds.c:876
-#, c-format
-msgid "<filed: Network error getting attributes. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_label.c:104
-msgid "Negative numbers not permitted\n"
-msgstr ""
-
-#: 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/lib/sellist.c:81
-msgid "Range start is not an integer.\n"
-msgstr ""
-
-#: 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/lib/sellist.c:94
-msgid "Input value is not an integer.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:133
-msgid "Values must be be greater than zero.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:137
-msgid "Slot too large.\n"
-msgstr ""
-
-#: 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: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:219 src/dird/ua_label.c:542
-msgid "No Volumes found to label, or no barcodes.\n"
-msgstr ""
-
-#: 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:267
-#, c-format
-msgid "No VolName for Slot=%d InChanger set to zero.\n"
-msgstr ""
-
-#: 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:292
-#, c-format
-msgid "Catalog record for Volume \"%s\" is up to date.\n"
-msgstr ""
-
-#: 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:394
-#, c-format
-msgid ""
-"Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
-"relabeling.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:410
-msgid "Enter new Volume name: "
-msgstr ""
-
-#: src/dird/ua_label.c:425
-#, c-format
-msgid "Media record for new Volume \"%s\" already exists.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:443
-msgid "Enter slot (0 or Enter for none): "
-msgstr ""
-
-#: src/dird/ua_label.c:471
-#, c-format
-msgid "Delete of Volume \"%s\" failed. ERR=%s"
-msgstr ""
-
-#: src/dird/ua_label.c:474
-#, c-format
-msgid "Old volume \"%s\" deleted from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:485
-#, c-format
-msgid "Requesting to mount %s ...\n"
-msgstr ""
-
-#: src/dird/ua_label.c:507
-msgid "Do not forget to mount the drive!!!\n"
-msgstr ""
-
-#: src/dird/ua_label.c:547
-msgid ""
-"The following Volumes will be labeled:\n"
-"Slot  Volume\n"
-"==============\n"
-msgstr ""
-
-#: src/dird/ua_label.c:556
-msgid "Do you want to label these Volumes? (yes|no): "
-msgstr ""
-
-#: 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:582
-#, c-format
-msgid "Error setting InChanger: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_label.c:605
-#, c-format
-msgid "Maximum pool Volumes=%d reached.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:613
-#, c-format
-msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:620
-#, c-format
-msgid "Catalog error on cleaning tape: %s"
-msgstr ""
-
-#: src/dird/ua_label.c:656
-#, c-format
-msgid "Illegal character \"%c\" in a volume name.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:703
-#, c-format
-msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
-msgstr ""
-
-#: src/dird/ua_label.c:710
-#, c-format
-msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
-msgstr ""
-
-#: 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:764
-#, c-format
-msgid "Label command failed for Volume %s.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:802
-msgid "Could not open SD socket.\n"
-msgstr ""
-
-#: 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:893
-#, c-format
-msgid "Invalid Volume name: %s\n"
-msgstr ""
-
-#: src/dird/ua_label.c:987
-#, c-format
-msgid "Device \"%s\" has %d slots.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1033
-#, c-format
-msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1247
-msgid "No Volumes found, or no barcodes.\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1250
-msgid ""
-" Slot |   Volume Name    |   Status  |     Media Type       |      "
-"Pool          |\n"
-msgstr ""
-
-#: src/dird/ua_label.c:1251
-msgid ""
-"------+------------------+-----------+----------------------"
-"+--------------------|\n"
-msgstr ""
-
-#: src/dird/scheduler.c:112
-#, c-format
-msgid "Job %s not found\n"
-msgstr ""
-
-#: src/dird/scheduler.c:136
-msgid "Walk queue"
-msgstr ""
-
-#: src/dird/scheduler.c:146
-msgid "Dequeued job"
-msgstr ""
-
-#: src/dird/scheduler.c:149
-msgid "Scheduler logic error\n"
-msgstr ""
-
-#: src/dird/scheduler.c:190
-msgid "Run job"
-msgstr ""
-
-#: src/dird/scheduler.c:223
-msgid "run override"
-msgstr ""
-
-#: src/dird/scheduler.c:413
-msgid "Inserted job"
-msgstr ""
-
-#: src/dird/scheduler.c:421
-msgid "Appended job"
-msgstr ""
-
-#: src/dird/scheduler.c:425
-msgid "Run queue"
-msgstr ""
-
-#: src/dird/run_conf.c:208
-#, c-format
-msgid "Expected an equals, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:221 src/dird/run_conf.c:233 src/dird/run_conf.c:327
-#, c-format
-msgid "Expect a YES or NO, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:247
-#, c-format
-msgid "Job level field: %s not found in run record"
-msgstr ""
-
-#: src/dird/run_conf.c:265
-#, c-format
-msgid "Could not find specified Pool Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:290
-#, c-format
-msgid "Could not find specified Storage Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:302
-#, c-format
-msgid "Could not find specified Messages Resource: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:312 src/lib/parse_conf.c:736 src/lib/parse_conf.c:742
-#, c-format
-msgid "expected a time period, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:331
-#, c-format
-msgid "Expected a keyword name, got: %s"
-msgstr ""
-
-#: src/dird/run_conf.c:370
-msgid "Day number out of range (1-31)"
-msgstr ""
-
-#: src/dird/run_conf.c:387 src/dird/run_conf.c:542
-msgid "Week number out of range (0-53)"
-msgstr ""
-
-#: src/dird/run_conf.c:403
-#, c-format
-msgid "Job type field: %s in run record not found"
-msgstr ""
-
-#: src/dird/run_conf.c:410
-#, c-format
-msgid "Unexpected token: %d:%s"
-msgstr ""
-
-#: src/dird/run_conf.c:454
-msgid "Time must be preceded by keyword AT."
-msgstr ""
-
-#: src/dird/run_conf.c:463
-msgid "Time logic error.\n"
-msgstr ""
-
-#: src/dird/run_conf.c:478 src/dird/run_conf.c:497
-msgid "Bad time specification."
-msgstr ""
-
-#: src/dird/run_conf.c:511
-msgid "Range logic error.\n"
-msgstr ""
-
-#: src/dird/run_conf.c:520
-msgid "Bad day range specification."
-msgstr ""
-
-#: src/dird/run_conf.c:567
-msgid "Invalid month, week or position day range"
-msgstr ""
-
-#: src/dird/run_conf.c:582
-msgid "Invalid month, weekday or position range"
-msgstr ""
-
-#: src/dird/run_conf.c:641
-msgid "Unexpected run state\n"
-msgstr ""
-
-#: src/dird/ua_update.c:97
-msgid "Update choice:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:98
-msgid "Volume parameters"
-msgstr ""
-
-#: src/dird/ua_update.c:99
-msgid "Pool from resource"
-msgstr ""
-
-#: src/dird/ua_update.c:100
-msgid "Slots from autochanger"
-msgstr ""
-
-#: src/dird/ua_update.c:101
-msgid "Long term statistics"
-msgstr ""
-
-#: src/dird/ua_update.c:102
-msgid "item"
-msgstr ""
-
-#: src/dird/ua_update.c:102
-msgid "Choose catalog item to update"
-msgstr ""
-
-#: src/dird/ua_update.c:145
-#, c-format
-msgid "Invalid VolStatus specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:154
-#, c-format
-msgid "New Volume status is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:164
-#, c-format
-msgid "Invalid retention period specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:172
-#, c-format
-msgid "New retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:183
-#, c-format
-msgid "Invalid use duration specified: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:191
-#, c-format
-msgid "New use duration is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:205
-#, c-format
-msgid "New max jobs is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:218
-#, c-format
-msgid "New max files is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:229
-#, c-format
-msgid "Invalid max. bytes specification: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:237
-#, c-format
-msgid "New Max bytes is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:248 src/dird/ua_update.c:268
-msgid "Invalid value. It must be yes or no.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:256
-#, c-format
-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: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: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 ""
-
-#: src/dird/ua_update.c:276
-#, c-format
-msgid "New InChanger flag is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:294
-#, c-format
-msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
-msgstr ""
-
-#: 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:306
-#, c-format
-msgid "New Slot is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:331
-#, c-format
-msgid "New Pool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:374
-#, c-format
-msgid "New RecyclePool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:394
-#, c-format
-msgid "Error updating Volume record: ERR=%s"
-msgstr ""
-
-#: 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:451
-#, c-format
-msgid "Error updating Volume records: ERR=%s"
-msgstr ""
-
-#: 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:443
-#, c-format
-msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:469
-#, c-format
-msgid "Error updating media record Enabled: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_update.c:472
-#, c-format
-msgid "New Enabled is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:487
-#, c-format
-msgid "Error updating media record ActionOnPurge: ERR=%s"
-msgstr ""
-
-#: src/dird/ua_update.c:490
-#, c-format
-msgid "New ActionOnPurge is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
-msgid "Parameters to modify:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:606
-msgid "Volume Status"
-msgstr ""
-
-#: src/dird/ua_update.c:607
-msgid "Volume Retention Period"
-msgstr ""
-
-#: src/dird/ua_update.c:608
-msgid "Volume Use Duration"
-msgstr ""
-
-#: src/dird/ua_update.c:609
-msgid "Maximum Volume Jobs"
-msgstr ""
-
-#: src/dird/ua_update.c:610
-msgid "Maximum Volume Files"
-msgstr ""
-
-#: src/dird/ua_update.c:611
-msgid "Maximum Volume Bytes"
-msgstr ""
-
-#: src/dird/ua_update.c:612
-msgid "Recycle Flag"
-msgstr ""
-
-#: src/dird/ua_update.c:613
-msgid "Slot"
-msgstr ""
-
-#: src/dird/ua_update.c:614
-msgid "InChanger Flag"
-msgstr ""
-
-#: src/dird/ua_update.c:615
-msgid "Volume Files"
-msgstr ""
-
-#: src/dird/ua_update.c:617
-msgid "Volume from Pool"
-msgstr ""
-
-#: src/dird/ua_update.c:618
-msgid "All Volumes from Pool"
-msgstr ""
-
-#: src/dird/ua_update.c:619
-msgid "All Volumes from all Pools"
-msgstr ""
-
-#: src/dird/ua_update.c:620
-msgid "Enabled"
-msgstr ""
-
-#: src/dird/ua_update.c:621
-msgid "RecyclePool"
-msgstr ""
-
-#: src/dird/ua_update.c:622
-msgid "Action On Purge"
-msgstr ""
-
-#: src/dird/ua_update.c:623
-msgid "Done"
-msgstr ""
-
-#: 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:632
-#, c-format
-msgid "Updating Volume \"%s\"\n"
-msgstr ""
-
-#: src/dird/ua_update.c:637
-#, c-format
-msgid "Current Volume status is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:638
-msgid "Possible Values are:\n"
-msgstr ""
-
-#: src/dird/ua_update.c:649
-msgid "Choose new Volume Status"
-msgstr ""
-
-#: src/dird/ua_update.c:655
-#, c-format
-msgid "Current retention period is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:657
-msgid "Enter Volume Retention period: "
-msgstr ""
-
-#: src/dird/ua_update.c:664
-#, c-format
-msgid "Current use duration is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:666
-msgid "Enter Volume Use Duration: "
-msgstr ""
-
-#: src/dird/ua_update.c:673
-#, c-format
-msgid "Current max jobs is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:674
-msgid "Enter new Maximum Jobs: "
-msgstr ""
-
-#: src/dird/ua_update.c:681
-#, c-format
-msgid "Current max files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:682
-msgid "Enter new Maximum Files: "
-msgstr ""
-
-#: src/dird/ua_update.c:689
-#, c-format
-msgid "Current value is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:690
-msgid "Enter new Maximum Bytes: "
-msgstr ""
-
-#: src/dird/ua_update.c:698
-#, c-format
-msgid "Current recycle flag is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:700
-msgid "Enter new Recycle status: "
-msgstr ""
-
-#: src/dird/ua_update.c:707
-#, c-format
-msgid "Current Slot is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:708
-msgid "Enter new Slot: "
-msgstr ""
-
-#: src/dird/ua_update.c:715
-#, c-format
-msgid "Current InChanger flag is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:716
-#, c-format
-msgid "Set InChanger flag for Volume \"%s\": yes/no: "
-msgstr ""
-
-#: src/dird/ua_update.c:730
-#, c-format
-msgid "New InChanger flag is: %d\n"
-msgstr ""
-
-#: 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:739
-#, c-format
-msgid "Current Volume Files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:740
-msgid "Enter new number of Files for Volume: "
-msgstr ""
-
-#: src/dird/ua_update.c:745
-msgid "Normally, you should only increase Volume Files by one!\n"
-msgstr ""
-
-#: src/dird/ua_update.c:746
-msgid "Increase Volume Files? (yes/no): "
-msgstr ""
-
-#: src/dird/ua_update.c:756
-#, c-format
-msgid "New Volume Files is: %u\n"
-msgstr ""
-
-#: src/dird/ua_update.c:768
-#, c-format
-msgid "Current Pool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:769
-msgid "Enter new Pool name: "
-msgstr ""
-
-#: src/dird/ua_update.c:790
-#, c-format
-msgid "Current Enabled is: %d\n"
-msgstr ""
-
-#: src/dird/ua_update.c:791
-msgid "Enter new Enabled: "
-msgstr ""
-
-#: src/dird/ua_update.c:810
-#, c-format
-msgid "Current RecyclePool is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:812
-msgid "No current RecyclePool\n"
-msgstr ""
-
-#: src/dird/ua_update.c:822
-#, c-format
-msgid "Current ActionOnPurge is: %s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:824
-msgid "Enter new ActionOnPurge (one of: Truncate, None): "
-msgstr ""
-
-#: src/dird/ua_update.c:832
-msgid "Selection terminated.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:852
-#, c-format
-msgid "Updating %i job(s).\n"
-msgstr ""
-
-#: src/dird/ua_update.c:884
-#, c-format
-msgid "db_update_pool_record returned %d. ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_update.c:891
-msgid "Pool DB record updated from resource.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:918
-msgid "Expect JobId keyword, not found.\n"
-msgstr ""
-
-#: src/dird/ua_update.c:943
-msgid "Neither Client nor StartTime specified.\n"
-msgstr ""
-
-#: src/dird/migrate.c:149 src/dird/migrate.c:163
-#, c-format
-msgid "No previous Job found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:155
-msgid "Create bootstrap file failed.\n"
-msgstr ""
-
-#: src/dird/migrate.c:165
-#, c-format
-msgid "Previous Job has no data to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:182
-#, c-format
-msgid "Job resource not found for \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:186
-#, c-format
-msgid "Previous Job resource not found for \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:203
-msgid "setup job failed.\n"
-msgstr ""
-
-#: src/dird/migrate.c:258
-#, c-format
-msgid "Pool for JobId %s not in database. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:266
-#, c-format
-msgid "Pool resource \"%s\" not found.\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/migrate.c:327
-#, c-format
-msgid "JobId %s already %s probably by another Job. %s stopped.\n"
-msgstr ""
-
-#: src/dird/migrate.c:337
-#, c-format
-msgid "Start %s JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:712
-#, c-format
-msgid "No %s SQL selection pattern specified.\n"
-msgstr ""
-
-#: 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: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:777 src/dird/migrate.c:866 src/dird/migrate.c:886
-msgid "Invalid JobId found.\n"
-msgstr ""
-
-#: src/dird/migrate.c:837
-#, c-format
-msgid "Unknown %s Selection Type.\n"
-msgstr ""
-
-#: 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:852
-#, c-format
-msgid "The following %u JobId%s chosen to be %s: %s\n"
-msgstr ""
-
-#: src/dird/migrate.c:853
-msgid " was"
-msgstr ""
-
-#: src/dird/migrate.c:853
-msgid "s were"
-msgstr ""
-
-#: src/dird/migrate.c:905
-#, c-format
-msgid "%s using JobId=%s Job=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:939
-msgid "Could not start migration job.\n"
-msgstr ""
-
-#: src/dird/migrate.c:941
-#, c-format
-msgid "%s JobId %d started.\n"
-msgstr ""
-
-#: src/dird/migrate.c:960
-#, c-format
-msgid "No %s found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:964
-#, c-format
-msgid "SQL error. Expected 1 MediaId got %d\n"
-msgstr ""
-
-#: src/dird/migrate.c:993 src/dird/migrate.c:1123
-#, c-format
-msgid "No %ss found to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1015
-msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
-msgstr ""
-
-#: src/dird/migrate.c:1024
-#, c-format
-msgid "SQL to get uncopied jobs failed. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1047
-#, c-format
-msgid "No %s %s selection pattern specified.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1058
-#, c-format
-msgid "SQL to get %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1063
-#, c-format
-msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1101
-#, c-format
-msgid "Regex pattern matched no Jobs to %s.\n"
-msgstr ""
-
-#: src/dird/migrate.c:1265
-#, c-format
-msgid "%s OK -- with warnings"
-msgstr ""
-
-#: src/dird/migrate.c:1267
-#, c-format
-msgid "%s OK"
-msgstr ""
-
-#: src/dird/migrate.c:1272
-#, c-format
-msgid "*** %s Error ***"
-msgstr ""
-
-#: src/dird/migrate.c:1282
-#, c-format
-msgid "%s Canceled"
-msgstr ""
-
-#: src/dird/migrate.c:1291
-#, c-format
-msgid "Inappropriate %s term code"
-msgstr ""
-
-#: src/dird/migrate.c:1301
-#, c-format
-msgid "%s -- no files to %s"
-msgstr ""
-
-#: src/dird/migrate.c:1316
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  Prev Backup JobId:      %s\n"
-"  Prev Backup Job:        %s\n"
-"  New Backup JobId:       %s\n"
-"  Current JobId:          %s\n"
-"  Current Job:            %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Read Pool:              \"%s\" (From %s)\n"
-"  Read Storage:           \"%s\" (From %s)\n"
-"  Write Pool:             \"%s\" (From %s)\n"
-"  Write Storage:          \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/migrate.c:1427
-#, c-format
-msgid "No Next Pool specification found in Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:1433
-#, c-format
-msgid "No Storage specification found in Next Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/migrate.c:1439
-msgid "Storage from Pool's NextPool resource"
-msgstr ""
-
-#: src/dird/ua_prune.c:127
-msgid "Choose item to prune"
-msgstr ""
-
-#: src/dird/ua_prune.c:175
-#, c-format
-msgid "Cannot prune Volume \"%s\" because it is archived.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:217
-msgid "Pruned Jobs from JobHisto catalog.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:305
-#, fuzzy
-msgid "Begin pruning Files.\n"
-msgstr "Починається чистка файлів Клієнта \"%s\"\n"
-
-#: src/dird/ua_prune.c:320
-msgid "No Files found to prune.\n"
-msgstr ""
-
-#: 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:489
-#, fuzzy, c-format
-msgid "Begin pruning Jobs older than %s.\n"
-msgstr "Починається чистка файлів Клієнта \"%s\"\n"
-
-#: src/dird/ua_prune.c:600
-#, c-format
-msgid "Pruned %d %s for client %s from catalog.\n"
-msgstr ""
-
-#: src/dird/ua_prune.c:601
-msgid "Jobs"
-msgstr ""
-
-#: src/dird/ua_prune.c:603
-msgid "No Jobs found to prune.\n"
-msgstr ""
-
-#: src/dird/autoprune.c:75
-msgid ""
-"End auto prune.\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_run.c:154
-msgid "OK to run? (yes/mod/no): "
-msgstr ""
-
-#: src/dird/ua_run.c:193
-msgid "Job failed.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:196
-#, c-format
-msgid "Job queued. JobId=%s\n"
-msgstr ""
-
-#: 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:223
-msgid "Level"
-msgstr ""
-
-#: src/dird/ua_run.c:228
-msgid "Restore Client"
-msgstr ""
-
-#: 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: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:240
-msgid "Verify Job"
-msgstr ""
-
-#: 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: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:245
-msgid "File Relocation"
-msgstr ""
-
-#: 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
-#: src/wx-console/wxbrestorepanel.cpp:1907
-#: src/wx-console/wxbrestorepanel.cpp:1908
-#: src/wx-console/wxbrestorepanel.cpp:1909
-msgid "Replace"
-msgstr ""
-
-#: src/dird/ua_run.c:247
-msgid "JobId"
-msgstr ""
-
-#: src/dird/ua_run.c:250
-msgid "Plugin Options"
-msgstr ""
-
-#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
-msgid "user selection"
-msgstr ""
-
-#: 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:301 src/dird/ua_run.c:477
-msgid "Invalid time, using current time.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:308
-msgid "Enter new Priority: "
-msgstr ""
-
-#: src/dird/ua_run.c:312
-msgid "Priority must be a positive integer.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:333
-msgid "Please enter the Bootstrap file name: "
-msgstr ""
-
-#: src/dird/ua_run.c:345
-#, c-format
-msgid "Warning cannot open %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:364
-msgid "Please enter the full path prefix for restore (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:386
-msgid "Replace:\n"
-msgstr ""
-
-#: src/dird/ua_run.c:390
-msgid "Select replace option"
-msgstr ""
-
-#: 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:406
-msgid "Please Plugin Options string: "
-msgstr ""
-
-#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
-msgid "User input"
-msgstr ""
-
-#: src/dird/ua_run.c:507
-#, c-format
-msgid "Invalid replace option: %s\n"
-msgstr ""
-
-#: 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:592
-msgid "This will replace your current Where value\n"
-msgstr ""
-
-#: src/dird/ua_run.c:593
-msgid "Strip prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:594
-msgid "Add prefix"
-msgstr ""
-
-#: src/dird/ua_run.c:595
-msgid "Add file suffix"
-msgstr ""
-
-#: src/dird/ua_run.c:596
-msgid "Enter a regexp"
-msgstr ""
-
-#: src/dird/ua_run.c:597
-msgid "Test filename manipulation"
-msgstr ""
-
-#: src/dird/ua_run.c:598
-msgid "Use this ?"
-msgstr ""
-
-#: src/dird/ua_run.c:603
-msgid "Please enter the path prefix to strip: "
-msgstr ""
-
-#: src/dird/ua_run.c:611
-msgid "Please enter the path prefix to add (/ for none): "
-msgstr ""
-
-#: src/dird/ua_run.c:622
-msgid "Please enter the file suffix to add: "
-msgstr ""
-
-#: src/dird/ua_run.c:629
-msgid "Please enter a valid regexp (!from!to!): "
-msgstr ""
-
-#: src/dird/ua_run.c:642
-#, c-format
-msgid "regexwhere=%s\n"
-msgstr ""
-
-#: 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:655
-msgid "Cannot use your regexp\n"
-msgstr ""
-
-#: src/dird/ua_run.c:658
-msgid "Enter a period (.) to stop this test\n"
-msgstr ""
-
-#: src/dird/ua_run.c:659
-msgid "Please enter filename to test: "
-msgstr ""
-
-#: src/dird/ua_run.c:661
-#, c-format
-msgid "%s -> %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:705
-msgid "Cannot use your regexp.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
-msgid "Levels:\n"
-msgstr ""
-
-#: 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:721 src/stored/status.c:668 src/lib/util.c:429
-#: src/filed/status.c:522
-msgid "Incremental"
-msgstr ""
-
-#: 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:723 src/stored/status.c:674 src/lib/util.c:435
-#: src/filed/status.c:528
-msgid "Since"
-msgstr ""
-
-#: src/dird/ua_run.c:724
-msgid "VirtualFull"
-msgstr ""
-
-#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
-msgid "Select level"
-msgstr ""
-
-#: src/dird/ua_run.c:749
-msgid "Initialize Catalog"
-msgstr ""
-
-#: 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:751 src/lib/util.c:444
-msgid "Verify Volume to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:752 src/lib/util.c:447
-msgid "Verify Disk to Catalog"
-msgstr ""
-
-#: src/dird/ua_run.c:753
-msgid "Verify Volume Data (not yet implemented)"
-msgstr ""
-
-#: src/dird/ua_run.c:774
-msgid "Level not appropriate for this Job. Cannot be changed.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:805
-#, c-format
-msgid ""
-"Run Admin Job\n"
-"JobName:  %s\n"
-"FileSet:  %s\n"
-"Client:   %s\n"
-"Storage:  %s\n"
-"When:     %s\n"
-"Priority: %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:849
-#, c-format
-msgid ""
-"Run Backup job\n"
-"JobName:  %s\n"
-"Level:    %s\n"
-"Client:   %s\n"
-"FileSet:  %s\n"
-"Pool:     %s (From %s)\n"
-"Storage:  %s (From %s)\n"
-"When:     %s\n"
-"Priority: %d\n"
-"%s%s%s"
-msgstr ""
-
-#: 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:919
-#, c-format
-msgid ""
-"Run Verify Job\n"
-"JobName:     %s\n"
-"Level:       %s\n"
-"Client:      %s\n"
-"FileSet:     %s\n"
-"Pool:        %s (From %s)\n"
-"Storage:     %s (From %s)\n"
-"Verify Job:  %s\n"
-"Verify List: %s\n"
-"When:        %s\n"
-"Priority:    %d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:948
-msgid "Please enter a JobId for restore: "
-msgstr ""
-
-#: src/dird/ua_run.c:988
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"RegexWhere:      %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1044
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:         %s\n"
-"Bootstrap:       %s\n"
-"Where:           %s\n"
-"Replace:         %s\n"
-"FileSet:         %s\n"
-"Backup Client:   %s\n"
-"Restore Client:  %s\n"
-"Storage:         %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1075
-#, c-format
-msgid ""
-"Run Restore job\n"
-"JobName:    %s\n"
-"Bootstrap:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1083
-#, c-format
-msgid "RegexWhere: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1086
-#, c-format
-msgid "Where:      %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1090
-#, c-format
-msgid ""
-"Replace:         %s\n"
-"Client:          %s\n"
-"Storage:         %s\n"
-"JobId:           %s\n"
-"When:            %s\n"
-"Catalog:         %s\n"
-"Priority:        %d\n"
-"Plugin Options:  %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1145
-msgid "Run Copy job\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1147
-msgid "Run Migration job\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1176
-#, c-format
-msgid "Unknown Job Type=%d\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1245
-#, c-format
-msgid "Value missing for keyword %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1252
-msgid "Job name specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1260
-msgid "JobId specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
-msgid "Client specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1277
-msgid "FileSet specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1285
-msgid "Level specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1294
-msgid "Storage specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1302
-msgid "RegexWhere or Where specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1307
-msgid "No authorization for \"regexwhere\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1314
-msgid "Where or RegexWhere specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1319
-msgid "No authoriztion for \"where\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1326
-msgid "Bootstrap specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1334
-msgid "Replace specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1342
-msgid "When specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1350
-msgid "Priority specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1355
-msgid "Priority must be positive nonzero setting it to 10.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1365
-msgid "Verify Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1393
-msgid "Migration Job specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1401
-msgid "Pool specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1417
-msgid "Restore Client specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1424
-msgid "Plugin Options not yet implemented.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1427
-msgid "Plugin Options specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1432
-msgid "No authoriztion for \"PluginOptions\" specification.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1439
-msgid "Spool flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1446
-msgid "Invalid spooldata flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1455
-msgid "IgnoreDuplicateCheck flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1462
-msgid "Invalid ignoreduplicatecheck flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1467
-msgid "Accurate flag specified twice.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1474
-msgid "Invalid accurate flag.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1495
-#, c-format
-msgid "Invalid keyword: %s\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1510
-#, c-format
-msgid "Catalog \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1514
-#, c-format
-msgid "No authorization. Catalog \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1525
-#, c-format
-msgid "Job \"%s\" not found\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1532
-msgid "A job name must be specified.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1538
-#, c-format
-msgid "No authorization. Job \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1546
-#, c-format
-msgid "Pool \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1556
-#, c-format
-msgid "No authorization. Pool \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1566
-#, c-format
-msgid "Storage \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1575 src/dird/job.c:1245
-msgid "No storage specified.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1578
-#, c-format
-msgid "No authorization. Storage \"%s\".\n"
-msgstr ""
-
-#: 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:1608
-#, c-format
-msgid "Restore Client \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1627
-#, c-format
-msgid "FileSet \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1636
-#, c-format
-msgid "No authorization. FileSet \"%s\".\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1644
-#, c-format
-msgid "Verify Job \"%s\" not found.\n"
-msgstr ""
-
-#: src/dird/ua_run.c:1654
-#, c-format
-msgid "Migration Job \"%s\" not found.\n"
-msgstr ""
-
-#: 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: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: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: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: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 ""
-
-#: src/dird/backup.c:96
-msgid "No Storage specification found in Job or Pool.\n"
-msgstr ""
-
-#: src/dird/backup.c:256
-#, c-format
-msgid "Using BaseJobId(s): %s\n"
-msgstr ""
-
-#: src/dird/backup.c:266
-msgid "Cannot find previous jobids.\n"
-msgstr ""
-
-#: src/dird/backup.c:275
-msgid "Sending Accurate information.\n"
-msgstr ""
-
-#: src/dird/backup.c:328
-#, c-format
-msgid "Start Backup JobId %s, Job=%s\n"
-msgstr ""
-
-#: src/dird/backup.c:521
-#, c-format
-msgid "Unexpected Client Job message: %s\n"
-msgstr ""
-
-#: src/dird/backup.c:534
-#, c-format
-msgid "Network error with FD during %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/backup.c:569
-msgid "No Job status returned from FD.\n"
-msgstr ""
-
-#: src/dird/backup.c:657
-msgid "Backup failed -- incomplete"
-msgstr ""
-
-#: src/dird/backup.c:730
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 \"%s\" %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Pool:                   \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Storage:                \"%s\" (From %s)\n"
-"  Scheduled time:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  FD Files Written:       %s\n"
-"  SD Files Written:       %s\n"
-"  FD Bytes Written:       %s (%sB)\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Software Compression:   %s\n"
-"%s  VSS:                    %s\n"
-"  Encryption:             %s\n"
-"  Accurate:               %s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  Non-fatal FD errors:    %d\n"
-"  SD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: 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:868
-#, c-format
-msgid ""
-"Could not open WriteBootstrap file:\n"
-"%s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/restore.c:137 src/dird/msgchan.c:476
-#, c-format
-msgid "Could not open bootstrap file %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/restore.c:185 src/dird/restore.c:276
-#, fuzzy, c-format
-msgid "Could not get storage resource '%s'.\n"
-msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
-
-#: src/dird/restore.c:314
-#, fuzzy, c-format
-msgid "Could not acquire read storage lock for \"%s\""
-msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
-
-#: 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:513
-#, c-format
-msgid "Start Restore Job %s\n"
-msgstr ""
-
-#: src/dird/restore.c:564
-msgid "Restore OK -- warning file count mismatch"
-msgstr ""
-
-#: src/dird/restore.c:566
-msgid "Restore OK"
-msgstr ""
-
-#: src/dird/restore.c:570
-msgid "Restore OK -- with warnings"
-msgstr ""
-
-#: src/dird/restore.c:574
-msgid "*** Restore Error ***"
-msgstr ""
-
-#: src/dird/restore.c:584
-msgid "Restore Canceled"
-msgstr ""
-
-#: src/dird/restore.c:611
-#, c-format
-msgid ""
-"%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  JobId:                  %d\n"
-"  Job:                    %s\n"
-"  Restore Client:         %s\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Files Expected:         %s\n"
-"  Files Restored:         %s\n"
-"  Bytes Restored:         %s\n"
-"  Rate:                   %.1f KB/s\n"
-"  FD Errors:              %d\n"
-"  FD termination status:  %s\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/dird/ua_status.c:174
-msgid "Status available for:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:180
-msgid "Select daemon type for status"
-msgstr ""
-
-#: src/dird/ua_status.c:294 src/stored/status.c:248
-#, c-format
-msgid "%s Version: %s (%s) %s %s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:297
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/dird/ua_status.c:358
-#, c-format
-msgid ""
-"\n"
-"Failed to connect to Storage daemon %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:400
-#, c-format
-msgid ""
-"Failed to connect to Client %s.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:408
-msgid "Connected to file daemon\n"
-msgstr ""
-
-#: src/dird/ua_status.c:428
-msgid ""
-"\n"
-"Scheduled Jobs:\n"
-msgstr ""
-
-#: src/dird/ua_status.c:429
-msgid ""
-"Level          Type     Pri  Scheduled          Name               Volume\n"
-msgstr ""
-
-#: src/dird/ua_status.c:430
-msgid "===================================================================================\n"
-msgstr ""
-
-#: 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:490
-#, c-format
-msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:544
-msgid "Ignoring invalid value for days. Max is 500.\n"
-msgstr ""
-
-#: src/dird/ua_status.c:587
-msgid "No Scheduled Jobs.\n"
-msgstr ""
-
-#: 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:612
-#, c-format
-msgid "Console connected at %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:622
-msgid ""
-"No Jobs running.\n"
-"====\n"
-msgstr ""
-
-#: src/dird/ua_status.c:628
-msgid " JobId Level   Name                       Status\n"
-msgstr ""
-
-#: src/dird/ua_status.c:629 src/filed/status.c:342
-msgid "======================================================================\n"
-msgstr ""
-
-#: src/dird/ua_status.c:638
-msgid "is waiting execution"
-msgstr ""
-
-#: src/dird/ua_status.c:641
-msgid "is running"
-msgstr ""
-
-#: src/dird/ua_status.c:644
-msgid "is blocked"
-msgstr ""
-
-#: src/dird/ua_status.c:647
-msgid "has terminated"
-msgstr ""
-
-#: src/dird/ua_status.c:650
-msgid "has terminated with warnings"
-msgstr ""
-
-#: src/dird/ua_status.c:653
-msgid "has erred"
-msgstr ""
-
-#: src/dird/ua_status.c:656
-msgid "has errors"
-msgstr ""
-
-#: src/dird/ua_status.c:659
-msgid "has a fatal error"
-msgstr ""
-
-#: src/dird/ua_status.c:662
-msgid "has verify differences"
-msgstr ""
-
-#: src/dird/ua_status.c:665
-msgid "has been canceled"
-msgstr ""
-
-#: src/dird/ua_status.c:670
-msgid "is waiting on Client"
-msgstr ""
-
-#: src/dird/ua_status.c:672
-#, c-format
-msgid "is waiting on Client %s"
-msgstr ""
-
-#: 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:684
-msgid "is waiting on Storage"
-msgstr ""
-
-#: src/dird/ua_status.c:690
-msgid "is waiting on max Storage jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:693
-msgid "is waiting on max Client jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:696
-msgid "is waiting on max Job jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:699
-msgid "is waiting on max total jobs"
-msgstr ""
-
-#: src/dird/ua_status.c:702
-msgid "is waiting for its start time"
-msgstr ""
-
-#: src/dird/ua_status.c:705
-msgid "is waiting for higher priority jobs to finish"
-msgstr ""
-
-#: 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:711 src/dird/ua_status.c:762 src/lib/util.c:244
-msgid "SD despooling Data"
-msgstr ""
-
-#: 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:717 src/dird/ua_status.c:768 src/lib/util.c:250
-msgid "Dir inserting Attributes"
-msgstr ""
-
-#: src/dird/ua_status.c:722
-#, c-format
-msgid "is in unknown state %c"
-msgstr ""
-
-#: src/dird/ua_status.c:736
-msgid "is waiting for a mount request"
-msgstr ""
-
-#: src/dird/ua_status.c:743
-msgid "is waiting for an appendable Volume"
-msgstr ""
-
-#: src/dird/ua_status.c:751
-msgid "is waiting for Client to connect to Storage daemon"
-msgstr ""
-
-#: 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:784
-#, c-format
-msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:788
-#, c-format
-msgid "%6d %-6s  %-20s %s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:792
-#, c-format
-msgid "               %-30s\n"
-msgstr ""
-
-#: src/dird/ua_status.c:812
-msgid "No Terminated Jobs.\n"
-msgstr ""
-
-#: 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: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:820
-msgid "====================================================================\n"
-msgstr ""
-
-#: 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: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:859 src/stored/status.c:608 src/filed/status.c:370
-msgid "Diffs"
-msgstr ""
-
-#: 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: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:871 src/stored/status.c:620 src/filed/status.c:379
-msgid "Other"
-msgstr ""
-
-#: 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: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:892
-msgid "\n"
-msgstr ""
-
-#: src/dird/ua_input.c:103
-msgid "Enter slot"
-msgstr ""
-
-#: src/dird/ua_input.c:107 src/dird/ua_input.c:113
-#, c-format
-msgid "Expected a positive integer, got: %s\n"
-msgstr ""
-
-#: src/dird/ua_input.c:170
-msgid "Invalid response. You must answer yes or no.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:193
-msgid "Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"
-msgstr ""
-
-#: src/dird/ua_input.c:220
-#, fuzzy, c-format
-msgid "Illegal character \"%c\" in a comment.\n"
-msgstr "Заборонені символи у назві Тому \"%s\"\n"
-
-#: src/dird/ua_input.c:227
-msgid "Comment too long.\n"
-msgstr ""
-
-#: src/dird/ua_input.c:233
-msgid "Comment must be at least one character long.\n"
-msgstr ""
-
-#: src/dird/pythondir.c:121 src/stored/pythonsd.c:101
-#: src/stored/pythonsd.c:166 src/filed/pythonfd.c:94 src/filed/pythonfd.c:148
-#: src/filed/pythonfd.c:212
-msgid "Job pointer not found."
-msgstr ""
-
-#: src/dird/pythondir.c:153
-msgid "Pool record not found."
-msgstr ""
-
-#: src/dird/pythondir.c:209 src/stored/pythonsd.c:143 src/filed/pythonfd.c:125
-#, c-format
-msgid "Attribute %s not found."
-msgstr ""
-
-#: src/dird/pythondir.c:252 src/dird/pythondir.c:258 src/stored/pythonsd.c:183
-#: src/filed/pythonfd.c:167
-msgid "Read-only attribute"
-msgstr ""
-
-#: src/dird/pythondir.c:284
-msgid "Priority must be 1-100"
-msgstr ""
-
-#: src/dird/pythondir.c:289
-msgid "Job Level can be set only during JobInit"
-msgstr ""
-
-#: src/dird/pythondir.c:303
-msgid "Bad JobLevel string"
-msgstr ""
-
-#: src/dird/job.c:62
-#, c-format
-msgid "Could not init job queue: ERR=%s\n"
-msgstr ""
-
-#: src/dird/job.c:94
-#, c-format
-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:1129 src/dird/job.c:1170
-#: src/dird/job.c:1179
-msgid "Job resource"
-msgstr ""
-
-#: src/dird/job.c:230 src/dird/job.c:349
-#, c-format
-msgid "Unimplemented job type: %d\n"
-msgstr ""
-
-#: src/dird/job.c:272
-msgid "Job canceled because max start delay time exceeded.\n"
-msgstr ""
-
-#: src/dird/job.c:277
-msgid "Job canceled because max run sched time exceeded.\n"
-msgstr ""
-
-#: src/dird/job.c:403
-#, c-format
-msgid "JobId %s, Job %s marked to be canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:413
-msgid "Failed to connect to File daemon.\n"
-msgstr ""
-
-#: src/dird/job.c:548
-msgid "Max wait time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:553
-msgid "Max run time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:558
-msgid "Max run sched time exceeded. Job canceled.\n"
-msgstr ""
-
-#: src/dird/job.c:680
-#, c-format
-msgid "Pool \"%s\" not in database. ERR=%s"
-msgstr ""
-
-#: src/dird/job.c:684
-#, c-format
-msgid "Created database record for Pool \"%s\".\n"
-msgstr ""
-
-#: 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:797
-#, c-format
-msgid "Cancelling duplicate JobId=%d.\n"
-msgstr ""
-
-#: src/dird/job.c:828 src/dird/job.c:1116
-msgid "Run pool override"
-msgstr ""
-
-#: src/dird/job.c:839
-msgid "Run FullPool override"
-msgstr ""
-
-#: src/dird/job.c:841
-msgid "Job FullPool override"
-msgstr ""
-
-#: src/dird/job.c:850
-msgid "Run IncPool override"
-msgstr ""
-
-#: src/dird/job.c:852
-msgid "Job IncPool override"
-msgstr ""
-
-#: src/dird/job.c:861
-msgid "Run DiffPool override"
-msgstr ""
-
-#: src/dird/job.c:863
-msgid "Job DiffPool override"
-msgstr ""
-
-#: 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:929
-msgid "FileSet MD5 digest not found.\n"
-msgstr "Не знайдено відбиток MD5 Набору Файлів.\n"
-
-#: src/dird/job.c:934
-#, c-format
-msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
-msgstr ""
-
-#: src/dird/job.c:976
-#, c-format
-msgid "Error updating job record. %s"
-msgstr ""
-
-#: src/dird/job.c:1121
-msgid "Run storage override"
-msgstr ""
-
-#: src/dird/job.c:1189
-msgid "Client resource"
-msgstr ""
-
-#: src/dird/job.c:1406
-#, c-format
-msgid "Could not start clone job: \"%s\".\n"
-msgstr ""
-
-#: src/dird/job.c:1409
-#, c-format
-msgid "Clone JobId %d started.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:83 src/dird/authenticate.c:84
-#: src/tray-monitor/authenticate.c:132
-#: src/qt-console/tray-monitor/authenticate.cpp:131
-#, c-format
-msgid "Error sending Hello to Storage daemon. ERR=%s\n"
-msgstr "Не вдалося надіслати Hello до Зберігача. ERR=%s\n"
-
-#: src/dird/authenticate.c:113
-msgid "Director and Storage daemon passwords or names not the same.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:115
-#, c-format
-msgid ""
-"Director unable to authenticate with Storage daemon at \"%s:%d\". Possible "
-"causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the SD or\n"
-"SD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-
-#: src/dird/authenticate.c:127 src/wx-console/authenticate.c:127
-#: src/console/authenticate.c:122
-msgid ""
-"Authorization problem: Remote server did not advertise required TLS "
-"support.\n"
-msgstr ""
-"Проблеми авторизації: Віддалений сервер не повідомив про необхідність "
-"використання TLS.\n"
-
-#: src/dird/authenticate.c:134 src/stored/authenticate.c:146
-#: src/stored/authenticate.c:257 src/wx-console/authenticate.c:133
-#: src/console/authenticate.c:129 src/filed/authenticate.c:160
-#: src/filed/authenticate.c:279
-msgid "Authorization problem: Remote server requires TLS.\n"
-msgstr "Проблеми авторизації: Віддалений сервер вимагає використання TLS.\n"
-
-#: src/dird/authenticate.c:143
-#, c-format
-msgid "TLS negotiation failed with SD at \"%s:%d\"\n"
-msgstr ""
-
-#: src/dird/authenticate.c:155
-#, c-format
-msgid "bdird<stored: \"%s:%s\" bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:162 src/tray-monitor/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:151
-msgid "Storage daemon rejected Hello command\n"
-msgstr "Зберігач відхилив команду Hello\n"
-
-#: src/dird/authenticate.c:163
-#, c-format
-msgid "Storage daemon at \"%s:%d\" rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:192
-#, c-format
-msgid "Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:222
-msgid "Director and File daemon passwords or names not the same.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:224
-#, c-format
-msgid ""
-"Unable to authenticate with File daemon at \"%s:%d\". Possible causes:\n"
-"Passwords or names not the same or\n"
-"Maximum Concurrent Jobs exceeded on the FD or\n"
-"FD networking messed up (restart daemon).\n"
-"Please see "
-msgstr ""
-
-#: src/dird/authenticate.c:236
-#, c-format
-msgid ""
-"Authorization problem: FD \"%s:%s\" did not advertise required TLS support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:244
-#, c-format
-msgid "Authorization problem: FD at \"%s:%d\" requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:254
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\".\n"
-msgstr ""
-
-#: src/dird/authenticate.c:266 src/tray-monitor/authenticate.c:191
-#: src/qt-console/tray-monitor/authenticate.cpp:190
-#, c-format
-msgid "Bad response from File daemon to Hello command: ERR=%s\n"
-msgstr "Невірна відповідь від Збирача на команду Hello: ERR=%s\n"
-
-#: src/dird/authenticate.c:268
-#, c-format
-msgid "Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:277 src/tray-monitor/authenticate.c:198
-#: src/qt-console/tray-monitor/authenticate.cpp:197
-msgid "File daemon rejected Hello command\n"
-msgstr "Збирач відхилив команду Hello \n"
-
-#: src/dird/authenticate.c:278
-#, c-format
-msgid "File daemon at \"%s:%d\" rejected Hello command\n"
-msgstr ""
-
-#: src/dird/authenticate.c:302
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Len=%d\n"
-msgstr ""
-
-#: src/dird/authenticate.c:309
-#, c-format
-msgid "UA Hello from %s:%s:%d is invalid. Got: %s\n"
-msgstr ""
-
-#: src/dird/authenticate.c:377
-msgid ""
-"Authorization problem: Remote client did not advertise required TLS "
-"support.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:385
-msgid "Authorization problem: Remote client requires TLS.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:400 src/filed/authenticate.c:169
-#: src/filed/authenticate.c:288
-msgid "TLS negotiation failed.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:414
-#, c-format
-msgid "Unable to authenticate console \"%s\" at %s:%s:%d.\n"
-msgstr ""
-
-#: src/dird/authenticate.c:419
-#, c-format
-msgid "1000 OK: %s Version: %s (%s)\n"
-msgstr ""
-
-#: src/dird/catreq.c:128 src/dird/catreq.c:355
-#, c-format
-msgid "1990 Invalid Catalog Request: %s"
-msgstr ""
-
-#: src/dird/catreq.c:129
-#, c-format
-msgid "Invalid Catalog request; DB not open: %s"
-msgstr ""
-
-#: src/dird/catreq.c:154
-msgid "1901 No Media.\n"
-msgstr ""
-
-#: src/dird/catreq.c:182
-msgid "not in Pool"
-msgstr ""
-
-#: src/dird/catreq.c:184
-msgid "not correct MediaType"
-msgstr ""
-
-#: src/dird/catreq.c:194
-msgid "is not Enabled"
-msgstr ""
-
-#: src/dird/catreq.c:203
-#, c-format
-msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
-msgstr ""
-
-#: src/dird/catreq.c:208
-#, c-format
-msgid "1997 Volume \"%s\" not in catalog.\n"
-msgstr ""
-
-#: src/dird/catreq.c:230
-#, c-format
-msgid "Unable to get Media record for Volume %s: ERR=%s\n"
-msgstr ""
-
-#: src/dird/catreq.c:232
-#, c-format
-msgid "1991 Catalog Request for vol=%s failed: %s"
-msgstr ""
-
-#: 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:262
-#, c-format
-msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
-msgstr ""
-
-#: src/dird/catreq.c:318
-#, c-format
-msgid "Catalog error updating Media record. %s"
-msgstr ""
-
-#: src/dird/catreq.c:320
-msgid "1993 Update Media error\n"
-msgstr ""
-
-#: src/dird/catreq.c:344
-#, c-format
-msgid "Catalog error creating JobMedia record. %s"
-msgstr ""
-
-#: src/dird/catreq.c:346
-msgid "1992 Create JobMedia error\n"
-msgstr ""
-
-#: 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"
-msgstr ""
-
-#: src/dird/catreq.c:544
-#, c-format
-msgid "%s not same File=%d as attributes=%d\n"
-msgstr ""
-
-#: src/dird/catreq.c:571
-#, c-format
-msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
-msgstr ""
-
-#: src/dird/catreq.c:586
-#, c-format
-msgid "attribute create error. %s"
-msgstr ""
-
-#: src/dird/catreq.c:592
-#, c-format
-msgid "Catalog error updating file digest. %s"
-msgstr "Помилка під час оновлення відбитку файлу. %s"
-
-#: src/dird/catreq.c:615
-#, c-format
-msgid "1994 Invalid Catalog Update: %s"
-msgstr "1994 Помилка оновлення Каталогу: %s"
-
-#: src/dird/catreq.c:616
-#, c-format
-msgid "Invalid Catalog Update; DB not open: %s"
-msgstr "Помилка оновлення Каталогу: БД не відкрита: %s"
-
-#: 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:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
-msgid "Storage daemon"
-msgstr "Зберігач"
-
-#: src/dird/msgchan.c:205
-#, c-format
-msgid "Storage daemon rejected Job command: %s\n"
-msgstr ""
-
-#: src/dird/msgchan.c:213
-#, c-format
-msgid "<stored: bad response to Job command: %s\n"
-msgstr ""
-
-#: 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"
-"     Storage daemon didn't accept Device \"%s\" because:\n"
-"     %s"
-msgstr ""
-
-#: src/dird/msgchan.c:322
-#, c-format
-msgid ""
-"\n"
-"     Storage daemon didn't accept Device \"%s\" command.\n"
-msgstr ""
-
-#: 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
-msgid "Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"
-msgstr "Споглядач: назва=%s FDtimeout=%s SDtimeout=%s\n"
-
-#: src/tray-monitor/tray_conf.c:183
-#: src/qt-console/tray-monitor/tray_conf.cpp:183
-#, c-format
-msgid "Director: name=%s address=%s FDport=%d\n"
-msgstr "Керівник: назва=%s address=%s FDport=%d\n"
-
-#: src/tray-monitor/tray_conf.c:187
-#: src/qt-console/tray-monitor/tray_conf.cpp:187
-#, c-format
-msgid "Client: name=%s address=%s FDport=%d\n"
-msgstr "Клієнт: назва=%s address=%s FDport=%d\n"
-
-#: src/tray-monitor/tray_conf.c:191
-#: src/qt-console/tray-monitor/tray_conf.cpp:191
-#, c-format
-msgid "Storage: name=%s address=%s SDport=%d\n"
-msgstr "Сховище: назва=%s address=%s SDport=%d\n"
-
-#: src/tray-monitor/tray_conf.c:195
-#: src/qt-console/tray-monitor/tray_conf.cpp:195
-#: src/qt-console/bat_conf.cpp:157
-#, fuzzy, c-format
-msgid "ConsoleFont: name=%s font face=%s\n"
-msgstr "Консоль: назва=%s rcfile=%s histfile=%s\n"
-
-#: src/tray-monitor/tray-monitor.c:114
-#, c-format
-msgid ""
-"Written by Nicolas Boichat (2004)\n"
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-"Автор Nicolas Boichat (2004)\n"
-"\n"
-"Версія: %s (%s) %s %s %s\n"
-"\n"
-"Використання: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     задати конфігураційний файл <file>\n"
-"       -d <nn>       встановити рівень відлагоджування у <nn>\n"
-"       -dt           виводити часову мітку у даних відлагоджування\n"
-"       -t            перевірка - прогитати конфігурацію і завершити\n"
-"       -?            показати це повідомлення.\n"
-"\n"
-
-#: src/tray-monitor/tray-monitor.c:270
-#: src/qt-console/tray-monitor/tray-monitor.cpp:216
-#, c-format
-msgid ""
-"Error: %d Monitor resources defined in %s. You must define one and only one "
-"Monitor resource.\n"
-msgstr ""
-"Помилка: %d ресурсів Спостерігача визначено у %s. Ви повинні визначити одині "
-"тільки один ресурс Спостерігача.\n"
-
-#: src/tray-monitor/tray-monitor.c:301
-#: src/qt-console/tray-monitor/tray-monitor.cpp:248
-#, c-format
-msgid ""
-"No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director "
-"Daemon :-(\n"
-msgstr ""
-"У %s не визначено жодного ресурсу Клієнту, Зберігача або Керівника\n"
-"Без цього я не знаю як отримати статус Зберігача, Збирача або Керівника\n"
-
-#: src/tray-monitor/tray-monitor.c:323
-#: src/qt-console/tray-monitor/tray-monitor.cpp:263
-#, c-format
-msgid ""
-"Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 "
-"minutes (read value: %d).\n"
-msgstr ""
-"Задано поганий інтервал оновлення у %s\n"
-"Це значення повинно бути не меньше 1 секунди та не більше 10 хвилин "
-"(теперішнє значення: %d).\n"
-
-#: src/tray-monitor/tray-monitor.c:330
-msgid "Bacula daemon status monitor"
-msgstr "Монітор статусу демонів Bacula"
-
-#: src/tray-monitor/tray-monitor.c:339
-msgid "Open status window..."
-msgstr "Відкрити вікно статусу"
-
-#: src/tray-monitor/tray-monitor.c:345
-msgid "Exit"
-msgstr "Закінчити"
-
-#: src/tray-monitor/tray-monitor.c:357
-msgid "Bacula tray monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:382
-msgid " (DIR)"
-msgstr "Керівник"
-
-#: src/tray-monitor/tray-monitor.c:386
-msgid " (FD)"
-msgstr "Збирач"
-
-#: src/tray-monitor/tray-monitor.c:390
-msgid " (SD)"
-msgstr "(Зберігач)"
-
-#: src/tray-monitor/tray-monitor.c:403
-msgid "Unknown status."
-msgstr "Невідомий статус"
-
-#: src/tray-monitor/tray-monitor.c:477
-msgid "Refresh interval in seconds: "
-msgstr "Інтервал оновлення у секундах"
-
-#: src/tray-monitor/tray-monitor.c:485
-msgid "Refresh now"
-msgstr "Оновити зараз"
-
-#: src/tray-monitor/tray-monitor.c:489
-msgid "About"
-msgstr "Про..."
-
-#: src/tray-monitor/tray-monitor.c:493
-msgid "Close"
-msgstr "Зачинити"
-
-#: src/tray-monitor/tray-monitor.c:513
-#, c-format
-msgid "Disconnecting from Director %s:%d\n"
-msgstr "Від'єднуюсь від Керівника %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:516
-#, c-format
-msgid "Disconnecting from Client %s:%d\n"
-msgstr "Від'єднуюсь від Клієнта %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:519
-#, c-format
-msgid "Disconnecting from Storage %s:%d\n"
-msgstr "Від'єднуюсь від Зберігача %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:560 src/tray-monitor/tray-monitor.c:571
-msgid "Bacula Tray Monitor"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:562 src/tray-monitor/tray-monitor.c:573
-msgid "Written by Nicolas Boichat\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:563 src/tray-monitor/tray-monitor.c:574
-msgid "Version"
-msgstr "Версія"
-
-#: src/tray-monitor/tray-monitor.c:656
-#: src/qt-console/tray-monitor/tray-monitor.cpp:331
-#, c-format
-msgid "Error, currentitem is not a Client or a Storage..\n"
-msgstr "Помилка. Поточний пункт не є Клієнтом або Зберігачем.\n"
-
-#: src/tray-monitor/tray-monitor.c:730
-#, c-format
-msgid ""
-"Current job: %s\n"
-"Last job: %s"
-msgstr ""
-"Поточна задача: %s\n"
-"Остання задача: %s"
-
-#: src/tray-monitor/tray-monitor.c:742
-#, c-format
-msgid " (%d errors)"
-msgstr " (%d помилок)"
-
-#: src/tray-monitor/tray-monitor.c:745
-#, c-format
-msgid " (%d error)"
-msgstr " (%d помилка)"
-
-#: src/tray-monitor/tray-monitor.c:783
-msgid "No current job."
-msgstr "Задачі відсутні"
-
-#: src/tray-monitor/tray-monitor.c:786
-msgid "No last job."
-msgstr "Останні задачі відсутні"
-
-#: src/tray-monitor/tray-monitor.c:794
-msgid "Job status: Created"
-msgstr "Статус задачі: Створена"
-
-#: src/tray-monitor/tray-monitor.c:799
-msgid "Job status: Running"
-msgstr "Статус задачі: Працює"
-
-#: src/tray-monitor/tray-monitor.c:803
-msgid "Job status: Blocked"
-msgstr "Статус задачі: Заблокована"
-
-#: src/tray-monitor/tray-monitor.c:808
-msgid "Job status: Terminated"
-msgstr "Статус задачі: Виконана"
-
-#: src/tray-monitor/tray-monitor.c:813
-msgid "Job status: Terminated in error"
-msgstr "Статус задачі: Виконана із помилками"
-
-#: src/tray-monitor/tray-monitor.c:819
-msgid "Job status: Error"
-msgstr "Статус задачі: Помилка"
-
-#: src/tray-monitor/tray-monitor.c:823
-msgid "Job status: Fatal error"
-msgstr "Статус задачі: Ватальна помилка"
-
-#: src/tray-monitor/tray-monitor.c:828
-msgid "Job status: Verify differences"
-msgstr "Статус задачі: Паревірка різниць"
-
-#: src/tray-monitor/tray-monitor.c:833
-msgid "Job status: Canceled"
-msgstr "Статус задачі: Відмінена"
-
-#: src/tray-monitor/tray-monitor.c:838
-msgid "Job status: Waiting on File daemon"
-msgstr "Статус задачі: Очікування Збирача"
-
-#: src/tray-monitor/tray-monitor.c:843
-msgid "Job status: Waiting on the Storage daemon"
-msgstr "Статус задачі: Очікування Зберігача"
-
-#: src/tray-monitor/tray-monitor.c:848
-msgid "Job status: Waiting for new media"
-msgstr "Статус задачі: Очікування нового носія"
-
-#: src/tray-monitor/tray-monitor.c:853
-msgid "Job status: Waiting for Mount"
-msgstr "Статус задачі: Очікування монтування"
-
-#: src/tray-monitor/tray-monitor.c:858
-msgid "Job status: Waiting for storage resource"
-msgstr "Статус задачі: Очікування ресурсу зберігання"
-
-#: src/tray-monitor/tray-monitor.c:863
-msgid "Job status: Waiting for job resource"
-msgstr "Статус задачі: Очікування ресурсу задачі"
-
-#: src/tray-monitor/tray-monitor.c:868
-msgid "Job status: Waiting for Client resource"
-msgstr "Статус задачі: Очікування ресурсу Слієнту"
-
-#: src/tray-monitor/tray-monitor.c:873
-msgid "Job status: Waiting for maximum jobs"
-msgstr "Статус задачі: Очікування кількості задач"
-
-#: src/tray-monitor/tray-monitor.c:878
-msgid "Job status: Waiting for start time"
-msgstr "Статус задачі: Очікування часу початку"
-
-#: src/tray-monitor/tray-monitor.c:883
-msgid "Job status: Waiting for higher priority jobs to finish"
-msgstr "Статус задачі: Очікування завершення пріоритетніших задач"
-
-#: src/tray-monitor/tray-monitor.c:888
-#, c-format
-msgid "Unknown job status %c."
-msgstr "Невідомий статус задачі %c. "
-
-#: src/tray-monitor/tray-monitor.c:889
-#, c-format
-msgid "Job status: Unknown(%c)"
-msgstr "Статус задачі: Невідомий(%c)"
-
-#: src/tray-monitor/tray-monitor.c:896
-#, c-format
-msgid "Bad scan : '%s' %d\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:936 src/console/console.c:1143
-#, c-format
-msgid "Connecting to Director %s:%d\n"
-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: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:173
-msgid "Director daemon"
-msgstr "Керівник"
-
-#: src/tray-monitor/tray-monitor.c:943
-#, c-format
-msgid "Connecting to Client %s:%d\n"
-msgstr "Приєднуюсь до Клієнта %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:944
-#: src/qt-console/tray-monitor/tray-monitor.cpp:366
-#, c-format
-msgid "Connecting to Client %s:%d"
-msgstr "Приєднуюсь до Клієнта %s:%d"
-
-#: src/tray-monitor/tray-monitor.c:945
-#: src/qt-console/tray-monitor/tray-monitor.cpp:368
-msgid "File daemon"
-msgstr "Збирач"
-
-#: src/tray-monitor/tray-monitor.c:950
-#, c-format
-msgid "Connecting to Storage %s:%d\n"
-msgstr "Приєднуюсь до Зберігача %s:%d\n"
-
-#: src/tray-monitor/tray-monitor.c:951
-#: src/qt-console/tray-monitor/tray-monitor.cpp:373
-#, c-format
-msgid "Connecting to Storage %s:%d"
-msgstr "Приєднуюсь до Зберігача %s:%d"
-
-#: src/tray-monitor/tray-monitor.c:956 src/tray-monitor/tray-monitor.c:994
-#: src/qt-console/tray-monitor/tray-monitor.cpp:379
-#: src/qt-console/tray-monitor/tray-monitor.cpp:409
-#, c-format
-msgid "Error, currentitem is not a Client, a Storage or a Director..\n"
-msgstr "Помилка. Поточний пункт не є Клієнтом або Зберігачем.\n"
-
-#: src/tray-monitor/tray-monitor.c:962
-msgid "Cannot connect to daemon.\n"
-msgstr "Не можу приєднатись до демону.\n"
-
-#: src/tray-monitor/tray-monitor.c:963
-#: src/qt-console/tray-monitor/tray-monitor.cpp:384
-msgid "Cannot connect to daemon."
-msgstr "Не можу приєднатись до демону."
-
-#: src/tray-monitor/tray-monitor.c:975
-#: src/qt-console/tray-monitor/tray-monitor.cpp:393
-#, c-format
-msgid "Authentication error : %s"
-msgstr "Помилка автентифікації : %s"
-
-#: src/tray-monitor/tray-monitor.c:982
-msgid "Opened connection with Director daemon.\n"
-msgstr "Відкриті з'єднання із Керівником.\n"
-
-#: src/tray-monitor/tray-monitor.c:983
-#: src/qt-console/tray-monitor/tray-monitor.cpp:400
-msgid "Opened connection with Director daemon."
-msgstr "Відкриті з'єднання із Керівником."
-
-#: src/tray-monitor/tray-monitor.c:986
-msgid "Opened connection with File daemon.\n"
-msgstr "Відкриті з'єднання із Збирачем.\n"
-
-#: src/tray-monitor/tray-monitor.c:987
-#: src/qt-console/tray-monitor/tray-monitor.cpp:403
-msgid "Opened connection with File daemon."
-msgstr "Відкриті з'єднання із Збирачем."
-
-#: src/tray-monitor/tray-monitor.c:990
-msgid "Opened connection with Storage daemon.\n"
-msgstr "Відкриті з'єднання із Зберігачем.\n"
-
-#: src/tray-monitor/tray-monitor.c:991
-#: src/qt-console/tray-monitor/tray-monitor.cpp:406
-msgid "Opened connection with Storage daemon."
-msgstr "Відкриті з'єднання із Зберігачем."
-
-#: src/tray-monitor/tray-monitor.c:1028
-msgid "<< Error: BNET_SUB_PROMPT signal received. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1033 src/wx-console/console_thread.cpp:494
-msgid "<< Heartbeat signal received, answered. >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1037
-#, c-format
-msgid "<< Unexpected signal received : %s >>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1042
-msgid "<ERROR>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1046
-#: src/qt-console/tray-monitor/tray-monitor.cpp:457
-msgid "Error : BNET_HARDEOF or BNET_ERROR"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1052
-msgid "<STOP>\n"
-msgstr ""
-
-#: src/tray-monitor/tray-monitor.c:1056
-#: src/qt-console/tray-monitor/tray-monitor.cpp:466
-msgid "Error : Connection closed."
-msgstr "Помилка : З'єднання завершено"
-
-#: src/tray-monitor/authenticate.c:88
-#: src/qt-console/tray-monitor/authenticate.cpp:87
-#, fuzzy
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"Please see "
-msgstr ""
-"Проблеми під час авторизації Керівником.\n"
-"Швидше за все, невірні паролі.\n"
-"Для отримання допомоги, будь ласка, перегляньте http://www.bacula.org/en/rel-"
-"manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000.\n"
-
-#: src/tray-monitor/authenticate.c:97 src/console/authenticate.c:152
-#: src/qt-console/tray-monitor/authenticate.cpp:96
-#, c-format
-msgid "Bad response to Hello command: ERR=%s\n"
-msgstr "Погана відповідь на команду Hello: ERR=%s\n"
-
-#: src/tray-monitor/authenticate.c:104 src/wx-console/authenticate.c:157
-#: src/console/authenticate.c:159
-#: src/qt-console/tray-monitor/authenticate.cpp:103
-msgid "Director rejected Hello command\n"
-msgstr "Керівник не прийняв команду Hello\n"
-
-#: src/tray-monitor/authenticate.c:138
-#: src/qt-console/tray-monitor/authenticate.cpp:137
-msgid ""
-"Director and Storage daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:145
-#: src/qt-console/tray-monitor/authenticate.cpp:144
-#, c-format
-msgid "bdird<stored: bad response to Hello command: ERR=%s\n"
-msgstr ""
-
-#: src/tray-monitor/authenticate.c:178
-#: src/qt-console/tray-monitor/authenticate.cpp:177
-#, c-format
-msgid "Error sending Hello to File daemon. ERR=%s\n"
-msgstr "Помилка надсилання Hello до Збирача. ERR=%s\n"
-
-#: src/tray-monitor/authenticate.c:184
-#: src/qt-console/tray-monitor/authenticate.cpp:183
-msgid ""
-"Director and File daemon passwords or names not the same.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/reserve.c:87
-#, c-format
-msgid "Unable to initialize reservation lock. ERR=%s\n"
-msgstr ""
-
-#: src/stored/reserve.c:156
-#, c-format
-msgid "Hey! num_writers=%d!!!!\n"
-msgstr ""
-
-#: src/stored/reserve.c:256
-msgid "3939 Could not get dcr\n"
-msgstr ""
-
-#: src/stored/reserve.c:364
-#, c-format
-msgid "Device reservation failed for JobId=%d: %s\n"
-msgstr ""
-
-#: src/stored/reserve.c:373
-#, c-format
-msgid "Failed command: %s\n"
-msgstr ""
-
-#: src/stored/reserve.c:632 src/stored/dircmd.c:633
-#, c-format
-msgid ""
-"\n"
-"     Device \"%s\" in changer \"%s\" requested by DIR could not be opened or "
-"does not exist.\n"
-msgstr ""
-
-#: 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:652
-#, c-format
-msgid "3926 Could not get dcr for device: %s\n"
-msgstr ""
-
-#: 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:788
-#, c-format
-msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
-msgstr ""
-
-#: src/stored/reserve.c:840
-#, c-format
-msgid "3603 JobId=%u device %s is busy reading.\n"
-msgstr ""
-
-#: 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: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:914
-#, c-format
-msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: src/stored/reserve.c:926
-#, c-format
-msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
-msgstr ""
-
-#: 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:987
-#, c-format
-msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
-msgstr ""
-
-#: 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:1064
-#, c-format
-msgid "Logic error!!!! JobId=%u Should not get here.\n"
-msgstr ""
-
-#: 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:1068
-msgid "Logic error!!!! Should not get here.\n"
-msgstr ""
-
-#: src/stored/reserve.c:1071
-#, c-format
-msgid "3911 JobId=%u failed reserve drive %s.\n"
-msgstr ""
-
-#: src/stored/bls.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bls [options] <device-name>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -j              list jobs\n"
-"       -k              list blocks\n"
-"    (no j or k option) list saved files\n"
-"       -L              dump label\n"
-"       -p              proceed inspite of errors\n"
-"       -v              be verbose\n"
-"       -V              specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bls.c:149 src/stored/bextract.c:146
-#, c-format
-msgid "Could not open exclude file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:164 src/stored/bextract.c:161
-#, c-format
-msgid "Could not open include file: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/bls.c:211
-msgid "No archive name specified\n"
-msgstr ""
-
-#: src/stored/bls.c:247
-#, c-format
-msgid ""
-"\n"
-"Warning, this Volume is a continuation of Volume %s\n"
-msgstr ""
-
-#: src/stored/bls.c:290
-#, c-format
-msgid "Got EOM at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:301
-#, c-format
-msgid "Mounted Volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/bls.c:303
-#, c-format
-msgid "End of file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/bls.c:327
-#, c-format
-msgid ""
-"File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm="
-"%s rlen=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:336
-#, c-format
-msgid "Block: %d size=%d\n"
-msgstr ""
-
-#: src/stored/bls.c:386 src/stored/bextract.c:328 src/stored/bscan.c:688
-msgid "Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bls.c:388
-msgid "Attrib unpack error!\n"
-msgstr ""
-
-#: src/stored/bls.c:399
-#, c-format
-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:330
-msgid "Fresh Volume Label"
-msgstr ""
-
-#: 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:1028 src/stored/bcopy.c:337
-msgid "Begin Job Session"
-msgstr ""
-
-#: 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:346
-msgid "End of Medium"
-msgstr ""
-
-#: src/stored/bls.c:444
-msgid "End of Physical Medium"
-msgstr ""
-
-#: src/stored/bls.c:447
-msgid "Start of object"
-msgstr ""
-
-#: src/stored/bls.c:450
-msgid "End of object"
-msgstr ""
-
-#: 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: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: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 ""
-
-#: src/stored/dircmd.c:155
-#, c-format
-msgid "Connection request from %s failed.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:166
-#, c-format
-msgid "Invalid connection from %s. Len=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
-msgid "Unable to authenticate Director\n"
-msgstr ""
-
-#: src/stored/dircmd.c:299
-#, c-format
-msgid "3991 Bad setdebug command: %s\n"
-msgstr ""
-
-#: 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:358
-#, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
-msgstr ""
-
-#: 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:442
-#, c-format
-msgid "3903 Error scanning label command: %s\n"
-msgstr ""
-
-#: 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:509
-#, c-format
-msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:516
-msgid "3921 Wrong volume mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:520
-msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:528
-#, c-format
-msgid "3912 Failed to label Volume: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:538
-#, c-format
-msgid "3914 Failed to label Volume (no media): ERR=%s\n"
-msgstr ""
-
-#: 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:578
-#, c-format
-msgid "3001 Mounted Volume: %s\n"
-msgstr ""
-
-#: 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:696
-msgid "Specified slot ignored. "
-msgstr ""
-
-#: 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:732 src/stored/dircmd.c:761
-#, c-format
-msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: 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:745
-#, c-format
-msgid "3001 Device \"%s\" is doing acquire.\n"
-msgstr ""
-
-#: 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:776
-#, c-format
-msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/dircmd.c:788
-#, c-format
-msgid "3002 Device \"%s\" is mounted.\n"
-msgstr ""
-
-#: 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:793
-#, c-format
-msgid "3906 File device \"%s\" is always mounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:802
-#, c-format
-msgid "3930 Device \"%s\" is being released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:806
-#, fuzzy, c-format
-msgid "3905 Unknown wait state %d\n"
-msgstr "Невідомий статус задачі %c. "
-
-#: src/stored/dircmd.c:816
-#, c-format
-msgid "3909 Error scanning mount command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
-#, c-format
-msgid "3002 Device \"%s\" unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:851
-#, c-format
-msgid "3901 Device \"%s\" is already unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:866
-#, c-format
-msgid "3001 Device \"%s\" unmounted.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:871
-#, c-format
-msgid "3902 Device \"%s\" is busy in acquire.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:909
-#, c-format
-msgid "3907 Error scanning unmount command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:937
-msgid "3916 Error scanning action_on_purge command\n"
-msgstr ""
-
-#: src/stored/dircmd.c:980
-#, c-format
-msgid "3921 Device \"%s\" already released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:987
-#, c-format
-msgid "3922 Device \"%s\" waiting for sysop.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:993
-#, c-format
-msgid "3922 Device \"%s\" waiting for mount.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:997
-#, c-format
-msgid "3923 Device \"%s\" is busy in acquire.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1001
-#, c-format
-msgid "3914 Device \"%s\" is being labeled.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1009
-#, c-format
-msgid "3022 Device \"%s\" released.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1020
-#, c-format
-msgid "3927 Error scanning release command: %s\n"
-msgstr ""
-
-#: 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:1062
-msgid "Error parsing bootstrap file.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1124
-#, c-format
-msgid "3998 Device \"%s\" is not an autochanger.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1141
-#, c-format
-msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1183
-#, c-format
-msgid "3909 Error scanning readlabel command: %s\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1211
-#, c-format
-msgid "3001 Volume=%s Slot=%d\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1243
-#, c-format
-msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
-msgstr ""
-
-#: 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:1251
-#, c-format
-msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1255
-#, c-format
-msgid "3934 Device \"%s\" is being initialized.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1259
-#, c-format
-msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1263
-#, c-format
-msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:1268
-#, c-format
-msgid "3936 Device \"%s\" is busy reading.\n"
-msgstr ""
-
-#: 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:122 src/stored/parse_bsr.c:126
-#, c-format
-msgid ""
-"Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n"
-"%s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:148
-#, c-format
-msgid "Cannot open bootstrap file %s: %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:279
-#, c-format
-msgid "MediaType %s in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:311
-#, c-format
-msgid "Device \"%s\" in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:484
-#, c-format
-msgid "REGEX '%s' compile error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:494
-msgid "JobType not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:502
-msgid "JobLevel not yet implemented\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:719
-#, c-format
-msgid "Slot %d in bsr at inappropriate place.\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:743
-#, c-format
-msgid "VolFile     : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:751
-#, c-format
-msgid "VolBlock    : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:759
-#, c-format
-msgid "VolAddr    : %llu-%llu\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:768
-#, c-format
-msgid "FileIndex   : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:770
-#, c-format
-msgid "FileIndex   : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:780
-#, c-format
-msgid "JobId       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:782
-#, c-format
-msgid "JobId       : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:792
-#, c-format
-msgid "SessId      : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:794
-#, c-format
-msgid "SessId      : %u-%u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:803
-#, c-format
-msgid "VolumeName  : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:804
-#, c-format
-msgid "  MediaType : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:805
-#, c-format
-msgid "  Device    : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:806
-#, c-format
-msgid "  Slot      : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:815
-#, c-format
-msgid "Client      : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:823
-#, c-format
-msgid "Job          : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:831
-#, c-format
-msgid "SessTime    : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:842
-msgid "BSR is NULL\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:846
-#, c-format
-msgid "Next        : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:847
-#, c-format
-msgid "Root bsr    : 0x%x\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:859
-#, c-format
-msgid "count       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:860
-#, c-format
-msgid "found       : %u\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:863
-#, c-format
-msgid "done        : %s\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:864
-#, c-format
-msgid "positioning : %d\n"
-msgstr ""
-
-#: src/stored/parse_bsr.c:865
-#, c-format
-msgid "fast_reject : %d\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:96
-#, c-format
-msgid "Read error on device %s in ANSI label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:106
-msgid "Insane! End of tape while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:132
-msgid "No VOL1 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:155
-#, c-format
-msgid "Wanted ANSI Volume \"%s\" got \"%s\"\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:166
-msgid "No HDR1 label while reading ANSI label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:172
-#, c-format
-msgid "ANSI/IBM Volume \"%s\" does not belong to Bacula.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:184
-msgid "No HDR2 label while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:199
-msgid "Unknown or bad ANSI/IBM label record.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:207
-msgid "Too many records in while reading ANSI/IBM label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:307
-#, c-format
-msgid "ANSI Volume label name \"%s\" longer than 6 chars.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:333
-#, c-format
-msgid "Could not write ANSI VOL1 label. Wanted size=%d got=%d ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:371 src/stored/ansi_label.c:400
-#, c-format
-msgid "Could not write ANSI HDR1 label. ERR=%s\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:376 src/stored/ansi_label.c:407
-msgid "Could not write ANSI HDR1 label.\n"
-msgstr ""
-
-#: src/stored/ansi_label.c:412
-#, c-format
-msgid "Error writing EOF to tape. ERR=%s"
-msgstr ""
-
-#: src/stored/ansi_label.c:417
-msgid "write_ansi_ibm_label called for non-ANSI/IBM type\n"
-msgstr ""
-
-#: src/stored/append.c:68
-msgid "DCR is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:73
-msgid "DEVICE is NULL!!!\n"
-msgstr ""
-
-#: src/stored/append.c:83
-msgid "Unable to set network buffer size.\n"
-msgstr ""
-
-#: 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:110 src/stored/btape.c:2235
-#, c-format
-msgid "Write session label failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:122
-#, c-format
-msgid "Network send error to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:159
-#, c-format
-msgid "Error reading data header from FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/append.c:167
-#, c-format
-msgid "Malformed data header from FD: %s\n"
-msgstr ""
-
-#: src/stored/append.c:187
-#, c-format
-msgid "FI=%d from FD not positive or sequential=%d\n"
-msgstr ""
-
-#: src/stored/append.c:235
-#, c-format
-msgid "Network error reading from FD. ERR=%s\n"
-msgstr ""
-
-#: 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: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:279 src/stored/mac.c:128
-msgid "Set ok=FALSE after write_block_to_device.\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/vol_mgr.c:93
-#, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:93
-#, c-format
-msgid "Couldn't rewind device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:110 src/stored/label.c:202
-#, c-format
-msgid "Wrong Volume mounted on device %s: Wanted %s have %s\n"
-msgstr ""
-
-#: src/stored/label.c:113 src/stored/label.c:190
-#, c-format
-msgid "Too many tries: %s"
-msgstr ""
-
-#: src/stored/label.c:130
-#, c-format
-msgid ""
-"Requested Volume \"%s\" on %s is not a Bacula labeled Volume, because: ERR=%s"
-msgstr ""
-
-#: src/stored/label.c:135
-msgid "Could not read Volume label from block.\n"
-msgstr ""
-
-#: src/stored/label.c:138
-#, c-format
-msgid "Could not unserialize Volume label: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:143
-#, c-format
-msgid "Volume Header Id bad: %s\n"
-msgstr ""
-
-#: src/stored/label.c:175
-#, c-format
-msgid "Volume on %s has wrong Bacula version. Wanted %d got %d\n"
-msgstr ""
-
-#: src/stored/label.c:186
-#, c-format
-msgid "Volume on %s has bad Bacula label type: %x\n"
-msgstr ""
-
-#: 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:277
-#, c-format
-msgid "Cannot write Volume label to block for device %s\n"
-msgstr ""
-
-#: 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:451
-#, c-format
-msgid "Rewind error on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:458
-#, c-format
-msgid "Truncate error on device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:487
-#, c-format
-msgid "Unable to write device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/label.c:518
-#, c-format
-msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
-msgstr ""
-
-#: src/stored/label.c:521
-#, c-format
-msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
-msgstr ""
-
-#: src/stored/label.c:721
-#, c-format
-msgid "Bad Volume session label = %d\n"
-msgstr ""
-
-#: src/stored/label.c:776
-#, c-format
-msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
-msgstr ""
-
-#: src/stored/label.c:903
-#, c-format
-msgid "Unknown %d"
-msgstr ""
-
-#: src/stored/label.c:907
-#, c-format
-msgid ""
-"\n"
-"Volume Label:\n"
-"Id                : %sVerNo             : %d\n"
-"VolName           : %s\n"
-"PrevVolName       : %s\n"
-"VolFile           : %d\n"
-"LabelType         : %s\n"
-"LabelSize         : %d\n"
-"PoolName          : %s\n"
-"MediaType         : %s\n"
-"PoolType          : %s\n"
-"HostName          : %s\n"
-msgstr ""
-
-#: src/stored/label.c:929
-#, c-format
-msgid "Date label written: %s\n"
-msgstr ""
-
-#: src/stored/label.c:935
-#, c-format
-msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:955
-#, c-format
-msgid ""
-"\n"
-"%s Record:\n"
-"JobId             : %d\n"
-"VerNum            : %d\n"
-"PoolName          : %s\n"
-"PoolType          : %s\n"
-"JobName           : %s\n"
-"ClientName        : %s\n"
-msgstr ""
-
-#: src/stored/label.c:968
-#, c-format
-msgid ""
-"Job (unique name) : %s\n"
-"FileSet           : %s\n"
-"JobType           : %c\n"
-"JobLevel          : %c\n"
-msgstr ""
-
-#: src/stored/label.c:977
-#, c-format
-msgid ""
-"JobFiles          : %s\n"
-"JobBytes          : %s\n"
-"StartBlock        : %s\n"
-"EndBlock          : %s\n"
-"StartFile         : %s\n"
-"EndFile           : %s\n"
-"JobErrors         : %s\n"
-"JobStatus         : %c\n"
-msgstr ""
-
-#: src/stored/label.c:998
-#, c-format
-msgid "Date written      : %s\n"
-msgstr ""
-
-#: src/stored/label.c:1003
-#, c-format
-msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
-msgstr ""
-
-#: src/stored/label.c:1022
-msgid "Fresh Volume"
-msgstr ""
-
-#: src/stored/label.c:1025
-msgid "Volume"
-msgstr ""
-
-#: src/stored/label.c:1034 src/stored/read_record.c:428
-msgid "End of Media"
-msgstr ""
-
-#: src/stored/label.c:1037
-msgid "End of Tape"
-msgstr ""
-
-#: 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:1062
-msgid "End of physical tape.\n"
-msgstr ""
-
-#: 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:1079
-#, c-format
-msgid "   Job=%s Date=%s Level=%c Type=%c\n"
-msgstr ""
-
-#: src/stored/label.c:1088
-#, c-format
-msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
-msgstr ""
-
-#: src/stored/status.c:99
-msgid "Used Volume status:\n"
-msgstr ""
-
-#: src/stored/status.c:117
-msgid ""
-"\n"
-"SD Resources:\n"
-msgstr ""
-
-#: src/stored/status.c:153
-msgid ""
-"\n"
-"Device status:\n"
-msgstr ""
-
-#: src/stored/status.c:157
-#, c-format
-msgid "Autochanger \"%s\" with devices:\n"
-msgstr ""
-
-#: src/stored/status.c:177
-#, c-format
-msgid ""
-"\n"
-"Device %s is %s:\n"
-"    Volume:      %s\n"
-"    Pool:        %s\n"
-"    Media type:  %s\n"
-msgstr ""
-
-#: 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 ""
-"\n"
-"Device %s open but no Bacula volume is currently mounted.\n"
-msgstr ""
-
-#: src/stored/status.c:199
-#, c-format
-msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:214
-#, c-format
-msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:220
-#, c-format
-msgid "    Positioned at File=%s Block=%s\n"
-msgstr ""
-
-#: src/stored/status.c:227
-#, c-format
-msgid ""
-"\n"
-"Device %s is not open.\n"
-msgstr ""
-
-#: src/stored/status.c:231
-#, c-format
-msgid ""
-"\n"
-"Device \"%s\" is not open or does not exist.\n"
-msgstr ""
-
-#: src/stored/status.c:255
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
-msgstr ""
-
-#: src/stored/status.c:293
-msgid ""
-"No DEVICE structure.\n"
-"\n"
-msgstr ""
-
-#: src/stored/status.c:299
-msgid "    Device is BLOCKED. User unmounted.\n"
-msgstr ""
-
-#: src/stored/status.c:303
-msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
-msgstr ""
-
-#: src/stored/status.c:313
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting for mount of volume \"%s\",\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:322
-#, c-format
-msgid ""
-"    Device is BLOCKED waiting to create a volume for:\n"
-"       Pool:        %s\n"
-"       Media type:  %s\n"
-msgstr ""
-
-#: src/stored/status.c:333
-msgid "    Device is BLOCKED waiting for media.\n"
-msgstr ""
-
-#: src/stored/status.c:339
-msgid "    Device is being initialized.\n"
-msgstr ""
-
-#: src/stored/status.c:343
-msgid "    Device is blocked labeling a Volume.\n"
-msgstr ""
-
-#: src/stored/status.c:352
-#, c-format
-msgid "    Slot %d %s loaded in drive %d.\n"
-msgstr ""
-
-#: src/stored/status.c:356
-#, c-format
-msgid "    Drive %d is not loaded.\n"
-msgstr ""
-
-#: src/stored/status.c:371 src/stored/btape.c:688
-#, c-format
-msgid "Configured device capabilities:\n"
-msgstr ""
-
-#: src/stored/status.c:389
-msgid "Device state:\n"
-msgstr ""
-
-#: src/stored/status.c:405
-#, c-format
-msgid "  num_writers=%d reserves=%d block=%d\n"
-msgstr ""
-
-#: src/stored/status.c:409
-msgid "Attached Jobs: "
-msgstr ""
-
-#: src/stored/status.c:427 src/stored/btape.c:720
-#, c-format
-msgid "Device parameters:\n"
-msgstr ""
-
-#: src/stored/status.c:429
-#, c-format
-msgid "  Archive name: %s Device name: %s\n"
-msgstr ""
-
-#: src/stored/status.c:432
-#, c-format
-msgid "  File=%u block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:434
-#, c-format
-msgid "  Min block=%u Max block=%u\n"
-msgstr ""
-
-#: src/stored/status.c:455
-#, c-format
-msgid "%s Job %s waiting for Client connection.\n"
-msgstr ""
-
-#: 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:484
-#, c-format
-msgid ""
-"Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
-"    pool=\"%s\" device=%s\n"
-msgstr ""
-
-#: src/stored/status.c:495
-#, c-format
-msgid "    spooling=%d despooling=%d despool_wait=%d\n"
-msgstr ""
-
-#: src/stored/status.c:511
-#, c-format
-msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
-msgstr ""
-
-#: src/stored/status.c:523
-#, c-format
-msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
-msgstr ""
-
-#: src/stored/status.c:529
-msgid "    FDSocket closed\n"
-msgstr ""
-
-#: src/stored/status.c:550
-msgid ""
-"\n"
-"Jobs waiting to reserve a drive:\n"
-msgstr ""
-
-#: src/stored/status.c:581
-msgid "===================================================================\n"
-msgstr ""
-
-#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
-msgid "Base"
-msgstr ""
-
-#: src/stored/status.c:680 src/filed/status.c:534
-msgid "Init Catalog"
-msgstr ""
-
-#: src/stored/status.c:683 src/filed/status.c:537
-msgid "Volume to Catalog"
-msgstr ""
-
-#: src/stored/status.c:686 src/filed/status.c:540
-msgid "Disk to Catalog"
-msgstr ""
-
-#: src/stored/status.c:689 src/filed/status.c:543
-msgid "Data"
-msgstr ""
-
-#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
-msgid "Unknown Job Level"
-msgstr ""
-
-#: src/stored/status.c:763
-#, c-format
-msgid "3900 No arg in .status command: %s\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:826
-msgid "Bacula Storage: Idle"
-msgstr ""
-
-#: src/stored/status.c:837
-msgid "Bacula Storage: Running"
-msgstr ""
-
-#: src/stored/status.c:851
-msgid "Bacula Storage: Last Job Canceled"
-msgstr ""
-
-#: src/stored/status.c:855
-msgid "Bacula Storage: Last Job Failed"
-msgstr ""
-
-#: src/stored/status.c:859
-msgid "Bacula Storage: Last Job had Warnings"
-msgstr ""
-
-#: src/stored/read_record.c:89
-#, c-format
-msgid "End of Volume at file %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:93
-msgid "End of all volumes.\n"
-msgstr ""
-
-#: src/stored/read_record.c:137
-msgid "part"
-msgstr ""
-
-#: src/stored/read_record.c:140
-msgid "file"
-msgstr ""
-
-#: src/stored/read_record.c:143
-#, c-format
-msgid "End of %s %u on device %s, Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/read_record.c:158
-msgid "Did fsr in attemp to skip bad record.\n"
-msgstr ""
-
-#: src/stored/read_record.c:397
-#, c-format
-msgid "Forward spacing Volume \"%s\" to file:block %u:%u.\n"
-msgstr ""
-
-#: src/stored/read_record.c:421
-msgid "Begin Session"
-msgstr ""
-
-#: src/stored/read_record.c:425
-msgid "End Session"
-msgstr ""
-
-#: src/stored/read_record.c:431
-#, c-format
-msgid "Unknown code %d\n"
-msgstr ""
-
-#: src/stored/bextract.c:80
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-"
-"files>\n"
-"       -b <file>       specify a bootstrap file\n"
-"       -c <file>       specify a Storage configuration file\n"
-"       -d <nn>         set debug level to <nn>\n"
-"       -dt             print timestamp in debug output\n"
-"       -e <file>       exclude list\n"
-"       -i <file>       include list\n"
-"       -p              proceed inspite of I/O errors\n"
-"       -v              verbose\n"
-"       -V <volumes>    specify Volume names (separated by |)\n"
-"       -?              print this message\n"
-"\n"
-msgstr ""
-
-#: 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"
-msgstr ""
-
-#: src/stored/bextract.c:218
-#, c-format
-msgid "%d Program Name and/or Program Data Stream records ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:222
-#, c-format
-msgid "%d Win32 data or Win32 gzip data stream records. Ignored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:249
-#, c-format
-msgid "Cannot stat %s. It must exist. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:253
-#, c-format
-msgid "%s must be a directory.\n"
-msgstr ""
-
-#: src/stored/bextract.c:274
-#, c-format
-msgid "%u files restored.\n"
-msgstr ""
-
-#: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1480
-#, c-format
-msgid "Write error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:321 src/stored/bextract.c:587
-msgid "Logic error output file should be open but is not.\n"
-msgstr ""
-
-#: src/stored/bextract.c:335 src/filed/restore.c:569
-#, c-format
-msgid "%s stream not supported on this Client.\n"
-msgstr ""
-
-#: src/stored/bextract.c:345
-#, c-format
-msgid "%s was deleted.\n"
-msgstr ""
-
-#: src/stored/bextract.c:393
-#, c-format
-msgid "Seek error on %s: %s\n"
-msgstr ""
-
-#: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1335
-#, c-format
-msgid "Seek to %s error on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bextract.c:448
-#, c-format
-msgid "Uncompression error. ERR=%d\n"
-msgstr ""
-
-#: 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:1376
-#, c-format
-msgid "Compressed header version error. version=0x%x\n"
-msgstr ""
-
-#: src/stored/bextract.c:522 src/filed/restore.c:1381
-#, c-format
-msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
-msgstr ""
-
-#: src/stored/bextract.c:544
-#, c-format
-msgid "LZO uncompression error. ERR=%d\n"
-msgstr ""
-
-#: src/stored/bextract.c:556 src/filed/restore.c:1414
-#, c-format
-msgid "Compression algorithm 0x%x found, but not supported!\n"
-msgstr ""
-
-#: src/stored/bextract.c:578
-msgid "Got Program Name or Data Stream. Ignored.\n"
-msgstr ""
-
-#: 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:74
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify a Storage configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -i                specify input Volume names (separated by |)\n"
-"       -o                specify output Volume names (separated by |)\n"
-"       -p                proceed inspite of errors\n"
-"       -v                verbose\n"
-"       -w <dir>          specify working directory (default /tmp)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: 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:217
-msgid "Write of last block failed.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:221
-#, c-format
-msgid "%u Jobs copied. %u records copied.\n"
-msgstr ""
-
-#: 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:254
-msgid "Volume is prelabeled. This volume cannot be copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:257
-msgid "Volume label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:263
-msgid "Copy skipped. Record does not match BSR filter.\n"
-msgstr ""
-
-#: 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:294
-msgid "EOM label not copied.\n"
-msgstr ""
-
-#: src/stored/bcopy.c:297
-msgid "EOT label not copied.\n"
-msgstr ""
-
-#: src/stored/dvd.c:111
-msgid "No FreeSpace command defined.\n"
-msgstr ""
-
-#: src/stored/dvd.c:145
-#, c-format
-msgid "Cannot run free space command. Results=%s ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:261
-#, c-format
-msgid "Error writing part %d to the DVD: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:263
-#, c-format
-msgid "Error while writing current part to the DVD: %s"
-msgstr ""
-
-#: src/stored/dvd.c:273
-#, c-format
-msgid "Part %d (%lld bytes) written to DVD.\n"
-msgstr ""
-
-#: src/stored/dvd.c:292
-#, c-format
-msgid "Remaining free space %s on %s\n"
-msgstr ""
-
-#: src/stored/dvd.c:358
-#, c-format
-msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
-msgstr ""
-
-#: 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:570
-#, c-format
-msgid "Unable to write last on %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/butil.c:59
-msgid "Nohdr,"
-msgstr ""
-
-#: src/stored/butil.c:62
-msgid "partial,"
-msgstr ""
-
-#: src/stored/butil.c:65
-msgid "empty,"
-msgstr ""
-
-#: src/stored/butil.c:68
-msgid "Nomatch,"
-msgstr ""
-
-#: src/stored/butil.c:71
-msgid "cont,"
-msgstr ""
-
-#: src/stored/butil.c:148
-msgid "Volume name or names is too long. Please use a .bsr file.\n"
-msgstr ""
-
-#: src/stored/butil.c:168
-#, c-format
-msgid "Cannot find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:175
-#, c-format
-msgid "Cannot init device %s\n"
-msgstr ""
-
-#: src/stored/butil.c:195
-#, c-format
-msgid "Cannot open %s\n"
-msgstr ""
-
-#: src/stored/butil.c:282
-#, c-format
-msgid "Could not find device \"%s\" in config file %s.\n"
-msgstr ""
-
-#: src/stored/butil.c:287
-#, c-format
-msgid "Using device: \"%s\" for reading.\n"
-msgstr ""
-
-#: src/stored/butil.c:290
-#, c-format
-msgid "Using device: \"%s\" for writing.\n"
-msgstr ""
-
-#: src/stored/butil.c:306
-msgid "Unexpected End of Data\n"
-msgstr ""
-
-#: src/stored/butil.c:308
-msgid "Unexpected End of Tape\n"
-msgstr ""
-
-#: src/stored/butil.c:310
-msgid "Unexpected End of File\n"
-msgstr ""
-
-#: src/stored/butil.c:312
-msgid "Tape Door is Open\n"
-msgstr ""
-
-#: src/stored/butil.c:314
-msgid "Unexpected Tape is Off-line\n"
-msgstr ""
-
-#: src/stored/acquire.c:74
-#, c-format
-msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
-msgstr ""
-
-#: src/stored/acquire.c:83
-#, c-format
-msgid "No volumes specified for reading. Job %s canceled.\n"
-msgstr ""
-
-#: 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:118
-#, c-format
-msgid ""
-"Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
-"  device=%s\n"
-msgstr ""
-
-#: src/stored/acquire.c:162
-#, c-format
-msgid "Media Type change.  New read device %s chosen.\n"
-msgstr ""
-
-#: src/stored/acquire.c:174
-#, c-format
-msgid "No suitable device found to read Volume \"%s\"\n"
-msgstr ""
-
-#: src/stored/acquire.c:213
-#, c-format
-msgid "Job %s canceled.\n"
-msgstr ""
-
-#: src/stored/acquire.c:231
-#, c-format
-msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/acquire.c:321
-#, c-format
-msgid "Too many errors trying to mount device %s for reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:329
-#, c-format
-msgid "Ready to read from volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: src/stored/acquire.c:381
-#, c-format
-msgid "Want to append, but device %s is busy reading.\n"
-msgstr ""
-
-#: src/stored/acquire.c:414
-#, c-format
-msgid "Could not ready device %s for append.\n"
-msgstr ""
-
-#: 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:552
-#, c-format
-msgid "Alert: %s"
-msgstr ""
-
-#: src/stored/acquire.c:560
-#, c-format
-msgid "3997 Bad alert command: %s: ERR=%s.\n"
-msgstr ""
-
-#: 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/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:197
-#, c-format
-msgid "Error getting Volume info: %s"
-msgstr ""
-
-#: src/stored/askdir.c:376
-#, c-format
-msgid "Didn't get vol info vol=%s: ERR=%s"
-msgstr ""
-
-#: src/stored/askdir.c:432
-#, c-format
-msgid "Error creating JobMedia record: ERR=%s\n"
-msgstr ""
-
-#: src/stored/askdir.c:439
-#, c-format
-msgid "Error creating JobMedia record: %s\n"
-msgstr ""
-
-#: 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:533
-#, c-format
-msgid ""
-"Job %s is waiting. Cannot find any appendable volumes.\n"
-"Please use the \"label\" command to create a new Volume for:\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: 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:568
-msgid "pthread error in mount_next_volume.\n"
-msgstr ""
-
-#: src/stored/askdir.c:601
-msgid "Cannot request another volume: no volume name given.\n"
-msgstr ""
-
-#: 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:624
-#, c-format
-msgid ""
-"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:630
-#, c-format
-msgid ""
-"Please mount read Volume \"%s\" for:\n"
-"    Job:          %s\n"
-"    Storage:      %s\n"
-"    Pool:         %s\n"
-"    Media type:   %s\n"
-msgstr ""
-
-#: src/stored/askdir.c:668
-msgid "pthread error in mount_volume\n"
-msgstr ""
-
-#: src/stored/record.c:75
-#, c-format
-msgid "unknown: %d"
-msgstr ""
-
-#: src/stored/record.c:392
-msgid "Damaged buffer\n"
-msgstr ""
-
-#: src/stored/record.c:670
-#, c-format
-msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
-msgstr ""
-
-#: src/stored/read.c:65
-msgid "No Volume names found for restore.\n"
-msgstr ""
-
-#: src/stored/read.c:120
-#, c-format
-msgid ">filed: Error Hdr=%s\n"
-msgstr ""
-
-#: src/stored/read.c:121 src/stored/read.c:136
-#, c-format
-msgid "Error sending to File daemon. ERR=%s\n"
-msgstr ""
-
-#: src/stored/read.c:135
-#, c-format
-msgid "Error sending to FD. ERR=%s\n"
-msgstr ""
-
-#: src/stored/autochanger.c:65
-#, c-format
-msgid "No Changer Name given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:71
-#, c-format
-msgid "No Changer Command given for device %s. Cannot continue.\n"
-msgstr ""
-
-#: 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:141
-msgid "Cartridge change or \"update slots\" may be required.\n"
-msgstr ""
-
-#: 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:154
-#, c-format
-msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:185
-#, c-format
-msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:193
-#, c-format
-msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:280
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:287
-#, c-format
-msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
-msgstr ""
-
-#: 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:316
-#, fuzzy, c-format
-msgid "Lock failure on autochanger. ERR=%s\n"
-msgstr "Проігноровано помилку SQL. ERR=%s\n"
-
-#: src/stored/autochanger.c:330
-#, c-format
-msgid "Unlock failure on autochanger. ERR=%s\n"
-msgstr ""
-
-#: 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:387
-#, c-format
-msgid ""
-"3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
-"Results=%s\n"
-msgstr ""
-
-#: 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:541
-#, c-format
-msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:585
-#, c-format
-msgid "3993 Device %s not an autochanger device.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:612
-#, c-format
-msgid "3306 Issuing autochanger \"%s\" command.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:615
-msgid "3996 Open bpipe failed.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:642 src/console/console.c:1458
-#, c-format
-msgid "Autochanger error: ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored.c:87
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\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"
-"        -f          run in foreground (for debugging)\n"
-"        -g <group>  set groupid to group\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -p          proceed despite I/O errors\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test - read config and exit\n"
-"        -u <user>   userid to <user>\n"
-"        -v          verbose user messages\n"
-"        -?          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
-msgid "Tape block size (%d) not multiple of system size (%d)\n"
-msgstr ""
-
-#: src/stored/stored.c:140 src/stored/btape.c:182
-#, c-format
-msgid "Tape block size (%d) is not a power of 2\n"
-msgstr ""
-
-#: src/stored/stored.c:268
-msgid "Volume Session Time is ZERO!\n"
-msgstr ""
-
-#: src/stored/stored.c:277
-#, c-format
-msgid "Unable to create thread. ERR=%s\n"
-msgstr ""
-
-#: src/stored/stored.c:310 src/stored/bscan.c:262
-#, c-format
-msgid "No Storage resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:316
-#, c-format
-msgid "Only one Storage resource permitted in %s\n"
-msgstr ""
-
-#: src/stored/stored.c:321
-#, c-format
-msgid "No Director resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:326
-#, c-format
-msgid "No Device resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:334
-#, c-format
-msgid "No Messages resource defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:341 src/stored/bscan.c:270
-#, c-format
-msgid "No Working Directory defined in %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/stored.c:363
-#, c-format
-msgid "\"TLS Certificate\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:369
-#, c-format
-msgid "\"TLS Key\" file not defined for Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/stored/stored.c:375
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s. At least one CA certificate store is required when "
-"using \"TLS Verify Peer\".\n"
-msgstr ""
-
-#: src/stored/stored.c:568
-#, c-format
-msgid "Could not initialize %s\n"
-msgstr ""
-
-#: src/stored/stored.c:582
-#, c-format
-msgid "Could not open device %s\n"
-msgstr ""
-
-#: src/stored/stored.c:596
-#, c-format
-msgid "Could not mount device %s\n"
-msgstr ""
-
-#: src/stored/device.c:120
-#, c-format
-msgid "End of medium on Volume \"%s\" Bytes=%s Blocks=%s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:139
-#, c-format
-msgid "New volume \"%s\" mounted on device %s at %s.\n"
-msgstr ""
-
-#: src/stored/device.c:151
-#, c-format
-msgid "write_block_to_device Volume label failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:186
-#, c-format
-msgid "write_block_to_device overflow block failed. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:191
-#, c-format
-msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
-msgstr ""
-
-#: src/stored/device.c:327 src/stored/dev.c:512
-#, c-format
-msgid "Unable to open device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/device.c:329
-#, c-format
-msgid "Unable to open archive %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:166
-#, c-format
-msgid "Command error with FD, hanging up. %s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:169
-msgid "Command error with FD, hanging up.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:180
-#, c-format
-msgid "FD command not found: %s\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:206
-msgid "Append data error.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:211
-msgid "Attempt to append on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:223 src/stored/fd_cmds.c:266
-msgid "Attempt to close non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:241
-msgid "Attempt to open already open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:295
-msgid "Attempt to read on non-open session.\n"
-msgstr ""
-
-#: src/stored/fd_cmds.c:313 src/stored/fd_cmds.c:322
-msgid "Attempt to open read on non-open session.\n"
-msgstr ""
-
-#: src/stored/mount.c:98
-#, c-format
-msgid "Too many errors trying to mount device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:106
-#, c-format
-msgid "Job %d canceled.\n"
-msgstr ""
-
-#: src/stored/mount.c:282
-#, c-format
-msgid "Volume \"%s\" previously written, moving to end of data.\n"
-msgstr ""
-
-#: 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:411 src/stored/mount.c:737
-#, c-format
-msgid "Volume \"%s\" not on device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:444
-#, c-format
-msgid ""
-"Director wanted Volume \"%s\".\n"
-"    Current Volume \"%s\" not acceptable because:\n"
-"    %s"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
-msgstr ""
-
-#: src/stored/mount.c:624
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The number of files mismatch! Volume=%u Catalog=%u\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: src/stored/mount.c:631 src/stored/mount.c:659
-msgid "Error updating Catalog\n"
-msgstr ""
-
-#: 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:647
-#, c-format
-msgid "Ready to append to end of Volume \"%s\" size=%s\n"
-msgstr ""
-
-#: src/stored/mount.c:651
-#, c-format
-msgid ""
-"For Volume \"%s\":\n"
-"The sizes do not match! Volume=%s Catalog=%s\n"
-"Correcting Catalog\n"
-msgstr ""
-
-#: 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:727
-#, c-format
-msgid "Labeled new Volume \"%s\" on device %s.\n"
-msgstr ""
-
-#: src/stored/mount.c:732
-#, c-format
-msgid "Device %s not configured to autolabel Volumes.\n"
-msgstr ""
-
-#: src/stored/mount.c:751
-#, c-format
-msgid "Marking Volume \"%s\" in Error in Catalog.\n"
-msgstr ""
-
-#: 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:787
-msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
-msgstr ""
-
-#: 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:875 src/stored/btape.c:3122
-#, c-format
-msgid "Cannot open Dev=%s, Vol=%s\n"
-msgstr ""
-
-#: src/stored/mac.c:81
-msgid "Read and write devices not properly initialized.\n"
-msgstr ""
-
-#: src/stored/mac.c:87
-#, c-format
-msgid "No Volume names found for %s.\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:160 src/filed/pythonfd.c:142
-#, c-format
-msgid "Cannot delete attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:193 src/filed/pythonfd.c:160 src/filed/pythonfd.c:176
-#, c-format
-msgid "Cannot find attribute %s"
-msgstr ""
-
-#: src/stored/pythonsd.c:208
-msgid "Error in ParseTuple\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:224
-msgid "Parse tuple error in job_write\n"
-msgstr ""
-
-#: src/stored/pythonsd.c:261
-#, c-format
-msgid "Error in Python method %s\n"
-msgstr ""
-
-#: src/stored/spool.c:83
-msgid "Spooling statistics:\n"
-msgstr ""
-
-#: src/stored/spool.c:86
-#, c-format
-msgid ""
-"Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"
-msgstr ""
-
-#: src/stored/spool.c:94
-#, c-format
-msgid "Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"
-msgstr ""
-
-#: src/stored/spool.c:112
-msgid "Spooling data ...\n"
-msgstr ""
-
-#: src/stored/spool.c:138
-#, c-format
-msgid "Bad return from despool WroteVol=%d\n"
-msgstr ""
-
-#: src/stored/spool.c:171
-#, c-format
-msgid "Open data spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:225
-msgid "Despooling zero bytes. Your disk is probably FULL!\n"
-msgstr ""
-
-#: src/stored/spool.c:234
-#, c-format
-msgid "Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:239
-#, c-format
-msgid "Writing spooled data to Volume. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:339
-#, c-format
-msgid ""
-"Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/spool.c:407
-#, c-format
-msgid "Spool header read error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:410
-#, c-format
-msgid "Spool read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:411
-#, c-format
-msgid "Spool header read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: src/stored/spool.c:418 src/stored/spool.c:419
-#, c-format
-msgid "Spool block too big. Max %u bytes, got %u\n"
-msgstr ""
-
-#: src/stored/spool.c:425 src/stored/spool.c:426
-#, c-format
-msgid "Spool data read error. Wanted %u bytes, got %d\n"
-msgstr ""
-
-#: 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:492
-msgid "Bad return from despool in write_block.\n"
-msgstr ""
-
-#: src/stored/spool.c:500
-msgid "Spooling data again ...\n"
-msgstr ""
-
-#: src/stored/spool.c:532
-#, c-format
-msgid "Error writing header to spool file. ERR=%s\n"
-msgstr ""
-
-#: 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:555 src/stored/spool.c:601
-msgid "Fatal despooling error."
-msgstr ""
-
-#: src/stored/spool.c:563
-msgid "Retrying after header spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:579
-#, c-format
-msgid "Error writing data to spool file. ERR=%s\n"
-msgstr ""
-
-#: src/stored/spool.c:612
-msgid "Retrying after data spooling error failed.\n"
-msgstr ""
-
-#: src/stored/spool.c:682
-msgid "Network error on BlastAttributes.\n"
-msgstr ""
-
-#: 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:718
-#, fuzzy, c-format
-msgid "Truncate on attributes file failed: ERR=%s\n"
-msgstr "Помилка у %s файл %s: ERR=%s\n"
-
-#: src/stored/spool.c:742
-#, c-format
-msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
-msgstr ""
-
-#: src/stored/spool.c:768
-#, c-format
-msgid "fopen attr spool file %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/stored/lock.c:405
-#, c-format
-msgid "pthread_cond_wait failure. ERR=%s\n"
-msgstr ""
-
-#: src/stored/lock.c:504
-msgid "unknown blocked code"
-msgstr ""
-
-#: src/stored/stored_conf.c:241
-#, c-format
-msgid "Expected a Device Type keyword, got: %s"
-msgstr ""
-
-#: src/stored/stored_conf.c:255
-#, c-format
-msgid ""
-"Maximum Block Size configured value %u is greater than allowed maximum: %u"
-msgstr ""
-
-#: src/stored/stored_conf.c:269
-#, c-format
-msgid "Warning: no \"%s\" resource (%d) defined.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:272
-#, c-format
-msgid "dump_resource type=%d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:388
-#, c-format
-msgid "Warning: unknown resource type %d\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:555 src/stored/stored_conf.c:645
-#: src/stored/stored_conf.c:680 src/wx-console/console_conf.c:164
-#: src/wx-console/console_conf.c:239 src/wx-console/console_conf.c:284
-#: src/wx-console/console_conf.c:311 src/console/console_conf.c:157
-#: src/console/console_conf.c:233 src/console/console_conf.c:278
-#: src/console/console_conf.c:305 src/filed/filed_conf.c:333
-#: src/filed/filed_conf.c:398 src/filed/filed_conf.c:428
-#: src/qt-console/bat_conf.cpp:161 src/qt-console/bat_conf.cpp:239
-#: src/qt-console/bat_conf.cpp:287 src/qt-console/bat_conf.cpp:317
-#, c-format
-msgid "Unknown resource type %d\n"
-msgstr "Невідомий тип ресурсу %d\n"
-
-#: src/stored/stored_conf.c:584
-#, c-format
-msgid "\"%s\" item is required in \"%s\" resource, but not found.\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:590
-#, c-format
-msgid "Too many items in \"%s\" resource\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:624
-#, c-format
-msgid "Cannot find AutoChanger resource %s\n"
-msgstr ""
-
-#: src/stored/stored_conf.c:640
-#, fuzzy, c-format
-msgid "Unable to init lock: ERR=%s\n"
-msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
-
-#: src/stored/stored_conf.c:698
-#, c-format
-msgid ""
-"Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
-msgstr ""
-
-#: src/stored/dev.c:127
-#, c-format
-msgid "Unable to stat device %s: ERR=%s\n"
-msgstr ""
-
-#: 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:155
-msgid "DVD support is now deprecated\n"
-msgstr ""
-
-#: src/stored/dev.c:231
-#, c-format
-msgid "Unable to stat mount point %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:236
-msgid ""
-"Mount and unmount commands must defined for a device which requires mount.\n"
-msgstr ""
-
-#: src/stored/dev.c:247
-#, c-format
-msgid "Min block size > max on device %s\n"
-msgstr ""
-
-#: 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:256
-#, c-format
-msgid "Max block size %u not multiple of device %s block size=%d.\n"
-msgstr ""
-
-#: src/stored/dev.c:260
-#, c-format
-msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
-msgstr ""
-
-#: 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: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:551
-#, c-format
-msgid "Could not open file device %s. No Volume name given.\n"
-msgstr ""
-
-#: src/stored/dev.c:574
-#, c-format
-msgid "Could not open: %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:639
-#, c-format
-msgid "No tape loaded or drive offline on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:649
-#, c-format
-msgid "Rewind error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:708
-#, c-format
-msgid "Bad call to eod. Device %s not open\n"
-msgstr ""
-
-#: src/stored/dev.c:775
-#, c-format
-msgid "ioctl MTEOM error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:865
-msgid "Bad device call. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:877
-#, c-format
-msgid "Seek error: ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:914
-msgid " Bacula status:"
-msgstr ""
-
-#: 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:923
-msgid " Device status:"
-msgstr ""
-
-#: src/stored/dev.c:1022
-msgid "Bad call to load_dev. Device not open\n"
-msgstr ""
-
-#: 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:1077
-#, c-format
-msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1118
-msgid "Bad call to fsf. Device not open\n"
-msgstr ""
-
-#: 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:1160 src/stored/dev.c:1236
-#, c-format
-msgid "ioctl MTFSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: 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:1285
-msgid "Bad call to bsf. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1291
-#, c-format
-msgid "Device %s cannot BSF because it is not a tape.\n"
-msgstr ""
-
-#: src/stored/dev.c:1308
-#, c-format
-msgid "ioctl MTBSF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1327
-msgid "Bad call to fsr. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1337
-#, c-format
-msgid "ioctl MTFSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1365
-#, c-format
-msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1383
-msgid "Bad call to bsr_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1393
-#, c-format
-msgid "ioctl MTBSR not permitted on %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1407
-#, c-format
-msgid "ioctl MTBSR error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1458
-msgid "Bad call to reposition. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1537
-msgid "Bad call to weof_dev. Device not open\n"
-msgstr ""
-
-#: src/stored/dev.c:1547
-msgid "Attempt to WEOF on non-appendable Volume\n"
-msgstr ""
-
-#: src/stored/dev.c:1565
-#, c-format
-msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1664
-#, c-format
-msgid "unknown func code %d"
-msgstr ""
-
-#: src/stored/dev.c:1670
-#, c-format
-msgid "I/O function \"%s\" not supported on this device.\n"
-msgstr ""
-
-#: src/stored/dev.c:1844
-#, c-format
-msgid "Unable to truncate device %s. ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:1861
-#, c-format
-msgid "Unable to stat device %s. ERR=%s\n"
-msgstr ""
-
-#: src/stored/dev.c:1875
-#, c-format
-msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
-msgstr ""
-
-#: src/stored/dev.c:1887
-#, c-format
-msgid "Could not reopen: %s, ERR=%s\n"
-msgstr ""
-
-#: 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:2481
-#, c-format
-msgid "Unable to set eotmodel on device %s: ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:118
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bscan [ options ] <bacula-archive>\n"
-"       -b bootstrap      specify a bootstrap file\n"
-"       -c <file>         specify configuration file\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -m                update media info in database\n"
-"       -D <driver name>  specify the driver database name (default NULL)\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password>     specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -t <port>         specify database port (default 0)\n"
-"       -p                proceed inspite of I/O errors\n"
-"       -r                list records\n"
-"       -s                synchronize or store in database\n"
-"       -S                show scan progress periodically\n"
-"       -v                verbose\n"
-"       -V <Volumes>      specify Volume names (separated by |)\n"
-"       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:278
-#, c-format
-msgid "Working Directory: %s not found. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:282
-#, c-format
-msgid "Working Directory: %s is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/bscan.c:296 src/stored/bscan.c:372
-#, c-format
-msgid "First Volume Size = %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:302 src/tools/bvfs_test.c:215 src/tools/bbatch.c:201
-#: src/tools/bbatch.c:250 src/tools/ing_test.c:191
-msgid "Could not init Bacula database\n"
-msgstr ""
-
-#: src/stored/bscan.c:309 src/tools/bvfs_test.c:224 src/tools/bbatch.c:257
-#: src/tools/ing_test.c:200
-#, c-format
-msgid "Using Database: %s, User: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:343
-#, c-format
-msgid "Create JobMedia for Job %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:353
-#, c-format
-msgid "Could not create JobMedia record for Volume=%s Job=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:420
-#, c-format
-msgid "done: %d%%\n"
-msgstr ""
-
-#: src/stored/bscan.c:444
-msgid "Volume is prelabeled. This tape cannot be scanned.\n"
-msgstr ""
-
-#: src/stored/bscan.c:456
-#, c-format
-msgid "Pool record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:460
-#, c-format
-msgid "VOL_LABEL: Pool record not found for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:466
-#, c-format
-msgid "VOL_LABEL: PoolType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:470
-#, c-format
-msgid "Pool type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:480
-#, c-format
-msgid "Media record for %s found in DB.\n"
-msgstr ""
-
-#: src/stored/bscan.c:487
-#, c-format
-msgid "VOL_LABEL: Media record not found for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:494
-#, c-format
-msgid "VOL_LABEL: MediaType mismatch. DB=%s Vol=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:498
-#, c-format
-msgid "Media type \"%s\" is OK.\n"
-msgstr ""
-
-#: src/stored/bscan.c:508
-#, c-format
-msgid "VOL_LABEL: OK for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:515
-#, c-format
-msgid "%d \"errors\" ignored before first Start of Session record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:526
-#, c-format
-msgid "SOS_LABEL: Found Job record for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:531
-#, c-format
-msgid "SOS_LABEL: Job record not found for JobId: %d\n"
-msgstr ""
-
-#: src/stored/bscan.c:571
-#, c-format
-msgid "SOS_LABEL: VolSessId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:577
-#, c-format
-msgid "SOS_LABEL: VolSessTime mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: src/stored/bscan.c:583
-#, c-format
-msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
-msgstr ""
-
-#: 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 ""
-
-#: src/stored/bscan.c:647
-#, c-format
-msgid "Could not update job record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:658
-#, c-format
-msgid "End of all Volumes. VolFiles=%u VolBlocks=%u VolBytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:670
-#, c-format
-msgid "Could not find Job for SessId=%d SessTime=%d record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:701
-#, c-format
-msgid "%s file records. At file:blk=%s:%s bytes=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:766
-#, c-format
-msgid "Got MD5 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:774
-#, c-format
-msgid "Got SHA1 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:782
-#, c-format
-msgid "Got SHA256 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:790
-#, c-format
-msgid "Got SHA512 record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:798 src/stored/bscan.c:805
-msgid "Got signed digest record\n"
-msgstr "Отримано підписаний відбиток запису\n"
-
-#: src/stored/bscan.c:811
-#, c-format
-msgid "Got Prog Names Stream: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:817
-msgid "Got Prog Data Stream record.\n"
-msgstr ""
-
-#: src/stored/bscan.c:862
-#, c-format
-msgid "Unknown stream type!!! stream=%d len=%i\n"
-msgstr ""
-
-#: src/stored/bscan.c:930
-#, c-format
-msgid "Could not create File Attributes record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:936
-#, c-format
-msgid "Created File record: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:981
-#, c-format
-msgid "Could not create media record. ERR=%s\n"
-msgstr ""
-
-#: 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:989
-#, c-format
-msgid "Created Media record for Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1010
-#, c-format
-msgid "Updated Media record at end of Volume: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1027
-#, c-format
-msgid "Could not create pool record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1031
-#, c-format
-msgid "Created Pool record for Pool: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1050
-#, c-format
-msgid "Could not get Client record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1060
-#, c-format
-msgid "Created Client record for Client: %s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1077
-#, c-format
-msgid "Fileset \"%s\" already exists.\n"
-msgstr ""
-
-#: src/stored/bscan.c:1081
-#, c-format
-msgid "Could not create FileSet record \"%s\". ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1086
-#, c-format
-msgid "Created FileSet record \"%s\"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1133
-#, c-format
-msgid "Could not create JobId record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1139
-#, c-format
-msgid "Could not update job start record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1142
-#, c-format
-msgid "Created new JobId=%u record for original JobId=%u\n"
-msgstr ""
-
-#: src/stored/bscan.c:1195
-#, c-format
-msgid "Could not update JobId=%u record. ERR=%s\n"
-msgstr ""
-
-#: 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:1225
-#, c-format
-msgid "Job Termination code: %d"
-msgstr ""
-
-#: src/stored/bscan.c:1230
-#, c-format
-msgid ""
-"%s\n"
-"JobId:                  %d\n"
-"Job:                    %s\n"
-"FileSet:                %s\n"
-"Backup Level:           %s\n"
-"Client:                 %s\n"
-"Start time:             %s\n"
-"End time:               %s\n"
-"Files Written:          %s\n"
-"Bytes Written:          %s\n"
-"Volume Session Id:      %d\n"
-"Volume Session Time:    %d\n"
-"Last Volume Bytes:      %s\n"
-"Termination:            %s\n"
-"\n"
-msgstr ""
-
-#: src/stored/bscan.c:1288
-#, c-format
-msgid "Could not create JobMedia record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1292
-#, c-format
-msgid "Created JobMedia record JobId %d, MediaId %d\n"
-msgstr ""
-
-#: 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:1322
-#, c-format
-msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
-msgstr ""
-
-#: src/stored/bscan.c:1327
-msgid "Updated MD5/SHA1 record\n"
-msgstr ""
-
-#: src/stored/job.c:234
-#, c-format
-msgid "FD connect failed: Job name not found: %s\n"
-msgstr ""
-
-#: src/stored/job.c:244
-#, c-format
-msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
-msgstr ""
-
-#: src/stored/job.c:261
-msgid "Unable to authenticate File daemon\n"
-msgstr ""
-
-#: src/stored/job.c:390
-msgid "In free_jcr(), but still attached to device!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:185
-#, c-format
-msgid ""
-"\n"
-"\n"
-"!!!! Warning large disk addressing disabled. boffset_t=%d should be 8 or "
-"more !!!!!\n"
-"\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:192
-#, c-format
-msgid "32 bit printf/scanf problem. i=%d x32=%u y32=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:201
-msgid "64 bit printf/scanf problem. i=%d x64=%"
-msgstr ""
-
-#: src/stored/btape.c:206
-#, c-format
-msgid "Tape block granularity is %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:279
-msgid "No archive name specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:283
-msgid "Improper number of arguments specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:297
-msgid "btape does not work with DVD storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:302
-msgid "btape only works with tape storage.\n"
-msgstr ""
-
-#: src/stored/btape.c:383
-#, c-format
-msgid "Total Volume bytes=%sB. Total Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:409
-#, c-format
-msgid "Volume bytes=%sB. Write rate = %sB/s\n"
-msgstr ""
-
-#: src/stored/btape.c:477
-#, c-format
-msgid "open device %s: OK\n"
-msgstr ""
-
-#: src/stored/btape.c:500
-msgid "Enter Volume Name: "
-msgstr ""
-
-#: src/stored/btape.c:507
-#, c-format
-msgid "Device open failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:512
-#, c-format
-msgid "Wrote Volume label for volume \"%s\".\n"
-msgstr ""
-
-#: src/stored/btape.c:526
-msgid "Volume has no label.\n"
-msgstr ""
-
-#: src/stored/btape.c:529
-msgid "Volume label read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:532
-#, c-format
-msgid "I/O error on device: ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:535
-msgid "Volume name error\n"
-msgstr ""
-
-#: src/stored/btape.c:538
-#, c-format
-msgid "Error creating label. ERR=%s"
-msgstr ""
-
-#: src/stored/btape.c:541
-msgid "Volume version error.\n"
-msgstr ""
-
-#: src/stored/btape.c:544
-msgid "Bad Volume label type.\n"
-msgstr ""
-
-#: src/stored/btape.c:547
-msgid "Unknown error.\n"
-msgstr ""
-
-#: src/stored/btape.c:565
-#, c-format
-msgid "Bad status from load. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:567
-#, c-format
-msgid "Loaded %s\n"
-msgstr ""
-
-#: 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:1571
-#, c-format
-msgid "Rewound %s\n"
-msgstr ""
-
-#: src/stored/btape.c:605 src/stored/btape.c:1575
-#, c-format
-msgid "Bad status from weof. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:609
-#, c-format
-msgid "Wrote 1 EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:612
-#, c-format
-msgid "Wrote %d EOFs to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:630
-msgid "Moved to end of medium.\n"
-msgstr ""
-
-#: src/stored/btape.c:657
-#, c-format
-msgid "Bad status from bsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:659
-#, c-format
-msgid "Backspaced %d file%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:676
-#, c-format
-msgid "Bad status from bsr. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:678
-#, c-format
-msgid "Backspaced %d record%s.\n"
-msgstr ""
-
-#: src/stored/btape.c:706
-#, c-format
-msgid "Device status:\n"
-msgstr ""
-
-#: src/stored/btape.c:725
-#, c-format
-msgid "Status:\n"
-msgstr ""
-
-#: src/stored/btape.c:740
-msgid ""
-"Test writing larger and larger records.\n"
-"This is a torture test for records.\n"
-"I am going to write\n"
-"larger and larger records. It will stop when the record size\n"
-"plus the header exceeds the block size (by default about 64K)\n"
-msgstr ""
-
-#: src/stored/btape.c:746
-msgid "Do you want to continue? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:748 src/stored/btape.c:2200
-msgid "Command aborted.\n"
-msgstr ""
-
-#: src/stored/btape.c:765
-#, c-format
-msgid "Block %d i=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:792
-msgid "Skipping read backwards test because BSR turned off.\n"
-msgstr ""
-
-#: src/stored/btape.c:796
-msgid ""
-"\n"
-"=== Write, backup, and re-read test ===\n"
-"\n"
-"I'm going to write three records and an EOF\n"
-"then backup over the EOF and re-read the last record.\n"
-"Bacula does this after writing the last block on the\n"
-"tape to verify that the block was written correctly.\n"
-"\n"
-"This is not an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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: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:816
-#, c-format
-msgid "Wrote first record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:827
-#, c-format
-msgid "Wrote second record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:838
-#, c-format
-msgid "Wrote third record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:845 src/stored/btape.c:850
-#, c-format
-msgid "Backspace file failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:854
-msgid "Backspaced over EOF OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:856
-#, c-format
-msgid "Backspace record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:859
-msgid "Backspace record OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:862 src/stored/btape.c:868
-#, c-format
-msgid "Read block failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:873
-msgid "Bad data in record. Test failed!\n"
-msgstr ""
-
-#: src/stored/btape.c:877
-msgid ""
-"\n"
-"Block re-read correct. Test succeeded!\n"
-msgstr ""
-
-#: src/stored/btape.c:878
-msgid ""
-"=== End Write, backup, and re-read test ===\n"
-"\n"
-msgstr ""
-
-#: 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"
-"tape. Bacula will skip the last block verification\n"
-"if you add:\n"
-"\n"
-"Backward Space Record = No\n"
-"\n"
-"to your Storage daemon's Device resource definition.\n"
-msgstr ""
-
-#: 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:928 src/stored/btape.c:2879
-#, c-format
-msgid "Write failed at block %u. stat=%d ERR=%s\n"
-msgstr ""
-
-#: 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:971
-msgid ""
-"\n"
-"Error writing record to block.\n"
-msgstr ""
-
-#: src/stored/btape.c:975
-msgid ""
-"\n"
-"Error writing block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1030
-msgid "The file_size is too big, stop this test with Ctrl-c.\n"
-msgstr ""
-
-#: src/stored/btape.c:1058
-msgid "Test with zero data, should give the maximum throughput.\n"
-msgstr ""
-
-#: 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:1085
-msgid "Test with zero data and bacula block structure.\n"
-msgstr ""
-
-#: src/stored/btape.c:1125
-#, c-format
-msgid ""
-"\n"
-"=== Write, rewind, and re-read test ===\n"
-"\n"
-"I'm going to write %d records and an EOF\n"
-"then write %d records and an EOF, then rewind,\n"
-"and re-read the data to verify that it is correct.\n"
-"\n"
-"This is an *essential* feature ...\n"
-"\n"
-msgstr ""
-
-#: 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:1215 src/stored/btape.c:1295
-msgid "Rewind OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1228 src/stored/btape.c:1347
-msgid "Got EOF on tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:1233
-#, c-format
-msgid "Read block %d failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1239
-#, c-format
-msgid "Read record failed. Block %d! ERR=%s\n"
-msgstr ""
-
-#: 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:1252
-#, c-format
-msgid "%d blocks re-read correctly.\n"
-msgstr ""
-
-#: 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:1283
-msgid "Block position test\n"
-msgstr ""
-
-#: src/stored/btape.c:1338
-#, c-format
-msgid "Reposition to file:block %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:1340
-msgid "Reposition error.\n"
-msgstr ""
-
-#: 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:1355
-msgid ""
-"This may be because the tape drive block size is not\n"
-" set to variable blocking as normally used by Bacula.\n"
-" Please see the Tape Testing chapter in the manual and \n"
-" look for using mt with defblksize and setoptions\n"
-"If your tape drive block size is correct, then perhaps\n"
-" your SCSI driver is *really* stupid and does not\n"
-" correctly report the file:block after a FSF. In this\n"
-" case try setting:\n"
-"    Fast Forward Space File = no\n"
-" in your Device resource.\n"
-msgstr ""
-
-#: src/stored/btape.c:1371
-#, c-format
-msgid "Read record failed! ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1382
-#, c-format
-msgid "Block %d re-read correctly.\n"
-msgstr ""
-
-#: src/stored/btape.c:1403
-msgid ""
-"\n"
-"\n"
-"=== Append files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write one record  in file 0,\n"
-"                   two records in file 1,\n"
-"             and three records in file 2\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1427
-msgid "Now moving to end of medium.\n"
-msgstr ""
-
-#: 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: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: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:1436
-msgid ""
-"\n"
-"Now the important part, I am going to attempt to append to the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1443
-msgid ""
-"Done appending, there should be no I/O errors\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1444
-msgid "Doing Bacula scan of blocks:\n"
-msgstr ""
-
-#: src/stored/btape.c:1446
-msgid "End scanning the tape.\n"
-msgstr ""
-
-#: 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:1472
-msgid ""
-"\n"
-"Autochanger enabled, but no name or no command device specified.\n"
-msgstr ""
-
-#: src/stored/btape.c:1476
-msgid ""
-"\n"
-"Ah, I see you have an autochanger configured.\n"
-"To test the autochanger you must have a blank tape\n"
-" that I can write on in Slot 1.\n"
-msgstr ""
-
-#: src/stored/btape.c:1479
-msgid ""
-"\n"
-"Do you wish to continue with the Autochanger test? (y/n): "
-msgstr ""
-
-#: src/stored/btape.c:1486
-msgid ""
-"\n"
-"\n"
-"=== Autochanger test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1495
-msgid "3301 Issuing autochanger \"loaded\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1504
-#, c-format
-msgid "3991 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1505
-#, c-format
-msgid "3991 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1509
-#, c-format
-msgid "Slot %d loaded. I am going to unload it.\n"
-msgstr ""
-
-#: src/stored/btape.c:1511
-msgid "Nothing loaded in the drive. OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1518
-#, c-format
-msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-#, c-format
-msgid "unload status=%s %d\n"
-msgstr ""
-
-#: src/stored/btape.c:1523
-msgid "Bad"
-msgstr ""
-
-#: src/stored/btape.c:1526
-#, c-format
-msgid "3992 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1527
-#, c-format
-msgid "3992 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1537
-#, c-format
-msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
-msgstr ""
-
-#: src/stored/btape.c:1545
-#, c-format
-msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
-msgstr ""
-
-#: src/stored/btape.c:1549
-#, c-format
-msgid "3993 Bad autochanger command: %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1550
-#, c-format
-msgid "3993 result=\"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1565
-msgid ""
-"\n"
-"The test failed, probably because you need to put\n"
-"a longer sleep time in the mtx-script in the load) case.\n"
-"Adding a 30 second sleep and trying again ...\n"
-msgstr ""
-
-#: src/stored/btape.c:1578
-#, c-format
-msgid "Wrote EOF to %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1582
-#, c-format
-msgid ""
-"\n"
-"The test worked this time. Please add:\n"
-"\n"
-"   sleep %d\n"
-"\n"
-"to your mtx-changer script in the load) case.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1587
-msgid ""
-"\n"
-"The test autochanger worked!!\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1598
-msgid "You must correct this error or the Autochanger will not work.\n"
-msgstr ""
-
-#: src/stored/btape.c:1616
-msgid ""
-"\n"
-"\n"
-"=== Forward space files test ===\n"
-"\n"
-"This test is essential to Bacula.\n"
-"\n"
-"I'm going to write five files then test forward spacing\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1641
-msgid "Now forward spacing 1 file.\n"
-msgstr ""
-
-#: 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:1646
-#, c-format
-msgid "We should be in file 1. I am at file %d. %s\n"
-msgstr ""
-
-#: src/stored/btape.c:1653
-msgid "Now forward spacing 2 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1666
-msgid "Now forward spacing 4 files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1678
-msgid ""
-"The test worked this time. Please add:\n"
-"\n"
-"   Fast Forward Space File = no\n"
-"\n"
-"to your Device resource for this drive.\n"
-msgstr ""
-
-#: src/stored/btape.c:1684
-msgid "Now forward spacing 1 more file.\n"
-msgstr ""
-
-#: 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:1693
-msgid ""
-"\n"
-"=== End Forward space files test ===\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1697
-msgid ""
-"\n"
-"The forward space file test failed.\n"
-msgstr ""
-
-#: 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:1705
-msgid ""
-"You must correct this error or Bacula will not work.\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1739
-msgid ""
-"\n"
-"Append test failed. Attempting again.\n"
-"Setting \"Hardware End of Medium = no\n"
-"    and \"Fast Forward Space File = no\n"
-"and retrying append test.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1747
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"\n"
-"    Fast Forward Space File = No\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1754
-msgid ""
-"\n"
-"\n"
-"That appears *NOT* to have corrected the problem.\n"
-msgstr ""
-
-#: src/stored/btape.c:1759
-msgid ""
-"\n"
-"\n"
-"It looks like the append failed. Attempting again.\n"
-"Setting \"BSF at EOM = yes\" and retrying append test.\n"
-msgstr ""
-
-#: src/stored/btape.c:1764
-msgid ""
-"\n"
-"\n"
-"It looks like the test worked this time, please add:\n"
-"\n"
-"    Hardware End of Medium = No\n"
-"    Fast Forward Space File = No\n"
-"    BSF at EOM = yes\n"
-"\n"
-"to your Device resource in the Storage conf file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1775
-msgid ""
-"\n"
-"Append test failed.\n"
-"\n"
-"\n"
-"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
-"Unable to correct the problem. You MUST fix this\n"
-"problem before Bacula can use your tape drive correctly\n"
-"\n"
-"Perhaps running Bacula in fixed block mode will work.\n"
-"Do so by setting:\n"
-"\n"
-"Minimum Block Size = nnn\n"
-"Maximum Block Size = nnn\n"
-"\n"
-"in your Storage daemon's Device definition.\n"
-"nnn must match your tape driver's block size, which\n"
-"can be determined by reading your tape manufacturers\n"
-"information, and the information on your kernel dirver.\n"
-"Fixed block sizes, however, are not normally an ideal solution.\n"
-"\n"
-"Some systems, e.g. OpenBSD, require you to set\n"
-"   Use MTIOCGET= no\n"
-"in your device resource. Use with caution.\n"
-msgstr ""
-
-#: src/stored/btape.c:1797
-msgid ""
-"\n"
-"The above Bacula scan should have output identical to what follows.\n"
-"Please double check it ...\n"
-"=== Sample correct output ===\n"
-"1 block of 64448 bytes in file 1\n"
-"End of File mark.\n"
-"2 blocks of 64448 bytes in file 2\n"
-"End of File mark.\n"
-"3 blocks of 64448 bytes in file 3\n"
-"End of File mark.\n"
-"1 block of 64448 bytes in file 4\n"
-"End of File mark.\n"
-"Total files=4, blocks=7, bytes = 451,136\n"
-"=== End sample correct output ===\n"
-"\n"
-"If the above scan output is not identical to the\n"
-"sample output, you MUST correct the problem\n"
-"or Bacula will not be able to write multiple Jobs to \n"
-"the tape.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:1840
-#, c-format
-msgid "Bad status from fsf. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1844
-msgid "Forward spaced 1 file.\n"
-msgstr ""
-
-#: src/stored/btape.c:1847
-#, c-format
-msgid "Forward spaced %d files.\n"
-msgstr ""
-
-#: src/stored/btape.c:1866
-msgid "Forward spaced 1 record.\n"
-msgstr ""
-
-#: src/stored/btape.c:1869
-#, c-format
-msgid "Forward spaced %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:1914
-#, c-format
-msgid "Wrote one record of %d bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1916
-msgid "Wrote block to device.\n"
-msgstr ""
-
-#: src/stored/btape.c:1930
-msgid "Enter length to read: "
-msgstr ""
-
-#: src/stored/btape.c:1935
-msgid "Bad length entered, using default of 1024 bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:1944
-#, c-format
-msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:1967 src/stored/btape.c:2016
-#, c-format
-msgid "End of tape\n"
-msgstr ""
-
-#: src/stored/btape.c:1972
-#, c-format
-msgid "Starting scan at file %u\n"
-msgstr ""
-
-#: src/stored/btape.c:1979
-#, c-format
-msgid "Bad status from read %d. ERR=%s\n"
-msgstr ""
-
-#: 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: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:2007 src/stored/btape.c:2079
-#, c-format
-msgid "End of File mark.\n"
-msgstr ""
-
-#: 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:2092
-#, c-format
-msgid "Short block read.\n"
-msgstr ""
-
-#: src/stored/btape.c:2095
-#, c-format
-msgid "Error reading block. ERR=%s\n"
-msgstr ""
-
-#: 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:2141
-#, c-format
-msgid "Device status: %u. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2173
-#, c-format
-msgid ""
-"\n"
-"This command simulates Bacula writing to a tape.\n"
-"It requires either one or two blank tapes, which it\n"
-"will label and write.\n"
-"\n"
-"If you have an autochanger configured, it will use\n"
-"the tapes that are in slots 1 and 2, otherwise, you will\n"
-"be prompted to insert the tapes when necessary.\n"
-"\n"
-"It will print a status approximately\n"
-"every 322 MB, and write an EOF every %s.  If you have\n"
-"selected the simple test option, after writing the first tape\n"
-"it will rewind it and re-read the last block written.\n"
-"\n"
-"If you have selected the multiple tape test, when the first tape\n"
-"fills, it will ask for a second, and after writing a few more \n"
-"blocks, it will stop.  Then it will begin re-reading the\n"
-"two tapes.\n"
-"\n"
-"This may take a long time -- hours! ...\n"
-"\n"
-msgstr ""
-
-#: 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:2194
-msgid "Simple test (single tape) selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2197
-msgid "Multiple tape test selected.\n"
-msgstr ""
-
-#: src/stored/btape.c:2239
-msgid "Wrote Start of Session label.\n"
-msgstr ""
-
-#: src/stored/btape.c:2258
-#, c-format
-msgid "%s Begin writing Bacula records to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2260
-#, c-format
-msgid "%s Begin writing Bacula records to first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2286
-msgid "Flush block failed.\n"
-msgstr ""
-
-#: 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:2311
-#, c-format
-msgid "%s Flush block, write EOF\n"
-msgstr ""
-
-#: src/stored/btape.c:2320
-msgid "Wrote 1000 blocks on second tape. Done.\n"
-msgstr ""
-
-#: src/stored/btape.c:2325
-msgid "Not OK\n"
-msgstr ""
-
-#: src/stored/btape.c:2349
-#, fuzzy
-msgid "Job canceled.\n"
-msgstr "Статус задачі: Відмінена"
-
-#: src/stored/btape.c:2360
-msgid "Set ok=false after write_block_to_device.\n"
-msgstr ""
-
-#: src/stored/btape.c:2364
-msgid "Wrote End of Session label.\n"
-msgstr ""
-
-#: 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:2392
-#, c-format
-msgid "Could not create state file: %s ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2403
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2406
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2412
-#, fuzzy
-msgid "do_unfill failed.\n"
-msgstr "Помилка команди"
-
-#: src/stored/btape.c:2417
-#, c-format
-msgid "%s: Error during test.\n"
-msgstr ""
-
-#: 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:2459
-#, c-format
-msgid ""
-"\n"
-"Could not find the state file: %s ERR=%s\n"
-"You must redo the fill command.\n"
-msgstr ""
-
-#: src/stored/btape.c:2525
-msgid "Mount first tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2541
-msgid "Rewinding.\n"
-msgstr ""
-
-#: src/stored/btape.c:2546
-#, c-format
-msgid "Reading the first 10000 records from %u:%u.\n"
-msgstr ""
-
-#: 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:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
-#, c-format
-msgid "Reposition error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/btape.c:2556
-#, c-format
-msgid "Reading block %u.\n"
-msgstr ""
-
-#: 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:2563
-msgid ""
-"\n"
-"The last block on the tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2566
-msgid ""
-"\n"
-"The last block of the first tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2590
-msgid "Mount second tape. Press enter when ready: "
-msgstr ""
-
-#: src/stored/btape.c:2603
-#, c-format
-msgid "Reposition from %u:%u to 0:1\n"
-msgstr ""
-
-#: src/stored/btape.c:2608 src/stored/btape.c:2624
-#, c-format
-msgid "Reading block %d.\n"
-msgstr ""
-
-#: src/stored/btape.c:2614
-msgid ""
-"\n"
-"The first block on the second tape matches.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2630
-msgid ""
-"\n"
-"The last block on the second tape matches. Test succeeded.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:2647
-#, c-format
-msgid "10000 records read now at %d:%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
-msgid "Last block written"
-msgstr ""
-
-#: src/stored/btape.c:2675 src/stored/btape.c:2685
-msgid "Block read back"
-msgstr ""
-
-#: src/stored/btape.c:2676
-#, c-format
-msgid ""
-"\n"
-"\n"
-"The blocks differ at byte %u\n"
-msgstr ""
-
-#: src/stored/btape.c:2677
-msgid ""
-"\n"
-"\n"
-"!!!! The last block written and the block\n"
-"that was read back differ. The test FAILED !!!!\n"
-"This must be corrected before you use Bacula\n"
-"to write multi-tape Volumes.!!!!\n"
-msgstr ""
-
-#: src/stored/btape.c:2713
-#, c-format
-msgid "Last block at: %u:%u this_dev_block_num=%d\n"
-msgstr ""
-
-#: src/stored/btape.c:2727
-#, c-format
-msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
-msgstr ""
-
-#: src/stored/btape.c:2731
-msgid "Block not written"
-msgstr ""
-
-#: 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:2797
-msgid "Test writing blocks of 64512 bytes to tape.\n"
-msgstr ""
-
-#: src/stored/btape.c:2799
-msgid "How many blocks do you want to write? (1000): "
-msgstr ""
-
-#: src/stored/btape.c:2816
-#, c-format
-msgid "Begin writing %d Bacula blocks to tape ...\n"
-msgstr ""
-
-#: src/stored/btape.c:2859
-#, c-format
-msgid "Begin writing raw blocks of %u bytes.\n"
-msgstr ""
-
-#: src/stored/btape.c:2890
-msgid "test autochanger"
-msgstr ""
-
-#: src/stored/btape.c:2891
-msgid "backspace file"
-msgstr ""
-
-#: src/stored/btape.c:2892
-msgid "backspace record"
-msgstr ""
-
-#: src/stored/btape.c:2893
-msgid "list device capabilities"
-msgstr ""
-
-#: src/stored/btape.c:2894
-msgid "clear tape errors"
-msgstr ""
-
-#: src/stored/btape.c:2895
-msgid "go to end of Bacula data for append"
-msgstr ""
-
-#: src/stored/btape.c:2896
-msgid "go to the physical end of medium"
-msgstr ""
-
-#: src/stored/btape.c:2897
-msgid "fill tape, write onto second volume"
-msgstr ""
-
-#: src/stored/btape.c:2898
-msgid "read filled tape"
-msgstr ""
-
-#: src/stored/btape.c:2899
-msgid "forward space a file"
-msgstr ""
-
-#: src/stored/btape.c:2900
-msgid "forward space a record"
-msgstr ""
-
-#: src/stored/btape.c:2901
-msgid "print this command"
-msgstr ""
-
-#: src/stored/btape.c:2902
-msgid "write a Bacula label to the tape"
-msgstr ""
-
-#: src/stored/btape.c:2903
-msgid "load a tape"
-msgstr ""
-
-#: src/stored/btape.c:2904
-msgid "quit btape"
-msgstr ""
-
-#: src/stored/btape.c:2905
-msgid "use write() to fill tape"
-msgstr ""
-
-#: src/stored/btape.c:2906
-msgid "read and print the Bacula tape label"
-msgstr ""
-
-#: src/stored/btape.c:2907
-msgid "test record handling functions"
-msgstr ""
-
-#: src/stored/btape.c:2908
-msgid "rewind the tape"
-msgstr ""
-
-#: src/stored/btape.c:2909
-msgid "read() tape block by block to EOT and report"
-msgstr ""
-
-#: src/stored/btape.c:2910
-msgid "Bacula read block by block to EOT and report"
-msgstr ""
-
-#: 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:2912
-msgid "print tape status"
-msgstr ""
-
-#: src/stored/btape.c:2913
-msgid "General test Bacula tape functions"
-msgstr ""
-
-#: src/stored/btape.c:2914
-msgid "write an EOF on the tape"
-msgstr ""
-
-#: src/stored/btape.c:2915
-msgid "write a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2916
-msgid "read a single record"
-msgstr ""
-
-#: src/stored/btape.c:2917
-msgid "read a single Bacula block"
-msgstr ""
-
-#: src/stored/btape.c:2918
-msgid "quick fill command"
-msgstr ""
-
-#: src/stored/btape.c:2939
-#, c-format
-msgid "\"%s\" is an invalid command\n"
-msgstr ""
-
-#: src/stored/btape.c:2948
-#, c-format
-msgid "Interactive commands:\n"
-msgstr ""
-
-#: src/stored/btape.c:2959
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: btape <options> <device_name>\n"
-"       -b <file>   specify bootstrap 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"
-"       -p          proceed inspite of I/O errors\n"
-"       -s          turn off signals\n"
-"       -v          be verbose\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/stored/btape.c:3047
-#, c-format
-msgid "Mount second Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3075
-#, c-format
-msgid "Mount blank Volume on device %s and press return when ready: "
-msgstr ""
-
-#: src/stored/btape.c:3095
-#, c-format
-msgid "End of Volume \"%s\" %d records.\n"
-msgstr ""
-
-#: src/stored/btape.c:3109
-#, c-format
-msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:61
-#, c-format
-msgid "I only authenticate Directors, not %d\n"
-msgstr ""
-
-#: src/stored/authenticate.c:67 src/filed/authenticate.c:76
-#, c-format
-msgid "Bad Hello command from Director at %s. Len=%d.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:78 src/filed/authenticate.c:88
-#, c-format
-msgid "Bad Hello command from Director at %s: %s\n"
-msgstr ""
-
-#: src/stored/authenticate.c:92
-#, c-format
-msgid ""
-"Connection from unknown Director %s at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:129
-msgid ""
-"Incorrect password given by Director.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:137 src/stored/authenticate.c:248
-#: src/filed/authenticate.c:151 src/filed/authenticate.c:270
-msgid ""
-"Authorization problem: Remote server did not advertize required TLS "
-"support.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:155
-#, c-format
-msgid "TLS negotiation failed with DIR at \"%s:%d\"\n"
-msgstr ""
-
-#: src/stored/authenticate.c:191
-#, c-format
-msgid "Unable to authenticate Director at %s.\n"
-msgstr ""
-
-#: src/stored/authenticate.c:239 src/stored/authenticate.c:279
-#, c-format
-msgid ""
-"Incorrect authorization key from File daemon at %s rejected.\n"
-"Please see "
-msgstr ""
-
-#: src/stored/authenticate.c:266
-#, c-format
-msgid "TLS negotiation failed with FD at \"%s:%d\"\n"
-msgstr ""
-
-#: src/stored/wait.c:133
-#, c-format
-msgid "pthread timedwait error. ERR=%s\n"
-msgstr ""
-
-#: src/stored/wait.c:239
-#, c-format
-msgid "JobId=%s, Job %s waiting to reserve a device.\n"
-msgstr ""
-
-#: 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:115
-#, c-format
-msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
-msgstr ""
-
-#: src/stored/block.c:171
-#, c-format
-msgid "%d block read errors not printed.\n"
-msgstr ""
-
-#: 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: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: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:452
-#, c-format
-msgid "Cannot write block. Device at EOM. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:458
-#, c-format
-msgid "Attempt to write on read-only Volume. dev=%s\n"
-msgstr ""
-
-#: src/stored/block.c:464
-#, c-format
-msgid "Attempt to write on closed device=%s\n"
-msgstr ""
-
-#: src/stored/block.c:513
-#, c-format
-msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
-msgstr ""
-
-#: src/stored/block.c:528
-#, c-format
-msgid "Unable to write EOF. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:554 src/stored/block.c:588
-msgid "Write block header zeroed.\n"
-msgstr ""
-
-#: 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: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:695 src/stored/block.c:701
-#, c-format
-msgid "Backspace file at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:708
-#, c-format
-msgid "Backspace record at EOT failed. ERR=%s\n"
-msgstr ""
-
-#: src/stored/block.c:725
-#, c-format
-msgid "Re-read last block at EOT failed. ERR=%s"
-msgstr ""
-
-#: 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: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:744
-msgid "Re-read of last block succeeded.\n"
-msgstr ""
-
-#: 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:791
-#, c-format
-msgid ""
-"Error writing final part to DVD. This Volume may not be readable.\n"
-"%s"
-msgstr ""
-
-#: 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:904
-#, c-format
-msgid "Unable to open device next part %s: ERR=%s\n"
-msgstr ""
-
-#: 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: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: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:1017
-#, c-format
-msgid "Unable to open device part=%d %s: ERR=%s\n"
-msgstr ""
-
-#: 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:1057
-#, c-format
-msgid "Read zero bytes at %u:%u on device %s.\n"
-msgstr ""
-
-#: 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:1107
-#, c-format
-msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
-msgstr ""
-
-#: src/stored/block.c:1127
-#, c-format
-msgid "Setting block buffer size to %u bytes.\n"
-msgstr ""
-
-#: 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:117
-#, c-format
-msgid "Failed to open Plugin directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:134
-#, c-format
-msgid "Failed to find any plugins in %s\n"
-msgstr ""
-
-#: 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:179
-#, c-format
-msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/plugins.c:188
-#, c-format
-msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:116
-msgid "Could not initialize Python\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:121
-#, c-format
-msgid "Could not Run Python string %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:133
-msgid "Could not initialize Python Job type.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:138
-#, c-format
-msgid "Could not import Python script %s/%s. Python disabled.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:240
-msgid "Could not create Python Job Object.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:253 src/lib/pythonlib.c:277
-#, c-format
-msgid "Python function \"%s\" not found.\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:292
-#, c-format
-msgid "Unknown Python daemon event %s\n"
-msgstr ""
-
-#: src/lib/pythonlib.c:317
-#, c-format
-msgid "Unable to initialize the Python lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:96
-#, c-format
-msgid "Unable to initialize watchdog lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:193
-msgid "BUG! register_watchdog called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:196
-#, c-format
-msgid "BUG! Watchdog %p has NULL callback\n"
-msgstr ""
-
-#: src/lib/watchdog.c:199
-#, c-format
-msgid "BUG! Watchdog %p has zero interval\n"
-msgstr ""
-
-#: src/lib/watchdog.c:219
-msgid "BUG! unregister_watchdog_unlocked called before start_watchdog\n"
-msgstr ""
-
-#: src/lib/watchdog.c:339
-#, c-format
-msgid "rwl_writelock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/watchdog.c:354
-#, c-format
-msgid "rwl_writeunlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/attr.c:81
-#, c-format
-msgid "Error scanning attributes: %s\n"
-msgstr ""
-
-#: src/lib/smartall.c:145 src/lib/smartall.c:256 src/lib/smartall.c:271
-msgid "Out of memory\n"
-msgstr ""
-
-#: src/lib/smartall.c:150
-msgid "Too much memory used."
-msgstr ""
-
-#: src/lib/smartall.c:180
-#, c-format
-msgid "Attempt to free NULL called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:194
-#, c-format
-msgid "double free from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:202
-#, c-format
-msgid "qp->qnext->qprev != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:206
-#, c-format
-msgid "qp->qprev->qnext != qp called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:215
-#, c-format
-msgid "Overrun buffer: len=%d addr=%p allocated: %s:%d called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:293
-#, c-format
-msgid "sm_realloc size: %d\n"
-msgstr ""
-
-#: src/lib/smartall.c:331
-#, c-format
-msgid "sm_realloc %d at %p from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:391
-#, c-format
-msgid ""
-"\n"
-"Orphaned buffers exist.  Dump terminated following\n"
-"  discovery of bad links in chain of orphaned buffers.\n"
-"  Buffer address with bad links: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:436
-#, c-format
-msgid "Damaged buffer found. Called from %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:469
-#, c-format
-msgid ""
-"\n"
-"Damaged buffers found at %s:%d\n"
-msgstr ""
-
-#: src/lib/smartall.c:472
-msgid "  discovery of bad prev link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:475
-msgid "  discovery of bad next link.\n"
-msgstr ""
-
-#: src/lib/smartall.c:478
-msgid "  discovery of data overrun.\n"
-msgstr ""
-
-#: src/lib/smartall.c:481
-msgid "  NULL pointer.\n"
-msgstr ""
-
-#: src/lib/smartall.c:487
-#, c-format
-msgid "  Buffer address: %p\n"
-msgstr ""
-
-#: src/lib/smartall.c:494
-#, c-format
-msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
-msgstr ""
-
-#: 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: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: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: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: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:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
-msgid "Try write lock"
-msgstr ""
-
-#: 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:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
-msgid "Create thread"
-msgstr ""
-
-#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
-msgid "Join thread"
-msgstr ""
-
-#: 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:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
-#, c-format
-msgid "data %02d: value %d, %d updates\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:97
-msgid "Status OK\n"
-msgstr ""
-
-#: src/lib/bget_msg.c:101
-#, c-format
-msgid "bget_msg: unknown signal %d\n"
-msgstr ""
-
-#: 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:137
-#, c-format
-msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:207
-#, c-format
-msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:260
-#, c-format
-msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:273
-#, c-format
-msgid "Source address bind error. proto=%d. ERR=%s\n"
-msgstr ""
-
-#: 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:292
-#, c-format
-msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
-msgstr ""
-
-#: src/lib/bsock.c:339
-#, c-format
-msgid "Could not init bsock mutex. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:374
-#, c-format
-msgid "Socket has errors=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:381
-#, c-format
-msgid "Socket is terminated=%d on call to %s:%s:%d\n"
-msgstr ""
-
-#: 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:427
-#, c-format
-msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
-msgstr ""
-
-#: 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:522 src/lib/bsock.c:583
-#, c-format
-msgid "Read expected %d got %d from %s:%s:%d\n"
-msgstr ""
-
-#: src/lib/bsock.c:542
-#, c-format
-msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
-msgstr ""
-
-#: src/lib/bsock.c:572
-#, c-format
-msgid "Read error from %s:%s:%d: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsock.c:663
-msgid "fread attr spool I/O error.\n"
-msgstr ""
-
-#: src/lib/bsock.c:724
-msgid "Could not malloc BSOCK data buffer\n"
-msgstr ""
-
-#: src/lib/bsock.c:742 src/lib/bsock.c:761
-#, c-format
-msgid "sockopt error: %s\n"
-msgstr ""
-
-#: 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:787 src/lib/bsock.c:821
-#, c-format
-msgid "fcntl F_GETFL error. ERR=%s\n"
-msgstr ""
-
-#: 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: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: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 ""
-"Проблеми авторизації: Віддалений сервер \"%s:%d\" не повідомляє про "
-"необхідність використання TLS.\n"
-
-#: 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 ""
-"Проблеми авторизації Керівника \"%s:%d\": Віддалений сепвер вимагає TLS.\n"
-
-#: 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: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 ""
-"Погана відповідь на команду Hello: ERR=%s\n"
-"Керівник \"%s:%d\" ймовірно не запущений.\n"
-
-#: 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:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
-#, fuzzy, c-format
-msgid ""
-"Authorization problem with Director at \"%s:%d\"\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-"Проблеми авторизації із Керівником \"%s:%d\"\n"
-"Швидше за все, проблема у паролях.\n"
-"Якщо Ви використовуєте TLS, можливо, невдала перевірка сертифікату під час "
-"TLS handshake.\n"
-"Для отримання допомоги, будь ласка, перегляньте http://www.bacula.org/en/rel-"
-"manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000.\n"
-
-#: 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:377
-#, c-format
-msgid "Could not get con mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:482
-msgid "Bacula Message"
-msgstr ""
-
-#: src/lib/message.c:486
-#, c-format
-msgid "open mail pipe %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:577
-msgid "open mail pipe failed.\n"
-msgstr ""
-
-#: src/lib/message.c:590
-#, c-format
-msgid "close error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:601
-#, c-format
-msgid "Mail prog: %s"
-msgstr ""
-
-#: src/lib/message.c:610
-#, c-format
-msgid ""
-"Mail program terminated in error.\n"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: src/lib/message.c:713
-#, c-format
-msgid "fopen %s failed: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"CMD=%s\n"
-"ERR=%s\n"
-msgstr ""
-
-#: 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:1230
-#, c-format
-msgid "%s: ABORTING due to ERROR in %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1234
-#, c-format
-msgid "%s: ERROR TERMINATION at %s:%d\n"
-msgstr ""
-
-#: src/lib/message.c:1239
-#, c-format
-msgid "%s: Fatal Error because: "
-msgstr ""
-
-#: src/lib/message.c:1241
-#, c-format
-msgid "%s: Fatal Error at %s:%d because:\n"
-msgstr ""
-
-#: src/lib/message.c:1245
-#, c-format
-msgid "%s: ERROR: "
-msgstr ""
-
-#: src/lib/message.c:1247
-#, c-format
-msgid "%s: ERROR in %s:%d "
-msgstr ""
-
-#: src/lib/message.c:1250
-#, c-format
-msgid "%s: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1253
-#, c-format
-msgid "%s: Security violation: "
-msgstr ""
-
-#: src/lib/message.c:1341
-#, c-format
-msgid "%s ABORTING due to ERROR\n"
-msgstr ""
-
-#: src/lib/message.c:1344
-#, c-format
-msgid "%s ERROR TERMINATION\n"
-msgstr ""
-
-#: src/lib/message.c:1347
-#, c-format
-msgid "%s JobId %u: Fatal error: "
-msgstr ""
-
-#: src/lib/message.c:1356
-#, c-format
-msgid "%s JobId %u: Error: "
-msgstr ""
-
-#: src/lib/message.c:1362
-#, c-format
-msgid "%s JobId %u: Warning: "
-msgstr ""
-
-#: src/lib/message.c:1368
-#, c-format
-msgid "%s JobId %u: Security violation: "
-msgstr ""
-
-#: 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:138
-#, c-format
-msgid "Cannot set SO_REUSEADDR on socket: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:147
-#, c-format
-msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:152
-#, c-format
-msgid "Cannot bind port %d: ERR=%s.\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:163
-#, c-format
-msgid "Could not init client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:182
-#, c-format
-msgid "Error in select: %s\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:203
-#, c-format
-msgid "Connection from %s:%d refused by hosts.access\n"
-msgstr ""
-
-#: src/lib/bnet_server.c:229
-msgid "Could not create client BSOCK.\n"
-msgstr ""
-
-#: 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:253
-#, c-format
-msgid "Could not destroy client queue: ERR=%s\n"
-msgstr ""
-
-#: src/lib/bpipe.c:361 src/lib/bpipe.c:444
-msgid "Program killed by Bacula (timeout)\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:65
-#, c-format
-msgid "ASSERT failed at %s:%i: %s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:70
-#, c-format
-msgid "ASSERT failed at %s:%i: %s \n"
-msgstr ""
-
-#: src/lib/lockmgr.c:100
-#, c-format
-msgid "Mutex lock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:110
-#, c-format
-msgid "Mutex unlock failure. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:275 src/lib/lockmgr.c:611 src/lib/lockmgr.c:639
-#: src/lib/jcr.c:321
-#, c-format
-msgid "pthread key create failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/lockmgr.c:623
-#, c-format
-msgid "pthread_create failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/crypto.c:442
-msgid "Unable to open certificate file"
-msgstr ""
-
-#: src/lib/crypto.c:449
-msgid "Unable to read certificate from file"
-msgstr ""
-
-#: src/lib/crypto.c:455
-msgid "Unable to extract public key from certificate"
-msgstr ""
-
-#: src/lib/crypto.c:462
-msgid ""
-"Provided certificate does not include the required subjectKeyIdentifier "
-"extension."
-msgstr ""
-
-#: src/lib/crypto.c:469
-#, c-format
-msgid "Unsupported key type provided: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:506 src/lib/crypto.c:554
-msgid "Unable to open private key file"
-msgstr ""
-
-#: src/lib/crypto.c:536 src/lib/crypto.c:570
-msgid "Unable to read private key from file"
-msgstr ""
-
-#: src/lib/crypto.c:629
-#, c-format
-msgid "Unsupported digest type: %d\n"
-msgstr "Цей тип відбитку не підтримується: %d\n"
-
-#: src/lib/crypto.c:643
-msgid "OpenSSL digest initialization failed"
-msgstr "Відбиток"
-
-#: src/lib/crypto.c:657
-msgid "OpenSSL digest update failed"
-msgstr "Відбиток"
-
-#: src/lib/crypto.c:675
-msgid "OpenSSL digest finalize failed"
-msgstr "Відбиток"
-
-#: src/lib/crypto.c:773
-msgid "OpenSSL digest_new failed"
-msgstr ""
-
-#: src/lib/crypto.c:779
-msgid "OpenSSL sign get digest failed"
-msgstr "Відбиток"
-
-#: src/lib/crypto.c:818 src/lib/crypto.c:822
-msgid "OpenSSL digest Verify final failed"
-msgstr "Відбиток"
-
-#: src/lib/crypto.c:827
-msgid "No signers found for crypto verify.\n"
-msgstr ""
-
-#: src/lib/crypto.c:888
-msgid "Signature creation failed"
-msgstr ""
-
-#: src/lib/crypto.c:966
-msgid "Signature decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1043
-msgid "Unsupported cipher type specified\n"
-msgstr ""
-
-#: src/lib/crypto.c:1192
-msgid "CryptoData decoding failed"
-msgstr ""
-
-#: src/lib/crypto.c:1236
-msgid "Failure decrypting the session key"
-msgstr ""
-
-#: src/lib/crypto.c:1287
-#, c-format
-msgid "Unsupported contentEncryptionAlgorithm: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1297 src/lib/crypto.c:1303
-msgid "OpenSSL cipher context initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1310
-msgid "Encryption session provided an invalid symmetric key"
-msgstr ""
-
-#: src/lib/crypto.c:1316
-msgid "Encryption session provided an invalid IV"
-msgstr ""
-
-#: src/lib/crypto.c:1322
-msgid "OpenSSL cipher context key/IV initialization failed"
-msgstr ""
-
-#: src/lib/crypto.c:1392
-#, c-format
-msgid "Unable to init OpenSSL threading: ERR=%s\n"
-msgstr ""
-
-#: src/lib/crypto.c:1405
-msgid "Failed to seed OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1431
-msgid "Failed to save OpenSSL PRNG\n"
-msgstr ""
-
-#: src/lib/crypto.c:1492
-#, c-format
-msgid "Unsupported digest type=%d specified\n"
-msgstr "Заданий тип відбитку=%d не підтримується\n"
-
-#: src/lib/crypto.c:1512
-#, c-format
-msgid "SHA1Update() returned an error: %d\n"
-msgstr ""
-
-#: src/lib/crypto.c:1655
-msgid "No error"
-msgstr ""
-
-#: src/lib/crypto.c:1657
-msgid "Signer not found"
-msgstr ""
-
-#: src/lib/crypto.c:1659
-msgid "Recipient not found"
-msgstr ""
-
-#: src/lib/crypto.c:1661
-msgid "Unsupported digest algorithm"
-msgstr "Відбиток"
-
-#: src/lib/crypto.c:1663
-msgid "Unsupported encryption algorithm"
-msgstr ""
-
-#: src/lib/crypto.c:1665
-msgid "Signature is invalid"
-msgstr ""
-
-#: src/lib/crypto.c:1667
-msgid "Decryption error"
-msgstr ""
-
-#: src/lib/crypto.c:1670
-msgid "Internal error"
-msgstr ""
-
-#: src/lib/crypto.c:1672
-msgid "Unknown error"
-msgstr ""
-
-#: src/lib/cram-md5.c:109 src/lib/cram-md5.c:137
-msgid "1999 Authorization failed.\n"
-msgstr ""
-
-#: src/lib/priv.c:68
-#, c-format
-msgid "Could not find userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:74
-#, c-format
-msgid "Could not find password entry. ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:87
-#, c-format
-msgid "Could not find group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:95
-#, c-format
-msgid "Could not initgroups for group=%s, userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:98
-#, c-format
-msgid "Could not initgroups for userid=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:105
-#, c-format
-msgid "Could not set group=%s: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:115
-#, fuzzy, c-format
-msgid "prctl failed: ERR=%s\n"
-msgstr "Помилка у %s файл %s: ERR=%s\n"
-
-#: src/lib/priv.c:119
-#, fuzzy, c-format
-msgid "setreuid failed: ERR=%s\n"
-msgstr "Помилка у %s файл %s: ERR=%s\n"
-
-#: src/lib/priv.c:123
-#, c-format
-msgid "cap_from_text failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:127
-#, c-format
-msgid "cap_set_proc failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/priv.c:131
-msgid "Keep readall caps not implemented this OS or missing libraries.\n"
-msgstr ""
-
-#: src/lib/priv.c:135
-#, c-format
-msgid "Could not set specified userid: %s\n"
-msgstr ""
-
-#: src/lib/openssl.c:143 src/lib/openssl.c:214
-#, c-format
-msgid "Unable to destroy mutex: ERR=%s\n"
-msgstr ""
-
-#: src/lib/util.c:183
-msgid "Running"
-msgstr ""
-
-#: src/lib/util.c:186
-msgid "Blocked"
-msgstr ""
-
-#: src/lib/util.c:192
-msgid "Error: incomplete job"
-msgstr ""
-
-#: src/lib/util.c:199
-msgid "Non-fatal error"
-msgstr ""
-
-#: src/lib/util.c:205 src/lib/util.c:337
-msgid "Canceled"
-msgstr ""
-
-#: src/lib/util.c:208
-msgid "Verify differences"
-msgstr ""
-
-#: src/lib/util.c:211
-msgid "Waiting on FD"
-msgstr ""
-
-#: src/lib/util.c:214
-msgid "Wait on SD"
-msgstr ""
-
-#: src/lib/util.c:217
-msgid "Wait for new Volume"
-msgstr ""
-
-#: src/lib/util.c:220
-msgid "Waiting for mount"
-msgstr ""
-
-#: src/lib/util.c:223
-msgid "Waiting for Storage resource"
-msgstr ""
-
-#: src/lib/util.c:226
-msgid "Waiting for Job resource"
-msgstr ""
-
-#: src/lib/util.c:229
-msgid "Waiting for Client resource"
-msgstr ""
-
-#: src/lib/util.c:232
-msgid "Waiting on Max Jobs"
-msgstr ""
-
-#: src/lib/util.c:235
-msgid "Waiting for Start Time"
-msgstr ""
-
-#: src/lib/util.c:238
-msgid "Waiting on Priority"
-msgstr ""
-
-#: src/lib/util.c:257
-#, c-format
-msgid "Unknown Job termination status=%d"
-msgstr ""
-
-#: src/lib/util.c:273
-msgid "Completed successfully"
-msgstr ""
-
-#: src/lib/util.c:276
-msgid "Completed with warnings"
-msgstr ""
-
-#: src/lib/util.c:279
-msgid "Terminated with errors"
-msgstr ""
-
-#: src/lib/util.c:282
-msgid "Fatal error"
-msgstr ""
-
-#: src/lib/util.c:285
-msgid "Created, not yet running"
-msgstr ""
-
-#: src/lib/util.c:288
-msgid "Canceled by user"
-msgstr ""
-
-#: src/lib/util.c:291
-msgid "Verify found differences"
-msgstr ""
-
-#: src/lib/util.c:294
-msgid "Waiting for File daemon"
-msgstr ""
-
-#: src/lib/util.c:297
-msgid "Waiting for Storage daemon"
-msgstr ""
-
-#: src/lib/util.c:300
-msgid "Waiting for higher priority jobs"
-msgstr ""
-
-#: src/lib/util.c:303
-msgid "Batch inserting file records"
-msgstr ""
-
-#: src/lib/util.c:334
-msgid "Fatal Error"
-msgstr ""
-
-#: src/lib/util.c:340
-msgid "Differences"
-msgstr ""
-
-#: src/lib/util.c:343
-msgid "Unknown term code"
-msgstr ""
-
-#: src/lib/util.c:359 src/lib/jcr.c:232
-msgid "Backup"
-msgstr ""
-
-#: src/lib/util.c:362
-msgid "Migrated Job"
-msgstr ""
-
-#: src/lib/util.c:365
-msgid "Verify"
-msgstr ""
-
-#: src/lib/util.c:368 src/wx-console/wxbrestorepanel.cpp:404
-#: src/wx-console/wxbrestorepanel.cpp:2000
-msgid "Restore"
-msgstr ""
-
-#: src/lib/util.c:371 src/wx-console/wxbmainframe.cpp:276
-msgid "Console"
-msgstr ""
-
-#: src/lib/util.c:374
-msgid "System or Console"
-msgstr ""
-
-#: src/lib/util.c:377
-msgid "Admin"
-msgstr ""
-
-#: src/lib/util.c:380 src/lib/util.c:470
-msgid "Archive"
-msgstr ""
-
-#: src/lib/util.c:383
-msgid "Job Copy"
-msgstr ""
-
-#: src/lib/util.c:386
-msgid "Copy"
-msgstr ""
-
-#: src/lib/util.c:389
-msgid "Migrate"
-msgstr ""
-
-#: src/lib/util.c:392
-msgid "Scan"
-msgstr ""
-
-#: src/lib/util.c:396
-msgid "Unknown Type"
-msgstr ""
-
-#: src/lib/util.c:406
-msgid "Truncate"
-msgstr ""
-
-#: src/lib/util.c:409 src/filed/restore.c:1164
-msgid "None"
-msgstr ""
-
-#: src/lib/util.c:441
-msgid "Verify Init Catalog"
-msgstr ""
-
-#: src/lib/util.c:450
-msgid "Verify Data"
-msgstr ""
-
-#: src/lib/util.c:453
-msgid "Virtual Full"
-msgstr ""
-
-#: src/lib/util.c:469
-msgid "Append"
-msgstr ""
-
-#: src/lib/util.c:471
-msgid "Disabled"
-msgstr ""
-
-#: src/lib/util.c:473
-msgid "Used"
-msgstr ""
-
-#: src/lib/util.c:474
-msgid "Cleaning"
-msgstr ""
-
-#: src/lib/util.c:475
-msgid "Purged"
-msgstr ""
-
-#: src/lib/util.c:476
-msgid "Recycle"
-msgstr ""
-
-#: src/lib/util.c:477
-msgid "Read-Only"
-msgstr ""
-
-#: src/lib/util.c:489
-msgid "Invalid volume status"
-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:1180
-msgid "*none*"
-msgstr ""
-
-#: src/lib/util.c:867
-msgid "Working directory not defined. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:870
-#, c-format
-msgid "Working Directory: \"%s\" not found. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/util.c:874
-#, c-format
-msgid "Working Directory: \"%s\" is not a directory. Cannot continue.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:330 src/lib/devlock.c:330
-msgid "writeunlock called too many times.\n"
-msgstr ""
-
-#: src/lib/save/devlock.c:335 src/lib/devlock.c:335
-msgid "writeunlock by non-owner.\n"
-msgstr ""
-
-#: src/lib/daemon.c:65
-#, c-format
-msgid "Cannot fork to become daemon: ERR=%s\n"
-msgstr ""
-
-#: src/lib/tls.c:90
-#, c-format
-msgid ""
-"Error with certificate at depth: %d, issuer = %s, subject = %s, ERR=%d:%s\n"
-msgstr ""
-
-#: src/lib/tls.c:127
-msgid "Error initializing SSL context"
-msgstr ""
-
-#: src/lib/tls.c:148
-msgid "Error loading certificate verification stores"
-msgstr ""
-
-#: src/lib/tls.c:153
-msgid ""
-"Either a certificate file or a directory must be specified as a verification "
-"store\n"
-msgstr ""
-
-#: src/lib/tls.c:164
-msgid "Error loading certificate file"
-msgstr ""
-
-#: src/lib/tls.c:172
-msgid "Error loading private key"
-msgstr ""
-
-#: src/lib/tls.c:180
-msgid "Unable to open DH parameters file"
-msgstr ""
-
-#: src/lib/tls.c:186
-msgid "Unable to load DH parameters from specified file"
-msgstr ""
-
-#: src/lib/tls.c:190
-msgid "Failed to set TLS Diffie-Hellman parameters"
-msgstr ""
-
-#: src/lib/tls.c:200
-msgid "Error setting cipher list, no valid ciphers available\n"
-msgstr ""
-
-#: src/lib/tls.c:259
-msgid "Peer failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:304
-#, c-format
-msgid "Peer %s failed to present a TLS certificate\n"
-msgstr ""
-
-#: src/lib/tls.c:416
-msgid "Error creating file descriptor-based BIO"
-msgstr ""
-
-#: src/lib/tls.c:427
-msgid "Error creating new SSL object"
-msgstr ""
-
-#: src/lib/tls.c:491 src/lib/tls.c:514
-msgid "Connect failure"
-msgstr ""
-
-#: src/lib/tls.c:594 src/lib/tls.c:598
-msgid "TLS shutdown failure."
-msgstr ""
-
-#: src/lib/tls.c:653 src/lib/tls.c:679
-msgid "TLS read/write failure."
-msgstr ""
-
-#: src/lib/jcr.c:234
-msgid "Verifying"
-msgstr ""
-
-#: src/lib/jcr.c:236
-msgid "Restoring"
-msgstr ""
-
-#: src/lib/jcr.c:238
-msgid "Archiving"
-msgstr ""
-
-#: src/lib/jcr.c:240
-msgid "Copying"
-msgstr ""
-
-#: src/lib/jcr.c:242
-msgid "Migration"
-msgstr ""
-
-#: src/lib/jcr.c:244
-msgid "Scanning"
-msgstr ""
-
-#: src/lib/jcr.c:246
-msgid "Unknown operation"
-msgstr ""
-
-#: src/lib/jcr.c:255
-msgid "backup"
-msgstr ""
-
-#: src/lib/jcr.c:257
-msgid "verified"
-msgstr ""
-
-#: src/lib/jcr.c:257
-msgid "verify"
-msgstr ""
-
-#: src/lib/jcr.c:259
-msgid "restored"
-msgstr ""
-
-#: src/lib/jcr.c:259
-msgid "restore"
-msgstr ""
-
-#: src/lib/jcr.c:261
-msgid "archived"
-msgstr ""
-
-#: src/lib/jcr.c:261
-msgid "archive"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copied"
-msgstr ""
-
-#: src/lib/jcr.c:263
-msgid "copy"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrated"
-msgstr ""
-
-#: src/lib/jcr.c:265
-msgid "migrate"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scanned"
-msgstr ""
-
-#: src/lib/jcr.c:267
-msgid "scan"
-msgstr ""
-
-#: src/lib/jcr.c:269
-msgid "unknown action"
-msgstr ""
-
-#: src/lib/jcr.c:343
-#, c-format
-msgid "pthread_once failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/jcr.c:350
-#, fuzzy, c-format
-msgid "Could not init msg_queue mutex. ERR=%s\n"
-msgstr "Не вдалось відкрити%s: ERR=%s\n"
-
-#: src/lib/jcr.c:403
-msgid "NULL jcr.\n"
-msgstr ""
-
-#: src/lib/jcr.c:509
-#, c-format
-msgid "JCR use_count=%d JobId=%d\n"
-msgstr ""
-
-#: src/lib/jcr.c:619
-#, c-format
-msgid "pthread_setspecific failed: ERR=%s\n"
-msgstr ""
-
-#: 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:1115
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
-msgstr ""
-
-#: src/lib/jcr.c:1127
-#, c-format
-msgid ""
-"Watchdog sending kill after %d secs to thread stalled reading Director.\n"
-msgstr ""
-
-#: src/lib/res.c:65
-#, c-format
-msgid "rwl_writelock failure at %s:%d:  ERR=%s\n"
-msgstr ""
-
-#: src/lib/res.c:75
-#, c-format
-msgid "rwl_writeunlock failure at %s:%d:. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:177
-msgid "***UNKNOWN***"
-msgstr ""
-
-#: src/lib/parse_conf.c:278 src/lib/parse_conf.c:299
-#, c-format
-msgid "expected an =, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:308
-#, c-format
-msgid "Unknown item code: %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:348
-#, c-format
-msgid "message type: %s not found"
-msgstr ""
-
-#: src/lib/parse_conf.c:386
-#, c-format
-msgid "Attempt to redefine name \"%s\" to \"%s\"."
-msgstr ""
-
-#: src/lib/parse_conf.c:483
-#, c-format
-msgid "Attempt to redefine resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:519
-#, c-format
-msgid "Too many %s directives. Max. is %d. line %d: %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:530
-#, c-format
-msgid "Could not find config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:593
-#, c-format
-msgid "Missing config Resource \"%s\" referenced on line %d : %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:665
-#, c-format
-msgid "expected a size number, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:670
-#, c-format
-msgid "expected a speed number, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:681
-#, c-format
-msgid "expected a %s, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "size"
-msgstr ""
-
-#: src/lib/parse_conf.c:682
-msgid "speed"
-msgstr ""
-
-#: src/lib/parse_conf.c:803
-#, c-format
-msgid "Expected a Tape Label keyword, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:886
-#, c-format
-msgid "Unable to initialize resource lock. ERR=%s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:894
-msgid "Config filename too long.\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:917
-#, c-format
-msgid "Cannot open config file \"%s\": %s\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:934
-msgid ""
-"Currently we cannot handle UTF-16 source files. Please convert the conf file "
-"to UTF-8\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:938
-#, c-format
-msgid "Expected a Resource name identifier, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:954
-#, c-format
-msgid "expected resource name, got: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:965
-#, c-format
-msgid "not in resource definition: %s"
-msgstr ""
-
-#: src/lib/parse_conf.c:990
-#, c-format
-msgid ""
-"Keyword \"%s\" not permitted in this resource.\n"
-"Perhaps you left the trailing brace off of the previous resource."
-msgstr ""
-
-#: src/lib/parse_conf.c:1001
-msgid "Name not specified for resource"
-msgstr ""
-
-#: src/lib/parse_conf.c:1011
-#, c-format
-msgid "unexpected token %d %s in resource definition"
-msgstr ""
-
-#: src/lib/parse_conf.c:1017
-#, c-format
-msgid "Unknown parser state %d\n"
-msgstr ""
-
-#: src/lib/parse_conf.c:1022
-msgid "End of conf file reached with unclosed resource."
-msgstr ""
-
-#: src/lib/mem_pool.c:112
-#, c-format
-msgid "MemPool index %d larger than max %d\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:130 src/lib/mem_pool.c:150 src/lib/mem_pool.c:186
-#: src/lib/mem_pool.c:257 src/lib/mem_pool.c:277 src/lib/mem_pool.c:312
-#: src/lib/mem_pool.c:623
-#, c-format
-msgid "Out of memory requesting %d bytes\n"
-msgstr ""
-
-#: src/lib/mem_pool.c:167
-msgid "obuf is NULL\n"
-msgstr ""
-
-#: src/lib/berrno.c:63
-msgid "Child exited normally."
-msgstr ""
-
-#: src/lib/berrno.c:70
-msgid "Unknown error during program execvp"
-msgstr ""
-
-#: src/lib/berrno.c:73
-#, c-format
-msgid "Child exited with code %d"
-msgstr ""
-
-#: src/lib/berrno.c:81
-#, c-format
-msgid "Child died from signal %d: %s"
-msgstr ""
-
-#: src/lib/berrno.c:87
-msgid "Invalid errno. No error message possible."
-msgstr ""
-
-#: src/lib/bnet.c:134
-#, c-format
-msgid "Attr spool write error. ERR=%s\n"
-msgstr ""
-
-#: src/lib/bnet.c:279 src/lib/bnet.c:320
-msgid "TLS connection initialization failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:287
-msgid "TLS Negotiation failed.\n"
-msgstr ""
-
-#: src/lib/bnet.c:293 src/lib/bnet.c:335
-msgid ""
-"TLS certificate verification failed. Peer certificate did not match a "
-"required commonName\n"
-msgstr ""
-
-#: src/lib/bnet.c:342
-#, c-format
-msgid ""
-"TLS host certificate verification failed. Host name \"%s\" did not match "
-"presented certificate\n"
-msgstr ""
-
-#: src/lib/bnet.c:359
-msgid "TLS enabled but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:365
-msgid "TLS enable but not configured.\n"
-msgstr ""
-
-#: src/lib/bnet.c:481
-msgid "No problem."
-msgstr ""
-
-#: src/lib/bnet.c:484
-msgid "Authoritative answer for host not found."
-msgstr ""
-
-#: src/lib/bnet.c:487
-msgid "Non-authoritative for host not found, or ServerFail."
-msgstr ""
-
-#: src/lib/bnet.c:490
-msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
-msgstr ""
-
-#: src/lib/bnet.c:493
-msgid "Valid name, no data record of resquested type."
-msgstr ""
-
-#: src/lib/bnet.c:496
-msgid "Unknown error."
-msgstr ""
-
-#: src/lib/bnet.c:755
-#, c-format
-msgid "Unknown sig %d"
-msgstr ""
-
-#: src/lib/signal.c:67
-msgid "Invalid signal number"
-msgstr ""
-
-#: 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:167
-#, c-format
-msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
-msgstr ""
-
-#: src/lib/signal.c:169
-#, c-format
-msgid "Kaboom! exepath=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:210
-#, c-format
-msgid "Fork error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:218
-#, c-format
-msgid "Calling: %s %s %s %s\n"
-msgstr ""
-
-#: src/lib/signal.c:222
-#, c-format
-msgid "execv: %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/lib/signal.c:244
-#, c-format
-msgid "It looks like the traceback worked...\n"
-msgstr ""
-
-#: 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:312
-msgid "UNKNOWN SIGNAL"
-msgstr ""
-
-#: src/lib/signal.c:313
-msgid "Hangup"
-msgstr ""
-
-#: src/lib/signal.c:314
-msgid "Interrupt"
-msgstr ""
-
-#: src/lib/signal.c:315
-msgid "Quit"
-msgstr ""
-
-#: src/lib/signal.c:316
-msgid "Illegal instruction"
-msgstr ""
-
-#: src/lib/signal.c:317
-msgid "Trace/Breakpoint trap"
-msgstr ""
-
-#: src/lib/signal.c:318
-msgid "Abort"
-msgstr ""
-
-#: src/lib/signal.c:320
-msgid "EMT instruction (Emulation Trap)"
-msgstr ""
-
-#: src/lib/signal.c:323
-msgid "IOT trap"
-msgstr ""
-
-#: src/lib/signal.c:325
-msgid "BUS error"
-msgstr ""
-
-#: src/lib/signal.c:326
-msgid "Floating-point exception"
-msgstr ""
-
-#: src/lib/signal.c:327
-msgid "Kill, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:328
-msgid "User-defined signal 1"
-msgstr ""
-
-#: src/lib/signal.c:329
-msgid "Segmentation violation"
-msgstr ""
-
-#: src/lib/signal.c:330
-msgid "User-defined signal 2"
-msgstr ""
-
-#: src/lib/signal.c:331
-msgid "Broken pipe"
-msgstr ""
-
-#: src/lib/signal.c:332
-msgid "Alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:333
-msgid "Termination"
-msgstr ""
-
-#: src/lib/signal.c:335
-msgid "Stack fault"
-msgstr ""
-
-#: src/lib/signal.c:337
-msgid "Child status has changed"
-msgstr ""
-
-#: src/lib/signal.c:338
-msgid "Continue"
-msgstr ""
-
-#: src/lib/signal.c:339
-msgid "Stop, unblockable"
-msgstr ""
-
-#: src/lib/signal.c:340
-msgid "Keyboard stop"
-msgstr ""
-
-#: src/lib/signal.c:341
-msgid "Background read from tty"
-msgstr ""
-
-#: src/lib/signal.c:342
-msgid "Background write to tty"
-msgstr ""
-
-#: src/lib/signal.c:343
-msgid "Urgent condition on socket"
-msgstr ""
-
-#: src/lib/signal.c:344
-msgid "CPU limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:345
-msgid "File size limit exceeded"
-msgstr ""
-
-#: src/lib/signal.c:346
-msgid "Virtual alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:347
-msgid "Profiling alarm clock"
-msgstr ""
-
-#: src/lib/signal.c:348
-msgid "Window size change"
-msgstr ""
-
-#: src/lib/signal.c:349
-msgid "I/O now possible"
-msgstr ""
-
-#: src/lib/signal.c:351
-msgid "Power failure restart"
-msgstr ""
-
-#: src/lib/signal.c:354
-msgid "No runnable lwp"
-msgstr ""
-
-#: src/lib/signal.c:357
-msgid "SIGLWP special signal used by thread library"
-msgstr ""
-
-#: src/lib/signal.c:360
-msgid "Checkpoint Freeze"
-msgstr ""
-
-#: src/lib/signal.c:363
-msgid "Checkpoint Thaw"
-msgstr ""
-
-#: src/lib/signal.c:366
-msgid "Thread Cancellation"
-msgstr ""
-
-#: 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: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:357
-msgid "Buffer overflow.\n"
-msgstr ""
-
-#: src/lib/bsys.c:423
-msgid "Bad errno"
-msgstr ""
-
-#: src/lib/bsys.c:438
-#, c-format
-msgid "Memset for %d bytes at %s:%d\n"
-msgstr ""
-
-#: src/lib/bsys.c:468
-#, c-format
-msgid "Cannot open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:483
-#, c-format
-msgid ""
-"%s is already running. pid=%d\n"
-"Check file %s\n"
-msgstr ""
-
-#: src/lib/bsys.c:497
-#, c-format
-msgid "Could not open pid file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:608
-#, c-format
-msgid "Could not create state file. %s ERR=%s\n"
-msgstr ""
-
-#: src/lib/bsys.c:627
-#, c-format
-msgid "Write final hdr error: ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:236
-#, c-format
-msgid "%s: run %s \"%s\"\n"
-msgstr ""
-
-#: src/lib/runscript.c:245
-#, c-format
-msgid "Runscript: %s could not execute. ERR=%s\n"
-msgstr ""
-
-#: src/lib/runscript.c:254
-#, c-format
-msgid "%s: %s\n"
-msgstr ""
-
-#: src/lib/runscript.c:259
-#, c-format
-msgid "Runscript: %s returned non-zero status=%d. ERR=%s\n"
-msgstr ""
-
-#: src/lib/lex.c:91 src/wx-console/console_thread.cpp:212
-#, c-format
-msgid "Problem probably begins at line %d.\n"
-msgstr ""
-
-#: src/lib/lex.c:96 src/wx-console/console_thread.cpp:217
-#, c-format
-msgid ""
-"Config error: %s\n"
-"            : line %d, col %d of file %s\n"
-"%s\n"
-"%s"
-msgstr ""
-
-#: src/lib/lex.c:100
-#, c-format
-msgid "Config error: %s\n"
-msgstr ""
-
-#: src/lib/lex.c:129
-msgid "Close of NULL file\n"
-msgstr ""
-
-#: 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:268
-#, c-format
-msgid "Config token too long, file: %s, line %d, begins at line %d\n"
-msgstr ""
-
-#: src/lib/lex.c:292
-msgid "none"
-msgstr ""
-
-#: src/lib/lex.c:293
-msgid "comment"
-msgstr ""
-
-#: src/lib/lex.c:294
-msgid "number"
-msgstr ""
-
-#: src/lib/lex.c:295
-msgid "ip_addr"
-msgstr ""
-
-#: src/lib/lex.c:296
-msgid "identifier"
-msgstr ""
-
-#: src/lib/lex.c:297
-msgid "string"
-msgstr ""
-
-#: src/lib/lex.c:298
-msgid "quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:299
-msgid "include"
-msgstr ""
-
-#: src/lib/lex.c:300
-msgid "include_quoted_string"
-msgstr ""
-
-#: src/lib/lex.c:301
-msgid "UTF-8 Byte Order Mark"
-msgstr ""
-
-#: src/lib/lex.c:302
-msgid "UTF-16le Byte Order Mark"
-msgstr ""
-
-#: 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: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:625 src/lib/lex.c:653
-#, c-format
-msgid "Cannot open included config file %s: %s\n"
-msgstr ""
-
-#: 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: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:783
-#, c-format
-msgid "expected a name, got %s: %s"
-msgstr ""
-
-#: src/lib/lex.c:787
-#, c-format
-msgid "name %s length %d too long, max is %d\n"
-msgstr ""
-
-#: src/lib/lex.c:795
-#, c-format
-msgid "expected a string, got %s: %s"
-msgstr ""
-
-#: src/lib/var.c:2669
-msgid "everything ok"
-msgstr ""
-
-#: src/lib/var.c:2670
-msgid "incomplete named character"
-msgstr ""
-
-#: src/lib/var.c:2671
-msgid "incomplete hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2672
-msgid "invalid hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2673
-msgid "octal value too large"
-msgstr ""
-
-#: src/lib/var.c:2674
-msgid "invalid octal value"
-msgstr ""
-
-#: src/lib/var.c:2675
-msgid "incomplete octal value"
-msgstr ""
-
-#: src/lib/var.c:2676
-msgid "incomplete grouped hexadecimal value"
-msgstr ""
-
-#: src/lib/var.c:2677
-msgid "incorrect character class specification"
-msgstr ""
-
-#: src/lib/var.c:2678
-msgid "invalid expansion configuration"
-msgstr ""
-
-#: src/lib/var.c:2679
-msgid "out of memory"
-msgstr ""
-
-#: src/lib/var.c:2680
-msgid "incomplete variable specification"
-msgstr ""
-
-#: src/lib/var.c:2681
-msgid "undefined variable"
-msgstr ""
-
-#: src/lib/var.c:2682
-msgid "input is neither text nor variable"
-msgstr ""
-
-#: src/lib/var.c:2683
-msgid "unknown command character in variable"
-msgstr ""
-
-#: src/lib/var.c:2684
-msgid "malformatted search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2685
-msgid "unknown flag in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2686
-msgid "invalid regex in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2687
-msgid "missing parameter in command"
-msgstr ""
-
-#: src/lib/var.c:2688
-msgid "empty search string in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2689
-msgid "start offset missing in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2690
-msgid "offsets in cut operation delimited by unknown character"
-msgstr ""
-
-#: src/lib/var.c:2691
-msgid "range out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2692
-msgid "offset out of bounds in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2693
-msgid "logic error in cut operation"
-msgstr ""
-
-#: src/lib/var.c:2694
-msgid "malformatted transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2695
-msgid "source and target class mismatch in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2696
-msgid "empty character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2697
-msgid "incorrect character class in transpose operation"
-msgstr ""
-
-#: src/lib/var.c:2698
-msgid "malformatted padding operation"
-msgstr ""
-
-#: src/lib/var.c:2699
-msgid "width parameter missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2700
-msgid "fill string missing in padding operation"
-msgstr ""
-
-#: src/lib/var.c:2701
-msgid "unknown quoted pair in search and replace operation"
-msgstr ""
-
-#: src/lib/var.c:2702
-msgid "sub-matching reference out of range"
-msgstr ""
-
-#: src/lib/var.c:2703
-msgid "invalid argument"
-msgstr ""
-
-#: src/lib/var.c:2704
-msgid "incomplete quoted pair"
-msgstr ""
-
-#: src/lib/var.c:2705
-msgid "lookup function does not support variable arrays"
-msgstr ""
-
-#: src/lib/var.c:2706
-msgid "index of array variable contains an invalid character"
-msgstr ""
-
-#: src/lib/var.c:2707
-msgid "index of array variable is incomplete"
-msgstr ""
-
-#: src/lib/var.c:2708
-msgid "bracket expression in array variable's index not closed"
-msgstr ""
-
-#: src/lib/var.c:2709
-msgid "division by zero error in index specification"
-msgstr ""
-
-#: src/lib/var.c:2710
-msgid "unterminated loop construct"
-msgstr ""
-
-#: src/lib/var.c:2711
-msgid "invalid character in loop limits"
-msgstr ""
-
-#: src/lib/var.c:2712
-msgid "malformed operation argument list"
-msgstr ""
-
-#: src/lib/var.c:2713
-msgid "undefined operation"
-msgstr ""
-
-#: src/lib/var.c:2714
-msgid "formatting failure"
-msgstr ""
-
-#: src/lib/var.c:2723
-msgid "unknown error"
-msgstr ""
-
-#: src/lib/address_conf.c:62
-#, c-format
-msgid "Only ipv4 and ipv6 are supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:66
-#, c-format
-msgid "Only ipv4 is supported (%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:175
-#, c-format
-msgid "It was tried to assign a ipv6 address to a ipv4(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:184
-#, c-format
-msgid "It was tried to assign a ipv4 address to a ipv6(%d)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:263
-#, c-format
-msgid "Can't add default address (%s)\n"
-msgstr ""
-
-#: src/lib/address_conf.c:292
-msgid "the old style addresses cannot be mixed with new style"
-msgstr ""
-
-#: src/lib/address_conf.c:313
-#, c-format
-msgid "can't resolve service(%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:322
-#, c-format
-msgid "can't resolve hostname(%s) %s"
-msgstr ""
-
-#: src/lib/address_conf.c:412 src/lib/address_conf.c:443
-#, c-format
-msgid "Expected a block begin { , got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:417
-msgid "Empty addr block is not allowed"
-msgstr ""
-
-#: src/lib/address_conf.c:421
-#, c-format
-msgid "Expected a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:430
-#, c-format
-msgid "Expected a string [ip|ipv4|ipv6], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:434
-#, c-format
-msgid "Expected a string [ip|ipv4], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:439 src/lib/address_conf.c:469
-#, c-format
-msgid "Expected a equal =, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:450 src/lib/address_conf.c:465
-#, c-format
-msgid "Expected a identifier [addr|port], got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:455
-msgid "Only one port per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:461
-msgid "Only one addr per address block"
-msgstr ""
-
-#: src/lib/address_conf.c:477
-#, c-format
-msgid "Expected a number or a string, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:483 src/lib/address_conf.c:516
-#, c-format
-msgid "Expected an IP number or a hostname, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:489
-msgid "State machine missmatch"
-msgstr ""
-
-#: src/lib/address_conf.c:495 src/lib/address_conf.c:507
-#, c-format
-msgid "Expected a end of block }, got: %s"
-msgstr ""
-
-#: src/lib/address_conf.c:501
-#, c-format
-msgid "Can't add hostname(%s) and port(%s) to addrlist (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:521 src/lib/address_conf.c:535
-#, c-format
-msgid "can't add port (%s) to (%s)"
-msgstr ""
-
-#: src/lib/address_conf.c:530
-#, c-format
-msgid "Expected a port number or string, got: %s"
-msgstr ""
-
-#: src/lib/edit.c:478
-msgid "Empty name not allowed.\n"
-msgstr ""
-
-#: src/lib/edit.c:488
-#, c-format
-msgid "Illegal character \"%c\" in name.\n"
-msgstr ""
-
-#: src/lib/edit.c:495
-msgid "Name too long.\n"
-msgstr ""
-
-#: src/findlib/savecwd.c:60
-#, c-format
-msgid "Cannot open current directory: ERR=%s\n"
-msgstr "Не можливо відкрити поточну теку: ERR=%s\n"
-
-#: src/findlib/savecwd.c:71
-#, c-format
-msgid "Cannot get current directory: ERR=%s\n"
-msgstr "Не можливо отримати поточну теку: ERR=%s\n"
-
-#: src/findlib/savecwd.c:95 src/findlib/savecwd.c:106
-#, c-format
-msgid "Cannot reset current directory: ERR=%s\n"
-msgstr "Не можливо перевстановити поточну теку: ERR=%s\n"
-
-#: src/findlib/mkpath.c:137
-#, c-format
-msgid "Cannot create directory %s: ERR=%s\n"
-msgstr "Не можливо створити теку %s: ERR=%s\n"
-
-#: src/findlib/mkpath.c:141 src/findlib/mkpath.c:202
-#, c-format
-msgid "%s exists but is not a directory.\n"
-msgstr "%s існує, але не є текою.\n"
-
-#: src/findlib/mkpath.c:164
-#, c-format
-msgid "Cannot change owner and/or group of %s: ERR=%s\n"
-msgstr "Не можливо змінити власника та/або групу для %s: ERR=%s\n"
-
-#: src/findlib/mkpath.c:169
-#, c-format
-msgid "Cannot change permissions of %s: ERR=%s\n"
-msgstr "Не можливо змінити дозволи для %s: ERR=%s\n"
-
-#: src/findlib/mkpath.c:239
-#, c-format
-msgid "%c: is not a valid drive.\n"
-msgstr "%c: не вірний пристрій.\n"
-
-#: src/findlib/mkpath.c:283
-msgid "Too many subdirectories. Some permissions not reset.\n"
-msgstr "Забагато підтек. Деякі обмеження не перевстановлено.\n"
-
-#: src/findlib/attribs.c:483
-#, c-format
-msgid "File size of restored file %s not correct. Original %s, restored %s.\n"
-msgstr ""
-"Не правильний розмір відновленого файлу %s. Оригінальний %s, відновлений "
-"%s.\n"
-
-#: src/findlib/attribs.c:509 src/findlib/attribs.c:516
-#, c-format
-msgid "Unable to set file owner %s: ERR=%s\n"
-msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
-
-#: src/findlib/attribs.c:522
-#, c-format
-msgid "Unable to set file modes %s: ERR=%s\n"
-msgstr "Не можливо встановити параметри файлу %s: ERR=%s\n"
-
-#: src/findlib/attribs.c:532
-#, c-format
-msgid "Unable to set file times %s: ERR=%s\n"
-msgstr "Не можливо встановити час файлу %s: ERR=%s\n"
-
-#: src/findlib/attribs.c:546
-#, c-format
-msgid "Unable to set file flags %s: ERR=%s\n"
-msgstr "Не можливо встановити прапорці файлу %s: ERR=%s\n"
-
-#: src/findlib/attribs.c:799
-#, c-format
-msgid "Error in %s file %s: ERR=%s\n"
-msgstr "Помилка у %s файл %s: ERR=%s\n"
-
-#: src/findlib/attribs.c:816
-#, c-format
-msgid "Error in %s: ERR=%s\n"
-msgstr "Помилка у %s: ERR=%s\n"
-
-#: src/findlib/enable_priv.c:92
-msgid "AdjustTokenPrivileges set "
-msgstr ""
-
-#: src/findlib/create_file.c:124
-#, c-format
-msgid "File skipped. Not newer: %s\n"
-msgstr "Файл пропущено. Не новий: %s\n"
-
-#: src/findlib/create_file.c:131
-#, c-format
-msgid "File skipped. Not older: %s\n"
-msgstr "Файл пропущено. Не застарілий: %s\n"
-
-#: src/findlib/create_file.c:141
-#, c-format
-msgid "File skipped. Already exists: %s\n"
-msgstr "Файл пропущено. Вже існує: %s\n"
-
-#: src/findlib/create_file.c:167
-#, c-format
-msgid "File %s already exists and could not be replaced. ERR=%s.\n"
-msgstr "Файл %s існує та його не вдалось замінити. ERR=%s.\n"
-
-#: src/findlib/create_file.c:218 src/findlib/create_file.c:282
-#: src/findlib/create_file.c:378
-#, c-format
-msgid "bpkt already open fid=%d\n"
-msgstr ""
-
-#: 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"
-
-#: src/findlib/create_file.c:241
-#, c-format
-msgid "Cannot make fifo %s: ERR=%s\n"
-msgstr "Не можливо створити чергу(fifo) %s: ERR=%s\n"
-
-#: src/findlib/create_file.c:259
-#, c-format
-msgid "Cannot make node %s: ERR=%s\n"
-msgstr "Не вдалось створити ноду(node) %s: ERR=%s\n"
-
-#: src/findlib/create_file.c:304
-#, c-format
-msgid "Could not symlink %s -> %s: ERR=%s\n"
-msgstr "Не вдалось створити лінку(symlink) %s -> %s: ERR=%s\n"
-
-#: src/findlib/create_file.c:329 src/findlib/create_file.c:342
-#, c-format
-msgid "Could not restore file flags for file %s: ERR=%s\n"
-msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
-
-#: src/findlib/create_file.c:333 src/findlib/create_file.c:350
-#, c-format
-msgid "Could not hard link %s -> %s: ERR=%s\n"
-msgstr "Не вдалось створити жорстку лінку(hardlink) %s -> %s: ERR=%s\n"
-
-#: src/findlib/create_file.c:346
-#, c-format
-msgid "Could not reset file flags for file %s: ERR=%s\n"
-msgstr "Не вдалось перевстановити прапорці для файлу %s: ERR=%s\n"
-
-#: src/findlib/create_file.c:401
-#, c-format
-msgid "Original file %s have been deleted: type=%d\n"
-msgstr "Оригінальний файл %s було видалено: тип=%d\n"
-
-#: src/findlib/create_file.c:413
-#, c-format
-msgid "Original file %s not saved: type=%d\n"
-msgstr "Оригінальний файл %s не збережено: тип=%d\n"
-
-#: src/findlib/create_file.c:416
-#, c-format
-msgid "Unknown file type %d; not restored: %s\n"
-msgstr "Невідомий тип файлу %d: не відновлено: %s\n"
-
-#: src/findlib/create_file.c:460
-#, c-format
-msgid "Zero length filename: %s\n"
-msgstr "Пуста назва файлу: %s\n"
-
-#: src/findlib/bfile.c:97
-msgid "Unix attributes"
-msgstr "Атрибули Unix"
-
-#: src/findlib/bfile.c:99
-msgid "File data"
-msgstr "Дата файлу"
-
-#: src/findlib/bfile.c:101
-msgid "MD5 digest"
-msgstr "Відбиток MD5"
-
-#: src/findlib/bfile.c:103
-msgid "GZIP data"
-msgstr "Дані, запаковані GZIP"
-
-#: src/findlib/bfile.c:105
-#, fuzzy
-msgid "Compressed data"
-msgstr "Замало даних"
-
-#: src/findlib/bfile.c:107
-msgid "Extended attributes"
-msgstr "Додаткові атрибути"
-
-#: src/findlib/bfile.c:109
-msgid "Sparse data"
-msgstr "Замало даних"
-
-#: src/findlib/bfile.c:111
-msgid "GZIP sparse data"
-msgstr "Замало даних GZIP "
-
-#: src/findlib/bfile.c:113
-#, fuzzy
-msgid "Compressed sparse data"
-msgstr "Замало даних GZIP "
-
-#: src/findlib/bfile.c:115
-msgid "Program names"
-msgstr "Назви програми"
-
-#: src/findlib/bfile.c:117
-msgid "Program data"
-msgstr "Програмні дані"
-
-#: src/findlib/bfile.c:119
-msgid "SHA1 digest"
-msgstr "Відбиток HA1"
-
-#: src/findlib/bfile.c:121
-msgid "Win32 data"
-msgstr "Дані Win32"
-
-#: src/findlib/bfile.c:123
-msgid "Win32 GZIP data"
-msgstr "Дані Win32 GZIP"
-
-#: src/findlib/bfile.c:125
-#, fuzzy
-msgid "Win32 compressed data"
-msgstr "Дані Win32"
-
-#: src/findlib/bfile.c:127
-msgid "MacOS Fork data"
-msgstr "Дані MacOS Fork"
-
-#: src/findlib/bfile.c:129
-msgid "HFS+ attribs"
-msgstr "Атрибути HFS+"
-
-#: src/findlib/bfile.c:131
-msgid "Standard Unix ACL attribs"
-msgstr "Стандартні атрибути Unix ACL"
-
-#: src/findlib/bfile.c:133
-msgid "Default Unix ACL attribs"
-msgstr "Звичійні атрибути Unix ACL"
-
-#: src/findlib/bfile.c:135
-msgid "SHA256 digest"
-msgstr "Відбиток SHA256"
-
-#: src/findlib/bfile.c:137
-msgid "SHA512 digest"
-msgstr "Відбиток SHA512"
-
-#: src/findlib/bfile.c:139
-msgid "Signed digest"
-msgstr "Підписаний відбиток"
-
-#: src/findlib/bfile.c:141
-msgid "Encrypted File data"
-msgstr "Зашифровані файли"
-
-#: src/findlib/bfile.c:143
-msgid "Encrypted Win32 data"
-msgstr "Зашифровані дані Win32"
-
-#: src/findlib/bfile.c:145
-msgid "Encrypted session data"
-msgstr "Зашифровані дані сесій"
-
-#: src/findlib/bfile.c:147
-msgid "Encrypted GZIP data"
-msgstr "Зашифровані дані GZIP"
-
-#: src/findlib/bfile.c:149
-#, fuzzy
-msgid "Encrypted compressed data"
-msgstr "Зашифровані дані сесій"
-
-#: src/findlib/bfile.c:151
-msgid "Encrypted Win32 GZIP data"
-msgstr "Зашифровані дані Win32 GZIP"
-
-#: src/findlib/bfile.c:153
-#, fuzzy
-msgid "Encrypted Win32 Compressed data"
-msgstr "Зашифровані дані Win32"
-
-#: src/findlib/bfile.c:155
-msgid "Encrypted MacOS fork data"
-msgstr "Зашифровані дані MacOS Fork "
-
-#: src/findlib/bfile.c:157
-msgid "AIX Specific ACL attribs"
-msgstr "Специфічні атрибути AIX ACL"
-
-#: src/findlib/bfile.c:159
-msgid "Darwin Specific ACL attribs"
-msgstr "Специфічні атрибути Darwin ACL"
-
-#: src/findlib/bfile.c:161
-msgid "FreeBSD Specific Default ACL attribs"
-msgstr "Специфічні атрибути FreeBSD Default ACL"
-
-#: src/findlib/bfile.c:163
-msgid "FreeBSD Specific Access ACL attribs"
-msgstr "Специфічні атрибути FreeBSD Access ACL"
-
-#: src/findlib/bfile.c:165
-msgid "HPUX Specific ACL attribs"
-msgstr "Специфічні атрибути HPUX ACL"
-
-#: src/findlib/bfile.c:167
-msgid "Irix Specific Default ACL attribs"
-msgstr "Специфічні атрибути Irix Default ACL"
-
-#: src/findlib/bfile.c:169
-msgid "Irix Specific Access ACL attribs"
-msgstr "Специфічні атрибути Irix Access ACL"
-
-#: src/findlib/bfile.c:171
-msgid "Linux Specific Default ACL attribs"
-msgstr "Специфічні атрибути Linux Default ACL"
-
-#: src/findlib/bfile.c:173
-msgid "Linux Specific Access ACL attribs"
-msgstr "Специфічні атрибути Linux Access ACL"
-
-#: src/findlib/bfile.c:175
-#, fuzzy
-msgid "TRU64 Specific Default ACL attribs"
-msgstr "Специфічні атрибути Irix Default ACL"
-
-#: src/findlib/bfile.c:177
-#, fuzzy
-msgid "TRU64 Specific Access ACL attribs"
-msgstr "Специфічні атрибути Irix Access ACL"
-
-#: src/findlib/bfile.c:179
-#, fuzzy
-msgid "Solaris Specific POSIX ACL attribs"
-msgstr "Специфічні атрибути Solaris ACL"
-
-#: src/findlib/bfile.c:181
-#, fuzzy
-msgid "Solaris Specific NFSv4/ZFS ACL attribs"
-msgstr "Специфічні атрибути Solaris ACL"
-
-#: src/findlib/bfile.c:183
-#, fuzzy
-msgid "AFS Specific ACL attribs"
-msgstr "Специфічні атрибути AIX ACL"
-
-#: src/findlib/bfile.c:185
-#, fuzzy
-msgid "AIX Specific POSIX ACL attribs"
-msgstr "Специфічні атрибути AIX ACL"
-
-#: src/findlib/bfile.c:187
-#, fuzzy
-msgid "AIX Specific NFSv4 ACL attribs"
-msgstr "Специфічні атрибути AIX ACL"
-
-#: src/findlib/bfile.c:189
-#, fuzzy
-msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
-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:199
-#, fuzzy
-msgid "TRU64 Specific Extended attribs"
-msgstr "Специфічні додаткові атрибути Linux"
-
-#: src/findlib/bfile.c:201
-#, fuzzy
-msgid "AIX Specific Extended attribs"
-msgstr "Специфічні додаткові атрибути Linux"
-
-#: src/findlib/bfile.c:203
-#, fuzzy
-msgid "OpenBSD Specific Extended attribs"
-msgstr "Специфічні додаткові атрибути NetBSD"
-
-#: src/findlib/bfile.c:205
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
-msgstr ""
-
-#: src/findlib/bfile.c:207
-msgid "Solaris Specific Extended attribs"
-msgstr "Специфічні додаткові атрибути Solaris"
-
-#: src/findlib/bfile.c:209
-msgid "Darwin Specific Extended attribs"
-msgstr "Специфічні додаткові атрибути Darwin"
-
-#: src/findlib/bfile.c:211
-msgid "FreeBSD Specific Extended attribs"
-msgstr "Специфічні додаткові атрибути FreeBS"
-
-#: src/findlib/bfile.c:213
-msgid "Linux Specific Extended attribs"
-msgstr "Специфічні додаткові атрибути Linux"
-
-#: src/findlib/bfile.c:215
-msgid "NetBSD Specific Extended attribs"
-msgstr "Специфічні додаткові атрибути NetBSD"
-
-#: 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:1460
-#, c-format
-msgid "Unknown include/exclude option: %c\n"
-msgstr "Не зрозуміла опція параметру include/exclude: %c\n"
-
-#: src/findlib/find_one.c:227
-#, c-format
-msgid "     NODUMP flag set - will not process %s\n"
-msgstr ""
-
-#: src/findlib/find_one.c:248
-#, c-format
-msgid "Cannot stat file %s: ERR=%s\n"
-msgstr ""
-
-#: src/findlib/find_one.c:253
-#, c-format
-msgid "%s mtime changed during backup.\n"
-msgstr "%s mtime змінився під час резервування.\n"
-
-#: src/findlib/find_one.c:260
-#, c-format
-msgid "%s ctime changed during backup.\n"
-msgstr "%s ctime змінився під час резервування.\n"
-
-#: 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:403
-#, c-format
-msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
-msgstr "Вища тека \"%s\" має незрозумілий тип файлової системи \"%s\"\n"
-
-#: src/findlib/find_one.c:418
-#, c-format
-msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
-msgstr "Вища тека \"%s\" має незрозумілий тип пристрою \"%s\"\n"
-
-#: src/cats/sql_create.c:101
-#, c-format
-msgid "Create DB Job record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:145
-#, c-format
-msgid "Create JobMedia record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:154
-#, c-format
-msgid "Update Media record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:189
-#, c-format
-msgid "pool record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:221
-#, c-format
-msgid "Create db Pool record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:254
-#, c-format
-msgid "Device record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:271
-#, c-format
-msgid "Create db Device record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:306
-#, c-format
-msgid "More than one Storage record!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:311
-#, c-format
-msgid "error fetching Storage row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:332
-#, c-format
-msgid "Create DB Storage record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:366
-#, c-format
-msgid "mediatype record %s already exists\n"
-msgstr ""
-
-#: src/cats/sql_create.c:383
-#, c-format
-msgid "Create db mediatype record %s failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:424
-#, c-format
-msgid "Volume \"%s\" already exists.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:470
-#, c-format
-msgid "Create DB Media record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:521
-#, c-format
-msgid "More than one Client!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:526
-#, c-format
-msgid "error fetching Client row: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:554
-#, c-format
-msgid "Create DB Client record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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: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:621
-#, c-format
-msgid "Create db Path record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:666
-#, c-format
-msgid "Create DB Counters record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:704
-#, c-format
-msgid "More than one FileSet!: %d\n"
-msgstr ""
-
-#: src/cats/sql_create.c:709
-#, c-format
-msgid "error fetching FileSet row: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:740
-#, c-format
-msgid "Create DB FileSet record %s failed. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:989
-#, c-format
-msgid "Create db File record %s failed. ERR=%s"
-msgstr ""
-
-#: src/cats/sql_create.c:1015
-#, c-format
-msgid "More than one Filename! %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1021
-#, c-format
-msgid "Error fetching row for file=%s: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1038
-#, c-format
-msgid "Create db Filename record %s failed. ERR=%s\n"
-msgstr ""
-
-#: 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.\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
-msgid "ERR=JobIds are empty\n"
-msgstr ""
-
-#: src/cats/sql_create.c:1219
-#, fuzzy, c-format
-msgid "Create db Object record %s failed. ERR=%s"
-msgstr "Не можливо створити теку %s: ERR=%s\n"
-
-#: src/cats/sql_get.c:151
-#, c-format
-msgid "Error fetching row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:158
-#, c-format
-msgid "get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:166
-#, c-format
-msgid "File record for PathId=%s FilenameId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:172
-msgid "File record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:199
-#, c-format
-msgid "More than one Filename!: %s for file: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:209
-#, c-format
-msgid "Get DB Filename record %s found bad record: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:215
-#, c-format
-msgid "Filename record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:219
-#, c-format
-msgid "Filename record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:262
-#, c-format
-msgid "Get DB path record %s found bad record: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:275
-#, c-format
-msgid "Path record: %s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:279
-#, c-format
-msgid "Path record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:318
-#, c-format
-msgid "No Job found for JobId %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:391 src/cats/sql_get.c:448
-#, c-format
-msgid "No volumes found for JobId=%d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:397 src/cats/sql_get.c:459
-#, c-format
-msgid "Error fetching row %d: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:411
-#, c-format
-msgid "No Volume for JobId %d found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:552
-#, c-format
-msgid "Pool id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:589
-#, c-format
-msgid "Client id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:635
-#, c-format
-msgid "More than one Pool!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:679
-msgid "Pool record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:717
-#, c-format
-msgid "More than one Client!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:734 src/cats/sql_get.c:738
-msgid "Client record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:765
-#, c-format
-msgid "More than one Counter!: %d\n"
-msgstr ""
-
-#: src/cats/sql_get.c:770
-#, c-format
-msgid "error fetching Counter row: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:790
-#, c-format
-msgid "Counter record: %s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:830
-#, c-format
-msgid "Error got %s FileSets but expected only one!\n"
-msgstr ""
-
-#: src/cats/sql_get.c:835
-#, c-format
-msgid "FileSet record \"%s\" not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:845
-msgid "FileSet record not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:941
-#, c-format
-msgid "Media id select failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:979
-#, c-format
-msgid "query dbids failed: ERR=%s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1034
-#, c-format
-msgid "More than one Volume!: %s\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1090
-#, c-format
-msgid "Media record MediaId=%s not found.\n"
-msgstr ""
-
-#: src/cats/sql_get.c:1093
-#, c-format
-msgid "Media record for Volume \"%s\" not found.\n"
-msgstr ""
-
-#: 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:1103
-#, c-format
-msgid "Media record for Vol=%s not found in Catalog.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:98 src/cats/sql_find.c:127 src/cats/sql_find.c:182
-#, c-format
-msgid ""
-"Query error for start time request: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:104 src/cats/sql_find.c:188
-msgid "No prior Full backup Job record found.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:116
-#, c-format
-msgid "Unknown level=%d\n"
-msgstr ""
-
-#: src/cats/sql_find.c:133
-#, c-format
-msgid ""
-"No Job record found: ERR=%s\n"
-"CMD=%s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:291
-#, c-format
-msgid "Unknown Job level=%d\n"
-msgstr ""
-
-#: src/cats/sql_find.c:301
-#, c-format
-msgid "No Job found for: %s.\n"
-msgstr ""
-
-#: src/cats/sql_find.c:312
-#, c-format
-msgid "No Job found for: %s\n"
-msgstr ""
-
-#: src/cats/sql_find.c:393
-#, c-format
-msgid "Request for Volume item %d greater than max %d or less than 1\n"
-msgstr ""
-
-#: src/cats/sql_find.c:408
-#, c-format
-msgid "No Volume record found for item %d.\n"
-msgstr ""
-
-#: 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:181
-#, c-format
-msgid "Database %s does not exist, please create it.\n"
-msgstr ""
-
-#: src/cats/sqlite.c:203
-#, c-format
-msgid "Unable to open Database=%s. ERR=%s\n"
-msgstr ""
-
-#: src/cats/sqlite.c:204
-msgid "unknown"
-msgstr ""
-
-#: 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 ""
-
-#: src/cats/ingres.c:87
-msgid "Failed to allocate space for query filter.\n"
-msgstr ""
-
-#: src/cats/ingres.c:108
-msgid "Failed to allocate space for query filters.\n"
-msgstr ""
-
-#: src/cats/ingres.c:267
-#, c-format
-msgid ""
-"Unable to connect to Ingres server.\n"
-"Database=%s User=%s\n"
-"It is probably not running or your password is incorrect.\n"
-msgstr ""
-
-#: src/cats/ingres.c:1087
-msgid "A user name for Ingres must be supplied.\n"
-msgstr ""
-
-#: src/cats/sql.c:184
-#, c-format
-msgid ""
-"Potential performance problem:\n"
-"max_connections=%d set for %s database \"%s\" should be larger than "
-"Director's MaxConcurrentJobs=%d\n"
-msgstr ""
-
-#: src/cats/sql.c:229
-#, c-format
-msgid ""
-"query %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:251
-#, c-format
-msgid ""
-"insert %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:261
-#, c-format
-msgid "Insertion problem: affected_rows=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:282
-#, c-format
-msgid ""
-"update %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:292
-#, c-format
-msgid "Update failed: affected_rows=%s for %s\n"
-msgstr ""
-
-#: src/cats/sql.c:314
-#, c-format
-msgid ""
-"delete %s failed:\n"
-"%s\n"
-msgstr ""
-
-#: src/cats/sql.c:408
-#, c-format
-msgid "Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/cats/sql.c:603
-msgid "No results to list.\n"
-msgstr ""
-
-#: src/cats/sql.c:721
-#, fuzzy
-msgid "Could not init database batch connection\n"
-msgstr "Не вдалось відкрити%s: ERR=%s\n"
-
-#: src/cats/sql.c:727
-#, c-format
-msgid "Could not open database \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:181
-#, c-format
-msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:246
-#, c-format
-msgid ""
-"Unable to connect to PostgreSQL server. Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:350
-msgid "PQescapeStringConn returned non-zero.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:368
-msgid "PQescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:399
-msgid "PQunescapeByteaConn returned NULL.\n"
-msgstr ""
-
-#: src/cats/postgresql.c:813
-#, c-format
-msgid "error fetching currval: %s\n"
-msgstr ""
-
-#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
-#, c-format
-msgid "error starting batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
-#, c-format
-msgid "error ending batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1088
-#, c-format
-msgid "error copying in batch mode: %s"
-msgstr ""
-
-#: src/cats/postgresql.c:1110
-msgid "A user name for PostgreSQL must be supplied.\n"
-msgstr ""
-
-#: src/cats/sql_list.c:59
-#, c-format
-msgid "Query failed: %s\n"
-msgstr ""
-
-#: src/cats/sql_list.c:275
-msgid "These JobIds have copies as follows:\n"
-msgstr ""
-
-#: src/cats/sql_list.c:277
-msgid "The catalog contains copies as follows:\n"
-msgstr ""
-
-#: src/cats/dbi.c:117
-#, c-format
-msgid "Unknown database type: %s\n"
-msgstr ""
-
-#: 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:299
-#, c-format
-msgid ""
-"Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
-"Possible causes: SQL server not running; password incorrect; max_connections "
-"exceeded.\n"
-msgstr ""
-
-#: src/cats/dbi.c:1439
-#, c-format
-msgid "error inserting batch mode: %s"
-msgstr ""
-
-#: src/cats/dbi.c:1456
-msgid "Driver type not specified in Catalog resource.\n"
-msgstr ""
-
-#: src/cats/dbi.c:1460
-msgid "Invalid driver type, must be \"dbi:<type>\"\n"
-msgstr ""
-
-#: src/cats/dbi.c:1464
-msgid "A user name for DBI must be supplied.\n"
-msgstr ""
-
-#: src/cats/cats_dummy.c:39
-msgid "Please replace this dummy libbaccats library with a proper one.\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:80
-#, c-format
-msgid "No pool record %s exists\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:85
-#, c-format
-msgid "Expecting one pool record, got %d\n"
-msgstr ""
-
-#: src/cats/sql_delete.c:91
-#, c-format
-msgid "Error fetching row %s\n"
-msgstr ""
-
-#: src/cats/mysql.c:207
-#, c-format
-msgid ""
-"Unable to connect to MySQL server.\n"
-"Database=%s User=%s\n"
-"MySQL connect failed either server not running or your authorization is "
-"incorrect.\n"
-msgstr ""
-
-#: src/cats/mysql.c:692
-msgid "A user name for MySQL must be supplied.\n"
-msgstr ""
-
-#: src/wx-console/console_conf.c:147 src/console/console_conf.c:140
-#: src/qt-console/bat_conf.cpp:141
-#, c-format
-msgid "No record for %d %s\n"
-msgstr "Відсутні записи для %d %s\n"
-
-#: src/wx-console/console_conf.c:156 src/console/console_conf.c:149
-#, c-format
-msgid "Console: name=%s rcfile=%s histfile=%s\n"
-msgstr "Консоль: назва=%s rcfile=%s histfile=%s\n"
-
-#: src/wx-console/console_conf.c:160 src/console/console_conf.c:153
-#: src/qt-console/bat_conf.cpp:150
-#, c-format
-msgid "Director: name=%s address=%s DIRport=%d\n"
-msgstr "Керівник: назва=%s адреса=%s DIRport=%d\n"
-
-#: src/wx-console/authenticate.c:142 src/console/authenticate.c:138
-msgid "TLS negotiation failed\n"
-msgstr "Невдале встановлення з'єднання TLS\n"
-
-#: src/wx-console/authenticate.c:150
-msgid "Bad response to Hello command: ERR="
-msgstr "Погана відповідь на команду Hello: ERR="
-
-#: src/wx-console/authenticate.c:167 src/console/authenticate.c:169
-#, fuzzy
-msgid ""
-"Director authorization problem.\n"
-"Most likely the passwords do not agree.\n"
-"If you are using TLS, there may have been a certificate validation error "
-"during the TLS handshake.\n"
-"Please see "
-msgstr ""
-"Проблеми авторизації Керівника.\n"
-"Швидше за все, проблема у паролях.\n"
-"Якщо Ви використовуєте TLS, можливо, невдала перевірка сертифікату під час "
-"TLS handshake.\n"
-"Для отримання допомоги, будь ласка, перегляньте http://www.bacula.org/en/rel-"
-"manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000.\n"
-
-#: src/console/console.c:126
-#, c-format
-msgid ""
-"\n"
-"Version: "
-msgstr ""
-"\n"
-"Вірсія: "
-
-#: src/console/console.c:178
-msgid "input from file"
-msgstr "введення із файлу"
-
-#: src/console/console.c:179
-msgid "output to file"
-msgstr "вивід до файлу"
-
-#: src/console/console.c:180
-msgid "quit"
-msgstr ""
-
-#: src/console/console.c:181
-msgid "output to file and terminal"
-msgstr "вивід до файлу та консолі"
-
-#: src/console/console.c:182
-msgid "sleep specified time"
-msgstr "зазначений час сну"
-
-#: src/console/console.c:183
-msgid "print current time"
-msgstr "вивести поточний час"
-
-#: src/console/console.c:184
-msgid "print Console's version"
-msgstr "вивести версію Консолі"
-
-#: src/console/console.c:185
-msgid "echo command string"
-msgstr "луна командного рядку"
-
-#: src/console/console.c:186
-msgid "execute an external command"
-msgstr "виконати зовнішню команду"
-
-#: src/console/console.c:187
-msgid "exit = quit"
-msgstr ""
-
-#: src/console/console.c:188
-msgid "zed_keys = use zed keys instead of bash keys"
-msgstr "zed_keys = використовувати zed keys замість bash keys"
-
-#: src/console/console.c:189
-msgid "help listing"
-msgstr "допомога"
-
-#: src/console/console.c:191
-msgid "set command separator"
-msgstr "задати роздільник команд"
-
-#: src/console/console.c:225
-msgid ": is an invalid command\n"
-msgstr ": неправильна команда\n"
-
-#: src/console/console.c:675
-msgid "Illegal separator character.\n"
-msgstr "Невірний символ роздільника.\n"
-
-#: src/console/console.c:708
-msgid "Command logic problem\n"
-msgstr "Проблеми логіки команди\n"
-
-#: src/console/console.c:925
-#, fuzzy, c-format
-msgid "Can't find %s in Director list\n"
-msgstr ": неправильна команда\n"
-
-#: src/console/console.c:933
-msgid "Available Directors:\n"
-msgstr "Наявні Керівники:\n"
-
-#: src/console/console.c:937
-#, c-format
-msgid "%2d:  %s at %s:%d\n"
-msgstr ""
-
-#: src/console/console.c:941
-msgid "Select Director by entering a number: "
-msgstr "Оберіть Керівника, увівши номер: "
-
-#: src/console/console.c:948
-#, c-format
-msgid "%s is not a number. You must enter a number between 1 and %d\n"
-msgstr "%s не є номером. Ви повинні увести номер із проміжку 1..%d\n"
-
-#: src/console/console.c:955
-#, c-format
-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: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:154
-#, c-format
-msgid "Failed to initialize TLS context for Director \"%s\".\n"
-msgstr "Ініціалізація контексту TLS для Керівника невдала \"%s\".\n"
-
-#: src/console/console.c:1210
-msgid "Enter a period to cancel a command.\n"
-msgstr "Уведіть цятку для переривання команди.\n"
-
-#: src/console/console.c:1304 src/qt-console/main.cpp:232
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Director \"%s\" in %s. At least one CA certificate store is required.\n"
-msgstr ""
-"Жоден із параметрів \"TLS CA Certificate\" або \"TLS CA Certificate Dir\" не "
-"задано для Керівника \"%s\" у %s. Необхідне щонайменше одне сховище для "
-"сертифікату CA.\n"
-
-#: src/console/console.c:1313 src/qt-console/main.cpp:241
-#, c-format
-msgid ""
-"No Director resource defined in %s\n"
-"Without that I don't how to speak to the Director :-(\n"
-msgstr ""
-"У %s не задано ресурсу Керівника\n"
-"Без цього я не знаю як спілкуватись із Керівником :-(\n"
-
-#: src/console/console.c:1333 src/qt-console/main.cpp:262
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Console \"%s\" in %s.\n"
-msgstr ""
-"Жоден із параметрів \"TLS CA Certificate\" або \"TLS CA Certificate Dir\" не "
-"задано для Консолі \"%s\" у %s.\n"
-
-#: src/console/console.c:1359
-msgid "Too many arguments on input command.\n"
-msgstr "Забагато параметрів команди.\n"
-
-#: src/console/console.c:1363
-msgid "First argument to input command must be a filename.\n"
-msgstr "Перший параметр команди повинен бути назвою файлу.\n"
-
-#: src/console/console.c:1369
-#, c-format
-msgid "Cannot open file %s for input. ERR=%s\n"
-msgstr "Не вдається відкрити файл %s для введення. ERR=%s\n"
-
-#: src/console/console.c:1401
-msgid "Too many arguments on output/tee command.\n"
-msgstr "Забагато параметрів на виході команди.\n"
-
-#: src/console/console.c:1418
-#, c-format
-msgid "Cannot open file %s for output. ERR=%s\n"
-msgstr "Не вдається відкрити файл %s для виведення. ERR=%s\n"
-
-#: src/console/console.c:1437
-msgid "Too many arguments. Enclose command in double quotes.\n"
-msgstr "Забагато параметрів. Оточіть комінду подвійними лапками.\n"
-
-#: src/console/console.c:1446
-#, c-format
-msgid "Cannot popen(\"%s\", \"r\"): ERR=%s\n"
-msgstr ""
-
-#: src/tools/testls.c:59
-#, c-format
-msgid ""
-"\n"
-"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -q          quiet, don't print filenames (debug)\n"
-"       -           read pattern(s) from stdin\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors always printed.\n"
-"Files/paths truncated is number with len > 255.\n"
-"Truncation is only in catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testls.c:155
-#, c-format
-msgid "Could not open include file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:168
-#, c-format
-msgid "Could not open exclude file: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:182
-#, c-format
-msgid "Files seen = %d\n"
-msgstr ""
-
-#: src/tools/testls.c:215 src/tools/testfind.c:322
-#, c-format
-msgid "Err: Could not access %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:218 src/tools/testfind.c:325
-#, c-format
-msgid "Err: Could not follow ff->link %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:221 src/tools/testfind.c:328
-#, c-format
-msgid "Err: Could not stat %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:224 src/tools/testfind.c:331
-#, c-format
-msgid "Skip: File not saved. No change. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:227 src/tools/testfind.c:334
-#, c-format
-msgid "Err: Attempt to backup archive. Not saved. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:230
-#, c-format
-msgid "Recursion turned off. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:233
-#, c-format
-msgid "Skip: File system change prohibited. Directory not entered. %s\n"
-msgstr ""
-
-#: src/tools/testls.c:236 src/tools/testfind.c:337
-#, c-format
-msgid "Err: Could not open directory %s: %s\n"
-msgstr ""
-
-#: src/tools/testls.c:239 src/tools/testfind.c:340
-#, c-format
-msgid "Err: Unknown file ff->type %d: %s\n"
-msgstr ""
-
-#: src/tools/bvfs_test.c:56 src/tools/ing_test.c:57
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -j <jobids>       specify jobids\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -T                truncate cache table before starting\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:79
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"Example : bbatch -w /path/to/workdir -h localhost -f dat1 -f dat -f datx\n"
-" will start 3 thread and load dat1, dat and datx in your catalog\n"
-"See bbatch.c to generate datafile\n"
-"\n"
-"Usage: bbatch [ options ] -w working/dir -f datafile\n"
-"       -b                with batch mode\n"
-"       -B                without batch mode\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -r <jobids>       call restore code with given jobids\n"
-"       -v                verbose\n"
-"       -f <file>         specify data file\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/bbatch.c:211
-#, c-format
-msgid "Computing file list for jobid=%s files=%lld secs=%d\n"
-msgstr ""
-
-#: src/tools/bbatch.c:315
-#, c-format
-msgid "Error opening datafile %s\n"
-msgstr ""
-
-#: src/tools/bbatch.c:325
-msgid "Error while inserting file\n"
-msgstr ""
-
-#: src/tools/ing_test.c:231 src/tools/ing_test.c:264 src/tools/ing_test.c:302
-msgid "Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:320
-msgid "CREATE-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/ing_test.c:325
-msgid "DROP-Stmt went wrong\n"
-msgstr ""
-
-#: src/tools/fstype.c:48
-#, c-format
-msgid ""
-"\n"
-"Usage: fstype [-v] path ...\n"
-"\n"
-"       Print the file system type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/fstype.c:102 src/tools/drivetype.c:78
-#, c-format
-msgid "%s: unknown\n"
-msgstr ""
-
-#: src/tools/bregex.c:153 src/tools/bwild.c:122 src/tools/bregtest.c:137
-#, c-format
-msgid "Could not open data file: %s\n"
-msgstr ""
-
-#: src/tools/drivetype.c:47
-#, c-format
-msgid ""
-"\n"
-"Usage: drivetype [-v] path ...\n"
-"\n"
-"       Print the drive type a given file/directory is on.\n"
-"       The following options are supported:\n"
-"\n"
-"       -l     print local fixed hard drive\n"
-"       -a     display information on all drives\n"
-"       -v     print both path and file system type.\n"
-"       -?     print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:70
-#, c-format
-msgid ""
-"\n"
-"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
-"       -a          print extended attributes (Win32 debug)\n"
-"       -d <nn>     set debug level to <nn>\n"
-"       -dt         print timestamp in debug output\n"
-"       -c          specify config file containing FileSet resources\n"
-"       -f          specify which FileSet to use\n"
-"       -?          print this message.\n"
-"\n"
-"Patterns are used for file inclusion -- normally directories.\n"
-"Debug level >= 1 prints each file found.\n"
-"Debug level >= 10 prints path/file for catalog.\n"
-"Errors are always printed.\n"
-"Files/paths truncated is the number of files/paths with len > 255.\n"
-"Truncation is only in the catalog.\n"
-"\n"
-msgstr ""
-
-#: src/tools/testfind.c:235
-#, c-format
-msgid ""
-"\n"
-"Total files    : %d\n"
-"Max file length: %d\n"
-"Max path length: %d\n"
-"Files truncated: %d\n"
-"Paths truncated: %d\n"
-"Hard links     : %d\n"
-msgstr ""
-
-#: src/tools/testfind.c:278
-#, c-format
-msgid "Reg: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:300
-msgid "\t[will not descend: recursion turned off]"
-msgstr ""
-
-#: src/tools/testfind.c:302
-msgid "\t[will not descend: file system change not allowed]"
-msgstr ""
-
-#: src/tools/testfind.c:304
-msgid "\t[will not descend: disallowed file system]"
-msgstr ""
-
-#: src/tools/testfind.c:306
-msgid "\t[will not descend: disallowed drive type]"
-msgstr ""
-
-#: src/tools/testfind.c:390
-#, c-format
-msgid "===== Filename truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:407
-#, c-format
-msgid "========== Path name truncated to 255 chars: %s\n"
-msgstr ""
-
-#: src/tools/testfind.c:416
-#, c-format
-msgid "========== Path length is zero. File=%s\n"
-msgstr ""
-
-#: src/tools/testfind.c:419
-#, c-format
-msgid "Path: %s\n"
-msgstr ""
-
-#: src/tools/cats_test.c:60
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"       -d <nn>           set debug level to <nn>\n"
-"       -dt               print timestamp in debug output\n"
-"       -n <name>         specify the database name (default bacula)\n"
-"       -u <user>         specify database user name (default bacula)\n"
-"       -P <password      specify database password (default none)\n"
-"       -h <host>         specify database host (default NULL)\n"
-"       -w <working>      specify working directory\n"
-"       -p <path>         specify path\n"
-"       -f <file>         specify file\n"
-"       -l <limit>        maximum tuple to fetch\n"
-"       -q                print only errors\n"
-"       -v                verbose\n"
-"       -?                print this message\n"
-"\n"
-msgstr ""
-
-#: src/tools/cats_test.c:376
-#, fuzzy, c-format
-msgid "Could not open, database \"%s\".\n"
-msgstr "Не вдалось відкрити%s: ERR=%s\n"
-
-#: src/tools/bsmtp.c:151
-#, c-format
-msgid "Fatal malformed reply from %s: %s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:159
-#, c-format
-msgid "Fatal fgets error: ERR=%s\n"
-msgstr ""
-
-#: 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"
-"       -f          set the From: field\n"
-"       -h          use mailhost:port as the SMTP server\n"
-"       -s          set the Subject: field\n"
-"       -r          set the Reply-To: field\n"
-"       -l          set the maximum number of lines to send (default: "
-"unlimited)\n"
-"       -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:379
-msgid "Fatal error: no recipient given.\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:407
-#, c-format
-msgid "Fatal gethostname error: ERR=%s\n"
-msgstr ""
-
-#: 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:486 src/tools/bsmtp.c:521
-#, c-format
-msgid "Error unknown mail host \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
-msgid "Retrying connection using \"localhost\".\n"
-msgstr ""
-
-#: 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:541 src/tools/bsmtp.c:546
-#, c-format
-msgid "Fatal socket error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:551
-#, c-format
-msgid "Fatal connect error to %s: ERR=%s\n"
-msgstr ""
-
-#: src/tools/bsmtp.c:560
-#, c-format
-msgid "Fatal _open_osfhandle error: ERR=%s\n"
-msgstr ""
-
-#: 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:576
-#, c-format
-msgid "Fatal dup error: ERR=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:195
-msgid ""
-"Warning skipping the additional parameters for working directory/dbname/user/"
-"password/host.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:212
-#, c-format
-msgid "Error can not find the Catalog name[%s] in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:214
-#, c-format
-msgid "Error there is no Catalog section in the given config file [%s]\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:223
-msgid "Error no Director resource defined.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:247
-msgid "Wrong number of arguments.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:252
-msgid "Working directory not supplied.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:288
-msgid "Database port must be a numeric value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:291
-msgid "Database port must be a int value.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:365
-#, c-format
-msgid "Hello, this is the database check/correct program.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:367
-#, c-format
-msgid "Modify database is on."
-msgstr ""
-
-#: src/tools/dbcheck.c:369
-#, c-format
-msgid "Modify database is off."
-msgstr ""
-
-#: src/tools/dbcheck.c:371 src/tools/dbcheck.c:432
-#, c-format
-msgid " Verbose is on.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:373 src/tools/dbcheck.c:434
-#, c-format
-msgid " Verbose is off.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:375
-#, c-format
-msgid "Please select the function you want to perform.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:379
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Repair bad Filename records\n"
-"     4) Repair bad Path records\n"
-"     5) Eliminate duplicate Filename records\n"
-"     6) Eliminate duplicate Path records\n"
-"     7) Eliminate orphaned Jobmedia records\n"
-"     8) Eliminate orphaned File records\n"
-"     9) Eliminate orphaned Path records\n"
-"    10) Eliminate orphaned Filename records\n"
-"    11) Eliminate orphaned FileSet records\n"
-"    12) Eliminate orphaned Client records\n"
-"    13) Eliminate orphaned Job records\n"
-"    14) Eliminate all Admin records\n"
-"    15) Eliminate all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:398
-#, c-format
-msgid ""
-"\n"
-"     1) Toggle modify database flag\n"
-"     2) Toggle verbose flag\n"
-"     3) Check for bad Filename records\n"
-"     4) Check for bad Path records\n"
-"     5) Check for duplicate Filename records\n"
-"     6) Check for duplicate Path records\n"
-"     7) Check for orphaned Jobmedia records\n"
-"     8) Check for orphaned File records\n"
-"     9) Check for orphaned Path records\n"
-"    10) Check for orphaned Filename records\n"
-"    11) Check for orphaned FileSet records\n"
-"    12) Check for orphaned Client records\n"
-"    13) Check for orphaned Job records\n"
-"    14) Check for all Admin records\n"
-"    15) Check for all Restore records\n"
-"    16) All (3-15)\n"
-"    17) Quit\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:418
-msgid "Select function number: "
-msgstr ""
-
-#: src/tools/dbcheck.c:425
-#, c-format
-msgid "Database will be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:427
-#, c-format
-msgid "Database will NOT be modified.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:518
-#, c-format
-msgid "JobId=%s Name=\"%s\" StartTime=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:525
-#, c-format
-msgid "Orphaned JobMediaId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:532
-#, c-format
-msgid "Orphaned FileId=%s JobId=%s Volume=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:539
-#, c-format
-msgid "Orphaned FileSetId=%s FileSet=\"%s\" MD5=%s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:546
-#, c-format
-msgid "Orphaned ClientId=%s Name=\"%s\"\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:599
-#, c-format
-msgid "Deleting: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:671
-#, c-format
-msgid "Checking for duplicate Filename entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:682
-#, c-format
-msgid "Found %d duplicate Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:683
-msgid "Print the list? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:706 src/tools/dbcheck.c:771
-#, c-format
-msgid "Found %d for: %s\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:736
-#, c-format
-msgid "Checking for duplicate Path entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:747
-#, c-format
-msgid "Found %d duplicate Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:748 src/tools/dbcheck.c:810 src/tools/dbcheck.c:856
-#: src/tools/dbcheck.c:924 src/tools/dbcheck.c:982 src/tools/dbcheck.c:1025
-#: src/tools/dbcheck.c:1067 src/tools/dbcheck.c:1109 src/tools/dbcheck.c:1146
-#: src/tools/dbcheck.c:1179 src/tools/dbcheck.c:1213 src/tools/dbcheck.c:1280
-msgid "Print them? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:801
-#, c-format
-msgid "Checking for orphaned JobMedia entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:809
-#, c-format
-msgid "Found %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:827
-#, c-format
-msgid "Deleting %d orphaned JobMedia records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:844
-#, c-format
-msgid "Checking for orphaned File entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:855
-#, c-format
-msgid "Found %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:872
-#, c-format
-msgid "Deleting %d orphaned File records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:891
-#, c-format
-msgid "Pruning orphaned Path entries isn't possible when using BVFS.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:900 src/tools/dbcheck.c:958
-msgid "Create temporary index? (yes/no): "
-msgstr ""
-
-#: src/tools/dbcheck.c:912
-#, c-format
-msgid "Checking for orphaned Path entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:923
-#, c-format
-msgid "Found %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:936
-#, c-format
-msgid "Deleting %d orphaned Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:970
-#, c-format
-msgid "Checking for orphaned Filename entries. This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:981
-#, c-format
-msgid "Found %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:994
-#, c-format
-msgid "Deleting %d orphaned Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1014
-#, c-format
-msgid "Checking for orphaned FileSet entries. This takes some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1024
-#, c-format
-msgid "Found %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1039
-#, c-format
-msgid "Deleting %d orphaned FileSet records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1048
-#, c-format
-msgid "Checking for orphaned Client entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1066
-#, c-format
-msgid "Found %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1081
-#, c-format
-msgid "Deleting %d orphaned Client records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1090
-#, c-format
-msgid "Checking for orphaned Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1108
-#, c-format
-msgid "Found %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1123
-#, c-format
-msgid "Deleting %d orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1125
-#, c-format
-msgid "Deleting JobMedia records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1127
-#, c-format
-msgid "Deleting Log records of orphaned Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1136
-#, c-format
-msgid "Checking for Admin Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1145
-#, c-format
-msgid "Found %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1160
-#, c-format
-msgid "Deleting %d Admin Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1169
-#, c-format
-msgid "Checking for Restore Job entries.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1178
-#, c-format
-msgid "Found %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1193
-#, c-format
-msgid "Deleting %d Restore Job records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1203
-#, c-format
-msgid "Checking for Filenames with a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1212
-#, c-format
-msgid "Found %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1230 src/tools/dbcheck.c:1296
-#, c-format
-msgid "Reparing %d bad Filename records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1270
-#, c-format
-msgid "Checking for Paths without a trailing slash\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1279
-#, c-format
-msgid "Found %d bad Path records.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1442
-#, c-format
-msgid ""
-"Ok. Index over the %s column already exists and dbcheck will work faster.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1445
-#, c-format
-msgid ""
-"Note. Index over the %s column not found, that can greatly slow down "
-"dbcheck.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1460
-#, c-format
-msgid "Create temporary index... This may take some time!\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1468
-#, c-format
-msgid "Temporary index created.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1483
-#, c-format
-msgid "Drop temporary index.\n"
-msgstr ""
-
-#: src/tools/dbcheck.c:1493
-#, c-format
-msgid "Temporary index %s deleted.\n"
-msgstr ""
-
-#: src/filed/verify.c:57
-#, c-format
-msgid "Cannot malloc %d network read buffer\n"
-msgstr ""
-
-#: src/filed/verify.c:127
-#, c-format
-msgid "     Could not access %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:134
-#, c-format
-msgid "     Could not follow link %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:141
-#, c-format
-msgid "     Could not stat %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:147 src/filed/backup.c:450
-#, c-format
-msgid "     Unchanged file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:150
-#, c-format
-msgid "     Archive file skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:153
-#, c-format
-msgid "     Recursion turned off. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:157
-#, c-format
-msgid "     File system change prohibited. Directory skipped: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:165
-#, c-format
-msgid "     Could not open directory %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/verify.c:170
-#, c-format
-msgid "     Unknown file type %d: %s\n"
-msgstr ""
-
-#: src/filed/verify.c:214 src/filed/verify_vol.c:206
-#, c-format
-msgid "Network error in send to Director: ERR=%s\n"
-msgstr ""
-
-#: 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"
-
-#: src/filed/verify.c:309
-#, c-format
-msgid "     Cannot open %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:323
-#, c-format
-msgid "     Cannot open resource fork for %s: ERR=%s.\n"
-msgstr ""
-
-#: src/filed/verify.c:386
-#, c-format
-msgid "Error reading file %s: ERR=%s\n"
-msgstr ""
-
-#: src/filed/accurate.c:201
-#, c-format
-msgid "Space saved with Base jobs: %lld MB\n"
-msgstr ""
-
-#: src/filed/accurate.c:400
-#, fuzzy, c-format
-msgid "Cannot verify checksum for %s\n"
-msgstr "Не вдається відкрити файл %s для виведення. ERR=%s\n"
-
-#: src/filed/accurate.c:508
-msgid "2991 Bad accurate command\n"
-msgstr ""
-
-#: src/filed/status.c:89
-#, c-format
-msgid "Daemon started %s. Jobs: run=%d running=%d.\n"
-msgstr ""
-
-#: src/filed/status.c:149
-#, c-format
-msgid " Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d "
-msgstr ""
-
-#: src/filed/status.c:194
-#, c-format
-msgid "Director connected at: %s\n"
-msgstr ""
-
-#: src/filed/status.c:196
-#, c-format
-msgid "JobId %d Job %s is running.\n"
-msgstr ""
-
-#: src/filed/status.c:199
-#, c-format
-msgid "    %s%s %s Job started: %s\n"
-msgstr ""
-
-#: src/filed/status.c:212
-#, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"
-msgstr ""
-
-#: src/filed/status.c:218
-#, c-format
-msgid "    Files Examined=%s\n"
-msgstr ""
-
-#: src/filed/status.c:223
-#, c-format
-msgid "    Processing file: %s\n"
-msgstr ""
-
-#: src/filed/status.c:234
-msgid "    SDSocket closed.\n"
-msgstr ""
-
-#: src/filed/status.c:244 src/filed/status.c:335 src/filed/status.c:409
-msgid "====\n"
-msgstr ""
-
-#: src/filed/status.c:306
-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 ""
-
-#: src/filed/status.c:497
-msgid "2900 Bad .status command, wrong argument.\n"
-msgstr ""
-
-#: src/filed/status.c:565
-msgid "Bacula Client: Idle"
-msgstr ""
-
-#: src/filed/status.c:576
-msgid "Bacula Client: Running"
-msgstr ""
-
-#: src/filed/status.c:590
-msgid "Bacula Client: Last Job Canceled"
-msgstr ""
-
-#: src/filed/status.c:594
-msgid "Bacula Client: Last Job Failed"
-msgstr ""
-
-#: src/filed/status.c:598
-msgid "Bacula Client: Last Job had Warnings"
-msgstr ""
-
-#: 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:245
-#, c-format
-msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:259
-#, c-format
-msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
-msgstr ""
-
-#: 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: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: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: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:643
-#, fuzzy, c-format
-msgid "lsetea error on file \"%s\": ERR=%s\n"
-msgstr "Помилка у %s файл %s: ERR=%s\n"
-
-#: 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:968
-#, c-format
-msgid "Received illegal xattr named %s on file \"%s\"\n"
-msgstr ""
-
-#: 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:1161 src/filed/xattr.c:1196
-#, c-format
-msgid "llistxattr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1435
-#, c-format
-msgid "lsetxattr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1648
-#, c-format
-msgid "Failed to convert %d into namespace on file \"%s\"\n"
-msgstr ""
-
-#: 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:1907
-#, c-format
-msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:1920
-#, c-format
-msgid "Failed to convert %s into namespace on file \"%s\"\n"
-msgstr ""
-
-#: 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: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:2262
-#, c-format
-msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
-msgstr ""
-
-#: 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: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:2679
-#, c-format
-msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:2886
-#, c-format
-msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:2909
-#, c-format
-msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:2984
-#, c-format
-msgid "Unable to read content of xattr %s on file \"%s\"\n"
-msgstr ""
-
-#: 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:3081 src/filed/xattr.c:3330
-#, c-format
-msgid "Unable to open file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:3146
-#, c-format
-msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3238
-#, c-format
-msgid "Unable to convert acl from text on file \"%s\"\n"
-msgstr ""
-
-#: 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:3344
-#, c-format
-msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3408
-#, c-format
-msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3448
-#, c-format
-msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3466
-#, c-format
-msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/xattr.c:3484
-#, c-format
-msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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: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:3570
-#, c-format
-msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3629
-#, c-format
-msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:3673
-#, c-format
-msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3734
-#, c-format
-msgid "Failed to restore extensible attributes on file \"%s\"\n"
-msgstr ""
-
-#: src/filed/xattr.c:3747
-#, c-format
-msgid "Failed to restore extended attributes on file \"%s\"\n"
-msgstr ""
-
-#: 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:3891
-#, c-format
-msgid ""
-"Can't restore Extended Attributes of %s - incompatible xattr stream "
-"encountered - %d\n"
-msgstr ""
-
-#: 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:563
-#, c-format
-msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
-msgstr ""
-
-#: 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:775
-msgid "Plugin save packet not found.\n"
-msgstr ""
-
-#: src/filed/fd_plugins.c:910
-#, c-format
-msgid "Plugin=%s not found.\n"
-msgstr ""
-
-#: src/filed/fd_plugins.c:977
-#, c-format
-msgid "Plugin createFile call failed. Stat=%d file=%s\n"
-msgstr ""
-
-#: 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:1859
-msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
-msgstr ""
-
-#: src/filed/filed.c:76
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s)\n"
-"\n"
-"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -d <nn>     set debug level to <nn>\n"
-"        -dt         print a timestamp in debug output\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g          groupid\n"
-"        -k          keep readall capabilities\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test configuration file and exit\n"
-"        -u          userid\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"
-msgstr ""
-
-#: src/filed/filed.c:199
-msgid "-k option has no meaning without -u option.\n"
-msgstr ""
-
-#: src/filed/filed.c:337
-#, c-format
-msgid ""
-"No File daemon resource defined in %s\n"
-"Without that I don't know who I am :-(\n"
-msgstr ""
-
-#: src/filed/filed.c:342
-#, c-format
-msgid "Only one Client resource permitted in %s\n"
-msgstr ""
-
-#: src/filed/filed.c:366
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"File daemon in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:390
-msgid "PKI encryption/signing enabled but not compiled into Bacula.\n"
-msgstr ""
-
-#: src/filed/filed.c:401
-#, c-format
-msgid ""
-"\"PKI Key Pair\" must be defined for File daemon \"%s\" in %s if either "
-"\"PKI Sign\" or \"PKI Encrypt\" are enabled.\n"
-msgstr ""
-
-#: src/filed/filed.c:413 src/filed/filed.c:444 src/filed/filed.c:485
-msgid "Failed to allocate a new keypair object.\n"
-msgstr ""
-
-#: src/filed/filed.c:417
-#, c-format
-msgid "Failed to load public certificate for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:423
-#, c-format
-msgid "Failed to load private key for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:453
-#, c-format
-msgid "Failed to load private key from file %s for File daemon \"%s\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:460
-#, c-format
-msgid ""
-"Failed to load trusted signer certificate from file %s for File daemon \"%s"
-"\" in %s.\n"
-msgstr ""
-
-#: src/filed/filed.c:491
-#, c-format
-msgid ""
-"Failed to load master key certificate from file %s for File daemon \"%s\" in "
-"%s.\n"
-msgstr ""
-
-#: src/filed/filed.c:507
-#, c-format
-msgid "No Director resource defined in %s\n"
-msgstr ""
-
-#: 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:280
-#, fuzzy, c-format
-msgid "Unknown acl type encountered on file \"%s\": %ld\n"
-msgstr "Невідомий тип файлу %d: не відновлено: %s\n"
-
-#: 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:386
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
-"support\n"
-msgstr ""
-
-#: 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: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:478
-#, fuzzy, c-format
-msgid "aclx_put error on file \"%s\": ERR=%s\n"
-msgstr "Помилка у %s файл %s: ERR=%s\n"
-
-#: src/filed/acl.c:823
-#, c-format
-msgid "acl_to_text error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:853
-#, c-format
-msgid "acl_get_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:912
-#, c-format
-msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:923
-#, c-format
-msgid "acl_from_text error on file \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "input from file"
+#~ msgstr "введення із файлу"
 
-#: 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:971
-#, c-format
-msgid "acl_set_file error on file \"%s\": filesystem doesn't support ACLs\n"
-msgstr ""
-
-#: src/filed/acl.c:980
-#, c-format
-msgid "acl_set_file error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1246
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
-msgstr ""
-
-#: src/filed/acl.c:1531
-#, c-format
-msgid "getacl error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:1566
-#, c-format
-msgid "acltostr error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: 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:1627
-#, c-format
-msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
-msgstr ""
-
-#: src/filed/acl.c:1635
-#, c-format
-msgid "setacl error on file \"%s\": ERR=%s\n"
-msgstr ""
-
-#: src/filed/acl.c:1760
-#, c-format
-msgid "acl_get error on file \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "output to file"
+#~ msgstr "вивід до файлу"
 
-#: src/filed/acl.c:1834
-#, c-format
-msgid ""
-"Trying to restore acl on file \"%s\" on filesystem without acl support\n"
-msgstr ""
+#~ msgid "output to file and terminal"
+#~ msgstr "вивід до файлу та консолі"
 
-#: src/filed/acl.c:1863
-#, c-format
-msgid ""
-"Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
-"support\n"
-msgstr ""
+#~ msgid "sleep specified time"
+#~ msgstr "зазначений час сну"
 
-#: src/filed/acl.c:1874
-#, c-format
-msgid ""
-"Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
-"support\n"
-msgstr ""
+#~ msgid "print current time"
+#~ msgstr "вивести поточний час"
 
-#: src/filed/acl.c:1890
-#, c-format
-msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "print Console's version"
+#~ msgstr "вивести версію Консолі"
 
-#: 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 ""
+#~ msgid "echo command string"
+#~ msgstr "луна командного рядку"
 
-#: src/filed/acl.c:1937
-#, c-format
-msgid "acl_set error on file \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "execute an external command"
+#~ msgstr "виконати зовнішню команду"
 
-#: src/filed/acl.c:2023
-#, c-format
-msgid "acltotext error on file \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "zed_keys = use zed keys instead of bash keys"
+#~ msgstr "zed_keys = використовувати zed keys замість bash keys"
 
-#: src/filed/acl.c:2046
-#, c-format
-msgid "aclfromtext error on file \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "help listing"
+#~ msgstr "допомога"
 
-#: src/filed/acl.c:2066
-#, c-format
-msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "set command separator"
+#~ msgstr "задати роздільник команд"
 
-#: src/filed/acl.c:2132
-#, fuzzy, c-format
-msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
-msgstr "Помилка у %s файл %s: ERR=%s\n"
+#~ msgid ": is an invalid command\n"
+#~ msgstr ": неправильна команда\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"
+#~ msgid "Illegal separator character.\n"
+#~ msgstr "Невірний символ роздільника.\n"
 
-#: src/filed/acl.c:2363
-#, c-format
-msgid "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
-msgstr ""
+#~ msgid "Command logic problem\n"
+#~ msgstr "Проблеми логіки команди\n"
 
-#: src/filed/verify_vol.c:63
-msgid "Storage command not issued before Verify.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Can't find %s in Director list\n"
+#~ msgstr ": неправильна команда\n"
 
-#: src/filed/verify_vol.c:97 src/filed/restore.c:486
-#, c-format
-msgid "Record header scan error: %s\n"
-msgstr ""
+#~ msgid "Available Directors:\n"
+#~ msgstr "Наявні Керівники:\n"
 
-#: src/filed/verify_vol.c:106 src/filed/restore.c:498
-#, c-format
-msgid "Data record error. ERR=%s\n"
-msgstr ""
+#~ msgid "Select Director by entering a number: "
+#~ msgstr "Оберіть Керівника, увівши номер: "
 
-#: 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 ""
+#~ msgid "%s is not a number. You must enter a number between 1 and %d\n"
+#~ msgstr "%s не є номером. Ви повинні увести номер із проміжку 1..%d\n"
 
-#: src/filed/verify_vol.c:143
-#, c-format
-msgid "Error scanning record header: %s\n"
-msgstr ""
+#~ msgid "You must enter a number between 1 and %d\n"
+#~ msgstr "Ви повинні увести номер із проміжку 1..%d\n"
 
-#: src/filed/backup.c:102
-msgid "Cannot set buffer size FD->SD.\n"
-msgstr ""
+#~ msgid "Connecting to Director %s:%d\n"
+#~ msgstr "Підключаюсь до Керівника %s:%d\n"
 
-#: src/filed/backup.c:194
-#, c-format
-msgid "Encountered %ld acl errors while doing backup\n"
-msgstr ""
+#~ msgid "Enter a period to cancel a command.\n"
+#~ msgstr "Уведіть цятку для переривання команди.\n"
 
-#: src/filed/backup.c:198
-#, c-format
-msgid "Encountered %ld xattr errors while doing backup\n"
-msgstr ""
+#~ msgid "Too many arguments on input command.\n"
+#~ msgstr "Забагато параметрів команди.\n"
 
-#: src/filed/backup.c:267 src/filed/backup.c:276
-msgid "An error occurred while encrypting the stream.\n"
-msgstr ""
+#~ msgid "First argument to input command must be a filename.\n"
+#~ msgstr "Перший параметр команди повинен бути назвою файлу.\n"
 
-#: src/filed/backup.c:387
-#, c-format
-msgid "     Recursion turned off. Will not descend from %s into %s\n"
-msgstr ""
+#~ msgid "Cannot open file %s for input. ERR=%s\n"
+#~ msgstr "Не вдається відкрити файл %s для введення. ERR=%s\n"
 
-#: src/filed/backup.c:394
-#, c-format
-msgid "     %s is a different filesystem. Will not descend from %s into it.\n"
-msgstr ""
+#~ msgid "Too many arguments on output/tee command.\n"
+#~ msgstr "Забагато параметрів на виході команди.\n"
 
-#: src/filed/backup.c:400
-#, c-format
-msgid "     Disallowed filesystem. Will not descend from %s into %s\n"
-msgstr ""
+#~ msgid "Cannot open file %s for output. ERR=%s\n"
+#~ msgstr "Не вдається відкрити файл %s для виведення. ERR=%s\n"
 
-#: src/filed/backup.c:405
-#, c-format
-msgid "     Disallowed drive type. Will not descend into %s\n"
-msgstr ""
+#~ msgid "Too many arguments. Enclose command in double quotes.\n"
+#~ msgstr "Забагато параметрів. Оточіть комінду подвійними лапками.\n"
 
-#: src/filed/backup.c:416
-#, c-format
-msgid "     Socket file skipped: %s\n"
-msgstr ""
+#~ msgid "Console: name=%s rcfile=%s histfile=%s\n"
+#~ msgstr "Консоль: назва=%s rcfile=%s histfile=%s\n"
 
-#: src/filed/backup.c:429
-#, c-format
-msgid "     Could not access \"%s\": ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Attribute create error: ERR=%s"
+#~ msgstr "Не вдалось створити %s: ERR=%s\n"
 
-#: src/filed/backup.c:436
-#, c-format
-msgid "     Could not follow link \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "Catalog error updating file digest. %s"
+#~ msgstr "Помилка під час оновлення відбитку файлу. %s"
 
-#: src/filed/backup.c:443
-#, c-format
-msgid "     Could not stat \"%s\": ERR=%s\n"
-msgstr ""
+#~ msgid "1994 Invalid Catalog Update: %s"
+#~ msgstr "1994 Помилка оновлення Каталогу: %s"
 
-#: src/filed/backup.c:453
-#, c-format
-msgid "     Archive file not saved: %s\n"
-msgstr ""
+#~ msgid "Invalid Catalog Update; DB not open: %s"
+#~ msgstr "Помилка оновлення Каталогу: БД не відкрита: %s"
 
-#: src/filed/backup.c:457
-#, c-format
-msgid "     Could not open directory \"%s\": ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\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"
+#~ "       -f          run in foreground (for debugging)\n"
+#~ "       -g          groupid\n"
+#~ "       -m          print kaboom output (for debugging)\n"
+#~ "       -r <job>    run <job> now\n"
+#~ "       -s          no signals\n"
+#~ "       -t          test - read configuration and exit\n"
+#~ "       -u          userid\n"
+#~ "       -v          verbose user messages\n"
+#~ "       -?          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/filed/backup.c:466
-#, c-format
-msgid "     Unknown file type %d; not saved: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not create storage record for %s\n"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/backup.c:522
-#, c-format
-msgid "%s signature digest initialization failed\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not update storage record for %s\n"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/backup.c:630
-#, c-format
-msgid "     Cannot open \"%s\": ERR=%s.\n"
-msgstr ""
+#~ msgid "Count not update counter %s: ERR=%s\n"
+#~ msgstr "Лічильник %s не оновлено: ERR=%s\n"
 
-#: src/filed/backup.c:667
-#, c-format
-msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to select Storage daemon.\n"
+#~ msgstr "Відкриті з'єднання із Зберігачем.\n"
 
-#: src/filed/backup.c:763
-msgid "Failed to allocate memory for crypto signature.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "canceled"
+#~ msgstr "Статус задачі: Відмінена"
 
-#: 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 ""
+#~ msgid "FileSet MD5 digest not found.\n"
+#~ msgstr "Не знайдено відбиток MD5 Набору Файлів.\n"
 
-#: src/filed/backup.c:813
-msgid "An error occurred finalizing signing the stream.\n"
-msgstr ""
+#~ msgid "Illegal character in Volume name \"%s\"\n"
+#~ msgstr "Заборонені символи у назві Тому \"%s\"\n"
 
-#: src/filed/backup.c:931
-#, c-format
-msgid "Compression deflateParams error: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Created new Volume=\"%s\", Pool=\"%s\", MediaType=\"%s\" in catalog.\n"
+#~ msgstr "У картотеці створено новий Том \"%s\".\n"
 
-#: src/filed/backup.c:968
-msgid "Encrypting sparse or offset data not supported.\n"
-msgstr ""
+#~ msgid "SQL failed, but ignored. ERR=%s\n"
+#~ msgstr "Проігноровано помилку SQL. ERR=%s\n"
 
-#: src/filed/backup.c:975
-msgid "Failed to initialize encryption context.\n"
-msgstr ""
+#~ msgid ""
+#~ "Wanted to create Volume \"%s\", but it already exists. Trying again.\n"
+#~ msgstr "Спроба створити вже існуючий Том \"%s\". Спробуйте ще раз.\n"
 
-#: src/filed/backup.c:1085
-#, c-format
-msgid "Compression deflate error: %d\n"
-msgstr ""
+#~ msgid "Too many failures. Giving up creating Volume name.\n"
+#~ msgstr "Занадто багато провалів. Відмова у створенні імені Тому.\n"
 
-#: src/filed/backup.c:1092
-#, c-format
-msgid "Compression deflateReset error: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not get storage resource '%s'.\n"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/backup.c:1126
-#, c-format
-msgid "Compression LZO error: %d\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not acquire read storage lock for \"%s\""
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/backup.c:1171 src/filed/backup.c:1187
-msgid "Encryption error\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Terminate Bconsole session"
+#~ msgstr "вивести версію Консолі"
 
-#: src/filed/backup.c:1213
-#, c-format
-msgid "Read error on file %s. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Print current memory usage"
+#~ msgstr "вивести поточний час"
 
-#: src/filed/backup.c:1216
-#, c-format
-msgid "Too many errors. JobErrors=%d.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Stop a job"
+#~ msgstr "Останні задачі відсутні"
 
-#: src/filed/backup.c:1226
-msgid "Encryption padding error\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Show resource records"
+#~ msgstr "Невідомий тип ресурсу %d\n"
 
-#: src/filed/backup.c:1290
-msgid "Invalid file flags, no supported data stream type.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Print current time"
+#~ msgstr "вивести поточний час"
 
-#: src/filed/backup.c:1549
-#, c-format
-msgid "VSS Writer (BackupComplete): %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Print Director version"
+#~ msgstr "Керівник"
 
-#: src/filed/restore.c:114
-#, c-format
-msgid "Size of data or stream of %s not correct. Original %s, restored %s.\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Can't find %s command.\n"
+#~ "\n"
+#~ msgstr ": неправильна команда\n"
 
-#: src/filed/restore.c:134
-#, c-format
-msgid "Invalid length of Finder Info (got %d, not 32)\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to get Job record for Job=%s\n"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/restore.c:139
-#, fuzzy, c-format
-msgid "Could not set Finder Info on %s\n"
-msgstr "Не вдалось перевстановити прапорці для файлу %s: ERR=%s\n"
+#, fuzzy
+#~ msgid "Unable to get last Job record for Job=%s\n"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/restore.c:418
 #, fuzzy
-msgid "LZO init failed\n"
-msgstr "Невдале встановлення з'єднання TLS\n"
+#~ msgid "Unable to get Client record for Client=%s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/filed/restore.c:660
-msgid "Unexpected cryptographic session data stream.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to get last Job record for Client=%s\n"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/restore.c:670
-msgid ""
-"No private decryption keys have been defined to decrypt encrypted backup "
-"data.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "List Location failed: ERR=%s\n"
+#~ msgstr "Невдале встановлення з'єднання TLS\n"
 
-#: src/filed/restore.c:681
-msgid "Could not create digest.\n"
-msgstr "Не можливо створити відбиток.\n"
+#, fuzzy
+#~ msgid "Illegal character \"%c\" in a comment.\n"
+#~ msgstr "Заборонені символи у назві Тому \"%s\"\n"
 
-#: src/filed/restore.c:699
-msgid "Missing private key required to decrypt encrypted backup data.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Begin pruning Files.\n"
+#~ msgstr "Починається чистка файлів Клієнта \"%s\"\n"
 
-#: src/filed/restore.c:702
-msgid "Decrypt of the session key failed.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Begin pruning Jobs older than %s.\n"
+#~ msgstr "Починається чистка файлів Клієнта \"%s\"\n"
 
-#: src/filed/restore.c:708
-#, c-format
-msgid "An error occurred while decoding encrypted session data stream: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "This command can be DANGEROUS!!!\n"
+#~ "\n"
+#~ "It purges (deletes) all Files from a Job,\n"
+#~ "JobId, Client or Volume; or it purges (deletes)\n"
+#~ "all Jobs from a Client or Volume without regard\n"
+#~ "to retention periods. Normally you should use the\n"
+#~ "PRUNE command, which respects retention periods.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ця команда НЕБЕЗПЕЧНА!!!\n"
+#~ "\n"
+#~ "Вона вичистить(знищить) усі Файли із Задачі,\n"
+#~ "Номера Задачі, Клієнта або Тома; або вичистить(знищить)\n"
+#~ "усі Задачі із Клієнта або Тома не враховуючи\n"
+#~ "термінів зберігання. Зазвичай ви повинні використовувати\n"
+#~ "команду PRUNE для дотримання термінів зберігання.\n"
 
-#: src/filed/restore.c:775 src/filed/restore.c:828
-#, c-format
-msgid "Missing encryption session data stream for %s\n"
-msgstr ""
+#~ msgid "Choose item to purge"
+#~ msgstr "Оберіть те, що Ви хочете вичистити"
 
-#: src/filed/restore.c:783 src/filed/restore.c:835
-#, c-format
-msgid "Failed to initialize decryption context for %s\n"
-msgstr ""
+#~ msgid "Begin purging files for Client \"%s\"\n"
+#~ msgstr "Починається чистка файлів Клієнта \"%s\"\n"
 
-#: src/filed/restore.c:847
-#, fuzzy, c-format
-msgid "Cannot open resource fork for %s.\n"
-msgstr "Не вдається відкрити файл %s для виведення. ERR=%s\n"
+#, fuzzy
+#~ msgid "Can't update volume size in the catalog\n"
+#~ msgstr "У картотеці створено новий Том \"%s\".\n"
 
-#: src/filed/restore.c:992
-msgid "Unexpected cryptographic signature data stream.\n"
-msgstr ""
+#~ msgid "Could not open %s: ERR=%s\n"
+#~ msgstr "Не вдалось відкрити%s: ERR=%s\n"
 
-#: src/filed/restore.c:1000
-#, c-format
-msgid "Failed to decode message signature for %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No authorization. NextPool \"%s\".\n"
+#~ msgstr "Проблеми авторизації Директора \"%s:%d\"\n"
 
-#: src/filed/restore.c:1064
-#, c-format
-msgid "Encountered %ld acl errors while doing restore\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not get job record for selected JobId=%d. ERR=%s"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/restore.c:1068
-#, c-format
-msgid "Encountered %ld xattr errors while doing restore\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Command input"
+#~ msgstr "Не зрозумілий параметр командного рядка"
 
-#: src/filed/restore.c:1072
-#, c-format
-msgid ""
-"%d non-supported data streams and %d non-supported attrib streams ignored.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not get job record for selected JobId. ERR=%s"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/restore.c:1076
-#, c-format
-msgid "%d non-supported resource fork streams ignored.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Media Type specified twice.\n"
+#~ msgstr "зазначений час сну"
 
-#: src/filed/restore.c:1079
-#, c-format
-msgid "%d non-supported Finder Info streams ignored.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "NextPool specified twice.\n"
+#~ msgstr "зазначений час сну"
 
-#: src/filed/restore.c:1082
-#, c-format
-msgid "%d non-supported acl streams ignored.\n"
-msgstr ""
+#~ msgid ""
+#~ "Your request has multiple choices for \"%s\". Selection is not possible "
+#~ "in batch mode.\n"
+#~ msgstr ""
+#~ "Ваш запит до \"%s\" має декілька можливостей вибору. У пакетному режимі "
+#~ "вибір не можливий.\n"
 
-#: src/filed/restore.c:1085
-#, c-format
-msgid "%d non-supported crypto streams ignored.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Choose Job list to %s"
+#~ msgstr "Оберіть те, що Ви хочете вичистити"
 
-#: src/filed/restore.c:1088
-#, c-format
-msgid "%d non-supported xattr streams ignored.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "No authorization for Storage \"%s\"\n"
+#~ msgstr "Від'єднуюсь від Зберігача %s:%d\n"
 
-#: src/filed/restore.c:1168
-msgid "Zlib errno"
-msgstr ""
+#, fuzzy
+#~ msgid "is waiting on Storage \"%s\""
+#~ msgstr "Від'єднуюсь від Зберігача %s:%d\n"
 
-#: src/filed/restore.c:1170
-msgid "Zlib stream error"
-msgstr ""
+#, fuzzy
+#~ msgid "is waiting for its start time (%s)"
+#~ msgstr "Статус задачі: Очікування часу початку"
 
-#: src/filed/restore.c:1172
-msgid "Zlib data error"
-msgstr ""
+#, fuzzy
+#~ msgid "is waiting for a Shared Storage device"
+#~ msgstr "Від'єднуюсь від Зберігача %s:%d\n"
 
-#: src/filed/restore.c:1174
-msgid "Zlib memory error"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot verify checksum for %s\n"
+#~ msgstr "Не вдається відкрити файл %s для виведення. ERR=%s\n"
 
-#: src/filed/restore.c:1176
-msgid "Zlib buffer error"
-msgstr ""
+#~ msgid "%s digest initialization failed\n"
+#~ msgstr "Невдала ініціалізація відбитку %s\n"
 
-#: src/filed/restore.c:1178
-msgid "Zlib version error"
-msgstr ""
+#, fuzzy
+#~ msgid "aclx_get error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/restore.c:1218
-#, c-format
-msgid "Missing cryptographic signature for %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unknown acl type encountered on file \"%s\": %ld\n"
+#~ msgstr "Невідомий тип файлу %d: не відновлено: %s\n"
 
-#: src/filed/restore.c:1251 src/filed/restore.c:1280
-#, c-format
-msgid "Signature validation failed for file %s: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to convert acl into text on file \"%s\"\n"
+#~ msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
 
-#: src/filed/restore.c:1268
-#, c-format
-msgid "Digest one file failed for file: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/restore.c:1307
-#, c-format
-msgid "Signature validation failed for %s: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "aclx_put error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/restore.c:1404
-#, fuzzy, c-format
-msgid "LZO uncompression error on file %s. ERR=%d\n"
-msgstr "Помилка у %s файл %s: ERR=%s\n"
+#, fuzzy
+#~ msgid "acl_valid error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/restore.c:1441
-#, c-format
-msgid "Uncompression error on file %s. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/restore.c:1474
-#, c-format
-msgid "Write error in Win32 Block Decomposition on %s: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/restore.c:1533
-msgid "Decryption error\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to stat file \"%s\": ERR=%s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/filed/restore.c:1626
-msgid "Logic error: output file should be open\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unsupported cipher on this system.\n"
+#~ msgstr "Цей тип відбитку не підтримується: %d\n"
 
-#: src/filed/restore.c:1664
-msgid "Logic error: output file should not be open\n"
-msgstr ""
+#~ msgid "Could not create %s: ERR=%s\n"
+#~ msgstr "Не вдалось створити %s: ERR=%s\n"
 
-#: src/filed/restore.c:1698
-#, c-format
-msgid "Decryption error. buf_len=%d decrypt_len=%d on file %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "%sVersion: %s (%s)\n"
+#~ "\n"
+#~ "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
+#~ "     -c <file>        use <file> as configuration file\n"
+#~ "     -d <n>[,<tags>]  set debug level to <nn>, debug tags to <tags>\n"
+#~ "     -dt              print a timestamp in debug output\n"
+#~ "     -f               run in foreground (for debugging)\n"
+#~ "     -g               groupid\n"
+#~ "     -k               keep readall capabilities\n"
+#~ "     -m               print kaboom output (for debugging)\n"
+#~ "     -s               no signals (for debugging)\n"
+#~ "     -t               test configuration file and exit\n"
+#~ "     -T               set trace on\n"
+#~ "     -u               userid\n"
+#~ "     -v               verbose user messages\n"
+#~ "     -?               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/filed/restore.c:1819
-msgid "Open File Manager paused\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Command: \"%s\" is disabled.\n"
+#~ msgstr "Помилка команди"
 
-#: src/filed/restore.c:1823
-msgid "FAILED to pause Open File Manager\n"
-msgstr ""
+#, fuzzy
+#~ msgid "SD connect failed: Bad Hello command\n"
+#~ msgstr "Керівник не прийняв команду Hello\n"
 
-#: src/filed/restore.c:1831
-#, c-format
-msgid "Running as '%s'. Privmask=%#08x\n"
-msgstr ""
+#, fuzzy
+#~ msgid "2991 Bad setbandwidth command: %s\n"
+#~ msgstr "Погана відповідь на команду Hello: ERR=%s\n"
 
-#: src/filed/restore.c:1833
-msgid "Failed to retrieve current UserName\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad RestoreObject command: %s\n"
+#~ msgstr "Погана відповідь на команду Hello: ERR=%s\n"
 
-#: src/filed/job.c:456
-#, c-format
-msgid "2901 Job %s not found.\n"
-msgstr ""
+#~ msgid "Unknown include/exclude option: %c\n"
+#~ msgstr "Не зрозуміла опція параметру include/exclude: %c\n"
 
-#: src/filed/job.c:466
-#, c-format
-msgid "2001 Job %s marked to be canceled.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed connect from Storage daemon. SD bsock=NULL.\n"
+#~ msgstr "Відкриті з'єднання із Зберігачем.\n"
 
-#: src/filed/job.c:469
-msgid "2902 Error scanning cancel command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad response from SD to %s command. Wanted %s, got %s\n"
+#~ msgstr "Невірна відповідь від Збирача на команду Hello: ERR=%s\n"
 
-#: src/filed/job.c:492
-#, c-format
-msgid "2991 Bad setdebug command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not set Finder Info on %s\n"
+#~ msgstr "Не вдалось перевстановити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/job.c:515
-#, c-format
-msgid "Bad estimate command: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "LZO init failed\n"
+#~ msgstr "Невдале встановлення з'єднання TLS\n"
 
-#: src/filed/job.c:516
-msgid "2992 Bad estimate command.\n"
-msgstr ""
+#~ msgid "Could not create digest.\n"
+#~ msgstr "Не можливо створити відбиток.\n"
 
-#: src/filed/job.c:539
-#, c-format
-msgid "Bad Job Command: %s"
-msgstr ""
+#, fuzzy
+#~ msgid "Unsupported digest algorithm. Decrypt failed.\n"
+#~ msgstr "Відбиток"
 
-#: src/filed/job.c:578
-#, c-format
-msgid "Bad RunBeforeJob command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unsupported encryption algorithm. Decrypt failed.\n"
+#~ msgstr "Відбиток"
 
-#: src/filed/job.c:579 src/filed/job.c:598
-msgid "2905 Bad RunBeforeJob command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot open resource fork for %s.\n"
+#~ msgstr "Не вдається відкрити файл %s для виведення. ERR=%s\n"
 
-#: src/filed/job.c:609
-msgid "2905 Bad RunBeforeNow command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "LZO uncompression error on file %s. ERR=%d\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:628
-#, c-format
-msgid "Bad RunAfter command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "llistea error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:629
-msgid "2905 Bad RunAfterJob command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "lgetea error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:665
-#, c-format
-msgid "Bad RunScript command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "lsetea error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:666
-msgid "2905 Bad RunScript command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "attr_list error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
+
+#, fuzzy
+#~ msgid "attr_set error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:720
-#, fuzzy, c-format
-msgid "Bad RestoreObject command: %s\n"
-msgstr "Погана відповідь на команду Hello: ERR=%s\n"
+#, fuzzy
+#~ msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:785
-msgid "2909 Bad RestoreObject command.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:824
-#, c-format
-msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:866
-#, c-format
-msgid "Error running program: %s. stat=%d: ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "getproplist error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:877
-#, c-format
-msgid "Cannot open FileSet input file: %s. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "setproplist error on file \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/job.c:1031
-#, c-format
-msgid "REGEX %s compile error. ERR=%s\n"
-msgstr ""
+#~ msgid "Unix attributes"
+#~ msgstr "Атрибули Unix"
 
-#: src/filed/job.c:1182
-#, c-format
-msgid "Invalid FileSet command: %s\n"
-msgstr ""
+#~ msgid "File data"
+#~ msgstr "Дата файлу"
 
-#: src/filed/job.c:1655
-#, c-format
-msgid ""
-"DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
-msgstr ""
+#~ msgid "MD5 digest"
+#~ msgstr "Відбиток MD5"
 
-#: src/filed/job.c:1664
-#, c-format
-msgid "Unknown backup level: %s\n"
-msgstr ""
+#~ msgid "GZIP data"
+#~ msgstr "Дані, запаковані GZIP"
 
-#: src/filed/job.c:1677
-#, c-format
-msgid "Bad level command: %s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Compressed data"
+#~ msgstr "Замало даних"
 
-#: src/filed/job.c:1699
-#, c-format
-msgid "Bad session command: %s"
-msgstr ""
+#~ msgid "Extended attributes"
+#~ msgstr "Додаткові атрибути"
 
-#: src/filed/job.c:1760
-#, c-format
-msgid "Bad storage command: %s"
-msgstr ""
+#~ msgid "Sparse data"
+#~ msgstr "Замало даних"
 
-#: src/filed/job.c:1781
-#, c-format
-msgid "Failed to connect to Storage daemon: %s:%d\n"
-msgstr ""
+#~ msgid "GZIP sparse data"
+#~ msgstr "Замало даних GZIP "
 
-#: src/filed/job.c:1793
-msgid "Failed to authenticate Storage daemon.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Compressed sparse data"
+#~ msgstr "Замало даних GZIP "
 
-#: src/filed/job.c:1840
-msgid "ACL support not configured for your machine.\n"
-msgstr ""
+#~ msgid "Program names"
+#~ msgstr "Назви програми"
 
-#: src/filed/job.c:1844
-msgid "XATTR support not configured for your machine.\n"
-msgstr ""
+#~ msgid "Program data"
+#~ msgstr "Програмні дані"
 
-#: src/filed/job.c:1853
-msgid "Cannot contact Storage daemon\n"
-msgstr ""
+#~ msgid "SHA1 digest"
+#~ msgstr "Відбиток HA1"
 
-#: src/filed/job.c:1872
-#, c-format
-msgid "Bad response to append open: %s\n"
-msgstr ""
+#~ msgid "Win32 data"
+#~ msgstr "Дані Win32"
 
-#: src/filed/job.c:1877
-msgid "Bad response from stored to open command\n"
-msgstr ""
+#~ msgid "Win32 GZIP data"
+#~ msgstr "Дані Win32 GZIP"
 
-#: src/filed/job.c:1909
-#, c-format
-msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Win32 compressed data"
+#~ msgstr "Дані Win32"
 
-#: src/filed/job.c:1912
-#, fuzzy, c-format
-msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
-msgstr "Не можливо створити теку %s: ERR=%s\n"
+#~ msgid "MacOS Fork data"
+#~ msgstr "Дані MacOS Fork"
 
-#: src/filed/job.c:1919
-#, c-format
-msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
-msgstr ""
+#~ msgid "HFS+ attribs"
+#~ msgstr "Атрибути HFS+"
 
-#: src/filed/job.c:1925
-#, c-format
-msgid "VSS Writer (PrepareForBackup): %s\n"
-msgstr ""
+#~ msgid "Standard Unix ACL attribs"
+#~ msgstr "Стандартні атрибути Unix ACL"
 
-#: src/filed/job.c:1930
-msgid "No drive letters found for generating VSS snapshots.\n"
-msgstr ""
+#~ msgid "Default Unix ACL attribs"
+#~ msgstr "Звичійні атрибути Unix ACL"
 
-#: src/filed/job.c:1934
-#, c-format
-msgid "VSS was not initialized properly. ERR=%s\n"
-msgstr ""
+#~ msgid "SHA256 digest"
+#~ msgstr "Відбиток SHA256"
 
-#: src/filed/job.c:1985
-msgid "Append Close with SD failed.\n"
-msgstr ""
+#~ msgid "SHA512 digest"
+#~ msgstr "Відбиток SHA512"
 
-#: src/filed/job.c:1989
-#, c-format
-msgid "Bad status %d returned from Storage Daemon.\n"
-msgstr ""
+#~ msgid "Signed digest"
+#~ msgstr "Підписаний відбиток"
 
-#: src/filed/job.c:2019
-#, c-format
-msgid "2994 Bad verify command: %s\n"
-msgstr ""
+#~ msgid "Encrypted File data"
+#~ msgstr "Зашифровані файли"
 
-#: src/filed/job.c:2034 src/filed/job.c:2075
-#, c-format
-msgid "2994 Bad verify level: %s\n"
-msgstr ""
+#~ msgid "Encrypted Win32 data"
+#~ msgstr "Зашифровані дані Win32"
 
-#: src/filed/job.c:2146
-#, c-format
-msgid "Bad replace command. CMD=%s\n"
-msgstr ""
+#~ msgid "Encrypted session data"
+#~ msgstr "Зашифровані дані сесій"
 
-#: src/filed/job.c:2169
-#, c-format
-msgid "Bad where regexp. where=%s\n"
-msgstr ""
+#~ msgid "Encrypted GZIP data"
+#~ msgstr "Зашифровані дані GZIP"
 
-#: src/filed/job.c:2207
-#, c-format
-msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Encrypted compressed data"
+#~ msgstr "Зашифровані дані сесій"
 
-#: src/filed/job.c:2252
-#, c-format
-msgid "VSS Writer (RestoreComplete): %s\n"
-msgstr ""
+#~ msgid "Encrypted Win32 GZIP data"
+#~ msgstr "Зашифровані дані Win32 GZIP"
 
-#: src/filed/job.c:2302
-msgid "Improper calling sequence.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Encrypted Win32 Compressed data"
+#~ msgstr "Зашифровані дані Win32"
 
-#: src/filed/job.c:2322
-#, c-format
-msgid "Bad response to SD read open: %s\n"
-msgstr ""
+#~ msgid "Encrypted MacOS fork data"
+#~ msgstr "Зашифровані дані MacOS Fork "
 
-#: src/filed/job.c:2327
-msgid "Bad response from stored to read open command\n"
-msgstr ""
+#~ msgid "AIX Specific ACL attribs"
+#~ msgstr "Специфічні атрибути AIX ACL"
 
-#: src/filed/job.c:2391
-#, c-format
-msgid "Comm error with SD. bad response to %s. ERR=%s\n"
-msgstr ""
+#~ msgid "Darwin Specific ACL attribs"
+#~ msgstr "Специфічні атрибути Darwin ACL"
 
-#: src/filed/job.c:2394
-#, c-format
-msgid "Bad response to %s command. Wanted %s, got %s\n"
-msgstr ""
+#~ msgid "FreeBSD Specific Default ACL attribs"
+#~ msgstr "Специфічні атрибути FreeBSD Default ACL"
 
-#: src/filed/authenticate.c:68
-#, c-format
-msgid "I only authenticate directors, not %d\n"
-msgstr ""
+#~ msgid "FreeBSD Specific Access ACL attribs"
+#~ msgstr "Специфічні атрибути FreeBSD Access ACL"
 
-#: src/filed/authenticate.c:100
-#, c-format
-msgid "Connection from unknown Director %s at %s rejected.\n"
-msgstr ""
+#~ msgid "HPUX Specific ACL attribs"
+#~ msgstr "Специфічні атрибути HPUX ACL"
 
-#: src/filed/authenticate.c:144
-#, c-format
-msgid "Incorrect password given by Director at %s.\n"
-msgstr ""
+#~ msgid "Irix Specific Default ACL attribs"
+#~ msgstr "Специфічні атрибути Irix Default ACL"
 
-#: src/filed/authenticate.c:263
-msgid ""
-"Authorization key rejected by Storage daemon.\n"
-"Please see "
-msgstr ""
+#~ msgid "Irix Specific Access ACL attribs"
+#~ msgstr "Специфічні атрибути Irix Access ACL"
 
-#: examples/nagios/check_bacula/check_bacula.c:59
-#, c-format
-msgid ""
-"Copyright (C) 2005 Christian Masopust\n"
-"Written by Christian Masopust (2005)\n"
-"\n"
-"Version: "
-msgstr ""
+#~ msgid "Linux Specific Default ACL attribs"
+#~ msgstr "Специфічні атрибути Linux Default ACL"
 
-#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
-#, c-format
-msgid "Failed ASSERT: %s\n"
-msgstr ""
+#~ msgid "Linux Specific Access ACL attribs"
+#~ msgstr "Специфічні атрибути Linux Access ACL"
 
-#: src/win32/compat/compat.cpp:2721
-msgid ""
-"\n"
-"\n"
-"Bacula ERROR: "
-msgstr ""
+#, fuzzy
+#~ msgid "TRU64 Specific Default ACL attribs"
+#~ msgstr "Специфічні атрибути Irix Default ACL"
 
-#: src/win32/libwin32/service.cpp:107
-msgid "RegisterServiceCtlHandler failed"
-msgstr ""
+#, fuzzy
+#~ msgid "TRU64 Specific Access ACL attribs"
+#~ msgstr "Специфічні атрибути Irix Access ACL"
 
-#: src/win32/libwin32/service.cpp:108
-msgid "Failure contacting the Service Handler"
-msgstr ""
+#, fuzzy
+#~ msgid "Solaris Specific POSIX ACL attribs"
+#~ msgstr "Специфічні атрибути Solaris ACL"
 
-#: src/win32/libwin32/service.cpp:119
-msgid "Service start report failed"
-msgstr ""
+#, fuzzy
+#~ msgid "Solaris Specific NFSv4/ZFS ACL attribs"
+#~ msgstr "Специфічні атрибути Solaris ACL"
 
-#: src/win32/libwin32/service.cpp:172
-msgid "StartServiceCtrlDispatcher failed."
-msgstr ""
+#, fuzzy
+#~ msgid "AFS Specific ACL attribs"
+#~ msgstr "Специфічні атрибути AIX ACL"
 
-#: src/win32/libwin32/service.cpp:179
-msgid "KERNEL32.DLL not found: Bacula service not started"
-msgstr ""
+#, fuzzy
+#~ msgid "AIX Specific POSIX ACL attribs"
+#~ msgstr "Специфічні атрибути AIX ACL"
 
-#: src/win32/libwin32/service.cpp:189
-msgid "Registry service not found: Bacula service not started"
-msgstr ""
+#, fuzzy
+#~ msgid "AIX Specific NFSv4 ACL attribs"
+#~ msgstr "Специфічні атрибути AIX ACL"
 
-#: src/win32/libwin32/service.cpp:191
-msgid "Registry service entry point not found"
-msgstr ""
+#, fuzzy
+#~ msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
+#~ msgstr "Специфічні атрибути FreeBSD Access ACL"
 
-#: src/win32/libwin32/service.cpp:212
-msgid "Report Service failure"
-msgstr ""
+#, fuzzy
+#~ msgid "GNU Hurd Specific Default ACL attribs"
+#~ msgstr "Специфічні атрибути Irix Default ACL"
 
-#: src/win32/libwin32/service.cpp:243
-msgid "Unable to install the service"
-msgstr ""
+#, fuzzy
+#~ msgid "GNU Hurd Specific Access ACL attribs"
+#~ msgstr "Специфічні атрибути Irix Access ACL"
 
-#: src/win32/libwin32/service.cpp:251
-msgid "Service command length too long"
-msgstr ""
+#, fuzzy
+#~ msgid "GNU Hurd Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути Linux"
 
-#: src/win32/libwin32/service.cpp:252
-msgid "Service command length too long. Service not registered."
-msgstr ""
+#, fuzzy
+#~ msgid "IRIX Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути Linux"
 
-#: src/win32/libwin32/service.cpp:265
-msgid ""
-"The Service Control Manager could not be contacted - the service was not "
-"installed"
-msgstr ""
+#, fuzzy
+#~ msgid "TRU64 Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути Linux"
 
-#: src/win32/libwin32/service.cpp:288 src/win32/libwin32/service.cpp:317
-#: src/win32/libwin32/service.cpp:365 src/win32/libwin32/service.cpp:373
-#: src/win32/libwin32/service.cpp:377
-msgid "The Bacula service: "
-msgstr ""
+#, fuzzy
+#~ msgid "AIX Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути Linux"
 
-#: src/win32/libwin32/service.cpp:295
-msgid ""
-"Provides file backup and restore services. Bacula -- the network backup "
-"solution."
-msgstr ""
+#, fuzzy
+#~ msgid "OpenBSD Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути NetBSD"
 
-#: src/win32/libwin32/service.cpp:306
-msgid "Cannot write System Registry for "
-msgstr ""
+#~ msgid "Solaris Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути Solaris"
 
-#: src/win32/libwin32/service.cpp:307
-msgid ""
-"The System Registry could not be updated - the Bacula service was not "
-"installed"
-msgstr ""
+#~ msgid "Darwin Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути Darwin"
 
-#: src/win32/libwin32/service.cpp:316
-msgid "Cannot add Bacula key to System Registry"
-msgstr ""
+#~ msgid "FreeBSD Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути FreeBS"
 
-#: src/win32/libwin32/service.cpp:327
-msgid "The "
-msgstr ""
+#~ msgid "Linux Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути Linux"
 
-#: src/win32/libwin32/service.cpp:385
-msgid "An existing Bacula service: "
-msgstr ""
+#~ msgid "NetBSD Specific Extended attribs"
+#~ msgstr "Специфічні додаткові атрибути NetBSD"
 
-#: src/win32/libwin32/service.cpp:394
-msgid ""
-"The service Manager could not be contacted - the Bacula service was not "
-"removed"
-msgstr ""
+#~ msgid "Unable to set file modes %s: ERR=%s\n"
+#~ msgstr "Не можливо встановити параметри файлу %s: ERR=%s\n"
 
-#: src/win32/libwin32/service.cpp:407
-msgid ""
-"Could not find registry entry.\n"
-"Service probably not registerd - the Bacula service was not removed"
-msgstr ""
+#~ msgid "Unable to set file owner %s: ERR=%s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/win32/libwin32/service.cpp:414
-msgid "Could not delete Registry key for "
-msgstr ""
+#~ msgid "Unable to set file times %s: ERR=%s\n"
+#~ msgstr "Не можливо встановити час файлу %s: ERR=%s\n"
 
-#: src/win32/libwin32/service.cpp:425
-msgid "Bacula could not be contacted, probably not running"
-msgstr ""
+#~ msgid ""
+#~ "File size of restored file %s not correct. Original %s, restored %s.\n"
+#~ msgstr ""
+#~ "Не правильний розмір відновленого файлу %s. Оригінальний %s, відновлений "
+#~ "%s.\n"
 
-#: src/win32/libwin32/service.cpp:433
-msgid "The Bacula service has been removed"
-msgstr ""
+#~ msgid "Unable to set file flags %s: ERR=%s\n"
+#~ msgstr "Не можливо встановити прапорці файлу %s: ERR=%s\n"
 
-#: src/win32/libwin32/service.cpp:474
-msgid "SetServiceStatus failed"
-msgstr ""
+#~ msgid "File skipped. Not newer: %s\n"
+#~ msgstr "Файл пропущено. Не новий: %s\n"
 
-#: src/win32/libwin32/service.cpp:500
-#, c-format
-msgid ""
-"\n"
-"\n"
-"%s error: %ld at %s:%d"
-msgstr ""
+#~ msgid "File skipped. Not older: %s\n"
+#~ msgstr "Файл пропущено. Не застарілий: %s\n"
 
-#: src/win32/libwin32/service.cpp:576
-#, c-format
-msgid "Locked by: %s, duration: %ld seconds\n"
-msgstr ""
+#~ msgid "File skipped. Already exists: %s\n"
+#~ msgstr "Файл пропущено. Вже існує: %s\n"
 
-#: src/win32/libwin32/service.cpp:580
-#, c-format
-msgid "No longer locked\n"
-msgstr ""
+#~ msgid "File %s already exists and could not be replaced. ERR=%s.\n"
+#~ msgstr "Файл %s існує та його не вдалось замінити. ERR=%s.\n"
 
-#: src/win32/libwin32/service.cpp:584
-msgid "Could not lock database"
-msgstr ""
+#~ msgid "Cannot make fifo %s: ERR=%s\n"
+#~ msgstr "Не можливо створити чергу(fifo) %s: ERR=%s\n"
 
-#: src/win32/libwin32/main.cpp:245
-msgid "Bad Command Line Option"
-msgstr "Не зрозумілий параметр командного рядка"
+#~ msgid "Cannot make node %s: ERR=%s\n"
+#~ msgstr "Не вдалось створити ноду(node) %s: ERR=%s\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:65
-msgid "Config file editor"
-msgstr ""
+#~ msgid "Could not symlink %s -> %s: ERR=%s\n"
+#~ msgstr "Не вдалось створити лінку(symlink) %s -> %s: ERR=%s\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:75
-#, fuzzy
-msgid "# Bacula bwx-console Configuration File\n"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#~ msgid "Could not restore file flags for file %s: ERR=%s\n"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:111
-msgid "Save and close"
-msgstr ""
+#~ msgid "Could not hard link %s -> %s: ERR=%s\n"
+#~ msgstr "Не вдалось створити жорстку лінку(hardlink) %s -> %s: ERR=%s\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:112
-msgid "Close without saving"
-msgstr ""
+#~ msgid "Could not reset file flags for file %s: ERR=%s\n"
+#~ msgstr "Не вдалось перевстановити прапорці для файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:139
-#, fuzzy, c-format
-msgid "Unable to write to %s\n"
-msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
+#~ msgid "Original file %s have been deleted: type=%d\n"
+#~ msgstr "Оригінальний файл %s було видалено: тип=%d\n"
 
-#: src/wx-console/wxbconfigfileeditor.cpp:140
-msgid "Error while saving"
-msgstr ""
+#~ msgid "Original file %s not saved: type=%d\n"
+#~ msgstr "Оригінальний файл %s не збережено: тип=%d\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:234
-#: src/wx-console/wxbrestorepanel.cpp:1947
-#: src/wx-console/wxbrestorepanel.cpp:1976
-msgid "Enter restore mode"
-msgstr ""
+#~ msgid "Unknown file type %d; not restored: %s\n"
+#~ msgstr "Невідомий тип файлу %d: не відновлено: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:237
-msgid "Cancel restore"
-msgstr ""
+#~ msgid "Zero length filename: %s\n"
+#~ msgstr "Пуста назва файлу: %s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:263
-#: src/wx-console/wxbrestorepanel.cpp:317
-msgid "Add"
-msgstr ""
+#~ msgid "%s mtime changed during backup.\n"
+#~ msgstr "%s mtime змінився під час резервування.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:265
-#: src/wx-console/wxbrestorepanel.cpp:319
-msgid "Remove"
-msgstr ""
+#~ msgid "%s ctime changed during backup.\n"
+#~ msgstr "%s ctime змінився під час резервування.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:267
-#: src/wx-console/wxbrestorepanel.cpp:321
 #, fuzzy
-msgid "Refresh"
-msgstr "Оновити зараз"
+#~ msgid "%s size of %lld changed during backup to %lld.n"
+#~ msgstr "%s розмір змінився під час резервування.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:286
-msgid "M"
-msgstr ""
+#~ msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
+#~ msgstr "Вища тека \"%s\" має незрозумілий тип файлової системи \"%s\"\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:290
-#, fuzzy
-msgid "Filename"
-msgstr "Збирач"
+#~ msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
+#~ msgstr "Вища тека \"%s\" має незрозумілий тип пристрою \"%s\"\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:294
-msgid "Size"
-msgstr ""
+#~ msgid "Cannot create directory %s: ERR=%s\n"
+#~ msgstr "Не можливо створити теку %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:298
-msgid "Date"
-msgstr ""
+#~ msgid "%s exists but is not a directory.\n"
+#~ msgstr "%s існує, але не є текою.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:302
-msgid "Perm."
-msgstr ""
+#~ msgid "Cannot change owner and/or group of %s: ERR=%s\n"
+#~ msgstr "Не можливо змінити власника та/або групу для %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:306
-msgid "User"
-msgstr ""
+#~ msgid "Cannot change permissions of %s: ERR=%s\n"
+#~ msgstr "Не можливо змінити дозволи для %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:310
-msgid "Group"
-msgstr ""
+#~ msgid "%c: is not a valid drive.\n"
+#~ msgstr "%c: не вірний пристрій.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:335
-#: src/wx-console/wxbrestorepanel.cpp:348
-#: src/wx-console/wxbrestorepanel.cpp:503
-#: src/wx-console/wxbrestorepanel.cpp:513
-#: src/wx-console/wxbrestorepanel.cpp:516
-#: src/wx-console/wxbrestorepanel.cpp:1811
-#: src/wx-console/wxbrestorepanel.cpp:1897
-msgid "Job Name"
-msgstr ""
+#~ msgid "Too many subdirectories. Some permissions not reset.\n"
+#~ msgstr "Забагато підтек. Деякі обмеження не перевстановлено.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:337
-#: src/wx-console/wxbrestorepanel.cpp:353
-#: src/wx-console/wxbrestorepanel.cpp:455
-#: src/wx-console/wxbrestorepanel.cpp:456
-#: src/wx-console/wxbrestorepanel.cpp:466
-#: src/wx-console/wxbrestorepanel.cpp:467
-#: src/wx-console/wxbrestorepanel.cpp:1153
-#: src/wx-console/wxbrestorepanel.cpp:1156
-#: src/wx-console/wxbrestorepanel.cpp:1239
-#: src/wx-console/wxbrestorepanel.cpp:1849
-#: src/wx-console/wxbrestorepanel.cpp:1851
-#: src/wx-console/wxbrestorepanel.cpp:1912
 #, fuzzy
-msgid "Fileset"
-msgstr "Дата файлу"
-
-#: src/wx-console/wxbrestorepanel.cpp:340
-#: src/wx-console/wxbrestorepanel.cpp:1233
-#: src/wx-console/wxbrestorepanel.cpp:1249
-#: src/wx-console/wxbrestorepanel.cpp:1251
-#: src/wx-console/wxbrestorepanel.cpp:1259
-#: src/wx-console/wxbrestorepanel.cpp:1261
-#: src/wx-console/wxbrestorepanel.cpp:1280
-#: src/wx-console/wxbrestorepanel.cpp:1287
-#: src/wx-console/wxbrestorepanel.cpp:1839
-#: src/wx-console/wxbrestorepanel.cpp:1850
-#: src/wx-console/wxbrestorepanel.cpp:1971
-msgid "Before"
-msgstr ""
+#~ msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:342
-msgid "Please configure parameters concerning files to restore :"
-msgstr ""
+#, fuzzy
+#~ msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+#~ msgstr "Не вдалось створити %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1905
-msgid "always"
-msgstr ""
+#~ msgid "Unsupported digest type: %d\n"
+#~ msgstr "Цей тип відбитку не підтримується: %d\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if newer"
-msgstr ""
+#~ msgid "OpenSSL digest initialization failed"
+#~ msgstr "Відбиток"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-msgid "if older"
-msgstr ""
+#~ msgid "OpenSSL digest update failed"
+#~ msgstr "Відбиток"
 
-#: src/wx-console/wxbrestorepanel.cpp:351
-#: src/wx-console/wxbrestorepanel.cpp:1908
-msgid "never"
-msgstr ""
+#~ msgid "OpenSSL digest finalize failed"
+#~ msgstr "Відбиток"
 
-#: src/wx-console/wxbrestorepanel.cpp:359
-msgid "Please configure parameters concerning files restoration :"
-msgstr ""
+#~ msgid "OpenSSL sign get digest failed"
+#~ msgstr "Відбиток"
 
-#: src/wx-console/wxbrestorepanel.cpp:427
-msgid "Getting parameters list."
-msgstr ""
+#~ msgid "OpenSSL digest Verify final failed"
+#~ msgstr "Відбиток"
 
-#: src/wx-console/wxbrestorepanel.cpp:435
-msgid "Error : no clients returned by the director."
-msgstr ""
+#~ msgid "Unsupported digest type=%d specified\n"
+#~ msgstr "Заданий тип відбитку=%d не підтримується\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:459
-msgid "Error : no filesets returned by the director."
-msgstr ""
+#~ msgid "Unsupported digest algorithm"
+#~ msgstr "Відбиток"
 
-#: src/wx-console/wxbrestorepanel.cpp:483
-msgid "Error : no storage returned by the director."
-msgstr ""
+#, fuzzy
+#~ msgid "Cannot open config file %s: %s\n"
+#~ msgstr "Не можливо створити чергу(fifo) %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:506
-#: src/wx-console/wxbrestorepanel.cpp:530
-msgid "Error : no jobs returned by the director."
-msgstr ""
+#, fuzzy
+#~ msgid "Could not init msg_queue mutex. ERR=%s\n"
+#~ msgstr "Не вдалось відкрити%s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:516
-msgid "RestoreFiles"
-msgstr ""
+#, fuzzy
+#~ msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:551
-msgid "Please configure your restore parameters."
-msgstr ""
+#, fuzzy
+#~ msgid "dlopen plugin %s failed: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:556
-msgid "Please select a client."
-msgstr ""
+#, fuzzy
+#~ msgid "prctl failed: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:560
-msgid "Please select a restore date."
-msgstr ""
+#, fuzzy
+#~ msgid "setreuid failed: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:565
-msgid "Building restore tree..."
-msgstr ""
+#, fuzzy
+#~ msgid "User cancel requested.\n"
+#~ msgstr "Статус задачі: Відмінена"
 
-#: src/wx-console/wxbrestorepanel.cpp:613
-msgid "Error while starting restore: "
-msgstr ""
+#, fuzzy
+#~ msgid "Read open %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:705
-msgid ""
-"Right click on a file or on a directory, or double-click on its mark to add "
-"it to the restore list."
-msgstr ""
+#, fuzzy
+#~ msgid "Could not ready %s device %s for append.\n"
+#~ msgstr "Не можливо створити відбиток.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:720 src/wx-console/wxbmainframe.cpp:685
-msgid "Unexpected question has been received.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Error writing end session label. ERR=%s\n"
+#~ msgstr "Помилка надсилання Hello до Збирача. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:742
-#: src/wx-console/wxbrestorepanel.cpp:764
-msgid "bwx-console: unexpected restore question."
-msgstr ""
+#, fuzzy
+#~ msgid "Lock failure on autochanger. ERR=%s\n"
+#~ msgstr "Проігноровано помилку SQL. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:775
-msgid " files selected to be restored."
-msgstr ""
+#, fuzzy
+#~ msgid "Job failed or canceled.\n"
+#~ msgstr "Статус задачі: Відмінена"
 
-#: src/wx-console/wxbrestorepanel.cpp:780
-msgid " file selected to be restored."
-msgstr ""
+#, fuzzy
+#~ msgid "Error sending Volume info to Director.\n"
+#~ msgstr "Помилка надсилання Hello до Збирача. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:787
-#, c-format
-msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
+#~ msgid "Got signed digest record\n"
+#~ msgstr "Отримано підписаний відбиток запису\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:797
-msgid "Restore failed : no file selected.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Volume type error: ERR=%s\n"
+#~ msgstr "Не вдалось створити %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:798
-msgid "Restore failed : no file selected."
-msgstr ""
+#, fuzzy
+#~ msgid "Job canceled.\n"
+#~ msgstr "Статус задачі: Відмінена"
 
-#: src/wx-console/wxbrestorepanel.cpp:808
-msgid "Restoring, please wait..."
-msgstr ""
+#, fuzzy
+#~ msgid "do_unfill failed.\n"
+#~ msgstr "Помилка команди"
 
-#: src/wx-console/wxbrestorepanel.cpp:821
-msgid "Job queued. JobId="
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init spool mutex: ERR=%s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:823
-msgid "Restore queued, jobid="
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init acquire mutex: ERR=%s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:827
 #, fuzzy
-msgid "Job failed."
-msgstr "Статус задачі: Відмінена"
+#~ msgid "Unable to init read acquire mutex: ERR=%s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:828
-msgid "Restore failed, please look at messages.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init volcat mutex: ERR=%s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:829
-msgid "Restore failed, please look at messages in console."
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init dcrs mutex: ERR=%s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:835
-#: src/wx-console/wxbrestorepanel.cpp:836
-msgid "Failed to retrieve jobid.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Bad client command: %s"
+#~ msgstr "Погана відповідь на команду Hello: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:862
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Client daemon"
+#~ msgstr "Збирач"
 
-#: src/wx-console/wxbrestorepanel.cpp:863
-msgid ""
-"Restore is scheduled to run. bwx-console will not wait for its completion."
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to connect to Client daemon: %s:%d\n"
+#~ msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:889
-msgid "Restore job created, but not yet running."
-msgstr ""
+#, fuzzy
+#~ msgid "3910 Unable to open device \"%s\": ERR=%s\n"
+#~ msgstr "Не можливо встановити час файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:894
-#, c-format
-msgid "Restore job running, please wait (%ld of %ld files restored)..."
-msgstr ""
+#, fuzzy
+#~ msgid "3915 Failed to label Volume: ERR=%s\n"
+#~ msgstr "Не можливо встановити час файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:898
-msgid "Restore job terminated successfully."
-msgstr ""
+#, fuzzy
+#~ msgid "3901 Unable to open device \"%s\": ERR=%s\n"
+#~ msgstr "Не можливо встановити час файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:899
-msgid "Restore job terminated successfully.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "3905 Unknown wait state %d\n"
+#~ msgstr "Невідомий статус задачі %c. "
 
-#: src/wx-console/wxbrestorepanel.cpp:904
-msgid "Restore job terminated in error, see messages in console."
-msgstr ""
+#, fuzzy
+#~ msgid "Could not open(%s,%s,0640): ERR=%s\n"
+#~ msgstr "Не вдалось відкрити%s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:905
-msgid "Restore job terminated in error, see messages.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Recv request to Client failed. ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:910
-msgid "Restore job reported a non-fatal error."
-msgstr ""
+#, fuzzy
+#~ msgid "Couldn't rewind %s device %s: ERR=%s\n"
+#~ msgstr "Не вдалось створити жорстку лінку(hardlink) %s -> %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:914
-msgid "Restore job reported a fatal error."
-msgstr ""
+#, fuzzy
+#~ msgid "Could not reserve volume %s on %s device %s\n"
+#~ msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:919
-msgid "Restore job cancelled by user."
-msgstr ""
+#, fuzzy
+#~ msgid "Open %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
+
+#, fuzzy
+#~ msgid "Rewind error on %s device %s: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:920
-msgid "Restore job cancelled by user.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Truncate error on %s device %s: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:925
 #, fuzzy
-msgid "Restore job is waiting on File daemon."
-msgstr "Статус задачі: Очікування Збирача"
+#~ msgid "Unable to write %s device %s: ERR=%s\n"
+#~ msgstr "Не можливо встановити час файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:929
 #, fuzzy
-msgid "Restore job is waiting for new media."
-msgstr "Статус задачі: Очікування нового носія"
+#~ msgid "Open of %s device %s Volume \"%s\" failed: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:933
 #, fuzzy
-msgid "Restore job is waiting for storage resource."
-msgstr "Статус задачі: Очікування ресурсу зберігання"
+#~ msgid "Unable to position to end of data on %s device %s: ERR=%s\n"
+#~ msgstr "Не можливо встановити час файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:937
 #, fuzzy
-msgid "Restore job is waiting for job resource."
-msgstr "Статус задачі: Очікування ресурсу задачі"
+#~ msgid "Labeled new Volume \"%s\" on %s device %s.\n"
+#~ msgstr "У картотеці створено новий Том \"%s\".\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:941
 #, fuzzy
-msgid "Restore job is waiting for Client resource."
-msgstr "Статус задачі: Очікування ресурсу Слієнту"
+#~ msgid "%s device %s not configured to autolabel Volumes.\n"
+#~ msgstr "TLS необхідний, але не налаштовано у Bacula.\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:945
 #, fuzzy
-msgid "Restore job is waiting for maximum jobs."
-msgstr "Статус задачі: Очікування кількості задач"
+#~ msgid "Cannot open %s Dev=%s, Vol=%s for reading.\n"
+#~ msgstr "Не вдається відкрити файл %s для введення. ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:949
 #, fuzzy
-msgid "Restore job is waiting for start time."
-msgstr "Статус задачі: Очікування часу початку"
+#~ msgid "3900 Unknown arg in .status command: %s\n"
+#~ msgstr "Невідомий статус задачі %c. "
 
-#: src/wx-console/wxbrestorepanel.cpp:953
 #, fuzzy
-msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr "Статус задачі: Очікування завершення пріоритетніших задач"
+#~ msgid ""
+#~ "\n"
+#~ "Version: %s (%s)\n"
+#~ "\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"
+#~ "        -f          run in foreground (for debugging)\n"
+#~ "        -g <group>  set groupid to group\n"
+#~ "        -m          print kaboom output (for debugging)\n"
+#~ "        -p          proceed despite I/O errors\n"
+#~ "        -s          no signals (for debugging)\n"
+#~ "        -t          test - read config and exit\n"
+#~ "        -u <user>   userid to <user>\n"
+#~ "        -v          verbose user messages\n"
+#~ "        -?          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/wx-console/wxbrestorepanel.cpp:1002
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Unable to init lock: ERR=%s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1003
-msgid ""
-"The restore job has not been started within one minute, bwx-console will not "
-"wait for its completion anymore."
-msgstr ""
+#, fuzzy
+#~ msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1013
-msgid "Restore done successfully.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Failed to connect to mailhost %s\n"
+#~ msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1014
-msgid "Restore done successfully."
-msgstr ""
+#, fuzzy
+#~ msgid "Could not open, database \"%s\".\n"
+#~ msgstr "Не вдалось відкрити%s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1086
-msgid "Applying restore configuration changes..."
-msgstr ""
+#, fuzzy
+#~ msgid "Unknown ObjectType %s\n"
+#~ msgstr "Невідомий тип ресурсу %d\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1138
-msgid "Failed to find the selected client."
-msgstr ""
+#~ msgid "Cannot open current directory: ERR=%s\n"
+#~ msgstr "Не можливо відкрити поточну теку: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1158
-msgid "Failed to find the selected fileset."
-msgstr ""
+#~ msgid "Cannot get current directory: ERR=%s\n"
+#~ msgstr "Не можливо отримати поточну теку: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1178
-msgid "Failed to find the selected storage."
-msgstr ""
+#~ msgid "Cannot reset current directory: ERR=%s\n"
+#~ msgstr "Не можливо перевстановити поточну теку: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1199
-#: src/wx-console/wxbrestorepanel.cpp:1886
-msgid "Run Restore job"
-msgstr ""
+#~ msgid "Error in %s file %s: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1216
-msgid "Restore configuration changes were applied."
-msgstr ""
+#~ msgid "Error in %s: ERR=%s\n"
+#~ msgstr "Помилка у %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1225
 #, fuzzy
-msgid "Restore cancelled.\n"
-msgstr "Статус задачі: Відмінена"
+#~ msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
+#~ msgstr "Не можливо створити теку %s: ERR=%s\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1226
-#, fuzzy
-msgid "Restore cancelled."
-msgstr "Статус задачі: Відмінена"
+#~ msgid ""
+#~ "Written by Nicolas Boichat (2004)\n"
+#~ "\n"
+#~ "Version: %s (%s) %s %s %s\n"
+#~ "\n"
+#~ "Usage: tray-monitor [-c config_file] [-d debug_level]\n"
+#~ "       -c <file>     set configuration file to file\n"
+#~ "       -d <nn>       set debug level to <nn>\n"
+#~ "       -dt           print timestamp in debug output\n"
+#~ "       -t            test - read configuration and exit\n"
+#~ "       -?            print this message.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Автор Nicolas Boichat (2004)\n"
+#~ "\n"
+#~ "Версія: %s (%s) %s %s %s\n"
+#~ "\n"
+#~ "Використання: tray-monitor [-c config_file] [-d debug_level]\n"
+#~ "       -c <file>     задати конфігураційний файл <file>\n"
+#~ "       -d <nn>       встановити рівень відлагоджування у <nn>\n"
+#~ "       -dt           виводити часову мітку у даних відлагоджування\n"
+#~ "       -t            перевірка - прогитати конфігурацію і завершити\n"
+#~ "       -?            показати це повідомлення.\n"
+#~ "\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1248
-msgid "No results to list."
-msgstr ""
+#~ msgid "Bacula daemon status monitor"
+#~ msgstr "Монітор статусу демонів Bacula"
 
-#: src/wx-console/wxbrestorepanel.cpp:1250
-msgid "No backup found for this client."
-msgstr ""
+#~ msgid "Open status window..."
+#~ msgstr "Відкрити вікно статусу"
 
-#: src/wx-console/wxbrestorepanel.cpp:1257
-msgid "ERROR"
-msgstr ""
+#~ msgid "Exit"
+#~ msgstr "Закінчити"
 
-#: src/wx-console/wxbrestorepanel.cpp:1258
-msgid "Query failed"
-msgstr ""
+#~ msgid " (DIR)"
+#~ msgstr "Керівник"
 
-#: src/wx-console/wxbrestorepanel.cpp:1260
-msgid "Cannot get previous backups list, see console."
-msgstr ""
+#~ msgid " (FD)"
+#~ msgstr "Збирач"
 
-#: src/wx-console/wxbrestorepanel.cpp:1896
-msgid "JobName:"
-msgstr ""
+#~ msgid " (SD)"
+#~ msgstr "(Зберігач)"
 
-#: src/wx-console/wxbrestorepanel.cpp:1898
-msgid "Bootstrap:"
-msgstr ""
+#~ msgid "Unknown status."
+#~ msgstr "Невідомий статус"
 
-#: src/wx-console/wxbrestorepanel.cpp:1900
-msgid "Where:"
-msgstr ""
+#~ msgid "Refresh interval in seconds: "
+#~ msgstr "Інтервал оновлення у секундах"
 
-#: src/wx-console/wxbrestorepanel.cpp:1903
-msgid "Replace:"
-msgstr ""
+#~ msgid "Refresh now"
+#~ msgstr "Оновити зараз"
 
-#: src/wx-console/wxbrestorepanel.cpp:1906
-msgid "ifnewer"
-msgstr ""
+#~ msgid "About"
+#~ msgstr "Про..."
 
-#: src/wx-console/wxbrestorepanel.cpp:1907
-msgid "ifolder"
-msgstr ""
+#~ msgid "Close"
+#~ msgstr "Зачинити"
 
-#: src/wx-console/wxbrestorepanel.cpp:1911
-msgid "FileSet:"
-msgstr ""
+#~ msgid "Disconnecting from Director %s:%d\n"
+#~ msgstr "Від'єднуюсь від Керівника %s:%d\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1913
-msgid "Client:"
-msgstr ""
+#~ msgid "Disconnecting from Client %s:%d\n"
+#~ msgstr "Від'єднуюсь від Клієнта %s:%d\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1915
-#, fuzzy
-msgid "Storage:"
-msgstr "Зберігач"
+#~ msgid "Disconnecting from Storage %s:%d\n"
+#~ msgstr "Від'єднуюсь від Зберігача %s:%d\n"
 
-#: src/wx-console/wxbrestorepanel.cpp:1917
-msgid "When:"
-msgstr ""
+#~ msgid "Version"
+#~ msgstr "Версія"
 
-#: src/wx-console/wxbrestorepanel.cpp:1920
-msgid "Priority:"
-msgstr ""
+#~ msgid ""
+#~ "Current job: %s\n"
+#~ "Last job: %s"
+#~ msgstr ""
+#~ "Поточна задача: %s\n"
+#~ "Остання задача: %s"
 
-#: src/wx-console/wxbrestorepanel.cpp:2028
-msgid "Restoring..."
-msgstr ""
+#~ msgid " (%d errors)"
+#~ msgstr " (%d помилок)"
 
-#: src/wx-console/console_thread.cpp:125
-#, 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"
+#~ msgid " (%d error)"
+#~ msgstr " (%d помилка)"
 
-#: 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"
+#~ msgid "No current job."
+#~ msgstr "Задачі відсутні"
 
-#: src/wx-console/console_thread.cpp:151
-#, 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"
+#~ msgid "Job status: Created"
+#~ msgstr "Статус задачі: Створена"
 
-#: src/wx-console/console_thread.cpp:173
-msgid "Error while initializing windows sockets...\n"
-msgstr ""
+#~ msgid "Job status: Running"
+#~ msgstr "Статус задачі: Працює"
 
-#: src/wx-console/console_thread.cpp:189
-msgid "Error while cleaning up windows sockets...\n"
-msgstr ""
+#~ msgid "Job status: Blocked"
+#~ msgstr "Статус задачі: Заблокована"
 
-#: src/wx-console/console_thread.cpp:228
-msgid "Error while initializing library."
-msgstr ""
+#~ msgid "Job status: Terminated"
+#~ msgstr "Статус задачі: Виконана"
 
-#: src/wx-console/console_thread.cpp:256
-#, fuzzy
-msgid "Cryptographic library initialization failed.\n"
-msgstr "Ініціалізація криптографії невдала.\n"
+#~ msgid "Job status: Terminated in error"
+#~ msgstr "Статус задачі: Виконана із помилками"
 
-#: src/wx-console/console_thread.cpp:260
-#, fuzzy
-msgid "Please correct configuration file.\n"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#~ msgid "Job status: Error"
+#~ msgstr "Статус задачі: Помилка"
 
-#: src/wx-console/console_thread.cpp:302
-#, fuzzy
-msgid "Error : Library not initialized\n"
-msgstr "Ініціалізація криптографії невдала.\n"
+#~ msgid "Job status: Fatal error"
+#~ msgstr "Статус задачі: Ватальна помилка"
 
-#: src/wx-console/console_thread.cpp:313
-#, fuzzy
-msgid "Error : No configuration file loaded\n"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#~ msgid "Job status: Verify differences"
+#~ msgstr "Статус задачі: Паревірка різниць"
 
-#: src/wx-console/console_thread.cpp:323
-#, fuzzy
-msgid "Connecting...\n"
-msgstr "З'єднано"
+#~ msgid "Job status: Canceled"
+#~ msgstr "Статус задачі: Відмінена"
 
-#: src/wx-console/console_thread.cpp:339
-msgid "Error : No director defined in config file.\n"
-msgstr ""
+#~ msgid "Job status: Waiting on File daemon"
+#~ msgstr "Статус задачі: Очікування Збирача"
 
-#: src/wx-console/console_thread.cpp:351
-msgid "Multiple directors found in your config file.\n"
-msgstr ""
+#~ msgid "Job status: Waiting on the Storage daemon"
+#~ msgstr "Статус задачі: Очікування Зберігача"
 
-#: src/wx-console/console_thread.cpp:360
-#, c-format
-msgid "Please choose a director (1-%d): "
-msgstr ""
+#~ msgid "Job status: Waiting for new media"
+#~ msgstr "Статус задачі: Очікування нового носія"
 
-#: src/wx-console/console_thread.cpp:389
-#, c-format
-msgid "Passphrase for Console \"%s\" TLS private key: "
-msgstr "Пароль для закритого ключа TLS Консолі \"%s\": "
+#~ msgid "Job status: Waiting for Mount"
+#~ msgstr "Статус задачі: Очікування монтування"
 
-#: src/wx-console/console_thread.cpp:410
-#, c-format
-msgid "Passphrase for Director \"%s\" TLS private key: "
-msgstr "Пароль для закритого ключа TLS Керівника \"%s\": "
+#~ msgid "Job status: Waiting for storage resource"
+#~ msgstr "Статус задачі: Очікування ресурсу зберігання"
 
-#: src/wx-console/console_thread.cpp:432
-#, fuzzy
-msgid "Failed to connect to the director\n"
-msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
+#~ msgid "Job status: Waiting for job resource"
+#~ msgstr "Статус задачі: Очікування ресурсу задачі"
 
-#: src/wx-console/console_thread.cpp:442
-#, fuzzy
-msgid "Connected\n"
-msgstr "З'єднано"
+#~ msgid "Job status: Waiting for Client resource"
+#~ msgstr "Статус задачі: Очікування ресурсу Слієнту"
 
-#: src/wx-console/console_thread.cpp:499
-msgid "<< Unexpected signal received : "
-msgstr ""
+#~ msgid "Job status: Waiting for maximum jobs"
+#~ msgstr "Статус задачі: Очікування кількості задач"
 
-#: src/wx-console/console_thread.cpp:519
-#, fuzzy
-msgid "Connection terminated\n"
-msgstr "Приєднуюсь до Клієнта %s:%d\n"
+#~ msgid "Job status: Waiting for start time"
+#~ msgstr "Статус задачі: Очікування часу початку"
 
-#: src/wx-console/wxbconfigpanel.cpp:213
-msgid "Apply"
-msgstr ""
+#~ msgid "Job status: Waiting for higher priority jobs to finish"
+#~ msgstr "Статус задачі: Очікування завершення пріоритетніших задач"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:82
-#: src/wx-console/wxbhistorytextctrl.cpp:153
-#: src/wx-console/wxbmainframe.cpp:291
-msgid "Type your command below:"
-msgstr ""
+#~ msgid "Unknown job status %c."
+#~ msgstr "Невідомий статус задачі %c. "
 
-#: src/wx-console/wxbhistorytextctrl.cpp:117
-#, fuzzy
-msgid "Unknown command."
-msgstr "Невідомий статус"
+#~ msgid "Job status: Unknown(%c)"
+#~ msgstr "Статус задачі: Невідомий(%c)"
 
-#: src/wx-console/wxbhistorytextctrl.cpp:126
-msgid "Possible completions: "
-msgstr ""
+#~ msgid "Connecting to Client %s:%d\n"
+#~ msgstr "Приєднуюсь до Клієнта %s:%d\n"
 
-#: src/wx-console/main.cpp:119
-msgid "Bacula bwx-console"
-msgstr ""
+#~ msgid "Connecting to Storage %s:%d\n"
+#~ msgstr "Приєднуюсь до Зберігача %s:%d\n"
 
-#: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
-#, c-format
-msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr "Ласкаво просимо до bacula bwx-console %s (%s)!\n"
+#~ msgid "Cannot connect to daemon.\n"
+#~ msgstr "Не можу приєднатись до демону.\n"
 
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "&About...\tF1"
-msgstr ""
+#~ msgid "Opened connection with Director daemon.\n"
+#~ msgstr "Відкриті з'єднання із Керівником.\n"
 
-#: src/wx-console/wxbmainframe.cpp:246
-msgid "Show about dialog"
-msgstr ""
+#~ msgid "Opened connection with File daemon.\n"
+#~ msgstr "Відкриті з'єднання із Збирачем.\n"
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
 #, fuzzy
-msgid "Connect"
-msgstr "З'єднано"
+#~ msgid "Truncate on attributes file failed: ERR=%s\n"
+#~ msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
-#, fuzzy
-msgid "Connect to the director"
-msgstr "Приєднуюсь до Керівника %s:%d"
+#~ msgid "Bad response to Hello command: ERR="
+#~ msgstr "Погана відповідь на команду Hello: ERR="
 
-#: src/wx-console/wxbmainframe.cpp:249
 #, fuzzy
-msgid "Disconnect"
-msgstr "З'єднано"
+#~ msgid "Unable to write to %s\n"
+#~ msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/wx-console/wxbmainframe.cpp:249
 #, fuzzy
-msgid "Disconnect of the director"
-msgstr "Від'єднуюсь від Керівника %s:%d\n"
+#~ msgid "Refresh"
+#~ msgstr "Оновити зараз"
 
-#: src/wx-console/wxbmainframe.cpp:251
 #, fuzzy
-msgid "Change of configuration file"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#~ msgid "Filename"
+#~ msgstr "Збирач"
 
-#: src/wx-console/wxbmainframe.cpp:251
 #, fuzzy
-msgid "Change your default configuration file"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#~ msgid "Fileset"
+#~ msgstr "Дата файлу"
 
-#: src/wx-console/wxbmainframe.cpp:252
 #, fuzzy
-msgid "Edit your configuration file"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "E&xit\tAlt-X"
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:254
-msgid "Quit this program"
-msgstr ""
+#~ msgid "Job failed."
+#~ msgstr "Статус задачі: Відмінена"
 
-#: src/wx-console/wxbmainframe.cpp:258
-msgid "&File"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore job is waiting on File daemon."
+#~ msgstr "Статус задачі: Очікування Збирача"
 
-#: src/wx-console/wxbmainframe.cpp:259
-msgid "&Help"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore job is waiting for new media."
+#~ msgstr "Статус задачі: Очікування нового носія"
 
-#: src/wx-console/wxbmainframe.cpp:283
-msgid ""
-"Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore job is waiting for storage resource."
+#~ msgstr "Статус задачі: Очікування ресурсу зберігання"
 
-#: src/wx-console/wxbmainframe.cpp:287
-msgid ""
-"Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode "
-"support when handling non-ASCII filenames: Every non-ASCII character in such "
-"filenames will be replaced by an interrogation mark.\n"
-"If this behaviour disturbs you, please build bwx-console against a Unicode "
-"version of wxWidgets for GTK+ 2.0.\n"
-"---\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore job is waiting for job resource."
+#~ msgstr "Статус задачі: Очікування ресурсу задачі"
 
-#: src/wx-console/wxbmainframe.cpp:298
-msgid "Send"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore job is waiting for Client resource."
+#~ msgstr "Статус задачі: Очікування ресурсу Слієнту"
 
-#: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
-msgid "Error while parsing command line arguments, using defaults.\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore job is waiting for maximum jobs."
+#~ msgstr "Статус задачі: Очікування кількості задач"
 
-#: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
-msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore job is waiting for higher priority jobs to finish."
+#~ msgstr "Статус задачі: Очікування завершення пріоритетніших задач"
 
-#: src/wx-console/wxbmainframe.cpp:417
-#, c-format
-msgid ""
-"It seems that it is the first time you run bwx-console.\n"
-"This file (%s) has been choosen as default configuration file.\n"
-"Do you want to edit it? (if you click No you will have to select another "
-"file)"
-msgstr ""
+#, fuzzy
+#~ msgid "Restore cancelled."
+#~ msgstr "Статус задачі: Відмінена"
 
-#: src/wx-console/wxbmainframe.cpp:419
-msgid "First run"
-msgstr ""
+#, fuzzy
+#~ msgid "Storage:"
+#~ msgstr "Зберігач"
 
-#: src/wx-console/wxbmainframe.cpp:436
-#, c-format
-msgid ""
-"Unable to read %s\n"
-"Error: %s\n"
-"Do you want to choose another one? (Press no to edit this file)"
-msgstr ""
+#, fuzzy
+#~ 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/wxbmainframe.cpp:438
 #, fuzzy
-msgid "Unable to read configuration file"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#~ 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/wxbmainframe.cpp:450
 #, fuzzy
-msgid "Please choose a configuration file to use"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#~ 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/wxbmainframe.cpp:463
-msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
+#, fuzzy
+#~ msgid "Cryptographic library initialization failed.\n"
+#~ msgstr "Ініціалізація криптографії невдала.\n"
 
-#: src/wx-console/wxbmainframe.cpp:464
-msgid "Configuration file read successfully"
-msgstr ""
+#, fuzzy
+#~ msgid "Please correct configuration file.\n"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:474
-#, fuzzy, c-format
-msgid "Using this configuration file: %s\n"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#, fuzzy
+#~ msgid "Error : Library not initialized\n"
+#~ msgstr "Ініціалізація криптографії невдала.\n"
 
-#: src/wx-console/wxbmainframe.cpp:479
 #, fuzzy
-msgid "Connecting to the director..."
-msgstr "Приєднуюсь до Керівника %s:%d"
+#~ msgid "Error : No configuration file loaded\n"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:494
-msgid "Failed to unregister a data parser !"
-msgstr ""
+#, fuzzy
+#~ msgid "Connecting...\n"
+#~ msgstr "З'єднано"
 
-#: src/wx-console/wxbmainframe.cpp:502
-msgid "Quitting.\n"
-msgstr ""
+#~ msgid "Passphrase for Console \"%s\" TLS private key: "
+#~ msgstr "Пароль для закритого ключа TLS Консолі \"%s\": "
 
-#: src/wx-console/wxbmainframe.cpp:517
-msgid ""
-"Welcome to Bacula bwx-console.\n"
-"Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
-msgstr ""
+#~ msgid "Passphrase for Director \"%s\" TLS private key: "
+#~ msgstr "Пароль для закритого ключа TLS Керівника \"%s\": "
 
-#: src/wx-console/wxbmainframe.cpp:521
 #, fuzzy
-msgid "About Bacula bwx-console"
-msgstr "Ласкаво просимо до bacula bwx-console %s (%s)!\n"
+#~ msgid "Failed to connect to the director\n"
+#~ msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
 
-#: src/wx-console/wxbmainframe.cpp:527
 #, fuzzy
-msgid "Please choose your default configuration file"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#~ msgid "Connected\n"
+#~ msgstr "З'єднано"
 
-#: src/wx-console/wxbmainframe.cpp:531
 #, fuzzy
-msgid "Use this configuration file as default?"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
+#~ msgid "Connection terminated\n"
+#~ msgstr "Приєднуюсь до Клієнта %s:%d\n"
 
-#: src/wx-console/wxbmainframe.cpp:532
 #, fuzzy
-msgid "Configuration file"
-msgstr "Будьласка виправте файл конфігурації: %s\n"
-
-#: src/wx-console/wxbmainframe.cpp:603
-msgid "Console thread terminated."
-msgstr ""
-
-#: src/wx-console/wxbmainframe.cpp:611
-msgid "Connection to the director lost. Quit program?"
-msgstr ""
+#~ msgid "Unknown command."
+#~ msgstr "Невідомий статус"
 
-#: src/wx-console/wxbmainframe.cpp:612
 #, fuzzy
-msgid "Connection lost"
-msgstr "Помилка : З'єднання завершено"
+#~ msgid "Connect"
+#~ msgstr "З'єднано"
 
-#: src/wx-console/wxbmainframe.cpp:628
 #, fuzzy
-msgid "Connected to the director."
-msgstr "Приєднуюсь до Керівника %s:%d"
+#~ msgid "Connect to the director"
+#~ msgstr "Приєднуюсь до Керівника %s:%d"
 
-#: src/wx-console/wxbmainframe.cpp:651
 #, fuzzy
-msgid "Reconnect"
-msgstr "З'єднано"
+#~ msgid "Disconnect"
+#~ msgstr "З'єднано"
 
-#: src/wx-console/wxbmainframe.cpp:652
 #, fuzzy
-msgid "Reconnect to the director"
-msgstr "Приєднуюсь до Керівника %s:%d"
+#~ msgid "Disconnect of the director"
+#~ msgstr "Від'єднуюсь від Керівника %s:%d\n"
 
-#: src/wx-console/wxbmainframe.cpp:666
 #, fuzzy
-msgid "Disconnected of the director."
-msgstr "Від'єднуюсь від Керівника %s:%d\n"
+#~ msgid "Change of configuration file"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
-msgid "bwx-console: unexpected director's question."
-msgstr ""
+#, fuzzy
+#~ msgid "Change your default configuration file"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/qt-console/tray-monitor/tray-monitor.cpp:67
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"
-msgstr ""
-"Автор Nicolas Boichat (2004)\n"
-"\n"
-"Версія: %s (%s) %s %s %s\n"
-"\n"
-"Використання: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     задати конфігураційний файл <file>\n"
-"       -d <nn>       встановити рівень відлагоджування у <nn>\n"
-"       -dt           виводити часову мітку у даних відлагоджування\n"
-"       -t            перевірка - прогитати конфігурацію і завершити\n"
-"       -?            показати це повідомлення.\n"
-"\n"
+#, fuzzy
+#~ msgid "Edit your configuration file"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:92
-#, c-format
-msgid "Already connected\"%s\".\n"
-msgstr "Вже приєднано\"%s\".\n"
+#, fuzzy
+#~ msgid "Unable to read configuration file"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:105
-#, c-format
-msgid ""
-"Connecting to Director %s:%d\n"
-"\n"
-msgstr ""
-"З'єднуюсь із Керівником %s:%d\n"
-"\n"
+#, fuzzy
+#~ msgid "Please choose a configuration file to use"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:208
-msgid "Initializing ..."
-msgstr "Ініціалізація ..."
+#, fuzzy
+#~ msgid "Using this configuration file: %s\n"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
-msgid "Connected"
-msgstr "З'єднано"
+#, fuzzy
+#~ msgid "Connecting to the director..."
+#~ msgstr "Приєднуюсь до Керівника %s:%d"
 
-#: src/qt-console/bcomm/dircomm.cpp:348
-msgid "Command completed ..."
-msgstr "Команду виконано ..."
+#, fuzzy
+#~ msgid "Please choose your default configuration file"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
-msgid "Processing command ..."
-msgstr "Виконання команди ..."
+#, fuzzy
+#~ msgid "Use this configuration file as default?"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:362
-msgid "At main prompt waiting for input ..."
-msgstr "Очікуться введення у основній рядку ..."
+#, fuzzy
+#~ msgid "Configuration file"
+#~ msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
-msgid "At prompt waiting for input ..."
-msgstr "Очікуться введення у рядку ..."
+#, fuzzy
+#~ msgid "Connection lost"
+#~ msgstr "Помилка : З'єднання завершено"
 
-#: src/qt-console/bcomm/dircomm.cpp:390
-msgid "Command failed."
-msgstr "Помилка команди"
+#, fuzzy
+#~ msgid "Connected to the director."
+#~ msgstr "Приєднуюсь до Керівника %s:%d"
 
-#: src/qt-console/bcomm/dircomm.cpp:463
-msgid "Director disconnected."
-msgstr "Керівник від'єднано"
+#, fuzzy
+#~ msgid "Reconnect"
+#~ msgstr "З'єднано"
 
-#: src/qt-console/bat_conf.cpp:154
-#, c-format
-msgid "Console: name=%s\n"
-msgstr "Консоль: назва=%s\n"
+#, fuzzy
+#~ msgid "Reconnect to the director"
+#~ msgstr "Приєднуюсь до Керівника %s:%d"
 
-#: src/qt-console/main.cpp:191
-#, c-format
-msgid ""
-"\n"
-"Version: %s (%s) %s %s %s\n"
-"\n"
-"Usage: 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          no signals\n"
-"       -t          test - read configuration and exit\n"
-"       -?          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"
+#, fuzzy
+#~ msgid "Disconnected of the director."
+#~ msgstr "Від'єднуюсь від Керівника %s:%d\n"
 
 #~ msgid ""
 #~ "Authorization key rejected by Storage daemon.\n"
diff --git a/projects b/projects
deleted file mode 100644
index 0f997e0..0000000
--- a/projects
+++ /dev/null
@@ -1,1292 +0,0 @@
-                
-Projects:
-                     Bacula Projects Roadmap 
-                    Status updated 8 August 2010
-
-Summary:
-* => item complete
-
-Item  1: Ability to restart failed jobs
-Item  2: SD redesign
-Item* 3: NDMP backup/restore                                           
-Item  4: SAP backup/restore                                           
-Item  5: Oracle backup/restore                                           
-Item  6: Zimbra and Zarafa backup/restore
-Item* 7: Include timestamp of job launch in "stat clients" output
-Item  8: Include all conf files in specified directory
-Item  9: Reduction of communications bandwidth for a backup
-Item 10: Concurrent spooling and despooling within a single job.
-Item 11: Start spooling even when waiting on tape
-Item*12: Add ability to Verify any specified Job.
-Item 13: Data encryption on storage daemon
-Item 14: Possibilty to schedule Jobs on last Friday of the month
-Item 15: Scheduling syntax that permits more flexibility and options
-Item 16: Ability to defer Batch Insert to a later time
-Item 17: Add MaxVolumeSize/MaxVolumeBytes to Storage resource
-Item 18: Message mailing based on backup types
-Item 19: Handle Windows Encrypted Files using Win raw encryption
-Item 20: Job migration between different SDs
-Item 19. Allow FD to initiate a backup
-Item 21: Implement Storage daemon compression
-Item 22: Ability to import/export Bacula database entities
-Item*23: Implementation of running Job speed limit.
-Item 24: Add an override in Schedule for Pools based on backup types
-Item 25: Automatic promotion of backup levels based on backup size
-Item 26: Allow FileSet inclusion/exclusion by creation/mod times
-Item 27: Archival (removal) of User Files to Tape
-Item 28: Ability to reconnect a disconnected comm line
-Item 29: Multiple threads in file daemon for the same job
-Item 30: Automatic disabling of devices
-Item 31: Enable persistent naming/number of SQL queries
-Item 32: Bacula Dir, FD and SD to support proxies
-Item 33: Add Minumum Spool Size directive
-Item 34: Command that releases all drives in an autochanger
-Item 35: Run bscan on a remote storage daemon from within bconsole.
-Item 36: Implement a Migration job type that will create a reverse
-Item 37: Separate "Storage" and "Device" in the bacula-dir.conf
-Item 38: Least recently used device selection for tape drives in autochanger.
-Item 39: Implement a Storage device like Amazon's S3.
-Item*40: Convert tray monitor on Windows to a stand alone program
-Item 41: Improve Bacula's tape and drive usage and cleaning management 
-Item 42: Relabel disk volume after recycling
-
-Item  1: Ability to restart failed jobs
-   Date: 26 April 2009
- Origin: Kern/Eric
- Status: 
-
-  What:  Often jobs fail because of a communications line drop or max run time,
-          cancel, or some other non-critical problem.  Currrently any data
-          saved is lost.  This implementation should modify the Storage daemon
-          so that it saves all the files that it knows are completely backed
-          up to the Volume
-
-          The jobs should then be marked as incomplete and a subsequent
-          Incremental Accurate backup will then take into account all the
-          previously saved job.
-
-  Why:   Avoids backuping data already saved.
-
-  Notes: Requires Accurate to restart correctly.  Must completed have a minimum
-          volume of data or files stored on Volume before enabling.
-
-Item  2: SD redesign
-   Date: 8 August 2010
- Origin: Kern
- Status: 
-
-  What: Various ideas for redesigns planned for the SD:
-   1. One thread per drive
-   2. Design a class structure for all objects in the SD.
-   3. Make Device into C++ classes for each device type
-   4. Make Device have a proxy (front end intercept class) that will permit control over locking and changing the real device pointer.  It can also permit delaying opening, so that we can adapt to having another program that tells us the Archive device name.
-   5. Allow plugins to create new on the fly devices
-   6. Separate SD volume manager
-   7. Volume manager tells Bacula what drive or device to use for a given volume
-  
-  Why:  It will simplify the SD, make it more modular, reduce locking
-        conflicts, and allow multiple buffer backups.
-
-
-Item  3: NDMP backup/restore                                           
-   Date: 8 August 2010
- Origin: Bacula Systems
- Status: Enterprise only if implemented by Bacula Systems
-
-  What:  Backup/restore via NDMP -- most important NetApp compatibility
-
-
-
-Item  4: SAP backup/restore                                           
-   Date: 8 August 2010
- Origin: Bacula Systems
- Status: Enterprise only if implemented by Bacula Systems
-
-  What:  Backup/restore SAP databases (MaxDB, Oracle, possibly DB2)
-
-
-
-Item  5: Oracle backup/restore                                           
-   Date: 8 August 2010
- Origin: Bacula Systems
- Status: Enterprise only if implemented by Bacula Systems
-
-  What:  Backup/restore Oracle databases
-
-
-Item  6: Zimbra and Zarafa backup/restore
-   Date: 8 August 2010
- Origin: Bacula Systems
- Status: Enterprise only if implemented by Bacula Systems
-
-  What:  Backup/restore for Zimbra and Zarafa
-
-
-
-Item  7: Include timestamp of job launch in "stat clients" output
-  Origin: Mark Bergman <mark.bergman at uphs.upenn.edu>
-  Date:  Tue Aug 22 17:13:39 EDT 2006
-  Status: Done
-
-  What:  The "stat clients" command doesn't include any detail on when
-          the active backup jobs were launched.
-
-  Why:   Including the timestamp would make it much easier to decide whether
-          a job is running properly. 
-
-  Notes: It may be helpful to have the output from "stat clients" formatted 
-          more like that from "stat dir" (and other commands), in a column
-          format. The per-client information that's currently shown (level,
-          client name, JobId, Volume, pool, device, Files, etc.) is good, but
-          somewhat hard to parse (both programmatically and visually), 
-          particularly when there are many active clients.
-
-
-Item  8: Include all conf files in specified directory
-Date:  18 October 2008
-Origin: Database, Lda. Maputo, Mozambique
-Contact:Cameron Smith / cameron.ord at database.co.mz 
-Status: New request
-
-What: A directive something like "IncludeConf = /etc/bacula/subconfs" Every
-      time Bacula Director restarts or reloads, it will walk the given
-      directory (non-recursively) and include the contents of any files
-      therein, as though they were appended to bacula-dir.conf
-
-Why: Permits simplified and safer configuration for larger installations with
-      many client PCs.  Currently, through judicious use of JobDefs and
-      similar directives, it is possible to reduce the client-specific part of
-      a configuration to a minimum.  The client-specific directives can be
-      prepared according to a standard template and dropped into a known
-      directory.  However it is still necessary to add a line to the "master"
-      (bacula-dir.conf) referencing each new file.  This exposes the master to
-      unnecessary risk of accidental mistakes and makes automation of adding
-      new client-confs, more difficult (it is easier to automate dropping a
-      file into a dir, than rewriting an existing file).  Ken has previously
-      made a convincing argument for NOT including Bacula's core configuration
-      in an RDBMS, but I believe that the present request is a reasonable
-      extension to the current "flat-file-based" configuration philosophy.
- 
-Notes: There is NO need for any special syntax to these files.  They should
-       contain standard directives which are simply "inlined" to the parent
-       file as already happens when you explicitly reference an external file.
-
-Notes: (kes) this can already be done with scripting
-     From: John Jorgensen <jorgnsn at lcd.uregina.ca>
-     The bacula-dir.conf at our site contains these lines:
-
-   #
-   # Include subfiles associated with configuration of clients.
-   # They define the bulk of the Clients, Jobs, and FileSets.
-   #
-   @|"sh -c 'for f in /etc/bacula/clientdefs/*.conf ; do echo @${f} ; done'"
-
-    and when we get a new client, we just put its configuration into
-    a new file called something like:
-
-    /etc/bacula/clientdefs/clientname.conf
-
-
-
-
-Item  9: Reduction of communications bandwidth for a backup
-   Date: 14 October 2008
- Origin: Robin O'Leary (Equiinet)
- Status: 
-
-  What:  Using rdiff techniques, Bacula could significantly reduce
-          the network data transfer volume to do a backup.
-
-  Why:   Faster backup across the Internet
-
-  Notes: This requires retaining certain data on the client during a Full
-          backup that will speed up subsequent backups.
-     
-
-Item 10: Concurrent spooling and despooling within a single job.
-Date:  17 nov 2009
-Origin: Jesper Krogh <jesper at krogh.cc>
-Status: NEW
-What:  When a job has spooling enabled and the spool area size is
-       less than the total volumes size the storage daemon will:
-       1) Spool to spool-area
-       2) Despool to tape
-       3) Go to 1 if more data to be backed up.
-
-       Typical disks will serve data with a speed of 100MB/s when
-       dealing with large files, network it typical capable of doing 115MB/s
-       (GbitE). Tape drives will despool with 50-90MB/s (LTO3) 70-120MB/s
-       (LTO4) depending on compression and data.
-
-       As bacula currently works it'll hold back data from the client until
-       de-spooling is done, now matter if the spool area can handle another
-       block of data. Say given a FileSet of 4TB and a spool-area of 100GB and
-       a Maximum Job Spool Size set to 50GB then above sequence could be
-       changed to allow to spool to the other 50GB while despooling the first
-       50GB and not holding back the client while doing it. As above numbers
-       show, depending on tape-drive and disk-arrays this potentially leads to
-       a cut of the backup-time of 50% for the individual jobs.
-
-       Real-world example, backing up 112.6GB (large files) to LTO4 tapes
-       (despools with ~75MB/s, data is gzipped on the remote filesystem.
-       Maximum Job Spool Size = 8GB
-
-       Current:
-       Size: 112.6GB
-       Elapsed time (total time): 46m 15s => 2775s
-       Despooling time: 25m 41s => 1541s (55%)
-       Spooling time: 20m 34s => 1234s (45%)
-       Reported speed: 40.58MB/s
-       Spooling speed: 112.6GB/1234s => 91.25MB/s
-       Despooling speed: 112.6GB/1541s => 73.07MB/s
-
-       So disk + net can "keep up" with the LTO4 drive (in this test)
-
-       Prosed change would effectively make the backup run in the "despooling
-       time" 1541s giving a reduction to 55% of the total run time.
-
-       In the situation where the individual job cannot keep up with LTO-drive
-       spooling enables efficient multiplexing of multiple concurrent jobs onto
-       the same drive.
-
-Why:   When dealing with larger volumes the general utillization of the
-       network/disk is important to maximize in order to be able to run a full
-       backup over a weekend. Current work-around is to split the FileSet in
-       smaller FileSet and Jobs but that leads to more configuration mangement
-       and is harder to review for completeness. Subsequently it makes restores
-       more complex.
-
-     
-
-Item 11: Start spooling even when waiting on tape
-  Origin: Tobias Barth <tobias.barth at web-arts.com>
-  Date:  25 April 2008
-  Status:
-
-  What: If a job can be spooled to disk before writing it to tape, it should
-          be spooled immediately.  Currently, bacula waits until the correct
-          tape is inserted into the drive.
-
-  Why:   It could save hours.  When bacula waits on the operator who must insert
-          the correct tape (e.g.  a new tape or a tape from another media
-          pool), bacula could already prepare the spooled data in the spooling
-          directory and immediately start despooling when the tape was
-          inserted by the operator.
-         
-          2nd step: Use 2 or more spooling directories.  When one directory is
-          currently despooling, the next (on different disk drives) could
-          already be spooling the next data.
-
-  Notes: I am using bacula 2.2.8, which has none of those features
-         implemented.
-
-
-Item 12: Add ability to Verify any specified Job.
-Date: 17 January 2008
-Origin: portrix.net Hamburg, Germany.
-Contact: Christian Sabelmann
-Status: Can use jobid= in run command to select an old job
-
-   What:
-   The ability to tell Bacula which Job should verify instead of 
-   automatically verify just the last one.
-
-   Why: 
-   It is sad that such a powerfull feature like Verify Jobs
-   (VolumeToCatalog) is restricted to be used only with the last backup Job
-   of a client.  Actual users who have to do daily Backups are forced to
-   also do daily Verify Jobs in order to take advantage of this useful
-   feature.  This Daily Verify after Backup conduct is not always desired
-   and Verify Jobs have to be sometimes scheduled.  (Not necessarily
-   scheduled in Bacula).  With this feature Admins can verify Jobs once a
-   Week or less per month, selecting the Jobs they want to verify.  This
-   feature is also not to difficult to implement taking in account older bug
-   reports about this feature and the selection of the Job to be verified.
-          
-   Notes: For the verify Job, the user could select the Job to be verified 
-   from a List of the latest Jobs of a client. It would also be possible to 
-   verify a certain volume.  All of these would naturaly apply only for 
-   Jobs whose file information are still in the catalog.
-
-
-Item 13: Data encryption on storage daemon
-  Origin: Tobias Barth <tobias.barth at web-arts.com>
-  Date:  04 February 2009
-  Status: new
-
-  What: The storage demon should be able to do the data encryption that can
-        currently be done by the file daemon.
-
-  Why: This would have 2 advantages: 
-       1) one could encrypt the data of unencrypted tapes by doing a 
-          migration job
-       2) the storage daemon would be the only machine that would have 
-          to keep the encryption keys.
-
-  Notes from Landon:
-          As an addendum to the feature request, here are some crypto  
-          implementation details I wrote up regarding SD-encryption back in Jan  
-          2008:
-          http://www.mail-archive.com/bacula-users@lists.sourceforge.net/msg28860.html
-
-
-
-Item 14: Possibilty to schedule Jobs on last Friday of the month
-Origin: Carsten Menke <bootsy52 at gmx dot net>
-Date:   02 March 2008
-Status:
-
-   What: Currently if you want to run your monthly Backups on the last
-           Friday of each month this is only possible with workarounds (e.g
-           scripting) (As some months got 4 Fridays and some got 5 Fridays)
-           The same is true if you plan to run your yearly Backups on the
-           last Friday of the year.  It would be nice to have the ability to
-           use the builtin scheduler for this.
-
-   Why:   In many companies the last working day of the week is Friday (or 
-           Saturday), so to get the most data of the month onto the monthly
-           tape, the employees are advised to insert the tape for the
-           monthly backups on the last friday of the month.
-
-   Notes: To give this a complete functionality it would be nice if the
-           "first" and "last" Keywords could be implemented in the
-           scheduler, so it is also possible to run monthy backups at the
-           first friday of the month and many things more.  So if the syntax
-           would expand to this {first|last} {Month|Week|Day|Mo-Fri} of the
-           {Year|Month|Week} you would be able to run really flexible jobs.
-
-           To got a certain Job run on the last Friday of the Month for example
-           one could then write
-
-              Run = pool=Monthly last Fri of the Month at 23:50
-
-              ## Yearly Backup
-
-              Run = pool=Yearly last Fri of the Year at 23:50
-
-              ## Certain Jobs the last Week of a Month
-
-              Run = pool=LastWeek last Week of the Month at 23:50
-
-              ## Monthly Backup on the last day of the month
-
-              Run = pool=Monthly last Day of the Month at 23:50
-
-Item 15: Scheduling syntax that permits more flexibility and options
-   Date: 15 December 2006
-  Origin: Gregory Brauer (greg at wildbrain dot com) and
-          Florian Schnabel <florian.schnabel at docufy dot de>
-  Status:
-
-   What: Currently, Bacula only understands how to deal with weeks of the
-          month or weeks of the year in schedules.  This makes it impossible
-          to do a true weekly rotation of tapes.  There will always be a
-          discontinuity that will require disruptive manual intervention at
-          least monthly or yearly because week boundaries never align with
-          month or year boundaries.
-
-          A solution would be to add a new syntax that defines (at least)
-          a start timestamp, and repetition period.
-
-          An easy option to skip a certain job  on a certain date.
-   
-
-     Why: Rotated backups done at weekly intervals are useful, and Bacula
-          cannot currently do them without extensive hacking.
-
-          You could then easily skip tape backups on holidays.  Especially
-          if you got no autochanger and can only fit one backup on a tape
-          that would be really handy, other jobs could proceed normally
-          and you won't get errors that way.
-
-
-   Notes: Here is an example syntax showing a 3-week rotation where full
-          Backups would be performed every week on Saturday, and an
-          incremental would be performed every week on Tuesday.  Each
-          set of tapes could be removed from the loader for the following
-          two cycles before coming back and being reused on the third
-          week.  Since the execution times are determined by intervals
-          from a given point in time, there will never be any issues with
-          having to adjust to any sort of arbitrary time boundary.  In
-          the example provided, I even define the starting schedule
-          as crossing both a year and a month boundary, but the run times
-          would be based on the "Repeat" value and would therefore happen
-          weekly as desired.
-
-
-          Schedule {
-              Name = "Week 1 Rotation"
-              #Saturday.  Would run Dec 30, Jan 20, Feb 10, etc.
-              Run {
-                  Options {
-                      Type   = Full
-                      Start  = 2006-12-30 01:00
-                      Repeat = 3w
-                  }
-              }
-              #Tuesday.  Would run Jan 2, Jan 23, Feb 13, etc.
-              Run {
-                  Options {
-                      Type   = Incremental
-                      Start  = 2007-01-02 01:00
-                      Repeat = 3w
-                  }
-              }
-          }
-
-          Schedule {
-              Name = "Week 2 Rotation"
-              #Saturday.  Would run Jan 6, Jan 27, Feb 17, etc.
-              Run {
-                  Options {
-                      Type   = Full
-                      Start  = 2007-01-06 01:00
-                      Repeat = 3w
-                  }
-              }
-              #Tuesday.  Would run Jan 9, Jan 30, Feb 20, etc.
-              Run {
-                  Options {
-                      Type   = Incremental
-                      Start  = 2007-01-09 01:00
-                      Repeat = 3w
-                  }
-              }
-          }
-
-          Schedule {
-              Name = "Week 3 Rotation"
-              #Saturday.  Would run Jan 13, Feb 3, Feb 24, etc.
-              Run {
-                  Options {
-                      Type   = Full
-                      Start  = 2007-01-13 01:00
-                      Repeat = 3w
-                  }
-              }
-              #Tuesday.  Would run Jan 16, Feb 6, Feb 27, etc.
-              Run {
-                  Options {
-                      Type   = Incremental
-                      Start  = 2007-01-16 01:00
-                      Repeat = 3w
-                  }
-              }
-          }
-
-   Notes: Kern: I have merged the previously separate project of skipping 
-          jobs (via Schedule syntax) into this.
-
-
-Item 16: Ability to defer Batch Insert to a later time
-   Date: 26 April 2009
- Origin: Eric
- Status: 
-
-  What:  Instead of doing a Job Batch Insert at the end of the Job
-          which might create resource contention with lots of Job,
-          defer the insert to a later time.
-
-  Why:   Permits to focus on getting the data on the Volume and
-          putting the metadata into the Catalog outside the backup
-          window.
-
-  Notes: Will use the proposed Bacula ASCII database import/export
-          format (i.e. dependent on the import/export entities project).
-
-
-Item 17: Add MaxVolumeSize/MaxVolumeBytes to Storage resource
-   Origin: Bastian Friedrich <bastian.friedrich at collax.com>
-   Date:  2008-07-09
-   Status: -
-
-   What:  SD has a "Maximum Volume Size" statement, which is deprecated and
-           superseded by the Pool resource statement "Maximum Volume Bytes".
-           It would be good if either statement could be used in Storage
-           resources.
-
-   Why:   Pools do not have to be restricted to a single storage type/device;
-           thus, it may be impossible to define Maximum Volume Bytes in the
-           Pool resource.  The old MaxVolSize statement is deprecated, as it
-           is SD side only.  I am using the same pool for different devices.
-
-   Notes: State of idea currently unknown.  Storage resources in the dir
-           config currently translate to very slim catalog entries; these
-           entries would require extensions to implement what is described
-           here.  Quite possibly, numerous other statements that are currently
-           available in Pool resources could be used in Storage resources too
-           quite well.
-
-
-Item 18: Message mailing based on backup types
- Origin: Evan Kaufman <evan.kaufman at gmail.com>
-   Date: January 6, 2006
- Status:
-
-   What: In the "Messages" resource definitions, allowing messages
-          to be mailed based on the type (backup, restore, etc.) and level
-          (full, differential, etc) of job that created the originating
-          message(s).
-
- Why:    It would, for example, allow someone's boss to be emailed
-          automatically only when a Full Backup job runs, so he can
-          retrieve the tapes for offsite storage, even if the IT dept.
-          doesn't (or can't) explicitly notify him.  At the same time, his
-          mailbox wouldnt be filled by notifications of Verifies, Restores,
-          or Incremental/Differential Backups (which would likely be kept
-          onsite).
-
- Notes: One way this could be done is through additional message types, for
- example:
-
-   Messages {
-     # email the boss only on full system backups
-     Mail = boss at mycompany.com = full, !incremental, !differential, !restore, 
-            !verify, !admin
-     # email us only when something breaks
-     MailOnError = itdept at mycompany.com = all
-   }
-
-   Notes: Kern: This should be rather trivial to implement.
-
-
-Item 19: Handle Windows Encrypted Files using Win raw encryption
-  Origin: Michael Mohr, SAG  Mohr.External at infineon.com
-  Date:  22 February 2008
-  Origin: Alex Ehrlich (Alex.Ehrlich-at-mail.ee)
-  Date:  05 August 2008
-  Status:
-
-  What: Make it possible to backup and restore Encypted Files from and to
-          Windows systems without the need to decrypt it by using the raw
-          encryption functions API (see:
-          http://msdn2.microsoft.com/en-us/library/aa363783.aspx)
-          that is provided for that reason by Microsoft.
-          If a file ist encrypted could be examined by evaluating the 
-          FILE_ATTRIBUTE_ENCRYTED flag of the GetFileAttributes
-          function.
-          For each file backed up or restored by FD on Windows, check if
-          the file is encrypted; if so then use OpenEncryptedFileRaw,
-          ReadEncryptedFileRaw, WriteEncryptedFileRaw,
-          CloseEncryptedFileRaw instead of BackupRead and BackupWrite
-          API calls.
-
-  Why:   Without the usage of this interface the fd-daemon running
-          under the system account can't read encypted Files because
-          the key needed for the decrytion is missed by them. As a result 
-          actually encrypted files are not backed up
-          by bacula and also no error is shown while missing these files.
-
-   Notes: Using xxxEncryptedFileRaw API would allow to backup and
-           restore EFS-encrypted files without decrypting their data.
-           Note that such files cannot be restored "portably" (at least,
-           easily) but they would be restoreable to a different (or
-           reinstalled) Win32 machine; the restore would require setup
-           of a EFS recovery agent in advance, of course, and this shall
-           be clearly reflected in the documentation, but this is the
-           normal Windows SysAdmin's business.
-           When "portable" backup is requested the EFS-encrypted files
-           shall be clearly reported as errors.
-           See MSDN on the "Backup and Restore of Encrypted Files" topic:
-           http://msdn.microsoft.com/en-us/library/aa363783.aspx
-           Maybe the EFS support requires a new flag in the database for
-           each file, too?
-           Unfortunately, the implementation is not as straightforward as
-           1-to-1 replacement of BackupRead with ReadEncryptedFileRaw,
-           requiring some FD code rewrite to work with
-           encrypted-file-related callback functions.
-
-Item 20: Job migration between different SDs
-Origin:  Mariusz Czulada <manieq AT wp DOT eu>
-Date:    07 May 2007
-Status:  NEW
-
-What:   Allow to specify in migration job devices on Storage Daemon other then
-        the one used for migrated jobs (possibly on different/distant host)
-
-Why:    Sometimes we have more then one system which requires backup
-        implementation.  Often, these systems are functionally unrelated and
-        placed in different locations.  Having a big backup device (a tape
-        library) in each location is not cost-effective.  It would be much
-        better to have one powerful enough tape library which could handle
-        backups from all systems, assuming relatively fast and reliable WAN
-        connections.  In such architecture backups are done in service windows
-        on local bacula servers, then migrated to central storage off the peak
-        hours.
-
-Notes:  If migration to different SD is working, migration to the same SD, as
-        now, could be done the same way (i mean 'localhost') to unify the
-        whole process
-
-Item 19. Allow FD to initiate a backup
-Origin:  Frank Volf (frank at deze dot org)
-Date:    17 November 2005
-Status: 
-
-What:  Provide some means, possibly by a restricted console that
-       allows a FD to initiate a backup, and that uses the connection
-       established by the FD to the Director for the backup so that
-       a Director that is firewalled can do the backup.
-Why:   Makes backup of laptops much easier.
-Notes: - The FD already has code for the monitor interface
-       - It could be nice to have a .job command that lists authorized
-         jobs.
-       - Commands need to be restricted on the Director side
-         (for example by re-using the runscript flag) 
-       - The Client resource can be used to authorize the connection
-       - In a first time, the client can't modify job parameters
-       - We need a way to run a status command to follow job progression
-
-      This project consists of the following points
-       1. Modify the FD to have a "mini-console" interface that
-          permits it to connect to the Director and start a
-          backup job of itself.
-       2. The list of jobs that can be started by the FD are
-          defined in the Director (possibly via a restricted
-          console).
-       3. Modify the existing tray monitor code in the Win32 FD
-          so that it is a separate program from the FD.
-       4. The tray monitor program should be extended to permit
-          initiating a backup.
-       5. No new Director directives should be added without
-          prior consultation with the Bacula developers.
-       6. The comm line used by the FD to connect to the Director
-          should be re-used by the Director to do the backup.
-          This feature is partially implemented in the Director.
-       7. The FD may have a new directive that allows it to start
-          a backup when the FD starts.
-       8. The console interface to the FD should be extended to
-          permit a properly authorized console to initiate a
-          backup via the FD.
-
-
-Item 21: Implement Storage daemon compression
-  Date:  18 December 2006
-  Origin: Vadim A. Umanski , e-mail umanski at ext.ru
-  Status:
-  What:  The ability to compress backup data on the SD receiving data
-          instead of doing that on client sending data.
-  Why:   The need is practical. I've got some machines that can send
-          data to the network 4 or 5 times faster than compressing
-          them (I've measured that). They're using fast enough SCSI/FC
-          disk subsystems but rather slow CPUs (ex. UltraSPARC II).
-          And the backup server has got a quite fast CPUs (ex. Dual P4
-          Xeons) and quite a low load. When you have 20, 50 or 100 GB
-          of raw data - running a job 4 to 5 times faster - that
-          really matters. On the other hand, the data can be
-          compressed 50% or better - so losing twice more space for
-          disk backup is not good at all. And the network is all mine
-          (I have a dedicated management/provisioning network) and I
-          can get as high bandwidth as I need - 100Mbps, 1000Mbps...
-          That's why the server-side compression feature is needed!
-  Notes:
-
-Item 22: Ability to import/export Bacula database entities
-   Date: 26 April 2009
- Origin: Eric
- Status: 
-
-  What:  Create a Bacula ASCII SQL database independent format that permits
-          importing and exporting database catalog Job entities.
-
-  Why:   For achival, database clustering, tranfer to other databases
-          of any SQL engine.
-
-  Notes: Job selection should be by Job, time, Volume, Client, Pool and possibly
-          other criteria.
-
-
-Item 23: Implementation of running Job speed limit.
-Origin: Alex F, alexxzell at yahoo dot com
-Date: 29 January 2009
-
-What: I noticed the need for an integrated bandwidth limiter for
-      running jobs.  It would be very useful just to specify another
-      field in bacula-dir.conf, like speed = how much speed you wish
-      for that specific job to run at
-
-Why: Because of a couple of reasons.  First, it's very hard to implement a
-     traffic shaping utility and also make it reliable.  Second, it is very
-     uncomfortable to have to implement these apps to, let's say 50 clients
-     (including desktops, servers).  This would also be unreliable because you
-     have to make sure that the apps are properly working when needed; users
-     could also disable them (accidentally or not).  It would be very useful
-     to provide Bacula this ability.  All information would be centralized,
-     you would not have to go to 50 different clients in 10 different
-     locations for configuration; eliminating 3rd party additions help in
-     establishing efficiency.  Would also avoid bandwidth congestion,
-     especially where there is little available.
-
-
-Item 24: Add an override in Schedule for Pools based on backup types
-Date:    19 Jan 2005
-Origin:  Chad Slater <chad.slater at clickfox.com>
-Status: 
-                                                
-  What:  Adding a FullStorage=BigTapeLibrary in the Schedule resource
-          would help those of us who use different storage devices for different
-          backup levels cope with the "auto-upgrade" of a backup.
-
-  Why:   Assume I add several new devices to be backed up, i.e. several
-          hosts with 1TB RAID.  To avoid tape switching hassles, incrementals are
-          stored in a disk set on a 2TB RAID.  If you add these devices in the
-          middle of the month, the incrementals are upgraded to "full" backups,
-          but they try to use the same storage device as requested in the
-          incremental job, filling up the RAID holding the differentials.  If we
-          could override the Storage parameter for full and/or differential
-          backups, then the Full job would use the proper Storage device, which
-          has more capacity (i.e. a 8TB tape library.
-
-
-Item 25: Automatic promotion of backup levels based on backup size
-   Date: 19 January 2006
-  Origin: Adam Thornton <athornton at sinenomine.net>
-  Status: 
-
-    What: Other backup programs have a feature whereby it estimates the space
-          that a differential, incremental, and full backup would take.  If
-          the difference in space required between the scheduled level and the
-          next level up is beneath some user-defined critical threshold, the
-          backup level is bumped to the next type.  Doing this minimizes the
-          number of volumes necessary during a restore, with a fairly minimal
-          cost in backup media space.
-
-    Why: I know at least one (quite sophisticated and smart) user for whom the
-          absence of this feature is a deal-breaker in terms of using Bacula;
-          if we had it it would eliminate the one cool thing other backup
-          programs can do and we can't (at least, the one cool thing I know
-          of).
-
-
-Item 26: Allow FileSet inclusion/exclusion by creation/mod times
-  Origin: Evan Kaufman <evan.kaufman at gmail.com>
-  Date:  January 11, 2006
-  Status:
-
-  What:  In the vein of the Wild and Regex directives in a Fileset's
-          Options, it would be helpful to allow a user to include or exclude
-          files and directories by creation or modification times.
-
-          You could factor the Exclude=yes|no option in much the same way it
-          affects the Wild and Regex directives.  For example, you could exclude
-          all files modified before a certain date:
-
-   Options {
-     Exclude = yes
-     Modified Before = ####
-   }
-
-           Or you could exclude all files created/modified since a certain date:
-
-   Options {
-      Exclude = yes
-     Created Modified Since = ####
-   }
-
-           The format of the time/date could be done several ways, say the number
-           of seconds since the epoch:
-           1137008553 = Jan 11 2006, 1:42:33PM   # result of `date +%s`
-
-           Or a human readable date in a cryptic form:
-           20060111134233 = Jan 11 2006, 1:42:33PM   # YYYYMMDDhhmmss
-
-  Why:   I imagine a feature like this could have many uses. It would
-          allow a user to do a full backup while excluding the base operating
-          system files, so if I installed a Linux snapshot from a CD yesterday,
-          I'll *exclude* all files modified *before* today.  If I need to
-          recover the system, I use the CD I already have, plus the tape backup.
-          Or if, say, a Windows client is hit by a particularly corrosive
-          virus, and I need to *exclude* any files created/modified *since* the
-          time of infection.
-
-  Notes: Of course, this feature would work in concert with other
-          in/exclude rules, and wouldnt override them (or each other).
-
-  Notes: The directives I'd imagine would be along the lines of
-          "[Created] [Modified] [Before|Since] = <date>".
-          So one could compare against 'ctime' and/or 'mtime', but ONLY 'before'
-           or 'since'.
-
-
-Item 27: Archival (removal) of User Files to Tape
-  Date:  Nov. 24/2005 
-  Origin: Ray Pengelly [ray at biomed dot queensu dot ca
-  Status: 
-
-  What:  The ability to archive data to storage based on certain parameters
-          such as age, size, or location.  Once the data has been written to
-          storage and logged it is then pruned from the originating
-          filesystem. Note! We are talking about user's files and not
-          Bacula Volumes.
-
-  Why:   This would allow fully automatic storage management which becomes
-          useful for large datastores.  It would also allow for auto-staging
-          from one media type to another.
-
-          Example 1) Medical imaging needs to store large amounts of data.
-          They decide to keep data on their servers for 6 months and then put
-          it away for long term storage.  The server then finds all files
-          older than 6 months writes them to tape.  The files are then removed
-          from the server.
-
-          Example 2) All data that hasn't been accessed in 2 months could be
-          moved from high-cost, fibre-channel disk storage to a low-cost
-          large-capacity SATA disk storage pool which doesn't have as quick of
-          access time.  Then after another 6 months (or possibly as one
-          storage pool gets full) data is migrated to Tape.
-
-Item 28: Ability to reconnect a disconnected comm line
-  Date:  26 April 2009
-  Origin: Kern/Eric
-  Status: 
-
-  What:  Often jobs fail because of a communications line drop. In that 
-          case, Bacula should be able to reconnect to the other daemon and
-          resume the job.
-
-  Why:   Avoids backuping data already saved.
-
-  Notes: *Very* complicated from a design point of view because of authenication.
-
-Item 29: Multiple threads in file daemon for the same job
-  Date:  27 November 2005
-  Origin: Ove Risberg (Ove.Risberg at octocode dot com)
-  Status:
-
-  What:  I want the file daemon to start multiple threads for a backup
-          job so the fastest possible backup can be made.
-
-          The file daemon could parse the FileSet information and start
-          one thread for each File entry located on a separate
-          filesystem.
-
-          A confiuration option in the job section should be used to
-          enable or disable this feature. The confgutration option could
-          specify the maximum number of threads in the file daemon.
-
-          If the theads could spool the data to separate spool files
-          the restore process will not be much slower.
-
-  Why:   Multiple concurrent backups of a large fileserver with many
-          disks and controllers will be much faster.
-
-  Notes: (KES) This is not necessary and could be accomplished
-         by having two jobs.  In addition, the current VSS code
-         is single thread.
-
-
-Item 30: Automatic disabling of devices
-   Date: 2005-11-11
-  Origin: Peter Eriksson <peter at ifm.liu dot se>
-  Status:
-
-   What: After a configurable amount of fatal errors with a tape drive
-          Bacula should automatically disable further use of a certain
-          tape drive. There should also be "disable"/"enable" commands in
-          the "bconsole" tool.
-
-   Why:  On a multi-drive jukebox there is a possibility of tape drives
-          going bad during large backups (needing a cleaning tape run,
-          tapes getting stuck). It would be advantageous if Bacula would
-          automatically disable further use of a problematic tape drive
-          after a configurable amount of errors has occurred.
-
-          An example: I have a multi-drive jukebox (6 drives, 380+ slots)
-          where tapes occasionally get stuck inside the drive. Bacula will
-          notice that the "mtx-changer" command will fail and then fail
-          any backup jobs trying to use that drive. However, it will still
-          keep on trying to run new jobs using that drive and fail -
-          forever, and thus failing lots and lots of jobs... Since we have
-          many drives Bacula could have just automatically disabled
-          further use of that drive and used one of the other ones
-          instead.
-
-
-Item 31: Enable persistent naming/number of SQL queries
-  Date:  24 Jan, 2007 
-  Origin: Mark Bergman 
-  Status: 
-
-  What: 
-        Change the parsing of the query.sql file and the query command so that
-        queries are named/numbered by a fixed value, not their order in the
-        file.
-
-
-  Why:  
-        One of the real strengths of bacula is the ability to query the
-        database, and the fact that complex queries can be saved and
-        referenced from a file is very powerful. However, the choice
-        of query (both for interactive use, and by scripting input
-        to the bconsole command) is completely dependent on the order
-        within the query.sql file. The descriptve labels are helpful for
-        interactive use, but users become used to calling a particular
-        query "by number", or may use scripts to execute queries. This
-        presents a problem if the number or order of queries in the file
-        changes.
-
-        If the query.sql file used the numeric tags as a real value (rather
-        than a comment), then users could have a higher confidence that they
-        are executing the intended query, that their local changes wouldn't
-        conflict with future bacula upgrades.
-
-        For scripting, it's very important that the intended query is
-        what's actually executed. The current method of parsing the
-        query.sql file discourages scripting because the addition or
-        deletion of queries within the file will require corresponding
-        changes to scripts. It may not be obvious to users that deleting
-        query "17" in the query.sql file will require changing all
-        references to higher numbered queries. Similarly, when new
-        bacula distributions change the number of "official" queries,
-        user-developed queries cannot simply be appended to the file
-        without also changing any references to those queries in scripts
-        or procedural documentation, etc.
-
-        In addition, using fixed numbers for queries would encourage more
-        user-initiated development of queries, by supporting conventions
-        such as:
-
-                queries numbered 1-50 are supported/developed/distributed by
-                        with official bacula releases
-                        
-                queries numbered 100-200 are community contributed, and are
-                related to media management
-
-                queries numbered 201-300 are community contributed, and are
-                related to checksums, finding duplicated files across
-                different backups, etc.
-
-                queries numbered 301-400 are community contributed, and are
-                related to backup statistics (average file size, size per
-                client per backup level, time for all clients by backup level,
-                storage capacity by media type, etc.)
-
-                queries numbered 500-999 are locally created
-
-  Notes:
-        Alternatively, queries could be called by keyword (tag), rather
-        than by number.
-
-
-Item 32: Bacula Dir, FD and SD to support proxies
-Origin: Karl Grindley @ MIT Lincoln Laboratory <kgrindley at ll dot mit dot edu>
-Date:  25 March 2009
-Status: proposed
-
-What:  Support alternate methods for nailing up a TCP session such
-        as SOCKS5, SOCKS4 and HTTP (CONNECT) proxies.  Such a feature
-        would allow tunneling of bacula traffic in and out of proxied
-        networks.
-
-Why:   Currently, bacula is architected to only function on a flat network, with
-        no barriers or limitations.  Due to the large configuration states of
-        any network and the infinite configuration where file daemons and
-        storage daemons may sit in relation to one another, bacula often is
-        not usable on a network where filtered or air-gaped networks exist.
-        While often solutions such as ACL modifications to firewalls or port
-        redirection via SNAT or DNAT will solve the issue, often however,
-        these solutions are not adequate or not allowed by hard policy.
-
-        In an air-gapped network with only a highly locked down proxy services
-        are provided (SOCKS4/5 and/or HTTP and/or SSH outbound) ACLs or
-        iptable rules will not work.
-
-Notes: Director resource tunneling: This configuration option to utilize a
-        proxy to connect to a client should be specified in the client
-        resource Client resource tunneling: should be configured in the client
-        resource in the director config file?  Or configured on the bacula-fd
-        configuration file on the fd host itself?  If the ladder, this would
-        allow only certain clients to use a proxy, where others do not when
-        establishing the TCP connection to the storage server. 
-
-        Also worth noting, there are other 3rd party, light weight apps that
-        could be utilized to bootstrap this.  Instead of sockifing bacula
-        itself, use an external program to broker proxy authentication, and
-        connection to the remote host.  OpenSSH does this by using the
-        "ProxyCommand" syntax in the client configuration and uses stdin and
-        stdout to the command.  Connect.c is a very popular one.
-        (http://bent.latency.net/bent/darcs/goto-san-connect-1.85/src/connect.html).
-        One could also possibly use stunnel, netcat, etc.
-
-
-Item 33: Add Minumum Spool Size directive
-Date: 20 March 2008
-Origin: Frank Sweetser <fs at wpi.edu>
-
-   What: Add a new SD directive, "minimum spool size" (or similar).  This
-         directive would specify a minimum level of free space available for
-         spooling.  If the unused spool space is less than this level, any
-         new spooling requests would be blocked as if the "maximum spool
-         size" threshold had bee reached.  Already spooling jobs would be
-         unaffected by this directive.
-
-   Why: I've been bitten by this scenario a couple of times:
-
-        Assume a maximum spool size of 100M. Two concurrent jobs, A and B,
-        are both running.  Due to timing quirks and previously running jobs,
-        job A has used 99.9M of space in the spool directory.  While A is
-        busy despooling to disk, B is happily using the remaining 0.1M of
-        spool space.  This ends up in a spool/despool sequence every 0.1M of
-        data.  In addition to fragmenting the data on the volume far more
-        than was necessary, in larger data sets (ie, tens or hundreds of
-        gigabytes) it can easily produce multi-megabyte report emails!
-
-
-
-
-
-Item 34: Command that releases all drives in an autochanger
-  Origin: Blake Dunlap (blake at nxs.net)
-  Date:   10/07/2009
-  Status: Request
-
-  What:  It would be nice if there was a release command that
-         would release all drives in an autochanger instead of having to
-         do each one in turn.
-
-  Why: It can take some time for a release to occur, and the
-       commands must be given for each drive in turn, which can quicky
-       scale if there are several drives in the library.  (Having to
-       watch the console, to give each command can waste a good bit of
-       time when you start getting into the 16 drive range when the
-       tapes can take up to 3 minutes to eject each)
-
-  Notes: Due to the way some autochangers/libraries work, you
-       cannot assume that new tapes inserted will go into slots that are
-       not currently believed to be in use by bacula (the tape from that
-       slot is in a drive).  This would make any changes in
-       configuration quicker/easier, as all drives need to be released
-       before any modifications to slots.
-
-Item 35: Run bscan on a remote storage daemon from within bconsole.
-  Date:  07 October 2009
-  Origin: Graham Keeling <graham at equiinet.com>
-  Status: Proposing
-
-  What:  The ability to be able to run bscan on a remote storage daemon from
-         within bconsole in order to populate your catalog.
-
-  Why:   Currently, it seems you have to:
-         a) log in to a console on the remote machine
-         b) figure out where the storage daemon config file is
-         c) figure out the storage device from the config file
-         d) figure out the catalog IP address
-         e) figure out the catalog port
-         f) open the port on the catalog firewall
-         g) configure the catalog database to accept connections from the
-            remote host
-         h) build a 'bscan' command from (b)-(e) above and run it
-         It would be much nicer to be able to type something like this into
-         bconsole:
-         *bscan storage=<storage> device=<device> volume=<volume>
-         or something like:
-         *bscan storage=<storage> all
-         It seems to me that the scan could also do a better job than the
-         external bscan program currently does. It would possibly be able to
-         deduce some extra details, such as the catalog StorageId for the
-         volumes.
-
-  Notes: (Kern). If you need to do a bscan, you have done something wrong,
-         so this functionality should not need to be integrated into the
-         the Storage daemon.  However, I am not opposed to someone implementing
-         this feature providing that all the code is in a shared object (or dll)
-         and does not add significantly to the size of the Storage daemon. In
-         addition, the code should be written in a way such that the same source
-         code is used in both the bscan program and the Storage daemon to avoid
-         adding a lot of new code that must be maintained by the project.
-
-Item 36: Implement a Migration job type that will create a reverse
-          incremental (or decremental) backup from two existing full backups.
-  Date:   05 October 2009
-  Origin: Griffith College Dublin.  Some sponsorship available.
-          Contact: Gavin McCullagh <gavin.mccullagh at gcd.ie>
-  Status: 
-
-  What:   The ability to take two full backup jobs and derive a reverse
-          incremental backup from them.  The older full backup data may then
-          be discarded.
-
-  Why:    Long-term backups based on keeping full backups can be expensive in
-          media.  In many cases (eg a NAS), as the client accumulates files
-          over months and years, the same file will be duplicated unchanged,
-          across many media and datasets.  Eg, Less than 10% (and
-          shrinking) of our monthly full mail server backup is new files,
-          the other 90% is also in the previous full backup.
-          Regularly converting the oldest full backup into a reverse
-          incremental backup allows the admin to keep access to old backup
-          jobs, but remove all of the duplicated files, freeing up media.
-
-  Notes:  This feature was previously discussed on the bacula-devel list
-          here: http://www.mail-archive.com/bacula-devel@lists.sourceforge.net/msg04962.html
-
-Item 37: Separate "Storage" and "Device" in the bacula-dir.conf
-  Date:   29 April 2009
-  Origin: "James Harper" <james.harper at bendigoit.com.au>
-  Status: not implemented or documented
-
-  What:   Separate "Storage" and "Device" in the bacula-dir.conf
-          The resulting config would looks something like:
-
-          Storage {
-            Name = name_of_server
-            Address = hostname/IP address
-            SDPort = 9103
-            Password = shh_its_a_secret
-            Maximum Concurrent Jobs = 7
-          }
-
-          Device {
-            Name = name_of_device
-            Storage = name_of_server
-            Device = name_of_device_on_sd
-            Media Type = media_type
-            Maximum Concurrent Jobs = 1
-          }
-
-          Maximum Concurrent Jobs would be specified with a server and a device
-          maximum, which would both be honoured by the director. Almost everything
-          that mentions a 'Storage' would need to be changed to 'Device', although
-          perhaps a 'Storage' would just be a synonym for 'Device' for backwards
-          compatibility...
-
-  Why:    If you have multiple Storage definitions pointing to different
-          Devices in the same Storage daemon, the "status storage" command
-          prompts for each different device, but they all give the same 
-          information.
-
-  Notes:  
-
-Item 38: Least recently used device selection for tape drives in autochanger.
-Date:    12 October 2009
-Origin:  Thomas Carter <tcarter at memc.com>
-Status:  Proposal
-
-What: A better tape drive selection algorithm for multi-drive 
-      autochangers. The AUTOCHANGER class contains an array list of tape 
-      devices. When a tape drive is needed, this list is always searched in 
-      order. This causes lower number drives (specifically drive 0) to do a 
-      majority of the work with higher numbered drives possibly never being 
-      used. When a drive in an autochanger is reserved for use, its entry should 
-      be moved to the end of the list; this would give a rough LRU drive 
-      selection.
-
-Why:  The current implementation places a majority of use and wear on drive 
-      0 of a multi-drive autochanger.
-
-Notes:
-
-Item 39: Implement a Storage device like Amazon's S3.
-  Date:  25 August 2008
-  Origin: Soren Hansen <soren at ubuntu.com>
-  Status: Not started.
-  What:  Enable the storage daemon to store backup data on Amazon's
-          S3 service.
-
-  Why:   Amazon's S3 is a cheap way to store data off-site. 
-
-  Notes: If we configure the Pool to put only one job per volume (they don't
-         support append operation), and the volume size isn't to big (100MB?),
-         it should be easy to adapt the disk-changer script to add get/put
-         procedure with curl. So, the data would be safetly copied during the
-         Job. 
-
-         Cloud should be only used with Copy jobs, users should always have
-         a copy of their data on their site.
-
-         We should also think to have our own cache, trying always to have
-         cloud volume on the local disk. (I don't know if users want to store
-         100GB on cloud, so it shouldn't be a disk size problem). For example,
-         if bacula want to recycle a volume, it will start by downloading the
-         file to truncate it few seconds later, if we can avoid that...
-
-Item 40: Convert tray monitor on Windows to a stand alone program
-   Date: 26 April 2009
- Origin: Kern/Eric
- Status: 
-
-  What:  Separate Win32 tray monitor to be a separate program.
-
-  Why:   Vista does not allow SYSTEM services to interact with the 
-          desktop, so the current tray monitor does not work on Vista
-          machines.  
-
-  Notes: Requires communicating with the FD via the network (simulate
-          a console connection).
-
-Item 41: Improve Bacula's tape and drive usage and cleaning management 
-  Date:  8 November 2005, November 11, 2005
-  Origin: Adam Thornton <athornton at sinenomine dot net>,
-          Arno Lehmann <al at its-lehmann dot de>
-  Status:
-
-  What:  
-          1. Measure tape and drive usage (mostly implemented)
-          2. Retiring a volume when too old or too many errors
-          3. Handle cleaning and tape alerts.
-
-  Why:   Needed
-
-
-Item 42: Relabel disk volume after recycling
-  Origin: Pasi Kärkkäinen <pasik at iki.fi>
-  Date:   07 May 2009.
-  Status: Not implemented yet, no code written.
-
-  What: The ability to relabel the disk volume (and thus rename the file on the
-        disk) after it has been recycled. Useful when you have a single job
-        per disk volume, and you use a custom Label format, for example:
-        Label Format =
-        "${Client}-${Level}-${NumVols:p/4/0/r}-${Year}_${Month}_${Day}-${Hour}_${Minute}"
-
-  Why: Disk volumes in Bacula get the label/filename when they are used for the
-       first time.  If you use recycling and custom label format like above,
-       the disk volume name doesn't match the contents after it has been
-       recycled.  This feature makes it possible to keep the label/filename
-       in sync with the content and thus makes it easy to check/monitor the
-       backups from the shell and/or normal file management tools, because
-       the filenames of the disk volumes match the content.
-
-  Notes:  The configuration option could be "Relabel after Recycling = Yes".
-
-
-
-========= New items after last vote ====================
-
-
-Note to renumber items use:
-scripts/renumber_projects.pl projects >1
-
-
-========= Add new items above this line =================
-
-
-============= Empty Feature Request form ===========
-Item  n: One line summary ...
-  Date:  Date submitted 
-  Origin: Name and email of originator.
-  Status: 
-
-  What:  More detailed explanation ...
-
-  Why:   Why it is important ...
-
-  Notes: Additional notes or features (omit if not used)
-============== End Feature Request form ==============
-
-
-========== Items put on hold by Kern ============================
-
-
-========== Items completed in version 5.0.0 ====================
-*Item   : 'restore' menu: enter a JobId, automatically select dependents
-*Item   : Deletion of disk Volumes when pruned (partial -- truncate when pruned)
-*Item   : Implement Base jobs
-*Item   : Restore from volumes on multiple storage daemons
-*Item   : Enable/disable compression depending on storage device (disk/tape)
-*Item   : Cause daemons to use a specific IP address to source communications
-*Item   : "Maximum Concurrent Jobs" for drives when used with changer device
-*Item   : List InChanger flag when doing restore.
-*Item   : Port bat to Win32
-*Item   : An option to operate on all pools with update vol parameters
-========== Item completed after 5.0.0 ==========================
-*Item   : Add ability to Verify any specified Job.
diff --git a/release/config b/release/config
index 58aefac..3646fe5 100644
--- a/release/config
+++ b/release/config
@@ -4,28 +4,30 @@
 #
 # Set to the Branch you are working on
 #
-branch=Branch-5.2
-# 
+branch=${branch:-Branch-5.3}
+#
 # set reltype to release or beta -- for upload and setting DEVELOPER
-reltype=release
-
+reltype=beta
 
 repo=$reltype
 
 # Bacula git repos
-bacula=${bacula:-${HOME}/bacula/k}
+bacula=${bacula:-${HOME}/bee/bacula}
 docs=${docs:-${HOME}/bacula/docs}
-gpgkey=${gpgkey:-bacula}
+
+# Limit bw to upload on the website
+max_bw=${max_bw:-80}
+upload_opt="--bwlimit=$max_bw"
 
 #
 # Set the following to your remote name.  By default it is origin.
-remote=${remote:-origin}
-push=no
+remote=bs
 
+export push=no
 #
 # Note, you will probably want to set updatepo=no if you
 #   run this script multiple times for a given release.
-updatepo=no
+export updatepo=no
 
 cwd=`pwd`
 
@@ -35,18 +37,15 @@ if [ $? -ne 0 ]; then
    exit 1
 fi
 current=`git branch | awk '/*/ { print $2 }'`
-git checkout ${branch}
-git pull ${remote} ${branch}
+git checkout ${branch} >/dev/null 2>&1
+git pull ${remote} ${branch} >/dev/null 2>&1
 if [ $? -ne 0 ]; then
-   echo "Checkout of branch ${branch} failed."
+   echo "Checkout or Pull of branch ${branch} failed."
    exit 1
 fi
-ver=`sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' src/version.h`
-lsmdate=`sed -n -e 's/^.*LSMDATE.*"\(.*\)"$/\1/p' src/version.h`
+ver=`sed -n -e 's/^#define VERSION.*"\(.*\)"$/\1/p' src/version.h`
+lsmdate=`sed -n -e 's/^#define LSMDATE.*"\(.*\)"$/\1/p' src/version.h`
 
-git checkout ${current}
-export push
-export updatepo
-export gpgkey
+git checkout $current >/dev/null 2>&1
 
 cd $cwd
diff --git a/release/makeall b/release/makeall
index 7a90791..aadd33c 100755
--- a/release/makeall
+++ b/release/makeall
@@ -12,21 +12,4 @@ cd $cwd
 
 ./makebacularel $bacula $remote $branch $ver
 ./makedocsrel $bacula $docs $remote $branch $ver
-#./makewinrel $bacula $remote $branch $ver | tee win$$.log
 
-# strip ./configure strerror from Win log file
-sed -i -e 's%strerror%%' win$$.log
-# check for warning and error messages
-grep -i warning win$$.log >/dev/null
-if [ $? -eq 0 ] ; then
-  echo " "
-  echo "Warnings in win$$.log"
-  exit 1
-fi
-grep -i error win$$.log >/dev/null
-if [ $? -eq 0 ] ; then
-  echo " "
-  echo "Errors in win$$.log"
-  exit 1
-fi
-rm -f win$$.log
diff --git a/release/makedocsonly b/release/makedocsonly
new file mode 100755
index 0000000..f795a82
--- /dev/null
+++ b/release/makedocsonly
@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+# Make only the docs packages
+#
+
+# Source config
+. ./config
+
+check_rtn()
+{
+if [ $? -ne 0 ] ; then
+  echo " "
+  echo "Error in $1 ..."
+  exit 1
+fi
+}
+
+echo "Creating release version: ${ver}"
+
+cd $cwd
+
+./makedocsrel $bacula $branch $docs $remote $branch $ver  | tee -a build.log
+check_rtn makedocsrel
+
+./makemanualsrel $ver
+check_rtn makemanualsrel
+
+# strip known error words from build.log
+sed -i -e 's%strerror%%g' build.log
+sed -i -e 's%dlerror%%g' build.log
+sed -i -e 's%OnError%%g' build.log
+sed -i -e 's%k7\-error%%g' build.log
+sed -i -e 's%error\.tpl%%g' build.log
+sed -i -e 's%error\.ico%%g' build.log
+sed -i -e 's%errors\-test%%g' build.log
+sed -i -e 's%fatal\-test%%g' build.log
+sed -i -e 's%errors\.in%%g' build.log
+sed -i -e 's%s_error%%g' build.log
+grep -i error build.log >/dev/null
+if [ $? -eq 0 ] ; then
+  echo " "
+  echo "Errors in build.log"
+  exit 1
+fi
+grep -i warning build.log >/dev/null
+if [ $? -eq 0 ] ; then
+  echo " "
+  echo "Warnings in build.log"
+  exit 1
+fi
+grep -i fatal build.log >/dev/null
+if [ $? -eq 0 ] ; then
+  echo " "
+  echo "Fatal errors in build.log"
+  exit 1
+fi
diff --git a/release/makedocsrel b/release/makedocsrel
index 10d34a3..8a4f97c 100755
--- a/release/makedocsrel
+++ b/release/makedocsrel
@@ -95,9 +95,10 @@ tar xfz $base_pkg-$ver.tar.gz
 cd $base_pkg-$ver/
 mv docs $base_pkg-$ver
 cd $base_pkg-$ver
-./configure --with-bacula=$bsrc
-make en
-make clean
+./update_version
+rm -rf home-page cvt.scr presentations send techlogs upload rss_web.php
+make
+make mini-clean
 cd ${cwd}
 echo "Tarring docs ..."
 tar cf $base_pkg-$ver.tar $base_pkg-$ver
diff --git a/release/makewinrel b/release/makewinrel
deleted file mode 100755
index 0beb7fa..0000000
--- a/release/makewinrel
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-#
-#
-# This script is used to make a Bacula win32 and win64 releases
-# 
-# It writes in the current directory, so we recommend that you
-#  do not run it in the Bacula source or Git directory, but
-#  in a special release directory.
-#
-# Commit all changes, export the release, make a release tar.
-#
-# source ./config
-. ./config
-
-tagbase=Release-
-base_pkg=bacula
-remote=$2
-branch=$3
-ver=$4
-fulltag=$tagbase$ver
-
-if [ $# != 4 ] ; then
-  echo "Need $0 <bacula-source-directory> <remote-name> <branch> <version>"
-  echo "e.g. $0 rescue-source bee Branch-4.0 4.0.3"
-  exit 1
-fi
-cd $1
-if [ $? -ne 0 ]; then
-   echo "Directory: $1 does not exist"
-   exit 1
-fi
-cd bacula
-if [ $?  -ne 0 ]; then
-   echo "Directory: $1 does not exist"
-   exit 1
-fi
-current=`git branch | awk '/*/ { print $2 }'`
-src=`pwd` 
-git checkout ${branch}
-if [ $? -ne 0 ]; then
-   echo "Checkout of branch ${branch} in ${src} failed."
-   exit 1
-fi
-git pull ${remote} ${branch}
-echo " "
-echo "Making $reltype for Windows $base_pkg-$ver ..."
-echo " "
-#echo "OK?  ctl-c to stop"
-#read a
-
-cd src/win32
-rm -f release32/${base_pkg}-win32-$ver.exe
-rm -f release64/${base_pkg}-win64-$ver.exe
-make clean
-cd ../..
-./configure --with-sqlite3
-cd src/win32
-./makeall
-cp release32/${base_pkg}-win32-$ver.exe ${cwd}
-cp release64/${base_pkg}-win64-$ver.exe ${cwd}
-cd ${cwd}
-rm -f *.exe.sig
-./sign ${base_pkg}-win32-$ver.exe
-./sign ${base_pkg}-win64-$ver.exe
-ls -l ${base_pkg}-win*.exe*
-
-cd ${src}
-# get back to original branch
-git checkout ${current}
diff --git a/release/package-list b/release/package-list
new file mode 100644
index 0000000..cfce827
--- /dev/null
+++ b/release/package-list
@@ -0,0 +1,8 @@
+bacula- at ver@.tar.gz
+bacula- at ver@.tar.gz.sig
+bacula-docs- at ver@.tar.bz2
+bacula-docs- at ver@.tar.bz2.sig
+bacula-gui- at ver@.tar.gz
+bacula-gui- at ver@.tar.gz.sig
+bacula-regress- at ver@.tar.gz
+bacula-regress- at ver@.tar.gz.sig
diff --git a/release/pushtags b/release/pushtags
index 4ec85e1..7799995 100755
--- a/release/pushtags
+++ b/release/pushtags
@@ -5,18 +5,25 @@
 
 . ./config
 
+push()
+{
+  for i in $bacula $docs ; do
+    cd $i
+    current=`git branch | awk '/*/ { print $2 }'`
+    git checkout ${branch}
+    git push ${1} ${branch}
+    git push ${1} tag ${fulltag}
+    echo "Pushed ${1} and git push ${1} tag ${fulltag} in $i"
+    git checkout ${current}
+  done
+}
+
 echo "Updating repo and tags for release version: ${ver}"
 
 cd $cwd
 
 fulltag=Release-$ver
 
-for i in $bacula $docs ; do
-  cd $i
-  current=`git branch | awk '/*/ { print $2 }'`
-  git checkout ${branch}
-  git push ${remote} ${branch}
-  git push ${remote} tag ${fulltag}
-  echo "Pushed ${remote} and git push ${remote} tag ${fulltag} in $i"
-  git checkout ${current}
-done
+# Push to both remotes
+push ${remote}
+push bacula
diff --git a/scripts/Makefile.in b/scripts/Makefile.in
index 5dee735..6d9503c 100755
--- a/scripts/Makefile.in
+++ b/scripts/Makefile.in
@@ -107,10 +107,6 @@ distclean: clean
 	@$(RMF) bacula fd btraceback
 	@$(RMF) bacula-ctl-dir bacula-ctl-fd bacula-ctl-sd bacula_config
 	@$(RMF) bconsole logrotate bacula.desktop 
-	@$(RMF) bacula.desktop.gnome1 bacula.desktop.gnome2 mtx-changer dvd-handler
-	@$(RMF) gnome-console.console_apps bacula.desktop.gnome2.xsu
-	@$(RMF) bgnome-console.console_apps
-	@$(RMF) bacula.desktop.gnome2.consolehelper bacula.desktop.gnome1.xsu
-	@$(RMF) bacula.desktop.gnome1.consolehelper
+	@$(RMF) mtx-changer dvd-handler
 
 # ------------------------------------------------------------------------
diff --git a/scripts/bacula-tray-monitor.desktop.in b/scripts/bacula-tray-monitor.desktop.in
deleted file mode 100644
index 395f302..0000000
--- a/scripts/bacula-tray-monitor.desktop.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Bacula Monitor
-Comment=Notification Tray Monitor
-Icon=/usr/share/pixmaps/bacula-tray-monitor.xpm
-Exec=@sbindir@/bacula-tray-monitor -c @sysconfdir@/tray-monitor.conf
-Terminal=false
-Type=Application
-Encoding=UTF-8
-X-Desktop-File-Install-Version=0.3
-Categories=System;Application;Utility;X-Red-Hat-Base;
diff --git a/scripts/bacula.desktop.gnome1.consolehelper.in b/scripts/bacula.desktop.gnome1.consolehelper.in
deleted file mode 100644
index c2cddff..0000000
--- a/scripts/bacula.desktop.gnome1.consolehelper.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Bacula Console
-Comment=Bacula Director Console
-Icon=/usr/share/pixmaps/bacula.png
-Exec=/usr/bin/bgnome-console -c @sysconfdir@/bgnome-console.conf
-Terminal=false
-Type=Application
-Encoding=UTF-8
-X-Desktop-File-Install-Version=0.3
-Categories=System;Application;Utility;X-Red-Hat-Base;
diff --git a/scripts/bacula.desktop.gnome1.in b/scripts/bacula.desktop.gnome1.in
deleted file mode 100644
index 0560a9e..0000000
--- a/scripts/bacula.desktop.gnome1.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Bacula Console
-Comment=Bacula Director Console
-Icon=/usr/share/pixmaps/bacula.png
-Exec=@sbindir@/bgnome-console -c @sysconfdir@/bgnome-console.conf
-Terminal=false
-Type=Application
-Encoding=UTF-8
-X-Desktop-File-Install-Version=0.3
-Categories=System;Application;Utility;X-Red-Hat-Base;
diff --git a/scripts/bacula.desktop.gnome1.xsu.in b/scripts/bacula.desktop.gnome1.xsu.in
deleted file mode 100644
index 477a3f8..0000000
--- a/scripts/bacula.desktop.gnome1.xsu.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Bacula Console
-Comment=Bacula Director Console
-Icon=/usr/share/pixmaps/bacula.png
-Exec=gnomesu -t "Query" -c "@sbindir@/bgnome-console -c @sysconfdir@/bgnome-console.conf" -d -e -m "In order to run the bacula console as root, ^additional information is required."
-Terminal=false
-Type=Application
-Encoding=UTF-8
-X-Desktop-File-Install-Version=0.3
-Categories=System;Application;Utility;X-Red-Hat-Base;
diff --git a/scripts/bacula.desktop.gnome2.consolehelper.in b/scripts/bacula.desktop.gnome2.consolehelper.in
deleted file mode 100644
index c2cddff..0000000
--- a/scripts/bacula.desktop.gnome2.consolehelper.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Bacula Console
-Comment=Bacula Director Console
-Icon=/usr/share/pixmaps/bacula.png
-Exec=/usr/bin/bgnome-console -c @sysconfdir@/bgnome-console.conf
-Terminal=false
-Type=Application
-Encoding=UTF-8
-X-Desktop-File-Install-Version=0.3
-Categories=System;Application;Utility;X-Red-Hat-Base;
diff --git a/scripts/bacula.desktop.gnome2.in b/scripts/bacula.desktop.gnome2.in
deleted file mode 100644
index 0560a9e..0000000
--- a/scripts/bacula.desktop.gnome2.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Bacula Console
-Comment=Bacula Director Console
-Icon=/usr/share/pixmaps/bacula.png
-Exec=@sbindir@/bgnome-console -c @sysconfdir@/bgnome-console.conf
-Terminal=false
-Type=Application
-Encoding=UTF-8
-X-Desktop-File-Install-Version=0.3
-Categories=System;Application;Utility;X-Red-Hat-Base;
diff --git a/scripts/bacula.desktop.gnome2.xsu.in b/scripts/bacula.desktop.gnome2.xsu.in
deleted file mode 100644
index 477a3f8..0000000
--- a/scripts/bacula.desktop.gnome2.xsu.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Bacula Console
-Comment=Bacula Director Console
-Icon=/usr/share/pixmaps/bacula.png
-Exec=gnomesu -t "Query" -c "@sbindir@/bgnome-console -c @sysconfdir@/bgnome-console.conf" -d -e -m "In order to run the bacula console as root, ^additional information is required."
-Terminal=false
-Type=Application
-Encoding=UTF-8
-X-Desktop-File-Install-Version=0.3
-Categories=System;Application;Utility;X-Red-Hat-Base;
diff --git a/scripts/defaultconfig b/scripts/defaultconfig
index ec218de..c233910 100755
--- a/scripts/defaultconfig
+++ b/scripts/defaultconfig
@@ -13,7 +13,6 @@ CFLAGS="-g -Wall" \
     --with-pid-dir=$HOME/bacula/bin \
     --with-subsys-dir=$HOME/bacula/bin \
     --enable-smartalloc \
-    --enable-gnome \
     --with-mysql=$HOME/mysql \
     --with-working-dir=$HOME/bacula/bin/working \
     --with-dump-email=root at localhost \
diff --git a/scripts/disk-changer.in b/scripts/disk-changer.in
index 53e884a..97b0eba 100644
--- a/scripts/disk-changer.in
+++ b/scripts/disk-changer.in
@@ -4,29 +4,19 @@
 #
 #  Written by Kern Sibbald
 #
-#  Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+#  Bacula® - The Network Backup Solution
 #
-#  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, which is 
-#  listed in the file LICENSE.
+#  Copyright (C) 2000-2014 Free Software Foundation Europe e.V.
 #
-#  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.
+#  The main author of Bacula is Kern Sibbald, with contributions from many
+#  others, a complete list can be found in the file AUTHORS.
 #
-#  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.
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
 #
 #  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.
 #
 #
 #  If you set in your Device resource
@@ -39,28 +29,28 @@
 #    included.
 #
 #  disk-changer "changer-device" "command" "slot" "archive-device" "drive-index" "volume"
-#                   $1              $2       $3        $4               $5         $6
+#		    $1		    $2	     $3        $4		$5	   $6
 #
 # By default the autochanger has 10 Volumes and 1 Drive.
 #
 # Note: For this script to work, you *must" specify
-#    Device Type = File 
+#    Device Type = File
 # in each of the Devices associated with your AutoChanger resource.
 #
 # changer-device is the name of a file that overrides the default
 #   volumes and drives.  It may have:
-#        maxslot=n   where n is one based (default 10)
-#        maxdrive=m  where m is zero based (default 1 -- i.e. 2 drives)
-#  
+#	 maxslot=n   where n is one based (default 10)
+#	 maxdrive=m  where m is zero based (default 1 -- i.e. 2 drives)
+#
 #   This code can also simulate barcodes. You simply put
 #   a list of the slots and barcodes in the "base" directory/barcodes.
-#   See below for the base directory definition.  Example of a 
+#   See below for the base directory definition.  Example of a
 #   barcodes file:
 #      /var/bacula/barcodes
 #      1:Vol001
 #      2:Vol002
 #      ...
-# 
+#
 # archive-device is the name of the base directory where you want the
 #  Volumes stored appended with /drive0 for the first drive; /drive1
 #  for the second drive, ... For example, you might use
@@ -74,7 +64,7 @@
 # The Volumes will be created with names slot1, slot2, slot3, ... maxslot in the
 #  base directory. In the above example the base directory is /var/bacula.
 #  However, as with tapes, their Bacula Volume names will be stored inside the
-#  Volume label. In addition to the Volumes (e.g. /var/bacula/slot1, 
+#  Volume label. In addition to the Volumes (e.g. /var/bacula/slot1,
 #  /var/bacula/slot3, ...) this script will create a /var/bacula/loadedn
 #  file to keep track of what Slot is loaded. You should not change this file.
 #
@@ -94,7 +84,7 @@ wd=@working_dir@
 dbgfile="$wd/disk-changer.log"
 debug() {
     if test -f $dbgfile; then
-        echo "`date +\"%Y%m%d-%H:%M:%S\"` $*" >> $dbgfile
+	echo "`date +\"%Y%m%d-%H:%M:%S\"` $*" >> $dbgfile
     fi
 }
 
@@ -107,8 +97,8 @@ make_temp_file() {
   if test x${TMPFILE} = x; then
      TMPFILE="$wd/disk-changer.$$"
      if test -f ${TMPFILE}; then
-        echo "Temp file security problem on: ${TMPFILE}"
-        exit 1
+	echo "Temp file security problem on: ${TMPFILE}"
+	exit 1
      fi
   fi
 }
@@ -119,14 +109,14 @@ check_parm_count() {
     pCount=$1
     pCountNeed=$2
     if test $pCount -lt $pCountNeed; then
-        echo "usage: disk-changer ctl-device command [slot archive-device drive-index]"
-        echo "  Insufficient number of arguments arguments given."
-        if test $pCount -lt 2; then
-            echo "  Mimimum usage is first two arguments ..."
-        else
-            echo "  Command expected $pCountNeed arguments"
-        fi
-        exit 1
+	echo "usage: disk-changer ctl-device command [slot archive-device drive-index]"
+	echo "	Insufficient number of arguments arguments given."
+	if test $pCount -lt 2; then
+	    echo "  Mimimum usage is first two arguments ..."
+	else
+	    echo "  Command expected $pCountNeed arguments"
+	fi
+	exit 1
     fi
 }
 
@@ -139,7 +129,7 @@ get_dir() {
    dir=`echo "$device" | sed -e s%/$bn%%g`
    if [ ! -d $dir ]; then
       echo "ERROR: Autochanger directory \"$dir\" does not exist."
-      echo "       You must create it."
+      echo "	   You must create it."
       exit 1
    fi
 }
@@ -176,61 +166,65 @@ maxdrive=1
 maxslot=10
 
 # Pull in conf file
-if [ -f $ctl ]; then 
+if [ -f $ctl ]; then
    . $ctl
 fi
 
 
-# Check for special cases where only 2 arguments are needed, 
+# Check for special cases where only 2 arguments are needed,
 #  all others are a minimum of 5
 #
 case $2 in
     list|listall)
-        check_parm_count $# 2
-        ;;
+	check_parm_count $# 2
+	;;
     slots)
-        check_parm_count $# 2
-        ;;
+	check_parm_count $# 2
+	;;
     transfer)
-        check_parm_count $# 4
-        if [ $slot -gt $maxslot ]; then
-           echo "Slot ($slot) out of range (1-$maxslot)"
-           exit 1
-        fi
-        ;;
+	check_parm_count $# 4
+	if [ $slot -gt $maxslot ]; then
+	   echo "Slot ($slot) out of range (1-$maxslot)"
+	   debug "Error: Slot ($slot) out of range (1-$maxslot)"
+	   exit 1
+	fi
+	;;
     *)
-        check_parm_count $# 5
-        if [ $drive -gt $maxdrive ]; then
-           echo "Drive ($drive) out of range (0-$maxdrive)"
-           exit 1
-        fi
-        if [ $slot -gt $maxslot ]; then
-           echo "Slot ($slot) out of range (1-$maxslot)"
-           exit 1
-        fi
-        ;;
+	check_parm_count $# 5
+	if [ $drive -gt $maxdrive ]; then
+	   echo "Drive ($drive) out of range (0-$maxdrive)"
+	   debug "Error: Drive ($drive) out of range (0-$maxdrive)"
+	   exit 1
+	fi
+	if [ $slot -gt $maxslot ]; then
+	   echo "Slot ($slot) out of range (1-$maxslot)"
+	   debug "Error: Slot ($slot) out of range (1-$maxslot)"
+	   exit 1
+	fi
+	;;
 esac
 
 
 debug "Parms: $ctl $cmd $slot $device $drive $volume $havevol"
 
-case $cmd in 
+case $cmd in
    unload)
       debug "Doing disk -f $ctl unload $slot $device $drive $volume"
       get_dir
       if [ -f $dir/loaded${drive} ]; then
-         ld=`cat $dir/loaded${drive}`
-      else 
-         echo "Storage Element $slot is Already Full"
-         exit 1
+	 ld=`cat $dir/loaded${drive}`
+      else
+	 echo "Storage Element $slot is Already Full"
+	 debug "Unload error: $dir/loaded${drive} is already unloaded"
+	 exit 1
       fi
       if [ $slot -eq $ld ]; then
-         echo "0" >$dir/loaded${drive}
-         unlink $device 2>/dev/null >/dev/null
-         rm -f $device
+	 echo "0" >$dir/loaded${drive}
+	 unlink $device 2>/dev/null >/dev/null
       else
-         echo "Storage Element $slot is Already Full"
-         exit 1
+	 echo "Storage Element $slot is Already Full"
+	 debug "Unload error: $dir/loaded${drive} slot=$ld is already unloaded"
+	 exit 1
       fi
       ;;
 
@@ -238,112 +232,115 @@ case $cmd in
       debug "Doing disk $ctl load $slot $device $drive $volume"
       get_dir
       i=0
+      # Check if slot already in a drive
       while [ $i -le $maxdrive ]; do
-         if [ -f $dir/loaded${i} ]; then
-            ld=`cat $dir/loaded${i}`
-         else    
-            ld=0
-         fi
-         if [ $ld -eq $slot ]; then
-            echo "Drive ${i} Full (Storage element ${ld} loaded)"
-            exit 1
-         fi
-         i=`expr $i + 1`
+	 if [ -f $dir/loaded${i} ]; then
+	    ld=`cat $dir/loaded${i}`
+	 else	
+	    ld=0
+	 fi
+	 if [ $ld -eq $slot ]; then
+	    echo "Drive ${i} Full (Storage element ${ld} loaded)"
+	    debug "Load error: Cannot load Slot=${ld} in drive=$drive. Already in drive=${i}"
+	    exit 1
+	 fi
+	 i=`expr $i + 1`
       done
       # Check if we have a Volume name
       get_vol
       if [ $havevol -eq 0 ]; then
-         # check if slot exists
-         if [ ! -f $dir/slot${slot} ] ; then
-            echo "source Element Address $slot is Empty"
-            exit 1
-         fi
+	 # check if slot exists
+	 if [ ! -f $dir/slot${slot} ] ; then
+	    echo "source Element Address $slot is Empty"
+	    debug "Load error: source Element Address $slot is Empty"
+	    exit 1
+	 fi
       fi
       if [ -f $dir/loaded${drive} ]; then
-         ld=`cat $dir/loaded${drive}`
+	 ld=`cat $dir/loaded${drive}`
       else
-         ld=0
+	 ld=0
       fi
       if [ $ld -ne 0 ]; then
-         echo "Drive ${drive} Full (Storage element ${ld} loaded)"
-         exit 1
+	 echo "Drive ${drive} Full (Storage element ${ld} loaded)"
+	 echo "Load error: Drive ${drive} Full (Storage element ${ld} loaded)"
+	 exit 1
       fi
       echo "0" >$dir/loaded${drive}
       unlink $device 2>/dev/null >/dev/null
-      rm -f $device
       if [ $havevol -ne 0 ]; then
-         ln -s $dir/$volume $device
-         rtn=$?
+	 ln -s $dir/$volume $device
+	 rtn=$?
       else
-         ln -s $dir/slot${slot} $device
-         rtn=$?
+	 ln -s $dir/slot${slot} $device
+	 rtn=$?
       fi
       if [ $rtn -eq 0 ]; then
-         echo $slot >$dir/loaded${drive}
+	 echo $slot >$dir/loaded${drive}
       fi
       exit $rtn
       ;;
 
-   list) 
+   list)
       debug "Doing disk -f $ctl -- to list volumes"
-      get_dir 
+      get_dir
       if [ -f $dir/barcodes ]; then
-         cat $dir/barcodes
+	 cat $dir/barcodes
       else
-         i=1
-         while [ $i -le $maxslot ]; do
-            slot=$i
-            volume=
-            get_vol
-            if [ $havevol -eq 0 ]; then
-               echo "$i:"
-            else
-               echo "$i:$volume"
-            fi
-            i=`expr $i + 1`
-         done
+	 i=1
+	 while [ $i -le $maxslot ]; do
+	    slot=$i
+	    volume=
+	    get_vol
+	    if [ $havevol -eq 0 ]; then
+	       echo "$i:"
+	    else
+	       echo "$i:$volume"
+	    fi
+	    i=`expr $i + 1`
+	 done
       fi
       exit 0
       ;;
 
-   listall) 
+   listall)
       # ***FIXME*** must add new Volume stuff
       make_temp_file
       debug "Doing disk -f $ctl -- to list volumes"
-      get_dir 
+      get_dir
       if [ ! -f $dir/barcodes ]; then
-          exit 0
+	  exit 0
       fi
 
       # we print drive content seen by autochanger
       # and we also remove loaded media from the barcode list
       i=0
       while [ $i -le $maxdrive ]; do
-         if [ -f $dir/loaded${i} ]; then
-             ld=`cat $dir/loaded${i}`
-             v=`awk -F: "/^$ld:/"' { print $2 }' $dir/barcodes`
-             echo "D:$i:F:$ld:$v"
-             echo "^$ld:" >> $TMPFILE
-         fi
-         i=`expr $i + 1`
+	 if [ -f $dir/loaded${i} ]; then
+	     ld=`cat $dir/loaded${i}`
+	     v=`awk -F: "/^$ld:/"' { print $2 }' $dir/barcodes`
+	     echo "D:$i:F:$ld:$v"
+	     echo "^$ld:" >> $TMPFILE
+	 fi
+	 i=`expr $i + 1`
       done
 
       # Empty slots are not in barcodes file
       # When we detect a gap, we print missing rows as empty
       # At the end, we fill the gap between the last entry and maxslot
       grep -v -f $TMPFILE $dir/barcodes | sort -n | \
-      perl -ne 'BEGIN { $cur=1 } 
+      perl -ne 'BEGIN { $cur=1 }
        if (/(\d+):(.+)?/) {
-         if ($cur == $1) { 
-           print "S:$1:F:$2\n" 
-         } else { 
-           while ($cur < $1) {
-              print "S:$cur:E\n";
-              $cur++;
-           }
-         }
-         $cur++;
-       } 
+	 if ($cur == $1) {
+	   print "S:$1:F:$2\n"
+	 } else {
+	   while ($cur < $1) {
+	      print "S:$cur:E\n";
+	      $cur++;
+	   }
+	 }
+	 $cur++;
+       }
        END { while ($cur < '"$maxslot"') { print "S:$cur:E\n"; $cur++; } } '
 
       rm -f $TMPFILE
@@ -355,20 +352,20 @@ case $cmd in
       make_temp_file
       slotdest=$device
       if [ -f $dir/slot{$slotdest} ]; then
-         echo "destination Element Address $slot is Full"
-         exit 1
+	 echo "destination Element Address $slot is Full"
+	 exit 1
       fi
       if [ ! -f $dir/slot${slot} ] ; then
-         echo "source Element Address $slot is Empty"
-         exit 1
+	 echo "source Element Address $slot is Empty"
+	 exit 1
       fi
 
       echo "Transfering $slot to $slotdest"
       mv $dir/slot${slot} $dir/slot{$slotdest}
 
       if [ -f $dir/barcodes ]; then
-         sed "s/^$slot:/$slotdest:/" >  $TMPFILE
-         sort -n $TMPFILE > $dir/barcodes
+	 sed "s/^$slot:/$slotdest:/" >	$TMPFILE
+	 sort -n $TMPFILE > $dir/barcodes
       fi
       exit 0
       ;;
@@ -376,10 +373,12 @@ case $cmd in
       debug "Doing disk -f $ctl $drive -- to find what is loaded"
       get_dir
       if [ -f $dir/loaded${drive} ]; then
-         cat $dir/loaded${drive}
+	 a=`cat $dir/loaded${drive}`
       else
-         echo "0"
+	 a="0"
       fi
+      debug "Loaded: drive=$drive is $a"
+      echo $a
       exit
       ;;
 
diff --git a/scripts/mtx-changer.in b/scripts/mtx-changer.in
index fe23051..ad9c0ca 100644
--- a/scripts/mtx-changer.in
+++ b/scripts/mtx-changer.in
@@ -2,6 +2,23 @@
 #
 # Bacula interface to mtx autoloader
 #
+#  Written by Kern Sibbald
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
+#
 #  If you set in your Device resource
 #
 #  Changer Command = "path-to-this-script/mtx-changer %c %o %S %a %d"
@@ -11,24 +28,24 @@
 #    in come cases, not all are used.
 #
 #  mtx-changer "changer-device" "command" "slot" "archive-device" "drive-index"
-#		   $1		   $2	    $3	      $4	       $5
+#                  $1              $2       $3        $4               $5
 #
 #  for example:
 #
 #  mtx-changer /dev/sg0 load 1 /dev/nst0 0 (on a Linux system)
-# 
+#
 #  will request to load the first cartidge into drive 0, where
 #   the SCSI control channel is /dev/sg0, and the read/write device
 #   is /dev/nst0.
 #
 #  The commands are:
-#      Command		  Function
-#      unload		  unload a given slot
-#      load		  load a given slot
-#      loaded		  which slot is loaded?
-#      list		  list Volume names (requires barcode reader)
-#      slots		  how many slots total?
-#      listall		  list all info
+#      Command            Function
+#      unload             unload a given slot
+#      load               load a given slot
+#      loaded             which slot is loaded?
+#      list               list Volume names (requires barcode reader)
+#      slots              how many slots total?
+#      listall            list all info
 #      transfer
 #
 #  Slots are numbered from 1 ...
@@ -41,7 +58,7 @@
 #  Many changers need an offline after the unload. Also many
 #   changers need a sleep 60 after the mtx load.
 #
-#  N.B. If you change the script, take care to return either 
+#  N.B. If you change the script, take care to return either
 #   the mtx exit code or a 0. If the script exits with a non-zero
 #   exit code, Bacula will assume the request failed.
 #
@@ -63,7 +80,7 @@ fi
 dbgfile="@working_dir@/mtx.log"
 debug() {
     if test -f $dbgfile; then
-	echo "`date +\"%Y%m%d-%H:%M:%S\"` $*" >> $dbgfile
+        echo "`date +\"%Y%m%d-%H:%M:%S\"` $*" >> $dbgfile
     fi
 }
 
@@ -76,8 +93,8 @@ make_temp_file() {
   if test x${TMPFILE} = x; then
      TMPFILE="@working_dir@/mtx.$$"
      if test -f ${TMPFILE}; then
-	echo "ERROR: Temp file security problem on: ${TMPFILE}"
-	exit 1
+        echo "ERROR: Temp file security problem on: ${TMPFILE}"
+        exit 1
      fi
   fi
 }
@@ -91,22 +108,22 @@ make_temp_file() {
 #  So we separate STDOUT and STDERR in
 #  certain of the mtx commands. The contents of STDERR
 #  is then printed after the STDOUT produced by mtx
-#  thus we sometimes get better changer results. 
+#  thus we sometimes get better changer results.
 #
 make_err_file() {
   ERRFILE=`mktemp @working_dir@/mtx.err.XXXXXXXXXX`
   if test x${ERRFILE} = x; then
      ERRFILE="@working_dir@/mtx.err.$$"
      if test -f ${ERRFILE}; then
-	echo "ERROR: Temp file security problem on: ${ERRFILE}"
-	exit 1
+        echo "ERROR: Temp file security problem on: ${ERRFILE}"
+        exit 1
      fi
   fi
 }
 
 
 #
-# The purpose of this function to wait a maximum 
+# The purpose of this function to wait a maximum
 #   time for the drive. It will
 #   return as soon as the drive is ready, or after
 #   waiting a maximum of 300 seconds.
@@ -117,7 +134,7 @@ make_err_file() {
 #   in the code at the top of this script.
 #
 wait_for_drive() {
-  i=0 
+  i=0
   while [ $i -le 300 ]; do  # Wait max 300 seconds
     if mt -f $1 status 2>&1 | grep "${ready}" >/dev/null 2>&1; then
       break
@@ -134,33 +151,33 @@ check_parm_count() {
     pCount=$1
     pCountNeed=$2
     if test $pCount -lt $pCountNeed; then
-	echo "ERROR: usage: mtx-changer ctl-device command [slot archive-device drive-index]"
-	echo "	Insufficient number of arguments given."
-	if test $pCount -lt 2; then
-	    echo "  Mimimum usage is first two arguments ..."
-	else
-	    echo "  Command expected $pCountNeed arguments"
-	fi
-	exit 1
+        echo "ERROR: usage: mtx-changer ctl-device command [slot archive-device drive-index]"
+        echo "  Insufficient number of arguments given."
+        if test $pCount -lt 2; then
+            echo "  Mimimum usage is first two arguments ..."
+        else
+            echo "  Command expected $pCountNeed arguments"
+        fi
+        exit 1
     fi
 }
 
-# Check for special cases where only 2 arguments are needed, 
+# Check for special cases where only 2 arguments are needed,
 #  all others are a minimum of 5
 #
 case $2 in
     list|listall)
-	check_parm_count $# 2
-	;;
+        check_parm_count $# 2
+        ;;
     slots)
-	check_parm_count $# 2
-	;;
+        check_parm_count $# 2
+        ;;
     transfer)
-	check_parm_count $# 4
-	;;
+        check_parm_count $# 4
+        ;;
     *)
-	check_parm_count $# 5
-	;;
+        check_parm_count $# 5
+        ;;
 esac
 
 
@@ -173,15 +190,15 @@ drive=$5
 
 debug "Parms: $ctl $cmd $slot $device $drive"
 
-case $cmd in 
+case $cmd in
    unload)
       debug "Doing mtx -f $ctl unload $slot $drive"
 
       if test ${offline} -eq 1 ; then
-	mt -f $device offline
+        mt -f $device offline
       fi
       if test ${offline_sleep} -ne 0 ; then
-	sleep ${offline_sleep}
+        sleep ${offline_sleep}
       fi
       make_err_file
       ${MTX} -f $ctl unload $slot $drive 2>${ERRFILE}
@@ -197,7 +214,7 @@ case $cmd in
       ${MTX} -f $ctl load $slot $drive 2>${ERRFILE}
       rtn=$?
       if test ${load_sleep} -ne 0 ; then
-	sleep ${load_sleep}
+        sleep ${load_sleep}
       fi
       wait_for_drive $device
       cat ${ERRFILE}
@@ -205,18 +222,18 @@ case $cmd in
       exit $rtn
       ;;
 
-   list) 
+   list)
       debug "Doing mtx -f $ctl -- to list volumes"
       make_temp_file
       if test ${inventory} -ne 0 ; then
-	${MTX} -f $ctl inventory
+        ${MTX} -f $ctl inventory
       fi
       ${MTX} -f $ctl status >${TMPFILE}
       rtn=$?
       if test ${vxa_packetloader} -ne 0 ; then
-	cat ${TMPFILE} | grep " *Storage Element [0-9]*:.*Full" | sed "s/ Storage Element //" | sed "s/Full :VolumeTag=//"
+        cat ${TMPFILE} | grep " *Storage Element [0-9]*:.*Full" | sed "s/ Storage Element //" | sed "s/Full :VolumeTag=//"
       else
-	cat ${TMPFILE} | grep " Storage Element [0-9]*:.*Full" | awk "{print \$3 \$4}" | sed "s/Full *\(:VolumeTag=\)*//"
+        cat ${TMPFILE} | grep " Storage Element [0-9]*:.*Full" | awk "{print \$3 \$4}" | sed "s/Full *\(:VolumeTag=\)*//"
       fi
       cat ${TMPFILE} | grep "^Data Transfer Element [0-9]*:Full (Storage Element [0-9]" | awk '{printf "%s:%s\n",$7,$10}'
       rm -f ${TMPFILE} >/dev/null 2>&1
@@ -224,25 +241,25 @@ case $cmd in
       ;;
 
    listall)
-#  Drive content:	  D:Drive num:F:Slot loaded:Volume Name
+#  Drive content:         D:Drive num:F:Slot loaded:Volume Name
 #  D:0:F:2:vol2        or D:Drive num:E
-#  D:1:F:42:vol42   
+#  D:1:F:42:vol42
 #  D:3:E
-# 
+#
 #  Slot content:
-#  S:1:F:vol1		  S:Slot num:F:Volume Name
-#  S:2:E	       or S:Slot num:E
+#  S:1:F:vol1             S:Slot num:F:Volume Name
+#  S:2:E               or S:Slot num:E
 #  S:3:F:vol4
-# 
+#
 #  Import/Export tray slots:
-#  I:10:F:vol10 	  I:Slot num:F:Volume Name
-#  I:11:E	       or I:Slot num:E
+#  I:10:F:vol10           I:Slot num:F:Volume Name
+#  I:11:E              or I:Slot num:E
 #  I:12:F:vol40
- 
+
       debug "Doing mtx -f $ctl -- to list all"
       make_temp_file
       if test ${inventory} -ne 0 ; then
-	${MTX} -f $ctl inventory
+        ${MTX} -f $ctl inventory
       fi
       ${MTX} -f $ctl status >${TMPFILE}
       rtn=$?
@@ -257,7 +274,7 @@ case $cmd in
       # If perl isn't installed, you can use by those commands
 #cat ${TMPFILE} | grep "Data Transfer Element" | awk "{print \"D:\"\$4 \$7 \$9 \$10}" | sed "s/=/:/" | sed "s/Full/F:/" | sed "s/Empty/E/"
 #cat ${TMPFILE} | grep -v "Data Transfer Element" | grep "Storage Element" | grep -v "IMPORT/EXPORT" | awk "{print \"S:\"\$3 \$4 \$5}" | sed "s/IMPORT\/EXPORT//" | sed "s/Full *:VolumeTag=/F:/" | sed "s/Empty/E/"
-#cat ${TMPFILE} | grep -v "Data Transfer Element" | grep "Storage Element" | grep "IMPORT/EXPORT" | awk "{print \"I:\"\$3 \$4 \$5}" | sed "s/IMPORT\/EXPORT//" | sed "s/Full *:VolumeTag=/F:/" | sed "s/Empty/E/" 
+#cat ${TMPFILE} | grep -v "Data Transfer Element" | grep "Storage Element" | grep "IMPORT/EXPORT" | awk "{print \"I:\"\$3 \$4 \$5}" | sed "s/IMPORT\/EXPORT//" | sed "s/Full *:VolumeTag=/F:/" | sed "s/Empty/E/"
 
       rm -f ${TMPFILE} >/dev/null 2>&1
       exit $rtn
diff --git a/scripts/set-gnome1.4 b/scripts/set-gnome1.4
deleted file mode 100755
index d76e5a2..0000000
--- a/scripts/set-gnome1.4
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-#
-# Simple script to change the package configuration to 
-#   Gnome 1.4 level.
-#
-MUID=`/usr/bin/id -u`
-if [ $MUID != 0 ] ; then
-   echo " "
-   echo "You must be root to run this script."
-   echo " "
-   exit 1
-fi
-cd /usr/lib/pkgconfig
-if test  -f libgnomeui-2.0.pc.orig ; then
-   rm -f libgnomeui-2.0.pc
-else
-   mv libgnomeui-2.0.pc libgnomeui-2.0.pc.orig
-fi
diff --git a/scripts/set-gnome2 b/scripts/set-gnome2
deleted file mode 100755
index 414499d..0000000
--- a/scripts/set-gnome2
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-#
-# Simple script to set the Gnome package level
-#   to Gnome 2.0
-#
-MUID=`/usr/bin/id -u`
-if [ $MUID != 0 ] ; then
-   echo " "
-   echo "You must be root to run this script."
-   echo " "
-   exit 1
-fi
-cd /usr/lib/pkgconfig
-if test -f libgnomeui-2.0.pc.orig ; then
-   cp -fp libgnomeui-2.0.pc.orig libgnomeui-2.0.pc
-fi
diff --git a/scripts/wxconsole.console_apps.in b/scripts/wxconsole.console_apps.in
deleted file mode 100644
index 04a9d7e..0000000
--- a/scripts/wxconsole.console_apps.in
+++ /dev/null
@@ -1,3 +0,0 @@
-USER=root
-PROGRAM=@sbindir@/bwx-console
-SESSION=true
diff --git a/scripts/wxconsole.desktop.consolehelper.in b/scripts/wxconsole.desktop.consolehelper.in
deleted file mode 100644
index 0bc16a1..0000000
--- a/scripts/wxconsole.desktop.consolehelper.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Bacula WX Console
-Comment=Bacula Director Console
-Icon=/usr/share/pixmaps/wxwin16x16.xpm
-Exec=/usr/bin/bwx-console -c @sysconfdir@/bwx-console.conf
-Terminal=false
-Type=Application
-Encoding=UTF-8
-X-Desktop-File-Install-Version=0.3
-Categories=System;Application;Utility;X-Red-Hat-Base;
diff --git a/scripts/wxconsole.desktop.xsu.in b/scripts/wxconsole.desktop.xsu.in
deleted file mode 100644
index a9a6c18..0000000
--- a/scripts/wxconsole.desktop.xsu.in
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Bacula WX Console
-Comment=Bacula Director Console
-Icon=/usr/share/pixmaps/wxwin16x16.xpm
-Exec=gnomesu -t "Query" -c "@sbindir@/bwx-console -c @sysconfdir@/bwx-console.conf" -d -e -m "In order to run the bacula wx console as root, ^additional information is required."
-Terminal=false
-Type=Application
-Encoding=UTF-8
-X-Desktop-File-Install-Version=0.3
-Categories=System;Application;Utility;X-Red-Hat-Base;
diff --git a/scripts/wxconsole.pamd b/scripts/wxconsole.pamd
deleted file mode 100644
index 15cb90f..0000000
--- a/scripts/wxconsole.pamd
+++ /dev/null
@@ -1,7 +0,0 @@
-#%PAM-1.0
-auth       sufficient   pam_rootok.so
-auth       sufficient   pam_timestamp.so
-auth       required     pam_stack.so service=system-auth
-session    optional     pam_xauth.so
-session    optional     pam_timestamp.so
-account    required     pam_permit.so
diff --git a/src/baconfig.h b/src/baconfig.h
index 58661cb..28b0fd8 100644
--- a/src/baconfig.h
+++ b/src/baconfig.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /**
  * General header file configurations that apply to
@@ -74,7 +62,7 @@
    jcr[0] = 0; }
 
 #define ASSERT2(x,y) if (!(x)) { \
-   assert_msg =  y; \
+   set_assert_msg(__FILE__, __LINE__, y); \
    Emsg1(M_ERROR, 0, _("Failed ASSERT: %s\n"), #x); \
    Pmsg1(000, _("Failed ASSERT: %s\n"), #x); \
    char *jcr = NULL; \
@@ -166,7 +154,7 @@ void InitWinAPIWrapper();
 
 
 /* Use the following for strings not to be translated */
-#define NT_(s) (s)   
+#define NT_(s) (s)
 
 /* This should go away! ****FIXME***** */
 #define MAXSTRING 500
@@ -186,7 +174,7 @@ void InitWinAPIWrapper();
 /* All tape operations MUST be a multiple of this */
 #define TAPE_BSIZE 1024
 
-#ifdef DEV_BSIZE 
+#ifdef DEV_BSIZE
 #define B_DEV_BSIZE DEV_BSIZE
 #endif
 
@@ -319,6 +307,13 @@ typedef off_t     boffset_t;
 void b_memset(const char *file, int line, void *mem, int val, size_t num);
 #endif
 
+/* First we look if we have a debug_level set,
+ * then we look for simple debug level without tags
+ * then finally we check if tags are set on debug_level and lvl
+ */
+#define chk_dbglvl(lvl) (debug_level > 0 && (                              \
+     ((((lvl) & DT_ALL) == 0)        && ((lvl) <= (debug_level & ~DT_ALL))) || \
+     (((lvl) & DT_ALL & debug_level) && (((lvl) & ~DT_ALL) <= (debug_level & ~DT_ALL)))))
 
 /**
  * The digit following Dmsg and Emsg indicates the number of substitutions in
@@ -327,20 +322,20 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num);
  */
 /** Debug Messages that are printed */
 #ifdef DEBUG
-#define Dmsg0(lvl, msg)             if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg)
-#define Dmsg1(lvl, msg, a1)         if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg, a1)
-#define Dmsg2(lvl, msg, a1, a2)     if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2)
-#define Dmsg3(lvl, msg, a1, a2, a3) if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3)
-#define Dmsg4(lvl, msg, arg1, arg2, arg3, arg4) if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg, arg1, arg2, arg3, arg4)
-#define Dmsg5(lvl, msg, a1, a2, a3, a4, a5) if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3, a4, a5)
-#define Dmsg6(lvl, msg, a1, a2, a3, a4, a5, a6) if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3, a4, a5, a6)
-#define Dmsg7(lvl, msg, a1, a2, a3, a4, a5, a6, a7) if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3, a4, a5, a6, a7)
-#define Dmsg8(lvl, msg, a1, a2, a3, a4, a5, a6, a7, a8) if ((lvl)<=debug_level) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3, a4, a5, a6, a7, a8)
-#define Dmsg9(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9) if ((lvl)<=debug_level) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9)
-#define Dmsg10(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) if ((lvl)<=debug_level) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
-#define Dmsg11(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) if ((lvl)<=debug_level) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)
-#define Dmsg12(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) if ((lvl)<=debug_level) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)
-#define Dmsg13(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) if ((lvl)<=debug_level) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)
+#define Dmsg0(lvl, msg)             if (chk_dbglvl(lvl)) d_msg(__FILE__, __LINE__, lvl, msg)
+#define Dmsg1(lvl, msg, a1)         if (chk_dbglvl(lvl)) d_msg(__FILE__, __LINE__, lvl, msg, a1)
+#define Dmsg2(lvl, msg, a1, a2)     if (chk_dbglvl(lvl)) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2)
+#define Dmsg3(lvl, msg, a1, a2, a3) if (chk_dbglvl(lvl)) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3)
+#define Dmsg4(lvl, msg, arg1, arg2, arg3, arg4) if (chk_dbglvl(lvl)) d_msg(__FILE__, __LINE__, lvl, msg, arg1, arg2, arg3, arg4)
+#define Dmsg5(lvl, msg, a1, a2, a3, a4, a5) if (chk_dbglvl(lvl)) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3, a4, a5)
+#define Dmsg6(lvl, msg, a1, a2, a3, a4, a5, a6) if (chk_dbglvl(lvl)) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3, a4, a5, a6)
+#define Dmsg7(lvl, msg, a1, a2, a3, a4, a5, a6, a7) if (chk_dbglvl(lvl)) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3, a4, a5, a6, a7)
+#define Dmsg8(lvl, msg, a1, a2, a3, a4, a5, a6, a7, a8) if (chk_dbglvl(lvl)) d_msg(__FILE__, __LINE__, lvl, msg, a1, a2, a3, a4, a5, a6, a7, a8)
+#define Dmsg9(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9) if (chk_dbglvl(lvl)) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9)
+#define Dmsg10(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) if (chk_dbglvl(lvl)) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
+#define Dmsg11(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) if (chk_dbglvl(lvl)) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)
+#define Dmsg12(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) if (chk_dbglvl(lvl)) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)
+#define Dmsg13(lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) if (chk_dbglvl(lvl)) d_msg(__FILE__,__LINE__,lvl,msg,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)
 #else
 #define Dmsg0(lvl, msg)
 #define Dmsg1(lvl, msg, a1)
@@ -457,7 +452,7 @@ int  Mmsg(POOL_MEM &msgbuf, const char *fmt,...);
 
 
 class JCR;
-void d_msg(const char *file, int line, int level, const char *fmt,...);
+void d_msg(const char *file, int line, int64_t level, const char *fmt,...);
 void p_msg(const char *file, int line, int level, const char *fmt,...);
 void e_msg(const char *file, int line, int type, int level, const char *fmt,...);
 void j_msg(const char *file, int line, JCR *jcr, int type, utime_t mtime, const char *fmt,...);
@@ -470,14 +465,14 @@ int  m_msg(const char *file, int line, POOLMEM *&pool_buf, const char *fmt, ...)
 #ifndef HAVE_WXCONSOLE
 #undef strdup
 #define strdup(buf) bad_call_on_strdup_use_bstrdup(buf)
-#else 
+#else
 /* Groan, WxWidgets has its own way of doing NLS so cleanup */
 #ifndef ENABLE_NLS
 #undef _
 #undef setlocale
 #undef textdomain
 #undef bindtextdomain
-#endif  
+#endif
 #endif
 
 /** Use our fgets which handles interrupts */
@@ -517,7 +512,7 @@ int  m_msg(const char *file, int line, POOLMEM *&pool_buf, const char *fmt, ...)
 
 /* =============================================================
  *               OS Dependent defines
- * ============================================================= 
+ * =============================================================
  */
 #if defined (__digital__) && defined (__unix__)
 /* Tru64 - it does have fseeko and ftello , but since ftell/fseek are also 64 bit */
@@ -569,7 +564,6 @@ int getdomainname(char *name, int len);
 /*
  *   Windows
  */
-#define DEFAULT_CONFIGDIR "C:\\Documents and Settings\\All Users\\Application Data\\Bacula"
 #define PathSeparator '\\'
 
 inline bool IsPathSeparator(int ch) { return ch == '/' || ch == '\\'; }
@@ -650,6 +644,9 @@ static inline bool bigendian() { return htonl(1) == 1L; }
 #ifndef __GNUC__
 #define __PRETTY_FUNCTION__ __func__
 #endif
+#ifdef HAVE_SUN_OS
+#undef ENTER_LEAVE
+#endif
 #ifdef ENTER_LEAVE
 #define Enter(lvl) Dmsg1(lvl, "Enter: %s\n", __PRETTY_FUNCTION__)
 #define Leave(lvl) Dmsg1(lvl, "Leave: %s\n", __PRETTY_FUNCTION__)
@@ -658,4 +655,10 @@ static inline bool bigendian() { return htonl(1) == 1L; }
 #define Leave(lvl)
 #endif
 
+#ifdef __GNUC__x
+# define CHECK_FORMAT(fun, f, a) __attribute__ ((format (fun, f, a)))
+#else
+# define CHECK_FORMAT(fun, f, a)
+#endif
+
 #endif /* _BACONFIG_H */
diff --git a/src/bacula.h b/src/bacula.h
index ccaa978..5ba3b89 100644
--- a/src/bacula.h
+++ b/src/bacula.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * bacula.h -- main header file to include in all Bacula source
@@ -135,10 +123,10 @@ extern "C" {
 #endif
 #if defined(HAVE_WIN32) & !defined(HAVE_MINGW)
 #include <winsock2.h>
-#endif 
+#endif
 #if !defined(HAVE_WIN32) & !defined(HAVE_MINGW)
 #include <sys/stat.h>
-#endif 
+#endif
 #include <sys/time.h>
 #if HAVE_SYS_WAIT_H
 #include <sys/wait.h>
@@ -174,20 +162,6 @@ extern "C" {
 #include "baconfig.h"
 #include "lib/lib.h"
 
-/*
- * For wx-console compiles, we undo some Bacula defines.
- *  This prevents conflicts between wx-Widgets and Bacula.
- *  In wx-console files that malloc or free() Bacula structures
- *  config/resources and interface to the Bacula libraries,
- *  you must use bmalloc() and bfree().
- */
-#ifdef HAVE_WXCONSOLE
-#undef New
-#undef _
-#undef free
-#undef malloc
-#endif
-
 #if defined(HAVE_WIN32)
 #include "win32/winapi.h"
 #include "winhost.h"
diff --git a/src/bc_types.h b/src/bc_types.h
index fe04718..1e48bca 100644
--- a/src/bc_types.h
+++ b/src/bc_types.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
     Define integer types for Bacula -- Kern Sibbald
@@ -230,6 +218,12 @@ typedef float             float32_t;
 #define socklen_t int
 #endif
 
+#ifndef HAVE_WIN32
+#ifndef SOCKET_ERROR
+#define SOCKET_ERROR (-1)
+#endif
+#endif
+
 #ifdef HAVE_OLD_SOCKOPT
 #define sockopt_val_t char *
 #else
diff --git a/src/c b/src/c
index 9fc5e3d..526055e 100644
--- a/src/c
+++ b/src/c
@@ -1,28 +1,15 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2011-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
diff --git a/src/c.scr b/src/c.scr
deleted file mode 100644
index 206188e..0000000
--- a/src/c.scr
+++ /dev/null
@@ -1,8 +0,0 @@
-l Copyright (C)
--1
-mark
-l */
-mark
-db
-inc /home/kern/bacula/k/src/c
-e
diff --git a/src/cats/bdb_dbi.h b/src/cats/bdb_dbi.h
deleted file mode 100644
index 4a01c07..0000000
--- a/src/cats/bdb_dbi.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2009-2011 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.
-*/
-#ifndef __BDB_DBI_H_
-#define __BDB_DBI_H_ 1
-
-struct DBI_FIELD_GET {
-   dlink link;
-   char *value;
-};
-
-class B_DB_DBI: public B_DB_PRIV {
-private:
-   dbi_inst m_instance;
-   dbi_conn *m_db_handle;
-   dbi_result *m_result;
-   DBI_FIELD_GET *m_field_get;
-
-public:
-   B_DB_DBI(JCR *jcr, const char *db_driver, const char *db_name,
-            const char *db_user, const char *db_password,
-            const char *db_address, int db_port, const char *db_socket,
-            bool mult_db_connections, bool disable_batch_insert);
-   ~B_DB_DBI();
-
-   /* low level operations */
-   bool db_open_database(JCR *jcr);
-   void db_close_database(JCR *jcr);
-   void db_thread_cleanup(void);
-   void db_escape_string(JCR *jcr, char *snew, char *old, int len);
-   char *db_escape_object(JCR *jcr, char *old, int len);
-   void db_unescape_object(JCR *jcr, char *from, int32_t expected_len,
-                           POOLMEM **dest, int32_t *len);
-   void db_start_transaction(JCR *jcr);
-   void db_end_transaction(JCR *jcr);
-   bool db_sql_query(const char *query, DB_RESULT_HANDLER *result_handler, void *ctx);
-   void sql_free_result(void);
-   SQL_ROW sql_fetch_row(void);
-   bool sql_query(const char *query, int flags=0);
-   const char *sql_strerror(void);
-   int sql_num_rows(void);
-   void sql_data_seek(int row);
-   int sql_affected_rows(void);
-   uint64_t sql_insert_autokey_record(const char *query, const char *table_name);
-   void sql_field_seek(int field);
-   SQL_FIELD *sql_fetch_field(void);
-   int sql_num_fields(void);
-   bool sql_field_is_not_null(int field_type);
-   bool sql_field_is_numeric(int field_type);
-   bool sql_batch_start(JCR *jcr);
-   bool sql_batch_end(JCR *jcr, const char *error);
-   bool sql_batch_insert(JCR *jcr, ATTR_DBR *ar);
-};
-
-#endif /* __BDB_DBI_H_ */
diff --git a/src/cats/bdb_ingres.h b/src/cats/bdb_ingres.h
deleted file mode 100644
index 9daf526..0000000
--- a/src/cats/bdb_ingres.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2009-2011 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.
-*/
-#ifndef __BDB_INGRES_H_
-#define __BDB_INGRES_H_ 1
-
-class B_DB_INGRES: public B_DB_PRIV {
-private:
-   INGconn *m_db_handle;
-   INGresult *m_result;
-   bool m_explicit_commit;
-   int m_session_id;
-   alist *m_query_filters;
-
-public:
-   B_DB_INGRES(JCR *jcr, const char *db_driver, const char *db_name,
-               const char *db_user, const char *db_password,
-               const char *db_address, int db_port, const char *db_socket,
-               bool mult_db_connections, bool disable_batch_insert);
-   ~B_DB_INGRES();
-
-   /* low level operations */
-   bool db_open_database(JCR *jcr);
-   void db_close_database(JCR *jcr);
-   void db_thread_cleanup(void);
-   void db_escape_string(JCR *jcr, char *snew, char *old, int len);
-   char *db_escape_object(JCR *jcr, char *old, int len);
-   void db_unescape_object(JCR *jcr, char *from, int32_t expected_len,
-                           POOLMEM **dest, int32_t *len);
-   void db_start_transaction(JCR *jcr);
-   void db_end_transaction(JCR *jcr);
-   bool db_sql_query(const char *query, DB_RESULT_HANDLER *result_handler, void *ctx);
-   void sql_free_result(void);
-   SQL_ROW sql_fetch_row(void);
-   bool sql_query(const char *query, int flags=0);
-   const char *sql_strerror(void);
-   int sql_num_rows(void);
-   void sql_data_seek(int row);
-   int sql_affected_rows(void);
-   uint64_t sql_insert_autokey_record(const char *query, const char *table_name);
-   void sql_field_seek(int field);
-   SQL_FIELD *sql_fetch_field(void);
-   int sql_num_fields(void);
-   bool sql_field_is_not_null(int field_type);
-   bool sql_field_is_numeric(int field_type);
-   bool sql_batch_start(JCR *jcr);
-   bool sql_batch_end(JCR *jcr, const char *error);
-   bool sql_batch_insert(JCR *jcr, ATTR_DBR *ar);
-};
-
-#endif /* __BDB_INGRES_H_ */
diff --git a/src/cats/bdb_mysql.h b/src/cats/bdb_mysql.h
index 3eddf24..b32d05f 100644
--- a/src/cats/bdb_mysql.h
+++ b/src/cats/bdb_mysql.h
@@ -1,30 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 #ifndef __BDB_MYSQL_H_
 #define __BDB_MYSQL_H_ 1
diff --git a/src/cats/bdb_postgresql.h b/src/cats/bdb_postgresql.h
index ee57926..2192c28 100644
--- a/src/cats/bdb_postgresql.h
+++ b/src/cats/bdb_postgresql.h
@@ -1,30 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 #ifndef __BDB_POSTGRESQL_H_
 #define __BDB_POSTGRESQL_H_ 1
diff --git a/src/cats/bdb_priv.h b/src/cats/bdb_priv.h
index 1e17a5e..e58e04f 100644
--- a/src/cats/bdb_priv.h
+++ b/src/cats/bdb_priv.h
@@ -1,30 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2011-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2011-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 #ifndef __BDB_PRIV_H_
 #define __BDB_PRIV_H_ 1
@@ -36,7 +23,7 @@
 /*
  * Generic definition of a sql_row.
  */
-typedef char ** SQL_ROW;
+typedef char **SQL_ROW;
 
 /*
  * Generic definition of a a sql_field.
diff --git a/src/cats/bdb_sqlite.h b/src/cats/bdb_sqlite.h
index 7226b35..39a0b33 100644
--- a/src/cats/bdb_sqlite.h
+++ b/src/cats/bdb_sqlite.h
@@ -1,30 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 #ifndef __BDB_SQLITE_H_
 #define __BDB_SQLITE_H_ 1
@@ -45,8 +32,8 @@ public:
    ~B_DB_SQLITE();
 
    /* Used internaly by sqlite.c to access fields in db_sql_query() */
-   void set_column_names(char **res, int nb) { 
-      m_col_names = res; 
+   void set_column_names(char **res, int nb) {
+      m_col_names = res;
       m_num_fields = nb;
       m_field_number = 0;
    }
diff --git a/src/cats/bvfs.c b/src/cats/bvfs.c
index 27f76d5..460f683 100644
--- a/src/cats/bvfs.c
+++ b/src/cats/bvfs.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bacula.h"
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -42,16 +30,16 @@
 static int result_handler(void *ctx, int fields, char **row)
 {
    if (fields == 4) {
-      Pmsg4(0, "%s\t%s\t%s\t%s\n", 
+      Pmsg4(0, "%s\t%s\t%s\t%s\n",
             row[0], row[1], row[2], row[3]);
    } else if (fields == 5) {
-      Pmsg5(0, "%s\t%s\t%s\t%s\t%s\n", 
+      Pmsg5(0, "%s\t%s\t%s\t%s\t%s\n",
             row[0], row[1], row[2], row[3], row[4]);
    } else if (fields == 6) {
-      Pmsg6(0, "%s\t%s\t%s\t%s\t%s\t%s\n", 
+      Pmsg6(0, "%s\t%s\t%s\t%s\t%s\t%s\n",
             row[0], row[1], row[2], row[3], row[4], row[5]);
    } else if (fields == 7) {
-      Pmsg7(0, "%s\t%s\t%s\t%s\t%s\t%s\t%s\n", 
+      Pmsg7(0, "%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
             row[0], row[1], row[2], row[3], row[4], row[5], row[6]);
    }
    return 0;
@@ -64,7 +52,10 @@ Bvfs::Bvfs(JCR *j, B_DB *mdb) {
    jobids = get_pool_memory(PM_NAME);
    prev_dir = get_pool_memory(PM_NAME);
    pattern = get_pool_memory(PM_NAME);
-   *jobids = *prev_dir = *pattern = 0;
+   filename = get_pool_memory(PM_NAME);
+   tmp = get_pool_memory(PM_NAME);
+   escaped_list = get_pool_memory(PM_NAME);
+   *filename = *jobids = *prev_dir = *pattern = 0;
    dir_filenameid = pwd_id = offset = 0;
    see_copies = see_all_versions = false;
    limit = 1000;
@@ -72,12 +63,16 @@ Bvfs::Bvfs(JCR *j, B_DB *mdb) {
    list_entries = result_handler;
    user_data = this;
    username = NULL;
+   job_acl = client_acl = pool_acl = fileset_acl = NULL;
 }
 
 Bvfs::~Bvfs() {
    free_pool_memory(jobids);
    free_pool_memory(pattern);
    free_pool_memory(prev_dir);
+   free_pool_memory(filename);
+   free_pool_memory(tmp);
+   free_pool_memory(escaped_list);
    if (username) {
       free(username);
    }
@@ -85,26 +80,94 @@ Bvfs::~Bvfs() {
    jcr->dec_use_count();
 }
 
+char *Bvfs::escape_list(alist *lst)
+{
+   char *elt;
+   int len;
+
+   /* List is empty, reject everything */
+   if (!lst || lst->size() == 0) {
+      Mmsg(escaped_list, "''");
+      return escaped_list;
+   }
+
+   *tmp = 0;
+   *escaped_list = 0;
+
+   foreach_alist(elt, lst) {
+      if (elt && *elt) {
+         len = strlen(elt);
+         /* Escape + ' ' */
+         tmp = check_pool_memory_size(tmp, 2 * len + 2 + 2);
+
+         tmp[0] = '\'';
+         db_escape_string(jcr, db, tmp + 1 , elt, len);
+         pm_strcat(tmp, "'");
+
+         if (*escaped_list) {
+            pm_strcat(escaped_list, ",");
+         }
+
+         pm_strcat(escaped_list, tmp);
+      }
+   }
+   return escaped_list;
+}
+
 void Bvfs::filter_jobid()
 {
-   if (!username) {
+   POOL_MEM query;
+   POOL_MEM sub_where;
+   POOL_MEM sub_join;
+
+   /* No ACL, no username, no check */
+   if (!job_acl && !fileset_acl && !client_acl && !pool_acl && !username) {
+      Dmsg0(dbglevel_sql, "No ACL\n");
       return;
    }
 
-   /* Query used by Bweb to filter clients, activated when using
-    * set_username() 
-    */
-   POOL_MEM query;
-   Mmsg(query,
-      "SELECT DISTINCT JobId FROM Job JOIN Client USING (ClientId) "
+   if (job_acl) {
+      Mmsg(sub_where, " AND Job.Name IN (%s) ", escape_list(job_acl));
+   }
+
+   if (fileset_acl) {
+      Mmsg(query, " AND FileSet.FileSet IN (%s) ", escape_list(fileset_acl));
+      pm_strcat(sub_where, query.c_str());
+      pm_strcat(sub_join, " JOIN FileSet USING (FileSetId) ");
+   }
+
+   if (client_acl) {
+      Mmsg(query, " AND Client.Name IN (%s) ", escape_list(client_acl));
+      pm_strcat(sub_where, query.c_str());
+   }
+
+   if (pool_acl) {
+      Mmsg(query, " AND Pool.Name IN (%s) ", escape_list(pool_acl));
+      pm_strcat(sub_where, query.c_str());
+      pm_strcat(sub_join, " JOIN Pool USING (PoolId) ");
+   }
+
+   if (username) {
+      /* Query used by Bweb to filter clients, activated when using
+       * set_username()
+       */
+      Mmsg(query,
+      "SELECT DISTINCT JobId FROM Job JOIN Client USING (ClientId) %s "
         "JOIN (SELECT ClientId FROM client_group_member "
         "JOIN client_group USING (client_group_id) "
         "JOIN bweb_client_group_acl USING (client_group_id) "
         "JOIN bweb_user USING (userid) "
        "WHERE bweb_user.username = '%s' "
       ") AS filter USING (ClientId) "
-        " WHERE JobId IN (%s)", 
-        username, jobids);
+        " WHERE JobId IN (%s) %s",
+           sub_join.c_str(), username, jobids, sub_where.c_str());
+
+   } else {
+      Mmsg(query,
+      "SELECT DISTINCT JobId FROM Job JOIN Client USING (ClientId) %s "
+      " WHERE JobId IN (%s) %s",
+           sub_join.c_str(), jobids, sub_where.c_str());
+   }
 
    db_list_ctx ctx;
    Dmsg1(dbglevel_sql, "q=%s\n", query.c_str());
@@ -124,13 +187,13 @@ void Bvfs::set_jobids(char *ids)
    filter_jobid();
 }
 
-/* 
+/*
  * TODO: Find a way to let the user choose how he wants to display
  * files and directories
  */
 
 
-/* 
+/*
  * Working Object to store PathId already seen (avoid
  * database queries), equivalent to %cache_ppathid in perl
  */
@@ -171,7 +234,7 @@ public:
       bool ret = cache_ppathid->lookup(pathid) != NULL;
       return ret;
    }
-   
+
    void insert(char *pathid) {
       hlink *h = get_hlink();
       cache_ppathid->insert(pathid, h);
@@ -200,8 +263,8 @@ char *bvfs_parent_dir(char *path)
    int len = strlen(path) - 1;
 
    /* windows directory / */
-   if (len == 2 && B_ISALPHA(path[0]) 
-                && path[1] == ':' 
+   if (len == 2 && B_ISALPHA(path[0])
+                && path[1] == ':'
                 && path[2] == '/')
    {
       len = 0;
@@ -243,12 +306,12 @@ char *bvfs_basename_dir(char *path)
       if (*p == '/') {
          p++;                  /* skip first / */
       }
-   } 
+   }
    return p;
 }
 
-static void build_path_hierarchy(JCR *jcr, B_DB *mdb, 
-                                 pathid_cache &ppathid_cache, 
+static void build_path_hierarchy(JCR *jcr, B_DB *mdb,
+                                 pathid_cache &ppathid_cache,
                                  char *org_pathid, char *path)
 {
    Dmsg1(dbglevel, "build_path_hierarchy(%s)\n", path);
@@ -266,7 +329,7 @@ static void build_path_hierarchy(JCR *jcr, B_DB *mdb,
    {
       if (!ppathid_cache.lookup(pathid))
       {
-         Mmsg(mdb->cmd, 
+         Mmsg(mdb->cmd,
               "SELECT PPathId FROM PathHierarchy WHERE PathId = %s",
               pathid);
 
@@ -290,12 +353,12 @@ static void build_path_hierarchy(JCR *jcr, B_DB *mdb,
                goto bail_out;
             }
             ppathid_cache.insert(pathid);
-            
+
             Mmsg(mdb->cmd,
                  "INSERT INTO PathHierarchy (PathId, PPathId) "
                  "VALUES (%s,%lld)",
                  pathid, (uint64_t) parent.PathId);
-            
+
             if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
                goto bail_out;   /* Can't insert the record, just leave */
             }
@@ -309,14 +372,14 @@ static void build_path_hierarchy(JCR *jcr, B_DB *mdb,
           */
          goto bail_out;
       }
-   }   
+   }
 
 bail_out:
    mdb->path = bkp;
    mdb->fnl = 0;
 }
 
-/* 
+/*
  * Internal function to update path_hierarchy cache with a shared pathid cache
  * return Error 0
  *        OK    1
@@ -331,12 +394,12 @@ static int update_path_hierarchy_cache(JCR *jcr,
    uint32_t num;
    char jobid[50];
    edit_uint64(JobId, jobid);
- 
+
    db_lock(mdb);
    db_start_transaction(jcr, mdb);
 
    Mmsg(mdb->cmd, "SELECT 1 FROM Job WHERE JobId = %s AND HasCache=1", jobid);
-   
+
    if (!QUERY_DB(jcr, mdb, mdb->cmd) || sql_num_rows(mdb) > 0) {
       Dmsg1(dbglevel, "already computed %d\n", (uint32_t)JobId );
       ret = 1;
@@ -362,7 +425,7 @@ static int update_path_hierarchy_cache(JCR *jcr,
     * visibility We try to avoid recursion, to be as fast as possible We also
     * only work on not allready hierarchised directories...
     */
-   Mmsg(mdb->cmd, 
+   Mmsg(mdb->cmd,
      "SELECT PathVisibility.PathId, Path "
        "FROM PathVisibility "
             "JOIN Path ON( PathVisibility.PathId = Path.PathId) "
@@ -378,21 +441,21 @@ static int update_path_hierarchy_cache(JCR *jcr,
       goto bail_out;
    }
 
-   /* TODO: I need to reuse the DB connection without emptying the result 
+   /* 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
     * catalog descriptor again.
     */
    num = sql_num_rows(mdb);
    if (num > 0) {
       char **result = (char **)malloc (num * 2 * sizeof(char *));
-      
+
       SQL_ROW row;
       int i=0;
       while((row = sql_fetch_row(mdb))) {
          result[i++] = bstrdup(row[0]);
          result[i++] = bstrdup(row[1]);
       }
-      
+
       i=0;
       while (num > 0) {
          build_path_hierarchy(jcr, mdb, ppathid_cache, result[i], result[i+1]);
@@ -404,7 +467,7 @@ static int update_path_hierarchy_cache(JCR *jcr,
    }
 
    if (mdb->db_get_type_index() == SQL_TYPE_SQLITE3) {
-      Mmsg(mdb->cmd, 
+      Mmsg(mdb->cmd,
  "INSERT INTO PathVisibility (PathId, JobId) "
    "SELECT DISTINCT h.PPathId AS PathId, %s "
      "FROM PathHierarchy AS h "
@@ -413,7 +476,7 @@ static int update_path_hierarchy_cache(JCR *jcr,
            jobid, jobid, jobid );
 
    } else {
-      Mmsg(mdb->cmd, 
+      Mmsg(mdb->cmd,
   "INSERT INTO PathVisibility (PathId, JobId)  "
    "SELECT a.PathId,%s "
    "FROM ( "
@@ -430,7 +493,7 @@ static int update_path_hierarchy_cache(JCR *jcr,
    do {
       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);
 
@@ -440,7 +503,7 @@ bail_out:
    return ret;
 }
 
-/* 
+/*
  * Find an store the filename descriptor for empty directories Filename.Name=''
  */
 DBId_t Bvfs::get_dir_filenameid()
@@ -449,13 +512,155 @@ DBId_t Bvfs::get_dir_filenameid()
    if (dir_filenameid) {
       return dir_filenameid;
    }
-   POOL_MEM q;
-   Mmsg(q, "SELECT FilenameId FROM Filename WHERE Name = ''");
-   db_sql_query(db, q.c_str(), db_int_handler, &id);
+   Mmsg(db->cmd, "SELECT FilenameId FROM Filename WHERE Name = ''");
+   db_sql_query(db, db->cmd, db_int_handler, &id);
    dir_filenameid = id;
    return dir_filenameid;
 }
 
+/* Compute the cache for the bfileview compoment */
+void Bvfs::fv_update_cache()
+{
+   int64_t pathid;
+   int64_t size=0, count=0;
+
+   Dmsg0(dbglevel, "fv_update_cache()\n");
+
+   if (!*jobids) {
+      return;                   /* Nothing to build */
+   }
+
+   db_lock(db);
+   db_start_transaction(jcr, db);
+
+   pathid = get_root();
+
+   fv_compute_size_and_count(pathid, &size, &count);
+
+   db_end_transaction(jcr, db);
+   db_unlock(db);
+}
+
+/* Not yet working */
+void Bvfs::fv_get_big_files(int64_t pathid, int64_t min_size, int32_t limit)
+{
+   Mmsg(db->cmd,
+        "SELECT FilenameId AS filenameid, Name AS name, size "
+          "FROM ( "
+         "SELECT FilenameId, base64_decode_lstat(8,LStat) AS size "
+           "FROM File "
+          "WHERE PathId  = %lld "
+            "AND JobId = %s "
+        ") AS S INNER JOIN Filename USING (FilenameId) "
+     "WHERE S.size > %lld "
+     "ORDER BY S.size DESC "
+     "LIMIT %d ", pathid, jobids, min_size, limit);
+}
+
+/* Get the current path size and files count */
+void Bvfs::fv_get_current_size_and_count(int64_t pathid, int64_t *size, int64_t *count)
+{
+   SQL_ROW row;
+
+   *size = *count = 0;
+
+   Mmsg(db->cmd,
+ "SELECT Size AS size, Files AS files "
+  " FROM PathVisibility "
+ " WHERE PathId = %lld "
+   " AND JobId = %s ", pathid, jobids);
+
+   if (!QUERY_DB(jcr, db, db->cmd)) {
+      return;
+   }
+
+   if ((row = sql_fetch_row(db))) {
+      *size = str_to_int64(row[0]);
+      *count =  str_to_int64(row[1]);
+   }
+}
+
+/* Compute for the current path the size and files count */
+void Bvfs::fv_get_size_and_count(int64_t pathid, int64_t *size, int64_t *count)
+{
+   SQL_ROW row;
+
+   *size = *count = 0;
+
+   Mmsg(db->cmd,
+ "SELECT sum(base64_decode_lstat(8,LStat)) AS size, count(1) AS files "
+  " FROM File "
+ " WHERE PathId = %lld "
+   " AND JobId = %s ", pathid, jobids);
+
+   if (!QUERY_DB(jcr, db, db->cmd)) {
+      return;
+   }
+
+   if ((row = sql_fetch_row(db))) {
+      *size = str_to_int64(row[0]);
+      *count =  str_to_int64(row[1]);
+   }
+}
+
+void Bvfs::fv_compute_size_and_count(int64_t pathid, int64_t *size, int64_t *count)
+{
+   Dmsg1(dbglevel, "fv_compute_size_and_count(%lld)\n", pathid);
+
+   fv_get_current_size_and_count(pathid, size, count);
+   if (*size > 0) {
+      return;
+   }
+
+   /* Update stats for the current directory */
+   fv_get_size_and_count(pathid, size, count);
+
+   /* Update stats for all sub directories */
+   Mmsg(db->cmd,
+        " SELECT PathId "
+          " FROM PathVisibility "
+               " INNER JOIN PathHierarchy USING (PathId) "
+         " WHERE PPathId  = %lld "
+           " AND JobId = %s ", pathid, jobids);
+
+   QUERY_DB(jcr, db, db->cmd);
+   int num = sql_num_rows(db);
+
+   if (num > 0) {
+      int64_t *result = (int64_t *)malloc (num * sizeof(int64_t));
+      SQL_ROW row;
+      int i=0;
+
+      while((row = sql_fetch_row(db))) {
+         result[i++] = str_to_int64(row[0]); /* PathId */
+      }
+
+      i=0;
+      while (num > 0) {
+         int64_t c=0, s=0;
+         fv_compute_size_and_count(result[i], &s, &c);
+         *size += s;
+         *count += c;
+
+         i++;
+         num--;
+      }
+      free(result);
+   }
+
+   fv_update_size_and_count(pathid, *size, *count);
+}
+
+void Bvfs::fv_update_size_and_count(int64_t pathid, int64_t size, int64_t count)
+{
+   Mmsg(db->cmd,
+        "UPDATE PathVisibility SET Files = %lld, Size = %lld "
+        " WHERE JobId = %s "
+        " AND PathId = %lld ", count, size, jobids, pathid);
+
+   UPDATE_DB(jcr, db, db->cmd);
+}
+
 void bvfs_update_cache(JCR *jcr, B_DB *mdb)
 {
    uint32_t nb=0;
@@ -477,14 +682,14 @@ void bvfs_update_cache(JCR *jcr, B_DB *mdb)
            "PPathId integer NOT NULL, "
            "CONSTRAINT pathhierarchy_pkey "
            "PRIMARY KEY (PathId))");
-      QUERY_DB(jcr, mdb, mdb->cmd); 
+      QUERY_DB(jcr, mdb, mdb->cmd);
 
       Mmsg(mdb->cmd,
            "CREATE INDEX pathhierarchy_ppathid "
            "ON PathHierarchy (PPathId)");
       QUERY_DB(jcr, mdb, mdb->cmd);
 
-      Mmsg(mdb->cmd, 
+      Mmsg(mdb->cmd,
            "CREATE TABLE PathVisibility ("
            "PathId integer NOT NULL, "
            "JobId integer NOT NULL, "
@@ -494,7 +699,7 @@ void bvfs_update_cache(JCR *jcr, B_DB *mdb)
            "PRIMARY KEY (JobId, PathId))");
       QUERY_DB(jcr, mdb, mdb->cmd);
 
-      Mmsg(mdb->cmd, 
+      Mmsg(mdb->cmd,
            "CREATE INDEX pathvisibility_jobid "
            "ON PathVisibility (JobId)");
       QUERY_DB(jcr, mdb, mdb->cmd);
@@ -502,7 +707,7 @@ void bvfs_update_cache(JCR *jcr, B_DB *mdb)
    }
 #endif
 
-   Mmsg(mdb->cmd, 
+   Mmsg(mdb->cmd,
  "SELECT JobId from Job "
   "WHERE HasCache = 0 "
     "AND Type IN ('B') AND JobStatus IN ('T', 'f', 'A') "
@@ -514,7 +719,7 @@ void bvfs_update_cache(JCR *jcr, B_DB *mdb)
 
    db_start_transaction(jcr, mdb);
    Dmsg0(dbglevel, "Cleaning pathvisibility\n");
-   Mmsg(mdb->cmd, 
+   Mmsg(mdb->cmd,
         "DELETE FROM PathVisibility "
          "WHERE NOT EXISTS "
         "(SELECT 1 FROM Job WHERE JobId=PathVisibility.JobId)");
@@ -552,7 +757,33 @@ bvfs_update_path_hierarchy_cache(JCR *jcr, B_DB *mdb, char *jobids)
    return ret;
 }
 
-/* 
+/*
+ * Update the bvfs fileview for given jobids
+ */
+void
+bvfs_update_fv_cache(JCR *jcr, B_DB *mdb, char *jobids)
+{
+   char *p;
+   JobId_t JobId;
+   Bvfs bvfs(jcr, mdb);
+
+   for (p=jobids; ; ) {
+      int stat = get_next_jobid_from_list(&p, &JobId);
+      if (stat < 0) {
+         return;
+      }
+      if (stat == 0) {
+         break;
+      }
+
+      Dmsg1(dbglevel, "Trying to create cache for %lld\n", (int64_t)JobId);
+
+      bvfs.set_jobid(JobId);
+      bvfs.fv_update_cache();
+   }
+}
+
+/*
  * Update the bvfs cache for current jobids
  */
 void Bvfs::update_cache()
@@ -566,12 +797,12 @@ 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)); 
+   ch_dir(db_get_path_record(jcr, db));
    db_unlock(db);
    return pwd_id != 0;
 }
 
-/* 
+/*
  * Get all file versions for a specified client
  * TODO: Handle basejobs using different client
  */
@@ -589,7 +820,7 @@ void Bvfs::get_all_file_versions(DBId_t pathid, DBId_t fnid, const char *client)
 
    POOL_MEM query;
 
-   Mmsg(query,//    1           2              3       
+   Mmsg(query,//    1           2              3
 "SELECT 'V', File.PathId, File.FilenameId,  File.Md5, "
 //         4          5           6
         "File.JobId, File.LStat, File.FileId, "
@@ -612,6 +843,29 @@ void Bvfs::get_all_file_versions(DBId_t pathid, DBId_t fnid, const char *client)
    db_sql_query(db, query.c_str(), list_entries, user_data);
 }
 
+/*
+ * Get all volumes for a specific file
+ */
+void Bvfs::get_volumes(DBId_t  fileid)
+{
+   Dmsg1(dbglevel, "get_volumes(%lld)\n", (uint64_t)fileid);
+
+   char ed1[50];
+   POOL_MEM query;
+
+   Mmsg(query,
+//                          7                8
+"SELECT 'L',0,0,0,0,0,0, Media.VolumeName, Media.InChanger "
+"FROM File JOIN JobMedia USING (JobId) JOIN Media USING (MediaId) "
+"WHERE File.FileId = %s "
+  "AND File.FileIndex >= JobMedia.FirstIndex "
+  "AND File.FileIndex <= JobMedia.LastIndex "
+  " ORDER BY JobMediaId LIMIT %d OFFSET %d"
+        ,edit_uint64(fileid, ed1), limit, offset);
+   Dmsg1(dbglevel_sql, "q=%s\n", query.c_str());
+   db_sql_query(db, query.c_str(), list_entries, user_data);
+}
+
 DBId_t Bvfs::get_root()
 {
    int p;
@@ -632,15 +886,15 @@ int Bvfs::_handle_path(void *ctx, int fields, char **row)
 {
    if (bvfs_is_dir(row)) {
       /* can have the same path 2 times */
-      if (strcmp(row[BVFS_Name], prev_dir)) {
-         pm_strcpy(prev_dir, row[BVFS_Name]);
+      if (strcmp(row[BVFS_PathId], prev_dir)) {
+         pm_strcpy(prev_dir, row[BVFS_PathId]);
          return list_entries(user_data, fields, row);
       }
    }
    return 0;
 }
 
-/* 
+/*
  * Retrieve . and .. information
  */
 void Bvfs::ls_special_dirs()
@@ -658,7 +912,7 @@ void Bvfs::ls_special_dirs()
    *prev_dir = 0;
 
    POOL_MEM query;
-   Mmsg(query, 
+   Mmsg(query,
 "(SELECT PPathId AS PathId, '..' AS Path "
     "FROM  PathHierarchy "
    "WHERE  PathId = %s "
@@ -694,8 +948,9 @@ bool Bvfs::ls_dirs()
    POOL_MEM query;
    POOL_MEM filter;
    if (*pattern) {
-      Mmsg(filter, " AND Path2.Path %s '%s' ", 
+      Mmsg(filter, " AND Path2.Path %s '%s' ",
            match_query[db_get_type_index(db)], pattern);
+
    }
 
    if (!dir_filenameid) {
@@ -755,17 +1010,17 @@ bool Bvfs::ls_dirs()
    return nb_record == limit;
 }
 
-void build_ls_files_query(B_DB *db, POOL_MEM &query, 
-                          const char *JobId, const char *PathId,  
+void build_ls_files_query(B_DB *db, POOL_MEM &query,
+                          const char *JobId, const char *PathId,
                           const char *filter, int64_t limit, int64_t offset)
 {
    if (db_get_type_index(db) == SQL_TYPE_POSTGRESQL) {
-      Mmsg(query, sql_bvfs_list_files[db_get_type_index(db)], 
-           JobId, PathId, JobId, PathId, 
+      Mmsg(query, sql_bvfs_list_files[db_get_type_index(db)],
+           JobId, PathId, JobId, PathId,
            filter, limit, offset);
    } else {
-      Mmsg(query, sql_bvfs_list_files[db_get_type_index(db)], 
-           JobId, PathId, JobId, PathId, 
+      Mmsg(query, sql_bvfs_list_files[db_get_type_index(db)],
+           JobId, PathId, JobId, PathId,
            limit, offset, filter, JobId, JobId);
    }
 }
@@ -788,11 +1043,14 @@ bool Bvfs::ls_files()
 
    edit_uint64(pwd_id, pathid);
    if (*pattern) {
-      Mmsg(filter, " AND Filename.Name %s '%s' ", 
+      Mmsg(filter, " AND Filename.Name %s '%s' ",
            match_query[db_get_type_index(db)], pattern);
+
+   } else if (*filename) {
+      Mmsg(filter, " AND Filename.Name = '%s' ", filename);
    }
 
-   build_ls_files_query(db, query, 
+   build_ls_files_query(db, query,
                         jobids, pathid, filter.c_str(),
                         limit, offset);
 
@@ -807,8 +1065,8 @@ bool Bvfs::ls_files()
 }
 
 
-/* 
- * Return next Id from comma separated list   
+/*
+ * Return next Id from comma separated list
  *
  * Returns:
  *   1 if next Id returned
@@ -881,7 +1139,7 @@ bool Bvfs::drop_restore_list(char *output_table)
    return false;
 }
 
-bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink, 
+bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
                                 char *output_table)
 {
    POOL_MEM query;
@@ -924,7 +1182,7 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
    /* Add a directory content */
    while (get_next_id_from_list(&dirid, &id) == 1) {
       Mmsg(tmp, "SELECT Path FROM Path WHERE PathId=%lld", id);
-      
+
       if (!db_sql_query(db, tmp.c_str(), get_path_handler, (void *)&tmp2)) {
          Dmsg0(dbglevel, "Can't search for path\n");
          /* print error */
@@ -940,10 +1198,10 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
       char *p = tmp.c_str();
       for (char *s = tmp2.c_str(); *s ; s++) {
          if (*s == '%' || *s == '_' || *s == '\\') {
-            *p = '\\'; 
+            *p = '\\';
             p++;
          }
-         *p = *s; 
+         *p = *s;
          p++;
       }
       *p = '\0';
@@ -960,8 +1218,8 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
       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) ", 
-           tmp2.c_str(), jobids); 
+                  "WHERE Path.Path LIKE '%s' AND File.JobId IN (%s) ",
+           tmp2.c_str(), jobids);
       query.strcat(tmp.c_str());
       init = true;
 
@@ -974,8 +1232,8 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
                         "JOIN File USING (FileId) "
                         "JOIN Job ON (BaseFiles.JobId = Job.JobId) "
                         "JOIN Path USING (PathId) "
-                  "WHERE Path.Path LIKE '%s' AND BaseFiles.JobId IN (%s) ", 
-           tmp2.c_str(), jobids); 
+                  "WHERE Path.Path LIKE '%s' AND BaseFiles.JobId IN (%s) ",
+           tmp2.c_str(), jobids);
       query.strcat(tmp.c_str());
    }
 
@@ -997,7 +1255,7 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
          }
          Mmsg(tmp,   "SELECT Job.JobId, JobTDate, FileIndex, FilenameId, "
                             "PathId, FileId "
-                       "FROM File JOIN Job USING (JobId) WHERE JobId = %lld " 
+                       "FROM File JOIN Job USING (JobId) WHERE JobId = %lld "
                         "AND FileIndex IN (%lld", jobid, id);
          prev_jobid = jobid;
 
@@ -1020,7 +1278,7 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
       goto bail_out;
    }
 
-   Mmsg(query, sql_bvfs_select[db_get_type_index(db)], 
+   Mmsg(query, sql_bvfs_select[db_get_type_index(db)],
         output_table, output_table, output_table);
 
    /* TODO: handle jobid filter */
@@ -1032,7 +1290,7 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
 
    /* MySQL need it */
    if (db_get_type_index(db) == SQL_TYPE_MYSQL) {
-      Mmsg(query, "CREATE INDEX idx_%s ON %s (JobId)", 
+      Mmsg(query, "CREATE INDEX idx_%s ON %s (JobId)",
            output_table, output_table);
       Dmsg1(dbglevel_sql, "q=%s\n", query.c_str());
       if (!db_sql_query(db, query.c_str(), NULL, NULL)) {
@@ -1050,4 +1308,4 @@ bail_out:
    return ret;
 }
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/bvfs.h b/src/cats/bvfs.h
index 5be7d90..d5532f4 100644
--- a/src/cats/bvfs.h
+++ b/src/cats/bvfs.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 
@@ -31,7 +19,7 @@
 #define __BVFS_H_ 1
 
 
-/* 
+/*
  * This object can be use to browse the catalog
  *
  * Bvfs fs;
@@ -46,12 +34,13 @@
 typedef enum {
    BVFS_FILE_RECORD  = 'F',
    BVFS_DIR_RECORD   = 'D',
-   BVFS_FILE_VERSION = 'V'
+   BVFS_FILE_VERSION = 'V',
+   BVFS_VOLUME_LIST  = 'L'
 } bvfs_handler_type;
 
 typedef enum {
-   BVFS_Type    = 0,            /* Could be D, F, V */
-   BVFS_PathId  = 1, 
+   BVFS_Type    = 0,            /* Could be D, F, V, L */
+   BVFS_PathId  = 1,
    BVFS_FilenameId = 2,
 
    BVFS_Name    = 3,
@@ -75,6 +64,10 @@ public:
    void set_jobid(JobId_t id);
    void set_jobids(char *ids);
 
+   char *get_jobids() {
+      return jobids;
+   }
+
    void set_limit(uint32_t max) {
       limit = max;
    }
@@ -89,6 +82,12 @@ public:
       db_escape_string(jcr, db, pattern, p, len);
    }
 
+   void set_filename(char *p) {
+      uint32_t len = strlen(p);
+      filename = check_pool_memory_size(filename, len*2+1);
+      db_escape_string(jcr, db, filename, p, len);
+   }
+
    /* Get the root point */
    DBId_t get_root();
 
@@ -100,7 +99,7 @@ public:
       pwd_id = pathid;
    }
 
-   /* 
+   /*
     * Returns true if the directory exists
     */
    bool ch_dir(const char *path);
@@ -112,6 +111,9 @@ public:
 
    void update_cache();
 
+   /* bfileview */
+   void fv_update_cache();
+
    void set_see_all_versions(bool val) {
       see_all_versions = val;
    }
@@ -128,6 +130,32 @@ public:
       }
    }
 
+   char *escape_list(alist *list);
+
+   bool copy_acl(alist *list) {
+      if (!list ||
+          (list->size() > 0 &&
+           (strcasecmp((char *)list->get(0), "*all*") == 0)))
+      {
+         return false;
+      }
+      return true;
+   }
+
+   /* Keep a pointer to various ACLs */
+   void set_job_acl(alist *lst) {
+      job_acl = copy_acl(lst)?lst:NULL;
+   }
+   void set_fileset_acl(alist *lst) {
+      fileset_acl = copy_acl(lst)?lst:NULL;
+   }
+   void set_client_acl(alist *lst) {
+      client_acl = copy_acl(lst)?lst:NULL;
+   }
+   void set_pool_acl(alist *lst) {
+      pool_acl = copy_acl(lst)?lst:NULL;
+   }
+
    void set_handler(DB_RESULT_HANDLER *h, void *ctx) {
       list_entries = h;
       user_data = ctx;
@@ -157,15 +185,20 @@ public:
    void clear_cache();
 
    /* Compute restore list */
-   bool compute_restore_list(char *fileid, char *dirid, char *hardlink, 
+   bool compute_restore_list(char *fileid, char *dirid, char *hardlink,
                              char *output_table);
-   
+
    /* Drop previous restore list */
    bool drop_restore_list(char *output_table);
 
    /* for internal use */
    int _handle_path(void *, int, char **);
-   
+
+   /* Handle Delta parts if any */
+
+   /* Get a list of volumes */
+   void get_volumes(DBId_t fileid);
+
 private:
    Bvfs(const Bvfs &);               /* prohibit pass by value */
    Bvfs & operator = (const Bvfs &); /* prohibit class assignment */
@@ -174,20 +207,40 @@ private:
    B_DB *db;
    POOLMEM *jobids;
    char *username;              /* Used with Bweb */
+
+   POOLMEM *prev_dir; /* ls_dirs query returns all versions, take the 1st one */
+   POOLMEM *pattern;
+   POOLMEM *filename;
+
+   POOLMEM *tmp;
+   POOLMEM *escaped_list;
+
+   /* Pointer to Console ACL */
+   alist *job_acl;
+   alist *client_acl;
+   alist *fileset_acl;
+   alist *pool_acl;
+
+   ATTR *attr;        /* Can be use by handler to call decode_stat() */
+
    uint32_t limit;
    uint32_t offset;
    uint32_t nb_record;          /* number of records of the last query */
-   POOLMEM *pattern;
    DBId_t pwd_id;               /* Current pathid */
    DBId_t dir_filenameid;       /* special FilenameId where Name='' */
-   POOLMEM *prev_dir; /* ls_dirs query returns all versions, take the 1st one */
-   ATTR *attr;        /* Can be use by handler to call decode_stat() */
 
    bool see_all_versions;
    bool see_copies;
 
    DBId_t get_dir_filenameid();
 
+   /* bfileview */
+   void fv_get_big_files(int64_t pathid, int64_t min_size, int32_t limit);
+   void fv_update_size_and_count(int64_t pathid, int64_t size, int64_t count);
+   void fv_compute_size_and_count(int64_t pathid, int64_t *size, int64_t *count);
+   void fv_get_current_size_and_count(int64_t pathid, int64_t *size, int64_t *count);
+   void fv_get_size_and_count(int64_t pathid, int64_t *size, int64_t *count);
+
    DB_RESULT_HANDLER *list_entries;
    void *user_data;
 };
@@ -195,11 +248,13 @@ private:
 #define bvfs_is_dir(row) ((row)[BVFS_Type][0] == BVFS_DIR_RECORD)
 #define bvfs_is_file(row) ((row)[BVFS_Type][0] == BVFS_FILE_RECORD)
 #define bvfs_is_version(row) ((row)[BVFS_Type][0] == BVFS_FILE_VERSION)
+#define bvfs_is_volume_list(row) ((row)[BVFS_Type][0] == BVFS_VOLUME_LIST)
 
-
+void bvfs_update_fv_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);
+extern const char *bvfs_select_delta_version_with_basejob_and_delta[];
 
 /* Return the basename of the with the trailing /  (update the given string)
  * TODO: see in the rest of bacula if we don't have
diff --git a/src/cats/cats.c b/src/cats/cats.c
index 4aef720..c3c26df 100644
--- a/src/cats/cats.c
+++ b/src/cats/cats.c
@@ -1,30 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2011-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2011-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Generic catalog class methods.
@@ -34,7 +21,7 @@
 
 #include "bacula.h"
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -87,21 +74,6 @@ const char *B_DB::db_get_type(void)
       return "PostgreSQL";
    case SQL_INTERFACE_TYPE_SQLITE3:
       return "SQLite3";
-   case SQL_INTERFACE_TYPE_INGRES:
-      return "Ingres";
-   case SQL_INTERFACE_TYPE_DBI:
-      switch (m_db_type) {
-      case SQL_TYPE_MYSQL:
-         return "DBI:MySQL";
-      case SQL_TYPE_POSTGRESQL:
-         return "DBI:PostgreSQL";
-      case SQL_TYPE_SQLITE3:
-         return "DBI:SQLite3";
-      case SQL_TYPE_INGRES:
-         return "DBI:Ingres";
-      default:
-         return "DBI:Unknown";
-      }
    default:
       return "Unknown";
    }
@@ -159,4 +131,4 @@ void B_DB::print_lock_info(FILE *fp)
    }
 }
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/cats.h b/src/cats/cats.h
index b61d748..cc2d8d8 100644
--- a/src/cats/cats.h
+++ b/src/cats/cats.h
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Catalog header file
  *
- * by Kern E. Sibbald
+ *   Written by Kern E. Sibbald
  *
  * Anyone who accesses the database will need to include
  * this file.
@@ -390,7 +378,7 @@ private:
 };
 
 /* Call back context for getting a list of comma separated strings from the
- * database 
+ * database
  */
 class db_list_ctx {
 public:
@@ -425,15 +413,12 @@ typedef enum {
    SQL_INTERFACE_TYPE_MYSQL      = 0,
    SQL_INTERFACE_TYPE_POSTGRESQL = 1,
    SQL_INTERFACE_TYPE_SQLITE3    = 2,
-   SQL_INTERFACE_TYPE_INGRES     = 3,
-   SQL_INTERFACE_TYPE_DBI        = 4
 } SQL_INTERFACETYPE;
 
 typedef enum {
    SQL_TYPE_MYSQL      = 0,
    SQL_TYPE_POSTGRESQL = 1,
    SQL_TYPE_SQLITE3    = 2,
-   SQL_TYPE_INGRES     = 3,
    SQL_TYPE_UNKNOWN    = 99
 } SQL_DBTYPE;
 
@@ -514,7 +499,7 @@ public:
    virtual bool db_sql_query(const char *query, DB_RESULT_HANDLER *result_handler, void *ctx) = 0;
 
    /* By default, we use db_sql_query */
-   virtual bool db_big_sql_query(const char *query, 
+   virtual bool db_big_sql_query(const char *query,
                                  DB_RESULT_HANDLER *result_handler, void *ctx) {
       return db_sql_query(query, result_handler, ctx);
    };
diff --git a/src/cats/cats_dummy.c b/src/cats/cats_dummy.c
index 0e17806..99959be 100644
--- a/src/cats/cats_dummy.c
+++ b/src/cats/cats_dummy.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2010-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2010-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Dummy bacula backend function replaced with the correct one at install time.
@@ -33,11 +21,9 @@
 #include "cats.h"
 
 B_DB *db_init_database(JCR *jcr, const char *db_driver, const char *db_name, const char *db_user,
-                       const char *db_password, const char *db_address, int db_port, const char *db_socket,
-                       bool mult_db_connections, bool disable_batch_insert)
+        const char *db_password, const char *db_address, int db_port, const char *db_socket,
+        bool mult_db_connections, bool disable_batch_insert)
 {
-   Jmsg(jcr, M_FATAL, 0, _("Please replace this dummy libbaccats library with a proper one.\n"));
-
+   Jmsg(jcr, M_FATAL, 0, _("Please replace this null libbaccats library with a proper one.\n"));
    return NULL;
 }
-
diff --git a/src/cats/create_bacula_database.in b/src/cats/create_bacula_database.in
index d6b9dde..cf00c99 100644
--- a/src/cats/create_bacula_database.in
+++ b/src/cats/create_bacula_database.in
@@ -3,6 +3,21 @@
 # This routine creates the Bacula database
 # using PostgreSQL, Ingres, MySQL, or SQLite.
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 default_db_type=@DEFAULT_DB_TYPE@
 
diff --git a/src/cats/create_ingres_database.in b/src/cats/create_ingres_database.in
deleted file mode 100755
index 42ae2d9..0000000
--- a/src/cats/create_ingres_database.in
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-#
-# shell script to create Bacula database(s)
-#
-
-bindir=@INGRES_BINDIR@
-PATH="$bindir:$PATH"
-db_name=${db_name:- at db_name@}
-db_user=${db_user:- at db_user@}
-
-# use SQL_ASCII to be able to put any filename into
-#  the database even those created with unusual character sets
-ENCODING="ENCODING 'SQL_ASCII'"
- 
-# use UTF8 if you are using standard Unix/Linux LANG specifications
-#  that use UTF8 -- this is normally the default and *should* be
-#  your standard.  Bacula works correctly *only* with correct UTF8.
-#
-#  Note, with this encoding, if you have any "weird" filenames on
-#  your system (names generated from Win32 or Mac OS), you may
-#  get Bacula batch insert failures.
-#
-#ENCODING="ENCODING 'UTF8'"
-     
-if createdb -u${db_user} $* ${db_name}
-then
-   echo "Creation of ${db_name} database succeeded."
-else
-   echo "Creation of ${db_name} database failed."
-fi
-
-exit 0
diff --git a/src/cats/create_mysql_database.in b/src/cats/create_mysql_database.in
index 1c164cc..855bed3 100644
--- a/src/cats/create_mysql_database.in
+++ b/src/cats/create_mysql_database.in
@@ -2,6 +2,21 @@
 #
 # shell script to create Bacula database(s)
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 bindir=@MYSQL_BINDIR@
 db_name=@db_name@
diff --git a/src/cats/create_postgresql_database.in b/src/cats/create_postgresql_database.in
index ddd6c90..c9e7f0c 100644
--- a/src/cats/create_postgresql_database.in
+++ b/src/cats/create_postgresql_database.in
@@ -2,6 +2,21 @@
 #
 # shell script to create Bacula database(s)
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 PATH="@POSTGRESQL_BINDIR@:$PATH"
 db_name=${db_name:- at db_name@}
@@ -52,7 +67,7 @@ else
    echo "!!!! Creation of ${db_name} database failed. !!!!"
    echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
 fi
-if psql -l ${dbname} | grep " ${db_name}.*SQL_ASCII" >/dev/null; then 
+if psql -l ${dbname} $* | grep " ${db_name}.*SQL_ASCII" >/dev/null; then 
    echo "Database encoding OK"
 else
    echo " "
diff --git a/src/cats/create_sqlite3_database.in b/src/cats/create_sqlite3_database.in
index 30bc0bd..510bc87 100644
--- a/src/cats/create_sqlite3_database.in
+++ b/src/cats/create_sqlite3_database.in
@@ -1,6 +1,21 @@
 #!/bin/sh
 #
 # shell script to create Bacula SQLite tables
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 bindir=@SQLITE_BINDIR@
 PATH=$bindir:$PATH
diff --git a/src/cats/dbi.c b/src/cats/dbi.c
deleted file mode 100644
index f48ea0a..0000000
--- a/src/cats/dbi.c
+++ /dev/null
@@ -1,1490 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2003-2011 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.
-*/
-/*
- * Bacula Catalog Database routines specific to DBI
- *   These are DBI specific routines
- *
- *    João Henrique Freitas, December 2007
- *    based upon work done by Dan Langille, December 2003 and
- *    by Kern Sibbald, March 2000
- *
- * Major rewrite by Marco van Wieringen, January 2010 for catalog refactoring.
- */
-/*
- * This code only compiles against a recent version of libdbi. The current
- * release found on the libdbi website (0.8.3) won't work for this code.
- *
- * You find the libdbi library on http://sourceforge.net/projects/libdbi
- *
- * A fairly recent version of libdbi from CVS works, so either make sure
- * your distribution has a fairly recent version of libdbi installed or
- * clone the CVS repositories from sourceforge and compile that code and
- * install it.
- *
- * You need:
- * cvs co :pserver:anonymous at libdbi.cvs.sourceforge.net:/cvsroot/libdbi
- * cvs co :pserver:anonymous at libdbi-drivers.cvs.sourceforge.net:/cvsroot/libdbi-drivers
- */
-
-#include "bacula.h"
-
-#ifdef HAVE_DBI
-
-#include "cats.h"
-#include "bdb_priv.h"
-#include <dbi/dbi.h>
-#include <dbi/dbi-dev.h>
-#include <bdb_dbi.h>
-
-/* -----------------------------------------------------------------------
- *
- *   DBI dependent defines and subroutines
- *
- * -----------------------------------------------------------------------
- */
-
-/*
- * List of open databases
- */
-static dlist *db_list = NULL;
-
-/*
- * Control allocated fields by dbi_getvalue
- */
-static dlist *dbi_getvalue_list = NULL;
-
-static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-
-typedef int (*custom_function_insert_t)(void*, const char*, int);
-typedef char* (*custom_function_error_t)(void*);
-typedef int (*custom_function_end_t)(void*, const char*);
-
-B_DB_DBI::B_DB_DBI(JCR *jcr,
-                   const char *db_driver,
-                   const char *db_name,
-                   const char *db_user,
-                   const char *db_password,
-                   const char *db_address,
-                   int db_port,
-                   const char *db_socket,
-                   bool mult_db_connections,
-                   bool disable_batch_insert)
-{
-   char *p;
-   char new_db_driver[10];
-   char db_driverdir[256];
-   DBI_FIELD_GET *field;
-
-   p = (char *)(db_driver + 4);
-   if (strcasecmp(p, "mysql") == 0) {
-      m_db_type = SQL_TYPE_MYSQL;
-      bstrncpy(new_db_driver, "mysql", sizeof(new_db_driver));
-   } else if (strcasecmp(p, "postgresql") == 0) {
-      m_db_type = SQL_TYPE_POSTGRESQL;
-      bstrncpy(new_db_driver, "pgsql", sizeof(new_db_driver));
-   } else if (strcasecmp(p, "sqlite3") == 0) {
-      m_db_type = SQL_TYPE_SQLITE3;
-      bstrncpy(new_db_driver, "sqlite3", sizeof(new_db_driver));
-   } else if (strcasecmp(p, "ingres") == 0) {
-      m_db_type = SQL_TYPE_INGRES;
-      bstrncpy(new_db_driver, "ingres", sizeof(new_db_driver));
-   } else {
-      Jmsg(jcr, M_ABORT, 0, _("Unknown database type: %s\n"), p);
-      return;
-   }
-
-   /*
-    * Set db_driverdir whereis is the libdbi drivers
-    */
-   bstrncpy(db_driverdir, DBI_DRIVER_DIR, 255);
-
-   /*
-    * Initialize the parent class members.
-    */
-   m_db_interface_type = SQL_INTERFACE_TYPE_DBI;
-   m_db_name = bstrdup(db_name);
-   m_db_user = bstrdup(db_user);
-   if (db_password) {
-      m_db_password = bstrdup(db_password);
-   }
-   if (db_address) {
-      m_db_address = bstrdup(db_address);
-   }
-   if (db_socket) {
-      m_db_socket = bstrdup(db_socket);
-   }
-   if (db_driverdir) {
-      m_db_driverdir = bstrdup(db_driverdir);
-   }
-   m_db_driver = bstrdup(new_db_driver);
-   m_db_port = db_port;
-   if (disable_batch_insert) {
-      m_disabled_batch_insert = true;
-      m_have_batch_insert = false;
-   } else {
-      m_disabled_batch_insert = false;
-#if defined(USE_BATCH_FILE_INSERT)
-#ifdef HAVE_DBI_BATCH_FILE_INSERT
-      m_have_batch_insert = true;
-#else
-      m_have_batch_insert = false;
-#endif /* HAVE_DBI_BATCH_FILE_INSERT */
-#else
-      m_have_batch_insert = false;
-#endif /* USE_BATCH_FILE_INSERT */
-   }
-   errmsg = get_pool_memory(PM_EMSG); /* get error message buffer */
-   *errmsg = 0;
-   cmd = get_pool_memory(PM_EMSG); /* get command buffer */
-   cached_path = get_pool_memory(PM_FNAME);
-   cached_path_id = 0;
-   m_ref_count = 1;
-   fname = get_pool_memory(PM_FNAME);
-   path = get_pool_memory(PM_FNAME);
-   esc_name = get_pool_memory(PM_FNAME);
-   esc_path = get_pool_memory(PM_FNAME);
-   esc_obj = get_pool_memory(PM_FNAME);
-   m_allow_transactions = mult_db_connections;
-
-   /* At this time, when mult_db_connections == true, this is for 
-    * specific console command such as bvfs or batch mode, and we don't
-    * want to share a batch mode or bvfs. In the future, we can change
-    * the creation function to add this parameter.
-    */
-   m_dedicated = mult_db_connections; 
-
-   /*
-    * Initialize the private members.
-    */
-   m_db_handle = NULL;
-   m_result = NULL;
-   m_field_get = NULL;
-
-   /*
-    * Put the db in the list.
-    */
-   if (db_list == NULL) {
-      db_list = New(dlist(this, &this->m_link));
-      dbi_getvalue_list = New(dlist(field, &field->link));
-   }
-   db_list->append(this);
-}
-
-B_DB_DBI::~B_DB_DBI()
-{
-}
-
-/*
- * Now actually open the database.  This can generate errors,
- *   which are returned in the errmsg
- *
- * DO NOT close the database or delete mdb here  !!!!
- */
-bool B_DB_DBI::db_open_database(JCR *jcr)
-{
-   bool retval = false;
-   int errstat;
-   int dbstat;
-   uint8_t len;
-   const char *dbi_errmsg;
-   char buf[10], *port;
-   int numdrivers;
-   char *new_db_name = NULL;
-   char *new_db_dir = NULL;
-
-   P(mutex);
-   if (m_connected) {
-      retval = true;
-      goto bail_out;
-   }
-
-   if ((errstat=rwl_init(&m_lock)) != 0) {
-      berrno be;
-      Mmsg1(&errmsg, _("Unable to initialize DB lock. ERR=%s\n"),
-            be.bstrerror(errstat));
-      goto bail_out;
-   }
-
-   if (m_db_port) {
-      bsnprintf(buf, sizeof(buf), "%d", m_db_port);
-      port = buf;
-   } else {
-      port = NULL;
-   }
-
-   numdrivers = dbi_initialize_r(m_db_driverdir, &(m_instance));
-   if (numdrivers < 0) {
-      Mmsg2(&errmsg, _("Unable to locate the DBD drivers to DBI interface in: \n"
-                               "db_driverdir=%s. It is probaly not found any drivers\n"),
-                               m_db_driverdir,numdrivers);
-      goto bail_out;
-   }
-   m_db_handle = (void **)dbi_conn_new_r(m_db_driver, m_instance);
-   /*
-    * Can be many types of databases
-    */
-   switch (m_db_type) {
-   case SQL_TYPE_MYSQL:
-      dbi_conn_set_option(m_db_handle, "host", m_db_address);      /* default = localhost */
-      dbi_conn_set_option(m_db_handle, "port", port);              /* default port */
-      dbi_conn_set_option(m_db_handle, "username", m_db_user);     /* login name */
-      dbi_conn_set_option(m_db_handle, "password", m_db_password); /* password */
-      dbi_conn_set_option(m_db_handle, "dbname", m_db_name);       /* database name */
-      break;
-   case SQL_TYPE_POSTGRESQL:
-      dbi_conn_set_option(m_db_handle, "host", m_db_address);
-      dbi_conn_set_option(m_db_handle, "port", port);
-      dbi_conn_set_option(m_db_handle, "username", m_db_user);
-      dbi_conn_set_option(m_db_handle, "password", m_db_password);
-      dbi_conn_set_option(m_db_handle, "dbname", m_db_name);
-      break;
-   case SQL_TYPE_SQLITE3:
-      len = strlen(working_directory) + 5;
-      new_db_dir = (char *)malloc(len);
-      strcpy(new_db_dir, working_directory);
-      strcat(new_db_dir, "/");
-      len = strlen(m_db_name) + 5;
-      new_db_name = (char *)malloc(len);
-      strcpy(new_db_name, m_db_name);
-      strcat(new_db_name, ".db");
-      dbi_conn_set_option(m_db_handle, "sqlite3_dbdir", new_db_dir);
-      dbi_conn_set_option(m_db_handle, "dbname", new_db_name);
-      Dmsg2(500, "SQLITE: %s %s\n", new_db_dir, new_db_name);
-      free(new_db_dir);
-      free(new_db_name);
-      break;
-   }
-
-   /*
-    * If connection fails, try at 5 sec intervals for 30 seconds.
-    */
-   for (int retry=0; retry < 6; retry++) {
-      dbstat = dbi_conn_connect(m_db_handle);
-      if (dbstat == 0) {
-         break;
-      }
-
-      dbi_conn_error(m_db_handle, &dbi_errmsg);
-      Dmsg1(50, "dbi error: %s\n", dbi_errmsg);
-
-      bmicrosleep(5, 0);
-   }
-
-   if (dbstat != 0 ) {
-      Mmsg3(&errmsg, _("Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
-         "Possible causes: SQL server not running; password incorrect; max_connections exceeded.\n"),
-         m_db_driver, m_db_name, m_db_user);
-      goto bail_out;
-   }
-
-   Dmsg0(50, "dbi_real_connect done\n");
-   Dmsg3(50, "db_user=%s db_name=%s db_password=%s\n",
-         m_db_user, m_db_name,
-        (m_db_password == NULL) ? "(NULL)" : m_db_password);
-
-   m_connected = true;
-
-   if (!check_tables_version(jcr, this)) {
-      goto bail_out;
-   }
-
-   switch (m_db_type) {
-   case SQL_TYPE_MYSQL:
-      /*
-       * Set connection timeout to 8 days specialy for batch mode
-       */
-      sql_query("SET wait_timeout=691200");
-      sql_query("SET interactive_timeout=691200");
-      break;
-   case SQL_TYPE_POSTGRESQL:
-      /*
-       * Tell PostgreSQL we are using standard conforming strings
-       * and avoid warnings such as:
-       * WARNING:  nonstandard use of \\ in a string literal
-       */
-      sql_query("SET datestyle TO 'ISO, YMD'");
-      sql_query("SET standard_conforming_strings=on");
-      break;
-   }
-
-   retval = true;
-
-bail_out:
-   V(mutex);
-   return retval;
-}
-
-void B_DB_DBI::db_close_database(JCR *jcr)
-{
-   if (m_connected) {
-      db_end_transaction(jcr);
-   }
-   P(mutex);
-   m_ref_count--;
-   if (m_ref_count == 0) {
-      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;
-      }
-      if (rwl_is_init(&m_lock)) {
-         rwl_destroy(&m_lock);
-      }
-      free_pool_memory(errmsg);
-      free_pool_memory(cmd);
-      free_pool_memory(cached_path);
-      free_pool_memory(fname);
-      free_pool_memory(path);
-      free_pool_memory(esc_name);
-      free_pool_memory(esc_path);
-      free_pool_memory(esc_obj);
-      if (m_db_driver) {
-         free(m_db_driver);
-      }
-      if (m_db_name) {
-         free(m_db_name);
-      }
-      if (m_db_user) {
-         free(m_db_user);
-      }
-      if (m_db_password) {
-         free(m_db_password);
-      }
-      if (m_db_address) {
-         free(m_db_address);
-      }
-      if (m_db_socket) {
-         free(m_db_socket);
-      }
-      if (m_db_driverdir) {
-         free(m_db_driverdir);
-      }
-      delete this;
-      if (db_list->size() == 0) {
-         delete db_list;
-         db_list = NULL;
-      }
-   }
-   V(mutex);
-}
-
-void B_DB_DBI::db_thread_cleanup(void)
-{
-}
-
-/*
- * Escape strings so that DBI is happy
- *
- *   NOTE! len is the length of the old string. Your new
- *         string must be long enough (max 2*old+1) to hold
- *         the escaped output.
- *
- * dbi_conn_quote_string_copy receives a pointer to pointer.
- * We need copy the value of pointer to snew because libdbi change the
- * pointer
- */
-void B_DB_DBI::db_escape_string(JCR *jcr, char *snew, char *old, int len)
-{
-   char *inew;
-   char *pnew;
-
-   if (len == 0) {
-      snew[0] = 0;
-   } else {
-      /*
-       * Correct the size of old basead in len and copy new string to inew
-       */
-      inew = (char *)malloc(sizeof(char) * len + 1);
-      bstrncpy(inew,old,len + 1);
-      /*
-       * Escape the correct size of old
-       */
-      dbi_conn_escape_string_copy(m_db_handle, inew, &pnew);
-      free(inew);
-      /*
-       * Copy the escaped string to snew
-       */
-      bstrncpy(snew, pnew, 2 * len + 1);
-   }
-
-   Dmsg2(500, "dbi_conn_escape_string_copy %p %s\n",snew,snew);
-}
-
-/*
- * Escape binary object so that DBI is happy
- * Memory is stored in B_DB struct, no need to free it
- */
-char *B_DB_DBI::db_escape_object(JCR *jcr, char *old, int len)
-{
-   size_t new_len;
-   char *pnew;
-
-   if (len == 0) {
-      esc_obj[0] = 0;
-   } else {
-      new_len = dbi_conn_escape_string_copy(m_db_handle, esc_obj, &pnew);
-      esc_obj = check_pool_memory_size(esc_obj, new_len+1);
-      memcpy(esc_obj, pnew, new_len);
-   }
-
-   return esc_obj;
-}
-
-/*
- * Unescape binary object so that DBI is happy
- */
-void B_DB_DBI::db_unescape_object(JCR *jcr, char *from, int32_t expected_len,
-                                  POOLMEM **dest, int32_t *dest_len)
-{
-   if (!from) {
-      *dest[0] = 0;
-      *dest_len = 0;
-      return;
-   }
-   *dest = check_pool_memory_size(*dest, expected_len+1);
-   *dest_len = expected_len;
-   memcpy(*dest, from, expected_len);
-   (*dest)[expected_len]=0;
-}
-
-/*
- * Start a transaction. This groups inserts and makes things
- * much more efficient. Usually started when inserting
- * file attributes.
- */
-void B_DB_DBI::db_start_transaction(JCR *jcr)
-{
-   if (!jcr->attr) {
-      jcr->attr = get_pool_memory(PM_FNAME);
-   }
-   if (!jcr->ar) {
-      jcr->ar = (ATTR_DBR *)malloc(sizeof(ATTR_DBR));
-   }
-
-   switch (m_db_type) {
-   case SQL_TYPE_SQLITE3:
-      if (!m_allow_transactions) {
-         return;
-      }
-
-      db_lock(this);
-      /*
-       * Allow only 10,000 changes per transaction
-       */
-      if (m_transaction && changes > 10000) {
-         db_end_transaction(jcr);
-      }
-      if (!m_transaction) {
-         sql_query("BEGIN");  /* begin transaction */
-         Dmsg0(400, "Start SQLite transaction\n");
-         m_transaction = true;
-      }
-      db_unlock(this);
-      break;
-   case SQL_TYPE_POSTGRESQL:
-      /*
-       * This is turned off because transactions break
-       * if multiple simultaneous jobs are run.
-       */
-      if (!m_allow_transactions) {
-         return;
-      }
-
-      db_lock(this);
-      /*
-       * Allow only 25,000 changes per transaction
-       */
-      if (m_transaction && changes > 25000) {
-         db_end_transaction(jcr);
-      }
-      if (!m_transaction) {
-         sql_query("BEGIN");  /* begin transaction */
-         Dmsg0(400, "Start PosgreSQL transaction\n");
-         m_transaction = true;
-      }
-      db_unlock(this);
-      break;
-   case SQL_TYPE_INGRES:
-      if (!m_allow_transactions) {
-         return;
-      }
-
-      db_lock(this);
-      /*
-       * Allow only 25,000 changes per transaction
-       */
-      if (m_transaction && changes > 25000) {
-         db_end_transaction(jcr);
-      }
-      if (!m_transaction) {
-         sql_query("BEGIN");  /* begin transaction */
-         Dmsg0(400, "Start Ingres transaction\n");
-         m_transaction = true;
-      }
-      db_unlock(this);
-      break;
-   default:
-      break;
-   }
-}
-
-void B_DB_DBI::db_end_transaction(JCR *jcr)
-{
-   if (jcr && jcr->cached_attribute) {
-      Dmsg0(400, "Flush last cached attribute.\n");
-      if (!db_create_attributes_record(jcr, this, jcr->ar)) {
-         Jmsg1(jcr, M_FATAL, 0, _("Attribute create error. %s"), db_strerror(jcr->db));
-      }
-      jcr->cached_attribute = false;
-   }
-
-   switch (m_db_type) {
-   case SQL_TYPE_SQLITE3:
-      if (!m_allow_transactions) {
-         return;
-      }
-
-      db_lock(this);
-      if (m_transaction) {
-         sql_query("COMMIT"); /* end transaction */
-         m_transaction = false;
-         Dmsg1(400, "End SQLite transaction changes=%d\n", changes);
-      }
-      changes = 0;
-      db_unlock(this);
-      break;
-   case SQL_TYPE_POSTGRESQL:
-      if (!m_allow_transactions) {
-         return;
-      }
-
-      db_lock(this);
-      if (m_transaction) {
-         sql_query("COMMIT"); /* end transaction */
-         m_transaction = false;
-         Dmsg1(400, "End PostgreSQL transaction changes=%d\n", changes);
-      }
-      changes = 0;
-      db_unlock(this);
-      break;
-   case SQL_TYPE_INGRES:
-      if (!m_allow_transactions) {
-         return;
-      }
-
-      db_lock(this);
-      if (m_transaction) {
-         sql_query("COMMIT"); /* end transaction */
-         m_transaction = false;
-         Dmsg1(400, "End Ingres transaction changes=%d\n", changes);
-      }
-      changes = 0;
-      db_unlock(this);
-      break;
-   default:
-      break;
-   }
-}
-
-/*
- * Submit a general SQL command (cmd), and for each row returned,
- * the result_handler is called with the ctx.
- */
-bool B_DB_DBI::db_sql_query(const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
-{
-   bool retval = true;
-   SQL_ROW row;
-
-   Dmsg1(500, "db_sql_query starts with %s\n", query);
-
-   db_lock(this);
-   if (!sql_query(query, QF_STORE_RESULT)) {
-      Mmsg(errmsg, _("Query failed: %s: ERR=%s\n"), query, sql_strerror());
-      Dmsg0(500, "db_sql_query failed\n");
-      retval = false;
-      goto bail_out;
-   }
-
-   Dmsg0(500, "db_sql_query succeeded. checking handler\n");
-
-   if (result_handler != NULL) {
-      Dmsg0(500, "db_sql_query invoking handler\n");
-      while ((row = sql_fetch_row()) != NULL) {
-         Dmsg0(500, "db_sql_query sql_fetch_row worked\n");
-         if (result_handler(ctx, m_num_fields, row))
-            break;
-      }
-      sql_free_result();
-   }
-
-   Dmsg0(500, "db_sql_query finished\n");
-
-bail_out:
-   db_unlock(this);
-   return retval;
-}
-
-/*
- * Note, if this routine returns 1 (failure), Bacula expects
- *  that no result has been stored.
- *
- *  Returns:  true on success
- *            false on failure
- */
-bool B_DB_DBI::sql_query(const char *query, int flags)
-{
-   bool retval = false;
-   const char *dbi_errmsg;
-
-   Dmsg1(500, "sql_query starts with %s\n", query);
-
-   /*
-    * We are starting a new query.  reset everything.
-    */
-   m_num_rows     = -1;
-   m_row_number   = -1;
-   m_field_number = -1;
-
-   if (m_result) {
-      dbi_result_free(m_result);  /* hmm, someone forgot to free?? */
-      m_result = NULL;
-   }
-
-   m_result = (void **)dbi_conn_query(m_db_handle, query);
-
-   if (!m_result) {
-      Dmsg2(50, "Query failed: %s %p\n", query, m_result);
-      goto bail_out;
-   }
-
-   m_status = (dbi_error_flag) dbi_conn_error(m_db_handle, &dbi_errmsg);
-   if (m_status == DBI_ERROR_NONE) {
-      Dmsg1(500, "we have a result\n", query);
-
-      /*
-       * How many fields in the set?
-       * num_fields starting at 1
-       */
-      m_num_fields = dbi_result_get_numfields(m_result);
-      Dmsg1(500, "we have %d fields\n", m_num_fields);
-      /*
-       * If no result num_rows is 0
-       */
-      m_num_rows = dbi_result_get_numrows(m_result);
-      Dmsg1(500, "we have %d rows\n", m_num_rows);
-
-      m_status = (dbi_error_flag) 0;                  /* succeed */
-   } else {
-      Dmsg1(50, "Result status failed: %s\n", query);
-      goto bail_out;
-   }
-
-   Dmsg0(500, "sql_query finishing\n");
-   retval = true;
-   goto ok_out;
-
-bail_out:
-   m_status = (dbi_error_flag) dbi_conn_error(m_db_handle, &dbi_errmsg);
-   //dbi_conn_error(m_db_handle, &dbi_errmsg);
-   Dmsg4(500, "sql_query we failed dbi error: "
-                   "'%s' '%p' '%d' flag '%d''\n", dbi_errmsg, m_result, m_result, m_status);
-   dbi_result_free(m_result);
-   m_result = NULL;
-   m_status = (dbi_error_flag) 1;                   /* failed */
-
-ok_out:
-   return retval;
-}
-
-void B_DB_DBI::sql_free_result(void)
-{
-   DBI_FIELD_GET *f;
-
-   db_lock(this);
-   if (m_result) {
-      dbi_result_free(m_result);
-      m_result = NULL;
-   }
-   if (m_rows) {
-      free(m_rows);
-      m_rows = NULL;
-   }
-   /* 
-    * Now is time to free all value return by dbi_get_value
-    * this is necessary because libdbi don't free memory return by yours results
-    * and Bacula has some routine wich call more than once time sql_fetch_row
-    *
-    * Using a queue to store all pointer allocate is a good way to free all things
-    * when necessary
-    */
-   foreach_dlist(f, dbi_getvalue_list) {
-      free(f->value);
-      free(f);
-   }
-   if (m_fields) {
-      free(m_fields);
-      m_fields = NULL;
-   }
-   m_num_rows = m_num_fields = 0;
-   db_unlock(this);
-}
-
-/* dbi_getvalue
- * like PQgetvalue;
- * char *PQgetvalue(const PGresult *res,
- *                int row_number,
- *                int column_number);
- *
- * use dbi_result_seek_row to search in result set
- * use example to return only strings
- */
-static char *dbi_getvalue(dbi_result *result, int row_number, unsigned int column_number)
-{
-   char *buf = NULL;
-   const char *dbi_errmsg;
-   const char *field_name;
-   unsigned short dbitype;
-   size_t field_length;
-   int64_t num;
-
-   /* correct the index for dbi interface
-    * dbi index begins 1
-    * I prefer do not change others functions
-    */
-   Dmsg3(600, "dbi_getvalue pre-starting result '%p' row number '%d' column number '%d'\n",
-         result, row_number, column_number);
-
-   column_number++;
-
-   if(row_number == 0) {
-     row_number++;
-   }
-
-   Dmsg3(600, "dbi_getvalue starting result '%p' row number '%d' column number '%d'\n",
-                        result, row_number, column_number);
-
-   if(dbi_result_seek_row(result, row_number)) {
-
-      field_name = dbi_result_get_field_name(result, column_number);
-      field_length = dbi_result_get_field_length(result, field_name);
-      dbitype = dbi_result_get_field_type_idx(result,column_number);
-
-      Dmsg3(500, "dbi_getvalue start: type: '%d' "
-            "field_length bytes: '%d' fieldname: '%s'\n",
-            dbitype, field_length, field_name);
-
-      if(field_length) {
-         //buf = (char *)malloc(sizeof(char *) * field_length + 1);
-         buf = (char *)malloc(field_length + 1);
-      } else {
-         /*
-          * if numbers
-          */
-         buf = (char *)malloc(sizeof(char *) * 50);
-      }
-
-      switch (dbitype) {
-      case DBI_TYPE_INTEGER:
-         num = dbi_result_get_longlong(result, field_name);
-         edit_int64(num, buf);
-         field_length = strlen(buf);
-         break;
-      case DBI_TYPE_STRING:
-         if(field_length) {
-            field_length = bsnprintf(buf, field_length + 1, "%s",
-            dbi_result_get_string(result, field_name));
-         } else {
-            buf[0] = 0;
-         }
-         break;
-      case DBI_TYPE_BINARY:
-         /*
-          * dbi_result_get_binary return a NULL pointer if value is empty
-          * following, change this to what Bacula espected
-          */
-         if(field_length) {
-            field_length = bsnprintf(buf, field_length + 1, "%s",
-                  dbi_result_get_binary(result, field_name));
-         } else {
-            buf[0] = 0;
-         }
-         break;
-      case DBI_TYPE_DATETIME:
-         time_t last;
-         struct tm tm;
-
-         last = dbi_result_get_datetime(result, field_name);
-
-         if(last == -1) {
-                field_length = bsnprintf(buf, 20, "0000-00-00 00:00:00");
-         } else {
-            (void)localtime_r(&last, &tm);
-            field_length = bsnprintf(buf, 20, "%04d-%02d-%02d %02d:%02d:%02d",
-                  (tm.tm_year + 1900), (tm.tm_mon + 1), tm.tm_mday,
-                  tm.tm_hour, tm.tm_min, tm.tm_sec);
-         }
-         break;
-      }
-
-   } else {
-      dbi_conn_error(dbi_result_get_conn(result), &dbi_errmsg);
-      Dmsg1(500, "dbi_getvalue error: %s\n", dbi_errmsg);
-   }
-
-   Dmsg3(500, "dbi_getvalue finish buffer: '%p' num bytes: '%d' data: '%s'\n",
-      buf, field_length, buf);
-
-   /*
-    * Don't worry about this buf
-    */
-   return buf;
-}
-
-SQL_ROW B_DB_DBI::sql_fetch_row(void)
-{
-   int j;
-   SQL_ROW row = NULL; /* by default, return NULL */
-
-   Dmsg0(500, "sql_fetch_row start\n");
-   if ((!m_rows || m_rows_size < m_num_fields) && m_num_rows > 0) {
-      if (m_rows) {
-         Dmsg0(500, "sql_fetch_row freeing space\n");
-         Dmsg2(500, "sql_fetch_row row: '%p' num_fields: '%d'\n", m_rows, m_num_fields);
-         if (m_num_rows != 0) {
-            for (j = 0; j < m_num_fields; j++) {
-               Dmsg2(500, "sql_fetch_row row '%p' '%d'\n", m_rows[j], j);
-                  if (m_rows[j]) {
-                     free(m_rows[j]);
-                  }
-            }
-         }
-         free(m_rows);
-      }
-      Dmsg1(500, "we need space for %d bytes\n", sizeof(char *) * m_num_fields);
-      m_rows = (SQL_ROW)malloc(sizeof(char *) * m_num_fields);
-      m_rows_size = m_num_fields;
-
-      /*
-       * Now reset the row_number now that we have the space allocated
-       */
-      m_row_number = 1;
-   }
-
-   /*
-    * If still within the result set
-    */
-   if (m_row_number <= m_num_rows && m_row_number != DBI_ERROR_BADPTR) {
-      Dmsg2(500, "sql_fetch_row row number '%d' is acceptable (1..%d)\n", m_row_number, m_num_rows);
-      /*
-       * Get each value from this row
-       */
-      for (j = 0; j < m_num_fields; j++) {
-         m_rows[j] = dbi_getvalue(m_result, m_row_number, j);
-         /*
-          * Allocate space to queue row
-          */
-         m_field_get = (DBI_FIELD_GET *)malloc(sizeof(DBI_FIELD_GET));
-         /*
-          * Store the pointer in queue
-          */
-         m_field_get->value = m_rows[j];
-         Dmsg4(500, "sql_fetch_row row[%d] field: '%p' in queue: '%p' has value: '%s'\n",
-               j, m_rows[j], m_field_get->value, m_rows[j]);
-         /*
-          * Insert in queue to future free
-          */
-         dbi_getvalue_list->append(m_field_get);
-      }
-      /*
-       * Increment the row number for the next call
-       */
-      m_row_number++;
-
-      row = m_rows;
-   } else {
-      Dmsg2(500, "sql_fetch_row row number '%d' is NOT acceptable (1..%d)\n", m_row_number, m_num_rows);
-   }
-
-   Dmsg1(500, "sql_fetch_row finishes returning %p\n", row);
-
-   return row;
-}
-
-const char *B_DB_DBI::sql_strerror(void)
-{
-   const char *dbi_errmsg;
-
-   dbi_conn_error(m_db_handle, &dbi_errmsg);
-
-   return dbi_errmsg;
-}
-
-void B_DB_DBI::sql_data_seek(int row)
-{
-   /*
-    * Set the row number to be returned on the next call to sql_fetch_row
-    */
-   m_row_number = row;
-}
-
-int B_DB_DBI::sql_affected_rows(void)
-{
-#if 0
-   return dbi_result_get_numrows_affected(result);
-#else
-   return 1;
-#endif
-}
-
-uint64_t B_DB_DBI::sql_insert_autokey_record(const char *query, const char *table_name)
-{
-   char sequence[30];
-   uint64_t id = 0;
-
-   /*
-    * First execute the insert query and then retrieve the currval.
-    */
-   if (!sql_query(query)) {
-      return 0;
-   }
-
-   m_num_rows = sql_affected_rows();
-   if (m_num_rows != 1) {
-      return 0;
-   }
-
-   changes++;
-
-   /*
-    * Obtain the current value of the sequence that
-    * provides the serial value for primary key of the table.
-    *
-    * currval is local to our session.  It is not affected by
-    * other transactions.
-    *
-    * Determine the name of the sequence.
-    * PostgreSQL automatically creates a sequence using
-    * <table>_<column>_seq.
-    * At the time of writing, all tables used this format for
-    * for their primary key: <table>id
-    * Except for basefiles which has a primary key on baseid.
-    * Therefore, we need to special case that one table.
-    *
-    * everything else can use the PostgreSQL formula.
-    */
-   if (m_db_type == SQL_TYPE_POSTGRESQL) {
-      if (strcasecmp(table_name, "basefiles") == 0) {
-         bstrncpy(sequence, "basefiles_baseid", sizeof(sequence));
-      } else {
-         bstrncpy(sequence, table_name, sizeof(sequence));
-         bstrncat(sequence, "_", sizeof(sequence));
-         bstrncat(sequence, table_name, sizeof(sequence));
-         bstrncat(sequence, "id", sizeof(sequence));
-      }
-
-      bstrncat(sequence, "_seq", sizeof(sequence));
-      id = dbi_conn_sequence_last(m_db_handle, NT_(sequence));
-   } else {
-      id = dbi_conn_sequence_last(m_db_handle, NT_(table_name));
-   }
-
-   return id;
-}
-
-/* dbi_getisnull
- * like PQgetisnull
- * int PQgetisnull(const PGresult *res,
- *                 int row_number,
- *                 int column_number);
- *
- *  use dbi_result_seek_row to search in result set
- */
-static int dbi_getisnull(dbi_result *result, int row_number, int column_number) {
-   int i;
-
-   if (row_number == 0) {
-      row_number++;
-   }
-
-   column_number++;
-
-   if (dbi_result_seek_row(result, row_number)) {
-      i = dbi_result_field_is_null_idx(result,column_number);
-      return i;
-   } else {
-      return 0;
-   }
-}
-
-SQL_FIELD *B_DB_DBI::sql_fetch_field(void)
-{
-   int i, j;
-   int dbi_index;
-   int max_length;
-   int this_length;
-   char *cbuf = NULL;
-
-   Dmsg0(500, "sql_fetch_field starts\n");
-
-   if (!m_fields || m_fields_size < m_num_fields) {
-      if (m_fields) {
-         free(m_fields);
-         m_fields = NULL;
-      }
-      Dmsg1(500, "allocating space for %d fields\n", m_num_fields);
-      m_fields = (SQL_FIELD *)malloc(sizeof(SQL_FIELD) * m_num_fields);
-      m_fields_size = m_num_fields;
-
-      for (i = 0; i < m_num_fields; i++) {
-         /*
-          * num_fields is starting at 1, increment i by 1
-          */
-         dbi_index = i + 1;
-         Dmsg1(500, "filling field %d\n", i);
-         m_fields[i].name = (char *)dbi_result_get_field_name(m_result, dbi_index);
-         m_fields[i].type = dbi_result_get_field_type_idx(m_result, dbi_index);
-         m_fields[i].flags = dbi_result_get_field_attribs_idx(m_result, dbi_index);
-
-         /*
-          * For a given column, find the max length.
-          */
-         max_length = 0;
-         for (j = 0; j < m_num_rows; j++) {
-            if (dbi_getisnull(m_result, j, dbi_index)) {
-                this_length = 4;        /* "NULL" */
-            } else {
-               cbuf = dbi_getvalue(m_result, j, dbi_index);
-               this_length = cstrlen(cbuf);
-               /*
-                * cbuf is always free
-                */
-               free(cbuf);
-            }
-         
-            if (max_length < this_length) {
-               max_length = this_length;
-            }
-         }
-         m_fields[i].max_length = max_length;
-
-         Dmsg4(500, "sql_fetch_field finds field '%s' has length='%d' type='%d' and IsNull=%d\n",
-               m_fields[i].name, m_fields[i].max_length, m_fields[i].type, m_fields[i].flags);
-      }
-   }
-
-   /*
-    * Increment field number for the next time around
-    */
-   return &m_fields[m_field_number++];
-}
-
-bool B_DB_DBI::sql_field_is_not_null(int field_type)
-{
-   switch (field_type) {
-   case (1 << 0):
-      return true;
-   default:
-      return false;
-   }
-}
-
-bool B_DB_DBI::sql_field_is_numeric(int field_type)
-{
-   switch (field_type) {
-   case 1:
-   case 2:
-      return true;
-   default:
-      return false;
-   }
-}
-
-/*
- * Escape strings so that PostgreSQL is happy on COPY
- *
- *   NOTE! len is the length of the old string. Your new
- *         string must be long enough (max 2*old+1) to hold
- *         the escaped output.
- */
-static char *postgresql_copy_escape(char *dest, char *src, size_t len)
-{
-   /*
-    * We have to escape \t, \n, \r, \
-    */
-   char c = '\0' ;
-
-   while (len > 0 && *src) {
-      switch (*src) {
-      case '\n':
-         c = 'n';
-         break;
-      case '\\':
-         c = '\\';
-         break;
-      case '\t':
-         c = 't';
-         break;
-      case '\r':
-         c = 'r';
-         break;
-      default:
-         c = '\0' ;
-      }
-
-      if (c) {
-         *dest = '\\';
-         dest++;
-         *dest = c;
-      } else {
-         *dest = *src;
-      }
-
-      len--;
-      src++;
-      dest++;
-   }
-
-   *dest = '\0';
-   return dest;
-}
-
-/*
- * This can be a bit strang but is the one way to do
- *
- * Returns true if OK
- *         false if failed
- */
-bool B_DB_DBI::sql_batch_start(JCR *jcr)
-{
-   bool retval = true;
-   const char *query = "COPY batch FROM STDIN";
-
-   Dmsg0(500, "sql_batch_start started\n");
-
-   db_lock(this);
-   switch (m_db_type) {
-   case SQL_TYPE_MYSQL:
-      if (!sql_query("CREATE TEMPORARY TABLE batch ("
-                             "FileIndex integer,"
-                             "JobId integer,"
-                             "Path blob,"
-                             "Name blob,"
-                             "LStat tinyblob,"
-                             "MD5 tinyblob,"
-                             "DeltaSeq smallint)")) {
-         Dmsg0(500, "sql_batch_start failed\n");
-         goto bail_out;
-      }
-      Dmsg0(500, "sql_batch_start finishing\n");
-      goto ok_out;
-   case SQL_TYPE_POSTGRESQL:
-      if (!sql_query("CREATE TEMPORARY TABLE batch ("
-                             "FileIndex int,"
-                             "JobId int,"
-                             "Path varchar,"
-                             "Name varchar,"
-                             "LStat varchar,"
-                             "MD5 varchar,"
-                             "DeltaSeq int)")) {
-         Dmsg0(500, "sql_batch_start failed\n");
-         goto bail_out;
-      }
-
-      /*
-       * We are starting a new query.  reset everything.
-       */
-      m_num_rows     = -1;
-      m_row_number   = -1;
-      m_field_number = -1;
-
-      sql_free_result();
-
-      for (int i=0; i < 10; i++) {
-         sql_query(query);
-         if (m_result) {
-            break;
-         }
-         bmicrosleep(5, 0);
-      }
-      if (!m_result) {
-         Dmsg1(50, "Query failed: %s\n", query);
-         goto bail_out;
-      }
-
-      m_status = (dbi_error_flag)dbi_conn_error(m_db_handle, NULL);
-      //m_status = DBI_ERROR_NONE;
-
-      if (m_status == DBI_ERROR_NONE) {
-         /*
-          * How many fields in the set?
-          */
-         m_num_fields = dbi_result_get_numfields(m_result);
-         m_num_rows = dbi_result_get_numrows(m_result);
-         m_status = (dbi_error_flag) 1;
-      } else {
-         Dmsg1(50, "Result status failed: %s\n", query);
-         goto bail_out;
-      }
-
-      Dmsg0(500, "sql_batch_start finishing\n");
-      goto ok_out;
-   case SQL_TYPE_SQLITE3:
-      if (!sql_query("CREATE TEMPORARY TABLE batch ("
-                             "FileIndex integer,"
-                             "JobId integer,"
-                             "Path blob,"
-                             "Name blob,"
-                             "LStat tinyblob,"
-                             "MD5 tinyblob,"
-                             "DeltaSeq smallint)")) {
-         Dmsg0(500, "sql_batch_start failed\n");
-         goto bail_out;
-      }
-      Dmsg0(500, "sql_batch_start finishing\n");
-      goto ok_out;
-   }
-
-bail_out:
-   Mmsg1(&errmsg, _("error starting batch mode: %s"), sql_strerror());
-   m_status = (dbi_error_flag) 0;
-   sql_free_result();
-   m_result = NULL;
-   retval = false;
-
-ok_out:
-   db_unlock(this);
-   return retval;
-}
-
-/*
- * Set error to something to abort operation
- */
-bool B_DB_DBI::sql_batch_end(JCR *jcr, const char *error)
-{
-   int res = 0;
-   int count = 30;
-   int (*custom_function)(void*, const char*) = NULL;
-   dbi_conn_t *myconn = (dbi_conn_t *)(m_db_handle);
-
-   Dmsg0(500, "sql_batch_start started\n");
-
-   switch (m_db_type) {
-   case SQL_TYPE_MYSQL:
-      m_status = (dbi_error_flag) 0;
-      break;
-   case SQL_TYPE_POSTGRESQL:
-      custom_function = (custom_function_end_t)dbi_driver_specific_function(dbi_conn_get_driver(myconn), "PQputCopyEnd");
-
-      do {
-         res = (*custom_function)(myconn->connection, error);
-      } while (res == 0 && --count > 0);
-
-      if (res == 1) {
-         Dmsg0(500, "ok\n");
-         m_status = (dbi_error_flag) 1;
-      }
-
-      if (res <= 0) {
-         Dmsg0(500, "we failed\n");
-         m_status = (dbi_error_flag) 0;
-         //Mmsg1(&errmsg, _("error ending batch mode: %s"), PQerrorMessage(myconn));
-       }
-      break;
-   case SQL_TYPE_SQLITE3:
-      m_status = (dbi_error_flag) 0;
-      break;
-   }
-
-   Dmsg0(500, "sql_batch_start finishing\n");
-
-   return true;
-}
-
-/*
- * This function is big and use a big switch.
- * In near future is better split in small functions
- * and refactory.
- */
-bool B_DB_DBI::sql_batch_insert(JCR *jcr, ATTR_DBR *ar)
-{
-   int res;
-   int count=30;
-   dbi_conn_t *myconn = (dbi_conn_t *)(m_db_handle);
-   int (*custom_function)(void*, const char*, int) = NULL;
-   char* (*custom_function_error)(void*) = NULL;
-   size_t len;
-   char *digest;
-   char ed1[50];
-
-   Dmsg0(500, "sql_batch_start started \n");
-
-   esc_name = check_pool_memory_size(esc_name, fnl*2+1);
-   esc_path = check_pool_memory_size(esc_path, pnl*2+1);
-
-   if (ar->Digest == NULL || ar->Digest[0] == 0) {
-      *digest = '\0';
-   } else {
-      digest = ar->Digest;
-   }
-
-   switch (m_db_type) {
-   case SQL_TYPE_MYSQL:
-      db_escape_string(jcr, esc_name, fname, fnl);
-      db_escape_string(jcr, esc_path, path, pnl);
-      len = 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);
-
-      if (!sql_query(cmd))
-      {
-         Dmsg0(500, "sql_batch_start failed\n");
-         goto bail_out;
-      }
-
-      Dmsg0(500, "sql_batch_start finishing\n");
-
-      return true;
-      break;
-   case SQL_TYPE_POSTGRESQL:
-      postgresql_copy_escape(esc_name, fname, fnl);
-      postgresql_copy_escape(esc_path, path, pnl);
-      len = Mmsg(cmd, "%u\t%s\t%s\t%s\t%s\t%s\t%u\n",
-                     ar->FileIndex, edit_int64(ar->JobId, ed1), esc_path,
-                     esc_name, ar->attr, digest, ar->DeltaSeq);
-
-      /*
-       * libdbi don't support CopyData and we need call a postgresql
-       * specific function to do this work
-       */
-      Dmsg2(500, "sql_batch_insert :\n %s \ncmd_size: %d",cmd, len);
-      custom_function = (custom_function_insert_t)dbi_driver_specific_function(dbi_conn_get_driver(myconn),"PQputCopyData");
-      if (custom_function != NULL) {
-         do {
-            res = (*custom_function)(myconn->connection, cmd, len);
-         } while (res == 0 && --count > 0);
-
-         if (res == 1) {
-            Dmsg0(500, "ok\n");
-            changes++;
-            m_status = (dbi_error_flag) 1;
-         }
-
-         if (res <= 0) {
-            Dmsg0(500, "sql_batch_insert failed\n");
-            goto bail_out;
-         }
-
-         Dmsg0(500, "sql_batch_insert finishing\n");
-         return true;
-      } else {
-         /*
-          * Ensure to detect a PQerror
-          */
-         custom_function_error = (custom_function_error_t)dbi_driver_specific_function(dbi_conn_get_driver(myconn), "PQerrorMessage");
-         Dmsg1(500, "sql_batch_insert failed\n PQerrorMessage: %s", (*custom_function_error)(myconn->connection));
-         goto bail_out;
-      }
-      break;
-   case SQL_TYPE_SQLITE3:
-      db_escape_string(jcr, esc_name, fname, fnl);
-      db_escape_string(jcr, esc_path, path, pnl);
-      len = 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);
-
-      if (!sql_query(cmd))
-      {
-         Dmsg0(500, "sql_batch_insert failed\n");
-         goto bail_out;
-      }
-
-      Dmsg0(500, "sql_batch_insert finishing\n");
-
-      return true;
-      break;
-   }
-
-bail_out:
-   Mmsg1(&errmsg, _("error inserting batch mode: %s"), sql_strerror());
-   m_status = (dbi_error_flag) 0;
-   sql_free_result();
-   return false;
-}
-
-/*
- * Initialize database data structure. In principal this should
- * never have errors, or it is really fatal.
- */
-B_DB *db_init_database(JCR *jcr, const char *db_driver, const char *db_name, const char *db_user,
-                       const char *db_password, const char *db_address, int db_port,
-                       const char *db_socket, bool mult_db_connections, bool disable_batch_insert)
-{
-   B_DB_DBI *mdb = NULL;
-
-   if (!db_driver) {
-      Jmsg(jcr, M_ABORT, 0, _("Driver type not specified in Catalog resource.\n"));
-   }
-
-   if (strlen(db_driver) < 5 || db_driver[3] != ':' || strncasecmp(db_driver, "dbi", 3) != 0) {
-      Jmsg(jcr, M_ABORT, 0, _("Invalid driver type, must be \"dbi:<type>\"\n"));
-   }
-
-   if (!db_user) {
-      Jmsg(jcr, M_FATAL, 0, _("A user name for DBI must be supplied.\n"));
-      return NULL;
-   }
-
-   P(mutex);                          /* lock DB queue */
-   if (db_list && !mult_db_connections) {
-      /*
-       * Look to see if DB already open
-       */
-      foreach_dlist(mdb, db_list) {
-         if (mdb->db_match_database(db_driver, db_name, db_address, db_port)) {
-            Dmsg1(100, "DB REopen %s\n", db_name);
-            mdb->increment_refcount();
-            goto bail_out;
-         }
-      }
-   }
-   Dmsg0(100, "db_init_database first time\n");
-   mdb = New(B_DB_DBI(jcr, db_driver, db_name, db_user, db_password, db_address,
-                      db_port, db_socket, mult_db_connections, disable_batch_insert));
-
-bail_out:
-   V(mutex);
-   return mdb;
-}
-
-#endif /* HAVE_DBI */
diff --git a/src/cats/delete_catalog_backup.in b/src/cats/delete_catalog_backup.in
index 2064737..9e232ff 100755
--- a/src/cats/delete_catalog_backup.in
+++ b/src/cats/delete_catalog_backup.in
@@ -2,6 +2,21 @@
 #
 # This script deletes a catalog dump
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 db_name=@db_name@
 
 rm -f @working_dir@/${db_name}.sql
diff --git a/src/cats/drop_bacula_database.in b/src/cats/drop_bacula_database.in
index fa8d155..d39fd57 100755
--- a/src/cats/drop_bacula_database.in
+++ b/src/cats/drop_bacula_database.in
@@ -3,6 +3,21 @@
 #  Drop Bacula database -- works for whatever is configured,
 #  MySQL, SQLite, PostgreSQL, Ingres
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 default_db_type=@DEFAULT_DB_TYPE@
 
diff --git a/src/cats/drop_bacula_tables.in b/src/cats/drop_bacula_tables.in
index f353416..019ced5 100755
--- a/src/cats/drop_bacula_tables.in
+++ b/src/cats/drop_bacula_tables.in
@@ -3,6 +3,21 @@
 #  Drop Bacula tables -- works for whatever is configured,
 #  MySQL, SQLite, Ingres, or PostgreSQL
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 default_db_type=@DEFAULT_DB_TYPE@
 
diff --git a/src/cats/drop_ingres_database.in b/src/cats/drop_ingres_database.in
deleted file mode 100755
index 3e4fb29..0000000
--- a/src/cats/drop_ingres_database.in
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-#
-# shell script to drop Bacula database(s)
-#
-
-bindir=@INGRES_BINDIR@
-PATH="$bindir:$PATH"
-db_name=${db_name:- at db_name@}
-db_user=${db_user:- at db_user@}
-
-if destroydb -u${db_user} ${db_name}
-then
-   echo "Drop of ${db_name} database succeeded."
-else
-   echo "Drop of ${db_name} database failed."
-fi
-exit 0
diff --git a/src/cats/drop_ingres_tables.in b/src/cats/drop_ingres_tables.in
deleted file mode 100755
index b1484dd..0000000
--- a/src/cats/drop_ingres_tables.in
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/sh
-#
-# shell script to delete Bacula tables for PostgreSQL
-
-bindir=@INGRES_BINDIR@
-PATH="$bindir:$PATH"
-db_name=${db_name:- at db_name@}
-db_user=${db_user:- at db_user@}
-
-sql -u${db_user} ${db_name} $* <<END-OF-DATA
-DROP TABLE Filename;
-DROP TABLE Path;
-DROP TABLE File;
-DROP TABLE RestoreObject;
-DROP TABLE Job;
-DROP TABLE JobHisto;
-DROP TABLE Location;
-DROP TABLE Fileset;
-DROP TABLE JobMedia;
-DROP TABLE Media;
-DROP TABLE MediaType;
-DROP TABLE Storage;
-DROP TABLE Device;
-DROP TABLE Pool;
-DROP TABLE Client;
-DROP TABLE Log;
-DROP TABLE LocationLog;
-DROP TABLE Counters;
-DROP TABLE BaseFiles;
-DROP TABLE UnsavedFiles;
-DROP TABLE CDImages ;
-DROP TABLE PathHierarchy;
-DROP TABLE PathVisibility;
-DROP TABLE Version;
-DROP TABLE Status;
-DROP SEQUENCE Filename_Seq;
-DROP SEQUENCE Path_Seq;
-DROP SEQUENCE File_Seq;
-DROP SEQUENCE RestoreObject_Seq;
-DROP SEQUENCE Job_Seq;
-DROP SEQUENCE JobHisto_Seq;
-DROP SEQUENCE Location_Seq;
-DROP SEQUENCE Fileset_Seq;
-DROP SEQUENCE JobMedia_Seq;
-DROP SEQUENCE Media_Seq;
-DROP SEQUENCE MediaType_Seq;
-DROP SEQUENCE Storage_Seq;
-DROP SEQUENCE Device_Seq;
-DROP SEQUENCE Pool_Seq;
-DROP SEQUENCE Client_Seq;
-DROP SEQUENCE Log_Seq;
-DROP SEQUENCE LocationLog_Seq;
-DROP SEQUENCE BaseFiles_Seq;
-\g
-END-OF-DATA
-pstat=$?
-if test $pstat = 0; 
-then
-   echo "Deletion of Bacula Ingres tables succeeded."
-else
-   echo "Deletion of Bacula Ingres tables failed."
-fi
-exit $pstat
diff --git a/src/cats/drop_mysql_database.in b/src/cats/drop_mysql_database.in
index 8cefa9c..7be0008 100644
--- a/src/cats/drop_mysql_database.in
+++ b/src/cats/drop_mysql_database.in
@@ -2,6 +2,21 @@
 #
 # shell script to drop Bacula database(s)
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 bindir=@MYSQL_BINDIR@
 db_name=@db_name@
diff --git a/src/cats/drop_mysql_tables.in b/src/cats/drop_mysql_tables.in
index bd3f80c..058d404 100644
--- a/src/cats/drop_mysql_tables.in
+++ b/src/cats/drop_mysql_tables.in
@@ -1,6 +1,21 @@
 #!/bin/sh
 #
 # shell script to delete Bacula tables for MySQL
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 bindir=@MYSQL_BINDIR@
 db_name=@db_name@
diff --git a/src/cats/drop_postgresql_database.in b/src/cats/drop_postgresql_database.in
index 76a8c8f..92a85c7 100644
--- a/src/cats/drop_postgresql_database.in
+++ b/src/cats/drop_postgresql_database.in
@@ -2,6 +2,21 @@
 #
 # shell script to drop Bacula database(s)
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 bindir=@POSTGRESQL_BINDIR@
 db_name=@db_name@
diff --git a/src/cats/drop_postgresql_tables.in b/src/cats/drop_postgresql_tables.in
index 42db832..1df04e5 100644
--- a/src/cats/drop_postgresql_tables.in
+++ b/src/cats/drop_postgresql_tables.in
@@ -1,6 +1,21 @@
 #!/bin/sh
 #
 # shell script to delete Bacula tables for PostgreSQL
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 bindir=@POSTGRESQL_BINDIR@
 db_name=@db_name@
diff --git a/src/cats/drop_sqlite3_database.in b/src/cats/drop_sqlite3_database.in
index f31450b..44f446c 100644
--- a/src/cats/drop_sqlite3_database.in
+++ b/src/cats/drop_sqlite3_database.in
@@ -1,6 +1,21 @@
 #!/bin/sh
 #
 # shell script to drop Bacula SQLite tables
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 db_name=@db_name@
 
 cd @working_dir@
diff --git a/src/cats/drop_sqlite3_tables.in b/src/cats/drop_sqlite3_tables.in
index 9cd8d39..ca74c92 100644
--- a/src/cats/drop_sqlite3_tables.in
+++ b/src/cats/drop_sqlite3_tables.in
@@ -3,6 +3,21 @@
 # shell script to Delete the SQLite Bacula database (same as deleting 
 #  the tables)
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 db_name=@db_name@
 
 rm -f @working_dir@/${db_name}.db
diff --git a/src/cats/grant_bacula_privileges.in b/src/cats/grant_bacula_privileges.in
index 3115fac..793d106 100755
--- a/src/cats/grant_bacula_privileges.in
+++ b/src/cats/grant_bacula_privileges.in
@@ -4,6 +4,21 @@
 # Bacula tables for PostgreSQL or MySQL.
 # SQLite does not have permissions.
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 default_db_type=@DEFAULT_DB_TYPE@
 
diff --git a/src/cats/grant_ingres_privileges.in b/src/cats/grant_ingres_privileges.in
deleted file mode 100755
index 0064210..0000000
--- a/src/cats/grant_ingres_privileges.in
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/sh
-#
-# shell script TO GRANT privileges to the bacula database
-#
-bindir=@INGRES_BINDIR@
-PATH="$bindir:$PATH"
-db_name=${db_name:- at db_name@}
-db_user=${db_user:- at db_user@}
-
-sql iidbdb $* <<END-OF-DATA
-CREATE USER ${db_user}
-\g
-END-OF-DATA
-
-if sql -u${db_user} ${db_name} $* <<END-OF-DATA
-
--- for tables
-GRANT ALL ON TABLE Filename TO ${db_user};
-GRANT ALL ON TABLE Path TO ${db_user};
-GRANT ALL ON TABLE File TO ${db_user};
-GRANT ALL ON TABLE RestoreObject TO ${db_user};
-GRANT ALL ON TABLE Job TO ${db_user};
-GRANT ALL ON TABLE JobHisto TO ${db_user};
-GRANT ALL ON TABLE Location TO ${db_user};
-GRANT ALL ON TABLE Fileset TO ${db_user};
-GRANT ALL ON TABLE JobMedia TO ${db_user};
-GRANT ALL ON TABLE Media TO ${db_user};
-GRANT ALL ON TABLE MediaType TO ${db_user};
-GRANT ALL ON TABLE Storage TO ${db_user};
-GRANT ALL ON TABLE Device TO ${db_user};
-GRANT ALL ON TABLE Pool TO ${db_user};
-GRANT ALL ON TABLE Client TO ${db_user};
-GRANT ALL ON TABLE Log TO ${db_user};
-GRANT ALL ON TABLE LocationLog TO ${db_user};
-GRANT ALL ON TABLE Counters TO ${db_user};
-GRANT ALL ON TABLE BaseFiles TO ${db_user};
-GRANT ALL ON TABLE UnsavedFiles TO ${db_user};
-GRANT ALL ON TABLE CDImages  TO ${db_user};
-GRANT ALL ON TABLE PathHierarchy TO ${db_user};
-GRANT ALL ON TABLE PathVisibility TO ${db_user};
-GRANT ALL ON TABLE Version TO ${db_user};
-GRANT ALL ON TABLE Status TO ${db_user};
-
--- for sequences ON those tables
-GRANT NEXT ON SEQUENCE Filename_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Path_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE File_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE RestoreObject_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Job_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE JobHisto_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Location_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Fileset_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Jobmedia_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Media_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE MediaType_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Storage_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Device_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Pool_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Client_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE Log_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE LocationLog_Seq TO ${db_user};
-GRANT NEXT ON SEQUENCE BaseFiles_Seq TO ${db_user};
-\g
-
-END-OF-DATA
-then
-   echo "Privileges for ${db_user} granted on ${db_name}."
-   exit 0
-else
-   echo "Error creating privileges."
-   exit 1
-fi
diff --git a/src/cats/grant_mysql_privileges.in b/src/cats/grant_mysql_privileges.in
index 3f315d2..40203ca 100644
--- a/src/cats/grant_mysql_privileges.in
+++ b/src/cats/grant_mysql_privileges.in
@@ -2,6 +2,21 @@
 #
 # shell script to grant privileges to the bacula database
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 db_user=${db_user:- at db_user@}
 bindir=@MYSQL_BINDIR@
 db_name=${db_name:- at db_name@}
diff --git a/src/cats/grant_postgresql_privileges.in b/src/cats/grant_postgresql_privileges.in
index f39725d..1e49c02 100644
--- a/src/cats/grant_postgresql_privileges.in
+++ b/src/cats/grant_postgresql_privileges.in
@@ -2,6 +2,21 @@
 #
 # shell script to grant privileges to the bacula database
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 db_user=${db_user:- at db_user@}
 bindir=@POSTGRESQL_BINDIR@
 db_name=${db_name:- at db_name@}
diff --git a/src/cats/grant_sqlite3_privileges.in b/src/cats/grant_sqlite3_privileges.in
index 2e87128..6972835 100644
--- a/src/cats/grant_sqlite3_privileges.in
+++ b/src/cats/grant_sqlite3_privileges.in
@@ -2,6 +2,21 @@
 #
 # shell script to grant privileges to the bacula database
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 bindir=@SQLITE_BINDIR@
 
 # nothing to do here
diff --git a/src/cats/ingres.c b/src/cats/ingres.c
deleted file mode 100755
index 12bab67..0000000
--- a/src/cats/ingres.c
+++ /dev/null
@@ -1,1113 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2003-2011 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.
-*/
-/*
- * Bacula Catalog Database routines specific to Ingres
- * These are Ingres specific routines
- *
- *    Stefan Reddig, June 2009 with help of Marco van Wieringen April 2010
- *    based uopn work done 
- *    by Dan Langille, December 2003 and
- *    by Kern Sibbald, March 2000
- *
- * Major rewrite by Marco van Wieringen, January 2010 for catalog refactoring.
- */
-
-#include "bacula.h"
-
-#ifdef HAVE_INGRES
-
-#include "cats.h"
-#include "bdb_priv.h"
-#include "myingres.h"
-#include "bdb_ingres.h"
-#include "lib/breg.h"
-
-/* -----------------------------------------------------------------------
- *
- *   Ingres dependent defines and subroutines
- *
- * -----------------------------------------------------------------------
- */
-
-/*
- * List of open databases.
- */
-static dlist *db_list = NULL;
-
-static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-
-struct B_DB_RWRULE {
-   int pattern_length;
-   char *search_pattern;
-   BREGEXP *rewrite_regexp;
-   bool trigger;
-};
-
-/*
- * Create a new query filter.
- */
-static bool db_allocate_query_filter(JCR *jcr, alist *query_filters, int pattern_length,
-                                     const char *search_pattern, const char *filter)
-{
-   B_DB_RWRULE *rewrite_rule;
-
-   rewrite_rule = (B_DB_RWRULE *)malloc(sizeof(B_DB_RWRULE));
-
-   rewrite_rule->pattern_length = pattern_length;
-   rewrite_rule->search_pattern = bstrdup(search_pattern);
-   rewrite_rule->rewrite_regexp = new_bregexp(filter);
-   rewrite_rule->trigger = false;
-
-   if (!rewrite_rule->rewrite_regexp) {
-      Jmsg(jcr, M_FATAL, 0, _("Failed to allocate space for query filter.\n"));
-      free(rewrite_rule->search_pattern);
-      free(rewrite_rule);
-      return false;
-   } else {
-      query_filters->append(rewrite_rule);
-      return true;
-   }
-}
-
-/*
- * Create a stack of all filters that should be applied to a SQL query
- * before submitting it to the database backend.
- */
-static inline alist *db_initialize_query_filters(JCR *jcr)
-{
-   alist *query_filters;
-
-   query_filters = New(alist(10, not_owned_by_alist));
-
-   if (!query_filters) {
-      Jmsg(jcr, M_FATAL, 0, _("Failed to allocate space for query filters.\n"));
-      return NULL;
-   }
-
-   db_allocate_query_filter(jcr, query_filters, 6, "OFFSET",
-                            "/LIMIT ([0-9]+) OFFSET ([0-9]+)/OFFSET $2 FETCH NEXT $1 ROWS ONLY/ig");
-   db_allocate_query_filter(jcr, query_filters, 5, "LIMIT",
-                            "/LIMIT ([0-9]+)/FETCH FIRST $1 ROWS ONLY/ig");
-   db_allocate_query_filter(jcr, query_filters, 9, "TEMPORARY",
-                            "/CREATE TEMPORARY TABLE (.+)/DECLARE GLOBAL TEMPORARY TABLE $1 ON COMMIT PRESERVE ROWS WITH NORECOVERY/i");
-
-   return query_filters;
-}
-
-/*
- * Free all query filters.
- */
-static inline void db_destroy_query_filters(alist *query_filters)
-{
-   B_DB_RWRULE *rewrite_rule;
-
-   foreach_alist(rewrite_rule, query_filters) {
-      free_bregexp(rewrite_rule->rewrite_regexp);
-      free(rewrite_rule->search_pattern);
-      free(rewrite_rule);
-   }
-
-   delete query_filters;
-}
-
-B_DB_INGRES::B_DB_INGRES(JCR *jcr,
-                         const char *db_driver,
-                         const char *db_name,
-                         const char *db_user,
-                         const char *db_password,
-                         const char *db_address,
-                         int db_port,
-                         const char *db_socket,
-                         bool mult_db_connections,
-                         bool disable_batch_insert)
-{
-   B_DB_INGRES *mdb;
-   int next_session_id = 0;
-
-   /*
-    * See what the next available session_id is.
-    * We first see what the highest session_id is used now.
-    */
-   if (db_list) {
-      foreach_dlist(mdb, db_list) {
-         if (mdb->m_session_id > next_session_id) {
-            next_session_id = mdb->m_session_id;
-         }
-      }
-   }
-
-   /*
-    * Initialize the parent class members.
-    */
-   m_db_interface_type  = SQL_INTERFACE_TYPE_INGRES;
-   m_db_type = SQL_TYPE_INGRES;
-   m_db_driver = bstrdup("ingres");
-   m_db_name = bstrdup(db_name);
-   m_db_user = bstrdup(db_user);
-   if (db_password) {
-      m_db_password = bstrdup(db_password);
-   }
-   if (db_address) {
-      m_db_address = bstrdup(db_address);
-   }
-   if (db_socket) {
-      m_db_socket = bstrdup(db_socket);
-   }
-   m_db_port = db_port;
-   if (disable_batch_insert) {
-      m_disabled_batch_insert = true;
-      m_have_batch_insert = false;
-   } else {
-      m_disabled_batch_insert = false;
-#if defined(USE_BATCH_FILE_INSERT)
-      m_have_batch_insert = true;
-#else
-      m_have_batch_insert = false;
-#endif
-   }
-
-   errmsg = get_pool_memory(PM_EMSG); /* get error message buffer */
-   *errmsg = 0;
-   cmd = get_pool_memory(PM_EMSG); /* get command buffer */
-   cached_path = get_pool_memory(PM_FNAME);
-   cached_path_id = 0;
-   m_ref_count = 1;
-   fname = get_pool_memory(PM_FNAME);
-   path = get_pool_memory(PM_FNAME);
-   esc_name = get_pool_memory(PM_FNAME);
-   esc_path = get_pool_memory(PM_FNAME);
-   esc_obj = get_pool_memory(PM_FNAME);
-   m_allow_transactions = mult_db_connections;
-
-   /* At this time, when mult_db_connections == true, this is for 
-    * specific console command such as bvfs or batch mode, and we don't
-    * want to share a batch mode or bvfs. In the future, we can change
-    * the creation function to add this parameter.
-    */
-   m_dedicated = mult_db_connections; 
-
-   /*
-    * Initialize the private members.
-    */
-   m_db_handle = NULL;
-   m_result = NULL;
-   m_explicit_commit = true;
-   m_session_id = ++next_session_id;
-   m_query_filters = db_initialize_query_filters(jcr);
-
-   /*
-    * Put the db in the list.
-    */
-   if (db_list == NULL) {
-      db_list = New(dlist(this, &this->m_link));
-   }
-   db_list->append(this);
-}
-
-B_DB_INGRES::~B_DB_INGRES()
-{
-}
-
-/*
- * Now actually open the database.  This can generate errors,
- *   which are returned in the errmsg
- *
- * DO NOT close the database or delete mdb here !!!!
- */
-bool B_DB_INGRES::db_open_database(JCR *jcr)
-{
-   bool retval = false;
-   int errstat;
-
-   P(mutex);
-   if (m_connected) {
-      retval = true;
-      goto bail_out;
-   }
-
-   if ((errstat=rwl_init(&m_lock)) != 0) {
-      berrno be;
-      Mmsg1(&errmsg, _("Unable to initialize DB lock. ERR=%s\n"),
-            be.bstrerror(errstat));
-      goto bail_out;
-   }
-
-   m_db_handle = INGconnectDB(m_db_name, m_db_user, m_db_password, m_session_id);
-
-   Dmsg0(50, "Ingres real CONNECT done\n");
-   Dmsg3(50, "db_user=%s db_name=%s db_password=%s\n", m_db_user, m_db_name,
-              m_db_password == NULL ? "(NULL)" : m_db_password);
-
-   if (!m_db_handle) {
-      Mmsg2(&errmsg, _("Unable to connect to Ingres server.\n"
-            "Database=%s User=%s\n"
-            "It is probably not running or your password is incorrect.\n"),
-             m_db_name, m_db_user);
-      goto bail_out;
-   }
-
-   m_connected = true;
-
-   INGsetDefaultLockingMode(m_db_handle);
-
-   if (!check_tables_version(jcr, this)) {
-      goto bail_out;
-   }
-
-   retval = true;
-
-bail_out:
-   V(mutex);
-   return retval;
-}
-
-void B_DB_INGRES::db_close_database(JCR *jcr)
-{
-   if (m_connected) {
-      db_end_transaction(jcr);
-   }
-   P(mutex);
-   m_ref_count--;
-   if (m_ref_count == 0) {
-      if (m_connected) {
-         sql_free_result();
-      }
-      db_list->remove(this);
-      if (m_connected && m_db_handle) {
-         INGdisconnectDB(m_db_handle);
-      }
-      if (m_query_filters) {
-         db_destroy_query_filters(m_query_filters);
-      }
-      if (rwl_is_init(&m_lock)) {
-         rwl_destroy(&m_lock);
-      }
-      free_pool_memory(errmsg);
-      free_pool_memory(cmd);
-      free_pool_memory(cached_path);
-      free_pool_memory(fname);
-      free_pool_memory(path);
-      free_pool_memory(esc_name);
-      free_pool_memory(esc_path);
-      free_pool_memory(esc_obj);
-      free(m_db_driver);
-      free(m_db_name);
-      free(m_db_user);
-      if (m_db_password) {
-         free(m_db_password);
-      }
-      if (m_db_address) {
-         free(m_db_address);
-      }
-      if (m_db_socket) {
-         free(m_db_socket);
-      }
-      delete this;
-      if (db_list->size() == 0) {
-         delete db_list;
-         db_list = NULL;
-      }
-   }
-   V(mutex);
-}
-
-void B_DB_INGRES::db_thread_cleanup(void)
-{
-}
-
-/*
- * Escape strings so that Ingres is happy
- *
- *   NOTE! len is the length of the old string. Your new
- *         string must be long enough (max 2*old+1) to hold
- *         the escaped output.
- */
-void B_DB_INGRES::db_escape_string(JCR *jcr, char *snew, char *old, int len)
-{
-   char *n, *o;
-
-   n = snew;
-   o = old;
-   while (len--) {
-      switch (*o) {
-      case '\'':
-         *n++ = '\'';
-         *n++ = '\'';
-         o++;
-         break;
-      case 0:
-         *n++ = '\\';
-         *n++ = 0;
-         o++;
-         break;
-      default:
-         *n++ = *o++;
-         break;
-      }
-   }
-   *n = 0;
-}
-
-/*
- * Escape binary so that Ingres is happy
- *
- *   NOTE! Need to be implemented (escape \0)
- *
- */
-char *B_DB_INGRES::db_escape_object(JCR *jcr, char *old, int len)
-{
-   char *n, *o;
-
-   n = esc_obj = check_pool_memory_size(esc_obj, len*2+1);
-   o = old;
-   while (len--) {
-      switch (*o) {
-      case '\'':
-         *n++ = '\'';
-         *n++ = '\'';
-         o++;
-         break;
-      case 0:
-         *n++ = '\\';
-         *n++ = 0;
-         o++;
-         break;
-      default:
-         *n++ = *o++;
-         break;
-      }
-   }
-   *n = 0;
-   return esc_obj;
-}
-
-/*
- * Unescape binary object so that Ingres is happy
- *
- * TODO: need to be implemented (escape \0)
- */
-void B_DB_INGRES::db_unescape_object(JCR *jcr, char *from, int32_t expected_len,
-                                     POOLMEM **dest, int32_t *dest_len)
-{
-   if (!from) {
-      *dest[0] = 0;
-      *dest_len = 0;
-      return;
-   }
-   *dest = check_pool_memory_size(*dest, expected_len+1);
-   *dest_len = expected_len;
-   memcpy(*dest, from, expected_len);
-   (*dest)[expected_len]=0;
-}
-
-/*
- * Start a transaction. This groups inserts and makes things
- * much more efficient. Usually started when inserting
- * file attributes.
- */
-void B_DB_INGRES::db_start_transaction(JCR *jcr)
-{
-   if (!jcr->attr) {
-      jcr->attr = get_pool_memory(PM_FNAME);
-   }
-   if (!jcr->ar) {
-      jcr->ar = (ATTR_DBR *)malloc(sizeof(ATTR_DBR));
-   }
-
-   if (!m_allow_transactions) {
-      return;
-   }
-
-   db_lock(this);
-   /* Allow only 25,000 changes per transaction */
-   if (m_transaction && changes > 25000) {
-      db_end_transaction(jcr);
-   }
-   if (!m_transaction) {
-      sql_query("BEGIN");  /* begin transaction */
-      Dmsg0(400, "Start Ingres transaction\n");
-      m_transaction = true;
-   }
-   db_unlock(this);
-}
-
-void B_DB_INGRES::db_end_transaction(JCR *jcr)
-{
-   if (jcr && jcr->cached_attribute) {
-      Dmsg0(400, "Flush last cached attribute.\n");
-      if (!db_create_attributes_record(jcr, this, jcr->ar)) {
-         Jmsg1(jcr, M_FATAL, 0, _("Attribute create error. %s"), db_strerror(jcr->db));
-      }
-      jcr->cached_attribute = false;
-   }
-
-   if (!m_allow_transactions) {
-      return;
-   }
-
-   db_lock(this);
-   if (m_transaction) {
-      sql_query("COMMIT"); /* end transaction */
-      m_transaction = false;
-      Dmsg1(400, "End Ingres transaction changes=%d\n", changes);
-   }
-   changes = 0;
-   db_unlock(this);
-}
-
-/*
- * Submit a general SQL command (cmd), and for each row returned,
- *  the result_handler is called with the ctx.
- */
-bool B_DB_INGRES::db_sql_query(const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
-{
-   SQL_ROW row;
-   bool retval = true;
-
-   Dmsg1(500, "db_sql_query starts with %s\n", query);
-
-   db_lock(this);
-   if (!sql_query(query, QF_STORE_RESULT)) {
-      Mmsg(errmsg, _("Query failed: %s: ERR=%s\n"), query, sql_strerror());
-      Dmsg0(500, "db_sql_query failed\n");
-      retval = false;
-      goto bail_out;
-   }
-
-   if (result_handler != NULL) {
-      Dmsg0(500, "db_sql_query invoking handler\n");
-      while ((row = sql_fetch_row()) != NULL) {
-         Dmsg0(500, "db_sql_query sql_fetch_row worked\n");
-         if (result_handler(ctx, m_num_fields, row))
-            break;
-      }
-      sql_free_result();
-   }
-
-   Dmsg0(500, "db_sql_query finished\n");
-
-bail_out:
-   db_unlock(this);
-   return retval;
-}
-
-/*
- * Note, if this routine returns false (failure), Bacula expects
- * that no result has been stored.
- *
- *  Returns:  true  on success
- *            false on failure
- *
- */
-bool B_DB_INGRES::sql_query(const char *query, int flags)
-{
-   int cols;
-   char *cp, *bp;
-   char *dup_query, *new_query;
-   bool retval = true;
-   bool start_of_transaction = false;
-   bool end_of_transaction = false;
-   B_DB_RWRULE *rewrite_rule;
-
-   Dmsg1(500, "query starts with '%s'\n", query);
-   /*
-    * We always make a private copy of the query as we are doing serious
-    * rewrites in this engine. When running the private copy through the
-    * different query filters we loose the orginal private copy so we
-    * first make a extra reference to it so we can free it on exit from the
-    * function.
-    */
-   dup_query = new_query = bstrdup(query);
-
-   /*
-    * Iterate over the query string and perform any needed operations.
-    * We use a sliding window over the query string where bp points to
-    * the previous position in the query and cp to the current position
-    * in the query.
-    */
-   bp = new_query;
-   while (bp != NULL) {
-      if ((cp = strchr(bp, ' ')) != NULL) {
-         *cp++;
-      }
-
-      if (!strncasecmp(bp, "BEGIN", 5)) {
-         /*
-          * This is the start of a transaction.
-          * Inline copy the rest of the query over the BEGIN keyword.
-          */
-         if (cp) {
-            strcpy(bp, cp);
-         } else {
-            *bp = '\0';
-         }
-         start_of_transaction = true;
-      } else if (!strncasecmp(bp, "COMMIT", 6) && (cp == NULL || strncasecmp(cp, "PRESERVE", 8))) {
-         /*
-          * This is the end of a transaction. We cannot check for just the COMMIT
-          * keyword as a DECLARE of an tempory table also has the word COMMIT in it
-          * but its followed by the word PRESERVE.
-          * Inline copy the rest of the query over the COMMIT keyword.
-          */
-         if (cp) {
-            strcpy(bp, cp);
-         } else {
-            *bp = '\0';
-         }
-         end_of_transaction = true;
-      }
-
-      /*
-       * See what query filter might match.
-       */
-      foreach_alist(rewrite_rule, m_query_filters) {
-         if (!strncasecmp(bp, rewrite_rule->search_pattern, rewrite_rule->pattern_length)) {
-            rewrite_rule->trigger = true;
-         }
-      }
-
-      /*
-       * Slide window.
-       */
-      bp = cp;
-   }
-
-   /*
-    * Run the query through all query filters that apply e.g. have the trigger set in the
-    * previous loop.
-    */
-   foreach_alist(rewrite_rule, m_query_filters) {
-      if (rewrite_rule->trigger) {
-         new_query = rewrite_rule->rewrite_regexp->replace(new_query);
-         rewrite_rule->trigger = false;
-      }
-   }
-
-   if (start_of_transaction) {
-      Dmsg0(500,"sql_query: Start of transaction\n");
-      m_explicit_commit = false;
-   }
-
-   /*
-    * See if there is any query left after filtering for certain keywords.
-    */
-   bp = new_query;
-   while (bp != NULL && strlen(bp) > 0) {
-      /*
-       * We are starting a new query.  reset everything.
-       */
-      m_num_rows     = -1;
-      m_row_number   = -1;
-      m_field_number = -1;
-
-      if (m_result) {
-         INGclear(m_result);  /* hmm, someone forgot to free?? */
-         m_result = NULL;
-      }
-
-      /*
-       * See if this is a multi-statement query. We split a multi-statement query
-       * on the semi-column and feed the individual queries to the Ingres functions.
-       * We use a sliding window over the query string where bp points to
-       * the previous position in the query and cp to the current position
-       * in the query.
-       */
-      if ((cp = strchr(bp, ';')) != NULL) {
-         *cp++ = '\0';
-      }
-
-      Dmsg1(500, "sql_query after rewrite continues with '%s'\n", bp);
-
-      /*
-       * See if we got a store_result hint which could mean we are running a select.
-       * If flags has QF_STORE_RESULT not set we are sure its not a query that we
-       * need to store anything for.
-       */
-      if (flags & QF_STORE_RESULT) {
-         cols = INGgetCols(m_db_handle, bp, m_explicit_commit);
-      } else {
-         cols = 0;
-      }
-
-      if (cols <= 0) {
-         if (cols < 0 ) {
-            Dmsg0(500,"sql_query: neg.columns: no DML stmt!\n");
-            retval = false;
-            goto bail_out;
-         }
-         Dmsg0(500,"sql_query (non SELECT) starting...\n");
-         /*
-          * non SELECT
-          */
-         m_num_rows = INGexec(m_db_handle, bp, m_explicit_commit);
-         if (m_num_rows == -1) {
-           Dmsg0(500,"sql_query (non SELECT) went wrong\n");
-           retval = false;
-           goto bail_out;
-         } else {
-           Dmsg0(500,"sql_query (non SELECT) seems ok\n");
-         }
-      } else {
-         /*
-          * SELECT
-          */
-         Dmsg0(500,"sql_query (SELECT) starting...\n");
-         m_result = INGquery(m_db_handle, bp, m_explicit_commit);
-         if (m_result != NULL) {
-            Dmsg0(500, "we have a result\n");
-
-            /*
-             * How many fields in the set?
-             */
-            m_num_fields = (int)INGnfields(m_result);
-            Dmsg1(500, "we have %d fields\n", m_num_fields);
-
-            m_num_rows = INGntuples(m_result);
-            Dmsg1(500, "we have %d rows\n", m_num_rows);
-         } else {
-            Dmsg0(500, "No resultset...\n");
-            retval = false;
-            goto bail_out;
-         }
-      }
-
-      bp = cp;
-   }
-
-bail_out:
-   if (end_of_transaction) {
-      Dmsg0(500,"sql_query: End of transaction, commiting work\n");
-      m_explicit_commit = true;
-      INGcommit(m_db_handle);
-   }
-
-   free(dup_query);
-   Dmsg0(500, "sql_query finishing\n");
-
-   return retval;
-}  
-
-void B_DB_INGRES::sql_free_result(void)
-{
-   db_lock(this);
-   if (m_result) {
-      INGclear(m_result);
-      m_result = NULL;
-   }
-   if (m_rows) {
-      free(m_rows);
-      m_rows = NULL;
-   }
-   if (m_fields) {
-      free(m_fields);
-      m_fields = NULL;
-   }
-   m_num_rows = m_num_fields = 0;
-   db_unlock(this);
-}
-
-SQL_ROW B_DB_INGRES::sql_fetch_row(void)
-{
-   int j;
-   SQL_ROW row = NULL; /* by default, return NULL */
-
-   if (!m_result) {
-      return row;
-   }
-   if (m_result->num_rows <= 0) {
-      return row;
-   }
-
-   Dmsg0(500, "sql_fetch_row start\n");
-
-   if (!m_rows || m_rows_size < m_num_fields) {
-      if (m_rows) {
-         Dmsg0(500, "sql_fetch_row freeing space\n");
-         free(m_rows);
-      }
-      Dmsg1(500, "we need space for %d bytes\n", sizeof(char *) * m_num_fields);
-      m_rows = (SQL_ROW)malloc(sizeof(char *) * m_num_fields);
-      m_rows_size = m_num_fields;
-
-      /*
-       * Now reset the row_number now that we have the space allocated
-       */
-      m_row_number = 0;
-   }
-
-   /*
-    * If still within the result set
-    */
-   if (m_row_number < m_num_rows) {
-      Dmsg2(500, "sql_fetch_row row number '%d' is acceptable (0..%d)\n", m_row_number, m_num_rows);
-      /*
-       * Get each value from this row
-       */
-      for (j = 0; j < m_num_fields; j++) {
-         m_rows[j] = INGgetvalue(m_result, m_row_number, j);
-         Dmsg2(500, "sql_fetch_row field '%d' has value '%s'\n", j, m_rows[j]);
-      }
-      /*
-       * Increment the row number for the next call
-       */
-      m_row_number++;
-
-      row = m_rows;
-   } else {
-      Dmsg2(500, "sql_fetch_row row number '%d' is NOT acceptable (0..%d)\n", m_row_number, m_num_rows);
-   }
-
-   Dmsg1(500, "sql_fetch_row finishes returning %p\n", row);
-
-   return row;
-}
-
-const char *B_DB_INGRES::sql_strerror(void)
-{
-   return INGerrorMessage(m_db_handle);
-}
-
-void B_DB_INGRES::sql_data_seek(int row)
-{
-   /*
-    * Set the row number to be returned on the next call to sql_fetch_row
-    */
-   m_row_number = row;
-}
-
-int B_DB_INGRES::sql_affected_rows(void)
-{
-   return m_num_rows;
-}
-
-/*
- * First execute the insert query and then retrieve the currval.
- * By setting transaction to true we make it an atomic transaction
- * and as such we can get the currval after which we commit if
- * transaction is false. This way things are an atomic operation
- * for Ingres and things work. We save the current transaction status
- * and set transaction in the mdb to true and at the end of this
- * function we restore the actual transaction status.
- */
-uint64_t B_DB_INGRES::sql_insert_autokey_record(const char *query, const char *table_name)
-{
-   char sequence[64];
-   char getkeyval_query[256];
-   char *currval;
-   uint64_t id = 0;
-   bool current_explicit_commit;
-
-   /*
-    * Save the current transaction status and pretend we are in a transaction.
-    */
-   current_explicit_commit = m_explicit_commit;
-   m_explicit_commit = false;
-
-   /*
-    * Execute the INSERT query.
-    */
-   m_num_rows = INGexec(m_db_handle, query, m_explicit_commit);
-   if (m_num_rows == -1) {
-      goto bail_out;
-   }
-
-   changes++;
-
-   /*
-    * Obtain the current value of the sequence that
-    * provides the serial value for primary key of the table.
-    *
-    * currval is local to our session. It is not affected by
-    * other transactions.
-    *
-    * Determine the name of the sequence.
-    * As we name all sequences as <table>_seq this is easy.
-    */
-   bstrncpy(sequence, table_name, sizeof(sequence));
-   bstrncat(sequence, "_seq", sizeof(sequence));
-
-   bsnprintf(getkeyval_query, sizeof(getkeyval_query), "SELECT %s.currval FROM %s", sequence, table_name);
-
-   if (m_result) {
-      INGclear(m_result);
-      m_result = NULL;
-   }
-   m_result = INGquery(m_db_handle, getkeyval_query, m_explicit_commit);
-
-   if (!m_result) {
-      Dmsg1(50, "Query failed: %s\n", getkeyval_query);
-      goto bail_out;
-   }
-
-   Dmsg0(500, "exec done");
-
-   currval = INGgetvalue(m_result, 0, 0);
-   if (currval) {
-      id = str_to_uint64(currval);
-   }
-
-   INGclear(m_result);
-   m_result = NULL;
-
-bail_out:
-   /*
-    * Restore the actual explicit_commit status.
-    */
-   m_explicit_commit = current_explicit_commit;
-
-   /*
-    * Commit if explicit_commit is not set.
-    */
-   if (m_explicit_commit) {
-      INGcommit(m_db_handle);
-   }
-
-   return id;
-}
-
-SQL_FIELD *B_DB_INGRES::sql_fetch_field(void)
-{
-   int i, j;
-   int max_length;
-   int this_length;
-
-   if (!m_fields || m_fields_size < m_num_fields) {
-      if (m_fields) {
-         free(m_fields);
-         m_fields = NULL;
-      }
-      Dmsg1(500, "allocating space for %d fields\n", m_num_fields);
-      m_fields = (SQL_FIELD *)malloc(sizeof(SQL_FIELD) * m_num_fields);
-      m_fields_size = m_num_fields;
-
-      for (i = 0; i < m_num_fields; i++) {
-         Dmsg1(500, "filling field %d\n", i);
-         m_fields[i].name = INGfname(m_result, i);
-         m_fields[i].type = INGftype(m_result, i);
-         m_fields[i].flags = 0;
-
-         /*
-          * For a given column, find the max length.
-          */
-         max_length = 0;
-         for (j = 0; j < m_num_rows; j++) {
-            if (INGgetisnull(m_result, j, i)) {
-                this_length = 4;        /* "NULL" */
-            } else {
-                this_length = cstrlen(INGgetvalue(m_result, j, i));
-            }
-
-            if (max_length < this_length) {
-               max_length = this_length;
-            }
-         }
-         m_fields[i].max_length = max_length;
-
-         Dmsg4(500, "sql_fetch_field finds field '%s' has length='%d' type='%d' and IsNull=%d\n",
-               m_fields[i].name, m_fields[i].max_length, m_fields[i].type, m_fields[i].flags);
-      }
-   }
-
-   /*
-    * Increment field number for the next time around
-    */
-   return &m_fields[m_field_number++];
-}
-
-bool B_DB_INGRES::sql_field_is_not_null(int field_type)
-{
-   switch (field_type) {
-   case 1:
-      return true;
-   default:
-      return false;
-   }
-}
-
-bool B_DB_INGRES::sql_field_is_numeric(int field_type)
-{
-   /*
-    * See ${II_SYSTEM}/ingres/files/eqsqlda.h for numeric types.
-    */
-   switch (field_type) {
-   case IISQ_DEC_TYPE:
-   case IISQ_INT_TYPE:
-   case IISQ_FLT_TYPE:
-      return true;
-   default:
-      return false;
-   }
-}
-
-/*
- * Escape strings so that Ingres is happy on COPY
- *
- *   NOTE! len is the length of the old string. Your new
- *         string must be long enough (max 2*old+1) to hold
- *         the escaped output.
- */
-static char *ingres_copy_escape(char *dest, char *src, size_t len)
-{
-   /* we have to escape \t, \n, \r, \ */
-   char c = '\0' ;
-
-   while (len > 0 && *src) {
-      switch (*src) {
-      case '\n':
-         c = 'n';
-         break;
-      case '\\':
-         c = '\\';
-         break;
-      case '\t':
-         c = 't';
-         break;
-      case '\r':
-         c = 'r';
-         break;
-      default:
-         c = '\0' ;
-      }
-
-      if (c) {
-         *dest = '\\';
-         dest++;
-         *dest = c;
-      } else {
-         *dest = *src;
-      }
-
-      len--;
-      src++;
-      dest++;
-   }
-
-   *dest = '\0';
-   return dest;
-}
-
-/* 
- * Returns true if OK
- *         false if failed
- */
-bool B_DB_INGRES::sql_batch_start(JCR *jcr)
-{
-   bool ok;
-
-   db_lock(this);
-   ok = sql_query("DECLARE GLOBAL TEMPORARY TABLE batch ("
-                           "FileIndex INTEGER,"
-                           "JobId INTEGER,"
-                           "Path VARBYTE(32000),"
-                           "Name VARBYTE(32000),"
-                           "LStat VARBYTE(255),"
-                           "MD5 VARBYTE(255),"
-                           "DeltaSeq SMALLINT)"
-                           " ON COMMIT PRESERVE ROWS WITH NORECOVERY");
-   db_unlock(this);
-   return ok;
-}
-
-/* 
- * Returns true if OK
- *         false if failed
- */
-bool B_DB_INGRES::sql_batch_end(JCR *jcr, const char *error)
-{
-   m_status = 0;
-   return true;
-}
-
-/* 
- * Returns true if OK
- *         false if failed
- */
-bool B_DB_INGRES::sql_batch_insert(JCR *jcr, ATTR_DBR *ar)
-{
-   size_t len;
-   const char *digest;
-   char ed1[50];
-
-   esc_name = check_pool_memory_size(esc_name, fnl*2+1);
-   db_escape_string(jcr, esc_name, fname, fnl);
-
-   esc_path = check_pool_memory_size(esc_path, pnl*2+1);
-   db_escape_string(jcr, esc_path, path, pnl);
-
-   if (ar->Digest == NULL || ar->Digest[0] == 0) {
-      digest = "0";
-   } else {
-      digest = ar->Digest;
-   }
-
-   len = 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);
-
-   return sql_query(cmd);
-}
-
-/*
- * Initialize database data structure. In principal this should
- * never have errors, or it is really fatal.
- */
-B_DB *db_init_database(JCR *jcr, const char *db_driver, const char *db_name, const char *db_user,
-                       const char *db_password, const char *db_address, int db_port,
-                       const char *db_socket, bool mult_db_connections, bool disable_batch_insert)
-{
-   B_DB_INGRES *mdb = NULL;
-
-   if (!db_user) {
-      Jmsg(jcr, M_FATAL, 0, _("A user name for Ingres must be supplied.\n"));
-      return NULL;
-   }
-
-   P(mutex);                          /* lock DB queue */
-   if (db_list && !mult_db_connections) {
-      /*
-       * Look to see if DB already open
-       */
-      foreach_dlist(mdb, db_list) {
-         if (mdb->db_match_database(db_driver, db_name, db_address, db_port)) {
-            Dmsg1(100, "DB REopen %s\n", db_name);
-            mdb->increment_refcount();
-            goto bail_out;
-         }
-      }
-   }
-
-   Dmsg0(100, "db_init_database first time\n");
-   mdb = New(B_DB_INGRES(jcr, db_driver, db_name, db_user, db_password, db_address,
-                         db_port, db_socket, mult_db_connections, disable_batch_insert));
-
-bail_out:
-   V(mutex);
-   return mdb;
-}
-#endif /* HAVE_INGRES */
diff --git a/src/cats/ingres.in b/src/cats/ingres.in
deleted file mode 100755
index 984cc0f..0000000
--- a/src/cats/ingres.in
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-#
-# shell script to create Bacula PostgreSQL tables
-#
-bindir=@INGRES_BINDIR@
-db_name=@db_name@
-
-sql $* ${db_name}
diff --git a/src/cats/install-default-backend.in b/src/cats/install-default-backend.in
index 80eae6a..0491d94 100755
--- a/src/cats/install-default-backend.in
+++ b/src/cats/install-default-backend.in
@@ -1,4 +1,20 @@
 #!/bin/sh
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
+
 
 LIBTOOL="@BUILD_DIR@/libtool"
 
@@ -34,7 +50,7 @@ if [ -f ${install_dir}/libbaccats-${default_backend}-${library_version}${SHLIB_E
    # always work.
    #
    ln -s libbaccats-${default_backend}${SHLIB_EXT} \
-         ${install_dir}/libbaccats-${library_version}${SHLIB_EXT}
+	 ${install_dir}/libbaccats-${library_version}${SHLIB_EXT}
 fi
 
 exit 0
diff --git a/src/cats/make_bacula_tables.in b/src/cats/make_bacula_tables.in
index 0d3539c..951e59d 100755
--- a/src/cats/make_bacula_tables.in
+++ b/src/cats/make_bacula_tables.in
@@ -3,6 +3,21 @@
 # This routine makes the appropriately configured
 # Bacula tables for PostgreSQL, Ingres, MySQL, or SQLite.
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 default_db_type=@DEFAULT_DB_TYPE@
 
diff --git a/src/cats/make_catalog_backup.in b/src/cats/make_catalog_backup.in
index 58ed650..9731732 100755
--- a/src/cats/make_catalog_backup.in
+++ b/src/cats/make_catalog_backup.in
@@ -1,5 +1,20 @@
 #!/bin/sh
 #
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
+#
 # This script dumps your Bacula catalog in ASCII format
 # It works for MySQL, SQLite, and PostgreSQL
 #
diff --git a/src/cats/make_catalog_backup.in.patch b/src/cats/make_catalog_backup.in.patch
deleted file mode 100644
index 08988b2..0000000
--- a/src/cats/make_catalog_backup.in.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- make_catalog_backup.in      2006-12-09 10:17:05.000000000 -0500
-++ make_catalog_backup.in.fixed        2006-12-09 10:24:40.000000000 -0500
-@@ -56,8 +56,7 @@ rm -f $1.sql
- 
- case ${db_type} in
-   sqlite3)
--    BINDIR=@SQLITE_BINDIR@
--    echo ".dump" | ${BINDIR}/sqlite3 $1.db >$1.sql
-+    echo ".dump" | /opt/bacula/sqlite/sqlite3 $1.db >$1.sql
-     ;;
-   mysql)
-     BINDIR=@MYSQL_BINDIR@
diff --git a/src/cats/make_catalog_backup.pl.in b/src/cats/make_catalog_backup.pl.in
index efb91fd..9a322aa 100644
--- a/src/cats/make_catalog_backup.pl.in
+++ b/src/cats/make_catalog_backup.pl.in
@@ -12,32 +12,19 @@ use strict;
 
 =head1 LICENSE
 
-   Bacula� - The Network Backup Solution
+   Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 plus additions
-   that are listed in the file LICENSE.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
-   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 Zurich,
-   Switzerland, email:ftf at fsfeurope.org.
+   Bacula® is a registered trademark of Kern Sibbald.
 
 =cut
 
@@ -86,7 +73,7 @@ sub dump_mysql
     my %args = @_;
     umask(0077);
     unlink("$wd/.my.cnf");
-    open(MY, ">$wd/.my.cnf") 
+    open(MY, ">$wd/.my.cnf")
         or die "Can't open $wd/.my.cnf for writing $@";
 
     $args{db_address} = $args{db_address} || "localhost";
@@ -103,7 +90,7 @@ password=$args{db_password}
     if ($args{db_port}) {
         print MY "port=$args{db_port}\n";
     }
-    
+
     close(MY);
 
     exec("HOME='$wd' mysqldump -f --opt $args{db_name} > '$wd/$args{db_name}.sql'");
diff --git a/src/cats/make_ingres_catalog_backup.in b/src/cats/make_ingres_catalog_backup.in
deleted file mode 100755
index bcd0ce1..0000000
--- a/src/cats/make_ingres_catalog_backup.in
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/sh
-#
-# shell script to make a dump of the bacula Ingres database using copydb and make
-# a base64 encoded tar of the content.
-#
-
-bindir=@INGRES_BINDIR@
-PATH="$bindir:$PATH"
-db_name=${db_name:- at db_name@}
-db_user=${db_user:- at db_user@}
-working_dir="@working_dir@"
-
-#
-# Source the Ingres settings when they exist.
-#
-[ -f ${bindir}/../../.ingIIsh  ] && . ${bindir}/../../.ingIIsh 
-
-#
-# See if the dumpdir exists.
-#
-[ ! -d ${working_dir}/ingres_dump ] && mkdir -p ${working_dir}/ingres_dump
-
-#
-# Generate the copy.in and copy.out file
-#
-copydb \
-${db_name} \
--u${db_user} \
--dest=${working_dir}/ingres_dump \
--d ${working_dir}/ingres_dump \
-> /dev/null 2>&1
-
-#
-# If copydb created a copy.out file run it.
-#
-if [ -f ${working_dir}/ingres_dump/copy.out ]; then
-   #
-   # Run the sql to create the dumps of the tables.
-   #
-   sql \
-   -u${db_user} \
-   ${db_name} \
-   < ${working_dir}/ingres_dump/copy.out \
-   > /dev/null 2>&1 && rm ${working_dir}/ingres_dump/copy.out
-
-   #
-   # Tar up the dump and uuencode it.
-   #
-   cd ${working_dir}/ingres_dump || exit 1
-   case `uname -s` in
-      Linux)
-         tar cf - . | gzip -c | base64 
-         ;;
-      SunOS)
-         tar cf - . | gzip -c | uuencode -m -
-         ;;
-      *)
-         echo "Unsupported OS type encountered, `uname -s`"
-         exit 1
-         ;;
-   esac
-   cd /
-
-   rm -rf ${working_dir}/ingres_dump
-fi
-
-exit 0
diff --git a/src/cats/make_ingres_tables.in b/src/cats/make_ingres_tables.in
deleted file mode 100755
index ecd518f..0000000
--- a/src/cats/make_ingres_tables.in
+++ /dev/null
@@ -1,508 +0,0 @@
-#!/bin/sh
-#
-# shell script to create Bacula Ingres tables
-#
-bindir=@INGRES_BINDIR@
-PATH="$bindir:$PATH"
-db_name=${db_name:- at db_name@}
-db_user=${db_user:- at db_user@}
-
-sql -u${db_user} $* ${db_name} <<END-OF-DATA
-
---
--- When using batch insert make sure you adhere to the following
--- minimum Ingres version:
---
--- Ingres 9.2 or higher with the fix for bug 123652 and bug 117256
---   For Solaris x86 this is Ingres 9.2. + patch 13785 or higher
---   For Linux x86_64 this is Ingres 9.2 + patch 13790 or higher
---
-
---
--- As it seems the upper limit for a VARCHAR/VARBYTE column is 32000 bytes
--- We could have used a BLOB as storage type which can go up to 2 Gb but
--- you cannot create indexes based on a BLOB (and we don't seem to be able
--- to limit the part of the field which should be used for the index to lets
--- say 255 chars like we can in MySQL) and the storage for a BLOB is also far
--- from optimal so for now we decided that the upper limit for File and Path
--- fields is the 32000 bytes.
---
--- To use the big VARBYTE colums we need the bigger page sizes enabled in
--- ingres (which at this time supports 2K, 4K, 8K, 16K, 32K, 64K)
--- Make sure you have the following settings in your
--- ${II_SYSTEM}/ingres/files/config.dat
---
--- ii.<nodename>.dbms.private.*.cache.p8k_status: ON
--- ii.<nodename>.dbms.private.*.cache.p16k_status: ON
--- ii.<nodename>.dbms.private.*.cache.p32k_status: ON
--- ii.<nodename>.dbms.private.*.cache.p64k_status: ON
--- ii.<nodename>.rcp.dmf_cache_size8k: 200
--- ii.<nodename>.rcp.dmf_cache_size16k: 200
--- ii.<nodename>.rcp.dmf_cache_size32k: 200
--- ii.<nodename>.rcp.dmf_cache_size64k: 200
---
-
-SET AUTOCOMMIT ON\g
-
-CREATE SEQUENCE Filename_Seq;
-CREATE TABLE Filename
-(
-   FilenameId		INTEGER 	NOT NULL DEFAULT Filename_Seq.nextval,
-   Name 		VARBYTE(32000)	NOT NULL,
-   PRIMARY KEY (FilenameId)
-);
-
-CREATE UNIQUE INDEX (filename_name_idx ON filename (Name) WITH STRUCTURE=HASH,PAGE_SIZE=32768);
-
-CREATE SEQUENCE Path_Seq;
-CREATE TABLE path
-(
-   Pathid		INTEGER 	NOT NULL DEFAULT Path_Seq.nextval,
-   Path 		VARBYTE(32000)	NOT NULL,
-   PRIMARY KEY (Pathid)
-);
-
-CREATE UNIQUE INDEX (path_name_idx ON path (Path) WITH STRUCTURE=HASH,PAGE_SIZE=32768);
-
-CREATE SEQUENCE File_Seq;
-CREATE TABLE file
-(
-   FileId		BIGINT		NOT NULL DEFAULT File_Seq.nextval,
-   FileIndex		INTEGER 	NOT NULL DEFAULT 0,
-   JobId		INTEGER 	NOT NULL,
-   PathId		INTEGER 	NOT NULL,
-   FilenameId		INTEGER 	NOT NULL,
-   DeltaSeq		INTEGER 	NOT NULL DEFAULT 0,
-   MarkId		INTEGER 	NOT NULL DEFAULT 0,
-   LStat		VARBYTE(255)	NOT NULL,
-   Md5			VARBYTE(255)	NOT NULL,
-   PRIMARY KEY (fileid)
-);
-
-CREATE INDEX file_jpfid_idx ON File (jobid, pathid, filenameid);
-
--- If you need performances, you can remove this index
--- the database engine is able to use the composite index
--- to find all records with a given JobId
-CREATE INDEX file_jobid_idx ON File(jobid);
-
-CREATE SEQUENCE RestoreObject_Seq;
-CREATE TABLE RestoreObject (
-   RestoreObjectId	INTEGER 	NOT NULL DEFAULT RestoreObject_Seq.nextval,
-   ObjectName		VARBYTE(128)	NOT NULL,
-   RestoreObject	BLOB		NOT NULL,
-   PluginName		VARBYTE(128)	NOT NULL,
-   ObjectLength 	INTEGER 	DEFAULT 0,
-   ObjectFullLength	INTEGER 	DEFAULT 0,
-   ObjectIndex		INTEGER 	DEFAULT 0,
-   ObjectType		INTEGER 	DEFAULT 0,
-   FileIndex		INTEGER 	DEFAULT 0,
-   JobId		INTEGER,
-   ObjectCompression	INTEGER 	DEFAULT 0,
-   PRIMARY KEY (RestoreObjectId)
-);
-
-CREATE INDEX restore_jobid_idx on RestoreObject(JobId);
-
-CREATE SEQUENCE Job_Seq;
-CREATE TABLE Job
-(
-   JobId		INTEGER 	NOT NULL DEFAULT Job_Seq.nextval,
-   Job			VARBYTE(128)	NOT NULL,
-   Name 		VARBYTE(128)	NOT NULL,
-   Type 		CHAR(1) 	NOT NULL,
-   Level		CHAR(1) 	NOT NULL,
-   ClientId		INTEGER 	DEFAULT 0,
-   JobStatus		CHAR(1) 	NOT NULL,
-   SchedTime		TIMESTAMP WITHOUT TIME ZONE,
-   StartTime		TIMESTAMP WITHOUT TIME ZONE,
-   EndTime		TIMESTAMP WITHOUT TIME ZONE,
-   RealEndTime		TIMESTAMP WITHOUT TIME ZONE,
-   JobTDate		BIGINT		DEFAULT 0,
-   VolSessionId 	INTEGER 	DEFAULT 0,
-   volSessionTime	INTEGER 	DEFAULT 0,
-   JobFiles		INTEGER 	DEFAULT 0,
-   JobBytes		BIGINT		DEFAULT 0,
-   ReadBytes		BIGINT		DEFAULT 0,
-   JobErrors		INTEGER 	DEFAULT 0,
-   JobMissingFiles	INTEGER 	DEFAULT 0,
-   PoolId		INTEGER 	DEFAULT 0,
-   FilesetId		INTEGER 	DEFAULT 0,
-   PriorJobid		INTEGER 	DEFAULT 0,
-   PurgedFiles		SMALLINT	DEFAULT 0,
-   HasBase		SMALLINT	DEFAULT 0,
-   HasCache		SMALLINT	DEFAULT 0,
-   Reviewed		SMALLINT	DEFAULT 0,
-   Comment		VARBYTE(4096),
-   PRIMARY KEY (JobId)
-);
-
-CREATE INDEX job_name_idx ON Job (Name);
-
--- Create a table like Job for long term statistics 
-CREATE SEQUENCE JobHisto_Seq;
-CREATE TABLE JobHisto
-(
-   JobId		INTEGER 	NOT NULL DEFAULT JobHisto_Seq.nextval,
-   Job			VARBYTE(128)	NOT NULL,
-   Name 		VARBYTE(128)	NOT NULL,
-   Type 		CHAR(1) 	NOT NULL,
-   Level		CHAR(1) 	NOT NULL,
-   ClientId		INTEGER 	DEFAULT 0,
-   JobStatus		CHAR(1) 	NOT NULL,
-   SchedTime		TIMESTAMP WITHOUT TIME ZONE,
-   StartTime		TIMESTAMP WITHOUT TIME ZONE,
-   EndTime		TIMESTAMP WITHOUT TIME ZONE,
-   RealEndTime		TIMESTAMP WITHOUT TIME ZONE,
-   JobTDate		BIGINT		DEFAULT 0,
-   VolSessionId 	INTEGER 	DEFAULT 0,
-   volSessionTime	INTEGER 	DEFAULT 0,
-   JobFiles		INTEGER 	DEFAULT 0,
-   JobBytes		BIGINT		DEFAULT 0,
-   ReadBytes		BIGINT		DEFAULT 0,
-   JobErrors		INTEGER 	DEFAULT 0,
-   JobMissingFiles	INTEGER 	DEFAULT 0,
-   PoolId		INTEGER 	DEFAULT 0,
-   FilesetId		INTEGER 	DEFAULT 0,
-   PriorJobid		INTEGER 	DEFAULT 0,
-   PurgedFiles		SMALLINT	DEFAULT 0,
-   HasBase		SMALLINT	DEFAULT 0,
-   HasCache		SMALLINT	DEFAULT 0,
-   Reviewed		SMALLINT	DEFAULT 0,
-   Comment		VARBYTE(4096),
-   PRIMARY KEY (JobId)
-);
-
-CREATE INDEX jobhisto_idx ON JobHisto (StartTime);
-
-CREATE SEQUENCE Location_Seq;
-CREATE TABLE Location (
-   LocationId		INTEGER 	NOT NULL DEFAULT Location_Seq.nextval,
-   Location		VARBYTE(128)	NOT NULL,
-   Cost 		INTEGER 	DEFAULT 0,
-   Enabled		SMALLINT,
-   PRIMARY KEY (LocationId)
-);
-
-CREATE SEQUENCE Fileset_Seq;
-CREATE TABLE Fileset
-(
-   FilesetId		INTEGER 	NOT NULL DEFAULT Fileset_Seq.nextval,
-   Fileset		VARBYTE(128)	NOT NULL,
-   Md5			VARBYTE(128)	NOT NULL,
-   Createtime		TIMESTAMP WITHOUT TIME ZONE NOT NULL,
-   PRIMARY KEY (filesetid)
-);
-
-CREATE INDEX fileset_name_idx ON Fileset (fileset);
-
-CREATE SEQUENCE JobMedia_Seq;
-CREATE TABLE JobMedia
-(
-   JobMediaId		INTEGER 	NOT NULL DEFAULT JobMedia_Seq.nextval,
-   JobId		INTEGER 	NOT NULL,
-   MediaId		INTEGER 	NOT NULL,
-   FirstIndex		INTEGER 	DEFAULT 0,
-   LastIndex		INTEGER 	DEFAULT 0,
-   StartFile		INTEGER 	DEFAULT 0,
-   EndFile		INTEGER 	DEFAULT 0,
-   StartBlock		BIGINT		DEFAULT 0,
-   EndBlock		BIGINT		DEFAULT 0,
-   VolIndex		INTEGER 	DEFAULT 0,
-   PRIMARY KEY (jobmediaid)
-);
-
-CREATE INDEX job_media_job_id_media_id_idx ON JobMedia (jobid, mediaid);
-
-CREATE SEQUENCE Media_Seq;
-CREATE TABLE Media
-(
-    MediaId		INTEGER 	NOT NULL DEFAULT Media_Seq.nextval,
-    VolumeName		VARBYTE(128)	NOT NULL,
-    Slot		INTEGER 	DEFAULT 0,
-    PoolId		INTEGER 	DEFAULT 0,
-    MediaType		VARBYTE(128)	NOT NULL,
-    MediaTypeId 	INTEGER 	DEFAULT 0,
-    LabelType		INTEGER 	DEFAULT 0,
-    FirstWritten	TIMESTAMP WITHOUT TIME ZONE,
-    LastWritten 	TIMESTAMP WITHOUT TIME ZONE,
-    LabelDate		TIMESTAMP WITHOUT TIME ZONE,
-    VolJobs		INTEGER 	DEFAULT 0,
-    VolFiles		INTEGER 	DEFAULT 0,
-    VolBlocks		INTEGER 	DEFAULT 0,
-    VolMounts		INTEGER 	DEFAULT 0,
-    VolBytes		BIGINT		DEFAULT 0,
-    VolParts		INTEGER 	DEFAULT 0,
-    VolErrors		INTEGER 	DEFAULT 0,
-    VolWrites		INTEGER 	DEFAULT 0,
-    VolCapacitybytes	BIGINT		DEFAULT 0,
-    VolStatus		VARBYTE(128)	NOT NULL
-	CHECK (volstatus in ('Full','Archive','Append',
-	      'Recycle','Purged','Read-Only','Disabled',
-	      'Error','Busy','Used','Cleaning','Scratch')),
-    Enabled		SMALLINT	DEFAULT 1,
-    Recycle		SMALLINT	DEFAULT 0,
-    ActionOnPurge	SMALLINT	DEFAULT 0,
-    VolRetention	BIGINT		DEFAULT 0,
-    VolUseDuration	BIGINT		DEFAULT 0,
-    MaxVolJobs		INTEGER 	DEFAULT 0,
-    MaxVolFiles 	INTEGER 	DEFAULT 0,
-    MaxVolBytes 	BIGINT		DEFAULT 0,
-    InChanger		SMALLINT	DEFAULT 0,
-    StorageId		BIGINT		DEFAULT 0,
-    DeviceId		INTEGER 	DEFAULT 0,
-    MediaAddressing	SMALLINT	DEFAULT 0,
-    VolReadTime 	BIGINT		DEFAULT 0,
-    VolWriteTime	BIGINT		DEFAULT 0,
-    EndFile		INTEGER 	DEFAULT 0,
-    EndBlock		BIGINT		DEFAULT 0,
-    LocationId		INTEGER 	DEFAULT 0,
-    RecycleCount	INTEGER 	DEFAULT 0,
-    InitialWrite	TIMESTAMP WITHOUT TIME ZONE,
-    ScratchPoolId	INTEGER 	DEFAULT 0,
-    RecyclePoolId	INTEGER 	DEFAULT 0,
-    Comment		VARBYTE(4096),
-    PRIMARY KEY (mediaid)
-);
-
-CREATE UNIQUE INDEX media_volumename_id ON Media (VolumeName);
-
-CREATE SEQUENCE MediaType_Seq;
-CREATE TABLE MediaType (
-   MediaTypeId		INTEGER 	NOT NULL DEFAULT MediaType_Seq.nextval,
-   MediaType		VARBYTE(128)	NOT NULL,
-   ReadOnly		INTEGER 	NOT NULL DEFAULT 0,
-   PRIMARY KEY (MediaTypeId)
-);
-
-CREATE SEQUENCE Storage_Seq;
-CREATE TABLE Storage (
-   StorageId		INTEGER 	NOT NULL DEFAULT Storage_Seq.nextval,
-   Name 		VARBYTE(128)	NOT NULL,
-   AutoChanger		INTEGER 	NOT NULL DEFAULT 0,
-   PRIMARY KEY (StorageId)
-);
-
-CREATE SEQUENCE Device_Seq;
-CREATE TABLE Device (
-   DeviceId			INTEGER 	NOT NULL DEFAULT Device_Seq.nextval,
-   Name 			VARBYTE(128)	NOT NULL,
-   MediaTypeId			INTEGER 	NOT NULL,
-   StorageId			INTEGER 	NOT NULL,
-   DevMounts			INTEGER 	NOT NULL DEFAULT 0,
-   DevReadBytes 		BIGINT		NOT NULL DEFAULT 0,
-   DevWriteBytes		BIGINT		NOT NULL DEFAULT 0,
-   DevReadBytesSinceCleaning	BIGINT		NOT NULL DEFAULT 0,
-   DevWriteBytesSinceCleaning	BIGINT		NOT NULL DEFAULT 0,
-   DevReadTime			BIGINT		NOT NULL DEFAULT 0,
-   DevWriteTime 		BIGINT		NOT NULL DEFAULT 0,
-   DevReadTimeSinceCleaning	BIGINT		NOT NULL DEFAULT 0,
-   DevWriteTimeSinceCleaning	BIGINT		NOT NULL DEFAULT 0,
-   CleaningDate 		TIMESTAMP WITHOUT TIME ZONE,
-   CleaningPeriod		BIGINT		NOT NULL DEFAULT 0,
-   PRIMARY KEY (DeviceId)
-);
-
-CREATE SEQUENCE Pool_Seq;
-CREATE TABLE Pool
-(
-   PoolId		INTEGER 	NOT NULL DEFAULT pool_Seq.nextval,
-   Name 		VARBYTE(128)	NOT NULL,
-   NumVols		INTEGER 	DEFAULT 0,
-   MaxVols		INTEGER 	DEFAULT 0,
-   UseOnce		SMALLINT	DEFAULT 0,
-   UseCatalog		SMALLINT	DEFAULT 0,
-   AcceptAnyVolume	SMALLINT	DEFAULT 0,
-   VolRetention 	BIGINT		DEFAULT 0,
-   VolUseDuration	BIGINT		DEFAULT 0,
-   MaxVolJobs		INTEGER 	DEFAULT 0,
-   MaxVolFiles		INTEGER 	DEFAULT 0,
-   MaxVolBytes		BIGINT		DEFAULT 0,
-   AutoPrune		SMALLINT	DEFAULT 0,
-   Recycle		SMALLINT	DEFAULT 0,
-   ActionOnPurge	SMALLINT	DEFAULT 0,
-   PoolType		VARBYTE(32)
-	CHECK (pooltype in ('Backup','Copy','Cloned','Archive','Migration','Scratch')),
-   LabelType		INTEGER 	DEFAULT 0,
-   LabelFormat		VARBYTE(128)	NOT NULL,
-   Enabled		SMALLINT	DEFAULT 1,
-   ScratchPoolId	INTEGER 	DEFAULT 0,
-   RecyclePoolId	INTEGER 	DEFAULT 0,
-   NextPoolId		INTEGER 	DEFAULT 0,
-   MigrationHighBytes	BIGINT		DEFAULT 0,
-   MigrationLowBytes	BIGINT		DEFAULT 0,
-   MigrationTime	BIGINT		DEFAULT 0,
-   PRIMARY KEY (poolid)
-);
-
-CREATE INDEX pool_name_idx ON Pool (name);
-
-CREATE SEQUENCE Client_Seq;
-CREATE TABLE Client
-(
-   ClientId		INTEGER 	NOT NULL DEFAULT Client_Seq.nextval,
-   Name 		VARBYTE(128)	NOT NULL,
-   Uname		VARBYTE(256)	NOT NULL,
-   AutoPrune		SMALLINT	DEFAULT 0,
-   FileRetention	BIGINT		DEFAULT 0,
-   JobRetention 	BIGINT		DEFAULT 0,
-   PRIMARY KEY (clientid)
-);
-
-CREATE UNIQUE INDEX client_name_idx ON Client (Name);
-
-CREATE SEQUENCE Log_Seq;
-CREATE TABLE Log
-(
-   LogId		INTEGER 	NOT NULL DEFAULT Log_Seq.nextval,
-   JobId		INTEGER 	NOT NULL,
-   Time 		TIMESTAMP WITHOUT TIME ZONE,
-   LogText		VARBYTE(4096)		NOT NULL,
-   PRIMARY KEY (LogId)
-);
-CREATE INDEX log_name_idx ON Log (JobId);
-
-CREATE SEQUENCE LocationLog_Seq;
-CREATE TABLE LocationLog (
-   LocLogId		INTEGER 	NOT NULL DEFAULT LocationLog_Seq.nextval,
-   Date 		TIMESTAMP WITHOUT TIME ZONE,
-   Comment		VARBYTE(4096)	NOT NULL,
-   MediaId		INTEGER 	DEFAULT 0,
-   LocationId		INTEGER 	DEFAULT 0,
-   NewVolStatus 	VARBYTE(32)	NOT NULL
-	CHECK (newvolstatus in ('Full','Archive','Append',
-	      'Recycle','Purged','Read-Only','Disabled',
-	      'Error','Busy','Used','Cleaning','Scratch')),
-   NewEnabled		SMALLINT,
-   PRIMARY KEY (LocLogId)
-);
-
-CREATE TABLE Counters
-(
-   Counter		VARBYTE(128)	NOT NULL,
-   MinValue		INTEGER 	DEFAULT 0,
-   MaxValue		INTEGER 	DEFAULT 0,
-   CurrentValue 	INTEGER 	DEFAULT 0,
-   WrapCounter		VARBYTE(128)	NOT NULL,
-   PRIMARY KEY (counter)
-);
-
-CREATE SEQUENCE BaseFiles_Seq;
-CREATE TABLE BaseFiles
-(
-   BaseId		INTEGER 	NOT NULL DEFAULT BaseFiles_Seq.nextval,
-   JobId		INTEGER 	NOT NULL,
-   FileId		BIGINT		NOT NULL,
-   FileIndex		INTEGER,
-   BaseJobid		INTEGER,
-   PRIMARY KEY (BaseId)
-);
-
-CREATE INDEX basefiles_jobid_idx ON BaseFiles (JobId);
-
-CREATE TABLE unsavedfiles
-(
-   UnsavedId		INTEGER 	NOT NULL,
-   JobId		INTEGER 	NOT NULL,
-   PathId		INTEGER 	NOT NULL,
-   FilenameId		INTEGER 	NOT NULL,
-   PRIMARY KEY (UnsavedId)
-);
-
-CREATE TABLE CDImages 
-(
-   MediaId		INTEGER 	NOT NULL,
-   LastBurn		TIMESTAMP WITHOUT TIME ZONE NOT NULL,
-   PRIMARY KEY (MediaId)
-);
-
-CREATE TABLE PathHierarchy
-(
-   PathId		INTEGER 	NOT NULL,
-   PPathId		INTEGER 	NOT NULL,
-   CONSTRAINT pathhierarchy_pkey PRIMARY KEY (PathId)
-);
-
-CREATE INDEX pathhierarchy_ppathid ON PathHierarchy (PPathId);
-
-CREATE TABLE PathVisibility
-(
-   PathId		INTEGER 	NOT NULL,
-   JobId		INTEGER 	NOT NULL,
-   Size 		BIGINT		DEFAULT 0,
-   Files		INTEGER 	DEFAULT 0,
-   CONSTRAINT pathvisibility_pkey PRIMARY KEY (JobId, PathId)
-);
-CREATE INDEX pathvisibility_jobid ON PathVisibility (JobId);
-
-CREATE TABLE version
-(
-   versionid		INTEGER 	NOT NULL
-);
-
-CREATE TABLE Status (
-   JobStatus		CHAR(1) 	NOT NULL,
-   JobStatusLong	VARBYTE(128),
-   Severity		INTEGER,
-   PRIMARY KEY (JobStatus)
-);
-
-\g
-
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('C', 'Created, not yet running',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('R', 'Running',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('B', 'Blocked',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('T', 'Completed successfully', 10);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('E', 'Terminated with errors', 25);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('e', 'Non-fatal error',20);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('f', 'Fatal error',100);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('D', 'Verify found differences',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('A', 'Canceled by user',90);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('F', 'Waiting for Client',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('S', 'Waiting for Storage daemon',15);
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('m', 'Waiting for new media');
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('M', 'Waiting for media mount',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('s', 'Waiting for storage resource',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('j', 'Waiting for job resource',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('c', 'Waiting for client resource',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('d', 'Waiting on maximum jobs',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('t', 'Waiting on start time',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('p', 'Waiting on higher priority jobs',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('a', 'SD despooling attributes',15);
-INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
-   ('i', 'Doing batch insert file records',15);
-
-INSERT INTO Version (VersionId) VALUES (@BDB_VERSION@);
-
--- Make sure we have appropriate permissions
-\g
-
-END-OF-DATA
-pstat=$?
-if test $pstat = 0; 
-then
-   echo "Creation of Bacula Ingres tables succeeded."
-else
-   echo "Creation of Bacula Ingres tables failed."
-fi
-exit $pstat
diff --git a/src/cats/make_mysql_tables.in b/src/cats/make_mysql_tables.in
index 0a94b60..19c5cbf 100644
--- a/src/cats/make_mysql_tables.in
+++ b/src/cats/make_mysql_tables.in
@@ -6,6 +6,21 @@
 #   You won't get any support for performance issue if you changed the default
 #   schema.
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 bindir=@MYSQL_BINDIR@
 PATH="$bindir:$PATH"
 db_name=${db_name:- at db_name@}
diff --git a/src/cats/make_postgresql_tables.in b/src/cats/make_postgresql_tables.in
index 9e57088..bc5435c 100644
--- a/src/cats/make_postgresql_tables.in
+++ b/src/cats/make_postgresql_tables.in
@@ -6,6 +6,21 @@
 #   You won't get any support for performance issue if you changed the default
 #   schema.
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 bindir=@POSTGRESQL_BINDIR@
 PATH="$bindir:$PATH"
 db_name=${db_name:- at db_name@}
@@ -53,7 +68,7 @@ CREATE TABLE File
     JobId	      integer	  not null,
     PathId	      integer	  not null,
     FilenameId	      integer	  not null,
-    DeltaSeq	      smallint    not null  default 0,
+    DeltaSeq	      smallint	  not null  default 0,
     MarkId	      integer	  not null  default 0,
     LStat	      text	  not null,
     Md5 	      text	  not null,
diff --git a/src/cats/make_sqlite3_tables.in b/src/cats/make_sqlite3_tables.in
index 6489938..b87be08 100644
--- a/src/cats/make_sqlite3_tables.in
+++ b/src/cats/make_sqlite3_tables.in
@@ -1,6 +1,21 @@
 #!/bin/sh
 #
 # shell script to create Bacula SQLite tables
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 bindir=@SQLITE_BINDIR@
 PATH="$bindir:$PATH"
diff --git a/src/cats/myingres.c b/src/cats/myingres.c
deleted file mode 100644
index e13e751..0000000
--- a/src/cats/myingres.c
+++ /dev/null
@@ -1,912 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-   Copyright (C) 2009-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.
-*/
-/*
- * Bacula Catalog Database routines specific to Ingres
- *   These are Ingres specific routines
- *
- *    Stefan Reddig, June 2009 with help of Marco van Wieringen April 2010
- */
-#include "bacula.h"
-/* # line 37 "myingres.sc" */	
-#ifdef HAVE_INGRES
-#include <eqpname.h>
-#include <eqdefcc.h>
-#include <eqsqlca.h>
-#include <eqsqlda.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include "myingres.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-IISQLCA *IIsqlca();
-#ifdef __cplusplus
-}
-#endif
-#define sqlca (*(IIsqlca()))
-
-/*
- * ---Implementations---
- */
-int INGgetCols(INGconn *dbconn, const char *query, bool explicit_commit)
-{
-/* # line 52 "myingres.sc" */	
-  
-  int sess_id;
-  char *stmt;
-/* # line 55 "myingres.sc" */	
-  
-   IISQLDA *sqlda;
-   int number = -1;
-   sqlda = (IISQLDA *)malloc(IISQDA_HEAD_SIZE + IISQDA_VAR_SIZE);
-   memset(sqlda, 0, (IISQDA_HEAD_SIZE + IISQDA_VAR_SIZE));
-   sqlda->sqln = number;
-   stmt = bstrdup(query);
-/* # line 68 "myingres.sc" */	/* host code */
-   /*
-    * Switch to the correct default session for this thread.
-    */
-   sess_id = dbconn->session_id;
-/* # line 72 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(sess_id),&sess_id);
-  }
-/* # line 74 "myingres.sc" */	/* prepare */
-  {
-    IIsqInit(&sqlca);
-    IIsqPrepare(0,(char *)"s1",sqlda,0,stmt);
-    if (sqlca.sqlcode < 0) 
-      goto bail_out;
-  }
-/* # line 78 "myingres.sc" */	/* host code */
-   number = sqlda->sqld;
-bail_out:
-   /*
-    * If explicit_commit is set we commit our work now.
-    */
-   if (explicit_commit) {
-/* # line 85 "myingres.sc" */	/* commit */
-  {
-    IIsqInit(&sqlca);
-    IIxact(3);
-  }
-/* # line 86 "myingres.sc" */	/* host code */
-   }
-   /*
-    * Switch to no default session for this thread.
-    */
-/* # line 91 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(-97),(void *)IILQint(-97));
-  }
-/* # line 92 "myingres.sc" */	/* host code */
-   free(stmt);
-   free(sqlda);
-   return number;
-}
-static inline IISQLDA *INGgetDescriptor(int numCols, const char *query)
-{
-/* # line 99 "myingres.sc" */	
-  
-  char *stmt;
-/* # line 101 "myingres.sc" */	
-  
-   int i;
-   IISQLDA *sqlda;
-   sqlda = (IISQLDA *)malloc(IISQDA_HEAD_SIZE + (numCols * IISQDA_VAR_SIZE));
-   memset(sqlda, 0, (IISQDA_HEAD_SIZE + (numCols * IISQDA_VAR_SIZE)));
-   sqlda->sqln = numCols;
-   stmt = bstrdup(query);
-/* # line 112 "myingres.sc" */	/* prepare */
-  {
-    IIsqInit(&sqlca);
-    IIsqPrepare(0,(char *)"s2",sqlda,0,stmt);
-  }
-/* # line 114 "myingres.sc" */	/* host code */
-   for (i = 0; i < sqlda->sqld; ++i) {
-      /*
-       * Negative type indicates nullable columns, so an indicator
-       * is allocated, otherwise it's null
-       */
-      if (sqlda->sqlvar[i].sqltype > 0) {
-         sqlda->sqlvar[i].sqlind = NULL;
-      } else {
-         sqlda->sqlvar[i].sqlind = (short *)malloc(sizeof(short));
-      }
-      /*
-       * Alloc space for variable like indicated in sqllen
-       * for date types sqllen is always 0 -> allocate by type
-       */
-      switch (abs(sqlda->sqlvar[i].sqltype)) {
-      case IISQ_TSW_TYPE:
-         sqlda->sqlvar[i].sqldata = (char *)malloc(IISQ_TSW_LEN);
-         break;
-      case IISQ_TSWO_TYPE:
-         sqlda->sqlvar[i].sqldata = (char *)malloc(IISQ_TSWO_LEN);
-         break;
-      case IISQ_TSTMP_TYPE:
-         sqlda->sqlvar[i].sqldata = (char *)malloc(IISQ_TSTMP_LEN);
-         break;
-      default:
-         /*
-          * plus one to avoid zero mem allocs
-          */
-         sqlda->sqlvar[i].sqldata = (char *)malloc(sqlda->sqlvar[i].sqllen + 1);
-         break;
-      }
-   }
-   free(stmt);
-   return sqlda;
-}
-static void INGfreeDescriptor(IISQLDA *sqlda)
-{
-   int i;
-   if (!sqlda) {
-      return;
-   }
-   for (i = 0; i < sqlda->sqld; ++i) {
-      if (sqlda->sqlvar[i].sqldata) {
-         free(sqlda->sqlvar[i].sqldata);
-      }
-      if (sqlda->sqlvar[i].sqlind) {
-         free(sqlda->sqlvar[i].sqlind);
-      }
-   }
-   free(sqlda);
-}
-static inline int INGgetTypeSize(IISQLVAR *ingvar)
-{
-   int inglength = 0;
-   switch (ingvar->sqltype) {
-   case IISQ_TSWO_TYPE:
-      inglength = 20;
-      break;
-   case IISQ_TSW_TYPE:
-      inglength = 20;
-      break;
-   case IISQ_DTE_TYPE:
-      inglength = 25;
-      break;
-   case IISQ_MNY_TYPE:
-      inglength = 8;
-      break;
-   default:
-      inglength = ingvar->sqllen;
-      break;
-   }
-   return inglength;
-}
-static inline INGresult *INGgetINGresult(int numCols, const char *query)
-{
-   int i;
-   INGresult *ing_res;
-   ing_res = (INGresult *)malloc(sizeof(INGresult));
-   memset(ing_res, 0, sizeof(INGresult));
-   if ((ing_res->sqlda = INGgetDescriptor(numCols, query)) == NULL) {
-      return NULL;
-   }
-   ing_res->num_fields = ing_res->sqlda->sqld;
-   ing_res->num_rows = 0;
-   ing_res->first_row = NULL;
-   ing_res->status = ING_EMPTY_RESULT;
-   ing_res->act_row = NULL;
-   if (ing_res->num_fields) {
-      ing_res->fields = (INGRES_FIELD *)malloc(sizeof(INGRES_FIELD) * ing_res->num_fields);
-      memset(ing_res->fields, 0, sizeof(INGRES_FIELD) * ing_res->num_fields);
-      for (i = 0; i < ing_res->num_fields; ++i) {
-         ing_res->fields[i].name = (char *)malloc(ing_res->sqlda->sqlvar[i].sqlname.sqlnamel + 1);
-         bstrncpy(ing_res->fields[i].name, ing_res->sqlda->sqlvar[i].sqlname.sqlnamec, ing_res->sqlda->sqlvar[i].sqlname.sqlnamel + 1);
-         ing_res->fields[i].name[ing_res->sqlda->sqlvar[i].sqlname.sqlnamel] = '\0';
-         ing_res->fields[i].max_length = INGgetTypeSize(&ing_res->sqlda->sqlvar[i]);
-         ing_res->fields[i].type = abs(ing_res->sqlda->sqlvar[i].sqltype);
-         ing_res->fields[i].flags = (ing_res->sqlda->sqlvar[i].sqltype < 0) ? 1 : 0;
-      }
-   }
-   return ing_res;
-}
-static inline void INGfreeRowSpace(ING_ROW *row, IISQLDA *sqlda)
-{
-   int i;
-   if (row == NULL || sqlda == NULL) {
-      return;
-   }
-   for (i = 0; i < sqlda->sqld; ++i) {
-      if (row->sqlvar[i].sqldata) {
-         free(row->sqlvar[i].sqldata);
-      }
-      if (row->sqlvar[i].sqlind) {
-         free(row->sqlvar[i].sqlind);
-      }
-   }
-   free(row->sqlvar);
-   free(row);
-}
-static void INGfreeINGresult(INGresult *ing_res)
-{
-   int i;
-   int rows;
-   ING_ROW *rowtemp;
-   if (!ing_res) {
-      return;
-   }
-   /*
-    * Use of rows is a nasty workaround til I find the reason,
-    * why aggregates like max() don't work
-    */
-   rows = ing_res->num_rows;
-   ing_res->act_row = ing_res->first_row;
-   while (ing_res->act_row != NULL && rows > 0) {
-      rowtemp = ing_res->act_row->next;
-      INGfreeRowSpace(ing_res->act_row, ing_res->sqlda);
-      ing_res->act_row = rowtemp;
-      --rows;
-   }
-   if (ing_res->fields) {
-      for (i = 0; i < ing_res->num_fields; ++i) {
-         free(ing_res->fields[i].name);
-      }
-      free(ing_res->fields);
-   }
-   INGfreeDescriptor(ing_res->sqlda);
-   free(ing_res);
-}
-static inline ING_ROW *INGgetRowSpace(INGresult *ing_res)
-{
-   int i;
-   unsigned short len; /* used for VARCHAR type length */
-   unsigned short th, tm, ts;
-   IISQLDA *sqlda;
-   ING_ROW *row = NULL;
-   ING_TIMESTAMP *tsp;
-   IISQLVAR *vars = NULL;
-   row = (ING_ROW *)malloc(sizeof(ING_ROW));
-   memset(row, 0, sizeof(ING_ROW));
-   sqlda = ing_res->sqlda;
-   vars = (IISQLVAR *)malloc(sizeof(IISQLVAR) * sqlda->sqld);
-   memset(vars, 0, sizeof(IISQLVAR) * sqlda->sqld);
-   row->sqlvar = vars;
-   row->next = NULL;
-   for (i = 0; i < sqlda->sqld; ++i) {
-      /*
-       * Make strings out of the data, then the space and assign 
-       * (why string? at least it seems that way, looking into the sources)
-       */
-      vars[i].sqlind = (short *)malloc(sizeof(short));
-      if (sqlda->sqlvar[i].sqlind) {
-         memcpy(vars[i].sqlind,sqlda->sqlvar[i].sqlind,sizeof(short));
-      } else {
-         *vars[i].sqlind = NULL;
-      }
-      /*
-       * if sqlind pointer exists AND points to -1 -> column is 'null'
-       */
-      if ( *vars[i].sqlind && (*vars[i].sqlind == -1)) {
-         vars[i].sqldata = NULL;
-      } else {
-         switch (ing_res->fields[i].type) {
-         case IISQ_VCH_TYPE:
-         case IISQ_LVCH_TYPE:
-         case IISQ_VBYTE_TYPE:
-         case IISQ_LBYTE_TYPE:
-         case IISQ_NVCHR_TYPE:
-         case IISQ_LNVCHR_TYPE:
-            len = ((ING_VARCHAR *)sqlda->sqlvar[i].sqldata)->len;
-            vars[i].sqldata = (char *)malloc(len + 1);
-            memcpy(vars[i].sqldata,sqlda->sqlvar[i].sqldata + 2,len);
-            vars[i].sqldata[len] = '\0';
-            break;
-         case IISQ_CHA_TYPE:
-         case IISQ_BYTE_TYPE:
-         case IISQ_NCHR_TYPE:
-            vars[i].sqldata = (char *)malloc(ing_res->fields[i].max_length + 1);
-            memcpy(vars[i].sqldata,sqlda->sqlvar[i].sqldata,sqlda->sqlvar[i].sqllen);
-            vars[i].sqldata[ing_res->fields[i].max_length] = '\0';
-            break;
-         case IISQ_INT_TYPE:
-            switch (sqlda->sqlvar[i].sqllen) {
-            case 2:
-               vars[i].sqldata = (char *)malloc(6);
-               memset(vars[i].sqldata, 0, 6);
-               bsnprintf(vars[i].sqldata, 6, "%d",*(int16_t *)sqlda->sqlvar[i].sqldata);
-               break;
-            case 4:
-               vars[i].sqldata = (char *)malloc(11);
-               memset(vars[i].sqldata, 0, 11);
-               bsnprintf(vars[i].sqldata, 11, "%ld",*(int32_t *)sqlda->sqlvar[i].sqldata);
-               break;
-            case 8:
-               vars[i].sqldata = (char *)malloc(20);
-               memset(vars[i].sqldata, 0, 20);
-               bsnprintf(vars[i].sqldata, 20, "%lld",*(int64_t *)sqlda->sqlvar[i].sqldata);
-               break;
-            }
-            break;
-         case IISQ_TSTMP_TYPE:
-            vars[i].sqldata = (char *)malloc(IISQ_TSTMP_LEN + 1);
-            vars[i].sqldata[IISQ_TSTMP_LEN] = '\0';
-            break;
-         case IISQ_TSWO_TYPE:
-            tsp = (ING_TIMESTAMP *)sqlda->sqlvar[i].sqldata;
-            th = tsp->secs / 3600; /* hours */
-            tm = tsp->secs % 3600; /* remaining seconds */
-            tm = tm / 60; /* minutes */
-            ts = tsp->secs - (th * 3600) - (tm * 60); /* seconds */
-            vars[i].sqldata = (char *)malloc(IISQ_TSTMP_LEN + 1);
-            bsnprintf(vars[i].sqldata, IISQ_TSWO_LEN + 1,
-                      "%04u-%02u-%02u %02u:%02u:%02u",
-                      tsp->year, tsp->month, tsp->day, th, tm, ts);
-            break;
-         case IISQ_TSW_TYPE:
-            tsp = (ING_TIMESTAMP *)sqlda->sqlvar[i].sqldata;
-            th = tsp->secs / 3600; /* hours */
-            tm = tsp->secs % 3600; /* remaining seconds */
-            tm = tm / 60; /* minutes */
-            ts = tsp->secs - (th * 3600) - (tm * 60); /* seconds */
-            vars[i].sqldata = (char *)malloc(IISQ_TSW_LEN + 1);
-            bsnprintf(vars[i].sqldata, IISQ_TSW_LEN + 1,
-                      "%04u-%02u-%02u %02u:%02u:%02u",
-                      tsp->year, tsp->month, tsp->day, th, tm, ts);
-            break;
-         default:
-            Jmsg(NULL, M_FATAL, 0,
-                 "INGgetRowSpace: encountered unhandled database datatype %d please report this as a bug\n",
-                 ing_res->fields[i].type);
-            break;
-         }
-      }
-   }
-   return row;
-}
-static inline int INGfetchAll(INGresult *ing_res)
-{
-   ING_ROW *row;
-   IISQLDA *desc;
-   int linecount = -1;
-   desc = ing_res->sqlda;
-/* # line 409 "myingres.sc" */	/* open */
-  {
-    IIsqInit(&sqlca);
-    IIcsOpen((char *)"c2",20273,8927);
-    IIwritio(0,(short *)0,1,32,0,(char *)"s2");
-    IIcsQuery((char *)"c2",20273,8927);
-    if (sqlca.sqlcode < 0) 
-      goto bail_out;
-  }
-/* # line 413 "myingres.sc" */	/* host code */
-   linecount = 0;
-   do {
-/* # line 415 "myingres.sc" */	/* fetch */
-  {
-    IIsqInit(&sqlca);
-    if (IIcsRetScroll((char *)"c2",20273,8927,-1,-1) != 0) {
-      IIcsDaGet(0,desc);
-      IIcsERetrieve();
-    } /* IIcsRetrieve */
-  }
-/* # line 417 "myingres.sc" */	/* host code */
-      if (sqlca.sqlcode == 0 || sqlca.sqlcode == -40202) {
-         /*
-          * Allocate space for fetched row
-          */
-         row = INGgetRowSpace(ing_res);
-         /*
-          * Initialize list when encountered first time
-          */
-         if (ing_res->first_row == 0) {
-            ing_res->first_row = row; /* head of the list */
-            ing_res->first_row->next = NULL;
-            ing_res->act_row = ing_res->first_row;
-         }      
-         ing_res->act_row->next = row; /* append row to old act_row */
-         ing_res->act_row = row; /* set row as act_row */
-         row->row_number = linecount++;
-      }
-   } while ( (sqlca.sqlcode == 0) || (sqlca.sqlcode == -40202) );
-/* # line 438 "myingres.sc" */	/* close */
-  {
-    IIsqInit(&sqlca);
-    IIcsClose((char *)"c2",20273,8927);
-  }
-/* # line 440 "myingres.sc" */	/* host code */
-   ing_res->status = ING_COMMAND_OK;
-   ing_res->num_rows = linecount;
-bail_out:
-   return linecount;
-}
-static inline ING_STATUS INGresultStatus(INGresult *ing_res)
-{
-   if (ing_res == NULL) {
-      return ING_NO_RESULT;
-   } else {
-      return ing_res->status;
-   }
-}
-static void INGrowSeek(INGresult *ing_res, int row_number)
-{
-   ING_ROW *trow = NULL;
-   if (ing_res->act_row->row_number == row_number) {
-      return;
-   }
-   /*
-    * TODO: real error handling
-    */
-   if (row_number < 0 || row_number > ing_res->num_rows) {
-      return;
-   }
-   for (trow = ing_res->first_row; trow->row_number != row_number; trow = trow->next) ;
-   ing_res->act_row = trow;
-   /*
-    * Note - can be null - if row_number not found, right?
-    */
-}
-char *INGgetvalue(INGresult *ing_res, int row_number, int column_number)
-{
-   if (row_number != ing_res->act_row->row_number) {
-      INGrowSeek(ing_res, row_number);
-   }
-   return ing_res->act_row->sqlvar[column_number].sqldata;
-}
-bool INGgetisnull(INGresult *ing_res, int row_number, int column_number)
-{
-   if (row_number != ing_res->act_row->row_number) {
-      INGrowSeek(ing_res, row_number);
-   }
-   return (*ing_res->act_row->sqlvar[column_number].sqlind == -1) ? true : false;
-}
-int INGntuples(const INGresult *ing_res)
-{
-   return ing_res->num_rows;
-}
-int INGnfields(const INGresult *ing_res)
-{
-   return ing_res->num_fields;
-}
-char *INGfname(const INGresult *ing_res, int column_number)
-{
-   if ((column_number > ing_res->num_fields) || (column_number < 0)) {
-      return NULL;
-   } else {
-      return ing_res->fields[column_number].name;
-   }
-}
-short INGftype(const INGresult *ing_res, int column_number)
-{
-   return ing_res->fields[column_number].type;
-}
-int INGexec(INGconn *dbconn, const char *query, bool explicit_commit)
-{
-/* # line 522 "myingres.sc" */	
-  
-  int sess_id;
-  int rowcount;
-  int errors;
-  char *stmt;
-/* # line 527 "myingres.sc" */	
-  
-   rowcount = -1;
-   stmt = bstrdup(query);
-/* # line 534 "myingres.sc" */	/* host code */
-   /*
-    * Switch to the correct default session for this thread.
-    */
-   sess_id = dbconn->session_id;
-/* # line 538 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(sess_id),&sess_id);
-  }
-/* # line 540 "myingres.sc" */	/* execute */
-  {
-    IIsqInit(&sqlca);
-    IIsqExImmed(stmt);
-    IIsyncup((char *)0,0);
-    if (sqlca.sqlcode < 0) 
-      goto bail_out;
-  }
-/* # line 541 "myingres.sc" */	/* inquire_ingres */
-  {
-    IILQisInqSqlio((short *)0,1,30,sizeof(rowcount),&rowcount,8);
-  }
-/* # line 543 "myingres.sc" */	/* host code */
-   /*
-    * See if the negative rowcount is due to errors.
-    */
-   if (rowcount < 0) {
-/* # line 547 "myingres.sc" */	/* inquire_ingres */
-  {
-    IILQisInqSqlio((short *)0,1,30,sizeof(errors),&errors,0);
-  }
-/* # line 549 "myingres.sc" */	/* host code */
-      /*
-       * If the number of errors is 0 we got a negative rowcount
-       * because the statement we executed doesn't give a rowcount back.
-       * Lets pretend we have a rowcount of 1 then.
-       */
-      if (errors == 0) {
-         rowcount = 1;
-      }
-   }
-/* # line 561 "myingres.sc" */	/* host code */
-bail_out:
-   /*
-    * If explicit_commit is set we commit our work now.
-    */
-   if (explicit_commit) {
-/* # line 566 "myingres.sc" */	/* commit */
-  {
-    IIsqInit(&sqlca);
-    IIxact(3);
-  }
-/* # line 567 "myingres.sc" */	/* host code */
-   }
-   /*
-    * Switch to no default session for this thread.
-    */
-/* # line 572 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(-97),(void *)IILQint(-97));
-  }
-/* # line 573 "myingres.sc" */	/* host code */
-   free(stmt);
-   return rowcount;
-}
-INGresult *INGquery(INGconn *dbconn, const char *query, bool explicit_commit)
-{
-   /*
-    * TODO: error handling
-    */
-   INGresult *ing_res = NULL;
-   int rows;
-   int cols;
-/* # line 585 "myingres.sc" */	
-  
-  int sess_id;
-/* # line 587 "myingres.sc" */	
-  
-   cols = INGgetCols(dbconn, query, explicit_commit);
-   /*
-    * Switch to the correct default session for this thread.
-    */
-   sess_id = dbconn->session_id;
-/* # line 595 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(sess_id),&sess_id);
-  }
-/* # line 597 "myingres.sc" */	/* host code */
-   ing_res = INGgetINGresult(cols, query);
-   if (!ing_res) {
-      goto bail_out;
-   }
-   rows = INGfetchAll(ing_res);
-   if (rows < 0) {
-      INGfreeINGresult(ing_res);
-      ing_res = NULL;
-      goto bail_out;
-   }
-bail_out:
-   /*
-    * If explicit_commit is set we commit our work now.
-    */
-   if (explicit_commit) {
-/* # line 615 "myingres.sc" */	/* commit */
-  {
-    IIsqInit(&sqlca);
-    IIxact(3);
-  }
-/* # line 616 "myingres.sc" */	/* host code */
-   }
-   /*
-    * Switch to no default session for this thread.
-    */
-/* # line 621 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(-97),(void *)IILQint(-97));
-  }
-/* # line 622 "myingres.sc" */	/* host code */
-   return ing_res;
-}
-void INGclear(INGresult *ing_res)
-{
-   if (ing_res == NULL) {
-      return;
-   }
-   INGfreeINGresult(ing_res);
-}
-void INGcommit(const INGconn *dbconn)
-{
-/* # line 636 "myingres.sc" */	
-  
-  int sess_id;
-/* # line 638 "myingres.sc" */	
-  
-   if (dbconn != NULL) {
-      /*
-       * Switch to the correct default session for this thread.
-       */
-      sess_id = dbconn->session_id;
-/* # line 645 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(sess_id),&sess_id);
-  }
-/* # line 647 "myingres.sc" */	/* host code */
-      /*
-       * Commit our work.
-       */
-/* # line 650 "myingres.sc" */	/* commit */
-  {
-    IIsqInit(&sqlca);
-    IIxact(3);
-  }
-/* # line 652 "myingres.sc" */	/* host code */
-      /*
-       * Switch to no default session for this thread.
-       */
-/* # line 655 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(-97),(void *)IILQint(-97));
-  }
-/* # line 656 "myingres.sc" */	/* host code */
-   }
-}
-INGconn *INGconnectDB(char *dbname, char *user, char *passwd, int session_id)
-{
-/* # line 661 "myingres.sc" */	
-  
-  char *ingdbname;
-  char *ingdbuser = NULL;
-  char *ingdbpasswd = NULL;
-  int sess_id;
-/* # line 666 "myingres.sc" */	
-  
-   INGconn *dbconn = NULL;
-   if (dbname == NULL || strlen(dbname) == 0) {
-      return NULL;
-   }
-   sess_id = session_id;
-   ingdbname = dbname;
-/* # line 678 "myingres.sc" */	/* host code */
-   if (user != NULL) {
-      ingdbuser = user;
-      if (passwd != NULL) {
-         ingdbpasswd = passwd;
-/* # line 682 "myingres.sc" */	/* connect */
-  {
-    IIsqInit(&sqlca);
-    IILQsidSessID(sess_id);
-    IIsqUser(ingdbuser);
-    IIsqConnect(0,ingdbname,(char *)"-dbms_password",ingdbpasswd,(char *)0, 
-    (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, 
-    (char *)0, (char *)0, (char *)0, (char *)0);
-    if (sqlca.sqlcode < 0) 
-      goto bail_out;
-  }
-/* # line 687 "myingres.sc" */	/* host code */
-      } else {
-/* # line 688 "myingres.sc" */	/* connect */
-  {
-    IIsqInit(&sqlca);
-    IILQsidSessID(sess_id);
-    IIsqUser(ingdbuser);
-    IIsqConnect(0,ingdbname,(char *)0, (char *)0, (char *)0, (char *)0, 
-    (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, 
-    (char *)0, (char *)0, (char *)0);
-    if (sqlca.sqlcode < 0) 
-      goto bail_out;
-  }
-/* # line 692 "myingres.sc" */	/* host code */
-      }
-   } else {
-/* # line 694 "myingres.sc" */	/* connect */
-  {
-    IIsqInit(&sqlca);
-    IILQsidSessID(sess_id);
-    IIsqConnect(0,ingdbname,(char *)0, (char *)0, (char *)0, (char *)0, 
-    (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, (char *)0, 
-    (char *)0, (char *)0, (char *)0);
-    if (sqlca.sqlcode < 0) 
-      goto bail_out;
-  }
-/* # line 697 "myingres.sc" */	/* host code */
-   }   
-/* # line 701 "myingres.sc" */	/* host code */
-   dbconn = (INGconn *)malloc(sizeof(INGconn));
-   memset(dbconn, 0, sizeof(INGconn));
-   dbconn->dbname = bstrdup(ingdbname);
-   if (user != NULL) {
-      dbconn->user = bstrdup(ingdbuser);
-      dbconn->password = bstrdup(ingdbpasswd);
-   }
-   dbconn->session_id = sess_id;
-   dbconn->msg = (char *)malloc(257);
-   memset(dbconn->msg, 0, 257);
-   /*
-    * Switch to no default session for this thread undo default settings from SQL CONNECT.
-    */
-/* # line 716 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(-97),(void *)IILQint(-97));
-  }
-/* # line 718 "myingres.sc" */	/* host code */
-bail_out:
-   return dbconn;
-}
-void INGsetDefaultLockingMode(INGconn *dbconn)
-{
-   /*
-    * Set the default Ingres session locking mode:
-    *
-    * SET LOCKMODE provides four different parameters to govern
-    * the nature of locking in an INGRES session:
-    *
-    * Level: This refers to the level of granularity desired when
-    * the table is accessed. You can specify any of the following
-    * locking levels:
-    *
-    * row     Specifies locking at the level of the row (subject to
-    *         escalation criteria; see below)
-    * page    Specifies locking at the level of the data page (subject to
-    *         escalation criteria; see below)
-    * table   Specifies table-level locking in the database
-    * session Specifies the current default for your INGRES session
-    * system  Specifies that INGRES will start with page-level locking,
-    *         unless it estimates that more than Maxlocks pages will be
-    *         referenced, in which case table-level locking will be used.
-    *
-    * Readlock: This refers to locking in situations where table access
-    *           is required for reading data only (as opposed to updating
-    *           data). You can specify any of the following Readlock modes:
-    *
-    *    nolock     Specifies no locking when reading data
-    *    shared     Specifies the default mode of locking when reading data
-    *    exclusive  Specifies exclusive locking when reading data (useful in
-    *               "select-for-update" processing within a multi-statement
-    *               transaction)
-    *    system     Specifies the general Readlock default for the INGRES system
-    *
-    * Maxlocks: This refers to an escalation factor, or number of locks on
-    *           data pages, at which locking escalates from page-level
-    *           to table-level. The number of locks available to you is
-    *           dependent upon your system configuration. You can specify the
-    *           following Maxlocks escalation factors:
-    *
-    *    n       A specific (integer) number of page locks to allow before
-    *            escalating to table-level locking. The default "n" is 10,
-    *            and "n" must be greater than 0.
-    *    session Specifies the current Maxlocks default for your INGRES
-    *            session
-    *    system  Specifies the general Maxlocks default for the INGRES system
-    *
-    * Note: If you specify page-level locking, and the number of locks granted
-    * during a query exceeds the system-wide lock limit, or if the operating
-    * system's locking resources are depleted, locking escalates to table-level.
-    * This escalation occurs automatically and is independent of the user.
-    *
-    * Timeout: This refers to a time limit, expressed in seconds, for which
-    * a lock request should remain pending. If INGRES cannot grant the lock
-    * request within the specified time, then the query that requested the
-    * lock aborts. You can specify the following timeout characteristics:
-    *
-    *    n       A specific (integer) number of seconds to wait for a lock
-    *            (setting "n" to 0 requires INGRES to wait indefinitely for
-    *            the lock)
-    *    session Specifies the current timeout default for your INGRES
-    *            session (which is also the INGRES default)
-    *    system  Specifies the general timeout default for the INGRES system
-    *
-    */
-/* # line 786 "myingres.sc" */	
-  
-  int sess_id;
-/* # line 788 "myingres.sc" */	
-  
-   if (dbconn != NULL) {
-      /*
-       * Switch to the correct default session for this thread.
-       */
-      sess_id = dbconn->session_id;
-/* # line 795 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(sess_id),&sess_id);
-  }
-/* # line 797 "myingres.sc" */	/* set */
-  {
-    IIsqInit(&sqlca);
-    IIwritio(0,(short *)0,1,32,0,(char *)
-"set LOCKMODE session where level=row, readlock=nolock");
-    IIsyncup((char *)0,0);
-  }
-/* # line 799 "myingres.sc" */	/* host code */
-      /*
-       * Switch to no default session for this thread.
-       */
-/* # line 802 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(-97),(void *)IILQint(-97));
-  }
-/* # line 803 "myingres.sc" */	/* host code */
-   }
-}
-void INGdisconnectDB(INGconn *dbconn)
-{
-/* # line 808 "myingres.sc" */	
-  
-  int sess_id;
-/* # line 810 "myingres.sc" */	
-  
-   if (dbconn != NULL) {
-      sess_id = dbconn->session_id;
-/* # line 814 "myingres.sc" */	/* disconnect */
-  {
-    IIsqInit(&sqlca);
-    IILQsidSessID(sess_id);
-    IIsqDisconnect();
-  }
-/* # line 816 "myingres.sc" */	/* host code */
-      free(dbconn->dbname);
-      if (dbconn->user) {
-         free(dbconn->user);
-      }
-      if (dbconn->password) {
-         free(dbconn->password);
-      }
-      free(dbconn->msg);
-      free(dbconn);
-   }
-}
-char *INGerrorMessage(const INGconn *dbconn)
-{
-/* # line 830 "myingres.sc" */	
-  
-  int sess_id;
-  char errbuf[256];
-/* # line 833 "myingres.sc" */	
-  
-   if (dbconn != NULL) {
-      /*
-       * Switch to the correct default session for this thread.
-       */
-      sess_id = dbconn->session_id;
-/* # line 840 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(sess_id),&sess_id);
-  }
-/* # line 842 "myingres.sc" */	/* inquire_ingres */
-  {
-    IILQisInqSqlio((short *)0,1,32,255,errbuf,63);
-  }
-/* # line 843 "myingres.sc" */	/* host code */
-      strncpy(dbconn->msg, errbuf, sizeof(dbconn->msg));
-      /*
-       * Switch to no default session for this thread.
-       */
-/* # line 848 "myingres.sc" */	/* set_sql */
-  {
-    IILQssSetSqlio(11,(short *)0,1,30,sizeof(-97),(void *)IILQint(-97));
-  }
-/* # line 849 "myingres.sc" */	/* host code */
-   }
-   return dbconn->msg;
-}
-/* # line 854 "myingres.sc" */	
-#endif
diff --git a/src/cats/myingres.h b/src/cats/myingres.h
deleted file mode 100644
index ed3a685..0000000
--- a/src/cats/myingres.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-   Copyright (C) 2009-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.
-*/
-#ifndef _MYINGRES_SH
-#define _MYINGRES_SH
-#include <eqpname.h>
-#include <eqdefcc.h>
-#include <eqsqlda.h>
-
-/* ---typedefs--- */
-typedef struct ing_timestamp {
-   unsigned short year;
-   unsigned char month;
-   unsigned char day;
-   unsigned int secs;
-   unsigned int nsecs;
-   unsigned char tzh;
-   unsigned char tzm;
-} ING_TIMESTAMP;
-typedef struct ing_field {
-   char *name;
-   int max_length;
-   unsigned int type;
-   unsigned int flags;		/* 1 == not null */
-} INGRES_FIELD;
-typedef struct ing_row {
-   IISQLVAR *sqlvar;		/* ptr to sqlvar[sqld] for one row */
-   struct ing_row *next;
-   int row_number;
-} ING_ROW;
-typedef enum ing_status {
-   ING_COMMAND_OK,
-   ING_TUPLES_OK,
-   ING_NO_RESULT,
-   ING_NO_ROWS_PROCESSED,
-   ING_EMPTY_RESULT,
-   ING_ERROR
-} ING_STATUS;
-typedef struct ing_varchar {
-   short len;
-   char* value;
-} ING_VARCHAR;
-/* It seems, Bacula needs the complete query result stored in one data structure */
-typedef struct ing_result {
-   IISQLDA *sqlda;		/* descriptor */
-   INGRES_FIELD *fields;
-   int num_rows;
-   int num_fields;
-   ING_STATUS status;
-   ING_ROW *first_row;
-   ING_ROW *act_row;		/* just for iterating */
-} INGresult;
-typedef struct ing_conn {
-   char *dbname;
-   char *user;
-   char *password;
-   int session_id;
-   char *msg;
-} INGconn;
-/* ---Prototypes--- */
-int INGgetCols(INGconn *dbconn, const char *query, bool transaction);
-char *INGgetvalue(INGresult *ing_res, int row_number, int column_number);
-bool INGgetisnull(INGresult *ing_res, int row_number, int column_number);
-int INGntuples(const INGresult *ing_res);
-int INGnfields(const INGresult *ing_res);
-char *INGfname(const INGresult *ing_res, int column_number);
-short INGftype(const INGresult *ing_res, int column_number);
-int INGexec(INGconn *dbconn, const char *query, bool transaction);
-INGresult *INGquery(INGconn *dbconn, const char *query, bool transaction);
-void INGclear(INGresult *ing_res);
-void INGcommit(const INGconn *dbconn);
-INGconn *INGconnectDB(char *dbname, char *user, char *passwd, int session_id);
-void INGsetDefaultLockingMode(INGconn *dbconn);
-void INGdisconnectDB(INGconn *dbconn);
-char *INGerrorMessage(const INGconn *dbconn);
-char *INGcmdTuples(INGresult *ing_res);
-/* # line 109 "myingres.sh" */	
-#endif /* _MYINGRES_SH */
diff --git a/src/cats/myingres.sc b/src/cats/myingres.sc
deleted file mode 100644
index d91087b..0000000
--- a/src/cats/myingres.sc
+++ /dev/null
@@ -1,854 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2009-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 two of the GNU 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 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.
-*/
-/*
- * Bacula Catalog Database routines specific to Ingres
- *   These are Ingres specific routines
- *
- *    Stefan Reddig, June 2009 with help of Marco van Wieringen April 2010
- */
-
-#include "bacula.h"
-
-#ifdef HAVE_INGRES
-EXEC SQL INCLUDE SQLCA;
-EXEC SQL INCLUDE SQLDA;
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "myingres.h"
-
-/*
- * ---Implementations---
- */
-int INGgetCols(INGconn *dbconn, const char *query, bool explicit_commit)
-{
-   EXEC SQL BEGIN DECLARE SECTION;
-   int sess_id;
-   char *stmt;
-   EXEC SQL END DECLARE SECTION;
-   IISQLDA *sqlda;
-   int number = -1;
-
-   sqlda = (IISQLDA *)malloc(IISQDA_HEAD_SIZE + IISQDA_VAR_SIZE);
-   memset(sqlda, 0, (IISQDA_HEAD_SIZE + IISQDA_VAR_SIZE));
-   
-   sqlda->sqln = number;
-
-   stmt = bstrdup(query);
-
-   EXEC SQL WHENEVER SQLERROR GOTO bail_out;
-
-   /*
-    * Switch to the correct default session for this thread.
-    */
-   sess_id = dbconn->session_id;
-   EXEC SQL SET_SQL (SESSION = :sess_id);
-
-   EXEC SQL PREPARE s1 INTO :sqlda FROM :stmt;
-
-   EXEC SQL WHENEVER SQLERROR CONTINUE;
-     
-   number = sqlda->sqld;
-
-bail_out:
-   /*
-    * If explicit_commit is set we commit our work now.
-    */
-   if (explicit_commit) {
-      EXEC SQL COMMIT WORK;
-   }
-
-   /*
-    * Switch to no default session for this thread.
-    */
-   EXEC SQL SET_SQL (SESSION = NONE);
-   free(stmt);
-   free(sqlda);
-   return number;
-}
-
-static inline IISQLDA *INGgetDescriptor(int numCols, const char *query)
-{
-   EXEC SQL BEGIN DECLARE SECTION;
-   char *stmt;
-   EXEC SQL END DECLARE SECTION;
-   int i;
-   IISQLDA *sqlda;
-
-   sqlda = (IISQLDA *)malloc(IISQDA_HEAD_SIZE + (numCols * IISQDA_VAR_SIZE));
-   memset(sqlda, 0, (IISQDA_HEAD_SIZE + (numCols * IISQDA_VAR_SIZE)));
-   
-   sqlda->sqln = numCols;
-   
-   stmt = bstrdup(query);
-  
-   EXEC SQL PREPARE s2 INTO :sqlda FROM :stmt;
-
-   for (i = 0; i < sqlda->sqld; ++i) {
-      /*
-       * Negative type indicates nullable columns, so an indicator
-       * is allocated, otherwise it's null
-       */
-      if (sqlda->sqlvar[i].sqltype > 0) {
-         sqlda->sqlvar[i].sqlind = NULL;
-      } else {
-         sqlda->sqlvar[i].sqlind = (short *)malloc(sizeof(short));
-      }
-      /*
-       * Alloc space for variable like indicated in sqllen
-       * for date types sqllen is always 0 -> allocate by type
-       */
-      switch (abs(sqlda->sqlvar[i].sqltype)) {
-      case IISQ_TSW_TYPE:
-         sqlda->sqlvar[i].sqldata = (char *)malloc(IISQ_TSW_LEN);
-         break;
-      case IISQ_TSWO_TYPE:
-         sqlda->sqlvar[i].sqldata = (char *)malloc(IISQ_TSWO_LEN);
-         break;
-      case IISQ_TSTMP_TYPE:
-         sqlda->sqlvar[i].sqldata = (char *)malloc(IISQ_TSTMP_LEN);
-         break;
-      default:
-         /*
-          * plus one to avoid zero mem allocs
-          */
-         sqlda->sqlvar[i].sqldata = (char *)malloc(sqlda->sqlvar[i].sqllen + 1);
-         break;
-      }
-   }
-   
-   free(stmt);
-   return sqlda;
-}
-
-static void INGfreeDescriptor(IISQLDA *sqlda)
-{
-   int i;
-
-   if (!sqlda) {
-      return;
-   }
-
-   for (i = 0; i < sqlda->sqld; ++i) {
-      if (sqlda->sqlvar[i].sqldata) {
-         free(sqlda->sqlvar[i].sqldata);
-      }
-      if (sqlda->sqlvar[i].sqlind) {
-         free(sqlda->sqlvar[i].sqlind);
-      }
-   }
-   free(sqlda);
-}
-
-static inline int INGgetTypeSize(IISQLVAR *ingvar)
-{
-   int inglength = 0;
-   
-   switch (ingvar->sqltype) {
-   case IISQ_TSWO_TYPE:
-      inglength = 20;
-      break;
-   case IISQ_TSW_TYPE:
-      inglength = 20;
-      break;
-   case IISQ_DTE_TYPE:
-      inglength = 25;
-      break;
-   case IISQ_MNY_TYPE:
-      inglength = 8;
-      break;
-   default:
-      inglength = ingvar->sqllen;
-      break;
-   }
-   
-   return inglength;
-}
-
-static inline INGresult *INGgetINGresult(int numCols, const char *query)
-{
-   int i;
-   INGresult *ing_res;
-   
-   ing_res = (INGresult *)malloc(sizeof(INGresult));
-   memset(ing_res, 0, sizeof(INGresult));
-   
-   if ((ing_res->sqlda = INGgetDescriptor(numCols, query)) == NULL) {
-      return NULL;
-   }
-
-   ing_res->num_fields = ing_res->sqlda->sqld;
-   ing_res->num_rows = 0;
-   ing_res->first_row = NULL;
-   ing_res->status = ING_EMPTY_RESULT;
-   ing_res->act_row = NULL;
-   
-   if (ing_res->num_fields) {
-      ing_res->fields = (INGRES_FIELD *)malloc(sizeof(INGRES_FIELD) * ing_res->num_fields);
-      memset(ing_res->fields, 0, sizeof(INGRES_FIELD) * ing_res->num_fields);
-
-      for (i = 0; i < ing_res->num_fields; ++i) {
-         ing_res->fields[i].name = (char *)malloc(ing_res->sqlda->sqlvar[i].sqlname.sqlnamel + 1);
-         bstrncpy(ing_res->fields[i].name, ing_res->sqlda->sqlvar[i].sqlname.sqlnamec, ing_res->sqlda->sqlvar[i].sqlname.sqlnamel + 1);
-         ing_res->fields[i].name[ing_res->sqlda->sqlvar[i].sqlname.sqlnamel] = '\0';
-         ing_res->fields[i].max_length = INGgetTypeSize(&ing_res->sqlda->sqlvar[i]);
-         ing_res->fields[i].type = abs(ing_res->sqlda->sqlvar[i].sqltype);
-         ing_res->fields[i].flags = (ing_res->sqlda->sqlvar[i].sqltype < 0) ? 1 : 0;
-      }
-   }
-
-   return ing_res;
-}
-
-static inline void INGfreeRowSpace(ING_ROW *row, IISQLDA *sqlda)
-{
-   int i;
-
-   if (row == NULL || sqlda == NULL) {
-      return;
-   }
-
-   for (i = 0; i < sqlda->sqld; ++i) {
-      if (row->sqlvar[i].sqldata) {
-         free(row->sqlvar[i].sqldata);
-      }
-      if (row->sqlvar[i].sqlind) {
-         free(row->sqlvar[i].sqlind);
-      }
-   }
-   free(row->sqlvar);
-   free(row);
-}
-
-static void INGfreeINGresult(INGresult *ing_res)
-{
-   int i;
-   int rows;
-   ING_ROW *rowtemp;
-
-   if (!ing_res) {
-      return;
-   }
-
-   /*
-    * Use of rows is a nasty workaround til I find the reason,
-    * why aggregates like max() don't work
-    */
-   rows = ing_res->num_rows;
-   ing_res->act_row = ing_res->first_row;
-   while (ing_res->act_row != NULL && rows > 0) {
-      rowtemp = ing_res->act_row->next;
-      INGfreeRowSpace(ing_res->act_row, ing_res->sqlda);
-      ing_res->act_row = rowtemp;
-      --rows;
-   }
-
-   if (ing_res->fields) {
-      for (i = 0; i < ing_res->num_fields; ++i) {
-         free(ing_res->fields[i].name);
-      }
-
-      free(ing_res->fields);
-   }
-
-   INGfreeDescriptor(ing_res->sqlda);
-
-   free(ing_res);
-}
-
-static inline ING_ROW *INGgetRowSpace(INGresult *ing_res)
-{
-   int i;
-   unsigned short len; /* used for VARCHAR type length */
-   unsigned short th, tm, ts;
-   IISQLDA *sqlda;
-   ING_ROW *row = NULL;
-   ING_TIMESTAMP *tsp;
-   IISQLVAR *vars = NULL;
-
-   row = (ING_ROW *)malloc(sizeof(ING_ROW));
-   memset(row, 0, sizeof(ING_ROW));
-
-   sqlda = ing_res->sqlda;
-   vars = (IISQLVAR *)malloc(sizeof(IISQLVAR) * sqlda->sqld);
-   memset(vars, 0, sizeof(IISQLVAR) * sqlda->sqld);
-
-   row->sqlvar = vars;
-   row->next = NULL;
-
-   for (i = 0; i < sqlda->sqld; ++i) {
-      /*
-       * Make strings out of the data, then the space and assign 
-       * (why string? at least it seems that way, looking into the sources)
-       */
-      vars[i].sqlind = (short *)malloc(sizeof(short));
-      if (sqlda->sqlvar[i].sqlind) {
-         memcpy(vars[i].sqlind,sqlda->sqlvar[i].sqlind,sizeof(short));
-      } else {
-         *vars[i].sqlind = NULL;
-      }
-      /*
-       * if sqlind pointer exists AND points to -1 -> column is 'null'
-       */
-      if ( *vars[i].sqlind && (*vars[i].sqlind == -1)) {
-         vars[i].sqldata = NULL;
-      } else {
-         switch (ing_res->fields[i].type) {
-         case IISQ_VCH_TYPE:
-         case IISQ_LVCH_TYPE:
-         case IISQ_VBYTE_TYPE:
-         case IISQ_LBYTE_TYPE:
-         case IISQ_NVCHR_TYPE:
-         case IISQ_LNVCHR_TYPE:
-            len = ((ING_VARCHAR *)sqlda->sqlvar[i].sqldata)->len;
-            vars[i].sqldata = (char *)malloc(len + 1);
-            memcpy(vars[i].sqldata,sqlda->sqlvar[i].sqldata + 2,len);
-            vars[i].sqldata[len] = '\0';
-            break;
-         case IISQ_CHA_TYPE:
-         case IISQ_BYTE_TYPE:
-         case IISQ_NCHR_TYPE:
-            vars[i].sqldata = (char *)malloc(ing_res->fields[i].max_length + 1);
-            memcpy(vars[i].sqldata,sqlda->sqlvar[i].sqldata,sqlda->sqlvar[i].sqllen);
-            vars[i].sqldata[ing_res->fields[i].max_length] = '\0';
-            break;
-         case IISQ_INT_TYPE:
-            switch (sqlda->sqlvar[i].sqllen) {
-            case 2:
-               vars[i].sqldata = (char *)malloc(6);
-               memset(vars[i].sqldata, 0, 6);
-               bsnprintf(vars[i].sqldata, 6, "%d",*(int16_t *)sqlda->sqlvar[i].sqldata);
-               break;
-            case 4:
-               vars[i].sqldata = (char *)malloc(11);
-               memset(vars[i].sqldata, 0, 11);
-               bsnprintf(vars[i].sqldata, 11, "%ld",*(int32_t *)sqlda->sqlvar[i].sqldata);
-               break;
-            case 8:
-               vars[i].sqldata = (char *)malloc(20);
-               memset(vars[i].sqldata, 0, 20);
-               bsnprintf(vars[i].sqldata, 20, "%lld",*(int64_t *)sqlda->sqlvar[i].sqldata);
-               break;
-            }
-            break;
-         case IISQ_TSTMP_TYPE:
-            vars[i].sqldata = (char *)malloc(IISQ_TSTMP_LEN + 1);
-            vars[i].sqldata[IISQ_TSTMP_LEN] = '\0';
-            break;
-         case IISQ_TSWO_TYPE:
-            tsp = (ING_TIMESTAMP *)sqlda->sqlvar[i].sqldata;
-            th = tsp->secs / 3600; /* hours */
-            tm = tsp->secs % 3600; /* remaining seconds */
-            tm = tm / 60; /* minutes */
-            ts = tsp->secs - (th * 3600) - (tm * 60); /* seconds */
-            vars[i].sqldata = (char *)malloc(IISQ_TSTMP_LEN + 1);
-            bsnprintf(vars[i].sqldata, IISQ_TSWO_LEN + 1,
-                      "%04u-%02u-%02u %02u:%02u:%02u",
-                      tsp->year, tsp->month, tsp->day, th, tm, ts);
-            break;
-         case IISQ_TSW_TYPE:
-            tsp = (ING_TIMESTAMP *)sqlda->sqlvar[i].sqldata;
-            th = tsp->secs / 3600; /* hours */
-            tm = tsp->secs % 3600; /* remaining seconds */
-            tm = tm / 60; /* minutes */
-            ts = tsp->secs - (th * 3600) - (tm * 60); /* seconds */
-            vars[i].sqldata = (char *)malloc(IISQ_TSW_LEN + 1);
-            bsnprintf(vars[i].sqldata, IISQ_TSW_LEN + 1,
-                      "%04u-%02u-%02u %02u:%02u:%02u",
-                      tsp->year, tsp->month, tsp->day, th, tm, ts);
-            break;
-         default:
-            Jmsg(NULL, M_FATAL, 0,
-                 "INGgetRowSpace: encountered unhandled database datatype %d please report this as a bug\n",
-                 ing_res->fields[i].type);
-            break;
-         }
-      }
-   }
-   return row;
-}
-
-static inline int INGfetchAll(INGresult *ing_res)
-{
-   ING_ROW *row;
-   IISQLDA *desc;
-   int linecount = -1;
-   
-   desc = ing_res->sqlda;
-   
-   EXEC SQL WHENEVER SQLERROR GOTO bail_out;
-
-   EXEC SQL DECLARE c2 CURSOR FOR s2;
-   EXEC SQL OPEN c2;
-      
-   EXEC SQL WHENEVER SQLERROR CONTINUE;
-
-   linecount = 0;
-   do {
-      EXEC SQL FETCH c2 USING DESCRIPTOR :desc;
-
-      if (sqlca.sqlcode == 0 || sqlca.sqlcode == -40202) {
-         /*
-          * Allocate space for fetched row
-          */
-         row = INGgetRowSpace(ing_res);
-            
-         /*
-          * Initialize list when encountered first time
-          */
-         if (ing_res->first_row == 0) {
-            ing_res->first_row = row; /* head of the list */
-            ing_res->first_row->next = NULL;
-            ing_res->act_row = ing_res->first_row;
-         }      
-
-         ing_res->act_row->next = row; /* append row to old act_row */
-         ing_res->act_row = row; /* set row as act_row */
-         row->row_number = linecount++;
-      }
-   } while ( (sqlca.sqlcode == 0) || (sqlca.sqlcode == -40202) );
-   
-   EXEC SQL CLOSE c2;
-   
-   ing_res->status = ING_COMMAND_OK;
-   ing_res->num_rows = linecount;
-
-bail_out:
-   return linecount;
-}
-
-static inline ING_STATUS INGresultStatus(INGresult *ing_res)
-{
-   if (ing_res == NULL) {
-      return ING_NO_RESULT;
-   } else {
-      return ing_res->status;
-   }
-}
-
-static void INGrowSeek(INGresult *ing_res, int row_number)
-{
-   ING_ROW *trow = NULL;
-
-   if (ing_res->act_row->row_number == row_number) {
-      return;
-   }
-   
-   /*
-    * TODO: real error handling
-    */
-   if (row_number < 0 || row_number > ing_res->num_rows) {
-      return;
-   }
-
-   for (trow = ing_res->first_row; trow->row_number != row_number; trow = trow->next) ;
-   ing_res->act_row = trow;
-   /*
-    * Note - can be null - if row_number not found, right?
-    */
-}
-
-char *INGgetvalue(INGresult *ing_res, int row_number, int column_number)
-{
-   if (row_number != ing_res->act_row->row_number) {
-      INGrowSeek(ing_res, row_number);
-   }
-
-   return ing_res->act_row->sqlvar[column_number].sqldata;
-}
-
-bool INGgetisnull(INGresult *ing_res, int row_number, int column_number)
-{
-   if (row_number != ing_res->act_row->row_number) {
-      INGrowSeek(ing_res, row_number);
-   }
-
-   return (*ing_res->act_row->sqlvar[column_number].sqlind == -1) ? true : false;
-}
-
-int INGntuples(const INGresult *ing_res)
-{
-   return ing_res->num_rows;
-}
-
-int INGnfields(const INGresult *ing_res)
-{
-   return ing_res->num_fields;
-}
-
-char *INGfname(const INGresult *ing_res, int column_number)
-{
-   if ((column_number > ing_res->num_fields) || (column_number < 0)) {
-      return NULL;
-   } else {
-      return ing_res->fields[column_number].name;
-   }
-}
-
-short INGftype(const INGresult *ing_res, int column_number)
-{
-   return ing_res->fields[column_number].type;
-}
-
-int INGexec(INGconn *dbconn, const char *query, bool explicit_commit)
-{
-   EXEC SQL BEGIN DECLARE SECTION;
-   int sess_id;
-   int rowcount;
-   int errors;
-   char *stmt;
-   EXEC SQL END DECLARE SECTION;
-   
-   rowcount = -1;
-   stmt = bstrdup(query);
-
-   EXEC SQL WHENEVER SQLERROR GOTO bail_out;
-
-   /*
-    * Switch to the correct default session for this thread.
-    */
-   sess_id = dbconn->session_id;
-   EXEC SQL SET_SQL (SESSION = :sess_id);
-
-   EXEC SQL EXECUTE IMMEDIATE :stmt;
-   EXEC SQL INQUIRE_INGRES(:rowcount = ROWCOUNT);
-
-   /*
-    * See if the negative rowcount is due to errors.
-    */
-   if (rowcount < 0) {
-      EXEC SQL INQUIRE_INGRES(:errors = DBMSERROR);
-
-      /*
-       * If the number of errors is 0 we got a negative rowcount
-       * because the statement we executed doesn't give a rowcount back.
-       * Lets pretend we have a rowcount of 1 then.
-       */
-      if (errors == 0) {
-         rowcount = 1;
-      }
-   }
-
-   EXEC SQL WHENEVER SQLERROR CONTINUE;
-
-bail_out:
-   /*
-    * If explicit_commit is set we commit our work now.
-    */
-   if (explicit_commit) {
-      EXEC SQL COMMIT WORK;
-   }
-
-   /*
-    * Switch to no default session for this thread.
-    */
-   EXEC SQL SET_SQL (SESSION = NONE);
-   free(stmt);
-   return rowcount;
-}
-
-INGresult *INGquery(INGconn *dbconn, const char *query, bool explicit_commit)
-{
-   /*
-    * TODO: error handling
-    */
-   INGresult *ing_res = NULL;
-   int rows;
-   int cols;
-   EXEC SQL BEGIN DECLARE SECTION;
-   int sess_id;
-   EXEC SQL END DECLARE SECTION;
-
-   cols = INGgetCols(dbconn, query, explicit_commit);
-
-   /*
-    * Switch to the correct default session for this thread.
-    */
-   sess_id = dbconn->session_id;
-   EXEC SQL SET_SQL (SESSION = :sess_id);
-
-   ing_res = INGgetINGresult(cols, query);
-   if (!ing_res) {
-      goto bail_out;
-   }
-
-   rows = INGfetchAll(ing_res);
-
-   if (rows < 0) {
-      INGfreeINGresult(ing_res);
-      ing_res = NULL;
-      goto bail_out;
-   }
-
-bail_out:
-   /*
-    * If explicit_commit is set we commit our work now.
-    */
-   if (explicit_commit) {
-      EXEC SQL COMMIT WORK;
-   }
-
-   /*
-    * Switch to no default session for this thread.
-    */
-   EXEC SQL SET_SQL (SESSION = NONE);
-   return ing_res;
-}
-
-void INGclear(INGresult *ing_res)
-{
-   if (ing_res == NULL) {
-      return;
-   }
-
-   INGfreeINGresult(ing_res);
-}
-
-void INGcommit(const INGconn *dbconn)
-{
-   EXEC SQL BEGIN DECLARE SECTION;
-   int sess_id;
-   EXEC SQL END DECLARE SECTION;
-
-   if (dbconn != NULL) {
-      /*
-       * Switch to the correct default session for this thread.
-       */
-      sess_id = dbconn->session_id;
-      EXEC SQL SET_SQL (SESSION = :sess_id);
-
-      /*
-       * Commit our work.
-       */
-      EXEC SQL COMMIT WORK;
-
-      /*
-       * Switch to no default session for this thread.
-       */
-      EXEC SQL SET_SQL (SESSION = NONE);
-   }
-}
-
-INGconn *INGconnectDB(char *dbname, char *user, char *passwd, int session_id)
-{
-   EXEC SQL BEGIN DECLARE SECTION;
-   char *ingdbname;
-   char *ingdbuser = NULL;
-   char *ingdbpasswd = NULL;
-   int sess_id;
-   EXEC SQL END DECLARE SECTION;
-   INGconn *dbconn = NULL;
-
-   if (dbname == NULL || strlen(dbname) == 0) {
-      return NULL;
-   }
-
-   sess_id = session_id;
-   ingdbname = dbname;
-   
-   EXEC SQL WHENEVER SQLERROR GOTO bail_out;
-
-   if (user != NULL) {
-      ingdbuser = user;
-      if (passwd != NULL) {
-         ingdbpasswd = passwd;
-         EXEC SQL CONNECT
-            :ingdbname
-            SESSION :sess_id
-            IDENTIFIED BY :ingdbuser
-            DBMS_PASSWORD = :ingdbpasswd;
-      } else {
-         EXEC SQL CONNECT
-            :ingdbname
-            SESSION :sess_id
-            IDENTIFIED BY :ingdbuser;
-      }
-   } else {
-      EXEC SQL CONNECT
-         :ingdbname
-         SESSION :sess_id;
-   }   
-   
-   EXEC SQL WHENEVER SQLERROR CONTINUE;
-
-   dbconn = (INGconn *)malloc(sizeof(INGconn));
-   memset(dbconn, 0, sizeof(INGconn));
-
-   dbconn->dbname = bstrdup(ingdbname);
-   if (user != NULL) {
-      dbconn->user = bstrdup(ingdbuser);
-      dbconn->password = bstrdup(ingdbpasswd);
-   }
-   dbconn->session_id = sess_id;
-   dbconn->msg = (char *)malloc(257);
-   memset(dbconn->msg, 0, 257);
-
-   /*
-    * Switch to no default session for this thread undo default settings from SQL CONNECT.
-    */
-   EXEC SQL SET_SQL (SESSION = NONE);
-
-bail_out:
-   return dbconn;
-}
-
-void INGsetDefaultLockingMode(INGconn *dbconn)
-{
-   /*
-    * Set the default Ingres session locking mode:
-    *
-    * SET LOCKMODE provides four different parameters to govern
-    * the nature of locking in an INGRES session:
-    *
-    * Level: This refers to the level of granularity desired when
-    * the table is accessed. You can specify any of the following
-    * locking levels:
-    *
-    * row     Specifies locking at the level of the row (subject to
-    *         escalation criteria; see below)
-    * page    Specifies locking at the level of the data page (subject to
-    *         escalation criteria; see below)
-    * table   Specifies table-level locking in the database
-    * session Specifies the current default for your INGRES session
-    * system  Specifies that INGRES will start with page-level locking,
-    *         unless it estimates that more than Maxlocks pages will be
-    *         referenced, in which case table-level locking will be used.
-    *
-    * Readlock: This refers to locking in situations where table access
-    *           is required for reading data only (as opposed to updating
-    *           data). You can specify any of the following Readlock modes:
-    *
-    *    nolock     Specifies no locking when reading data
-    *    shared     Specifies the default mode of locking when reading data
-    *    exclusive  Specifies exclusive locking when reading data (useful in
-    *               "select-for-update" processing within a multi-statement
-    *               transaction)
-    *    system     Specifies the general Readlock default for the INGRES system
-    *
-    * Maxlocks: This refers to an escalation factor, or number of locks on
-    *           data pages, at which locking escalates from page-level
-    *           to table-level. The number of locks available to you is
-    *           dependent upon your system configuration. You can specify the
-    *           following Maxlocks escalation factors:
-    *
-    *    n       A specific (integer) number of page locks to allow before
-    *            escalating to table-level locking. The default "n" is 10,
-    *            and "n" must be greater than 0.
-    *    session Specifies the current Maxlocks default for your INGRES
-    *            session
-    *    system  Specifies the general Maxlocks default for the INGRES system
-    *
-    * Note: If you specify page-level locking, and the number of locks granted
-    * during a query exceeds the system-wide lock limit, or if the operating
-    * system's locking resources are depleted, locking escalates to table-level.
-    * This escalation occurs automatically and is independent of the user.
-    *
-    * Timeout: This refers to a time limit, expressed in seconds, for which
-    * a lock request should remain pending. If INGRES cannot grant the lock
-    * request within the specified time, then the query that requested the
-    * lock aborts. You can specify the following timeout characteristics:
-    *
-    *    n       A specific (integer) number of seconds to wait for a lock
-    *            (setting "n" to 0 requires INGRES to wait indefinitely for
-    *            the lock)
-    *    session Specifies the current timeout default for your INGRES
-    *            session (which is also the INGRES default)
-    *    system  Specifies the general timeout default for the INGRES system
-    *
-    */
-   EXEC SQL BEGIN DECLARE SECTION;
-   int sess_id;
-   EXEC SQL END DECLARE SECTION;
-
-   if (dbconn != NULL) {
-      /*
-       * Switch to the correct default session for this thread.
-       */
-      sess_id = dbconn->session_id;
-      EXEC SQL SET_SQL (SESSION = :sess_id);
-
-      EXEC SQL SET LOCKMODE SESSION WHERE level = row, readlock = nolock;
-
-      /*
-       * Switch to no default session for this thread.
-       */
-      EXEC SQL SET_SQL (SESSION = NONE);
-   }
-}
-
-void INGdisconnectDB(INGconn *dbconn)
-{
-   EXEC SQL BEGIN DECLARE SECTION;
-   int sess_id;
-   EXEC SQL END DECLARE SECTION;
-
-   if (dbconn != NULL) {
-      sess_id = dbconn->session_id;
-      EXEC SQL DISCONNECT SESSION :sess_id;
-
-      free(dbconn->dbname);
-      if (dbconn->user) {
-         free(dbconn->user);
-      }
-      if (dbconn->password) {
-         free(dbconn->password);
-      }
-      free(dbconn->msg);
-      free(dbconn);
-   }
-}
-
-char *INGerrorMessage(const INGconn *dbconn)
-{
-   EXEC SQL BEGIN DECLARE SECTION;
-   int sess_id;
-   char errbuf[256];
-   EXEC SQL END DECLARE SECTION;
-
-   if (dbconn != NULL) {
-      /*
-       * Switch to the correct default session for this thread.
-       */
-      sess_id = dbconn->session_id;
-      EXEC SQL SET_SQL (SESSION = :sess_id);
-
-      EXEC SQL INQUIRE_INGRES (:errbuf = ERRORTEXT);
-      strncpy(dbconn->msg, errbuf, sizeof(dbconn->msg));
-
-      /*
-       * Switch to no default session for this thread.
-       */
-      EXEC SQL SET_SQL (SESSION = NONE);
-   }
-
-   return dbconn->msg;
-}
-
-#endif
diff --git a/src/cats/myingres.sh b/src/cats/myingres.sh
deleted file mode 100644
index cc9cf3d..0000000
--- a/src/cats/myingres.sh
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2009-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 two of the GNU 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 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.
-*/
-#ifndef _MYINGRES_SH
-#define _MYINGRES_SH
-
-EXEC SQL INCLUDE SQLDA;
-
-/* ---typedefs--- */
-
-typedef struct ing_timestamp {
-   unsigned short year;
-   unsigned char month;
-   unsigned char day;
-   unsigned int secs;
-   unsigned int nsecs;
-   unsigned char tzh;
-   unsigned char tzm;
-} ING_TIMESTAMP;
-
-typedef struct ing_field {
-   char *name;
-   int max_length;
-   unsigned int type;
-   unsigned int flags;		/* 1 == not null */
-} INGRES_FIELD;
-
-typedef struct ing_row {
-   IISQLVAR *sqlvar;		/* ptr to sqlvar[sqld] for one row */
-   struct ing_row *next;
-   int row_number;
-} ING_ROW;
-
-typedef enum ing_status {
-   ING_COMMAND_OK,
-   ING_TUPLES_OK,
-   ING_NO_RESULT,
-   ING_NO_ROWS_PROCESSED,
-   ING_EMPTY_RESULT,
-   ING_ERROR
-} ING_STATUS;
-
-typedef struct ing_varchar {
-   short len;
-   char* value;
-} ING_VARCHAR;
-
-/* It seems, Bacula needs the complete query result stored in one data structure */
-typedef struct ing_result {
-   IISQLDA *sqlda;		/* descriptor */
-   INGRES_FIELD *fields;
-   int num_rows;
-   int num_fields;
-   ING_STATUS status;
-   ING_ROW *first_row;
-   ING_ROW *act_row;		/* just for iterating */
-} INGresult;
-
-typedef struct ing_conn {
-   char *dbname;
-   char *user;
-   char *password;
-   int session_id;
-   char *msg;
-} INGconn;
-
-/* ---Prototypes--- */
-int INGgetCols(INGconn *dbconn, const char *query, bool transaction);
-char *INGgetvalue(INGresult *ing_res, int row_number, int column_number);
-bool INGgetisnull(INGresult *ing_res, int row_number, int column_number);
-int INGntuples(const INGresult *ing_res);
-int INGnfields(const INGresult *ing_res);
-char *INGfname(const INGresult *ing_res, int column_number);
-short INGftype(const INGresult *ing_res, int column_number);
-int INGexec(INGconn *dbconn, const char *query, bool transaction);
-INGresult *INGquery(INGconn *dbconn, const char *query, bool transaction);
-void INGclear(INGresult *ing_res);
-void INGcommit(const INGconn *dbconn);
-INGconn *INGconnectDB(char *dbname, char *user, char *passwd, int session_id);
-void INGsetDefaultLockingMode(INGconn *dbconn);
-void INGdisconnectDB(INGconn *dbconn);
-char *INGerrorMessage(const INGconn *dbconn);
-char *INGcmdTuples(INGresult *ing_res);
-
-#endif /* _MYINGRES_SH */
diff --git a/src/cats/mysql.c b/src/cats/mysql.c
index a2ed279..496bb8b 100644
--- a/src/cats/mysql.c
+++ b/src/cats/mysql.c
@@ -1,38 +1,26 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Catalog Database routines specific to MySQL
  *   These are MySQL specific routines -- hopefully all
  *    other files are generic.
  *
- *    Kern Sibbald, March 2000
+ *    Written by Kern Sibbald, March 2000
  *
- * Major rewrite by Marco van Wieringen, January 2010 for catalog refactoring.
+ *  Class wrapper by Marco van Wieringen, January 2010
  */
 
 #include "bacula.h"
@@ -116,12 +104,12 @@ B_DB_MYSQL::B_DB_MYSQL(JCR *jcr,
    esc_obj = get_pool_memory(PM_FNAME);
    m_allow_transactions = mult_db_connections;
 
-   /* At this time, when mult_db_connections == true, this is for 
+   /* At this time, when mult_db_connections == true, this is for
     * specific console command such as bvfs or batch mode, and we don't
     * want to share a batch mode or bvfs. In the future, we can change
     * the creation function to add this parameter.
     */
-   m_dedicated = mult_db_connections; 
+   m_dedicated = mult_db_connections;
 
    /*
     * Initialize the private members.
@@ -307,7 +295,7 @@ void B_DB_MYSQL::db_close_database(JCR *jcr)
  *  to cleanup any thread specific data that it created.
  */
 void B_DB_MYSQL::db_thread_cleanup(void)
-{ 
+{
 #ifndef HAVE_WIN32
    mysql_thread_end();
 #endif
@@ -575,7 +563,7 @@ bool B_DB_MYSQL::sql_field_is_numeric(int field_type)
    return IS_NUM(field_type);
 }
 
-/* 
+/*
  * Returns true if OK
  *         false if failed
  */
@@ -603,7 +591,7 @@ bool B_DB_MYSQL::sql_batch_start(JCR *jcr)
 }
 
 /* set error to something to abort operation */
-/* 
+/*
  * Returns true if OK
  *         false if failed
  */
@@ -621,7 +609,7 @@ bool B_DB_MYSQL::sql_batch_end(JCR *jcr, const char *error)
    return true;
 }
 
-/* 
+/*
  * Returns true if OK
  *         false if failed
  */
diff --git a/src/cats/mysql.in b/src/cats/mysql.in
index 7de7bf0..d587785 100644
--- a/src/cats/mysql.in
+++ b/src/cats/mysql.in
@@ -2,6 +2,21 @@
 #
 # shell script to create Bacula MySQL tables
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 bindir=@MYSQL_BINDIR@
 db_name=@db_name@
 
diff --git a/src/cats/postgresql.c b/src/cats/postgresql.c
index a350830..cf85e88 100644
--- a/src/cats/postgresql.c
+++ b/src/cats/postgresql.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Catalog Database routines specific to PostgreSQL
@@ -32,7 +20,7 @@
  *    Dan Langille, December 2003
  *    based upon work done by Kern Sibbald, March 2000
  *
- * Major rewrite by Marco van Wieringen, January 2010 for catalog refactoring.
+ *   Class wrapper by Marco van Wieringen, January 2010
  */
 
 #include "bacula.h"
@@ -61,15 +49,15 @@ static dlist *db_list = NULL;
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
 B_DB_POSTGRESQL::B_DB_POSTGRESQL(JCR *jcr,
-                                 const char *db_driver,
-                                 const char *db_name,
-                                 const char *db_user,
-                                 const char *db_password,
-                                 const char *db_address,
-                                 int db_port, 
-                                 const char *db_socket,
-                                 bool mult_db_connections,
-                                 bool disable_batch_insert)
+   const char *db_driver,
+   const char *db_name,
+   const char *db_user,
+   const char *db_password,
+   const char *db_address,
+   int db_port,
+   const char *db_socket,
+   bool mult_db_connections,
+   bool disable_batch_insert)
 {
    /*
     * Initialize the parent class members.
@@ -122,12 +110,12 @@ B_DB_POSTGRESQL::B_DB_POSTGRESQL(JCR *jcr,
    m_buf =  get_pool_memory(PM_FNAME);
    m_allow_transactions = mult_db_connections;
 
-   /* At this time, when mult_db_connections == true, this is for 
+   /* At this time, when mult_db_connections == true, this is for
     * specific console command such as bvfs or batch mode, and we don't
     * want to share a batch mode or bvfs. In the future, we can change
     * the creation function to add this parameter.
     */
-   m_dedicated = mult_db_connections; 
+   m_dedicated = mult_db_connections;
 
    /*
     * Initialize the private members.
@@ -177,12 +165,12 @@ static bool pgsql_check_database_encoding(JCR *jcr, B_DB_POSTGRESQL *mdb)
          /*
           * Something is wrong with database encoding
           */
-         Mmsg(mdb->errmsg, 
+         Mmsg(mdb->errmsg,
               _("Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"),
               mdb->get_db_name(), row[0]);
          Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg);
          Dmsg1(50, "%s", mdb->errmsg);
-      } 
+      }
    }
    return ret;
 }
@@ -256,7 +244,7 @@ bool B_DB_POSTGRESQL::db_open_database(JCR *jcr)
 
    sql_query("SET datestyle TO 'ISO, YMD'");
    sql_query("SET cursor_tuple_fraction=1");
-   
+
    /*
     * Tell PostgreSQL we are using standard conforming strings
     * and avoid warnings such as:
@@ -344,7 +332,7 @@ void B_DB_POSTGRESQL::db_thread_cleanup(void)
 void B_DB_POSTGRESQL::db_escape_string(JCR *jcr, char *snew, char *old, int len)
 {
    int error;
-  
+
    PQescapeStringConn(m_db_handle, snew, old, len, &error);
    if (error) {
       Jmsg(jcr, M_FATAL, 0, _("PQescapeStringConn returned non-zero.\n"));
@@ -403,7 +391,7 @@ void B_DB_POSTGRESQL::db_unescape_object(JCR *jcr, char *from, int32_t expected_
    *dest = check_pool_memory_size(*dest, new_len+1);
    memcpy(*dest, obj, new_len);
    (*dest)[new_len]=0;
-   
+
    PQfreemem(obj);
 
    Dmsg1(010, "obj size: %d\n", *dest_len);
@@ -475,14 +463,14 @@ void B_DB_POSTGRESQL::db_end_transaction(JCR *jcr)
  * Submit a general SQL command (cmd), and for each row returned,
  * the result_handler is called with the ctx.
  */
-bool B_DB_POSTGRESQL::db_big_sql_query(const char *query, 
-                                       DB_RESULT_HANDLER *result_handler, 
+bool B_DB_POSTGRESQL::db_big_sql_query(const char *query,
+                                       DB_RESULT_HANDLER *result_handler,
                                        void *ctx)
 {
    SQL_ROW row;
    bool retval = false;
    bool in_transaction = m_transaction;
-   
+
    Dmsg1(500, "db_sql_query starts with '%s'\n", query);
 
    /* This code handles only SELECT queries */
@@ -519,7 +507,7 @@ bool B_DB_POSTGRESQL::db_big_sql_query(const char *query,
       }
       PQclear(m_result);
       m_result = NULL;
-      
+
    } while (m_num_rows > 0);    /* TODO: Can probably test against 100 */
 
    sql_query("CLOSE _bac_cursor");
@@ -852,7 +840,7 @@ SQL_FIELD *B_DB_POSTGRESQL::sql_fetch_field(void)
             } else {
                 this_length = cstrlen(PQgetvalue(m_result, j, i));
             }
-         
+
             if (max_length < this_length) {
                max_length = this_length;
             }
@@ -961,7 +949,7 @@ bool B_DB_POSTGRESQL::sql_batch_start(JCR *jcr)
       Dmsg0(500, "sql_batch_start failed\n");
       return false;
    }
-   
+
    /*
     * We are starting a new query.  reset everything.
     */
@@ -1019,18 +1007,18 @@ bool B_DB_POSTGRESQL::sql_batch_end(JCR *jcr, const char *error)
 
    Dmsg0(500, "sql_batch_end started\n");
 
-   do { 
+   do {
       res = PQputCopyEnd(m_db_handle, error);
    } while (res == 0 && --count > 0);
 
    if (res == 1) {
       Dmsg0(500, "ok\n");
-      m_status = 1;
+      m_status = 0;
    }
-   
+
    if (res <= 0) {
       Dmsg0(500, "we failed\n");
-      m_status = 0;
+      m_status = 1;
       Mmsg1(&errmsg, _("error ending batch mode: %s"), PQerrorMessage(m_db_handle));
       Dmsg1(500, "failure %s\n", errmsg);
    }
@@ -1039,12 +1027,15 @@ bool B_DB_POSTGRESQL::sql_batch_end(JCR *jcr, const char *error)
    pg_result = PQgetResult(m_db_handle);
    if (PQresultStatus(pg_result) != PGRES_COMMAND_OK) {
       Mmsg1(&errmsg, _("error ending batch mode: %s"), PQerrorMessage(m_db_handle));
-      m_status = 0;
+      m_status = 1;
    }
-   PQclear(pg_result); 
 
-   Dmsg0(500, "sql_batch_end finishing\n");
+   /* Get some statistics to compute the best plan */
+   sql_query("ANALYZE batch");
+
+   PQclear(pg_result);
 
+   Dmsg0(500, "sql_batch_end finishing\n");
    return true;
 }
 
@@ -1068,11 +1059,11 @@ bool B_DB_POSTGRESQL::sql_batch_insert(JCR *jcr, ATTR_DBR *ar)
       digest = ar->Digest;
    }
 
-   len = Mmsg(cmd, "%u\t%s\t%s\t%s\t%s\t%s\t%u\n", 
-              ar->FileIndex, edit_int64(ar->JobId, ed1), esc_path, 
+   len = Mmsg(cmd, "%u\t%s\t%s\t%s\t%s\t%s\t%u\n",
+              ar->FileIndex, edit_int64(ar->JobId, ed1), esc_path,
               esc_name, ar->attr, digest, ar->DeltaSeq);
 
-   do { 
+   do {
       res = PQputCopyData(m_db_handle, cmd, len);
    } while (res == 0 && --count > 0);
 
@@ -1098,10 +1089,10 @@ bool B_DB_POSTGRESQL::sql_batch_insert(JCR *jcr, ATTR_DBR *ar)
  * Initialize database data structure. In principal this should
  * never have errors, or it is really fatal.
  */
-B_DB *db_init_database(JCR *jcr, const char *db_driver, const char *db_name, 
-                       const char *db_user, const char *db_password, 
-                       const char *db_address, int db_port, 
-                       const char *db_socket, bool mult_db_connections, 
+B_DB *db_init_database(JCR *jcr, const char *db_driver, const char *db_name,
+                       const char *db_user, const char *db_password,
+                       const char *db_address, int db_port,
+                       const char *db_socket, bool mult_db_connections,
                        bool disable_batch_insert)
 {
    B_DB_POSTGRESQL *mdb = NULL;
@@ -1124,8 +1115,8 @@ B_DB *db_init_database(JCR *jcr, const char *db_driver, const char *db_name,
       }
    }
    Dmsg0(100, "db_init_database first time\n");
-   mdb = New(B_DB_POSTGRESQL(jcr, db_driver, db_name, db_user, db_password, 
-                             db_address, db_port, db_socket, 
+   mdb = New(B_DB_POSTGRESQL(jcr, db_driver, db_name, db_user, db_password,
+                             db_address, db_port, db_socket,
                              mult_db_connections, disable_batch_insert));
 
 bail_out:
diff --git a/src/cats/postgresql.in b/src/cats/postgresql.in
index c6220bd..d890e47 100644
--- a/src/cats/postgresql.in
+++ b/src/cats/postgresql.in
@@ -2,6 +2,21 @@
 #
 # shell script to create Bacula PostgreSQL tables
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 bindir=@POSTGRESQL_BINDIR@
 db_name=@db_name@
 
diff --git a/src/cats/protos.h b/src/cats/protos.h
index c0a4aff..f4a53c6 100644
--- a/src/cats/protos.h
+++ b/src/cats/protos.h
@@ -1,36 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *  Database routines that are exported by the cats library for
  *    use elsewhere in Bacula (mainly the Director).
  *
- *    Version $Id$
+ *    Written by Kern Sibbald, MM
  */
 
 #ifndef __SQL_PROTOS_H
@@ -49,6 +37,7 @@ int db_list_handler(void *ctx, int num_fields, char **row);
 void db_debug_print(JCR *jcr, FILE *fp);
 int db_int_handler(void *ctx, int num_fields, char **row);
 void db_check_backend_thread_safe();
+int db_string_list_handler(void *ctx, int num_fields, char **row);
 
 /* sql_create.c */
 int db_create_path_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar);
@@ -69,6 +58,7 @@ bool db_create_restore_object_record(JCR *jcr, B_DB *mdb, ROBJECT_DBR *ar);
 bool db_create_base_file_attributes_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar);
 bool db_commit_base_file_attributes_record(JCR *jcr, B_DB *mdb);
 bool db_create_base_file_list(JCR *jcr, B_DB *mdb, char *jobids);
+void db_disable_batch_insert(bool disable);
 
 /* sql_delete.c */
 int db_delete_pool_record(JCR *jcr, B_DB *db, POOL_DBR *pool_dbr);
@@ -82,12 +72,13 @@ int db_find_next_volume(JCR *jcr, B_DB *mdb, int index, bool InChanger, MEDIA_DB
 bool db_find_failed_job_since(JCR *jcr, B_DB *mdb, JOB_DBR *jr, POOLMEM *stime, int &JobLevel);
 
 /* sql_get.c */
-bool db_get_volume_jobids(JCR *jcr, B_DB *mdb, 
+bool db_get_volume_jobids(JCR *jcr, B_DB *mdb,
                          MEDIA_DBR *mr, db_list_ctx *lst);
 bool db_get_base_file_list(JCR *jcr, B_DB *mdb, bool use_md5,
                            DB_RESULT_HANDLER *result_handler,void *ctx);
 int db_get_path_record(JCR *jcr, B_DB *mdb);
-bool db_get_pool_record(JCR *jcr, B_DB *db, POOL_DBR *pdbr);
+bool db_get_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pdbr);
+bool db_get_pool_numvols(JCR *jcr, B_DB *mdb, POOL_DBR *pdbr);
 int db_get_client_record(JCR *jcr, B_DB *mdb, CLIENT_DBR *cr);
 bool db_get_job_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr);
 int db_get_job_volume_names(JCR *jcr, B_DB *mdb, JobId_t JobId, POOLMEM **VolumeNames);
@@ -112,11 +103,13 @@ bool db_get_used_base_jobids(JCR *jcr, B_DB *mdb, POOLMEM *jobids, db_list_ctx *
 /* sql_list.c */
 enum e_list_type {
    HORZ_LIST,
-   VERT_LIST
+   VERT_LIST,
+   FAILED_JOBS,
+   INCOMPLETE_JOBS
 };
 
 void db_list_pool_records(JCR *jcr, B_DB *db, POOL_DBR *pr, DB_LIST_HANDLER sendit, void *ctx, e_list_type type);
-void db_list_job_records(JCR *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx, e_list_type type);
+alist *db_list_job_records(JCR *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx, e_list_type type);
 void db_list_job_totals(JCR *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx);
 void db_list_files_for_job(JCR *jcr, B_DB *db, uint32_t jobid, DB_LIST_HANDLER sendit, void *ctx);
 void db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx, e_list_type type);
diff --git a/src/cats/restore_ingres_catalog_backup.in b/src/cats/restore_ingres_catalog_backup.in
deleted file mode 100755
index cc07732..0000000
--- a/src/cats/restore_ingres_catalog_backup.in
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-#
-# shell script to restore a dump of the bacula Ingres database using
-# a base64 encoded tar of the content.
-#
-
-bindir=@INGRES_BINDIR@
-PATH="$bindir:$PATH"
-db_name=${db_name:- at db_name@}
-db_user=${db_user:- at db_user@}
-working_dir="@working_dir@"
-
-#
-# Source the Ingres settings when they exist.
-#
-[ -f ${bindir}/../../.ingIIsh  ] && . ${bindir}/../../.ingIIsh
-
-#
-# See if the dumpdir exists.
-#
-[ ! -d ${working_dir}/ingres_dump ] && mkdir -p ${working_dir}/ingres_dump
-
-#
-# Decode the tar and restore it.
-#
-cd ${working_dir}/ingres_dump || exit 1
-case `uname -s` in
-   Linux)
-      base64 -d | gzip -dc | tar xf -
-      ;;
-   SunOS)
-      uudecode -p | gzip -dc | tar xf -
-      ;;
-   *)
-      echo "Unsupported OS type encountered, `uname -s`"
-      exit 1
-      ;;
-esac
-
-if [ $? = 0 ]; then
-   #
-   # Restore the data
-   #
-   sql -u${db_user} ${db_name} < copy.in
-   sysmod ${db_name}
-fi
-
-cd /
-
-rm -rf ${working_dir}/ingres_dump
-
-exit 0
diff --git a/src/cats/sql.c b/src/cats/sql.c
index 9d589fd..2a5af22 100644
--- a/src/cats/sql.c
+++ b/src/cats/sql.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Catalog Database interface routines
@@ -33,14 +21,13 @@
  *     SQL engine specific routines are in mysql.c, postgresql.c,
  *       sqlite.c, ...
  *
- *    Kern Sibbald, March 2000
+ *    Written by Kern Sibbald, March 2000
  *
- *    Version $Id: sql.c 8034 2008-11-11 14:33:46Z ricozz $
  */
 
 #include "bacula.h"
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -65,6 +52,20 @@ dbid_list::~dbid_list()
 }
 
 /*
+ * Called here to retrieve an string list from the database
+ */
+int db_string_list_handler(void *ctx, int num_fields, char **row)
+{
+   alist **val = (alist **)ctx;
+
+   if (row[0]) {
+      (*val)->append(bstrdup(row[0]));
+   }
+
+   return 0;
+}
+
+/*
  * Called here to retrieve an integer from the database
  */
 int db_int_handler(void *ctx, int num_fields, char **row)
@@ -498,10 +499,10 @@ int list_result(void *vctx, int nb_col, char **row)
          } else {
             if (sql_field_is_numeric(mdb, field->type) && (int)field->max_length > 0) { /* fixup for commas */
                field->max_length += (field->max_length - 1) / 3;
-            }  
+            }
             if (col_len < (int)field->max_length) {
                col_len = field->max_length;
-            }  
+            }
             if (col_len < 4 && !sql_field_is_not_null(mdb, field->flags)) {
                col_len = 4;                 /* 4 = length of the word "NULL" */
             }
@@ -535,9 +536,9 @@ int list_result(void *vctx, int nb_col, char **row)
          send(ctx, buf);
       }
       send(ctx, "\n");
-      list_dashes(mdb, send, ctx);      
+      list_dashes(mdb, send, ctx);
    }
-   
+
    Dmsg1(800, "list_result starts third loop looking at %d fields\n", num_fields);
 
    sql_field_seek(mdb, 0);
@@ -622,10 +623,10 @@ int list_result(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *send, void *ctx, e_list_ty
       } else {
          if (sql_field_is_numeric(mdb, field->type) && (int)field->max_length > 0) { /* fixup for commas */
             field->max_length += (field->max_length - 1) / 3;
-         }  
+         }
          if (col_len < (int)field->max_length) {
             col_len = field->max_length;
-         }  
+         }
          if (col_len < 4 && !sql_field_is_not_null(mdb, field->flags)) {
             col_len = 4;                 /* 4 = length of the word "NULL" */
          }
@@ -705,7 +706,7 @@ vertical_list:
    return sql_num_rows(mdb);
 }
 
-/* 
+/*
  * Open a new connexion to mdb catalog. This function is used
  * by batch and accurate mode.
  */
@@ -728,7 +729,7 @@ bool db_open_batch_connexion(JCR *jcr, B_DB *mdb)
               jcr->db_batch->get_db_name(), db_strerror(jcr->db_batch));
          Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg);
          return false;
-      }      
+      }
    }
    return true;
 }
@@ -752,4 +753,4 @@ void db_debug_print(JCR *jcr, FILE *fp)
    mdb->print_lock_info(fp);
 }
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/sql_cmds.c b/src/cats/sql_cmds.c
index 6ebcb62..c996ee2 100644
--- a/src/cats/sql_cmds.c
+++ b/src/cats/sql_cmds.c
@@ -1,35 +1,23 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  This file contains all the SQL commands that are either issued by the
  *  Director or which are database backend specific.
  *
- *     Kern Sibbald, July MMII
+ *     Written by Kern Sibbald, July MMII
  */
 /*
  * Note, PostgreSQL imposes some constraints on using DISTINCT and GROUP BY
@@ -316,9 +304,6 @@ const char *select_recent_version_with_basejob[] = {
    "ORDER BY FilenameId, PathId, JobTDate DESC ",
 
    /* SQLite3 */
-   select_recent_version_with_basejob_default,
-
-   /* Ingres */
    select_recent_version_with_basejob_default
 };
 
@@ -383,9 +368,6 @@ const char *select_recent_version_with_basejob_and_delta[] = {
    "ORDER BY FilenameId, PathId, DeltaSeq, JobTDate DESC ",
 
    /* SQLite3 */
-   select_recent_version_with_basejob_and_delta_default,
-
-   /* Ingres */
    select_recent_version_with_basejob_and_delta_default
 };
 
@@ -420,9 +402,6 @@ const char *select_recent_version[] = {
     "ORDER BY FilenameId, PathId, JobTDate DESC ",
 
    /* SQLite3 */
-   select_recent_version_default,
-
-   /* Ingres */
    select_recent_version_default
 };
 
@@ -447,18 +426,7 @@ const char *create_temp_accurate_jobids[] = {
    create_temp_accurate_jobids_default,
 
    /* SQLite3 */
-   create_temp_accurate_jobids_default,
-
-   /* Ingres */
-   "DECLARE GLOBAL TEMPORARY TABLE btemp3%s AS "
-   "SELECT JobId, StartTime, EndTime, JobTDate, PurgedFiles "
-   "FROM Job JOIN FileSet USING (FileSetId) "
-   "WHERE ClientId = %s "
-   "AND Level='F' AND JobStatus IN ('T','W') AND Type='B' "
-   "AND StartTime<'%s' "
-   "AND FileSet.FileSet=(SELECT FileSet FROM FileSet WHERE FileSetId = %s) "
-   "ORDER BY Job.JobTDate DESC FETCH FIRST 1 ROW ONLY "
-   "ON COMMIT PRESERVE ROWS WITH NORECOVERY"
+   create_temp_accurate_jobids_default
 };
 
 const char *create_temp_basefile[] = {
@@ -476,13 +444,7 @@ const char *create_temp_basefile[] = {
    /* SQLite3 */
    "CREATE TEMPORARY TABLE basefile%lld ("
    "Path TEXT,"
-   "Name TEXT)",
-
-   /* Ingres */
-   "DECLARE GLOBAL TEMPORARY TABLE basefile%lld ("
-   "Path VARBYTE(32000) NOT NULL,"
-   "Name VARBYTE(32000) NOT NULL) "
-   "ON COMMIT PRESERVE ROWS WITH NORECOVERY"
+   "Name TEXT)"
 };
 
 const char *create_temp_new_basefile[] = {
@@ -514,18 +476,7 @@ const char *create_temp_new_basefile[] = {
    "FROM ( %s ) AS Temp "
    "JOIN Filename ON (Filename.FilenameId = Temp.FilenameId) "
    "JOIN Path ON (Path.PathId = Temp.PathId) "
-   "WHERE Temp.FileIndex > 0",
-
-   /* Ingres */
-   "DECLARE GLOBAL TEMPORARY TABLE new_basefile%lld AS "
-   "SELECT Path.Path AS Path, Filename.Name AS Name, Temp.FileIndex AS FileIndex,"
-   "Temp.JobId AS JobId, Temp.LStat AS LStat, Temp.FileId AS FileId, "
-   "Temp.MD5 AS MD5 "
-   "FROM ( %s ) AS Temp "
-   "JOIN Filename ON (Filename.FilenameId = Temp.FilenameId) "
-   "JOIN Path ON (Path.PathId = Temp.PathId) "
-   "WHERE Temp.FileIndex > 0 "
-   "ON COMMIT PRESERVE ROWS WITH NORECOVERY"
+   "WHERE Temp.FileIndex > 0"
 };
 
 /* ====== ua_prune.c */
@@ -554,16 +505,7 @@ const char *create_deltabs[] = {
    "PurgedFiles TINYINT, "
    "FileSetId INTEGER UNSIGNED, "
    "JobFiles INTEGER UNSIGNED, "
-   "JobStatus CHAR)",
-
-   /* Ingres */
-   "DECLARE GLOBAL TEMPORARY TABLE DelCandidates ("
-   "JobId INTEGER NOT NULL, "
-   "PurgedFiles SMALLINT, "
-   "FileSetId INTEGER, "
-   "JobFiles INTEGER, "
-   "JobStatus CHAR(1)) "
-   "ON COMMIT PRESERVE ROWS WITH NORECOVERY"
+   "JobStatus CHAR)"
 };
 
 /* ======= ua_purge.c */
@@ -593,23 +535,7 @@ const char *uap_upgrade_copies_oldest_job[] = {
    uap_upgrade_copies_oldest_job_default,
 
    /* SQLite3 */
-   uap_upgrade_copies_oldest_job_default,
-
-   /* Ingres */
-   "DECLARE GLOBAL TEMPORARY TABLE cpy_tmp AS "
-       "SELECT MIN(JobId) AS JobId FROM Job "     /* Choose the oldest job */
-        "WHERE Type='%c' "                        /* JT_JOB_COPY */
-          "AND ( PriorJobId IN (%s) "             /* JobId selection */
-              "OR "
-               " PriorJobId IN ( "
-                  "SELECT PriorJobId "
-                    "FROM Job "
-                   "WHERE JobId IN (%s) "         /* JobId selection */
-                    " AND Type='B' "
-                 ") "
-              ") "
-          "GROUP BY PriorJobId "           /* one result per copy */
-   "ON COMMIT PRESERVE ROWS WITH NORECOVERY"
+   uap_upgrade_copies_oldest_job_default
 };
 
 /* ======= ua_restore.c */
@@ -644,17 +570,7 @@ const char *uar_file[] = {
    "AND Client.ClientId=Job.ClientId "
    "AND Job.JobId=File.JobId AND File.FileIndex > 0 "
    "AND Path.PathId=File.PathId AND Filename.FilenameId=File.FilenameId "
-   "AND Filename.Name='%s' ORDER BY StartTime DESC LIMIT 20",
-
-   /* Ingres */
-   "SELECT Job.JobId as JobId,"
-   "Path.Path||Filename.Name as Name, "
-   "StartTime,Type as JobType,JobStatus,JobFiles,JobBytes "
-   "FROM Client,Job,File,Filename,Path WHERE Client.Name='%s' "
-   "AND Client.ClientId=Job.ClientId "
-   "AND Job.JobId=File.JobId AND File.FileIndex > 0 "
-   "AND Path.PathId=File.PathId AND Filename.FilenameId=File.FilenameId "
-   "AND Filename.Name='%s' ORDER BY StartTime DESC FETCH FIRST 20 ROWS ONLY"
+   "AND Filename.Name='%s' ORDER BY StartTime DESC LIMIT 20"
 };
 
 const char *uar_create_temp[] = {
@@ -698,22 +614,7 @@ const char *uar_create_temp[] = {
    "VolumeName TEXT,"
    "StartFile INTEGER UNSIGNED,"
    "VolSessionId INTEGER UNSIGNED,"
-   "VolSessionTime INTEGER UNSIGNED)",
-
-   /* Ingres */
-   "DECLARE GLOBAL TEMPORARY TABLE temp ("
-   "JobId INTEGER NOT NULL,"
-   "JobTDate BIGINT,"
-   "ClientId INTEGER,"
-   "Level CHAR(1),"
-   "JobFiles INTEGER,"
-   "JobBytes BIGINT,"
-   "StartTime TIMESTAMP WITHOUT TIME ZONE,"
-   "VolumeName VARBYTE(128),"
-   "StartFile INTEGER,"
-   "VolSessionId INTEGER,"
-   "VolSessionTime INTEGER) "
-   "ON COMMIT PRESERVE ROWS WITH NORECOVERY"
+   "VolSessionTime INTEGER UNSIGNED)"
 };
 
 const char *uar_create_temp1[] = {
@@ -730,13 +631,7 @@ const char *uar_create_temp1[] = {
    /* SQLite3 */
    "CREATE TEMPORARY TABLE temp1 ("
    "JobId INTEGER UNSIGNED NOT NULL,"
-   "JobTDate BIGINT UNSIGNED)",
-
-   /* Ingres */
-   "DECLARE GLOBAL TEMPORARY TABLE temp1 ("
-   "JobId INTEGER NOT NULL,"
-   "JobTDate BIGINT) "
-   "ON COMMIT PRESERVE ROWS WITH NORECOVERY"
+   "JobTDate BIGINT UNSIGNED)"
 };
 
 /* Query to get all files in a directory -- no recursing
@@ -777,17 +672,7 @@ const char *uar_jobid_fileindex_from_dir[] = {
    "AND Job.ClientId=Client.ClientId "
    "AND Path.PathId=File.Pathid "
    "AND Filename.FilenameId=File.FilenameId "
-   "GROUP BY File.FileIndex ",
-
-   /* Ingres */
-   "SELECT Job.JobId,File.FileIndex FROM Job,File,Path,Filename,Client "
-   "WHERE Job.JobId IN (%s) "
-   "AND Job.JobId=File.JobId "
-   "AND Path.Path='%s' "
-   "AND Client.Name='%s' "
-   "AND Job.ClientId=Client.ClientId "
-   "AND Path.PathId=File.Pathid "
-   "AND Filename.FilenameId=File.FilenameId"
+   "GROUP BY File.FileIndex "
 };
 
 const char *sql_media_order_most_recently_written[] = {
@@ -798,10 +683,7 @@ const char *sql_media_order_most_recently_written[] = {
    "ORDER BY LastWritten IS NULL,LastWritten DESC,MediaId",
 
    /* SQLite3 */
-   "ORDER BY LastWritten IS NULL,LastWritten DESC,MediaId",
-
-   /* Ingres */
-   "ORDER BY IFNULL(LastWritten, '1970-01-01 00:00:00') DESC,MediaId"
+   "ORDER BY LastWritten IS NULL,LastWritten DESC,MediaId"
 };
 
 const char *sql_get_max_connections[] = {
@@ -812,9 +694,6 @@ const char *sql_get_max_connections[] = {
    "SHOW max_connections",
 
    /* SQLite3 */
-   "SELECT 0",
-
-   /* Ingres (TODO) */
    "SELECT 0"
 };
 
@@ -822,7 +701,7 @@ const char *sql_get_max_connections[] = {
  *  The Group By can return strange numbers when having multiple
  *  version of a file in the same dataset.
  */
-const char *default_sql_bvfs_select = 
+const char *default_sql_bvfs_select =
 "CREATE TABLE %s AS "
 "SELECT File.JobId, File.FileIndex, File.FileId "
 "FROM Job, File, ( "
@@ -852,10 +731,7 @@ const char *sql_bvfs_select[] = {
           "WHERE FileIndex > 0)",
 
    /* SQLite3 */
-   default_sql_bvfs_select,
-
-   /* Ingres (TODO) */
-   "SELECT 0"
+   default_sql_bvfs_select
 };
 
 static const char *sql_bvfs_list_files_default =
@@ -917,12 +793,74 @@ const char *sql_bvfs_list_files[] = {
    sql_bvfs_list_files_default,
 
    /* SQLite3 */
-   sql_bvfs_list_files_default,
-
-   /* Ingres (TODO) */
    sql_bvfs_list_files_default
 };
 
+/* Basically the same thing than select_recent_version_with_basejob_and_delta_default,
+ * but we specify a single file with FilenameId/PathId
+ *
+ * Input:
+ * 1 JobId to look at
+ * 2 FilenameId
+ * 3 PathId
+ * 4 JobId to look at
+ * 5 FilenameId
+ * 6 PathId
+ * 7 Jobid
+ * 8 JobId
+ */
+const char *bvfs_select_delta_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 "
+"FROM Job, File, ( "
+    "SELECT MAX(JobTDate) AS JobTDate, PathId, FilenameId, DeltaSeq "
+      "FROM ( "
+       "SELECT JobTDate, PathId, FilenameId, DeltaSeq " /*Get all normal files*/
+         "FROM File JOIN Job USING (JobId) "          /* from selected backup */
+        "WHERE File.JobId IN (%s) AND FilenameId = %s AND PathId = %s "
+         "UNION ALL "
+       "SELECT JobTDate, PathId, FilenameId, DeltaSeq " /*Get all files from */
+         "FROM BaseFiles "                            /* BaseJob */
+              "JOIN File USING (FileId) "
+              "JOIN Job  ON    (BaseJobId = Job.JobId) "
+        "WHERE BaseFiles.JobId IN (%s) "        /* Use Max(JobTDate) to find */
+             " AND FilenameId = %s AND PathId = %s "
+       ") AS tmp "
+       "GROUP BY PathId, FilenameId, DeltaSeq "    /* the latest file version */
+    ") AS T1 "
+"WHERE (Job.JobId IN ( "  /* Security, we force JobId to be valid */
+        "SELECT DISTINCT BaseJobId FROM BaseFiles WHERE JobId IN (%s)) "
+        "OR Job.JobId IN (%s)) "
+  "AND T1.JobTDate = Job.JobTDate " /* Join on JobTDate to get the orginal */
+  "AND Job.JobId = File.JobId "     /* Job/File record */
+  "AND T1.PathId = File.PathId "
+  "AND T1.FilenameId = File.FilenameId";
+
+
+const char *bvfs_select_delta_version_with_basejob_and_delta[] = {
+   /* MySQL */
+   bvfs_select_delta_version_with_basejob_and_delta_default,
+
+   /* Postgresql */    /* The DISTINCT ON () permits to avoid extra join */
+   "SELECT DISTINCT ON (FilenameId, PathId, DeltaSeq) JobTDate, JobId, FileId, "
+         "FileIndex, PathId, FilenameId, LStat, MD5, DeltaSeq "
+   "FROM "
+    "(SELECT FileId, JobId, PathId, FilenameId, FileIndex, LStat, MD5,DeltaSeq "
+         "FROM File WHERE JobId IN (%s) AND FilenameId = %s AND PathId = %s "
+        "UNION ALL "
+       "SELECT File.FileId, File.JobId, PathId, FilenameId, "
+              "File.FileIndex, LStat, MD5, DeltaSeq "
+         "FROM BaseFiles JOIN File USING (FileId) "
+        "WHERE BaseFiles.JobId IN (%s) AND FilenameId = %s AND PathId = %s "
+       ") AS T JOIN Job USING (JobId) "
+   "ORDER BY FilenameId, PathId, DeltaSeq, JobTDate DESC ",
+
+   /* SQLite3 */
+   bvfs_select_delta_version_with_basejob_and_delta_default
+};
+
+
 const char *batch_lock_path_query[] = {
    /* Mysql */
    "LOCK TABLES Path write, batch write, Path as p write",
@@ -931,9 +869,6 @@ const char *batch_lock_path_query[] = {
    "BEGIN; LOCK TABLE Path IN SHARE ROW EXCLUSIVE MODE",
 
    /* SQLite3 */
-   "BEGIN",
-
-   /* Ingres */
    "BEGIN"
 };
 
@@ -945,9 +880,6 @@ const char *batch_lock_filename_query[] = {
    "BEGIN; LOCK TABLE Filename IN SHARE ROW EXCLUSIVE MODE",
 
    /* SQLite3 */
-   "BEGIN",
-
-   /* Ingres */
    "BEGIN"
 };
 
@@ -959,9 +891,6 @@ const char *batch_unlock_tables_query[] = {
    "COMMIT",
 
    /* SQLite3 */
-   "COMMIT",
-
-   /* Ingres */
    "COMMIT"
 };
 
@@ -981,12 +910,7 @@ const char *batch_fill_path_query[] = {
    /* SQLite3 */
    "INSERT INTO Path (Path) "
       "SELECT DISTINCT Path FROM batch "
-      "EXCEPT SELECT Path FROM Path",
-
-   /* Ingres */
-   "INSERT INTO Path (Path) "
-      "SELECT DISTINCT b.Path FROM batch b "
-       "WHERE NOT EXISTS (SELECT Path FROM Path p WHERE p.Path = b.Path)"
+      "EXCEPT SELECT Path FROM Path"
 };
 
 const char *batch_fill_filename_query[] = {
@@ -1006,12 +930,7 @@ const char *batch_fill_filename_query[] = {
    /* SQLite3 */
    "INSERT INTO Filename (Name) "
       "SELECT DISTINCT Name FROM batch "
-      "EXCEPT SELECT Name FROM Filename",
-
-   /* Ingres */
-   "INSERT INTO Filename (Name) "
-      "SELECT DISTINCT b.Name FROM batch b "
-       "WHERE NOT EXISTS (SELECT Name FROM Filename f WHERE f.Name = b.Name)"
+      "EXCEPT SELECT Name FROM Filename"
 };
 
 const char *match_query[] = {
@@ -1022,10 +941,7 @@ const char *match_query[] = {
    "~",
 
    /* SQLite3 */
-   "LIKE",                      /* MATCH doesn't seems to work anymore... */
-
-   /* Ingres */
-   "~"
+   "LIKE"                      /* MATCH doesn't seems to work anymore... */
 };
 
 static const char *insert_counter_values_default =
@@ -1043,9 +959,6 @@ const char *insert_counter_values[] = {
    insert_counter_values_default,
 
    /* SQLite3 */
-   insert_counter_values_default,
-
-   /* Ingres */
    insert_counter_values_default
 };
 
@@ -1062,9 +975,6 @@ const char *select_counter_values[] = {
    select_counter_values_default,
 
    /* SQLite3 */
-   select_counter_values_default,
-
-   /* Ingres */
    select_counter_values_default
 };
 
@@ -1083,8 +993,28 @@ const char *update_counter_values[] = {
    update_counter_values_default,
 
    /* SQLite3 */
-   update_counter_values_default,
-
-   /* Ingres */
    update_counter_values_default
 };
+
+static const char *expired_volumes_defaults =
+"SELECT Media.VolumeName  AS volumename, "
+       "Media.LastWritten AS lastwritten "
+" FROM  Media "
+" WHERE VolStatus IN ('Full', 'Used') "
+     " AND ( Media.LastWritten +  Media.VolRetention ) < NOW() "
+     " %s ";
+
+const char *expired_volumes[] = {
+   /* Mysql */
+   expired_volumes_defaults,
+
+   /* Postgresql */
+   "SELECT Media.VolumeName, Media.LastWritten "
+   " FROM  Media "
+   " WHERE VolStatus IN ('Full', 'Used') "
+     " AND ( Media.LastWritten + (interval '1 second' * Media.VolRetention ) < NOW()) "
+     " %s ",
+
+   /* SQLite3 */
+   expired_volumes_defaults
+};
diff --git a/src/cats/sql_cmds.h b/src/cats/sql_cmds.h
index 9ffbc9d..9f98978 100644
--- a/src/cats/sql_cmds.h
+++ b/src/cats/sql_cmds.h
@@ -1,89 +1,74 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
-extern const char CATS_IMP_EXP *get_restore_objects;
-extern const char CATS_IMP_EXP *fill_jobhisto;
+extern const char CATS_IMP_EXP *batch_fill_filename_query[];
+extern const char CATS_IMP_EXP *batch_fill_path_query[];
+extern const char CATS_IMP_EXP *batch_lock_filename_query[];
+extern const char CATS_IMP_EXP *batch_lock_path_query[];
+extern const char CATS_IMP_EXP *batch_unlock_tables_query[];
+extern const char CATS_IMP_EXP *cleanup_created_job;
+extern const char CATS_IMP_EXP *cleanup_running_job;
 extern const char CATS_IMP_EXP *client_backups;
-extern const char CATS_IMP_EXP *list_pool;
-extern const char CATS_IMP_EXP *drop_deltabs[];
-extern const char CATS_IMP_EXP *create_delindex;
 extern const char CATS_IMP_EXP *cnt_File;
+extern const char CATS_IMP_EXP *create_delindex;
+extern const char CATS_IMP_EXP *create_deltabs[];
+extern const char CATS_IMP_EXP *create_temp_accurate_jobids[];
+extern const char CATS_IMP_EXP *create_temp_basefile[];
+extern const char CATS_IMP_EXP *create_temp_new_basefile[];
 extern const char CATS_IMP_EXP *del_MAC;
+extern const char CATS_IMP_EXP *drop_deltabs[];
+extern const char CATS_IMP_EXP *expired_volumes[];
+extern const char CATS_IMP_EXP *fill_jobhisto;
+extern const char CATS_IMP_EXP *get_restore_objects;
+extern const char CATS_IMP_EXP *insert_counter_values[];
+extern const char CATS_IMP_EXP *list_pool;
+extern const char CATS_IMP_EXP *match_query[];
+extern const char CATS_IMP_EXP *select_counter_values[];
+extern const char CATS_IMP_EXP *select_recent_version[];
+extern const char CATS_IMP_EXP *select_recent_version_with_basejob[];
+extern const char CATS_IMP_EXP *select_recent_version_with_basejob_and_delta[];
 extern const char CATS_IMP_EXP *sel_JobMedia;
-
-extern const char CATS_IMP_EXP *cleanup_created_job;
-extern const char CATS_IMP_EXP *cleanup_running_job;
-extern const char CATS_IMP_EXP *uar_list_jobs;
-extern const char CATS_IMP_EXP *uar_print_jobs;
+extern const char CATS_IMP_EXP *sql_bvfs_list_files[];
+extern const char CATS_IMP_EXP *sql_bvfs_select[];
+extern const char CATS_IMP_EXP *sql_get_max_connections[];
+extern const char CATS_IMP_EXP *sql_media_order_most_recently_written[];
+extern const char CATS_IMP_EXP *uap_upgrade_copies_oldest_job[];
 extern const char CATS_IMP_EXP *uar_count_files;
-extern const char CATS_IMP_EXP *uar_sel_files;
+extern const char CATS_IMP_EXP *uar_count_files;
+extern const char CATS_IMP_EXP *uar_create_temp[];
+extern const char CATS_IMP_EXP *uar_create_temp1[];
 extern const char CATS_IMP_EXP *uar_del_temp;
 extern const char CATS_IMP_EXP *uar_del_temp1;
-extern const char CATS_IMP_EXP *uar_last_full;
+extern const char CATS_IMP_EXP *uar_dif;
+extern const char CATS_IMP_EXP *uar_file[];
 extern const char CATS_IMP_EXP *uar_full;
 extern const char CATS_IMP_EXP *uar_inc;
+extern const char CATS_IMP_EXP *uar_jobid_fileindex;
+extern const char CATS_IMP_EXP *uar_jobid_fileindex_from_dir[];
+extern const char CATS_IMP_EXP *uar_jobid_fileindex_from_table;
+extern const char CATS_IMP_EXP *uar_jobids_fileindex;
+extern const char CATS_IMP_EXP *uar_last_full;
+extern const char CATS_IMP_EXP *uar_list_jobs;
 extern const char CATS_IMP_EXP *uar_list_temp;
+extern const char CATS_IMP_EXP *uar_mediatype;
+extern const char CATS_IMP_EXP *uar_print_jobs;
+extern const char CATS_IMP_EXP *uar_sel_all_temp;
 extern const char CATS_IMP_EXP *uar_sel_all_temp1;
+extern const char CATS_IMP_EXP *uar_sel_files;
 extern const char CATS_IMP_EXP *uar_sel_fileset;
 extern const char CATS_IMP_EXP *uar_sel_filesetid;
-extern const char CATS_IMP_EXP *uar_mediatype;
-extern const char CATS_IMP_EXP *uar_jobid_fileindex;
-extern const char CATS_IMP_EXP *uar_dif;
-extern const char CATS_IMP_EXP *uar_sel_all_temp;
-extern const char CATS_IMP_EXP *uar_count_files;
-extern const char CATS_IMP_EXP *uar_jobids_fileindex;
-extern const char CATS_IMP_EXP *uar_jobid_fileindex_from_table;
 extern const char CATS_IMP_EXP *uar_sel_jobid_temp;
-
-extern const char CATS_IMP_EXP *select_recent_version[];
-extern const char CATS_IMP_EXP *select_recent_version_with_basejob[];
-extern const char CATS_IMP_EXP *select_recent_version_with_basejob_and_delta[];
-extern const char CATS_IMP_EXP *create_temp_accurate_jobids[];
-extern const char CATS_IMP_EXP *create_temp_basefile[];
-extern const char CATS_IMP_EXP *create_temp_new_basefile[];
-extern const char CATS_IMP_EXP *create_deltabs[];
-extern const char CATS_IMP_EXP *uap_upgrade_copies_oldest_job[];
-
-extern const char CATS_IMP_EXP *uar_file[];
-extern const char CATS_IMP_EXP *uar_create_temp[];
-extern const char CATS_IMP_EXP *uar_create_temp1[];
-extern const char CATS_IMP_EXP *uar_jobid_fileindex_from_dir[];
-extern const char CATS_IMP_EXP *sql_media_order_most_recently_written[];
-extern const char CATS_IMP_EXP *sql_get_max_connections[];
-extern const char CATS_IMP_EXP *sql_bvfs_select[];
-extern const char CATS_IMP_EXP *sql_bvfs_list_files[];
-
-extern const char CATS_IMP_EXP *batch_lock_path_query[];
-extern const char CATS_IMP_EXP *batch_lock_filename_query[];
-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 09fd90c..74d7603 100644
--- a/src/cats/sql_create.c
+++ b/src/cats/sql_create.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Catalog Database Create record interface routines
  *
- *    Kern Sibbald, March 2000
+ *    Written by Kern Sibbald, March 2000
  *
  */
 
@@ -36,7 +24,7 @@
 
 static const int dbglevel = 100;
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -168,7 +156,7 @@ db_create_jobmedia_record(JCR *jcr, B_DB *mdb, JOBMEDIA_DBR *jm)
 bool
 db_create_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr)
 {
-   bool stat;        
+   bool stat;
    char ed1[30], ed2[30], ed3[50], ed4[50], ed5[50];
    char esc_name[MAX_ESCAPE_NAME_LENGTH];
    char esc_lf[MAX_ESCAPE_NAME_LENGTH];
@@ -350,7 +338,7 @@ bool db_create_storage_record(JCR *jcr, B_DB *mdb, STORAGE_DBR *sr)
 bool
 db_create_mediatype_record(JCR *jcr, B_DB *mdb, MEDIATYPE_DBR *mr)
 {
-   bool stat;        
+   bool stat;
    int num_rows;
    char esc[MAX_ESCAPE_NAME_LENGTH];
 
@@ -455,11 +443,11 @@ db_create_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
           edit_int64(mr->VolWriteTime, ed7),
           mr->VolParts,
           mr->LabelType,
-          edit_int64(mr->StorageId, ed8), 
-          edit_int64(mr->DeviceId, ed9), 
-          edit_int64(mr->LocationId, ed10), 
-          edit_int64(mr->ScratchPoolId, ed11), 
-          edit_int64(mr->RecyclePoolId, ed12), 
+          edit_int64(mr->StorageId, ed8),
+          edit_int64(mr->DeviceId, ed9),
+          edit_int64(mr->LocationId, ed10),
+          edit_int64(mr->ScratchPoolId, ed11),
+          edit_int64(mr->RecyclePoolId, ed12),
           mr->Enabled, mr->ActionOnPurge
           );
 
@@ -597,7 +585,9 @@ int db_create_path_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
             Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
             sql_free_result(mdb);
             ar->PathId = 0;
-            ASSERT(ar->PathId);
+            ASSERT2(ar->PathId,
+                    "Your Path table is broken. "
+                    "Please, use dbcheck to correct it.");
             return 0;
          }
          ar->PathId = str_to_int64(row[0]);
@@ -770,19 +760,27 @@ bool db_create_fileset_record(JCR *jcr, B_DB *mdb, FILESET_DBR *fsr)
  *  };
  */
 
+/* For maintenance, we can put batch mode in hold */
+static bool batch_mode_enabled = true;
+
+void db_disable_batch_insert(bool enabled)
+{
+   batch_mode_enabled = enabled;
+}
+
 /**
  * All sql_batch_* functions are used to do bulk batch insert in File/Filename/Path
  *  tables.
- *  
+ *
  *  To sum up :
  *   - bulk load a temp table
- *   - insert missing filenames into filename with a single query (lock filenames 
+ *   - insert missing filenames into filename with a single query (lock filenames
  *   - table before that to avoid possible duplicate inserts with concurrent update)
  *   - insert missing paths into path with another single query
  *   - then insert the join between the temp, filename and path tables into file.
  */
 
-/* 
+/*
  * Returns true if OK
  *         false if failed
  */
@@ -795,13 +793,25 @@ bool db_write_batch_file_records(JCR *jcr)
       Dmsg0(50,"db_create_file_record : no files\n");
       return true;
    }
+
    if (job_canceled(jcr)) {
       goto bail_out;
    }
 
+   jcr->JobStatus = JS_AttrInserting;
+
+   /* Check if batch mode is on hold */
+   while (!batch_mode_enabled) {
+      Dmsg0(50, "batch mode is on hold\n");
+      bmicrosleep(10, 0);
+
+      if (job_canceled(jcr)) {
+         goto bail_out;
+      }
+   }
+
    Dmsg1(50,"db_create_file_record changes=%u\n",jcr->db_batch->changes);
 
-   jcr->JobStatus = JS_AttrInserting;
    if (!sql_batch_end(jcr, jcr->db_batch, NULL)) {
       Jmsg1(jcr, M_FATAL, 0, "Batch end %s\n", jcr->db_batch->errmsg);
       goto bail_out;
@@ -823,7 +833,7 @@ bool db_write_batch_file_records(JCR *jcr)
       db_sql_query(jcr->db_batch, batch_unlock_tables_query[db_get_type_index(jcr->db_batch)], NULL, NULL);
       goto bail_out;
    }
-   
+
    if (!db_sql_query(jcr->db_batch, batch_unlock_tables_query[db_get_type_index(jcr->db_batch)], NULL, NULL)) {
       Jmsg1(jcr, M_FATAL, 0, "Unlock Path table %s\n", jcr->db_batch->errmsg);
       goto bail_out;
@@ -836,7 +846,7 @@ bool db_write_batch_file_records(JCR *jcr)
       Jmsg1(jcr, M_FATAL, 0, "Lock Filename table %s\n", jcr->db_batch->errmsg);
       goto bail_out;
    }
-   
+
    if (!db_sql_query(jcr->db_batch, batch_fill_filename_query[db_get_type_index(jcr->db_batch)], NULL, NULL)) {
       Jmsg1(jcr,M_FATAL,0,"Fill Filename table %s\n",jcr->db_batch->errmsg);
       db_sql_query(jcr->db_batch, batch_unlock_tables_query[db_get_type_index(jcr->db_batch)], NULL, NULL);
@@ -847,8 +857,8 @@ bool db_write_batch_file_records(JCR *jcr)
       Jmsg1(jcr, M_FATAL, 0, "Unlock Filename table %s\n", jcr->db_batch->errmsg);
       goto bail_out;
    }
-   
-   if (!db_sql_query(jcr->db_batch, 
+
+   if (!db_sql_query(jcr->db_batch,
 "INSERT INTO File (FileIndex, JobId, PathId, FilenameId, LStat, MD5, DeltaSeq) "
     "SELECT batch.FileIndex, batch.JobId, Path.PathId, "
            "Filename.FilenameId,batch.LStat, batch.MD5, batch.DeltaSeq "
@@ -891,7 +901,7 @@ 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) {
+   if (jcr->batch_started && jcr->db_batch->changes > 500000) {
       db_write_batch_file_records(jcr);
       jcr->db_batch->changes = 0;
    }
@@ -902,7 +912,7 @@ bool db_create_batch_file_attributes_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
          return false;     /* error already printed */
       }
       if (!sql_batch_start(jcr, jcr->db_batch)) {
-         Mmsg1(&mdb->errmsg, 
+         Mmsg1(&mdb->errmsg,
               "Can't start batch mode: ERR=%s", db_strerror(jcr->db_batch));
          Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg);
          return false;
@@ -1005,7 +1015,7 @@ static int db_create_filename_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
    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);
-   
+
    Mmsg(mdb->cmd, "SELECT FilenameId FROM Filename WHERE Name='%s'", mdb->esc_name);
 
    if (QUERY_DB(jcr, mdb, mdb->cmd)) {
@@ -1042,7 +1052,7 @@ static int db_create_filename_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
    return ar->FilenameId > 0;
 }
 
-/** 
+/**
  * Create file attributes record, or base file attributes record
  */
 bool db_create_attributes_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
@@ -1057,7 +1067,7 @@ bool db_create_attributes_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
          ar->Stream == STREAM_UNIX_ATTRIBUTES_EX)) {
       Mmsg1(&mdb->errmsg, _("Attempt to put non-attributes into catalog. Stream=%d\n"),
          ar->Stream);
-      Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg); 
+      Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg);
       return false;
    }
 
@@ -1089,15 +1099,15 @@ bool db_create_base_file_attributes_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
    Dmsg1(dbglevel, "create_base_file Fname=%s\n", ar->fname);
    Dmsg0(dbglevel, "put_base_file_into_catalog\n");
 
-   db_lock(mdb); 
+   db_lock(mdb);
    split_path_and_file(jcr, mdb, ar->fname);
-   
+
    mdb->esc_name = check_pool_memory_size(mdb->esc_name, mdb->fnl*2+1);
    db_escape_string(jcr, mdb, mdb->esc_name, mdb->fname, mdb->fnl);
-   
+
    mdb->esc_path = check_pool_memory_size(mdb->esc_path, mdb->pnl*2+1);
    db_escape_string(jcr, mdb, mdb->esc_path, mdb->path, mdb->pnl);
-   
+
    Mmsg(mdb->cmd, "INSERT INTO basefile%lld (Path, Name) VALUES ('%s','%s')",
         (uint64_t)jcr->JobId, mdb->esc_path, mdb->esc_name);
 
@@ -1107,7 +1117,7 @@ bool db_create_base_file_attributes_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
    return ret;
 }
 
-/** 
+/**
  * Cleanup the base file temporary tables
  */
 static void db_cleanup_base_file(JCR *jcr, B_DB *mdb)
@@ -1131,16 +1141,23 @@ bool db_commit_base_file_attributes_record(JCR *jcr, B_DB *mdb)
 
    db_lock(mdb);
 
-   Mmsg(mdb->cmd, 
+   Mmsg(mdb->cmd,
   "INSERT INTO BaseFiles (BaseJobId, JobId, FileId, FileIndex) "
    "SELECT B.JobId AS BaseJobId, %s AS JobId, "
           "B.FileId, B.FileIndex "
      "FROM basefile%s AS A, new_basefile%s AS B "
     "WHERE A.Path = B.Path "
       "AND A.Name = B.Name "
-    "ORDER BY B.FileId", 
+    "ORDER BY B.FileId",
         edit_uint64(jcr->JobId, ed1), ed1, ed1);
    ret = db_sql_query(mdb, mdb->cmd, NULL, NULL);
+   /*
+    * Display error now, because the subsequent cleanup destroys the
+    *  error message from the above query.
+    */
+   if (!ret) {
+      Jmsg1(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+   }
    jcr->nb_base_files_used = sql_affected_rows(mdb);
    db_cleanup_base_file(jcr, mdb);
 
@@ -1150,7 +1167,7 @@ bool db_commit_base_file_attributes_record(JCR *jcr, B_DB *mdb)
 
 /**
  * Find the last "accurate" backup state with Base jobs
- * 1) Get all files with jobid in list (F subquery) 
+ * 1) Get all files with jobid in list (F subquery)
  * 2) Take only the last version of each file (Temp subquery) => accurate list is ok
  * 3) Put the result in a temporary table for the end of job
  *
@@ -1160,7 +1177,7 @@ bool db_create_base_file_list(JCR *jcr, B_DB *mdb, char *jobids)
    POOL_MEM buf;
    bool ret=false;
 
-   db_lock(mdb);   
+   db_lock(mdb);
 
    if (!*jobids) {
       Mmsg(mdb->errmsg, _("ERR=JobIds are empty\n"));
@@ -1198,7 +1215,7 @@ bool db_create_restore_object_record(JCR *jcr, B_DB *mdb, ROBJECT_DBR *ro)
    mdb->fnl = strlen(ro->object_name);
    mdb->esc_name = check_pool_memory_size(mdb->esc_name, mdb->fnl*2+1);
    db_escape_string(jcr, mdb, mdb->esc_name, ro->object_name, mdb->fnl);
-   
+
    db_escape_object(jcr, mdb, ro->object, ro->object_len);
 
    plug_name_len = strlen(ro->plugin_name);
@@ -1211,7 +1228,7 @@ bool db_create_restore_object_record(JCR *jcr, B_DB *mdb, ROBJECT_DBR *ro)
         "ObjectCompression,FileIndex,JobId) "
         "VALUES ('%s','%s','%s',%d,%d,%d,%d,%d,%d,%u)",
         mdb->esc_name, esc_plug_name, mdb->esc_obj,
-        ro->object_len, ro->object_full_len, ro->object_index, 
+        ro->object_len, ro->object_full_len, ro->object_index,
         ro->FileType, ro->object_compression, ro->FileIndex, ro->JobId);
 
    ro->RestoreObjectId = sql_insert_autokey_record(mdb, mdb->cmd, NT_("RestoreObject"));
@@ -1228,4 +1245,4 @@ bool db_create_restore_object_record(JCR *jcr, B_DB *mdb, ROBJECT_DBR *ro)
    return stat;
 }
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/sql_delete.c b/src/cats/sql_delete.c
index 6815bf7..33bd3ed 100644
--- a/src/cats/sql_delete.c
+++ b/src/cats/sql_delete.c
@@ -1,43 +1,28 @@
 /*
- * Bacula Catalog Database Delete record interface routines
- *
- *    Kern Sibbald, December 2000
- *
- *    Version $Id: sql_delete.c 7380 2008-07-14 10:42:59Z kerns $
- */
-/*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2006 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.
+   Copyright (C) 2000-2014 Free Software Foundation Europe e.V.
 
-   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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
-   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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
-
-/* *****FIXME**** fix fixed length of select_cmd[] and insert_cmd[] */
+/*
+ * Bacula Catalog Database Delete record interface routines
+ *
+ *    Written by Kern Sibbald, December 2000
+ *
+ */
 
 #include "bacula.h"
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -241,4 +226,4 @@ int db_purge_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
 }
 
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/sql_find.c b/src/cats/sql_find.c
index a9b8020..ba9c75d 100644
--- a/src/cats/sql_find.c
+++ b/src/cats/sql_find.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Catalog Database Find record interface routines
@@ -32,13 +20,13 @@
  *        that a simple search by name or id. Such simple
  *        request are in get.c
  *
- *    Kern Sibbald, December 2000
+ *    Written by Kern Sibbald, December 2000
  *
  */
 
 #include "bacula.h"
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -80,7 +68,7 @@ db_find_job_start_time(JCR *jcr, B_DB *mdb, JOB_DBR *jr, POOLMEM **stime, char *
 "SELECT StartTime, Job FROM Job WHERE JobStatus IN ('T','W') AND Type='%c' AND "
 "Level='%c' AND Name='%s' AND ClientId=%s AND FileSetId=%s "
 "ORDER BY StartTime DESC LIMIT 1",
-           jr->JobType, L_FULL, esc_name, 
+           jr->JobType, L_FULL, esc_name,
            edit_int64(jr->ClientId, ed1), edit_int64(jr->FileSetId, ed2));
 
       if (jr->JobLevel == L_DIFFERENTIAL) {
@@ -118,7 +106,7 @@ db_find_job_start_time(JCR *jcr, B_DB *mdb, JOB_DBR *jr, POOLMEM **stime, char *
       }
    } else {
       Dmsg1(100, "Submitting: %s\n", mdb->cmd);
-      Mmsg(mdb->cmd, "SELECT StartTime, Job FROM Job WHERE Job.JobId=%s", 
+      Mmsg(mdb->cmd, "SELECT StartTime, Job FROM Job WHERE Job.JobId=%s",
            edit_int64(jr->JobId, ed1));
    }
 
@@ -160,7 +148,7 @@ bail_out:
  *          true  on success, jr is unchanged, but stime and job are set
  */
 bool
-db_find_last_job_start_time(JCR *jcr, B_DB *mdb, JOB_DBR *jr, 
+db_find_last_job_start_time(JCR *jcr, B_DB *mdb, JOB_DBR *jr,
                             POOLMEM **stime, char *job, int JobLevel)
 {
    SQL_ROW row;
@@ -176,7 +164,7 @@ db_find_last_job_start_time(JCR *jcr, B_DB *mdb, JOB_DBR *jr,
 "SELECT StartTime, Job FROM Job WHERE JobStatus IN ('T','W') AND Type='%c' AND "
 "Level='%c' AND Name='%s' AND ClientId=%s AND FileSetId=%s "
 "ORDER BY StartTime DESC LIMIT 1",
-      jr->JobType, JobLevel, esc_name, 
+      jr->JobType, JobLevel, esc_name,
       edit_int64(jr->ClientId, ed1), edit_int64(jr->FileSetId, ed2));
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Query error for start time request: ERR=%s\nCMD=%s\n"),
@@ -270,13 +258,13 @@ db_find_last_jobid(JCR *jcr, B_DB *mdb, const char *Name, JOB_DBR *jr)
 "SELECT JobId FROM Job WHERE Type='V' AND Level='%c' AND "
 " JobStatus IN ('T','W') AND Name='%s' AND "
 "ClientId=%s ORDER BY StartTime DESC LIMIT 1",
-           L_VERIFY_INIT, esc_name, 
+           L_VERIFY_INIT, esc_name,
            edit_int64(jr->ClientId, ed1));
    } else if (jr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ||
               jr->JobLevel == L_VERIFY_DISK_TO_CATALOG ||
               jr->JobType == JT_BACKUP) {
       if (Name) {
-         mdb->db_escape_string(jcr, esc_name, (char*)Name, 
+         mdb->db_escape_string(jcr, esc_name, (char*)Name,
                                MIN(strlen(Name), sizeof(esc_name)));
          Mmsg(mdb->cmd,
 "SELECT JobId FROM Job WHERE Type='B' AND JobStatus IN ('T','W') AND "
@@ -284,7 +272,7 @@ db_find_last_jobid(JCR *jcr, B_DB *mdb, const char *Name, JOB_DBR *jr)
       } else {
          Mmsg(mdb->cmd,
 "SELECT JobId FROM Job WHERE Type='B' AND JobStatus IN ('T','W') AND "
-"ClientId=%s ORDER BY StartTime DESC LIMIT 1", 
+"ClientId=%s ORDER BY StartTime DESC LIMIT 1",
            edit_int64(jr->ClientId, ed1));
       }
    } else {
@@ -351,14 +339,19 @@ db_find_next_volume(JCR *jcr, B_DB *mdb, int item, bool InChanger, MEDIA_DBR *mr
          "ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge "
          "FROM Media WHERE PoolId=%s AND MediaType='%s' AND VolStatus IN ('Full',"
          "'Recycle','Purged','Used','Append') AND Enabled=1 "
-         "ORDER BY LastWritten LIMIT 1", 
+         "ORDER BY LastWritten LIMIT 1",
          edit_int64(mr->PoolId, ed1), esc_type);
      item = 1;
    } else {
       POOL_MEM changer(PM_FNAME);
       /* Find next available volume */
+      /* ***FIXME***
+       * replace switch with
+       *  if (StorageId == 0)
+       *    break;
+       */
       if (InChanger) {
-         Mmsg(changer, "AND InChanger=1 AND StorageId=%s",
+         Mmsg(changer, " AND InChanger=1 AND StorageId=%s ",
               edit_int64(mr->StorageId, ed1));
       }
       if (strcmp(mr->VolStatus, "Recycle") == 0 ||
@@ -463,4 +456,4 @@ db_find_next_volume(JCR *jcr, B_DB *mdb, int item, bool InChanger, MEDIA_DBR *mr
    return numrows;
 }
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/sql_get.c b/src/cats/sql_get.c
index 69f3195..c1f9016 100644
--- a/src/cats/sql_get.c
+++ b/src/cats/sql_get.c
@@ -1,43 +1,31 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
-/** 
+/**
  * Bacula Catalog Database Get record interface routines
  *  Note, these routines generally get a record by id or
  *        by name.  If more logic is involved, the routine
  *        should be in find.c
  *
- *    Kern Sibbald, March 2000
+ *    Written by Kern Sibbald, March 2000
  *
  */
 
 #include "bacula.h"
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -93,14 +81,14 @@ int db_get_file_attributes_record(JCR *jcr, B_DB *mdb, char *fname, JOB_DBR *jr,
  *    called to get attributes of a non-existent file, which is
  *    "normal" if a new file is found during Verify.
  *
- *  The following is a bit of a kludge: because we always backup a 
- *    directory entry, we can end up with two copies of the directory 
- *    in the backup. One is when we encounter the directory and find 
- *    we cannot recurse into it, and the other is when we find an 
- *    explicit mention of the directory. This can also happen if the 
- *    use includes the directory twice.  In this case, Verify 
- *    VolumeToCatalog fails because we have two copies in the catalog, 
- *    and only the first one is marked (twice).  So, when calling from Verify, 
+ *  The following is a bit of a kludge: because we always backup a
+ *    directory entry, we can end up with two copies of the directory
+ *    in the backup. One is when we encounter the directory and find
+ *    we cannot recurse into it, and the other is when we find an
+ *    explicit mention of the directory. This can also happen if the
+ *    use includes the directory twice.  In this case, Verify
+ *    VolumeToCatalog fails because we have two copies in the catalog,
+ *    and only the first one is marked (twice).  So, when calling from Verify,
  *    VolumeToCatalog jr is not NULL and we know jr->FileIndex is the fileindex
  *    of the version of the directory/file we actually want and do
  *    a more explicit SQL search.
@@ -119,23 +107,23 @@ int db_get_file_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr, FILE_DBR *fdbr)
 "File.JobId=Job.JobId AND File.PathId=%s AND "
 "File.FilenameId=%s AND Job.Type='B' AND Job.JobStatus IN ('T','W') AND "
 "ClientId=%s ORDER BY StartTime DESC LIMIT 1",
-      edit_int64(fdbr->PathId, ed1), 
-      edit_int64(fdbr->FilenameId, ed2), 
+      edit_int64(fdbr->PathId, ed1),
+      edit_int64(fdbr->FilenameId, ed2),
       edit_int64(jr->ClientId,ed3));
    } else if (jcr->getJobLevel() == L_VERIFY_VOLUME_TO_CATALOG) {
       Mmsg(mdb->cmd,
            "SELECT FileId, LStat, MD5 FROM File WHERE File.JobId=%s AND File.PathId=%s AND "
-           "File.FilenameId=%s AND File.FileIndex=%u", 
-           edit_int64(fdbr->JobId, ed1), 
-           edit_int64(fdbr->PathId, ed2), 
+           "File.FilenameId=%s AND File.FileIndex=%u",
+           edit_int64(fdbr->JobId, ed1),
+           edit_int64(fdbr->PathId, ed2),
            edit_int64(fdbr->FilenameId,ed3),
            jr->FileIndex);
    } else {
       Mmsg(mdb->cmd,
 "SELECT FileId, LStat, MD5 FROM File WHERE File.JobId=%s AND File.PathId=%s AND "
-"File.FilenameId=%s", 
-      edit_int64(fdbr->JobId, ed1), 
-      edit_int64(fdbr->PathId, ed2), 
+"File.FilenameId=%s",
+      edit_int64(fdbr->JobId, ed1),
+      edit_int64(fdbr->PathId, ed2),
       edit_int64(fdbr->FilenameId,ed3));
    }
    Dmsg3(450, "Get_file_record JobId=%u FilenameId=%u PathId=%u\n",
@@ -156,15 +144,15 @@ int db_get_file_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr, FILE_DBR *fdbr)
             stat = 1;
             if (num_rows > 1) {
                Mmsg3(mdb->errmsg, _("get_file_record want 1 got rows=%d PathId=%s FilenameId=%s\n"),
-                  num_rows, 
-                  edit_int64(fdbr->PathId, ed1), 
+                  num_rows,
+                  edit_int64(fdbr->PathId, ed1),
                   edit_int64(fdbr->FilenameId, ed2));
                Dmsg1(000, "=== Problem!  %s", mdb->errmsg);
             }
          }
       } else {
          Mmsg2(mdb->errmsg, _("File record for PathId=%s FilenameId=%s not found.\n"),
-            edit_int64(fdbr->PathId, ed1), 
+            edit_int64(fdbr->PathId, ed1),
             edit_int64(fdbr->FilenameId, ed2));
       }
       sql_free_result(mdb);
@@ -306,7 +294,7 @@ bool db_get_job_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
 "PoolId,StartTime,EndTime,JobFiles,JobBytes,JobTDate,Job,JobStatus,"
 "Type,Level,ClientId,Name,PriorJobId,RealEndTime,JobId,FileSetId,"
 "SchedTime,RealEndTime,ReadBytes,HasBase,PurgedFiles "
-"FROM Job WHERE JobId=%s", 
+"FROM Job WHERE JobId=%s",
           edit_int64(jr->JobId, ed1));
     }
 
@@ -594,13 +582,8 @@ int db_get_client_ids(JCR *jcr, B_DB *mdb, int *num_ids, uint32_t *ids[])
    return stat;
 }
 
-
-
 /**
- * Get Pool Record
- * If the PoolId is non-zero, we get its record,
- *  otherwise, we search on the PoolName
- *
+ * Get Pool Id, Scratch Pool Id, Recycle Pool Id
  * Returns: false on failure
  *          true on success
  */
@@ -618,7 +601,7 @@ bool db_get_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pdbr)
 "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,"
 "AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,"
 "MaxVolBytes,PoolType,LabelType,LabelFormat,RecyclePoolId,ScratchPoolId,"
-"ActionOnPurge FROM Pool WHERE Pool.PoolId=%s", 
+"ActionOnPurge FROM Pool WHERE Pool.PoolId=%s",
          edit_int64(pdbr->PoolId, ed1));
    } else {                           /* find by name */
       mdb->db_escape_string(jcr, esc, pdbr->Name, strlen(pdbr->Name));
@@ -665,6 +648,25 @@ bool db_get_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pdbr)
       }
       sql_free_result(mdb);
    }
+   db_unlock(mdb);
+   return ok;
+}
+/**
+ * Get Pool numvols
+ * If the PoolId is non-zero, we get its record,
+ *  otherwise, we search on the PoolName and we compute the number of volumes
+ *
+ * Returns: false on failure
+ *          true on success
+ */
+bool db_get_pool_numvols(JCR *jcr, B_DB *mdb, POOL_DBR *pdbr)
+{
+   bool ok;
+   char ed1[50];
+
+   ok = db_get_pool_record(jcr, mdb, pdbr);
+
+   db_lock(mdb);
    if (ok) {
       uint32_t NumVols;
       Mmsg(mdb->cmd, "SELECT count(*) from Media WHERE PoolId=%s",
@@ -702,7 +704,7 @@ int db_get_client_record(JCR *jcr, B_DB *mdb, CLIENT_DBR *cdbr)
    if (cdbr->ClientId != 0) {               /* find by id */
       Mmsg(mdb->cmd,
 "SELECT ClientId,Name,Uname,AutoPrune,FileRetention,JobRetention "
-"FROM Client WHERE Client.ClientId=%s", 
+"FROM Client WHERE Client.ClientId=%s",
         edit_int64(cdbr->ClientId, ed1));
    } else {                           /* find by name */
       mdb->db_escape_string(jcr, esc, cdbr->Name, strlen(cdbr->Name));
@@ -814,7 +816,7 @@ int db_get_fileset_record(JCR *jcr, B_DB *mdb, FILESET_DBR *fsr)
    if (fsr->FileSetId != 0) {               /* find by id */
       Mmsg(mdb->cmd,
            "SELECT FileSetId,FileSet,MD5,CreateTime FROM FileSet "
-           "WHERE FileSetId=%s", 
+           "WHERE FileSetId=%s",
            edit_int64(fsr->FileSetId, ed1));
    } else {                           /* find by name */
       mdb->db_escape_string(jcr, esc, fsr->FileSet, strlen(fsr->FileSet));
@@ -1006,19 +1008,21 @@ bool db_get_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
       return true;
    }
    if (mr->MediaId != 0) {               /* find by id */
-      Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,"
-         "VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
+      Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,"
+         "VolBlocks,VolBytes,VolMounts,"
+         "VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
          "MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,"
          "MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,"
          "EndFile,EndBlock,VolParts,LabelType,LabelDate,StorageId,"
          "Enabled,LocationId,RecycleCount,InitialWrite,"
          "ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge "
-         "FROM Media WHERE MediaId=%s", 
+         "FROM Media WHERE MediaId=%s",
          edit_int64(mr->MediaId, ed1));
    } else {                           /* find by name */
       mdb->db_escape_string(jcr, esc, mr->VolumeName, strlen(mr->VolumeName));
-      Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,"
-         "VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
+      Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,"
+         "VolBlocks,VolBytes,VolMounts,"
+         "VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
          "MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,"
          "MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,"
          "EndFile,EndBlock,VolParts,LabelType,LabelDate,StorageId,"
@@ -1082,12 +1086,12 @@ bool db_get_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
             mr->VolReadTime = str_to_int64(row[35]);
             mr->VolWriteTime = str_to_int64(row[36]);
             mr->ActionOnPurge = str_to_int32(row[37]);
-            
+
             ok = true;
          }
       } else {
          if (mr->MediaId != 0) {
-            Mmsg1(mdb->errmsg, _("Media record MediaId=%s not found.\n"), 
+            Mmsg1(mdb->errmsg, _("Media record MediaId=%s not found.\n"),
                edit_int64(mr->MediaId, ed1));
          } else {
             Mmsg1(mdb->errmsg, _("Media record for Volume \"%s\" not found.\n"),
@@ -1140,11 +1144,11 @@ bool db_get_file_list(JCR *jcr, B_DB *mdb, char *jobids,
    POOL_MEM buf(PM_MESSAGE);
    POOL_MEM buf2(PM_MESSAGE);
    if (use_delta) {
-      Mmsg(buf2, select_recent_version_with_basejob_and_delta[db_get_type_index(mdb)], 
+      Mmsg(buf2, select_recent_version_with_basejob_and_delta[db_get_type_index(mdb)],
            jobids, jobids, jobids, jobids);
 
    } else {
-      Mmsg(buf2, select_recent_version_with_basejob[db_get_type_index(mdb)], 
+      Mmsg(buf2, select_recent_version_with_basejob[db_get_type_index(mdb)],
            jobids, jobids, jobids, jobids);
    }
 
@@ -1159,7 +1163,7 @@ bool db_get_file_list(JCR *jcr, B_DB *mdb, char *jobids,
  "JOIN Path ON (Path.PathId = T1.PathId) "
 "WHERE FileIndex > 0 "
 "ORDER BY T1.JobTDate, FileIndex ASC",/* Return sorted by JobTDate */
-                                      /* FileIndex for restore code */ 
+                                      /* FileIndex for restore code */
         buf2.c_str());
 
    if (!use_md5) {
@@ -1174,7 +1178,7 @@ bool db_get_file_list(JCR *jcr, B_DB *mdb, char *jobids,
 /**
  * This procedure gets the base jobid list used by jobids,
  */
-bool db_get_used_base_jobids(JCR *jcr, B_DB *mdb, 
+bool db_get_used_base_jobids(JCR *jcr, B_DB *mdb,
                              POOLMEM *jobids, db_list_ctx *result)
 {
    POOL_MEM buf;
@@ -1193,18 +1197,18 @@ bool db_get_used_base_jobids(JCR *jcr, B_DB *mdb,
  * Incremental : get the last full + last diff + last incr(s) ids
  *
  * If you specify jr->StartTime, it will be used to limit the search
- * in the time. (usually now) 
+ * in the time. (usually now)
  *
  * TODO: look and merge from ua_restore.c
  */
-bool db_accurate_get_jobids(JCR *jcr, B_DB *mdb, 
+bool db_accurate_get_jobids(JCR *jcr, B_DB *mdb,
                             JOB_DBR *jr, db_list_ctx *jobids)
 {
    bool ret=false;
    char clientid[50], jobid[50], filesetid[50];
    char date[MAX_TIME_LENGTH];
    POOL_MEM query(PM_FNAME);
-   
+
    /* Take the current time as upper limit if nothing else specified */
    utime_t StartTime = (jr->StartTime)?jr->StartTime:time(NULL);
 
@@ -1212,7 +1216,7 @@ bool db_accurate_get_jobids(JCR *jcr, B_DB *mdb,
    jobids->reset();
 
    /* First, find the last good Full backup for this job/client/fileset */
-   Mmsg(query, create_temp_accurate_jobids[db_get_type_index(mdb)], 
+   Mmsg(query, create_temp_accurate_jobids[db_get_type_index(mdb)],
         edit_uint64(jcr->JobId, jobid),
         edit_uint64(jr->ClientId, clientid),
         date,
@@ -1224,7 +1228,7 @@ bool db_accurate_get_jobids(JCR *jcr, B_DB *mdb,
 
    if (jr->JobLevel == L_INCREMENTAL || jr->JobLevel == L_VIRTUAL_FULL) {
       /* Now, find the last differential backup after the last full */
-      Mmsg(query, 
+      Mmsg(query,
 "INSERT INTO btemp3%s (JobId, StartTime, EndTime, JobTDate, PurgedFiles) "
  "SELECT JobId, StartTime, EndTime, JobTDate, PurgedFiles "
    "FROM Job JOIN FileSet USING (FileSetId) "
@@ -1245,7 +1249,7 @@ bool db_accurate_get_jobids(JCR *jcr, B_DB *mdb,
       }
 
       /* We just have to take all incremental after the last Full/Diff */
-      Mmsg(query, 
+      Mmsg(query,
 "INSERT INTO btemp3%s (JobId, StartTime, EndTime, JobTDate, PurgedFiles) "
  "SELECT JobId, StartTime, EndTime, JobTDate, PurgedFiles "
    "FROM Job JOIN FileSet USING (FileSetId) "
@@ -1282,12 +1286,12 @@ bool db_get_base_file_list(JCR *jcr, B_DB *mdb, bool use_md5,
                            DB_RESULT_HANDLER *result_handler, void *ctx)
 {
    POOL_MEM buf(PM_MESSAGE);
-         
+
    Mmsg(buf,
  "SELECT Path, Name, FileIndex, JobId, LStat, 0 As DeltaSeq, MD5 "
    "FROM new_basefile%lld ORDER BY JobId, FileIndex ASC",
         (uint64_t) jcr->JobId);
-   
+
    if (!use_md5) {
       strip_md5(buf.c_str());
    }
@@ -1310,7 +1314,7 @@ bool db_get_base_jobid(JCR *jcr, B_DB *mdb, JOB_DBR *jr, JobId_t *jobid)
    StartTime = (jr->StartTime)?jr->StartTime:time(NULL);
    bstrutime(date, sizeof(date),  StartTime + 1);
    mdb->db_escape_string(jcr, esc, jr->Name, strlen(jr->Name));
-   
+
    /* we can take also client name, fileset, etc... */
 
    Mmsg(query,
@@ -1342,18 +1346,18 @@ bail_out:
 }
 
 /* Get JobIds associated with a volume */
-bool db_get_volume_jobids(JCR *jcr, B_DB *mdb, 
+bool db_get_volume_jobids(JCR *jcr, B_DB *mdb,
                          MEDIA_DBR *mr, db_list_ctx *lst)
 {
    char ed1[50];
    bool ret=false;
 
    db_lock(mdb);
-   Mmsg(mdb->cmd, "SELECT DISTINCT JobId FROM JobMedia WHERE MediaId=%s", 
+   Mmsg(mdb->cmd, "SELECT DISTINCT JobId FROM JobMedia WHERE MediaId=%s",
         edit_int64(mr->MediaId, ed1));
    ret = db_sql_query(mdb, mdb->cmd, db_list_handler, lst);
    db_unlock(mdb);
    return ret;
 }
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/sql_glue.c b/src/cats/sql_glue.c
index 8042ec3..3607eb0 100644
--- a/src/cats/sql_glue.c
+++ b/src/cats/sql_glue.c
@@ -1,30 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Glue code for the catalog refactoring.
@@ -34,7 +21,7 @@
 
 #include "bacula.h"
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -94,8 +81,8 @@ char *db_escape_object(JCR *jcr, B_DB *mdb, char *old, int len)
    return mdb->db_escape_object(jcr, old, len);
 }
 
-void db_unescape_object(JCR *jcr, B_DB *mdb, 
-                        char *from, int32_t expected_len, 
+void db_unescape_object(JCR *jcr, B_DB *mdb,
+                        char *from, int32_t expected_len,
                         POOLMEM **dest, int32_t *len)
 {
    mdb->db_unescape_object(jcr, from, expected_len, dest, len);
@@ -210,4 +197,4 @@ bool sql_batch_insert(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
    return ((B_DB_PRIV *)mdb)->sql_batch_insert(jcr, ar);
 }
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/sql_glue.h b/src/cats/sql_glue.h
index ecfad4f..3ae685a 100644
--- a/src/cats/sql_glue.h
+++ b/src/cats/sql_glue.h
@@ -1,30 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 #ifndef __SQL_GLUE_H_
 #define __SQL_GLUE_H_ 1
@@ -46,8 +33,8 @@ void db_close_database(JCR *jcr, B_DB *mdb);
 void db_thread_cleanup(B_DB *mdb);
 void db_escape_string(JCR *jcr, B_DB *mdb, char *snew, char *old, int len);
 char *db_escape_object(JCR *jcr, B_DB *mdb, char *old, int len);
-void db_unescape_object(JCR *jcr, B_DB *mdb, 
-                        char *from, int32_t expected_len, 
+void db_unescape_object(JCR *jcr, B_DB *mdb,
+                        char *from, int32_t expected_len,
                         POOLMEM **dest, int32_t *len);
 void db_start_transaction(JCR *jcr, B_DB *mdb);
 void db_end_transaction(JCR *jcr, B_DB *mdb);
diff --git a/src/cats/sql_list.c b/src/cats/sql_list.c
index a78e615..9cd86bb 100644
--- a/src/cats/sql_list.c
+++ b/src/cats/sql_list.c
@@ -1,41 +1,28 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Catalog Database List records interface routines
  *
- *    Kern Sibbald, March 2000
+ *    Written by Kern Sibbald, March 2000
  *
- *    Version $Id: sql_list.c 8508 2009-03-07 20:59:46Z kerns $
  */
 
 #include "bacula.h"
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -162,7 +149,7 @@ db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
             "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger,"
             "EndFile,EndBlock,VolParts,LabelType,StorageId,DeviceId,"
             "LocationId,RecycleCount,InitialWrite,ScratchPoolId,RecyclePoolId, "
-            "Comment"
+            "ActionOnPurge,Comment"
             " FROM Media WHERE Media.VolumeName='%s'", esc);
       } else {
          Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
@@ -172,7 +159,7 @@ db_list_media_records(JCR *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
             "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger,"
             "EndFile,EndBlock,VolParts,LabelType,StorageId,DeviceId,"
             "LocationId,RecycleCount,InitialWrite,ScratchPoolId,RecyclePoolId, "
-            "Comment"
+            "ActionOnPurge,Comment"
             " FROM Media WHERE Media.PoolId=%s ORDER BY MediaId",
             edit_int64(mdbr->PoolId, ed1));
       }
@@ -252,15 +239,15 @@ void db_list_copies_records(JCR *jcr, B_DB *mdb, uint32_t limit, char *JobIds,
    }
 
    if (JobIds && JobIds[0]) {
-      Mmsg(str_jobids, " AND (Job.PriorJobId IN (%s) OR Job.JobId IN (%s)) ", 
-           JobIds, JobIds);      
+      Mmsg(str_jobids, " AND (Job.PriorJobId IN (%s) OR Job.JobId IN (%s)) ",
+           JobIds, JobIds);
    }
 
    db_lock(mdb);
-   Mmsg(mdb->cmd, 
+   Mmsg(mdb->cmd,
    "SELECT DISTINCT Job.PriorJobId AS JobId, Job.Job, "
                    "Job.JobId AS CopyJobId, Media.MediaType "
-     "FROM Job " 
+     "FROM Job "
      "JOIN JobMedia USING (JobId) "
      "JOIN Media    USING (MediaId) "
     "WHERE Job.Type = '%c' %s ORDER BY Job.PriorJobId DESC %s",
@@ -297,10 +284,10 @@ void db_list_joblog_records(JCR *jcr, B_DB *mdb, uint32_t JobId,
    db_lock(mdb);
    if (type == VERT_LIST) {
       Mmsg(mdb->cmd, "SELECT Time,LogText FROM Log "
-           "WHERE Log.JobId=%s", edit_int64(JobId, ed1));
+           "WHERE Log.JobId=%s ORDER BY LogId ASC", edit_int64(JobId, ed1));
    } else {
       Mmsg(mdb->cmd, "SELECT LogText FROM Log "
-           "WHERE Log.JobId=%s", edit_int64(JobId, ed1));
+           "WHERE Log.JobId=%s ORDER BY LogId ASC", edit_int64(JobId, ed1));
    }
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       goto bail_out;
@@ -321,13 +308,15 @@ bail_out:
  *  Currently, we return all jobs or if jr->JobId is set,
  *  only the job with the specified id.
  */
-void
+alist *
 db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
                     void *ctx, e_list_type type)
 {
    char ed1[50];
    char limit[100];
+   char status[100];
    char esc[MAX_ESCAPE_NAME_LENGTH];
+   alist *list = NULL;
 
    db_lock(mdb);
    if (jr->limit > 0) {
@@ -335,7 +324,8 @@ db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
    } else {
       limit[0] = 0;
    }
-   if (type == VERT_LIST) {
+   switch (type) {
+   case VERT_LIST:
       if (jr->JobId == 0 && jr->Job[0] == 0) {
          Mmsg(mdb->cmd,
             "SELECT JobId,Job,Job.Name,PurgedFiles,Type,Level,"
@@ -343,7 +333,7 @@ db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
             "StartTime,EndTime,RealEndTime,JobTDate,"
             "VolSessionId,VolSessionTime,JobFiles,JobErrors,"
             "JobMissingFiles,Job.PoolId,Pool.Name as PooLname,PriorJobId,"
-            "Job.FileSetId,FileSet.FileSet "
+            "Job.FileSetId,FileSet.FileSet,Job.HasCache "
             "FROM Job,Client,Pool,FileSet WHERE "
             "Client.ClientId=Job.ClientId AND Pool.PoolId=Job.PoolId "
             "AND FileSet.FileSetId=Job.FileSetId  ORDER BY StartTime%s", limit);
@@ -354,13 +344,14 @@ db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
             "StartTime,EndTime,RealEndTime,JobTDate,"
             "VolSessionId,VolSessionTime,JobFiles,JobErrors,"
             "JobMissingFiles,Job.PoolId,Pool.Name as PooLname,PriorJobId,"
-            "Job.FileSetId,FileSet.FileSet "
+            "Job.FileSetId,FileSet.FileSet,Job.HasCache "
             "FROM Job,Client,Pool,FileSet WHERE Job.JobId=%s AND "
             "Client.ClientId=Job.ClientId AND Pool.PoolId=Job.PoolId "
             "AND FileSet.FileSetId=Job.FileSetId",
             edit_int64(jr->JobId, ed1));
       }
-   } else {
+      break;
+   case HORZ_LIST:
       if (jr->Name[0] != 0) {
          mdb->db_escape_string(jcr, esc, jr->Name, strlen(jr->Name));
          Mmsg(mdb->cmd,
@@ -380,15 +371,19 @@ db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit,
            "SELECT JobId,Name,StartTime,Type,Level,JobFiles,JobBytes,JobStatus "
            "FROM Job ORDER BY StartTime,JobId ASC%s", limit);
       }
+      break;
+   default:
+      break;
    }
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
-      return;
+      return NULL;
    }
+   sql_data_seek(mdb, 0);
    list_result(jcr, mdb, sendit, ctx, type);
-
    sql_free_result(mdb);
    db_unlock(mdb);
+   return list;
 }
 
 /*
@@ -516,4 +511,4 @@ db_list_base_files_for_job(JCR *jcr, B_DB *mdb, JobId_t jobid, DB_LIST_HANDLER *
    db_unlock(mdb);
 }
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/sql_update.c b/src/cats/sql_update.c
index 2b5025b..a6c6baa 100644
--- a/src/cats/sql_update.c
+++ b/src/cats/sql_update.c
@@ -1,40 +1,28 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Catalog Database Update record interface routines
  *
- *    Kern Sibbald, March 2000
+ *    Written by Kern Sibbald, March 2000
  *
  */
 
 #include "bacula.h"
 
-#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI
+#if HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL
 
 #include "cats.h"
 #include "bdb_priv.h"
@@ -64,8 +52,8 @@ db_add_digest_to_file_record(JCR *jcr, B_DB *mdb, FileId_t FileId, char *digest,
 
    db_lock(mdb);
    mdb->esc_name = check_pool_memory_size(mdb->esc_name, len*2+1);
-   mdb->db_escape_string(jcr, mdb->esc_name, digest, len); 
-   Mmsg(mdb->cmd, "UPDATE File SET MD5='%s' WHERE FileId=%s", mdb->esc_name, 
+   mdb->db_escape_string(jcr, mdb->esc_name, digest, len);
+   Mmsg(mdb->cmd, "UPDATE File SET MD5='%s' WHERE FileId=%s", mdb->esc_name,
         edit_int64(FileId, ed1));
    ret = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
@@ -81,7 +69,7 @@ int db_mark_file_record(JCR *jcr, B_DB *mdb, FileId_t FileId, JobId_t JobId)
    char ed1[50], ed2[50];
 
    db_lock(mdb);
-   Mmsg(mdb->cmd, "UPDATE File SET MarkId=%s WHERE FileId=%s", 
+   Mmsg(mdb->cmd, "UPDATE File SET MarkId=%s WHERE FileId=%s",
       edit_int64(JobId, ed1), edit_int64(FileId, ed2));
    stat = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
@@ -113,9 +101,9 @@ db_update_job_start_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
    Mmsg(mdb->cmd, "UPDATE Job SET JobStatus='%c',Level='%c',StartTime='%s',"
 "ClientId=%s,JobTDate=%s,PoolId=%s,FileSetId=%s WHERE JobId=%s",
       (char)(jcr->JobStatus),
-      (char)(jr->JobLevel), dt, 
+      (char)(jr->JobLevel), dt,
       edit_int64(jr->ClientId, ed1),
-      edit_uint64(JobTDate, ed2), 
+      edit_uint64(JobTDate, ed2),
       edit_int64(jr->PoolId, ed3),
       edit_int64(jr->FileSetId, ed4),
       edit_int64(jr->JobId, ed5));
@@ -176,8 +164,8 @@ db_update_job_end_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
    ttime = jr->EndTime;
    (void)localtime_r(&ttime, &tm);
    strftime(dt, sizeof(dt), "%Y-%m-%d %H:%M:%S", &tm);
-
-   if (jr->RealEndTime == 0) {
+                                            
+   if (jr->RealEndTime == 0 || jr->RealEndTime < jr->EndTime) {
       jr->RealEndTime = jr->EndTime;
    }
    ttime = jr->RealEndTime;
@@ -195,7 +183,7 @@ db_update_job_end_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
       (char)(jr->JobStatus), dt, jr->ClientId, edit_uint64(jr->JobBytes, ed1),
       edit_uint64(jr->ReadBytes, ed4),
       jr->JobFiles, jr->JobErrors, jr->VolSessionId, jr->VolSessionTime,
-      jr->PoolId, jr->FileSetId, edit_uint64(JobTDate, ed2), 
+      jr->PoolId, jr->FileSetId, edit_uint64(JobTDate, ed2),
       rdt, PriorJobId, jr->HasBase, jr->PurgedFiles,
       edit_int64(jr->JobId, ed3));
 
@@ -304,7 +292,7 @@ db_update_storage_record(JCR *jcr, B_DB *mdb, STORAGE_DBR *sr)
    int stat;
    char ed1[50];
    db_lock(mdb);
-   Mmsg(mdb->cmd, "UPDATE Storage SET AutoChanger=%d WHERE StorageId=%s", 
+   Mmsg(mdb->cmd, "UPDATE Storage SET AutoChanger=%d WHERE StorageId=%s",
       sr->AutoChanger, edit_int64(sr->StorageId, ed1));
 
    stat = UPDATE_DB(jcr, mdb, mdb->cmd);
@@ -326,9 +314,10 @@ db_update_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
    time_t ttime;
    struct tm tm;
    int stat;
-   char ed1[50], ed2[50],  ed3[50],  ed4[50]; 
+   char ed1[50], ed4[50];
    char ed5[50], ed6[50],  ed7[50],  ed8[50];
-   char ed9[50], ed10[50], ed11[50];
+   char ed9[50], ed10[50], ed11[50], ed12[50];
+   char ed13[50];
    char esc_name[MAX_ESCAPE_NAME_LENGTH];
    char esc_status[MAX_ESCAPE_NAME_LENGTH];
 
@@ -379,29 +368,31 @@ db_update_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
    }
 
    Mmsg(mdb->cmd, "UPDATE Media SET VolJobs=%u,"
-        "VolFiles=%u,VolBlocks=%u,VolBytes=%s,VolMounts=%u,VolErrors=%u,"
+        "VolFiles=%u,VolBlocks=%u,VolBytes=%s,"
+        "VolMounts=%u,VolErrors=%u,"
         "VolWrites=%u,MaxVolBytes=%s,VolStatus='%s',"
         "Slot=%d,InChanger=%d,VolReadTime=%s,VolWriteTime=%s,VolParts=%d,"
         "LabelType=%d,StorageId=%s,PoolId=%s,VolRetention=%s,VolUseDuration=%s,"
         "MaxVolJobs=%d,MaxVolFiles=%d,Enabled=%d,LocationId=%s,"
         "ScratchPoolId=%s,RecyclePoolId=%s,RecycleCount=%d,Recycle=%d,ActionOnPurge=%d"
         " WHERE VolumeName='%s'",
-        mr->VolJobs, mr->VolFiles, mr->VolBlocks, edit_uint64(mr->VolBytes, ed1),
+        mr->VolJobs, mr->VolFiles, mr->VolBlocks,
+        edit_uint64(mr->VolBytes, ed1),
         mr->VolMounts, mr->VolErrors, mr->VolWrites,
-        edit_uint64(mr->MaxVolBytes, ed2),
+        edit_uint64(mr->MaxVolBytes, ed4),
         esc_status, mr->Slot, mr->InChanger,
-        edit_int64(mr->VolReadTime, ed3),
-        edit_int64(mr->VolWriteTime, ed4),
+        edit_int64(mr->VolReadTime, ed5),
+        edit_int64(mr->VolWriteTime, ed6),
         mr->VolParts,
         mr->LabelType,
-        edit_int64(mr->StorageId, ed5),
-        edit_int64(mr->PoolId, ed6),
-        edit_uint64(mr->VolRetention, ed7),
-        edit_uint64(mr->VolUseDuration, ed8),
+        edit_int64(mr->StorageId, ed7),
+        edit_int64(mr->PoolId, ed8),
+        edit_uint64(mr->VolRetention, ed9),
+        edit_uint64(mr->VolUseDuration, ed10),
         mr->MaxVolJobs, mr->MaxVolFiles,
-        mr->Enabled, edit_uint64(mr->LocationId, ed9),
-        edit_uint64(mr->ScratchPoolId, ed10),
-        edit_uint64(mr->RecyclePoolId, ed11),
+        mr->Enabled, edit_uint64(mr->LocationId, ed11),
+        edit_uint64(mr->ScratchPoolId, ed12),
+        edit_uint64(mr->RecyclePoolId, ed13),
         mr->RecycleCount,mr->Recycle, mr->ActionOnPurge,
         esc_name);
 
@@ -480,25 +471,25 @@ db_make_inchanger_unique(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
        if (mr->MediaId != 0) {
           Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0, Slot=0 WHERE "
                "Slot=%d AND StorageId=%s AND MediaId!=%s",
-               mr->Slot, 
+               mr->Slot,
                edit_int64(mr->StorageId, ed1), edit_int64(mr->MediaId, ed2));
 
        } else if (*mr->VolumeName) {
           mdb->db_escape_string(jcr, esc,mr->VolumeName,strlen(mr->VolumeName));
           Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0, Slot=0 WHERE "
                "Slot=%d AND StorageId=%s AND VolumeName!='%s'",
-               mr->Slot, 
+               mr->Slot,
                edit_int64(mr->StorageId, ed1), esc);
 
        } else {  /* used by ua_label to reset all volume with this slot */
           Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0, Slot=0 WHERE "
                "Slot=%d AND StorageId=%s",
-               mr->Slot, 
-               edit_int64(mr->StorageId, ed1), mr->VolumeName);          
+               mr->Slot,
+               edit_int64(mr->StorageId, ed1), mr->VolumeName);
        }
        Dmsg1(100, "%s\n", mdb->cmd);
        UPDATE_DB(jcr, mdb, mdb->cmd);
    }
 }
 
-#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL || HAVE_INGRES || HAVE_DBI */
+#endif /* HAVE_SQLITE3 || HAVE_MYSQL || HAVE_POSTGRESQL */
diff --git a/src/cats/sqlite.c b/src/cats/sqlite.c
index d3ff4d6..ca222e9 100644
--- a/src/cats/sqlite.c
+++ b/src/cats/sqlite.c
@@ -1,36 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Catalog Database routines specific to SQLite
  *
- *    Kern Sibbald, January 2002
+ *    Written by Kern Sibbald, January 2002
  *
- * Major rewrite by Marco van Wieringen, January 2010 for catalog refactoring.
+ *  Add class wrapper Marco van Wieringen, January 2010
  */
 
 #include "bacula.h"
@@ -57,7 +45,7 @@ static dlist *db_list = NULL;
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
 /*
- * When using mult_db_connections = true, 
+ * When using mult_db_connections = true,
  * sqlite can be BUSY. We just need sleep a little in this case.
  */
 static int sqlite_busy_handler(void *arg, int calls)
@@ -112,12 +100,12 @@ B_DB_SQLITE::B_DB_SQLITE(JCR *jcr,
    esc_obj  = get_pool_memory(PM_FNAME);
    m_allow_transactions = mult_db_connections;
 
-   /* At this time, when mult_db_connections == true, this is for 
+   /* At this time, when mult_db_connections == true, this is for
     * specific console command such as bvfs or batch mode, and we don't
     * want to share a batch mode or bvfs. In the future, we can change
     * the creation function to add this parameter.
     */
-   m_dedicated = mult_db_connections; 
+   m_dedicated = mult_db_connections;
 
    /*
     * Initialize the private members.
@@ -187,7 +175,7 @@ bool B_DB_SQLITE::db_open_database(JCR *jcr)
    for (m_db_handle = NULL; !m_db_handle && retry++ < 10; ) {
       ret = sqlite3_open(db_path, &m_db_handle);
       if (ret != SQLITE_OK) {
-         m_sqlite_errmsg = (char *)sqlite3_errmsg(m_db_handle); 
+         m_sqlite_errmsg = (char *)sqlite3_errmsg(m_db_handle);
          sqlite3_close(m_db_handle);
          m_db_handle = NULL;
       } else {
@@ -204,7 +192,7 @@ bool B_DB_SQLITE::db_open_database(JCR *jcr)
          db_path, m_sqlite_errmsg ? m_sqlite_errmsg : _("unknown"));
       free(db_path);
       goto bail_out;
-   }       
+   }
    m_connected = true;
    free(db_path);
 
@@ -220,7 +208,6 @@ bool B_DB_SQLITE::db_open_database(JCR *jcr)
    if (!check_tables_version(jcr, this)) {
       goto bail_out;
    }
-
    retval = true;
 
 bail_out:
@@ -427,7 +414,7 @@ static int sqlite_result_handler(void *arh_data, int num_fields, char **rows, ch
    if (rh_data->result_handler) {
       (*(rh_data->result_handler))(rh_data->ctx, num_fields, rows);
    }
-   
+
    return 0;
 }
 
@@ -457,7 +444,7 @@ bool B_DB_SQLITE::db_sql_query(const char *query, DB_RESULT_HANDLER *result_hand
 
    stat = sqlite3_exec(m_db_handle, query, sqlite_result_handler,
                        (void *)&rh_data, &m_sqlite_errmsg);
-   
+
    if (stat != SQLITE_OK) {
       Mmsg(errmsg, _("Query failed: %s: ERR=%s\n"), query, sql_strerror());
       Dmsg0(500, "db_sql_query finished\n");
@@ -648,7 +635,7 @@ bool B_DB_SQLITE::sql_field_is_numeric(int field_type)
    }
 }
 
-/* 
+/*
  * Returns true if OK
  *         false if failed
  */
@@ -671,7 +658,7 @@ bool B_DB_SQLITE::sql_batch_start(JCR *jcr)
 }
 
 /* set error to something to abort operation */
-/* 
+/*
  * Returns true if OK
  *         false if failed
  */
@@ -682,7 +669,7 @@ bool B_DB_SQLITE::sql_batch_end(JCR *jcr, const char *error)
    return true;
 }
 
-/* 
+/*
  * Returns true if OK
  *         false if failed
  */
@@ -716,9 +703,9 @@ bool B_DB_SQLITE::sql_batch_insert(JCR *jcr, ATTR_DBR *ar)
  * never have errors, or it is really fatal.
  */
 B_DB *db_init_database(JCR *jcr, const char *db_driver, const char *db_name,
-                       const char *db_user, const char *db_password, 
-                       const char *db_address, int db_port, 
-                       const char *db_socket, bool mult_db_connections, 
+                       const char *db_user, const char *db_password,
+                       const char *db_address, int db_port,
+                       const char *db_socket, bool mult_db_connections,
                        bool disable_batch_insert)
 {
    B_DB *mdb = NULL;
diff --git a/src/cats/sqlite.in b/src/cats/sqlite.in
index 9631f37..425e2d9 100644
--- a/src/cats/sqlite.in
+++ b/src/cats/sqlite.in
@@ -1,6 +1,21 @@
 #!/bin/sh
 #
 # shell script to invoke SQLite on Bacula database
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 bindir=@SQLITE_BINDIR@
 db_name=@db_name@
diff --git a/src/cats/update_bacula_tables.in b/src/cats/update_bacula_tables.in
index 943c310..334b391 100755
--- a/src/cats/update_bacula_tables.in
+++ b/src/cats/update_bacula_tables.in
@@ -3,6 +3,21 @@
 # This routine alters the appropriately configured
 # Bacula tables for PostgreSQL, Ingres, MySQL, or SQLite.
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
 
 default_db_type=@DEFAULT_DB_TYPE@
 
diff --git a/src/cats/update_ingres_tables.in b/src/cats/update_ingres_tables.in
deleted file mode 100755
index 6a6ff88..0000000
--- a/src/cats/update_ingres_tables.in
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-#
-# Shell script to update Ingres tables (without any function for now)
-#
-echo " "
-echo "This script will update a Bacula Ingres database (if needed)"
-echo " "
-bindir=@INGRES_BINDIR@
-db_name=@db_name@
-
-echo "Update of Bacula Ingres tables succeeded. (nothing to do)"
-exit 0
diff --git a/src/cats/update_mysql_tables.in b/src/cats/update_mysql_tables.in
index f392c94..5dca6e9 100644
--- a/src/cats/update_mysql_tables.in
+++ b/src/cats/update_mysql_tables.in
@@ -2,6 +2,22 @@
 #
 # Shell script to update MySQL Community version 5.0.x to 5.2.x
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
+
 echo " "
 echo "This script will update a Bacula MySQL database from version 12 to 14"
 echo " which is needed to convert from Bacula Community version 5.0.x to 5.2.x"
diff --git a/src/cats/update_postgresql_tables.in b/src/cats/update_postgresql_tables.in
index f97cb60..a24d3a9 100644
--- a/src/cats/update_postgresql_tables.in
+++ b/src/cats/update_postgresql_tables.in
@@ -3,6 +3,22 @@
 # Shell script to update PostgreSQL tables from version 12 to 14
 #  or Bacula Community version 5.0.x to 5.2.x
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
+
 echo " "
 echo "This script will update a Bacula PostgreSQL database from version 12 to 14"
 echo "	which is needed to convert from Bacula Community version 5.0.x to 5.2.x"
diff --git a/src/cats/update_sqlite3_tables.in b/src/cats/update_sqlite3_tables.in
index d144569..368ee28 100644
--- a/src/cats/update_sqlite3_tables.in
+++ b/src/cats/update_sqlite3_tables.in
@@ -2,6 +2,22 @@
 #
 # Shell script to update sqlite3 tables from Bacula Community version 5.0.x to 5.2.x
 #
+#
+#  Bacula® - The Network Backup Solution
+#
+#  Copyright (C) 2000-2014 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.
+#
+#  You may use this file and others of this release according to the
+#  license defined in the LICENSE file, which includes the Affero General
+#  Public License, v3.0 ("AGPLv3") and some additional permissions and
+#  terms pursuant to its AGPLv3 Section 7.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#
+
 echo " "
 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"
diff --git a/src/ch.h b/src/ch.h
index f6cad31..a3b9198 100644
--- a/src/ch.h
+++ b/src/ch.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /**
  * Compressed stream header struct
diff --git a/src/cl b/src/cl
deleted file mode 100644
index 9d37632..0000000
--- a/src/cl
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2000-2008 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 two of the GNU Lesser General 
-   Public License as published by the Free Software Foundation plus 
-   additions that are listed 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 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.
-*/
diff --git a/src/console/authenticate.c b/src/console/authenticate.c
index 0f5e5b9..fe5de73 100644
--- a/src/console/authenticate.c
+++ b/src/console/authenticate.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -42,15 +30,21 @@
 #include "console_conf.h"
 #include "jcr.h"
 
+/*
+ * Version at end of Hello
+ *   prior to 06Aug13 no version
+ */
+#define UA_VERSION 1
 
 void senditf(const char *fmt, ...);
 void sendit(const char *buf);
 
 /* Commands sent to Director */
-static char hello[]    = "Hello %s calling\n";
+static char hello[]    = "Hello %s calling %d\n";
 
 /* Response from Director */
-static char OKhello[]   = "1000 OK:";
+static char oldOKhello[]   = "1000 OK:";
+static char newOKhello[]   = "1000 OK: %d";
 
 /* Forward referenced functions */
 
@@ -64,6 +58,7 @@ int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons)
    int tls_remote_need = BNET_TLS_NONE;
    bool tls_authenticate;
    int compatible = true;
+   int dir_version = 0;
    char bashed_name[MAX_NAME_LENGTH];
    char *password;
    TLS_CONTEXT *tls_ctx = NULL;
@@ -107,10 +102,10 @@ int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons)
       tls_ctx = director->tls_ctx;
    }
 
-   
-   /* Timeout Hello after 5 mins */
-   btimer_t *tid = start_bsock_timer(dir, 60 * 5);
-   dir->fsend(hello, bashed_name);
+
+   /* Timeout Hello after 15 secs */
+   btimer_t *tid = start_bsock_timer(dir, 15);
+   dir->fsend(hello, bashed_name, UA_VERSION);
 
    if (!cram_md5_respond(dir, password, &tls_remote_need, &compatible) ||
        !cram_md5_challenge(dir, password, tls_local_need, compatible)) {
@@ -155,10 +150,12 @@ int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons)
    }
 
    Dmsg1(10, "<dird: %s", dir->msg);
-   if (strncmp(dir->msg, OKhello, sizeof(OKhello)-1) != 0) {
+   if (strncmp(dir->msg, oldOKhello, sizeof(oldOKhello)-1) != 0) {
       sendit(_("Director rejected Hello command\n"));
       goto bail_out;
    } else {
+      /* If Dir version exists, get it */
+      sscanf(dir->msg, newOKhello, &dir_version);
       sendit(dir->msg);
    }
    stop_bsock_timer(tid);
diff --git a/src/console/conio.c b/src/console/conio.c
index 1b39d29..cfa5d66 100755
--- a/src/console/conio.c
+++ b/src/console/conio.c
@@ -1,39 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   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
-   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.
+   Copyright (C) 1981-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
-/*
-      Generalized console input/output handler
-      A maintanable replacement for readline()
 
-         Updated for Bacula, Kern Sibbald, December MMIII
+/*
+  Generalized console input/output handler
+  A maintanable replacement for readline()
 
-      This code is in part derived from code that I wrote in
-      1981, so some of it is a bit old and could use a cleanup.
+  Written in 1981, updated for Bacula, Kern Sibbald, December MMIII
 
 */
 
@@ -46,7 +31,6 @@
  *  Each subsequent character starts with 10 (i.e. (c & 0xC0) == 0x80)
  */
 
-
 #ifdef  TEST_PROGRAM
 #include <stdio.h>
 #include <unistd.h>
@@ -72,7 +56,7 @@
 extern "C" int tgetent(void *, const char *);
 extern "C" int tgetnum(const char *);
 extern "C" char *tgetstr (const char*, char**);
-# Note: the following on older (Solaris 10) systems 
+# 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
diff --git a/src/console/conio.h b/src/console/conio.h
index dc7e27a..57296af 100644
--- a/src/console/conio.h
+++ b/src/console/conio.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef __CONIO_H
diff --git a/src/console/console.c b/src/console/console.c
index 999515f..d716e36 100644
--- a/src/console/console.c
+++ b/src/console/console.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -320,7 +308,7 @@ static void read_and_process_input(FILE *input, BSOCK *UA_sock)
       if (!stop) {
          fflush(stdout);
       }
-      if (is_bnet_stop(UA_sock)) {
+      if (UA_sock->is_stop()) {
          break;                       /* error or term */
       } else if (stat == BNET_SIGNAL) {
          if (UA_sock->msglen == BNET_SUB_PROMPT) {
@@ -333,7 +321,7 @@ static void read_and_process_input(FILE *input, BSOCK *UA_sock)
 
 /*
  * Call-back for reading a passphrase for an encrypted PEM file
- * This function uses getpass(), 
+ * This function uses getpass(),
  *  which uses a static buffer and is NOT thread-safe.
  */
 static int tls_pem_callback(char *buf, int size, const void *userdata)
@@ -399,7 +387,7 @@ get_previous_keyword(int current_point, int nb)
             break;
          }
       }
-      
+
       /* find the end of the command */
       for (; i >= 0; i--) {
          if (rl_line_buffer[i] != ' ') {
@@ -407,12 +395,12 @@ get_previous_keyword(int current_point, int nb)
             break;
          }
       }
-      
+
       /* no end of string */
       if (end == -1) {
          return NULL;
       }
-      
+
       /* look for the start of the command */
       for (start = end; start > 0; start--) {
          if (rl_line_buffer[start] == '"') {
@@ -520,7 +508,7 @@ void get_items(const char *what)
    }
 }
 
-typedef enum 
+typedef enum
 {
    ITEM_ARG,       /* item with simple list like .jobs */
    ITEM_HELP       /* use help item=xxx and detect all arguments */
@@ -528,9 +516,9 @@ typedef enum
 
 /* Generator function for command completion.  STATE lets us know whether
  * to start from scratch; without any state (i.e. STATE == 0), then we
- * start at the top of the list. 
+ * start at the top of the list.
  */
-static char *item_generator(const char *text, int state, 
+static char *item_generator(const char *text, int state,
                             const char *item, cpl_item_t type)
 {
   static int list_index, len;
@@ -538,7 +526,7 @@ static char *item_generator(const char *text, int state,
 
   /* If this is a new word to complete, initialize now.  This includes
    * saving the length of TEXT for efficiency, and initializing the index
-   *  variable to 0. 
+   *  variable to 0.
    */
   if (!state)
   {
@@ -559,7 +547,7 @@ static char *item_generator(const char *text, int state,
   {
      name = (char *)items->list[list_index];
      list_index++;
-     
+
      if (strncmp(name, text, len) == 0) {
         char *ret = (char *) actuallymalloc(strlen(name)+1);
         strcpy(ret, name);
@@ -568,10 +556,10 @@ static char *item_generator(const char *text, int state,
   }
 
   /* If no names matched, then return NULL. */
-  return ((char *)NULL);   
+  return ((char *)NULL);
 }
 
-/* gobal variables for the type and the item to search 
+/* gobal variables for the type and the item to search
  * the readline API doesn' permit to pass user data.
  */
 static const char *cpl_item;
@@ -619,7 +607,7 @@ static struct cpl_keywords_t cpl_keywords[] = {
  * region of rl_line_buffer that contains the word to complete.  TEXT is
  * the word to complete.  We can use the entire contents of rl_line_buffer
  * in case we want to do some simple parsing.  Return the array of matches,
- * or NULL if there aren't any. 
+ * or NULL if there aren't any.
  */
 static char **readline_completion(const char *text, int start, int end)
 {
@@ -630,7 +618,7 @@ static char **readline_completion(const char *text, int start, int end)
 
    /* If this word is at the start of the line, then it is a command
     * to complete.  Otherwise it is the name of a file in the current
-    * directory. 
+    * directory.
     */
    s = get_previous_keyword(start, 0);
    cmd = get_first_keyword();
@@ -644,14 +632,14 @@ static char **readline_completion(const char *text, int start, int end)
             break;
          }
       }
-      
+
       if (!found) {             /* we try to get help with the first command */
          cpl_item = cmd;
          cpl_type = ITEM_HELP;
          /* we don't want to append " " at the end */
-         rl_completion_suppress_append=true; 
+         rl_completion_suppress_append=true;
          matches = rl_completion_matches(text, cpl_generator);
-      } 
+      }
       free(s);
    } else {                     /* nothing on the line, display all commands */
       cpl_item = ".help all";
@@ -830,7 +818,7 @@ again:
       }
       else
 #endif
-      if (fgets(sock->msg, len, input) == NULL) {
+      if (bfgets(sock->msg, input) == NULL) {
          return -1;
 
       }
@@ -890,10 +878,8 @@ bool select_director(const char *director, DIRRES **ret_dir, CONRES **ret_cons)
    int numcon=0, numdir=0;
    int i=0, item=0;
    BSOCK *UA_sock;
-   DIRRES *dir=NULL;
-   CONRES *cons=NULL;
-   struct sockaddr client_addr;
-   memset(&client_addr, 0, sizeof(client_addr));
+   DIRRES *dir = NULL;
+   CONRES *cons = NULL;
 
    *ret_cons = NULL;
    *ret_dir = NULL;
@@ -911,12 +897,12 @@ bool select_director(const char *director, DIRRES **ret_dir, CONRES **ret_cons)
 
    if (numdir == 1) {           /* No choose */
       dir = (DIRRES *)GetNextRes(R_DIRECTOR, NULL);
-   } 
- 
+   }
+
    if (director) {    /* Command line choice overwrite the no choose option */
       LockRes();
       foreach_res(dir, R_DIRECTOR) {
-         if (bstrcmp(dir->hdr.name, director)) {
+         if (bstrcasecmp(dir->hdr.name, director)) {
             break;
          }
       }
@@ -927,26 +913,26 @@ bool select_director(const char *director, DIRRES **ret_dir, CONRES **ret_cons)
       }
    }
 
-   if (!dir) {                  /* prompt for director */
-      UA_sock = init_bsock(NULL, 0, "", "", 0, &client_addr);
+   if (dir == NULL) {               /* prompt for director */
+      UA_sock = new_bsock();
 try_again:
       sendit(_("Available Directors:\n"));
       LockRes();
       numdir = 0;
       foreach_res(dir, R_DIRECTOR) {
-         senditf( _("%2d:  %s at %s:%d\n"), 1+numdir++, dir->hdr.name, 
+         senditf( _("%2d:  %s at %s:%d\n"), 1+numdir++, dir->hdr.name,
                   dir->address, dir->DIRport);
       }
       UnlockRes();
-      if (get_cmd(stdin, _("Select Director by entering a number: "), 
-                  UA_sock, 600) < 0) 
+      if (get_cmd(stdin, _("Select Director by entering a number: "),
+                  UA_sock, 600) < 0)
       {
          (void)WSACleanup();               /* Cleanup Windows sockets */
          return 0;
       }
       if (!is_a_number(UA_sock->msg)) {
          senditf(_("%s is not a number. You must enter a number between "
-                   "1 and %d\n"), 
+                   "1 and %d\n"),
                  UA_sock->msg, numdir);
          goto try_again;
       }
@@ -955,7 +941,7 @@ try_again:
          senditf(_("You must enter a number between 1 and %d\n"), numdir);
          goto try_again;
       }
-      term_bsock(UA_sock);
+      free_bsock(UA_sock);
       LockRes();
       for (i=0; i<item; i++) {
          dir = (DIRRES *)GetNextRes(R_DIRECTOR, (RES *)dir);
@@ -966,18 +952,24 @@ try_again:
    /* Look for a console linked to this director */
    for (i=0; i<numcon; i++) {
       cons = (CONRES *)GetNextRes(R_CONSOLE, (RES *)cons);
-      if (cons->director && strcmp(cons->director, dir->hdr.name) == 0) {
+      if (cons->director && strcasecmp(cons->director, dir->hdr.name) == 0) {
          break;
       }
-      cons = NULL;
+      if (i == (numcon - 1)) {
+         cons = NULL;
+      }
    }
+
    /* Look for the first non-linked console */
    if (cons == NULL) {
       for (i=0; i<numcon; i++) {
          cons = (CONRES *)GetNextRes(R_CONSOLE, (RES *)cons);
-         if (cons->director == NULL)
+         if (cons->director == NULL) {
             break;
-         cons = NULL;
+         }
+         if (i == (numcon - 1)) {
+            cons = NULL;
+         }
       }
    }
 
@@ -989,7 +981,7 @@ try_again:
 
    *ret_dir = dir;
    *ret_cons = cons;
-   
+
    return 1;
 }
 
@@ -1001,7 +993,7 @@ try_again:
 int main(int argc, char *argv[])
 {
    int ch;
-   char *director=NULL;
+   char *director = NULL;
    bool list_directors=false;
    bool no_signals = false;
    bool test_config = false;
@@ -1019,7 +1011,7 @@ int main(int argc, char *argv[])
    working_directory = "/tmp";
    args = get_pool_memory(PM_FNAME);
 
-   while ((ch = getopt(argc, argv, "D:lbc:d:nstu:?")) != -1) {
+   while ((ch = getopt(argc, argv, "D:lc:d:nstu:?")) != -1) {
       switch (ch) {
       case 'D':                    /* Director */
          if (director) {
@@ -1136,7 +1128,8 @@ int main(int argc, char *argv[])
 
    start_watchdog();                        /* Start socket watchdog */
 
-   if(!select_director(director, &dir, &cons)) {
+   if (!select_director(director, &dir, &cons)) {
+      terminate_console(0);
       return 1;
    }
 
@@ -1150,7 +1143,7 @@ int main(int argc, char *argv[])
 
       /* Initialize TLS context:
        * Args: CA certfile, CA certdir, Certfile, Keyfile,
-       * Keyfile PEM Callback, Keyfile CB Userdata, DHfile, Verify Peer   
+       * Keyfile PEM Callback, Keyfile CB Userdata, DHfile, Verify Peer
        */
       cons->tls_ctx = new_tls_context(cons->tls_ca_certfile,
          cons->tls_ca_certdir, cons->tls_certfile,
@@ -1191,9 +1184,11 @@ int main(int argc, char *argv[])
    } else {
       heart_beat = 0;
    }
-   UA_sock = bnet_connect(NULL, 5, 15, heart_beat, "Director daemon", dir->address,
-                          NULL, dir->DIRport, 0);
-   if (UA_sock == NULL) {
+   if (!UA_sock) {
+      UA_sock = new_bsock();
+   }
+   if (!UA_sock->connect(NULL, 5, 15, heart_beat, "Director daemon", dir->address,
+                          NULL, dir->DIRport, 0)) {
       terminate_console(0);
       return 1;
    }
@@ -1308,7 +1303,7 @@ static int check_resources()
          OK = false;
       }
    }
-   
+
    if (numdir == 0) {
       Emsg1(M_FATAL, 0, _("No Director resource defined in %s\n"
                           "Without that I don't how to speak to the Director :-(\n"), configfile);
@@ -1447,7 +1442,7 @@ static int execcmd(FILE *input, BSOCK *UA_sock)
          argk[1], be.bstrerror(errno));
       return 1;
    }
-  
+
    while (fgets(line, sizeof(line), bpipe->rfd)) {
       senditf("%s", line);
    }
@@ -1455,7 +1450,7 @@ static int execcmd(FILE *input, BSOCK *UA_sock)
    if (stat != 0) {
       berrno be;
       be.set_errno(stat);
-     senditf(_("Autochanger error: ERR=%s\n"), be.bstrerror());
+      senditf(_("@exec error: ERR=%s\n"), be.bstrerror());
    }
    return 1;
 }
@@ -1481,10 +1476,10 @@ static int quitcmd(FILE *input, BSOCK *UA_sock)
 static int helpcmd(FILE *input, BSOCK *UA_sock)
 {
    int i;
-   for (i=0; i<comsize; i++) { 
+   for (i=0; i<comsize; i++) {
       senditf("  %-10s %s\n", commands[i].key, commands[i].help);
    }
-   return 1;   
+   return 1;
 }
 
 
diff --git a/src/console/console_conf.c b/src/console/console_conf.c
index 42f4608..5ea82aa 100644
--- a/src/console/console_conf.c
+++ b/src/console/console_conf.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Main configuration file parser for Bacula User Agent
@@ -193,7 +181,7 @@ void free_resource(RES *sres, int type)
       if (res->res_cons.hist_file) {
          free(res->res_cons.hist_file);
       }
-      if (res->res_cons.tls_ctx) { 
+      if (res->res_cons.tls_ctx) {
          free_tls_context(res->res_cons.tls_ctx);
       }
       if (res->res_cons.tls_ca_certfile) {
@@ -208,12 +196,15 @@ void free_resource(RES *sres, int type)
       if (res->res_cons.tls_keyfile) {
          free(res->res_cons.tls_keyfile);
       }
+      if (res->res_cons.director) {
+         free(res->res_cons.director);
+      }
       break;
    case R_DIRECTOR:
       if (res->res_dir.address) {
          free(res->res_dir.address);
       }
-      if (res->res_dir.tls_ctx) { 
+      if (res->res_dir.tls_ctx) {
          free_tls_context(res->res_dir.tls_ctx);
       }
       if (res->res_dir.tls_ca_certfile) {
diff --git a/src/console/console_conf.h b/src/console/console_conf.h
index 0742d68..042790e 100644
--- a/src/console/console_conf.h
+++ b/src/console/console_conf.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula User Agent specific configuration and defines
diff --git a/src/count-lines b/src/count-lines
deleted file mode 100755
index a680905..0000000
--- a/src/count-lines
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-rm -f 1
-touch 1
-find . -type d >2
-for i in `cat 2` ; do
-  ls -1 $i/*.c $i/*.cpp $i/*.h $i/*.in 2>/dev/null >>1
-done
-cat 1 | $HOME/bin/lines
-# rm -f 1 2
diff --git a/src/dird/Makefile.in b/src/dird/Makefile.in
index f3bd89f..c4c47df 100644
--- a/src/dird/Makefile.in
+++ b/src/dird/Makefile.in
@@ -22,9 +22,6 @@ DEBUG=@DEBUG@
 GETTEXT_LIBS = @LIBINTL@
 CAP_LIBS = @CAP_LIBS@
 
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_INC = @PYTHON_INCDIR@
-
 DB_LIBS=@DB_LIBS@
 
 first_rule: all
@@ -35,9 +32,8 @@ SVRSRCS = dird.c admin.c authenticate.c \
 	  autoprune.c backup.c bsr.c \
 	  catreq.c dir_plugins.c dird_conf.c expand.c \
 	  fd_cmds.c getmsg.c inc_conf.c job.c \
-	  jobq.c migrate.c \
+	  jobq.c mac.c mac_sql.c \
 	  mountreq.c msgchan.c next_vol.c newvol.c \
-	  pythondir.c \
 	  recycle.c restore.c run_conf.c \
 	  scheduler.c \
 	  ua_acl.c ua_cmds.c ua_dotcmds.c \
@@ -58,25 +54,25 @@ EXTRAOBJS = @OBJLIST@
 # inference rules
 .c.o:
 	@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) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 #-------------------------------------------------------------------------
 all: Makefile bacula-dir @STATIC_DIR@
 	@echo "==== Make of dird is good ===="
 	@echo " "
 
 bacula-dir: Makefile $(SVROBJS) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) \
-	    ../lib/libbacpy$(DEFAULT_ARCHIVE_TYPE) ../cats/libbacsql$(DEFAULT_ARCHIVE_TYPE) \
+	    ../cats/libbacsql$(DEFAULT_ARCHIVE_TYPE) \
 	    ../cats/libbaccats$(DEFAULT_ARCHIVE_TYPE) ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE)
 	@echo "Linking $@ ..."
 	$(LIBTOOL_LINK) $(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -L../cats -L../findlib -o $@ $(SVROBJS) \
-	      -lbacfind -lbacsql -lbaccats -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(DLIB) $(DB_LIBS) $(LIBS) \
+	      -lbacfind -lbacsql -lbaccats -lbaccfg -lbac -lm $(DLIB) $(DB_LIBS) $(LIBS) \
 	      $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS)
 
 static-bacula-dir:  Makefile $(SVROBJS) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) \
-		   ../lib/libbacpy$(DEFAULT_ARCHIVE_TYPE) ../cats/libbacsql$(DEFAULT_ARCHIVE_TYPE) \
+		   ../cats/libbacsql$(DEFAULT_ARCHIVE_TYPE) \
 		   ../cats/libbaccats$(DEFAULT_ARCHIVE_TYPE) ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE)
 	$(LIBTOOL_LINK) $(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -L../cats -L../findlib -o $@ $(SVROBJS) \
-	      -lbacfind -lbacsql -lbaccats -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(DLIB) $(DB_LIBS) $(LIBS) \
+	      -lbacfind -lbacsql -lbaccats -lbaccfg -lbac -lm $(DLIB) $(DB_LIBS) $(LIBS) \
 	      $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS)
 	strip $@
 
@@ -127,7 +123,7 @@ install: all
 
 
 uninstall:
-	(cd $(DESTDIR)$(sbindir); $(RMF) bacula-dir)
+	(cd $(DESTDIR)$(sbindir); $(RMF) bacula-dir
 	(cd $(DESTDIR)$(sysconfdir); $(RMF) bacula-dir.conf bacula-dir.conf.new)
 	(cd $(DESTDIR)$(scriptdir); $(RMF) query.sql)
 
@@ -142,7 +138,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) $(XINC) -I$(srcdir) -I$(basedir) *.c >> Makefile
 	@if test -f Makefile ; then \
 	    $(RMF) Makefile.bak; \
 	else \
diff --git a/src/dird/admin.c b/src/dird/admin.c
index b7773e4..05bd6db 100644
--- a/src/dird/admin.c
+++ b/src/dird/admin.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
diff --git a/src/dird/authenticate.c b/src/dird/authenticate.c
index a69b277..a725408 100644
--- a/src/dird/authenticate.c
+++ b/src/dird/authenticate.c
@@ -1,41 +1,27 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
- *   Bacula Director -- authorize.c -- handles authorization of
+ *   Bacula Director -- authenticate.c -- handles authorization of
  *     Storage and File daemons.
  *
- *     Kern Sibbald, May MMI
+ *    Written by: Kern Sibbald, May MMI
  *
  *    This routine runs as a thread and must be thread reentrant.
  *
- *   Version $Id$
- *
  */
 
 #include "bacula.h"
@@ -45,14 +31,21 @@ static const int dbglvl = 50;
 
 extern DIRRES *director;
 
-/* Commands sent to Storage daemon and File daemon and received
- *  from the User Agent */
-static char hello[]    = "Hello Director %s calling\n";
+/* Version at end of Hello
+ *   prior to 06Aug13 no version
+ *   1 06Aug13 - added comm line compression
+ */
+#define DIR_VERSION 1
+
 
-/* Response from Storage daemon */
-static char OKhello[]      = "3000 OK Hello\n";
-static char FDOKhello[]    = "2000 OK Hello\n";
-static char FDOKnewHello[] = "2000 OK Hello %d\n";
+/* Command sent to SD */
+static char hello[]    = "Hello %sDirector %s calling %d\n";
+
+/* Responses from Storage and File daemons */
+static char OKhello[]      = "3000 OK Hello";
+static char SDOKnewHello[] = "3000 OK Hello %d";
+static char FDOKhello[]    = "2000 OK Hello";
+static char FDOKnewHello[] = "2000 OK Hello %d";
 
 /* Sent to User Agent */
 static char Dir_sorry[]  = "1999 You are not authorized.\n";
@@ -78,10 +71,11 @@ bool authenticate_storage_daemon(JCR *jcr, STORE *store)
    bash_spaces(dirname);
    /* Timeout Hello after 1 min */
    btimer_t *tid = start_bsock_timer(sd, AUTH_TIMEOUT);
-   if (!sd->fsend(hello, dirname)) {
+   /* Sent Hello SD: Bacula Director <dirname> calling <version> */
+   if (!sd->fsend(hello, "SD: Bacula ", dirname, DIR_VERSION)) {
       stop_bsock_timer(tid);
-      Dmsg1(dbglvl, _("Error sending Hello to Storage daemon. ERR=%s\n"), bnet_strerror(sd));
-      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to Storage daemon. ERR=%s\n"), bnet_strerror(sd));
+      Dmsg1(dbglvl, _("Error sending Hello to Storage daemon. ERR=%s\n"), sd->bstrerror());
+      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to Storage daemon. ERR=%s\n"), sd->bstrerror());
       return 0;
    }
 
@@ -158,7 +152,9 @@ bool authenticate_storage_daemon(JCR *jcr, STORE *store)
    }
    Dmsg1(110, "<stored: %s", sd->msg);
    stop_bsock_timer(tid);
-   if (strncmp(sd->msg, OKhello, sizeof(OKhello)) != 0) {
+   jcr->SDVersion = 0;
+   if (sscanf(sd->msg, SDOKnewHello, &jcr->SDVersion) != 1 &&
+       strncmp(sd->msg, OKhello, sizeof(OKhello)) != 0) {
       Dmsg0(dbglvl, _("Storage daemon rejected Hello command\n"));
       Jmsg2(jcr, M_FATAL, 0, _("Storage daemon at \"%s:%d\" rejected Hello command\n"),
          sd->host(), sd->port());
@@ -187,9 +183,11 @@ int authenticate_file_daemon(JCR *jcr)
    bash_spaces(dirname);
    /* Timeout Hello after 1 min */
    btimer_t *tid = start_bsock_timer(fd, AUTH_TIMEOUT);
-   if (!fd->fsend(hello, dirname)) {
+   if (!fd->fsend(hello, "", dirname, DIR_VERSION)) {
       stop_bsock_timer(tid);
-      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"), 
+      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"),
+           fd->host(), fd->port(), fd->bstrerror());
+      Dmsg3(50, _("Error sending Hello to File daemon at \"%s:%d\". ERR=%s\n"),
            fd->host(), fd->port(), fd->bstrerror());
       return 0;
    }
@@ -264,7 +262,7 @@ int authenticate_file_daemon(JCR *jcr)
    if (fd->recv() <= 0) {
       stop_bsock_timer(tid);
       Dmsg1(dbglvl, _("Bad response from File daemon to Hello command: ERR=%s\n"),
-         bnet_strerror(fd));
+         fd->bstrerror());
       Jmsg(jcr, M_FATAL, 0, _("Bad response from File daemon at \"%s:%d\" to Hello command: ERR=%s\n"),
          fd->host(), fd->port(), fd->bstrerror());
       return 0;
@@ -297,14 +295,16 @@ int authenticate_user_agent(UAContext *uac)
    bool auth_success = false;
    TLS_CONTEXT *tls_ctx = NULL;
    alist *verify_list = NULL;
- 
+   int ua_version = 0;
+
    if (ua->msglen < 16 || ua->msglen >= MAX_NAME_LENGTH + 15) {
       Emsg4(M_ERROR, 0, _("UA Hello from %s:%s:%d is invalid. Len=%d\n"), ua->who(),
             ua->host(), ua->port(), ua->msglen);
       return 0;
    }
 
-   if (sscanf(ua->msg, "Hello %127s calling\n", name) != 1) {
+   if (sscanf(ua->msg, "Hello %127s calling %d", name, &ua_version) != 2 &&
+       sscanf(ua->msg, "Hello %127s calling", name) != 1) {
       ua->msg[100] = 0;               /* terminate string */
       Emsg4(M_ERROR, 0, _("UA Hello from %s:%s:%d is invalid. Got: %s\n"), ua->who(),
             ua->host(), ua->port(), ua->msg);
@@ -416,6 +416,7 @@ auth_done:
       sleep(5);
       return 0;
    }
-   ua->fsend(_("1000 OK: %s Version: %s (%s)\n"), my_name, VERSION, BDATE);
+   ua->fsend(_("1000 OK: %d %s Version: %s (%s)\n"),
+      DIR_VERSION, my_name, VERSION, BDATE);
    return 1;
 }
diff --git a/src/dird/autoprune.c b/src/dird/autoprune.c
index 7372687..01bef33 100644
--- a/src/dird/autoprune.c
+++ b/src/dird/autoprune.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -32,6 +20,7 @@
  *
  *     Kern Sibbald, May MMII
  *
+ *   Version $Id$
  */
 
 #include "bacula.h"
@@ -91,9 +80,10 @@ void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
    int i;
    dbid_list ids;
    struct del_ctx prune_list;
-   POOL_MEM query(PM_MESSAGE);
+   POOL_MEM query(PM_MESSAGE), changer(PM_MESSAGE);
    UAContext *ua;
    char ed1[50], ed2[100], ed3[50];
+
    POOL_DBR spr;
 
    Dmsg1(100, "Prune volumes PoolId=%d\n", jcr->jr.PoolId);
@@ -132,7 +122,7 @@ void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
    Dmsg1(100, "Scratch pool(s)=%s\n", ed2);
    /*
     * ed2 ends up with scratch poolid and current poolid or
-    *   just current poolid if there is no scratch pool 
+    *   just current poolid if there is no scratch pool
     */
    bstrncat(ed2, ed1, sizeof(ed2));
 
@@ -144,16 +134,13 @@ void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
         "(PoolId=%s OR RecyclePoolId IN (%s)) AND MediaType='%s' %s"
         "ORDER BY LastWritten ASC,MediaId";
 
+   set_storageid_in_mr(store, mr);
    if (InChanger) {
-      char changer[100];
-      /* Ensure it is in this autochanger */
-      bsnprintf(changer, sizeof(changer), "AND InChanger=1 AND StorageId=%s ",
-         edit_int64(mr->StorageId, ed3));
-      Mmsg(query, select, ed1, ed2, mr->MediaType, changer);
-   } else {
-      Mmsg(query, select, ed1, ed2, mr->MediaType, "");
+      Mmsg(changer, "AND InChanger=1 AND StorageId IN (%s) ", edit_int64(mr->StorageId, ed3));
    }
 
+   Mmsg(query, select, ed1, ed2, mr->MediaType, changer.c_str());
+
    Dmsg1(100, "query=%s\n", query.c_str());
    if (!db_get_query_dbids(ua->jcr, ua->db, query, ids)) {
       Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
@@ -188,10 +175,10 @@ void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
             prune_list.num_ids = 0;             /* reset count */
          }
          if (!is_volume_purged(ua, &lmr)) {
-            Dmsg1(050, "Vol=%s not pruned\n", lmr.VolumeName);
+            Dmsg1(100, "Vol=%s not pruned\n", lmr.VolumeName);
             continue;
          }
-         Dmsg1(050, "Vol=%s is purged\n", lmr.VolumeName);
+         Dmsg1(100, "Vol=%s is purged\n", lmr.VolumeName);
 
          /*
           * Since we are also pruning the Scratch pool, continue
@@ -200,10 +187,11 @@ void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
           */
          if (InChanger) {
             if (!lmr.InChanger || (lmr.StorageId != mr->StorageId)) {
-               Dmsg1(100, "Vol=%s not inchanger or correct StoreId\n", lmr.VolumeName);
+               Dmsg1(100, "Vol=%s not inchanger\n", lmr.VolumeName);
                continue;                  /* skip this volume, ie not loadable */
             }
          }
+
          if (!lmr.Recycle) {
             Dmsg1(100, "Vol=%s not recyclable\n", lmr.VolumeName);
             continue;
@@ -215,7 +203,7 @@ void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
          }
 
          /*
-          * If purged and not moved to another Pool, 
+          * If purged and not moved to another Pool,
           *   then we stop pruning and take this volume.
           */
          if (lmr.PoolId == mr->PoolId) {
diff --git a/src/dird/backup.c b/src/dird/backup.c
index 65d5803..89109f2 100644
--- a/src/dird/backup.c
+++ b/src/dird/backup.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -51,18 +39,28 @@ static char storaddr[]  = "storage address=%s port=%d ssl=%d\n";
 /* Responses received from File daemon */
 static char OKbackup[]   = "2000 OK backup\n";
 static char OKstore[]    = "2000 OK storage\n";
+/* Pre 17 Aug 2013 */
 static char EndJob[]     = "2800 End Job TermCode=%d JobFiles=%u "
-                           "ReadBytes=%llu JobBytes=%llu Errors=%u "  
+                           "ReadBytes=%llu JobBytes=%llu Errors=%u "
                            "VSS=%d Encrypt=%d\n";
 /* Pre 1.39.29 (04Dec06) EndJob */
 static char OldEndJob[]  = "2800 End Job TermCode=%d JobFiles=%u "
                            "ReadBytes=%llu JobBytes=%llu Errors=%u\n";
-/* 
+
+/* Commands sent to Storage daemon */
+static char clientaddr[] = "client address=%s port=%d ssl=%d\n";
+
+/* Commands received from Storage daemon */
+static char OKclient[]   = "3000 OK client command\n";
+
+/*
  * Called here before the job is run to do the job
  *   specific setup.
  */
 bool do_backup_init(JCR *jcr)
 {
+   /* Make local copy */
+   jcr->RescheduleIncompleteJobs = jcr->job->RescheduleIncompleteJobs;
 
    if (jcr->is_JobLevel(L_VIRTUAL_FULL)) {
       return do_vbackup_init(jcr);
@@ -73,7 +71,7 @@ bool do_backup_init(JCR *jcr)
       return false;
    }
 
-   /* 
+   /*
     * Get definitive Job level and since time
     */
    get_level_since_time(jcr, jcr->since, sizeof(jcr->since));
@@ -147,22 +145,22 @@ static int accurate_list_handler(void *ctx, int num_fields, char **row)
    if (job_canceled(jcr)) {
       return 1;
    }
-   
+
    if (row[2][0] == '0') {           /* discard when file_index == 0 */
       return 0;
    }
 
    /* sending with checksum */
-   if (jcr->use_accurate_chksum 
-       && num_fields == 7 
+   if (jcr->use_accurate_chksum
+       && num_fields == 7
        && row[6][0] /* skip checksum = '0' */
        && row[6][1])
-   { 
-      jcr->file_bsock->fsend("%s%s%c%s%c%s%c%s", 
-                             row[0], row[1], 0, row[4], 0, row[6], 0, row[5]); 
+   {
+      jcr->file_bsock->fsend("%s%s%c%s%c%s%c%s",
+                             row[0], row[1], 0, row[4], 0, row[6], 0, row[5]);
    } else {
-      jcr->file_bsock->fsend("%s%s%c%s%c%c%s", 
-                             row[0], row[1], 0, row[4], 0, 0, row[5]); 
+      jcr->file_bsock->fsend("%s%s%c%s%c%c%s",
+                             row[0], row[1], 0, row[4], 0, 0, row[5]);
    }
    return 0;
 }
@@ -183,13 +181,13 @@ static bool is_checksum_needed_by_fileset(JCR *jcr)
    }
 
    f = jcr->job->fileset;
-   
+
    for (int i=0; i < f->num_includes; i++) { /* Parse all Include {} */
       inc = f->include_items[i];
-      
+
       for (int j=0; j < inc->num_opts; j++) { /* Parse all Options {} */
          fopts = inc->opts_list[j];
-         
+
          for (char *k=fopts->opts; *k ; k++) { /* Try to find one request */
             switch (*k) {
             case 'V':           /* verify */
@@ -222,7 +220,7 @@ static bool is_checksum_needed_by_fileset(JCR *jcr)
    if (!have_basejob_option && jcr->HasBase) {
       return true;
    }
-   
+
    Dmsg0(50, "Checksum will be sent to FD\n");
    return false;
 }
@@ -240,12 +238,12 @@ bool send_accurate_current_files(JCR *jcr)
    POOL_MEM buf;
    db_list_ctx jobids;
    db_list_ctx nb;
+   char ed1[50];
 
-   /* In base level, no previous job is used and no restart incomplete jobs */
    if (jcr->is_canceled() || jcr->is_JobLevel(L_BASE)) {
       return true;
    }
-   if (!jcr->accurate) {
+   if (!jcr->accurate && !jcr->rerunning) {
       return true;
    }
 
@@ -254,7 +252,7 @@ bool send_accurate_current_files(JCR *jcr)
       if (get_base_jobids(jcr, &jobids)) {
          jcr->HasBase = true;
          Jmsg(jcr, M_INFO, 0, _("Using BaseJobId(s): %s\n"), jobids.list);
-      } else {
+      } else if (!jcr->rerunning) {
          return true;
       }
    } else {
@@ -268,42 +266,150 @@ bool send_accurate_current_files(JCR *jcr)
       }
    }
 
+   if (jcr->rerunning) {
+      edit_int64(jcr->JobId, ed1);
+      jobids.add(ed1);
+   }
+
    /* Don't send and store the checksum if fileset doesn't require it */
    jcr->use_accurate_chksum = is_checksum_needed_by_fileset(jcr);
 
    if (jcr->JobId) {            /* display the message only for real jobs */
-      Jmsg(jcr, M_INFO, 0, _("Sending Accurate information.\n"));
+      Jmsg(jcr, M_INFO, 0, _("Sending Accurate information to the FD.\n"));
    }
 
    /* to be able to allocate the right size for htable */
    Mmsg(buf, "SELECT sum(JobFiles) FROM Job WHERE JobId IN (%s)", jobids.list);
    db_sql_query(jcr->db, buf.c_str(), db_list_handler, &nb);
    Dmsg2(200, "jobids=%s nb=%s\n", jobids.list, nb.list);
-   jcr->file_bsock->fsend("accurate files=%s\n", nb.list); 
+   jcr->file_bsock->fsend("accurate files=%s\n", nb.list);
 
    if (!db_open_batch_connexion(jcr, jcr->db)) {
       Jmsg0(jcr, M_FATAL, 0, "Can't get batch sql connexion");
       return false;  /* Fail */
    }
-   
+
    if (jcr->HasBase) {
       jcr->nb_base_files = str_to_int64(nb.list);
-      db_create_base_file_list(jcr, jcr->db, jobids.list);
-      db_get_base_file_list(jcr, jcr->db, jcr->use_accurate_chksum,
-                            accurate_list_handler, (void *)jcr);
+      if (!db_create_base_file_list(jcr, jcr->db, jobids.list)) {
+         Jmsg1(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+         return false;
+      }
+      if (!db_get_base_file_list(jcr, jcr->db, jcr->use_accurate_chksum,
+                            accurate_list_handler, (void *)jcr)) {
+         Jmsg1(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+         return false;
+      }
 
    } else {
-      db_get_file_list(jcr, jcr->db_batch,
+      if (!db_get_file_list(jcr, jcr->db_batch,
                        jobids.list, jcr->use_accurate_chksum, false /* no delta */,
-                       accurate_list_handler, (void *)jcr);
-   } 
+                       accurate_list_handler, (void *)jcr)) {
+         Jmsg1(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+         return false;
+      }
+   }
 
    /* TODO: close the batch connection ? (can be used very soon) */
-
    jcr->file_bsock->signal(BNET_EOD);
    return true;
 }
 
+bool send_store_addr_to_fd(JCR *jcr, STORE *store,
+                           char *store_address, uint32_t store_port)
+{
+   int tls_need = BNET_TLS_NONE;
+
+   /* TLS Requirement */
+   if (store->tls_enable) {
+      if (store->tls_require) {
+         tls_need = BNET_TLS_REQUIRED;
+      } else {
+         tls_need = BNET_TLS_OK;
+      }
+   }
+
+   /*
+    * Send Storage address to the FD
+    */
+   jcr->file_bsock->fsend(storaddr, store_address, store_port, tls_need);
+   if (!response(jcr, jcr->file_bsock, OKstore, "Storage", DISPLAY_ERROR)) {
+      return false;
+   }
+   return true;
+}
+
+bool send_client_addr_to_sd(JCR *jcr)
+{
+   int tls_need = BNET_TLS_NONE;
+   BSOCK *sd = jcr->store_bsock;
+
+   /* TLS Requirement for the client */
+   if (jcr->client->tls_enable) {
+      if (jcr->client->tls_require) {
+         tls_need = BNET_TLS_REQUIRED;
+      } else {
+         tls_need = BNET_TLS_OK;
+      }
+   }
+   /*
+    * Send Client address to the SD
+    */
+   sd->fsend(clientaddr, jcr->client->address, jcr->client->FDport, tls_need);
+   if (!response(jcr, sd, OKclient, "Client", DISPLAY_ERROR)) {
+      return false;
+   }
+   return true;
+}
+
+/*
+ * Allow to specify the address used by the Client to
+ * connect to the storage daemon in the Client resource
+ * or in the Storage resource.
+ */
+char *get_storage_address(CLIENT *client, STORE *store)
+{
+   char *store_address;
+
+   if (client && client->fd_storage_address) {
+      Dmsg0(10, "Using Client resource FD Storage Address to contact the Storage\n");
+      store_address = client->fd_storage_address;
+
+   } else if (store->fd_storage_address) {
+      Dmsg0(10, "Using Storage resource FD Storage Address to contact the Storage\n");
+      store_address = store->fd_storage_address;
+
+   } else {
+      Dmsg0(10, "Using default Storage address\n");
+      store_address = store->address;
+   }
+   return store_address;
+}
+
+bool run_storage_and_start_message_thread(JCR *jcr, BSOCK *sd)
+{
+   /*
+    * Start the job prior to starting the message thread below
+    * to avoid two threads from using the BSOCK structure at
+    * the same time.
+    */
+   if (!sd->fsend("run")) {
+      return false;
+   }
+
+   /*
+    * Now start a Storage daemon message thread.  Note,
+    *   this thread is used to provide the catalog services
+    *   for the backup job, including inserting the attributes
+    *   into the catalog.  See catalog_update() in catreq.c
+    */
+   if (!start_storage_daemon_message_thread(jcr)) {
+      return false;
+   }
+   Dmsg0(150, "Storage daemon connection OK\n");
+   return true;
+}
+
 /*
  * Do a backup of the specified FileSet
  *
@@ -313,9 +419,10 @@ bool send_accurate_current_files(JCR *jcr)
 bool do_backup(JCR *jcr)
 {
    int stat;
-   int tls_need = BNET_TLS_NONE;
-   BSOCK   *fd;
+   BSOCK   *fd, *sd;
    STORE *store;
+   char *store_address;
+   uint32_t store_port;
    char ed1[100];
    db_int64_ctx job;
    POOL_MEM buf;
@@ -326,7 +433,7 @@ bool do_backup(JCR *jcr)
 
    /* Print Job Start message */
    Jmsg(jcr, M_INFO, 0, _("Start Backup JobId %s, Job=%s\n"),
-        edit_uint64(jcr->JobId, ed1), jcr->Job);
+           edit_uint64(jcr->JobId, ed1), jcr->Job);
 
    jcr->setJobStatus(JS_Running);
    Dmsg2(100, "JobId=%d JobLevel=%c\n", jcr->jr.JobId, jcr->jr.JobLevel);
@@ -335,6 +442,7 @@ bool do_backup(JCR *jcr)
       return false;
    }
 
+
    /*
     * Open a message channel connection with the Storage
     * daemon. This is to let him know that our client
@@ -355,27 +463,19 @@ bool do_backup(JCR *jcr)
    if (!start_storage_daemon_job(jcr, NULL, jcr->wstorage)) {
       return false;
    }
-
-   /*
-    * Start the job prior to starting the message thread below
-    * to avoid two threads from using the BSOCK structure at
-    * the same time.
-    */
-   if (!jcr->store_bsock->fsend("run")) {
-      return false;
+   sd = jcr->store_bsock;
+   if (jcr->client) {
+      jcr->sd_calls_client = jcr->client->sd_calls_client;
    }
-
    /*
-    * Now start a Storage daemon message thread.  Note,
-    *   this thread is used to provide the catalog services
-    *   for the backup job, including inserting the attributes
-    *   into the catalog.  See catalog_update() in catreq.c
+    * Note startup sequence of SD/FD is different depending on
+    *  whether the SD listens (normal) or the SD calls the FD.
     */
-   if (!start_storage_daemon_message_thread(jcr)) {
-      return false;
+   if (!jcr->sd_calls_client) {
+      if (!run_storage_and_start_message_thread(jcr, sd)) {
+         goto bail_out;
+      }
    }
-   Dmsg0(150, "Storage daemon connection OK\n");
-
    jcr->setJobStatus(JS_WaitFD);
    if (!connect_to_file_daemon(jcr, 10, FDConnectTimeout, 1)) {
       goto bail_out;
@@ -396,25 +496,47 @@ bool do_backup(JCR *jcr)
       goto bail_out;
    }
 
-   /*
-    * send Storage daemon address to the File daemon
-    */
-   store = jcr->wstore;
-   if (store->SDDport == 0) {
-      store->SDDport = store->SDport;
+   /* TODO: See priority with bandwidth parameter */
+   if (jcr->job->max_bandwidth > 0) {
+      jcr->max_bandwidth = jcr->job->max_bandwidth;
+   } else if (jcr->client->max_bandwidth > 0) {
+      jcr->max_bandwidth = jcr->client->max_bandwidth;
    }
 
-   /* TLS Requirement */
-   if (store->tls_enable) {
-      if (store->tls_require) {
-         tls_need = BNET_TLS_REQUIRED;
-      } else {
-         tls_need = BNET_TLS_OK;
+   if (jcr->max_bandwidth > 0) {
+      send_bwlimit(jcr, jcr->Job); /* Old clients don't have this command */
+   }
+
+   store = jcr->wstore;
+
+   if (jcr->sd_calls_client) {
+      if (jcr->FDVersion < 5) {
+         Jmsg(jcr, M_FATAL, 0, _("The File daemon does not support SDCallsClient.\n"));
+         goto bail_out;
+      }
+      if (!send_client_addr_to_sd(jcr)) {
+         goto bail_out;
+      }
+
+      if (!run_storage_and_start_message_thread(jcr, sd)) {
+         goto bail_out;
+      }
+
+      store_address = jcr->wstore->address;  /* dummy */
+      store_port = 0;           /* flag that SD calls FD */
+   } else {
+      /*
+       * send Storage daemon address to the File daemon
+       */
+      if (store->SDDport == 0) {
+         store->SDDport = store->SDport;
       }
+
+      store_address = get_storage_address(jcr->client, store);
+      store_port = store->SDDport;
    }
 
-   fd->fsend(storaddr, store->address, store->SDDport, tls_need);
-   if (!response(jcr, fd, OKstore, "Storage", DISPLAY_ERROR)) {
+   if (!send_store_addr_to_fd(jcr, store, store_address, store_port)) {
       goto bail_out;
    }
 
@@ -426,14 +548,14 @@ bool do_backup(JCR *jcr)
       goto bail_out;
    }
 
-   /*    
+   /*
     * We re-update the job start record so that the start
-    *  time is set after the run before job.  This avoids 
+    *  time is set after the run before job.  This avoids
     *  that any files created by the run before job will
     *  be saved twice.  They will be backed up in the current
     *  job, but not in the next one unless they are changed.
     *  Without this, they will be backed up in this job and
-    *  in the next job run because in that case, their date 
+    *  in the next job run because in that case, their date
     *   is after the start of this run.
     */
    jcr->start_time = time(NULL);
@@ -461,14 +583,15 @@ bool do_backup(JCR *jcr)
    stat = wait_for_job_termination(jcr);
    db_write_batch_file_records(jcr);    /* used by bulk batch file insert */
 
-   if (jcr->HasBase && !db_commit_base_file_attributes_record(jcr, jcr->db))  {
-      Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+   if (jcr->HasBase) {
+      db_commit_base_file_attributes_record(jcr, jcr->db);
+      /* Any error already printed */
    }
 
-   if (stat == JS_Terminated) {
+   if (!jcr->is_canceled() && stat == JS_Terminated) {
       backup_cleanup(jcr, stat);
       return true;
-   }     
+   }
    return false;
 
 /* Come here only after starting SD thread */
@@ -501,16 +624,14 @@ int wait_for_job_termination(JCR *jcr, int timeout)
    int Encrypt = 0;
    btimer_t *tid=NULL;
 
-   jcr->setJobStatus(JS_Running);
-
    if (fd) {
       if (timeout) {
          tid = start_bsock_timer(fd, timeout); /* TODO: New timeout directive??? */
       }
       /* Wait for Client to terminate */
       while ((n = bget_dirmsg(fd)) >= 0) {
-         if (!fd_ok && 
-             (sscanf(fd->msg, EndJob, &jcr->FDJobStatus, &JobFiles,
+         if (!fd_ok &&
+              (sscanf(fd->msg, EndJob, &jcr->FDJobStatus, &JobFiles,
                      &ReadBytes, &JobBytes, &JobErrors, &VSS, &Encrypt) == 7 ||
               sscanf(fd->msg, OldEndJob, &jcr->FDJobStatus, &JobFiles,
                      &ReadBytes, &JobBytes, &JobErrors) == 5)) {
@@ -529,20 +650,19 @@ int wait_for_job_termination(JCR *jcr, int timeout)
          stop_bsock_timer(tid);
       }
 
-      if (is_bnet_error(fd)) {
+      if (fd->is_error() && jcr->getJobStatus() != JS_Canceled) {
          int i = 0;
          Jmsg(jcr, M_FATAL, 0, _("Network error with FD during %s: ERR=%s\n"),
               job_type_to_str(jcr->getJobType()), fd->bstrerror());
-         while (i++ < 10 && jcr->job->RescheduleIncompleteJobs && jcr->is_canceled()) {
+         while (i++ < 20 && jcr->job->RescheduleIncompleteJobs && jcr->is_canceled()) {
             bmicrosleep(3, 0);
          }
-            
       }
       fd->signal(BNET_TERMINATE);   /* tell Client we are terminating */
    }
 
    /*
-    * Force cancel in SD if failing, but not for Incomplete jobs
+    * Force cancel in SD if failing,
     *  so that we let the SD despool.
     */
    Dmsg5(100, "cancel=%d fd_ok=%d FDJS=%d JS=%d SDJS=%d\n", jcr->is_canceled(), fd_ok, jcr->FDJobStatus,
@@ -565,16 +685,17 @@ int wait_for_job_termination(JCR *jcr, int timeout)
       jcr->JobWarnings = JobWarnings;
       jcr->VSS = VSS;
       jcr->Encrypt = Encrypt;
-   } else {
+   } else if (jcr->getJobStatus() != JS_Canceled) {
       Jmsg(jcr, M_FATAL, 0, _("No Job status returned from FD.\n"));
    }
 
-// Dmsg4(100, "fd_ok=%d FDJS=%d JS=%d SDJS=%d\n", fd_ok, jcr->FDJobStatus,
-//   jcr->JobStatus, jcr->SDJobStatus);
-
    /* Return the first error status we find Dir, FD, or SD */
-   if (!fd_ok || is_bnet_error(fd)) { /* if fd not set, that use !fd_ok */
-      jcr->FDJobStatus = JS_ErrorTerminated;
+   if (!fd_ok || fd->is_error()) { /* if fd not set, that use !fd_ok */
+      if (jcr->getJobStatus() == JS_Canceled) {
+         jcr->FDJobStatus = JS_Canceled;
+      } else {
+         jcr->FDJobStatus = JS_ErrorTerminated;
+      }
    }
    if (jcr->JobStatus != JS_Terminated) {
       return jcr->JobStatus;
@@ -591,16 +712,18 @@ int wait_for_job_termination(JCR *jcr, int timeout)
 void backup_cleanup(JCR *jcr, int TermCode)
 {
    char sdt[50], edt[50], schedt[50];
-   char ec1[30], ec2[30], ec3[30], ec4[30], ec5[30], compress[50];
+   char ec1[30], ec2[30], ec3[30], ec4[30], ec5[30];
    char ec6[30], ec7[30], ec8[30], elapsed[50];
+   char data_compress[200];
    char term_code[100], fd_term_msg[100], sd_term_msg[100];
    const char *term_msg;
    int msg_type = M_INFO;
    MEDIA_DBR mr;
    CLIENT_DBR cr;
-   double kbps, compression;
+   double kbps, compression, ratio;
    utime_t RunTime;
    POOL_MEM base_info;
+   POOL_MEM vol_info;
 
    if (jcr->is_JobLevel(L_VIRTUAL_FULL)) {
       vbackup_cleanup(jcr, TermCode);
@@ -616,12 +739,12 @@ void backup_cleanup(JCR *jcr, int TermCode)
     * JS_Terminated almost everywhere instead of (JS_Terminated || JS_Warning)
     * as we do with is_canceled()
     */
-   if (jcr->getJobStatus() == JS_Terminated && 
+   if (jcr->getJobStatus() == JS_Terminated &&
         (jcr->JobErrors || jcr->SDErrors || jcr->JobWarnings)) {
       TermCode = JS_Warnings;
    }
 #endif
-         
+
    update_job_end(jcr, TermCode);
 
    if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
@@ -653,9 +776,6 @@ void backup_cleanup(JCR *jcr, int TermCode)
             term_msg = _("Backup OK");
          }
          break;
-      case JS_Incomplete:
-         term_msg = _("Backup failed -- incomplete");
-         break;
       case JS_Warnings:
          term_msg = _("Backup OK -- with warnings");
          break;
@@ -665,7 +785,7 @@ void backup_cleanup(JCR *jcr, int TermCode)
          msg_type = M_ERROR;          /* Generate error message */
          if (jcr->store_bsock) {
             jcr->store_bsock->signal(BNET_TERMINATE);
-            if (jcr->SD_msg_chan) {
+            if (jcr->SD_msg_chan_started) {
                pthread_cancel(jcr->SD_msg_chan);
             }
          }
@@ -674,7 +794,7 @@ void backup_cleanup(JCR *jcr, int TermCode)
          term_msg = _("Backup Canceled");
          if (jcr->store_bsock) {
             jcr->store_bsock->signal(BNET_TERMINATE);
-            if (jcr->SD_msg_chan) {
+            if (jcr->SD_msg_chan_started) {
                pthread_cancel(jcr->SD_msg_chan);
             }
          }
@@ -707,25 +827,35 @@ void backup_cleanup(JCR *jcr, int TermCode)
    }
 
    if (jcr->ReadBytes == 0) {
-      bstrncpy(compress, "None", sizeof(compress));
+      bstrncpy(data_compress, "None", sizeof(data_compress));
    } else {
       compression = (double)100 - 100.0 * ((double)jcr->JobBytes / (double)jcr->ReadBytes);
       if (compression < 0.5) {
-         bstrncpy(compress, "None", sizeof(compress));
+         bstrncpy(data_compress, "None", sizeof(data_compress));
       } else {
-         bsnprintf(compress, sizeof(compress), "%.1f %%", compression);
+         if (jcr->JobBytes > 0) {
+            ratio = (double)jcr->ReadBytes / (double)jcr->JobBytes;
+         } else {
+            ratio = 1.0;
+         }
+         bsnprintf(data_compress, sizeof(data_compress), "%.1f%% %.1f:1",
+            compression, ratio);
       }
    }
    jobstatus_to_ascii(jcr->FDJobStatus, fd_term_msg, sizeof(fd_term_msg));
    jobstatus_to_ascii(jcr->SDJobStatus, sd_term_msg, sizeof(sd_term_msg));
 
    if (jcr->HasBase) {
-      Mmsg(base_info, "  Base files/Used files:  %lld/%lld (%.2f%%)\n",
-           jcr->nb_base_files, 
-           jcr->nb_base_files_used, 
+      Mmsg(base_info, _("  Base files/Used files:  %lld/%lld (%.2f%%)\n"),
+           jcr->nb_base_files,
+           jcr->nb_base_files_used,
            jcr->nb_base_files_used*100.0/jcr->nb_base_files);
    }
-// bmicrosleep(15, 0);                /* for debugging SIGHUP */
+   /* Edit string for last volume size */
+   Mmsg(vol_info, _("%s (%sB)"),
+        edit_uint64_with_commas(mr.VolBytes, ec7),
+        edit_uint64_with_suffix(mr.VolBytes, ec8));
+
 
    Jmsg(jcr, msg_type, 0, _("%s %s %s (%s):\n"
 "  Build OS:               %s %s %s\n"
@@ -755,7 +885,7 @@ void backup_cleanup(JCR *jcr, int TermCode)
 "  Volume name(s):         %s\n"
 "  Volume Session Id:      %d\n"
 "  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
+"  Last Volume Bytes:      %s\n"
 "  Non-fatal FD errors:    %d\n"
 "  SD Errors:              %d\n"
 "  FD termination status:  %s\n"
@@ -783,7 +913,7 @@ void backup_cleanup(JCR *jcr, int TermCode)
         edit_uint64_with_commas(jcr->SDJobBytes, ec5),
         edit_uint64_with_suffix(jcr->SDJobBytes, ec6),
         kbps,
-        compress,
+        data_compress,
         base_info.c_str(),
         jcr->VSS?_("yes"):_("no"),
         jcr->Encrypt?_("yes"):_("no"),
@@ -791,8 +921,7 @@ void backup_cleanup(JCR *jcr, int TermCode)
         jcr->VolumeName,
         jcr->VolSessionId,
         jcr->VolSessionTime,
-        edit_uint64_with_commas(mr.VolBytes, ec7),
-        edit_uint64_with_suffix(mr.VolBytes, ec8),
+        vol_info.c_str(),
         jcr->JobErrors,
         jcr->SDErrors,
         fd_term_msg,
@@ -849,7 +978,7 @@ void update_bootstrap_file(JCR *jcr)
             }
             fprintf(fd, "VolSessionId=%u\n", jcr->VolSessionId);
             fprintf(fd, "VolSessionTime=%u\n", jcr->VolSessionTime);
-            fprintf(fd, "VolAddr=%s-%s\n", 
+            fprintf(fd, "VolAddr=%s-%s\n",
                     edit_uint64(VolParams[i].StartAddr, ed1),
                     edit_uint64(VolParams[i].EndAddr, ed2));
             fprintf(fd, "FileIndex=%d-%d\n", VolParams[i].FirstIndex,
diff --git a/src/dird/bacula-dir.conf.in b/src/dird/bacula-dir.conf.in
index 9b79d46..2b469c0 100644
--- a/src/dird/bacula-dir.conf.in
+++ b/src/dird/bacula-dir.conf.in
@@ -18,7 +18,7 @@ Director {                            # define myself
   QueryFile = "@scriptdir@/query.sql"
   WorkingDirectory = "@working_dir@"
   PidDirectory = "@piddir@"
-  Maximum Concurrent Jobs = 1
+  Maximum Concurrent Jobs = 20
   Password = "@dir_password@"         # Console password
   Messages = Daemon
 }
@@ -27,12 +27,13 @@ JobDefs {
   Name = "DefaultJob"
   Type = Backup
   Level = Incremental
-  Client = @basename at -fd 
+  Client = @basename at -fd
   FileSet = "Full Set"
   Schedule = "WeeklyCycle"
-  Storage = File
+  Storage = File1
   Messages = Standard
   Pool = File
+  SpoolAttributes = yes
   Priority = 10
   Write Bootstrap = "@working_dir@/%c.bsr"
 }
@@ -52,6 +53,16 @@ Job {
 #  JobDefs = "DefaultJob"
 #}
 
+#Job {
+#  Name = "BackupClient1-to-Tape"
+#  JobDefs = "DefaultJob"
+#  Storage = LTO-4
+#  Spool Data = yes    # Avoid shoe-shine
+#  Pool = Default
+#}
+
+#}
+
 # Backup the catalog database (after the nightly save)
 Job {
   Name = "BackupCatalog"
@@ -76,10 +87,10 @@ Job {
 Job {
   Name = "RestoreFiles"
   Type = Restore
-  Client=@basename at -fd                 
-  FileSet="Full Set"                  
-  Storage = File                      
-  Pool = Default
+  Client=@basename at -fd
+  FileSet="Full Set"
+  Storage = File1
+  Pool = File
   Messages = Standard
   Where = @archivedir@/bacula-restores
 }
@@ -92,7 +103,7 @@ FileSet {
     Options {
       signature = MD5
     }
-#    
+#
 #  Put your list of files here, preceded by 'File =', one per line
 #    or include an external list with:
 #
@@ -118,6 +129,7 @@ FileSet {
     File = @archivedir@
     File = /proc
     File = /tmp
+    File = /sys
     File = /.journal
     File = /.fsck
   }
@@ -158,7 +170,7 @@ Client {
   FDPort = @fd_port@
   Catalog = MyCatalog
   Password = "@fd_password@"          # password for FileDaemon
-  File Retention = 30 days            # 30 days
+  File Retention = 60 days            # 60 days
   Job Retention = 6 months            # six months
   AutoPrune = yes                     # Prune expired Jobs/Files
 }
@@ -168,70 +180,57 @@ Client {
 #  You should change Name, Address, and Password before using
 #
 #Client {
-#  Name = @basename at 2-fd                
+#  Name = @basename at 2-fd
 #  Address = @hostname at 2
 #  FDPort = @fd_port@
 #  Catalog = MyCatalog
-#  Password = "@fd_password at 2"         # password for FileDaemon 2
-#  File Retention = 30 days            # 30 days
-#  Job Retention = 6 months            # six months
-#  AutoPrune = yes                     # Prune expired Jobs/Files
+#  Password = "@fd_password at 2"        # password for FileDaemon 2
+#  File Retention = 60 days           # 60 days
+#  Job Retention = 6 months           # six months
+#  AutoPrune = yes                    # Prune expired Jobs/Files
 #}
 
 
-# Definition of file storage device
+# Definition of file Virtual Autochanger device
 Storage {
-  Name = File
-# Do not use "localhost" here    
+  Name = File1
+# Do not use "localhost" here
   Address = @hostname@                # N.B. Use a fully qualified name here
   SDPort = @sd_port@
   Password = "@sd_password@"
-  Device = FileStorage
-  Media Type = File
+  Device = FileChgr1
+  Media Type = File1
+  Maximum Concurrent Jobs = 10        # run up to 10 jobs a the same time
 }
 
+# Definition of a second file Virtual Autochanger device
+#   Possibly pointing to a different disk drive
+Storage {
+  Name = File2
+# Do not use "localhost" here
+  Address = @hostname@                # N.B. Use a fully qualified name here
+  SDPort = @sd_port@
+  Password = "@sd_password@"
+  Device = FileChgr2
+  Media Type = File2
+  Maximum Concurrent Jobs = 10        # run up to 10 jobs a the same time
+}
 
-
-# Definition of DDS tape storage device
-#Storage {
-#  Name = DDS-4    
-#  Do not use "localhost" here
-#  Address = @hostname@                # N.B. Use a fully qualified name here
-#  SDPort = @sd_port@
-#  Password = "@sd_password@"          # password for Storage daemon
-#  Device = DDS-4                      # must be same as Device in Storage daemon
-#  Media Type = DDS-4                  # must be same as MediaType in Storage daemon
-#  Autochanger = yes                   # enable for autochanger device
-#}
-
-# Definition of 8mm tape storage device
-#Storage {
-#  Name = "8mmDrive"
-#  Do not use "localhost" here
-#  Address = @hostname@                # N.B. Use a fully qualified name here
-#  SDPort = @sd_port@
-#  Password = "@sd_password@"
-#  Device = "Exabyte 8mm"
-#  MediaType = "8mm"
-#}
-
-# Definition of DVD storage device
+# Definition of LTO-4 tape Autochanger device
 #Storage {
-#  Name = "DVD"
+#  Name = LTO-4
 #  Do not use "localhost" here
-#  Address = @hostname@                # N.B. Use a fully qualified name here
+#  Address = @hostname@               # N.B. Use a fully qualified name here
 #  SDPort = @sd_port@
-#  Password = "@sd_password@"
-#  Device = "DVD Writer"
-#  MediaType = "DVD"
+#  Password = "@sd_password@"         # password for Storage daemon
+#  Device = LTO-4                     # must be same as Device in Storage daemon
+#  Media Type = LTO-4                 # must be same as MediaType in Storage daemon
+#  Maximum Concurrent Jobs = 10
 #}
 
-
 # Generic catalog service
 Catalog {
   Name = MyCatalog
-# Uncomment the following line if you want the dbi driver
- at uncomment_dbi@ dbdriver = "dbi:@DEFAULT_DB_TYPE@"; dbaddress = 127.0.0.1; dbport = @db_port@
   dbname = "@db_name@"; dbuser = "@db_user@"; dbpassword = "@db_password@"
 }
 
@@ -246,14 +245,14 @@ Messages {
 #  What this does is, it sets the email address that emails would display
 #  in the FROM field, which is by default the same email as they're being
 #  sent to.  However, if you send email to more than one address, then
-#  you'll have to set the FROM address manually, to a single address. 
+#  you'll have to set the FROM address manually, to a single address.
 #  for example, a 'no-reply at mydomain.com', is better since that tends to
 #  tell (most) people that its coming from an automated source.
 
 #
   mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
   operatorcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
-  mail = @job_email@ = all, !skipped            
+  mail = @job_email@ = all, !skipped
   operator = @job_email@ = mount
   console = all, !skipped, !saved
 #
@@ -271,7 +270,7 @@ Messages {
 Messages {
   Name = Daemon
   mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
-  mail = @job_email@ = all, !skipped            
+  mail = @job_email@ = all, !skipped
   console = all, !skipped, !saved
   append = "@logdir@/bacula.log" = all, !skipped
 }
@@ -283,6 +282,8 @@ Pool {
   Recycle = yes                       # Bacula can automatically recycle Volumes
   AutoPrune = yes                     # Prune expired volumes
   Volume Retention = 365 days         # one year
+  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
+  Maximum Volumes = 100               # Limit number of Volumes in Pool
 }
 
 # File Pool definition
@@ -294,6 +295,7 @@ Pool {
   Volume Retention = 365 days         # one year
   Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
   Maximum Volumes = 100               # Limit number of Volumes in Pool
+  Label Format = "Vol-"               # Auto label
 }
 
 
diff --git a/src/dird/bsr.c b/src/dird/bsr.c
index 63d85b8..97d1607 100644
--- a/src/dird/bsr.c
+++ b/src/dird/bsr.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -62,7 +50,7 @@ static void free_findex(RBSR_FINDEX *fi)
    }
 }
 
-/* 
+/*
  * Get storage device name from Storage resource
  */
 static bool get_storage_device(char *device, char *storage)
@@ -71,7 +59,7 @@ static bool get_storage_device(char *device, char *storage)
    if (storage[0] == 0) {
       return false;
    }
-   store = (STORE *)GetResWithName(R_STORAGE, storage);    
+   store = (STORE *)GetResWithName(R_STORAGE, storage);
    if (!store) {
       return false;
    }
@@ -200,7 +188,7 @@ static void make_unique_restore_filename(UAContext *ua, POOL_MEM &fname)
    JCR *jcr = ua->jcr;
    int i = find_arg_with_value(ua, "bootstrap");
    if (i >= 0) {
-      Mmsg(fname, "%s", ua->argv[i]);              
+      Mmsg(fname, "%s", ua->argv[i]);
       jcr->unlink_bsr = false;
    } else {
       P(mutex);
@@ -249,7 +237,7 @@ uint32_t write_bsr_file(UAContext *ua, RESTORE_CTX &rx)
 
    ua->send_msg(_("Bootstrap records written to %s\n"), fname.c_str());
 
-   if (debug_level >= 10) {
+   if (chk_dbglvl(10)) {
       print_bsr(ua, rx);
    }
 
@@ -279,7 +267,7 @@ static void display_vol_info(UAContext *ua, RESTORE_CTX &rx, JobId_t JobId)
             } else {
                online = ' ';
             }
-            Mmsg(volmsg, "%c%-25s %-25s %-25s", 
+            Mmsg(volmsg, "%c%-25s %-25s %-25s",
                  online, bsr->VolParams[i].VolumeName,
                  bsr->VolParams[i].Storage, Device);
             add_prompt(ua, volmsg.c_str());
@@ -295,7 +283,7 @@ void display_bsr_info(UAContext *ua, RESTORE_CTX &rx)
 
    /* Tell the user what he will need to mount */
    ua->send_msg("\n");
-   ua->send_msg(_("The job will require the following\n"
+   ua->send_msg(_("The Job will require the following (*=>InChanger):\n"
                   "   Volume(s)                 Storage(s)                SD Device(s)\n"
                   "===========================================================================\n"));
    /* Create Unique list of Volumes using prompt list */
@@ -312,11 +300,12 @@ void display_bsr_info(UAContext *ua, RESTORE_CTX &rx)
    for (int i=0; i < ua->num_prompts; i++) {
       ua->send_msg("   %s\n", ua->prompt[i]);
       free(ua->prompt[i]);
+      if (ua->unique[i]) free(ua->unique[i]);
    }
    if (ua->num_prompts == 0) {
       ua->send_msg(_("No Volumes found to restore.\n"));
    } else {
-      ua->send_msg(_("\nVolumes marked with \"*\" are online.\n"));
+      ua->send_msg(_("\nVolumes marked with \"*\" are in the Autochanger.\n"));
    }
    ua->num_prompts = 0;
    ua->send_msg("\n");
@@ -327,7 +316,7 @@ void display_bsr_info(UAContext *ua, RESTORE_CTX &rx)
 /*
  * Write bsr data for a single bsr record
  */
-static uint32_t write_bsr_item(RBSR *bsr, UAContext *ua, 
+static uint32_t write_bsr_item(RBSR *bsr, UAContext *ua,
                    RESTORE_CTX &rx, FILE *fd, bool &first, uint32_t &LastIndex)
 {
    char ed1[50], ed2[50];
@@ -392,7 +381,7 @@ static uint32_t write_bsr_item(RBSR *bsr, UAContext *ua,
  * Here we actually write out the details of the bsr file.
  *  Note, there is one bsr for each JobId, but the bsr may
  *  have multiple volumes, which have been entered in the
- *  order they were written.  
+ *  order they were written.
  * The bsrs must be written out in the order the JobIds
  *  are found in the jobid list.
  */
@@ -562,7 +551,7 @@ void add_findex_all(RBSR *bsr, uint32_t JobId)
          nbsr->next->JobId = JobId;
 
          /* If we use regexp to restore, set it for each jobid */
-         if (bsr->fileregex) { 
+         if (bsr->fileregex) {
             nbsr->next->fileregex = bstrdup(bsr->fileregex);
          }
 
diff --git a/src/dird/bsr.h b/src/dird/bsr.h
index 2785908..1844646 100644
--- a/src/dird/bsr.h
+++ b/src/dird/bsr.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
diff --git a/src/dird/catreq.c b/src/dird/catreq.c
index 0cf0b6d..5e4c663 100644
--- a/src/dird/catreq.c
+++ b/src/dird/catreq.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -54,7 +42,7 @@ static char Get_Vol_Info[] = "CatReq Job=%127s GetVolInfo VolName=%127s write=%d
 
 static char Update_media[] = "CatReq Job=%127s UpdateMedia VolName=%s"
    " VolJobs=%u VolFiles=%u VolBlocks=%u VolBytes=%lld VolMounts=%u"
-   " VolErrors=%u VolWrites=%u MaxVolBytes=%lld EndTime=%lld VolStatus=%10s"
+   " VolErrors=%u VolWrites=%lld MaxVolBytes=%lld EndTime=%lld VolStatus=%10s"
    " Slot=%d relabel=%d InChanger=%d VolReadTime=%lld VolWriteTime=%lld"
    " VolFirstWritten=%lld VolParts=%u\n";
 
@@ -65,11 +53,12 @@ static char Create_job_media[] = "CatReq Job=%127s CreateJobMedia "
 
 /* Responses  sent to Storage daemon */
 static char OK_media[] = "1000 OK VolName=%s VolJobs=%u VolFiles=%u"
-   " VolBlocks=%u VolBytes=%s VolMounts=%u VolErrors=%u VolWrites=%u"
+   " VolBlocks=%u VolBytes=%s"
+   " VolMounts=%u VolErrors=%u VolWrites=%s"
    " MaxVolBytes=%s VolCapacityBytes=%s VolStatus=%s Slot=%d"
    " MaxVolJobs=%u MaxVolFiles=%u InChanger=%d VolReadTime=%s"
    " VolWriteTime=%s EndFile=%u EndBlock=%u VolParts=%u LabelType=%d"
-   " MediaId=%s\n";
+   " MediaId=%s ScratchPoolId=%s\n";
 
 static char OK_create[] = "1000 OK CreateJobMedia\n";
 
@@ -77,24 +66,27 @@ static char OK_create[] = "1000 OK CreateJobMedia\n";
 static int send_volume_info_to_storage_daemon(JCR *jcr, BSOCK *sd, MEDIA_DBR *mr)
 {
    int stat;
-   char ed1[50], ed2[50], ed3[50], ed4[50], ed5[50], ed6[50];
+   char ed1[50], ed4[50], ed5[50], ed6[50], ed7[50], ed8[50],
+        ed9[50], ed10[50];
 
    jcr->MediaId = mr->MediaId;
    pm_strcpy(jcr->VolumeName, mr->VolumeName);
    bash_spaces(mr->VolumeName);
    stat = sd->fsend(OK_media, mr->VolumeName, mr->VolJobs,
       mr->VolFiles, mr->VolBlocks, edit_uint64(mr->VolBytes, ed1),
-      mr->VolMounts, mr->VolErrors, mr->VolWrites,
-      edit_uint64(mr->MaxVolBytes, ed2),
-      edit_uint64(mr->VolCapacityBytes, ed3),
+      mr->VolMounts, mr->VolErrors,
+      edit_uint64(mr->VolWrites, ed4),
+      edit_uint64(mr->MaxVolBytes, ed5),
+      edit_uint64(mr->VolCapacityBytes, ed6),
       mr->VolStatus, mr->Slot, mr->MaxVolJobs, mr->MaxVolFiles,
       mr->InChanger,
-      edit_int64(mr->VolReadTime, ed4),
-      edit_int64(mr->VolWriteTime, ed5),
+      edit_int64(mr->VolReadTime, ed7),
+      edit_int64(mr->VolWriteTime, ed8),
       mr->EndFile, mr->EndBlock,
       mr->VolParts,
       mr->LabelType,
-      edit_uint64(mr->MediaId, ed6));
+      edit_uint64(mr->MediaId, ed9),
+      edit_uint64(mr->ScratchPoolId, ed10));
    unbash_spaces(mr->VolumeName);
    Dmsg2(100, "Vol Info for %s: %s", jcr->Job, sd->msg);
    return stat;
@@ -113,19 +105,20 @@ void catalog_request(JCR *jcr, BSOCK *bs)
    uint64_t MediaId;
    utime_t VolFirstWritten;
    utime_t VolLastWritten;
+   int n;
 
    memset(&sdmr, 0, sizeof(sdmr));
    memset(&jm, 0, sizeof(jm));
-   Dsm_check(100);      
+   Dsm_check(100);
 
    /*
     * Request to find next appendable Volume for this Job
     */
-   Dmsg1(100, "catreq %s", bs->msg);
+   Dmsg1(200, "catreq %s", bs->msg);
    if (!jcr->db) {
       omsg = get_memory(bs->msglen+1);
       pm_strcpy(omsg, bs->msg);
-      bs->fsend(_("1990 Invalid Catalog Request: %s"), omsg);    
+      bs->fsend(_("1990 Invalid Catalog Request: %s"), omsg);
       Jmsg1(jcr, M_FATAL, 0, _("Invalid Catalog request; DB not open: %s"), omsg);
       free_memory(omsg);
       return;
@@ -133,7 +126,8 @@ void catalog_request(JCR *jcr, BSOCK *bs)
    /*
     * Find next appendable medium for SD
     */
-   if (sscanf(bs->msg, Find_media, &Job, &index, &pool_name, &mr.MediaType) == 4) {
+   n = sscanf(bs->msg, Find_media, &Job, &index, &pool_name, &mr.MediaType);
+   if (n == 4) {
       memset(&pr, 0, sizeof(pr));
       bstrncpy(pr.Name, pool_name, sizeof(pr.Name));
       unbash_spaces(pr.Name);
@@ -144,6 +138,10 @@ void catalog_request(JCR *jcr, BSOCK *bs)
          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);
+      } else {
+         /* Report problem finding pool */
+         Jmsg1(jcr, M_WARNING, 0, _("Pool \"%s\" not found for SD find media request.\n"),
+            pr.Name);
       }
       /*
        * Send Find Media response to Storage daemon
@@ -154,11 +152,15 @@ void catalog_request(JCR *jcr, BSOCK *bs)
          bs->fsend(_("1901 No Media.\n"));
          Dmsg0(500, "1901 No Media.\n");
       }
+      goto ok_out;
+   }
+   Dmsg1(1000, "Tried find_media. fields wanted=4, got=%d\n", n);
 
    /*
     * Request to find specific Volume information
     */
-   } else if (sscanf(bs->msg, Get_Vol_Info, &Job, &mr.VolumeName, &writing) == 3) {
+   n = sscanf(bs->msg, Get_Vol_Info, &Job, &mr.VolumeName, &writing);
+   if (n == 3) {
       Dmsg1(100, "CatReq GetVolInfo Vol=%s\n", mr.VolumeName);
       /*
        * Find the Volume
@@ -208,19 +210,23 @@ void catalog_request(JCR *jcr, BSOCK *bs)
          bs->fsend(_("1997 Volume \"%s\" not in catalog.\n"), mr.VolumeName);
          Dmsg1(100, "1997 Volume \"%s\" not in catalog.\n", mr.VolumeName);
       }
+      goto ok_out;
+   }
+   Dmsg1(1000, "Tried get_vol_info. fields wanted=3, got=%d\n", n);
+
 
    /*
     * Request to update Media record. Comes typically at the end
     *  of a Storage daemon Job Session, when labeling/relabeling a
     *  Volume, or when an EOF mark is written.
     */
-   } else if (sscanf(bs->msg, Update_media, &Job, &sdmr.VolumeName,
+   n = sscanf(bs->msg, Update_media, &Job, &sdmr.VolumeName,
       &sdmr.VolJobs, &sdmr.VolFiles, &sdmr.VolBlocks, &sdmr.VolBytes,
       &sdmr.VolMounts, &sdmr.VolErrors, &sdmr.VolWrites, &sdmr.MaxVolBytes,
       &VolLastWritten, &sdmr.VolStatus, &sdmr.Slot, &label, &sdmr.InChanger,
       &sdmr.VolReadTime, &sdmr.VolWriteTime, &VolFirstWritten,
-      &sdmr.VolParts) == 19) {
-
+      &sdmr.VolParts);
+    if (n == 19) {
       db_lock(jcr->db);
       Dmsg3(400, "Update media %s oldStat=%s newStat=%s\n", sdmr.VolumeName,
          mr.VolStatus, sdmr.VolStatus);
@@ -256,19 +262,16 @@ void catalog_request(JCR *jcr, BSOCK *bs)
           * Insanity check for VolFiles get set to a smaller value
           */
          if (sdmr.VolFiles < mr.VolFiles) {
-            Jmsg(jcr, M_FATAL, 0, _("Volume Files at %u being set to %u"
-                 " for Volume \"%s\". This is incorrect.\n"),
+            Jmsg(jcr, M_INFO, 0, _("Attempt to set Volume Files from %u to %u"
+                 " for Volume \"%s\". Ignored.\n"),
                mr.VolFiles, sdmr.VolFiles, mr.VolumeName);
-            bs->fsend(_("1992 Update Media error. VolFiles=%u, CatFiles=%u\n"),
-               sdmr.VolFiles, mr.VolFiles);
-            db_unlock(jcr->db);
-            return;
+            sdmr.VolFiles = mr.VolFiles;  /* keep orginal value */
          }
       }
       Dmsg2(400, "Update media: BefVolJobs=%u After=%u\n", mr.VolJobs, sdmr.VolJobs);
 
       /*
-       * Check if the volume has been written by the job, 
+       * Check if the volume has been written by the job,
        * and update the LastWritten field if needed.
        */
       if (mr.VolBlocks != sdmr.VolBlocks && VolLastWritten != 0) {
@@ -302,7 +305,7 @@ void catalog_request(JCR *jcr, BSOCK *bs)
       mr.InChanger    = sdmr.InChanger;
       mr.VolParts     = sdmr.VolParts;
       bstrncpy(mr.VolStatus, sdmr.VolStatus, sizeof(mr.VolStatus));
-      if (sdmr.VolReadTime >= 0) { 
+      if (sdmr.VolReadTime >= 0) {
          mr.VolReadTime  = sdmr.VolReadTime;
       }
       if (sdmr.VolWriteTime >= 0) {
@@ -318,22 +321,25 @@ void catalog_request(JCR *jcr, BSOCK *bs)
          Jmsg(jcr, M_FATAL, 0, _("Catalog error updating Media record. %s"),
             db_strerror(jcr->db));
          bs->fsend(_("1993 Update Media error\n"));
-         Dmsg0(400, "send error\n");
+         Pmsg0(000, "1993 Update Media error\n");
       } else {
          (void)has_volume_expired(jcr, &mr);
          send_volume_info_to_storage_daemon(jcr, bs, &mr);
       }
       db_unlock(jcr->db);
+      goto ok_out;
+   }
+   Dmsg1(1000, "Tried update_media. fields wanted=20, got=%d\n", n);
 
    /*
     * Request to create a JobMedia record
     */
-   } else if (sscanf(bs->msg, Create_job_media, &Job,
+   n = sscanf(bs->msg, Create_job_media, &Job,
       &jm.FirstIndex, &jm.LastIndex, &jm.StartFile, &jm.EndFile,
-      &jm.StartBlock, &jm.EndBlock, &Copy, &Stripe, &MediaId) == 10) {
-
-      if (jcr->mig_jcr) {
-         jm.JobId = jcr->mig_jcr->JobId;
+      &jm.StartBlock, &jm.EndBlock, &Copy, &Stripe, &MediaId);
+   if (n == 10) {
+      if (jcr->wjcr) {
+         jm.JobId = jcr->wjcr->JobId;
       } else {
          jm.JobId = jcr->JobId;
       }
@@ -348,15 +354,18 @@ void catalog_request(JCR *jcr, BSOCK *bs)
          Dmsg0(400, "JobMedia record created\n");
          bs->fsend(OK_create);
       }
-
-   } else {
-      omsg = get_memory(bs->msglen+1);
-      pm_strcpy(omsg, bs->msg);
-      bs->fsend(_("1990 Invalid Catalog Request: %s"), omsg);
-      Jmsg1(jcr, M_FATAL, 0, _("Invalid Catalog request: %s"), omsg);
-      free_memory(omsg);
+      goto ok_out;
    }
+   Dmsg1(1000, "Tried create_jobmedia. fields wanted=10, got=%d\n", n);
 
+   /* Everything failed. Send error message. */
+   omsg = get_memory(bs->msglen+1);
+   pm_strcpy(omsg, bs->msg);
+   bs->fsend(_("1990 Invalid Catalog Request: %s"), omsg);
+   Jmsg1(jcr, M_FATAL, 0, _("Invalid Catalog request: %s"), omsg);
+   free_memory(omsg);
+
+ok_out:
    Dmsg1(400, ">CatReq response: %s", bs->msg);
    Dmsg1(400, "Leave catreq jcr 0x%x\n", jcr);
    return;
@@ -381,12 +390,12 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
 
    /* Start transaction allocates jcr->attr and jcr->ar if needed */
    db_start_transaction(jcr, jcr->db);     /* start transaction if not already open */
-   ar = jcr->ar;      
+   ar = jcr->ar;
 
    /*
-    * Start by scanning directly in the message buffer to get Stream   
+    * Start by scanning directly in the message buffer to get Stream
     *  there may be a cached attr so we cannot yet write into
-    *  jcr->attr or jcr->ar  
+    *  jcr->attr or jcr->ar
     */
    p = msg;
    skip_nonspaces(&p);                /* UpdCat */
@@ -450,7 +459,7 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
       p = jcr->attr - msg + p;    /* point p into jcr->attr */
       skip_nonspaces(&p);         /* skip FileIndex */
       skip_spaces(&p);
-      ar->FileType = str_to_int32(p); 
+      ar->FileType = str_to_int32(p);
       skip_nonspaces(&p);         /* skip FileType */
       skip_spaces(&p);
       fname = p;
@@ -462,7 +471,7 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
          p = p + strlen(p) + 1;        /* point to extended attributes */
          p = p + strlen(p) + 1;        /* point to delta sequence */
          /*
-          * Older FDs don't have a delta sequence, so check if it is there 
+          * Older FDs don't have a delta sequence, so check if it is there
           */
          if (p - jcr->attr < msglen) {
             ar->DeltaSeq = str_to_int32(p); /* delta_seq */
@@ -480,8 +489,9 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
       }
       ar->Stream = Stream;
       ar->link = NULL;
-      if (jcr->mig_jcr) {
-         ar->JobId = jcr->mig_jcr->JobId;
+      if (jcr->wjcr) {
+         ar->JobId = jcr->wjcr->JobId;
+         Dmsg1(100, "=== set JobId=%d\n", ar->JobId);
       } else {
          ar->JobId = jcr->JobId;
       }
@@ -498,14 +508,15 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
       memset(&ro, 0, sizeof(ro));
       ro.Stream = Stream;
       ro.FileIndex = FileIndex;
-      if (jcr->mig_jcr) {
-         ro.JobId = jcr->mig_jcr->JobId;
+      if (jcr->wjcr) {
+         ro.JobId = jcr->wjcr->JobId;
+         Dmsg1(100, "=== set JobId=%d\n", ar->JobId);
       } else {
          ro.JobId = jcr->JobId;
       }
 
       Dmsg1(100, "Robj=%s\n", p);
-      
+
       skip_nonspaces(&p);                  /* skip FileIndex */
       skip_spaces(&p);
       ro.FileType = str_to_int32(p);        /* FileType */
@@ -515,7 +526,7 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
       skip_nonspaces(&p);
       skip_spaces(&p);
       ro.object_len = str_to_int32(p);      /* object length possibly compressed */
-      skip_nonspaces(&p);                  
+      skip_nonspaces(&p);
       skip_spaces(&p);
       ro.object_full_len = str_to_int32(p); /* uncompressed object length */
       skip_nonspaces(&p);
@@ -536,12 +547,13 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
       /* Send it */
       if (!db_create_restore_object_record(jcr, jcr->db, &ro)) {
          Jmsg1(jcr, M_FATAL, 0, _("Restore object create error. %s"), db_strerror(jcr->db));
+         jcr->cached_attribute = false;
       }
 
    } else if (crypto_digest_stream_type(Stream) != CRYPTO_DIGEST_NONE) {
       fname = p;
       if (ar->FileIndex != FileIndex) {
-         Jmsg3(jcr, M_WARNING, 0, _("%s not same File=%d as attributes=%d\n"), 
+         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 */
@@ -586,7 +598,7 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
                Jmsg1(jcr, M_FATAL, 0, _("attribute create error. %s"),
                         db_strerror(jcr->db));
             }
-            jcr->cached_attribute = false; 
+            jcr->cached_attribute = false;
          } else {
             if (!db_add_digest_to_file_record(jcr, jcr->db, ar->FileId, digestbuf, type)) {
                Jmsg(jcr, M_ERROR, 0, _("Catalog error updating file digest. %s"),
@@ -612,7 +624,7 @@ void catalog_update(JCR *jcr, BSOCK *bs)
    if (!jcr->db) {
       POOLMEM *omsg = get_memory(bs->msglen+1);
       pm_strcpy(omsg, bs->msg);
-      bs->fsend(_("1994 Invalid Catalog Update: %s"), omsg);    
+      bs->fsend(_("1994 Invalid Catalog Update: %s"), omsg);
       Jmsg1(jcr, M_FATAL, 0, _("Invalid Catalog Update; DB not open: %s"), omsg);
       free_memory(omsg);
       goto bail_out;
@@ -621,6 +633,7 @@ void catalog_update(JCR *jcr, BSOCK *bs)
 
 bail_out:
    if (jcr->is_job_canceled()) {
+      jcr->cached_attribute = false;
       cancel_storage_daemon_job(jcr);
    }
 }
@@ -640,7 +653,7 @@ bool despool_attributes_from_file(JCR *jcr, const char *file)
    POOLMEM *msg = get_pool_memory(PM_MESSAGE);
    FILE *spool_fd=NULL;
 
-   Dmsg0(100, "Begin despool_attributes_from_file\n");
+   Dmsg1(100, "Begin despool_attributes_from_file\n", file);
 
    if (jcr->is_job_canceled() || !jcr->pool->catalog_files || !jcr->db) {
       goto bail_out;                  /* user disabled cataloging */
@@ -676,7 +689,7 @@ bool despool_attributes_from_file(JCR *jcr, const char *file)
       }
       if (!jcr->is_job_canceled()) {
          update_attribute(jcr, msg, msglen);
-         if (jcr->is_job_canceled()) {
+         if (jcr->is_job_canceled() || (jcr->wjcr && jcr->wjcr->is_job_canceled())) {
             goto bail_out;
          }
       }
@@ -685,6 +698,7 @@ bool despool_attributes_from_file(JCR *jcr, const char *file)
       berrno be;
       Qmsg1(jcr, M_FATAL, 0, _("fread attr spool error. ERR=%s\n"),
             be.bstrerror());
+      Dmsg1(050, "fread attr spool error. ERR=%s\n", be.bstrerror());
       goto bail_out;
    }
    ret = true;
@@ -695,6 +709,7 @@ bail_out:
    }
 
    if (jcr->is_job_canceled()) {
+      jcr->cached_attribute = false;
       cancel_storage_daemon_job(jcr);
    }
 
diff --git a/src/dird/dir_plugins.c b/src/dird/dir_plugins.c
index b0b29ab..6f693fe 100644
--- a/src/dird/dir_plugins.c
+++ b/src/dird/dir_plugins.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Main program to test loading and running Bacula plugins.
@@ -67,7 +55,7 @@ static bDirFuncs bfuncs = {
    baculaDebugMsg
 };
 
-/* 
+/*
  * Bacula private context
  */
 struct bacula_ctx {
@@ -94,7 +82,7 @@ static bool is_plugin_disabled(JCR *jcr)
 #endif
 
 /*
- * Create a plugin event 
+ * Create a plugin event
  */
 int generate_plugin_event(JCR *jcr, bDirEventType eventType, void *value)
 {
@@ -163,7 +151,7 @@ void load_dir_plugins(const char *plugin_dir)
       return;
    }
    bplugin_list = New(alist(10, not_owned_by_alist));
-   if (!load_plugins((void *)&binfo, (void *)&bfuncs, plugin_dir, plugin_type, 
+   if (!load_plugins((void *)&binfo, (void *)&bfuncs, plugin_dir, plugin_type,
                 is_plugin_compatible)) {
       /* Either none found, or some error */
       if (bplugin_list->size() == 0) {
@@ -173,7 +161,7 @@ void load_dir_plugins(const char *plugin_dir)
          return;
       }
    }
-   /* 
+   /*
     * Verify that the plugin is acceptable, and print information
     *  about it.
     */
@@ -194,7 +182,7 @@ static bool is_plugin_compatible(Plugin *plugin)
 {
    pDirInfo *info = (pDirInfo *)plugin->pinfo;
    Dmsg0(50, "is_plugin_compatible called\n");
-   if (debug_level >= 50) {
+   if (chk_dbglvl(50)) {
       dump_dir_plugin(plugin, stdin);
    }
    if (strcmp(info->plugin_magic, DIR_PLUGIN_MAGIC) != 0) {
@@ -227,7 +215,7 @@ static bool is_plugin_compatible(Plugin *plugin)
            plugin->file, sizeof(pDirInfo), info->size);
       return false;
    }
-      
+
    return true;
 }
 
@@ -347,7 +335,7 @@ static bRC baculaGetValue(bpContext *ctx, brDirVariable var, void *value)
       POOL_DBR pr;
       memset(&pr, 0, sizeof(pr));
       bstrncpy(pr.Name, jcr->pool->hdr.name, sizeof(pr.Name));
-      if (!db_get_pool_record(jcr, jcr->db, &pr)) {
+      if (!db_get_pool_numvols(jcr, jcr->db, &pr)) {
          ret=bRC_Error;
       }
       *((int *)value) = pr.NumVols;
@@ -435,11 +423,11 @@ static bRC baculaGetValue(bpContext *ctx, brDirVariable var, void *value)
    case bDirVarFDJobStatus:
       *((int *)value) = jcr->FDJobStatus;
       Dmsg1(dbglvl, "Bacula: return bDirVarFDJobStatus=%c\n", jcr->FDJobStatus);
-      break;      
+      break;
    case bDirVarSDJobStatus:
       *((int *)value) = jcr->SDJobStatus;
       Dmsg1(dbglvl, "Bacula: return bDirVarSDJobStatus=%c\n", jcr->SDJobStatus);
-      break;      
+      break;
    default:
       break;
    }
@@ -448,7 +436,7 @@ static bRC baculaGetValue(bpContext *ctx, brDirVariable var, void *value)
 
 static bRC baculaSetValue(bpContext *ctx, bwDirVariable var, void *value)
 {
-   JCR *jcr;   
+   JCR *jcr;
    if (!value || !ctx) {
       return bRC_Error;
    }
@@ -457,7 +445,7 @@ static bRC baculaSetValue(bpContext *ctx, bwDirVariable var, void *value)
    if (!jcr) {
       return bRC_Error;
    }
-// Dmsg1(dbglvl, "Bacula: jcr=%p\n", jcr); 
+// Dmsg1(dbglvl, "Bacula: jcr=%p\n", jcr);
    /* Nothing implemented yet */
    Dmsg1(dbglvl, "dir-plugin: baculaSetValue var=%d\n", var);
    return bRC_OK;
@@ -519,7 +507,7 @@ int main(int argc, char *argv[])
    JCR *jcr2 = &mjcr2;
 
    strcpy(my_name, "test-dir");
-    
+
    getcwd(plugin_dir, sizeof(plugin_dir)-1);
    load_dir_plugins(plugin_dir);
 
diff --git a/src/dird/dir_plugins.h b/src/dird/dir_plugins.h
index f0f1b62..363acd0 100644
--- a/src/dird/dir_plugins.h
+++ b/src/dird/dir_plugins.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Interface definition for Bacula Plugins
@@ -31,8 +19,8 @@
  * Kern Sibbald, October 2007
  *
  */
- 
-#ifndef __DIR_PLUGINS_H 
+
+#ifndef __DIR_PLUGINS_H
 #define __DIR_PLUGINS_H
 
 #ifndef _BACULA_H
@@ -72,11 +60,11 @@ extern "C" {
 /* Bacula Variable Ids */       /* return value */
 typedef enum {
   bDirVarJob       = 1,            // string
-  bDirVarLevel     = 2,            // int   
-  bDirVarType      = 3,            // int   
-  bDirVarJobId     = 4,            // int   
+  bDirVarLevel     = 2,            // int
+  bDirVarType      = 3,            // int
+  bDirVarJobId     = 4,            // int
   bDirVarClient    = 5,            // string
-  bDirVarNumVols   = 6,            // int   
+  bDirVarNumVols   = 6,            // int
   bDirVarPool      = 7,            // string
   bDirVarStorage   = 8,            // string
   bDirVarWriteStorage = 9,         // string
@@ -84,16 +72,16 @@ typedef enum {
   bDirVarCatalog   = 11,           // string
   bDirVarMediaType = 12,           // string
   bDirVarJobName   = 13,           // string
-  bDirVarJobStatus = 14,           // int   
-  bDirVarPriority  = 15,           // int   
+  bDirVarJobStatus = 14,           // int
+  bDirVarPriority  = 15,           // int
   bDirVarVolumeName = 16,          // string
-  bDirVarCatalogRes = 17,          // NYI      
-  bDirVarJobErrors  = 18,          // int   
-  bDirVarJobFiles   = 19,          // int   
-  bDirVarSDJobFiles = 20,          // int   
-  bDirVarSDErrors   = 21,          // int   
-  bDirVarFDJobStatus = 22,         // int   
-  bDirVarSDJobStatus = 23          // int   
+  bDirVarCatalogRes = 17,          // NYI
+  bDirVarJobErrors  = 18,          // int
+  bDirVarJobFiles   = 19,          // int
+  bDirVarSDJobFiles = 20,          // int
+  bDirVarSDErrors   = 21,          // int
+  bDirVarFDJobStatus = 22,         // int
+  bDirVarSDJobStatus = 23          // int
 } brDirVariable;
 
 typedef enum {
@@ -123,18 +111,18 @@ typedef struct s_bDirEvent {
 
 typedef struct s_dirbaculaInfo {
    uint32_t size;
-   uint32_t version;  
+   uint32_t version;
 } bDirInfo;
 
 /* Bacula interface version and function pointers */
-typedef struct s_dirbaculaFuncs {  
+typedef struct s_dirbaculaFuncs {
    uint32_t size;
    uint32_t version;
    bRC (*registerBaculaEvents)(bpContext *ctx, ...);
    bRC (*getBaculaValue)(bpContext *ctx, brDirVariable var, void *value);
    bRC (*setBaculaValue)(bpContext *ctx, bwDirVariable var, void *value);
-   bRC (*JobMessage)(bpContext *ctx, const char *file, int line, 
-                     int type, utime_t mtime, const char *fmt, ...);     
+   bRC (*JobMessage)(bpContext *ctx, const char *file, int line,
+                     int type, utime_t mtime, const char *fmt, ...);
    bRC (*DebugMessage)(bpContext *ctx, const char *file, int line,
                        int level, const char *fmt, ...);
 } bDirFuncs;
@@ -160,7 +148,7 @@ typedef enum {
 } pDirVariable;
 
 
-#define DIR_PLUGIN_MAGIC     "*DirPluginData*" 
+#define DIR_PLUGIN_MAGIC     "*DirPluginData*"
 #define DIR_PLUGIN_INTERFACE_VERSION  1
 
 typedef struct s_dirpluginInfo {
@@ -174,7 +162,7 @@ typedef struct s_dirpluginInfo {
    const char *plugin_description;
 } pDirInfo;
 
-typedef struct s_dirpluginFuncs {  
+typedef struct s_dirpluginFuncs {
    uint32_t size;
    uint32_t version;
    bRC (*newPlugin)(bpContext *ctx);
diff --git a/src/dird/dird.c b/src/dird/dird.c
index 147ab3f..8706334 100644
--- a/src/dird/dird.c
+++ b/src/dird/dird.c
@@ -1,35 +1,23 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *   Bacula Director daemon -- this is the main program
  *
- *     Kern Sibbald, March MM
+ *     Written by Kern Sibbald, March MM
  *
  */
 
@@ -48,25 +36,11 @@
 int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
 #endif
 
-
-#ifdef HAVE_PYTHON
-
-#undef _POSIX_C_SOURCE
-#include <Python.h>
-
-#include "lib/pythonlib.h"
-
-/* Imported Functions */
-extern PyObject *job_getattr(PyObject *self, char *attrname);
-extern int job_setattr(PyObject *self, char *attrname, PyObject *value);
-
-#endif /* HAVE_PYTHON */
-
 /* Forward referenced subroutines */
 void terminate_dird(int sig);
 static bool check_resources();
 static void cleanup_old_files();
-  
+
 /* Exported subroutines */
 extern "C" void reload_config(int sig);
 extern void invalidate_schedules();
@@ -89,7 +63,7 @@ static char *runjob = NULL;
 static bool background = true;
 static void init_reload(void);
 static CONFIG *config;
- 
+
 /* Globals Exported */
 DIRRES *director;                     /* Director resource */
 int FDConnectTimeout;
@@ -185,9 +159,6 @@ int main (int argc, char *argv[])
    bool test_config = false;
    char *uid = NULL;
    char *gid = NULL;
-#ifdef HAVE_PYTHON
-   init_python_interpreter_args python_args;
-#endif /* HAVE_PYTHON */
 
    start_heap = sbrk(0);
    setlocale(LC_ALL, "");
@@ -304,9 +275,9 @@ int main (int argc, char *argv[])
       if (background) {
          daemon_start();
          init_stack_dump();              /* grab new pid */
-      }   
+      }
       /* Create pid must come after we are a daemon -- so we have our final pid */
-      create_pid_file(director->pid_directory, "bacula-dir", 
+      create_pid_file(director->pid_directory, "bacula-dir",
                       get_first_port_host_order(director->DIRaddrs));
       read_state_file(director->working_directory, "bacula-dir",
                       get_first_port_host_order(director->DIRaddrs));
@@ -327,8 +298,8 @@ int main (int argc, char *argv[])
    if (!check_catalog(mode)) {
       Jmsg((JCR *)NULL, M_ERROR_TERM, 0, _("Please correct configuration file: %s\n"), configfile);
    }
-   
-   if (test_config) {      
+
+   if (test_config) {
       terminate_dird(0);
    }
 
@@ -349,18 +320,6 @@ int main (int argc, char *argv[])
 
    init_console_msg(working_directory);
 
-#ifdef HAVE_PYTHON
-   python_args.progname = director->name();
-   python_args.scriptdir = director->scripts_directory;
-   python_args.modulename = "DirStartUp";
-   python_args.configfile = configfile;
-   python_args.workingdir = director->working_directory;
-   python_args.job_getattr = job_getattr;
-   python_args.job_setattr = job_setattr;
-
-   init_python_interpreter(&python_args);
-#endif /* HAVE_PYTHON */
-
    Dmsg0(200, "Start UA server\n");
    start_UA_server(director->DIRaddrs);
 
@@ -372,8 +331,6 @@ int main (int argc, char *argv[])
 
    dbg_jcr_add_hook(db_debug_print); /* used to debug B_DB connexion after fatal signal */
 
-//   init_device_resources();
-
    Dmsg0(200, "wait for next job\n");
    /* Main loop -- call scheduler to get next job to run */
    while ( (jcr = wait_for_next_job(runjob)) ) {
@@ -525,7 +482,7 @@ void reload_config(int sig)
    JCR *jcr;
    int njobs = 0;                     /* number of running jobs */
    int table, rtable;
-   bool ok;       
+   bool ok;
 
    if (already_here) {
       abort();                        /* Oops, recursion -> die */
@@ -666,7 +623,7 @@ static bool check_resources()
          OK = false;
       }
 
-      if ((!director->tls_ca_certfile && !director->tls_ca_certdir) && 
+      if ((!director->tls_ca_certfile && !director->tls_ca_certdir) &&
            need_tls && director->tls_verify_peer) {
          Jmsg(NULL, M_FATAL, 0, _("Neither \"TLS CA Certificate\" or \"TLS CA"
               " Certificate Dir\" are defined for Director \"%s\" in %s."
@@ -685,7 +642,7 @@ static bool check_resources()
             director->tls_ca_certdir, director->tls_certfile,
             director->tls_keyfile, NULL, NULL, director->tls_dhfile,
             director->tls_verify_peer);
-         
+
          if (!director->tls_ctx) {
             Jmsg(NULL, M_FATAL, 0, _("Failed to initialize TLS context for Director \"%s\" in %s.\n"),
                  director->name(), configfile);
@@ -714,11 +671,11 @@ static bool check_resources()
          /* Handle RunScripts alists specifically */
          if (jobdefs->RunScripts) {
             RUNSCRIPT *rs, *elt;
-            
+
             if (!job->RunScripts) {
                job->RunScripts = New(alist(10, not_owned_by_alist));
             }
-           
+
             foreach_alist(rs, jobdefs->RunScripts) {
                elt = copy_runscript(rs);
                job->RunScripts->append(elt); /* we have to free it */
@@ -860,7 +817,7 @@ static bool check_resources()
       }
 
       need_tls = cons->tls_enable || cons->tls_authenticate;
-      
+
       if (!cons->tls_certfile && need_tls) {
          Jmsg(NULL, M_FATAL, 0, _("\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"),
             cons->name(), configfile);
@@ -873,7 +830,7 @@ static bool check_resources()
          OK = false;
       }
 
-      if ((!cons->tls_ca_certfile && !cons->tls_ca_certdir) 
+      if ((!cons->tls_ca_certfile && !cons->tls_ca_certdir)
             && need_tls && cons->tls_verify_peer) {
          Jmsg(NULL, M_FATAL, 0, _("Neither \"TLS CA Certificate\" or \"TLS CA"
             " Certificate Dir\" are defined for Console \"%s\" in %s."
@@ -890,7 +847,7 @@ static bool check_resources()
          cons->tls_ctx = new_tls_context(cons->tls_ca_certfile,
             cons->tls_ca_certdir, cons->tls_certfile,
             cons->tls_keyfile, NULL, NULL, cons->tls_dhfile, cons->tls_verify_peer);
-         
+
          if (!cons->tls_ctx) {
             Jmsg(NULL, M_FATAL, 0, _("Failed to initialize TLS context for File daemon \"%s\" in %s.\n"),
                cons->name(), configfile);
@@ -930,7 +887,7 @@ static bool check_resources()
             client->tls_ca_certdir, client->tls_certfile,
             client->tls_keyfile, NULL, NULL, NULL,
             true);
-         
+
          if (!client->tls_ctx) {
             Jmsg(NULL, M_FATAL, 0, _("Failed to initialize TLS context for File daemon \"%s\" in %s.\n"),
                client->name(), configfile);
@@ -987,8 +944,8 @@ static bool check_resources()
    return OK;
 }
 
-/* 
- * In this routine, 
+/*
+ * In this routine,
  *  - we can check the connection (mode=CHECK_CONNECTION)
  *  - we can synchronize the catalog with the configuration (mode=UPDATE_CATALOG)
  *  - we can synchronize, and fix old job records (mode=UPDATE_AND_FIX)
@@ -1071,7 +1028,7 @@ static bool check_catalog(cat_op mode)
                   client->name(), client->catalog->name(), catalog->name());
             continue;
          }
-         Dmsg2(500, "create cat=%s for client=%s\n", 
+         Dmsg2(500, "create cat=%s for client=%s\n",
                client->catalog->name(), client->name());
          memset(&cr, 0, sizeof(cr));
          bstrncpy(cr.Name, client->name(), sizeof(cr.Name));
@@ -1095,7 +1052,7 @@ static bool check_catalog(cat_op mode)
          bstrncpy(sr.Name, store->name(), sizeof(sr.Name));
          sr.AutoChanger = store->autochanger;
          if (!db_create_storage_record(NULL, db, &sr)) {
-            Jmsg(NULL, M_FATAL, 0, _("Could not create storage record for %s\n"), 
+            Jmsg(NULL, M_FATAL, 0, _("Could not create storage record for %s\n"),
                  store->name());
             OK = false;
          }
@@ -1187,10 +1144,10 @@ static void cleanup_old_files()
    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", 
+      Pmsg2(000, "Failed to open working dir %s for cleanup: ERR=%s\n",
             director->working_directory, be.bstrerror());
       goto get_out1;
       return;
@@ -1205,7 +1162,7 @@ static void cleanup_old_files()
       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;    
+         continue;
       }
 
       /* Unlink files that match regexes */
diff --git a/src/dird/dird.h b/src/dird/dird.h
index 12b04ce..9b87a01 100644
--- a/src/dird/dird.h
+++ b/src/dird/dird.h
@@ -1,38 +1,26 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Includes specific to the Director
  *
  *     Kern Sibbald, December MM
  *
- *    Version $Id$
  */
 
+#include "lib/ini.h"
 #include "lib/runscript.h"
 #include "lib/breg.h"
 #include "dird_conf.h"
@@ -78,6 +66,17 @@ enum {
   fnv_no_prune      = false
 };
 
-     
+typedef struct {
+   char    *plugin_name;
+   POOLMEM *content;
+} plugin_config_item;
+
+struct idpkt {
+   POOLMEM *list;
+   uint32_t count;
+};
+
+void free_plugin_config_item(plugin_config_item *lst);
+void free_plugin_config_items(alist *lst);
 
 #include "protos.h"
diff --git a/src/dird/dird_conf.c b/src/dird/dird_conf.c
index b8477f5..ebd1bc2 100644
--- a/src/dird/dird_conf.c
+++ b/src/dird/dird_conf.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Main configuration file parser for Bacula Directors,
@@ -188,11 +176,13 @@ static RES_ITEM cli_items[] = {
    {"fdport",   store_pint32,     ITEM(res_client.FDport),   0, ITEM_DEFAULT, 9102},
    {"password", store_password,   ITEM(res_client.password), 0, ITEM_REQUIRED, 0},
    {"fdpassword", store_password, ITEM(res_client.password), 0, 0, 0},
+   {"fdstorageaddress", store_str, ITEM(res_client.fd_storage_address), 0, 0, 0},
    {"catalog",  store_res,        ITEM(res_client.catalog),  R_CATALOG, ITEM_REQUIRED, 0},
    {"fileretention", store_time,  ITEM(res_client.FileRetention), 0, ITEM_DEFAULT, 60*60*24*60},
    {"jobretention",  store_time,  ITEM(res_client.JobRetention),  0, ITEM_DEFAULT, 60*60*24*180},
    {"heartbeatinterval", store_time, ITEM(res_client.heartbeat_interval), 0, ITEM_DEFAULT, 0},
    {"autoprune", store_bool,      ITEM(res_client.AutoPrune), 0, ITEM_DEFAULT, true},
+   {"sdcallsclient",        store_bool, ITEM(res_client.sd_calls_client), 0, ITEM_DEFAULT, false},
    {"maximumconcurrentjobs", store_pint32,   ITEM(res_client.MaxConcurrentJobs), 0, ITEM_DEFAULT, 1},
    {"tlsauthenticate",      store_bool,      ITEM(res_client.tls_authenticate), 0, 0, 0},
    {"tlsenable",            store_bool,      ITEM(res_client.tls_enable), 0, 0, 0},
@@ -202,6 +192,7 @@ static RES_ITEM cli_items[] = {
    {"tlscertificate",       store_dir,       ITEM(res_client.tls_certfile), 0, 0, 0},
    {"tlskey",               store_dir,       ITEM(res_client.tls_keyfile), 0, 0, 0},
    {"tlsallowedcn",         store_alist_str, ITEM(res_client.tls_allowed_cns), 0, 0, 0},
+   {"maximumbandwidthperjob", store_speed, ITEM(res_client.max_bandwidth), 0, 0, 0},
    {NULL, NULL, {0}, 0, 0, 0}
 };
 
@@ -216,6 +207,7 @@ static RES_ITEM store_items[] = {
    {"address",     store_str,      ITEM(res_store.address),    0, ITEM_REQUIRED, 0},
    {"sdaddress",   store_str,      ITEM(res_store.address),    0, 0, 0},
    {"password",    store_password, ITEM(res_store.password),   0, ITEM_REQUIRED, 0},
+   {"fdstorageaddress", store_str, ITEM(res_store.fd_storage_address), 0, 0, 0},
    {"sdpassword",  store_password, ITEM(res_store.password),   0, 0, 0},
    {"device",      store_device,   ITEM(res_store.device),     R_DEVICE, ITEM_REQUIRED, 0},
    {"mediatype",   store_strname,  ITEM(res_store.media_type), 0, ITEM_REQUIRED, 0},
@@ -274,6 +266,7 @@ RES_ITEM job_items[] = {
    {"messages",  store_res,     ITEM(res_job.messages), R_MSGS, ITEM_REQUIRED, 0},
    {"storage",   store_alist_res, ITEM(res_job.storage),  R_STORAGE, 0, 0},
    {"pool",      store_res,     ITEM(res_job.pool),     R_POOL, ITEM_REQUIRED, 0},
+   {"nextpool",  store_res,     ITEM(res_job.next_pool), R_POOL, 0, 0},
    {"fullbackuppool",  store_res, ITEM(res_job.full_pool),   R_POOL, 0, 0},
    {"incrementalbackuppool",  store_res, ITEM(res_job.inc_pool), R_POOL, 0, 0},
    {"differentialbackuppool", store_res, ITEM(res_job.diff_pool), R_POOL, 0, 0},
@@ -296,6 +289,7 @@ RES_ITEM job_items[] = {
    {"writebootstrap",store_dir, ITEM(res_job.WriteBootstrap), 0, 0, 0},
    {"writeverifylist",store_dir,ITEM(res_job.WriteVerifyList), 0, 0, 0},
    {"replace",  store_replace,  ITEM(res_job.replace), 0, ITEM_DEFAULT, REPLACE_ALWAYS},
+   {"maximumbandwidth", store_speed, ITEM(res_job.max_bandwidth), 0, 0, 0},
    {"maxrunschedtime", store_time, ITEM(res_job.MaxRunSchedTime), 0, 0, 0},
    {"maxruntime",   store_time, ITEM(res_job.MaxRunTime), 0, 0, 0},
    /* xxxMaxWaitTime are deprecated */
@@ -326,9 +320,10 @@ RES_ITEM job_items[] = {
    {"clientrunbeforejob", store_short_runscript,  ITEM(res_job.RunScripts),  0, 0, 0},
    {"clientrunafterjob",  store_short_runscript,  ITEM(res_job.RunScripts),  0, 0, 0},
    {"maximumconcurrentjobs", store_pint32, ITEM(res_job.MaxConcurrentJobs), 0, ITEM_DEFAULT, 1},
+   {"maximumspawnedjobs", store_pint32, ITEM(res_job.MaxSpawnedJobs), 0, ITEM_DEFAULT, 600},
    {"rescheduleonerror", store_bool, ITEM(res_job.RescheduleOnError), 0, ITEM_DEFAULT, false},
    {"rescheduleinterval", store_time, ITEM(res_job.RescheduleInterval), 0, ITEM_DEFAULT, 60 * 30},
-   {"rescheduletimes",    store_pint32, ITEM(res_job.RescheduleTimes), 0, 0, 5},
+   {"rescheduletimes",    store_pint32, ITEM(res_job.RescheduleTimes), 0, 0, 0},
    {"priority",           store_pint32, ITEM(res_job.Priority), 0, ITEM_DEFAULT, 10},
    {"allowmixedpriority", store_bool, ITEM(res_job.allow_mixed_priority), 0, ITEM_DEFAULT, false},
    {"writepartafterjob",  store_bool, ITEM(res_job.write_part_after_job), 0, ITEM_DEFAULT, true},
@@ -381,7 +376,7 @@ static RES_ITEM pool_items[] = {
    {"description",     store_str,     ITEM(res_pool.hdr.desc),      0, 0,     0},
    {"pooltype",        store_strname, ITEM(res_pool.pool_type),     0, ITEM_REQUIRED, 0},
    {"labelformat",     store_strname, ITEM(res_pool.label_format),  0, 0,     0},
-   {"labeltype",       store_label,   ITEM(res_pool.LabelType),     0, 0,     0},     
+   {"labeltype",       store_label,   ITEM(res_pool.LabelType),     0, 0,     0},
    {"cleaningprefix",  store_strname, ITEM(res_pool.cleaning_prefix), 0, 0,   0},
    {"usecatalog",      store_bool,    ITEM(res_pool.use_catalog),    0, ITEM_DEFAULT, true},
    {"usevolumeonce",   store_bool,    ITEM(res_pool.use_volume_once), 0, 0,   0},
@@ -617,6 +612,13 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          edit_utime(res->res_client.JobRetention, ed1, sizeof(ed1)),
          edit_utime(res->res_client.FileRetention, ed2, sizeof(ed2)),
          res->res_client.AutoPrune);
+      if (res->res_client.fd_storage_address) {
+         sendit(sock, "      FDStorageAddress=%s\n", res->res_client.fd_storage_address);
+      }
+      if (res->res_client.max_bandwidth) {
+         sendit(sock, _("     MaximumBandwidth=%lld\n"),
+                res->res_client.max_bandwidth);
+      }
       if (res->res_client.catalog) {
          sendit(sock, _("  --> "));
          dump_resource(-R_CATALOG, (RES *)res->res_client.catalog, sendit, sock);
@@ -647,6 +649,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          res->res_store.dev_name(),
          res->res_store.media_type,
          edit_int64(res->res_store.StorageId, ed1));
+      if (res->res_store.fd_storage_address) {
+         sendit(sock, "      FDStorageAddress=%s\n", res->res_store.fd_storage_address);
+      }
       break;
 
    case R_CATALOG:
@@ -656,7 +661,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
       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),
-         res->res_cat.db_port, res->res_cat.db_name, 
+         res->res_cat.db_port, res->res_cat.db_name,
          NPRT(res->res_cat.db_driver), NPRT(res->res_cat.db_user),
          res->res_cat.mult_db_connections);
       break;
@@ -672,7 +677,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          level_to_str(res->res_job.JobLevel), res->res_job.Priority,
          res->res_job.enabled);
       sendit(sock, _("     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob=%d\n"),
-         res->res_job.MaxConcurrentJobs, 
+         res->res_job.MaxConcurrentJobs,
          res->res_job.RescheduleOnError, res->res_job.RescheduleTimes,
          edit_uint64_with_commas(res->res_job.RescheduleInterval, ed1),
          res->res_job.spool_data, res->res_job.write_part_after_job);
@@ -682,6 +687,10 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
       if (res->res_job.JobType == JT_BACKUP) {
          sendit(sock, _("     Accurate=%d\n"), res->res_job.accurate);
       }
+      if (res->res_job.max_bandwidth) {
+         sendit(sock, _("     MaximumBandwidth=%lld\n"),
+                res->res_job.max_bandwidth);
+      }
       if (res->res_job.JobType == JT_MIGRATE || res->res_job.JobType == JT_COPY) {
          sendit(sock, _("     SelectionType=%d\n"), res->res_job.selection_type);
       }
@@ -890,6 +899,12 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
          }
 next_run:
          sendit(sock, _("  --> Run Level=%s\n"), level_to_str(run->level));
+         if (run->MaxRunSchedTime) {
+            sendit(sock, _("      MaxRunSchedTime=%u\n"), run->MaxRunSchedTime);
+         }
+         if (run->Priority) {
+            sendit(sock, _("      Priority=%u\n"), run->Priority);
+         }
          bstrncpy(buf, _("      hour="), sizeof(buf));
          for (i=0; i<24; i++) {
             if (bit_is_set(i, run->hour)) {
@@ -900,7 +915,7 @@ next_run:
          bstrncat(buf, "\n", sizeof(buf));
          sendit(sock, buf);
          bstrncpy(buf, _("      mday="), sizeof(buf));
-         for (i=0; i<31; i++) {
+         for (i=0; i<32; i++) {
             if (bit_is_set(i, run->mday)) {
                bsnprintf(num, sizeof(num), "%d ", i);
                bstrncat(buf, num, sizeof(buf));
@@ -927,7 +942,7 @@ next_run:
          bstrncat(buf, "\n", sizeof(buf));
          sendit(sock, buf);
          bstrncpy(buf, _("      wom="), sizeof(buf));
-         for (i=0; i<5; i++) {
+         for (i=0; i<6; i++) {
             if (bit_is_set(i, run->wom)) {
                bsnprintf(num, sizeof(num), "%d ", i);
                bstrncat(buf, num, sizeof(buf));
@@ -985,12 +1000,12 @@ next_run:
               NPRT(res->res_pool.label_format));
       sendit(sock, _("      CleaningPrefix=%s LabelType=%d\n"),
               NPRT(res->res_pool.cleaning_prefix), res->res_pool.LabelType);
-      sendit(sock, _("      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"), 
+      sendit(sock, _("      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"),
               res->res_pool.recycle_oldest_volume,
               res->res_pool.purge_oldest_volume,
               res->res_pool.action_on_purge);
       sendit(sock, _("      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"),
-              res->res_pool.MaxVolJobs, 
+              res->res_pool.MaxVolJobs,
               res->res_pool.MaxVolFiles,
               edit_uint64(res->res_pool.MaxVolBytes, ed1));
       sendit(sock, _("      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"),
@@ -1139,7 +1154,7 @@ void free_resource(RES *sres, int type)
       if (res->res_dir.DIRsrc_addr) {
          free_addresses(res->res_dir.DIRsrc_addr);
       }
-      if (res->res_dir.tls_ctx) { 
+      if (res->res_dir.tls_ctx) {
          free_tls_context(res->res_dir.tls_ctx);
       }
       if (res->res_dir.tls_ca_certfile) {
@@ -1171,7 +1186,7 @@ void free_resource(RES *sres, int type)
       if (res->res_con.password) {
          free(res->res_con.password);
       }
-      if (res->res_con.tls_ctx) { 
+      if (res->res_con.tls_ctx) {
          free_tls_context(res->res_con.tls_ctx);
       }
       if (res->res_con.tls_ca_certfile) {
@@ -1203,10 +1218,13 @@ void free_resource(RES *sres, int type)
       if (res->res_client.address) {
          free(res->res_client.address);
       }
+      if (res->res_client.fd_storage_address) {
+         free(res->res_client.fd_storage_address);
+      }
       if (res->res_client.password) {
          free(res->res_client.password);
       }
-      if (res->res_client.tls_ctx) { 
+      if (res->res_client.tls_ctx) {
          free_tls_context(res->res_client.tls_ctx);
       }
       if (res->res_client.tls_ca_certfile) {
@@ -1229,6 +1247,9 @@ void free_resource(RES *sres, int type)
       if (res->res_store.address) {
          free(res->res_store.address);
       }
+      if (res->res_store.fd_storage_address) {
+         free(res->res_store.fd_storage_address);
+      }
       if (res->res_store.password) {
          free(res->res_store.password);
       }
@@ -1238,7 +1259,7 @@ void free_resource(RES *sres, int type)
       if (res->res_store.device) {
          delete res->res_store.device;
       }
-      if (res->res_store.tls_ctx) { 
+      if (res->res_store.tls_ctx) {
          free_tls_context(res->res_store.tls_ctx);
       }
       if (res->res_store.tls_ca_certfile) {
@@ -1490,6 +1511,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
          res->res_job.storage    = res_all.res_job.storage;
          res->res_job.base       = res_all.res_job.base;
          res->res_job.pool       = res_all.res_job.pool;
+         res->res_job.next_pool  = res_all.res_job.next_pool;
          res->res_job.full_pool  = res_all.res_job.full_pool;
          res->res_job.inc_pool   = res_all.res_job.inc_pool;
          res->res_job.diff_pool  = res_all.res_job.diff_pool;
@@ -1499,13 +1521,13 @@ void save_resource(int type, RES_ITEM *items, int pass)
          res->res_job.RunScripts = res_all.res_job.RunScripts;
 
          /* TODO: JobDefs where/regexwhere doesn't work well (but this
-          * is not very useful) 
+          * is not very useful)
           * We have to set_bit(index, res_all.hdr.item_present);
           * or something like that
           */
 
          /* we take RegexWhere before all other options */
-         if (!res->res_job.RegexWhere 
+         if (!res->res_job.RegexWhere
              &&
              (res->res_job.strip_prefix ||
               res->res_job.add_suffix   ||
@@ -1617,7 +1639,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
       break;
    default:
       printf(_("Unknown resource type %d in save_resource.\n"), type);
-      error = true; 
+      error = true;
       break;
    }
    /* Common */
@@ -1633,7 +1655,7 @@ void save_resource(int type, RES_ITEM *items, int pass)
          if (res->res_dir.hdr.name == NULL) {
             Emsg1(M_ERROR_TERM, 0, _("Name item is required in %s resource, but not found.\n"),
                   resources[rindex]);
-         }   
+         }
          /* Add new res to end of chain */
          for (last=next=res_head[rindex]; next; next=next->next) {
             last = next;
@@ -1855,7 +1877,7 @@ static void store_runscript_when(LEX *lc, RES_ITEM *item, int index, int pass)
 }
 
 /* Store a runscript->target
- * 
+ *
  */
 static void store_runscript_target(LEX *lc, RES_ITEM *item, int index, int pass)
 {
@@ -1922,7 +1944,7 @@ static void store_short_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
          script->on_success = true;
          script->on_failure = false;
          script->set_target("");
-         
+
       } else if (strcmp(item->name, "clientrunafterjob") == 0) {
          script->old_proto = true;
          script->when = SCRIPT_After;
@@ -1946,7 +1968,7 @@ static void store_short_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
       if (*runscripts == NULL) {
         *runscripts = New(alist(10, not_owned_by_alist));
       }
-      
+
       (*runscripts)->append(script);
       script->debug();
    }
@@ -1954,7 +1976,7 @@ static void store_short_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
    scan_to_eol(lc);
 }
 
-/* Store a bool in a bit field without modifing res_all.hdr 
+/* Store a bool in a bit field without modifing res_all.hdr
  * We can also add an option to store_bool to skip res_all.hdr
  */
 void store_runscript_bool(LEX *lc, RES_ITEM *item, int index, int pass)
@@ -1975,9 +1997,9 @@ void store_runscript_bool(LEX *lc, RES_ITEM *item, int index, int pass)
  *   name     handler     value               code flags default_value
  */
 static RES_ITEM runscript_items[] = {
- {"command",        store_runscript_cmd,  {(char **)&res_runscript},     SHELL_CMD, 0, 0}, 
- {"console",        store_runscript_cmd,  {(char **)&res_runscript},     CONSOLE_CMD, 0, 0}, 
- {"target",         store_runscript_target,{(char **)&res_runscript},          0,  0, 0}, 
+ {"command",        store_runscript_cmd,  {(char **)&res_runscript},     SHELL_CMD, 0, 0},
+ {"console",        store_runscript_cmd,  {(char **)&res_runscript},     CONSOLE_CMD, 0, 0},
+ {"target",         store_runscript_target,{(char **)&res_runscript},          0,  0, 0},
  {"runsonsuccess",  store_runscript_bool, {(char **)&res_runscript.on_success},0,  0, 0},
  {"runsonfailure",  store_runscript_bool, {(char **)&res_runscript.on_failure},0,  0, 0},
  {"failjobonerror",store_runscript_bool, {(char **)&res_runscript.fail_on_error},0, 0, 0},
@@ -2003,12 +2025,12 @@ static void store_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
    Dmsg1(200, "store_runscript: begin store_runscript pass=%i\n", pass);
 
    token = lex_get_token(lc, T_SKIP_EOL);
-   
+
    if (token != T_BOB) {
       scan_err1(lc, _("Expecting open brace. Got %s"), lc->str);
    }
    /* setting on_success, on_failure, fail_on_error */
-   res_runscript.reset_default();   
+   res_runscript.reset_default();
 
    if (pass == 2) {
       res_runscript.commands = New(alist(10, not_owned_by_alist));
@@ -2027,14 +2049,14 @@ static void store_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
            if (token != T_EQUALS) {
               scan_err1(lc, _("expected an equals, got: %s"), lc->str);
            }
-           
+
            /* Call item handler */
            runscript_items[i].handler(lc, &runscript_items[i], i, pass);
            i = -1;
            break;
         }
       }
-      
+
       if (i >=0) {
         scan_err1(lc, _("Keyword %s not permitted in this resource"), lc->str);
       }
@@ -2050,7 +2072,7 @@ static void store_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
       }
       /*
        * commands list contains 2 values per command
-       *  - POOLMEM command string (ex: /bin/true) 
+       *  - POOLMEM command string (ex: /bin/true)
        *  - int command type (ex: SHELL_CMD)
        */
       res_runscript.set_job_code_callback(job_code_callback_director);
@@ -2061,7 +2083,7 @@ static void store_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
          script->command = c;
          script->cmd_type = t;
          /* target is taken from res_runscript, each runscript object have
-          * a copy 
+          * a copy
           */
          script->target = NULL;
          script->set_target(res_runscript.target);
@@ -2071,7 +2093,7 @@ static void store_runscript(LEX *lc, RES_ITEM *item, int index, int pass)
       }
       delete res_runscript.commands;
       /* setting on_success, on_failure... cleanup target field */
-      res_runscript.reset_default(true); 
+      res_runscript.reset_default(true);
    }
 
    scan_to_eol(lc);
@@ -2107,10 +2129,10 @@ extern "C" char *job_code_callback_director(JCR *jcr, const char* param)
          break;
       case 'x':
          return jcr->spool_data ? yes : no;
-         break;
       case 'D':
          return my_name;
-         break;
+      case 'C':
+         return jcr->cloned ? yes : no;
    }
    return NULL;
 }
diff --git a/src/dird/dird_conf.h b/src/dird/dird_conf.h
index 9525781..b3eea1e 100644
--- a/src/dird/dird_conf.h
+++ b/src/dird/dird_conf.h
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Director specific configuration and defines
  *
- *     Kern Sibbald, Feb MM
+ *     Written by Kern Sibbald, Feb MM
  *
  */
 
@@ -115,6 +103,7 @@ public:
    char *subsys_directory;            /* SubsysDirectory */
    MSGS *messages;                    /* Daemon message handler */
    uint32_t MaxConcurrentJobs;        /* Max concurrent jobs for whole director */
+   uint32_t MaxSpawnedJobs;           /* Max Jobs that can be started by Migration/Copy */
    uint32_t MaxConsoleConnect;        /* Max concurrent console session */
    utime_t FDConnectTimeout;          /* timeout for connect in seconds */
    utime_t SDConnectTimeout;          /* timeout in seconds */
@@ -141,7 +130,7 @@ inline char *DIRRES::name() const { return hdr.name; }
 /*
  * Device Resource
  *  This resource is a bit different from the other resources
- *  because it is not defined in the Director 
+ *  because it is not defined in the Director
  *  by DEVICE { ... }, but rather by a "reference" such as
  *  DEVICE = xxx; Then when the Director connects to the
  *  SD, it requests the information about the device.
@@ -257,6 +246,7 @@ public:
    utime_t JobRetention;              /* job retention period in seconds */
    utime_t heartbeat_interval;        /* Interval to send heartbeats */
    char *address;
+   char *fd_storage_address;          /* Storage address to use from FD side  */
    char *password;
    CAT *catalog;                      /* Catalog resource */
    int32_t MaxConcurrentJobs;         /* Maximum concurrent jobs */
@@ -271,6 +261,8 @@ public:
    bool tls_enable;                   /* Enable TLS */
    bool tls_require;                  /* Require TLS */
    bool AutoPrune;                    /* Do automatic pruning? */
+   bool sd_calls_client;              /* SD calls the client */
+   int64_t max_bandwidth;             /* Limit speed on this client */
 
    /* Methods */
    char *name() const;
@@ -290,6 +282,7 @@ public:
    uint32_t SDport;                   /* port where Directors connect */
    uint32_t SDDport;                  /* data port for File daemon */
    char *address;
+   char *fd_storage_address;          /* Storage address to use from FD side  */
    char *password;
    char *media_type;
    alist *device;                     /* Alternate devices for this Storage */
@@ -318,7 +311,7 @@ public:
 };
 
 inline char *STORE::dev_name() const
-{ 
+{
    DEVICE *dev = (DEVICE *)device->first();
    return dev->name();
 }
@@ -336,9 +329,9 @@ public:
    POOLMEM *store_source;
 
    /* Methods */
-   USTORE() { store = NULL; store_source = get_pool_memory(PM_MESSAGE); 
+   USTORE() { store = NULL; store_source = get_pool_memory(PM_MESSAGE);
               *store_source = 0; };
-   ~USTORE() { destroy(); }   
+   ~USTORE() { destroy(); }
    void set_source(const char *where);
    void destroy();
 };
@@ -401,6 +394,7 @@ public:
    int64_t spool_size;                /* Size of spool file for this job */
    int32_t MaxConcurrentJobs;         /* Maximum concurrent jobs */
    int32_t NumConcurrentJobs;         /* number of concurrent jobs running */
+   uint32_t MaxSpawnedJobs;           /* Max Jobs that can be started by Migration/Copy */
    bool allow_mixed_priority;         /* Allow jobs with higher priority concurrently with this */
 
    MSGS      *messages;               /* How and where to send messages */
@@ -409,6 +403,7 @@ public:
    FILESET   *fileset;                /* What to backup -- Fileset */
    alist     *storage;                /* Where is device -- list of Storage to be used */
    POOL      *pool;                   /* Where is media -- Media Pool */
+   POOL      *next_pool;              /* Next Pool for Copy/Migrate/VirtualFull */
    POOL      *full_pool;              /* Pool for Full backups */
    POOL      *inc_pool;               /* Pool for Incremental backups */
    POOL      *diff_pool;              /* Pool for Differental backups */
@@ -442,7 +437,8 @@ public:
    bool PurgeMigrateJob;              /* Purges source job on completion */
    bool IgnoreDuplicateJobChecking;   /* Ignore Duplicate Job Checking */
 
-   alist *base;                       /* Base jobs */   
+   alist *base;                       /* Base jobs */
+   int64_t max_bandwidth;             /* Speed limit on this job */
 
    /* Methods */
    char *name() const;
@@ -516,8 +512,11 @@ public:
    RES   hdr;
 
    RUN *run;
+   char *name() const;
 };
 
+inline char *SCHED::name() const { return hdr.name; }
+
 /*
  *   Counter Resource
  */
@@ -622,8 +621,11 @@ public:
    bool accurate_set;                 /* accurate given */
    bool write_part_after_job;         /* Write part after job override */
    bool write_part_after_job_set;     /* Write part after job override given */
-   
+   bool priority_set;                 /* priority override given */
+   bool level_set;                    /* level override given */
+
    POOL *pool;                        /* Pool override */
+   POOL *next_pool;                   /* Next pool override */
    POOL *full_pool;                   /* Pool override */
    POOL *inc_pool;                    /* Pool override */
    POOL *diff_pool;                   /* Pool override */
@@ -635,10 +637,10 @@ public:
    time_t last_run;                   /* last time run */
    time_t next_run;                   /* next time to run */
    char hour[nbytes_for_bits(24)];    /* bit set for each hour */
-   char mday[nbytes_for_bits(31)];    /* bit set for each day of month */
+   char mday[nbytes_for_bits(32)];    /* bit set for each day of month */
    char month[nbytes_for_bits(12)];   /* bit set for each month */
    char wday[nbytes_for_bits(7)];     /* bit set for each day of the week */
-   char wom[nbytes_for_bits(5)];      /* week of month */
+   char wom[nbytes_for_bits(6)];      /* week of month */
    char woy[nbytes_for_bits(54)];     /* week of year */
 };
 
diff --git a/src/dird/expand.c b/src/dird/expand.c
index 894be0d..c9be631 100644
--- a/src/dird/expand.c
+++ b/src/dird/expand.c
@@ -10,29 +10,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bacula.h"
diff --git a/src/dird/fd_cmds.c b/src/dird/fd_cmds.c
index e294b29..adff580 100644
--- a/src/dird/fd_cmds.c
+++ b/src/dird/fd_cmds.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -52,6 +40,7 @@ static char jobcmd[]      = "JobId=%s Job=%s SDid=%u SDtime=%u Authorization=%s\
 static char levelcmd[]    = "level = %s%s%s mtime_only=%d %s%s\n";
 static char runscript[]   = "Run OnSuccess=%u OnFailure=%u AbortOnError=%u When=%u Command=%s\n";
 static char runbeforenow[]= "RunBeforeNow\n";
+static char bandwidthcmd[] = "setbandwidth=%lld Job=%s\n";
 
 /* Responses received from File daemon */
 static char OKinc[]          = "2000 OK include\n";
@@ -60,6 +49,7 @@ static char OKlevel[]        = "2000 OK level\n";
 static char OKRunScript[]    = "2000 OK RunScript\n";
 static char OKRunBeforeNow[] = "2000 OK RunBeforeNow\n";
 static char OKRestoreObject[] = "2000 OK ObjectRestored\n";
+static char OKBandwidth[]    = "2000 OK Bandwidth\n";
 
 /* Forward referenced functions */
 static bool send_list_item(JCR *jcr, const char *code, char *item, BSOCK *fd);
@@ -80,42 +70,40 @@ extern int FDConnectTimeout;
 int connect_to_file_daemon(JCR *jcr, int retry_interval, int max_retry_time,
                            int verbose)
 {
-   BSOCK   *fd = new_bsock();
+   BSOCK   *fd = jcr->file_bsock;
    char ed1[30];
    utime_t heart_beat;
 
    if (jcr->client->heartbeat_interval) {
       heart_beat = jcr->client->heartbeat_interval;
-   } else {           
+   } else {
       heart_beat = director->heartbeat_interval;
    }
 
-   if (!jcr->file_bsock) {
+   if (!is_bsock_open(jcr->file_bsock)) {
       char name[MAX_NAME_LENGTH + 100];
+
+      if (!fd) {
+         fd = jcr->file_bsock = new_bsock();
+      }
       bstrncpy(name, _("Client: "), sizeof(name));
       bstrncat(name, jcr->client->name(), sizeof(name));
 
       fd->set_source_address(director->DIRsrc_addr);
       if (!fd->connect(jcr,retry_interval,max_retry_time, heart_beat, name, jcr->client->address,
            NULL, jcr->client->FDport, verbose)) {
-        fd->destroy();
-        fd = NULL;
-      }
-
-      if (fd == NULL) {
+         fd->close();
          jcr->setJobStatus(JS_ErrorTerminated);
          return 0;
       }
       Dmsg0(10, "Opened connection with File daemon\n");
-   } else {
-      fd = jcr->file_bsock;           /* use existing connection */
    }
    fd->res = (RES *)jcr->client;      /* save resource in BSOCK */
-   jcr->file_bsock = fd;
    jcr->setJobStatus(JS_Running);
 
    if (!authenticate_file_daemon(jcr)) {
       jcr->setJobStatus(JS_ErrorTerminated);
+      Dmsg0(10, "Authentication error with FD.\n");
       return 0;
    }
 
@@ -153,7 +141,7 @@ int connect_to_file_daemon(JCR *jcr, int retry_interval, int max_retry_time,
        }
    } else {
       Jmsg(jcr, M_FATAL, 0, _("FD gave bad response to JobId command: %s\n"),
-         bnet_strerror(fd));
+         fd->bstrerror());
       jcr->setJobStatus(JS_ErrorTerminated);
       return 0;
    }
@@ -188,7 +176,7 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
    /* Make sure stime buffer is allocated */
    if (!jcr->stime) {
       jcr->stime = get_pool_memory(PM_MESSAGE);
-   } 
+   }
    jcr->PrevJob[0] = jcr->stime[0] = 0;
    /*
     * Lookup the last FULL backup job to get the time/date for a
@@ -208,19 +196,19 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
       if (!db_find_job_start_time(jcr,jcr->db, &jcr->jr, &jcr->stime, jcr->PrevJob)) {
          do_full = true;
       }
-      have_full = db_find_last_job_start_time(jcr, jcr->db, &jcr->jr, 
+      have_full = db_find_last_job_start_time(jcr, jcr->db, &jcr->jr,
                                               &stime, prev_job, L_FULL);
       if (have_full) {
          last_full_time = str_to_utime(stime);
       } else {
          do_full = true;               /* No full, upgrade to one */
       }
-      Dmsg4(50, "have_full=%d do_full=%d now=%lld full_time=%lld\n", have_full, 
+      Dmsg4(50, "have_full=%d do_full=%d now=%lld full_time=%lld\n", have_full,
             do_full, now, last_full_time);
       /* Make sure the last diff is recent enough */
       if (have_full && jcr->getJobLevel() == L_INCREMENTAL && jcr->job->MaxDiffInterval > 0) {
          /* Lookup last diff job */
-         if (db_find_last_job_start_time(jcr, jcr->db, &jcr->jr, 
+         if (db_find_last_job_start_time(jcr, jcr->db, &jcr->jr,
                                          &stime, prev_job, L_DIFFERENTIAL)) {
             last_diff_time = str_to_utime(stime);
             /* If no Diff since Full, use Full time */
@@ -275,7 +263,7 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
       jcr->jr.JobId = jcr->JobId;
       break;
    }
-   Dmsg3(100, "Level=%c last start time=%s job=%s\n", 
+   Dmsg3(100, "Level=%c last start time=%s job=%s\n",
          jcr->getJobLevel(), jcr->stime, jcr->PrevJob);
 }
 
@@ -286,13 +274,26 @@ static void send_since_time(JCR *jcr)
    char ed1[50];
 
    stime = str_to_utime(jcr->stime);
-   fd->fsend(levelcmd, "", NT_("since_utime "), edit_uint64(stime, ed1), 0, 
+   fd->fsend(levelcmd, "", NT_("since_utime "), edit_uint64(stime, ed1), 0,
              NT_("prev_job="), jcr->PrevJob);
    while (bget_dirmsg(fd) >= 0) {  /* allow him to poll us to sync clocks */
       Jmsg(jcr, M_INFO, 0, "%s\n", fd->msg);
    }
 }
 
+bool send_bwlimit(JCR *jcr, const char *Job)
+{
+   BSOCK *fd = jcr->file_bsock;
+   if (jcr->FDVersion >= 4) {
+      fd->fsend(bandwidthcmd, jcr->max_bandwidth, Job);
+      if (!response(jcr, fd, OKBandwidth, "Bandwidth", DISPLAY_ERROR)) {
+         jcr->max_bandwidth = 0;      /* can't set bandwidth limit */
+         return false;
+      }
+   }
+   return true;
+}
+
 /*
  * Send level command to FD.
  * Used for backup jobs and estimate command.
@@ -366,7 +367,7 @@ static bool send_fileset(JCR *jcr)
             fd->fsend("E\n");
          }
          if (ie->ignoredir) {
-            bnet_fsend(fd, "Z %s\n", ie->ignoredir);
+            fd->fsend("Z %s\n", ie->ignoredir);
          }
          for (j=0; j<ie->num_opts; j++) {
             FOPTS *fo = ie->opts_list[j];
@@ -382,9 +383,9 @@ static bool send_fileset(JCR *jcr)
             /* Strip out compression option Zn if disallowed for this Storage */
             if (store && !store->AllowCompress) {
                char newopts[MAX_FOPTS];
-               bool done=false;         /* print warning only if compression enabled in FS */ 
+               bool done=false;         /* print warning only if compression enabled in FS */
                int j = 0;
-               for (k=0; fo->opts[k]!='\0'; k++) {                   
+               for (k=0; fo->opts[k]!='\0'; k++) {
                  /* Z compress option is followed by the single-digit compress level or 'o' */
                  if (fo->opts[k]=='Z') {
                     done=true;
@@ -507,7 +508,8 @@ static bool send_list_item(JCR *jcr, const char *code, char *item, BSOCK *fd)
       while (fgets(buf+optlen, sizeof(buf)-optlen, bpipe->rfd)) {
          fd->msglen = Mmsg(fd->msg, "%s", buf);
          Dmsg2(500, "Inc/exc len=%d: %s", fd->msglen, fd->msg);
-         if (!bnet_send(fd)) {
+         if (!fd->send()) {
+            close_bpipe(bpipe);
             Jmsg(jcr, M_FATAL, 0, _(">filed: write error on socket\n"));
             return false;
          }
@@ -532,7 +534,8 @@ static bool send_list_item(JCR *jcr, const char *code, char *item, BSOCK *fd)
       optlen = strlen(buf);
       while (fgets(buf+optlen, sizeof(buf)-optlen, ffd)) {
          fd->msglen = Mmsg(fd->msg, "%s", buf);
-         if (!bnet_send(fd)) {
+         if (!fd->send()) {
+            fclose(ffd);
             Jmsg(jcr, M_FATAL, 0, _(">filed: write error on socket\n"));
             return false;
          }
@@ -553,7 +556,7 @@ static bool send_list_item(JCR *jcr, const char *code, char *item, BSOCK *fd)
       break;
    }
    return true;
-}            
+}
 
 
 /*
@@ -569,7 +572,6 @@ bool send_include_list(JCR *jcr)
    return true;
 }
 
-
 /*
  * Send exclude list to File daemon
  *   Under the new scheme, the Exclude list
@@ -592,10 +594,10 @@ int send_runscript_with_old_proto(JCR *jcr, int when, POOLMEM *msg)
    int ret;
    Dmsg1(120, "bdird: sending old runcommand to fd '%s'\n",msg);
    if (when & SCRIPT_Before) {
-      bnet_fsend(jcr->file_bsock, runbefore, msg);
+      jcr->file_bsock->fsend(runbefore, msg);
       ret = response(jcr, jcr->file_bsock, OKRunBefore, "ClientRunBeforeJob", DISPLAY_ERROR);
    } else {
-      bnet_fsend(jcr->file_bsock, runafter, msg);
+      jcr->file_bsock->fsend(runafter, msg);
       ret = response(jcr, jcr->file_bsock, OKRunAfter, "ClientRunAfterJob", DISPLAY_ERROR);
    }
    return ret;
@@ -617,7 +619,7 @@ int send_runscripts_commands(JCR *jcr)
    int result;
 
    Dmsg0(120, "bdird: sending runscripts to fd\n");
-   
+
    foreach_alist(cmd, jcr->job->RunScripts) {
       if (cmd->can_run_at_level(jcr->getJobLevel()) && cmd->target) {
          ehost = edit_job_codes(jcr, ehost, cmd->target, "");
@@ -628,13 +630,13 @@ int send_runscripts_commands(JCR *jcr)
             bash_spaces(msg);
 
             Dmsg1(120, "bdird: sending runscripts to fd '%s'\n", cmd->command);
-            
+
             /* TODO: remove this with bacula 1.42 */
             if (cmd->old_proto) {
                result = send_runscript_with_old_proto(jcr, cmd->when, msg);
 
             } else {
-               fd->fsend(runscript, cmd->on_success, 
+               fd->fsend(runscript, cmd->on_success,
                                     cmd->on_failure,
                                     cmd->fail_on_error,
                                     cmd->when,
@@ -643,7 +645,7 @@ int send_runscripts_commands(JCR *jcr)
                result = response(jcr, fd, OKRunScript, "RunScript", DISPLAY_ERROR);
                launch_before_cmd = true;
             }
-            
+
             if (!result) {
                goto bail_out;
             }
@@ -654,8 +656,8 @@ int send_runscripts_commands(JCR *jcr)
            send command to an other client
            }
          */
-      }        
-   } 
+      }
+   }
 
    /* Tell the FD to execute the ClientRunBeforeJob */
    if (launch_before_cmd) {
@@ -693,7 +695,7 @@ static int restore_object_handler(void *ctx, int num_fields, char **row)
    /* Old File Daemon doesn't handle restore objects */
    if (jcr->FDVersion < 3) {
       Jmsg(jcr, M_WARNING, 0, _("Client \"%s\" may not be used to restore "
-                                "this job. Please upgrade your client.\n"), 
+                                "this job. Please upgrade your client.\n"),
            jcr->client->name());
       return 1;
    }
@@ -703,7 +705,7 @@ static int restore_object_handler(void *ctx, int num_fields, char **row)
                 row[0], row[1], row[2], row[3], row[4], row[5], row[6]);
    } else {
       /* bash spaces from PluginName */
-      bash_spaces(row[9]);      
+      bash_spaces(row[9]);
       fd->fsend("restoreobject JobId=%s %s,%s,%s,%s,%s,%s,%s\n",
                 row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[9]);
    }
@@ -718,16 +720,16 @@ static int restore_object_handler(void *ctx, int num_fields, char **row)
 //   Dmsg1(000, "obj size: %lld\n", (uint64_t)fd->msglen);
 
    /* object */
-   db_unescape_object(jcr, jcr->db, 
+   db_unescape_object(jcr, jcr->db,
                       row[8],                /* Object  */
                       str_to_uint64(row[1]), /* Object length */
                       &fd->msg, &fd->msglen);
    fd->send();                           /* send object */
    octx->count++;
 
-   if (debug_level) {
+   if (debug_level > 100) {
       for (int i=0; i < fd->msglen; i++)
-         if (!fd->msg[i]) 
+         if (!fd->msg[i])
             fd->msg[i] = ' ';
       Dmsg1(000, "Send obj: %s\n", fd->msg);
    }
@@ -735,6 +737,12 @@ static int restore_object_handler(void *ctx, int num_fields, char **row)
    return 0;
 }
 
+/*
+ * Send the plugin Restore Objects, which allow the
+ *  plugin to get information early in the restore
+ *  process.  The RestoreObjects were created during
+ *  the backup by the plugin.
+ */
 bool send_restore_objects(JCR *jcr)
 {
    char ed1[50];
@@ -747,15 +755,15 @@ bool send_restore_objects(JCR *jcr)
    }
    octx.jcr = jcr;
    octx.count = 0;
-   
+
    /* restore_object_handler is called for each file found */
-   
+
    /* send restore objects for all jobs involved  */
    Mmsg(query, get_restore_objects, jcr->JobIds, FT_RESTORE_FIRST);
    db_sql_query(jcr->db, query.c_str(), restore_object_handler, (void *)&octx);
 
    /* send config objects for the current restore job */
-   Mmsg(query, get_restore_objects, 
+   Mmsg(query, get_restore_objects,
         edit_uint64(jcr->JobId, ed1), FT_PLUGIN_CONFIG_FILLED);
    db_sql_query(jcr->db, query.c_str(), restore_object_handler, (void *)&octx);
 
@@ -774,8 +782,6 @@ bool send_restore_objects(JCR *jcr)
    return true;
 }
 
-
-
 /*
  * Read the attributes from the File daemon for
  * a Verify job and store them in the catalog.
@@ -802,10 +808,17 @@ int get_attributes_and_put_in_catalog(JCR *jcr)
       char *p, *fn;
       char Digest[MAXSTRING];      /* either Verify opts or MD5/SHA1 digest */
 
+      /* Stop here if canceled */
+      if (jcr->is_job_canceled()) {
+         jcr->cached_attribute = false;
+         return 0;
+      }
+
       if ((len = sscanf(fd->msg, "%ld %d %s", &file_index, &stream, Digest)) != 3) {
          Jmsg(jcr, M_FATAL, 0, _("<filed: bad attributes, expected 3 fields got %d\n"
 "msglen=%d msg=%s\n"), len, fd->msglen, fd->msg);
          jcr->setJobStatus(JS_ErrorTerminated);
+         jcr->cached_attribute = false;
          return 0;
       }
       p = fd->msg;
@@ -824,6 +837,7 @@ int get_attributes_and_put_in_catalog(JCR *jcr)
             if (!db_create_file_attributes_record(jcr, jcr->db, ar)) {
                Jmsg1(jcr, M_FATAL, 0, _("Attribute create error. %s"), db_strerror(jcr->db));
             }
+            jcr->cached_attribute = false;
          }
          /* Any cached attr is flushed so we can reuse jcr->attr and jcr->ar */
          fn = jcr->fname = check_pool_memory_size(jcr->fname, fd->msglen);
@@ -842,7 +856,6 @@ int get_attributes_and_put_in_catalog(JCR *jcr)
          ar->JobId = jcr->JobId;
          ar->ClientId = jcr->ClientId;
          ar->PathId = 0;
-         ar->FilenameId = 0;
          ar->Digest = NULL;
          ar->DigestType = CRYPTO_DIGEST_NONE;
          ar->DeltaSeq = 0;
@@ -872,18 +885,19 @@ int get_attributes_and_put_in_catalog(JCR *jcr)
       jcr->jr.JobFiles = jcr->JobFiles = file_index;
       jcr->jr.LastIndex = file_index;
    }
-   if (is_bnet_error(fd)) {
+   if (fd->is_error()) {
       Jmsg1(jcr, M_FATAL, 0, _("<filed: Network error getting attributes. ERR=%s\n"),
             fd->bstrerror());
+      jcr->cached_attribute = false;
       return 0;
    }
    if (jcr->cached_attribute) {
-      Dmsg3(dbglvl, "Cached attr with digest. Stream=%d fname=%s attr=%s\n", ar->Stream,            
+      Dmsg3(dbglvl, "Cached attr with digest. Stream=%d fname=%s attr=%s\n", ar->Stream,
          ar->fname, ar->attr);
       if (!db_create_file_attributes_record(jcr, jcr->db, ar)) {
          Jmsg1(jcr, M_FATAL, 0, _("Attribute create error. %s"), db_strerror(jcr->db));
       }
-      jcr->cached_attribute = false; 
+      jcr->cached_attribute = false;
    }
    jcr->setJobStatus(JS_Terminated);
    return 1;
diff --git a/src/dird/getmsg.c b/src/dird/getmsg.c
index b30b214..364298b 100644
--- a/src/dird/getmsg.c
+++ b/src/dird/getmsg.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -94,10 +82,6 @@ static void set_jcr_sd_job_status(JCR *jcr, int SDJobStatus)
       jcr->wait_time = time(NULL);
    }
    jcr->SDJobStatus = SDJobStatus;
-   if (jcr->SDJobStatus == JS_Incomplete) {
-      jcr->setJobStatus(JS_Incomplete);
-   }
-      
 }
 
 /*
@@ -112,7 +96,7 @@ static void set_jcr_sd_job_status(JCR *jcr, int SDJobStatus)
  *  to the appropriate handler.  If the message is
  *  in any other format, it will be returned.
  *
- *  E.g. any message beginning with a digit will be passed   
+ *  E.g. any message beginning with a digit will be passed
  *       through to the caller.
  *  All other messages are expected begin with some identifier
  *    -- for the moment only the first character is checked, but
@@ -122,7 +106,7 @@ static void set_jcr_sd_job_status(JCR *jcr, int SDJobStatus)
  *    place (Job message, catalog request, ...). The Job is used to lookup
  *    the JCR so that the action is performed on the correct jcr, and
  *    the rest of the message is up to the user.  Note, DevUpd uses
- *    *System* for the Job name, and hence no JCR is obtained. This   
+ *    *System* for the Job name, and hence no JCR is obtained. This
  *    is a *rare* case where a jcr is not really needed.
  *
  */
@@ -242,7 +226,7 @@ int bget_dirmsg(BSOCK *bs)
       if (bs->msg[0] == 'B') {        /* SD sending file spool attributes */
          Dmsg2(100, "Blast attributes jcr 0x%x: %s", jcr, bs->msg);
          char filename[256];
-         if (sscanf(bs->msg, "BlastAttr Job=%127s File=%255s", 
+         if (sscanf(bs->msg, "BlastAttr Job=%127s File=%255s",
                     Job, filename) != 2) {
             Jmsg1(jcr, M_ERROR, 0, _("Malformed message: %s\n"), bs->msg);
             continue;
@@ -260,6 +244,20 @@ int bget_dirmsg(BSOCK *bs)
          mount_request(jcr, bs, msg);
          continue;
       }
+      /* Get Progress: files, bytes, bytes/sec */
+      if (bs->msg[0] == 'P') {       /* Progress report */
+         uint32_t files, bps;
+         uint64_t bytes;
+         if (sscanf(bs->msg, "Progress Job=x files=%ld bytes=%lld bps=%ld\n",
+             &files, &bytes, &bps) == 3) {
+           Dmsg2(900, "JobId=%d %s", jcr->JobId, bs->msg);
+           /* Save progress data */
+           jcr->JobFiles = files;
+           jcr->JobBytes = bytes;
+           jcr->LastRate = bps;
+         }
+         continue;
+      }
       if (bs->msg[0] == 'S') {       /* Status change */
          int JobStatus;
          char Job[MAX_NAME_LENGTH];
@@ -286,8 +284,8 @@ int bget_dirmsg(BSOCK *bs)
              &dev_append, &dev_read,
              &dev_num_writers, &dev_open,
              &dev_labeled, &dev_offline, &dev_reserved,
-             &dev_max_writers, &dev_autoselect, 
-             &dev_autochanger, 
+             &dev_max_writers, &dev_autoselect,
+             &dev_autochanger,
              changer_name.c_str(), media_type.c_str(),
              volume_name.c_str(),
              &dev_read_time, &dev_write_time, &dev_read_bytes,
@@ -356,7 +354,7 @@ bool response(JCR *jcr, BSOCK *bs, char *resp, const char *cmd, e_prtmsg prtmsg)
 {
    int n;
 
-   if (is_bnet_error(bs)) {
+   if (bs->is_error()) {
       return false;
    }
    if ((n = bget_dirmsg(bs)) >= 0) {
@@ -370,6 +368,6 @@ bool response(JCR *jcr, BSOCK *bs, char *resp, const char *cmd, e_prtmsg prtmsg)
       return false;
    }
    Jmsg(jcr, M_FATAL, 0, _("Socket error on %s command: ERR=%s\n"),
-         cmd, bnet_strerror(bs));
+         cmd, bs->bstrerror());
    return false;
 }
diff --git a/src/dird/inc_conf.c b/src/dird/inc_conf.c
index 7df0be1..a463553 100644
--- a/src/dird/inc_conf.c
+++ b/src/dird/inc_conf.c
@@ -1,37 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Configuration file parser for new and old Include and
  *      Exclude records
  *
- *     Kern Sibbald, March MMIII
+ *     Written by Kern Sibbald, March MMIII
  *
- *     Version $Id$
  */
 
 #include "bacula.h"
diff --git a/src/dird/job.c b/src/dird/job.c
index 9865e37..08c9fee 100644
--- a/src/dird/job.c
+++ b/src/dird/job.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -97,15 +85,15 @@ JobId_t run_job(JCR *jcr)
       return jcr->JobId;
    }
    return 0;
-}            
+}
 
-bool setup_job(JCR *jcr) 
+bool setup_job(JCR *jcr)
 {
    int errstat;
 
    jcr->lock();
    Dsm_check(100);
-   init_msg(jcr, jcr->messages);
+   init_msg(jcr, jcr->messages, job_code_callback_director);
 
    /* Initialize termination condition variable */
    if ((errstat = pthread_cond_init(&jcr->term_wait, NULL)) != 0) {
@@ -124,7 +112,7 @@ bool setup_job(JCR *jcr)
     * Open database
     */
    Dmsg0(100, "Open database\n");
-   jcr->db = db_init_database(jcr, jcr->catalog->db_driver, jcr->catalog->db_name, 
+   jcr->db = db_init_database(jcr, jcr->catalog->db_driver, jcr->catalog->db_name,
                               jcr->catalog->db_user, jcr->catalog->db_password,
                               jcr->catalog->db_address, jcr->catalog->db_port,
                               jcr->catalog->db_socket, jcr->catalog->mult_db_connections,
@@ -146,6 +134,10 @@ bool setup_job(JCR *jcr)
       jcr->pool_source = get_pool_memory(PM_MESSAGE);
       pm_strcpy(jcr->pool_source, _("unknown source"));
    }
+   if (!jcr->next_pool_source) {
+      jcr->next_pool_source = get_pool_memory(PM_MESSAGE);
+      pm_strcpy(jcr->next_pool_source, _("unknown source"));
+   }
 
    if (jcr->JobReads()) {
       if (!jcr->rpool_source) {
@@ -221,8 +213,8 @@ bool setup_job(JCR *jcr)
       break;
    case JT_COPY:
    case JT_MIGRATE:
-      if (!do_migration_init(jcr)) { 
-         migration_cleanup(jcr, JS_ErrorTerminated);
+      if (!do_mac_init(jcr)) {
+         mac_cleanup(jcr, JS_ErrorTerminated, JS_ErrorTerminated);
          goto bail_out;
       }
       break;
@@ -232,7 +224,6 @@ bool setup_job(JCR *jcr)
       goto bail_out;
    }
 
-   generate_job_event(jcr, "JobInit");
    generate_plugin_event(jcr, bDirEventJobInit);
    Dsm_check(100);
    return true;
@@ -305,7 +296,6 @@ static void *job_thread(void *arg)
    if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
    }
-   generate_job_event(jcr, "JobRun");
    generate_plugin_event(jcr, bDirEventJobRun);
 
    switch (jcr->getJobType()) {
@@ -339,10 +329,10 @@ static void *job_thread(void *arg)
       break;
    case JT_COPY:
    case JT_MIGRATE:
-      if (!job_canceled(jcr) && do_migration(jcr)) {
+      if (!job_canceled(jcr) && do_mac(jcr)) {
          do_autoprune(jcr);
       } else {
-         migration_cleanup(jcr, JS_ErrorTerminated);
+         mac_cleanup(jcr, JS_ErrorTerminated, JS_ErrorTerminated);
       }
       break;
    default:
@@ -368,7 +358,7 @@ void sd_msg_thread_send_signal(JCR *jcr, int sig)
 {
    jcr->lock();
    if (  !jcr->sd_msg_thread_done
-       && jcr->SD_msg_chan 
+       && jcr->SD_msg_chan_started
        && !pthread_equal(jcr->SD_msg_chan, pthread_self()))
    {
       Dmsg1(800, "Send kill to SD msg chan jid=%d\n", jcr->JobId);
@@ -377,6 +367,132 @@ void sd_msg_thread_send_signal(JCR *jcr, int sig)
    jcr->unlock();
 }
 
+static int cancel_file_daemon_job(UAContext *ua, const char *cmd, JCR *jcr)
+{
+   if (!jcr->client) {
+      Dmsg0(100, "No client to cancel\n");
+      return 0;
+   }
+   ua->jcr->client = jcr->client;
+   if (!connect_to_file_daemon(ua->jcr, 10, FDConnectTimeout, 1)) {
+      ua->error_msg(_("Failed to connect to File daemon.\n"));
+      return 0;
+   }
+   Dmsg0(100, "Connected to file daemon\n");
+   BSOCK *fd = ua->jcr->file_bsock;
+   fd->fsend("%s Job=%s\n", cmd, jcr->Job);
+   while (fd->recv() >= 0) {
+      ua->send_msg("%s", fd->msg);
+   }
+   fd->signal(BNET_TERMINATE);
+   free_bsock(ua->jcr->file_bsock);
+   ua->jcr->client = NULL;
+   return 1;
+}
+
+static bool cancel_sd_job(UAContext *ua, const char *cmd, JCR *jcr)
+{
+   if (jcr->store_bsock) {
+      if (jcr->rstorage) {
+         copy_wstorage(ua->jcr, jcr->rstorage, _("Job resource"));
+      } else {
+         copy_wstorage(ua->jcr, jcr->wstorage, _("Job resource"));
+      }
+   } else {
+      USTORE store;
+      if (jcr->rstorage) {
+         store.store = jcr->rstore;
+      } else {
+         store.store = jcr->wstore;
+      }
+      set_wstorage(ua->jcr, &store);
+   }
+
+   if (!ua->jcr->wstore) {
+      ua->error_msg(_("Failed to select Storage daemon.\n"));
+      return false;
+   }
+
+   if (!connect_to_storage_daemon(ua->jcr, 10, SDConnectTimeout, 1)) {
+      ua->error_msg(_("Failed to connect to Storage daemon.\n"));
+      return false;
+   }
+   Dmsg0(200, "Connected to storage daemon\n");
+   BSOCK *sd = ua->jcr->store_bsock;
+   sd->fsend("%s Job=%s\n", cmd, jcr->Job);
+   while (sd->recv() >= 0) {
+      ua->send_msg("%s", sd->msg);
+   }
+   sd->signal(BNET_TERMINATE);
+   free_bsock(ua->jcr->store_bsock);
+   return true;
+}
+
+/* The FD is not connected, so we try to complete JCR fields and send
+ * the cancel command.
+ */
+static int cancel_inactive_job(UAContext *ua, JCR *jcr)
+{
+   CLIENT_DBR cr;
+   JOB_DBR    jr;
+   int        i;
+   USTORE     store;
+   CLIENT     *client;
+
+   if (!jcr->client) {
+      memset(&cr, 0, sizeof(cr));
+
+      /* User is kind enough to provide the client name */
+      if ((i = find_arg_with_value(ua, "client")) > 0) {
+         bstrncpy(cr.Name, ua->argv[i], sizeof(cr.Name));
+
+      } else {
+         memset(&jr, 0, sizeof(jr));
+         bstrncpy(jr.Job, jcr->Job, sizeof(jr.Job));
+
+         if (!open_client_db(ua)) {
+            goto bail_out;
+         }
+         if (!db_get_job_record(ua->jcr, ua->db, &jr)) {
+            goto bail_out;
+         }
+         cr.ClientId = jr.ClientId;
+         if (!cr.ClientId || !db_get_client_record(ua->jcr, ua->db, &cr)) {
+            goto bail_out;
+         }
+      }
+
+      if (acl_access_ok(ua, Client_ACL, cr.Name)) {
+         client = (CLIENT *)GetResWithName(R_CLIENT, cr.Name);
+         if (client) {
+            jcr->client = client;
+         } else {
+            Jmsg1(jcr, M_FATAL, 0, _("Client resource \"%s\" does not exist.\n"), cr.Name);
+            goto bail_out;
+         }
+      } else {
+         goto bail_out;
+      }
+   }
+
+   cancel_file_daemon_job(ua, "cancel", jcr);
+
+   /* At this time, we can't really guess the storage name from
+    * the job record
+    */
+   store.store = get_storage_resource(ua, false/*no default*/, true/*unique*/);
+   if (!store.store) {
+      goto bail_out;
+   }
+
+   set_wstorage(ua->jcr, &store);
+
+   cancel_sd_job(ua, "cancel", jcr);
+
+bail_out:
+   return 1;
+}
+
 /*
  * Cancel a job -- typically called by the UA (Console program), but may also
  *              be called by the job watchdog.
@@ -384,13 +500,28 @@ void sd_msg_thread_send_signal(JCR *jcr, int sig)
  *  Returns: true  if cancel appears to be successful
  *           false on failure. Message sent to ua->jcr.
  */
-bool cancel_job(UAContext *ua, JCR *jcr)
+bool cancel_job(UAContext *ua, JCR *jcr, bool cancel)
 {
-   BSOCK *sd, *fd;
    char ed1[50];
    int32_t old_status = jcr->JobStatus;
+   int status;
+   const char *reason, *cmd;
+   bool force = find_arg(ua, "inactive") > 0;
+   JCR *wjcr = jcr->wjcr;
+
+
+   /* If the user explicitely ask, we can send the cancel command to
+    * the FD.
+    */
+   if (cancel && force) {
+      return cancel_inactive_job(ua, jcr);
+   }
 
-   jcr->setJobStatus(JS_Canceled);
+   status = JS_Canceled;
+   reason = _("canceled");
+   cmd = NT_("cancel");
+
+   jcr->setJobStatus(status);
 
    switch (old_status) {
    case JS_Created:
@@ -400,68 +531,60 @@ bool cancel_job(UAContext *ua, JCR *jcr)
    case JS_WaitPriority:
    case JS_WaitMaxJobs:
    case JS_WaitStartTime:
-      ua->info_msg(_("JobId %s, Job %s marked to be canceled.\n"),
-              edit_uint64(jcr->JobId, ed1), jcr->Job);
+   case JS_WaitDevice:
+      ua->info_msg(_("JobId %s, Job %s marked to be %s.\n"),
+              edit_uint64(jcr->JobId, ed1), jcr->Job,
+              reason);
       jobq_remove(&job_queue, jcr); /* attempt to remove it from queue */
       break;
 
    default:
+
       /* Cancel File daemon */
       if (jcr->file_bsock) {
-         ua->jcr->client = jcr->client;
-         if (!connect_to_file_daemon(ua->jcr, 10, FDConnectTimeout, 1)) {
-            ua->error_msg(_("Failed to connect to File daemon.\n"));
-            return 0;
-         }
-         Dmsg0(200, "Connected to file daemon\n");
-         fd = ua->jcr->file_bsock;
-         fd->fsend("cancel Job=%s\n", jcr->Job);
-         while (fd->recv() >= 0) {
-            ua->send_msg("%s", fd->msg);
-         }
-         fd->signal(BNET_TERMINATE);
-         fd->close();
-         ua->jcr->file_bsock = NULL;
+         /* do not return now, we want to try to cancel the sd */
+         cancel_file_daemon_job(ua, cmd, jcr);
+      }
+
+      /* We test file_bsock because the previous operation can take
+       * several minutes
+       */
+      if (jcr->file_bsock && cancel) {
          jcr->file_bsock->set_terminated();
          jcr->my_thread_send_signal(TIMEOUT_SIGNAL);
       }
 
       /* Cancel Storage daemon */
       if (jcr->store_bsock) {
-         if (!ua->jcr->wstorage) {
-            if (jcr->rstorage) {
-               copy_wstorage(ua->jcr, jcr->rstorage, _("Job resource")); 
-            } else {
-               copy_wstorage(ua->jcr, jcr->wstorage, _("Job resource")); 
-            }
-         } else {
-            USTORE store;
-            if (jcr->rstorage) {
-               store.store = jcr->rstore;
-            } else {
-               store.store = jcr->wstore;
-            }
-            set_wstorage(ua->jcr, &store);
-         }
+         /* do not return now, we want to try to cancel the sd socket */
+         cancel_sd_job(ua, cmd, jcr);
+      }
 
-         if (!connect_to_storage_daemon(ua->jcr, 10, SDConnectTimeout, 1)) {
-            ua->error_msg(_("Failed to connect to Storage daemon.\n"));
-            return false;
-         }
-         Dmsg0(200, "Connected to storage daemon\n");
-         sd = ua->jcr->store_bsock;
-         sd->fsend("cancel Job=%s\n", jcr->Job);
-         while (sd->recv() >= 0) {
-            ua->send_msg("%s", sd->msg);
-         }
-         sd->signal(BNET_TERMINATE);
-         sd->close();
-         ua->jcr->store_bsock = NULL;
+      /* We test file_bsock because the previous operation can take
+       * several minutes
+       */
+      if (jcr->store_bsock && cancel) {
          jcr->store_bsock->set_timed_out();
          jcr->store_bsock->set_terminated();
          sd_msg_thread_send_signal(jcr, TIMEOUT_SIGNAL);
          jcr->my_thread_send_signal(TIMEOUT_SIGNAL);
       }
+
+      /* Cancel Copy/Migration Storage daemon */
+      if (wjcr  && wjcr->store_bsock) {
+         /* do not return now, we want to try to cancel the sd socket */
+         cancel_sd_job(ua, cmd, wjcr);
+
+         /* We test file_bsock because the previous operation can take
+          * several minutes
+          */
+         if (wjcr->store_bsock && cancel) {
+            wjcr->store_bsock->set_timed_out();
+            wjcr->store_bsock->set_terminated();
+            sd_msg_thread_send_signal(wjcr, TIMEOUT_SIGNAL);
+            wjcr->my_thread_send_signal(TIMEOUT_SIGNAL);
+         }
+      }
       break;
    }
 
@@ -470,7 +593,7 @@ bool cancel_job(UAContext *ua, JCR *jcr)
 
 void cancel_storage_daemon_job(JCR *jcr)
 {
-   if (jcr->sd_canceled) { 
+   if (jcr->sd_canceled) {
       return;                   /* cancel only once */
    }
 
@@ -482,9 +605,9 @@ void cancel_storage_daemon_job(JCR *jcr)
    if (jcr->store_bsock) {
       if (!ua->jcr->wstorage) {
          if (jcr->rstorage) {
-            copy_wstorage(ua->jcr, jcr->rstorage, _("Job resource")); 
+            copy_wstorage(ua->jcr, jcr->rstorage, _("Job resource"));
          } else {
-            copy_wstorage(ua->jcr, jcr->wstorage, _("Job resource")); 
+            copy_wstorage(ua->jcr, jcr->wstorage, _("Job resource"));
          }
       } else {
          USTORE store;
@@ -505,8 +628,7 @@ void cancel_storage_daemon_job(JCR *jcr)
       while (sd->recv() >= 0) {
       }
       sd->signal(BNET_TERMINATE);
-      sd->close();
-      ua->jcr->store_bsock = NULL;
+      free_bsock(ua->jcr->store_bsock);
       jcr->sd_canceled = true;
       jcr->store_bsock->set_timed_out();
       jcr->store_bsock->set_terminated();
@@ -552,7 +674,7 @@ static void job_monitor_watchdog(watchdog_t *self)
          jcr->setJobStatus(JS_Canceled);
          Qmsg(jcr, M_FATAL, 0, _("Max run time exceeded. Job canceled.\n"));
          cancel = true;
-      /* check MaxRunSchedTime */ 
+      /* check MaxRunSchedTime */
       } else if (job_check_maxrunschedtime(jcr)) {
          jcr->setJobStatus(JS_Canceled);
          Qmsg(jcr, M_FATAL, 0, _("Max run sched time exceeded. Job canceled.\n"));
@@ -591,7 +713,7 @@ static bool job_check_maxwaittime(JCR *jcr)
       current = watchdog_time - jcr->wait_time;
    }
 
-   Dmsg2(200, "check maxwaittime %u >= %u\n", 
+   Dmsg2(200, "check maxwaittime %u >= %u\n",
          current + jcr->wait_time_sum, job->MaxWaitTime);
    if (job->MaxWaitTime != 0 &&
        (current + jcr->wait_time_sum) >= job->MaxWaitTime) {
@@ -620,7 +742,7 @@ static bool job_check_maxruntime(JCR *jcr)
    }
    run_time = watchdog_time - jcr->start_time;
    Dmsg7(200, "check_maxruntime %llu-%u=%llu >= %llu|%llu|%llu|%llu\n",
-         watchdog_time, jcr->start_time, run_time, job->MaxRunTime, job->FullMaxRunTime, 
+         watchdog_time, jcr->start_time, run_time, job->MaxRunTime, job->FullMaxRunTime,
          job->IncMaxRunTime, job->DiffMaxRunTime);
 
    if (jcr->getJobLevel() == L_FULL && job->FullMaxRunTime != 0 &&
@@ -639,7 +761,7 @@ static bool job_check_maxruntime(JCR *jcr)
       Dmsg0(200, "check_maxwaittime: Maxcancel\n");
       cancel = true;
    }
- 
+
    return cancel;
 }
 
@@ -652,7 +774,7 @@ static bool job_check_maxrunschedtime(JCR *jcr)
    if (jcr->MaxRunSchedTime == 0 || job_canceled(jcr)) {
       return false;
    }
-   if ((watchdog_time - jcr->sched_time) < jcr->MaxRunSchedTime) {
+   if ((watchdog_time - jcr->initial_sched_time) < jcr->MaxRunSchedTime) {
       Dmsg3(200, "Job %p (%s) with MaxRunSchedTime %d not expired\n",
             jcr, jcr->Job, jcr->MaxRunSchedTime);
       return false;
@@ -734,7 +856,7 @@ bool allow_duplicate_job(JCR *jcr)
                continue;               /* not really a duplicate */
             }
          }
-         if (job->CancelLowerLevelDuplicates &&                         
+         if (job->CancelLowerLevelDuplicates &&
              djcr->getJobType() == 'B' && jcr->getJobType() == 'B') {
             switch (jcr->getJobLevel()) {
             case L_FULL:
@@ -758,7 +880,7 @@ bool allow_duplicate_job(JCR *jcr)
                }
             }
             /*
-             * cancel_dup will be done below   
+             * cancel_dup will be done below
              */
             if (cancel_me) {
               /* Zap current job */
@@ -782,6 +904,7 @@ bool allow_duplicate_job(JCR *jcr)
              case JS_WaitPriority:
              case JS_WaitMaxJobs:
              case JS_WaitStartTime:
+             case JS_WaitDevice:
                 cancel_dup = true;  /* cancel queued duplicate */
                 break;
              default:
@@ -817,15 +940,68 @@ bool allow_duplicate_job(JCR *jcr)
    }
    endeach_jcr(djcr);
 
-   return true;   
+   return true;
+}
+
+/*
+ * Apply pool overrides to get the storage properly setup.
+ */
+bool apply_wstorage_overrides(JCR *jcr, POOL *opool)
+{
+   const char *source;
+
+   Dmsg1(100, "Original pool=%s\n", opool->name());
+   if (jcr->run_next_pool_override) {
+      pm_strcpy(jcr->next_pool_source, _("Run NextPool override"));
+      pm_strcpy(jcr->pool_source, _("Run NextPool override"));
+      source = _("Run NextPool override");
+   } else if (jcr->job->next_pool) {
+      /* Use Job Next Pool */
+      jcr->next_pool = jcr->job->next_pool;
+      pm_strcpy(jcr->next_pool_source, _("Job's NextPool resource"));
+      pm_strcpy(jcr->pool_source, _("Job's NextPool resource"));
+      source = _("Job's NextPool resource");
+   } else {
+      /* Default to original pool->NextPool */
+      jcr->next_pool = opool->NextPool;
+      Dmsg1(100, "next_pool=%p\n", jcr->next_pool);
+      if (jcr->next_pool) {
+         Dmsg1(100, "Original pool next Pool = %s\n", NPRT(jcr->next_pool->name()));
+      }
+      pm_strcpy(jcr->next_pool_source, _("Job Pool's NextPool resource"));
+      pm_strcpy(jcr->pool_source, _("Job Pool's NextPool resource"));
+      source = _("Pool's NextPool resource");
+   }
+
+   /*
+    * If the original backup pool has a NextPool, make sure a
+    * record exists in the database.
+    */
+   if (jcr->next_pool) {
+      jcr->jr.PoolId = get_or_create_pool_record(jcr, jcr->next_pool->name());
+      if (jcr->jr.PoolId == 0) {
+         return false;
+      }
+   }
+
+   if (!set_mac_wstorage(NULL, jcr, jcr->pool, jcr->next_pool, source)) {
+      return false;
+   }
+
+   /* Set write pool and source. Not read pool is in rpool. */
+   jcr->pool = jcr->next_pool;
+   pm_strcpy(jcr->pool_source, source);
+
+   return true;
 }
 
+
 void apply_pool_overrides(JCR *jcr)
 {
    bool pool_override = false;
 
    if (jcr->run_pool_override) {
-      pm_strcpy(jcr->pool_source, _("Run pool override"));
+      pm_strcpy(jcr->pool_source, _("Run Pool override"));
    }
    /*
     * Apply any level related Pool selections
@@ -906,12 +1082,13 @@ bool get_or_create_client_record(JCR *jcr)
    return true;
 }
 
+/*
+ * Get or Create FileSet record
+ */
 bool get_or_create_fileset_record(JCR *jcr)
 {
    FILESET_DBR fsr;
-   /*
-    * Get or Create FileSet record
-    */
+
    memset(&fsr, 0, sizeof(FILESET_DBR));
    bstrncpy(fsr.FileSet, jcr->fileset->hdr.name, sizeof(fsr.FileSet));
    if (jcr->fileset->have_MD5) {
@@ -1037,26 +1214,27 @@ void create_unique_job_name(JCR *jcr, const char *base_name)
 /* Called directly from job rescheduling */
 void dird_free_jcr_pointers(JCR *jcr)
 {
+   /* Close but do not free bsock packets */
    if (jcr->file_bsock) {
       Dmsg0(200, "Close File bsock\n");
-      bnet_close(jcr->file_bsock);
-      jcr->file_bsock = NULL;
+      jcr->file_bsock->close();
    }
    if (jcr->store_bsock) {
       Dmsg0(200, "Close Store bsock\n");
-      bnet_close(jcr->store_bsock);
-      jcr->store_bsock = NULL;
+      jcr->store_bsock->close();
    }
 
    bfree_and_null(jcr->sd_auth_key);
    bfree_and_null(jcr->where);
    bfree_and_null(jcr->RestoreBootstrap);
+   jcr->cached_attribute = false;
    bfree_and_null(jcr->ar);
 
    free_and_null_pool_memory(jcr->JobIds);
    free_and_null_pool_memory(jcr->client_uname);
    free_and_null_pool_memory(jcr->attr);
    free_and_null_pool_memory(jcr->fname);
+   free_and_null_pool_memory(jcr->media_type);
 }
 
 /*
@@ -1069,6 +1247,9 @@ void dird_free_jcr(JCR *jcr)
    Dmsg0(200, "Start dird free_jcr\n");
 
    dird_free_jcr_pointers(jcr);
+   /* Free bsock packets */
+   free_bsock(jcr->file_bsock);
+   free_bsock(jcr->store_bsock);
    if (jcr->term_wait_inited) {
       pthread_cond_destroy(&jcr->term_wait);
       jcr->term_wait_inited = false;
@@ -1086,6 +1267,7 @@ void dird_free_jcr(JCR *jcr)
    free_and_null_pool_memory(jcr->stime);
    free_and_null_pool_memory(jcr->fname);
    free_and_null_pool_memory(jcr->pool_source);
+   free_and_null_pool_memory(jcr->next_pool_source);
    free_and_null_pool_memory(jcr->catalog_source);
    free_and_null_pool_memory(jcr->rpool_source);
    free_and_null_pool_memory(jcr->wstore_source);
@@ -1096,20 +1278,21 @@ void dird_free_jcr(JCR *jcr)
 
    jcr->job_end_push.destroy();
 
-   if (jcr->JobId != 0)
+   if (jcr->JobId != 0) {
       write_state_file(director->working_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
+   }
 
    free_plugins(jcr);                 /* release instantiated plugins */
 
    Dmsg0(200, "End dird free_jcr\n");
 }
 
-/* 
+/*
  * The Job storage definition must be either in the Job record
- *  or in the Pool record.  The Pool record overrides the Job 
+ *  or in the Pool record.  The Pool record overrides the Job
  *  record.
  */
-void get_job_storage(USTORE *store, JOB *job, RUN *run) 
+void get_job_storage(USTORE *store, JOB *job, RUN *run)
 {
    if (run && run->pool && run->pool->storage) {
       store->store = (STORE *)run->pool->storage->first();
@@ -1157,11 +1340,12 @@ void set_jcr_defaults(JCR *jcr, JOB *job)
    }
    if (!jcr->pool_source) {
       jcr->pool_source = get_pool_memory(PM_MESSAGE);
-      pm_strcpy(jcr->pool_source, _("unknown source"));
+   }
+   if (!jcr->next_pool_source) {
+      jcr->next_pool_source = get_pool_memory(PM_MESSAGE);
    }
    if (!jcr->catalog_source) {
       jcr->catalog_source = get_pool_memory(PM_MESSAGE);
-      pm_strcpy(jcr->catalog_source, _("unknown source"));
    }
 
    jcr->JobPriority = job->Priority;
@@ -1172,12 +1356,22 @@ void set_jcr_defaults(JCR *jcr, JOB *job)
       copy_rwstorage(jcr, job->pool->storage, _("Pool resource"));
    }
    jcr->client = job->client;
+   ASSERT2(jcr->client, "jcr->client==NULL!!!");
    if (!jcr->client_name) {
       jcr->client_name = get_pool_memory(PM_NAME);
    }
-   pm_strcpy(jcr->client_name, jcr->client->hdr.name);
-   pm_strcpy(jcr->pool_source, _("Job resource"));
+   pm_strcpy(jcr->client_name, jcr->client->name());
    jcr->pool = job->pool;
+   pm_strcpy(jcr->pool_source, _("Job resource"));
+   if (job->next_pool) {
+      /* Use Job's Next Pool */
+      jcr->next_pool = job->next_pool;
+      pm_strcpy(jcr->next_pool_source, _("Job's NextPool resource"));
+   } else {
+      /* Default to original pool->NextPool */
+      jcr->next_pool = job->pool->NextPool;
+      pm_strcpy(jcr->next_pool_source, _("Job Pool's NextPool resource"));
+   }
    jcr->full_pool = job->full_pool;
    jcr->inc_pool = job->inc_pool;
    jcr->diff_pool = job->diff_pool;
@@ -1226,7 +1420,7 @@ void set_jcr_defaults(JCR *jcr, JOB *job)
    }
 }
 
-/* 
+/*
  * Copy the storage definitions from an alist to the JCR
  */
 void copy_rwstorage(JCR *jcr, alist *storage, const char *where)
@@ -1257,7 +1451,7 @@ void free_rwstorage(JCR *jcr)
    free_wstorage(jcr);
 }
 
-/* 
+/*
  * Copy the storage definitions from an alist to the JCR
  */
 void copy_rstorage(JCR *jcr, alist *storage, const char *where)
@@ -1319,7 +1513,7 @@ void free_rstorage(JCR *jcr)
    jcr->rstore = NULL;
 }
 
-/* 
+/*
  * Copy the storage definitions from an alist to the JCR
  */
 void copy_wstorage(JCR *jcr, alist *storage, const char *where)
@@ -1428,7 +1622,7 @@ int create_restore_bootstrap_file(JCR *jcr)
 
    memset(&rx, 0, sizeof(rx));
    rx.bsr = new_bsr();
-   rx.JobIds = (char *)"";                       
+   rx.JobIds = (char *)"";
    rx.bsr->JobId = jcr->previous_jr.JobId;
    ua = new_ua_context(jcr);
    if (!complete_bsr(ua, rx.bsr)) {
diff --git a/src/dird/jobq.c b/src/dird/jobq.c
index 5c79d78..ddd33be 100644
--- a/src/dird/jobq.c
+++ b/src/dird/jobq.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula job queue routines.
@@ -120,8 +108,8 @@ int jobq_destroy(jobq_t *jq)
    P(jq->mutex);
    jq->valid = 0;                      /* prevent any more operations */
 
-   /* 
-    * If any threads are active, wake them 
+   /*
+    * If any threads are active, wake them
     */
    if (jq->num_workers > 0) {
       jq->quit = true;
@@ -182,7 +170,7 @@ void *sched_wait(void *arg)
    }
    /* Check every 30 seconds if canceled */
    while (wtime > 0) {
-      Dmsg3(2300, "Waiting on sched time, jobid=%d secs=%d use=%d\n", 
+      Dmsg3(2300, "Waiting on sched time, jobid=%d secs=%d use=%d\n",
          jcr->JobId, wtime, jcr->use_count());
       if (wtime > 30) {
          wtime = 30;
@@ -213,7 +201,7 @@ int jobq_add(jobq_t *jq, JCR *jcr)
    pthread_t id;
    wait_pkt *sched_pkt;
 
-   if (!jcr->term_wait_inited) { 
+   if (!jcr->term_wait_inited) {
       /* Initialize termination condition variable */
       if ((stat = pthread_cond_init(&jcr->term_wait, NULL)) != 0) {
          berrno be;
@@ -221,8 +209,8 @@ int jobq_add(jobq_t *jq, JCR *jcr)
          return stat;
       }
       jcr->term_wait_inited = true;
-   }                           
-                             
+   }
+
    Dmsg3(2300, "jobq_add jobid=%d jcr=0x%x use_count=%d\n", jcr->JobId, jcr, jcr->use_count());
    if (jq->valid != JOBQ_VALID) {
       Jmsg0(jcr, M_ERROR, 0, "Jobq_add queue not initialized.\n");
@@ -236,7 +224,7 @@ int jobq_add(jobq_t *jq, JCR *jcr)
       sched_pkt = (wait_pkt *)malloc(sizeof(wait_pkt));
       sched_pkt->jcr = jcr;
       sched_pkt->jq = jq;
-      stat = pthread_create(&id, &jq->attr, sched_wait, (void *)sched_pkt);        
+      stat = pthread_create(&id, &jq->attr, sched_wait, (void *)sched_pkt);
       if (stat != 0) {                /* thread not created */
          berrno be;
          Jmsg1(jcr, M_ERROR, 0, _("pthread_thread_create: ERR=%s\n"), be.bstrerror(stat));
@@ -342,7 +330,7 @@ static int start_server(jobq_t *jq)
 
    /*
     * if any threads are idle, wake one.
-    *   Actually we do a broadcast because on /lib/tls 
+    *   Actually we do a broadcast because on /lib/tls
     *   these signals seem to get lost from time to time.
     */
    if (jq->idle_workers > 0) {
@@ -437,6 +425,7 @@ void *jobq_server(void *arg)
          jq->running_jobs->append(je);
 
          /* Attach jcr to this thread while we run the job */
+         jcr->my_thread_id = pthread_self();
          jcr->set_killable(true);
          set_jcr_in_tsd(jcr);
          Dmsg1(2300, "Took jobid=%d from ready and appended to run\n", jcr->JobId);
@@ -453,6 +442,9 @@ void *jobq_server(void *arg)
          remove_jcr_from_tsd(je->jcr);
          je->jcr->set_killable(false);
 
+         /* Clear the threadid, probably not necessary */
+         memset(&jcr->my_thread_id, 0, sizeof(jcr->my_thread_id));
+
          Dmsg2(2300, "Back from user engine jobid=%d use=%d.\n", jcr->JobId,
             jcr->use_count());
 
@@ -468,7 +460,9 @@ void *jobq_server(void *arg)
          if (jcr->acquired_resource_locks) {
             dec_read_store(jcr);
             dec_write_store(jcr);
-            jcr->client->NumConcurrentJobs--;
+            if (jcr->client) {
+               jcr->client->NumConcurrentJobs--;
+            }
             jcr->job->NumConcurrentJobs--;
             jcr->acquired_resource_locks = false;
          }
@@ -502,7 +496,7 @@ void *jobq_server(void *arg)
             running_allow_mix = true;
             for ( ; re; ) {
                Dmsg2(2300, "JobId %d is also running with %s\n",
-                     re->jcr->JobId, 
+                     re->jcr->JobId,
                      re->jcr->job->allow_mixed_priority ? "mix" : "no mix");
                if (!re->jcr->job->allow_mixed_priority) {
                   running_allow_mix = false;
@@ -619,11 +613,7 @@ static bool reschedule_job(JCR *jcr, jobq_t *jq, jobq_item_t *je)
    /* Basic condition is that more reschedule times remain */
    if (jcr->job->RescheduleTimes == 0 ||
        jcr->reschedule_count < jcr->job->RescheduleTimes) {
-      resched = 
-         /* Check for incomplete jobs */
-         (jcr->job->RescheduleIncompleteJobs && 
-          jcr->is_incomplete() && jcr->is_JobType(JT_BACKUP) &&
-          !jcr->is_JobLevel(L_BASE)) ||
+      resched =
          /* Check for failed jobs */
          (jcr->job->RescheduleOnError &&
           !jcr->is_JobStatus(JS_Terminated) &&
@@ -654,7 +644,7 @@ static bool reschedule_job(JCR *jcr, jobq_t *jq, jobq_item_t *je)
       if (!allow_duplicate_job(jcr)) {
          return false;
       }
-      /* Only jobs with no output or Incomplete jobs can run on same JCR */
+      /* Only jobs with no output jobs can run on same JCR */
       if (jcr->JobBytes == 0) {
          Dmsg2(2300, "Requeue job=%d use=%d\n", jcr->JobId, jcr->use_count());
          V(jq->mutex);
@@ -665,6 +655,11 @@ static bool reschedule_job(JCR *jcr, jobq_t *jq, jobq_item_t *je)
          if (jcr->wasVirtualFull) {
             jcr->setJobLevel(L_VIRTUAL_FULL);
          }
+         /* 
+          * When we are using the same jcr then make sure to reset
+          *   RealEndTime back to zero.  
+          */
+         jcr->jr.RealEndTime = 0;
          jobq_add(jq, jcr);     /* queue the job to run again */
          P(jq->mutex);
          free_jcr(jcr);         /* release jcr */
@@ -676,11 +671,12 @@ static bool reschedule_job(JCR *jcr, jobq_t *jq, jobq_item_t *je)
        *   the old JobId or there will be database record
        *   conflicts.  We now create a new job, copying the
        *   appropriate fields.
-       */           
+       */
       JCR *njcr = new_jcr(sizeof(JCR), dird_free_jcr);
       set_jcr_defaults(njcr, jcr->job);
       njcr->reschedule_count = jcr->reschedule_count;
       njcr->sched_time = jcr->sched_time;
+      njcr->initial_sched_time = jcr->initial_sched_time;
       /*
        * Special test here since a Virtual Full gets marked
        *  as a Full, so we look at the resource record
@@ -692,6 +688,8 @@ static bool reschedule_job(JCR *jcr, jobq_t *jq, jobq_item_t *je)
       }
       njcr->pool = jcr->pool;
       njcr->run_pool_override = jcr->run_pool_override;
+      njcr->next_pool = jcr->next_pool;
+      njcr->run_next_pool_override = jcr->run_next_pool_override;
       njcr->full_pool = jcr->full_pool;
       njcr->run_full_pool_override = jcr->run_full_pool_override;
       njcr->inc_pool = jcr->inc_pool;
@@ -743,7 +741,7 @@ static bool acquire_resources(JCR *jcr)
 #ifdef xxx
    if (jcr->rstore && jcr->rstore == jcr->wstore) {    /* possible deadlock */
       Jmsg(jcr, M_FATAL, 0, _("Job canceled. Attempt to read and write same device.\n"
-         "    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"), 
+         "    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"),
          jcr->rstore->name(), jcr->rstore_source, jcr->wstore->name(), jcr->wstore_source);
       jcr->setJobStatus(JS_Canceled);
       return false;
@@ -757,7 +755,7 @@ static bool acquire_resources(JCR *jcr)
          return false;
       }
    }
-   
+
    if (jcr->wstore) {
       Dmsg1(200, "Wstore=%s\n", jcr->wstore->name());
       if (jcr->wstore->NumConcurrentJobs < jcr->wstore->MaxConcurrentJobs) {
@@ -776,14 +774,16 @@ static bool acquire_resources(JCR *jcr)
       return false;
    }
 
-   if (jcr->client->NumConcurrentJobs < jcr->client->MaxConcurrentJobs) {
-      jcr->client->NumConcurrentJobs++;
-   } else {
-      /* Back out previous locks */
-      dec_write_store(jcr);
-      dec_read_store(jcr);
-      jcr->setJobStatus(JS_WaitClientRes);
-      return false;
+   if (jcr->client) {
+      if (jcr->client->NumConcurrentJobs < jcr->client->MaxConcurrentJobs) {
+         jcr->client->NumConcurrentJobs++;
+      } else {
+         /* Back out previous locks */
+         dec_write_store(jcr);
+         dec_read_store(jcr);
+         jcr->setJobStatus(JS_WaitClientRes);
+         return false;
+      }
    }
    if (jcr->job->NumConcurrentJobs < jcr->job->MaxConcurrentJobs) {
       jcr->job->NumConcurrentJobs++;
@@ -791,7 +791,9 @@ static bool acquire_resources(JCR *jcr)
       /* Back out previous locks */
       dec_write_store(jcr);
       dec_read_store(jcr);
-      jcr->client->NumConcurrentJobs--;
+      if (jcr->client) {
+         jcr->client->NumConcurrentJobs--;
+      }
       jcr->setJobStatus(JS_WaitJobRes);
       return false;
    }
@@ -802,7 +804,7 @@ static bool acquire_resources(JCR *jcr)
 
 static pthread_mutex_t rstore_mutex = PTHREAD_MUTEX_INITIALIZER;
 
-/* 
+/*
  * Note: inc_read_store() and dec_read_store() are
  *   called from select_rstore() in src/dird/restore.c
  */
diff --git a/src/dird/jobq.h b/src/dird/jobq.h
index c18502d..8ee20b2 100644
--- a/src/dird/jobq.h
+++ b/src/dird/jobq.h
@@ -12,29 +12,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef __JOBQ_H
diff --git a/src/dird/mac.c b/src/dird/mac.c
new file mode 100644
index 0000000..6483011
--- /dev/null
+++ b/src/dird/mac.c
@@ -0,0 +1,893 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2004-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ *
+ *   Bacula Director -- mac.c -- responsible for doing
+ *     migration and copy jobs.
+ *
+ *   Also handles Copy jobs (March MMVIII)
+ *
+ *   Written by Kern Sibbald, September MMIV
+ *
+ *  Basic tasks done here:
+ *     Open DB and create records for this job.
+ *     Open Message Channel with Storage daemon to tell him a job will be starting.
+ *     Open connection with Storage daemon and pass him commands
+ *       to do the backup.
+ *     When the Storage daemon finishes the job, update the DB.
+ *
+ */
+
+#include "bacula.h"
+#include "dird.h"
+#include "ua.h"
+
+static const int dbglevel = 10;
+static char storaddr[] = "storage address=%s port=%d ssl=%d Job=%s Authentication=%s\n";
+static char OKstore[]  = "2000 OK storage\n";
+
+/* Imported subroutines */
+extern int getJob_to_migrate(JCR *jcr);
+extern bool regex_find_jobids(JCR *jcr, idpkt *ids, const char *query1,
+                 const char *query2, const char *type);
+extern bool find_mediaid_then_jobids(JCR *jcr, idpkt *ids, const char *query1,
+                 const char *type);
+extern bool find_jobids_of_pool_uncopied_jobs(JCR *jcr, idpkt *ids);
+
+static bool set_mac_next_pool(JCR *jcr, POOL **pool);
+
+/*
+ * Called here before the job is run to do the job
+ *   specific setup.  Note, one of the important things to
+ *   complete in this init code is to make the definitive
+ *   choice of input and output storage devices.  This is
+ *   because immediately after the init, the job is queued
+ *   in the jobq.c code, and it checks that all the resources
+ *   (storage resources in particular) are available, so these
+ *   must all be properly defined.
+ *
+ *  previous_jr refers to the job DB record of the Job that is
+ *    going to be migrated.
+ *  prev_job refers to the job resource of the Job that is
+ *    going to be migrated.
+ *  jcr is the jcr for the current "migration" job.  It is a
+ *    control job that is put in the DB as a migration job, which
+ *    means that this job migrated a previous job to a new job.
+ *    No Volume or File data is associated with this control
+ *    job.
+ *  wjcr refers to the migrate/copy job that is writing and is run by
+ *    the current jcr.  It is a backup job that writes the
+ *    data written for the previous_jr into the new pool.  This
+ *    job (wjcr) becomes the new backup job that replaces
+ *    the original backup job. Note, this jcr is not really run. It
+ *    is simply attached to the current jcr.  It will show up in
+ *    the Director's status output, but not in the SD or FD, both of
+ *    which deal only with the current migration job (i.e. jcr).
+ */
+bool do_mac_init(JCR *jcr)
+{
+   POOL *pool = NULL;
+   JOB *job, *prev_job;
+   JCR *wjcr;                     /* jcr of writing job */
+   int count;
+
+
+   apply_pool_overrides(jcr);
+
+   if (!allow_duplicate_job(jcr)) {
+      return false;
+   }
+
+   jcr->jr.PoolId = get_or_create_pool_record(jcr, jcr->pool->name());
+   if (jcr->jr.PoolId == 0) {
+      Dmsg1(dbglevel, "JobId=%d no PoolId\n", (int)jcr->JobId);
+      Jmsg(jcr, M_FATAL, 0, _("Could not get or create a Pool record.\n"));
+      return false;
+   }
+   /*
+    * Note, at this point, pool is the pool for this job.  We
+    *  transfer it to rpool (read pool), and a bit later,
+    *  pool will be changed to point to the write pool,
+    *  which comes from pool->NextPool.
+    */
+   jcr->rpool = jcr->pool;            /* save read pool */
+   pm_strcpy(jcr->rpool_source, jcr->pool_source);
+   Dmsg2(dbglevel, "Read pool=%s (From %s)\n", jcr->rpool->name(), jcr->rpool_source);
+
+   if (!get_or_create_fileset_record(jcr)) {
+      Dmsg1(dbglevel, "JobId=%d no FileSet\n", (int)jcr->JobId);
+      Jmsg(jcr, M_FATAL, 0, _("Could not get or create the FileSet record.\n"));
+      return false;
+   }
+
+   /* If we find a job or jobs to migrate it is previous_jr.JobId */
+   count = getJob_to_migrate(jcr);
+   if (count < 0) {
+      return false;
+   }
+   if (count == 0) {
+      set_mac_next_pool(jcr, &pool);
+      return true;                    /* no work */
+   }
+
+   Dmsg1(dbglevel, "Back from getJob_to_migrate JobId=%d\n", (int)jcr->JobId);
+
+   if (jcr->previous_jr.JobId == 0) {
+      Dmsg1(dbglevel, "JobId=%d no previous JobId\n", (int)jcr->JobId);
+      Jmsg(jcr, M_INFO, 0, _("No previous Job found to %s.\n"), jcr->get_ActionName(0));
+      set_mac_next_pool(jcr, &pool);
+      return true;                    /* no work */
+   }
+
+   if (create_restore_bootstrap_file(jcr) < 0) {
+      Jmsg(jcr, M_FATAL, 0, _("Create bootstrap file failed.\n"));
+      return false;
+   }
+
+   if (jcr->previous_jr.JobId == 0 || jcr->ExpectedFiles == 0) {
+      jcr->setJobStatus(JS_Terminated);
+      Dmsg1(dbglevel, "JobId=%d expected files == 0\n", (int)jcr->JobId);
+      if (jcr->previous_jr.JobId == 0) {
+         Jmsg(jcr, M_INFO, 0, _("No previous Job found to %s.\n"), jcr->get_ActionName(0));
+      } else {
+         Jmsg(jcr, M_INFO, 0, _("Previous Job has no data to %s.\n"), jcr->get_ActionName(0));
+      }
+      set_mac_next_pool(jcr, &pool);
+      return true;                    /* no work */
+   }
+
+
+   Dmsg5(dbglevel, "JobId=%d: Current: Name=%s JobId=%d Type=%c Level=%c\n",
+      (int)jcr->JobId,
+      jcr->jr.Name, (int)jcr->jr.JobId,
+      jcr->jr.JobType, jcr->jr.JobLevel);
+
+   LockRes();
+   job = (JOB *)GetResWithName(R_JOB, jcr->jr.Name);
+   prev_job = (JOB *)GetResWithName(R_JOB, jcr->previous_jr.Name);
+   UnlockRes();
+   if (!job) {
+      Jmsg(jcr, M_FATAL, 0, _("Job resource not found for \"%s\".\n"), jcr->jr.Name);
+      return false;
+   }
+   if (!prev_job) {
+      Jmsg(jcr, M_FATAL, 0, _("Previous Job resource not found for \"%s\".\n"),
+           jcr->previous_jr.Name);
+      return false;
+   }
+
+
+   /* Create a write jcr */
+   wjcr = jcr->wjcr = new_jcr(sizeof(JCR), dird_free_jcr);
+   memcpy(&wjcr->previous_jr, &jcr->previous_jr, sizeof(wjcr->previous_jr));
+
+   /*
+    * Turn the wjcr into a "real" job that takes on the aspects of
+    *   the previous backup job "prev_job".
+    */
+   set_jcr_defaults(wjcr, prev_job);
+   if (!setup_job(wjcr)) {
+      Jmsg(jcr, M_FATAL, 0, _("setup job failed.\n"));
+      return false;
+   }
+
+   /* Now reset the job record from the previous job */
+   memcpy(&wjcr->jr, &jcr->previous_jr, sizeof(wjcr->jr));
+   /* Update the jr to reflect the new values of PoolId and JobId. */
+   wjcr->jr.PoolId = jcr->jr.PoolId;
+   wjcr->jr.JobId = wjcr->JobId;
+   wjcr->sd_client = true;
+   //wjcr->setJobType(jcr->getJobType());
+   wjcr->spool_data = job->spool_data;     /* turn on spooling if requested in job */
+   wjcr->spool_size = jcr->spool_size;
+   jcr->spool_size = 0;
+
+   /* Don't let WatchDog checks Max*Time value on this Job */
+   wjcr->no_maxtime = true;
+   /* Don't check for duplicates on this jobs */
+   wjcr->job->IgnoreDuplicateJobChecking = true;
+   Dmsg4(dbglevel, "wjcr: Name=%s JobId=%d Type=%c Level=%c\n",
+      wjcr->jr.Name, (int)wjcr->jr.JobId,
+      wjcr->jr.JobType, wjcr->jr.JobLevel);
+
+   if (set_mac_next_pool(jcr, &pool)) {
+      /* If pool storage specified, use it for restore */
+      copy_rstorage(wjcr, pool->storage, _("Pool resource"));
+      copy_rstorage(jcr, pool->storage, _("Pool resource"));
+
+      wjcr->pool = jcr->pool;
+      wjcr->next_pool = jcr->next_pool;
+      wjcr->jr.PoolId = jcr->jr.PoolId;
+   }
+
+   return true;
+}
+
+/*
+ * set_mac_next_pool() called by do_mac_init()
+ * at differents stages.
+ * The  idea here is to make a common subroutine for the
+ *   NextPool's search code and to permit do_mac_init()
+ *   to return with NextPool set in jcr struct.
+ */
+static bool set_mac_next_pool(JCR *jcr, POOL **retpool)
+{
+   POOL_DBR pr;
+   POOL *pool;
+   char ed1[100];
+
+   /*
+    * Get the PoolId used with the original job. Then
+    *  find the pool name from the database record.
+    */
+   memset(&pr, 0, sizeof(pr));
+   pr.PoolId = jcr->jr.PoolId;
+   if (!db_get_pool_record(jcr, jcr->db, &pr)) {
+      Jmsg(jcr, M_FATAL, 0, _("Pool for JobId %s not in database. ERR=%s\n"),
+            edit_int64(pr.PoolId, ed1), db_strerror(jcr->db));
+         return false;
+   }
+   /* Get the pool resource corresponding to the original job */
+   pool = (POOL *)GetResWithName(R_POOL, pr.Name);
+   *retpool = pool;
+   if (!pool) {
+      Jmsg(jcr, M_FATAL, 0, _("Pool resource \"%s\" not found.\n"), pr.Name);
+      return false;
+   }
+
+   if (!apply_wstorage_overrides(jcr, pool)) {
+      return false;
+   }
+
+   Dmsg2(dbglevel, "Write pool=%s read rpool=%s\n", jcr->pool->name(), jcr->rpool->name());
+
+   return true;
+}
+
+/*
+ * Send storage address and authentication to deblock the other
+ *   job.
+ */
+static bool send_store_addr_to_sd(JCR *jcr, char *Job, char *sd_auth_key,
+                 STORE *store, char *store_address, uint32_t store_port)
+{
+   int tls_need = BNET_TLS_NONE;
+
+   /* TLS Requirement */
+   if (store->tls_enable) {
+      if (store->tls_require) {
+         tls_need = BNET_TLS_REQUIRED;
+      } else {
+         tls_need = BNET_TLS_OK;
+      }
+   }
+
+   /*
+    * Send Storage address to the SD client
+    */
+   Dmsg2(200, "=== Job=%s sd auth key=%s\n", Job, sd_auth_key);
+   jcr->store_bsock->fsend(storaddr, store_address, store_port,
+      tls_need, Job, sd_auth_key);
+   if (!response(jcr, jcr->store_bsock, OKstore, "Storage", DISPLAY_ERROR)) {
+      Dmsg4(050, "Response fail for: JobId=%d storeaddr=%s:%d Job=%s\n",
+           jcr->JobId, store_address, store_port, Job);
+      Jmsg3(jcr, M_FATAL, 0, "Response failure: storeddr=%s:%d Job=%s\n",
+            store_address, store_port, Job);
+
+      return false;
+   }
+   return true;
+}
+
+/*
+ * Do a Migration and Copy of a previous job
+ *
+ *  Returns:  false on failure
+ *            true  on success
+ */
+bool do_mac(JCR *jcr)
+{
+   char ed1[100];
+   BSOCK *sd, *wsd;
+   JCR *wjcr = jcr->wjcr;    /* newly migrated job */
+   bool ok = false;
+   STORE *store;
+   char *store_address;
+   uint32_t store_port;
+
+   /*
+    * If wjcr is NULL, there is nothing to do for this job,
+    *  so set a normal status, cleanup and return OK.
+    */
+   if (!wjcr) {
+      jcr->setJobStatus(JS_Terminated);
+      mac_cleanup(jcr, JS_Terminated, JS_Terminated);
+      return true;
+   }
+
+   if (!db_get_job_record(jcr, jcr->db, &jcr->previous_jr)) {
+      Jmsg(jcr, M_FATAL, 0, _("Could not get job record for JobId %s to %s. ERR=%s"),
+           edit_int64(jcr->previous_jr.JobId, ed1),
+           jcr->get_ActionName(0),
+           db_strerror(jcr->db));
+      jcr->setJobStatus(JS_Terminated);
+      mac_cleanup(jcr, JS_Terminated, JS_Terminated);
+      return true;
+   }
+   /* Make sure this job was not already migrated */
+   if (jcr->previous_jr.JobType != JT_BACKUP &&
+       jcr->previous_jr.JobType != JT_JOB_COPY) {
+      Jmsg(jcr, M_INFO, 0, _("JobId %s already %s probably by another Job. %s stopped.\n"),
+         edit_int64(jcr->previous_jr.JobId, ed1),
+         jcr->get_ActionName(1),
+         jcr->get_OperationName());
+      jcr->setJobStatus(JS_Terminated);
+      mac_cleanup(jcr, JS_Terminated, JS_Terminated);
+      return true;
+   }
+
+   /* Print Job Start message */
+   Jmsg(jcr, M_INFO, 0, _("Start %s JobId %s, Job=%s\n"),
+        jcr->get_OperationName(), edit_uint64(jcr->JobId, ed1), jcr->Job);
+
+   Dmsg3(200, "Start %s JobId %s, Job=%s\n",
+        jcr->get_OperationName(), edit_uint64(jcr->JobId, ed1), jcr->Job);
+
+
+   /*
+    * Now separate the read and write storages. jcr has no wstor...
+    *  they all go into wjcr.
+    */
+   free_rwstorage(wjcr);
+   wjcr->rstore = NULL;
+   wjcr->wstore = jcr->wstore;
+   jcr->wstore = NULL;
+   wjcr->wstorage = jcr->wstorage;
+   jcr->wstorage = NULL;
+
+   /* TODO: See priority with bandwidth parameter */
+   if (jcr->job->max_bandwidth > 0) {
+      jcr->max_bandwidth = jcr->job->max_bandwidth;
+   } else if (jcr->client->max_bandwidth > 0) {
+      jcr->max_bandwidth = jcr->client->max_bandwidth;
+   }
+
+   if (jcr->max_bandwidth > 0) {
+      send_bwlimit(jcr, jcr->Job); /* Old clients don't have this command */
+   }
+
+   /*
+    * Open a message channel connection with the Storage
+    * daemon. This is to let him know that our client
+    * will be contacting him for a backup  session.
+    *
+    */
+   jcr->setJobStatus(JS_WaitSD);
+   wjcr->setJobStatus(JS_WaitSD);
+
+   /*
+    * Start conversation with write Storage daemon
+    */
+   Dmsg0(200, "Connect to write (wjcr) storage daemon.\n");
+   if (!connect_to_storage_daemon(wjcr, 10, SDConnectTimeout, 1)) {
+      goto bail_out;
+   }
+   wsd = wjcr->store_bsock;
+
+   /*
+    * Start conversation with read Storage daemon
+    */
+   Dmsg1(200, "Connect to read (jcr) storage daemon. Jid=%d\n", jcr->JobId);
+   if (!connect_to_storage_daemon(jcr, 10, SDConnectTimeout, 1)) {
+      goto bail_out;
+   }
+   sd = jcr->store_bsock;
+   jcr->sd_calls_client = jcr->client->sd_calls_client;
+
+   Dmsg2(dbglevel, "Read store=%s, write store=%s\n",
+      ((STORE *)jcr->rstorage->first())->name(),
+      ((STORE *)wjcr->wstorage->first())->name());
+
+   /*
+    * Now start a job with the read Storage daemon sending the bsr.
+    *  This call returns the sd_auth_key
+    */
+   Dmsg1(200, "Start job with read (jcr) storage daemon. Jid=%d\n", jcr->JobId);
+   if (!start_storage_daemon_job(jcr, jcr->rstorage, NULL, /*send_bsr*/true)) {
+      goto bail_out;
+   }
+   Dmsg0(150, "Read storage daemon connection OK\n");
+
+   if (jcr->sd_calls_client) {
+      wjcr->sd_calls_client = true;
+      wjcr->sd_client = false;
+   } else {
+      wjcr->sd_calls_client = true;
+      wjcr->sd_client = true;
+   }
+
+   /*
+    * Now start a job with the write Storage daemon sending.
+    */
+   Dmsg1(200, "Start Job with write (wjcr) storage daemon. Jid=%d\n", jcr->JobId);
+   if (!start_storage_daemon_job(wjcr, NULL, wjcr->wstorage, /*no_send_bsr*/false)) {
+      goto bail_out;
+   }
+   Dmsg0(150, "Write 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
+    *  time is set after the run before job.  This avoids
+    *  that any files created by the run before job will
+    *  be saved twice.  They will be backed up in the current
+    *  job, but not in the next one unless they are changed.
+    *  Without this, they will be backed up in this job and
+    *  in the next job run because in that case, their date
+    *   is after the start of this run.
+    */
+   jcr->start_time = time(NULL);
+   jcr->jr.StartTime = jcr->start_time;
+   jcr->jr.JobTDate = jcr->start_time;
+   jcr->setJobStatus(JS_Running);
+
+   /* Update job start record for this mac control job */
+   if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) {
+      Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+      goto bail_out;
+   }
+
+   /* Declare the job started to start the MaxRunTime check */
+   jcr->setJobStarted();
+
+   wjcr->start_time = time(NULL);
+   wjcr->jr.StartTime = wjcr->start_time;
+   wjcr->jr.JobTDate = wjcr->start_time;
+   wjcr->setJobStatus(JS_Running);
+
+
+   /* Update job start record for the real mac backup job */
+   if (!db_update_job_start_record(wjcr, wjcr->db, &wjcr->jr)) {
+      Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(wjcr->db));
+      goto bail_out;
+   }
+
+   Dmsg4(dbglevel, "wjcr: Name=%s JobId=%d Type=%c Level=%c\n",
+      wjcr->jr.Name, (int)wjcr->jr.JobId,
+      wjcr->jr.JobType, wjcr->jr.JobLevel);
+
+
+   if (jcr->sd_calls_client) {
+      /*
+       * Reading SD must call the "client" i.e. the writing SD
+       */
+      if (jcr->SDVersion < 3) {
+         Jmsg(jcr, M_FATAL, 0, _("The Storage daemon does not support SDCallsClient.\n"));
+         goto bail_out;
+      }
+
+      /* Setup the storage address and port */
+      store = wjcr->wstore;
+      if (store->SDDport == 0) {
+         store->SDDport = store->SDport;
+      }
+      store_address = store->address;   /* note: store points to wstore */
+
+      Dmsg2(200, "Start write message thread jid=%d Job=%s\n", wjcr->JobId, wjcr->Job);
+      if (!run_storage_and_start_message_thread(wjcr, wsd)) {
+         goto bail_out;
+      }
+
+      store_port = store->SDDport;
+
+      /*
+       * Send writing SD address to the reading SD
+       */
+      /* Send and wait for connection */
+      /* ***FIXME*** this should probably be jcr->rstore, store_address, ...
+       *   to get TLS right */
+      if (!send_store_addr_to_sd(jcr, wjcr->Job, wjcr->sd_auth_key,
+           store, store_address, store_port)) {
+         goto bail_out;
+      }
+
+      /* Start read message thread */
+      Dmsg2(200, "Start read message thread jid=%d Job=%s\n", jcr->JobId, jcr->Job);
+      if (!run_storage_and_start_message_thread(jcr, sd)) {
+         goto bail_out;
+      }
+
+   } else {
+      /*
+       * Writing SD must simulate an FD and call the reading SD
+       *
+       * Send Storage daemon address to the writing SD
+       */
+      store = jcr->rstore;
+      if (store->SDDport == 0) {
+         store->SDDport = store->SDport;
+      }
+      store_address = get_storage_address(jcr->client, store);
+      store_port = store->SDDport;
+
+      /* Start read message thread */
+      Dmsg2(200, "Start read message thread jid=%d Job=%s\n", jcr->JobId, jcr->Job);
+      if (!run_storage_and_start_message_thread(jcr, sd)) {
+         goto bail_out;
+      }
+
+      /* Attempt connection for one hour */
+      if (!send_store_addr_to_sd(wjcr, jcr->Job, jcr->sd_auth_key,
+                                 store, store_address, store_port)) {
+         goto bail_out;
+      }
+      /* Start write message thread */
+      Dmsg2(200, "Start write message thread jid=%d Job=%s\n", wjcr->JobId, wjcr->Job);
+      if (!run_storage_and_start_message_thread(wjcr, wsd)) {
+         goto bail_out;
+      }
+   }
+
+   jcr->setJobStatus(JS_Running);
+   wjcr->setJobStatus(JS_Running);
+
+   /* Pickup Job termination data */
+   /* Note, the SD stores in jcr->JobFiles/ReadBytes/JobBytes/JobErrors */
+   wait_for_storage_daemon_termination(wjcr);
+   wjcr->setJobStatus(wjcr->SDJobStatus);
+   wait_for_storage_daemon_termination(jcr);
+   jcr->setJobStatus(jcr->SDJobStatus);
+   db_write_batch_file_records(wjcr);    /* used by bulk batch file insert */
+
+   ok = jcr->is_JobStatus(JS_Terminated) && wjcr->is_JobStatus(JS_Terminated);
+
+bail_out:
+   /* Put back jcr write storages for proper cleanup */
+   jcr->wstorage = wjcr->wstorage;
+   jcr->wstore = wjcr->wstore;
+   wjcr->wstore = NULL;
+   wjcr->wstorage = NULL;
+   wjcr->file_bsock = NULL;
+
+   if (ok) {
+      mac_cleanup(jcr, jcr->JobStatus, wjcr->JobStatus);
+   }
+   return ok;
+}
+
+/*
+ * Called from mac_sql.c for each migration/copy job to start
+ */
+void start_mac_job(JCR *jcr)
+{
+   UAContext *ua = new_ua_context(jcr);
+   char ed1[50];
+   char args[MAX_NAME_LENGTH + 50];
+
+   ua->batch = true;
+   Mmsg(ua->cmd, "run job=\"%s\" jobid=%s ignoreduplicatecheck=yes pool=\"%s\"",
+        jcr->job->name(), edit_uint64(jcr->MigrateJobId, ed1),
+        jcr->pool->name());
+   if (jcr->next_pool) {
+      bsnprintf(args, sizeof(args), " nextpool=\"%s\"", jcr->next_pool->name());
+      pm_strcat(ua->cmd, args);
+   }
+   Dmsg2(dbglevel, "=============== %s cmd=%s\n", jcr->get_OperationName(), ua->cmd);
+   parse_ua_args(ua);                 /* parse command */
+   JobId_t jobid = run_cmd(ua, ua->cmd);
+   if (jobid == 0) {
+      Jmsg(jcr, M_ERROR, 0, _("Could not start migration/copy job.\n"));
+   } else {
+      Jmsg(jcr, M_INFO, 0, _("%s JobId %d started.\n"), jcr->get_OperationName(), (int)jobid);
+   }
+   free_ua_context(ua);
+}
+
+/*
+ * Release resources allocated during backup.
+ */
+/* ***FIXME*** implement writeTermCode */
+void mac_cleanup(JCR *jcr, int TermCode, int writeTermCode)
+{
+   char sdt[MAX_TIME_LENGTH], edt[MAX_TIME_LENGTH];
+   char ec1[30], ec2[30], ec3[30], ec4[30], ec5[30], elapsed[50];
+   char ec6[50], ec7[50], ec8[50];
+   char term_code[100], sd_term_msg[100];
+   const char *term_msg;
+   int msg_type = M_INFO;
+   MEDIA_DBR mr;
+   double kbps;
+   utime_t RunTime;
+   JCR *wjcr = jcr->wjcr;
+   POOL_MEM query(PM_MESSAGE);
+   POOL_MEM vol_info;
+
+   Dmsg2(100, "Enter mac_cleanup %d %c\n", TermCode, TermCode);
+   update_job_end(jcr, TermCode);
+
+   /*
+    * Check if we actually did something.
+    *  wjcr is jcr of the newly migrated job.
+    */
+   if (wjcr) {
+      char old_jobid[50], new_jobid[50];
+
+      edit_uint64(jcr->previous_jr.JobId, old_jobid);
+      edit_uint64(wjcr->jr.JobId, new_jobid);
+
+      wjcr->JobFiles = jcr->JobFiles = wjcr->SDJobFiles;
+      wjcr->JobBytes = jcr->JobBytes = wjcr->SDJobBytes;
+      wjcr->jr.RealEndTime = 0;
+      wjcr->jr.PriorJobId = jcr->previous_jr.JobId;
+
+      update_job_end(wjcr, TermCode);
+
+      /* Update final items to set them to the previous job's values */
+      Mmsg(query, "UPDATE Job SET StartTime='%s',EndTime='%s',"
+                  "JobTDate=%s WHERE JobId=%s",
+         jcr->previous_jr.cStartTime, jcr->previous_jr.cEndTime,
+         edit_uint64(jcr->previous_jr.JobTDate, ec1),
+         new_jobid);
+      db_sql_query(wjcr->db, query.c_str(), NULL, NULL);
+
+      /*
+       * If we terminated a migration normally:
+       *   - mark the previous job as migrated
+       *   - move any Log records to the new JobId
+       *   - Purge the File records from the previous job
+       */
+      if (jcr->getJobType() == JT_MIGRATE && jcr->JobStatus == JS_Terminated) {
+         Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
+              (char)JT_MIGRATED_JOB, old_jobid);
+         db_sql_query(wjcr->db, query.c_str(), NULL, NULL);
+         UAContext *ua = new_ua_context(jcr);
+         /* Move JobLog to new JobId */
+         Mmsg(query, "UPDATE Log SET JobId=%s WHERE JobId=%s",
+           new_jobid, old_jobid);
+         db_sql_query(wjcr->db, query.c_str(), NULL, NULL);
+
+         if (jcr->job->PurgeMigrateJob) {
+            /* Purge old Job record */
+            purge_jobs_from_catalog(ua, old_jobid);
+         } else {
+            /* Purge all old file records, but leave Job record */
+            purge_files_from_jobs(ua, old_jobid);
+         }
+
+         free_ua_context(ua);
+      }
+
+      /*
+       * If we terminated a Copy (rather than a Migration) normally:
+       *   - copy any Log records to the new JobId
+       *   - set type="Job Copy" for the new job
+       */
+      if (jcr->getJobType() == JT_COPY && jcr->JobStatus == JS_Terminated) {
+         /* Copy JobLog to new JobId */
+         Mmsg(query, "INSERT INTO Log (JobId, Time, LogText ) "
+                      "SELECT %s, Time, LogText FROM Log WHERE JobId=%s",
+              new_jobid, old_jobid);
+         db_sql_query(wjcr->db, query.c_str(), NULL, NULL);
+         Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
+              (char)JT_JOB_COPY, new_jobid);
+         db_sql_query(wjcr->db, query.c_str(), NULL, NULL);
+      }
+
+      if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
+         Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s"),
+            db_strerror(jcr->db));
+         jcr->setJobStatus(JS_ErrorTerminated);
+      }
+
+      update_bootstrap_file(wjcr);
+
+      if (!db_get_job_volume_names(wjcr, wjcr->db, wjcr->jr.JobId, &wjcr->VolumeName)) {
+         /*
+          * Note, if the job has failed, most likely it did not write any
+          *  tape, so suppress this "error" message since in that case
+          *  it is normal.  Or look at it the other way, only for a
+          *  normal exit should we complain about this error.
+          */
+         if (jcr->JobStatus == JS_Terminated && jcr->jr.JobBytes) {
+            Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(wjcr->db));
+         }
+         wjcr->VolumeName[0] = 0;         /* none */
+      }
+
+      if (wjcr->VolumeName[0]) {
+         /* Find last volume name. Multiple vols are separated by | */
+         char *p = strrchr(wjcr->VolumeName, '|');
+         if (p) {
+            p++;                         /* skip | */
+         } else {
+            p = wjcr->VolumeName;     /* no |, take full name */
+         }
+         bstrncpy(mr.VolumeName, p, sizeof(mr.VolumeName));
+         if (!db_get_media_record(jcr, jcr->db, &mr)) {
+            Jmsg(jcr, M_WARNING, 0, _("Error getting Media record for Volume \"%s\": ERR=%s"),
+               mr.VolumeName, db_strerror(jcr->db));
+         }
+      }
+
+      switch (jcr->JobStatus) {
+      case JS_Terminated:
+         if (jcr->JobErrors || jcr->SDErrors) {
+            term_msg = _("%s OK -- with warnings");
+         } else {
+            term_msg = _("%s OK");
+         }
+         break;
+      case JS_FatalError:
+      case JS_ErrorTerminated:
+         term_msg = _("*** %s Error ***");
+         msg_type = M_ERROR;          /* Generate error message */
+         if (jcr->store_bsock) {
+            jcr->store_bsock->signal(BNET_TERMINATE);
+            if (jcr->SD_msg_chan_started) {
+               pthread_cancel(jcr->SD_msg_chan);
+            }
+         }
+         if (wjcr->store_bsock) {
+            wjcr->store_bsock->signal(BNET_TERMINATE);
+            if (wjcr->SD_msg_chan_started) {
+               pthread_cancel(wjcr->SD_msg_chan);
+            }
+         }
+         break;
+      case JS_Canceled:
+         term_msg = _("%s Canceled");
+         if (jcr->store_bsock) {
+            jcr->store_bsock->signal(BNET_TERMINATE);
+            if (jcr->SD_msg_chan_started) {
+               pthread_cancel(jcr->SD_msg_chan);
+            }
+         }
+         if (wjcr->store_bsock) {
+            wjcr->store_bsock->signal(BNET_TERMINATE);
+            if (wjcr->SD_msg_chan_started) {
+               pthread_cancel(wjcr->SD_msg_chan);
+            }
+         }
+         break;
+      default:
+         term_msg = _("Inappropriate %s term code");
+         break;
+      }
+   } else {
+      if (jcr->getJobType() == JT_MIGRATE && jcr->previous_jr.JobId != 0) {
+         /* Mark previous job as migrated */
+         Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
+              (char)JT_MIGRATED_JOB, edit_uint64(jcr->previous_jr.JobId, ec1));
+         db_sql_query(jcr->db, query.c_str(), NULL, NULL);
+      }
+      term_msg = _("%s -- no files to %s");
+   }
+
+   bsnprintf(term_code, sizeof(term_code), term_msg, jcr->get_OperationName(), jcr->get_ActionName(0));
+   bstrftimes(sdt, sizeof(sdt), jcr->jr.StartTime);
+   bstrftimes(edt, sizeof(edt), jcr->jr.EndTime);
+   RunTime = jcr->jr.EndTime - jcr->jr.StartTime;
+   if (RunTime <= 0) {
+      kbps = 0;
+   } else {
+      kbps = (double)jcr->SDJobBytes / (1000 * RunTime);
+   }
+
+   jobstatus_to_ascii(jcr->SDJobStatus, sd_term_msg, sizeof(sd_term_msg));
+
+   /* Edit string for last volume size */
+   Mmsg(vol_info, _("%s (%sB)"),
+        edit_uint64_with_commas(mr.VolBytes, ec4),
+        edit_uint64_with_suffix(mr.VolBytes, ec5));
+
+   Jmsg(jcr, msg_type, 0, _("%s %s %s (%s):\n"
+"  Build OS:               %s %s %s\n"
+"  Prev Backup JobId:      %s\n"
+"  Prev Backup Job:        %s\n"
+"  New Backup JobId:       %s\n"
+"  Current JobId:          %s\n"
+"  Current Job:            %s\n"
+"  Backup Level:           %s%s\n"
+"  Client:                 %s\n"
+"  FileSet:                \"%s\" %s\n"
+"  Read Pool:              \"%s\" (From %s)\n"
+"  Read Storage:           \"%s\" (From %s)\n"
+"  Write Pool:             \"%s\" (From %s)\n"
+"  Write Storage:          \"%s\" (From %s)\n"
+"  Catalog:                \"%s\" (From %s)\n"
+"  Start time:             %s\n"
+"  End time:               %s\n"
+"  Elapsed time:           %s\n"
+"  Priority:               %d\n"
+"  SD Files Written:       %s\n"
+"  SD Bytes Written:       %s (%sB)\n"
+"  Rate:                   %.1f KB/s\n"
+"  Volume name(s):         %s\n"
+"  Volume Session Id:      %d\n"
+"  Volume Session Time:    %d\n"
+"  Last Volume Bytes:      %s\n"
+"  SD Errors:              %d\n"
+"  SD termination status:  %s\n"
+"  Termination:            %s\n\n"),
+        BACULA, my_name, VERSION, LSMDATE,
+        HOST_OS, DISTNAME, DISTVER,
+        edit_uint64(jcr->previous_jr.JobId, ec6),
+        jcr->previous_jr.Job,
+        wjcr ? edit_uint64(wjcr->jr.JobId, ec7) : "0",
+        edit_uint64(jcr->jr.JobId, ec8),
+        jcr->jr.Job,
+        level_to_str(jcr->getJobLevel()), jcr->since,
+        jcr->client->name(),
+        jcr->fileset->name(), jcr->FSCreateTime,
+        jcr->rpool->name(), jcr->rpool_source,
+        jcr->rstore?jcr->rstore->name():"*None*",
+        NPRT(jcr->rstore_source),
+        jcr->pool->name(), jcr->pool_source,
+        jcr->wstore?jcr->wstore->name():"*None*",
+        NPRT(jcr->wstore_source),
+        jcr->catalog->name(), jcr->catalog_source,
+        sdt,
+        edt,
+        edit_utime(RunTime, elapsed, sizeof(elapsed)),
+        jcr->JobPriority,
+        edit_uint64_with_commas(jcr->SDJobFiles, ec1),
+        edit_uint64_with_commas(jcr->SDJobBytes, ec2),
+        edit_uint64_with_suffix(jcr->SDJobBytes, ec3),
+        (float)kbps,
+        wjcr ? wjcr->VolumeName : "",
+        jcr->VolSessionId,
+        jcr->VolSessionTime,
+        vol_info.c_str(),
+        jcr->SDErrors,
+        sd_term_msg,
+        term_code);
+
+   Dmsg1(100, "migrate_cleanup() wjcr=0x%x\n", jcr->wjcr);
+   if (jcr->wjcr) {
+      free_jcr(jcr->wjcr);
+      jcr->wjcr = NULL;
+   }
+   Dmsg0(100, "Leave migrate_cleanup()\n");
+}
+
+bool set_mac_wstorage(UAContext *ua, JCR *jcr, POOL *pool, POOL *next_pool,
+         const char *source)
+{
+   if (!next_pool) {
+      if (ua) {
+         ua->error_msg(_("No Next Pool specification found in Pool \"%s\".\n"),
+           pool->hdr.name);
+      } else {
+         Jmsg(jcr, M_FATAL, 0, _("No Next Pool specification found in Pool \"%s\".\n"),
+            pool->hdr.name);
+      }
+      return false;
+   }
+
+   if (!next_pool->storage || next_pool->storage->size() == 0) {
+      Jmsg(jcr, M_FATAL, 0, _("No Storage specification found in Next Pool \"%s\".\n"),
+         next_pool->name());
+      return false;
+   }
+
+   /* If pool storage specified, use it instead of job storage for backup */
+   copy_wstorage(jcr, next_pool->storage, source);
+
+   return true;
+}
diff --git a/src/dird/mac_sql.c b/src/dird/mac_sql.c
new file mode 100644
index 0000000..e81fdbd
--- /dev/null
+++ b/src/dird/mac_sql.c
@@ -0,0 +1,760 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2004-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ *
+ *   Bacula Director -- mac.c -- responsible for doing
+ *     migration and copy jobs.
+ *
+ *   Also handles Copy jobs (March MMVIII)
+ *
+ *     Kern Sibbald, September MMIV
+ *
+ *  Basic tasks done here:
+ *     Open DB and create records for this job.
+ *     Open Message Channel with Storage daemon to tell him a job will be starting.
+ *     Open connection with Storage daemon and pass him commands
+ *       to do the backup.
+ *     When the Storage daemon finishes the job, update the DB.
+ *
+ */
+
+#include "bacula.h"
+#include "dird.h"
+#include "ua.h"
+#ifndef HAVE_REGEX_H
+#include "lib/bregex.h"
+#else
+#include <regex.h>
+#endif
+
+struct uitem {
+   dlink link;
+   char *item;
+};
+
+/* Imported functions */
+extern void start_mac_job(JCR*);
+
+static const int dbglevel = 10;
+
+/* Forware referenced functions */
+static bool find_mediaid_then_jobids(JCR *jcr, idpkt *ids, const char *query1,
+                 const char *type);
+static bool regex_find_jobids(JCR *jcr, idpkt *ids, const char *query1,
+                 const char *query2, const char *type);
+static int get_next_dbid_from_list(char **p, DBId_t *DBId);
+static int unique_dbid_handler(void *ctx, int num_fields, char **row);
+static int unique_name_handler(void *ctx, int num_fields, char **row);
+static bool find_jobids_from_mediaid_list(JCR *jcr, idpkt *ids, const char *type);
+static bool find_jobids_of_pool_uncopied_jobs(JCR *jcr, idpkt *ids);
+
+/* Get Job names in Pool */
+static const char *sql_job =
+   "SELECT DISTINCT Job.Name from Job,Pool"
+   " WHERE Pool.Name='%s' AND Job.PoolId=Pool.PoolId";
+
+/* Get JobIds from regex'ed Job names */
+static const char *sql_jobids_from_job =
+   "SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool"
+   " WHERE Job.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
+   " ORDER by Job.StartTime";
+
+/* Get Client names in Pool */
+static const char *sql_client =
+   "SELECT DISTINCT Client.Name from Client,Pool,Job"
+   " WHERE Pool.Name='%s' AND Job.ClientId=Client.ClientId AND"
+   " Job.PoolId=Pool.PoolId";
+
+/* Get JobIds from regex'ed Client names */
+static const char *sql_jobids_from_client =
+   "SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool,Client"
+   " WHERE Client.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
+   " AND Job.ClientId=Client.ClientId AND Job.Type IN ('B','C')"
+   " AND Job.JobStatus IN ('T','W')"
+   " ORDER by Job.StartTime";
+
+/* Get Volume names in Pool */
+static const char *sql_vol =
+   "SELECT DISTINCT VolumeName FROM Media,Pool WHERE"
+   " VolStatus in ('Full','Used','Error') AND Media.Enabled=1 AND"
+   " Media.PoolId=Pool.PoolId AND Pool.Name='%s'";
+
+/* Get JobIds from regex'ed Volume names */
+static const char *sql_jobids_from_vol =
+   "SELECT DISTINCT Job.JobId,Job.StartTime FROM Media,JobMedia,Job"
+   " WHERE Media.VolumeName='%s' AND Media.MediaId=JobMedia.MediaId"
+   " AND JobMedia.JobId=Job.JobId AND Job.Type IN ('B','C')"
+   " AND Job.JobStatus IN ('T','W') AND Media.Enabled=1"
+   " ORDER by Job.StartTime";
+
+static const char *sql_smallest_vol =
+   "SELECT Media.MediaId FROM Media,Pool,JobMedia WHERE"
+   " Media.MediaId in (SELECT DISTINCT MediaId from JobMedia) AND"
+   " Media.VolStatus in ('Full','Used','Error') AND Media.Enabled=1 AND"
+   " Media.PoolId=Pool.PoolId AND Pool.Name='%s'"
+   " ORDER BY VolBytes ASC LIMIT 1";
+
+static const char *sql_oldest_vol =
+   "SELECT Media.MediaId FROM Media,Pool,JobMedia WHERE"
+   " Media.MediaId in (SELECT DISTINCT MediaId from JobMedia) AND"
+   " Media.VolStatus in ('Full','Used','Error') AND Media.Enabled=1 AND"
+   " Media.PoolId=Pool.PoolId AND Pool.Name='%s'"
+   " ORDER BY LastWritten ASC LIMIT 1";
+
+/* Get JobIds when we have selected MediaId */
+static const char *sql_jobids_from_mediaid =
+   "SELECT DISTINCT Job.JobId,Job.StartTime FROM JobMedia,Job"
+   " WHERE JobMedia.JobId=Job.JobId AND JobMedia.MediaId IN (%s)"
+   " AND Job.Type IN ('B','C') AND Job.JobStatus IN ('T','W')"
+   " ORDER by Job.StartTime";
+
+/* Get the number of bytes in the pool */
+static const char *sql_pool_bytes =
+   "SELECT SUM(JobBytes) FROM Job WHERE JobId IN"
+   " (SELECT DISTINCT Job.JobId from Pool,Job,Media,JobMedia WHERE"
+   " Pool.Name='%s' AND Media.PoolId=Pool.PoolId AND"
+   " VolStatus in ('Full','Used','Error','Append') AND Media.Enabled=1 AND"
+   " Job.Type IN ('B','C') AND Job.JobStatus IN ('T','W') AND"
+   " JobMedia.JobId=Job.JobId AND Job.PoolId=Media.PoolId)";
+
+/* Get the number of bytes in the Jobs */
+static const char *sql_job_bytes =
+   "SELECT SUM(JobBytes) FROM Job WHERE JobId IN (%s)";
+
+/* Get Media Ids in Pool */
+static const char *sql_mediaids =
+   "SELECT MediaId FROM Media,Pool WHERE"
+   " VolStatus in ('Full','Used','Error') AND Media.Enabled=1 AND"
+   " Media.PoolId=Pool.PoolId AND Pool.Name='%s' ORDER BY LastWritten ASC";
+
+/* Get JobIds in Pool longer than specified time */
+static const char *sql_pool_time =
+   "SELECT DISTINCT Job.JobId FROM Pool,Job,Media,JobMedia WHERE"
+   " Pool.Name='%s' AND Media.PoolId=Pool.PoolId AND"
+   " VolStatus IN ('Full','Used','Error') AND Media.Enabled=1 AND"
+   " Job.Type IN ('B','C') AND Job.JobStatus IN ('T','W') AND"
+   " JobMedia.JobId=Job.JobId AND Job.PoolId=Media.PoolId"
+   " AND Job.RealEndTime<='%s'";
+
+/* Get JobIds from successfully completed backup jobs which have not been copied before */
+static const char *sql_jobids_of_pool_uncopied_jobs =
+   "SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool"
+   " WHERE Pool.Name = '%s' AND Pool.PoolId = Job.PoolId"
+   " AND Job.Type = 'B' AND Job.JobStatus IN ('T','W')"
+   " AND Job.jobBytes > 0"
+   " AND Job.JobId NOT IN"
+   " (SELECT PriorJobId FROM Job WHERE"
+   " Type IN ('B','C') AND Job.JobStatus IN ('T','W')"
+   " AND PriorJobId != 0)"
+   " ORDER by Job.StartTime";
+
+/*
+ *
+ * This is the central piece of code that finds a job or jobs
+ *   actually JobIds to migrate.  It first looks to see if one
+ *   has been "manually" specified in jcr->MigrateJobId, and if
+ *   so, it returns that JobId to be run.  Otherwise, it
+ *   examines the Selection Type to see what kind of migration
+ *   we are doing (Volume, Job, Client, ...) and applies any
+ *   Selection Pattern if appropriate to obtain a list of JobIds.
+ *   Finally, it will loop over all the JobIds found, except the last
+ *   one starting a new job with MigrationJobId set to that JobId, and
+ *   finally, it returns the last JobId to the caller.
+ *
+ * Returns: -1  on error
+ *           0  if no jobs to migrate
+ *           1  if OK and jcr->previous_jr filled in
+ */
+int getJob_to_migrate(JCR *jcr)
+{
+   char ed1[30], ed2[30];
+   POOL_MEM query(PM_MESSAGE);
+   JobId_t JobId;
+   DBId_t DBId = 0;
+   int stat;
+   char *p;
+   idpkt ids, mid, jids;
+   db_int64_ctx ctx;
+   int64_t pool_bytes;
+   time_t ttime;
+   struct tm tm;
+   char dt[MAX_TIME_LENGTH];
+   int count = 0;
+   int limit = jcr->job->MaxSpawnedJobs;   /* limit is max jobs to start */
+
+   ids.list = get_pool_memory(PM_MESSAGE);
+   ids.list[0] = 0;
+   ids.count = 0;
+   mid.list = get_pool_memory(PM_MESSAGE);
+   mid.list[0] = 0;
+   mid.count = 0;
+   jids.list = get_pool_memory(PM_MESSAGE);
+   jids.list[0] = 0;
+   jids.count = 0;
+
+   /*
+    * If MigrateJobId is set, then we migrate only that Job,
+    *  otherwise, we go through the full selection of jobs to
+    *  migrate.
+    */
+   if (jcr->MigrateJobId != 0) {
+      Dmsg1(dbglevel, "At Job start previous jobid=%u\n", jcr->MigrateJobId);
+      JobId = jcr->MigrateJobId;
+   } else {
+      switch (jcr->job->selection_type) {
+      case MT_JOB:
+         if (!regex_find_jobids(jcr, &ids, sql_job, sql_jobids_from_job, "Job")) {
+            goto bail_out;
+         }
+         break;
+      case MT_CLIENT:
+         if (!regex_find_jobids(jcr, &ids, sql_client, sql_jobids_from_client, "Client")) {
+            goto bail_out;
+         }
+         break;
+      case MT_VOLUME:
+         if (!regex_find_jobids(jcr, &ids, sql_vol, sql_jobids_from_vol, "Volume")) {
+            goto bail_out;
+         }
+         break;
+      case MT_SQLQUERY:
+         if (!jcr->job->selection_pattern) {
+            Jmsg(jcr, M_FATAL, 0, _("No %s SQL selection pattern specified.\n"), jcr->get_OperationName());
+            goto bail_out;
+         }
+         Dmsg1(dbglevel, "SQL=%s\n", jcr->job->selection_pattern);
+         if (!db_sql_query(jcr->db, jcr->job->selection_pattern,
+              unique_dbid_handler, (void *)&ids)) {
+            Jmsg(jcr, M_FATAL, 0,
+                 _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
+            goto bail_out;
+         }
+         break;
+      case MT_SMALLEST_VOL:
+         if (!find_mediaid_then_jobids(jcr, &ids, sql_smallest_vol, "Smallest Volume")) {
+            goto bail_out;
+         }
+         break;
+      case MT_OLDEST_VOL:
+         if (!find_mediaid_then_jobids(jcr, &ids, sql_oldest_vol, "Oldest Volume")) {
+            goto bail_out;
+         }
+         break;
+      case MT_POOL_OCCUPANCY:
+         ctx.count = 0;
+         /* Find count of bytes in pool */
+         Mmsg(query, sql_pool_bytes, jcr->rpool->name());
+         if (!db_sql_query(jcr->db, query.c_str(), db_int64_handler, (void *)&ctx)) {
+            Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
+            goto bail_out;
+         }
+         if (ctx.count == 0) {
+            Jmsg(jcr, M_INFO, 0, _("No Volumes found to %s.\n"), jcr->get_ActionName(0));
+            goto ok_out;
+         }
+         pool_bytes = ctx.value;
+         Dmsg2(dbglevel, "highbytes=%lld pool=%lld\n", jcr->rpool->MigrationHighBytes,
+               pool_bytes);
+         if (pool_bytes < (int64_t)jcr->rpool->MigrationHighBytes) {
+            Jmsg(jcr, M_INFO, 0, _("No Volumes found to %s.\n"), jcr->get_ActionName(0));
+            goto ok_out;
+         }
+         Dmsg0(dbglevel, "We should do Occupation migration.\n");
+
+         ids.count = 0;
+         /* Find a list of MediaIds that could be migrated */
+         Mmsg(query, sql_mediaids, jcr->rpool->name());
+         Dmsg1(dbglevel, "query=%s\n", query.c_str());
+         if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)&ids)) {
+            Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
+            goto bail_out;
+         }
+         if (ids.count == 0) {
+            Jmsg(jcr, M_INFO, 0, _("No Volumes found to %s.\n"), jcr->get_ActionName(0));
+            goto ok_out;
+         }
+         Dmsg2(dbglevel, "Pool Occupancy ids=%d MediaIds=%s\n", ids.count, ids.list);
+
+         if (!find_jobids_from_mediaid_list(jcr, &ids, "Volume")) {
+            goto bail_out;
+         }
+         /* ids == list of jobs  */
+         p = ids.list;
+         for (int i=0; i < (int)ids.count; i++) {
+            stat = get_next_dbid_from_list(&p, &DBId);
+            Dmsg2(dbglevel, "get_next_dbid stat=%d JobId=%u\n", stat, (uint32_t)DBId);
+            if (stat < 0) {
+               Jmsg(jcr, M_FATAL, 0, _("Invalid JobId found.\n"));
+               goto bail_out;
+            } else if (stat == 0) {
+               break;
+            }
+
+            mid.count = 1;
+            Mmsg(mid.list, "%s", edit_int64(DBId, ed1));
+            if (jids.count > 0) {
+               pm_strcat(jids.list, ",");
+            }
+            pm_strcat(jids.list, mid.list);
+            jids.count += mid.count;
+
+            /* Find count of bytes from Jobs */
+            Mmsg(query, sql_job_bytes, mid.list);
+            Dmsg1(dbglevel, "Jobbytes query: %s\n", query.c_str());
+            if (!db_sql_query(jcr->db, query.c_str(), db_int64_handler, (void *)&ctx)) {
+               Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
+               goto bail_out;
+            }
+            pool_bytes -= ctx.value;
+            Dmsg2(dbglevel, "Total %s Job bytes=%s\n", jcr->get_ActionName(0), edit_int64_with_commas(ctx.value, ed1));
+            Dmsg2(dbglevel, "lowbytes=%s poolafter=%s\n",
+                  edit_int64_with_commas(jcr->rpool->MigrationLowBytes, ed1),
+                  edit_int64_with_commas(pool_bytes, ed2));
+            if (pool_bytes <= (int64_t)jcr->rpool->MigrationLowBytes) {
+               Dmsg0(dbglevel, "We should be done.\n");
+               break;
+            }
+         }
+         /* Transfer jids to ids, where the jobs list is expected */
+         ids.count = jids.count;
+         pm_strcpy(ids.list, jids.list);
+         Dmsg2(dbglevel, "Pool Occupancy ids=%d JobIds=%s\n", ids.count, ids.list);
+         break;
+      case MT_POOL_TIME:
+         ttime = time(NULL) - (time_t)jcr->rpool->MigrationTime;
+         (void)localtime_r(&ttime, &tm);
+         strftime(dt, sizeof(dt), "%Y-%m-%d %H:%M:%S", &tm);
+
+         ids.count = 0;
+         Mmsg(query, sql_pool_time, jcr->rpool->name(), dt);
+         Dmsg1(dbglevel, "query=%s\n", query.c_str());
+         if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)&ids)) {
+            Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
+            goto bail_out;
+         }
+         if (ids.count == 0) {
+            Jmsg(jcr, M_INFO, 0, _("No Volumes found to %s.\n"), jcr->get_ActionName(0));
+            goto ok_out;
+         }
+         Dmsg2(dbglevel, "PoolTime ids=%d JobIds=%s\n", ids.count, ids.list);
+         break;
+      case MT_POOL_UNCOPIED_JOBS:
+         if (!find_jobids_of_pool_uncopied_jobs(jcr, &ids)) {
+            goto bail_out;
+         }
+         break;
+      default:
+         Jmsg(jcr, M_FATAL, 0, _("Unknown %s Selection Type.\n"), jcr->get_OperationName());
+         goto bail_out;
+      }
+
+      /*
+       * Loop over all jobids except the last one, sending
+       * them to start_mac_job(), which will start a job
+       * for each of them.  For the last JobId, we handle it below.
+       */
+      p = ids.list;
+      if (ids.count == 0) {
+         Jmsg(jcr, M_INFO, 0, _("No JobIds found to %s.\n"), jcr->get_ActionName(0));
+         goto ok_out;
+      }
+
+      Jmsg(jcr, M_INFO, 0, _("The following %u JobId%s chosen to be %s: %s\n"),
+         ids.count, (ids.count < 2) ? _(" was") : _("s were"),
+         jcr->get_ActionName(1), ids.list);
+
+      Dmsg2(dbglevel, "Before loop count=%d ids=%s\n", ids.count, ids.list);
+      /*
+       * Note: to not over load the system, limit the number
+       *  of new jobs started to 100 (see limit above)
+       */
+      for (int i=1; i < (int)ids.count; i++) {
+         JobId = 0;
+         stat = get_next_jobid_from_list(&p, &JobId);
+         Dmsg3(dbglevel, "getJobid_no=%d stat=%d JobId=%u\n", i, stat, JobId);
+         if (stat < 0) {
+            Jmsg(jcr, M_FATAL, 0, _("Invalid JobId found.\n"));
+            goto bail_out;
+         } else if (stat == 0) {
+            Jmsg(jcr, M_INFO, 0, _("No JobIds found to %s.\n"), jcr->get_ActionName(0));
+            goto ok_out;
+         }
+         jcr->MigrateJobId = JobId;
+         /* Don't start any more when limit reaches zero */
+         limit--;
+         if (limit > 0) {
+            start_mac_job(jcr);
+            Dmsg0(dbglevel, "Back from start_mac_job\n");
+         }
+      }
+
+      /* Now get the last JobId and handle it in the current job */
+      JobId = 0;
+      stat = get_next_jobid_from_list(&p, &JobId);
+      Dmsg2(dbglevel, "Last get_next_jobid stat=%d JobId=%u\n", stat, (int)JobId);
+      if (stat < 0) {
+         Jmsg(jcr, M_FATAL, 0, _("Invalid JobId found.\n"));
+         goto bail_out;
+      } else if (stat == 0) {
+         Jmsg(jcr, M_INFO, 0, _("No JobIds found to %s.\n"), jcr->get_ActionName(0));
+         goto ok_out;
+      }
+   }
+
+   jcr->previous_jr.JobId = JobId;
+   Dmsg1(dbglevel, "Previous jobid=%d\n", (int)jcr->previous_jr.JobId);
+
+   if (!db_get_job_record(jcr, jcr->db, &jcr->previous_jr)) {
+      Jmsg(jcr, M_FATAL, 0, _("Could not get job record for JobId %s to %s. ERR=%s"),
+           edit_int64(jcr->previous_jr.JobId, ed1),
+           jcr->get_ActionName(0),
+           db_strerror(jcr->db));
+      goto bail_out;
+   }
+
+   Jmsg(jcr, M_INFO, 0, _("%s using JobId=%s Job=%s\n"),
+      jcr->get_OperationName(),
+      edit_int64(jcr->previous_jr.JobId, ed1), jcr->previous_jr.Job);
+   Dmsg4(dbglevel, "%s JobId=%d  using JobId=%s Job=%s\n",
+      jcr->get_OperationName(),
+      jcr->JobId,
+      edit_int64(jcr->previous_jr.JobId, ed1), jcr->previous_jr.Job);
+   count = 1;
+
+ok_out:
+   goto out;
+
+bail_out:
+   count = -1;
+
+out:
+   free_pool_memory(ids.list);
+   free_pool_memory(mid.list);
+   free_pool_memory(jids.list);
+   return count;
+}
+
+/*
+ * This routine returns:
+ *    false       if an error occurred
+ *    true        otherwise
+ *    ids.count   number of jobids found (may be zero)
+ */
+static bool find_jobids_from_mediaid_list(JCR *jcr, idpkt *ids, const char *type)
+{
+   bool ok = false;
+   POOL_MEM query(PM_MESSAGE);
+
+   Mmsg(query, sql_jobids_from_mediaid, ids->list);
+   ids->count = 0;
+   if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)ids)) {
+      Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
+      goto bail_out;
+   }
+   if (ids->count == 0) {
+      Jmsg(jcr, M_INFO, 0, _("No %ss found to %s.\n"), type, jcr->get_ActionName(0));
+   }
+   ok = true;
+
+bail_out:
+   return ok;
+}
+
+/*
+ * This routine returns:
+ *    false       if an error occurred
+ *    true        otherwise
+ *    ids.count   number of jobids found (may be zero)
+ */
+static bool find_jobids_of_pool_uncopied_jobs(JCR *jcr, idpkt *ids)
+{
+   bool ok = false;
+   POOL_MEM query(PM_MESSAGE);
+
+   /* Only a copy job is allowed */
+   if (jcr->getJobType() != JT_COPY) {
+      Jmsg(jcr, M_FATAL, 0,
+           _("Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"));
+      goto bail_out;
+   }
+
+   Dmsg1(dbglevel, "copy selection pattern=%s\n", jcr->rpool->name());
+   Mmsg(query, sql_jobids_of_pool_uncopied_jobs, jcr->rpool->name());
+   Dmsg1(dbglevel, "get uncopied jobs query=%s\n", query.c_str());
+   if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)ids)) {
+      Jmsg(jcr, M_FATAL, 0,
+           _("SQL to get uncopied jobs failed. ERR=%s\n"), db_strerror(jcr->db));
+      goto bail_out;
+   }
+   ok = true;
+
+bail_out:
+   return ok;
+}
+
+static bool regex_find_jobids(JCR *jcr, idpkt *ids, const char *query1,
+                 const char *query2, const char *type)
+{
+   dlist *item_chain;
+   uitem *item = NULL;
+   uitem *last_item = NULL;
+   regex_t preg;
+   char prbuf[500];
+   int rc;
+   bool ok = false;
+   POOL_MEM query(PM_MESSAGE);
+
+   item_chain = New(dlist(item, &item->link));
+   if (!jcr->job->selection_pattern) {
+      Jmsg(jcr, M_FATAL, 0, _("No %s %s selection pattern specified.\n"),
+         jcr->get_OperationName(), type);
+      goto bail_out;
+   }
+   Dmsg1(dbglevel, "regex-sel-pattern=%s\n", jcr->job->selection_pattern);
+   /* Basic query for names */
+   Mmsg(query, query1, jcr->rpool->name());
+   Dmsg1(dbglevel, "get name query1=%s\n", query.c_str());
+   if (!db_sql_query(jcr->db, query.c_str(), unique_name_handler,
+        (void *)item_chain)) {
+      Jmsg(jcr, M_FATAL, 0,
+           _("SQL to get %s failed. ERR=%s\n"), type, db_strerror(jcr->db));
+      goto bail_out;
+   }
+   Dmsg1(dbglevel, "query1 returned %d names\n", item_chain->size());
+   if (item_chain->size() == 0) {
+      Jmsg(jcr, M_INFO, 0, _("Query of Pool \"%s\" returned no Jobs to %s.\n"),
+           jcr->rpool->name(), jcr->get_ActionName(0));
+      ok = true;
+      goto bail_out;               /* skip regex match */
+   } else {
+      /* Compile regex expression */
+      rc = regcomp(&preg, jcr->job->selection_pattern, REG_EXTENDED);
+      if (rc != 0) {
+         regerror(rc, &preg, prbuf, sizeof(prbuf));
+         Jmsg(jcr, M_FATAL, 0, _("Could not compile regex pattern \"%s\" ERR=%s\n"),
+              jcr->job->selection_pattern, prbuf);
+         goto bail_out;
+      }
+      /* Now apply the regex to the names and remove any item not matched */
+      foreach_dlist(item, item_chain) {
+         const int nmatch = 30;
+         regmatch_t pmatch[nmatch];
+         if (last_item) {
+            Dmsg1(dbglevel, "Remove item %s\n", last_item->item);
+            free(last_item->item);
+            item_chain->remove(last_item);
+         }
+         Dmsg1(dbglevel, "get name Item=%s\n", item->item);
+         rc = regexec(&preg, item->item, nmatch, pmatch,  0);
+         if (rc == 0) {
+            last_item = NULL;   /* keep this one */
+         } else {
+            last_item = item;
+         }
+      }
+      if (last_item) {
+         free(last_item->item);
+         Dmsg1(dbglevel, "Remove item %s\n", last_item->item);
+         item_chain->remove(last_item);
+      }
+      regfree(&preg);
+   }
+   if (item_chain->size() == 0) {
+      Jmsg(jcr, M_INFO, 0, _("Regex pattern matched no Jobs to %s.\n"), jcr->get_ActionName(0));
+      ok = true;
+      goto bail_out;               /* skip regex match */
+   }
+
+   /*
+    * At this point, we have a list of items in item_chain
+    *  that have been matched by the regex, so now we need
+    *  to look up their jobids.
+    */
+   ids->count = 0;
+   foreach_dlist(item, item_chain) {
+      Dmsg2(dbglevel, "Got %s: %s\n", type, item->item);
+      Mmsg(query, query2, item->item, jcr->rpool->name());
+      Dmsg1(dbglevel, "get id from name query2=%s\n", query.c_str());
+      if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)ids)) {
+         Jmsg(jcr, M_FATAL, 0,
+              _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
+         goto bail_out;
+      }
+   }
+   if (ids->count == 0) {
+      Jmsg(jcr, M_INFO, 0, _("No %ss found to %s.\n"), type, jcr->get_ActionName(0));
+   }
+   ok = true;
+
+bail_out:
+   Dmsg2(dbglevel, "Count=%d Jobids=%s\n", ids->count, ids->list);
+   foreach_dlist(item, item_chain) {
+      free(item->item);
+   }
+   delete item_chain;
+   return ok;
+}
+
+static bool find_mediaid_then_jobids(JCR *jcr, idpkt *ids, const char *query1,
+                 const char *type)
+{
+   bool ok = false;
+   POOL_MEM query(PM_MESSAGE);
+
+   ids->count = 0;
+   /* Basic query for MediaId */
+   Mmsg(query, query1, jcr->rpool->name());
+   if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)ids)) {
+      Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
+      goto bail_out;
+   }
+   if (ids->count == 0) {
+      Jmsg(jcr, M_INFO, 0, _("No %s found to %s.\n"), type, jcr->get_ActionName(0));
+      ok = true;         /* Not an error */
+      goto bail_out;
+   } else if (ids->count != 1) {
+      Jmsg(jcr, M_FATAL, 0, _("SQL error. Expected 1 MediaId got %d\n"), ids->count);
+      goto bail_out;
+   }
+   Dmsg2(dbglevel, "%s MediaIds=%s\n", type, ids->list);
+
+   ok = find_jobids_from_mediaid_list(jcr, ids, type);
+
+bail_out:
+   return ok;
+}
+
+/*
+* const char *sql_ujobid =
+*   "SELECT DISTINCT Job.Job from Client,Pool,Media,Job,JobMedia "
+*   " WHERE Media.PoolId=Pool.PoolId AND Pool.Name='%s' AND"
+*   " JobMedia.JobId=Job.JobId AND Job.PoolId=Media.PoolId";
+*/
+
+/* Add an item to the list if it is unique */
+static void add_unique_id(idpkt *ids, char *item)
+{
+   const int maxlen = 30;
+   char id[maxlen+1];
+   char *q = ids->list;
+
+   /* Walk through current list to see if each item is the same as item */
+   for ( ; *q; ) {
+       id[0] = 0;
+       for (int i=0; i<maxlen; i++) {
+          if (*q == 0) {
+             break;
+          } else if (*q == ',') {
+             q++;
+             break;
+          }
+          id[i] = *q++;
+          id[i+1] = 0;
+       }
+       if (strcmp(item, id) == 0) {
+          return;
+       }
+   }
+   /* Did not find item, so add it to list */
+   if (ids->count == 0) {
+      ids->list[0] = 0;
+   } else {
+      pm_strcat(ids->list, ",");
+   }
+   pm_strcat(ids->list, item);
+   ids->count++;
+// Dmsg3(0, "add_uniq count=%d Ids=%p %s\n", ids->count, ids->list, ids->list);
+   return;
+}
+
+/*
+ * Callback handler make list of DB Ids
+ */
+static int unique_dbid_handler(void *ctx, int num_fields, char **row)
+{
+   idpkt *ids = (idpkt *)ctx;
+
+   /* Sanity check */
+   if (!row || !row[0]) {
+      Dmsg0(dbglevel, "dbid_hdlr error empty row\n");
+      return 1;              /* stop calling us */
+   }
+
+   add_unique_id(ids, row[0]);
+   Dmsg3(dbglevel, "dbid_hdlr count=%d Ids=%p %s\n", ids->count, ids->list, ids->list);
+   return 0;
+}
+
+static int item_compare(void *item1, void *item2)
+{
+   uitem *i1 = (uitem *)item1;
+   uitem *i2 = (uitem *)item2;
+   return strcmp(i1->item, i2->item);
+}
+
+static int unique_name_handler(void *ctx, int num_fields, char **row)
+{
+   dlist *list = (dlist *)ctx;
+
+   uitem *new_item = (uitem *)malloc(sizeof(uitem));
+   uitem *item;
+
+   memset(new_item, 0, sizeof(uitem));
+   new_item->item = bstrdup(row[0]);
+   Dmsg1(dbglevel, "Unique_name_hdlr Item=%s\n", row[0]);
+   item = (uitem *)list->binary_insert((void *)new_item, item_compare);
+   if (item != new_item) {            /* already in list */
+      free(new_item->item);
+      free((char *)new_item);
+      return 0;
+   }
+   return 0;
+}
+
+/*
+ * Return next DBId from comma separated list
+ *
+ * Returns:
+ *   1 if next DBId returned
+ *   0 if no more DBIds are in list
+ *  -1 there is an error
+ */
+static int get_next_dbid_from_list(char **p, DBId_t *DBId)
+{
+   const int maxlen = 30;
+   char id[maxlen+1];
+   char *q = *p;
+
+   id[0] = 0;
+   for (int i=0; i<maxlen; i++) {
+      if (*q == 0) {
+         break;
+      } else if (*q == ',') {
+         q++;
+         break;
+      }
+      id[i] = *q++;
+      id[i+1] = 0;
+   }
+   if (id[0] == 0) {
+      return 0;
+   } else if (!is_a_number(id)) {
+      return -1;                      /* error */
+   }
+   *p = q;
+   *DBId = str_to_int64(id);
+   return 1;
+}
diff --git a/src/dird/migrate.c b/src/dird/migrate.c
deleted file mode 100644
index c4738ea..0000000
--- a/src/dird/migrate.c
+++ /dev/null
@@ -1,1441 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   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.
-   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.
-*/
-/*
- *
- *   Bacula Director -- migrate.c -- responsible for doing
- *     migration and copy jobs.
- * 
- *   Also handles Copy jobs (March MMVIII)
- *
- *     Kern Sibbald, September MMIV
- *
- *  Basic tasks done here:
- *     Open DB and create records for this job.
- *     Open Message Channel with Storage daemon to tell him a job will be starting.
- *     Open connection with Storage daemon and pass him commands
- *       to do the backup.
- *     When the Storage daemon finishes the job, update the DB.
- *
- */
-
-#include "bacula.h"
-#include "dird.h"
-#include "ua.h"
-#ifndef HAVE_REGEX_H
-#include "lib/bregex.h"
-#else
-#include <regex.h>
-#endif
-
-static const int dbglevel = 10;
-
-static int getJob_to_migrate(JCR *jcr);
-struct idpkt;
-static bool regex_find_jobids(JCR *jcr, idpkt *ids, const char *query1,
-                 const char *query2, const char *type);
-static bool find_mediaid_then_jobids(JCR *jcr, idpkt *ids, const char *query1,
-                 const char *type);
-static bool find_jobids_from_mediaid_list(JCR *jcr, idpkt *ids, const char *type);
-static bool find_jobids_of_pool_uncopied_jobs(JCR *jcr, idpkt *ids);
-static void start_migration_job(JCR *jcr);
-static int get_next_dbid_from_list(char **p, DBId_t *DBId);
-static bool set_migration_next_pool(JCR *jcr, POOL **pool);
-
-/* 
- * Called here before the job is run to do the job
- *   specific setup.  Note, one of the important things to
- *   complete in this init code is to make the definitive
- *   choice of input and output storage devices.  This is
- *   because immediately after the init, the job is queued
- *   in the jobq.c code, and it checks that all the resources
- *   (storage resources in particular) are available, so these
- *   must all be properly defined.
- *
- *  previous_jr refers to the job DB record of the Job that is
- *    going to be migrated.
- *  prev_job refers to the job resource of the Job that is
- *    going to be migrated.
- *  jcr is the jcr for the current "migration" job.  It is a
- *    control job that is put in the DB as a migration job, which
- *    means that this job migrated a previous job to a new job.
- *    No Volume or File data is associated with this control
- *    job.
- *  mig_jcr refers to the newly migrated job that is run by
- *    the current jcr.  It is a backup job that moves (migrates) the
- *    data written for the previous_jr into the new pool.  This
- *    job (mig_jcr) becomes the new backup job that replaces
- *    the original backup job. Note, this jcr is not really run. It
- *    is simply attached to the current jcr.  It will show up in
- *    the Director's status output, but not in the SD or FD, both of
- *    which deal only with the current migration job (i.e. jcr).
- */
-bool do_migration_init(JCR *jcr)
-{
-   POOL *pool = NULL;
-   JOB *job, *prev_job;
-   JCR *mig_jcr;                   /* newly migrated job */
-   int count;
-
-
-   apply_pool_overrides(jcr);
-
-   if (!allow_duplicate_job(jcr)) {
-      return false;
-   }
-
-   jcr->jr.PoolId = get_or_create_pool_record(jcr, jcr->pool->name());
-   if (jcr->jr.PoolId == 0) {
-      Dmsg1(dbglevel, "JobId=%d no PoolId\n", (int)jcr->JobId);
-      Jmsg(jcr, M_FATAL, 0, _("Could not get or create a Pool record.\n"));
-      return false;
-   }
-   /*
-    * Note, at this point, pool is the pool for this job.  We
-    *  transfer it to rpool (read pool), and a bit later,
-    *  pool will be changed to point to the write pool, 
-    *  which comes from pool->NextPool.
-    */
-   jcr->rpool = jcr->pool;            /* save read pool */
-   pm_strcpy(jcr->rpool_source, jcr->pool_source);
-
-
-   Dmsg2(dbglevel, "Read pool=%s (From %s)\n", jcr->rpool->name(), jcr->rpool_source);
-
-   if (!get_or_create_fileset_record(jcr)) {
-      Dmsg1(dbglevel, "JobId=%d no FileSet\n", (int)jcr->JobId);
-      Jmsg(jcr, M_FATAL, 0, _("Could not get or create the FileSet record.\n"));
-      return false;
-   }
-
-   /* If we find a job or jobs to migrate it is previous_jr.JobId */
-   count = getJob_to_migrate(jcr);
-   if (count < 0) {
-      return false;
-   }
-   if (count == 0) {
-      set_migration_next_pool(jcr, &pool);
-      return true;                    /* no work */
-   }
-
-   Dmsg1(dbglevel, "Back from getJob_to_migrate JobId=%d\n", (int)jcr->JobId);
-
-   if (jcr->previous_jr.JobId == 0) {
-      Dmsg1(dbglevel, "JobId=%d no previous JobId\n", (int)jcr->JobId);
-      Jmsg(jcr, M_INFO, 0, _("No previous Job found to %s.\n"), jcr->get_ActionName(0));
-      set_migration_next_pool(jcr, &pool);
-      return true;                    /* no work */
-   }
-
-   if (create_restore_bootstrap_file(jcr) < 0) {
-      Jmsg(jcr, M_FATAL, 0, _("Create bootstrap file failed.\n"));
-      return false;
-   }
-
-   if (jcr->previous_jr.JobId == 0 || jcr->ExpectedFiles == 0) {
-      jcr->setJobStatus(JS_Terminated);
-      Dmsg1(dbglevel, "JobId=%d expected files == 0\n", (int)jcr->JobId);
-      if (jcr->previous_jr.JobId == 0) {
-         Jmsg(jcr, M_INFO, 0, _("No previous Job found to %s.\n"), jcr->get_ActionName(0));
-      } else {
-         Jmsg(jcr, M_INFO, 0, _("Previous Job has no data to %s.\n"), jcr->get_ActionName(0));
-      }
-      set_migration_next_pool(jcr, &pool);
-      return true;                    /* no work */
-   }
-
-
-   Dmsg5(dbglevel, "JobId=%d: Current: Name=%s JobId=%d Type=%c Level=%c\n",
-      (int)jcr->JobId,
-      jcr->jr.Name, (int)jcr->jr.JobId, 
-      jcr->jr.JobType, jcr->jr.JobLevel);
-
-   LockRes();
-   job = (JOB *)GetResWithName(R_JOB, jcr->jr.Name);
-   prev_job = (JOB *)GetResWithName(R_JOB, jcr->previous_jr.Name);
-   UnlockRes();
-   if (!job) {
-      Jmsg(jcr, M_FATAL, 0, _("Job resource not found for \"%s\".\n"), jcr->jr.Name);
-      return false;
-   }
-   if (!prev_job) {
-      Jmsg(jcr, M_FATAL, 0, _("Previous Job resource not found for \"%s\".\n"), 
-           jcr->previous_jr.Name);
-      return false;
-   }
-
-   jcr->spool_data = job->spool_data;     /* turn on spooling if requested in job */ 
-
-   /* Create a migration jcr */
-   mig_jcr = jcr->mig_jcr = new_jcr(sizeof(JCR), dird_free_jcr);
-   memcpy(&mig_jcr->previous_jr, &jcr->previous_jr, sizeof(mig_jcr->previous_jr));
-
-   /*
-    * Turn the mig_jcr into a "real" job that takes on the aspects of
-    *   the previous backup job "prev_job".
-    */
-   set_jcr_defaults(mig_jcr, prev_job);
-   if (!setup_job(mig_jcr)) {
-      Jmsg(jcr, M_FATAL, 0, _("setup job failed.\n"));
-      return false;
-   }
-
-   /* Now reset the job record from the previous job */
-   memcpy(&mig_jcr->jr, &jcr->previous_jr, sizeof(mig_jcr->jr));
-   /* Update the jr to reflect the new values of PoolId and JobId. */
-   mig_jcr->jr.PoolId = jcr->jr.PoolId;
-   mig_jcr->jr.JobId = mig_jcr->JobId;
-
-   /* Don't let WatchDog checks Max*Time value on this Job */
-   mig_jcr->no_maxtime = true;
-
-   /*
-    * Don't check for duplicates on migration and copy jobs
-    */
-   mig_jcr->job->IgnoreDuplicateJobChecking = true;
-
-   Dmsg4(dbglevel, "mig_jcr: Name=%s JobId=%d Type=%c Level=%c\n",
-      mig_jcr->jr.Name, (int)mig_jcr->jr.JobId, 
-      mig_jcr->jr.JobType, mig_jcr->jr.JobLevel);
-
-   if (set_migration_next_pool(jcr, &pool)) {
-      /* If pool storage specified, use it for restore */
-      copy_rstorage(mig_jcr, pool->storage, _("Pool resource"));
-      copy_rstorage(jcr, pool->storage, _("Pool resource"));
-
-      mig_jcr->pool = jcr->pool;
-      mig_jcr->jr.PoolId = jcr->jr.PoolId;
-   }
-
-   return true;
-}
-
-
-/*
- * set_migration_next_pool() called by do_migration_init()
- * at differents stages.
- * The  idea here is to make a common subroutine for the 
- *   NextPool's search code and to permit do_migration_init() 
- *   to return with NextPool set in jcr struct.
- */
-static bool set_migration_next_pool(JCR *jcr, POOL **retpool)
-{
-   POOL_DBR pr;
-   POOL *pool;
-   char ed1[100];
-
-   /*
-    * Get the PoolId used with the original job. Then
-    *  find the pool name from the database record.
-    */
-   memset(&pr, 0, sizeof(pr));
-   pr.PoolId = jcr->jr.PoolId;
-   if (!db_get_pool_record(jcr, jcr->db, &pr)) {
-      Jmsg(jcr, M_FATAL, 0, _("Pool for JobId %s not in database. ERR=%s\n"),
-            edit_int64(pr.PoolId, ed1), db_strerror(jcr->db));
-         return false;
-   }
-   /* Get the pool resource corresponding to the original job */
-   pool = (POOL *)GetResWithName(R_POOL, pr.Name);
-   *retpool = pool;
-   if (!pool) {
-      Jmsg(jcr, M_FATAL, 0, _("Pool resource \"%s\" not found.\n"), pr.Name);
-      return false;
-   }
-
-   /*
-    * If the original backup pool has a NextPool, make sure a 
-    *  record exists in the database. Note, in this case, we
-    *  will be migrating from pool to pool->NextPool.
-    */
-   if (pool->NextPool) {
-      jcr->jr.PoolId = get_or_create_pool_record(jcr, pool->NextPool->name());
-      if (jcr->jr.PoolId == 0) {
-         return false;
-      }
-   }
-   if (!set_migration_wstorage(jcr, pool)) {
-      return false;
-   }
-   jcr->pool = pool->NextPool;
-   pm_strcpy(jcr->pool_source, _("Job Pool's NextPool resource"));
-
-   Dmsg2(dbglevel, "Write pool=%s read rpool=%s\n", jcr->pool->name(), jcr->rpool->name());
-
-   return true;
-}
-
-
-/*
- * Do a Migration of a previous job
- *
- *  Returns:  false on failure
- *            true  on success
- */
-bool do_migration(JCR *jcr)
-{
-   char ed1[100];
-   BSOCK *sd;
-   JCR *mig_jcr = jcr->mig_jcr;    /* newly migrated job */
-
-   /*
-    * If mig_jcr is NULL, there is nothing to do for this job,
-    *  so set a normal status, cleanup and return OK.
-    */
-   if (!mig_jcr) {
-      jcr->setJobStatus(JS_Terminated);
-      migration_cleanup(jcr, jcr->JobStatus);
-      return true;
-   }
-
-   if (!db_get_job_record(jcr, jcr->db, &jcr->previous_jr)) {
-      Jmsg(jcr, M_FATAL, 0, _("Could not get job record for JobId %s to %s. ERR=%s"),
-           edit_int64(jcr->previous_jr.JobId, ed1),
-           jcr->get_ActionName(0),
-           db_strerror(jcr->db));
-      jcr->setJobStatus(JS_Terminated);
-      migration_cleanup(jcr, jcr->JobStatus);
-      return true;
-   }
-   /* Make sure this job was not already migrated */
-   if (jcr->previous_jr.JobType != JT_BACKUP &&
-       jcr->previous_jr.JobType != JT_JOB_COPY) {
-      Jmsg(jcr, M_INFO, 0, _("JobId %s already %s probably by another Job. %s stopped.\n"),
-         edit_int64(jcr->previous_jr.JobId, ed1),
-         jcr->get_ActionName(1),
-         jcr->get_OperationName());
-      jcr->setJobStatus(JS_Terminated);
-      migration_cleanup(jcr, jcr->JobStatus);
-      return true;
-   }
-
-   /* Print Job Start message */
-   Jmsg(jcr, M_INFO, 0, _("Start %s JobId %s, Job=%s\n"),
-        jcr->get_OperationName(), edit_uint64(jcr->JobId, ed1), jcr->Job);
-
-   /*
-    * Open a message channel connection with the Storage
-    * daemon. This is to let him know that our client
-    * will be contacting him for a backup  session.
-    *
-    */
-   Dmsg0(110, "Open connection with storage daemon\n");
-   jcr->setJobStatus(JS_WaitSD);
-   mig_jcr->setJobStatus(JS_WaitSD);
-   /*
-    * Start conversation with Storage daemon
-    */
-   if (!connect_to_storage_daemon(jcr, 10, SDConnectTimeout, 1)) {
-      return false;
-   }
-   sd = jcr->store_bsock;
-   /*
-    * Now start a job with the Storage daemon
-    */
-   Dmsg2(dbglevel, "Read store=%s, write store=%s\n", 
-      ((STORE *)jcr->rstorage->first())->name(),
-      ((STORE *)jcr->wstorage->first())->name());
-
-   if (!start_storage_daemon_job(jcr, jcr->rstorage, jcr->wstorage, /*send_bsr*/true)) {
-      return false;
-   }
-   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
-    *  time is set after the run before job.  This avoids 
-    *  that any files created by the run before job will
-    *  be saved twice.  They will be backed up in the current
-    *  job, but not in the next one unless they are changed.
-    *  Without this, they will be backed up in this job and
-    *  in the next job run because in that case, their date 
-    *   is after the start of this run.
-    */
-   jcr->start_time = time(NULL);
-   jcr->jr.StartTime = jcr->start_time;
-   jcr->jr.JobTDate = jcr->start_time;
-   jcr->setJobStatus(JS_Running);
-
-   /* Update job start record for this migration control job */
-   if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) {
-      Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
-      return false;
-   }
-
-
-   mig_jcr->start_time = time(NULL);
-   mig_jcr->jr.StartTime = mig_jcr->start_time;
-   mig_jcr->jr.JobTDate = mig_jcr->start_time;
-   mig_jcr->setJobStatus(JS_Running);
-
-   /* Update job start record for the real migration backup job */
-   if (!db_update_job_start_record(mig_jcr, mig_jcr->db, &mig_jcr->jr)) {
-      Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(mig_jcr->db));
-      return false;
-   }
-
-   Dmsg4(dbglevel, "mig_jcr: Name=%s JobId=%d Type=%c Level=%c\n",
-      mig_jcr->jr.Name, (int)mig_jcr->jr.JobId, 
-      mig_jcr->jr.JobType, mig_jcr->jr.JobLevel);
-
-
-   /*
-    * Start the job prior to starting the message thread below
-    * to avoid two threads from using the BSOCK structure at
-    * the same time.
-    */
-   if (!sd->fsend("run")) {
-      return false;
-   }
-
-   /*
-    * Now start a Storage daemon message thread
-    */
-   if (!start_storage_daemon_message_thread(jcr)) {
-      return false;
-   }
-
-
-   jcr->setJobStatus(JS_Running);
-   mig_jcr->setJobStatus(JS_Running);
-
-   /* Pickup Job termination data */
-   /* Note, the SD stores in jcr->JobFiles/ReadBytes/JobBytes/JobErrors */
-   wait_for_storage_daemon_termination(jcr);
-   jcr->setJobStatus(jcr->SDJobStatus);
-   db_write_batch_file_records(jcr);    /* used by bulk batch file insert */
-   if (jcr->JobStatus != JS_Terminated) {
-      return false;
-   }
-
-   migration_cleanup(jcr, jcr->JobStatus);
-
-   return true;
-}
-
-struct idpkt {
-   POOLMEM *list;
-   uint32_t count;
-};
-
-/* Add an item to the list if it is unique */
-static void add_unique_id(idpkt *ids, char *item) 
-{
-   const int maxlen = 30;
-   char id[maxlen+1];
-   char *q = ids->list;
-
-   /* Walk through current list to see if each item is the same as item */
-   for ( ; *q; ) {
-       id[0] = 0;
-       for (int i=0; i<maxlen; i++) {
-          if (*q == 0) {
-             break;
-          } else if (*q == ',') {
-             q++;
-             break;
-          }
-          id[i] = *q++;
-          id[i+1] = 0;
-       }
-       if (strcmp(item, id) == 0) {
-          return;
-       }
-   }
-   /* Did not find item, so add it to list */
-   if (ids->count == 0) {
-      ids->list[0] = 0;
-   } else {
-      pm_strcat(ids->list, ",");
-   }
-   pm_strcat(ids->list, item);
-   ids->count++;
-// Dmsg3(0, "add_uniq count=%d Ids=%p %s\n", ids->count, ids->list, ids->list);
-   return;
-}
-
-/*
- * Callback handler make list of DB Ids
- */
-static int unique_dbid_handler(void *ctx, int num_fields, char **row)
-{
-   idpkt *ids = (idpkt *)ctx;
-
-   /* Sanity check */
-   if (!row || !row[0]) {
-      Dmsg0(dbglevel, "dbid_hdlr error empty row\n");
-      return 1;              /* stop calling us */
-   }
-
-   add_unique_id(ids, row[0]);
-   Dmsg3(dbglevel, "dbid_hdlr count=%d Ids=%p %s\n", ids->count, ids->list, ids->list);
-   return 0;
-}
-
-
-struct uitem {
-   dlink link;   
-   char *item;
-};
-
-static int item_compare(void *item1, void *item2)
-{
-   uitem *i1 = (uitem *)item1;
-   uitem *i2 = (uitem *)item2;
-   return strcmp(i1->item, i2->item);
-}
-
-static int unique_name_handler(void *ctx, int num_fields, char **row)
-{
-   dlist *list = (dlist *)ctx;
-
-   uitem *new_item = (uitem *)malloc(sizeof(uitem));
-   uitem *item;
-   
-   memset(new_item, 0, sizeof(uitem));
-   new_item->item = bstrdup(row[0]);
-   Dmsg1(dbglevel, "Unique_name_hdlr Item=%s\n", row[0]);
-   item = (uitem *)list->binary_insert((void *)new_item, item_compare);
-   if (item != new_item) {            /* already in list */
-      free(new_item->item);
-      free((char *)new_item);
-      return 0;
-   }
-   return 0;
-}
-
-/* Get Job names in Pool */
-const char *sql_job =
-   "SELECT DISTINCT Job.Name from Job,Pool"
-   " WHERE Pool.Name='%s' AND Job.PoolId=Pool.PoolId";
-
-/* Get JobIds from regex'ed Job names */
-const char *sql_jobids_from_job =
-   "SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool"
-   " WHERE Job.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
-   " ORDER by Job.StartTime";
-
-/* Get Client names in Pool */
-const char *sql_client =
-   "SELECT DISTINCT Client.Name from Client,Pool,Job"
-   " WHERE Pool.Name='%s' AND Job.ClientId=Client.ClientId AND"
-   " Job.PoolId=Pool.PoolId";
-
-/* Get JobIds from regex'ed Client names */
-const char *sql_jobids_from_client =
-   "SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool,Client"
-   " WHERE Client.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
-   " AND Job.ClientId=Client.ClientId AND Job.Type IN ('B','C')"
-   " AND Job.JobStatus IN ('T','W')"
-   " ORDER by Job.StartTime";
-
-/* Get Volume names in Pool */
-const char *sql_vol = 
-   "SELECT DISTINCT VolumeName FROM Media,Pool WHERE"
-   " VolStatus in ('Full','Used','Error') AND Media.Enabled=1 AND"
-   " Media.PoolId=Pool.PoolId AND Pool.Name='%s'";
-
-/* Get JobIds from regex'ed Volume names */
-const char *sql_jobids_from_vol =
-   "SELECT DISTINCT Job.JobId,Job.StartTime FROM Media,JobMedia,Job"
-   " WHERE Media.VolumeName='%s' AND Media.MediaId=JobMedia.MediaId"
-   " AND JobMedia.JobId=Job.JobId AND Job.Type IN ('B','C')"
-   " AND Job.JobStatus IN ('T','W') AND Media.Enabled=1"
-   " ORDER by Job.StartTime";
-
-const char *sql_smallest_vol = 
-   "SELECT Media.MediaId FROM Media,Pool,JobMedia WHERE"
-   " Media.MediaId in (SELECT DISTINCT MediaId from JobMedia) AND"
-   " Media.VolStatus in ('Full','Used','Error') AND Media.Enabled=1 AND"
-   " Media.PoolId=Pool.PoolId AND Pool.Name='%s'"
-   " ORDER BY VolBytes ASC LIMIT 1";
-
-const char *sql_oldest_vol = 
-   "SELECT Media.MediaId FROM Media,Pool,JobMedia WHERE"
-   " Media.MediaId in (SELECT DISTINCT MediaId from JobMedia) AND"
-   " Media.VolStatus in ('Full','Used','Error') AND Media.Enabled=1 AND"
-   " Media.PoolId=Pool.PoolId AND Pool.Name='%s'"
-   " ORDER BY LastWritten ASC LIMIT 1";
-
-/* Get JobIds when we have selected MediaId */
-const char *sql_jobids_from_mediaid =
-   "SELECT DISTINCT Job.JobId,Job.StartTime FROM JobMedia,Job"
-   " WHERE JobMedia.JobId=Job.JobId AND JobMedia.MediaId IN (%s)"
-   " AND Job.Type IN ('B','C') AND Job.JobStatus IN ('T','W')"
-   " ORDER by Job.StartTime";
-
-/* Get the number of bytes in the pool */
-const char *sql_pool_bytes =
-   "SELECT SUM(JobBytes) FROM Job WHERE JobId IN"
-   " (SELECT DISTINCT Job.JobId from Pool,Job,Media,JobMedia WHERE"
-   " Pool.Name='%s' AND Media.PoolId=Pool.PoolId AND"
-   " VolStatus in ('Full','Used','Error','Append') AND Media.Enabled=1 AND"
-   " Job.Type IN ('B','C') AND Job.JobStatus IN ('T','W') AND"
-   " JobMedia.JobId=Job.JobId AND Job.PoolId=Media.PoolId)";
-
-/* Get the number of bytes in the Jobs */
-const char *sql_job_bytes =
-   "SELECT SUM(JobBytes) FROM Job WHERE JobId IN (%s)";
-
-/* Get Media Ids in Pool */
-const char *sql_mediaids =
-   "SELECT MediaId FROM Media,Pool WHERE"
-   " VolStatus in ('Full','Used','Error') AND Media.Enabled=1 AND"
-   " Media.PoolId=Pool.PoolId AND Pool.Name='%s' ORDER BY LastWritten ASC";
-
-/* Get JobIds in Pool longer than specified time */
-const char *sql_pool_time = 
-   "SELECT DISTINCT Job.JobId FROM Pool,Job,Media,JobMedia WHERE"
-   " Pool.Name='%s' AND Media.PoolId=Pool.PoolId AND"
-   " VolStatus IN ('Full','Used','Error') AND Media.Enabled=1 AND"
-   " Job.Type IN ('B','C') AND Job.JobStatus IN ('T','W') AND"
-   " JobMedia.JobId=Job.JobId AND Job.PoolId=Media.PoolId"
-   " AND Job.RealEndTime<='%s'";
-
-/* Get JobIds from successfully completed backup jobs which have not been copied before */
-const char *sql_jobids_of_pool_uncopied_jobs =
-   "SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool"
-   " WHERE Pool.Name = '%s' AND Pool.PoolId = Job.PoolId"
-   " AND Job.Type = 'B' AND Job.JobStatus IN ('T','W')"
-   " AND Job.jobBytes > 0"
-   " AND Job.JobId NOT IN"
-   " (SELECT PriorJobId FROM Job WHERE"
-   " Type IN ('B','C') AND Job.JobStatus IN ('T','W')"
-   " AND PriorJobId != 0)"
-   " ORDER by Job.StartTime";
-
-/*
-* const char *sql_ujobid =
-*   "SELECT DISTINCT Job.Job from Client,Pool,Media,Job,JobMedia "
-*   " WHERE Media.PoolId=Pool.PoolId AND Pool.Name='%s' AND"
-*   " JobMedia.JobId=Job.JobId AND Job.PoolId=Media.PoolId";
-*/
-
-/*
- *
- * This is the central piece of code that finds a job or jobs 
- *   actually JobIds to migrate.  It first looks to see if one
- *   has been "manually" specified in jcr->MigrateJobId, and if
- *   so, it returns that JobId to be run.  Otherwise, it
- *   examines the Selection Type to see what kind of migration
- *   we are doing (Volume, Job, Client, ...) and applies any
- *   Selection Pattern if appropriate to obtain a list of JobIds.
- *   Finally, it will loop over all the JobIds found, except the last
- *   one starting a new job with MigrationJobId set to that JobId, and
- *   finally, it returns the last JobId to the caller.
- *
- * Returns: -1  on error
- *           0  if no jobs to migrate
- *           1  if OK and jcr->previous_jr filled in
- */
-static int getJob_to_migrate(JCR *jcr)
-{
-   char ed1[30], ed2[30];
-   POOL_MEM query(PM_MESSAGE);
-   JobId_t JobId;
-   DBId_t DBId = 0;
-   int stat;
-   char *p;
-   idpkt ids, mid, jids;
-   db_int64_ctx ctx;
-   int64_t pool_bytes;
-   time_t ttime;
-   struct tm tm;
-   char dt[MAX_TIME_LENGTH];
-   int count = 0;
-   int limit = 99;           /* limit + 1 is max jobs to start */
-
-   ids.list = get_pool_memory(PM_MESSAGE);
-   ids.list[0] = 0;
-   ids.count = 0;
-   mid.list = get_pool_memory(PM_MESSAGE);
-   mid.list[0] = 0;
-   mid.count = 0;
-   jids.list = get_pool_memory(PM_MESSAGE);
-   jids.list[0] = 0;
-   jids.count = 0;
-
-   /*
-    * If MigrateJobId is set, then we migrate only that Job,
-    *  otherwise, we go through the full selection of jobs to
-    *  migrate.
-    */
-   if (jcr->MigrateJobId != 0) {
-      Dmsg1(dbglevel, "At Job start previous jobid=%u\n", jcr->MigrateJobId);
-      JobId = jcr->MigrateJobId;
-   } else {
-      switch (jcr->job->selection_type) {
-      case MT_JOB:
-         if (!regex_find_jobids(jcr, &ids, sql_job, sql_jobids_from_job, "Job")) {
-            goto bail_out;
-         } 
-         break;
-      case MT_CLIENT:
-         if (!regex_find_jobids(jcr, &ids, sql_client, sql_jobids_from_client, "Client")) {
-            goto bail_out;
-         } 
-         break;
-      case MT_VOLUME:
-         if (!regex_find_jobids(jcr, &ids, sql_vol, sql_jobids_from_vol, "Volume")) {
-            goto bail_out;
-         } 
-         break;
-      case MT_SQLQUERY:
-         if (!jcr->job->selection_pattern) {
-            Jmsg(jcr, M_FATAL, 0, _("No %s SQL selection pattern specified.\n"), jcr->get_OperationName());
-            goto bail_out;
-         }
-         Dmsg1(dbglevel, "SQL=%s\n", jcr->job->selection_pattern);
-         if (!db_sql_query(jcr->db, jcr->job->selection_pattern,
-              unique_dbid_handler, (void *)&ids)) {
-            Jmsg(jcr, M_FATAL, 0,
-                 _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         break;
-      case MT_SMALLEST_VOL:
-         if (!find_mediaid_then_jobids(jcr, &ids, sql_smallest_vol, "Smallest Volume")) {
-            goto bail_out;
-         }
-         break;
-      case MT_OLDEST_VOL:
-         if (!find_mediaid_then_jobids(jcr, &ids, sql_oldest_vol, "Oldest Volume")) {
-            goto bail_out;
-         }
-         break;
-      case MT_POOL_OCCUPANCY:
-         ctx.count = 0;
-         /* Find count of bytes in pool */
-         Mmsg(query, sql_pool_bytes, jcr->rpool->name());
-         if (!db_sql_query(jcr->db, query.c_str(), db_int64_handler, (void *)&ctx)) {
-            Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         if (ctx.count == 0) {
-            Jmsg(jcr, M_INFO, 0, _("No Volumes found to %s.\n"), jcr->get_ActionName(0));
-            goto ok_out;
-         }
-         pool_bytes = ctx.value;
-         Dmsg2(dbglevel, "highbytes=%lld pool=%lld\n", jcr->rpool->MigrationHighBytes,
-               pool_bytes);
-         if (pool_bytes < (int64_t)jcr->rpool->MigrationHighBytes) {
-            Jmsg(jcr, M_INFO, 0, _("No Volumes found to %s.\n"), jcr->get_ActionName(0));
-            goto ok_out;
-         }
-         Dmsg0(dbglevel, "We should do Occupation migration.\n");
-
-         ids.count = 0;
-         /* Find a list of MediaIds that could be migrated */
-         Mmsg(query, sql_mediaids, jcr->rpool->name());
-         Dmsg1(dbglevel, "query=%s\n", query.c_str());
-         if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)&ids)) {
-            Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         if (ids.count == 0) {
-            Jmsg(jcr, M_INFO, 0, _("No Volumes found to %s.\n"), jcr->get_ActionName(0));
-            goto ok_out;
-         }
-         Dmsg2(dbglevel, "Pool Occupancy ids=%d MediaIds=%s\n", ids.count, ids.list);
-
-         if (!find_jobids_from_mediaid_list(jcr, &ids, "Volume")) {
-            goto bail_out;
-         }
-         /* ids == list of jobs  */
-         p = ids.list;
-         for (int i=0; i < (int)ids.count; i++) {
-            stat = get_next_dbid_from_list(&p, &DBId);
-            Dmsg2(dbglevel, "get_next_dbid stat=%d JobId=%u\n", stat, (uint32_t)DBId);
-            if (stat < 0) {
-               Jmsg(jcr, M_FATAL, 0, _("Invalid JobId found.\n"));
-               goto bail_out;
-            } else if (stat == 0) {
-               break;
-            }
-
-            mid.count = 1;
-            Mmsg(mid.list, "%s", edit_int64(DBId, ed1));
-            if (jids.count > 0) {
-               pm_strcat(jids.list, ",");
-            }
-            pm_strcat(jids.list, mid.list);
-            jids.count += mid.count;
-
-            /* Find count of bytes from Jobs */
-            Mmsg(query, sql_job_bytes, mid.list);
-            Dmsg1(dbglevel, "Jobbytes query: %s\n", query.c_str());
-            if (!db_sql_query(jcr->db, query.c_str(), db_int64_handler, (void *)&ctx)) {
-               Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
-               goto bail_out;
-            }
-            pool_bytes -= ctx.value;
-            Dmsg2(dbglevel, "Total %s Job bytes=%s\n", jcr->get_ActionName(0), edit_int64_with_commas(ctx.value, ed1));
-            Dmsg2(dbglevel, "lowbytes=%s poolafter=%s\n", 
-                  edit_int64_with_commas(jcr->rpool->MigrationLowBytes, ed1),
-                  edit_int64_with_commas(pool_bytes, ed2));
-            if (pool_bytes <= (int64_t)jcr->rpool->MigrationLowBytes) {
-               Dmsg0(dbglevel, "We should be done.\n");
-               break;
-            }
-         }
-         /* Transfer jids to ids, where the jobs list is expected */
-         ids.count = jids.count;
-         pm_strcpy(ids.list, jids.list);
-         Dmsg2(dbglevel, "Pool Occupancy ids=%d JobIds=%s\n", ids.count, ids.list);
-         break;
-      case MT_POOL_TIME:
-         ttime = time(NULL) - (time_t)jcr->rpool->MigrationTime;
-         (void)localtime_r(&ttime, &tm);
-         strftime(dt, sizeof(dt), "%Y-%m-%d %H:%M:%S", &tm);
-
-         ids.count = 0;
-         Mmsg(query, sql_pool_time, jcr->rpool->name(), dt);
-         Dmsg1(dbglevel, "query=%s\n", query.c_str());
-         if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)&ids)) {
-            Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         if (ids.count == 0) {
-            Jmsg(jcr, M_INFO, 0, _("No Volumes found to %s.\n"), jcr->get_ActionName(0));
-            goto ok_out;
-         }
-         Dmsg2(dbglevel, "PoolTime ids=%d JobIds=%s\n", ids.count, ids.list);
-         break;
-      case MT_POOL_UNCOPIED_JOBS:
-         if (!find_jobids_of_pool_uncopied_jobs(jcr, &ids)) {
-            goto bail_out;
-         } 
-         break;
-      default:
-         Jmsg(jcr, M_FATAL, 0, _("Unknown %s Selection Type.\n"), jcr->get_OperationName());
-         goto bail_out;
-      }
-
-      /*
-       * Loop over all jobids except the last one, sending
-       * them to start_migration_job(), which will start a job
-       * for each of them.  For the last JobId, we handle it below.
-       */
-      p = ids.list;
-      if (ids.count == 0) {
-         Jmsg(jcr, M_INFO, 0, _("No JobIds found to %s.\n"), jcr->get_ActionName(0));
-         goto ok_out;
-      }
-
-      Jmsg(jcr, M_INFO, 0, _("The following %u JobId%s chosen to be %s: %s\n"),
-         ids.count, (ids.count < 2) ? _(" was") : _("s were"),
-         jcr->get_ActionName(1), ids.list);
-
-      Dmsg2(dbglevel, "Before loop count=%d ids=%s\n", ids.count, ids.list);
-      /*
-       * Note: to not over load the system, limit the number
-       *  of new jobs started to 100 (see limit above)
-       */
-      for (int i=1; i < (int)ids.count; i++) {
-         JobId = 0;
-         stat = get_next_jobid_from_list(&p, &JobId);
-         Dmsg3(dbglevel, "getJobid_no=%d stat=%d JobId=%u\n", i, stat, JobId);
-         if (stat < 0) {
-            Jmsg(jcr, M_FATAL, 0, _("Invalid JobId found.\n"));
-            goto bail_out;
-         } else if (stat == 0) {
-            Jmsg(jcr, M_INFO, 0, _("No JobIds found to %s.\n"), jcr->get_ActionName(0));
-            goto ok_out;
-         }
-         jcr->MigrateJobId = JobId;
-         /* Don't start any more when limit reaches zero */
-         limit--;
-         if (limit > 0) {
-            start_migration_job(jcr);
-            Dmsg0(dbglevel, "Back from start_migration_job\n");
-         }
-      }
-   
-      /* Now get the last JobId and handle it in the current job */
-      JobId = 0;
-      stat = get_next_jobid_from_list(&p, &JobId);
-      Dmsg2(dbglevel, "Last get_next_jobid stat=%d JobId=%u\n", stat, (int)JobId);
-      if (stat < 0) {
-         Jmsg(jcr, M_FATAL, 0, _("Invalid JobId found.\n"));
-         goto bail_out;
-      } else if (stat == 0) {
-         Jmsg(jcr, M_INFO, 0, _("No JobIds found to %s.\n"), jcr->get_ActionName(0));
-         goto ok_out;
-      }
-   }
-
-   jcr->previous_jr.JobId = JobId;
-   Dmsg1(dbglevel, "Previous jobid=%d\n", (int)jcr->previous_jr.JobId);
-
-   if (!db_get_job_record(jcr, jcr->db, &jcr->previous_jr)) {
-      Jmsg(jcr, M_FATAL, 0, _("Could not get job record for JobId %s to %s. ERR=%s"),
-           edit_int64(jcr->previous_jr.JobId, ed1),
-           jcr->get_ActionName(0),
-           db_strerror(jcr->db));
-      goto bail_out;
-   }
-
-   Jmsg(jcr, M_INFO, 0, _("%s using JobId=%s Job=%s\n"),
-      jcr->get_OperationName(),
-      edit_int64(jcr->previous_jr.JobId, ed1), jcr->previous_jr.Job);
-   Dmsg4(dbglevel, "%s JobId=%d  using JobId=%s Job=%s\n",
-      jcr->get_OperationName(),
-      jcr->JobId,
-      edit_int64(jcr->previous_jr.JobId, ed1), jcr->previous_jr.Job);
-   count = 1;
-
-ok_out:
-   goto out;
-
-bail_out:
-   count = -1;
-           
-out:
-   free_pool_memory(ids.list);
-   free_pool_memory(mid.list);
-   free_pool_memory(jids.list);
-   return count;
-}
-
-static void start_migration_job(JCR *jcr)
-{
-   UAContext *ua = new_ua_context(jcr);
-   char ed1[50];
-   ua->batch = true;
-   Mmsg(ua->cmd, "run job=\"%s\" jobid=%s ignoreduplicatecheck=yes pool=\"%s\"", 
-        jcr->job->name(), edit_uint64(jcr->MigrateJobId, ed1),
-        jcr->pool->name());
-   Dmsg2(dbglevel, "=============== %s cmd=%s\n", jcr->get_OperationName(), ua->cmd);
-   parse_ua_args(ua);                 /* parse command */
-   JobId_t jobid = run_cmd(ua, ua->cmd);
-   if (jobid == 0) {
-      Jmsg(jcr, M_ERROR, 0, _("Could not start migration job.\n"));
-   } else {
-      Jmsg(jcr, M_INFO, 0, _("%s JobId %d started.\n"), jcr->get_OperationName(), (int)jobid);
-   }
-   free_ua_context(ua);
-}
-
-static bool find_mediaid_then_jobids(JCR *jcr, idpkt *ids, const char *query1,
-                 const char *type) 
-{
-   bool ok = false;
-   POOL_MEM query(PM_MESSAGE);
-
-   ids->count = 0;
-   /* Basic query for MediaId */
-   Mmsg(query, query1, jcr->rpool->name());
-   if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)ids)) {
-      Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
-      goto bail_out;
-   }
-   if (ids->count == 0) {
-      Jmsg(jcr, M_INFO, 0, _("No %s found to %s.\n"), type, jcr->get_ActionName(0));
-      ok = true;         /* Not an error */
-      goto bail_out;
-   } else if (ids->count != 1) {
-      Jmsg(jcr, M_FATAL, 0, _("SQL error. Expected 1 MediaId got %d\n"), ids->count);
-      goto bail_out;
-   }
-   Dmsg2(dbglevel, "%s MediaIds=%s\n", type, ids->list);
-
-   ok = find_jobids_from_mediaid_list(jcr, ids, type);
-
-bail_out:
-   return ok;
-}
-
-/* 
- * This routine returns:
- *    false       if an error occurred
- *    true        otherwise
- *    ids.count   number of jobids found (may be zero)
- */       
-static bool find_jobids_from_mediaid_list(JCR *jcr, idpkt *ids, const char *type) 
-{
-   bool ok = false;
-   POOL_MEM query(PM_MESSAGE);
-
-   Mmsg(query, sql_jobids_from_mediaid, ids->list);
-   ids->count = 0;
-   if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)ids)) {
-      Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
-      goto bail_out;
-   }
-   if (ids->count == 0) {
-      Jmsg(jcr, M_INFO, 0, _("No %ss found to %s.\n"), type, jcr->get_ActionName(0));
-   }
-   ok = true;
-
-bail_out:
-   return ok;
-}
-
-/* 
- * This routine returns:
- *    false       if an error occurred
- *    true        otherwise
- *    ids.count   number of jobids found (may be zero)
- */       
-static bool find_jobids_of_pool_uncopied_jobs(JCR *jcr, idpkt *ids) 
-{
-   bool ok = false;
-   POOL_MEM query(PM_MESSAGE);
-
-   /* Only a copy job is allowed */
-   if (jcr->getJobType() != JT_COPY) {
-      Jmsg(jcr, M_FATAL, 0,
-           _("Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"));
-      goto bail_out;
-   }
-
-   Dmsg1(dbglevel, "copy selection pattern=%s\n", jcr->rpool->name());
-   Mmsg(query, sql_jobids_of_pool_uncopied_jobs, jcr->rpool->name());
-   Dmsg1(dbglevel, "get uncopied jobs query=%s\n", query.c_str());
-   if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)ids)) {
-      Jmsg(jcr, M_FATAL, 0,
-           _("SQL to get uncopied jobs failed. ERR=%s\n"), db_strerror(jcr->db));
-      goto bail_out;
-   }
-   ok = true;
-
-bail_out:
-   return ok;
-}
-
-static bool regex_find_jobids(JCR *jcr, idpkt *ids, const char *query1,
-                 const char *query2, const char *type) 
-{
-   dlist *item_chain;
-   uitem *item = NULL;
-   uitem *last_item = NULL;
-   regex_t preg;
-   char prbuf[500];
-   int rc;
-   bool ok = false;
-   POOL_MEM query(PM_MESSAGE);
-
-   item_chain = New(dlist(item, &item->link));
-   if (!jcr->job->selection_pattern) {
-      Jmsg(jcr, M_FATAL, 0, _("No %s %s selection pattern specified.\n"),
-         jcr->get_OperationName(), type);
-      goto bail_out;
-   }
-   Dmsg1(dbglevel, "regex-sel-pattern=%s\n", jcr->job->selection_pattern);
-   /* Basic query for names */
-   Mmsg(query, query1, jcr->rpool->name());
-   Dmsg1(dbglevel, "get name query1=%s\n", query.c_str());
-   if (!db_sql_query(jcr->db, query.c_str(), unique_name_handler, 
-        (void *)item_chain)) {
-      Jmsg(jcr, M_FATAL, 0,
-           _("SQL to get %s failed. ERR=%s\n"), type, db_strerror(jcr->db));
-      goto bail_out;
-   }
-   Dmsg1(dbglevel, "query1 returned %d names\n", item_chain->size());
-   if (item_chain->size() == 0) {
-      Jmsg(jcr, M_INFO, 0, _("Query of Pool \"%s\" returned no Jobs to %s.\n"),
-           jcr->rpool->name(), jcr->get_ActionName(0));
-      ok = true;
-      goto bail_out;               /* skip regex match */
-   } else {
-      /* Compile regex expression */
-      rc = regcomp(&preg, jcr->job->selection_pattern, REG_EXTENDED);
-      if (rc != 0) {
-         regerror(rc, &preg, prbuf, sizeof(prbuf));
-         Jmsg(jcr, M_FATAL, 0, _("Could not compile regex pattern \"%s\" ERR=%s\n"),
-              jcr->job->selection_pattern, prbuf);
-         goto bail_out;
-      }
-      /* Now apply the regex to the names and remove any item not matched */
-      foreach_dlist(item, item_chain) {
-         const int nmatch = 30;
-         regmatch_t pmatch[nmatch];
-         if (last_item) {
-            Dmsg1(dbglevel, "Remove item %s\n", last_item->item);
-            free(last_item->item);
-            item_chain->remove(last_item);
-         }
-         Dmsg1(dbglevel, "get name Item=%s\n", item->item);
-         rc = regexec(&preg, item->item, nmatch, pmatch,  0);
-         if (rc == 0) {
-            last_item = NULL;   /* keep this one */
-         } else {   
-            last_item = item;
-         }
-      }
-      if (last_item) {
-         free(last_item->item);
-         Dmsg1(dbglevel, "Remove item %s\n", last_item->item);
-         item_chain->remove(last_item);
-      }
-      regfree(&preg);
-   }
-   if (item_chain->size() == 0) {
-      Jmsg(jcr, M_INFO, 0, _("Regex pattern matched no Jobs to %s.\n"), jcr->get_ActionName(0));
-      ok = true;
-      goto bail_out;               /* skip regex match */
-   }
-
-   /* 
-    * At this point, we have a list of items in item_chain
-    *  that have been matched by the regex, so now we need
-    *  to look up their jobids.
-    */
-   ids->count = 0;
-   foreach_dlist(item, item_chain) {
-      Dmsg2(dbglevel, "Got %s: %s\n", type, item->item);
-      Mmsg(query, query2, item->item, jcr->rpool->name());
-      Dmsg1(dbglevel, "get id from name query2=%s\n", query.c_str());
-      if (!db_sql_query(jcr->db, query.c_str(), unique_dbid_handler, (void *)ids)) {
-         Jmsg(jcr, M_FATAL, 0,
-              _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
-         goto bail_out;
-      }
-   }
-   if (ids->count == 0) {
-      Jmsg(jcr, M_INFO, 0, _("No %ss found to %s.\n"), type, jcr->get_ActionName(0));
-   }
-   ok = true;
-
-bail_out:
-   Dmsg2(dbglevel, "Count=%d Jobids=%s\n", ids->count, ids->list);
-   foreach_dlist(item, item_chain) {
-      free(item->item);
-   }
-   delete item_chain;
-   return ok;
-}
-
-/*
- * Release resources allocated during backup.
- */
-void migration_cleanup(JCR *jcr, int TermCode)
-{
-   char sdt[MAX_TIME_LENGTH], edt[MAX_TIME_LENGTH];
-   char ec1[30], ec2[30], ec3[30], ec4[30], ec5[30], elapsed[50];
-   char ec6[50], ec7[50], ec8[50];
-   char term_code[100], sd_term_msg[100];
-   const char *term_msg;
-   int msg_type = M_INFO;
-   MEDIA_DBR mr;
-   double kbps;
-   utime_t RunTime;
-   JCR *mig_jcr = jcr->mig_jcr;
-   POOL_MEM query(PM_MESSAGE);
-
-   Dmsg2(100, "Enter migrate_cleanup %d %c\n", TermCode, TermCode);
-   update_job_end(jcr, TermCode);
-
-   /* 
-    * Check if we actually did something.  
-    *  mig_jcr is jcr of the newly migrated job.
-    */
-   if (mig_jcr) {
-      char old_jobid[50], new_jobid[50];
-
-      edit_uint64(jcr->previous_jr.JobId, old_jobid);
-      edit_uint64(mig_jcr->jr.JobId, new_jobid);
-
-      mig_jcr->JobFiles = jcr->JobFiles = jcr->SDJobFiles;
-      mig_jcr->JobBytes = jcr->JobBytes = jcr->SDJobBytes;
-      mig_jcr->VolSessionId = jcr->VolSessionId;
-      mig_jcr->VolSessionTime = jcr->VolSessionTime;
-      mig_jcr->jr.RealEndTime = 0; 
-      mig_jcr->jr.PriorJobId = jcr->previous_jr.JobId;
-
-      update_job_end(mig_jcr, TermCode);
-     
-      /* Update final items to set them to the previous job's values */
-      Mmsg(query, "UPDATE Job SET StartTime='%s',EndTime='%s',"
-                  "JobTDate=%s WHERE JobId=%s", 
-         jcr->previous_jr.cStartTime, jcr->previous_jr.cEndTime, 
-         edit_uint64(jcr->previous_jr.JobTDate, ec1),
-         new_jobid);
-      db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
-
-      /*
-       * If we terminated a migration normally:
-       *   - mark the previous job as migrated
-       *   - move any Log records to the new JobId
-       *   - Purge the File records from the previous job
-       */
-      if (jcr->getJobType() == JT_MIGRATE && jcr->JobStatus == JS_Terminated) {
-         Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
-              (char)JT_MIGRATED_JOB, old_jobid);
-         db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
-         UAContext *ua = new_ua_context(jcr);
-         /* Move JobLog to new JobId */
-         Mmsg(query, "UPDATE Log SET JobId=%s WHERE JobId=%s",
-           new_jobid, old_jobid);
-         db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
-
-         if (jcr->job->PurgeMigrateJob) {
-            /* Purge old Job record */
-            purge_jobs_from_catalog(ua, old_jobid);
-         } else {
-            /* Purge all old file records, but leave Job record */
-            purge_files_from_jobs(ua, old_jobid);
-         }
-
-         free_ua_context(ua);
-      } 
-
-      /*
-       * If we terminated a Copy (rather than a Migration) normally:
-       *   - copy any Log records to the new JobId
-       *   - set type="Job Copy" for the new job
-       */
-      if (jcr->getJobType() == JT_COPY && jcr->JobStatus == JS_Terminated) {
-         /* Copy JobLog to new JobId */
-         Mmsg(query, "INSERT INTO Log (JobId, Time, LogText ) " 
-                      "SELECT %s, Time, LogText FROM Log WHERE JobId=%s",
-              new_jobid, old_jobid);
-         db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
-         Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
-              (char)JT_JOB_COPY, new_jobid);
-         db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
-      } 
-
-      if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
-         Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s"),
-            db_strerror(jcr->db));
-         jcr->setJobStatus(JS_ErrorTerminated);
-      }
-
-      update_bootstrap_file(mig_jcr);
-
-      if (!db_get_job_volume_names(mig_jcr, mig_jcr->db, mig_jcr->jr.JobId, &mig_jcr->VolumeName)) {
-         /*
-          * Note, if the job has failed, most likely it did not write any
-          *  tape, so suppress this "error" message since in that case
-          *  it is normal.  Or look at it the other way, only for a
-          *  normal exit should we complain about this error.
-          */
-         if (jcr->JobStatus == JS_Terminated && jcr->jr.JobBytes) {
-            Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(mig_jcr->db));
-         }
-         mig_jcr->VolumeName[0] = 0;         /* none */
-      }
-
-      if (mig_jcr->VolumeName[0]) {
-         /* Find last volume name. Multiple vols are separated by | */
-         char *p = strrchr(mig_jcr->VolumeName, '|');
-         if (p) {
-            p++;                         /* skip | */
-         } else {
-            p = mig_jcr->VolumeName;     /* no |, take full name */
-         }
-         bstrncpy(mr.VolumeName, p, sizeof(mr.VolumeName));
-         if (!db_get_media_record(jcr, jcr->db, &mr)) {
-            Jmsg(jcr, M_WARNING, 0, _("Error getting Media record for Volume \"%s\": ERR=%s"),
-               mr.VolumeName, db_strerror(jcr->db));
-         }
-      }
-
-      switch (jcr->JobStatus) {
-      case JS_Terminated:
-         if (jcr->JobErrors || jcr->SDErrors) {
-            term_msg = _("%s OK -- with warnings");
-         } else {
-            term_msg = _("%s OK");
-         }
-         break;
-      case JS_FatalError:
-      case JS_ErrorTerminated:
-         term_msg = _("*** %s Error ***");
-         msg_type = M_ERROR;          /* Generate error message */
-         if (jcr->store_bsock) {
-            bnet_sig(jcr->store_bsock, BNET_TERMINATE);
-            if (jcr->SD_msg_chan) {
-               pthread_cancel(jcr->SD_msg_chan);
-            }
-         }
-         break;
-      case JS_Canceled:
-         term_msg = _("%s Canceled");
-         if (jcr->store_bsock) {
-            bnet_sig(jcr->store_bsock, BNET_TERMINATE);
-            if (jcr->SD_msg_chan) {
-               pthread_cancel(jcr->SD_msg_chan);
-            }
-         }
-         break;
-      default:
-         term_msg = _("Inappropriate %s term code");
-         break;
-      }
-   } else {
-      if (jcr->getJobType() == JT_MIGRATE && jcr->previous_jr.JobId != 0) {
-         /* Mark previous job as migrated */
-         Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
-              (char)JT_MIGRATED_JOB, edit_uint64(jcr->previous_jr.JobId, ec1));
-         db_sql_query(jcr->db, query.c_str(), NULL, NULL);
-      }
-      term_msg = _("%s -- no files to %s");
-   }
-
-   bsnprintf(term_code, sizeof(term_code), term_msg, jcr->get_OperationName(), jcr->get_ActionName(0));
-   bstrftimes(sdt, sizeof(sdt), jcr->jr.StartTime);
-   bstrftimes(edt, sizeof(edt), jcr->jr.EndTime);
-   RunTime = jcr->jr.EndTime - jcr->jr.StartTime;
-   if (RunTime <= 0) {
-      kbps = 0;
-   } else {
-      kbps = (double)jcr->SDJobBytes / (1000 * RunTime);
-   }
-
-   jobstatus_to_ascii(jcr->SDJobStatus, sd_term_msg, sizeof(sd_term_msg));
-
-   Jmsg(jcr, msg_type, 0, _("%s %s %s (%s):\n"
-"  Build OS:               %s %s %s\n"
-"  Prev Backup JobId:      %s\n"
-"  Prev Backup Job:        %s\n"
-"  New Backup JobId:       %s\n"
-"  Current JobId:          %s\n"
-"  Current Job:            %s\n"
-"  Backup Level:           %s%s\n"
-"  Client:                 %s\n"
-"  FileSet:                \"%s\" %s\n"
-"  Read Pool:              \"%s\" (From %s)\n"
-"  Read Storage:           \"%s\" (From %s)\n"
-"  Write Pool:             \"%s\" (From %s)\n"
-"  Write Storage:          \"%s\" (From %s)\n"
-"  Catalog:                \"%s\" (From %s)\n"
-"  Start time:             %s\n"
-"  End time:               %s\n"
-"  Elapsed time:           %s\n"
-"  Priority:               %d\n"
-"  SD Files Written:       %s\n"
-"  SD Bytes Written:       %s (%sB)\n"
-"  Rate:                   %.1f KB/s\n"
-"  Volume name(s):         %s\n"
-"  Volume Session Id:      %d\n"
-"  Volume Session Time:    %d\n"
-"  Last Volume Bytes:      %s (%sB)\n"
-"  SD Errors:              %d\n"
-"  SD termination status:  %s\n"
-"  Termination:            %s\n\n"),
-        BACULA, my_name, VERSION, LSMDATE,
-        HOST_OS, DISTNAME, DISTVER,
-        edit_uint64(jcr->previous_jr.JobId, ec6),
-        jcr->previous_jr.Job,
-        mig_jcr ? edit_uint64(mig_jcr->jr.JobId, ec7) : "0",
-        edit_uint64(jcr->jr.JobId, ec8),
-        jcr->jr.Job,
-        level_to_str(jcr->getJobLevel()), jcr->since,
-        jcr->client->name(),
-        jcr->fileset->name(), jcr->FSCreateTime,
-        jcr->rpool->name(), jcr->rpool_source,
-        jcr->rstore?jcr->rstore->name():"*None*", 
-        NPRT(jcr->rstore_source), 
-        jcr->pool->name(), jcr->pool_source,
-        jcr->wstore?jcr->wstore->name():"*None*", 
-        NPRT(jcr->wstore_source),
-        jcr->catalog->name(), jcr->catalog_source,
-        sdt,
-        edt,
-        edit_utime(RunTime, elapsed, sizeof(elapsed)),
-        jcr->JobPriority,
-        edit_uint64_with_commas(jcr->SDJobFiles, ec1),
-        edit_uint64_with_commas(jcr->SDJobBytes, ec2),
-        edit_uint64_with_suffix(jcr->SDJobBytes, ec3),
-        (float)kbps,
-        mig_jcr ? mig_jcr->VolumeName : "",
-        jcr->VolSessionId,
-        jcr->VolSessionTime,
-        edit_uint64_with_commas(mr.VolBytes, ec4),
-        edit_uint64_with_suffix(mr.VolBytes, ec5),
-        jcr->SDErrors,
-        sd_term_msg,
-        term_code);
-
-   Dmsg1(100, "migrate_cleanup() mig_jcr=0x%x\n", jcr->mig_jcr);
-   if (jcr->mig_jcr) {
-      free_jcr(jcr->mig_jcr);
-      jcr->mig_jcr = NULL;
-   }
-   Dmsg0(100, "Leave migrate_cleanup()\n");
-}
-
-/* 
- * Return next DBId from comma separated list   
- *
- * Returns:
- *   1 if next DBId returned
- *   0 if no more DBIds are in list
- *  -1 there is an error
- */
-static int get_next_dbid_from_list(char **p, DBId_t *DBId)
-{
-   const int maxlen = 30;
-   char id[maxlen+1];
-   char *q = *p;
-
-   id[0] = 0;
-   for (int i=0; i<maxlen; i++) {
-      if (*q == 0) {
-         break;
-      } else if (*q == ',') {
-         q++;
-         break;
-      }
-      id[i] = *q++;
-      id[i+1] = 0;
-   }
-   if (id[0] == 0) {
-      return 0;
-   } else if (!is_a_number(id)) {
-      return -1;                      /* error */
-   }
-   *p = q;
-   *DBId = str_to_int64(id);
-   return 1;
-}
-
-bool set_migration_wstorage(JCR *jcr, POOL *pool)
-{
-   POOL *wpool = pool->NextPool;
-
-   if (!wpool) {
-      Jmsg(jcr, M_FATAL, 0, _("No Next Pool specification found in Pool \"%s\".\n"),
-         pool->hdr.name);
-      return false;
-   }
-
-   if (!wpool->storage || wpool->storage->size() == 0) {
-      Jmsg(jcr, M_FATAL, 0, _("No Storage specification found in Next Pool \"%s\".\n"),
-         wpool->name());
-      return false;
-   }
-
-   /* If pool storage specified, use it instead of job storage for backup */
-   copy_wstorage(jcr, wpool->storage, _("Storage from Pool's NextPool resource"));
-   return true;
-}
diff --git a/src/dird/mountreq.c b/src/dird/mountreq.c
index 35f57df..52a178b 100644
--- a/src/dird/mountreq.c
+++ b/src/dird/mountreq.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
diff --git a/src/dird/msgchan.c b/src/dird/msgchan.c
index 686f0c7..7ea6359 100644
--- a/src/dird/msgchan.c
+++ b/src/dird/msgchan.c
@@ -1,36 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *   Bacula Director -- msgchan.c -- handles the message channel
  *    to the Storage daemon and the File daemon.
  *
- *     Kern Sibbald, August MM
+ *     Written by Kern Sibbald, August MM
  *
  *    This routine runs as a thread and must be thread reentrant.
  *
@@ -48,10 +36,11 @@
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
 /* Commands sent to Storage daemon */
-static char jobcmd[]     = "JobId=%s job=%s job_name=%s client_name=%s "
+static char jobcmd[] = "JobId=%s job=%s job_name=%s client_name=%s "
    "type=%d level=%d FileSet=%s NoAttr=%d SpoolAttr=%d FileSetMD5=%s "
    "SpoolData=%d WritePartAfterJob=%d PreferMountedVols=%d SpoolSize=%s "
-   "rerunning=%d VolSessionId=%d VolSessionTime=%d\n";
+   "rerunning=%d VolSessionId=%d VolSessionTime=%d sd_client=%d "
+   "Authorization=%s\n";
 static char use_storage[] = "use storage=%s media_type=%s pool_name=%s "
    "pool_type=%s append=%d copy=%d stripe=%d\n";
 static char use_device[] = "use device=%s\n";
@@ -69,6 +58,29 @@ static char Job_end[]    =
 /* Forward referenced functions */
 extern "C" void *msg_thread(void *arg);
 
+BSOCK *open_sd_bsock(UAContext *ua)
+{
+   STORE *store = ua->jcr->wstore;
+
+   if (!is_bsock_open(ua->jcr->store_bsock)) {
+      ua->send_msg(_("Connecting to Storage daemon %s at %s:%d ...\n"),
+         store->name(), store->address, store->SDport);
+      if (!connect_to_storage_daemon(ua->jcr, 10, SDConnectTimeout, 1)) {
+         ua->error_msg(_("Failed to connect to Storage daemon.\n"));
+         return NULL;
+      }
+   }
+   return ua->jcr->store_bsock;
+}
+
+void close_sd_bsock(UAContext *ua)
+{
+   if (ua->jcr->store_bsock) {
+      ua->jcr->store_bsock->signal(BNET_TERMINATE);
+      free_bsock(ua->jcr->store_bsock);
+   }
+}
+
 /*
  * Establish a message channel connection with the Storage daemon
  * and perform authentication.
@@ -76,13 +88,16 @@ extern "C" void *msg_thread(void *arg);
 bool connect_to_storage_daemon(JCR *jcr, int retry_interval,
                               int max_retry_time, int verbose)
 {
-   BSOCK *sd = new_bsock();
+   BSOCK *sd = jcr->store_bsock;
    STORE *store;
-   utime_t heart_beat;    
+   utime_t heart_beat;
 
-   if (jcr->store_bsock) {
+   if (is_bsock_open(sd)) {
       return true;                    /* already connected */
    }
+   if (!sd) {
+      sd = new_bsock();
+   }
 
    /* If there is a write storage use it */
    if (jcr->wstore) {
@@ -93,19 +108,18 @@ bool connect_to_storage_daemon(JCR *jcr, int retry_interval,
 
    if (store->heartbeat_interval) {
       heart_beat = store->heartbeat_interval;
-   } else {           
+   } else {
       heart_beat = director->heartbeat_interval;
    }
 
    /*
     *  Open message channel with the Storage daemon
     */
-   Dmsg2(100, "bnet_connect to Storage daemon %s:%d\n", store->address,
+   Dmsg2(100, "Connect to Storage daemon %s:%d\n", store->address,
       store->SDport);
    sd->set_source_address(director->DIRsrc_addr);
    if (!sd->connect(jcr, retry_interval, max_retry_time, heart_beat, _("Storage daemon"),
          store->address, NULL, store->SDport, verbose)) {
-      sd->destroy();
       sd = NULL;
    }
 
@@ -117,20 +131,19 @@ bool connect_to_storage_daemon(JCR *jcr, int retry_interval,
 
    if (!authenticate_storage_daemon(jcr, store)) {
       sd->close();
-      jcr->store_bsock = NULL;
       return false;
    }
    return true;
 }
 
 /*
- * Here we ask the SD to send us the info for a 
+ * Here we ask the SD to send us the info for a
  *  particular device resource.
  */
 #ifdef xxx
 bool update_device_res(JCR *jcr, DEVICE *dev)
 {
-   POOL_MEM device_name; 
+   POOL_MEM device_name;
    BSOCK *sd;
    if (!connect_to_storage_daemon(jcr, 5, 30, 0)) {
       return false;
@@ -158,12 +171,13 @@ bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore, bool send_
    bool ok = true;
    STORE *storage;
    BSOCK *sd;
-   char auth_key[100];
+   char sd_auth_key[100];
    POOL_MEM store_name, device_name, pool_name, pool_type, media_type;
    POOL_MEM job_name, client_name, fileset_name;
    int copy = 0;
    int stripe = 0;
    char ed1[30], ed2[30];
+   int sd_client;
 
    sd = jcr->store_bsock;
    /*
@@ -187,26 +201,37 @@ bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore, bool send_
       sd->fsend("cancel Job=%s\n", jcr->Job);
       while (sd->recv() >= 0)
          { }
-   } 
-   sd->fsend(jobcmd, edit_int64(jcr->JobId, ed1), jcr->Job, 
-             job_name.c_str(), client_name.c_str(), 
+   }
+
+   sd_client = jcr->sd_client;
+   if (jcr->sd_auth_key) {
+      bstrncpy(sd_auth_key, jcr->sd_auth_key, sizeof(sd_auth_key));
+   } else {
+      bstrncpy(sd_auth_key, "dummy", sizeof(sd_auth_key));
+   }
+
+   sd->fsend(jobcmd, edit_int64(jcr->JobId, ed1), jcr->Job,
+             job_name.c_str(), client_name.c_str(),
              jcr->getJobType(), jcr->getJobLevel(),
              fileset_name.c_str(), !jcr->pool->catalog_files,
-             jcr->job->SpoolAttributes, jcr->fileset->MD5, jcr->spool_data, 
+             jcr->job->SpoolAttributes, jcr->fileset->MD5, jcr->spool_data,
              jcr->write_part_after_job, jcr->job->PreferMountedVolumes,
              edit_int64(jcr->spool_size, ed2), jcr->rerunning,
-             jcr->VolSessionId, jcr->VolSessionTime);
+             jcr->VolSessionId, jcr->VolSessionTime, sd_client,
+             sd_auth_key);
+
    Dmsg1(100, ">stored: %s", sd->msg);
+   Dmsg2(100, "=== rstore=%p wstore=%p\n", rstore, wstore);
    if (bget_dirmsg(sd) > 0) {
        Dmsg1(100, "<stored: %s", sd->msg);
        if (sscanf(sd->msg, OKjob, &jcr->VolSessionId,
-                  &jcr->VolSessionTime, &auth_key) != 3) {
+                  &jcr->VolSessionTime, &sd_auth_key) != 3) {
           Dmsg1(100, "BadJob=%s\n", sd->msg);
           Jmsg(jcr, M_FATAL, 0, _("Storage daemon rejected Job command: %s\n"), sd->msg);
           return false;
        } else {
           bfree_and_null(jcr->sd_auth_key);
-          jcr->sd_auth_key = bstrdup(auth_key);
+          jcr->sd_auth_key = bstrdup(sd_auth_key);
           Dmsg1(150, "sd_auth_key=%s\n", jcr->sd_auth_key);
        }
    } else {
@@ -221,8 +246,8 @@ bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore, bool send_
    }
 
    /*
-    * We have two loops here. The first comes from the 
-    *  Storage = associated with the Job, and we need 
+    * We have two loops here. The first comes from the
+    *  Storage = associated with the Job, and we need
     *  to attach to each one.
     * The inner loop loops over all the alternative devices
     *  associated with each Storage. It selects the first
@@ -246,9 +271,13 @@ bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore, bool send_
          Dmsg1(100, "Rstore=%s\n", storage->name());
          pm_strcpy(store_name, storage->name());
          bash_spaces(store_name);
-         pm_strcpy(media_type, storage->media_type);
+         if (jcr->media_type) {
+            pm_strcpy(media_type, jcr->media_type);  /* user override */
+         } else {
+            pm_strcpy(media_type, storage->media_type);
+         }
          bash_spaces(media_type);
-         sd->fsend(use_storage, store_name.c_str(), media_type.c_str(), 
+         sd->fsend(use_storage, store_name.c_str(), media_type.c_str(),
                    pool_name.c_str(), pool_type.c_str(), 0, copy, stripe);
          Dmsg1(100, "rstore >stored: %s", sd->msg);
          DEVICE *dev;
@@ -281,11 +310,12 @@ bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore, bool send_
       bash_spaces(pool_type);
       bash_spaces(pool_name);
       foreach_alist(storage, wstore) {
+         Dmsg1(100, "Wstore=%s\n", storage->name());
          pm_strcpy(store_name, storage->name());
          bash_spaces(store_name);
          pm_strcpy(media_type, storage->media_type);
          bash_spaces(media_type);
-         sd->fsend(use_storage, store_name.c_str(), media_type.c_str(), 
+         sd->fsend(use_storage, store_name.c_str(), media_type.c_str(),
                    pool_name.c_str(), pool_type.c_str(), 1, copy, stripe);
 
          Dmsg1(100, "wstore >stored: %s", sd->msg);
@@ -318,9 +348,9 @@ bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore, bool send_
          Jmsg(jcr, M_FATAL, 0, _("\n"
               "     Storage daemon didn't accept Device \"%s\" because:\n     %s"),
               device_name.c_str(), err_msg.c_str()/* sd->msg */);
-      } else { 
+      } else {
          Jmsg(jcr, M_FATAL, 0, _("\n"
-              "     Storage daemon didn't accept Device \"%s\" command.\n"), 
+              "     Storage daemon didn't accept Device \"%s\" command.\n"),
               device_name.c_str());
       }
    }
@@ -338,20 +368,20 @@ bool start_storage_daemon_message_thread(JCR *jcr)
 
    jcr->inc_use_count();              /* mark in use by msg thread */
    jcr->sd_msg_thread_done = false;
-   jcr->SD_msg_chan = 0;
-   Dmsg0(100, "Start SD msg_thread.\n");
+   jcr->SD_msg_chan_started = false;
+   Dmsg0(150, "Start SD msg_thread.\n");
    if ((status=pthread_create(&thid, NULL, msg_thread, (void *)jcr)) != 0) {
       berrno be;
       Jmsg1(jcr, M_ABORT, 0, _("Cannot create message thread: %s\n"), be.bstrerror(status));
    }
    /* Wait for thread to start */
-   while (jcr->SD_msg_chan == 0) {
+   while (!jcr->SD_msg_chan_started) {
       bmicrosleep(0, 50);
       if (job_canceled(jcr) || jcr->sd_msg_thread_done) {
          return false;
       }
    }
-   Dmsg1(100, "SD msg_thread started. use=%d\n", jcr->use_count());
+   Dmsg1(150, "SD msg_thread started. use=%d\n", jcr->use_count());
    return true;
 }
 
@@ -361,7 +391,7 @@ extern "C" void msg_thread_cleanup(void *arg)
    db_end_transaction(jcr, jcr->db);        /* terminate any open transaction */
    jcr->lock();
    jcr->sd_msg_thread_done = true;
-   jcr->SD_msg_chan = 0;
+   jcr->SD_msg_chan_started = false;
    jcr->unlock();
    pthread_cond_broadcast(&jcr->term_wait); /* wakeup any waiting threads */
    Dmsg2(100, "=== End msg_thread. JobId=%d usecnt=%d\n", jcr->JobId, jcr->use_count());
@@ -387,6 +417,7 @@ extern "C" void *msg_thread(void *arg)
    pthread_detach(pthread_self());
    set_jcr_in_tsd(jcr);
    jcr->SD_msg_chan = pthread_self();
+   jcr->SD_msg_chan_started = true;
    pthread_cleanup_push(msg_thread_cleanup, arg);
    sd = jcr->store_bsock;
 
@@ -409,14 +440,16 @@ extern "C" void *msg_thread(void *arg)
       }
       Dmsg1(400, "end loop use=%d\n", jcr->use_count());
    }
-   if (n == BNET_HARDEOF) {
+   if (n == BNET_HARDEOF && jcr->getJobStatus() != JS_Canceled) {
       /*
        * 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"));
+      Qmsg(jcr, M_ERROR, 0, _("Director's connection to SD for this Job was lost.\n"));
    }
-   if (is_bnet_error(sd)) {
+   if (jcr->getJobStatus() == JS_Canceled) {
+      jcr->SDJobStatus = JS_Canceled;
+   } else if (sd->is_error()) {
       jcr->SDJobStatus = JS_ErrorTerminated;
    }
    pthread_cleanup_pop(1);            /* remove and execute the handler */
@@ -440,7 +473,7 @@ void wait_for_storage_daemon_termination(JCR *jcr)
       pthread_cond_timedwait(&jcr->term_wait, &mutex, &timeout);
       V(mutex);
       if (jcr->is_canceled()) {
-         if (jcr->SD_msg_chan) {
+         if (jcr->SD_msg_chan_started) {
             jcr->store_bsock->set_timed_out();
             jcr->store_bsock->set_terminated();
             sd_msg_thread_send_signal(jcr, TIMEOUT_SIGNAL);
@@ -487,7 +520,7 @@ bool send_bootstrap_file(JCR *jcr, BSOCK *sd)
    if (jcr->unlink_bsr) {
       unlink(jcr->RestoreBootstrap);
       jcr->unlink_bsr = false;
-   }                         
+   }
    return true;
 }
 
@@ -518,8 +551,7 @@ extern "C" void *device_thread(void *arg)
          }
       }
       UnlockRes();
-      bnet_close(jcr->store_bsock);
-      jcr->store_bsock = NULL;
+      free_bsock(jcr->store_bsock);
       break;
 
    }
diff --git a/src/dird/newvol.c b/src/dird/newvol.c
index d1941cf..2f7eab3 100644
--- a/src/dird/newvol.c
+++ b/src/dird/newvol.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -62,7 +50,7 @@ bool newVolume(JCR *jcr, MEDIA_DBR *mr, STORE *store)
    /* See if we can create a new Volume */
    db_lock(jcr->db);
    pr.PoolId = mr->PoolId;
-   if (!db_get_pool_record(jcr, jcr->db, &pr)) {
+   if (!db_get_pool_numvols(jcr, jcr->db, &pr)) {
       goto bail_out;
    }
    if (pr.MaxVols == 0 || pr.NumVols < pr.MaxVols) {
@@ -70,7 +58,6 @@ bool newVolume(JCR *jcr, MEDIA_DBR *mr, STORE *store)
       set_pool_dbr_defaults_in_media_dbr(mr, &pr);
       jcr->VolumeName[0] = 0;
       bstrncpy(mr->MediaType, jcr->wstore->media_type, sizeof(mr->MediaType));
-      generate_job_event(jcr, "NewVolume"); /* return bool */
       generate_plugin_event(jcr, bDirEventNewVolume); /* return void... */
       if (jcr->VolumeName[0] && is_volume_name_legal(NULL, jcr->VolumeName)) {
          bstrncpy(mr->VolumeName, jcr->VolumeName, sizeof(mr->VolumeName));
@@ -92,7 +79,7 @@ bool newVolume(JCR *jcr, MEDIA_DBR *mr, STORE *store)
                goto bail_out;
             }
          }
-      } else {                                       
+      } else {
          goto bail_out;
       }
       pr.NumVols++;
@@ -100,9 +87,10 @@ bool newVolume(JCR *jcr, MEDIA_DBR *mr, STORE *store)
       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);
-         Jmsg(jcr, M_INFO, 0, _("Created new Volume \"%s\" in catalog.\n"), mr->VolumeName);
+         Jmsg(jcr, M_INFO, 0, _("Created new Volume=\"%s\", Pool=\"%s\", MediaType=\"%s\" in catalog.\n"),
+            mr->VolumeName, pr.Name, mr->MediaType);
          Dmsg1(90, "Created new Volume=%s\n", mr->VolumeName);
+         db_unlock(jcr->db);
          return true;
       } else {
          Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
@@ -125,7 +113,7 @@ static bool create_simple_name(JCR *jcr, MEDIA_DBR *mr, POOL_DBR *pr)
    mr->VolumeName[0] = 0;
    bstrncpy(name, pr->LabelFormat, sizeof(name));
    ctx.value = 0;
-   Mmsg(query, "SELECT MAX(MediaId) FROM Media,Pool WHERE Pool.PoolId=%s", 
+   Mmsg(query, "SELECT MAX(MediaId) FROM Media,Pool WHERE Pool.PoolId=%s",
         edit_int64(pr->PoolId, ed1));
    if (!db_sql_query(jcr->db, query.c_str(), db_int64_handler, (void *)&ctx)) {
       Jmsg(jcr, M_WARNING, 0, _("SQL failed, but ignored. ERR=%s\n"), db_strerror(jcr->db));
diff --git a/src/dird/next_vol.c b/src/dird/next_vol.c
index ebae077..74238fc 100644
--- a/src/dird/next_vol.c
+++ b/src/dird/next_vol.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -31,7 +19,7 @@
  *    volume for append.  Split out of catreq.c August MMIII
  *    catalog request from the Storage daemon.
 
- *     Kern Sibbald, March MMI
+ *     Written by Kern Sibbald, March MMI
  *
  */
 
@@ -40,12 +28,19 @@
 
 static int const dbglvl = 50;   /* debug level */
 
-/* Set storage id if possible */
+/*
+ * We setup the StorageId if it is
+ *  an autochanger from the Storage and put it in
+ *  the media record.
+ * store == NULL => use existing StorageId
+ */
 void set_storageid_in_mr(STORE *store, MEDIA_DBR *mr)
 {
-   if (store != NULL) {
-      mr->StorageId = store->StorageId;
+   if (!store) {
+      return;
    }
+   /* At this point we know store != NULL */
+   mr->StorageId = store->StorageId;
 }
 
 /*
@@ -58,7 +53,7 @@ void set_storageid_in_mr(STORE *store, MEDIA_DBR *mr)
  *   MEDIA_DBR mr with PoolId set
  *   create -- whether or not to create a new volume
  */
-int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,             
+int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,
                                 bool create, bool prune)
 {
    int retry = 0;
@@ -67,13 +62,15 @@ int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,
    STORE *store = jcr->wstore;
 
    bstrncpy(mr->MediaType, store->media_type, sizeof(mr->MediaType));
-   Dmsg3(dbglvl, "find_next_vol_for_append: JobId=%u PoolId=%d, MediaType=%s\n", 
-         (uint32_t)jcr->JobId, (int)mr->PoolId, mr->MediaType);
+   Dmsg6(dbglvl, "find_next_vol_for_append: JobId=%u PoolId=%d, MediaType=%s index=%d create=%d prune=%d\n",
+         (uint32_t)jcr->JobId, (int)mr->PoolId, mr->MediaType, index,
+         create, prune);
    /*
     * If we are using an Autochanger, restrict Volume
     *   search to the Autochanger on the first pass
     */
-   InChanger = store->autochanger;
+   InChanger = (store->autochanger)? true : false;
+
    /*
     * Find the Next Volume for Append
     */
@@ -119,7 +116,7 @@ int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,
                         ok, index, InChanger, mr->VolStatus);
                   /*
                    * 5. Try pulling a volume from the Scratch pool
-                   */ 
+                   */
                   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",
@@ -127,7 +124,7 @@ int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,
                }
                /*
                 * If we are using an Autochanger and have not found
-                * a volume, retry looking for any volume. 
+                * a volume, retry looking for any volume.
                 */
                if (!ok && InChanger) {
                   InChanger = false;
@@ -216,7 +213,7 @@ bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr)
       /* First handle Max Volume Bytes */
       if ((mr->MaxVolBytes > 0 && mr->VolBytes >= mr->MaxVolBytes)) {
          Jmsg(jcr, M_INFO, 0, _("Max Volume bytes=%s exceeded. "
-             "Marking Volume \"%s\" as Full.\n"), 
+             "Marking Volume \"%s\" as Full.\n"),
              edit_uint64_with_commas(mr->MaxVolBytes, ed1), mr->VolumeName);
          bstrncpy(mr->VolStatus, "Full", sizeof(mr->VolStatus));
          expired = true;
@@ -231,7 +228,7 @@ bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr)
       /* Now see if Max Jobs written to volume */
       } else if (mr->MaxVolJobs > 0 && mr->MaxVolJobs <= mr->VolJobs) {
          Jmsg(jcr, M_INFO, 0, _("Max Volume jobs=%s exceeded. "
-             "Marking Volume \"%s\" as Used.\n"), 
+             "Marking Volume \"%s\" as Used.\n"),
              edit_uint64_with_commas(mr->MaxVolJobs, ed1), mr->VolumeName);
          Dmsg3(dbglvl, "MaxVolJobs=%d JobId=%d Vol=%s\n", mr->MaxVolJobs,
                (uint32_t)jcr->JobId, mr->VolumeName);
@@ -241,7 +238,7 @@ bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr)
       /* Now see if Max Files written to volume */
       } else if (mr->MaxVolFiles > 0 && mr->MaxVolFiles <= mr->VolFiles) {
          Jmsg(jcr, M_INFO, 0, _("Max Volume files=%s exceeded. "
-             "Marking Volume \"%s\" as Used.\n"), 
+             "Marking Volume \"%s\" as Used.\n"),
              edit_uint64_with_commas(mr->MaxVolFiles, ed1), mr->VolumeName);
          bstrncpy(mr->VolStatus, "Used", sizeof(mr->VolStatus));
          expired = true;
@@ -252,7 +249,7 @@ bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr)
          /* See if Vol Use has expired */
          if (mr->VolUseDuration <= (now - mr->FirstWritten)) {
             Jmsg(jcr, M_INFO, 0, _("Max configured use duration=%s sec. exceeded. "
-               "Marking Volume \"%s\" as Used.\n"), 
+               "Marking Volume \"%s\" as Used.\n"),
                edit_uint64_with_commas(mr->VolUseDuration, ed1), mr->VolumeName);
             bstrncpy(mr->VolStatus, "Used", sizeof(mr->VolStatus));
             expired = true;
@@ -374,10 +371,10 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
 
    /* Only one thread at a time can pull from the scratch pool */
    P(mutex);
-   /* 
+   /*
     * Get Pool record for Scratch Pool
     * choose between ScratchPoolId and Scratch
-    * db_get_pool_record will first try ScratchPoolId, 
+    * db_get_pool_numvols will first try ScratchPoolId,
     * and then try the pool named Scratch
     */
    memset(&spr, 0, sizeof(spr));
@@ -385,9 +382,6 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
    spr.PoolId = mr->ScratchPoolId;
    if (db_get_pool_record(jcr, jcr->db, &spr)) {
       smr.PoolId = spr.PoolId;
-      if (InChanger) {       
-         smr.StorageId = mr->StorageId;  /* want only Scratch Volumes in changer */
-      }
       bstrncpy(smr.VolStatus, "Append", sizeof(smr.VolStatus));  /* want only appendable volumes */
       bstrncpy(smr.MediaType, mr->MediaType, sizeof(smr.MediaType));
 
@@ -410,19 +404,19 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
       if (found) {
          POOL_MEM query(PM_MESSAGE);
 
-         /*   
+         /*
           * Get pool record where the Scratch Volume will go to ensure
           * that we can add a Volume.
           */
          memset(&pr, 0, sizeof(pr));
          bstrncpy(pr.Name, jcr->pool->name(), sizeof(pr.Name));
 
-         if (!db_get_pool_record(jcr, jcr->db, &pr)) {
-            Jmsg(jcr, M_WARNING, 0, _("Unable to get Pool record: ERR=%s"), 
+         if (!db_get_pool_numvols(jcr, jcr->db, &pr)) {
+            Jmsg(jcr, M_WARNING, 0, _("Unable to get Pool record: ERR=%s"),
                  db_strerror(jcr->db));
             goto bail_out;
          }
-         
+
          /* Make sure there is room for another volume */
          if (pr.MaxVols > 0 && pr.NumVols >= pr.MaxVols) {
             Jmsg(jcr, M_WARNING, 0, _("Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"),
@@ -450,9 +444,9 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
             goto bail_out;
          }
 
-         Jmsg(jcr, M_INFO, 0, _("Using Volume \"%s\" from 'Scratch' pool.\n"), 
+         Jmsg(jcr, M_INFO, 0, _("Using Volume \"%s\" from 'Scratch' pool.\n"),
               mr->VolumeName);
-         
+
          ok = true;
       }
    }
diff --git a/src/dird/protos.h b/src/dird/protos.h
index d832494..6c86360 100644
--- a/src/dird/protos.h
+++ b/src/dird/protos.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Director external function prototypes
@@ -60,7 +48,11 @@ extern bool do_backup(JCR *jcr);
 extern void backup_cleanup(JCR *jcr, int TermCode);
 extern void update_bootstrap_file(JCR *jcr);
 extern bool send_accurate_current_files(JCR *jcr);
-
+extern char *get_storage_address(CLIENT *cli, STORE *store);
+extern bool run_storage_and_start_message_thread(JCR *jcr, BSOCK *sd);
+extern bool send_client_addr_to_sd(JCR *jcr);
+extern bool send_store_addr_to_fd(JCR *jcr, STORE *store,
+               char *store_address, uint32_t store_port);
 
 /* vbackup.c */
 extern bool do_vbackup_init(JCR *jcr);
@@ -97,9 +89,11 @@ int variable_expansion(JCR *jcr, char *inp, POOLMEM **exp);
 /* fd_cmds.c */
 extern int connect_to_file_daemon(JCR *jcr, int retry_interval,
                                   int max_retry_time, int verbose);
+extern bool send_ls_fileset(JCR *jcr, const char *path);
 extern bool send_include_list(JCR *jcr);
 extern bool send_exclude_list(JCR *jcr);
 extern bool send_level_command(JCR *jcr);
+extern bool send_bwlimit(JCR *jcr, const char *Job);
 extern int get_attributes_and_put_in_catalog(JCR *jcr);
 extern void get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId);
 extern int put_file_into_catalog(JCR *jcr, long file_index, char *fname,
@@ -107,6 +101,7 @@ extern int put_file_into_catalog(JCR *jcr, long file_index, char *fname,
 extern void get_level_since_time(JCR *jcr, char *since, int since_len);
 extern int send_runscripts_commands(JCR *jcr);
 extern bool send_restore_objects(JCR *jcr);
+extern bool send_component_info(JCR *jcr);
 
 /* getmsg.c */
 enum e_prtmsg {
@@ -124,8 +119,9 @@ extern bool get_or_create_client_record(JCR *jcr);
 extern bool get_or_create_fileset_record(JCR *jcr);
 extern DBId_t get_or_create_pool_record(JCR *jcr, char *pool_name);
 extern void apply_pool_overrides(JCR *jcr);
+extern bool apply_wstorage_overrides(JCR *jcr, POOL *original_pool);
 extern JobId_t run_job(JCR *jcr);
-extern bool cancel_job(UAContext *ua, JCR *jcr);
+extern bool cancel_job(UAContext *ua, JCR *jcr, bool cancel = true);
 extern void get_job_storage(USTORE *store, JOB *job, RUN *run);
 extern void init_jcr_job_record(JCR *jcr);
 extern void update_job_end(JCR *jcr, int TermCode);
@@ -151,17 +147,20 @@ extern void sd_msg_thread_send_signal(JCR *jcr, int sig);
 extern bool inc_read_store(JCR *jcr);
 extern void dec_read_store(JCR *jcr);
 
-/* migration.c */
-extern bool do_migration(JCR *jcr);
-extern bool do_migration_init(JCR *jcr);
-extern void migration_cleanup(JCR *jcr, int TermCode);
-extern bool set_migration_wstorage(JCR *jcr, POOL *pool);
+/* mac.c */
+extern bool do_mac(JCR *jcr);
+extern bool do_mac_init(JCR *jcr);
+extern void mac_cleanup(JCR *jcr, int TermCode, int writeTermCode);
+extern bool set_mac_wstorage(UAContext *ua, JCR *jcr, POOL *pool,
+               POOL *next_pool, const char *source);
 
 
 /* mountreq.c */
 extern void mount_request(JCR *jcr, BSOCK *bs, char *buf);
 
 /* msgchan.c */
+extern BSOCK *open_sd_bsock(UAContext *ua);
+extern void close_sd_bsock(UAContext *ua);
 extern bool connect_to_storage_daemon(JCR *jcr, int retry_interval,
                               int max_retry_time, int verbose);
 extern bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore,
@@ -183,10 +182,6 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
 /* newvol.c */
 bool newVolume(JCR *jcr, MEDIA_DBR *mr, STORE *store);
 
-/* python.c */
-int generate_job_event(JCR *jcr, const char *event);
-
-
 /* restore.c */
 extern bool do_restore(JCR *jcr);
 extern bool do_restore_init(JCR *jcr);
@@ -196,6 +191,7 @@ extern void restore_cleanup(JCR *jcr, int TermCode);
 /* ua_acl.c */
 bool acl_access_ok(UAContext *ua, int acl, const char *item);
 bool acl_access_ok(UAContext *ua, int acl, const char *item, int len);
+bool have_restricted_acl(UAContext *ua, int acl);
 
 /* ua_cmds.c */
 bool do_a_command(UAContext *ua);
@@ -216,7 +212,8 @@ void set_pooldbr_from_poolres(POOL_DBR *pr, POOL *pool, e_pool_op op);
 int update_pool_references(JCR *jcr, B_DB *db, POOL *pool);
 
 /* ua_input.c */
-int get_cmd(UAContext *ua, const char *prompt, bool subprompt=false);
+bool get_cmd(UAContext *ua, const char *prompt, bool subprompt=false);
+bool get_selection_list(UAContext *ua, sellist &sl, const char *prompt, bool subprompt=false);
 bool get_pint(UAContext *ua, const char *prompt);
 bool get_yesno(UAContext *ua, const char *prompt);
 bool is_yesno(char *val, int *ret);
@@ -236,6 +233,7 @@ void update_vol_pool(UAContext *ua, char *val, MEDIA_DBR *mr, POOL_DBR *opr);
 void prtit(void *ctx, const char *msg);
 bool complete_jcr_for_job(JCR *jcr, JOB *job, POOL *pool);
 RUN *find_next_run(RUN *run, JOB *job, utime_t &runtime, int ndays);
+bool acl_access_jobid_ok(UAContext *ua, const char *jobids);
 
 /* ua_restore.c */
 void find_storage_resource(UAContext *ua, RESTORE_CTX &rx, char *Storage, char *MediaType);
@@ -250,7 +248,7 @@ JCR *new_control_jcr(const char *base_name, int job_type);
 void free_ua_context(UAContext *ua);
 
 /* ua_select.c */
-STORE   *select_storage_resource(UAContext *ua);
+STORE   *select_storage_resource(UAContext *ua, bool unique=false);
 JOB     *select_job_resource(UAContext *ua);
 JOB     *select_enable_disable_job_resource(UAContext *ua, bool enable);
 JOB     *select_restore_job_resource(UAContext *ua);
@@ -262,10 +260,12 @@ bool    select_pool_dbr(UAContext *ua, POOL_DBR *pr, const char *argk="pool");
 bool    select_client_dbr(UAContext *ua, CLIENT_DBR *cr);
 
 void    start_prompt(UAContext *ua, const char *msg);
-void    add_prompt(UAContext *ua, const char *prompt);
+void    add_prompt(UAContext *ua, const char *prompt, char *unique=NULL);
 int     do_prompt(UAContext *ua, const char *automsg, const char *msg, char *prompt, int max_prompt);
+int     do_alist_prompt(UAContext *ua, const char *automsg, const char *msg,
+              alist *selected);
 CAT    *get_catalog_resource(UAContext *ua);
-STORE  *get_storage_resource(UAContext *ua, bool use_default);
+STORE  *get_storage_resource(UAContext *ua, bool use_default, bool unique=false);
 int     get_storage_drive(UAContext *ua, STORE *store);
 int     get_storage_slot(UAContext *ua, STORE *store);
 int     get_media_type(UAContext *ua, char *MediaType, int max_media);
@@ -274,7 +274,7 @@ bool    get_client_dbr(UAContext *ua, CLIENT_DBR *cr);
 POOL   *get_pool_resource(UAContext *ua);
 JOB    *get_restore_job(UAContext *ua);
 POOL   *select_pool_resource(UAContext *ua);
-JCR *select_running_job(UAContext *ua, const char *reason);
+int  select_running_jobs(UAContext *ua, alist *jcrs, const char *reason);
 CLIENT *get_client_resource(UAContext *ua);
 int     get_job_dbr(UAContext *ua, JOB_DBR *jr);
 
diff --git a/src/dird/pythondir.c b/src/dird/pythondir.c
deleted file mode 100644
index 1782e7f..0000000
--- a/src/dird/pythondir.c
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   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.
-   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.
-*/
-/*
- *
- * Bacula interface to Python for the Director
- *
- * Kern Sibbald, November MMIV
- *
- *
- */
-
-#include "bacula.h"
-#include "dird.h"
-
-#ifdef HAVE_PYTHON
-#undef _POSIX_C_SOURCE
-#include <Python.h>
-
-#include <lib/pythonlib.h>
-
-extern struct s_jl joblevels[];
-
-static PyObject *set_job_events(PyObject *self, PyObject *arg);
-static PyObject *job_run(PyObject *self, PyObject *arg);
-static PyObject *job_write(PyObject *self, PyObject *arg);
-static PyObject *job_cancel(PyObject *self, PyObject *arg);
-static PyObject *job_does_vol_exist(PyObject *self, PyObject *arg);
-
-PyMethodDef JobMethods[] = {
-    {"set_events", set_job_events, METH_VARARGS, "Set Job events"},
-    {"run", job_run, METH_VARARGS, "Run a Job"},
-    {"write", job_write, METH_VARARGS, "Write to output"},
-    {"cancel", job_cancel, METH_VARARGS, "Cancel a Job"},
-    {"DoesVolumeExist", job_does_vol_exist, METH_VARARGS, "Does Volume Exist"},
-    {NULL, NULL, 0, NULL}             /* last item */
-};
- 
-struct s_vars {
-   const char *name;
-   const char *fmt;
-};
-
-/* Read-only variables */
-static struct s_vars getvars[] = {
-   { "Job",        "s"},
-   { "Level",      "s"},
-   { "Type",       "s"},
-   { "JobId",      "i"},
-   { "Client",     "s"},
-   { "NumVols",    "i"},
-   { "Pool",       "s"},
-   { "Storage",    "s"},
-   { "Catalog",    "s"},
-   { "MediaType",  "s"},
-   { "JobName",    "s"},
-   { "JobStatus",  "s"},
-   { "Priority",   "i"},
-   { "VolumeName", "s"},
-   { "CatalogRes", "(sssssis)"},
-   { "JobErrors",  "i"},
-   { "JobFiles",   "i"},
-   { "SDJobFiles", "i"},
-   { "SDErrors",   "i"},
-   { "FDJobStatus","s"},
-   { "SDJobStatus","s"},
-
-   { NULL,             NULL}
-};
-
-/* Writable variables */
-static struct s_vars setvars[] = {
-   { "JobReport",   "s"},
-   { "VolumeName",  "s"},
-   { "Priority",    "i"},
-   { "JobLevel",    "s"},
-
-   { NULL,             NULL}
-};
-
-
-/* Return Job variables */
-/* Returns:  NULL if error
- *           PyObject * return value if OK
- */
-PyObject *job_getattr(PyObject *self, char *attrname)
-{
-   JCR *jcr;
-   bool found = false;
-   int i;
-   char buf[10];
-   char errmsg[200];
-
-   Dmsg0(100, "In job_getattr.\n");
-   jcr = get_jcr_from_PyObject(self);
-   if (!jcr) {
-      bstrncpy(errmsg, _("Job pointer not found."), sizeof(errmsg));
-      goto bail_out;
-   }
-   for (i=0; getvars[i].name; i++) {
-      if (strcmp(getvars[i].name, attrname) == 0) {
-         found = true;
-         break;
-      }
-   }
-   if (!found) {
-      /* Try our methods */
-      return Py_FindMethod(JobMethods, self, attrname);
-   }
-   switch (i) {
-   case 0:                            /* Job */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->job->hdr.name);
-   case 1:                            /* level */
-      return Py_BuildValue((char *)getvars[i].fmt, job_level_to_str(jcr->getJobLevel()));
-   case 2:                            /* type */
-      return Py_BuildValue((char *)getvars[i].fmt, job_type_to_str(jcr->getJobType()));
-   case 3:                            /* JobId */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->JobId);
-   case 4:                            /* Client */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->client->hdr.name);
-   case 5:                            /* NumVols */
-      POOL_DBR pr;
-      memset(&pr, 0, sizeof(pr));
-      bstrncpy(pr.Name, jcr->pool->hdr.name, sizeof(pr.Name));
-      if (db_get_pool_record(jcr, jcr->db, &pr)) {
-         jcr->NumVols = pr.NumVols;
-         return Py_BuildValue((char *)getvars[i].fmt, jcr->NumVols);
-      } else {
-         bsnprintf(errmsg, sizeof(errmsg), _("Pool record not found."));
-         goto bail_out;
-      }
-   case 6:                            /* Pool */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->pool->name());
-   case 7:                            /* Storage */
-      if (jcr->wstore) {
-         return Py_BuildValue((char *)getvars[i].fmt, jcr->wstore->name());
-      } else if (jcr->rstore) {
-         return Py_BuildValue((char *)getvars[i].fmt, jcr->rstore->name());
-      } else {
-         goto bail_out;
-      }
-   case 8:
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->catalog->name());
-   case  9:                           /* MediaType */
-      if (jcr->wstore) {
-         return Py_BuildValue((char *)getvars[i].fmt, jcr->wstore->media_type);
-      } else if (jcr->rstore) {
-         return Py_BuildValue((char *)getvars[i].fmt, jcr->rstore->media_type);
-      } else {
-         goto bail_out;
-      }
-   case 10:                           /* JobName */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->Job);
-   case 11:                           /* JobStatus */
-      buf[1] = 0;
-      buf[0] = jcr->JobStatus;
-      return Py_BuildValue((char *)getvars[i].fmt, buf);
-   case 12:                           /* Priority */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->JobPriority);
-   case 13:
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->VolumeName);
-   case 14:                           /* CatalogRes */
-      return Py_BuildValue((char *)getvars[i].fmt,
-         jcr->catalog->db_name, jcr->catalog->db_address, 
-         jcr->catalog->db_user, jcr->catalog->db_password,
-         jcr->catalog->db_socket, jcr->catalog->db_port,
-         db_get_type(jcr->db));
-   case 15:                           /* JobErrors */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->JobErrors);
-   case 16:                           /* JobFiles */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->JobFiles);
-   case 17:                           /* SDJobFiles */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->SDJobFiles);
-   case 18:                           /* SDErrors */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->SDErrors);
-   case 19:                           /* FDJobStatus */
-      buf[1] = 0;
-      buf[0] = jcr->FDJobStatus;
-      return Py_BuildValue((char *)getvars[i].fmt, buf);
-   case 20:                           /* SDJobStatus */
-      buf[1] = 0;
-      buf[0] = jcr->SDJobStatus;
-      return Py_BuildValue((char *)getvars[i].fmt, buf);
-   }
-   bsnprintf(errmsg, sizeof(errmsg), _("Attribute %s not found."), attrname);
-bail_out:
-   PyErr_SetString(PyExc_AttributeError, errmsg);
-   return NULL;
-}
-
-
-/* Set Job variables */
-/*  Returns:   0 for OK
- *            -1 for error
- */
-int job_setattr(PyObject *self, char *attrname, PyObject *value)
-{
-   JCR *jcr;
-   bool found = false;
-   char *strval = NULL;
-   int intval = 0;
-   int i;
-
-   Dmsg2(100, "In job_setattr=%s val=%p.\n", attrname, value);
-   if (value == NULL) {                /* Cannot delete variables */
-       goto bail_out;
-   }
-   jcr = get_jcr_from_PyObject(self);
-   if (!jcr) {
-      goto bail_out;
-   }
-
-   /* Find attribute name in list */
-   for (i=0; setvars[i].name; i++) {
-      if (strcmp(setvars[i].name, attrname) == 0) {
-         found = true;
-         break;
-      }
-   }
-   if (!found) {
-      goto bail_out;
-   }
-   /* Get argument value */
-   if (setvars[i].fmt != NULL) {
-      switch (setvars[i].fmt[0]) {
-      case 's':
-         if (!PyArg_Parse(value, (char *)setvars[i].fmt, &strval)) {
-            PyErr_SetString(PyExc_TypeError, _("Read-only attribute"));
-            return -1;
-         }
-         break;
-      case 'i':
-         if (!PyArg_Parse(value, (char *)setvars[i].fmt, &intval)) {
-            PyErr_SetString(PyExc_TypeError, _("Read-only attribute"));
-            return -1;
-         }
-         break;
-      }
-   }   
-   switch (i) {
-   case 0:                            /* JobReport */
-      Jmsg(jcr, M_INFO, 0, "%s", strval);
-      return 0;
-   case 1:                            /* VolumeName */
-      /* Make sure VolumeName is valid and we are in VolumeName event */
-      if (strcmp("NewVolume", jcr->event) == 0 &&
-          is_volume_name_legal(NULL, strval)) {
-         pm_strcpy(jcr->VolumeName, strval);
-         Dmsg1(100, "Set Vol=%s\n", strval);
-         return 0;
-      } else {
-         jcr->VolumeName[0] = 0;
-      }
-      break;
-   case 2:                            /* Priority */
-      Dmsg1(000, "Set priority=%d\n", intval);
-      if (intval >= 1 && intval <= 100) {
-         jcr->JobPriority = intval;
-      } else {
-         PyErr_SetString(PyExc_ValueError, _("Priority must be 1-100"));
-         return -1;
-      }
-   case 3:                            /* Job Level */
-      if (strcmp("JobInit", jcr->event) != 0) {
-         PyErr_SetString(PyExc_RuntimeError, _("Job Level can be set only during JobInit"));
-         return -1;
-      }
-      if (strval != NULL) {
-         for (i=0; joblevels[i].level_name; i++) {
-            if (strcmp(strval, joblevels[i].level_name) == 0) {
-               if (joblevels[i].job_type == jcr->getJobType()) {
-                  jcr->setJobLevel(joblevels[i].level);
-                  jcr->jr.JobLevel = jcr->getJobLevel();
-                  return 0;
-               }
-            }
-         }
-      }
-      PyErr_SetString(PyExc_ValueError, _("Bad JobLevel string"));
-      return -1;
-   }
-bail_out:
-   PyErr_SetString(PyExc_AttributeError, attrname);
-   return -1;
-}
-
-/*
- * Set pointer to instantiated events class
- */
-static PyObject *set_job_events(PyObject *self, PyObject *arg)
-{
-   PyObject *eObject;
-   JCR *jcr;
-
-   Dmsg0(100, "In set_job_events.\n");
-   if (!PyArg_ParseTuple(arg, "O:set_events", &eObject)) {
-      Dmsg0(000, "Error in ParseTuple\n");
-      return NULL;
-   }
-   jcr = get_jcr_from_PyObject(self);
-   Py_XDECREF((PyObject *)jcr->Python_events);
-   Py_INCREF(eObject);
-   jcr->Python_events = (void *)eObject;
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-/* Run a Bacula job */
-static PyObject *job_run(PyObject *self, PyObject *arg)
-{
-   JCR *jcr;
-   char *item;
-   int stat;
-
-   if (!PyArg_ParseTuple(arg, "s:run", &item)) {
-      Dmsg0(000, "Error in ParseTuple\n");
-      return NULL;
-   }
-   /* Release lock due to recursion */
-// PyEval_ReleaseLock();
-   jcr = get_jcr_from_PyObject(self);
-   UAContext *ua = new_ua_context(jcr);
-   ua->batch = true;
-   pm_strcpy(ua->cmd, item);          /* copy command */
-   parse_ua_args(ua);                 /* parse command */
-   stat = run_cmd(ua, ua->cmd);
-   free_ua_context(ua);
-// PyEval_AcquireLock();
-   return PyInt_FromLong((long)stat);
-}
-
-static PyObject *job_write(PyObject *self, PyObject *args)
-{
-   char *text = NULL;
-
-   if (!PyArg_ParseTuple(args, "s:write", &text)) {
-      Dmsg0(000, "Parse tuple error in job_write\n");
-      return NULL;
-   }
-   if (text) {
-      JCR *jcr = get_jcr_from_PyObject(self);
-      Jmsg(jcr, M_INFO, 0, "%s", text);
-   }
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-static PyObject *job_does_vol_exist(PyObject *self, PyObject *args)
-{
-   char *VolName = NULL;
-
-   if (!PyArg_ParseTuple(args, "s:does_volume_exist", &VolName)) {
-      Dmsg0(000, "Parse tuple error in job_does_vol_exist\n");
-      return NULL;
-   }
-   if (VolName) {
-      MEDIA_DBR mr;
-      int ok;
-      JCR *jcr = get_jcr_from_PyObject(self);
-      bstrncpy(mr.VolumeName, VolName, sizeof(mr.VolumeName));
-      ok = db_get_media_record(jcr, jcr->db, &mr);
-      return Py_BuildValue("i", ok);
-   }
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-
-static PyObject *job_cancel(PyObject *self, PyObject *args)
-{
-   JobId_t JobId = 0;
-   JCR *jcr;
-   bool found = false;
-
-   if (!PyArg_ParseTuple(args, "i:cancel", &JobId)) {
-      Dmsg0(000, "Parse tuple error in job_write\n");
-      return NULL;
-   }
-   foreach_jcr(jcr) {
-      if (jcr->JobId == 0) {
-         continue;
-      }
-      if (jcr->JobId == JobId) {
-         found = true;
-         break;
-      }
-   }
-   /* endeach_jcr(jcr) not needed because freed below */
-
-   if (!found) {
-      /* ***FIXME*** raise exception */
-      return NULL;
-   }
-// PyEval_ReleaseLock();
-   UAContext *ua = new_ua_context(jcr);
-   ua->batch = true;
-   if (!cancel_job(ua, jcr)) {
-      /* ***FIXME*** raise exception */
-      return NULL;
-   }
-   free_ua_context(ua);
-   free_jcr(jcr);
-// PyEval_AcquireLock();   
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-/*
- * Generate a Job event, which means look up the event
- *  method defined by the user, and if it exists, 
- *  call it.
- */
-int generate_job_event(JCR *jcr, const char *event)
-{
-   PyObject *method = NULL;
-   PyObject *Job = (PyObject *)jcr->Python_job;
-   PyObject *events = (PyObject *)jcr->Python_events;
-   PyObject *result = NULL;
-   int stat = 0;
-
-   if (!Job || !events) {
-      return 0;
-   }
-
-   lock_python();
-// PyEval_AcquireLock();
-
-   method = find_method(events, method, event);
-   if (!method) {
-      goto bail_out;
-   }
-
-   bstrncpy(jcr->event, event, sizeof(jcr->event));
-   result = PyObject_CallFunction(method, (char *)"O", Job);
-   jcr->event[0] = 0;             /* no event in progress */
-   if (result == NULL) {
-      if (PyErr_Occurred()) {
-         PyErr_Print();
-         Dmsg1(000, "Error in Python method %s\n", event);
-      }
-   } else {
-      stat = 1;
-   }
-   Py_XDECREF(result);
-
-bail_out:
-   unlock_python();
-// PyEval_ReleaseLock();
-   return stat;
-}
-
-bool python_set_prog(JCR*, char const*) { return false; }
-
-#else
-
-/* Dummy if Python not configured */
-int generate_job_event(JCR *jcr, const char *event) { return 1; }
-   
-
-#endif /* HAVE_PYTHON */
diff --git a/src/dird/recycle.c b/src/dird/recycle.c
index 4ceaf0b..4cd2d4f 100644
--- a/src/dird/recycle.c
+++ b/src/dird/recycle.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
diff --git a/src/dird/restore.c b/src/dird/restore.c
index eee86be..99bffc6 100644
--- a/src/dird/restore.c
+++ b/src/dird/restore.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /**
  *   Bacula Director -- restore.c -- responsible for restoring files
  *
- *     Kern Sibbald, November MM
+ *     Written by Kern Sibbald, November MM
  *
  *    This routine is run as a separate thread.
  *
@@ -47,11 +35,12 @@
 
 #include "bacula.h"
 #include "dird.h"
+#include "lib/ini.h"
 
 /* Commands sent to File daemon */
-static char restorecmd[]  = "restore replace=%c prelinks=%d where=%s\n";
-static char restorecmdR[] = "restore replace=%c prelinks=%d regexwhere=%s\n";
-static char storaddr[]    = "storage address=%s port=%d ssl=0 Authorization=%s\n";
+static char restorecmd[]  = "restore %sreplace=%c prelinks=%d where=%s\n";
+static char restorecmdR[] = "restore %sreplace=%c prelinks=%d regexwhere=%s\n";
+static char storaddr[]    = "storage address=%s port=%d ssl=%d Authorization=%s\n";
 
 /* Responses received from File daemon */
 static char OKrestore[]   = "2000 OK restore\n";
@@ -65,6 +54,7 @@ static void build_restore_command(JCR *jcr, POOL_MEM &ret)
 {
    char replace, *where, *cmd;
    char empty = '\0';
+   char files[100];
 
    /* Build the restore command */
 
@@ -75,7 +65,7 @@ static void build_restore_command(JCR *jcr, POOL_MEM &ret)
    } else {
       replace = REPLACE_ALWAYS;       /* always replace */
    }
-   
+
    if (jcr->RegexWhere) {
       where = jcr->RegexWhere;             /* override */
       cmd = restorecmdR;
@@ -92,13 +82,18 @@ static void build_restore_command(JCR *jcr, POOL_MEM &ret)
 
    } else {                           /* nothing was specified */
       where = ∅                 /* use default */
-      cmd   = restorecmd;                    
+      cmd   = restorecmd;
    }
-   
+
    jcr->prefix_links = jcr->job->PrefixLinks;
 
    bash_spaces(where);
-   Mmsg(ret, cmd, replace, jcr->prefix_links, where);
+   if (jcr->FDVersion < 7) {
+      Mmsg(ret, cmd, "", replace, jcr->prefix_links, where);
+   } else {
+      snprintf(files, sizeof(files), "files=%d ", jcr->ExpectedFiles);
+      Mmsg(ret, cmd, files, replace, jcr->prefix_links, where);
+   }
    unbash_spaces(where);
 }
 
@@ -114,8 +109,8 @@ struct bootstrap_info
 /**
  * Open the bootstrap file and find the first Storage=
  * Returns ok if able to open
- * It fills the storage name (should be the first line) 
- * and the file descriptor to the bootstrap file, 
+ * It fills the storage name (should be the first line)
+ * and the file descriptor to the bootstrap file,
  * it should be used for next operations, and need to be closed
  * at the end.
  */
@@ -198,11 +193,11 @@ static bool is_on_same_storage(JCR *jcr, char *new_one)
 
 /**
  * Check if the current line contains Storage="xxx", and compare the
- * result to the current storage. We use UAContext to analyse the bsr 
+ * result to the current storage. We use UAContext to analyse the bsr
  * string.
  *
  * Returns true if we need to change the storage, and it set the new
- * Storage resource name in "storage" arg. 
+ * Storage resource name in "storage" arg.
  */
 static bool check_for_new_storage(JCR *jcr, bootstrap_info &info)
 {
@@ -244,7 +239,7 @@ static bool send_bootstrap_file(JCR *jcr, BSOCK *sock,
    while(fgets(ua->cmd, UA_CMD_SIZE, bs)) {
       if (check_for_new_storage(jcr, info)) {
          /* Otherwise, we need to contact another storage daemon.
-          * Reset bs to the beginning of the current segment. 
+          * Reset bs to the beginning of the current segment.
           */
          fseeko(bs, pos, SEEK_SET);
          break;
@@ -277,24 +272,22 @@ static bool select_rstore(JCR *jcr, bootstrap_info &info)
       jcr->setJobStatus(JS_ErrorTerminated);
       return false;
    }
-   
+
    /*
-    * What does this do???????????  KES
+    * This releases the store_bsock between calls to the SD.
+    *  I think.
     */
-   if (jcr->store_bsock) {
-      jcr->store_bsock->destroy();
-      jcr->store_bsock = NULL;
-   }
-   
+   free_bsock(jcr->store_bsock);
+
    /*
-    * release current read storage and get a new one 
+    * release current read storage and get a new one
     */
    dec_read_store(jcr);
    free_rstorage(jcr);
    set_rstorage(jcr, &ustore);
    jcr->setJobStatus(JS_WaitSD);
    /*
-    * Wait for up to 6 hours to increment read stoage counter 
+    * Wait for up to 6 hours to increment read stoage counter
     */
    for (i=0; i < MAX_TRIES; i++) {
       /* try to get read storage counter incremented */
@@ -310,12 +303,12 @@ static bool select_rstore(JCR *jcr, bootstrap_info &info)
    }
    /* Failed to inc_read_store() */
    free_rstorage(jcr);
-   Jmsg(jcr, M_FATAL, 0, 
+   Jmsg(jcr, M_FATAL, 0,
       _("Could not acquire read storage lock for \"%s\""), info.storage);
    return false;
 }
 
-/* 
+/*
  * Clean the bootstrap_info struct
  */
 static void close_bootstrap_file(bootstrap_info &info)
@@ -339,23 +332,24 @@ static void close_bootstrap_file(bootstrap_info &info)
  */
 bool restore_bootstrap(JCR *jcr)
 {
+   int tls_need = BNET_TLS_NONE;
    BSOCK *fd = NULL;
    BSOCK *sd;
+   char *store_address;
+   uint32_t store_port;
    bool first_time = true;
    bootstrap_info info;
    POOL_MEM restore_cmd(PM_MESSAGE);
    bool ret = false;
 
-   /* this command is used for each part */
-   build_restore_command(jcr, restore_cmd);
-   
+
    /* Open the bootstrap file */
    if (!open_bootstrap_file(jcr, info)) {
       goto bail_out;
    }
    /* Read the bootstrap file */
    while (!feof(info.bs)) {
-      
+
       if (!select_rstore(jcr, info)) {
          goto bail_out;
       }
@@ -392,6 +386,7 @@ bool restore_bootstrap(JCR *jcr)
             goto bail_out;
          }
          fd = jcr->file_bsock;
+         build_restore_command(jcr, restore_cmd);
       }
 
       jcr->setJobStatus(JS_Running);
@@ -404,29 +399,59 @@ bool restore_bootstrap(JCR *jcr)
          goto bail_out;
       }
 
-      if (!sd->fsend("run")) {
-         goto bail_out;
+      if (jcr->sd_calls_client) {
+         /*
+          * SD must call "client" i.e. FD
+          */
+         if (jcr->FDVersion < 5) {
+            Jmsg(jcr, M_FATAL, 0, _("The File daemon does not support SDCallsClient.\n"));
+            goto bail_out;
+         }
+         if (!send_client_addr_to_sd(jcr)) {
+            goto bail_out;
+         }
+         if (!run_storage_and_start_message_thread(jcr, sd)) {
+            goto bail_out;
+         }
+         store_address = jcr->wstore->address;  /* dummy */
+         store_port = 0;           /* flag that SD calls FD */
+
+      } else {
+         /*
+          * Default case where FD must call the SD
+          */
+         if (!run_storage_and_start_message_thread(jcr, sd)) {
+            goto bail_out;
+         }
+
+         /*
+          * send Storage daemon address to the File daemon,
+          *   then wait for File daemon to make connection
+          *   with Storage daemon.
+          */
+         if (jcr->rstore->SDDport == 0) {
+            jcr->rstore->SDDport = jcr->rstore->SDport;
+         }
+
+         store_address = get_storage_address(jcr->client, jcr->rstore);
+         store_port = jcr->rstore->SDDport;
       }
-      /*
-       * Now start a Storage daemon message thread
-       */
-      if (!start_storage_daemon_message_thread(jcr)) {
-         goto bail_out;
+
+      /* TLS Requirement */
+      if (jcr->rstore->tls_enable) {
+         if (jcr->rstore->tls_require) {
+            tls_need = BNET_TLS_REQUIRED;
+         } else {
+            tls_need = BNET_TLS_OK;
+         }
       }
-      Dmsg0(50, "Storage daemon connection OK\n");
 
       /*
-       * send Storage daemon address to the File daemon,
-       *   then wait for File daemon to make connection
-       *   with Storage daemon.
+       * Send storage address to FD
+       *  if port==0 FD must wait for SD to call it.
        */
-      if (jcr->rstore->SDDport == 0) {
-         jcr->rstore->SDDport = jcr->rstore->SDport;
-      }
-      fd->fsend(storaddr, jcr->rstore->address, jcr->rstore->SDDport,
-                jcr->sd_auth_key);
+      fd->fsend(storaddr, store_address, store_port, tls_need, jcr->sd_auth_key);
       memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key));
-
       Dmsg1(6, "dird>filed: %s\n", fd->msg);
       if (!response(jcr, fd, OKstore, "Storage", DISPLAY_ERROR)) {
          goto bail_out;
@@ -441,14 +466,9 @@ bool restore_bootstrap(JCR *jcr)
          if (!send_runscripts_commands(jcr)) {
             goto bail_out;
          }
-         if (!send_restore_objects(jcr)) {
-            Dmsg0(000, "FAIL: Send restore objects\n");
-            goto bail_out;
-         }
       }
 
       fd->fsend("%s", restore_cmd.c_str());
-
       if (!response(jcr, fd, OKrestore, "Restore", DISPLAY_ERROR)) {
          goto bail_out;
       }
@@ -527,7 +547,7 @@ bail_out:
    return false;
 }
 
-bool do_restore_init(JCR *jcr) 
+bool do_restore_init(JCR *jcr)
 {
    free_wstorage(jcr);
    return true;
@@ -556,7 +576,7 @@ void restore_cleanup(JCR *jcr, int TermCode)
 
    if (job_canceled(jcr)) {
       cancel_storage_daemon_job(jcr);
-   }  
+   }
 
    switch (TermCode) {
    case JS_Terminated:
@@ -575,7 +595,7 @@ void restore_cleanup(JCR *jcr, int TermCode)
       msg_type = M_ERROR;          /* Generate error message */
       if (jcr->store_bsock) {
          jcr->store_bsock->signal(BNET_TERMINATE);
-         if (jcr->SD_msg_chan) {
+         if (jcr->SD_msg_chan_started) {
             pthread_cancel(jcr->SD_msg_chan);
          }
       }
@@ -584,7 +604,7 @@ void restore_cleanup(JCR *jcr, int TermCode)
       term_msg = _("Restore Canceled");
       if (jcr->store_bsock) {
          jcr->store_bsock->signal(BNET_TERMINATE);
-         if (jcr->SD_msg_chan) {
+         if (jcr->SD_msg_chan_started) {
             pthread_cancel(jcr->SD_msg_chan);
          }
       }
diff --git a/src/dird/run_conf.c b/src/dird/run_conf.c
index 8aad42d..e96882d 100644
--- a/src/dird/run_conf.c
+++ b/src/dird/run_conf.c
@@ -1,36 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *  Configuration parser for Director Run Configuration
  *   directives, which are part of the Schedule Resource
  *
- *     Kern Sibbald, May MM
+ *     Written by Kern Sibbald, May MM
  *
  */
 
@@ -44,7 +32,7 @@ extern "C" { // work around visual compiler mangling variables
 #else
 extern URES res_all;
 #endif
-extern struct s_jl joblevels[];
+extern s_jl joblevels[];
 
 /* Forward referenced subroutines */
 
@@ -61,7 +49,8 @@ enum e_state {
    s_monthly,
    s_hourly,
    s_wom,                           /* 1st, 2nd, ...*/
-   s_woy                            /* week of year w00 - w53 */
+   s_woy,                           /* week of year w00 - w53 */
+   s_ldom                           /* last day of month */
 };
 
 struct s_keyw {
@@ -74,6 +63,7 @@ struct s_keyw {
 static struct s_keyw keyw[] = {
   {NT_("on"),         s_none,    0},
   {NT_("at"),         s_at,      0},
+  {NT_("lastday"),    s_ldom,    0},
 
   {NT_("sun"),        s_wday,    0},
   {NT_("mon"),        s_wday,    1},
@@ -124,12 +114,14 @@ static struct s_keyw keyw[] = {
   {NT_("3rd"),        s_wom,     2},
   {NT_("4th"),        s_wom,     3},
   {NT_("5th"),        s_wom,     4},
+  {NT_("6th"),        s_wom,     5},
 
   {NT_("first"),      s_wom,     0},
   {NT_("second"),     s_wom,     1},
   {NT_("third"),      s_wom,     2},
   {NT_("fourth"),     s_wom,     3},
   {NT_("fifth"),      s_wom,     4},
+  {NT_("sixth"),      s_wom,     5},
   {NULL,         s_none,    0}
 };
 
@@ -145,13 +137,17 @@ static void set_defaults()
    set_bits(0, 30, lrun.mday);
    set_bits(0, 6,  lrun.wday);
    set_bits(0, 11, lrun.month);
-   set_bits(0, 4,  lrun.wom);
+   set_bits(0, 5,  lrun.wom);
    set_bits(0, 53, lrun.woy);
 }
 
 
-/* Keywords (RHS) permitted in Run records */
-static struct s_kw RunFields[] = {
+/*
+ * Keywords (RHS) permitted in Run records
+ *
+ *    name              token
+ */
+s_kw RunFields[] = {
    {"pool",              'P'},
    {"fullpool",          'f'},
    {"incrementalpool",   'i'},
@@ -164,6 +160,7 @@ static struct s_kw RunFields[] = {
    {"writepartafterjob", 'W'},
    {"maxrunschedtime",   'm'},
    {"accurate",          'a'},
+   {"nextpool",          'N'},
    {NULL,                 0}
 };
 
@@ -239,6 +236,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
                   if (strcasecmp(lc->str, joblevels[j].level_name) == 0) {
                      lrun.level = joblevels[j].level;
                      lrun.job_type = joblevels[j].job_type;
+                     lrun.level_set = true;
                      j = 0;
                      break;
                   }
@@ -252,9 +250,11 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
                token = lex_get_token(lc, T_PINT32);
                if (pass == 2) {
                   lrun.Priority = lc->pint32_val;
+                  lrun.priority_set = true;
                }
                break;
             case 'P':                 /* Pool */
+            case 'N':                 /* NextPool */
             case 'f':                 /* FullPool */
             case 'i':                 /* IncPool */
             case 'd':                 /* DifPool */
@@ -270,6 +270,9 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
                   case 'P':
                      lrun.pool = (POOL *)res;
                      break;
+                  case 'N':
+                     lrun.next_pool = (POOL *)res;
+                     break;
                   case 'f':
                      lrun.full_pool = (POOL *)res;
                      break;
@@ -307,7 +310,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
                }
                break;
             case 'm':           /* max run sched time */
-               token = lex_get_token(lc, T_QUOTED_STRING); 
+               token = lex_get_token(lc, T_QUOTED_STRING);
                if (!duration_to_utime(lc->str, &utime)) {
                   scan_err1(lc, _("expected a time period, got: %s"), lc->str);
                   return;
@@ -359,7 +362,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
    set_defaults();
 
    for ( ; token != T_EOL; (token = lex_get_token(lc, T_ALL))) {
-      int len; 
+      int len;
       bool pm = false;
       bool am = false;
       switch (token) {
@@ -437,7 +440,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
          break;
       case s_wom:                  /* Week of month 1st, ... */
          if (!have_wom) {
-            clear_bits(0, 4, lrun.wom);
+            clear_bits(0, 5, lrun.wom);
             have_wom = true;
          }
          set_bit(code, lrun.wom);
@@ -477,11 +480,11 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
          } else if (len != 2) {
             scan_err0(lc, _("Bad time specification."));
             /* NOT REACHED */
-         }   
-         /* 
+         }
+         /*
           * Note, according to NIST, 12am and 12pm are ambiguous and
           *  can be defined to anything.  However, 12:01am is the same
-          *  as 00:01 and 12:01pm is the same as 12:01, so we define 
+          *  as 00:01 and 12:01pm is the same as 12:01, so we define
           *  12am as 00:00 and 12pm as 12:00.
           */
          if (pm) {
@@ -505,6 +508,13 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
       case s_at:
          have_at = true;
          break;
+      case s_ldom:
+         if (!have_mday) {
+            clear_bits(0, 30, lrun.mday);
+            have_mday = true;
+         }
+         set_bit(31, lrun.mday);   /* day 32 => last day of month */
+         break;
       case s_range:
          p = strchr(lc->str, '-');
          if (!p) {
@@ -556,7 +566,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
          /* lookup first half of keyword range (week days or months) */
          lcase(lc->str);
          for (i=0; keyw[i].name; i++) {
-            if (strcmp(lc->str, keyw[i].name) == 0) {
+            if (strcasecmp(lc->str, keyw[i].name) == 0) {
                state = keyw[i].state;
                code   = keyw[i].code;
                i = 0;
@@ -571,7 +581,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
          /* Lookup end of range */
          lcase(p);
          for (i=0; keyw[i].name; i++) {
-            if (strcmp(p, keyw[i].name) == 0) {
+            if (strcasecmp(p, keyw[i].name) == 0) {
                state2  = keyw[i].state;
                code2   = keyw[i].code;
                i = 0;
@@ -608,13 +618,13 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
          } else {
             /* Must be position */
             if (!have_wom) {
-               clear_bits(0, 4, lrun.wom);
+               clear_bits(0, 5, lrun.wom);
                have_wom = true;
             }
             if (code < code2) {
                set_bits(code, code2, lrun.wom);
             } else {
-               set_bits(code, 4, lrun.wom);
+               set_bits(code, 5, lrun.wom);
                set_bits(0, code2, lrun.wom);
             }
          }
@@ -626,7 +636,7 @@ void store_run(LEX *lc, RES_ITEM *item, int index, int pass)
       case s_weekly:
          have_mday = have_wom = have_woy = true;
          set_bits(0, 30, lrun.mday);
-         set_bits(0, 4,  lrun.wom);
+         set_bits(0, 5,  lrun.wom);
          set_bits(0, 53, lrun.woy);
          break;
       case s_daily:
diff --git a/src/dird/scheduler.c b/src/dird/scheduler.c
index 154cc8d..f9252f8 100644
--- a/src/dird/scheduler.c
+++ b/src/dird/scheduler.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -44,7 +32,7 @@
 #define DBGLVL 0
 #else
 #undef SCHED_DEBUG
-#define DBGLVL 200
+#define DBGLVL DT_SCHEDULER|200
 #endif
 
 const int dbglvl = DBGLVL;
@@ -73,7 +61,7 @@ static void dump_job(job_item *ji, const char *msg);
 
 /* Imported variables */
 
-/**
+/*
  * called by reload_config to tell us that the schedules
  * we may have based our next jobs to run queues have been
  * invalidated.  In fact the schedules may not have changed
@@ -81,7 +69,7 @@ static void dump_job(job_item *ji, const char *msg);
  * on are new and no longer have a valid last_run time which
  * causes us to double run schedules that get put into the list
  * because run_nh = 1.
- */   
+ */
 static bool schedules_invalidated = false;
 void invalidate_schedules(void) {
     schedules_invalidated = true;
@@ -154,7 +142,7 @@ again:
       time_t twait;
       /** discard scheduled queue and rebuild with new schedule objects. **/
       lock_jobs();
-      if (schedules_invalidated) { 
+      if (schedules_invalidated) {
           dump_job(next_job, "Invalidated job");
           free(next_job);
           while (!jobs_to_run->empty()) {
@@ -205,6 +193,10 @@ again:
       jcr->pool = run->pool;          /* override pool */
       jcr->run_pool_override = true;
    }
+   if (run->next_pool) {
+      jcr->next_pool = run->next_pool; /* override next pool */
+      jcr->run_next_pool_override = true;
+   }
    if (run->full_pool) {
       jcr->full_pool = run->full_pool; /* override full pool */
       jcr->run_full_pool_override = true;
@@ -266,9 +258,9 @@ static void find_runs()
    JOB *job;
    SCHED *sched;
    struct tm tm;
-   int hour, mday, wday, month, wom, woy;
+   int hour, mday, wday, month, wom, woy, ldom;
    /* Items corresponding to above at the next hour */
-   int nh_hour, nh_mday, nh_wday, nh_month, nh_wom, nh_woy;
+   int nh_hour, nh_mday, nh_wday, nh_month, nh_wom, nh_woy, nh_ldom;
 
    Dmsg0(dbglvl, "enter find_runs()\n");
 
@@ -281,6 +273,7 @@ static void find_runs()
    month = tm.tm_mon;
    wom = mday / 7;
    woy = tm_woy(now);                     /* get week of year */
+   ldom = tm_ldom(month, tm.tm_year + 1900);
 
    Dmsg7(dbglvl, "now = %x: h=%d m=%d md=%d wd=%d wom=%d woy=%d\n",
          now, hour, month, mday, wday, wom, woy);
@@ -298,6 +291,7 @@ static void find_runs()
    nh_month = tm.tm_mon;
    nh_wom = nh_mday / 7;
    nh_woy = tm_woy(next_hour);              /* get week of year */
+   nh_ldom = tm_ldom(nh_month, tm.tm_year + 1900);
 
    Dmsg7(dbglvl, "nh = %x: h=%d m=%d md=%d wd=%d wom=%d woy=%d\n",
          next_hour, nh_hour, nh_month, nh_mday, nh_wday, nh_wom, nh_woy);
@@ -317,40 +311,47 @@ static void find_runs()
           */
 #ifdef xxxx
          Dmsg0(000, "\n");
-         Dmsg6(000, "run h=%d m=%d md=%d wd=%d wom=%d woy=%d\n",
-            hour, month, mday, wday, wom, woy);
-         Dmsg6(000, "bitset bsh=%d bsm=%d bsmd=%d bswd=%d bswom=%d bswoy=%d\n",
+         Dmsg7(000, "run h=%d m=%d md=%d wd=%d wom=%d woy=%d ldom=%d\n",
+            hour, month, mday, wday, wom, woy, ldom);
+         Dmsg7(000, "bitset bsh=%d bsm=%d bsmd=%d bswd=%d bswom=%d bswoy=%d bsldom=%d\n",
             bit_is_set(hour, run->hour),
             bit_is_set(month, run->month),
             bit_is_set(mday, run->mday),
             bit_is_set(wday, run->wday),
             bit_is_set(wom, run->wom),
-            bit_is_set(woy, run->woy));
+            bit_is_set(woy, run->woy),
+            bit_is_set(31, run->mday));
+
 
-         Dmsg6(000, "nh_run h=%d m=%d md=%d wd=%d wom=%d woy=%d\n",
-            nh_hour, nh_month, nh_mday, nh_wday, nh_wom, nh_woy);
-         Dmsg6(000, "nh_bitset bsh=%d bsm=%d bsmd=%d bswd=%d bswom=%d bswoy=%d\n",
+         Dmsg7(000, "nh_run h=%d m=%d md=%d wd=%d wom=%d woy=%d ldom=%d\n",
+            nh_hour, nh_month, nh_mday, nh_wday, nh_wom, nh_woy, nh_ldom);
+         Dmsg7(000, "nh_bitset bsh=%d bsm=%d bsmd=%d bswd=%d bswom=%d bswoy=%d bsldom=%d\n",
             bit_is_set(nh_hour, run->hour),
             bit_is_set(nh_month, run->month),
             bit_is_set(nh_mday, run->mday),
             bit_is_set(nh_wday, run->wday),
             bit_is_set(nh_wom, run->wom),
-            bit_is_set(nh_woy, run->woy));
+            bit_is_set(nh_woy, run->woy),
+            bit_is_set(31, run->mday));
 #endif
 
          run_now = bit_is_set(hour, run->hour) &&
-            bit_is_set(mday, run->mday) &&
-            bit_is_set(wday, run->wday) &&
-            bit_is_set(month, run->month) &&
-            bit_is_set(wom, run->wom) &&
-            bit_is_set(woy, run->woy);
+            ((bit_is_set(mday, run->mday) &&
+              bit_is_set(wday, run->wday) &&
+              bit_is_set(month, run->month) &&
+              bit_is_set(wom, run->wom) &&
+              bit_is_set(woy, run->woy)) ||
+             (bit_is_set(month, run->month) &&
+              bit_is_set(31, run->mday) && mday == ldom));
 
          run_nh = bit_is_set(nh_hour, run->hour) &&
-            bit_is_set(nh_mday, run->mday) &&
-            bit_is_set(nh_wday, run->wday) &&
-            bit_is_set(nh_month, run->month) &&
-            bit_is_set(nh_wom, run->wom) &&
-            bit_is_set(nh_woy, run->woy);
+            ((bit_is_set(nh_mday, run->mday) &&
+              bit_is_set(nh_wday, run->wday) &&
+              bit_is_set(nh_month, run->month) &&
+              bit_is_set(nh_wom, run->wom) &&
+              bit_is_set(nh_woy, run->woy)) ||
+             (bit_is_set(nh_month, run->month) &&
+              bit_is_set(31, run->mday) && nh_mday == nh_ldom));
 
          Dmsg3(dbglvl, "run@%p: run_now=%d run_nh=%d\n", run, run_now, run_nh);
 
@@ -384,14 +385,14 @@ static void add_job(JOB *job, RUN *run, time_t now, time_t runtime)
     */
    if (((runtime - run->last_run) < 61) || ((runtime+59) < now)) {
 #ifdef SCHED_DEBUG
-      Dmsg4(000, "Drop: Job=\"%s\" run=%lld. last_run=%lld. now=%lld\n", job->hdr.name, 
+      Dmsg4(000, "Drop: Job=\"%s\" run=%lld. last_run=%lld. now=%lld\n", job->hdr.name,
             (utime_t)runtime, (utime_t)run->last_run, (utime_t)now);
       fflush(stdout);
 #endif
       return;
    }
 #ifdef SCHED_DEBUG
-   Dmsg4(000, "Add: Job=\"%s\" run=%lld last_run=%lld now=%lld\n", job->hdr.name, 
+   Dmsg4(000, "Add: Job=\"%s\" run=%lld last_run=%lld now=%lld\n", job->hdr.name,
             (utime_t)runtime, (utime_t)run->last_run, (utime_t)now);
 #endif
    /* accept to run this job */
@@ -432,12 +433,12 @@ static void dump_job(job_item *ji, const char *msg)
 {
 #ifdef SCHED_DEBUG
    char dt[MAX_TIME_LENGTH];
-   int save_debug = debug_level;
-   if (debug_level < dbglvl) {
+   int64_t save_debug = debug_level;
+   if (!chk_dbglvl(dbglvl)) {
       return;
    }
    bstrftime_nc(dt, sizeof(dt), ji->runtime);
-   Dmsg4(dbglvl, "%s: Job=%s priority=%d run %s\n", msg, ji->job->hdr.name, 
+   Dmsg4(dbglvl, "%s: Job=%s priority=%d run %s\n", msg, ji->job->hdr.name,
       ji->Priority, dt);
    fflush(stdout);
    debug_level = save_debug;
diff --git a/src/dird/ua.h b/src/dird/ua.h
index 721adfe..0e3e855 100644
--- a/src/dird/ua.h
+++ b/src/dird/ua.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Includes specific to the Director User Agent Server
@@ -40,7 +28,9 @@ public:
    BSOCK *UA_sock;
    BSOCK *sd;
    JCR *jcr;
-   B_DB *db;
+   B_DB *db;                          /* Pointing to shared or private db */
+   B_DB *shared_db;                   /* Main Bacula DB access */
+   B_DB *private_db;                  /* Private DB access */
    CAT *catalog;
    CONRES *cons;                      /* console resource */
    POOLMEM *cmd;                      /* return command/name buffer */
@@ -50,8 +40,10 @@ public:
    char *argv[MAX_CMD_ARGS];          /* argument values */
    int argc;                          /* number of arguments */
    char **prompt;                     /* list of prompts */
+   char **unique;                     /* extra unique field */
    int max_prompts;                   /* max size of list */
    int num_prompts;                   /* current number in list */
+   char api_opts[MAX_NAME_LENGTH];    /* Api options */
    int api;                           /* For programs want an API */
    int cmd_index;                     /* Index in command table */
    bool force_mult_db_connections;    /* overwrite cat.mult_db_connections */
@@ -83,6 +75,7 @@ struct TREE_CTX {
    TREE_NODE *avail_node;             /* unused node last insert */
    int cnt;                           /* count for user feedback */
    bool all;                          /* if set mark all as default */
+   bool hardlinks_in_mem;             /* Set to optimize for speed */
    UAContext *ua;
    uint32_t FileEstimate;             /* estimate of number of files */
    uint32_t FileCount;                /* current count of files */
@@ -106,6 +99,7 @@ struct RESTORE_CTX {
    JobId_t JobId;
    char ClientName[MAX_NAME_LENGTH];  /* backup client */
    char RestoreClientName[MAX_NAME_LENGTH];  /* restore client */
+   char RestoreMediaType[MAX_NAME_LENGTH];   /* restore Media type when storage override */
    char last_jobid[20];
    POOLMEM *JobIds;                   /* User entered string of JobIds */
    POOLMEM *BaseJobIds;               /* Base jobids */
@@ -126,6 +120,7 @@ struct RESTORE_CTX {
    int pnl;                           /* path length */
    bool found;
    bool all;                          /* mark all as default */
+   bool hardlinks_in_mem;             /* keep hard links in memory */
    NAME_LIST name_list;
 };
 
diff --git a/src/dird/ua_acl.c b/src/dird/ua_acl.c
index c510df6..4b70374 100644
--- a/src/dird/ua_acl.c
+++ b/src/dird/ua_acl.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -31,7 +19,6 @@
  *
  *     Kern Sibbald, January MMIV
  *
- *   Version  $Id$
  */
 
 #include "bacula.h"
@@ -83,3 +70,27 @@ bool acl_access_ok(UAContext *ua, int acl, const char *item, int len)
    }
    return false;
 }
+
+/*
+ * Return  true if we have a restriction on the ACL
+ *        false if there is no ACL restriction
+ */
+bool have_restricted_acl(UAContext *ua, int acl)
+{
+   alist *list;
+
+   /* If no console resource => default console and all is permitted */
+   if (!ua || !ua->cons) {
+      return false;       /* no restrictions */
+   }
+
+   list = ua->cons->ACL_lists[acl];
+   if (!list) {
+      return false;
+   }
+   /* Special case *all* gives full access */
+   if (list->size() == 1 && strcasecmp("*all*", (char *)list->get(0)) == 0) {
+      return false;
+   }
+   return list->size() > 0;
+}
diff --git a/src/dird/ua_cmds.c b/src/dird/ua_cmds.c
index 422eaa8..b01b8cc 100644
--- a/src/dird/ua_cmds.c
+++ b/src/dird/ua_cmds.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -32,23 +20,10 @@
  *     Kern Sibbald, September MM
  *
  */
- 
+
 #include "bacula.h"
 #include "dird.h"
 
-#ifdef HAVE_PYTHON
-
-#undef _POSIX_C_SOURCE
-#include <Python.h>
-
-#include "lib/pythonlib.h"
-
-/* Imported Functions */
-extern PyObject *job_getattr(PyObject *self, char *attrname);
-extern int job_setattr(PyObject *self, char *attrname, PyObject *value);
-
-#endif /* HAVE_PYTHON */
-
 /* Imported subroutines */
 
 /* Imported variables */
@@ -63,7 +38,8 @@ extern int list_cmd(UAContext *ua, const char *cmd);
 extern int llist_cmd(UAContext *ua, const char *cmd);
 extern int messagescmd(UAContext *ua, const char *cmd);
 extern int prunecmd(UAContext *ua, const char *cmd);
-extern int purgecmd(UAContext *ua, const char *cmd);
+extern int purge_cmd(UAContext *ua, const char *cmd);
+extern int truncate_cmd(UAContext *ua, const char *cmd);  /* in ua_purge.c */
 extern int querycmd(UAContext *ua, const char *cmd);
 extern int relabel_cmd(UAContext *ua, const char *cmd);
 extern int restore_cmd(UAContext *ua, const char *cmd);
@@ -85,10 +61,10 @@ static int estimate_cmd(UAContext *ua, const char *cmd);
 static int help_cmd(UAContext *ua, const char *cmd);
 static int memory_cmd(UAContext *ua, const char *cmd);
 static int mount_cmd(UAContext *ua, const char *cmd);
-static int python_cmd(UAContext *ua, const char *cmd);
 static int release_cmd(UAContext *ua, const char *cmd);
 static int reload_cmd(UAContext *ua, const char *cmd);
 static int setdebug_cmd(UAContext *ua, const char *cmd);
+static int setbwlimit_cmd(UAContext *ua, const char *cmd);
 static int setip_cmd(UAContext *ua, const char *cmd);
 static int time_cmd(UAContext *ua, const char *cmd);
 static int trace_cmd(UAContext *ua, const char *cmd);
@@ -99,7 +75,6 @@ static int version_cmd(UAContext *ua, const char *cmd);
 static int wait_cmd(UAContext *ua, const char *cmd);
 
 static void do_job_delete(UAContext *ua, JobId_t JobId);
-static bool delete_job_id_range(UAContext *ua, char *tok);
 static int delete_volume(UAContext *ua);
 static int delete_pool(UAContext *ua);
 static void delete_job(UAContext *ua);
@@ -109,7 +84,7 @@ int quit_cmd(UAContext *ua, const char *cmd);
 
 /* not all in alphabetical order.  New commands are added after existing commands with similar letters
    to prevent breakage of existing user scripts.  */
-struct cmdstruct { 
+struct cmdstruct {
    const char *key;                             /* command */
    int (*func)(UAContext *ua, const char *cmd); /* handler */
    const char *help;            /* main purpose */
@@ -120,88 +95,99 @@ static struct cmdstruct commands[] = {                                      /* C
  { NT_("add"),        add_cmd,     _("Add media to a pool"),   NT_("pool=<pool-name> storage=<storage> jobid=<JobId>"),  false},
  { NT_("autodisplay"), autodisplay_cmd,_("Autodisplay console messages"), NT_("on | off"),    false},
  { NT_("automount"),   automount_cmd,  _("Automount after label"),        NT_("on | off"),    false},
- { NT_("cancel"),     cancel_cmd,    _("Cancel a job"), NT_("jobid=<number> job=<job-name> ujobid=<unique-jobid>"), false},
+ { NT_("cancel"),     cancel_cmd,    _("Cancel a job"), NT_("jobid=<number-list> | job=<job-name> | ujobid=<unique-jobid> | inactive client=<client-name> storage=<storage-name> | all"), false},
  { NT_("create"),     create_cmd,    _("Create DB Pool from resource"), NT_("pool=<pool-name>"),                    false},
  { NT_("delete"),     delete_cmd,    _("Delete volume, pool or job"), NT_("volume=<vol-name> pool=<pool-name> jobid=<id>"), true},
- { NT_("disable"),    disable_cmd,   _("Disable a job"), NT_("job=<name>"),        true},
- { NT_("enable"),     enable_cmd,    _("Enable a job"), NT_("job=<name>"),          true},
- { NT_("estimate"),   estimate_cmd,  _("Performs FileSet estimate, listing gives full listing"), 
+ { NT_("disable"),    disable_cmd,   _("Disable a job, attributes batch process"), NT_("job=<name> | batch"),  true},
+ { NT_("enable"),     enable_cmd,    _("Enable a job, attributes batch process"), NT_("job=<name> | batch"),   true},
+ { NT_("estimate"),   estimate_cmd,  _("Performs FileSet estimate, listing gives full listing"),
    NT_("fileset=<fs> client=<cli> level=<level> accurate=<yes/no> job=<job> listing"), true},
 
  { NT_("exit"),       quit_cmd,      _("Terminate Bconsole session"), NT_(""),         false},
  { NT_("gui"),        gui_cmd,       _("Non-interactive gui mode"),   NT_("on | off"), false},
- { NT_("help"),       help_cmd,      _("Print help on specific command"),  
+ { NT_("help"),       help_cmd,      _("Print help on specific command"),
    NT_("add autodisplay automount cancel create delete disable\n\tenable estimate exit gui label list llist"
-       "\n\tmessages memory mount prune purge python quit query\n\trestore relabel release reload run status"
-       "\n\tsetdebug setip show sqlquery time trace unmount\n\tumount update use var version wait"),         false},
+       "\n\tmessages memory mount prune purge quit query\n\trestore relabel release reload run status"
+       "\n\tsetbandwidth setdebug setip show sqlquery time trace unmount\n\tumount update use var version wait"),         false},
 
  { NT_("label"),      label_cmd,     _("Label a tape"), NT_("storage=<storage> volume=<vol> pool=<pool> slot=<slot> barcodes"), false},
- { NT_("list"),       list_cmd,      _("List objects from catalog"), 
-   NT_("pools | jobs | jobtotals | volume | media <pool=pool-name> | files jobid=<nn> | copies jobid=<nn>"), true},
+ { NT_("list"),       list_cmd,      _("List objects from catalog"),
+   NT_("pools | jobs | jobtotals | volume | media <pool=pool-name> | files jobid=<nn> | copies jobid=<nn> |\n"
+       "\tjoblog jobid=<nn>"), false},
 
  { NT_("llist"),      llist_cmd,     _("Full or long list like list command"),
-   NT_("pools | jobs | jobtotals | media <pool=pool-name> | files jobid=<nn> | copies jobid=<nn>"), true},
+   NT_("pools | jobs | joblog jobid=<nn> | jobtotals | media <pool=pool-name> | files jobid=<nn> | copies jobid=<nn>"), true},
 
  { NT_("messages"),   messagescmd,   _("Display pending messages"),   NT_(""),    false},
  { NT_("memory"),     memory_cmd,    _("Print current memory usage"), NT_(""),    true},
- { NT_("mount"),      mount_cmd,     _("Mount storage"), 
+ { NT_("mount"),      mount_cmd,     _("Mount storage"),
    NT_("storage=<storage-name> slot=<num> drive=<num> [ jobid=<id> | job=<job-name> ]"), false},
 
- { NT_("prune"),      prunecmd,      _("Prune expired records from catalog"), 
-   NT_("files | jobs | pool=<pool> | client=<client-name> | volume=<volume-name> "), true},
+ { NT_("prune"),      prunecmd,      _("Prune expired records from catalog"),
+   NT_("files | jobs | pool=<pool> | client=<client-name> | [ expired ] volume=<volume-name> "), true},
 
- { NT_("purge"),      purgecmd,      _("Purge records from catalog"), NT_("files jobs volume=<vol> [action=<action> devicetype=<type> pool=<pool> allpools storage=<st> drive=<num>]"),  true},
- { NT_("python"),     python_cmd,    _("Python control commands"),    NT_(""),              false},
+ { NT_("purge"),      purge_cmd,     _("Purge records from catalog"), NT_("files jobs volume=<vol> [mediatype=<type> pool=<pool> allpools storage=<st> drive=<num>]"),  true},
  { NT_("quit"),       quit_cmd,      _("Terminate Bconsole session"), NT_(""),              false},
  { NT_("query"),      querycmd,      _("Query catalog"),              NT_(""),              false},
- { NT_("restore"),    restore_cmd,   _("Restore files"), 
+ { NT_("restore"),    restore_cmd,   _("Restore files"),
    NT_("where=</path> client=<client> storage=<storage> bootstrap=<file> "
        "restorejob=<job>"
-       "\n\tcomment=<text> jobid=<jobid> done select all"), false},
+       "\n\tcomment=<text> jobid=<jobid> copies done select all"), false},
 
- { NT_("relabel"),    relabel_cmd,   _("Relabel a tape"), 
+ { NT_("relabel"),    relabel_cmd,   _("Relabel a tape"),
    NT_("storage=<storage-name> oldvolume=<old-volume-name>\n\tvolume=<newvolume-name> pool=<pool>"), false},
 
  { NT_("release"),    release_cmd,   _("Release storage"),  NT_("storage=<storage-name>"),      false},
  { NT_("reload"),     reload_cmd,    _("Reload conf file"), NT_(""),                  true},
- { NT_("run"),        run_cmd,       _("Run a job"), 
+ { NT_("run"),        run_cmd,       _("Run a job"),
    NT_("job=<job-name> client=<client-name>\n\tfileset=<FileSet-name> level=<level-keyword>\n\tstorage=<storage-name>"
-       "where=<directory-prefix>\n\twhen=<universal-time-specification>\n\tcomment=<text> yes"), false}, 
+       " where=<directory-prefix>\n\twhen=<universal-time-specification> pool=<pool-name>\n\t"
+       " nextpool=<next-pool-name> comment=<text> accurate=<bool> spooldata=<bool> yes"), false},
 
- { NT_("status"),     status_cmd,    _("Report status"), 
+ { NT_("status"),     status_cmd,    _("Report status"),
    NT_("all | dir=<dir-name> | director | client=<client-name> | storage=<storage-name> slots | days=nnn"), true},
 
- { NT_("setdebug"),   setdebug_cmd,  _("Sets debug level"), 
+ { NT_("stop"),       cancel_cmd,    _("Stop a job"), NT_("jobid=<number-list> job=<job-name> ujobid=<unique-jobid> all"), false},
+ { NT_("setdebug"),   setdebug_cmd,  _("Sets debug level"),
    NT_("level=<nn> trace=0/1 client=<client-name> | dir | storage=<storage-name> | all"), true},
 
+ { NT_("setbandwidth"),   setbwlimit_cmd,  _("Sets bandwidth"),
+   NT_("limit=<nn-kbs> client=<client-name> jobid=<number> job=<job-name> ujobid=<unique-jobid>"), true},
+
  { NT_("setip"),      setip_cmd,     _("Sets new client address -- if authorized"), NT_(""),   false},
- { NT_("show"),       show_cmd,      _("Show resource records"), 
+ { NT_("show"),       show_cmd,      _("Show resource records"),
    NT_("job=<xxx> |  pool=<yyy> | fileset=<aaa> schedule=<sss> | client=<zzz> | disabled | all"), true},
 
  { NT_("sqlquery"),   sqlquerycmd,   _("Use SQL to query catalog"), NT_(""),          false},
  { NT_("time"),       time_cmd,      _("Print current time"),       NT_(""),          true},
  { NT_("trace"),      trace_cmd,     _("Turn on/off trace to file"), NT_("on | off"), true},
- { NT_("unmount"),    unmount_cmd,   _("Unmount storage"), 
+ { NT_("truncate"),   truncate_cmd,  _("Truncate one or more Volumes"), NT_("volume=<vol> [mediatype=<type> pool=<pool> allpools storage=<st> drive=<num>]"),  true},
+ { NT_("unmount"),    unmount_cmd,   _("Unmount storage"),
    NT_("storage=<storage-name> [ drive=<num> ] | jobid=<id> | job=<job-name>"), false},
 
- { NT_("umount"),     unmount_cmd,   _("Umount - for old-time Unix guys, see unmount"), 
+ { NT_("umount"),     unmount_cmd,   _("Umount - for old-time Unix guys, see unmount"),
    NT_("storage=<storage-name> [ drive=<num> ] | jobid=<id> | job=<job-name>"), false},
 
- { NT_("update"),     update_cmd,    _("Update volume, pool or stats"), 
+ { NT_("update"),     update_cmd,    _("Update volume, pool or stats"),
    NT_("stats\n\tpool=<poolname>\n\tslots storage=<storage> scan"
        "\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 enabled=<yes/no> recyclepool=<pool> actiononpurge=<action>"),true},
+       "\n\t enabled=<yes/no> recyclepool=<pool> actiononpurge=<action>"
+       "\n\t allfrompool=<pool> fromallpools"),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},
- { NT_("wait"),       wait_cmd,      _("Wait until no jobs are running"), 
+ { NT_("wait"),       wait_cmd,      _("Wait until no jobs are running"),
    NT_("jobname=<name> | jobid=<nnn> | ujobid=<complete_name>"), false}
 };
 
 #define comsize ((int)(sizeof(commands)/sizeof(struct cmdstruct)))
 
+const char *get_command(int index) {
+   return commands[index].key;
+}
+
 /*
  * Execute a command from the UA
  */
@@ -226,6 +212,7 @@ bool do_a_command(UAContext *ua)
    len = strlen(ua->argk[0]);
    for (i=0; i<comsize; i++) {     /* search for command */
       if (strncasecmp(ua->argk[0],  commands[i].key, len) == 0) {
+         ua->cmd_index = i;
          /* Check if command permitted, but "quit" is always OK */
          if (strcmp(ua->argk[0], NT_("quit")) != 0 &&
              !acl_access_ok(ua, Command_ACL, ua->argk[0], len)) {
@@ -404,6 +391,9 @@ static int add_cmd(UAContext *ua, const char *cmd)
          ua->error_msg("%s", db_strerror(ua->db));
          return 1;
       }
+//    if (i == startnum) {
+//       first_id = mr.PoolId;
+//    }
    }
    pr.NumVols += num;
    Dmsg0(200, "Update pool record.\n");
@@ -444,12 +434,23 @@ int automount_cmd(UAContext *ua, const char *cmd)
  */
 static int cancel_cmd(UAContext *ua, const char *cmd)
 {
-   JCR *jcr = select_running_job(ua, "cancel");
-   if (!jcr) {
-      return 1;
+   JCR    *jcr;
+   bool    ret = true;
+   int     nb;
+   bool    cancel = strcasecmp(commands[ua->cmd_index].key, "cancel") == 0;
+   alist  *jcrs = New(alist(5, not_owned_by_alist));
+
+   nb = select_running_jobs(ua, jcrs, commands[ua->cmd_index].key);
+
+   foreach_alist(jcr, jcrs) {
+      /* Execute the cancel command only if we don't have an error */
+      if (nb != -1) {
+         ret &= cancel_job(ua, jcr, cancel);
+      }
+      free_jcr(jcr);
    }
-   int ret = cancel_job(ua, jcr);
-   free_jcr(jcr);
+
+   delete jcrs;
    return ret;
 }
 
@@ -509,6 +510,7 @@ int update_pool_references(JCR *jcr, B_DB *db, POOL *pool)
    memset(&pr, 0, sizeof(POOL_DBR));
    bstrncpy(pr.Name, pool->name(), sizeof(pr.Name));
 
+   /* Don't compute NumVols here */
    if (!db_get_pool_record(jcr, db, &pr)) {
       return -1;                       /* not exists in database */
    }
@@ -519,13 +521,14 @@ int update_pool_references(JCR *jcr, B_DB *db, POOL *pool)
       return -1;                      /* error */
    }
 
+   /* NumVols is updated here */
    if (!db_update_pool_record(jcr, db, &pr)) {
       return -1;                      /* error */
    }
    return 1;
 }
 
-/* set POOL_DBR.RecyclePoolId and POOL_DBR.ScratchPoolId from Pool resource 
+/* set POOL_DBR.RecyclePoolId and POOL_DBR.ScratchPoolId from Pool resource
  * works with set_pooldbr_from_poolres
  */
 bool set_pooldbr_references(JCR *jcr, B_DB *db, POOL_DBR *pr, POOL *pool)
@@ -567,7 +570,7 @@ bool set_pooldbr_references(JCR *jcr, B_DB *db, POOL_DBR *pr, POOL *pool)
    } else {                    /* no ScratchPool used, set it to 0 */
       pr->ScratchPoolId = 0;
    }
- 
+
    return ret;
 }
 
@@ -583,9 +586,7 @@ bool set_pooldbr_references(JCR *jcr, B_DB *db, POOL_DBR *pr, POOL *pool)
 int create_pool(JCR *jcr, B_DB *db, POOL *pool, e_pool_op op)
 {
    POOL_DBR  pr;
-
    memset(&pr, 0, sizeof(POOL_DBR));
-
    bstrncpy(pr.Name, pool->name(), sizeof(pr.Name));
 
    if (db_get_pool_record(jcr, db, &pr)) {
@@ -647,35 +648,91 @@ static int create_cmd(UAContext *ua, const char *cmd)
 extern DIRRES *director;
 extern char *configfile;
 
-/*
- * Python control command
- *  python restart (restarts interpreter)
- */
-static int python_cmd(UAContext *ua, const char *cmd)
+static int setbwlimit_client(UAContext *ua, CLIENT *client, char *Job, int64_t limit)
 {
-#ifdef HAVE_PYTHON
-   init_python_interpreter_args python_args;
+   if (!client) {
+      return 1;
+   }
 
-   if (ua->argc >= 2 && strcasecmp(ua->argk[1], NT_("restart")) == 0) {
-      term_python_interpreter();
+   /* Connect to File daemon */
+   ua->jcr->client = client;
+   ua->jcr->max_bandwidth = limit;
 
-      python_args.progname = director->name();
-      python_args.scriptdir = director->scripts_directory;
-      python_args.modulename = "DirStartUp";
-      python_args.configfile = configfile;
-      python_args.workingdir = director->working_directory;
-      python_args.job_getattr = job_getattr;
-      python_args.job_setattr = job_setattr;
+   /* Try to connect for 15 seconds */
+   ua->send_msg(_("Connecting to Client %s at %s:%d\n"),
+      client->name(), client->address, client->FDport);
+   if (!connect_to_file_daemon(ua->jcr, 1, 15, 0)) {
+      ua->error_msg(_("Failed to connect to Client.\n"));
+      return 1;
+   }
+   Dmsg0(120, "Connected to file daemon\n");
 
-      init_python_interpreter(&python_args);
+   if (!send_bwlimit(ua->jcr, Job)) {
+      ua->error_msg(_("Failed to set bandwidth limit to Client.\n"));
 
-      ua->send_msg(_("Python interpreter restarted.\n"));
    } else {
-#endif /* HAVE_PYTHON */
-      ua->warning_msg(_("Nothing done.\n"));
-#ifdef HAVE_PYTHON
+      ua->info_msg(_("2000 OK Limiting bandwidth to %lldkb/s %s\n"),
+                   limit/1024, *Job?Job:_("on running and future jobs"));
+   }
+
+   ua->jcr->file_bsock->signal(BNET_TERMINATE);
+   free_bsock(ua->jcr->file_bsock);
+   ua->jcr->client = NULL;
+   ua->jcr->max_bandwidth = 0;
+   return 1;
+}
+
+static int setbwlimit_cmd(UAContext *ua, const char *cmd)
+{
+   int action = -1;
+   CLIENT *client = NULL;
+   char Job[MAX_NAME_LENGTH];
+   *Job=0;
+   int64_t limit = -1;
+   JCR *jcr = NULL;
+   int i;
+
+   const char *lst_all[] = { "job", "jobid", "jobname", "client", NULL };
+   if (find_arg_keyword(ua, lst_all) < 0) {
+       start_prompt(ua, _("Set Bandwidth choice:\n"));
+       add_prompt(ua, _("Running Job")); /* 0 */
+       add_prompt(ua, _("Running and future Jobs for a Client")); /* 1 */
+       action = do_prompt(ua, "item", _("Choose where to limit the bandwidth"),
+                          NULL, 0);
+       if (action < 0) {
+          return 1;
+       }
+   }
+
+   i = find_arg_with_value(ua, "limit");
+   if (i >= 0) {
+      limit = atoi(ua->argv[i]) * 1024LL;
+   }
+   if (limit < 0) {
+      if (!get_pint(ua, _("Enter new bandwidth limit kb/s: "))) {
+         return 1;
+      }
+      limit = ua->pint32_val * 1024LL; /* kb/s */
+   }
+
+   const char *lst[] = { "job", "jobid", "jobname", NULL };
+   if (action == 0 || find_arg_keyword(ua, lst) > 0) {
+      alist *jcrs = New(alist(10, not_owned_by_alist));
+      select_running_jobs(ua, jcrs, "limit");
+      foreach_alist(jcr, jcrs) {
+         jcr->max_bandwidth = limit; /* TODO: see for locking (Should be safe)*/
+         bstrncpy(Job, jcr->Job, sizeof(Job));
+         client = jcr->client;
+         free_jcr(jcr);
+         setbwlimit_client(ua, client, Job, limit);
+      }
+
+   } else {
+      client = get_client_resource(ua);
+      if (client) {
+         setbwlimit_client(ua, client, Job, limit);
+      }
    }
-#endif /* HAVE_PYTHON */
    return 1;
 }
 
@@ -703,7 +760,8 @@ static int setip_cmd(UAContext *ua, const char *cmd)
       free(client->address);
    }
    /* MA Bug 6 remove ifdef */
-   sockaddr_to_ascii(&(ua->UA_sock->client_addr), buf, sizeof(buf));
+   sockaddr_to_ascii(&(ua->UA_sock->client_addr),
+         sizeof(ua->UA_sock->client_addr), buf, sizeof(buf));
    client->address = bstrdup(buf);
    ua->send_msg(_("Client \"%s\" address set to %s\n"),
             client->name(), client->address);
@@ -718,8 +776,21 @@ static void do_en_disable_cmd(UAContext *ua, bool setting)
    JOB *job;
    int i;
 
-   i = find_arg_with_value(ua, NT_("job")); 
-   if (i < 0) { 
+   if (find_arg(ua, NT_("batch")) > 0) {
+      ua->send_msg(_("Job Attributes Insertion %sabled\n"), setting?"en":"dis");
+      db_disable_batch_insert(setting);
+      return;
+   }
+
+   /*
+    * if (find_arg(ua, NT_("scheduler")) > 0) {
+    *    ua->send_msg(_("Job Scheduler %sabled\n"), setting?"en":"dis");
+    *    return;
+    * }
+    */
+
+   i = find_arg_with_value(ua, NT_("job"));
+   if (i < 0) {
       job = select_enable_disable_job_resource(ua, setting);
       if (!job) {
          return;
@@ -728,7 +799,7 @@ static void do_en_disable_cmd(UAContext *ua, bool setting)
       LockRes();
       job = GetJobResWithName(ua->argv[i]);
       UnlockRes();
-   } 
+   }
    if (!job) {
       ua->error_msg(_("Job \"%s\" not found.\n"), ua->argv[i]);
       return;
@@ -755,31 +826,31 @@ static int disable_cmd(UAContext *ua, const char *cmd)
    return 1;
 }
 
-static void do_storage_setdebug(UAContext *ua, STORE *store, int level, int trace_flag)
+static void do_storage_setdebug(UAContext *ua, STORE *store,
+                                int64_t level, int trace_flag, char *options, char *tags)
 {
    BSOCK *sd;
-   JCR *jcr = ua->jcr;
    USTORE lstore;
-   
+
    lstore.store = store;
    pm_strcpy(lstore.store_source, _("unknown source"));
-   set_wstorage(jcr, &lstore);
+   set_wstorage(ua->jcr, &lstore);
    /* Try connecting for up to 15 seconds */
    ua->send_msg(_("Connecting to Storage daemon %s at %s:%d\n"),
       store->name(), store->address, store->SDport);
-   if (!connect_to_storage_daemon(jcr, 1, 15, 0)) {
+   if (!connect_to_storage_daemon(ua->jcr, 1, 15, 0)) {
       ua->error_msg(_("Failed to connect to Storage daemon.\n"));
       return;
    }
    Dmsg0(120, _("Connected to storage daemon\n"));
-   sd = jcr->store_bsock;
-   sd->fsend("setdebug=%d trace=%d\n", level, trace_flag);
+   sd = ua->jcr->store_bsock;
+   sd->fsend("setdebug=%ld trace=%ld hangup=0 options=%s tags=%s\n",
+             (int32_t)level, trace_flag, options, NPRTB(tags));
    if (sd->recv() >= 0) {
       ua->send_msg("%s", sd->msg);
    }
    sd->signal(BNET_TERMINATE);
-   sd->close();
-   jcr->store_bsock = NULL;
+   free_bsock(ua->jcr->store_bsock);
    return;
 }
 
@@ -787,12 +858,13 @@ static void do_storage_setdebug(UAContext *ua, STORE *store, int level, int trac
  * For the client, we have the following values that can be set
  *  level = debug level
  *  trace = send debug output to a file
+ *  options = various options for debug or specific FD behavior
  *  hangup = how many records to send to SD before hanging up
  *    obviously this is most useful for testing restarting
  *    failed jobs.
  */
-static void do_client_setdebug(UAContext *ua, CLIENT *client, 
-              int level, int trace, int hangup)
+static void do_client_setdebug(UAContext *ua, CLIENT *client,
+                               int64_t level, int trace, int hangup, char *options, char *tags)
 {
    BSOCK *fd;
 
@@ -807,19 +879,25 @@ static void do_client_setdebug(UAContext *ua, CLIENT *client,
       return;
    }
    Dmsg0(120, "Connected to file daemon\n");
+
    fd = ua->jcr->file_bsock;
-   fd->fsend("setdebug=%d trace=%d hangup=%d\n", level, trace, hangup);
+   if (ua->jcr->FDVersion < 8 || !options) {
+      fd->fsend("setdebug=%ld trace=%d hangup=%d\n",
+                (int32_t)level, trace, hangup);
+   } else {
+      fd->fsend("setdebug=%ld trace=%d hangup=%d options=%s tags=%s\n",
+                (int32_t)level, trace, hangup, options, NPRTB(tags));
+   }
    if (fd->recv() >= 0) {
       ua->send_msg("%s", fd->msg);
    }
    fd->signal(BNET_TERMINATE);
-   fd->close();
-   ua->jcr->file_bsock = NULL;
+   free_bsock(ua->jcr->file_bsock);
    return;
 }
 
 
-static void do_all_setdebug(UAContext *ua, int level, int trace_flag, int hangup)
+static void do_all_setdebug(UAContext *ua, int64_t level, int trace_flag, int hangup, char *options, char *tags)
 {
    STORE *store, **unique_store;
    CLIENT *client, **unique_client;
@@ -858,7 +936,7 @@ static void do_all_setdebug(UAContext *ua, int level, int trace_flag, int hangup
 
    /* Call each unique Storage daemon */
    for (j=0; j<i; j++) {
-      do_storage_setdebug(ua, unique_store[j], level, trace_flag);
+      do_storage_setdebug(ua, unique_store[j], level, trace_flag, options, tags);
    }
    free(unique_store);
 
@@ -892,7 +970,7 @@ static void do_all_setdebug(UAContext *ua, int level, int trace_flag, int hangup
 
    /* Call each unique File daemon */
    for (j=0; j<i; j++) {
-      do_client_setdebug(ua, unique_client[j], level, trace_flag, hangup);
+      do_client_setdebug(ua, unique_client[j], level, trace_flag, hangup, options, tags);
    }
    free(unique_client);
 }
@@ -904,17 +982,24 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
 {
    STORE *store;
    CLIENT *client;
-   int level;
+   int64_t level=0, tags=0;
    int trace_flag = -1;
    int hangup = -1;
    int i;
+   char *tags_str=NULL;
+   char options[60];
 
    Dmsg1(120, "setdebug:%s:\n", cmd);
 
+   *options = 0;
+   i = find_arg_with_value(ua, "options");
+   if (i >= 0) {
+      bstrncpy(options, ua->argv[i], sizeof(options) - 1);
+   }
    level = -1;
    i = find_arg_with_value(ua, "level");
    if (i >= 0) {
-      level = atoi(ua->argv[i]);
+      level = str_to_int64(ua->argv[i]);
    }
    if (level < 0) {
       if (!get_pint(ua, _("Enter new debug level: "))) {
@@ -923,6 +1008,18 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
       level = ua->pint32_val;
    }
 
+   /* Better to send the tag string instead of tweaking the level
+    * in case where we extend the tag or change the representation
+    */
+   i = find_arg_with_value(ua, "tags");
+   if (i > 0) {
+      tags_str = ua->argv[i];
+      if (!debug_parse_tags(tags_str, &tags)) {
+         ua->error_msg(_("Incorrect tags found on command line %s\n"), tags_str);
+         return 1;
+      }
+   }
+
    /* Look for trace flag. -1 => not change */
    i = find_arg_with_value(ua, "trace");
    if (i >= 0) {
@@ -942,13 +1039,14 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
    /* General debug? */
    for (i=1; i<ua->argc; i++) {
       if (strcasecmp(ua->argk[i], "all") == 0) {
-         do_all_setdebug(ua, level, trace_flag, hangup);
+         do_all_setdebug(ua, level, trace_flag, hangup, options, tags_str);
          return 1;
       }
       if (strcasecmp(ua->argk[i], "dir") == 0 ||
           strcasecmp(ua->argk[i], "director") == 0) {
-         debug_level = level;
+         debug_level = level | tags;
          set_trace(trace_flag);
+         set_debug_flags(options);
          return 1;
       }
       if (strcasecmp(ua->argk[i], "client") == 0 ||
@@ -957,13 +1055,13 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
          if (ua->argv[i]) {
             client = GetClientResWithName(ua->argv[i]);
             if (client) {
-               do_client_setdebug(ua, client, level, trace_flag, hangup);
+               do_client_setdebug(ua, client, level, trace_flag, hangup, options, tags_str);
                return 1;
             }
          }
          client = select_client_resource(ua);
          if (client) {
-            do_client_setdebug(ua, client, level, trace_flag, hangup);
+            do_client_setdebug(ua, client, level, trace_flag, hangup, options, tags_str);
             return 1;
          }
       }
@@ -975,13 +1073,13 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
          if (ua->argv[i]) {
             store = GetStoreResWithName(ua->argv[i]);
             if (store) {
-               do_storage_setdebug(ua, store, level, trace_flag);
+               do_storage_setdebug(ua, store, level, trace_flag, options, tags_str);
                return 1;
             }
          }
-         store = get_storage_resource(ua, false/*no default*/);
+         store = get_storage_resource(ua, false/*no default*/, true/*unique*/);
          if (store) {
-            do_storage_setdebug(ua, store, level, trace_flag);
+            do_storage_setdebug(ua, store, level, trace_flag, options, tags_str);
             return 1;
          }
       }
@@ -997,23 +1095,24 @@ static int setdebug_cmd(UAContext *ua, const char *cmd)
    add_prompt(ua, _("All"));
    switch(do_prompt(ua, "", _("Select daemon type to set debug level"), NULL, 0)) {
    case 0:                         /* Director */
-      debug_level = level;
+      debug_level = level | tags;
       set_trace(trace_flag);
+      set_debug_flags(options);
       break;
    case 1:
-      store = get_storage_resource(ua, false/*no default*/);
+      store = get_storage_resource(ua, false/*no default*/, true/*unique*/);
       if (store) {
-         do_storage_setdebug(ua, store, level, trace_flag);
+         do_storage_setdebug(ua, store, level, trace_flag, options, tags_str);
       }
       break;
    case 2:
       client = select_client_resource(ua);
       if (client) {
-         do_client_setdebug(ua, client, level, trace_flag, hangup);
+         do_client_setdebug(ua, client, level, trace_flag, hangup, options, tags_str);
       }
       break;
    case 3:
-      do_all_setdebug(ua, level, trace_flag, hangup);
+      do_all_setdebug(ua, level, trace_flag, hangup, options, tags_str);
       break;
    default:
       break;
@@ -1146,7 +1245,7 @@ static int estimate_cmd(UAContext *ua, const char *cmd)
       if (strcasecmp(ua->argk[i], NT_("accurate")) == 0) {
          if (ua->argv[i]) {
             if (!is_yesno(ua->argv[i], &accurate)) {
-               ua->error_msg(_("Invalid value for accurate. " 
+               ua->error_msg(_("Invalid value for accurate. "
                                "It must be yes or no.\n"));
             }
             continue;
@@ -1250,8 +1349,7 @@ static int estimate_cmd(UAContext *ua, const char *cmd)
 bail_out:
    if (jcr->file_bsock) {
       jcr->file_bsock->signal(BNET_TERMINATE);
-      jcr->file_bsock->close();
-      jcr->file_bsock = NULL;
+      free_bsock(ua->jcr->file_bsock);
    }
    return 1;
 }
@@ -1266,7 +1364,7 @@ static int time_cmd(UAContext *ua, const char *cmd)
    time_t ttime = time(NULL);
    struct tm tm;
    (void)localtime_r(&ttime, &tm);
-   strftime(sdt, sizeof(sdt), "%d-%b-%Y %H:%M:%S", &tm);
+   strftime(sdt, sizeof(sdt), "%a %d-%b-%Y %H:%M:%S", &tm);
    ua->send_msg("%s\n", sdt);
    return 1;
 }
@@ -1297,7 +1395,8 @@ static int delete_cmd(UAContext *ua, const char *cmd)
       NT_("jobid"),
       NULL};
 
-   if (!open_client_db(ua)) {
+   /* Deleting large jobs can take time! */
+   if (!open_new_client_db(ua)) {
       return 1;
    }
 
@@ -1349,60 +1448,32 @@ static int delete_cmd(UAContext *ua, const char *cmd)
 static void delete_job(UAContext *ua)
 {
    int i;
-   JobId_t JobId;
-   char *s, *sep, *tok;
+   int JobId;               /* not JobId_t because it's unsigned and not compatible with sellist */
+   char buf[256];
+   sellist sl;
 
    i = find_arg_with_value(ua, NT_("jobid"));
    if (i >= 0) {
-      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, ',');
-         }
+      if (!sl.set_string(ua->argv[i], true)) {
+         ua->warning_msg("%s", sl.get_errmsg());
+         return;
+      }
 
-         /*
-          * 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);
-            }
+      if (sl.size() > 25 && (find_arg(ua, "yes") < 0)) {
+         bsnprintf(buf, sizeof(buf),
+                   _("Are you sure you want to delete %d JobIds ? (yes/no): "), sl.size());
+         if (!get_yesno(ua, buf)) {
+            return;
          }
+      }
 
-         free(s);
-      } else {
-         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]);
-         }
+      foreach_sellist(JobId, &sl) {
+         do_job_delete(ua, JobId);
       }
+
    } else if (!get_pint(ua, _("Enter JobId to delete: "))) {
       return;
+
    } else {
       JobId = ua->int64_val;
       do_job_delete(ua, JobId);
@@ -1410,54 +1481,6 @@ static void delete_job(UAContext *ua)
 }
 
 /*
- * 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;
-
-   tok2 = strchr(tok, '-');
-   if (!tok2) {
-      return false;
-   }
-
-   *tok2 = '\0';
-   tok2++;
-
-   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;
-}
-
-/*
  * do_job_delete now performs the actual delete operation atomically
  */
 static void do_job_delete(UAContext *ua, JobId_t JobId)
@@ -1589,8 +1612,7 @@ static void do_mount_cmd(UAContext *ua, const char *command)
       ua->send_msg("%s", sd->msg);
    }
    sd->signal(BNET_TERMINATE);
-   sd->close();
-   jcr->store_bsock = NULL;
+   free_bsock(ua->jcr->store_bsock);
 }
 
 /*
@@ -1699,7 +1721,7 @@ int wait_cmd(UAContext *ua, const char *cmd)
       return 1;
    }
 
-   i = find_arg_with_value(ua, NT_("timeout")); 
+   i = find_arg_with_value(ua, NT_("timeout"));
    if (i > 0 && ua->argv[i]) {
       stop_time = time(NULL) + str_to_int64(ua->argv[i]);
    }
@@ -1745,7 +1767,7 @@ int wait_cmd(UAContext *ua, const char *cmd)
       } else if (strcasecmp(ua->argk[i], "mount") == 0) {
          for (bool waiting=false; !waiting; ) {
             foreach_jcr(jcr) {
-               if (jcr->JobId != 0 && 
+               if (jcr->JobId != 0 &&
                    (jcr->JobStatus == JS_WaitMedia || jcr->JobStatus == JS_WaitMount)) {
                   waiting = true;
                   break;
@@ -1827,8 +1849,8 @@ int wait_cmd(UAContext *ua, const char *cmd)
    }
 
    ua->send_msg("JobId=%i\n", jobid) ;
-   ua->send_msg("JobStatus=%s (%c)\n", 
-            job_status_to_str(jobstatus), 
+   ua->send_msg("JobStatus=%s (%c)\n",
+            job_status_to_str(jobstatus),
             jobstatus) ;
 
    if (ua->gui || ua->api) {
@@ -1846,7 +1868,7 @@ static int help_cmd(UAContext *ua, const char *cmd)
    for (i=0; i<comsize; i++) {
       if (ua->argc == 2) {
          if (!strcasecmp(ua->argk[1], commands[i].key)) {
-            ua->send_msg(_("  %-13s %s\n\nArguments:\n\t%s\n"), commands[i].key, 
+            ua->send_msg(_("  %-13s %s\n\nArguments:\n\t%s\n"), commands[i].key,
                          commands[i].help, commands[i].usage);
             break;
          }
@@ -1890,7 +1912,7 @@ int qhelp_cmd(UAContext *ua, const char *cmd)
    return 1;
 }
 
-#if 1 
+#if 1
 static int version_cmd(UAContext *ua, const char *cmd)
 {
    ua->send_msg(_("%s Version: %s (%s) %s %s %s %s\n"), my_name, VERSION, BDATE,
@@ -1899,7 +1921,7 @@ static int version_cmd(UAContext *ua, const char *cmd)
 }
 #else
 /*
- *  Test code -- turned on only for debug testing 
+ *  Test code -- turned on only for debug testing
  */
 static int version_cmd(UAContext *ua, const char *cmd)
 {
@@ -1917,27 +1939,27 @@ static int version_cmd(UAContext *ua, const char *cmd)
 }
 #endif
 
-/* 
+/*
  * This call uses open_client_db() and force a
  * new dedicated connection to the catalog
  */
 bool open_new_client_db(UAContext *ua)
-{   
+{
    bool ret;
 
    /* Force a new dedicated connection */
-   close_db(ua);
    ua->force_mult_db_connections = true;
    ret = open_client_db(ua);
    ua->force_mult_db_connections = false;
+
    return ret;
 }
 
-/* 
+/*
  * This call explicitly checks for a catalog=xxx and
  *  if given, opens that catalog.  It also checks for
- *  client=xxx and if found, opens the catalog 
- *  corresponding to that client. If we still don't 
+ *  client=xxx and if found, opens the catalog
+ *  corresponding to that client. If we still don't
  *  have a catalog, look for a Job keyword and get the
  *  catalog from its client record.
  */
@@ -2020,9 +2042,20 @@ bool open_db(UAContext *ua)
 {
    bool mult_db_conn;
 
+   /* The force_mult_db_connections is telling us if we modify the
+    * private or the shared link
+    */
+   if (ua->force_mult_db_connections) {
+      ua->db = ua->private_db;
+
+   } else {
+      ua->db = ua->shared_db;
+   }
+
    if (ua->db) {
       return true;
    }
+
    if (!ua->catalog) {
       ua->catalog = get_catalog_resource(ua);
       if (!ua->catalog) {
@@ -2040,7 +2073,8 @@ bool open_db(UAContext *ua)
    ua->jcr->catalog = ua->catalog;
 
    Dmsg0(100, "UA Open database\n");
-   ua->db = db_init_database(ua->jcr, ua->catalog->db_driver, ua->catalog->db_name, 
+   ua->db = db_init_database(ua->jcr, ua->catalog->db_driver,
+                             ua->catalog->db_name,
                              ua->catalog->db_user,
                              ua->catalog->db_password, ua->catalog->db_address,
                              ua->catalog->db_port, ua->catalog->db_socket,
@@ -2055,8 +2089,17 @@ bool open_db(UAContext *ua)
       return false;
    }
    ua->jcr->db = ua->db;
+
+   /* Depending on the type of connection, we set the right variable */
+   if (ua->force_mult_db_connections) {
+      ua->private_db = ua->db;
+
+   } else {
+      ua->shared_db = ua->db;
+   }
+
    if (!ua->api) {
-      ua->send_msg(_("Using Catalog \"%s\"\n"), ua->catalog->name()); 
+      ua->send_msg(_("Using Catalog \"%s\"\n"), ua->catalog->name());
    }
    Dmsg1(150, "DB %s opened\n", ua->catalog->db_name);
    return true;
@@ -2064,11 +2107,19 @@ bool open_db(UAContext *ua)
 
 void close_db(UAContext *ua)
 {
-   if (ua->db) {
-      db_close_database(ua->jcr, ua->db);
-      ua->db = NULL;
-      if (ua->jcr) {
-         ua->jcr->db = NULL;
-      }
+   if (ua->jcr) {
+      ua->jcr->db = NULL;
+   }
+
+   if (ua->shared_db) {
+      db_close_database(ua->jcr, ua->shared_db);
+      ua->shared_db = NULL;
+   }
+
+   if (ua->private_db) {
+      db_close_database(ua->jcr, ua->private_db);
+      ua->private_db = NULL;
    }
+
+   ua->db = NULL;
 }
diff --git a/src/dird/ua_dotcmds.c b/src/dird/ua_dotcmds.c
index d78fa3f..a764d7d 100644
--- a/src/dird/ua_dotcmds.c
+++ b/src/dird/ua_dotcmds.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -60,6 +48,7 @@ static bool filesetscmd(UAContext *ua, const char *cmd);
 static bool clientscmd(UAContext *ua, const char *cmd);
 static bool msgscmd(UAContext *ua, const char *cmd);
 static bool poolscmd(UAContext *ua, const char *cmd);
+static bool schedulescmd(UAContext *ua, const char *cmd);
 static bool storagecmd(UAContext *ua, const char *cmd);
 static bool defaultscmd(UAContext *ua, const char *cmd);
 static bool typescmd(UAContext *ua, const char *cmd);
@@ -81,7 +70,10 @@ static bool dot_bvfs_versions(UAContext *ua, const char *cmd);
 static bool dot_bvfs_restore(UAContext *ua, const char *cmd);
 static bool dot_bvfs_cleanup(UAContext *ua, const char *cmd);
 static bool dot_bvfs_clear_cache(UAContext *ua, const char *cmd);
+static bool dot_bvfs_decode_lstat(UAContext *ua, const char *cmd);
+static bool dot_bvfs_get_volumes(UAContext *ua, const char *cmd);
 
+static bool putfile_cmd(UAContext *ua, const char *cmd);
 static bool api_cmd(UAContext *ua, const char *cmd);
 static bool sql_cmd(UAContext *ua, const char *cmd);
 static bool dot_quit_cmd(UAContext *ua, const char *cmd);
@@ -106,6 +98,8 @@ static struct cmdstruct commands[] = { /* help */  /* can be used in runscript *
  { NT_(".msgs"),       msgscmd,                  NULL,       false},
  { NT_(".pools"),      poolscmd,                 NULL,       true},
  { NT_(".quit"),       dot_quit_cmd,             NULL,       false},
+ { NT_(".putfile"),    putfile_cmd,              NULL,       false}, /* use @putfile */
+ { NT_(".schedule"),   schedulescmd,             NULL,       false},
  { NT_(".sql"),        sql_cmd,                  NULL,       false},
  { NT_(".status"),     dot_status_cmd,           NULL,       false},
  { NT_(".storage"),    storagecmd,               NULL,       true},
@@ -116,11 +110,13 @@ static struct cmdstruct commands[] = { /* help */  /* can be used in runscript *
  { NT_(".actiononpurge"),aopcmd,                 NULL,       true},
  { NT_(".bvfs_lsdirs"), dot_bvfs_lsdirs,         NULL,       true},
  { NT_(".bvfs_lsfiles"),dot_bvfs_lsfiles,        NULL,       true},
+ { NT_(".bvfs_get_volumes"),dot_bvfs_get_volumes,NULL,       true},
  { NT_(".bvfs_update"), dot_bvfs_update,         NULL,       true},
  { NT_(".bvfs_get_jobids"), dot_bvfs_get_jobids, NULL,       true},
  { NT_(".bvfs_versions"), dot_bvfs_versions,     NULL,       true},
- { NT_(".bvfs_restore"), dot_bvfs_restore,       NULL,       true},
- { NT_(".bvfs_cleanup"), dot_bvfs_cleanup,       NULL,       true},
+ { NT_(".bvfs_restore"),  dot_bvfs_restore,      NULL,       true},
+ { NT_(".bvfs_cleanup"),  dot_bvfs_cleanup,      NULL,       true},
+ { NT_(".bvfs_decode_lstat"),dot_bvfs_decode_lstat,NULL,     true},
  { NT_(".bvfs_clear_cache"),dot_bvfs_clear_cache,NULL,       false},
  { NT_(".types"),      typescmd,                 NULL,       false}
 };
@@ -129,7 +125,7 @@ static struct cmdstruct commands[] = { /* help */  /* can be used in runscript *
 /*
  * Execute a command from the UA
  */
-bool do_a_dot_command(UAContext *ua) 
+bool do_a_dot_command(UAContext *ua)
 {
    int i;
    int len;
@@ -178,6 +174,45 @@ bool do_a_dot_command(UAContext *ua)
    return ok;
 }
 
+
+static bool dot_bvfs_decode_lstat(UAContext *ua, const char *cmd)
+{
+   int32_t LinkFI;
+   struct stat sp;
+   POOL_MEM q;
+   int pos = find_arg_with_value(ua, "lstat");
+
+   if (pos > 0) {
+      for (char *p = ua->argv[pos] ; *p ; p++) {
+         if (! (B_ISALPHA(*p) || B_ISDIGIT(*p) || B_ISSPACE(*p) || *p == '/' || *p == '+' || *p == '-')) {
+            ua->error_msg("Can't accept %c in lstat\n", *p);
+            return true;
+         }
+      }
+
+      decode_stat(ua->argv[pos], &sp, sizeof(sp), &LinkFI);
+      Mmsg(q, "st_nlink=%lld\nst_mode=%lld\nst_uid=%lld\nst_gid=%lld\nst_size=%lld\n"
+               "st_blocks=%lld\nst_ino=%lld\nst_ctime=%lld\nst_mtime=%lld\nst_mtime=%lld\n"
+               "st_dev=%lld\nLinkFI=%lld\n",
+           (int64_t) sp.st_nlink,
+           (int64_t) sp.st_mode,
+           (int64_t) sp.st_uid,
+           (int64_t) sp.st_gid,
+           (int64_t) sp.st_size,
+           (int64_t) sp.st_blocks,
+           (int64_t) sp.st_ino,
+           (int64_t) sp.st_ctime,
+           (int64_t) sp.st_mtime,
+           (int64_t) sp.st_atime,
+           (int64_t) sp.st_dev,
+           (int64_t) LinkFI
+         );
+
+      ua->send_msg("%s", q.c_str());
+   }
+   return true;
+}
+
 static bool dot_bvfs_update(UAContext *ua, const char *cmd)
 {
    if (!open_new_client_db(ua)) {
@@ -187,21 +222,20 @@ 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])) {
       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->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);
    }
-   
-   close_db(ua);
+
    return true;
 }
 
 static bool dot_bvfs_clear_cache(UAContext *ua, const char *cmd)
 {
-   if (!open_new_client_db(ua)) {
+   if (!open_client_db(ua)) {
       return 1;
    }
 
@@ -214,7 +248,6 @@ static bool dot_bvfs_clear_cache(UAContext *ua, const char *cmd)
       ua->error_msg("Can't find 'yes' argument\n");
    }
 
-   close_db(ua);
    return true;
 }
 
@@ -226,7 +259,7 @@ static int bvfs_result_handler(void *ctx, int fields, char **row)
    char *fileid=row[BVFS_FileId];
    char *lstat=row[BVFS_LStat];
    char *jobid=row[BVFS_JobId];
-   
+
    char empty[] = "A A A A A A A A A A A A A A";
    char zero[] = "0";
 
@@ -249,13 +282,17 @@ static int bvfs_result_handler(void *ctx, int fields, char **row)
    } else if (bvfs_is_version(row)) {
       ua->send_msg("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", row[BVFS_PathId],
                    row[BVFS_FilenameId], fileid, jobid,
-                   lstat, row[BVFS_Md5], row[BVFS_VolName], 
+                   lstat, row[BVFS_Md5], row[BVFS_VolName],
                    row[BVFS_VolInchanger]);
 
    } else if (bvfs_is_file(row)) {
       ua->send_msg("%s\t%s\t%s\t%s\t%s\t%s\n", row[BVFS_PathId],
                    row[BVFS_FilenameId], fileid, jobid,
                    lstat, row[BVFS_Name]);
+
+   } else if (bvfs_is_volume_list(row)) {
+      ua->send_msg("%s\t%s\n", row[BVFS_VolName],
+                   row[BVFS_VolInchanger]);
    }
 
    return 0;
@@ -263,8 +300,8 @@ static int bvfs_result_handler(void *ctx, int fields, char **row)
 
 static bool bvfs_parse_arg_version(UAContext *ua,
                                    char **client,
-                                   DBId_t *fnid, 
-                                   bool *versions, 
+                                   FileId_t *fnid,
+                                   bool *versions,
                                    bool *copies)
 {
    *fnid=0;
@@ -294,7 +331,7 @@ static bool bvfs_parse_arg_version(UAContext *ua,
    return (*client && *fnid > 0);
 }
 
-static bool bvfs_parse_arg(UAContext *ua, 
+static bool bvfs_parse_arg(UAContext *ua,
                            DBId_t *pathid, char **path, char **jobid,
                            char **username,
                            int *limit, int *offset)
@@ -303,8 +340,10 @@ static bool bvfs_parse_arg(UAContext *ua,
    *limit=2000;
    *offset=0;
    *path=NULL;
-   *jobid=NULL;
    *username=NULL;
+   if (jobid) {
+      *jobid=NULL;
+   }
 
    for (int i=1; i<ua->argc; i++) {
       if (strcasecmp(ua->argk[i], NT_("pathid")) == 0) {
@@ -320,8 +359,8 @@ static bool bvfs_parse_arg(UAContext *ua,
       if (strcasecmp(ua->argk[i], NT_("username")) == 0) {
          *username = ua->argv[i];
       }
-      
-      if (strcasecmp(ua->argk[i], NT_("jobid")) == 0) {
+
+      if (jobid && strcasecmp(ua->argk[i], NT_("jobid")) == 0) {
          if (is_a_number_list(ua->argv[i])) {
             *jobid = ua->argv[i];
          }
@@ -340,11 +379,11 @@ static bool bvfs_parse_arg(UAContext *ua,
       }
    }
 
-   if (!((*pathid || *path) && *jobid)) {
+   if (jobid && *jobid == NULL) {
       return false;
    }
 
-   if (!open_client_db(ua)) {
+   if (!(*pathid || *path)) {
       return false;
    }
 
@@ -357,7 +396,9 @@ static bool dot_bvfs_cleanup(UAContext *ua, const char *cmd)
 {
    int i;
    if ((i = find_arg_with_value(ua, "path")) >= 0) {
-      open_client_db(ua);
+      if (!open_client_db(ua)) {
+         return 1;
+      }
       Bvfs fs(ua->jcr, ua->db);
       fs.drop_restore_list(ua->argv[i]);
    }
@@ -382,6 +423,10 @@ static bool dot_bvfs_restore(UAContext *ua, const char *cmd)
       return true;              /* not enough param */
    }
 
+   if (!open_new_client_db(ua)) {
+      return true;
+   }
+
    Bvfs fs(ua->jcr, ua->db);
    fs.set_username(username);
    fs.set_jobids(jobid);
@@ -401,10 +446,63 @@ static bool dot_bvfs_restore(UAContext *ua, const char *cmd)
    } else {
       ua->error_msg("Can't create restore list\n");
    }
+
    return true;
 }
 
-/* 
+/*
+ * .bvfs_get_volumes [path=/ filename=test jobid=1 | fileid=1]
+ * Vol001
+ * Vol002
+ * Vol003
+ */
+static bool dot_bvfs_get_volumes(UAContext *ua, const char *cmd)
+{
+   DBId_t pathid=0;
+   FileId_t fileid=0;
+   char  *path=NULL, *jobid=NULL, *username=NULL;
+   char  *filename=NULL;
+   int    limit=2000, offset=0;
+   int    i;
+
+   bvfs_parse_arg(ua, &pathid, &path, &jobid, &username, &limit, &offset);
+
+   if ((i = find_arg_with_value(ua, "filename")) >= 0) {
+      if (!(jobid && (path || pathid))) { /* Need JobId and Path/PathId */
+         ua->error_msg("Can't find jobid, pathid or path argument\n");
+         return true;
+      }
+
+      filename = ua->argv[i];
+
+   } else if ((i = find_arg_with_value(ua, "fileid")) >= 0) {
+      if (!is_a_number(ua->argv[i])) {
+         ua->error_msg("Expecting integer for FileId, got %s\n", ua->argv[i]);
+         return true;
+      }
+      fileid = str_to_int64(ua->argv[i]);
+   }
+
+   if (!open_new_client_db(ua)) {
+      return 1;
+   }
+
+   Bvfs fs(ua->jcr, ua->db);
+   fs.set_username(username);
+   fs.set_handler(bvfs_result_handler, ua);
+   fs.set_limit(limit);
+
+   if (filename) {
+      /* TODO */
+
+   } else {
+      fs.get_volumes(fileid);
+   }
+
+   return true;
+}
+
+/*
  * .bvfs_lsfiles jobid=1,2,3,4 pathid=10
  * .bvfs_lsfiles jobid=1,2,3,4 path=/
  */
@@ -413,7 +511,7 @@ static bool dot_bvfs_lsfiles(UAContext *ua, const char *cmd)
    DBId_t pathid=0;
    int limit=2000, offset=0;
    char *path=NULL, *jobid=NULL, *username=NULL;
-   char *pattern=NULL;
+   char *pattern=NULL, *filename=NULL;
    int i;
 
    if (!bvfs_parse_arg(ua, &pathid, &path, &jobid, &username,
@@ -425,21 +523,31 @@ static bool dot_bvfs_lsfiles(UAContext *ua, const char *cmd)
    if ((i = find_arg_with_value(ua, "pattern")) >= 0) {
       pattern = ua->argv[i];
    }
+   if ((i = find_arg_with_value(ua, "filename")) >= 0) {
+      filename = ua->argv[i];
+   }
+
+   if (!open_new_client_db(ua)) {
+      return 1;
+   }
 
    Bvfs fs(ua->jcr, ua->db);
    fs.set_username(username);
-   fs.set_jobids(jobid);   
+   fs.set_jobids(jobid);
    fs.set_handler(bvfs_result_handler, ua);
    fs.set_limit(limit);
    if (pattern) {
       fs.set_pattern(pattern);
    }
+   if (filename) {
+      fs.set_filename(filename);
+   }
    if (pathid) {
       fs.ch_dir(pathid);
    } else {
       fs.ch_dir(path);
    }
-   
+
    fs.set_offset(offset);
 
    fs.ls_files();
@@ -447,7 +555,7 @@ static bool dot_bvfs_lsfiles(UAContext *ua, const char *cmd)
    return true;
 }
 
-/* 
+/*
  * .bvfs_lsdirs jobid=1,2,3,4 pathid=10
  * .bvfs_lsdirs jobid=1,2,3,4 path=/
  * .bvfs_lsdirs jobid=1,2,3,4 path=
@@ -465,9 +573,13 @@ static bool dot_bvfs_lsdirs(UAContext *ua, const char *cmd)
       return true;              /* not enough param */
    }
 
+   if (!open_new_client_db(ua)) {
+      return 1;
+   }
+
    Bvfs fs(ua->jcr, ua->db);
    fs.set_username(username);
-   fs.set_jobids(jobid);   
+   fs.set_jobids(jobid);
    fs.set_limit(limit);
    fs.set_handler(bvfs_result_handler, ua);
 
@@ -485,20 +597,21 @@ static bool dot_bvfs_lsdirs(UAContext *ua, const char *cmd)
    return true;
 }
 
-/* 
- * .bvfs_versions jobid=x fnid=10 pathid=10 copies versions
- * (jobid isn't used)
+/*
+ * .bvfs_versions fnid=10 pathid=10 copies versions
+ *
  */
 static bool dot_bvfs_versions(UAContext *ua, const char *cmd)
 {
-   DBId_t pathid=0, fnid=0;
+   DBId_t pathid=0;
+   FileId_t fnid=0;
    int limit=2000, offset=0;
-   char *path=NULL, *jobid=NULL, *client=NULL, *username=NULL;
+   char *path=NULL, *client=NULL, *username=NULL;
    bool copies=false, versions=false;
-   if (!bvfs_parse_arg(ua, &pathid, &path, &jobid, &username,
+   if (!bvfs_parse_arg(ua, &pathid, &path, NULL, &username,
                        &limit, &offset))
    {
-      ua->error_msg("Can't find jobid, pathid or path argument\n");
+      ua->error_msg("Can't find pathid or path argument\n");
       return true;              /* not enough param */
    }
 
@@ -508,6 +621,10 @@ static bool dot_bvfs_versions(UAContext *ua, const char *cmd)
       return true;              /* not enough param */
    }
 
+   if (!open_new_client_db(ua)) {
+      return 1;
+   }
+
    Bvfs fs(ua->jcr, ua->db);
    fs.set_limit(limit);
    fs.set_see_all_versions(versions);
@@ -521,25 +638,39 @@ static bool dot_bvfs_versions(UAContext *ua, const char *cmd)
 
 /* .bvfs_get_jobids jobid=1
  *  -> returns needed jobids to restore
+ * .bvfs_get_jobids ujobid=xxx only
+ *  -> returns the jobid of the job
+ * .bvfs_get_jobids jobid=1 jobname
+ *  -> returns the jobname
+ * .bvfs_get_jobids client=xxx
+ *  -> returns all jobid for the client
  * .bvfs_get_jobids jobid=1 all
  *  -> returns needed jobids to restore with all filesets a JobId=1 time
+ * .bvfs_get_jobids job=XXXXX
+ *  -> returns needed jobids to restore with the jobname
  * .bvfs_get_jobids ujobid=JobName
  *  -> returns needed jobids to restore
  */
 static bool dot_bvfs_get_jobids(UAContext *ua, const char *cmd)
 {
    JOB_DBR jr;
+   memset(&jr, 0, sizeof(JOB_DBR));
+
    db_list_ctx jobids, tempids;
    int pos;
    char ed1[50];
    POOL_MEM query;
    dbid_list ids;               /* Store all FileSetIds for this client */
 
-   if (!open_client_db(ua)) {
+   if (!open_new_client_db(ua)) {
       return true;
    }
 
-   memset(&jr, 0, sizeof(JOB_DBR));
+   Bvfs fs(ua->jcr, ua->db);
+
+   if ((pos = find_arg_with_value(ua, "username")) >= 0) {
+      fs.set_username(ua->argv[pos]);
+   }
 
    if ((pos = find_arg_with_value(ua, "ujobid")) >= 0) {
       bstrncpy(jr.Job, ua->argv[pos], sizeof(jr.Job));
@@ -547,6 +678,73 @@ static bool dot_bvfs_get_jobids(UAContext *ua, const char *cmd)
 
    if ((pos = find_arg_with_value(ua, "jobid")) >= 0) {
       jr.JobId = str_to_int64(ua->argv[pos]);
+
+   /* Guess JobId from Job name, take the last successful jobid */
+   } else if ((pos = find_arg_with_value(ua, "job")) >= 0) {
+      JOB *job;
+      bool ret;
+      int32_t JobId=0;
+
+      bstrncpy(jr.Name, ua->argv[pos], MAX_NAME_LENGTH);
+      /* TODO: enhance this function to take client and/or fileset as argument*/
+
+      job = GetJobResWithName(jr.Name);
+      if (!job) {
+         ua->error_msg(_("Unable to get Job record for Job=%s\n"), jr.Name);
+         return true;
+      }
+      db_lock(ua->db);
+      Mmsg(ua->db->cmd,
+      "SELECT JobId "
+        "FROM Job JOIN FileSet USING (FileSetId) JOIN Client USING (ClientId) "
+         "WHERE Client.Name = '%s' AND FileSet.FileSet = '%s' "
+           "AND Job.Type = 'B' AND Job.JobStatus IN ('T', 'W') "
+         "ORDER By JobTDate DESC LIMIT 1",
+           job->client->name(), job->fileset->name());
+      ret = db_sql_query(ua->db, ua->db->cmd, db_int_handler, &JobId);
+      db_unlock(ua->db);
+
+      if (!ret) {
+         ua->error_msg(_("Unable to get last Job record for Job=%s\n"),jr.Name);
+      }
+
+      jr.JobId = JobId;
+
+   /* Get JobId from ujobid */
+   } else if ((pos = find_arg_with_value(ua, "ujobid")) >= 0) {
+      bstrncpy(jr.Job, ua->argv[pos], MAX_NAME_LENGTH);
+
+   /* Return all backup jobid for a client */
+   } else if ((pos = find_arg_with_value(ua, "client")) >= 0) {
+      CLIENT *cli;
+      bool ret;
+
+      cli = GetClientResWithName(ua->argv[pos]);
+      if (!cli) {
+         ua->error_msg(_("Unable to get Client record for Client=%s\n"),
+                       ua->argv[pos]);
+         return true;
+      }
+      db_lock(ua->db);
+      Mmsg(ua->db->cmd,
+      "SELECT JobId "
+        "FROM Job JOIN Client USING (ClientId) "
+         "WHERE Client.Name = '%s' "
+           "AND Job.Type = 'B' AND Job.JobStatus IN ('T', 'W') "
+         "ORDER By JobTDate ASC",
+           cli->name());
+      ret = db_sql_query(ua->db, ua->db->cmd, db_list_handler, &jobids);
+      db_unlock(ua->db);
+
+      if (!ret) {
+         ua->error_msg(_("Unable to get last Job record for Client=%s\n"),
+                       cli->name());
+      }
+
+      /* Apply the ACL filter on JobIds */
+      fs.set_jobids(jobids.list);
+      ua->send_msg("%s\n", fs.get_jobids());
+      return true;
    }
 
    if (!db_get_job_record(ua->jcr, ua->db, &jr)) {
@@ -555,9 +753,24 @@ static bool dot_bvfs_get_jobids(UAContext *ua, const char *cmd)
       return true;
    }
 
-   /* When in level base, we don't rely on any Full/Incr/Diff */
-   if (jr.JobLevel == L_BASE) {
-      ua->send_msg("%s\n", edit_int64(jr.JobId, ed1));
+   /* Display only the requested jobid or
+    * When in level base, we don't rely on any Full/Incr/Diff
+    */
+   if (find_arg(ua, "only") > 0 || jr.JobLevel == L_BASE) {
+      /* Apply the ACL filter on JobIds */
+      fs.set_jobid(jr.JobId);
+      ua->send_msg("%s\n", fs.get_jobids());
+      return true;
+   }
+
+   /* Display only the requested job name
+    */
+   if (find_arg(ua, "jobname") > 0) {
+      /* Apply the ACL filter on JobIds */
+      fs.set_jobid(jr.JobId);
+      if (str_to_int64(fs.get_jobids()) == (int64_t)jr.JobId) {
+         ua->send_msg("%s\n", jr.Job);
+      }
       return true;
    }
 
@@ -584,7 +797,8 @@ static bool dot_bvfs_get_jobids(UAContext *ua, const char *cmd)
       jobids.add(tempids);
    }
 
-   ua->send_msg("%s\n", jobids.list);
+   fs.set_jobids(jobids.list);
+   ua->send_msg("%s\n", fs.get_jobids());
    return true;
 }
 
@@ -614,7 +828,7 @@ static void do_storage_cmd(UAContext *ua, STORE *store, const char *cmd)
    BSOCK *sd;
    JCR *jcr = ua->jcr;
    USTORE lstore;
-   
+
    lstore.store = store;
    pm_strcpy(lstore.store_source, _("unknown source"));
    set_wstorage(jcr, &lstore);
@@ -632,8 +846,7 @@ static void do_storage_cmd(UAContext *ua, STORE *store, const char *cmd)
       ua->send_msg("%s", sd->msg);
    }
    sd->signal(BNET_TERMINATE);
-   sd->close();
-   jcr->store_bsock = NULL;
+   free_bsock(ua->jcr->store_bsock);
    return;
 }
 
@@ -658,8 +871,7 @@ static void do_client_cmd(UAContext *ua, CLIENT *client, const char *cmd)
       ua->send_msg("%s", fd->msg);
    }
    fd->signal(BNET_TERMINATE);
-   fd->close();
-   ua->jcr->file_bsock = NULL;
+   free_bsock(ua->jcr->file_bsock);
    return;
 }
 
@@ -710,7 +922,7 @@ static bool admin_cmds(UAContext *ua, const char *cmd)
             client = select_client_resource(ua);
          }
       }
-   
+
       if (strcasecmp(ua->argk[i], NT_("store")) == 0 ||
           strcasecmp(ua->argk[i], NT_("storage")) == 0 ||
           strcasecmp(ua->argk[i], NT_("sd")) == 0) {
@@ -760,7 +972,7 @@ static bool admin_cmds(UAContext *ua, const char *cmd)
       if (strncmp(remote_cmd, ".die", 4) == 0) {
          if (do_deadlock) {
             ua->send_msg(_("The Director will generate a deadlock.\n"));
-            P(mutex); 
+            P(mutex);
             P(mutex);
          }
          ua->send_msg(_("The Director will segment fault.\n"));
@@ -791,7 +1003,77 @@ static bool admin_cmds(UAContext *ua, const char *cmd)
 
 #endif
 
-/* 
+/*
+ * Send a file to the director from bconsole @putfile command
+ * The .putfile can not be used directly.
+ */
+static bool putfile_cmd(UAContext *ua, const char *cmd)
+{
+   int         pos, i, pnl, fnl;
+   bool        ok = true;
+   POOLMEM    *name = get_pool_memory(PM_FNAME);
+   POOLMEM    *path = get_pool_memory(PM_FNAME);
+   POOLMEM    *fname= get_pool_memory(PM_FNAME);
+   const char *key = "putfile";
+   FILE       *fp = NULL;
+
+   if ((pos = find_arg_with_value(ua, "key")) > 0) {
+      /* Check the string if the string is valid */
+      for (i=0; ua->argv[pos][i] && isalnum(ua->argv[pos][i]) && i < 16; i++);
+
+      if (ua->argv[pos][i] == 0) {
+         key = ua->argv[pos];
+
+      } else {
+         ua->error_msg("Invalid key name for putfile command");
+         ok = false;
+         goto bail_out;
+      }
+   }
+
+   /* the (intptr_t)ua will allow one file per console session */
+   make_unique_filename(&name, (intptr_t)ua, (char *)key);
+
+   fp = fopen(name, "w");
+   if (!fp) {
+      berrno be;
+      ua->error_msg("Unable to open destination file. ERR=%s\n",
+                    be.bstrerror(errno));
+      ok = false;
+      goto bail_out;
+   }
+
+   while (ua->UA_sock->recv() > 0) {
+      if (fwrite(ua->UA_sock->msg, ua->UA_sock->msglen, 1, fp) != 1) {
+         berrno be;
+         ua->error_msg("Unable to write to the destination file. ERR=%s\n",
+                       be.bstrerror(errno));
+         ok = false;
+         /* TODO: Check if we need to quit here (data will still be in the
+          * buffer...) */
+      }
+   }
+
+   split_path_and_filename(name, &path, &pnl, &fname, &fnl);
+
+bail_out:
+   if (ok) {
+      ua->send_msg("OK\n");
+
+   } else {
+      ua->send_msg("ERROR\n");
+   }
+
+   free_pool_memory(name);
+   free_pool_memory(path);
+   free_pool_memory(fname);
+   if (fp) {
+      fclose(fp);
+   }
+   return true;
+}
+
+/*
  * Can use an argument to filter on JobType
  * .jobs [type=B]
  */
@@ -843,7 +1125,7 @@ static bool catalogscmd(UAContext *ua, const char *cmd)
 
 static bool clientscmd(UAContext *ua, const char *cmd)
 {
-   CLIENT *client;       
+   CLIENT *client;
    LockRes();
    foreach_res(client, R_CLIENT) {
       if (acl_access_ok(ua, Client_ACL, client->name())) {
@@ -867,7 +1149,7 @@ static bool msgscmd(UAContext *ua, const char *cmd)
 
 static bool poolscmd(UAContext *ua, const char *cmd)
 {
-   POOL *pool;       
+   POOL *pool;
    LockRes();
    foreach_res(pool, R_POOL) {
       if (acl_access_ok(ua, Pool_ACL, pool->name())) {
@@ -878,6 +1160,19 @@ static bool poolscmd(UAContext *ua, const char *cmd)
    return true;
 }
 
+static bool schedulescmd(UAContext *ua, const char *cmd)
+{
+   SCHED *sched;
+   LockRes();
+   foreach_res(sched, R_SCHEDULE) {
+      if (acl_access_ok(ua, Schedule_ACL, sched->name())) {
+         ua->send_msg("%s\n", sched->name());
+      }
+   }
+   UnlockRes();
+   return true;
+}
+
 static bool storagecmd(UAContext *ua, const char *cmd)
 {
    STORE *store;
@@ -919,8 +1214,17 @@ static bool typescmd(UAContext *ua, const char *cmd)
  */
 static bool api_cmd(UAContext *ua, const char *cmd)
 {
-   if (ua->argc == 2) {
+   int i;
+   if (ua->argc >= 2) {
       ua->api = atoi(ua->argk[1]);
+
+      /* Get output configuration options such as time format or separator */
+      if ((i = find_arg_with_value(ua, "api_opts")) > 0) {
+         bstrncpy(ua->api_opts, ua->argv[i], sizeof(ua->api_opts));
+
+      } else {
+         *ua->api_opts = 0;
+      }
    } else {
       ua->api = 1;
    }
@@ -936,7 +1240,7 @@ static int client_backups_handler(void *ctx, int num_field, char **row)
 }
 
 /*
- * Return the backups for this client 
+ * Return the backups for this client
  *
  *  .backups client=xxx fileset=yyy
  *
@@ -946,7 +1250,7 @@ static bool backupscmd(UAContext *ua, const char *cmd)
    if (!open_client_db(ua)) {
       return true;
    }
-   if (ua->argc != 3 || strcmp(ua->argk[1], "client") != 0 || 
+   if (ua->argc != 3 || strcmp(ua->argk[1], "client") != 0 ||
        strcmp(ua->argk[2], "fileset") != 0) {
       return true;
    }
@@ -991,7 +1295,7 @@ static int sql_handler(void *ctx, int num_field, char **row)
 static bool sql_cmd(UAContext *ua, const char *cmd)
 {
    int index;
-   if (!open_client_db(ua)) {
+   if (!open_new_client_db(ua)) {
       return true;
    }
    index = find_arg_with_value(ua, "query");
@@ -1006,7 +1310,7 @@ static bool sql_cmd(UAContext *ua, const char *cmd)
    }
    return true;
 }
-      
+
 static int one_handler(void *ctx, int num_field, char **row)
 {
    UAContext *ua = (UAContext *)ctx;
@@ -1019,9 +1323,9 @@ static bool mediatypescmd(UAContext *ua, const char *cmd)
    if (!open_client_db(ua)) {
       return true;
    }
-   if (!db_sql_query(ua->db, 
+   if (!db_sql_query(ua->db,
                   "SELECT DISTINCT MediaType FROM MediaType ORDER BY MediaType",
-                  one_handler, (void *)ua)) 
+                  one_handler, (void *)ua))
    {
       ua->error_msg(_("List MediaType failed: ERR=%s\n"), db_strerror(ua->db));
    }
@@ -1033,9 +1337,9 @@ static bool mediacmd(UAContext *ua, const char *cmd)
    if (!open_client_db(ua)) {
       return true;
    }
-   if (!db_sql_query(ua->db, 
+   if (!db_sql_query(ua->db,
                   "SELECT DISTINCT Media.VolumeName FROM Media ORDER BY VolumeName",
-                  one_handler, (void *)ua)) 
+                  one_handler, (void *)ua))
    {
       ua->error_msg(_("List Media failed: ERR=%s\n"), db_strerror(ua->db));
    }
@@ -1047,9 +1351,9 @@ static bool locationscmd(UAContext *ua, const char *cmd)
    if (!open_client_db(ua)) {
       return true;
    }
-   if (!db_sql_query(ua->db, 
+   if (!db_sql_query(ua->db,
                   "SELECT DISTINCT Location FROM Location ORDER BY Location",
-                  one_handler, (void *)ua)) 
+                  one_handler, (void *)ua))
    {
       ua->error_msg(_("List Location failed: ERR=%s\n"), db_strerror(ua->db));
    }
@@ -1112,7 +1416,7 @@ static bool defaultscmd(UAContext *ua, const char *cmd)
       return true;
    }
 
-   /* Job defaults */   
+   /* Job defaults */
    if (strcmp(ua->argk[1], "job") == 0) {
       if (!acl_access_ok(ua, Job_ACL, ua->argv[1])) {
          return true;
@@ -1123,7 +1427,7 @@ static bool defaultscmd(UAContext *ua, const char *cmd)
          ua->send_msg("job=%s", job->name());
          ua->send_msg("pool=%s", job->pool->name());
          ua->send_msg("messages=%s", job->messages->name());
-         ua->send_msg("client=%s", job->client->name());
+         ua->send_msg("client=%s", job->client?job->client->name():_("*None*"));
          get_job_storage(&store, job, NULL);
          ua->send_msg("storage=%s", store.store->name());
          ua->send_msg("where=%s", job->RestoreWhere?job->RestoreWhere:"");
@@ -1131,13 +1435,13 @@ static bool defaultscmd(UAContext *ua, const char *cmd)
          ua->send_msg("type=%s", job_type_to_str(job->JobType));
          ua->send_msg("fileset=%s", job->fileset->name());
          ua->send_msg("enabled=%d", job->enabled);
-         ua->send_msg("catalog=%s", job->client->catalog->name());
+         ua->send_msg("catalog=%s", job->client?job->client->catalog->name():_("*None*"));
       }
-   } 
+   }
    /* Client defaults */
    else if (strcmp(ua->argk[1], "client") == 0) {
       if (!acl_access_ok(ua, Client_ACL, ua->argv[1])) {
-         return true;   
+         return true;
       }
       client = (CLIENT *)GetResWithName(R_CLIENT, ua->argv[1]);
       if (client) {
diff --git a/src/dird/ua_input.c b/src/dird/ua_input.c
index d264d10..421a9e6 100644
--- a/src/dird/ua_input.c
+++ b/src/dird/ua_input.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -42,18 +30,18 @@
 
 /* Exported functions */
 
-/* 
+/*
  * If subprompt is set, we send a BNET_SUB_PROMPT signal otherwise
  *   send a BNET_TEXT_INPUT signal.
  */
-int get_cmd(UAContext *ua, const char *prompt, bool subprompt)
+bool get_cmd(UAContext *ua, const char *prompt, bool subprompt)
 {
    BSOCK *sock = ua->UA_sock;
    int stat;
 
    ua->cmd[0] = 0;
    if (!sock || ua->batch) {          /* No UA or batch mode */
-      return 0;
+      return false;
    }
    if (!subprompt && ua->api) {
       sock->signal(BNET_TEXT_INPUT);
@@ -67,8 +55,8 @@ int get_cmd(UAContext *ua, const char *prompt, bool subprompt)
       if (stat == BNET_SIGNAL) {
          continue;                    /* ignore signals */
       }
-      if (is_bnet_stop(sock)) {
-         return 0;                    /* error or terminate */
+      if (sock->is_stop()) {
+         return false;               /* error or terminate */
       }
       pm_strcpy(ua->cmd, sock->msg);
       strip_trailing_junk(ua->cmd);
@@ -77,11 +65,33 @@ int get_cmd(UAContext *ua, const char *prompt, bool subprompt)
       }
       /* Lone dot => break */
       if (ua->cmd[0] == '.' && ua->cmd[1] == 0) {
-         return 0;
+         return false;
       }
       break;
    }
-   return 1;
+   return true;
+}
+
+/*
+ * Get a selection list
+ *  We get a command from the user, scan it, then
+ *  return when OK
+ * Returns true if OK
+ *         false if error
+ */
+bool get_selection_list(UAContext *ua, sellist &sl,
+                        const char *prompt, bool subprompt)
+{
+   for ( ;; ) {
+      if (!get_cmd(ua, prompt, subprompt)) {
+         return false;
+      }
+      if (!sl.set_string(ua->cmd, true)) {
+         ua->send_msg("%s", sl.get_errmsg());
+         continue;
+      }
+      return true;
+   }
 }
 
 /*
@@ -171,12 +181,12 @@ bool get_yesno(UAContext *ua, const char *prompt)
    }
 }
 
-/* 
+/*
  *  Gets an Enabled value => 0, 1, 2, yes, no, archived
  *  Returns: 0, 1, 2 if OK
  *           -1 on error
  */
-int get_enabled(UAContext *ua, const char *val) 
+int get_enabled(UAContext *ua, const char *val)
 {
    int Enabled = -1;
 
@@ -184,14 +194,14 @@ int get_enabled(UAContext *ua, const char *val)
      Enabled = 1;
    } else if (strcasecmp(val, "no") == 0 || strcasecmp(val, "false") == 0) {
       Enabled = 0;
-   } else if (strcasecmp(val, "archived") == 0) { 
+   } else if (strcasecmp(val, "archived") == 0) {
       Enabled = 2;
    } else {
       Enabled = atoi(val);
    }
    if (Enabled < 0 || Enabled > 2) {
       ua->error_msg(_("Invalid Enabled value, it must be yes, no, archived, 0, 1, or 2\n"));
-      return -1;     
+      return -1;
    }
    return Enabled;
 }
diff --git a/src/dird/ua_label.c b/src/dird/ua_label.c
index 93899cb..012f337 100644
--- a/src/dird/ua_label.c
+++ b/src/dird/ua_label.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -52,8 +40,8 @@ static bool send_label_request(UAContext *ua, MEDIA_DBR *mr, MEDIA_DBR *omr,
 static vol_list_t *get_vol_list_from_SD(UAContext *ua, bool scan);
 static void free_vol_list(vol_list_t *vol_list);
 static bool is_cleaning_tape(UAContext *ua, MEDIA_DBR *mr, POOL_DBR *pr);
-static BSOCK *open_sd_bsock(UAContext *ua);
-static void close_sd_bsock(UAContext *ua);
+BSOCK *open_sd_bsock(UAContext *ua);
+void close_sd_bsock(UAContext *ua);
 static char *get_volume_name_from_SD(UAContext *ua, int Slot, int drive);
 static int get_num_slots_from_SD(UAContext *ua);
 
@@ -314,8 +302,9 @@ void update_slots(UAContext *ua)
    db_unlock(ua->db);
 
 bail_out:
-
-   free_vol_list(vol_list);
+   if (vol_list) {
+      free_vol_list(vol_list);
+   }
    free(slot_list);
    close_sd_bsock(ua);
 
@@ -378,6 +367,7 @@ static int do_label(UAContext *ua, const char *cmd, int relabel)
       i = find_arg_with_value(ua, "oldvolume");
       if (i >= 0) {
          bstrncpy(omr.VolumeName, ua->argv[i], sizeof(omr.VolumeName));
+         omr.MediaId = 0;
          if (db_get_media_record(ua->jcr, ua->db, &omr)) {
             goto checkVol;
          }
@@ -415,10 +405,8 @@ checkName:
          continue;
       }
 
-      /* Search by Media name so set VolumeName and clear MediaId. */
-      mr.MediaId = 0;
       bstrncpy(mr.VolumeName, ua->cmd, sizeof(mr.VolumeName));
-
+      mr.MediaId = 0;
       /* If VolBytes are zero the Volume is not labeled */
       if (db_get_media_record(ua->jcr, ua->db, &mr)) {
          if (mr.VolBytes != 0) {
@@ -484,9 +472,9 @@ checkName:
          bstrncpy(dev_name, store.store->dev_name(), sizeof(dev_name));
          ua->info_msg(_("Requesting to mount %s ...\n"), dev_name);
          bash_spaces(dev_name);
-         bnet_fsend(sd, "mount %s drive=%d", dev_name, drive);
+         sd->fsend("mount %s drive=%d", dev_name, drive);
          unbash_spaces(dev_name);
-         while (bnet_recv(sd) >= 0) {
+         while (sd->recv() >= 0) {
             ua->send_msg("%s", sd->msg);
             /* Here we can get
              *  3001 OK mount. Device=xxx      or
@@ -525,7 +513,7 @@ static void label_from_barcodes(UAContext *ua, int drive)
    char *slot_list;
    int max_slots;
 
-  
+
    max_slots = get_num_slots_from_SD(ua);
    if (max_slots <= 0) {
       ua->warning_msg(_("No slots in changer to scan.\n"));
@@ -698,14 +686,14 @@ static bool send_label_request(UAContext *ua, MEDIA_DBR *mr, MEDIA_DBR *omr,
       bash_spaces(omr->VolumeName);
       sd->fsend("relabel %s OldName=%s NewName=%s PoolName=%s "
                      "MediaType=%s Slot=%d drive=%d",
-                 dev_name, omr->VolumeName, mr->VolumeName, pr->Name, 
+                 dev_name, omr->VolumeName, mr->VolumeName, pr->Name,
                  mr->MediaType, mr->Slot, drive);
       ua->send_msg(_("Sending relabel command from \"%s\" to \"%s\" ...\n"),
          omr->VolumeName, mr->VolumeName);
    } else {
       sd->fsend("label %s VolumeName=%s PoolName=%s MediaType=%s "
                      "Slot=%d drive=%d",
-                 dev_name, mr->VolumeName, pr->Name, mr->MediaType, 
+                 dev_name, mr->VolumeName, pr->Name, mr->MediaType,
                  mr->Slot, drive);
       ua->send_msg(_("Sending label command for Volume \"%s\" Slot %d ...\n"),
          mr->VolumeName, mr->Slot);
@@ -766,30 +754,6 @@ static bool send_label_request(UAContext *ua, MEDIA_DBR *mr, MEDIA_DBR *omr,
    return ok;
 }
 
-static BSOCK *open_sd_bsock(UAContext *ua)
-{
-   STORE *store = ua->jcr->wstore;
-
-   if (!ua->jcr->store_bsock) {
-      ua->send_msg(_("Connecting to Storage daemon %s at %s:%d ...\n"),
-         store->name(), store->address, store->SDport);
-      if (!connect_to_storage_daemon(ua->jcr, 10, SDConnectTimeout, 1)) {
-         ua->error_msg(_("Failed to connect to Storage daemon.\n"));
-         return NULL;
-      }
-   }
-   return ua->jcr->store_bsock;
-}
-
-static void close_sd_bsock(UAContext *ua)
-{
-   if (ua->jcr->store_bsock) {
-      bnet_sig(ua->jcr->store_bsock, BNET_TERMINATE);
-      bnet_close(ua->jcr->store_bsock);
-      ua->jcr->store_bsock = NULL;
-   }
-}
-
 static char *get_volume_name_from_SD(UAContext *ua, int Slot, int drive)
 {
    STORE *store = ua->jcr->wstore;
@@ -847,10 +811,10 @@ static vol_list_t *get_vol_list_from_SD(UAContext *ua, bool scan)
    bstrncpy(dev_name, store->dev_name(), sizeof(dev_name));
    bash_spaces(dev_name);
    /* Ask for autochanger list of volumes */
-   bnet_fsend(sd, NT_("autochanger list %s \n"), dev_name);
+   sd->fsend(NT_("autochanger list %s \n"), dev_name);
 
    /* Read and organize list of Volumes */
-   while (bnet_recv(sd) >= 0) {
+   while (sd->recv() >= 0) {
       char *p;
       int Slot;
       strip_trailing_junk(sd->msg);
@@ -916,7 +880,7 @@ static vol_list_t *get_vol_list_from_SD(UAContext *ua, bool scan)
          for (vol_list_t *tvl=vol_list; tvl; tvl=tvl->next) {
             if (tvl->Slot > vl->Slot) {
                /* no previous item, update vol_list directly */
-               if (prev == vol_list) {  
+               if (prev == vol_list) {
                   vl->next = vol_list;
                   vol_list = vl;
 
@@ -1064,29 +1028,29 @@ static void content_send_info(UAContext *ua, char type, int Slot, char *vol_name
             strcpy(pr.Name, "?");
          }
          ua->send_msg(slot_api_full_format, type,
-                      Slot, mr.Slot, mr.VolumeName, 
-                      edit_uint64(mr.VolBytes, ed1), 
-                      mr.VolStatus, mr.MediaType, pr.Name, 
+                      Slot, mr.Slot, mr.VolumeName,
+                      edit_uint64(mr.VolBytes, ed1),
+                      mr.VolStatus, mr.MediaType, pr.Name,
                       edit_uint64(mr.LastWritten, ed2),
                       edit_uint64(mr.LastWritten+mr.VolRetention, ed3));
-         
+
       } else {                  /* Media unknown */
          ua->send_msg(slot_api_full_format,
-                      type, Slot, 0, mr.VolumeName, "?", "?", "?", "?", 
+                      type, Slot, 0, mr.VolumeName, "?", "?", "?", "?",
                       "0", "0");
-         
+
       }
    } else {
       ua->send_msg(slot_api_empty_format, type, Slot);
    }
-}         
+}
 
-/* 
+/*
  * Input (output of mxt-changer listall):
  *
  * Drive content:         D:Drive num:F:Slot loaded:Volume Name
  * D:0:F:2:vol2        or D:Drive num:E
- * D:1:F:42:vol42   
+ * D:1:F:42:vol42
  * D:3:E
  *
  * Slot content:
@@ -1099,8 +1063,8 @@ static void content_send_info(UAContext *ua, char type, int Slot, char *vol_name
  * I:11:E              or I:Slot num:E
  * I:12:F:vol40
  *
- * If a drive is loaded, the slot *should* be empty 
- * 
+ * If a drive is loaded, the slot *should* be empty
+ *
  * Output:
  *
  * Drive list:       D|Drive num|Slot loaded|Volume Name
@@ -1136,10 +1100,10 @@ void status_content(UAContext *ua, STORE *store)
    bstrncpy(dev_name, store->dev_name(), sizeof(dev_name));
    bash_spaces(dev_name);
    /* Ask for autochanger list of volumes */
-   bnet_fsend(sd, NT_("autochanger listall %s \n"), dev_name);
+   sd->fsend(NT_("autochanger listall %s \n"), dev_name);
 
    /* Read and organize list of Drive, Slots and I/O Slots */
-   while (bnet_recv(sd) >= 0) {
+   while (sd->recv() >= 0) {
       strip_trailing_junk(sd->msg);
 
       /* Check for returned SD messages */
diff --git a/src/dird/ua_output.c b/src/dird/ua_output.c
index adef8a5..d5106fd 100644
--- a/src/dird/ua_output.c
+++ b/src/dird/ua_output.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -96,14 +84,14 @@ int gui_cmd(UAContext *ua, const char *cmd)
    return 1;
 }
 
-/* 
- * Enter with Resources locked 
+/*
+ * Enter with Resources locked
  */
 static void show_disabled_jobs(UAContext *ua)
 {
    JOB *job;
    bool first = true;
-   foreach_res(job, R_JOB) {   
+   foreach_res(job, R_JOB) {
       if (!acl_access_ok(ua, Job_ACL, job->name())) {
          continue;
       }
@@ -238,8 +226,8 @@ bail_out:
  *  list jobs           - lists all jobs run
  *  list jobid=nnn      - list job data for jobid
  *  list ujobid=uname   - list job data for unique jobid
- *  list job=name       - list all jobs with "name"   
- *  list jobname=name   - same as above 
+ *  list job=name       - list all jobs with "name"
+ *  list jobname=name   - same as above
  *  list jobmedia jobid=<nn>
  *  list jobmedia job=name
  *  list joblog jobid=<nn>
@@ -347,7 +335,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
                db_list_base_files_for_job(ua->jcr, ua->db, jobid, prtit, ua);
             }
          }
-      
+
       /* List FILES */
       } else if (strcasecmp(ua->argk[i], NT_("files")) == 0) {
 
@@ -448,6 +436,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
             free_pool_memory(VolumeName);
             done = true;
          }
+
          /* if no job or jobid keyword found, then we list all media */
          if (!done) {
             int num_pools;
@@ -514,7 +503,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
                }
             } else if (strcasecmp(ua->argk[j], NT_("limit")) == 0 && ua->argv[j]) {
                limit = atoi(ua->argv[j]);
-            } 
+            }
          }
          db_list_copies_records(ua->jcr,ua->db,limit,jobids,prtit,ua,llist);
       } else if (strcasecmp(ua->argk[i], NT_("limit")) == 0
@@ -530,7 +519,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
 static bool list_nextvol(UAContext *ua, int ndays)
 {
    JOB *job;
-   JCR *jcr;          
+   JCR *jcr;
    USTORE store;
    RUN *run;
    utime_t runtime;
@@ -608,9 +597,9 @@ RUN *find_next_run(RUN *run, JOB *job, utime_t &runtime, int ndays)
    SCHED *sched;
    struct tm tm, runtm;
    int mday, wday, month, wom, i;
-   int woy;
+   int woy, ldom;
    int day;
-   int is_scheduled;
+   bool is_scheduled;
 
    sched = job->schedule;
    if (sched == NULL) {            /* scheduled? */
@@ -641,11 +630,16 @@ RUN *find_next_run(RUN *run, JOB *job, utime_t &runtime, int ndays)
          month = tm.tm_mon;
          wom = mday / 7;
          woy = tm_woy(future);
+         ldom = tm_ldom(month, tm.tm_year + 1900);
+
+         is_scheduled = (bit_is_set(mday, run->mday) &&
+                         bit_is_set(wday, run->wday) &&
+                         bit_is_set(month, run->month) &&
+                         bit_is_set(wom, run->wom) &&
+                         bit_is_set(woy, run->woy)) ||
+                        (bit_is_set(month, run->month) &&
+                         bit_is_set(31, run->mday) && mday == ldom);
 
-         is_scheduled = bit_is_set(mday, run->mday) && bit_is_set(wday, run->wday) &&
-            bit_is_set(month, run->month) && bit_is_set(wom, run->wom) &&
-            bit_is_set(woy, run->woy);
- 
 #ifdef xxx
          Pmsg2(000, "day=%d is_scheduled=%d\n", day, is_scheduled);
          Pmsg1(000, "bit_set_mday=%d\n", bit_is_set(mday, run->mday));
@@ -710,11 +704,11 @@ bool complete_jcr_for_job(JCR *jcr, JOB *job, POOL *pool)
    }
 
    Dmsg0(100, "complete_jcr open db\n");
-   jcr->db = db_init_database(jcr, jcr->catalog->db_driver, jcr->catalog->db_name, 
+   jcr->db = db_init_database(jcr, jcr->catalog->db_driver, jcr->catalog->db_name,
                               jcr->catalog->db_user,
                               jcr->catalog->db_password, jcr->catalog->db_address,
                               jcr->catalog->db_port, jcr->catalog->db_socket,
-                              jcr->catalog->mult_db_connections, 
+                              jcr->catalog->mult_db_connections,
                               jcr->catalog->disable_batch_insert);
    if (!jcr->db || !db_open_database(jcr, jcr->db)) {
       Jmsg(jcr, M_FATAL, 0, _("Could not open database \"%s\".\n"),
@@ -757,6 +751,9 @@ void do_messages(UAContext *ua, const char *cmd)
    int mlen;
    bool do_truncate = false;
 
+   if (ua->jcr) {
+      dequeue_messages(ua->jcr);
+   }
    Pw(con_lock);
    pthread_cleanup_push(con_lock_release, (void *)NULL);
    rewind(con_fd);
@@ -886,7 +883,7 @@ void bmsg(UAContext *ua, const char *fmt, va_list arg_ptr)
 
 }
 #endif
- 
+
 void bsendmsg(void *ctx, const char *fmt, ...)
 {
    va_list arg_ptr;
@@ -900,7 +897,7 @@ void bsendmsg(void *ctx, const char *fmt, ...)
  * programs
  */
 /*
- * This is a message that should be displayed on the user's 
+ * This is a message that should be displayed on the user's
  *  console.
  */
 void UAContext::send_msg(const char *fmt, ...)
@@ -927,7 +924,7 @@ void UAContext::error_msg(const char *fmt, ...)
    va_end(arg_ptr);
 }
 
-/*  
+/*
  * This is a warning message, that should bring up a warning
  *  dialog box on the GUI. The command is not aborted, but something
  *  went wrong.
@@ -943,7 +940,7 @@ void UAContext::warning_msg(const char *fmt, ...)
    va_end(arg_ptr);
 }
 
-/* 
+/*
  * This is an information message that should probably be put
  *  into the status line of a GUI program.
  */
diff --git a/src/dird/ua_prune.c b/src/dird/ua_prune.c
index 7380945..9a86f24 100644
--- a/src/dird/ua_prune.c
+++ b/src/dird/ua_prune.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -41,6 +29,7 @@
 
 /* Forward referenced functions */
 static bool grow_del_list(struct del_ctx *del);
+static bool prune_expired_volumes(UAContext*);
 
 /*
  * Called here to count entries to be deleted
@@ -116,7 +105,7 @@ int prunecmd(UAContext *ua, const char *cmd)
       NT_("Stats"),
       NULL};
 
-   if (!open_client_db(ua)) {
+   if (!open_new_client_db(ua)) {
       return false;
    }
 
@@ -147,6 +136,7 @@ int prunecmd(UAContext *ua, const char *cmd)
       }
       prune_files(ua, client, pool);
       return true;
+
    case 1:  /* prune jobs */
       if (!(client = get_client_resource(ua))) {
          return false;
@@ -167,7 +157,14 @@ int prunecmd(UAContext *ua, const char *cmd)
       /* ****FIXME**** allow user to select JobType */
       prune_jobs(ua, client, pool, JT_BACKUP);
       return 1;
+
    case 2:  /* prune volume */
+
+      /* Look for All expired volumes, mostly designed for runscript */
+      if (find_arg(ua, "expired") >= 0) {
+         return prune_expired_volumes(ua);
+      }
+
       if (!select_pool_and_media_dbr(ua, &pr, &mr)) {
          return false;
       }
@@ -199,7 +196,7 @@ int prunecmd(UAContext *ua, const char *cmd)
    return true;
 }
 
-/* Prune Job stat records from the database. 
+/* Prune Job stat records from the database.
  *
  */
 int prune_stats(UAContext *ua, utime_t retention)
@@ -209,7 +206,7 @@ int prune_stats(UAContext *ua, utime_t retention)
    utime_t now = (utime_t)time(NULL);
 
    db_lock(ua->db);
-   Mmsg(query, "DELETE FROM JobHisto WHERE JobTDate < %s", 
+   Mmsg(query, "DELETE FROM JobHisto WHERE JobTDate < %s",
         edit_int64(now - retention, ed1));
    db_sql_query(ua->db, query.c_str(), NULL, NULL);
    db_unlock(ua->db);
@@ -219,8 +216,8 @@ int prune_stats(UAContext *ua, utime_t retention)
    return true;
 }
 
-/* 
- * Use pool and client specified by user to select jobs to prune 
+/*
+ * Use pool and client specified by user to select jobs to prune
  * returns add_from string to add in FROM clause
  *         add_where string to add in WHERE clause
  */
@@ -228,7 +225,7 @@ bool prune_set_filter(UAContext *ua, CLIENT *client, POOL *pool, utime_t period,
                       POOL_MEM *add_from, POOL_MEM *add_where)
 {
    utime_t now;
-   char ed1[50], ed2[MAX_ESCAPE_NAME_LENGTH]; 
+   char ed1[50], ed2[MAX_ESCAPE_NAME_LENGTH];
    POOL_MEM tmp(PM_MESSAGE);
 
    now = (utime_t)time(NULL);
@@ -238,16 +235,16 @@ bool prune_set_filter(UAContext *ua, CLIENT *client, POOL *pool, utime_t period,
    pm_strcat(*add_where, tmp.c_str());
 
    db_lock(ua->db);
-   if (client) { 
-      db_escape_string(ua->jcr, ua->db, ed2, 
+   if (client) {
+      db_escape_string(ua->jcr, ua->db, ed2,
                        client->name(), strlen(client->name()));
       Mmsg(tmp, " AND Client.Name = '%s' ", ed2);
       pm_strcat(*add_where, tmp.c_str());
       pm_strcat(*add_from, " JOIN Client USING (ClientId) ");
    }
 
-   if (pool) { 
-      db_escape_string(ua->jcr, ua->db, ed2, 
+   if (pool) {
+      db_escape_string(ua->jcr, ua->db, ed2,
                        pool->name(), strlen(pool->name()));
       Mmsg(tmp, " AND Pool.Name = '%s' ", ed2);
       pm_strcat(*add_where, tmp.c_str());
@@ -281,7 +278,7 @@ int prune_files(UAContext *ua, CLIENT *client, POOL *pool)
    POOL_MEM sql_from(PM_MESSAGE);
    utime_t period;
    char ed1[50];
-   
+
    memset(&del, 0, sizeof(del));
 
    if (pool && pool->FileRetention > 0) {
@@ -303,15 +300,15 @@ int prune_files(UAContext *ua, CLIENT *client, POOL *pool)
 //   edit_utime(now-period, ed1, sizeof(ed1));
 //   Jmsg(ua->jcr, M_INFO, 0, _("Begin pruning Jobs older than %s secs.\n"), ed1);
    Jmsg(ua->jcr, M_INFO, 0, _("Begin pruning Files.\n"));
-   /* Select Jobs -- for counting */ 
-   Mmsg(query, 
-        "SELECT COUNT(1) FROM Job %s WHERE PurgedFiles=0 %s", 
+   /* Select Jobs -- for counting */
+   Mmsg(query,
+        "SELECT COUNT(1) FROM Job %s WHERE PurgedFiles=0 %s",
         sql_from.c_str(), sql_where.c_str());
-   Dmsg1(050, "select sql=%s\n", query.c_str());
+   Dmsg1(100, "select sql=%s\n", query.c_str());
    cnt.count = 0;
    if (!db_sql_query(ua->db, query.c_str(), del_count_handler, (void *)&cnt)) {
       ua->error_msg("%s", db_strerror(ua->db));
-      Dmsg0(050, "Count failed\n");
+      Dmsg0(100, "Count failed\n");
       goto bail_out;
    }
 
@@ -332,9 +329,9 @@ int prune_files(UAContext *ua, CLIENT *client, POOL *pool)
    del.JobId = (JobId_t *)malloc(sizeof(JobId_t) * del.max_ids);
 
    /* Now process same set but making a delete list */
-   Mmsg(query, "SELECT JobId FROM Job %s WHERE PurgedFiles=0 %s", 
+   Mmsg(query, "SELECT JobId FROM Job %s WHERE PurgedFiles=0 %s",
         sql_from.c_str(), sql_where.c_str());
-   Dmsg1(050, "select sql=%s\n", query.c_str());
+   Dmsg1(100, "select sql=%s\n", query.c_str());
    db_sql_query(ua->db, query.c_str(), file_delete_handler, (void *)&del);
 
    purge_files_from_job_list(ua, del);
@@ -365,12 +362,12 @@ static bool create_temp_tables(UAContext *ua)
    /* Create temp tables and indicies */
    if (!db_sql_query(ua->db, create_deltabs[db_get_type_index(ua->db)], NULL, (void *)NULL)) {
       ua->error_msg("%s", db_strerror(ua->db));
-      Dmsg0(050, "create DelTables table failed\n");
+      Dmsg0(100, "create DelTables table failed\n");
       return false;
    }
    if (!db_sql_query(ua->db, create_delindex, NULL, (void *)NULL)) {
        ua->error_msg("%s", db_strerror(ua->db));
-       Dmsg0(050, "create DelInx1 index failed\n");
+       Dmsg0(100, "create DelInx1 index failed\n");
        return false;
    }
    return true;
@@ -393,7 +390,7 @@ static bool grow_del_list(struct del_ctx *del)
 
 struct accurate_check_ctx {
    DBId_t ClientId;                   /* Id of client */
-   DBId_t FileSetId;                  /* Id of FileSet */ 
+   DBId_t FileSetId;                  /* Id of FileSet */
 };
 
 /* row: Job.Name, FileSet, Client.Name, FileSetId, ClientId, Type */
@@ -496,7 +493,7 @@ int prune_jobs(UAContext *ua, CLIENT *client, POOL *pool, int JobType)
     * Select all files that are older than the JobRetention period
     *  and add them into the "DeletionCandidates" table.
     */
-   Mmsg(query, 
+   Mmsg(query,
         "INSERT INTO DelCandidates "
           "SELECT JobId,PurgedFiles,FileSetId,JobFiles,JobStatus "
             "FROM Job %s "      /* JOIN Pool/Client */
@@ -504,7 +501,7 @@ int prune_jobs(UAContext *ua, CLIENT *client, POOL *pool, int JobType)
              " %s ",            /* Pool/Client + JobTDate */
         sql_from.c_str(), sql_where.c_str());
 
-   Dmsg1(050, "select sql=%s\n", query.c_str());
+   Dmsg1(100, "select sql=%s\n", query.c_str());
    if (!db_sql_query(ua->db, query.c_str(), NULL, (void *)NULL)) {
       if (ua->verbose) {
          ua->error_msg("%s", db_strerror(ua->db));
@@ -517,7 +514,7 @@ int prune_jobs(UAContext *ua, CLIENT *client, POOL *pool, int JobType)
     * Note: The DISTINCT could be more useful if we don't get FileSetId
     */
    jobids_check = New(alist(10, owned_by_alist));
-   Mmsg(query, 
+   Mmsg(query,
 "SELECT DISTINCT Job.Name, FileSet, Client.Name, Job.FileSetId, "
                 "Job.ClientId, Job.Type "
   "FROM DelCandidates "
@@ -542,7 +539,7 @@ int prune_jobs(UAContext *ua, CLIENT *client, POOL *pool, int JobType)
     */
    memset(&jr, 0, sizeof(jr));
    /* To find useful jobs, we do like an incremental */
-   jr.JobLevel = L_INCREMENTAL; 
+   jr.JobLevel = L_INCREMENTAL;
    foreach_alist(elt, jobids_check) {
       jr.ClientId = elt->ClientId;   /* should be always the same */
       jr.FileSetId = elt->FileSetId;
@@ -550,15 +547,15 @@ int prune_jobs(UAContext *ua, CLIENT *client, POOL *pool, int JobType)
       jobids.add(tempids);
    }
 
-   /* Discard latest Verify level=InitCatalog job 
+   /* Discard latest Verify level=InitCatalog job
     * TODO: can have multiple fileset
     */
-   Mmsg(query, 
+   Mmsg(query,
         "SELECT JobId, JobTDate "
           "FROM Job %s "                         /* JOIN Client/Pool */
          "WHERE Type='V'    AND Level='V' "
               " %s "                             /* Pool, JobTDate, Client */
-         "ORDER BY JobTDate DESC LIMIT 1", 
+         "ORDER BY JobTDate DESC LIMIT 1",
         sql_from.c_str(), sql_where.c_str());
 
    if (!db_sql_query(ua->db, query.c_str(), db_list_handler, &jobids)) {
@@ -587,7 +584,7 @@ int prune_jobs(UAContext *ua, CLIENT *client, POOL *pool, int JobType)
    }
 
    /* We use DISTINCT because we can have two times the same job */
-   Mmsg(query, 
+   Mmsg(query,
         "SELECT DISTINCT DelCandidates.JobId,DelCandidates.PurgedFiles "
           "FROM DelCandidates");
    if (!db_sql_query(ua->db, query.c_str(), job_delete_handler, (void *)&del)) {
@@ -618,6 +615,79 @@ bail_out:
    return 1;
 }
 
+
+/*
+ * Prune a expired Volumes
+ */
+static bool prune_expired_volumes(UAContext *ua)
+{
+   bool ok=false;
+   POOL_MEM query(PM_MESSAGE);
+   POOL_MEM filter(PM_MESSAGE);
+   alist *lst=NULL;
+   int i=0;
+   char *val;
+   MEDIA_DBR mr;
+
+   db_lock(ua->db);
+   /* We can restrict to a specific pool */
+   if ((i = find_arg_with_value(ua, "pool")) >= 0) {
+      POOL_DBR pdbr;
+      memset(&pdbr, 0, sizeof(pdbr));
+      bstrncpy(pdbr.Name, ua->argv[i], sizeof(pdbr.Name));
+      if (!db_get_pool_record(ua->jcr, ua->db, &pdbr)) {
+         ua->error_msg("%s", db_strerror(ua->db));
+         goto bail_out;
+      }
+      Mmsg(query, " AND PoolId = %lld ", (int64_t) pdbr.PoolId);
+      pm_strcat(filter, query.c_str());
+   }
+
+   /* We can restrict by MediaType */
+   if ((i = find_arg_with_value(ua, "mediatype")) >= 0) {
+      char ed1[MAX_ESCAPE_NAME_LENGTH];
+      db_escape_string(ua->jcr, ua->db, ed1,
+                       ua->argv[i], strlen(ua->argv[i]));
+      Mmsg(query, " AND MediaType = '%s' ", ed1);
+      pm_strcat(filter, query.c_str());
+   }
+
+   /* Use a limit */
+   if ((i = find_arg_with_value(ua, "limit")) >= 0) {
+      if (is_an_integer(ua->argv[i])) {
+         Mmsg(query, " LIMIT %s ", ua->argv[i]);
+         pm_strcat(filter, query.c_str());
+      } else {
+         ua->error_msg(_("Expecting limit argument as integer\n"));
+         goto bail_out;
+      }
+   }
+
+   lst = New(alist(5, owned_by_alist));
+
+   Mmsg(query,  expired_volumes[db_get_type_index(ua->db)], filter.c_str());
+   db_sql_query(ua->db, query.c_str(), db_string_list_handler, &lst);
+
+   foreach_alist(val, lst) {
+      memset(&mr, 0, sizeof(mr));
+      bstrncpy(mr.VolumeName, val, sizeof(mr.VolumeName));
+      db_get_media_record(ua->jcr, ua->db, &mr);
+      Mmsg(query, _("Volume \"%s\""), val);
+      if (confirm_retention(ua, &mr.VolRetention, query.c_str())) {
+         prune_volume(ua, &mr);
+      }
+   }
+
+   ok = true;
+
+bail_out:
+   db_unlock(ua->db);
+   if (lst) {
+      delete lst;
+   }
+   return ok;
+}
+
 /*
  * Prune a given Volume
  */
@@ -641,9 +711,9 @@ bool prune_volume(UAContext *ua, MEDIA_DBR *mr)
    /* Prune only Volumes with status "Full", or "Used" */
    if (strcmp(mr->VolStatus, "Full")   == 0 ||
        strcmp(mr->VolStatus, "Used")   == 0) {
-      Dmsg2(050, "get prune list MediaId=%d Volume %s\n", (int)mr->MediaId, mr->VolumeName);
+      Dmsg2(100, "get prune list MediaId=%d Volume %s\n", (int)mr->MediaId, mr->VolumeName);
       count = get_prune_list_for_volume(ua, mr, &del);
-      Dmsg1(050, "Num pruned = %d\n", count);
+      Dmsg1(100, "Num pruned = %d\n", count);
       if (count != 0) {
          purge_job_list_from_catalog(ua, del);
       }
@@ -674,7 +744,7 @@ int get_prune_list_for_volume(UAContext *ua, MEDIA_DBR *mr, del_ctx *del)
    /*
     * Now add to the  list of JobIds for Jobs written to this Volume
     */
-   edit_int64(mr->MediaId, ed1); 
+   edit_int64(mr->MediaId, ed1);
    period = mr->VolRetention;
    now = (utime_t)time(NULL);
    edit_int64(now-period, ed2);
@@ -682,16 +752,16 @@ int get_prune_list_for_volume(UAContext *ua, MEDIA_DBR *mr, del_ctx *del)
    Dmsg3(250, "Now=%d period=%d now-period=%s\n", (int)now, (int)period,
       ed2);
 
-   Dmsg1(050, "Query=%s\n", query.c_str());
+   Dmsg1(100, "Query=%s\n", query.c_str());
    if (!db_sql_query(ua->db, query.c_str(), file_delete_handler, (void *)del)) {
       if (ua->verbose) {
          ua->error_msg("%s", db_strerror(ua->db));
       }
-      Dmsg0(050, "Count failed\n");
+      Dmsg0(100, "Count failed\n");
       goto bail_out;
    }
    count = exclude_running_jobs_from_list(del);
-   
+
 bail_out:
    return count;
 }
@@ -709,14 +779,14 @@ int exclude_running_jobs_from_list(del_ctx *prune_list)
    int count = 0;
    JCR *jcr;
    bool skip;
-   int i;          
+   int i;
 
    /* Do not prune any job currently running */
    for (i=0; i < prune_list->num_ids; i++) {
       skip = false;
       foreach_jcr(jcr) {
          if (jcr->JobId == prune_list->JobId[i]) {
-            Dmsg2(050, "skip running job JobId[%d]=%d\n", i, (int)prune_list->JobId[i]);
+            Dmsg2(100, "skip running job JobId[%d]=%d\n", i, (int)prune_list->JobId[i]);
             prune_list->JobId[i] = 0;
             skip = true;
             break;
@@ -726,7 +796,7 @@ int exclude_running_jobs_from_list(del_ctx *prune_list)
       if (skip) {
          continue;  /* don't increment count */
       }
-      Dmsg2(050, "accept JobId[%d]=%d\n", i, (int)prune_list->JobId[i]);
+      Dmsg2(100, "accept JobId[%d]=%d\n", i, (int)prune_list->JobId[i]);
       count++;
    }
    return count;
diff --git a/src/dird/ua_purge.c b/src/dird/ua_purge.c
index 550ab37..7d87c80 100644
--- a/src/dird/ua_purge.c
+++ b/src/dird/ua_purge.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -43,7 +31,7 @@
 /* Forward referenced functions */
 static int purge_files_from_client(UAContext *ua, CLIENT *client);
 static int purge_jobs_from_client(UAContext *ua, CLIENT *client);
-static int action_on_purge_cmd(UAContext *ua, const char *cmd);
+int truncate_cmd(UAContext *ua, const char *cmd);
 
 static const char *select_jobsfiles_from_client =
    "SELECT JobId FROM Job "
@@ -59,10 +47,11 @@ static const char *select_jobs_from_client =
  *
  *     Purge Files (from) [Job|JobId|Client|Volume]
  *     Purge Jobs  (from) [Client|Volume]
+ *     Purge Volumes
  *
  *  N.B. Not all above is implemented yet.
  */
-int purgecmd(UAContext *ua, const char *cmd)
+int purge_cmd(UAContext *ua, const char *cmd)
 {
    int i;
    CLIENT *client;
@@ -86,15 +75,21 @@ int purgecmd(UAContext *ua, const char *cmd)
       NT_("Volume"),
       NULL};
 
-   ua->warning_msg(_(
-      "\nThis command can be DANGEROUS!!!\n\n"
-      "It purges (deletes) all Files from a Job,\n"
-      "JobId, Client or Volume; or it purges (deletes)\n"
-      "all Jobs from a Client or Volume without regard\n"
-      "to retention periods. Normally you should use the\n"
-      "PRUNE command, which respects retention periods.\n"));
+   /* Special case for the "Action On Purge", this option is working only on
+    * Purged volume, so no jobs or files will be purged.
+    * We are skiping this message if "purge volume action=xxx"
+    */
+   if (!(find_arg(ua, "volume") >= 0 && find_arg(ua, "action") >= 0)) {
+      ua->warning_msg(_(
+        "\nThis command can be DANGEROUS!!!\n\n"
+        "It purges (deletes) all Files from a Job,\n"
+        "JobId, Client or Volume; or it purges (deletes)\n"
+        "all Jobs from a Client or Volume without regard\n"
+        "to retention periods. Normally you should use the\n"
+        "PRUNE command, which respects retention periods.\n"));
+   }
 
-   if (!open_db(ua)) {
+   if (!open_new_client_db(ua)) {
       return 1;
    }
    switch (find_arg_keyword(ua, keywords)) {
@@ -140,7 +135,7 @@ int purgecmd(UAContext *ua, const char *cmd)
    case 2:
       /* Perform ActionOnPurge (action=truncate) */
       if (find_arg(ua, "action") >= 0) {
-         return action_on_purge_cmd(ua, ua->cmd);
+         return truncate_cmd(ua, ua->cmd);
       }
 
       while ((i=find_arg(ua, NT_("volume"))) >= 0) {
@@ -250,7 +245,7 @@ static int purge_jobs_from_client(UAContext *ua, CLIENT *client)
    del.max_ids = 1000;
    del.JobId = (JobId_t *)malloc(sizeof(JobId_t) * del.max_ids);
    del.PurgedFiles = (char *)malloc(del.max_ids);
-   
+
    ua->info_msg(_("Begin purging jobs from Client \"%s\"\n"), cr.Name);
 
    Mmsg(query, select_jobs_from_client, edit_int64(cr.ClientId, ed1));
@@ -292,6 +287,10 @@ void purge_files_from_jobs(UAContext *ua, char *jobs)
    db_sql_query(ua->db, query.c_str(), NULL, (void *)NULL);
    Dmsg1(050, "Delete BaseFiles sql=%s\n", query.c_str());
 
+   Mmsg(query, "DELETE FROM PathVisibility WHERE JobId IN (%s)", jobs);
+   db_sql_query(ua->db, query.c_str(), NULL, (void *)NULL);
+   Dmsg1(050, "Delete PathVisibility sql=%s\n", query.c_str());
+
    /*
     * Now mark Job as having files purged. This is necessary to
     * avoid having too many Jobs to process in future prunings. If
@@ -385,7 +384,7 @@ void purge_files_from_job_list(UAContext *ua, del_ctx &del)
 void upgrade_copies(UAContext *ua, char *jobs)
 {
    POOL_MEM query(PM_MESSAGE);
-   
+
    db_lock(ua->db);
 
    /* Do it in two times for mysql */
@@ -427,10 +426,6 @@ void purge_jobs_from_catalog(UAContext *ua, char *jobs)
    db_sql_query(ua->db, query.c_str(), NULL, (void *)NULL);
    Dmsg1(050, "Delete RestoreObject sql=%s\n", query.c_str());
 
-   Mmsg(query, "DELETE FROM PathVisibility WHERE JobId IN (%s)", jobs);
-   db_sql_query(ua->db, query.c_str(), NULL, (void *)NULL);
-   Dmsg1(050, "Delete PathVisibility sql=%s\n", query.c_str());
-
    upgrade_copies(ua, jobs);
 
    /* Now remove the Job record itself */
@@ -489,10 +484,10 @@ bool purge_jobs_from_volume(UAContext *ua, MEDIA_DBR *mr, bool force)
       purge_jobs_from_catalog(ua, jobids);
    }
 
-   ua->info_msg(_("%d File%s on Volume \"%s\" purged from catalog.\n"), 
+   ua->info_msg(_("%d File%s on Volume \"%s\" purged from catalog.\n"),
                 lst.count, lst.count<=1?"":"s", mr->VolumeName);
 
-   purged = is_volume_purged(ua, mr, force); 
+   purged = is_volume_purged(ua, mr, force);
 
 bail_out:
    return purged;
@@ -523,13 +518,14 @@ bool is_volume_purged(UAContext *ua, MEDIA_DBR *mr, bool force)
    }
 
    if (strcmp(mr->VolStatus, "Purged") == 0) {
+      Dmsg1(100, "Volume=%s already purged.\n", mr->VolumeName);
       purged = true;
       goto bail_out;
    }
 
    /* If purged, mark it so */
    cnt.count = 0;
-   Mmsg(query, "SELECT 1 FROM JobMedia WHERE MediaId=%s LIMIT 1", 
+   Mmsg(query, "SELECT 1 FROM JobMedia WHERE MediaId=%s LIMIT 1",
         edit_int64(mr->MediaId, ed1));
    if (!db_sql_query(ua->db, query.c_str(), del_count_handler, (void *)&cnt)) {
       ua->error_msg("%s", db_strerror(ua->db));
@@ -540,6 +536,8 @@ bool is_volume_purged(UAContext *ua, MEDIA_DBR *mr, bool force)
    if (cnt.count == 0) {
       ua->warning_msg(_("There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"),
          mr->VolumeName);
+      Dmsg1(100, "There are no more Jobs associated with Volume \"%s\". Marking it purged.\n",
+         mr->VolumeName);
       if (!(purged = mark_media_purged(ua, mr))) {
          ua->error_msg("%s", db_strerror(ua->db));
       }
@@ -548,33 +546,18 @@ bail_out:
    return purged;
 }
 
-static BSOCK *open_sd_bsock(UAContext *ua)
-{
-   STORE *store = ua->jcr->wstore;
-
-   if (!ua->jcr->store_bsock) {
-      ua->send_msg(_("Connecting to Storage daemon %s at %s:%d ...\n"),
-         store->name(), store->address, store->SDport);
-      if (!connect_to_storage_daemon(ua->jcr, 10, SDConnectTimeout, 1)) {
-         ua->error_msg(_("Failed to connect to Storage daemon.\n"));
-         return NULL;
-      }
-   }
-   return ua->jcr->store_bsock;
-}
-
-/* 
+/*
  * Called here to send the appropriate commands to the SD
  *  to do truncate on purge.
  */
-static void do_truncate_on_purge(UAContext *ua, MEDIA_DBR *mr, 
+static void do_truncate_on_purge(UAContext *ua, MEDIA_DBR *mr,
                                  char *pool, char *storage,
                                  int drive, BSOCK *sd)
 {
    int dvd;
    bool ok=false;
    uint64_t VolBytes = 0;
-   
+
    /* TODO: Return if not mr->Recyle ? */
    if (!mr->Recycle) {
       return;
@@ -594,14 +577,14 @@ static void do_truncate_on_purge(UAContext *ua, MEDIA_DBR *mr,
    bash_spaces(mr->MediaType);
    bash_spaces(pool);
    bash_spaces(storage);
-      
+
    /* Do it by relabeling the Volume, which truncates it */
    sd->fsend("relabel %s OldName=%s NewName=%s PoolName=%s "
              "MediaType=%s Slot=%d drive=%d\n",
                 storage,
                 mr->VolumeName, mr->VolumeName,
                 pool, mr->MediaType, mr->Slot, drive);
-      
+
    unbash_spaces(mr->VolumeName);
    unbash_spaces(mr->MediaType);
    unbash_spaces(pool);
@@ -628,44 +611,51 @@ static void do_truncate_on_purge(UAContext *ua, MEDIA_DBR *mr,
    }
 }
 
-/* 
+/*
  * Implement Bacula bconsole command  purge action
- *     purge action= pool= volume= storage= devicetype= 
+ *     purge action=truncate pool= volume= storage= mediatype=
+ * or
+ *     truncate pool= volume= storage= mediatype=
+ *
+ * Note, later we might want to rename this action_on_purge_cmd() as
+ *  was the original, but only if we add additional actions such as
+ *  erase, ... For the moment, we only do a truncate.
+ *
  */
-static int action_on_purge_cmd(UAContext *ua, const char *cmd)
+int truncate_cmd(UAContext *ua, const char *cmd)
 {
    bool allpools = false;
    int drive = -1;
    int nb = 0;
    uint32_t *results = NULL;
-   const char *action = "all";
+   const char *action = "truncate";
    STORE *store = NULL;
    POOL *pool = NULL;
    MEDIA_DBR mr;
    POOL_DBR pr;
    BSOCK *sd = NULL;
-   
+
    memset(&pr, 0, sizeof(pr));
 
    /* Look at arguments */
    for (int i=1; i<ua->argc; i++) {
       if (strcasecmp(ua->argk[i], NT_("allpools")) == 0) {
          allpools = true;
-            
-      } else if (strcasecmp(ua->argk[i], NT_("volume")) == 0 
+
+      } else if (strcasecmp(ua->argk[i], NT_("volume")) == 0
                  && is_name_valid(ua->argv[i], NULL)) {
          bstrncpy(mr.VolumeName, ua->argv[i], sizeof(mr.VolumeName));
 
-      } else if (strcasecmp(ua->argk[i], NT_("devicetype")) == 0 
+      } else if (strcasecmp(ua->argk[i], NT_("mediatype")) == 0
                  && ua->argv[i]) {
          bstrncpy(mr.MediaType, ua->argv[i], sizeof(mr.MediaType));
-         
+
       } else if (strcasecmp(ua->argk[i], NT_("drive")) == 0 && ua->argv[i]) {
          drive = atoi(ua->argv[i]);
 
-      } else if (strcasecmp(ua->argk[i], NT_("action")) == 0 
+      } else if (strcasecmp(ua->argk[i], NT_("action")) == 0
                  && is_name_valid(ua->argv[i], NULL)) {
-         action=ua->argv[i];
+         action = ua->argv[i];
       }
    }
 
@@ -695,7 +685,7 @@ static int action_on_purge_cmd(UAContext *ua, const char *cmd)
       mr.PoolId = pr.PoolId;
    }
 
-   /* 
+   /*
     * Look for all Purged volumes that can be recycled, are enabled and
     *  have more the 10,000 bytes.
     */
@@ -708,7 +698,7 @@ static int action_on_purge_cmd(UAContext *ua, const char *cmd)
       Dmsg0(100, "No results from db_get_media_ids\n");
       goto bail_out;
    }
-   
+
    if (!nb) {
       ua->send_msg(_("No Volumes found to perform %s action.\n"), action);
       goto bail_out;
@@ -725,23 +715,19 @@ static int action_on_purge_cmd(UAContext *ua, const char *cmd)
    for (int i=0; i < nb; i++) {
       mr.clear();
       mr.MediaId = results[i];
-      if (db_get_media_record(ua->jcr, ua->db, &mr)) {         
+      if (db_get_media_record(ua->jcr, ua->db, &mr)) {
          /* TODO: ask for drive and change Pool */
-         if (!strcasecmp("truncate", action) || !strcasecmp("all", action)) {
+         if (strcasecmp("truncate", action) == 0) {
             do_truncate_on_purge(ua, &mr, pr.Name, store->dev_name(), drive, sd);
          }
       } else {
-         Dmsg1(0, "Can't find MediaId=%lld\n", (uint64_t) mr.MediaId);
+         Dmsg1(0, "Can't find MediaId=%lld\n", (uint64_t)mr.MediaId);
       }
    }
 
 bail_out:
    close_db(ua);
-   if (sd) {
-      sd->signal(BNET_TERMINATE);
-      sd->close();
-      ua->jcr->store_bsock = NULL;
-   }
+   close_sd_bsock(ua);
    ua->jcr->wstore = NULL;
    if (results) {
       free(results);
@@ -767,7 +753,6 @@ bool mark_media_purged(UAContext *ua, MEDIA_DBR *mr)
          return false;
       }
       pm_strcpy(jcr->VolumeName, mr->VolumeName);
-      generate_job_event(jcr, "VolumePurged");
       generate_plugin_event(jcr, bDirEventVolumePurged);
       /*
        * If the RecyclePool is defined, move the volume there
@@ -778,12 +763,12 @@ bool mark_media_purged(UAContext *ua, MEDIA_DBR *mr)
          memset(&newpr, 0, sizeof(POOL_DBR));
          newpr.PoolId = mr->RecyclePoolId;
          oldpr.PoolId = mr->PoolId;
-         if (   db_get_pool_record(jcr, ua->db, &oldpr) 
-             && db_get_pool_record(jcr, ua->db, &newpr)) 
+         if (   db_get_pool_numvols(jcr, ua->db, &oldpr)
+             && db_get_pool_numvols(jcr, ua->db, &newpr))
          {
             /* check if destination pool size is ok */
             if (newpr.MaxVols > 0 && newpr.NumVols >= newpr.MaxVols) {
-               ua->error_msg(_("Unable move recycled Volume in full " 
+               ua->error_msg(_("Unable move recycled Volume in full "
                               "Pool \"%s\" MaxVols=%d\n"),
                         newpr.Name, newpr.MaxVols);
 
@@ -795,10 +780,10 @@ bool mark_media_purged(UAContext *ua, MEDIA_DBR *mr)
          }
       }
 
-      /* Send message to Job report, if it is a *real* job */           
+      /* Send message to Job report, if it is a *real* job */
       if (jcr && jcr->JobId > 0) {
          Jmsg(jcr, M_INFO, 0, _("All records pruned from Volume \"%s\"; marking it \"Purged\"\n"),
-            mr->VolumeName); 
+            mr->VolumeName);
       }
       return true;
    } else {
diff --git a/src/dird/ua_query.c b/src/dird/ua_query.c
index 354b596..f1aa8ab 100644
--- a/src/dird/ua_query.c
+++ b/src/dird/ua_query.c
@@ -9,29 +9,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bacula.h"
@@ -257,7 +245,7 @@ int sqlquerycmd(UAContext *ua, const char *cmd)
    int len;
    const char *msg;
 
-   if (!open_client_db(ua)) {
+   if (!open_new_client_db(ua)) {
       return 1;
    }
    *query.c_str() = 0;
diff --git a/src/dird/ua_restore.c b/src/dird/ua_restore.c
index 9a9b44d..4a629d9 100644
--- a/src/dird/ua_restore.c
+++ b/src/dird/ua_restore.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -87,50 +75,61 @@ int restore_cmd(UAContext *ua, const char *cmd)
 
    memset(&rx, 0, sizeof(rx));
    rx.path = get_pool_memory(PM_FNAME);
+   rx.path[0] = 0;
+
    rx.fname = get_pool_memory(PM_FNAME);
+   rx.fname[0] = 0;
+
    rx.JobIds = get_pool_memory(PM_FNAME);
    rx.JobIds[0] = 0;
+
    rx.BaseJobIds = get_pool_memory(PM_FNAME);
+   rx.BaseJobIds[0] = 0;
+
    rx.query = get_pool_memory(PM_FNAME);
+   rx.query[0] = 0;
+
    rx.bsr = new_bsr();
+   rx.hardlinks_in_mem = true;
 
-   i = find_arg_with_value(ua, "comment");
-   if (i >= 0) {
-      rx.comment = ua->argv[i];
-      if (!is_comment_legal(ua, rx.comment)) {
-         goto bail_out;
-      }
+   if (!open_new_client_db(ua)) {
+      goto bail_out;
    }
 
-   i = find_arg_with_value(ua, "where");
-   if (i >= 0) {
-      rx.where = ua->argv[i];
-   }
+   for (i = 0; i < ua->argc ; i++) {
+      if (!ua->argv[i]) {
+         continue;           /* skip if no value given */
+      }
+      if (strcasecmp(ua->argk[i], "comment") == 0) {
+         rx.comment = ua->argv[i];
+         if (!is_comment_legal(ua, rx.comment)) {
+            goto bail_out;
+         }
 
-   i = find_arg_with_value(ua, "replace");
-   if (i >= 0) {
-      rx.replace = ua->argv[i];
-   }
-   
+      } else if (strcasecmp(ua->argk[i], "where") == 0) {
+         rx.where = ua->argv[i];
 
-   i = find_arg_with_value(ua, "strip_prefix");
-   if (i >= 0) {
-      strip_prefix = ua->argv[i];
-   }
+      } else if (strcasecmp(ua->argk[i], "replace") == 0) {
+         rx.replace = ua->argv[i];
 
-   i = find_arg_with_value(ua, "add_prefix");
-   if (i >= 0) {
-      add_prefix = ua->argv[i];
-   }
+      } else if (strcasecmp(ua->argk[i], "strip_prefix") == 0) {
+         strip_prefix = ua->argv[i];
 
-   i = find_arg_with_value(ua, "add_suffix");
-   if (i >= 0) {
-      add_suffix = ua->argv[i];
-   }
+      } else if (strcasecmp(ua->argk[i], "add_prefix") == 0) {
+         add_prefix = ua->argv[i];
 
-   i = find_arg_with_value(ua, "regexwhere");
-   if (i >= 0) {
-      rx.RegexWhere = ua->argv[i];
+      } else if (strcasecmp(ua->argk[i], "add_suffix") == 0) {
+         add_suffix = ua->argv[i];
+
+      } else if (strcasecmp(ua->argk[i], "regexwhere") == 0) {
+         rx.RegexWhere = ua->argv[i];
+
+      } else if (strcasecmp(ua->argk[i], "optimizespeed") == 0) {
+         if (strcasecmp(ua->argv[i], "0") || strcasecmp(ua->argv[i], "no") ||
+             strcasecmp(ua->argv[i], "false")) {
+            rx.hardlinks_in_mem = false;
+         }
+      }
    }
 
    if (strip_prefix || add_suffix || add_prefix) {
@@ -157,10 +156,6 @@ int restore_cmd(UAContext *ua, const char *cmd)
       }
    }
 
-   if (!open_client_db(ua)) {
-      goto bail_out;
-   }
-
    /* Ensure there is at least one Restore Job */
    LockRes();
    foreach_res(job, R_JOB) {
@@ -214,7 +209,7 @@ int restore_cmd(UAContext *ua, const char *cmd)
       if (rx.selected_files==1) {
          ua->info_msg(_("\n1 file selected to be restored.\n\n"));
       } else {
-         ua->info_msg(_("\n%s files selected to be restored.\n\n"), 
+         ua->info_msg(_("\n%s files selected to be restored.\n\n"),
             edit_uint64_with_commas(rx.selected_files, ed1));
       }
    } else {
@@ -250,14 +245,19 @@ int restore_cmd(UAContext *ua, const char *cmd)
 
    /* Build run command */
    pm_strcpy(buf, "");
+   if (rx.RestoreMediaType[0]) {
+      Mmsg(buf, " mediatype=\"%s\"", rx.RestoreMediaType);
+      pm_strcat(ua->cmd, buf);
+      pm_strcpy(buf, "");
+   }
    if (rx.RegexWhere) {
       escaped_where_name = escape_filename(rx.RegexWhere);
-      Mmsg(buf, " regexwhere=\"%s\"", 
+      Mmsg(buf, " regexwhere=\"%s\"",
            escaped_where_name ? escaped_where_name : rx.RegexWhere);
 
    } else if (rx.where) {
       escaped_where_name = escape_filename(rx.where);
-      Mmsg(buf," where=\"%s\"", 
+      Mmsg(buf," where=\"%s\"",
            escaped_where_name ? escaped_where_name : rx.where);
    }
    pm_strcat(ua->cmd, buf);
@@ -279,7 +279,7 @@ int restore_cmd(UAContext *ua, const char *cmd)
    if (escaped_where_name != NULL) {
       bfree(escaped_where_name);
    }
-   
+
    if (regexp) {
       bfree(regexp);
    }
@@ -288,7 +288,13 @@ int restore_cmd(UAContext *ua, const char *cmd)
       pm_strcat(ua->cmd, " yes");    /* pass it on to the run command */
    }
    Dmsg1(200, "Submitting: %s\n", ua->cmd);
-   /* Transfer jobids to jcr to for picking up restore objects */
+   /*
+    * Transfer jobids, to jcr to
+    *  pass to run_cmd().  Note, these are fields and
+    *  other things that are not passed on the command
+    *  line.
+    */
+   /* ***FIXME*** pass jobids on command line */
    jcr->JobIds = rx.JobIds;
    rx.JobIds = NULL;
    parse_ua_args(ua);
@@ -316,7 +322,7 @@ bail_out:
 
 }
 
-/* 
+/*
  * Fill the rx->BaseJobIds and display the list
  */
 static void get_and_display_basejobs(UAContext *ua, RESTORE_CTX *rx)
@@ -326,7 +332,7 @@ static void get_and_display_basejobs(UAContext *ua, RESTORE_CTX *rx)
    if (!db_get_used_base_jobids(ua->jcr, ua->db, rx->JobIds, &jobids)) {
       ua->warning_msg("%s", db_strerror(ua->db));
    }
-   
+
    if (jobids.count) {
       POOL_MEM q;
       Mmsg(q, uar_print_jobs, jobids.list);
@@ -393,7 +399,7 @@ static int get_client_name(UAContext *ua, RESTORE_CTX *rx)
 static int get_restore_client_name(UAContext *ua, RESTORE_CTX &rx)
 {
    /* Start with same name as backup client */
-   bstrncpy(rx.RestoreClientName, rx.ClientName, sizeof(rx.RestoreClientName));    
+   bstrncpy(rx.RestoreClientName, rx.ClientName, sizeof(rx.RestoreClientName));
 
    /* try command line argument */
    int i = find_arg_with_value(ua, NT_("restoreclient"));
@@ -487,6 +493,7 @@ static int user_select_jobids_or_files(UAContext *ua, RESTORE_CTX *rx)
             break;
          }
       }
+
       if (!found_kw) {
          ua->error_msg(_("Unknown keyword: %s\n"), ua->argk[i]);
          return 0;
@@ -769,7 +776,7 @@ static int user_select_jobids_or_files(UAContext *ua, RESTORE_CTX *rx)
 
       case 11:                        /* Choose a jobid and select jobs */
          if (!get_cmd(ua, _("Enter JobId to get the state to restore: ")) ||
-             !is_an_integer(ua->cmd)) 
+             !is_an_integer(ua->cmd))
          {
             return 0;
          }
@@ -799,7 +806,7 @@ static int user_select_jobids_or_files(UAContext *ua, RESTORE_CTX *rx)
    POOLMEM *JobIds = get_pool_memory(PM_FNAME);
    *JobIds = 0;
    rx->TotalFiles = 0;
-   /*        
+   /*
     * Find total number of files to be restored, and filter the JobId
     *  list to contain only ones permitted by the ACL conditions.
     */
@@ -929,7 +936,7 @@ static bool insert_file_into_findex_list(UAContext *ua, RESTORE_CTX *rx, char *f
    strip_trailing_newline(file);
    split_path_and_filename(ua, rx, file);
    if (*rx->JobIds == 0) {
-      Mmsg(rx->query, uar_jobid_fileindex, date, rx->path, rx->fname, 
+      Mmsg(rx->query, uar_jobid_fileindex, date, rx->path, rx->fname,
            rx->ClientName);
    } else {
       Mmsg(rx->query, uar_jobids_fileindex, rx->JobIds, date,
@@ -955,7 +962,7 @@ static bool insert_file_into_findex_list(UAContext *ua, RESTORE_CTX *rx, char *f
  */
 static bool insert_dir_into_findex_list(UAContext *ua, RESTORE_CTX *rx, char *dir,
                                         char *date)
-{  
+{
    strip_trailing_junk(dir);
    if (*rx->JobIds == 0) {
       ua->error_msg(_("No JobId specified cannot continue.\n"));
@@ -1099,6 +1106,7 @@ static void add_delta_list_findex(RESTORE_CTX *rx, struct delta_list *lst)
    add_findex(rx->bsr, lst->JobId, lst->FileIndex);
 }
 
+
 static bool build_directory_tree(UAContext *ua, RESTORE_CTX *rx)
 {
    TREE_CTX tree;
@@ -1114,6 +1122,7 @@ static bool build_directory_tree(UAContext *ua, RESTORE_CTX *rx)
    tree.root = new_tree(rx->TotalFiles);
    tree.ua = ua;
    tree.all = rx->all;
+   tree.hardlinks_in_mem = rx->hardlinks_in_mem;
    last_JobId = 0;
    /*
     * For display purposes, the same JobId, with different volumes may
@@ -1139,8 +1148,8 @@ static bool build_directory_tree(UAContext *ua, RESTORE_CTX *rx)
 
 #define new_get_file_list
 #ifdef new_get_file_list
-   if (!db_get_file_list(ua->jcr, ua->db, 
-                         rx->JobIds, false /* do not use md5 */, 
+   if (!db_get_file_list(ua->jcr, ua->db,
+                         rx->JobIds, false /* do not use md5 */,
                          true /* get delta */,
                          insert_tree_handler, (void *)&tree))
    {
@@ -1167,10 +1176,10 @@ static bool build_directory_tree(UAContext *ua, RESTORE_CTX *rx)
       }
    }
 #endif
-   /* 
+   /*
     * At this point, the tree is built, so we can garbage collect
-    * any memory released by the SQL engine that RedHat has 
-    * not returned to the OS :-( 
+    * any memory released by the SQL engine that RedHat has
+    * not returned to the OS :-(
     */
     garbage_collect_memory();
 
@@ -1318,7 +1327,7 @@ static bool select_backups_before_date(UAContext *ua, RESTORE_CTX *rx, char *dat
       memset(&pr, 0, sizeof(pr));
       bstrncpy(pr.Name, rx->pool->name(), sizeof(pr.Name));
       if (db_get_pool_record(ua->jcr, ua->db, &pr)) {
-         bsnprintf(pool_select, sizeof(pool_select), "AND Media.PoolId=%s ", 
+         bsnprintf(pool_select, sizeof(pool_select), "AND Media.PoolId=%s ",
             edit_int64(pr.PoolId, ed1));
       } else {
          ua->warning_msg(_("Pool \"%s\" not found, using any pool.\n"), pr.Name);
@@ -1385,7 +1394,7 @@ static bool select_backups_before_date(UAContext *ua, RESTORE_CTX *rx, char *dat
    if (rx->JobIds[0] != 0) {
       if (find_arg(ua, NT_("copies")) > 0) {
          /* Display a list of all copies */
-         db_list_copies_records(ua->jcr, ua->db, 0, rx->JobIds, 
+         db_list_copies_records(ua->jcr, ua->db, 0, rx->JobIds,
                                 prtit, ua, HORZ_LIST);
       }
       /* Display a list of Jobs selected for this restore */
@@ -1417,9 +1426,23 @@ static int restore_count_handler(void *ctx, int num_fields, char **row)
 static int jobid_fileindex_handler(void *ctx, int num_fields, char **row)
 {
    RESTORE_CTX *rx = (RESTORE_CTX *)ctx;
+   JobId_t JobId = str_to_int64(row[0]);
+
+   Dmsg3(200, "JobId=%s JobIds=%s FileIndex=%s\n", row[0], rx->JobIds, row[1]);
+
+   /* New JobId, add it to JobIds
+    * The list is sorted by JobId, so we need a cache for the previous value
+    *
+    * It will permit to find restore objects to send during the restore
+    */
+   if (rx->JobId != JobId) {
+      if (*rx->JobIds) {
+         pm_strcat(rx->JobIds, ",");
+      }
+      pm_strcat(rx->JobIds, row[0]);
+      rx->JobId = JobId;
+   }
 
-   Dmsg2(200, "JobId=%s FileIndex=%s\n", row[0], row[1]);
-   rx->JobId = str_to_int64(row[0]);
    add_findex(rx->bsr, rx->JobId, str_to_int64(row[1]));
    rx->found = true;
    rx->selected_files++;
@@ -1481,7 +1504,7 @@ static void free_name_list(NAME_LIST *name_list)
    name_list->num_ids = 0;
 }
 
-void find_storage_resource(UAContext *ua, RESTORE_CTX &rx, char *Storage, char *MediaType) 
+void find_storage_resource(UAContext *ua, RESTORE_CTX &rx, char *Storage, char *MediaType)
 {
    STORE *store;
 
@@ -1514,10 +1537,17 @@ void find_storage_resource(UAContext *ua, RESTORE_CTX &rx, char *Storage, char *
          }
       }
       if (store && (store != rx.store)) {
-         ua->info_msg(_("Warning default storage overridden by \"%s\" on command line.\n"),
+         ua->info_msg(_("\nWarning Storage is overridden by \"%s\" on the command line.\n"),
             store->name());
          rx.store = store;
-         Dmsg1(200, "Set store=%s\n", rx.store->name());
+         bstrncpy(rx.RestoreMediaType, MediaType, sizeof(rx.RestoreMediaType));
+         if (strcmp(MediaType, store->media_type) != 0) {
+            ua->info_msg(_("This may not work because of two different MediaTypes:\n"
+               "  Storage MediaType=\"%s\"\n"
+               "  Volume  MediaType=\"%s\".\n\n"),
+               store->media_type, MediaType);
+         }
+         Dmsg2(200, "Set store=%s MediaType=%s\n", rx.store->name(), rx.RestoreMediaType);
       }
       return;
    }
diff --git a/src/dird/ua_run.c b/src/dird/ua_run.c
index a9941ad..1f593fb 100644
--- a/src/dird/ua_run.c
+++ b/src/dird/ua_run.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -36,11 +24,13 @@
 #include "bacula.h"
 #include "dird.h"
 
+const char *get_command(int index);
+
 class run_ctx {
 public:
    char *job_name, *level_name, *jid, *store_name, *pool_name;
    char *where, *fileset_name, *client_name, *bootstrap, *regexwhere;
-   char *restore_client_name, *comment;
+   char *restore_client_name, *comment, *media_type, *next_pool_name;
    const char *replace;
    char *when, *verify_job_name, *catalog_name;
    char *previous_job_name;
@@ -50,37 +40,44 @@ public:
    JOB *job;
    JOB *verify_job;
    JOB *previous_job;
+   JOB_DBR jr;
    USTORE *store;
    CLIENT *client;
    FILESET *fileset;
    POOL *pool;
+   POOL *next_pool;
    CAT *catalog;
+   JobId_t JobId;
+   alist *JobIds;
    int Priority;
    int files;
    bool cloned;
    bool mod;
+   bool restart;
+   bool done;
+   bool alljobid;
    int spool_data;
    bool spool_data_set;
    int accurate;
    bool accurate_set;
    int ignoreduplicatecheck;
    bool ignoreduplicatecheck_set;
-
    /* Methods */
-   run_ctx() { memset(this, 0, sizeof(run_ctx)); 
+   run_ctx() { memset(this, 0, sizeof(run_ctx));
                store = new USTORE; };
    ~run_ctx() { delete store; };
 };
 
 /* Forward referenced subroutines */
 static void select_job_level(UAContext *ua, JCR *jcr);
-static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, 
+static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job,
                 const char *verify_list, char *jid, const char *replace,
                 char *client_name);
 static void select_where_regexp(UAContext *ua, JCR *jcr);
-static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc);
-static bool reset_restore_context(UAContext *ua, JCR *jcr, run_ctx &rc);
+static bool scan_run_command_line_arguments(UAContext *ua, run_ctx &rc);
+static bool set_run_context_in_jcr(UAContext *ua, JCR *jcr, run_ctx &rc);
 static int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc);
+static JobId_t start_job(UAContext *ua, JCR *jcr, run_ctx &rc);
 
 /* Imported variables */
 extern struct s_kw ReplaceOptions[];
@@ -90,7 +87,7 @@ extern struct s_kw ReplaceOptions[];
  *     run [job=]<job-name> level=<level-name>
  *
  * For Restore Jobs
- *     run <job-name> 
+ *     run <job-name>
  *
  *  Returns: 0 on error
  *           JobId if OK
@@ -103,11 +100,11 @@ int run_cmd(UAContext *ua, const char *cmd)
    int status;
 
    if (!open_client_db(ua)) {
-      return 1;
+      goto bail_out;
    }
 
-   if (!scan_command_line_arguments(ua, rc)) {
-      return 0;
+   if (!scan_run_command_line_arguments(ua, rc)) {
+      goto bail_out;
    }
 
    if (find_arg(ua, NT_("fdcalled")) > 0) {
@@ -115,108 +112,506 @@ int run_cmd(UAContext *ua, const char *cmd)
       ua->quit = true;
    }
 
-   /*
-    * Create JCR to run job.  NOTE!!! after this point, free_jcr()
-    *  before returning.
-    */
-   if (!jcr) {
-      jcr = new_jcr(sizeof(JCR), dird_free_jcr);
-      set_jcr_defaults(jcr, rc.job);
-      jcr->unlink_bsr = ua->jcr->unlink_bsr;    /* copy unlink flag from caller */
-      ua->jcr->unlink_bsr = false;
+   for ( ;; ) {
+      /*
+       * Create JCR to run job.  NOTE!!! after this point, free_jcr()
+       *  before returning.
+       */
+      if (!jcr) {
+         jcr = new_jcr(sizeof(JCR), dird_free_jcr);
+         set_jcr_defaults(jcr, rc.job);
+         jcr->unlink_bsr = ua->jcr->unlink_bsr;    /* copy unlink flag from caller */
+         ua->jcr->unlink_bsr = false;
+      }
+      /* Transfer JobIds to new restore Job */
+      if (ua->jcr->JobIds) {
+         jcr->JobIds = ua->jcr->JobIds;
+         ua->jcr->JobIds = NULL;
+      }
+      if (!set_run_context_in_jcr(ua, jcr, rc)) {
+         break; /* error get out of while loop */
+      }
+
+
+      /* Run without prompting? */
+      if (ua->batch || find_arg(ua, NT_("yes")) > 0) {
+         return start_job(ua, jcr, rc);
+      }
+
+      /*
+       * Prompt User to see if all run job parameters are correct, and
+       *   allow him to modify them.
+       */
+      if (!display_job_parameters(ua, jcr, rc.job, rc.verify_list, rc.jid, rc.replace,
+           rc.client_name)) {
+         break; /* error get out of while loop */
+      }
+
+      if (!get_cmd(ua, _("OK to run? (yes/mod/no): "))) {
+         break; /* error get out of while loop */
+      }
+
+      if (strncasecmp(ua->cmd, ".mod ", 5) == 0 ||
+          (strncasecmp(ua->cmd, "mod ", 4) == 0 && strlen(ua->cmd) > 6)) {
+         parse_ua_args(ua);
+         rc.mod = true;
+         if (!scan_run_command_line_arguments(ua, rc)) {
+            break; /* error get out of while loop */
+         }
+         continue;   /* another round with while loop */
+      }
+
+      /* Allow the user to modify the settings */
+      status = modify_job_parameters(ua, jcr, rc);
+      if (status == 0) {
+         continue;   /* another round with while loop */
+      }
+      if (status == -1) { /* error */
+         break; /* error get out of while loop */
+      }
+
+      if (ua->cmd[0] == 0 || strncasecmp(ua->cmd, _("yes"), strlen(ua->cmd)) == 0) {
+         return start_job(ua, jcr, rc);
+      }
+      if (strncasecmp(ua->cmd, _("no"), strlen(ua->cmd)) == 0) {
+         break; /* get out of while loop */
+      }
+      ua->send_msg(_("\nBad response: %s. You must answer yes, mod, or no.\n\n"), ua->cmd);
    }
-   /* Transfer JobIds to new restore Job */
-   if (ua->jcr->JobIds) {
-      jcr->JobIds = ua->jcr->JobIds;
-      ua->jcr->JobIds = NULL;
+
+bail_out:
+   ua->send_msg(_("Job not run.\n"));
+   if (jcr) {
+      free_jcr(jcr);
+   }
+   return 0;                       /* do not run */
+}
+
+static JobId_t start_job(UAContext *ua, JCR *jcr, run_ctx &rc)
+{
+   JobId_t JobId;
+
+   Dmsg1(100, "Starting JobId=%d\n", rc.jr.JobId);
+   JobId = run_job(jcr);
+   Dmsg4(100, "JobId=%u NewJobId=%d pool=%s priority=%d\n", (int)jcr->JobId,
+         JobId, jcr->pool->name(), jcr->JobPriority);
+   free_jcr(jcr);                  /* release jcr */
+   if (JobId == 0) {
+      ua->error_msg(_("Job failed.\n"));
+   } else {
+      char ed1[50];
+      ua->send_msg(_("Job queued. JobId=%s\n"), edit_int64(JobId, ed1));
    }
+   return JobId;
+}
 
-try_again:
-   if (!reset_restore_context(ua, jcr, rc)) {
-      goto bail_out;
+/*
+ * If no job_name defined in the run context, ask
+ *  the user for it.
+ * Then put the job resource in the run context and
+ *  check the access rights.
+ */
+static bool get_job(UAContext *ua, run_ctx &rc)
+{
+   if (rc.job_name) {
+      /* Find Job */
+      rc.job = GetJobResWithName(rc.job_name);
+      if (!rc.job) {
+         if (*rc.job_name != 0) {
+            ua->send_msg(_("Job \"%s\" not found\n"), rc.job_name);
+         }
+         rc.job = select_job_resource(ua);
+      } else {
+         Dmsg1(100, "Found job=%s\n", rc.job_name);
+      }
+   } else if (!rc.job) {
+      ua->send_msg(_("A job name must be specified.\n"));
+      rc.job = select_job_resource(ua);
+   }
+   if (!rc.job) {
+      return false;
+   } else if (!acl_access_ok(ua, Job_ACL, rc.job->name())) {
+      ua->error_msg( _("No authorization. Job \"%s\".\n"), rc.job->name());
+      return false;
+   }
+   return true;
+}
+
+/*
+ * If no pool_name defined in the run context, ask
+ *  the user for it.
+ * Then put the pool resource in the run context and
+ *  check the access rights.
+ */
+static bool get_pool(UAContext *ua, run_ctx &rc)
+{
+   if (rc.pool_name) {
+      rc.pool = GetPoolResWithName(rc.pool_name);
+      if (!rc.pool) {
+         if (*rc.pool_name != 0) {
+            ua->warning_msg(_("Pool \"%s\" not found.\n"), rc.pool_name);
+         }
+         rc.pool = select_pool_resource(ua);
+      }
+   } else if (!rc.pool) {
+      rc.pool = rc.job->pool;             /* use default */
+   }
+   if (!rc.pool) {
+      return false;
+   } else if (!acl_access_ok(ua, Pool_ACL, rc.pool->name())) {
+      ua->error_msg(_("No authorization. Pool \"%s\".\n"), rc.pool->name());
+      return false;
+   }
+   Dmsg1(100, "Using Pool=%s\n", rc.pool->name());
+   return true;
+}
+
+static bool get_next_pool(UAContext *ua, run_ctx &rc)
+{
+   if (rc.next_pool_name) {
+      Dmsg1(100, "Have next pool=%s\n", rc.next_pool_name);
+      rc.next_pool = GetPoolResWithName(rc.next_pool_name);
+      if (!rc.next_pool) {
+         if (*rc.next_pool_name != 0) {
+            ua->warning_msg(_("NextPool \"%s\" not found.\n"), rc.next_pool_name);
+         }
+         rc.next_pool = select_pool_resource(ua);
+      }
+   }
+   if (!rc.next_pool) {
+      rc.next_pool = rc.pool->NextPool;      /* use default */
+   }
+   if (rc.next_pool && !acl_access_ok(ua, Pool_ACL, rc.next_pool->name())) {
+      ua->error_msg(_("No authorization. NextPool \"%s\".\n"), rc.next_pool->name());
+      return false;
+   }
+   if (rc.next_pool) {
+      Dmsg1(100, "Using NextPool=%s\n", NPRT(rc.next_pool->name()));
+   }
+   return true;
+}
+
+
+/*
+ * Fill in client data according to what is setup
+ *  in the run context, and make sure the user
+ *  has authorized access to it.
+ */
+static bool get_client(UAContext *ua, run_ctx &rc)
+{
+   if (rc.client_name) {
+      rc.client = GetClientResWithName(rc.client_name);
+      if (!rc.client) {
+         if (*rc.client_name != 0) {
+            ua->warning_msg(_("Client \"%s\" not found.\n"), rc.client_name);
+         }
+         rc.client = select_client_resource(ua);
+      }
+   } else if (!rc.client) {
+      rc.client = rc.job->client;           /* use default */
    }
+   if (!rc.client) {
+      return false;
+   } else if (!acl_access_ok(ua, Client_ACL, rc.client->name())) {
+      ua->error_msg(_("No authorization. Client \"%s\".\n"),
+               rc.client->name());
+      return false;
+   }
+   Dmsg1(800, "Using client=%s\n", rc.client->name());
 
+   if (rc.restore_client_name) {
+      rc.client = GetClientResWithName(rc.restore_client_name);
+      if (!rc.client) {
+         if (*rc.restore_client_name != 0) {
+            ua->warning_msg(_("Restore Client \"%s\" not found.\n"), rc.restore_client_name);
+         }
+         rc.client = select_client_resource(ua);
+      }
+   } else if (!rc.client) {
+      rc.client = rc.job->client;           /* use default */
+   }
+   if (!rc.client) {
+      return false;
+   } else if (!acl_access_ok(ua, Client_ACL, rc.client->name())) {
+      ua->error_msg(_("No authorization. Client \"%s\".\n"),
+               rc.client->name());
+      return false;
+   }
+   Dmsg1(800, "Using restore client=%s\n", rc.client->name());
+   return true;
+}
 
-   /* Run without prompting? */
-   if (ua->batch || find_arg(ua, NT_("yes")) > 0) {
-      goto start_job;
+
+/*
+ * Fill in fileset data according to what is setup
+ *  in the run context, and make sure the user
+ *  has authorized access to it.
+ */
+static bool get_fileset(UAContext *ua, run_ctx &rc)
+{
+   if (rc.fileset_name) {
+      rc.fileset = GetFileSetResWithName(rc.fileset_name);
+      if (!rc.fileset) {
+         ua->send_msg(_("FileSet \"%s\" not found.\n"), rc.fileset_name);
+         rc.fileset = select_fileset_resource(ua);
+      }
+   } else if (!rc.fileset) {
+      rc.fileset = rc.job->fileset;           /* use default */
+   }
+   if (!rc.fileset) {
+      return false;
+   } else if (!acl_access_ok(ua, FileSet_ACL, rc.fileset->name())) {
+      ua->send_msg(_("No authorization. FileSet \"%s\".\n"),
+               rc.fileset->name());
+      return false;
    }
+   return true;
+}
 
+/*
+ * Fill in storage data according to what is setup
+ *  in the run context, and make sure the user
+ *  has authorized access to it.
+ */
+static bool get_storage(UAContext *ua, run_ctx &rc)
+{
+   if (rc.store_name) {
+      rc.store->store = GetStoreResWithName(rc.store_name);
+      pm_strcpy(rc.store->store_source, _("command line"));
+      if (!rc.store->store) {
+         if (*rc.store_name != 0) {
+            ua->warning_msg(_("Storage \"%s\" not found.\n"), rc.store_name);
+         }
+         rc.store->store = select_storage_resource(ua);
+         pm_strcpy(rc.store->store_source, _("user selection"));
+      }
+   } else if (!rc.store->store) {
+      get_job_storage(rc.store, rc.job, NULL);      /* use default */
+   }
+   if (!rc.store->store) {
+      ua->error_msg(_("No storage specified.\n"));
+      return false;
+   } else if (!acl_access_ok(ua, Storage_ACL, rc.store->store->name())) {
+      ua->error_msg(_("No authorization. Storage \"%s\".\n"),
+               rc.store->store->name());
+      return false;
+   }
+   Dmsg1(800, "Using storage=%s\n", rc.store->store->name());
+   return true;
+}
+
+/*
+ * Get and pass back a list of Jobids in rc.jid
+ */
+static bool get_jobid_list(UAContext *ua, sellist &sl, run_ctx &rc)
+{
+   int i, JobId;
+   JOB_DBR jr;
+   char *pJobId;
+   bool found = false;
+
+   memset(&jr, 0, sizeof(jr));
+   rc.jid = NULL;
+   /* See if any JobId is specified */
+   if ((i=find_arg(ua, "jobid")) >= 0) {
+      rc.jid = ua->argv[i];
+      if (!rc.jid) {
+         ua->send_msg(_("No JobId specified.\n"));
+         return false;
+      }
+      if (!sl.set_string(ua->argv[i], true)) {
+         ua->send_msg("%s", sl.get_errmsg());
+         return false;
+      }
+      return true;
+   }
+
+   /* No JobId list give, so see if he specified a Job */
+   if ((i=find_arg(ua, "job")) >= 0) {
+      rc.job_name = ua->argv[i];
+      if (!get_job(ua, rc)) {
+         ua->send_msg(_("Invalid or no Job name specified.\n"));
+         return false;
+      }
+   }
+   jr.limit = 100;  /* max 100 records */
+   if (rc.job_name) {
+      bstrncpy(jr.Name, rc.job_name, sizeof(jr.Name));
+   } else {
+      jr.Name[0] = 0;
+   }
+   jr.JobStatus = rc.jr.JobStatus;
+   Dmsg2(100, "JobStatus=%d JobName=%s\n", jr.JobStatus, jr.Name);
+   /* rc.JobIds is alist of all records found and printed */
+   rc.JobIds = db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua, INCOMPLETE_JOBS);
+   if (!rc.JobIds || rc.JobIds->size()==0 ||
+       !get_selection_list(ua, sl, _("Enter the JobId list to select: "), false)) {
+      return false;
+   }
+   Dmsg1(100, "list=%s\n", sl.get_list());
    /*
-    * Prompt User to see if all run job parameters are correct, and
-    *   allow him to modify them.
+    * Make sure each item entered is in the JobIds list
     */
-   if (!display_job_parameters(ua, jcr, rc.job, rc.verify_list, rc.jid, rc.replace,
-        rc.client_name)) {
-      goto bail_out;
+   while ( (JobId = sl.next()) > 0) {
+      foreach_alist(pJobId, rc.JobIds) {
+         if (JobId == str_to_int64(pJobId)) {
+            pJobId[0] = 0;
+            found = true;
+            break;
+         }
+      }
+      if (!found) {
+         ua->error_msg(_("JobId=%d entered is not in the list.\n"), JobId);
+         return false;
+      }
    }
+   sl.begin();         /* reset to walk list again */
+   rc.done = false;
+   return true;
+}
 
-   if (!get_cmd(ua, _("OK to run? (yes/mod/no): "))) {
-      goto bail_out;
+static bool get_jobid_from_list(UAContext *ua, sellist &sl, run_ctx &rc)
+{
+   int JobId;
+
+   if (rc.done) {
+      return false;
+   }
+   if ((JobId = sl.next()) < 0) {
+      Dmsg1(100, "sl.next()=%d\n", JobId);
+      rc.done = true;
+      return false;
    }
+   rc.jr.JobId = rc.JobId = JobId;
+   Dmsg1(100, "Next JobId=%d\n", rc.JobId);
+   if (!db_get_job_record(ua->jcr, ua->db, &rc.jr)) {
+      ua->error_msg(_("Could not get job record for selected JobId=%d. ERR=%s"),
+                    rc.JobId, db_strerror(ua->db));
+      return false;
+   }
+   Dmsg3(100, "Job=%s JobId=%d JobStatus=%c\n", rc.jr.Name, rc.jr.JobId,
+         rc.jr.JobStatus);
+   rc.job_name = rc.jr.Name;
+   if (!get_job(ua, rc)) {
+      return false;
+   }
+   if (!get_pool(ua, rc)) {
+      return false;
+   }
+   get_job_storage(rc.store, rc.job, NULL);
+   rc.client_name = rc.job->client->hdr.name;
+   if (!get_client(ua, rc)) {
+      return false;
+   }
+   if (!get_fileset(ua, rc)) {
+      return false;
+   }
+   if (!get_storage(ua, rc)) {
+      return false;
+   }
+   return true;
+}
 
-   if (strncasecmp(ua->cmd, ".mod ", 5) == 0 || 
-       (strncasecmp(ua->cmd, "mod ", 4) == 0 && strlen(ua->cmd) > 6)) {
-      parse_ua_args(ua);
-      rc.mod = true;
-      if (!scan_command_line_arguments(ua, rc)) {
+/*
+ * Restart Canceled or Failed
+ *
+ *  Returns: 0 on error
+ *           JobId if OK
+ *
+ */
+int restart_cmd(UAContext *ua, const char *cmd)
+{
+   JCR *jcr = NULL;
+   run_ctx rc;
+   sellist sl;
+   int i, j;
+   bool got_kw = false;
+   struct s_js {
+      const char *status_name;
+      int32_t job_status;
+   };
+   struct s_js kw[] = {
+      {"Canceled",   JS_Canceled},
+      {"Failed",     JS_FatalError},
+      {"All",        0},
+      {NULL,         0}
+   };
+
+   if (!open_client_db(ua)) {
+      return 0;
+   }
+
+   rc.jr.JobStatus = 0;
+   for (i=1; i<ua->argc; i++) {
+      for (j=0; kw[j].status_name; j++) {
+         if (strcasecmp(ua->argk[i], kw[j].status_name) == 0) {
+            rc.jr.JobStatus = kw[j].job_status;
+            got_kw = true;
+            break;
+         }
+      }
+   }
+   if (!got_kw) {  /* Must prompt user */
+      start_prompt(ua, _("You have the following choices:\n"));
+      for (i=0; kw[i].status_name; i++) {
+         add_prompt(ua, kw[i].status_name);
+      }
+      i = do_prompt(ua, NULL, _("Select termination code: "), NULL, 0);
+      if (i < 0) {
          return 0;
       }
-      goto try_again;
+      rc.jr.JobStatus = kw[i].job_status;
    }
 
-   /* Allow the user to modify the settings */
-   status = modify_job_parameters(ua, jcr, rc);
-   switch (status) {
-   case 0:
-      goto try_again;
-   case 1:
-      break;
-   case -1:
-      goto bail_out;
-   }
+   /* type now has what job termination code we want to look at */
+   Dmsg1(100, "Termination code=%c\n", rc.jr.JobStatus);
 
+   /* Get a list of JobIds to restore */
+   if (!get_jobid_list(ua, sl, rc)) {
+      if (rc.JobIds) {
+         rc.JobIds->destroy();
+      }
+      return false;
+   }
+   Dmsg1(100, "list=%s\n", sl.get_list());
 
-   if (ua->cmd[0] == 0 || strncasecmp(ua->cmd, _("yes"), strlen(ua->cmd)) == 0) {
-      JobId_t JobId;
-      Dmsg1(800, "Calling run_job job=%x\n", jcr->job);
+   while (get_jobid_from_list(ua, sl, rc)) {
+      /*
+       * Create JCR to run job.  NOTE!!! after this point, free_jcr()
+       *  before returning.
+       */
+      if (!jcr) {
+         jcr = new_jcr(sizeof(JCR), dird_free_jcr);
+         set_jcr_defaults(jcr, rc.job);
+         jcr->unlink_bsr = ua->jcr->unlink_bsr;    /* copy unlink flag from caller */
+         ua->jcr->unlink_bsr = false;
+      }
 
-start_job:
-      Dmsg3(100, "JobId=%u using pool %s priority=%d\n", (int)jcr->JobId, 
-            jcr->pool->name(), jcr->JobPriority);
-      Dmsg1(900, "Running a job; its spool_data = %d\n", jcr->spool_data);
-      JobId = run_job(jcr);
-      Dmsg4(100, "JobId=%u NewJobId=%d using pool %s priority=%d\n", (int)jcr->JobId, 
-            JobId, jcr->pool->name(), jcr->JobPriority);
-      free_jcr(jcr);                  /* release jcr */
-      if (JobId == 0) {
-         ua->error_msg(_("Job failed.\n"));
-      } else {
-         char ed1[50];
-         ua->send_msg(_("Job queued. JobId=%s\n"), edit_int64(JobId, ed1));
+      if (!set_run_context_in_jcr(ua, jcr, rc)) {
+         break;
       }
-      return JobId;
+      start_job(ua, jcr, rc);
+      jcr = NULL;
    }
-   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"));
-   free_jcr(jcr);
+   if (jcr) {
+      free_jcr(jcr);
+   }
+   if (rc.JobIds) {
+      rc.JobIds->destroy();
+   }
    return 0;                       /* do not run */
 }
 
+
 int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
 {
    int i, opt;
-   
+
    /*
     * At user request modify parameters of job to be run.
     */
-   if (ua->cmd[0] != 0 && strncasecmp(ua->cmd, _("mod"), strlen(ua->cmd)) == 0) {
+   if (ua->cmd[0] != 0 && strncasecmp(ua->cmd, _("mod"), strlen(ua->cmd)) == 0){
       FILE *fd;
 
       start_prompt(ua, _("Parameters to modify:\n"));
@@ -236,13 +631,18 @@ int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
           jcr->getJobType() == JT_MIGRATE ||
           jcr->getJobType() == JT_VERIFY) {
          add_prompt(ua, _("Pool"));          /* 7 */
-         if (jcr->getJobType() == JT_VERIFY) {
+         if ((jcr->getJobType() == JT_BACKUP &&   /* Virtual full */
+              jcr->is_JobLevel(L_VIRTUAL_FULL)) ||
+             jcr->getJobType() == JT_COPY ||
+             jcr->getJobType() == JT_MIGRATE) {
+            add_prompt(ua, _("NextPool"));          /* 8 */
+         } else if (jcr->getJobType() == JT_VERIFY) {
             add_prompt(ua, _("Verify Job"));  /* 8 */
          }
       } else if (jcr->getJobType() == JT_RESTORE) {
          add_prompt(ua, _("Bootstrap"));     /* 7 */
          add_prompt(ua, _("Where"));         /* 8 */
-         add_prompt(ua, _("File Relocation"));/* 9 */    
+         add_prompt(ua, _("File Relocation"));/* 9 */
          add_prompt(ua, _("Replace"));       /* 10 */
          add_prompt(ua, _("JobId"));         /* 11 */
       }
@@ -253,6 +653,10 @@ int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
       case 0:
          /* Level */
          select_job_level(ua, jcr);
+         if (jcr->is_JobType(JT_BACKUP) && !jcr->is_JobLevel(L_VIRTUAL_FULL)) {
+            apply_pool_overrides(jcr);
+            rc.pool = jcr->pool;
+         }
          goto try_again;
       case 1:
          /* Storage */
@@ -314,19 +718,19 @@ int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
             jcr->JobPriority = ua->pint32_val;
          }
          goto try_again;
-      case 7: 
+      case 7:
          /* Pool or Bootstrap depending on JobType */
          if (jcr->getJobType() == JT_BACKUP ||
              jcr->getJobType() == JT_COPY ||
              jcr->getJobType() == JT_MIGRATE ||
              jcr->getJobType() == JT_VERIFY) {      /* Pool */
             rc.pool = select_pool_resource(ua);
-            if (rc.pool) {
+            if (rc.pool && rc.pool != jcr->pool) {
                jcr->pool = rc.pool;
+               pm_strcpy(jcr->pool_source, _("User input"));
                Dmsg1(100, "Set new pool=%s\n", jcr->pool->name());
-               goto try_again;
             }
-            break;
+            goto try_again;
          }
 
          /* Bootstrap */
@@ -352,6 +756,18 @@ int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
          }
          goto try_again;
       case 8:
+         /* Specify Next Pool */
+         if ((jcr->getJobType() == JT_BACKUP &&   /* Virtual full */
+              jcr->is_JobLevel(L_VIRTUAL_FULL)) ||
+             jcr->getJobType() == JT_COPY ||
+             jcr->getJobType() == JT_MIGRATE) {
+            rc.next_pool = select_pool_resource(ua);
+            if (rc.next_pool) {
+               jcr->next_pool = rc.next_pool;
+               pm_strcpy(jcr->next_pool_source, _("Command input"));
+               goto try_again;
+            }
+         }
          /* Verify Job */
          if (jcr->getJobType() == JT_VERIFY) {
             rc.verify_job = select_job_resource(ua);
@@ -377,7 +793,7 @@ int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
          }
          jcr->where = bstrdup(ua->cmd);
          goto try_again;
-      case 9: 
+      case 9:
          /* File relocation */
          select_where_regexp(ua, jcr);
          goto try_again;
@@ -401,16 +817,7 @@ int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
             ua->send_msg(_("You must set the bootstrap file to NULL to be able to specify a JobId.\n"));
          }
          goto try_again;
-      case 12:        
-         /* Plugin Options */
-         if (!get_cmd(ua, _("Please Plugin Options string: "))) {
-            break;
-         }
-         if (jcr->plugin_options) {
-            free(jcr->plugin_options);
-            jcr->plugin_options = NULL;
-         }
-         jcr->plugin_options = bstrdup(ua->cmd);
+      case 12:
          goto try_again;
       case -1:                        /* error or cancel */
          goto bail_out;
@@ -423,29 +830,42 @@ int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
 
 bail_out:
    return -1;
-
 try_again:
    return 0;
 }
 
 /*
- * Reset the restore context. 
+ * Put the run context that we have at this point into the JCR.
+ * That allows us to re-ask for the run context.
  * This subroutine can be called multiple times, so it
  *  must keep any prior settings.
  */
-static bool reset_restore_context(UAContext *ua, JCR *jcr, run_ctx &rc)
+static bool set_run_context_in_jcr(UAContext *ua, JCR *jcr, run_ctx &rc)
 {
    int i;
 
    jcr->verify_job = rc.verify_job;
    jcr->previous_job = rc.previous_job;
    jcr->pool = rc.pool;
-   if (jcr->pool != jcr->job->pool) {
-      pm_strcpy(jcr->pool_source, _("User input"));
+   jcr->next_pool = rc.next_pool;
+   if (rc.pool_name) {
+      pm_strcpy(jcr->pool_source, _("Command input"));
    }
+   if (rc.next_pool_name) {
+      pm_strcpy(jcr->next_pool_source, _("Command input"));
+   } else if (jcr->next_pool != jcr->pool->NextPool) {
+      pm_strcpy(jcr->next_pool_source, _("User input"));
+   }
+
    set_rwstorage(jcr, rc.store);
    jcr->client = rc.client;
    pm_strcpy(jcr->client_name, rc.client->name());
+   if (rc.media_type) {
+      if (!jcr->media_type) {
+         jcr->media_type = get_pool_memory(PM_NAME);
+      }
+      pm_strcpy(jcr->media_type, rc.media_type);
+   }
    jcr->fileset = rc.fileset;
    jcr->ExpectedFiles = rc.files;
    if (rc.catalog) {
@@ -467,7 +887,7 @@ static bool reset_restore_context(UAContext *ua, JCR *jcr, run_ctx &rc)
       if (jcr->RegexWhere) {
          free(jcr->RegexWhere);
       }
-      jcr->RegexWhere = bstrdup(rc.regexwhere);       
+      jcr->RegexWhere = bstrdup(rc.regexwhere);
       rc.regexwhere = NULL;
    }
 
@@ -535,13 +955,14 @@ static bool reset_restore_context(UAContext *ua, JCR *jcr, run_ctx &rc)
    /* If pool changed, update migration write storage */
    if (jcr->is_JobType(JT_MIGRATE) || jcr->is_JobType(JT_COPY) ||
       (jcr->is_JobType(JT_BACKUP) && jcr->is_JobLevel(L_VIRTUAL_FULL))) {
-      if (!set_migration_wstorage(jcr, rc.pool)) {
+      if (!set_mac_wstorage(ua, jcr, rc.pool, rc.next_pool,
+            jcr->next_pool_source)) {
          return false;
       }
    }
    rc.replace = ReplaceOptions[0].name;
    for (i=0; ReplaceOptions[i].name; i++) {
-      if (ReplaceOptions[i].token == jcr->replace) {
+      if ((int)ReplaceOptions[i].token == (int)jcr->replace) {
          rc.replace = ReplaceOptions[i].name;
       }
    }
@@ -555,6 +976,14 @@ static bool reset_restore_context(UAContext *ua, JCR *jcr, run_ctx &rc)
    if (rc.jid) {
       /* Note, this is also MigrateJobId and a VerifyJobId */
       jcr->RestoreJobId = str_to_int64(rc.jid);
+
+      /* Copy also this parameter for VirtualFull in jcr->JobIds */
+      if (!jcr->JobIds) {
+         jcr->JobIds = get_pool_memory(PM_FNAME);
+      }
+      pm_strcpy(jcr->JobIds, rc.jid);
+      jcr->use_all_JobIds = rc.alljobid; /* if we found the "alljobid=" kw */
+      rc.alljobid = false;
       rc.jid = 0;
    }
 
@@ -596,7 +1025,7 @@ try_again_reg:
    add_prompt(ua, _("Enter a regexp"));              /* 3 */
    add_prompt(ua, _("Test filename manipulation"));  /* 4 */
    add_prompt(ua, _("Use this ?"));                  /* 5 */
-   
+
    switch (do_prompt(ua, "", _("Select parameter to modify"), NULL, 0)) {
    case 0:
       /* Strip prefix */
@@ -604,7 +1033,7 @@ try_again_reg:
          if (strip_prefix) bfree(strip_prefix);
          strip_prefix = bstrdup(ua->cmd);
       }
-      
+
       goto try_again_reg;
    case 1:
       /* Add prefix */
@@ -622,7 +1051,7 @@ try_again_reg:
       if (get_cmd(ua, _("Please enter the file suffix to add: "))) {
          if (add_suffix) bfree(add_suffix);
          add_suffix = bstrdup(ua->cmd);
-      }      
+      }
       goto try_again_reg;
    case 3:
       /* Add rwhere */
@@ -630,13 +1059,13 @@ try_again_reg:
          if (rwhere) bfree(rwhere);
          rwhere = bstrdup(ua->cmd);
       }
-      
-      goto try_again_reg;      
+
+      goto try_again_reg;
    case 4:
-      /* Test regexp */ 
+      /* Test regexp */
       char *result;
       char *regexp;
-      
+
       if (rwhere && rwhere[0] != '\0') {
          regs = get_bregexps(rwhere);
          ua->send_msg(_("regexwhere=%s\n"), NPRT(rwhere));
@@ -647,7 +1076,7 @@ try_again_reg:
          regs = get_bregexps(regexp);
          ua->send_msg(_("strip_prefix=%s add_prefix=%s add_suffix=%s result=%s\n"),
                       NPRT(strip_prefix), NPRT(add_prefix), NPRT(add_suffix), NPRT(regexp));
-         
+
          bfree(regexp);
       }
 
@@ -777,7 +1206,7 @@ static void select_job_level(UAContext *ua, JCR *jcr)
 }
 
 static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char *verify_list,
-   char *jid, const char *replace, char *client_name) 
+   char *jid, const char *replace, char *client_name)
 {
    char ec1[30];
    char dt[MAX_TIME_LENGTH];
@@ -786,7 +1215,7 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
    switch (jcr->getJobType()) {
    case JT_ADMIN:
       if (ua->api) {
-         ua->signal(BNET_RUN_CMD);   
+         ua->signal(BNET_RUN_CMD);
          ua->send_msg("Type: Admin\n"
                      "Title: Run Admin Job\n"
                      "JobName:  %s\n"
@@ -820,9 +1249,15 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
       break;
    case JT_BACKUP:
    case JT_VERIFY:
+      char next_pool[MAX_NAME_LENGTH + 50];
+      next_pool[0] = 0;
       if (jcr->getJobType() == JT_BACKUP) {
          if (ua->api) {
-            ua->signal(BNET_RUN_CMD);   
+            ua->signal(BNET_RUN_CMD);
+            if (jcr->is_JobLevel(L_VIRTUAL_FULL)) {
+               bsnprintf(next_pool, sizeof(next_pool), "NextPool: %s\n",
+                  jcr->next_pool ? jcr->next_pool->name() : "*None*");
+            }
             ua->send_msg("Type: Backup\n"
                         "Title: Run Backup Job\n"
                         "JobName:  %s\n"
@@ -830,43 +1265,45 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                         "Client:   %s\n"
                         "FileSet:  %s\n"
                         "Pool:     %s\n"
+                        "%s"
                         "Storage:  %s\n"
                         "When:     %s\n"
-                        "Priority: %d\n"
-                        "%s%s%s",
+                        "Priority: %d\n",
                  job->name(),
                  level_to_str(jcr->getJobLevel()),
                  jcr->client->name(),
                  jcr->fileset->name(),
                  NPRT(jcr->pool->name()),
+                 next_pool,
                  jcr->wstore?jcr->wstore->name():"*None*",
                  bstrutime(dt, sizeof(dt), jcr->sched_time),
-                 jcr->JobPriority,
-                 jcr->plugin_options?"Plugin Options: ":"",
-                 jcr->plugin_options?jcr->plugin_options:"",
-                 jcr->plugin_options?"\n":"");
+                 jcr->JobPriority);
          } else {
+            if (jcr->is_JobLevel(L_VIRTUAL_FULL)) {
+               bsnprintf(next_pool, sizeof(next_pool),
+                  "NextPool: %s (From %s)\n",
+                  jcr->next_pool ? jcr->next_pool->name() : "*None*",
+                  jcr->next_pool_source);
+            }
             ua->send_msg(_("Run Backup job\n"
                         "JobName:  %s\n"
                         "Level:    %s\n"
                         "Client:   %s\n"
                         "FileSet:  %s\n"
                         "Pool:     %s (From %s)\n"
+                        "%s"
                         "Storage:  %s (From %s)\n"
                         "When:     %s\n"
-                        "Priority: %d\n"
-                        "%s%s%s"),
+                        "Priority: %d\n"),
                  job->name(),
                  level_to_str(jcr->getJobLevel()),
                  jcr->client->name(),
                  jcr->fileset->name(),
                  NPRT(jcr->pool->name()), jcr->pool_source,
+                 next_pool,
                  jcr->wstore?jcr->wstore->name():"*None*", jcr->wstore_source,
                  bstrutime(dt, sizeof(dt), jcr->sched_time),
-                 jcr->JobPriority,
-                 jcr->plugin_options?"Plugin Options: ":"",
-                 jcr->plugin_options?jcr->plugin_options:"",
-                 jcr->plugin_options?"\n":"");
+                 jcr->JobPriority);
          }
       } else {  /* JT_VERIFY */
          JOB_DBR jr;
@@ -892,7 +1329,7 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
             verify_list = "";
          }
          if (ua->api) {
-            ua->signal(BNET_RUN_CMD);   
+            ua->signal(BNET_RUN_CMD);
             ua->send_msg("Type: Verify\n"
                         "Title: Run Verify Job\n"
                         "JobName:     %s\n"
@@ -957,7 +1394,7 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
          /* RegexWhere is take before RestoreWhere */
          if (jcr->RegexWhere || (job->RegexWhere && !jcr->where)) {
             if (ua->api) {
-               ua->signal(BNET_RUN_CMD);   
+               ua->signal(BNET_RUN_CMD);
                ua->send_msg("Type: Restore\n"
                         "Title: Run Restore Job\n"
                         "JobName:         %s\n"
@@ -970,10 +1407,9 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                         "Storage:         %s\n"
                         "When:            %s\n"
                         "Catalog:         %s\n"
-                        "Priority:        %d\n"
-                        "Plugin Options:  %s\n",
+                        "Priority:        %d\n",
                  job->name(),
-                 NPRT(jcr->RestoreBootstrap), 
+                 NPRT(jcr->RestoreBootstrap),
                  jcr->RegexWhere?jcr->RegexWhere:job->RegexWhere,
                  replace,
                  jcr->fileset->name(),
@@ -982,8 +1418,7 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                  jcr->rstore->name(),
                  bstrutime(dt, sizeof(dt), jcr->sched_time),
                  jcr->catalog->name(),
-                 jcr->JobPriority,
-                 NPRT(jcr->plugin_options));
+                 jcr->JobPriority);
             } else {
                ua->send_msg(_("Run Restore job\n"
                         "JobName:         %s\n"
@@ -996,10 +1431,9 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                         "Storage:         %s\n"
                         "When:            %s\n"
                         "Catalog:         %s\n"
-                        "Priority:        %d\n"
-                        "Plugin Options:  %s\n"),
+                        "Priority:        %d\n"),
                  job->name(),
-                 NPRT(jcr->RestoreBootstrap), 
+                 NPRT(jcr->RestoreBootstrap),
                  jcr->RegexWhere?jcr->RegexWhere:job->RegexWhere,
                  replace,
                  jcr->fileset->name(),
@@ -1008,12 +1442,11 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                  jcr->rstore->name(),
                  bstrutime(dt, sizeof(dt), jcr->sched_time),
                  jcr->catalog->name(),
-                 jcr->JobPriority,
-                 NPRT(jcr->plugin_options));
+                 jcr->JobPriority);
             }
          } else {
             if (ua->api) {
-               ua->signal(BNET_RUN_CMD);   
+               ua->signal(BNET_RUN_CMD);
                ua->send_msg("Type: Restore\n"
                         "Title: Run Restore job\n"
                         "JobName:         %s\n"
@@ -1026,11 +1459,10 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                         "Storage:         %s\n"
                         "When:            %s\n"
                         "Catalog:         %s\n"
-                        "Priority:        %d\n"
-                        "Plugin Options:  %s\n",
+                        "Priority:        %d\n",
                  job->name(),
-                 NPRT(jcr->RestoreBootstrap), 
-                 jcr->where?jcr->where:NPRT(job->RestoreWhere), 
+                 NPRT(jcr->RestoreBootstrap),
+                 jcr->where?jcr->where:NPRT(job->RestoreWhere),
                  replace,
                  jcr->fileset->name(),
                  client_name,
@@ -1038,8 +1470,7 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                  jcr->rstore->name(),
                  bstrutime(dt, sizeof(dt), jcr->sched_time),
                  jcr->catalog->name(),
-                 jcr->JobPriority,
-                 NPRT(jcr->plugin_options));
+                 jcr->JobPriority);
             } else {
                ua->send_msg(_("Run Restore job\n"
                         "JobName:         %s\n"
@@ -1052,11 +1483,10 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                         "Storage:         %s\n"
                         "When:            %s\n"
                         "Catalog:         %s\n"
-                        "Priority:        %d\n"
-                        "Plugin Options:  %s\n"),
+                        "Priority:        %d\n"),
                  job->name(),
-                 NPRT(jcr->RestoreBootstrap), 
-                 jcr->where?jcr->where:NPRT(job->RestoreWhere), 
+                 NPRT(jcr->RestoreBootstrap),
+                 jcr->where?jcr->where:NPRT(job->RestoreWhere),
                  replace,
                  jcr->fileset->name(),
                  client_name,
@@ -1064,20 +1494,19 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                  jcr->rstore->name(),
                  bstrutime(dt, sizeof(dt), jcr->sched_time),
                  jcr->catalog->name(),
-                 jcr->JobPriority,
-                 NPRT(jcr->plugin_options));
+                 jcr->JobPriority);
             }
          }
 
       } else {
          /* ***FIXME*** This needs to be fixed for bat */
-         if (ua->api) ua->signal(BNET_RUN_CMD);   
+         if (ua->api) ua->signal(BNET_RUN_CMD);
          ua->send_msg(_("Run Restore job\n"
                         "JobName:    %s\n"
                         "Bootstrap:  %s\n"),
                       job->name(),
                       NPRT(jcr->RestoreBootstrap));
-                      
+
          /* RegexWhere is take before RestoreWhere */
          if (jcr->RegexWhere || (job->RegexWhere && !jcr->where)) {
             ua->send_msg(_("RegexWhere: %s\n"),
@@ -1093,17 +1522,15 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                         "JobId:           %s\n"
                         "When:            %s\n"
                         "Catalog:         %s\n"
-                        "Priority:        %d\n"
-                        "Plugin Options:  %s\n"),
+                        "Priority:        %d\n"),
               replace,
               jcr->client->name(),
               jcr->rstore->name(),
               jcr->RestoreJobId==0?"*None*":edit_uint64(jcr->RestoreJobId, ec1),
               bstrutime(dt, sizeof(dt), jcr->sched_time),
               jcr->catalog->name(),
-              jcr->JobPriority,
-              NPRT(jcr->plugin_options));
-      }
+              jcr->JobPriority);
+       }
       break;
    case JT_COPY:
    case JT_MIGRATE:
@@ -1122,6 +1549,7 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                      "Client:        %s\n"
                      "FileSet:       %s\n"
                      "Pool:          %s\n"
+                     "NextPool:      %s\n"
                      "Read Storage:  %s\n"
                      "Write Storage: %s\n"
                      "JobId:         %s\n"
@@ -1134,6 +1562,7 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
            jcr->client->name(),
            jcr->fileset->name(),
            NPRT(jcr->pool->name()),
+           jcr->next_pool?jcr->next_pool->name():"*None*",
            jcr->rstore->name(),
            jcr->wstore?jcr->wstore->name():"*None*",
            jcr->MigrateJobId==0?"*None*":edit_uint64(jcr->MigrateJobId, ec1),
@@ -1152,6 +1581,7 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
                      "Client:        %s\n"
                      "FileSet:       %s\n"
                      "Pool:          %s (From %s)\n"
+                     "NextPool:      %s (From %s)\n"
                      "Read Storage:  %s (From %s)\n"
                      "Write Storage: %s (From %s)\n"
                      "JobId:         %s\n"
@@ -1164,6 +1594,8 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
            jcr->client->name(),
            jcr->fileset->name(),
            NPRT(jcr->pool->name()), jcr->pool_source,
+           jcr->next_pool?jcr->next_pool->name():"*None*",
+               NPRT(jcr->next_pool_source),
            jcr->rstore->name(), jcr->rstore_source,
            jcr->wstore?jcr->wstore->name():"*None*", jcr->wstore_source,
            jcr->MigrateJobId==0?"*None*":edit_uint64(jcr->MigrateJobId, ec1),
@@ -1180,12 +1612,12 @@ static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char
 }
 
 
-static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
+static bool scan_run_command_line_arguments(UAContext *ua, run_ctx &rc)
 {
    bool kw_ok;
    int i, j;
    static const char *kw[] = {        /* command line arguments */
-      "job",                          /*  Used in a switch() */
+      "alljobid",                     /* 0 Used in a switch() */
       "jobid",                        /* 1 */
       "client",                       /* 2 */
       "fd",                           /* 3 */
@@ -1215,6 +1647,9 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
       "comment",                      /* 27 */
       "ignoreduplicatecheck",         /* 28 */
       "accurate",                     /* 29 */
+      "job",                          /* 30 */
+      "mediatype",                    /* 31 */
+      "nextpool",                     /* 32 override next pool name */
       NULL
    };
 
@@ -1223,8 +1658,10 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
    rc.catalog_name = NULL;
    rc.job_name = NULL;
    rc.pool_name = NULL;
+   rc.next_pool_name = NULL;
    rc.store_name = NULL;
    rc.client_name = NULL;
+   rc.media_type = NULL;
    rc.restore_client_name = NULL;
    rc.fileset_name = NULL;
    rc.verify_job_name = NULL;
@@ -1245,17 +1682,12 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
                ua->send_msg(_("Value missing for keyword %s\n"), ua->argk[i]);
                return false;
             }
-            Dmsg1(800, "Got keyword=%s\n", NPRT(kw[j]));
+            Dmsg2(800, "Got j=%d keyword=%s\n", j, NPRT(kw[j]));
             switch (j) {
-            case 0: /* job */
-               if (rc.job_name) {
-                  ua->send_msg(_("Job name specified twice.\n"));
-                  return false;
-               }
-               rc.job_name = ua->argv[i];
-               kw_ok = true;
-               break;
-            case 1: /* JobId */
+            case 0: /* alljobid */
+               rc.alljobid = true;
+               /* Fall through wanted */
+            case 1:  /* JobId */
                if (rc.jid && !rc.mod) {
                   ua->send_msg(_("JobId specified twice.\n"));
                   return false;
@@ -1378,7 +1810,7 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
                break;
             case 18: /* since */
                rc.since = ua->argv[i];
-               kw_ok = true; 
+               kw_ok = true;
                break;
             case 19: /* cloned */
                rc. cloned = true;
@@ -1474,11 +1906,36 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
                   ua->send_msg(_("Invalid accurate flag.\n"));
                }
                break;
+            case 30: /* job */
+               if (rc.job_name) {
+                  ua->send_msg(_("Job name specified twice.\n"));
+                  return false;
+               }
+               rc.job_name = ua->argv[i];
+               kw_ok = true;
+               break;
+            case 31: /* mediatype */
+               if (rc.media_type) {
+                  ua->send_msg(_("Media Type specified twice.\n"));
+                  return false;
+               }
+               rc.media_type = ua->argv[i];
+               kw_ok = true;
+               break;
+            case 32: /* Next Pool */
+               if (rc.next_pool_name) {
+                  ua->send_msg(_("NextPool specified twice.\n"));
+                  return false;
+               }
+               rc.next_pool_name = ua->argv[i];
+               kw_ok = true;
+               break;
             default:
                break;
             }
          } /* end strcase compare */
       } /* end keyword loop */
+
       /*
        * End of keyword for loop -- if not found, we got a bogus keyword
        */
@@ -1497,7 +1954,7 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
          }
       }
    } /* end argc loop */
-             
+
    Dmsg0(800, "Done scan.\n");
    if (rc.comment) {
       if (!is_comment_legal(ua, rc.comment)) {
@@ -1517,124 +1974,28 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
    }
    Dmsg1(800, "Using catalog=%s\n", NPRT(rc.catalog_name));
 
-   if (rc.job_name) {
-      /* Find Job */
-      rc.job = GetJobResWithName(rc.job_name);
-      if (!rc.job) {
-         if (*rc.job_name != 0) {
-            ua->send_msg(_("Job \"%s\" not found\n"), rc.job_name);
-         }
-         rc.job = select_job_resource(ua);
-      } else {
-         Dmsg1(800, "Found job=%s\n", rc.job_name);
-      }
-   } else if (!rc.job) {
-      ua->send_msg(_("A job name must be specified.\n"));
-      rc.job = select_job_resource(ua);
-   }
-   if (!rc.job) {
-      return false;
-   } else if (!acl_access_ok(ua, Job_ACL, rc.job->name())) {
-      ua->error_msg( _("No authorization. Job \"%s\".\n"), rc.job->name());
+   if (!get_job(ua, rc)) {
       return false;
    }
 
-   if (rc.pool_name) {
-      rc.pool = GetPoolResWithName(rc.pool_name);
-      if (!rc.pool) {
-         if (*rc.pool_name != 0) {
-            ua->warning_msg(_("Pool \"%s\" not found.\n"), rc.pool_name);
-         }
-         rc.pool = select_pool_resource(ua);
-      }
-   } else if (!rc.pool) {
-      rc.pool = rc.job->pool;             /* use default */
-   }
-   if (!rc.pool) {
-      return false;
-   } else if (!acl_access_ok(ua, Pool_ACL, rc.pool->name())) {
-      ua->error_msg(_("No authorization. Pool \"%s\".\n"), rc.pool->name());
+   if (!get_pool(ua, rc)) {
       return false;
    }
-   Dmsg1(100, "Using pool %s\n", rc.pool->name());
 
-   if (rc.store_name) {
-      rc.store->store = GetStoreResWithName(rc.store_name);
-      pm_strcpy(rc.store->store_source, _("command line"));
-      if (!rc.store->store) {
-         if (*rc.store_name != 0) {
-            ua->warning_msg(_("Storage \"%s\" not found.\n"), rc.store_name);
-         }
-         rc.store->store = select_storage_resource(ua);
-         pm_strcpy(rc.store->store_source, _("user selection"));
-      }
-   } else if (!rc.store->store) {
-      get_job_storage(rc.store, rc.job, NULL);      /* use default */
-   }
-   if (!rc.store->store) {
-      ua->error_msg(_("No storage specified.\n"));
-      return false;
-   } else if (!acl_access_ok(ua, Storage_ACL, rc.store->store->name())) {
-      ua->error_msg(_("No authorization. Storage \"%s\".\n"),
-               rc.store->store->name());
+   if (!get_next_pool(ua, rc)) {
       return false;
    }
-   Dmsg1(800, "Using storage=%s\n", rc.store->store->name());
 
-   if (rc.client_name) {
-      rc.client = GetClientResWithName(rc.client_name);
-      if (!rc.client) {
-         if (*rc.client_name != 0) {
-            ua->warning_msg(_("Client \"%s\" not found.\n"), rc.client_name);
-         }
-         rc.client = select_client_resource(ua);
-      }
-   } else if (!rc.client) {
-      rc.client = rc.job->client;           /* use default */
-   }
-   if (!rc.client) {
-      return false;
-   } else if (!acl_access_ok(ua, Client_ACL, rc.client->name())) {
-      ua->error_msg(_("No authorization. Client \"%s\".\n"),
-               rc.client->name());
+   if (!get_storage(ua, rc)) {
       return false;
    }
-   Dmsg1(800, "Using client=%s\n", rc.client->name());
 
-   if (rc.restore_client_name) {
-      rc.client = GetClientResWithName(rc.restore_client_name);
-      if (!rc.client) {
-         if (*rc.restore_client_name != 0) {
-            ua->warning_msg(_("Restore Client \"%s\" not found.\n"), rc.restore_client_name);
-         }
-         rc.client = select_client_resource(ua);
-      }
-   } else if (!rc.client) {
-      rc.client = rc.job->client;           /* use default */
-   }
-   if (!rc.client) {
-      return false;
-   } else if (!acl_access_ok(ua, Client_ACL, rc.client->name())) {
-      ua->error_msg(_("No authorization. Client \"%s\".\n"),
-               rc.client->name());
+
+   if (!get_client(ua, rc)) {
       return false;
    }
-   Dmsg1(800, "Using restore client=%s\n", rc.client->name());
 
-   if (rc.fileset_name) {
-      rc.fileset = GetFileSetResWithName(rc.fileset_name);
-      if (!rc.fileset) {
-         ua->send_msg(_("FileSet \"%s\" not found.\n"), rc.fileset_name);
-         rc.fileset = select_fileset_resource(ua);
-      }
-   } else if (!rc.fileset) {
-      rc.fileset = rc.job->fileset;           /* use default */
-   }
-   if (!rc.fileset) {
-      return false;
-   } else if (!acl_access_ok(ua, FileSet_ACL, rc.fileset->name())) {
-      ua->send_msg(_("No authorization. FileSet \"%s\".\n"),
-               rc.fileset->name());
+   if (!get_fileset(ua, rc)) {
       return false;
    }
 
diff --git a/src/dird/ua_select.c b/src/dird/ua_select.c
index 23b75b4..72a5d61 100644
--- a/src/dird/ua_select.c
+++ b/src/dird/ua_select.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -150,17 +138,28 @@ int do_keyword_prompt(UAContext *ua, const char *msg, const char **list)
 
 /*
  * Select a Storage resource from prompt list
+ *  If unique is set storage resources that have the main address are
+ *   combined into one (i.e. they are all part of the same)
+ *   storage.  Note, not all commands want this.
  */
-STORE *select_storage_resource(UAContext *ua)
+STORE *select_storage_resource(UAContext *ua, bool unique)
 {
    char name[MAX_NAME_LENGTH];
    STORE *store;
 
+   /* Does user want a full selection? */
+   if (unique && find_arg(ua, NT_("select")) > 0) {
+      unique = false;
+   }
    start_prompt(ua, _("The defined Storage resources are:\n"));
    LockRes();
    foreach_res(store, R_STORAGE) {
       if (acl_access_ok(ua, Storage_ACL, store->name())) {
-         add_prompt(ua, store->name());
+         if (unique) {
+            add_prompt(ua, store->name(), store->address);
+         } else {
+            add_prompt(ua, store->name());
+         }
       }
    }
    UnlockRes();
@@ -244,7 +243,7 @@ CAT *get_catalog_resource(UAContext *ua)
 
 
 /*
- * Select a job to enable or disable   
+ * Select a job to enable or disable
  */
 JOB *select_enable_disable_job_resource(UAContext *ua, bool enable)
 {
@@ -293,7 +292,7 @@ JOB *select_job_resource(UAContext *ua)
    return job;
 }
 
-/* 
+/*
  * Select a Restore Job resource from argument or prompt
  */
 JOB *get_restore_job(UAContext *ua)
@@ -490,7 +489,7 @@ bool select_client_dbr(UAContext *ua, CLIENT_DBR *cr)
 bool get_pool_dbr(UAContext *ua, POOL_DBR *pr, const char *argk)
 {
    if (pr->Name[0]) {                 /* If name already supplied */
-      if (db_get_pool_record(ua->jcr, ua->db, pr) &&
+      if (db_get_pool_numvols(ua->jcr, ua->db, pr) &&
           acl_access_ok(ua, Pool_ACL, pr->Name)) {
          return true;
       }
@@ -517,7 +516,7 @@ bool select_pool_dbr(UAContext *ua, POOL_DBR *pr, const char *argk)
       if (strcasecmp(ua->argk[i], argk) == 0 && ua->argv[i] &&
           acl_access_ok(ua, Pool_ACL, ua->argv[i])) {
          bstrncpy(pr->Name, ua->argv[i], sizeof(pr->Name));
-         if (!db_get_pool_record(ua->jcr, ua->db, pr)) {
+         if (!db_get_pool_numvols(ua->jcr, ua->db, pr)) {
             ua->error_msg(_("Could not find Pool \"%s\": ERR=%s"), ua->argv[i],
                      db_strerror(ua->db));
             pr->PoolId = 0;
@@ -543,7 +542,7 @@ bool select_pool_dbr(UAContext *ua, POOL_DBR *pr, const char *argk)
    }
    for (i=0; i < num_pools; i++) {
       opr.PoolId = ids[i];
-      if (!db_get_pool_record(ua->jcr, ua->db, &opr) ||
+      if (!db_get_pool_numvols(ua->jcr, ua->db, &opr) ||
           !acl_access_ok(ua, Pool_ACL, opr.Name)) {
          continue;
       }
@@ -562,7 +561,7 @@ bool select_pool_dbr(UAContext *ua, POOL_DBR *pr, const char *argk)
    if (!bstrcmp(name, _("*None*"))) {
      bstrncpy(opr.Name, name, sizeof(opr.Name));
 
-     if (!db_get_pool_record(ua->jcr, ua->db, &opr)) {
+     if (!db_get_pool_numvols(ua->jcr, ua->db, &opr)) {
         ua->error_msg(_("Could not find Pool \"%s\": ERR=%s"), name, db_strerror(ua->db));
         return false;
      }
@@ -695,7 +694,7 @@ POOL *get_pool_resource(UAContext *ua)
 /*
  * List all jobs and ask user to select one
  */
-int select_job_dbr(UAContext *ua, JOB_DBR *jr)
+static int select_job_dbr(UAContext *ua, JOB_DBR *jr)
 {
    db_list_job_records(ua->jcr, ua->db, jr, prtit, ua, HORZ_LIST);
    if (!get_pint(ua, _("Enter the JobId to select: "))) {
@@ -769,28 +768,39 @@ void start_prompt(UAContext *ua, const char *msg)
   if (ua->max_prompts == 0) {
      ua->max_prompts = 10;
      ua->prompt = (char **)bmalloc(sizeof(char *) * ua->max_prompts);
+     ua->unique = (char **)bmalloc(sizeof(char *) * ua->max_prompts);
   }
   ua->num_prompts = 1;
   ua->prompt[0] = bstrdup(msg);
+  ua->unique[0] = NULL;
 }
 
 /*
- * Add to prompts -- keeping them unique
+ * Add to prompts -- keeping them unique by name
  */
-void add_prompt(UAContext *ua, const char *prompt)
+void add_prompt(UAContext *ua, const char *prompt, char *unique)
 {
    int i;
    if (ua->num_prompts == ua->max_prompts) {
       ua->max_prompts *= 2;
       ua->prompt = (char **)brealloc(ua->prompt, sizeof(char *) *
          ua->max_prompts);
+      ua->unique = (char **)brealloc(ua->unique, sizeof(char *) *
+         ua->max_prompts);
     }
     for (i=1; i < ua->num_prompts; i++) {
        if (strcmp(ua->prompt[i], prompt) == 0) {
           return;
+       } else if (unique && strcmp(ua->unique[i], unique) == 0) {
+          return;
        }
     }
-    ua->prompt[ua->num_prompts++] = bstrdup(prompt);
+    ua->prompt[ua->num_prompts] = bstrdup(prompt);
+    if (unique) {
+       ua->unique[ua->num_prompts++] = bstrdup(unique);
+    } else {
+       ua->unique[ua->num_prompts++] = NULL;
+    }
 }
 
 /*
@@ -801,7 +811,7 @@ void add_prompt(UAContext *ua, const char *prompt)
  *               is copied to prompt if not NULL
  *             prompt is set to the chosen prompt item string
  */
-int do_prompt(UAContext *ua, const char *automsg, const char *msg, 
+int do_prompt(UAContext *ua, const char *automsg, const char *msg,
               char *prompt, int max_prompt)
 {
    int i, item;
@@ -880,11 +890,105 @@ int do_prompt(UAContext *ua, const char *automsg, const char *msg,
 done:
    for (i=0; i < ua->num_prompts; i++) {
       free(ua->prompt[i]);
+      if (ua->unique[i]) free(ua->unique[i]);
    }
    ua->num_prompts = 0;
    return item>0 ? item-1 : item;
 }
 
+/*
+ * Display prompts and get user's choice
+ *
+ *  Returns: -1 on error
+ *            number of items selected and the choices are
+ *               copied to selected if not NULL
+ *            selected is an alist of the prompts chosen
+ *              Note! selected must already be initialized.
+ */
+int do_alist_prompt(UAContext *ua, const char *automsg, const char *msg,
+              alist *selected)
+{
+   int i, item;
+   char pmsg[MAXSTRING];
+   BSOCK *user = ua->UA_sock;
+   sellist sl;
+
+   /* First item is the prompt string, not the items */
+   if (ua->num_prompts == 1) {
+      ua->error_msg(_("Selection list for \"%s\" is empty!\n"), automsg);
+      item = -1;                    /* list is empty ! */
+      goto done;
+   }
+   if (ua->num_prompts == 2) {
+      item = 1;
+      selected->append(bstrdup(ua->prompt[1]));
+      ua->send_msg(_("Automatically selected %s: %s\n"), automsg, ua->prompt[1]);
+      goto done;
+   }
+   /* If running non-interactive, bail out */
+   if (ua->batch) {
+      /* First print the choices he wanted to make */
+      ua->send_msg(ua->prompt[0]);
+      for (i=1; i < ua->num_prompts; i++) {
+         ua->send_msg("%6d: %s\n", i, ua->prompt[i]);
+      }
+      /* Now print error message */
+      ua->send_msg(_("Your request has multiple choices for \"%s\". Selection is not possible in batch mode.\n"), automsg);
+      item = -1;
+      goto done;
+   }
+   if (ua->api) user->signal(BNET_START_SELECT);
+   ua->send_msg(ua->prompt[0]);
+   for (i=1; i < ua->num_prompts; i++) {
+      if (ua->api) {
+         ua->send_msg("%s", ua->prompt[i]);
+      } else {
+         ua->send_msg("%6d: %s\n", i, ua->prompt[i]);
+      }
+   }
+   if (ua->api) user->signal(BNET_END_SELECT);
+
+   sprintf(pmsg, "%s (1-%d): ", msg, ua->num_prompts-1);
+
+   for ( ;; ) {
+      bool ok = true;
+      /* Either a . or an @ will get you out of the loop */
+      if (ua->api) user->signal(BNET_SELECT_INPUT);
+
+      if (!get_selection_list(ua, sl, pmsg, false)) {
+         item = -1;
+         break;
+      }
+
+      if (sl.is_all()) {
+         for (i=1; i < ua->num_prompts; i++) {
+            selected->append(bstrdup(ua->prompt[i]));
+         }
+      } else {
+         while ( (item = sl.next()) > 0) {
+            if (item < 1 || item >= ua->num_prompts) {
+               ua->warning_msg(_("Please enter a number between 1 and %d\n"), ua->num_prompts-1);
+               ok = false;
+               break;
+            }
+            selected->append(bstrdup(ua->prompt[item]));
+         }
+      }
+      if (ok) {
+         item = selected->size();
+         break;
+      }
+   }
+
+done:
+   for (i=0; i < ua->num_prompts; i++) {
+      free(ua->prompt[i]);
+      if (ua->unique[i]) free(ua->unique[i]);
+   }
+   ua->num_prompts = 0;
+   return item;
+}
+
 
 /*
  * We scan what the user has entered looking for
@@ -897,7 +1001,7 @@ done:
  * If use_default is set, we assume that any keyword without a value
  *   is the name of the Storage resource wanted.
  */
-STORE *get_storage_resource(UAContext *ua, bool use_default)
+STORE *get_storage_resource(UAContext *ua, bool use_default, bool unique)
 {
    char *store_name = NULL;
    STORE *store = NULL;
@@ -963,14 +1067,15 @@ STORE *get_storage_resource(UAContext *ua, bool use_default)
                ua->error_msg(_("Expecting ujobid=xxx, got: %s.\n"), ua->argk[i]);
                return NULL;
             }
-            if (!(jcr=get_jcr_by_full_name(ua->argv[i]))) {
-               ua->error_msg(_("Job \"%s\" is not running.\n"), ua->argv[i]);
-               return NULL;
+            if ((jcr=get_jcr_by_full_name(ua->argv[i]))) {
+               store = jcr->wstore;
+               free_jcr(jcr);
+               /* The job might not be running, so we try to see other keywords */
+               if (store) {
+                  break;
+               }
             }
-            store = jcr->wstore;
-            free_jcr(jcr);
-            break;
-        }
+         }
       }
    }
    if (store && !acl_access_ok(ua, Storage_ACL, store->name())) {
@@ -988,7 +1093,7 @@ STORE *get_storage_resource(UAContext *ua, bool use_default)
    }
    /* No keywords found, so present a selection list */
    if (!store) {
-      store = select_storage_resource(ua);
+      store = select_storage_resource(ua, unique);
    }
    return store;
 }
@@ -1072,6 +1177,7 @@ int get_media_type(UAContext *ua, char *MediaType, int max_media)
    return (do_prompt(ua, _("Media Type"), _("Select the Media Type"), MediaType, max_media) < 0) ? 0 : 1;
 }
 
+
 bool get_level_from_name(JCR *jcr, const char *level_name)
 {
    /* Look up level name and pull code */
@@ -1086,128 +1192,199 @@ bool get_level_from_name(JCR *jcr, const char *level_name)
    return found;
 }
 
-/* Get a running job
+static int count_running_jobs(UAContext *ua)
+{
+   int tjobs = 0;                  /* total # number jobs */
+   int njobs = 0;
+   JCR *jcr;
+   /* Count Jobs running */
+   foreach_jcr(jcr) {
+      if (jcr->JobId == 0) {      /* this is us */
+         continue;
+      }
+      tjobs++;                    /* count of all jobs */
+      if (!acl_access_ok(ua, Job_ACL, jcr->job->name())) {
+         continue;               /* skip not authorized */
+      }
+      njobs++;                   /* count of authorized jobs */
+   }
+   endeach_jcr(jcr);
+
+   if (njobs == 0) {            /* no authorized */
+      if (tjobs == 0) {
+         ua->send_msg(_("No Jobs running.\n"));
+      } else {
+         ua->send_msg(_("None of your jobs are running.\n"));
+      }
+   }
+   return njobs;
+}
+
+
+/* Get a list of running jobs
  * "reason" is used in user messages
  * can be: cancel, limit, ...
- *  Returns: NULL on error
- *           JCR on success (should be free_jcr() after)
+ *  Returns: -1 on error
+ *           nb of JCR on success (should be free_jcr() after)
  */
-JCR *select_running_job(UAContext *ua, const char *reason)
+int select_running_jobs(UAContext *ua, alist *jcrs, const char *reason)
 {
    int i;
-   int njobs = 0;
    JCR *jcr = NULL;
+   int njobs = 0;
    char JobName[MAX_NAME_LENGTH];
    char temp[256];
+   alist *selected = NULL;
 
    for (i=1; i<ua->argc; i++) {
       if (strcasecmp(ua->argk[i], NT_("jobid")) == 0) {
-         uint32_t JobId;
-         JobId = str_to_int64(ua->argv[i]);
-         if (!JobId) {
-            break;
+         sellist sl;
+         int32_t JobId;
+
+         if (!ua->argv[i]) {
+            ua->error_msg(_("No value given for \"jobid\".\n"));
+            goto bail_out;
          }
-         if (!(jcr=get_jcr_by_id(JobId))) {
-            ua->error_msg(_("JobId %s is not running. Use Job name to %s inactive jobs.\n"),  ua->argv[i], _(reason));
-            return NULL;
+         if (!sl.set_string(ua->argv[i], true)) {
+            ua->send_msg("%s", sl.get_errmsg());
+            goto bail_out;
+         }
+         foreach_sellist(JobId, &sl) {
+            jcr = get_jcr_by_id(JobId);
+            if (jcr && jcr->job && acl_access_ok(ua, Job_ACL, jcr->job->name())) {
+               jcrs->append(jcr);
+            } else if (jcr) {
+               ua->error_msg(_("Unauthorized command from this console "
+                               "for JobId=%d.\n"), JobId);
+               free_jcr(jcr);
+            } else {
+               ua->warning_msg(_("Warning Job JobId=%d is not running.\n"), JobId);
+            }
+         }
+         if (jcrs->size() == 0) {
+            goto bail_out;               /* If we did not find specified jobid, get out */
+         }
+         break;
+
+      /* TODO: might want to implement filters (client, status, etc...) */
+      } else if (strcasecmp(ua->argk[i], NT_("all")) == 0) {
+         foreach_jcr(jcr) {
+            if (jcr->JobId == 0) {      /* Do not cancel consoles */
+               continue;
+            }
+            if (!acl_access_ok(ua, Job_ACL, jcr->job->name())) {
+               continue;               /* skip not authorized */
+            }
+            jcr->inc_use_count();
+            jcrs->append(jcr);
+         }
+         endeach_jcr(jcr);
+
+         /* If we have something and no "yes" on command line, get confirmation */
+         if (jcrs->size() > 0 && find_arg(ua, NT_("yes")) < 0) {
+            char nbuf[1000];
+            bsnprintf(nbuf, sizeof(nbuf),  _("Confirm %s of %d Job%s (yes/no): "),
+                      reason, jcrs->size(), jcrs->size()>1?"s":"");
+            if (!get_yesno(ua, nbuf) || ua->pint32_val == 0) {
+               goto bail_out;
+            }
+         }
+         if (jcrs->size() == 0) {
+            goto bail_out;               /* If we did not find specified jobid, get out */
          }
          break;
+
       } else if (strcasecmp(ua->argk[i], NT_("job")) == 0) {
          if (!ua->argv[i]) {
-            break;
+            ua->error_msg(_("No value given for \"job\".\n"));
+            goto bail_out;
          }
          if (!(jcr=get_jcr_by_partial_name(ua->argv[i]))) {
-            ua->warning_msg(_("Warning Job %s is not running. Continuing anyway ...\n"), ua->argv[i]);
+            ua->warning_msg(_("Warning Job %s is not running.\n"), ua->argv[i]);
             jcr = new_jcr(sizeof(JCR), dird_free_jcr);
             bstrncpy(jcr->Job, ua->argv[i], sizeof(jcr->Job));
          }
+         if (jcr && jcr->job && acl_access_ok(ua, Job_ACL, jcr->job->name())) {
+            jcrs->append(jcr);
+         }
+         if (jcrs->size() == 0) {
+            goto bail_out;               /* If we did not find specified jobid, get out */
+         }
          break;
+
       } else if (strcasecmp(ua->argk[i], NT_("ujobid")) == 0) {
          if (!ua->argv[i]) {
-            break;
+            ua->error_msg(_("No value given for \"ujobid\".\n"));
+            goto bail_out;
          }
          if (!(jcr=get_jcr_by_full_name(ua->argv[i]))) {
-            ua->warning_msg(_("Warning Job %s is not running. Continuing anyway ...\n"), ua->argv[i]);
+            ua->warning_msg(_("Warning Job %s is not running.\n"), ua->argv[i]);
             jcr = new_jcr(sizeof(JCR), dird_free_jcr);
             bstrncpy(jcr->Job, ua->argv[i], sizeof(jcr->Job));
          }
-         break;
-      }
-
-   }
-   if (jcr) {
-      if (jcr->job && !acl_access_ok(ua, Job_ACL, jcr->job->name())) {
-         ua->error_msg(_("Unauthorized command from this console.\n"));
-         return NULL;
-      }
-   } else {
-     /*
-      * If we still do not have a jcr,
-      *   throw up a list and ask the user to select one.
-      */
-      char buf[1000];
-      int tjobs = 0;                  /* total # number jobs */
-      /* Count Jobs running */
-      foreach_jcr(jcr) {
-         if (jcr->JobId == 0) {      /* this is us */
-            continue;
+         if (jcr && jcr->job && acl_access_ok(ua, Job_ACL, jcr->job->name())) {
+            jcrs->append(jcr);
          }
-         tjobs++;                    /* count of all jobs */
-         if (!acl_access_ok(ua, Job_ACL, jcr->job->name())) {
-            continue;               /* skip not authorized */
+         if (jcrs->size() == 0) {
+            goto bail_out;               /* If we did not find specified jobid, get out */
          }
-         njobs++;                   /* count of authorized jobs */
+         break;
       }
-      endeach_jcr(jcr);
+   }
 
-      if (njobs == 0) {            /* no authorized */
-         if (tjobs == 0) {
-            ua->send_msg(_("No Jobs running.\n"));
-         } else {
-            ua->send_msg(_("None of your jobs are running.\n"));
-         }
-         return NULL;
+   if (jcrs->size() == 0) {
+      /*
+       * If we still do not have a jcr,
+       *   throw up a list and ask the user to select one.
+       */
+      char *item;
+      char buf[1000];
+      njobs = count_running_jobs(ua);
+      if (njobs == 0) {
+         goto bail_out;
       }
-
-      start_prompt(ua, _("Select Job:\n"));
+      start_prompt(ua, _("Select Job(s):\n"));
       foreach_jcr(jcr) {
          char ed1[50];
          if (jcr->JobId == 0) {      /* this is us */
             continue;
          }
-         if (!acl_access_ok(ua, Job_ACL, jcr->job->name())) {
-            continue;               /* skip not authorized */
-         }
          bsnprintf(buf, sizeof(buf), _("JobId=%s Job=%s"), edit_int64(jcr->JobId, ed1), jcr->Job);
          add_prompt(ua, buf);
       }
       endeach_jcr(jcr);
-      bsnprintf(temp, sizeof(temp), _("Choose Job to %s"), _(reason));
-      if (do_prompt(ua, _("Job"),  temp, buf, sizeof(buf)) < 0) {
-         return NULL;
+      bsnprintf(temp, sizeof(temp), _("Choose Job list to %s"), _(reason));
+      selected = New(alist(5, owned_by_alist));
+      if (do_alist_prompt(ua, _("Job"), temp, selected) < 0) {
+         goto bail_out;
       }
-      if (!strcmp(reason, "cancel")) {
-         if (ua->api && njobs == 1) {
-            char nbuf[1000];
-            bsnprintf(nbuf, sizeof(nbuf), _("Cancel: %s\n\n%s"), buf,  
-                      _("Confirm cancel?"));
-            if (!get_yesno(ua, nbuf) || ua->pint32_val == 0) {
-               return NULL;
-            }
-         } else {
-            if (njobs == 1) {
-               if (!get_yesno(ua, _("Confirm cancel (yes/no): ")) || ua->pint32_val == 0) {
-                  return NULL;
-               }
-            }
+      /* Possibly ask for confirmation */
+      if (selected->size() > 0 && find_arg(ua, NT_("yes")) < 0) {
+         char nbuf[1000];
+         foreach_alist(item, selected) {
+            ua->send_msg("%s\n", item);
+         }
+         bsnprintf(nbuf, sizeof(nbuf),  _("Confirm %s of %d Job%s (yes/no): "),
+                   reason, selected->size(), selected->size()>1?"s":"");
+         if (!get_yesno(ua, nbuf) || ua->pint32_val == 0) {
+            goto bail_out;
          }
       }
-      sscanf(buf, "JobId=%d Job=%127s", &njobs, JobName);
-      jcr = get_jcr_by_full_name(JobName);
-      if (!jcr) {
-         ua->warning_msg(_("Job \"%s\" not found.\n"), JobName);
-         return NULL;
+
+      foreach_alist(item, selected) {
+         if (sscanf(item, "JobId=%d Job=%127s", &njobs, JobName) != 2) {
+            ua->warning_msg(_("Job \"%s\" not found.\n"), item);
+            continue;
+         }
+         jcr = get_jcr_by_full_name(JobName);
+         if (jcr) {
+            jcrs->append(jcr);
+         } else {
+            ua->warning_msg(_("Job \"%s\" not found.\n"), JobName);
+         }
       }
    }
-   return jcr;
+bail_out:
+   if (selected) delete selected;
+   return jcrs->size();
 }
diff --git a/src/dird/ua_server.c b/src/dird/ua_server.c
index b602e0a..b099fff 100644
--- a/src/dird/ua_server.c
+++ b/src/dird/ua_server.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -31,7 +19,6 @@
  *
  *     Kern Sibbald, September MM
  *
- *    Version $Id$
  */
 
 #include "bacula.h"
@@ -163,11 +150,14 @@ static void *handle_UA_client_request(void *arg)
             }
             if (!ua->api) user->signal(BNET_EOD);     /* send end of command */
          }
-      } else if (is_bnet_stop(user)) {
+      } else if (user->is_stop()) {
          ua->quit = true;
       } else { /* signal */
          user->signal(BNET_POLL);
       }
+
+      /* At the end of each command, revert to the main shared SQL link */
+      ua->db = ua->shared_db;
    }
 
 getout:
@@ -192,7 +182,7 @@ UAContext *new_ua_context(JCR *jcr)
    ua = (UAContext *)malloc(sizeof(UAContext));
    memset(ua, 0, sizeof(UAContext));
    ua->jcr = jcr;
-   ua->db = jcr->db;
+   ua->shared_db = ua->db = jcr->db;
    ua->cmd = get_pool_memory(PM_FNAME);
    ua->args = get_pool_memory(PM_FNAME);
    ua->errmsg = get_pool_memory(PM_FNAME);
@@ -215,10 +205,10 @@ void free_ua_context(UAContext *ua)
    if (ua->prompt) {
       free(ua->prompt);
    }
-   if (ua->UA_sock) {
-      bnet_close(ua->UA_sock);
-      ua->UA_sock = NULL;
+   if (ua->unique) {
+      free(ua->unique);
    }
+   free_bsock(ua->UA_sock);
    free(ua);
 }
 
diff --git a/src/dird/ua_status.c b/src/dird/ua_status.c
index c2a2053..1e5d7a3 100644
--- a/src/dird/ua_status.c
+++ b/src/dird/ua_status.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -38,8 +26,10 @@
 #include "dird.h"
 
 extern void *start_heap;
+extern utime_t last_reload_time;
 
 static void list_scheduled_jobs(UAContext *ua);
+static void llist_scheduled_jobs(UAContext *ua);
 static void list_running_jobs(UAContext *ua);
 static void list_terminated_jobs(UAContext *ua);
 static void do_storage_status(UAContext *ua, STORE *store, char *cmd);
@@ -76,7 +66,7 @@ bool dot_status_cmd(UAContext *ua, const char *cmd)
          ua->send_msg(OKqstatus, ua->argk[2]);
          foreach_jcr(njcr) {
             if (njcr->JobId != 0 && acl_access_ok(ua, Job_ACL, njcr->job->name())) {
-               ua->send_msg(DotStatusJob, edit_int64(njcr->JobId, ed1), 
+               ua->send_msg(DotStatusJob, edit_int64(njcr->JobId, ed1),
                         njcr->JobStatus, njcr->JobErrors);
             }
          }
@@ -86,7 +76,7 @@ bool dot_status_cmd(UAContext *ua, const char *cmd)
          if ((last_jobs) && (last_jobs->size() > 0)) {
             job = (s_last_job*)last_jobs->last();
             if (acl_access_ok(ua, Job_ACL, job->Job)) {
-               ua->send_msg(DotStatusJob, edit_int64(job->JobId, ed1), 
+               ua->send_msg(DotStatusJob, edit_int64(job->JobId, ed1),
                      job->JobStatus, job->Errors);
             }
          }
@@ -109,10 +99,12 @@ bool dot_status_cmd(UAContext *ua, const char *cmd)
          do_client_status(ua, client, ua->argk[2]);
       }
    } else if (strcasecmp(ua->argk[1], "storage") == 0) {
-      store = get_storage_resource(ua, false /*no default*/);
-      if (store) {
-         do_storage_status(ua, store, ua->argk[2]);
+      store = get_storage_resource(ua, false /*no default*/, true/*unique*/);
+      if (!store) {
+         ua->send_msg("1900 Bad .status command, wrong argument.\n");
+         return false;
       }
+      do_storage_status(ua, store, ua->argk[2]);
    } else {
       ua->send_msg("1900 Bad .status command, wrong argument.\n");
       return false;
@@ -142,7 +134,11 @@ int status_cmd(UAContext *ua, const char *cmd)
    Dmsg1(20, "status:%s:\n", cmd);
 
    for (i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], NT_("all")) == 0) {
+      if (strcasecmp(ua->argk[i], NT_("schedule")) == 0 ||
+          strcasecmp(ua->argk[i], NT_("scheduled")) == 0) {
+         llist_scheduled_jobs(ua);
+         return 1;
+      } else if (strcasecmp(ua->argk[i], NT_("all")) == 0) {
          do_all_status(ua);
          return 1;
       } else if (strcasecmp(ua->argk[i], NT_("dir")) == 0 ||
@@ -156,7 +152,7 @@ int status_cmd(UAContext *ua, const char *cmd)
          }
          return 1;
       } else {
-         store = get_storage_resource(ua, false/*no default*/);
+         store = get_storage_resource(ua, false/*no default*/, true/*unique*/);
          if (store) {
             if (find_arg(ua, NT_("slots")) > 0) {
                status_slots(ua, store);
@@ -175,6 +171,7 @@ int status_cmd(UAContext *ua, const char *cmd)
       add_prompt(ua, NT_("Director"));
       add_prompt(ua, NT_("Storage"));
       add_prompt(ua, NT_("Client"));
+      add_prompt(ua, NT_("Scheduled"));
       add_prompt(ua, NT_("All"));
       Dmsg0(20, "do_prompt: select daemon\n");
       if ((item=do_prompt(ua, "",  _("Select daemon type for status"), prmt, sizeof(prmt))) < 0) {
@@ -186,7 +183,7 @@ int status_cmd(UAContext *ua, const char *cmd)
          do_director_status(ua);
          break;
       case 1:
-         store = select_storage_resource(ua);
+         store = select_storage_resource(ua, true/*unique*/);
          if (store) {
             do_storage_status(ua, store, NULL);
          }
@@ -198,6 +195,9 @@ int status_cmd(UAContext *ua, const char *cmd)
          }
          break;
       case 3:
+         llist_scheduled_jobs(ua);
+         break;
+      case 4:
          do_all_status(ua);
          break;
       default:
@@ -305,7 +305,7 @@ void list_dir_status_header(UAContext *ua)
             edit_uint64_with_commas(sm_max_buffers, b5));
 
    /* TODO: use this function once for all daemons */
-   if (debug_level > 0 && bplugin_list->size() > 0) {
+   if (bplugin_list->size() > 0) {
       int len;
       Plugin *plugin;
       POOL_MEM msg(PM_FNAME);
@@ -348,6 +348,21 @@ static void do_storage_status(UAContext *ua, STORE *store, char *cmd)
    BSOCK *sd;
    USTORE lstore;
 
+
+   if (!acl_access_ok(ua, Storage_ACL, store->name())) {
+      ua->error_msg(_("No authorization for Storage \"%s\"\n"), store->name());
+      return;
+   }
+   /*
+    * The Storage daemon is problematic because it shows information
+    *  related to multiple Jobs, so if there is a Client or Job
+    *  ACL restriction, we forbid all access to the Storage.
+    */
+   if (have_restricted_acl(ua, Client_ACL) ||
+       have_restricted_acl(ua, Job_ACL)) {
+      ua->error_msg(_("Restricted Client or Job does not permit access to  Storage daemons\n"));
+      return;
+   }
    lstore.store = store;
    pm_strcpy(lstore.store_source, _("unknown source"));
    set_wstorage(ua->jcr, &lstore);
@@ -357,25 +372,28 @@ static void do_storage_status(UAContext *ua, STORE *store, char *cmd)
    if (!connect_to_storage_daemon(ua->jcr, 1, 15, 0)) {
       ua->send_msg(_("\nFailed to connect to Storage daemon %s.\n====\n"),
          store->name());
-      if (ua->jcr->store_bsock) {
-         bnet_close(ua->jcr->store_bsock);
-         ua->jcr->store_bsock = NULL;
-      }
+      free_bsock(ua->jcr->store_bsock);
       return;
    }
-   Dmsg0(20, _("Connected to storage daemon\n"));
+   Dmsg0(20, "Connected to storage daemon\n");
    sd = ua->jcr->store_bsock;
    if (cmd) {
-      sd->fsend(".status %s", cmd);
+      POOL_MEM devname;
+      int i = find_arg_with_value(ua, "device");
+      if (i>0) {
+         Mmsg(devname, "device=%s", ua->argv[i]);
+         bash_spaces(devname.c_str());
+      }
+      sd->fsend(".status %s api=%d api_opts=%s %s",
+                cmd, ua->api, ua->api_opts, devname.c_str());
    } else {
       sd->fsend("status");
    }
    while (sd->recv() >= 0) {
       ua->send_msg("%s", sd->msg);
    }
-   sd->signal( BNET_TERMINATE);
-   sd->close();
-   ua->jcr->store_bsock = NULL;
+   sd->signal(BNET_TERMINATE);
+   free_bsock(ua->jcr->store_bsock);
    return;
 }
 
@@ -383,8 +401,11 @@ static void do_client_status(UAContext *ua, CLIENT *client, char *cmd)
 {
    BSOCK *fd;
 
+   if (!acl_access_ok(ua, Client_ACL, client->name())) {
+      ua->error_msg(_("No authorization for Client \"%s\"\n"), client->name());
+      return;
+   }
    /* Connect to File daemon */
-
    ua->jcr->client = client;
    /* Release any old dummy key */
    if (ua->jcr->sd_auth_key) {
@@ -399,16 +420,13 @@ static void do_client_status(UAContext *ua, CLIENT *client, char *cmd)
    if (!connect_to_file_daemon(ua->jcr, 1, 15, 0)) {
       ua->send_msg(_("Failed to connect to Client %s.\n====\n"),
          client->name());
-      if (ua->jcr->file_bsock) {
-         bnet_close(ua->jcr->file_bsock);
-         ua->jcr->file_bsock = NULL;
-      }
+      free_bsock(ua->jcr->file_bsock);
       return;
    }
    Dmsg0(20, _("Connected to file daemon\n"));
    fd = ua->jcr->file_bsock;
    if (cmd) {
-      fd->fsend(".status %s", cmd);
+      fd->fsend(".status %s api=%d api_opts=%s", cmd, ua->api, ua->api_opts);
    } else {
       fd->fsend("status");
    }
@@ -416,8 +434,7 @@ static void do_client_status(UAContext *ua, CLIENT *client, char *cmd)
       ua->send_msg("%s", fd->msg);
    }
    fd->signal(BNET_TERMINATE);
-   fd->close();
-   ua->jcr->file_bsock = NULL;
+   free_bsock(ua->jcr->file_bsock);
 
    return;
 }
@@ -426,11 +443,21 @@ static void prt_runhdr(UAContext *ua)
 {
    if (!ua->api) {
       ua->send_msg(_("\nScheduled Jobs:\n"));
-      ua->send_msg(_("Level          Type     Pri  Scheduled          Name               Volume\n"));
+      ua->send_msg(_("Level          Type     Pri  Scheduled          Job Name           Volume\n"));
       ua->send_msg(_("===================================================================================\n"));
    }
 }
 
+static void prt_lrunhdr(UAContext *ua)
+{
+   if (!ua->api) {
+      ua->send_msg(_("\nScheduled Jobs:\n"));
+      ua->send_msg(_("Level          Type     Pri  Scheduled          Job Name           Schedule\n"));
+      ua->send_msg(_("=====================================================================================\n"));
+   }
+}
+
+
 /* Scheduling packet */
 struct sched_pkt {
    dlink link;                        /* keep this as first item!!! */
@@ -499,6 +526,182 @@ static void prt_runtime(UAContext *ua, sched_pkt *sp)
 }
 
 /*
+ * Detailed listing of all scheduler jobs
+ */
+static void llist_scheduled_jobs(UAContext *ua)
+{
+   utime_t runtime;
+   RUN *run;
+   JOB *job;
+   int level, num_jobs = 0;
+   int priority;
+   bool hdr_printed = false;
+   char sched_name[MAX_NAME_LENGTH];
+   char job_name[MAX_NAME_LENGTH];
+   SCHED *sched;
+   int days, i, limit;
+   time_t now = time(NULL);
+   time_t next;
+   const char *level_ptr;
+
+   Dmsg0(200, "enter list_sched_jobs()\n");
+
+   i = find_arg_with_value(ua, NT_("days"));
+   if (i >= 0) {
+     days = atoi(ua->argv[i]);
+     if (((days < 0) || (days > 3000)) && !ua->api) {
+       ua->send_msg(_("Ignoring invalid value for days. Max is 3000.\n"));
+       days = 10;
+     }
+   } else {
+      days = 10;
+   }
+
+   i = find_arg_with_value(ua, NT_("limit"));
+   if (i >= 0) {
+     limit = atoi(ua->argv[i]);
+     if (((limit < 0) || (limit > 2000)) && !ua->api) {
+       ua->send_msg(_("Ignoring invalid value for limit. Max is 2000.\n"));
+       limit = 100;
+     }
+   } else {
+      limit = 100;
+   }
+
+   i = find_arg_with_value(ua, NT_("time"));
+   if (i >= 0) {
+      now = str_to_utime(ua->argv[i]);
+      if (now == 0) {
+         ua->send_msg(_("Ignoring invalid time.\n"));
+         now = time(NULL);
+      }
+   }
+
+   i = find_arg_with_value(ua, NT_("schedule"));
+   if (i >= 0) {
+      bstrncpy(sched_name, ua->argv[i], sizeof(sched_name));
+   } else {
+      sched_name[0] = 0;
+   }
+
+   i = find_arg_with_value(ua, NT_("job"));
+   if (i >= 0) {
+      bstrncpy(job_name, ua->argv[i], sizeof(job_name));
+   } else {
+      job_name[0] = 0;
+   }
+
+   /* Loop through all jobs */
+   LockRes();
+   foreach_res(job, R_JOB) {
+      sched = job->schedule;
+      if (sched == NULL || !job->enabled) { /* scheduled? or enabled? */
+         continue;                    /* no, skip this job */
+      }
+      if (job_name[0] && bstrcmp(job_name, job->name()) != 0) {
+         continue;
+      }
+      for (run=sched->run; run; run=run->next) {
+         next = now;
+         for (i=0; i<days; i++) {
+            struct tm tm;
+            int mday, wday, month, wom, woy, ldom;
+            char dt[MAX_TIME_LENGTH];
+            bool ok;
+
+            /* compute values for next time */
+            (void)localtime_r(&next, &tm);
+            mday = tm.tm_mday - 1;
+            wday = tm.tm_wday;
+            month = tm.tm_mon;
+            wom = mday / 7;
+            woy = tm_woy(next);                    /* get week of year */
+            ldom = tm_ldom(month, tm.tm_year + 1900);
+
+//#define xxx_debug
+#ifdef xxx_debug
+            Dmsg6(000, "m=%d md=%d wd=%d wom=%d woy=%d ldom=%d\n",
+               month, mday, wday, wom, woy, ldom);
+            Dmsg6(000, "bitset bsm=%d bsmd=%d bswd=%d bswom=%d bswoy=%d bsldom=%d\n",
+               bit_is_set(month, run->month),
+               bit_is_set(mday, run->mday),
+               bit_is_set(wday, run->wday),
+               bit_is_set(wom, run->wom),
+               bit_is_set(woy, run->woy),
+               bit_is_set(31, run->mday));
+#endif
+
+            ok = (bit_is_set(mday, run->mday) &&
+                  bit_is_set(wday, run->wday) &&
+                  bit_is_set(month, run->month) &&
+                  bit_is_set(wom, run->wom) &&
+                  bit_is_set(woy, run->woy)) ||
+                 (bit_is_set(month, run->month) &&
+                  bit_is_set(31, run->mday) && mday == ldom);
+            if (!ok) {
+               next += 24 * 60 * 60;   /* Add one day */
+               continue;
+            }
+            for (int j=0; j < 24; j++) {
+               if (bit_is_set(j, run->hour)) {
+                  tm.tm_hour = j;
+                  tm.tm_min = run->minute;
+                  tm.tm_sec = 0;
+                  runtime = mktime(&tm);
+                  bstrftime_dn(dt, sizeof(dt), runtime);
+                  break;
+               }
+            }
+
+            level = job->JobLevel;
+            if (run->level) {
+               level = run->level;
+            }
+            switch (job->JobType) {
+            case JT_ADMIN:
+            case JT_RESTORE:
+               level_ptr = " ";
+               break;
+            default:
+               level_ptr = level_to_str(level);
+               break;
+            }
+            priority = job->Priority;
+            if (run->Priority) {
+               priority = run->Priority;
+            }
+            if (!hdr_printed) {
+               prt_lrunhdr(ua);
+               hdr_printed = true;
+            }
+            if (ua->api) {
+               ua->send_msg(_("%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"),
+                  level_ptr, job_type_to_str(job->JobType), priority, dt,
+                  job->name(), sched->name());
+            } else {
+               ua->send_msg(_("%-14s %-8s %3d  %-18s %-18s %s\n"),
+                  level_ptr, job_type_to_str(job->JobType), priority, dt,
+                  job->name(), sched->name());
+            }
+            next += 24 * 60 * 60;   /* Add one day */
+            num_jobs++;
+            if (num_jobs >= limit) {
+               goto get_out;
+            }
+         }
+      } /* end loop over run pkts */
+   } /* end for loop over resources */
+get_out:
+   UnlockRes();
+   if (num_jobs == 0 && !ua->api) {
+      ua->send_msg(_("No Scheduled Jobs.\n"));
+   }
+   if (!ua->api) ua->send_msg("====\n");
+   Dmsg0(200, "Leave ;list_sched_jobs_runs()\n");
+}
+
+
+/*
  * Sort items by runtime, priority
  */
 static int my_compare(void *item1, void *item2)
@@ -530,6 +733,7 @@ static void list_scheduled_jobs(UAContext *ua)
    int level, num_jobs = 0;
    int priority;
    bool hdr_printed = false;
+   char sched_name[MAX_NAME_LENGTH];
    dlist sched;
    sched_pkt *sp;
    int days, i;
@@ -545,6 +749,12 @@ static void list_scheduled_jobs(UAContext *ua)
        days = 1;
      }
    }
+   i = find_arg_with_value(ua, NT_("schedule"));
+   if (i >= 0) {
+      bstrncpy(sched_name, ua->argv[i], sizeof(sched_name));
+   } else {
+      sched_name[0] = 0;
+   }
 
    /* Loop through all jobs */
    LockRes();
@@ -552,6 +762,10 @@ static void list_scheduled_jobs(UAContext *ua)
       if (!acl_access_ok(ua, Job_ACL, job->name()) || !job->enabled) {
          continue;
       }
+      if (sched_name[0] && job->schedule &&
+          strcasecmp(job->schedule->name(), sched_name) != 0) {
+         continue;
+      }
       for (run=NULL; (run = find_next_run(run, job, runtime, days)); ) {
          USTORE store;
          level = job->JobLevel;
@@ -612,20 +826,22 @@ static void list_running_jobs(UAContext *ua)
             ua->send_msg(_("Console connected at %s\n"), dt);
          }
          continue;
-      }       
+      }
       njobs++;
    }
    endeach_jcr(jcr);
 
    if (njobs == 0) {
       /* Note the following message is used in regress -- don't change */
-      if (!ua->api)  ua->send_msg(_("No Jobs running.\n====\n"));
+      if (!ua->api)  {
+         ua->send_msg(_("No Jobs running.\n====\n"));
+      }
       Dmsg0(200, "leave list_run_jobs()\n");
       return;
    }
    njobs = 0;
    if (!ua->api) {
-      ua->send_msg(_(" JobId Level   Name                       Status\n"));
+      ua->send_msg(_(" JobId  Type Level     Files     Bytes  Name              Status\n"));
       ua->send_msg(_("======================================================================\n"));
    }
    foreach_jcr(jcr) {
@@ -699,11 +915,18 @@ static void list_running_jobs(UAContext *ua)
          msg = _("is waiting on max total jobs");
          break;
       case JS_WaitStartTime:
-         msg = _("is waiting for its start time");
+         emsg = (char *) get_pool_memory(PM_FNAME);
+         Mmsg(emsg, _("is waiting for its start time (%s)"),
+              bstrftime_ny(dt, sizeof(dt), jcr->sched_time));
+         pool_mem = true;
+         msg = emsg;
          break;
       case JS_WaitPriority:
          msg = _("is waiting for higher priority jobs to finish");
          break;
+      case JS_WaitDevice:
+         msg = _("is waiting for a Shared Storage device");
+         break;
       case JS_DataCommitting:
          msg = _("SD committing Data");
          break;
@@ -779,18 +1002,21 @@ static void list_running_jobs(UAContext *ua)
          break;
       }
 
-      if (ua->api) {
+      if (ua->api == 1) {
          bash_spaces(jcr->comment);
          ua->send_msg(_("%6d\t%-6s\t%-20s\t%s\t%s\n"),
                       jcr->JobId, level, jcr->Job, msg, jcr->comment);
          unbash_spaces(jcr->comment);
       } else {
-         ua->send_msg(_("%6d %-6s  %-20s %s\n"),
-            jcr->JobId, level, jcr->Job, msg);
-         /* Display comments if any */
-         if (*jcr->comment) {
-            ua->send_msg(_("               %-30s\n"), jcr->comment);
-         }
+         char b1[50], b2[50], b3[50];
+         level[4] = 0;
+         bstrncpy(b1, job_type_to_str(jcr->getJobType()), sizeof(b1));
+         b1[4] = 0;
+         ua->send_msg(_("%6d  %-4s %-3s %10s %10s %-17s %s\n"),
+            jcr->JobId, b1, level,
+            edit_uint64_with_commas(jcr->JobFiles, b2),
+            edit_uint64_with_suffix(jcr->JobBytes, b3),
+            jcr->job->name(), msg);
       }
 
       if (pool_mem) {
@@ -799,7 +1025,9 @@ static void list_running_jobs(UAContext *ua)
       }
    }
    endeach_jcr(jcr);
-   if (!ua->api) ua->send_msg("====\n");
+   if (!ua->api) {
+      ua->send_msg("====\n");
+   }
    Dmsg0(200, "leave list_run_jobs()\n");
 }
 
@@ -871,7 +1099,7 @@ static void list_terminated_jobs(UAContext *ua)
          termstat = _("Other");
          break;
       }
-      if (ua->api) {
+      if (ua->api == 1) {
          ua->send_msg(_("%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"),
             je->JobId,
             level,
@@ -889,6 +1117,8 @@ static void list_terminated_jobs(UAContext *ua)
             dt, JobName);
       }
    }
-   if (!ua->api) ua->send_msg(_("\n"));
+   if (!ua->api) {
+      ua->send_msg(_("\n"));
+   }
    unlock_last_jobs_list();
 }
diff --git a/src/dird/ua_tree.c b/src/dird/ua_tree.c
index 0f97b0a..3cf5c15 100644
--- a/src/dird/ua_tree.c
+++ b/src/dird/ua_tree.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -171,7 +159,6 @@ bool user_select_files_from_tree(TREE_CTX *tree)
    return stat;
 }
 
-
 /*
  * This callback routine is responsible for inserting the
  *  items it gets into the directory tree. For each JobId selected
@@ -193,6 +180,8 @@ int insert_tree_handler(void *ctx, int num_fields, char **row)
    int FileIndex;
    int32_t delta_seq;
    JobId_t JobId;
+   HL_ENTRY *entry = NULL;
+   int32_t LinkFI;
 
    Dmsg4(150, "Path=%s%s FI=%s JobId=%s\n", row[0], row[1],
          row[2], row[3]);
@@ -205,13 +194,14 @@ int insert_tree_handler(void *ctx, int num_fields, char **row)
    } else {
       type = TN_FILE;
    }
-   hard_link = (decode_LinkFI(row[4], &statp, sizeof(statp)) != 0);
+   decode_stat(row[4], &statp, sizeof(statp), &LinkFI);
+   hard_link = (LinkFI != 0);
    node = insert_tree_node(row[0], row[1], type, tree->root, NULL);
    JobId = str_to_int64(row[3]);
    FileIndex = str_to_int64(row[2]);
    delta_seq = str_to_int64(row[5]);
-   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);
+   Dmsg6(150, "node=0x%p JobId=%s FileIndex=%s Delta=%s node.delta=%d LinkFI=%d\n",
+         node, row[3], row[2], row[5], node->delta_seq, LinkFI);
 
    /* TODO: check with hardlinks */
    if (delta_seq > 0) {
@@ -227,7 +217,7 @@ int insert_tree_handler(void *ctx, int num_fields, char **row)
             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);
          }
@@ -265,6 +255,27 @@ int insert_tree_handler(void *ctx, int num_fields, char **row)
             node->extract_dir = true;   /* if dir, extract it */
          }
       }
+      /* insert file having hardlinks into hardlink hashtable */
+      if (statp.st_nlink > 1 && type != TN_DIR && type != TN_DIR_NLS) {
+         if (!LinkFI) {
+            /* first occurrence - file hardlinked to */
+            entry = (HL_ENTRY *)tree->root->hardlinks.hash_malloc(sizeof(HL_ENTRY));
+            entry->key = (((uint64_t) JobId) << 32) + FileIndex;
+            entry->node = node;
+            tree->root->hardlinks.insert(entry->key, entry);
+         } else if (tree->hardlinks_in_mem) {
+            /* hardlink to known file index: lookup original file */
+            uint64_t file_key = (((uint64_t) JobId) << 32) + LinkFI;
+            HL_ENTRY *first_hl = (HL_ENTRY *) tree->root->hardlinks.lookup(file_key);
+            if (first_hl && first_hl->node) {
+               /* then add hardlink entry to linked node*/
+               entry = (HL_ENTRY *)tree->root->hardlinks.hash_malloc(sizeof(HL_ENTRY));
+               entry->key = (((uint64_t) JobId) << 32) + FileIndex;
+               entry->node = first_hl->node;
+               tree->root->hardlinks.insert(entry->key, entry);
+            }
+         }
+      }
    }
    if (node->inserted) {
       tree->FileCount++;
@@ -277,7 +288,6 @@ int insert_tree_handler(void *ctx, int num_fields, char **row)
    return 0;
 }
 
-
 /*
  * Set extract to value passed. We recursively walk
  *  down the tree setting all children if the
@@ -286,8 +296,6 @@ int insert_tree_handler(void *ctx, int num_fields, char **row)
 static int set_extract(UAContext *ua, TREE_NODE *node, TREE_CTX *tree, bool extract)
 {
    TREE_NODE *n;
-   FILE_DBR fdbr;
-   struct stat statp;
    int count = 0;
 
    node->extract = extract;
@@ -314,33 +322,41 @@ static int set_extract(UAContext *ua, TREE_NODE *node, TREE_CTX *tree, bool extr
          }
       }
    } else if (extract) {
-      char cwd[2000];
-      /*
-       * Ordinary file, we get the full path, look up the
-       * attributes, decode them, and if we are hard linked to
-       * a file that was saved, we must load that file too.
-       */
-      tree_getpath(node, cwd, sizeof(cwd));
-      fdbr.FileId = 0;
-      fdbr.JobId = node->JobId;
-      if (node->hard_link && db_get_file_attributes_record(ua->jcr, ua->db, cwd, NULL, &fdbr)) {
-         int32_t LinkFI;
-         decode_stat(fdbr.LStat, &statp, sizeof(statp), &LinkFI); /* decode stat pkt */
+      uint64_t key = 0;
+      if (tree->hardlinks_in_mem) {
+         if (node->hard_link) {
+            key = (((uint64_t) node->JobId) << 32) + node->FileIndex;  /* every hardlink is in hashtable, and it points to linked file */
+         }
+      } else {
+         /* Get the hard link if it exists */
+         FILE_DBR fdbr;
+         struct stat statp;
+         char cwd[2000];
          /*
-          * If we point to a hard linked file, traverse the tree to
-          * find that file, and mark it to be restored as well. It
-          * must have the Link we just obtained and the same JobId.
+          * Ordinary file, we get the full path, look up the
+          * attributes, decode them, and if we are hard linked to
+          * a file that was saved, we must load that file too.
           */
-         if (LinkFI) {
-            for (n=first_tree_node(tree->root); n; n=next_tree_node(n)) {
-               if (n->FileIndex == LinkFI && n->JobId == node->JobId) {
-                  n->extract = true;
-                  if (n->type == TN_DIR || n->type == TN_DIR_NLS) {
-                     n->extract_dir = true;
-                  }
-                  break;
-               }
-            }
+         tree_getpath(node, cwd, sizeof(cwd));
+         fdbr.FileId = 0;
+         fdbr.JobId = node->JobId;
+         if (node->hard_link && db_get_file_attributes_record(ua->jcr, ua->db, cwd, NULL, &fdbr)) {
+            int32_t LinkFI;
+            decode_stat(fdbr.LStat, &statp, sizeof(statp), &LinkFI); /* decode stat pkt */
+            key = (((uint64_t) node->JobId) << 32) + LinkFI;  /* lookup by linked file's fileindex */
+         }
+      }
+      /* If file hard linked and we have a key */
+      if (node->hard_link && key != 0) {
+         /*
+          * If we point to a hard linked file, find that file in
+          * hardlinks hashmap, and mark it to be restored as well.
+          */
+         HL_ENTRY *entry = (HL_ENTRY *)tree->root->hardlinks.lookup(key);
+         if (entry && entry->node) {
+            n = entry->node;
+            n->extract = true;
+            n->extract_dir = (n->type == TN_DIR || n->type == TN_DIR_NLS);
          }
       }
    }
@@ -488,7 +504,7 @@ static int dot_lsdircmd(UAContext *ua, TREE_CTX *tree)
          }
       }
    }
- 
+
    return 1;
 }
 
@@ -516,7 +532,7 @@ static int dot_lscmd(UAContext *ua, TREE_CTX *tree)
          ua->send_msg("%s%s\n", node->fname, tree_node_has_child(node)?"/":"");
       }
    }
- 
+
    return 1;
 }
 
@@ -608,8 +624,8 @@ static int lsmarkcmd(UAContext *ua, TREE_CTX *tree)
 /*
  * This is actually the long form used for "dir"
  */
-static void ls_output(guid_list *guid, char *buf, const char *fname, const char *tag, 
-                      struct stat *statp, bool dot_cmd) 
+static void ls_output(guid_list *guid, char *buf, const char *fname, const char *tag,
+                      struct stat *statp, bool dot_cmd)
 {
    char *p;
    const char *f;
@@ -623,7 +639,7 @@ static void ls_output(guid_list *guid, char *buf, const char *fname, const char
       *p++ = ',';
       n = sprintf(p, "%d,", (uint32_t)statp->st_nlink);
       p += n;
-      n = sprintf(p, "%s,%s,", 
+      n = sprintf(p, "%s,%s,",
                   guid->uid_to_name(statp->st_uid, en1, sizeof(en1)),
                   guid->gid_to_name(statp->st_gid, en2, sizeof(en2)));
       p += n;
@@ -636,7 +652,7 @@ static void ls_output(guid_list *guid, char *buf, const char *fname, const char
    } else {
       n = sprintf(p, "  %2d ", (uint32_t)statp->st_nlink);
       p += n;
-      n = sprintf(p, "%-8.8s %-8.8s", 
+      n = sprintf(p, "%-8.8s %-8.8s",
                   guid->uid_to_name(statp->st_uid, en1, sizeof(en1)),
                   guid->gid_to_name(statp->st_gid, en2, sizeof(en2)));
       p += n;
diff --git a/src/dird/ua_update.c b/src/dird/ua_update.c
index 7433147..65fe68e 100644
--- a/src/dird/ua_update.c
+++ b/src/dird/ua_update.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -285,7 +273,7 @@ static void update_volslot(UAContext *ua, char *val, MEDIA_DBR *mr)
 
    memset(&pr, 0, sizeof(POOL_DBR));
    pr.PoolId = mr->PoolId;
-   if (!db_get_pool_record(ua->jcr, ua->db, &pr)) {
+   if (!db_get_pool_numvols(ua->jcr, ua->db, &pr)) {
       ua->error_msg("%s", db_strerror(ua->db));
       return;
    }
@@ -385,7 +373,7 @@ static void update_vol_from_pool(UAContext *ua, MEDIA_DBR *mr)
 
    memset(&pr, 0, sizeof(pr));
    pr.PoolId = mr->PoolId;
-   if (!db_get_pool_record(ua->jcr, ua->db, &pr) ||
+   if (!db_get_pool_numvols(ua->jcr, ua->db, &pr) ||
        !acl_access_ok(ua, Pool_ACL, pr.Name)) {
       return;
    }
@@ -402,7 +390,7 @@ static void update_vol_from_pool(UAContext *ua, MEDIA_DBR *mr)
  * Refresh the Volume information from the Pool record
  *   for all Volumes
  */
-static void update_all_vols_from_pool(UAContext *ua, const char *pool_name) 
+static void update_all_vols_from_pool(UAContext *ua, const char *pool_name)
 {
    POOL_DBR pr;
    MEDIA_DBR mr;
@@ -431,7 +419,7 @@ static void update_all_vols(UAContext *ua)
    MEDIA_DBR mr;
 
    memset(&pr, 0, sizeof(pr));
-   
+
    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));
       return;
@@ -439,7 +427,7 @@ static void update_all_vols(UAContext *ua)
 
    for (i=0; i<num_pools; i++) {
       pr.PoolId = ids[i];
-      if (!db_get_pool_record(ua->jcr, ua->db, &pr)) { /* ***FIXME*** use acl? */
+      if (!db_get_pool_numvols(ua->jcr, ua->db, &pr)) { /* ***FIXME*** use acl? */
          ua->warning_msg(_("Updating all pools, but skipped PoolId=%d. ERR=%s\n"), db_strerror(ua->db));
          continue;
       }
@@ -481,13 +469,13 @@ static void update_vol_actiononpurge(UAContext *ua, char *val, MEDIA_DBR *mr)
    } else {
       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));
    } else {
-      ua->info_msg(_("New ActionOnPurge is: %s\n"), 
+      ua->info_msg(_("New ActionOnPurge is: %s\n"),
                    action_on_purge_to_string(mr->ActionOnPurge, ret));
    }
 }
@@ -569,7 +557,7 @@ static int update_volume(UAContext *ua)
          case 9:
             memset(&pr, 0, sizeof(POOL_DBR));
             pr.PoolId = mr.PoolId;
-            if (!db_get_pool_record(ua->jcr, ua->db, &pr)) {
+            if (!db_get_pool_numvols(ua->jcr, ua->db, &pr)) {
                ua->error_msg("%s", db_strerror(ua->db));
                break;
             }
@@ -621,7 +609,7 @@ static int update_volume(UAContext *ua)
       add_prompt(ua, _("RecyclePool")),                /* 15 */
       add_prompt(ua, _("Action On Purge")),            /* 16 */
       add_prompt(ua, _("Done"));                       /* 17 */
-      i = do_prompt(ua, "", _("Select parameter to modify"), NULL, 0);  
+      i = do_prompt(ua, "", _("Select parameter to modify"), NULL, 0);
 
       /* For All Volumes, All Volumes from Pool, and Done, we don't need
            * a Volume record */
@@ -636,7 +624,7 @@ static int update_volume(UAContext *ua)
          /* Modify Volume Status */
          ua->info_msg(_("Current Volume status is: %s\n"), mr.VolStatus);
          start_prompt(ua, _("Possible Values are:\n"));
-         add_prompt(ua, NT_("Append")); 
+         add_prompt(ua, NT_("Append"));
          add_prompt(ua, NT_("Archive"));
          add_prompt(ua, NT_("Disabled"));
          add_prompt(ua, NT_("Full"));
@@ -710,7 +698,7 @@ static int update_volume(UAContext *ua)
          }
          update_volslot(ua, ua->cmd, &mr);
          break;
-         
+
       case 8:                         /* InChanger */
          ua->info_msg(_("Current InChanger flag is: %d\n"), mr.InChanger);
          bsnprintf(buf, sizeof(buf), _("Set InChanger flag for Volume \"%s\": yes/no: "),
@@ -761,7 +749,7 @@ static int update_volume(UAContext *ua)
       case 10:                        /* Volume's Pool */
          memset(&pr, 0, sizeof(POOL_DBR));
          pr.PoolId = mr.PoolId;
-         if (!db_get_pool_record(ua->jcr, ua->db, &pr)) {
+         if (!db_get_pool_numvols(ua->jcr, ua->db, &pr)) {
             ua->error_msg("%s", db_strerror(ua->db));
             return 0;
          }
@@ -791,22 +779,13 @@ static int update_volume(UAContext *ua)
          if (!get_cmd(ua, _("Enter new Enabled: "))) {
             return 0;
          }
-         if (strcasecmp(ua->cmd, "yes") == 0 || strcasecmp(ua->cmd, "true") == 0) {
-            mr.Enabled = 1;
-         } else if (strcasecmp(ua->cmd, "no") == 0 || strcasecmp(ua->cmd, "false") == 0) {
-            mr.Enabled = 0;
-         } else if (strcasecmp(ua->cmd, "archived") == 0) { 
-            mr.Enabled = 2;
-         } else {
-            mr.Enabled = atoi(ua->cmd);
-         }
          update_volenabled(ua, ua->cmd, &mr);
          break;
 
       case 15:
          memset(&pr, 0, sizeof(POOL_DBR));
          pr.PoolId = mr.RecyclePoolId;
-         if (db_get_pool_record(ua->jcr, ua->db, &pr)) {
+         if (db_get_pool_numvols(ua->jcr, ua->db, &pr)) {
             ua->info_msg(_("Current RecyclePool is: %s\n"), pr.Name);
          } else {
             ua->info_msg(_("No current RecyclePool\n"));
@@ -819,7 +798,7 @@ static int update_volume(UAContext *ua)
 
       case 16:
          pm_strcpy(ret, "");
-         ua->info_msg(_("Current ActionOnPurge is: %s\n"), 
+         ua->info_msg(_("Current ActionOnPurge is: %s\n"),
                       action_on_purge_to_string(mr.ActionOnPurge, ret));
          if (!get_cmd(ua, _("Enter new ActionOnPurge (one of: Truncate, None): "))) {
             return 0;
@@ -958,7 +937,7 @@ static bool update_job(UAContext *ua)
          return false;
       }
       delta_start = StartTime - jr.StartTime;
-      Dmsg3(200, "ST=%lld jr.ST=%lld delta=%lld\n", StartTime, 
+      Dmsg3(200, "ST=%lld jr.ST=%lld delta=%lld\n", StartTime,
             (utime_t)jr.StartTime, delta_start);
       jr.StartTime = (time_t)StartTime;
       jr.SchedTime += (time_t)delta_start;
@@ -970,12 +949,12 @@ static bool update_job(UAContext *ua)
       bstrutime(jr.cEndTime, sizeof(jr.cEndTime), jr.EndTime);
    }
    Mmsg(cmd, "UPDATE Job SET ClientId=%s,StartTime='%s',SchedTime='%s',"
-             "EndTime='%s',JobTDate=%s WHERE JobId=%s", 
-             edit_int64(jr.ClientId, ed1), 
+             "EndTime='%s',JobTDate=%s WHERE JobId=%s",
+             edit_int64(jr.ClientId, ed1),
              jr.cStartTime,
              jr.cSchedTime,
              jr.cEndTime,
-             edit_uint64(jr.JobTDate, ed1), 
+             edit_uint64(jr.JobTDate, ed1),
              edit_int64(jr.JobId, ed2));
    if (!db_sql_query(ua->db, cmd.c_str(), NULL, NULL)) {
       ua->error_msg("%s", db_strerror(ua->db));
diff --git a/src/dird/vbackup.c b/src/dird/vbackup.c
index 2babd36..64d69bb 100644
--- a/src/dird/vbackup.c
+++ b/src/dird/vbackup.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2008-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2008-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -52,7 +40,7 @@ static const int dbglevel = 10;
 static bool create_bootstrap_file(JCR *jcr, char *jobids);
 void vbackup_cleanup(JCR *jcr, int TermCode);
 
-/* 
+/*
  * Called here before the job is run to do the job
  *   specific setup.
  */
@@ -79,7 +67,7 @@ bool do_vbackup_init(JCR *jcr)
    /*
     * Note, at this point, pool is the pool for this job.  We
     *  transfer it to rpool (read pool), and a bit later,
-    *  pool will be changed to point to the write pool, 
+    *  pool will be changed to point to the write pool,
     *  which comes from pool->NextPool.
     */
    jcr->rpool = jcr->pool;            /* save read pool */
@@ -97,28 +85,12 @@ bool do_vbackup_init(JCR *jcr)
       Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
    }
 
-
-   /*
-    * If the original backup pool has a NextPool, make sure a 
-    *  record exists in the database. Note, in this case, we
-    *  will be backing up from pool to pool->NextPool.
-    */
-   if (jcr->pool->NextPool) {
-      jcr->jr.PoolId = get_or_create_pool_record(jcr, jcr->pool->NextPool->name());
-      if (jcr->jr.PoolId == 0) {
-         return false;
-      }
-   }
-   if (!set_migration_wstorage(jcr, jcr->pool)) {
+   if (!apply_wstorage_overrides(jcr, jcr->pool)) {
       return false;
    }
-   jcr->pool = jcr->pool->NextPool;
-   pm_strcpy(jcr->pool_source, _("Job Pool's NextPool resource"));
 
    Dmsg2(dbglevel, "Write pool=%s read rpool=%s\n", jcr->pool->name(), jcr->rpool->name());
 
-// create_clones(jcr);
-
    return true;
 }
 
@@ -131,13 +103,15 @@ bool do_vbackup_init(JCR *jcr)
  */
 bool do_vbackup(JCR *jcr)
 {
-   char ed1[100];
-   BSOCK *sd;
-   char *p;
+   char        level_computed = L_FULL;
+   char        ed1[100];
+   BSOCK      *sd;
+   char       *p;
+   sellist     sel;
    db_list_ctx jobids;
 
    Dmsg2(100, "rstorage=%p wstorage=%p\n", jcr->rstorage, jcr->wstorage);
-   Dmsg2(100, "Read store=%s, write store=%s\n", 
+   Dmsg2(100, "Read store=%s, write store=%s\n",
       ((STORE *)jcr->rstorage->first())->name(),
       ((STORE *)jcr->wstorage->first())->name());
 
@@ -147,19 +121,100 @@ bool do_vbackup(JCR *jcr)
    Jmsg(jcr, M_INFO, 0, _("Start Virtual Backup JobId %s, Job=%s\n"),
         edit_uint64(jcr->JobId, ed1), jcr->Job);
    if (!jcr->accurate) {
-      Jmsg(jcr, M_WARNING, 0, 
+      Jmsg(jcr, M_WARNING, 0,
 _("This Job is not an Accurate backup so is not equivalent to a Full backup.\n"));
    }
 
-   jcr->jr.JobLevel = L_VIRTUAL_FULL;
-   db_accurate_get_jobids(jcr, jcr->db, &jcr->jr, &jobids);
-   Dmsg1(10, "Accurate jobids=%s\n", jobids.list);
+   if (jcr->JobIds && *jcr->JobIds) {
+      JOB_DBR jr;
+      db_list_ctx status;
+      POOL_MEM query(PM_MESSAGE);
+
+      memset(&jr, 0, sizeof(jr));
+
+      if (is_an_integer(jcr->JobIds)) {
+         /* Single JobId, so start the accurate code based on this id */
+
+         jr.JobId = str_to_int64(jcr->JobIds);
+         if (!db_get_job_record(jcr, jcr->db, &jr)) {
+            Jmsg(jcr, M_ERROR, 0,
+                 _("Unable to get Job record for JobId=%s: ERR=%s\n"),
+                 jcr->JobIds, db_strerror(jcr->db));
+            return false;
+         }
+         Jmsg(jcr, M_INFO,0,_("Selecting jobs to build the Full state at %s\n"),
+              jr.cStartTime);
+
+         jr.JobLevel = L_INCREMENTAL; /* Take Full+Diff+Incr */
+         db_accurate_get_jobids(jcr, jcr->db, &jr, &jobids);
+
+      } else if (sel.set_string(jcr->JobIds, true)) {
+         /* Found alljobid keyword */
+         if (jcr->use_all_JobIds) {
+            jobids.count = sel.size();
+            pm_strcpy(jobids.list, sel.get_expanded_list());
+
+         /* Need to apply some filter on the job name */
+         } else {
+            Mmsg(query,
+                 "SELECT JobId FROM Job "
+                  "WHERE Job.Name = '%s' "
+                    "AND Job.JobId IN (%s) "
+                  "ORDER BY JobTDate ASC",
+                 jcr->job->name(),
+                 sel.get_expanded_list());
+
+            db_sql_query(jcr->db, query.c_str(),  db_list_handler, &jobids);
+         }
+
+         if (jobids.count == 0) {
+            Jmsg(jcr, M_FATAL, 0, _("No valid Jobs found from user selection.\n"));
+            return false;
+         }
+
+         Jmsg(jcr, M_INFO, 0, _("Using user supplied JobIds=%s\n"),
+              jobids.list);
+
+         /* Check status */
+         Mmsg(query,
+              "SELECT Level FROM Job "
+               "WHERE Job.JobId IN (%s) "
+               "GROUP BY Level",
+              jobids.list);
+
+         /* Will produce something like F,D,I or F,I */
+         db_sql_query(jcr->db, query.c_str(),  db_list_handler, &status);
+
+         /* If no full found in the list, we build a "virtualdiff" or
+          * a "virtualinc".
+          */
+         if (strchr(status.list, L_FULL) == NULL) {
+            if (strchr(status.list, L_DIFFERENTIAL)) {
+               level_computed = L_DIFFERENTIAL;
+               Jmsg(jcr, M_INFO, 0, _("No previous Full found in list, "
+                                      "using Differential level\n"));
+
+            } else {
+               level_computed = L_INCREMENTAL;
+               Jmsg(jcr, M_INFO, 0, _("No previous Full found in list, "
+                                      "using Incremental level\n"));
+            }
+         }
+      }
+
+   } else {                     /* No argument provided */
+      jcr->jr.JobLevel = L_VIRTUAL_FULL;
+      db_accurate_get_jobids(jcr, jcr->db, &jcr->jr, &jobids);
+      Dmsg1(10, "Accurate jobids=%s\n", jobids.list);
+   }
+
    if (jobids.count == 0) {
       Jmsg(jcr, M_FATAL, 0, _("No previous Jobs found.\n"));
       return false;
    }
 
-   jcr->jr.JobLevel = L_FULL;
+   /* Full by default, or might be Incr/Diff when jobid= is used */
+   jcr->jr.JobLevel = level_computed;
 
    /*
     * Now we find the last job that ran and store it's info in
@@ -211,14 +266,14 @@ _("This Job is not an Accurate backup so is not equivalent to a Full backup.\n")
    }
    Dmsg0(100, "Storage daemon connection OK\n");
 
-   /*    
+   /*
     * We re-update the job start record so that the start
-    *  time is set after the run before job.  This avoids 
+    *  time is set after the run before job.  This avoids
     *  that any files created by the run before job will
     *  be saved twice.  They will be backed up in the current
     *  job, but not in the next one unless they are changed.
     *  Without this, they will be backed up in this job and
-    *  in the next job run because in that case, their date 
+    *  in the next job run because in that case, their date
     *   is after the start of this run.
     */
    jcr->start_time = time(NULL);
@@ -295,8 +350,8 @@ void vbackup_cleanup(JCR *jcr, int TermCode)
 
    /* Update final items to set them to the previous job's values */
    Mmsg(query, "UPDATE Job SET StartTime='%s',EndTime='%s',"
-               "JobTDate=%s WHERE JobId=%s", 
-      jcr->previous_jr.cStartTime, jcr->previous_jr.cEndTime, 
+               "JobTDate=%s WHERE JobId=%s",
+      jcr->previous_jr.cStartTime, jcr->previous_jr.cEndTime,
       edit_uint64(jcr->previous_jr.JobTDate, ec1),
       edit_uint64(jcr->JobId, ec3));
    db_sql_query(jcr->db, query.c_str(), NULL, NULL);
@@ -337,7 +392,7 @@ void vbackup_cleanup(JCR *jcr, int TermCode)
          msg_type = M_ERROR;          /* Generate error message */
          if (jcr->store_bsock) {
             jcr->store_bsock->signal(BNET_TERMINATE);
-            if (jcr->SD_msg_chan) {
+            if (jcr->SD_msg_chan_started) {
                pthread_cancel(jcr->SD_msg_chan);
             }
          }
@@ -346,7 +401,7 @@ void vbackup_cleanup(JCR *jcr, int TermCode)
          term_msg = _("Backup Canceled");
          if (jcr->store_bsock) {
             jcr->store_bsock->signal(BNET_TERMINATE);
-            if (jcr->SD_msg_chan) {
+            if (jcr->SD_msg_chan_started) {
                pthread_cancel(jcr->SD_msg_chan);
             }
          }
@@ -518,8 +573,8 @@ static bool create_bootstrap_file(JCR *jcr, char *jobids)
 
    complete_bsr(ua, rx.bsr);
    jcr->ExpectedFiles = write_bsr_file(ua, rx);
-   if (debug_level >= 10) {
-      Dmsg1(000,  "Found %d files to consolidate.\n", jcr->ExpectedFiles);
+   if (chk_dbglvl(10)) {
+      Pmsg1(000,  "Found %d files to consolidate.\n", jcr->ExpectedFiles);
    }
    if (jcr->ExpectedFiles == 0) {
       free_ua_context(ua);
diff --git a/src/dird/verify.c b/src/dird/verify.c
index 41fde6a..84575ba 100644
--- a/src/dird/verify.c
+++ b/src/dird/verify.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -47,25 +35,22 @@
 
 /* Commands sent to File daemon */
 static char verifycmd[] = "verify level=%s\n";
-static char storaddr[]  = "storage address=%s port=%d ssl=0 Authorization=%s\n";
 
 /* Responses received from File daemon */
 static char OKverify[]  = "2000 OK verify\n";
-static char OKstore[]   = "2000 OK storage\n";
 
-/* Responses received from the Storage daemon */
+/* Commands received from Storage daemon */
 static char OKbootstrap[] = "3000 OK bootstrap\n";
 
 /* Forward referenced functions */
 static void prt_fname(JCR *jcr);
 static int missing_handler(void *ctx, int num_fields, char **row);
 
-
-/* 
+/*
  * Called here before the job is run to do the job
  *   specific setup.
  */
-bool do_verify_init(JCR *jcr) 
+bool do_verify_init(JCR *jcr)
 {
    if (!allow_duplicate_job(jcr)) {
       return false;
@@ -100,11 +85,13 @@ bool do_verify_init(JCR *jcr)
 bool do_verify(JCR *jcr)
 {
    const char *level;
-   BSOCK   *fd;
+   BSOCK *fd, *sd;
    int stat;
    char ed1[100];
    JOB_DBR jr;
    JobId_t verify_jobid = 0;
+   char *store_address;
+   uint32_t store_port;
    const char *Name;
 
    free_wstorage(jcr);                   /* we don't write */
@@ -220,7 +207,6 @@ bool do_verify(JCR *jcr)
       edit_uint64(jcr->JobId, ed1), level_to_str(jcr->getJobLevel()), jcr->Job);
 
    if (jcr->getJobLevel() == L_VERIFY_VOLUME_TO_CATALOG) {
-      BSOCK *sd;
       /*
        * Start conversation with Storage daemon
        */
@@ -235,6 +221,7 @@ bool do_verify(JCR *jcr)
          return false;
       }
       sd = jcr->store_bsock;
+      jcr->sd_calls_client = jcr->client->sd_calls_client;
       /*
        * Send the bootstrap file -- what Volumes/files to restore
        */
@@ -242,17 +229,11 @@ bool do_verify(JCR *jcr)
           !response(jcr, sd, OKbootstrap, "Bootstrap", DISPLAY_ERROR)) {
          goto bail_out;
       }
-      if (!sd->fsend("run")) {
-         return false;
-      }
-      /*
-       * Now start a Storage daemon message thread
-       */
-      if (!start_storage_daemon_message_thread(jcr)) {
-         return false;
+      if (!jcr->sd_calls_client) {
+         if (!run_storage_and_start_message_thread(jcr, sd)) {
+            return false;
+         }
       }
-      Dmsg0(50, "Storage daemon connection OK\n");
-
    }
    /*
     * OK, now connect to the File daemon
@@ -289,15 +270,34 @@ bool do_verify(JCR *jcr)
       level = "catalog";
       break;
    case L_VERIFY_VOLUME_TO_CATALOG:
-      /*
-       * send Storage daemon address to the File daemon
-       */
-      if (jcr->rstore->SDDport == 0) {
-         jcr->rstore->SDDport = jcr->rstore->SDport;
+      if (jcr->sd_calls_client) {
+         if (jcr->FDVersion < 5) {
+            Jmsg(jcr, M_FATAL, 0, _("The File daemon does not support SDCallsClient.\n"));
+            goto bail_out;
+         }
+
+         if (!send_client_addr_to_sd(jcr)) {
+            goto bail_out;
+         }
+
+         if (!run_storage_and_start_message_thread(jcr, jcr->store_bsock)) {
+            return false;
+         }
+         store_address = jcr->rstore->address;  /* dummy */
+         store_port = 0;           /* flag that SD calls FD */
+      } else {
+         /*
+          * send Storage daemon address to the File daemon
+          */
+         if (jcr->rstore->SDDport == 0) {
+            jcr->rstore->SDDport = jcr->rstore->SDport;
+         }
+
+         store_address = get_storage_address(jcr->client, jcr->rstore);
+         store_port = jcr->rstore->SDDport;
       }
-      bnet_fsend(fd, storaddr, jcr->rstore->address, 
-                 jcr->rstore->SDDport, jcr->sd_auth_key);
-      if (!response(jcr, fd, OKstore, "Storage", DISPLAY_ERROR)) {
+
+      if (!send_store_addr_to_fd(jcr, jcr->rstore, store_address, store_port)) {
          goto bail_out;
       }
 
@@ -752,7 +752,7 @@ void get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId)
       }
       jcr->JobFiles = file_index;
    }
-   if (is_bnet_error(fd)) {
+   if (fd->is_error()) {
       berrno be;
       Jmsg2(jcr, M_FATAL, 0, _("bdird<filed: bad attributes from filed n=%d : %s\n"),
                         n, be.bstrerror());
diff --git a/src/filed/Makefile.in b/src/filed/Makefile.in
index d2f4528..1a6ca05 100644
--- a/src/filed/Makefile.in
+++ b/src/filed/Makefile.in
@@ -22,8 +22,6 @@ DEBUG=@DEBUG@
 
 GETTEXT_LIBS = @LIBINTL@
 
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_INC = @PYTHON_INCDIR@
 AFS_CFLAGS = @AFS_CFLAGS@
 AFS_LIBS = @AFS_LIBS@
 
@@ -33,7 +31,7 @@ dummy:
 #
 SVRSRCS = filed.c authenticate.c acl.c backup.c estimate.c \
 	  fd_plugins.c accurate.c \
-	  filed_conf.c heartbeat.c job.c pythonfd.c \
+	  filed_conf.c heartbeat.c job.c \
 	  restore.c status.c verify.c verify_vol.c xattr.c
 SVROBJS = $(SVRSRCS:.c=.o)
 
@@ -43,13 +41,8 @@ EXTRAOBJS = @OBJLIST@
 CAP_LIBS = @CAP_LIBS@
 FDLIBS = @FDLIBS@		  # extra libs for File daemon
 ZLIBS = @ZLIBS@
-LZOLIBS = @LZOLIBS@
-
-# extra items for linking on Win32
-WIN32OBJS = win32/winmain.o win32/winlib.a win32/winres.res
-win32 = $(WIN32OBJS) -luser32 -lgdi32
-
-WIN32LIBS = $(@WIN32@)
+LZO_LIBS = @LZO_LIBS@
+LZO_INC= @LZO_INC@
 
 .SUFFIXES:	.c .o
 .PHONY:
@@ -58,15 +51,15 @@ WIN32LIBS = $(@WIN32@)
 # inference rules
 .c.o:
 	@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) $(LZO_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 #-------------------------------------------------------------------------
-all: Makefile @WIN32@ bacula-fd @STATIC_FD@
+all: Makefile bacula-fd @STATIC_FD@
 	@echo "==== Make of filed is good ===="
 	@echo " "
 
 acl.o: acl.c
 	@echo "Compiling $<"
-	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $(AFS_CFLAGS) $<
+	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(LZO_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $(AFS_CFLAGS) $<
 
 win32/winlib.a:
 	@if test -f win32/Makefile -a "${GMAKE}" != "none"; then \
@@ -93,16 +86,16 @@ win32:	$(WIN32OBJS)
 	fi
 	@rm -f bacula-fd.exe
 
-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@
+bacula-fd:  Makefile $(SVROBJS) ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
 	@echo "Linking $@ ..."
 	$(LIBTOOL_LINK) $(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -L../findlib -o $@ $(SVROBJS) \
-	  $(WIN32LIBS) $(FDLIBS) $(ZLIBS) -lbacfind -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(LIBS) \
-	  $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS) $(AFS_LIBS) $(LZOLIBS)
+	  $(WIN32LIBS) $(FDLIBS) $(ZLIBS) -lbacfind -lbaccfg -lbac -lm $(LIBS) \
+	  $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS) $(AFS_LIBS) $(LZO_LIBS)
 
-static-bacula-fd: Makefile $(SVROBJS) ../findlib/libbacfind.a ../lib/libbacpy$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) @WIN32@
+static-bacula-fd: Makefile $(SVROBJS) ../findlib/libbacfind.a ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
 	$(LIBTOOL_LINK) $(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -L../findlib -o $@ $(SVROBJS) \
-	   $(WIN32LIBS) $(FDLIBS) $(ZLIBS) -lbacfind -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(LIBS) \
-	   $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS) $(AFS_LIBS) $(LZOLIBS)
+	   $(WIN32LIBS) $(FDLIBS) $(ZLIBS) -lbacfind -lbaccfg -lbac -lm $(LIBS) \
+	   $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS) $(AFS_LIBS) $(LZO_LIBS)
 	strip $@
 
 Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
@@ -154,15 +147,11 @@ install: all
 	   $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) static-bacula-fd $(DESTDIR)$(sbindir)/static-bacula-fd; \
 	fi
 
-
-
 uninstall:
 	(cd $(DESTDIR)$(sbindir); $(RMF) bacula-fd)
 	(cd $(DESTDIR)$(sysconfdir); $(RMF) bacula-fd.conf)
 	(cd $(DESTDIR)$(sysconfdir); $(RMF) bacula-fd.conf.new)
 
-
-
 # Semi-automatic generation of dependencies:
 # Use gcc -MM because X11 `makedepend' doesn't work on all systems
 # and it also includes system headers.
@@ -172,7 +161,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) $(AFS_CFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) *.c >> Makefile
+	@$(CXX) -S -M $(CPPFLAGS) $(XINC) $(LZO_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 a4c7cc4..4bf7974 100644
--- a/src/filed/accurate.c
+++ b/src/filed/accurate.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Version $Id $
@@ -116,7 +104,7 @@ static bool accurate_send_base_file_list(JCR *jcr)
       if (elt->seen) {
          Dmsg2(dbglvl, "base file fname=%s seen=%i\n", elt->fname, elt->seen);
          /* TODO: skip the decode and use directly the lstat field */
-         decode_stat(elt->lstat, &statc, sizeof(statc), &LinkFIc); /* decode catalog stat */  
+         decode_stat(elt->lstat, &statc, sizeof(statc), &LinkFIc); /* decode catalog stat */
          ff_pkt->fname = elt->fname;
          ff_pkt->statp = statc;
          encode_and_send_attributes(jcr, ff_pkt, stream);
@@ -184,7 +172,7 @@ bool accurate_finish(JCR *jcr)
 {
    bool ret = true;
 
-   if (jcr->is_canceled() || jcr->is_incomplete()) {
+   if (jcr->is_canceled()) {
       accurate_free(jcr);
       return ret;
    }
@@ -198,21 +186,21 @@ bool accurate_finish(JCR *jcr)
       }
       accurate_free(jcr);
       if (jcr->is_JobLevel(L_FULL)) {
-         Jmsg(jcr, M_INFO, 0, _("Space saved with Base jobs: %lld MB\n"), 
+         Jmsg(jcr, M_INFO, 0, _("Space saved with Base jobs: %lld MB\n"),
               jcr->base_size/(1024*1024));
       }
    }
    return ret;
 }
 
-static bool accurate_add_file(JCR *jcr, uint32_t len, 
+static bool accurate_add_file(JCR *jcr, uint32_t len,
                               char *fname, char *lstat, char *chksum,
                               int32_t delta)
 {
    bool ret = true;
    CurFile *item;
 
-   /* we store CurFile, fname and ctime/mtime in the same chunk 
+   /* we store CurFile, fname and ctime/mtime in the same chunk
     * we need one extra byte to handle an empty chksum
     */
    item = (CurFile *)jcr->file_list->hash_malloc(sizeof(CurFile)+len+3);
@@ -230,9 +218,9 @@ static bool accurate_add_file(JCR *jcr, uint32_t len,
 
    item->delta_seq = delta;
 
-   jcr->file_list->insert(item->fname, item); 
+   jcr->file_list->insert(item->fname, item);
 
-   Dmsg4(dbglvl, "add fname=<%s> lstat=%s  delta_seq=%i chksum=%s\n", 
+   Dmsg4(dbglvl, "add fname=<%s> lstat=%s  delta_seq=%i chksum=%s\n",
          fname, lstat, delta, chksum);
    return ret;
 }
@@ -240,8 +228,8 @@ static bool accurate_add_file(JCR *jcr, uint32_t len,
 /*
  * This function is called for each file seen in fileset.
  * We check in file_list hash if fname have been backuped
- * the last time. After we can compare Lstat field. 
- * Full Lstat usage have been removed on 6612 
+ * the last time. After we can compare Lstat field.
+ * Full Lstat usage have been removed on 6612
  *
  * Returns: true   if file has changed (must be backed up)
  *          false  file not changed
@@ -270,12 +258,12 @@ bool accurate_check_file(JCR *jcr, FF_PKT *ff_pkt)
    }
 
    strip_path(ff_pkt);
- 
+
    if (S_ISDIR(ff_pkt->statp.st_mode)) {
       fname = ff_pkt->link;
    } else {
       fname = ff_pkt->fname;
-   } 
+   }
 
    if (!accurate_lookup(jcr, fname, &elt)) {
       Dmsg1(dbglvl, "accurate %s (not found)\n", fname);
@@ -391,9 +379,9 @@ bool accurate_check_file(JCR *jcr, FF_PKT *ff_pkt)
           * The remainder of the function is all about getting the checksum.
           * First we initialise, then we read files, other streams and Finder Info.
           */
-         if (!stat && ff_pkt->type != FT_LNKSAVED && 
-             (S_ISREG(ff_pkt->statp.st_mode) && 
-              ff_pkt->flags & (FO_MD5|FO_SHA1|FO_SHA256|FO_SHA512))) 
+         if (!stat && ff_pkt->type != FT_LNKSAVED &&
+             (S_ISREG(ff_pkt->statp.st_mode) &&
+              ff_pkt->flags & (FO_MD5|FO_SHA1|FO_SHA256|FO_SHA512)))
          {
 
             if (!*elt.chksum && !jcr->rerunning) {
@@ -410,20 +398,20 @@ bool accurate_check_file(JCR *jcr, FF_PKT *ff_pkt)
             if (ff_pkt->flags & FO_MD5) {
                digest = crypto_digest_new(jcr, CRYPTO_DIGEST_MD5);
                digest_stream = STREAM_MD5_DIGEST;
-               
+
             } else if (ff_pkt->flags & FO_SHA1) {
                digest = crypto_digest_new(jcr, CRYPTO_DIGEST_SHA1);
                digest_stream = STREAM_SHA1_DIGEST;
-               
+
             } else if (ff_pkt->flags & FO_SHA256) {
                digest = crypto_digest_new(jcr, CRYPTO_DIGEST_SHA256);
                digest_stream = STREAM_SHA256_DIGEST;
-               
+
             } else if (ff_pkt->flags & FO_SHA512) {
                digest = crypto_digest_new(jcr, CRYPTO_DIGEST_SHA512);
                digest_stream = STREAM_SHA512_DIGEST;
             }
-            
+
             /* Did digest initialization fail? */
             if (digest_stream != STREAM_NONE && digest == NULL) {
                Jmsg(jcr, M_WARNING, 0, _("%s digest initialization failed\n"),
@@ -434,19 +422,19 @@ bool accurate_check_file(JCR *jcr, FF_PKT *ff_pkt)
             if (digest) {
                char md[CRYPTO_DIGEST_MAX_SIZE];
                uint32_t size;
-               
+
                size = sizeof(md);
-               
+
                if (digest_file(jcr, ff_pkt, digest) != 0) {
                   jcr->JobErrors++;
 
                } else if (crypto_digest_finalize(digest, (uint8_t *)md, &size)) {
                   char *digest_buf;
                   const char *digest_name;
-                  
+
                   digest_buf = (char *)malloc(BASE64_SIZE(size));
                   digest_name = crypto_digest_name(digest);
-                  
+
                   bin_to_base64(digest_buf, BASE64_SIZE(size), md, size, true);
 
                   if (strcmp(digest_buf, elt.chksum)) {
@@ -457,7 +445,7 @@ bool accurate_check_file(JCR *jcr, FF_PKT *ff_pkt)
                            digest_buf);
                      stat = true;
                   }
-                  
+
                   free(digest_buf);
                }
                crypto_digest_free(digest);
@@ -477,7 +465,7 @@ bool accurate_check_file(JCR *jcr, FF_PKT *ff_pkt)
     * When in Full+Base mode, we mark only if the file match exactly
     */
    if (jcr->getJobLevel() == L_FULL) {
-      if (!stat) {               
+      if (!stat) {
          /* compute space saved with basefile */
          jcr->base_size += ff_pkt->statp.st_size;
          accurate_mark_file_as_seen(jcr, &elt);
@@ -491,7 +479,7 @@ bail_out:
    return stat;
 }
 
-/* 
+/*
  * TODO: use big buffer from htable
  */
 int accurate_cmd(JCR *jcr)
@@ -527,12 +515,12 @@ int accurate_cmd(JCR *jcr)
             chksum_pos = lstat_pos - 1;    /* tweak: no checksum, point to the last \0 */
             delta_seq = 0;
          } else {
-            delta_seq = str_to_int32(dir->msg + 
-                                     chksum_pos + 
+            delta_seq = str_to_int32(dir->msg +
+                                     chksum_pos +
                                      strlen(dir->msg + chksum_pos) + 1);
          }
 
-         accurate_add_file(jcr, dir->msglen, 
+         accurate_add_file(jcr, dir->msglen,
                            dir->msg,               /* Path */
                            dir->msg + lstat_pos,   /* LStat */
                            dir->msg + chksum_pos,  /* CheckSum */
diff --git a/src/filed/acl.c b/src/filed/acl.c
index 59eac94..60c5531 100644
--- a/src/filed/acl.c
+++ b/src/filed/acl.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /**
  * Functions to handle ACLs for bacula.
@@ -62,10 +50,10 @@
  *   Major rewrite by Marco van Wieringen, November 2008
  *   Major overhaul by Marco van Wieringen, January 2012
  */
-  
+
 #include "bacula.h"
 #include "filed.h"
-  
+
 #if !defined(HAVE_ACL) && !defined(HAVE_AFS_ACL)
 /**
  * Entry points when compiled without support for ACLs or on an unsupported platform.
@@ -322,8 +310,10 @@ static bacl_exit_code aix_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
    switch (type.u64) {
    case ACL_AIXC:
       retval = send_acl_stream(jcr, STREAM_ACL_AIX_AIXC);
+      break;
    case ACL_NFS4:
       retval = send_acl_stream(jcr, STREAM_ACL_AIX_NFS4);
+      break;
    }
 
 bail_out:
@@ -771,7 +761,7 @@ static bacl_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype)
        * From observation, IRIX's acl_get_file() seems to return a
        * non-NULL acl with a count field of -1 when a file has no ACL
        * defined, while IRIX's acl_to_text() returns NULL when presented
-       * with such an ACL. 
+       * with such an ACL.
        *
        * For all other implmentations we check if there are more then
        * zero entries in the acl returned.
@@ -822,7 +812,7 @@ static bacl_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype)
       Mmsg2(jcr->errmsg,
             _("acl_to_text error on file \"%s\": ERR=%s\n"),
             jcr->last_fname, be.bstrerror());
-      Dmsg2(100, "acl_to_text error file=%s ERR=%s\n",  
+      Dmsg2(100, "acl_to_text error file=%s ERR=%s\n",
             jcr->last_fname, be.bstrerror());
 
       retval = bacl_exit_error;
@@ -852,7 +842,7 @@ static bacl_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype)
          Mmsg2(jcr->errmsg,
                _("acl_get_file error on file \"%s\": ERR=%s\n"),
                jcr->last_fname, be.bstrerror());
-         Dmsg2(100, "acl_get_file error file=%s ERR=%s\n",  
+         Dmsg2(100, "acl_get_file error file=%s ERR=%s\n",
                jcr->last_fname, be.bstrerror());
 
          retval = bacl_exit_error;
@@ -922,7 +912,7 @@ static bacl_exit_code generic_set_acl_on_os(JCR *jcr,
       Mmsg2(jcr->errmsg,
             _("acl_from_text error on file \"%s\": ERR=%s\n"),
             jcr->last_fname, be.bstrerror());
-      Dmsg3(100, "acl_from_text error acl=%s file=%s ERR=%s\n",  
+      Dmsg3(100, "acl_from_text error acl=%s file=%s ERR=%s\n",
             content, jcr->last_fname, be.bstrerror());
       return bacl_exit_error;
    }
@@ -938,7 +928,7 @@ static bacl_exit_code generic_set_acl_on_os(JCR *jcr,
       Mmsg2(jcr->errmsg,
             _("acl_valid error on file \"%s\": ERR=%s\n"),
             jcr->last_fname, be.bstrerror());
-      Dmsg3(100, "acl_valid error acl=%s file=%s ERR=%s\n",  
+      Dmsg3(100, "acl_valid error acl=%s file=%s ERR=%s\n",
             content, jcr->last_fname, be.bstrerror());
       acl_free(acl);
       return bacl_exit_error;
@@ -1413,7 +1403,7 @@ static bacl_exit_code tru64_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
        * Tru64 has next to BACL_TYPE_DEFAULT also BACL_TYPE_DEFAULT_DIR acls.
        * This is an inherited acl for all subdirs.
        * See http://www.helsinki.fi/atk/unix/dec_manuals/DOC_40D/AQ0R2DTE/DOCU_018.HTM
-       * Section 21.5 Default ACLs 
+       * Section 21.5 Default ACLs
        */
       if (generic_get_acl_from_os(jcr, BACL_TYPE_DEFAULT_DIR) == bacl_exit_fatal) {
          return bacl_exit_error;
@@ -1530,7 +1520,7 @@ static bacl_exit_code hpux_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
          Mmsg2(jcr->errmsg,
                _("getacl error on file \"%s\": ERR=%s\n"),
                jcr->last_fname, be.bstrerror());
-         Dmsg2(100, "getacl error file=%s ERR=%s\n",  
+         Dmsg2(100, "getacl error file=%s ERR=%s\n",
                jcr->last_fname, be.bstrerror());
 
          pm_strcpy(jcr->acl_data->u.build->content, "");
@@ -1565,7 +1555,7 @@ static bacl_exit_code hpux_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
       Mmsg2(jcr->errmsg,
             _("acltostr error on file \"%s\": ERR=%s\n"),
             jcr->last_fname, be.bstrerror());
-      Dmsg3(100, "acltostr error acl=%s file=%s ERR=%s\n",  
+      Dmsg3(100, "acltostr error acl=%s file=%s ERR=%s\n",
             jcr->acl_data->u.build->content, jcr->last_fname, be.bstrerror());
       return bacl_exit_error;
    }
@@ -1587,7 +1577,7 @@ static bacl_exit_code hpux_parse_acl_streams(JCR *jcr,
       Mmsg2(jcr->errmsg,
             _("strtoacl error on file \"%s\": ERR=%s\n"),
             jcr->last_fname, be.bstrerror());
-      Dmsg3(100, "strtoacl error acl=%s file=%s ERR=%s\n",  
+      Dmsg3(100, "strtoacl error acl=%s file=%s ERR=%s\n",
             content, jcr->last_fname, be.bstrerror());
       return bacl_exit_error;
    }
@@ -1597,7 +1587,7 @@ static bacl_exit_code hpux_parse_acl_streams(JCR *jcr,
       Mmsg2(jcr->errmsg,
             _("strtoacl error on file \"%s\": ERR=%s\n"),
             jcr->last_fname, be.bstrerror());
-      Dmsg3(100, "strtoacl error acl=%s file=%s ERR=%s\n",  
+      Dmsg3(100, "strtoacl error acl=%s file=%s ERR=%s\n",
             content, jcr->last_fname, be.bstrerror());
 
       return bacl_exit_error;
@@ -1737,7 +1727,7 @@ static bacl_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
          Mmsg2(jcr->errmsg,
                _("pathconf error on file \"%s\": ERR=%s\n"),
                jcr->last_fname, be.bstrerror());
-         Dmsg2(100, "pathconf error file=%s ERR=%s\n",  
+         Dmsg2(100, "pathconf error file=%s ERR=%s\n",
                jcr->last_fname, be.bstrerror());
          return bacl_exit_error;
       }
@@ -1759,7 +1749,7 @@ static bacl_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
          Mmsg2(jcr->errmsg,
                _("acl_get error on file \"%s\": ERR=%s\n"),
                jcr->last_fname, acl_strerror(errno));
-         Dmsg2(100, "acl_get error file=%s ERR=%s\n",  
+         Dmsg2(100, "acl_get error file=%s ERR=%s\n",
                jcr->last_fname, acl_strerror(errno));
          return bacl_exit_error;
       }
@@ -1844,7 +1834,7 @@ static bacl_exit_code solaris_parse_acl_streams(JCR *jcr,
             Mmsg2(jcr->errmsg,
                   _("pathconf error on file \"%s\": ERR=%s\n"),
                   jcr->last_fname, be.bstrerror());
-            Dmsg3(100, "pathconf error acl=%s file=%s ERR=%s\n",  
+            Dmsg3(100, "pathconf error acl=%s file=%s ERR=%s\n",
                   content, jcr->last_fname, be.bstrerror());
             return bacl_exit_error;
          }
@@ -1889,7 +1879,7 @@ static bacl_exit_code solaris_parse_acl_streams(JCR *jcr,
          Mmsg2(jcr->errmsg,
                _("acl_fromtext error on file \"%s\": ERR=%s\n"),
                jcr->last_fname, acl_strerror(error));
-         Dmsg3(100, "acl_fromtext error acl=%s file=%s ERR=%s\n",  
+         Dmsg3(100, "acl_fromtext error acl=%s file=%s ERR=%s\n",
                content, jcr->last_fname, acl_strerror(error));
          return bacl_exit_error;
       }
@@ -1936,7 +1926,7 @@ static bacl_exit_code solaris_parse_acl_streams(JCR *jcr,
             Mmsg2(jcr->errmsg,
                   _("acl_set error on file \"%s\": ERR=%s\n"),
                   jcr->last_fname, acl_strerror(error));
-            Dmsg3(100, "acl_set error acl=%s file=%s ERR=%s\n",  
+            Dmsg3(100, "acl_set error acl=%s file=%s ERR=%s\n",
                   content, jcr->last_fname, acl_strerror(error));
             acl_free(aclp);
             return bacl_exit_error;
@@ -2022,7 +2012,7 @@ static bacl_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
       Mmsg2(jcr->errmsg,
             _("acltotext error on file \"%s\": ERR=%s\n"),
             jcr->last_fname, be.bstrerror());
-      Dmsg3(100, "acltotext error acl=%s file=%s ERR=%s\n",  
+      Dmsg3(100, "acltotext error acl=%s file=%s ERR=%s\n",
             jcr->acl_data->u.build->content, jcr->last_fname, be.bstrerror());
    }
 
@@ -2045,7 +2035,7 @@ static bacl_exit_code solaris_parse_acl_streams(JCR *jcr,
       Mmsg2(jcr->errmsg,
             _("aclfromtext error on file \"%s\": ERR=%s\n"),
             jcr->last_fname, be.bstrerror());
-      Dmsg3(100, "aclfromtext error acl=%s file=%s ERR=%s\n",  
+      Dmsg3(100, "aclfromtext error acl=%s file=%s ERR=%s\n",
             content, jcr->last_fname, be.bstrerror());
       return bacl_exit_error;
    }
diff --git a/src/filed/acl.h b/src/filed/acl.h
index fddc90b..bb63529 100644
--- a/src/filed/acl.h
+++ b/src/filed/acl.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Properties we use for getting and setting ACLs.
diff --git a/src/filed/authenticate.c b/src/filed/authenticate.c
index e9fc519..47184a6 100644
--- a/src/filed/authenticate.c
+++ b/src/filed/authenticate.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Authenticate Director who is attempting to connect.
@@ -35,6 +23,8 @@
 #include "bacula.h"
 #include "filed.h"
 
+extern CLIENT *me;                 /* my resource */
+
 const int dbglvl = 50;
 
 /* Version at end of Hello
@@ -43,9 +33,13 @@ const int dbglvl = 50;
  *   2 13Mar09 - added the ability to restore from multiple storages
  *   3 03Sep10 - added the restore object command for vss plugin 4.0
  *   4 25Nov10 - added bandwidth command 5.1
- *   5 24Nov11 - added new restore object command format (pluginname) 6.0
+ *   5 01Jan14 - added SD Calls Client and api version to status command
  */
-static char OK_hello[]  = "2000 OK Hello 5\n";
+#define FD_VERSION 5
+
+static char hello_sd[]  = "Hello Bacula SD: Start Job %s %d\n";
+
+static char hello_dir[]  = "2000 OK Hello %d\n";
 static char Dir_sorry[] = "2999 Authentication failed.\n";
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
@@ -62,26 +56,20 @@ static bool authenticate(int rcode, BSOCK *bs, JCR* jcr)
    bool auth_success = false;
    alist *verify_list = NULL;
    btimer_t *tid = NULL;
+   int dir_version = 0;
 
    if (rcode != R_DIRECTOR) {
       Dmsg1(dbglvl, "I only authenticate directors, not %d\n", rcode);
       Jmsg1(jcr, M_FATAL, 0, _("I only authenticate directors, not %d\n"), rcode);
       goto auth_fatal;
    }
-   if (bs->msglen < 25 || bs->msglen > 500) {
-      Dmsg2(dbglvl, "Bad Hello command from Director at %s. Len=%d.\n",
-            bs->who(), bs->msglen);
-      char addr[64];
-      char *who = bnet_get_peer(bs, addr, sizeof(addr)) ? bs->who() : addr;
-      Jmsg2(jcr, M_FATAL, 0, _("Bad Hello command from Director at %s. Len=%d.\n"),
-             who, bs->msglen);
-      goto auth_fatal;
-   }
+
    dirname = check_pool_memory_size(dirname, bs->msglen);
 
-   if (sscanf(bs->msg, "Hello Director %s calling", dirname) != 1) {
+   if (sscanf(bs->msg, "Hello Director %s calling %d", dirname, &dir_version) != 2 &&
+       sscanf(bs->msg, "Hello Director %s calling", dirname) != 1) {
       char addr[64];
-      char *who = bnet_get_peer(bs, addr, sizeof(addr)) ? bs->who() : addr;
+      char *who = bs->get_peer(addr, sizeof(addr)) ? bs->who() : addr;
       bs->msg[100] = 0;
       Dmsg2(dbglvl, "Bad Hello command from Director at %s: %s\n",
             bs->who(), bs->msg);
@@ -96,8 +84,8 @@ static bool authenticate(int rcode, BSOCK *bs, JCR* jcr)
    }
    if (!director) {
       char addr[64];
-      char *who = bnet_get_peer(bs, addr, sizeof(addr)) ? bs->who() : addr;
-      Jmsg2(jcr, M_FATAL, 0, _("Connection from unknown Director %s at %s rejected.\n"), 
+      char *who = bs->get_peer(addr, sizeof(addr)) ? bs->who() : addr;
+      Jmsg2(jcr, M_FATAL, 0, _("Connection from unknown Director %s at %s rejected.\n"),
             dirname, who);
       goto auth_fatal;
    }
@@ -123,7 +111,7 @@ static bool authenticate(int rcode, BSOCK *bs, JCR* jcr)
 
    tid = start_bsock_timer(bs, AUTH_TIMEOUT);
    /* Challenge the director */
-   auth_success = cram_md5_challenge(bs, director->password, tls_local_need, compatible);  
+   auth_success = cram_md5_challenge(bs, director->password, tls_local_need, compatible);
    if (job_canceled(jcr)) {
       auth_success = false;
       goto auth_fatal;                   /* quick exit */
@@ -132,13 +120,13 @@ static bool authenticate(int rcode, BSOCK *bs, JCR* jcr)
       auth_success = cram_md5_respond(bs, director->password, &tls_remote_need, &compatible);
       if (!auth_success) {
           char addr[64];
-          char *who = bnet_get_peer(bs, addr, sizeof(addr)) ? bs->who() : addr;
-          Dmsg1(dbglvl, "cram_get_auth failed for %s\n", who);
+          char *who = bs->get_peer(addr, sizeof(addr)) ? bs->who() : addr;
+          Dmsg1(dbglvl, "cram_get_auth respond failed for Director: %s\n", who);
       }
    } else {
        char addr[64];
-       char *who = bnet_get_peer(bs, addr, sizeof(addr)) ? bs->who() : addr;
-       Dmsg1(dbglvl, "cram_auth failed for %s\n", who);
+       char *who = bs->get_peer(addr, sizeof(addr)) ? bs->who() : addr;
+       Dmsg1(dbglvl, "cram_auth challenge failed for Director %s\n", who);
    }
    if (!auth_success) {
        Emsg1(M_FATAL, 0, _("Incorrect password given by Director at %s.\n"),
@@ -204,11 +192,11 @@ int authenticate_director(JCR *jcr)
    BSOCK *dir = jcr->dir_bsock;
 
    if (!authenticate(R_DIRECTOR, dir, jcr)) {
-      bnet_fsend(dir, "%s", Dir_sorry);
+      dir->fsend("%s", Dir_sorry);
       Emsg0(M_FATAL, 0, _("Unable to authenticate Director\n"));
       return 0;
    }
-   return bnet_fsend(dir, "%s", OK_hello);
+   return dir->fsend(hello_dir, FD_VERSION);
 }
 
 /*
@@ -222,6 +210,7 @@ int authenticate_storagedaemon(JCR *jcr)
    int tls_remote_need = BNET_TLS_NONE;
    int compatible = true;
    bool auth_success = false;
+   int sd_version = 0;
 
    btimer_t *tid = start_bsock_timer(sd, AUTH_TIMEOUT);
 
@@ -243,19 +232,25 @@ int authenticate_storagedaemon(JCR *jcr)
       goto auth_fatal;
    }
 
+
+   sd->fsend(hello_sd, jcr->Job, FD_VERSION);
+   Dmsg1(100, "Send to SD: %s\n", sd->msg);
+
    /* Respond to SD challenge */
+   Dmsg0(050, "==== respond to SD challenge\n");
    auth_success = cram_md5_respond(sd, jcr->sd_auth_key, &tls_remote_need, &compatible);
    if (job_canceled(jcr)) {
       auth_success = false;     /* force quick exit */
       goto auth_fatal;
    }
    if (!auth_success) {
-      Dmsg1(dbglvl, "cram_respond failed for %s\n", sd->who());
+      Dmsg1(dbglvl, "cram_respond failed for SD: %s\n", sd->who());
    } else {
       /* Now challenge him */
+      Dmsg0(050, "==== Challenge SD\n");
       auth_success = cram_md5_challenge(sd, jcr->sd_auth_key, tls_local_need, compatible);
       if (!auth_success) {
-         Dmsg1(dbglvl, "cram_challenge failed for %s\n", sd->who());
+         Dmsg1(dbglvl, "cram_challenge failed for SD: %s\n", sd->who());
       }
    }
 
@@ -263,11 +258,13 @@ int authenticate_storagedaemon(JCR *jcr)
       Jmsg(jcr, M_FATAL, 0, _("Authorization key rejected by Storage daemon.\n"
        "Please see " MANUAL_AUTH_URL " for help.\n"));
       goto auth_fatal;
+   } else {
+      Dmsg0(050, "Authorization with SD is OK\n");
    }
 
    /* Verify that the remote host is willing to meet our TLS requirements */
    if (tls_remote_need < tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {
-      Jmsg(jcr, M_FATAL, 0, _("Authorization problem: Remote server did not" 
+      Jmsg(jcr, M_FATAL, 0, _("Authorization problem: Remote server did not"
            " advertize required TLS support.\n"));
       Dmsg2(dbglvl, "remote_need=%d local_need=%d\n", tls_remote_need, tls_local_need);
       auth_success = false;
@@ -293,6 +290,13 @@ int authenticate_storagedaemon(JCR *jcr)
          sd->free_tls();                    /* yes, shutdown tls */
       }
    }
+   if (sd->recv() <= 0) {
+      auth_success = false;
+      goto auth_fatal;
+   }
+   sscanf(sd->msg, "3000 OK Hello %d", &sd_version);
+
+   /* At this point, we have successfully connected */
 
 auth_fatal:
    /* Destroy session key */
diff --git a/src/filed/backup.c b/src/filed/backup.c
index da9330f..bd31cc7 100644
--- a/src/filed/backup.c
+++ b/src/filed/backup.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /**
  *  Bacula File Daemon  backup.c  send file attributes and data
@@ -115,7 +103,7 @@ bool blast_data_to_storage_daemon(JCR *jcr, char *addr)
     *                  output_block_size = input_block_size + (input_block_size / 16) + 64 + 3 + sizeof(comp_stream_header)
     *
     * The zlib compression workset is initialized here to minimize
-    *  the "per file" load. The jcr member is only set, if the init 
+    *  the "per file" load. The jcr member is only set, if the init
     *  was successful.
     *
     *  For the same reason, lzo compression is initialized here.
@@ -127,11 +115,11 @@ bool blast_data_to_storage_daemon(JCR *jcr, char *addr)
    jcr->compress_buf_size = jcr->buf_size + ((jcr->buf_size+999) / 1000) + 30;
    jcr->compress_buf = get_memory(jcr->compress_buf_size);
 #endif
-   
+
 #ifdef HAVE_LIBZ
-   z_stream *pZlibStream = (z_stream*)malloc(sizeof(z_stream));  
+   z_stream *pZlibStream = (z_stream*)malloc(sizeof(z_stream));
    if (pZlibStream) {
-      pZlibStream->zalloc = Z_NULL;      
+      pZlibStream->zalloc = Z_NULL;
       pZlibStream->zfree = Z_NULL;
       pZlibStream->opaque = Z_NULL;
       pZlibStream->state = Z_NULL;
@@ -164,8 +152,8 @@ bool blast_data_to_storage_daemon(JCR *jcr, char *addr)
    /** in accurate mode, we overload the find_one check function */
    if (jcr->accurate) {
       set_find_changed_function((FF_PKT *)jcr->ff, accurate_check_file);
-   } 
-   
+   }
+
    start_heartbeat_monitor(jcr);
 
    if (have_acl) {
@@ -249,7 +237,7 @@ bool blast_data_to_storage_daemon(JCR *jcr, char *addr)
 
 static bool crypto_session_start(JCR *jcr)
 {
-   crypto_cipher_t cipher = CRYPTO_CIPHER_AES_128_CBC;
+   crypto_cipher_t cipher = (crypto_cipher_t) me->pki_cipher;
 
    /**
     * Create encryption session data and a cached, DER-encoded session data
@@ -261,6 +249,10 @@ static bool crypto_session_start(JCR *jcr)
 
       /** Create per-job session encryption context */
       jcr->crypto.pki_session = crypto_session_new(cipher, jcr->crypto.pki_recipients);
+      if (!jcr->crypto.pki_session) {
+         Jmsg(jcr, M_FATAL, 0, _("Unsupported cipher on this system.\n"));
+         return false;
+      }
 
       /** Get the session data size */
       if (!crypto_session_encode(jcr->crypto.pki_session, (uint8_t *)0, &size)) {
@@ -307,8 +299,8 @@ static bool crypto_session_send(JCR *jcr, BSOCK *sd)
 
    /** Send our header */
    Dmsg2(100, "Send hdr fi=%ld stream=%d\n", jcr->JobFiles, STREAM_ENCRYPTED_SESSION_DATA);
-   sd->fsend("%ld %d 0", jcr->JobFiles, STREAM_ENCRYPTED_SESSION_DATA);
-
+   sd->fsend("%ld %d %lld", jcr->JobFiles, STREAM_ENCRYPTED_SESSION_DATA,
+      (int64_t)jcr->ff->statp.st_size);
    msgsave = sd->msg;
    sd->msg = jcr->crypto.pki_session_encoded;
    sd->msglen = jcr->crypto.pki_session_encoded_size;
@@ -337,7 +329,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    bool do_read = false;
    bool plugin_started = false;
    bool do_plugin_set = false;
-   int stat, data_stream; 
+   int stat, data_stream;
    int rtnstat = 0;
    DIGEST *digest = NULL;
    DIGEST *signing_digest = NULL;
@@ -345,15 +337,22 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    SIGNATURE *sig = NULL;
    bool has_file_data = false;
    struct save_pkt sp;          /* use by option plugin */
-   // TODO landonf: Allow the user to specify the digest algorithm
-#ifdef HAVE_SHA2
-   crypto_digest_t signing_algorithm = CRYPTO_DIGEST_SHA256;
-#else
-   crypto_digest_t signing_algorithm = CRYPTO_DIGEST_SHA1;
-#endif
-   BSOCK *sd = jcr->store_bsock;
 
-   if (jcr->is_canceled() || jcr->is_incomplete()) {
+   crypto_digest_t signing_algorithm = (crypto_digest_t) me->pki_digest;
+
+   BSOCK *sd = jcr->store_bsock;
+   time_t now = time(NULL);
+   if (jcr->last_stat_time == 0) {
+      jcr->last_stat_time = now;
+      jcr->stat_interval = 30;  /* Default 30 seconds */
+   } else if (now >= jcr->last_stat_time + jcr->stat_interval) {
+      jcr->dir_bsock->fsend("Progress Job=x files=%ld bytes=%lld bps=%ld\n",
+         jcr->JobFiles, jcr->JobBytes, jcr->LastRate);
+      jcr->last_stat_time = now;
+   }
+
+   if (jcr->is_canceled()) {
+      Dmsg0(100, "Job canceled by user.\n");
       return 0;
    }
 
@@ -433,7 +432,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    }
    case FT_NOFOLLOW: {
       berrno be;
-      Jmsg(jcr, M_NOTSAVED, 0, _("     Could not follow link \"%s\": ERR=%s\n"), 
+      Jmsg(jcr, M_NOTSAVED, 0, _("     Could not follow link \"%s\": ERR=%s\n"),
            ff_pkt->fname, be.bstrerror(ff_pkt->ff_errno));
       jcr->JobErrors++;
       return 1;
@@ -454,7 +453,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       return 1;
    case FT_NOOPEN: {
       berrno be;
-      Jmsg(jcr, M_NOTSAVED, 0, _("     Could not open directory \"%s\": ERR=%s\n"), 
+      Jmsg(jcr, M_NOTSAVED, 0, _("     Could not open directory \"%s\": ERR=%s\n"),
            ff_pkt->fname, be.bstrerror(ff_pkt->ff_errno));
       jcr->JobErrors++;
       return 1;
@@ -463,7 +462,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       Dmsg1(130, "FT_DELETED: %s\n", ff_pkt->fname);
       break;
    default:
-      Jmsg(jcr, M_NOTSAVED, 0,  _("     Unknown file type %d; not saved: %s\n"), 
+      Jmsg(jcr, M_NOTSAVED, 0,  _("     Unknown file type %d; not saved: %s\n"),
            ff_pkt->type, ff_pkt->fname);
       jcr->JobErrors++;
       return 1;
@@ -479,7 +478,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
        * algorithms below.
        *
        * The signing digest is a single algorithm depending on
-       * whether or not we have SHA2.              
+       * whether or not we have SHA2.
        *   ****FIXME****  the signing algoritm should really be
        *   determined a different way!!!!!!  What happens if
        *   sha2 was available during backup but not restore?
@@ -543,7 +542,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
 
    /* option and cmd plugin are not compatible together */
    } else if (ff_pkt->opt_plugin) {
-      
+
       /* ask the option plugin what to do with this file */
       switch (plugin_option_handle_file(jcr, ff_pkt, &sp)) {
       case bRC_OK:
@@ -600,7 +599,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
 #ifdef HAVE_WIN32
       do_read = !is_portable_backup(&ff_pkt->bfd) || ff_pkt->statp.st_size > 0;
 #else
-      do_read = ff_pkt->statp.st_size > 0;  
+      do_read = ff_pkt->statp.st_size > 0;
 #endif
    } else if (ff_pkt->type == FT_RAW || ff_pkt->type == FT_FIFO ||
               ff_pkt->type == FT_REPARSE || ff_pkt->type == FT_JUNCTION ||
@@ -622,7 +621,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          tid = NULL;
       }
       int noatime = ff_pkt->flags & FO_NOATIME ? O_NOATIME : 0;
-      ff_pkt->bfd.reparse_point = (ff_pkt->type == FT_REPARSE || 
+      ff_pkt->bfd.reparse_point = (ff_pkt->type == FT_REPARSE ||
                                    ff_pkt->type == FT_JUNCTION);
       if (bopen(&ff_pkt->bfd, ff_pkt->fname, O_RDONLY | O_BINARY | noatime, 0) < 0) {
          ff_pkt->ff_errno = errno;
@@ -648,7 +647,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       }
 
       bclose(&ff_pkt->bfd);
-      
+
       if (!stat) {
          goto bail_out;
       }
@@ -765,7 +764,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       }
 
       if (!crypto_sign_add_signer(sig, signing_digest, jcr->crypto.pki_keypair)) {
-         Jmsg(jcr, M_FATAL, 0, _("An error occurred while signing the stream.\n"));
+         Jmsg(jcr, M_FATAL, 0, _("An error occurred while adding signer the stream.\n"));
          goto bail_out;
       }
 
@@ -838,10 +837,11 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    }
 
 good_rtn:
-   rtnstat = jcr->is_canceled() ? 0 : 1; /* good return if not canceled */
+   rtnstat = 1;
 
 bail_out:
-   if (jcr->is_incomplete() || jcr->is_canceled()) {
+   if (jcr->is_canceled()) {
+      Dmsg0(100, "Job canceled by user.\n");
       rtnstat = 0;
    }
    if (plugin_started) {
@@ -860,7 +860,7 @@ bail_out:
       crypto_digest_free(signing_digest);
    }
    if (sig) {
-      crypto_sign_free(sig);        
+      crypto_sign_free(sig);
    }
    return rtnstat;
 }
@@ -876,7 +876,7 @@ bail_out:
  * Currently this is not a problem as the only other stream, resource forks,
  * are not handled as sparse files.
  */
-static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest, 
+static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
                      DIGEST *signing_digest)
 {
    BSOCK *sd = jcr->store_bsock;
@@ -926,7 +926,7 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
 
       if (((z_stream*)jcr->pZLIB_compress_workset)->total_in == 0) {
          /** set gzip compression level - must be done per file */
-         if ((zstat=deflateParams((z_stream*)jcr->pZLIB_compress_workset, 
+         if ((zstat=deflateParams((z_stream*)jcr->pZLIB_compress_workset,
               ff_pkt->Compress_level, Z_DEFAULT_STRATEGY)) != Z_OK) {
             Jmsg(jcr, M_FATAL, 0, _("Compression deflateParams error: %d\n"), zstat);
             jcr->setJobStatus(JS_ErrorTerminated);
@@ -969,7 +969,7 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
          goto err;
       }
       /** Allocate the cipher context */
-      if ((cipher_ctx = crypto_cipher_new(jcr->crypto.pki_session, true, 
+      if ((cipher_ctx = crypto_cipher_new(jcr->crypto.pki_session, true,
            &cipher_block_size)) == NULL) {
          /* Shouldn't happen! */
          Jmsg0(jcr, M_FATAL, 0, _("Failed to initialize encryption context.\n"));
@@ -983,8 +983,8 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
        * could be returned for the given read buffer size.
        * (Using the larger of either rsize or max_compress_len)
        */
-      jcr->crypto.crypto_buf = check_pool_memory_size(jcr->crypto.crypto_buf, 
-           (MAX(rsize + (int)sizeof(uint32_t), (int32_t)max_compress_len) + 
+      jcr->crypto.crypto_buf = check_pool_memory_size(jcr->crypto.crypto_buf,
+           (MAX(rsize + (int)sizeof(uint32_t), (int32_t)max_compress_len) +
             cipher_block_size - 1) / cipher_block_size * cipher_block_size);
 
       wbuf = jcr->crypto.crypto_buf; /* Encrypted, possibly compressed output here. */
@@ -992,9 +992,10 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
 
    /**
     * Send Data header to Storage daemon
-    *    <file-index> <stream> <info>
+    *    <file-index> <stream> <expected stream length>
     */
-   if (!sd->fsend("%ld %d 0", jcr->JobFiles, stream)) {
+   if (!sd->fsend("%ld %d %lld", jcr->JobFiles, stream,
+        (int64_t)ff_pkt->statp.st_size)) {
       if (!jcr->is_job_canceled()) {
          Jmsg1(jcr, M_FATAL, 0, _("Network send error to SD. ERR=%s\n"),
                sd->bstrerror());
@@ -1024,7 +1025,7 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
    if (S_ISBLK(ff_pkt->statp.st_mode))
       rsize = (rsize/512) * 512;
 #endif
-   
+
    /**
     * Read the file data
     */
@@ -1075,7 +1076,7 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
       /** Do compression if turned on */
       if (ff_pkt->flags & FO_COMPRESS && ff_pkt->Compress_algo == COMPRESS_GZIP && jcr->pZLIB_compress_workset) {
          Dmsg3(400, "cbuf=0x%x rbuf=0x%x len=%u\n", cbuf, rbuf, sd->msglen);
-         
+
          ((z_stream*)jcr->pZLIB_compress_workset)->next_in   = (Bytef *)rbuf;
                 ((z_stream*)jcr->pZLIB_compress_workset)->avail_in  = sd->msglen;
          ((z_stream*)jcr->pZLIB_compress_workset)->next_out  = (Bytef *)cbuf;
@@ -1094,7 +1095,7 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
             goto err;
          }
 
-         Dmsg2(400, "GZIP compressed len=%d uncompressed len=%d\n", compress_len, 
+         Dmsg2(400, "GZIP compressed len=%d uncompressed len=%d\n", compress_len,
                sd->msglen);
 
          sd->msglen = compress_len;      /* set compressed length */
@@ -1111,11 +1112,10 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
 
          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, 
+         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)
-         {
+         if (lzores == LZO_E_OK && compress_len <= max_compress_len) {
             /* complete header */
             ser_uint32(COMPRESS_LZO1X);
             ser_uint32(compress_len);
@@ -1128,7 +1128,7 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
             goto err;
          }
 
-         Dmsg2(400, "LZO compressed len=%d uncompressed len=%d\n", compress_len, 
+         Dmsg2(400, "LZO compressed len=%d uncompressed len=%d\n", compress_len,
                sd->msglen);
 
          compress_len += sizeof(comp_stream_header); /* add size of header */
@@ -1173,13 +1173,13 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
          }
 
          /** Encrypt the input block */
-         if (crypto_cipher_update(cipher_ctx, cipher_input, cipher_input_len, 
+         if (crypto_cipher_update(cipher_ctx, cipher_input, cipher_input_len,
              (uint8_t *)&jcr->crypto.crypto_buf[initial_len], &encrypted_len)) {
             if ((initial_len + encrypted_len) == 0) {
                /** No full block of data available, read more data */
                continue;
             }
-            Dmsg2(400, "encrypted len=%d unencrypted len=%d\n", encrypted_len, 
+            Dmsg2(400, "encrypted len=%d unencrypted len=%d\n", encrypted_len,
                   sd->msglen);
             sd->msglen = initial_len + encrypted_len; /* set encrypted length */
          } else {
@@ -1216,11 +1216,11 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
          Jmsg(jcr, M_FATAL, 0, _("Too many errors. JobErrors=%d.\n"), jcr->JobErrors);
       }
    } else if (ff_pkt->flags & FO_ENCRYPT) {
-      /** 
+      /**
        * For encryption, we must call finalize to push out any
        *  buffered data.
        */
-      if (!crypto_cipher_finalize(cipher_ctx, (uint8_t *)jcr->crypto.crypto_buf, 
+      if (!crypto_cipher_finalize(cipher_ctx, (uint8_t *)jcr->crypto.crypto_buf,
            &encrypted_len)) {
          /* Padding failed. Shouldn't happen. */
          Jmsg(jcr, M_FATAL, 0, _("Encryption padding error\n"));
@@ -1269,7 +1269,7 @@ err:
    return 0;
 }
 
-bool encode_and_send_attributes(JCR *jcr, FF_PKT *ff_pkt, int &data_stream) 
+bool encode_and_send_attributes(JCR *jcr, FF_PKT *ff_pkt, int &data_stream)
 {
    BSOCK *sd = jcr->store_bsock;
    char attribs[MAXSTRING];
@@ -1310,7 +1310,6 @@ bool encode_and_send_attributes(JCR *jcr, FF_PKT *ff_pkt, int &data_stream)
 
    /* Debug code: check if we must hangup */
    if (hangup && (jcr->JobFiles > (uint32_t)hangup)) {
-      jcr->setJobStatus(JS_Incomplete);
       Jmsg1(jcr, M_FATAL, 0, "Debug hangup requested after %d files.\n", hangup);
       set_hangup(0);
       return false;
@@ -1321,7 +1320,7 @@ bool encode_and_send_attributes(JCR *jcr, FF_PKT *ff_pkt, int &data_stream)
     *    <file-index> <stream> <info>
     */
    if (!sd->fsend("%ld %d 0", jcr->JobFiles, attr_stream)) {
-      if (!jcr->is_canceled() && !jcr->is_incomplete()) {
+      if (!jcr->is_canceled()) {
          Jmsg1(jcr, M_FATAL, 0, _("Network send error to SD. ERR=%s\n"),
                sd->bstrerror());
       }
@@ -1360,7 +1359,7 @@ bool encode_and_send_attributes(JCR *jcr, FF_PKT *ff_pkt, int &data_stream)
    case FT_LNKSAVED:
       Dmsg3(300, "Link %d %s to %s\n", jcr->JobFiles, ff_pkt->fname, ff_pkt->link);
       stat = sd->fsend("%ld %d %s%c%s%c%s%c%s%c%u%c", jcr->JobFiles,
-                       ff_pkt->type, ff_pkt->fname, 0, attribs, 0, 
+                       ff_pkt->type, ff_pkt->fname, 0, attribs, 0,
                        ff_pkt->link, 0, attribsEx, 0, ff_pkt->delta_seq, 0);
       break;
    case FT_DIREND:
@@ -1368,7 +1367,7 @@ bool encode_and_send_attributes(JCR *jcr, FF_PKT *ff_pkt, int &data_stream)
    case FT_JUNCTION:
       /* Here link is the canonical filename (i.e. with trailing slash) */
       stat = sd->fsend("%ld %d %s%c%s%c%c%s%c%u%c", jcr->JobFiles,
-                       ff_pkt->type, ff_pkt->link, 0, attribs, 0, 0, 
+                       ff_pkt->type, ff_pkt->link, 0, attribs, 0, 0,
                        attribsEx, 0, ff_pkt->delta_seq, 0);
       break;
    case FT_PLUGIN_CONFIG:
@@ -1438,7 +1437,7 @@ static bool do_strip(int count, char *in)
    int numsep = 0;
 
    /** Copy to first path separator -- Win32 might have c: ... */
-   while (*in && !IsPathSeparator(*in)) {    
+   while (*in && !IsPathSeparator(*in)) {
       out++; in++;
    }
    if (*in) {                    /* Not at the end of the string */
@@ -1462,7 +1461,7 @@ static bool do_strip(int count, char *in)
       *out++ = *in++;
    }
    *out = 0;
-   Dmsg4(500, "stripped=%d count=%d numsep=%d sep>count=%d\n", 
+   Dmsg4(500, "stripped=%d count=%d numsep=%d sep>count=%d\n",
          stripped, count, numsep, numsep>count);
    return stripped==count && numsep>count;
 }
@@ -1481,7 +1480,7 @@ void strip_path(FF_PKT *ff_pkt)
       return;
    }
    if (!ff_pkt->fname_save) {
-     ff_pkt->fname_save = get_pool_memory(PM_FNAME); 
+     ff_pkt->fname_save = get_pool_memory(PM_FNAME);
      ff_pkt->link_save = get_pool_memory(PM_FNAME);
    }
    pm_strcpy(ff_pkt->fname_save, ff_pkt->fname);
@@ -1503,7 +1502,7 @@ void strip_path(FF_PKT *ff_pkt)
    if (!do_strip(ff_pkt->strip_path, ff_pkt->fname)) {
       unstrip_path(ff_pkt);
       goto rtn;
-   } 
+   }
    /** Strip links but not symlinks */
    if (ff_pkt->type != FT_LNK && ff_pkt->fname != ff_pkt->link) {
       if (!do_strip(ff_pkt->strip_path, ff_pkt->link)) {
@@ -1512,7 +1511,7 @@ void strip_path(FF_PKT *ff_pkt)
    }
 
 rtn:
-   Dmsg3(100, "fname=%s stripped=%s link=%s\n", ff_pkt->fname_save, ff_pkt->fname, 
+   Dmsg3(100, "fname=%s stripped=%s link=%s\n", ff_pkt->fname_save, ff_pkt->fname,
        ff_pkt->link);
 }
 
@@ -1538,7 +1537,7 @@ static void close_vss_backup_session(JCR *jcr)
    /* STOP VSS ON WIN32 */
    /* tell vss to close the backup session */
    if (jcr->VSS) {
-      if (g_pVSSClient->CloseBackup()) {             
+      if (g_pVSSClient->CloseBackup()) {
          /* inform user about writer states */
          for (int i=0; i<(int)g_pVSSClient->GetWriterCount(); i++) {
             int msg_type = M_INFO;
diff --git a/src/filed/bacula-fd.conf.in b/src/filed/bacula-fd.conf.in
index 36f1061..67171a9 100644
--- a/src/filed/bacula-fd.conf.in
+++ b/src/filed/bacula-fd.conf.in
@@ -34,6 +34,7 @@ FileDaemon {                          # this is me
   WorkingDirectory = @working_dir@
   Pid Directory = @piddir@
   Maximum Concurrent Jobs = 20
+# Plugin Directory = @plugindir@
 }
 
 # Send all messages except skipped files back to Director
diff --git a/src/filed/estimate.c b/src/filed/estimate.c
index c48a6f1..26fe43f 100644
--- a/src/filed/estimate.c
+++ b/src/filed/estimate.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula File Daemon estimate.c
@@ -53,7 +41,7 @@ int make_estimate(JCR *jcr)
    /* in accurate mode, we overwrite the find_one check function */
    if (jcr->accurate) {
       set_find_changed_function((FF_PKT *)jcr->ff, accurate_check_file);
-   } 
+   }
 
    stat = find_files(jcr, (FF_PKT *)jcr->ff, tally_file, plugin_estimate);
    accurate_free(jcr);
@@ -64,7 +52,7 @@ int make_estimate(JCR *jcr)
  * Called here by find() for each file included.
  *
  */
-static int tally_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level) 
+static int tally_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
 {
    ATTR attr;
 
@@ -121,5 +109,6 @@ static int tally_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       attr.olname = (POOLMEM *)ff_pkt->link;
       print_ls_output(jcr, &attr);
    }
+   /* TODO: Add loop over jcr->file_list to get Accurate deleted files*/
    return 1;
 }
diff --git a/src/filed/fd_plugins.c b/src/filed/fd_plugins.c
index 994c11a..84fba4b 100644
--- a/src/filed/fd_plugins.c
+++ b/src/filed/fd_plugins.c
@@ -1,35 +1,23 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /**
  * Main program to test loading and running Bacula plugins.
  *   Destined to become Bacula pluginloader, ...
  *
- * Kern Sibbald, October 2007
+ *   Written by Kern Sibbald, October 2007
  */
 #include "bacula.h"
 #include "filed.h"
@@ -51,7 +39,7 @@ extern int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level);
 extern bool check_changes(JCR *jcr, FF_PKT *ff_pkt);
 
 /* Function pointers to be set here */
-extern DLL_IMP_EXP int     (*plugin_bopen)(BFILE *bfd, const char *fname, int flags, mode_t mode);
+extern DLL_IMP_EXP int     (*plugin_bopen)(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode);
 extern DLL_IMP_EXP int     (*plugin_bclose)(BFILE *bfd);
 extern DLL_IMP_EXP ssize_t (*plugin_bread)(BFILE *bfd, void *buf, size_t count);
 extern DLL_IMP_EXP ssize_t (*plugin_bwrite)(BFILE *bfd, void *buf, size_t count);
@@ -86,7 +74,7 @@ static bRC baculaAcceptFile(bpContext *ctx, struct save_pkt *sp);
  * These will be plugged into the global pointer structure for
  *  the findlib.
  */
-static int     my_plugin_bopen(BFILE *bfd, const char *fname, int flags, mode_t mode);
+static int     my_plugin_bopen(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode);
 static int     my_plugin_bclose(BFILE *bfd);
 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);
@@ -96,7 +84,7 @@ static boffset_t my_plugin_blseek(BFILE *bfd, boffset_t offset, int whence);
 /* Bacula info */
 static bInfo binfo = {
    sizeof(bInfo),
-   FD_PLUGIN_INTERFACE_VERSION 
+   FD_PLUGIN_INTERFACE_VERSION
 };
 
 /* Bacula entry points */
@@ -122,7 +110,7 @@ static bFuncs bfuncs = {
    baculaAcceptFile
 };
 
-/* 
+/*
  * Bacula private context
  */
 struct bacula_ctx {
@@ -148,7 +136,7 @@ static bool for_this_plugin(Plugin *plugin, char *name, int len)
    }
    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;
@@ -180,7 +168,7 @@ bool is_plugin_disabled(JCR *jcr)
  * Create a plugin event When receiving bEventCancelCommand, this function is
  * called by an other thread.
  */
-void generate_plugin_event(JCR *jcr, bEventType eventType, void *value)     
+void generate_plugin_event(JCR *jcr, bEventType eventType, void *value)
 {
    bpContext *plugin_ctx;
    bEvent event;
@@ -195,7 +183,7 @@ void generate_plugin_event(JCR *jcr, bEventType eventType, void *value)
    if (!bplugin_list || !jcr || !jcr->plugin_ctx_list) {
       return;                         /* Return if no plugins loaded */
    }
-   
+
    /*
     * Some events are sent to only a particular plugin or must be
     *  called even if the job is canceled
@@ -253,17 +241,18 @@ void generate_plugin_event(JCR *jcr, bEventType eventType, void *value)
     */
    foreach_alist_index(i, plugin, bplugin_list) {
       if (!for_this_plugin(plugin, name, len)) {
-         Dmsg2(dbglvl, "Not for this plugin name=%s NULL=%d\n", 
+         Dmsg2(dbglvl, "Not for this plugin name=%s NULL=%d\n",
             name, name==NULL?1:0);
          continue;
       }
       /*
-       * Note, at this point do not change 
+       * 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)) {
+         Dmsg1(50, "Plugin %s disabled\n", plugin->file);
          continue;
       }
       if (eventType == bEventEndRestoreJob) {
@@ -322,7 +311,7 @@ bool plugin_check_file(JCR *jcr, char *fname)
 }
 
 /* Get the first part of the the plugin command
- *  systemstate:/@SYSTEMSTATE/ 
+ *  systemstate:/@SYSTEMSTATE/
  * => ret = 11
  * => can use for_this_plugin(plug, cmd, ret);
  *
@@ -371,14 +360,14 @@ static void update_ff_pkt(FF_PKT *ff_pkt, struct save_pkt *sp)
       ff_pkt->flags &= ~FO_DELTA;   /* clean delta sequence number */
       ff_pkt->delta_seq = 0;
    }
-   
+
    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 
+    * that use FIFO or STDOUT/IN to communicate
     */
    if (sp->flags & FO_SPARSE) {
       ff_pkt->flags |= FO_SPARSE;
@@ -399,6 +388,7 @@ bRC plugin_option_handle_file(JCR *jcr, FF_PKT *ff_pkt, struct save_pkt *sp)
 {
    Plugin *plugin;
    bRC ret = bRC_Error;
+   bool found=false;
    char *cmd = ff_pkt->plugin;
    int len;
    int i=0;
@@ -434,6 +424,8 @@ bRC plugin_option_handle_file(JCR *jcr, FF_PKT *ff_pkt, struct save_pkt *sp)
          continue;
       }
 
+      found=true;
+
       Dsm_check(999);
       if (is_plugin_disabled(&plugin_ctx_list[i])) {
          goto bail_out;
@@ -441,10 +433,10 @@ bRC plugin_option_handle_file(JCR *jcr, FF_PKT *ff_pkt, struct save_pkt *sp)
 
       jcr->plugin_ctx = &plugin_ctx_list[i];
       jcr->plugin = plugin;
-      
-      ret = plug_func(plugin)->handlePluginEvent(&plugin_ctx_list[i], 
+
+      ret = plug_func(plugin)->handlePluginEvent(&plugin_ctx_list[i],
                                                  &event, sp);
-      
+
       /* TODO: would be better to set this in save_file() */
       if (ret == bRC_OK) {
          jcr->opt_plugin = true;
@@ -463,11 +455,14 @@ bRC plugin_option_handle_file(JCR *jcr, FF_PKT *ff_pkt, struct save_pkt *sp)
       goto bail_out;
    } /* end foreach loop */
 bail_out:
+   if (!found) {
+      Jmsg1(jcr, M_FATAL, 0, "Options plugin \"%s\" not found.\n", cmd);
+   }
    Dsm_check(999);
    return ret;
 }
 
-/**  
+/**
  * Sequence of calls for a backup:
  * 1. plugin_save() here is called with ff_pkt
  * 2. we find the plugin requested on the command string
@@ -513,7 +508,7 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       if (!for_this_plugin(plugin, cmd, len)) {
          continue;
       }
-      /* 
+      /*
        * We put the current plugin pointer, and the plugin context
        *  into the jcr, because during save_file(), the plugin
        *  will be called many times and these values are needed.
@@ -531,7 +526,7 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          goto bail_out;
       }
       /* Loop getting filenames to backup then saving them */
-      while (!jcr->is_job_canceled()) { 
+      while (!jcr->is_job_canceled()) {
          memset(&sp, 0, sizeof(sp));
          sp.pkt_size = sizeof(sp);
          sp.pkt_end = sizeof(sp);
@@ -554,7 +549,7 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          jcr->plugin_sp = &sp;
          ff_pkt = jcr->ff;
          /*
-          * Copy fname and link because save_file() zaps them.  This 
+          * Copy fname and link because save_file() zaps them.  This
           *  avoids zaping the plugin's strings.
           */
          ff_pkt->type = sp.type;
@@ -590,7 +585,7 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          Dmsg2(dbglvl, "startBackup returned type=%d, fname=%s\n", sp.type, sp.fname);
          if (sp.object) {
             Dmsg2(dbglvl, "index=%d object=%s\n", sp.index, sp.object);
-         }   
+         }
          /* Call Bacula core code to backup the plugin's file */
          save_file(jcr, ff_pkt, true);
          bRC rc = plug_func(plugin)->endBackupFile(jcr->plugin_ctx);
@@ -616,7 +611,7 @@ bail_out:
 }
 
 
-/**  
+/**
  * Sequence of calls for a estimate:
  * 1. plugin_estimate() here is called with ff_pkt
  * 2. we find the plugin requested on the command string
@@ -658,7 +653,7 @@ int plugin_estimate(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       if (!for_this_plugin(plugin, cmd, len)) {
          continue;
       }
-      /* 
+      /*
        * We put the current plugin pointer, and the plugin context
        *  into the jcr, because during save_file(), the plugin
        *  will be called many times and these values are needed.
@@ -676,7 +671,7 @@ int plugin_estimate(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          goto bail_out;
       }
       /* Loop getting filenames to backup then saving them */
-      while (!jcr->is_job_canceled()) { 
+      while (!jcr->is_job_canceled()) {
          Dsm_check(999);
          memset(&sp, 0, sizeof(sp));
          sp.pkt_size = sizeof(sp);
@@ -778,7 +773,7 @@ bool send_plugin_name(JCR *jcr, BSOCK *sd, bool start)
    if (jcr->is_job_canceled()) {
       return false;
    }
-  
+
    if (start) {
       index++;                  /* JobFiles not incremented yet */
    }
@@ -819,7 +814,7 @@ bool send_plugin_name(JCR *jcr, BSOCK *sd, bool start)
  * Returns: true  if start of stream
  *          false if end of steam
  */
-bool plugin_name_stream(JCR *jcr, char *name)    
+bool plugin_name_stream(JCR *jcr, char *name)
 {
    char *p = name;
    char *cmd;
@@ -844,7 +839,7 @@ bool plugin_name_stream(JCR *jcr, char *name)
       cmd = p;
    } else {
       /*
-       * End of plugin data, notify plugin, then clear flags   
+       * End of plugin data, notify plugin, then clear flags
        */
       Dmsg2(dbglvl, "End plugin data plugin=%p ctx=%p\n", jcr->plugin, jcr->plugin_ctx);
       if (jcr->plugin && jcr->plugin->restoreFileStarted) {
@@ -862,7 +857,7 @@ bool plugin_name_stream(JCR *jcr, char *name)
    if (!plugin_ctx_list) {
       goto bail_out;
    }
-      
+
    /*
     * After this point, we are dealing with a restore start
     */
@@ -871,7 +866,7 @@ bool plugin_name_stream(JCR *jcr, char *name)
    }
 
    /*
-    * Search for correct plugin as specified on the command 
+    * Search for correct plugin as specified on the command
     */
    Dsm_check(999);
    foreach_alist_index(i, plugin, bplugin_list) {
@@ -888,8 +883,8 @@ bool plugin_name_stream(JCR *jcr, char *name)
          goto bail_out;
       }
       Dmsg1(dbglvl, "Restore Command plugin = %s\n", cmd);
-      event.eventType = bEventRestoreCommand;     
-      if (plug_func(plugin)->handlePluginEvent(jcr->plugin_ctx, 
+      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;
@@ -960,7 +955,7 @@ int plugin_create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
    rp.RegexWhere = jcr->RegexWhere;
    rp.replace = jcr->replace;
    rp.create_status = CF_ERROR;
-   Dmsg4(dbglvl, "call plugin createFile stream=%d type=%d LinkFI=%d File=%s\n", 
+   Dmsg4(dbglvl, "call plugin createFile stream=%d type=%d LinkFI=%d File=%s\n",
          rp.stream, rp.type, rp.LinkFI, rp.ofname);
    if (rp.attrEx) {
       Dmsg1(dbglvl, "attrEx=\"%s\"\n", rp.attrEx);
@@ -1055,7 +1050,7 @@ bool plugin_set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
    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 {
@@ -1122,7 +1117,7 @@ void load_fd_plugins(const char *plugin_dir)
    plugin_blseek = my_plugin_blseek;
    Dsm_check(999);
 
-   /* 
+   /*
     * Verify that the plugin is acceptable, and print information
     *  about it.
     */
@@ -1144,7 +1139,7 @@ static bool is_plugin_compatible(Plugin *plugin)
    pInfo *info = (pInfo *)plugin->pinfo;
    Dmsg0(dbglvl, "is_plugin_compatible called\n");
    Dsm_check(999);
-   if (debug_level >= 50) {
+   if (chk_dbglvl(50)) {
       dump_fd_plugin(plugin, stdin);
    }
    if (strcmp(info->plugin_magic, FD_PLUGIN_MAGIC) != 0) {
@@ -1176,7 +1171,7 @@ static bool is_plugin_compatible(Plugin *plugin)
            plugin->file, sizeof(pInfo), info->size);
       return false;
    }
-      
+
    Dsm_check(999);
    return true;
 }
@@ -1221,6 +1216,7 @@ void new_plugins(JCR *jcr)
       plugin_ctx_list[i].bContext = (void *)b_ctx;   /* Bacula private context */
       plugin_ctx_list[i].pContext = NULL;
       if (plug_func(plugin)->newPlugin(&plugin_ctx_list[i]) != bRC_OK) {
+         Dmsg1(000, "Plugin %s will be disabled\n", plugin->file);
          b_ctx->disabled = true;
       }
    }
@@ -1246,7 +1242,7 @@ void free_plugins(JCR *jcr)
    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) {   
+   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 */
@@ -1257,7 +1253,7 @@ void free_plugins(JCR *jcr)
    jcr->plugin_ctx_list = NULL;
 }
 
-static int my_plugin_bopen(BFILE *bfd, const char *fname, int flags, mode_t mode)
+static int my_plugin_bopen(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode)
 {
    JCR *jcr = bfd->jcr;
    Plugin *plugin = (Plugin *)jcr->plugin;
@@ -1278,6 +1274,7 @@ static int my_plugin_bopen(BFILE *bfd, const char *fname, int flags, mode_t mode
    io.mode = mode;
    io.win32 = false;
    io.lerror = 0;
+   io.status = -1;
    plug_func(plugin)->pluginIO(jcr->plugin_ctx, &io);
    bfd->berrno = io.io_errno;
    if (io.win32) {
@@ -1309,6 +1306,7 @@ static int my_plugin_bclose(BFILE *bfd)
    io.buf = NULL;
    io.win32 = false;
    io.lerror = 0;
+   io.status = -1;
    plug_func(plugin)->pluginIO(jcr->plugin_ctx, &io);
    bfd->berrno = io.io_errno;
    if (io.win32) {
@@ -1341,6 +1339,7 @@ static ssize_t my_plugin_bread(BFILE *bfd, void *buf, size_t count)
    io.win32 = false;
    io.offset = 0;
    io.lerror = 0;
+   io.status = -1;
    plug_func(plugin)->pluginIO(jcr->plugin_ctx, &io);
    bfd->offset = io.offset;
    bfd->berrno = io.io_errno;
@@ -1373,6 +1372,7 @@ static ssize_t my_plugin_bwrite(BFILE *bfd, void *buf, size_t count)
    io.buf = (char *)buf;
    io.win32 = false;
    io.lerror = 0;
+   io.status = -1;
    plug_func(plugin)->pluginIO(jcr->plugin_ctx, &io);
    bfd->berrno = io.io_errno;
    if (io.win32) {
@@ -1448,6 +1448,10 @@ static bRC baculaGetValue(bpContext *ctx, bVariable var, void *value)
    case bVarBEEF:
       *((int *)value) = beef;
       break;
+   case bVarPrevJobName:
+      break;
+   case bVarPrefixLinks:
+      break;
    default:
       break;
    }
@@ -1549,12 +1553,12 @@ static bRC baculaSetValue(bpContext *ctx, bVariable var, void *value)
    if (!jcr) {
       return bRC_Error;
    }
-// Dmsg1(dbglvl, "Bacula: jcr=%p\n", jcr); 
+// Dmsg1(dbglvl, "Bacula: jcr=%p\n", jcr);
    switch (var) {
    case bVarFileSeen:
       if (!accurate_mark_file_as_seen(jcr, (char *)value)) {
          return bRC_Error;
-      } 
+      }
       break;
    default:
       break;
@@ -1680,7 +1684,7 @@ static bRC baculaAddExclude(bpContext *ctx, const char *file)
       return bRC_Error;
    }
 
-   if (!bctx->exclude) {  
+   if (!bctx->exclude) {
       bctx->exclude = new_exclude(jcr);
    }
 
@@ -1831,7 +1835,7 @@ static bRC baculaNewPreInclude(bpContext *ctx)
    return bRC_OK;
 }
 
-/* 
+/*
  * Check if a file have to be backuped using Accurate code
  */
 static bRC baculaCheckChanges(bpContext *ctx, struct save_pkt *sp)
@@ -1848,10 +1852,10 @@ static bRC baculaCheckChanges(bpContext *ctx, struct save_pkt *sp)
    if (!sp) {
       goto bail_out;
    }
-   
+
    ff_pkt = jcr->ff;
    /*
-    * Copy fname and link because save_file() zaps them.  This 
+    * Copy fname and link because save_file() zaps them.  This
     *  avoids zaping the plugin's strings.
     */
    ff_pkt->type = sp->type;
@@ -1871,7 +1875,7 @@ static bRC baculaCheckChanges(bpContext *ctx, struct save_pkt *sp)
    }
 
    /* check_changes() can update delta sequence number, return it to the
-    * plugin 
+    * plugin
     */
    sp->delta_seq = ff_pkt->delta_seq;
    sp->accurate_found = ff_pkt->accurate_found;
@@ -1882,7 +1886,7 @@ bail_out:
    return ret;
 }
 
-/* 
+/*
  * Check if a file would be saved using current Include/Exclude code
  */
 static bRC baculaAcceptFile(bpContext *ctx, struct save_pkt *sp)
@@ -1902,7 +1906,7 @@ static bRC baculaAcceptFile(bpContext *ctx, struct save_pkt *sp)
    if (!sp) {
       goto bail_out;
    }
-   
+
    ff_pkt = jcr->ff;
 
    /* Probably not needed, but keep a copy */
@@ -1927,7 +1931,7 @@ bail_out:
 
 #ifdef TEST_PROGRAM
 
-int     (*plugin_bopen)(JCR *jcr, const char *fname, int flags, mode_t mode) = NULL;
+int     (*plugin_bopen)(JCR *jcr, const char *fname, uint64_t flags, mode_t mode) = NULL;
 int     (*plugin_bclose)(JCR *jcr) = NULL;
 ssize_t (*plugin_bread)(JCR *jcr, void *buf, size_t count) = NULL;
 ssize_t (*plugin_bwrite)(JCR *jcr, void *buf, size_t count) = NULL;
@@ -1951,7 +1955,7 @@ int main(int argc, char *argv[])
    JCR *jcr2 = &mjcr2;
 
    strcpy(my_name, "test-fd");
-    
+
    getcwd(plugin_dir, sizeof(plugin_dir)-1);
    load_fd_plugins(plugin_dir);
 
diff --git a/src/filed/fd_plugins.h b/src/filed/fd_plugins.h
index 40994f8..855327e 100644
--- a/src/filed/fd_plugins.h
+++ b/src/filed/fd_plugins.h
@@ -1,38 +1,26 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Application Programming Interface (API) definition for Bacula Plugins
  *
- * Kern Sibbald, October 2007
+ *  Written by Kern Sibbald, October 2007
  *
  */
- 
-#ifndef __FD_PLUGINS_H 
+
+#ifndef __FD_PLUGINS_H
 #define __FD_PLUGINS_H
 
 #ifndef _BACULA_H
@@ -81,7 +69,7 @@ struct restore_object_pkt {
    char *object_name;                 /* Object name */
    char *object;                      /* restore object data to save */
    char *plugin_name;                 /* Plugin name */
-   int32_t object_type;               /* FT_xx for this file */             
+   int32_t object_type;               /* FT_xx for this file */
    int32_t object_len;                /* restore object length */
    int32_t object_full_len;           /* restore object uncompressed length */
    int32_t object_index;              /* restore object index */
@@ -99,7 +87,7 @@ struct save_pkt {
    char *fname;                       /* Full path and filename */
    char *link;                        /* Link name if any */
    struct stat statp;                 /* System stat() packet for file */
-   int32_t type;                      /* FT_xx for this 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 */
@@ -153,7 +141,7 @@ struct io_pkt {
    char *buf;                         /* read/write buffer */
    const char *fname;                 /* open filename */
    int32_t status;                    /* return status */
-   int32_t io_errno;                  /* errno code */  
+   int32_t io_errno;                  /* errno code */
    int32_t lerror;                    /* Win32 error code */
    int32_t whence;                    /* lseek argument */
    boffset_t offset;                  /* lseek argument */
@@ -215,9 +203,9 @@ typedef enum {
   bEventEndFileSet                      = 19,
   bEventPluginCommand                   = 20, /* Sent during FileSet creation */
   bEventVssBeforeCloseRestore           = 21,
-  /* Add drives to VSS snapshot 
+  /* Add drives to VSS snapshot
    *  argument: char[27] drivelist
-   * You need to add them without duplicates, 
+   * You need to add them without duplicates,
    * see fd_common.h add_drive() copy_drives() to get help
    */
   bEventVssPrepareSnapshot              = 22,
@@ -244,7 +232,7 @@ void new_plugins(JCR *jcr);
 void free_plugins(JCR *jcr);
 void generate_plugin_event(JCR *jcr, bEventType event, void *value=NULL);
 bool send_plugin_name(JCR *jcr, BSOCK *sd, bool start);
-bool plugin_name_stream(JCR *jcr, char *name);    
+bool plugin_name_stream(JCR *jcr, char *name);
 int plugin_create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace);
 bool plugin_set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd);
 int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level);
@@ -257,21 +245,21 @@ bRC plugin_option_handle_file(JCR *jcr, FF_PKT *ff_pkt, struct save_pkt *sp);
 extern "C" {
 #endif
 
-/* 
- * Bacula interface version and function pointers -- 
+/*
+ * Bacula interface version and function pointers --
  *  i.e. callbacks from the plugin to Bacula
  */
-typedef struct s_baculaFuncs {  
+typedef struct s_baculaFuncs {
    uint32_t size;
    uint32_t version;
    bRC (*registerBaculaEvents)(bpContext *ctx, ...);
    bRC (*getBaculaValue)(bpContext *ctx, bVariable var, void *value);
    bRC (*setBaculaValue)(bpContext *ctx, bVariable var, void *value);
-   bRC (*JobMessage)(bpContext *ctx, const char *file, int line, 
-       int type, utime_t mtime, const char *fmt, ...);     
+   bRC (*JobMessage)(bpContext *ctx, const char *file, int line,
+       int type, utime_t mtime, const char *fmt, ...);
    bRC (*DebugMessage)(bpContext *ctx, const char *file, int line,
        int level, const char *fmt, ...);
-   void *(*baculaMalloc)(bpContext *ctx, const char *file, int line, 
+   void *(*baculaMalloc)(bpContext *ctx, const char *file, int line,
        size_t size);
    void (*baculaFree)(bpContext *ctx, const char *file, int line, void *mem);
    bRC (*AddExclude)(bpContext *ctx, const char *file);
@@ -300,9 +288,9 @@ typedef enum {
   pVarDescription = 2
 } pVariable;
 
-# define FD_PLUGIN_MAGIC  "*FDPluginData*" 
+# define FD_PLUGIN_MAGIC  "*FDPluginData*"
 
-#define FD_PLUGIN_INTERFACE_VERSION  7
+#define FD_PLUGIN_INTERFACE_VERSION  ( 12 )
 
 typedef struct s_pluginInfo {
    uint32_t size;
@@ -319,7 +307,7 @@ typedef struct s_pluginInfo {
  * This is a set of function pointers that Bacula can call
  *  within the plugin.
  */
-typedef struct s_pluginFuncs {  
+typedef struct s_pluginFuncs {
    uint32_t size;
    uint32_t version;
    bRC (*newPlugin)(bpContext *ctx);
diff --git a/src/filed/filed.c b/src/filed/filed.c
index 9526879..69d5aa9 100644
--- a/src/filed/filed.c
+++ b/src/filed/filed.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula File Daemon
  *
- *    Kern Sibbald, March MM
+ *    Written by Kern Sibbald, March MM
  *
  */
 
@@ -36,21 +24,8 @@
 #include "filed.h"
 #include "lib/mntent_cache.h"
 
-#ifdef HAVE_PYTHON
-
-#undef _POSIX_C_SOURCE
-#include <Python.h>
-
-#include "lib/pythonlib.h"
-
-/* Imported Functions */
-extern PyObject *job_getattr(PyObject *self, char *attrname);
-extern int job_setattr(PyObject *self, char *attrname, PyObject *value);
-
-#endif /* HAVE_PYTHON */
-
 /* Imported Functions */
-extern void *handle_client_request(void *dir_sock);
+extern void *handle_connection_request(void *dir_sock);
 extern bool parse_fd_config(CONFIG *config, const char *configfile, int exit_code);
 
 /* Forward referenced functions */
@@ -60,6 +35,7 @@ static bool check_resources();
 CLIENT *me;                           /* my resource */
 bool no_signals = false;
 void *start_heap;
+extern struct s_cmds cmds[];
 
 #define CONFIG_FILE "bacula-fd.conf" /* default config file */
 
@@ -73,21 +49,22 @@ static void usage()
 {
    fprintf(stderr, _(
 PROG_COPYRIGHT
-"\nVersion: %s (%s)\n\n"
+"\n%sVersion: %s (%s)\n\n"
 "Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
-"        -c <file>   use <file> as configuration file\n"
-"        -d <nn>     set debug level to <nn>\n"
-"        -dt         print a timestamp in debug output\n"
-"        -f          run in foreground (for debugging)\n"
-"        -g          groupid\n"
-"        -k          keep readall capabilities\n"
-"        -m          print kaboom output (for debugging)\n"
-"        -s          no signals (for debugging)\n"
-"        -t          test configuration file and exit\n"
-"        -u          userid\n"
-"        -v          verbose user messages\n"
-"        -?          print this message.\n"
-"\n"), 2000, VERSION, BDATE);
+"     -c <file>        use <file> as configuration file\n"
+"     -d <n>[,<tags>]  set debug level to <nn>, debug tags to <tags>\n"
+"     -dt              print a timestamp in debug output\n"
+"     -f               run in foreground (for debugging)\n"
+"     -g               groupid\n"
+"     -k               keep readall capabilities\n"
+"     -m               print kaboom output (for debugging)\n"
+"     -s               no signals (for debugging)\n"
+"     -t               test configuration file and exit\n"
+"     -T               set trace on\n"
+"     -u               userid\n"
+"     -v               verbose user messages\n"
+"     -?               print this message.\n"
+"\n"), 2000, "", VERSION, BDATE);
 
    exit(1);
 }
@@ -109,9 +86,6 @@ int main (int argc, char *argv[])
    bool keep_readall_caps = false;
    char *uid = NULL;
    char *gid = NULL;
-#ifdef HAVE_PYTHON
-   init_python_interpreter_args python_args;
-#endif /* HAVE_PYTHON */
 
    start_heap = sbrk(0);
    setlocale(LC_ALL, "");
@@ -123,7 +97,7 @@ int main (int argc, char *argv[])
    init_msg(NULL, NULL);
    daemon_start_time = time(NULL);
 
-   while ((ch = getopt(argc, argv, "c:d:fg:kmstu:v?")) != -1) {
+   while ((ch = getopt(argc, argv, "c:d:fg:kmstTu:v?D:")) != -1) {
       switch (ch) {
       case 'c':                    /* configuration file */
          if (configfile != NULL) {
@@ -136,10 +110,18 @@ int main (int argc, char *argv[])
          if (*optarg == 't') {
             dbg_timestamp = true;
          } else {
+            char *p;
+            /* We probably find a tag list -d 10,sql,bvfs */
+            if ((p = strchr(optarg, ',')) != NULL) {
+               *p = 0;
+            }
             debug_level = atoi(optarg);
             if (debug_level <= 0) {
                debug_level = 1;
             }
+            if (p) {
+               debug_parse_tags(p+1, &debug_level);
+            }
          }
          break;
 
@@ -167,6 +149,10 @@ int main (int argc, char *argv[])
          test_config = true;
          break;
 
+      case 'T':
+         set_trace(true);
+         break;
+
       case 'u':                    /* set userid */
          uid = optarg;
          break;
@@ -252,18 +238,6 @@ int main (int argc, char *argv[])
    me += 1000000;
 #endif
 
-#ifdef HAVE_PYTHON
-   python_args.progname = me->hdr.name;
-   python_args.scriptdir = me->scripts_directory;
-   python_args.modulename = "FDStartUp";
-   python_args.configfile = configfile;
-   python_args.workingdir = me->working_directory;
-   python_args.job_getattr = job_getattr;
-   python_args.job_setattr = job_setattr;
-
-   init_python_interpreter(&python_args);
-#endif /* HAVE_PYTHON */
-
    if (!no_signals) {
       start_watchdog();               /* start watchdog thread */
       init_jcr_subsystem();           /* start JCR watchdogs etc. */
@@ -275,7 +249,8 @@ int main (int argc, char *argv[])
    foreach_dlist(p, me->FDaddrs) {
       Dmsg1(10, "filed: listening on port %d\n", p->get_port_host_order());
    }
-   bnet_thread_server(me->FDaddrs, me->MaxConcurrentJobs, &dir_workq, handle_client_request);
+   bnet_thread_server(me->FDaddrs, me->MaxConcurrentJobs, &dir_workq,
+      handle_connection_request);
 
    terminate_filed(0);
    exit(0);                           /* should never get here */
@@ -326,6 +301,9 @@ void terminate_filed(int sig)
 */
 static bool check_resources()
 {
+   int i;
+   bool found;
+   char *cmd;
    bool OK = true;
    DIRRES *director;
    bool need_tls;
@@ -351,6 +329,37 @@ static bool check_resources()
              OK = false;
          }
       }
+
+      /* Construct disabled command array */
+      for (i=0; cmds[i].cmd; i++) { }  /* Count commands */
+      if (me->disable_cmds) {
+         me->disabled_cmds_array = (bool *)malloc(i);
+         memset(me->disabled_cmds_array, 0, i);
+         foreach_alist(cmd, me->disable_cmds) {
+            found = false;
+            for (i=0; cmds[i].cmd; i++) {
+               if (strncasecmp(cmds[i].cmd, cmd, strlen(cmd)) == 0) {
+                  me->disabled_cmds_array[i] = true;
+                  found = true;
+                  break;
+               }
+            }
+            if (!found) {
+               Jmsg(NULL, M_FATAL, 0, _("Disable Command \"%s\" not found.\n"),
+                  cmd);
+               OK = false;
+            }
+         }
+      }
+#ifdef xxxDEBUG
+      for (i=0; cmds[i].cmd; i++) { }  /* Count commands */
+      while (i-- >= 0) {
+         if (me->disabled_cmds_array[i]) {
+            Dmsg1(050, "Command: %s disabled.\n", cmds[i].cmd);
+         }
+      }
+#endif
+
       /* tls_require implies tls_enable */
       if (me->tls_require) {
 #ifndef HAVE_TLS
@@ -378,7 +387,7 @@ static bool check_resources()
             me->tls_ca_certdir, me->tls_certfile, me->tls_keyfile,
             NULL, NULL, NULL, true);
 
-         if (!me->tls_ctx) { 
+         if (!me->tls_ctx) {
             Emsg2(M_FATAL, 0, _("Failed to initialize TLS context for File daemon \"%s\" in %s.\n"),
                                 me->hdr.name, configfile);
             OK = false;
@@ -474,6 +483,15 @@ static bool check_resources()
             me->pki_recipients->append(crypto_keypair_dup(me->pki_keypair));
          }
 
+         /* Put a default cipher (not possible in the filed_conf.c structure */
+         if (!me->pki_cipher) {
+            me->pki_cipher = CRYPTO_CIPHER_AES_128_CBC;
+         }
+
+         /* Put a default digest (not possible in the filed_conf.c structure */
+         if (!me->pki_digest) {
+            me->pki_digest = CRYPTO_DIGEST_DEFAULT;
+         }
 
          /* If additional keys have been specified, load them up */
          if (me->pki_master_key_files) {
@@ -509,7 +527,39 @@ static bool check_resources()
       OK = false;
    }
 
-   foreach_res(director, R_DIRECTOR) { 
+   foreach_res(director, R_DIRECTOR) {
+
+      /* Construct disabled command array */
+      for (i=0; cmds[i].cmd; i++) { }  /* Count commands */
+      if (me->disable_cmds) {
+         director->disabled_cmds_array = (bool *)malloc(i);
+         memset(director->disabled_cmds_array, 0, i);
+         foreach_alist(cmd, director->disable_cmds) {
+            found = false;
+            for (i=0; cmds[i].cmd; i++) {
+               if (strncasecmp(cmds[i].cmd, cmd, strlen(cmd)) == 0) {
+                  director->disabled_cmds_array[i] = true;
+                  found = true;
+                  break;
+               }
+            }
+            if (!found) {
+               Jmsg(NULL, M_FATAL, 0, _("Disable Command \"%s\" not found.\n"),
+                  cmd);
+               OK = false;
+            }
+         }
+      }
+
+#ifdef xxxDEBUG
+      for (i=0; cmds[i].cmd; i++) { }  /* Count commands */
+      while (i-- >= 0) {
+         if (director->disabled_cmds_array[i]) {
+            Dmsg1(050, "Command: %s disabled for Director.\n", cmds[i].cmd);
+         }
+      }
+#endif
+
       /* tls_require implies tls_enable */
       if (director->tls_require) {
 #ifndef HAVE_TLS
@@ -553,7 +603,7 @@ static bool check_resources()
             director->tls_keyfile, NULL, NULL, director->tls_dhfile,
             director->tls_verify_peer);
 
-         if (!director->tls_ctx) { 
+         if (!director->tls_ctx) {
             Emsg2(M_FATAL, 0, _("Failed to initialize TLS context for Director \"%s\" in %s.\n"),
                                 director->hdr.name, configfile);
             OK = false;
diff --git a/src/filed/filed.h b/src/filed/filed.h
index 71d26d6..308fb19 100644
--- a/src/filed/filed.h
+++ b/src/filed/filed.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula File Daemon specific configuration and defines
@@ -82,6 +70,16 @@ typedef enum {
 #endif
 
 extern CLIENT *me;                    /* "Global" Client resource */
+extern bool win32decomp;              /* Use decomposition of BackupRead data */
+extern bool no_win32_write_errors;    /* Ignore certain errors */
 
 void terminate_filed(int sig);
 
+struct s_cmds {
+   const char *cmd;
+   int (*func)(JCR *);
+   int monitoraccess; /* specify if monitors have access to this function */
+};
+
+void allow_os_suspensions();
+void prevent_os_suspensions();
diff --git a/src/filed/filed_conf.c b/src/filed/filed_conf.c
index 04dc239..7ecd4f2 100644
--- a/src/filed/filed_conf.c
+++ b/src/filed/filed_conf.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Main configuration file parser for Bacula File Daemon (Client)
@@ -44,9 +32,8 @@
  *      definitions as well as any specific store routines
  *      for the resource records.
  *
- *     Kern Sibbald, September MM
+ *     Written by Kern Sibbald, September MM
  *
- *   Version $Id$
  */
 
 #include "bacula.h"
@@ -79,6 +66,10 @@ URES res_all;
 #endif
 int32_t res_all_size = sizeof(res_all);
 
+/* Forward definition for encyption cipher/digest type  */
+static void store_cipher_type(LEX *lc, RES_ITEM *item, int index, int pass);
+static void store_digest_type(LEX *lc, RES_ITEM *item, int index, int pass);
+
 /* Definition of records permitted within each
  * resource with the routine to process the record
  * information.
@@ -109,6 +100,8 @@ static RES_ITEM cli_items[] = {
    {"pkikeypair",            store_dir,       ITEM(res_client.pki_keypair_file), 0, 0, 0},
    {"pkisigner",             store_alist_str, ITEM(res_client.pki_signing_key_files), 0, 0, 0},
    {"pkimasterkey",          store_alist_str, ITEM(res_client.pki_master_key_files), 0, 0, 0},
+   {"pkicipher",             store_cipher_type, ITEM(res_client.pki_cipher), 0, 0, 0},
+   {"pkipigest",             store_digest_type, ITEM(res_client.pki_digest), 0, 0, 0},
 #endif
    {"tlsauthenticate",       store_bool,    ITEM(res_client.tls_authenticate),  0, 0, 0},
    {"tlsenable",             store_bool,    ITEM(res_client.tls_enable),  0, 0, 0},
@@ -118,6 +111,8 @@ static RES_ITEM cli_items[] = {
    {"tlscertificate",        store_dir,       ITEM(res_client.tls_certfile), 0, 0, 0},
    {"tlskey",                store_dir,       ITEM(res_client.tls_keyfile), 0, 0, 0},
    {"verid",                 store_str,       ITEM(res_client.verid), 0, 0, 0},
+   {"maximumbandwidthperjob",store_speed,   ITEM(res_client.max_bandwidth_per_job), 0, 0, 0},
+   {"disablecommand",        store_alist_str, ITEM(res_client.disable_cmds), 0, 0, 0},
    {NULL, NULL, {0}, 0, 0, 0}
 };
 
@@ -138,6 +133,8 @@ static RES_ITEM dir_items[] = {
    {"tlskey",               store_dir,       ITEM(res_dir.tls_keyfile), 0, 0, 0},
    {"tlsdhfile",            store_dir,       ITEM(res_dir.tls_dhfile), 0, 0, 0},
    {"tlsallowedcn",         store_alist_str, ITEM(res_dir.tls_allowed_cns), 0, 0, 0},
+   {"maximumbandwidthperjob", store_speed,     ITEM(res_dir.max_bandwidth_per_job), 0, 0, 0},
+   {"disablecommand",        store_alist_str, ITEM(res_dir.disable_cmds), 0, 0, 0},
    {NULL, NULL, {0}, 0, 0, 0}
 };
 
@@ -156,6 +153,75 @@ RES_TABLE resources[] = {
    {NULL,            NULL,        0}
 };
 
+/* Cipher/Digest keyword structure */
+struct s_ct {
+   const char *type_name;
+   int32_t type_value;
+};
+
+struct s_ct ciphertypes[] = {
+   {"aes128",        CRYPTO_CIPHER_AES_128_CBC},
+   {"aes192",        CRYPTO_CIPHER_AES_192_CBC},
+   {"aes256",        CRYPTO_CIPHER_AES_256_CBC},
+   {"blowfish",      CRYPTO_CIPHER_BLOWFISH_CBC},
+   {NULL,            0}
+};
+
+struct s_ct digesttypes[] = {
+   {"md5",         CRYPTO_DIGEST_MD5},
+   {"sha1",        CRYPTO_DIGEST_SHA1},
+   {"sha256",      CRYPTO_DIGEST_SHA256},
+//   {"sha512",      CRYPTO_DIGEST_SHA512}, /* Not working yet */
+   {NULL,                             0}
+};
+
+/*
+ * Store cipher type
+ *
+ */
+static void store_cipher_type(LEX *lc, RES_ITEM *item, int index, int pass)
+{
+   int i;
+
+   lex_get_token(lc, T_NAME);
+   /* Store the type both pass 1 and pass 2 */
+   for (i=0; ciphertypes[i].type_name; i++) {
+      if (strcasecmp(lc->str, ciphertypes[i].type_name) == 0) {
+         *(uint32_t *)(item->value) = ciphertypes[i].type_value;
+         i = 0;
+         break;
+      }
+   }
+   if (i != 0) {
+      scan_err1(lc, _("Expected a Cipher Type keyword, got: %s"), lc->str);
+   }
+   scan_to_eol(lc);
+   set_bit(index, res_all.hdr.item_present);
+}
+
+/*
+ * Store digest type
+ *
+ */
+static void store_digest_type(LEX *lc, RES_ITEM *item, int index, int pass)
+{
+   int i;
+
+   lex_get_token(lc, T_NAME);
+   /* Store the type both pass 1 and pass 2 */
+   for (i=0; digesttypes[i].type_name; i++) {
+      if (strcasecmp(lc->str, digesttypes[i].type_name) == 0) {
+         *(uint32_t *)(item->value) = digesttypes[i].type_value;
+         i = 0;
+         break;
+      }
+   }
+   if (i != 0) {
+      scan_err1(lc, _("Expected a Cipher Type keyword, got: %s"), lc->str);
+   }
+   scan_to_eol(lc);
+   set_bit(index, res_all.hdr.item_present);
+}
 
 /* Dump contents of resource */
 void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fmt, ...), void *sock)
@@ -227,7 +293,7 @@ void free_resource(RES *sres, int type)
       if (res->res_dir.address) {
          free(res->res_dir.address);
       }
-      if (res->res_dir.tls_ctx) { 
+      if (res->res_dir.tls_ctx) {
          free_tls_context(res->res_dir.tls_ctx);
       }
       if (res->res_dir.tls_ca_certfile) {
@@ -248,6 +314,12 @@ void free_resource(RES *sres, int type)
       if (res->res_dir.tls_allowed_cns) {
          delete res->res_dir.tls_allowed_cns;
       }
+      if (res->res_dir.disable_cmds) {
+         delete res->res_dir.disable_cmds;
+      }
+      if (res->res_dir.disabled_cmds_array) {
+         free(res->res_dir.disabled_cmds_array);
+      }
       break;
    case R_CLIENT:
       if (res->res_client.working_directory) {
@@ -272,7 +344,7 @@ void free_resource(RES *sres, int type)
          free_addresses(res->res_client.FDsrc_addr);
       }
 
-      if (res->res_client.pki_keypair_file) { 
+      if (res->res_client.pki_keypair_file) {
          free(res->res_client.pki_keypair_file);
       }
       if (res->res_client.pki_keypair) {
@@ -302,7 +374,7 @@ void free_resource(RES *sres, int type)
          delete res->res_client.pki_recipients;
       }
 
-      if (res->res_client.tls_ctx) { 
+      if (res->res_client.tls_ctx) {
          free_tls_context(res->res_client.tls_ctx);
       }
       if (res->res_client.tls_ca_certfile) {
@@ -317,6 +389,12 @@ void free_resource(RES *sres, int type)
       if (res->res_client.tls_keyfile) {
          free(res->res_client.tls_keyfile);
       }
+      if (res->res_client.disable_cmds) {
+         delete res->res_client.disable_cmds;
+      }
+      if (res->res_client.disabled_cmds_array) {
+         free(res->res_client.disabled_cmds_array);
+      }
       if (res->res_client.verid) {
          free(res->res_client.verid);
       }
diff --git a/src/filed/filed_conf.h b/src/filed/filed_conf.h
index 903bfdf..003c76b 100644
--- a/src/filed/filed_conf.h
+++ b/src/filed/filed_conf.h
@@ -1,36 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula File Daemon specific configuration
  *
  *     Kern Sibbald, Sep MM
- *
- *   Version $Id$
  */
 
 /*
@@ -69,7 +55,10 @@ struct DIRRES {
    char *tls_keyfile;                 /* TLS Server Key File */
    char *tls_dhfile;                  /* TLS Diffie-Hellman Parameters */
    alist *tls_allowed_cns;            /* TLS Allowed Clients */
+   uint64_t max_bandwidth_per_job;    /* Bandwidth limitation (per director) */
    TLS_CONTEXT *tls_ctx;              /* Shared TLS Context */
+   alist *disable_cmds;               /* Commands to disable */
+   bool *disabled_cmds_array;         /* Disabled commands array */
 };
 
 struct CLIENT {
@@ -91,6 +80,8 @@ struct CLIENT {
    char *pki_keypair_file;            /* PKI Key Pair File */
    alist *pki_signing_key_files;      /* PKI Signing Key Files */
    alist *pki_master_key_files;       /* PKI Master Key Files */
+   uint32_t pki_cipher;               /* PKI Cipher type */
+   uint32_t pki_digest;               /* PKI Digest type */
    bool tls_authenticate;             /* Authenticate with TLS */
    bool tls_enable;                   /* Enable TLS */
    bool tls_require;                  /* Require TLS */
@@ -104,6 +95,9 @@ struct CLIENT {
    alist *pki_recipients;             /* Shared PKI Recipients */
    TLS_CONTEXT *tls_ctx;              /* Shared TLS Context */
    char *verid;                       /* Custom Id to print in version command */
+   uint64_t max_bandwidth_per_job;    /* Bandwidth limitation (global) */
+   alist *disable_cmds;               /* Commands to disable */
+   bool *disabled_cmds_array;         /* Disabled commands array */
 };
 
 
diff --git a/src/filed/heartbeat.c b/src/filed/heartbeat.c
index f39566b..9795049 100644
--- a/src/filed/heartbeat.c
+++ b/src/filed/heartbeat.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula File Daemon heartbeat routines
@@ -65,8 +53,8 @@ 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;
+   dir->suppress_error_messages(true);
+   sd->suppress_error_messages(true);
 
    /* Hang reading the socket to the SD, and every time we get
     *   a heartbeat or we get a wait timeout (5 seconds), we
@@ -74,7 +62,7 @@ extern "C" void *sd_heartbeat_thread(void *arg)
     *   Director.
     */
    while (!sd->is_stop()) {
-      n = bnet_wait_data_intr(sd, WAIT_INTERVAL);
+      n = sd->wait_data_intr(WAIT_INTERVAL);
       if (n < 0 || sd->is_stop()) {
          break;
       }
@@ -99,10 +87,14 @@ extern "C" void *sd_heartbeat_thread(void *arg)
             Dmsg2(100, "Got %d bytes from SD. MSG=%s\n", sd->msglen, sd->msg);
          }
       }
-      Dmsg2(200, "wait_intr=%d stop=%d\n", n, is_bnet_stop(sd));
+      Dmsg2(200, "wait_intr=%d stop=%d\n", n, sd->is_stop());
    }
-   sd->close();
-   dir->close();
+   /*
+    * Note, since sd and dir are local dupped sockets, this
+    *  is one place where we can call destroy().
+    */
+   sd->destroy();
+   dir->destroy();
    jcr->hb_bsock = NULL;
    jcr->hb_started = false;
    jcr->hb_dir_bsock = NULL;
@@ -117,7 +109,7 @@ void start_heartbeat_monitor(JCR *jcr)
     * it gives a constant stream of TIMEOUT_SIGNAL signals that
     * make debugging impossible.
     */
-   if (!no_signals) {
+   if (!no_signals && (me->heartbeat_interval > 0)) {
       jcr->hb_bsock = NULL;
       jcr->hb_started = false;
       jcr->hb_dir_bsock = NULL;
@@ -176,7 +168,7 @@ extern "C" void *dir_heartbeat_thread(void *arg)
 
    jcr->hb_bsock = dir;
    jcr->hb_started = true;
-   dir->m_suppress_error_msgs = true;
+   dir->suppress_error_messages(true);
 
    while (!dir->is_stop()) {
       time_t now, next;
@@ -190,9 +182,13 @@ extern "C" void *dir_heartbeat_thread(void *arg)
          }
          last_heartbeat = now;
       }
+      /* This should never happen, but it might ... */
+      if (next <= 0) {
+         next = 1;
+      }
       bmicrosleep(next, 0);
    }
-   dir->close();
+   dir->destroy();
    jcr->hb_bsock = NULL;
    jcr->hb_started = false;
    return NULL;
@@ -203,7 +199,7 @@ extern "C" void *dir_heartbeat_thread(void *arg)
  */
 void start_dir_heartbeat(JCR *jcr)
 {
-   if (me->heartbeat_interval) {
+   if (!no_signals && (me->heartbeat_interval > 0)) {
       jcr->dir_bsock->set_locking();
       pthread_create(&jcr->heartbeat_id, NULL, dir_heartbeat_thread, (void *)jcr);
    }
@@ -211,7 +207,7 @@ void start_dir_heartbeat(JCR *jcr)
 
 void stop_dir_heartbeat(JCR *jcr)
 {
-   if (me->heartbeat_interval) {
+   if (me->heartbeat_interval > 0) {
       stop_heartbeat_monitor(jcr);
    }
 }
diff --git a/src/filed/job.c b/src/filed/job.c
index 6f657a7..de3c798 100644
--- a/src/filed/job.c
+++ b/src/filed/job.c
@@ -1,49 +1,40 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula File Daemon Job processing
  *
- *    Kern Sibbald, October MM
+ *    Written by Kern Sibbald, October MM
  *
  */
 
 #include "bacula.h"
 #include "filed.h"
 #include "ch.h"
-
-#if defined(WIN32_VSS)
+#ifdef WIN32_VSS
 #include "vss.h"
-
 static pthread_mutex_t vss_mutex = PTHREAD_MUTEX_INITIALIZER;
-static int enable_vss = 0;
 #endif
 
-/**
+/* Globals */
+bool win32decomp = false;
+bool no_win32_write_errors = false;
+static int enable_vss = 0;
+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+
+/*
  * As Windows saves ACLs as part of the standard backup stream
  * we just pretend here that is has implicit acl support.
  */
@@ -68,9 +59,9 @@ extern int accurate_cmd(JCR *jcr);
 
 /* Forward referenced functions */
 static int backup_cmd(JCR *jcr);
-static int bootstrap_cmd(JCR *jcr);
 static int cancel_cmd(JCR *jcr);
 static int setdebug_cmd(JCR *jcr);
+static int setbandwidth_cmd(JCR *jcr);
 static int estimate_cmd(JCR *jcr);
 static int hello_cmd(JCR *jcr);
 static int job_cmd(JCR *jcr);
@@ -98,19 +89,15 @@ static int exit_cmd(JCR *jcr);
 
 /* Exported functions */
 
-struct s_cmds {
-   const char *cmd;
-   int (*func)(JCR *);
-   int monitoraccess; /* specify if monitors have access to this function */
-};
 
-/**
+/*
  * The following are the recognized commands from the Director.
  */
-static struct s_cmds cmds[] = {
+struct s_cmds cmds[] = {
    {"backup",       backup_cmd,    0},
    {"cancel",       cancel_cmd,    0},
    {"setdebug=",    setdebug_cmd,  0},
+   {"setbandwidth=",setbandwidth_cmd, 0},
    {"estimate",     estimate_cmd,  0},
    {"Hello",        hello_cmd,     1},
    {"fileset",      fileset_cmd,   0},
@@ -123,7 +110,6 @@ static struct s_cmds cmds[] = {
    {".status",      qstatus_cmd,   1},
    {"storage ",     storage_cmd,   0},
    {"verify",       verify_cmd,    0},
-   {"bootstrap",    bootstrap_cmd, 0},
    {"RunBeforeNow", runbeforenow_cmd, 0},
    {"RunBeforeJob", runbefore_cmd, 0},
    {"RunAfterJob",  runafter_cmd,  0},
@@ -142,9 +128,21 @@ static char jobcmd[]      = "JobId=%d Job=%127s SDid=%d SDtime=%d Authorization=
 static char storaddr[]    = "storage address=%s port=%d ssl=%d Authorization=%100s";
 static char storaddr_v1[] = "storage address=%s port=%d ssl=%d";
 static char sessioncmd[]  = "session %127s %ld %ld %ld %ld %ld %ld\n";
-static char restorecmd[]  = "restore replace=%c prelinks=%d where=%s\n";
+
 static char restorecmd1[] = "restore replace=%c prelinks=%d where=\n";
-static char restorecmdR[] = "restore replace=%c prelinks=%d regexwhere=%s\n";
+static char restorefcmd1[] = "restore files=%d replace=%c prelinks=%d where=\n";
+
+/* The following restore commands may have a big where=/regexwhere= parameter
+ * the bsscanf is limiting the default %s to 1000c. To allow more than 1000 bytes,
+ * we can specify %xxxxs where xxxx is the size expected in bytes.
+ *
+ * So, the code will add %s\n to the end of the following restore commands
+ */
+static char restorecmd[]  = "restore replace=%c prelinks=%d where=";
+static char restorecmdR[] = "restore replace=%c prelinks=%d regexwhere=";
+static char restorefcmd[]  = "restore files=%d replace=%c prelinks=%d where=";
+static char restorefcmdR[] = "restore files=%d replace=%c prelinks=%d regexwhere=";
+
 static char restoreobjcmd[]  = "restoreobject JobId=%u %d,%d,%d,%d,%d,%d,%s";
 static char restoreobjcmd1[] = "restoreobject JobId=%u %d,%d,%d,%d,%d,%d\n";
 static char endrestoreobjectcmd[] = "restoreobject end\n";
@@ -153,26 +151,27 @@ static char estimatecmd[] = "estimate listing=%d";
 static char runbefore[]   = "RunBeforeJob %s";
 static char runafter[]    = "RunAfterJob %s";
 static char runscript[]   = "Run OnSuccess=%d OnFailure=%d AbortOnError=%d When=%d Command=%s";
+static char setbandwidth[]= "setbandwidth=%lld Job=%127s";
 
 /* Responses sent to Director */
 static char errmsg[]      = "2999 Invalid command\n";
 static char no_auth[]     = "2998 No Authorization\n";
 static char invalid_cmd[] = "2997 Invalid command for a Director with Monitor directive enabled.\n";
+static char OKBandwidth[] = "2000 OK Bandwidth\n";
 static char OKinc[]       = "2000 OK include\n";
 static char OKest[]       = "2000 OK estimate files=%s bytes=%s\n";
 static char OKlevel[]     = "2000 OK level\n";
 static char OKbackup[]    = "2000 OK backup\n";
-static char OKbootstrap[] = "2000 OK bootstrap\n";
 static char OKverify[]    = "2000 OK verify\n";
 static char OKrestore[]   = "2000 OK restore\n";
 static char OKsession[]   = "2000 OK session\n";
 static char OKstore[]     = "2000 OK storage\n";
 static char OKstoreend[]  = "2000 OK storage end\n";
 static char OKjob[]       = "2000 OK Job %s (%s) %s,%s,%s";
-static char OKsetdebug[]  = "2000 OK setdebug=%d trace=%d hangup=%d\n";
+static char OKsetdebug[]  = "2000 OK setdebug=%ld trace=%ld hangup=%ld options=%s tags=%s\n";
 static char BADjob[]      = "2901 Bad Job\n";
-static char EndJob[]      = "2800 End Job TermCode=%d JobFiles=%u ReadBytes=%s"
-                            " JobBytes=%s Errors=%u VSS=%d Encrypt=%d\n";
+static char EndJob[]      = "2800 End Job TermCode=%d JobFiles=%d ReadBytes=%lld"
+                            " JobBytes=%lld Errors=%d VSS=%d Encrypt=%d\n";
 static char OKRunBefore[] = "2000 OK RunBefore\n";
 static char OKRunBeforeNow[] = "2000 OK RunBeforeNow\n";
 static char OKRunAfter[]  = "2000 OK RunAfter\n";
@@ -198,7 +197,7 @@ static char read_open[]    = "read open session = %s %ld %ld %ld %ld %ld %ld\n";
 static char read_data[]    = "read data %d\n";
 static char read_close[]   = "read close session %d\n";
 
-/**
+/*
  * Accept requests from a Director
  *
  * NOTE! We are running as a separate thread
@@ -231,19 +230,18 @@ static char read_close[]   = "read close session %d\n";
  *  9. FD runs ClientRunAfterJob
  */
 
-void *handle_client_request(void *dirp)
+static void *handle_director_request(BSOCK *dir)
 {
    int i;
    bool found, quit;
+   bool first = true;
    JCR *jcr;
-   BSOCK *dir = (BSOCK *)dirp;
    const char jobname[12] = "*Director*";
-// saveCWD save_cwd;
 
    jcr = new_jcr(sizeof(JCR), filed_free_jcr); /* create JCR */
+   jcr->sd_calls_client = false;
    jcr->dir_bsock = dir;
    jcr->ff = init_find_files();
-// save_cwd.save(jcr);
    jcr->start_time = time(NULL);
    jcr->RunScripts = New(alist(10, not_owned_by_alist));
    jcr->last_fname = get_pool_memory(PM_FNAME);
@@ -257,15 +255,27 @@ void *handle_client_request(void *dirp)
    jcr->crypto.pki_signers = me->pki_signers;
    jcr->crypto.pki_recipients = me->pki_recipients;
    dir->set_jcr(jcr);
-   enable_backup_privileges(NULL, 1 /* ignore_errors */);
+   /* Initialize SD start condition variable */
+   int errstat = pthread_cond_init(&jcr->job_start_wait, NULL);
+   if (errstat != 0) {
+      berrno be;
+      Jmsg1(jcr, M_FATAL, 0, _("Unable to init job cond variable: ERR=%s\n"), be.bstrerror(errstat));
+      goto bail_out;
+   }
 
-   /**********FIXME******* add command handler error code */
+   enable_backup_privileges(NULL, 1 /* ignore_errors */);
 
    for (quit=false; !quit;) {
-      /* Read command */
-      if (dir->recv() < 0) {
-         break;               /* connection terminated */
+      if (!first) {      /* first call the read is done */
+         /* Read command */
+         if (dir->recv() < 0) {
+            break;               /* connection terminated */
+         }
+      }
+      if (dir->msglen == 0) {    /* Bad connection */
+         break;
       }
+      first = false;
       dir->msg[dir->msglen] = 0;
       Dmsg1(100, "<dird: %s", dir->msg);
       found = false;
@@ -283,7 +293,14 @@ void *handle_client_request(void *dirp)
                dir->signal(BNET_EOD);
                break;
             }
-            Dmsg1(100, "Executing %s command.\n", cmds[i].cmd);
+            if ((me->disabled_cmds_array && me->disabled_cmds_array[i]) ||
+                (jcr->director && jcr->director->disabled_cmds_array &&
+                 jcr->director->disabled_cmds_array[i])) {
+                Jmsg(jcr, M_FATAL, 0, _("Command: \"%s\" is disabled.\n"), cmds[i].cmd);
+                quit = true;
+                break;
+            }
+            Dmsg1(100, "Executing Dir %s command.\n", dir->msg);
             if (!cmds[i].func(jcr)) {         /* do command */
                quit = true;         /* error or fully terminated, get out */
                Dmsg1(100, "Quit command loop. Canceled=%d\n", job_canceled(jcr));
@@ -307,18 +324,19 @@ void *handle_client_request(void *dirp)
    run_scripts(jcr, jcr->RunScripts, "ClientAfterJob");
 
    if (jcr->JobId) {            /* send EndJob if running a job */
-      char ed1[50], ed2[50];
-      /* Send termination status back to Dir */
+      uint32_t vss, encrypt;
+      encrypt = jcr->crypto.pki_encrypt;
+      vss = jcr->VSS;
       dir->fsend(EndJob, jcr->JobStatus, jcr->JobFiles,
-                 edit_uint64(jcr->ReadBytes, ed1),
-                 edit_uint64(jcr->JobBytes, ed2), jcr->JobErrors, jcr->VSS,
-                 jcr->crypto.pki_encrypt);
-      Dmsg1(110, "End FD msg: %s\n", dir->msg);
+              jcr->ReadBytes, jcr->JobBytes, jcr->JobErrors, vss,
+              encrypt);
+      //Dmsg0(0/*110*/, dir->msg);
    }
 
    generate_daemon_event(jcr, "JobEnd");
    generate_plugin_event(jcr, bEventJobEnd);
 
+bail_out:
    dequeue_messages(jcr);             /* send any queued messages */
 
    /* Inform Director that we are done */
@@ -398,10 +416,9 @@ void *handle_client_request(void *dirp)
    ff->fileset = NULL;
    Dmsg0(100, "Calling term_find_files\n");
    term_find_files(jcr->ff);
-// save_cwd.restore(jcr);
-// save_cwd.release();
    jcr->ff = NULL;
    Dmsg0(100, "Done with term_find_files\n");
+   pthread_cond_destroy(&jcr->job_start_wait);
    free_jcr(jcr);                     /* destroy JCR record */
    Dmsg0(100, "Done with free_jcr\n");
    Dsm_check(100);
@@ -409,6 +426,88 @@ void *handle_client_request(void *dirp)
    return NULL;
 }
 
+/*
+ * Note, we handle the initial connection request here.
+ *   We only get the jobname and the SD version, then we
+ *   return, authentication will be done when the Director
+ *   sends the storage command -- as is usually the case.
+ *   This should be called only once by the SD.
+ */
+static void *handle_storage_request(BSOCK *sd)
+{
+   char job_name[500];
+   char tbuf[150];
+   int sd_version;
+   JCR *jcr;
+
+   if (sscanf(sd->msg, "Hello FD: Bacula Storage calling Start Job %127s %d\n",
+       job_name, &sd_version) != 2) {
+      Jmsg(NULL, M_FATAL, 0, _("SD connect failed: Bad Hello command\n"));
+      return NULL;
+   }
+   Dmsg1(110, "Got a SD connection at %s\n", bstrftimes(tbuf, sizeof(tbuf),
+         (utime_t)time(NULL)));
+   Dmsg1(50, "%s", sd->msg);
+
+   if (!(jcr=get_jcr_by_full_name(job_name))) {
+      Jmsg1(NULL, M_FATAL, 0, _("SD connect failed: Job name not found: %s\n"), job_name);
+      Dmsg1(3, "**** Job \"%s\" not found.\n", job_name);
+      sd->destroy();
+      return NULL;
+   }
+
+   Dmsg1(150, "Found Job %s\n", job_name);
+
+   jcr->store_bsock = sd;
+   jcr->store_bsock->set_jcr(jcr);
+
+   if (!jcr->max_bandwidth) {
+      if (jcr->director->max_bandwidth_per_job) {
+         jcr->max_bandwidth = jcr->director->max_bandwidth_per_job;
+
+      } else if (me->max_bandwidth_per_job) {
+         jcr->max_bandwidth = me->max_bandwidth_per_job;
+      }
+   }
+   sd->set_bwlimit(jcr->max_bandwidth);
+   pthread_cond_signal(&jcr->job_start_wait); /* wake waiting job */
+   free_jcr(jcr);
+   return NULL;
+}
+
+/*
+ * Accept requests from a Director or a Storage daemon
+ */
+void *handle_connection_request(void *caller)
+{
+   BSOCK *bs = (BSOCK *)caller;
+
+   if (bs->recv() > 0) {
+      if (strncmp(bs->msg, "Ping", 4) == 0) {
+         bs->fsend("2000 Ping OK\n");
+         bs->destroy();
+         return NULL;
+      }
+      if (bs->msglen < 25 || bs->msglen > 500) {
+         goto bail_out;
+      }
+      Dmsg1(100, "Got: %s", bs->msg);
+      if (strncmp(bs->msg, "Hello Director", 14) == 0) {
+         return handle_director_request(bs);
+      }
+      if (strncmp(bs->msg, "Hello FD: Bacula Storage", 20) ==0) {
+         return handle_storage_request(bs);
+      }
+   }
+bail_out:
+   Dmsg2(100, "Bad command from %s. Len=%d.\n", bs->who(), bs->msglen);
+   char addr[64];
+   char *who = bs->get_peer(addr, sizeof(addr)) ? bs->who() : addr;
+   Jmsg2(NULL, M_FATAL, 0, _("Bad command from %s. Len=%d.\n"), who, bs->msglen);
+   bs->destroy();
+   return NULL;
+}
+
 static int sm_dump_cmd(JCR *jcr)
 {
    close_memory_pool();
@@ -439,6 +538,7 @@ static int hello_cmd(JCR *jcr)
    }
    Dmsg0(120, "OK Authenticate\n");
    jcr->authenticated = true;
+
    return 1;
 }
 
@@ -450,26 +550,77 @@ static int cancel_cmd(JCR *jcr)
    BSOCK *dir = jcr->dir_bsock;
    char Job[MAX_NAME_LENGTH];
    JCR *cjcr;
+   int status;
+   const char *reason;
 
    if (sscanf(dir->msg, "cancel Job=%127s", Job) == 1) {
-      if (!(cjcr=get_jcr_by_full_name(Job))) {
+      status = JS_Canceled;
+      reason = "canceled";
+   } else {
+      dir->fsend(_("2902 Error scanning cancel command.\n"));
+      goto bail_out;
+   }
+   if (!(cjcr=get_jcr_by_full_name(Job))) {
+      dir->fsend(_("2901 Job %s not found.\n"), Job);
+   } else {
+      generate_plugin_event(cjcr, bEventCancelCommand, NULL);
+      cjcr->setJobStatus(status);
+      if (cjcr->store_bsock) {
+         cjcr->store_bsock->set_timed_out();
+         cjcr->store_bsock->set_terminated();
+      }
+      cjcr->my_thread_send_signal(TIMEOUT_SIGNAL);
+      free_jcr(cjcr);
+      dir->fsend(_("2001 Job \"%s\" marked to be %s.\n"),
+         Job, reason);
+   }
+
+bail_out:
+   dir->signal(BNET_EOD);
+   return 1;
+}
+
+/**
+ * Set bandwidth limit as requested by the Director
+ *
+ */
+static int setbandwidth_cmd(JCR *jcr)
+{
+   BSOCK *dir = jcr->dir_bsock;
+   int64_t bw=0;
+   JCR *cjcr;
+   char Job[MAX_NAME_LENGTH];
+   *Job=0;
+
+   if (sscanf(dir->msg, setbandwidth, &bw, Job) != 2 || bw < 0) {
+      pm_strcpy(jcr->errmsg, dir->msg);
+      dir->fsend(_("2991 Bad setbandwidth command: %s\n"), jcr->errmsg);
+      return 0;
+   }
+
+   if (*Job) {
+      if(!(cjcr=get_jcr_by_full_name(Job))) {
          dir->fsend(_("2901 Job %s not found.\n"), Job);
       } else {
-         generate_plugin_event(cjcr, bEventCancelCommand, NULL);
-         cjcr->setJobStatus(JS_Canceled);
+         cjcr->max_bandwidth = bw;
          if (cjcr->store_bsock) {
-            cjcr->store_bsock->set_timed_out();
-            cjcr->store_bsock->set_terminated();
-            cjcr->my_thread_send_signal(TIMEOUT_SIGNAL);
+            cjcr->store_bsock->set_bwlimit(bw);
          }
          free_jcr(cjcr);
-         dir->fsend(_("2001 Job %s marked to be canceled.\n"), Job);
       }
-   } else {
-      dir->fsend(_("2902 Error scanning cancel command.\n"));
+
+   } else {                           /* No job requested, apply globally */
+      me->max_bandwidth_per_job = bw; /* Overwrite directive */
+      foreach_jcr(cjcr) {
+         cjcr->max_bandwidth = bw;
+         if (cjcr->store_bsock) {
+            cjcr->store_bsock->set_bwlimit(bw);
+         }
+      }
+      endeach_jcr(cjcr);
    }
-   dir->signal(BNET_EOD);
-   return 1;
+
+   return dir->fsend(OKBandwidth);
 }
 
 /**
@@ -479,29 +630,46 @@ static int cancel_cmd(JCR *jcr)
 static int setdebug_cmd(JCR *jcr)
 {
    BSOCK *dir = jcr->dir_bsock;
-   int32_t level, trace, hangup;
+   int32_t trace, hangup, lvl;
+   int64_t level;
    int scan;
+   char options[60];
+   char tags[512];
 
    Dmsg1(50, "setdebug_cmd: %s", dir->msg);
-   scan = sscanf(dir->msg, "setdebug=%d trace=%d hangup=%d",
-       &level, &trace, &hangup);
-   if (scan != 3) {
-      Dmsg2(20, "sscanf failed: msg=%s scan=%d\n", dir->msg, scan);
-      if (sscanf(dir->msg, "setdebug=%d trace=%d", &level, &trace) != 2) {
-         pm_strcpy(jcr->errmsg, dir->msg);
-         dir->fsend(_("2991 Bad setdebug command: %s\n"), jcr->errmsg);
-         return 0;
-      } else {
-         hangup = -1;
+   tags[0] = options[0] = 0;
+   scan = sscanf(dir->msg, "setdebug=%ld trace=%ld hangup=%ld options=%55s tags=%511s",
+                 &lvl, &trace, &hangup, options, tags);
+   if (scan != 5) {
+      scan = sscanf(dir->msg, "setdebug=%ld trace=%ld hangup=%ld",
+                    &lvl, &trace, &hangup);
+      if (scan != 3) {
+         Dmsg2(20, "sscanf failed: msg=%s scan=%d\n", dir->msg, scan);
+         if (sscanf(dir->msg, "setdebug=%ld trace=%ld", &lvl, &trace) != 2) {
+            pm_strcpy(jcr->errmsg, dir->msg);
+            dir->fsend(_("2991 Bad setdebug command: %s\n"), jcr->errmsg);
+            return 0;
+         } else {
+            hangup = -1;
+         }
       }
    }
+   level = lvl;
+   set_trace(trace);
+   set_hangup(hangup);
+   if (!debug_parse_tags(tags, &level)) {
+      *tags = 0;
+   }
    if (level >= 0) {
       debug_level = level;
    }
-   set_trace(trace);
-   set_hangup(hangup);
-   Dmsg3(50, "level=%d trace=%d hangup=%d\n", level, get_trace(), get_hangup());
-   return dir->fsend(OKsetdebug, level, get_trace(), get_hangup());
+
+   /* handle other options */
+   set_debug_flags(options);
+
+   Dmsg5(150, "level=%ld trace=%ld hangup=%ld options=%s tags=%s\n",
+         lvl, get_trace(), get_hangup(), options, tags);
+   return dir->fsend(OKsetdebug, lvl, get_trace(), get_hangup(), options, tags);
 }
 
 
@@ -533,7 +701,7 @@ static int job_cmd(JCR *jcr)
    sd_auth_key.check_size(dir->msglen);
 
    if (sscanf(dir->msg, jobcmd,  &jcr->JobId, jcr->Job,
-              &jcr->VolSessionId, &jcr->VolSessionTime, 
+              &jcr->VolSessionId, &jcr->VolSessionTime,
               sd_auth_key.c_str()) != 5) {
       pm_strcpy(jcr->errmsg, dir->msg);
       Jmsg(jcr, M_FATAL, 0, _("Bad Job Command: %s"), jcr->errmsg);
@@ -545,18 +713,14 @@ static int job_cmd(JCR *jcr)
    Mmsg(jcr->errmsg, "JobId=%d Job=%s", jcr->JobId, jcr->Job);
    new_plugins(jcr);                  /* instantiate plugins for this jcr */
    generate_plugin_event(jcr, bEventJobStart, (void *)jcr->errmsg);
-#ifdef HAVE_WIN32
-   return dir->fsend(OKjob, VERSION, LSMDATE, win_os, DISTNAME, DISTVER);
-#else
    return dir->fsend(OKjob, VERSION, LSMDATE, HOST_OS, DISTNAME, DISTVER);
-#endif
 }
 
 extern "C" char *job_code_callback_filed(JCR *jcr, const char* param)
 {
    switch (param[0]) {
       case 'D':
-         if (jcr->director) { 
+         if (jcr->director) {
             return jcr->director->hdr.name;
          }
          break;
@@ -656,7 +820,7 @@ static int runscript_cmd(JCR *jcr)
 
    Dmsg1(100, "runscript_cmd: '%s'\n", dir->msg);
    /* Note, we cannot sscanf into bools */
-   if (sscanf(dir->msg, runscript, &on_success, 
+   if (sscanf(dir->msg, runscript, &on_success,
                                   &on_failure,
                                   &fail_on_error,
                                   &cmd->when,
@@ -699,21 +863,22 @@ static int restore_object_cmd(JCR *jcr)
 
    Dmsg1(100, "Enter restoreobject_cmd: %s", dir->msg);
    if (strcmp(dir->msg, endrestoreobjectcmd) == 0) {
+      Dmsg0(20, "Got endrestoreobject\n");
       generate_plugin_event(jcr, bEventRestoreObject, NULL);
       return dir->fsend(OKRestoreObject);
    }
 
-   rop.plugin_name = (char *) malloc (dir->msglen);
+   rop.plugin_name = (char *)malloc(dir->msglen);
    *rop.plugin_name = 0;
 
-   if (sscanf(dir->msg, restoreobjcmd, &rop.JobId, &rop.object_len, 
-              &rop.object_full_len, &rop.object_index, 
-              &rop.object_type, &rop.object_compression, &FileIndex, 
+   if (sscanf(dir->msg, restoreobjcmd, &rop.JobId, &rop.object_len,
+              &rop.object_full_len, &rop.object_index,
+              &rop.object_type, &rop.object_compression, &FileIndex,
               rop.plugin_name) != 8) {
 
       /* Old version, no plugin_name */
-      if (sscanf(dir->msg, restoreobjcmd1, &rop.JobId, &rop.object_len, 
-                 &rop.object_full_len, &rop.object_index, 
+      if (sscanf(dir->msg, restoreobjcmd1, &rop.JobId, &rop.object_len,
+                 &rop.object_full_len, &rop.object_index,
                  &rop.object_type, &rop.object_compression, &FileIndex) != 7) {
          Dmsg0(5, "Bad restore object command\n");
          pm_strcpy(jcr->errmsg, dir->msg);
@@ -726,7 +891,7 @@ static int restore_object_cmd(JCR *jcr)
 
    Dmsg7(100, "Recv object: JobId=%u objlen=%d full_len=%d objinx=%d objtype=%d "
          "FI=%d plugin_name=%s\n",
-         rop.JobId, rop.object_len, rop.object_full_len, 
+         rop.JobId, rop.object_len, rop.object_full_len,
          rop.object_index, rop.object_type, FileIndex, rop.plugin_name);
    /* Read Object name */
    if (dir->recv() < 0) {
@@ -765,7 +930,7 @@ static int restore_object_cmd(JCR *jcr)
       Dmsg0(100, "got job metadata\n");
       jcr->got_metadata = true;
    }
-   
+
    generate_plugin_event(jcr, bEventRestoreObject, (void *)&rop);
 
    if (rop.object_name) {
@@ -809,7 +974,7 @@ static bool init_fileset(JCR *jcr)
    return true;
 }
 
-static void append_file(JCR *jcr, findINCEXE *incexe, 
+static void append_file(JCR *jcr, findINCEXE *incexe,
                         const char *buf, bool is_file)
 {
    if (is_file) {
@@ -820,13 +985,13 @@ static void append_file(JCR *jcr, findINCEXE *incexe,
       incexe->plugin_list.append(new_dlistString(buf));
 
    } else {
-      Jmsg(jcr, M_FATAL, 0, 
+      Jmsg(jcr, M_FATAL, 0,
            _("Plugin Directory not defined. Cannot use plugin: \"%s\"\n"),
            buf);
    }
 }
 
-/**
+/*
  * Add fname to include/exclude fileset list. First check for
  * | and < and if necessary perform command.
  */
@@ -873,7 +1038,7 @@ void add_file_to_fileset(JCR *jcr, const char *fname, bool is_file)
       p++;                      /* skip over < */
       if ((ffd = fopen(p, "rb")) == NULL) {
          berrno be;
-         Jmsg(jcr, M_FATAL, 0, 
+         Jmsg(jcr, M_FATAL, 0,
               _("Cannot open FileSet input file: %s. ERR=%s\n"),
             p, be.bstrerror());
          return;
@@ -1301,11 +1466,6 @@ static int set_options(findFOPTS *fo, const char *opts)
    const char *p;
    char strip[100];
 
-// Commented out as it is not backward compatible - KES
-#ifdef HAVE_WIN32
-//   fo->flags |= FO_IGNORECASE; /* always ignorecase under windows */
-#endif
-
    for (p=opts; *p; p++) {
       switch (*p) {
       case 'a':                 /* alway replace */
@@ -1457,7 +1617,7 @@ static int set_options(findFOPTS *fo, const char *opts)
          fo->flags |= FO_XATTR;
          break;
       default:
-         Emsg1(M_ERROR, 0, _("Unknown include/exclude option: %c\n"), *p);
+         Jmsg1(NULL, M_ERROR, 0, _("Unknown include/exclude option: %c\n"), *p);
          break;
       }
    }
@@ -1470,15 +1630,13 @@ static int set_options(findFOPTS *fo, const char *opts)
  */
 static int fileset_cmd(JCR *jcr)
 {
+   POOL_MEM buf(PM_MESSAGE);
    BSOCK *dir = jcr->dir_bsock;
    int rtnstat;
-
-#if defined(WIN32_VSS)
    int vss = 0;
 
    sscanf(dir->msg, "fileset vss=%d", &vss);
    enable_vss = vss;
-#endif
 
    if (!init_fileset(jcr)) {
       return 0;
@@ -1486,7 +1644,8 @@ static int fileset_cmd(JCR *jcr)
    while (dir->recv() >= 0) {
       strip_trailing_junk(dir->msg);
       Dmsg1(500, "Fileset: %s\n", dir->msg);
-      add_fileset(jcr, dir->msg);
+      pm_strcpy(buf, dir->msg);
+      add_fileset(jcr, buf.c_str());
    }
    if (!term_fileset(jcr)) {
       return 0;
@@ -1496,71 +1655,15 @@ static int fileset_cmd(JCR *jcr)
    return rtnstat;
 }
 
-static void free_bootstrap(JCR *jcr)
-{
-   if (jcr->RestoreBootstrap) {
-      unlink(jcr->RestoreBootstrap);
-      free_pool_memory(jcr->RestoreBootstrap);
-      jcr->RestoreBootstrap = NULL;
-   }
-}
-
-
-static pthread_mutex_t bsr_mutex = PTHREAD_MUTEX_INITIALIZER;
-static uint32_t bsr_uniq = 0;
-
-/**
- * The Director sends us the bootstrap file, which
- *   we will in turn pass to the SD.
- *   Deprecated.  The bsr is now sent directly from the
- *   Director to the SD.
- */
-static int bootstrap_cmd(JCR *jcr)
-{
-   BSOCK *dir = jcr->dir_bsock;
-   POOLMEM *fname = get_pool_memory(PM_FNAME);
-   FILE *bs;
-
-   free_bootstrap(jcr);
-   P(bsr_mutex);
-   bsr_uniq++;
-   Mmsg(fname, "%s/%s.%s.%d.bootstrap", me->working_directory, me->hdr.name,
-      jcr->Job, bsr_uniq);
-   V(bsr_mutex);
-   Dmsg1(400, "bootstrap=%s\n", fname);
-   jcr->RestoreBootstrap = fname;
-   bs = fopen(fname, "a+b");           /* create file */
-   if (!bs) {
-      berrno be;
-      Jmsg(jcr, M_FATAL, 0, _("Could not create bootstrap file %s: ERR=%s\n"),
-         jcr->RestoreBootstrap, be.bstrerror());
-      /*
-       * Suck up what he is sending to us so that he will then
-       *   read our error message.
-       */
-      while (dir->recv() >= 0)
-        {  }
-      free_bootstrap(jcr);
-      jcr->setJobStatus(JS_ErrorTerminated);
-      return 0;
-   }
-
-   while (dir->recv() >= 0) {
-       Dmsg1(200, "filed<dird: bootstrap: %s", dir->msg);
-       fputs(dir->msg, bs);
-   }
-   fclose(bs);
-   /*
-    * Note, do not free the bootstrap yet -- it needs to be 
-    *  sent to the SD 
-    */
-   return dir->fsend(OKbootstrap);
-}
 
 
 /**
  * Get backup level from Director
  *
+ * Note: there are odd things such as accurate_differential,
+ *  and accurate_incremental that are passed in level, thus
+ *  the calls to strstr() below.
+ *
  */
 static int level_cmd(JCR *jcr)
 {
@@ -1582,10 +1685,10 @@ static int level_cmd(JCR *jcr)
       goto bail_out;
    }
    /* Base backup requested? */
-   if (strcmp(level, "base") == 0) {
+   if (strcasecmp(level, "base") == 0) {
       jcr->setJobLevel(L_BASE);
    /* Full backup requested? */
-   } else if (strcmp(level, "full") == 0) {
+   } else if (strcasecmp(level, "full") == 0) {
       jcr->setJobLevel(L_FULL);
    } else if (strstr(level, "differential")) {
       jcr->setJobLevel(L_DIFFERENTIAL);
@@ -1599,7 +1702,7 @@ static int level_cmd(JCR *jcr)
     * We get his UTC since time, then sync the clocks and correct it
     *   to agree with our clock.
     */
-   } else if (strcmp(level, "since_utime") == 0) {
+   } else if (strcasecmp(level, "since_utime") == 0) {
       buf = get_memory(dir->msglen+1);
       utime_t since_time, adj;
       btime_t his_time, bt_start, rt=0, bt_adj=0;
@@ -1706,13 +1809,13 @@ static int session_cmd(JCR *jcr)
 static void set_storage_auth_key(JCR *jcr, char *key)
 {
    /* if no key don't update anything */
-   if (!*key) {                
+   if (!*key) {
       return;
    }
 
    /**
     * We can be contacting multiple storage daemons.
-    * So, make sure that any old jcr->store_bsock is cleaned up. 
+    * So, make sure that any old jcr->store_bsock is cleaned up.
     */
    if (jcr->store_bsock) {
       jcr->store_bsock->destroy();
@@ -1721,7 +1824,7 @@ static void set_storage_auth_key(JCR *jcr, char *key)
 
    /**
     * We can be contacting multiple storage daemons.
-    *   So, make sure that any old jcr->sd_auth_key is cleaned up. 
+    *   So, make sure that any old jcr->sd_auth_key is cleaned up.
     */
    if (jcr->sd_auth_key) {
       /*
@@ -1734,7 +1837,7 @@ static void set_storage_auth_key(JCR *jcr, char *key)
    }
 
    jcr->sd_auth_key = bstrdup(key);
-   Dmsg0(5, "set sd auth key\n");
+   Dmsg1(5, "set sd auth key %s\n", jcr->sd_auth_key);
 }
 
 /**
@@ -1743,56 +1846,101 @@ static void set_storage_auth_key(JCR *jcr, char *key)
  */
 static int storage_cmd(JCR *jcr)
 {
-   int stored_port;                /* storage daemon port */
+   int stored_port = 0;            /* storage daemon port */
    int enable_ssl;                 /* enable ssl to sd */
    POOL_MEM sd_auth_key(PM_MESSAGE);
    BSOCK *dir = jcr->dir_bsock;
-   BSOCK *sd = new_bsock();        /* storage daemon bsock */
-
+   BSOCK *sd;
 
    Dmsg1(100, "StorageCmd: %s", dir->msg);
    sd_auth_key.check_size(dir->msglen);
-   if (sscanf(dir->msg, storaddr, &jcr->stored_addr, &stored_port, 
-              &enable_ssl, sd_auth_key.c_str()) != 4) {
-      if (sscanf(dir->msg, storaddr_v1, &jcr->stored_addr,
+   if (sscanf(dir->msg, storaddr, &jcr->stored_addr, &stored_port,
+              &enable_ssl, sd_auth_key.c_str()) == 4) {
+      Dmsg1(100, "Set auth key %s\n", sd_auth_key.c_str());
+      set_storage_auth_key(jcr, sd_auth_key.c_str());
+  } else if (sscanf(dir->msg, storaddr_v1, &jcr->stored_addr,
                  &stored_port, &enable_ssl) != 3) {
-         pm_strcpy(jcr->errmsg, dir->msg);
-         Jmsg(jcr, M_FATAL, 0, _("Bad storage command: %s"), jcr->errmsg);
-         goto bail_out;
-      }
+      pm_strcpy(jcr->errmsg, dir->msg);
+      Jmsg(jcr, M_FATAL, 0, _("Bad storage command: %s"), jcr->errmsg);
+      Pmsg1(010, "Bad storage command: %s", jcr->errmsg);
+      goto bail_out;
    }
 
-   set_storage_auth_key(jcr, sd_auth_key.c_str());
 
-   Dmsg3(110, "Open storage: %s:%d ssl=%d\n", jcr->stored_addr, stored_port, 
-         enable_ssl);
-   /* Open command communications with Storage daemon */
-   /* Try to connect for 1 hour at 10 second intervals */
+   /* TODO: see if we put limit on restore and backup... */
+   if (!jcr->max_bandwidth) {
+      if (jcr->director->max_bandwidth_per_job) {
+         jcr->max_bandwidth = jcr->director->max_bandwidth_per_job;
 
-   sd->set_source_address(me->FDsrc_addr);
+      } else if (me->max_bandwidth_per_job) {
+         jcr->max_bandwidth = me->max_bandwidth_per_job;
+      }
+   }
 
-   if (!sd->connect(jcr, 10, (int)me->SDConnectTimeout, me->heartbeat_interval,
+   if (stored_port != 0) {
+      jcr->sd_calls_client = false;   /* We are doing the connecting */
+      Dmsg3(110, "Connect to storage: %s:%d ssl=%d\n", jcr->stored_addr, stored_port,
+            enable_ssl);
+      sd = new_bsock();
+      /* Open command communications with Storage daemon */
+      /* Try to connect for 1 hour at 10 second intervals */
+      sd->set_source_address(me->FDsrc_addr);
+      if (!sd->connect(jcr, 10, (int)me->SDConnectTimeout, me->heartbeat_interval,
                 _("Storage daemon"), jcr->stored_addr, NULL, stored_port, 1)) {
-     sd->destroy();
-     sd = NULL;
-   }
+         /* destroy() OK because sd is local */
+         sd->destroy();
+         Jmsg2(jcr, M_FATAL, 0, _("Failed to connect to Storage daemon: %s:%d\n"),
+             jcr->stored_addr, stored_port);
+         Dmsg2(100, "Failed to connect to Storage daemon: %s:%d\n",
+             jcr->stored_addr, stored_port);
+         goto bail_out;
+      }
 
-   if (sd == NULL) {
-      Jmsg(jcr, M_FATAL, 0, _("Failed to connect to Storage daemon: %s:%d\n"),
-          jcr->stored_addr, stored_port);
-      Dmsg2(100, "Failed to connect to Storage daemon: %s:%d\n",
-          jcr->stored_addr, stored_port);
-      goto bail_out;
-   }
-   Dmsg0(110, "Connection OK to SD.\n");
+      Dmsg0(110, "Connection OK to SD.\n");
+      jcr->store_bsock = sd;
+   } else {                      /* The storage daemon called us */
+      struct timeval tv;
+      struct timezone tz;
+      struct timespec timeout;
+      int errstat;
 
-   jcr->store_bsock = sd;
+      jcr->sd_calls_client = true;
+      /*
+       * Wait for the Storage daemon to contact us to start the Job,
+       *  when he does, we will be released, unless the 30 minutes
+       *  expires.
+       */
+      gettimeofday(&tv, &tz);
+      timeout.tv_nsec = tv.tv_usec * 1000;
+      timeout.tv_sec = tv.tv_sec + 30 * 60;  /* wait 30 minutes */
+      P(mutex);
+      while (jcr->store_bsock == NULL && !jcr->is_job_canceled()) {
+         errstat = pthread_cond_timedwait(&jcr->job_start_wait, &mutex, &timeout);
+         if (errstat == ETIMEDOUT || errstat == EINVAL || errstat == EPERM) {
+            break;
+         }
+         Dmsg1(800, "=== Auth cond errstat=%d\n", errstat);
+      }
+      V(mutex);
+      Dmsg2(800, "Auth fail or cancel for jid=%d %p\n", jcr->JobId, jcr);
+
+      /* We should already have a storage connection! */
+      if (jcr->store_bsock == NULL) {
+         Pmsg0(000, "Failed connect from Storage daemon. SD bsock=NULL.\n");
+         Pmsg1(000, "Storagecmd: %s", dir->msg);
+         Jmsg0(jcr, M_FATAL, 0, _("Failed connect from Storage daemon. SD bsock=NULL.\n"));
+         goto bail_out;
+      }
+      if (jcr->is_job_canceled()) {
+         goto bail_out;
+      }
+   }
+   jcr->store_bsock->set_bwlimit(jcr->max_bandwidth);
 
-   sd->fsend("Hello Start Job %s\n", jcr->Job);
    if (!authenticate_storagedaemon(jcr)) {
-      Jmsg(jcr, M_FATAL, 0, _("Failed to authenticate Storage daemon.\n"));
       goto bail_out;
    }
+   memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key));
    Dmsg0(110, "Authenticated with SD.\n");
 
    /* Send OK to Director */
@@ -1801,7 +1949,6 @@ static int storage_cmd(JCR *jcr)
 bail_out:
    dir->fsend(BADcmd, "storage");
    return 0;
-
 }
 
 
@@ -1816,23 +1963,12 @@ static int backup_cmd(JCR *jcr)
    int SDJobStatus;
    int32_t FileIndex;
 
-#if defined(WIN32_VSS)
-   // capture state here, if client is backed up by multiple directors
-   // and one enables vss and the other does not then enable_vss can change
-   // between here and where its evaluated after the job completes.
-   jcr->VSS = g_pVSSClient && enable_vss;
-   if (jcr->VSS) {
-      /* Run only one at a time */
-      P(vss_mutex);
-   }
-#endif
-  
    if (sscanf(dir->msg, "backup FileIndex=%ld\n", &FileIndex) == 1) {
       jcr->JobFiles = FileIndex;
       Dmsg1(100, "JobFiles=%ld\n", jcr->JobFiles);
    }
 
-   /**
+   /*
     * Validate some options given to the backup make sense for the compiled in
     * options of this filed.
     */
@@ -1891,66 +2027,23 @@ static int backup_cmd(JCR *jcr)
    if (!response(jcr, sd, OK_data, "Append Data")) {
       goto cleanup;
    }
-   
+
    generate_daemon_event(jcr, "JobStart");
    generate_plugin_event(jcr, bEventStartBackupJob);
 
-#if defined(WIN32_VSS)
-   /* START VSS ON WIN32 */
-   if (jcr->VSS) {      
-      if (g_pVSSClient->InitializeForBackup(jcr)) {   
-        generate_plugin_event(jcr, bEventVssBackupAddComponents);
-        /* tell vss which drives to snapshot */   
-        char szWinDriveLetters[27];
-        *szWinDriveLetters=0;
-        /* Plugin driver can return drive letters */
-        generate_plugin_event(jcr, bEventVssPrepareSnapshot, szWinDriveLetters);
-        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)) {               
-               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;
-               for (i=0; i < (int)strlen(szWinDriveLetters); i++) {
-                  if (islower(szWinDriveLetters[i])) {
-                     Jmsg(jcr, M_FATAL, 0, _("Generate VSS snapshot of drive \"%c:\\\" failed.\n"), szWinDriveLetters[i]);
-                  }
-               }
-               /* inform user about writer states */
-               for (i=0; i < (int)g_pVSSClient->GetWriterCount(); i++) {               
-                  if (g_pVSSClient->GetWriterState(i) < 1) {
-                     Jmsg(jcr, M_INFO, 0, _("VSS Writer (PrepareForBackup): %s\n"), g_pVSSClient->GetWriterInfo(i));                    
-                  }                            
-               }
-            }
-        } else {
-            Jmsg(jcr, M_FATAL, 0, _("No drive letters found for generating VSS snapshots.\n"));
-        }
-      } else {
-         berrno be;
-         Jmsg(jcr, M_FATAL, 0, _("VSS was not initialized properly. ERR=%s\n"),
-            be.bstrerror());
-      } 
-      run_scripts(jcr, jcr->RunScripts, "ClientAfterVSS");
-   }
-#endif
-
-   /**
+   /*
     * Send Files to Storage daemon
     */
    Dmsg1(110, "begin blast ff=%p\n", (FF_PKT *)jcr->ff);
    if (!blast_data_to_storage_daemon(jcr, NULL)) {
       jcr->setJobStatus(JS_ErrorTerminated);
-      bnet_suppress_error_messages(sd, 1);
+      sd->suppress_error_messages(true);
       Dmsg0(110, "Error in blast_data.\n");
    } else {
       jcr->setJobStatus(JS_Terminated);
       /* Note, the above set status will not override an error */
       if (!(jcr->JobStatus == JS_Terminated || jcr->JobStatus == JS_Warnings)) {
-         bnet_suppress_error_messages(sd, 1);
+         sd->suppress_error_messages(true);
          goto cleanup;                /* bail out now */
       }
       /**
@@ -1986,20 +2079,12 @@ static int backup_cmd(JCR *jcr)
          goto cleanup;
       }
       if (!(SDJobStatus == JS_Terminated || SDJobStatus == JS_Warnings)) {
-         Jmsg(jcr, M_FATAL, 0, _("Bad status %d returned from Storage Daemon.\n"),
-            SDJobStatus);
+         Jmsg(jcr, M_FATAL, 0, _("Bad status %d %c returned from Storage Daemon.\n"),
+            SDJobStatus, (char)SDJobStatus);
       }
    }
 
 cleanup:
-#if defined(WIN32_VSS)
-   if (jcr->VSS) {
-      Win32ConvCleanupCache();
-      g_pVSSClient->DestroyWriterInfo();
-      V(vss_mutex);
-   }
-#endif
-
    generate_plugin_event(jcr, bEventEndBackupJob);
    return 0;                          /* return and stop command loop */
 }
@@ -2081,26 +2166,7 @@ static int verify_cmd(JCR *jcr)
    return 0;                          /* return and terminate command loop */
 }
 
-#if 0
-#ifdef WIN32_VSS
-static bool vss_restore_init_callback(JCR *jcr, int init_type)
-{
-   switch (init_type) {
-   case VSS_INIT_RESTORE_AFTER_INIT:
-      generate_plugin_event(jcr, bEventVssRestoreLoadComponentMetadata);
-      return true;
-   case VSS_INIT_RESTORE_AFTER_GATHER:
-      generate_plugin_event(jcr, bEventVssRestoreSetComponentsSelected);
-      return true;
-   default:
-      return false;
-      break;
-   }
-}
-#endif
-#endif
-
-/**
+/*
  * Do a Restore for Director
  *
  */
@@ -2108,48 +2174,70 @@ static int restore_cmd(JCR *jcr)
 {
    BSOCK *dir = jcr->dir_bsock;
    BSOCK *sd = jcr->store_bsock;
-   POOLMEM *args;
+   POOLMEM *args=NULL, *restore_where=NULL, *restore_rwhere=NULL;
    bool use_regexwhere=false;
    int prefix_links;
    char replace;
+   bool scan_ok = true;
+   int files;
+   int ret = 0;
 
    /**
     * Scan WHERE (base directory for restore) from command
     */
    Dmsg0(100, "restore command\n");
-#if defined(WIN32_VSS)
 
-   /**
-    * No need to enable VSS for restore if we do not have plugin
-    *  data to restore 
-    */
-   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
-   // and one enables vss and the other does not then enable_vss can change
-   // between here and where its evaluated after the job completes.
-   jcr->VSS = g_pVSSClient && enable_vss;
-   if (jcr->VSS) {
-      /* Run only one at a time */
-      P(vss_mutex);
-   }
-#endif
    /* Pickup where string */
    args = get_memory(dir->msglen+1);
    *args = 0;
 
-   if (sscanf(dir->msg, restorecmd, &replace, &prefix_links, args) != 3) {
-      if (sscanf(dir->msg, restorecmdR, &replace, &prefix_links, args) != 3){
-         if (sscanf(dir->msg, restorecmd1, &replace, &prefix_links) != 2) {
-            pm_strcpy(jcr->errmsg, dir->msg);
-            Jmsg(jcr, M_FATAL, 0, _("Bad replace command. CMD=%s\n"), jcr->errmsg);
-            return 0;
+   restore_where = get_pool_memory(PM_FNAME);
+   restore_rwhere = get_pool_memory(PM_FNAME);
+
+   /* We don't know the size of where/rwhere in advance,
+    * where= -> where=%202s\n
+    */
+   Mmsg(restore_where, "%s%%%ds\n", restorefcmd, dir->msglen);
+   Mmsg(restore_rwhere, "%s%%%ds\n", restorefcmdR, dir->msglen);
+
+   Dmsg2(200, "where=%srwhere=%s", restore_where, restore_rwhere);
+
+   /* Scan for new form with number of files to restore */
+   if (sscanf(dir->msg, restore_where, &files, &replace, &prefix_links, args) != 4) {
+      if (sscanf(dir->msg, restore_rwhere, &files, &replace, &prefix_links, args) != 4) {
+         if (sscanf(dir->msg, restorefcmd1, &files, &replace, &prefix_links) != 3) {
+            scan_ok = false;
          }
-         *args = 0;
+         *args = 0;             /* No where argument */
+      } else {
+         use_regexwhere = true;
       }
-      use_regexwhere = true;
    }
+
+   if (scan_ok) {
+      jcr->ExpectedFiles = files;
+   } else {
+      /* Scan for old form without number of files */
+      jcr->ExpectedFiles = 0;
+
+      /* where= -> where=%202s\n */
+      Mmsg(restore_where, "%s%%%ds\n", restorecmd, dir->msglen);
+      Mmsg(restore_rwhere, "%s%%%ds\n", restorecmdR, dir->msglen);
+
+      if (sscanf(dir->msg, restore_where, &replace, &prefix_links, args) != 3) {
+         if (sscanf(dir->msg, restore_rwhere, &replace, &prefix_links, args) != 3){
+            if (sscanf(dir->msg, restorecmd1, &replace, &prefix_links) != 2) {
+               pm_strcpy(jcr->errmsg, dir->msg);
+               Jmsg(jcr, M_FATAL, 0, _("Bad replace command. CMD=%s\n"), jcr->errmsg);
+               goto free_mempool;
+            }
+            *args = 0;          /* No where argument */
+         } else {
+            use_regexwhere = true;
+         }
+      }
+   }
+
    /* Turn / into nothing */
    if (IsPathSeparator(args[0]) && args[1] == '\0') {
       args[0] = '\0';
@@ -2159,7 +2247,7 @@ static int restore_cmd(JCR *jcr)
    unbash_spaces(args);
 
    /* Keep track of newly created directories to apply them correct attributes */
-   if (replace == REPLACE_NEVER) {
+   if (replace == REPLACE_NEVER || replace == REPLACE_IFNEWER) {
       jcr->keep_path_list = true;
    }
 
@@ -2167,14 +2255,12 @@ static int restore_cmd(JCR *jcr)
       jcr->where_bregexp = get_bregexps(args);
       if (!jcr->where_bregexp) {
          Jmsg(jcr, M_FATAL, 0, _("Bad where regexp. where=%s\n"), args);
-         free_pool_memory(args);
-         return 0;
+         goto free_mempool;
       }
    } else {
       jcr->where = bstrdup(args);
    }
 
-   free_pool_memory(args);
    jcr->replace = replace;
    jcr->prefix_links = prefix_links;
 
@@ -2199,24 +2285,12 @@ static int restore_cmd(JCR *jcr)
    generate_daemon_event(jcr, "JobStart");
    generate_plugin_event(jcr, bEventStartRestoreJob);
 
-#if defined(WIN32_VSS)
-   /* START VSS ON WIN32 */
-   if (jcr->VSS) {
-      if (!g_pVSSClient->InitializeForRestore(jcr)) {
-         berrno be;
-         Jmsg(jcr, M_WARNING, 0, _("VSS was not initialized properly. VSS support is disabled. ERR=%s\n"), be.bstrerror());
-      }
-      //free_and_null_pool_memory(jcr->job_metadata);
-      run_scripts(jcr, jcr->RunScripts, "ClientAfterVSS");
-   }
-#endif
-
    do_restore(jcr);
    stop_dir_heartbeat(jcr);
 
    jcr->setJobStatus(JS_Terminated);
    if (jcr->JobStatus != JS_Terminated) {
-      bnet_suppress_error_messages(sd, 1);
+      sd->suppress_error_messages(true);
    }
 
    /**
@@ -2230,34 +2304,6 @@ static int restore_cmd(JCR *jcr)
    /* Inform Storage daemon that we are done */
    sd->signal(BNET_TERMINATE);
 
-#if defined(WIN32_VSS)
-   /* STOP VSS ON WIN32 */
-   /* tell vss to close the restore session */
-   Dmsg0(100, "About to call CloseRestore\n");
-   if (jcr->VSS) {
-#if 0
-      generate_plugin_event(jcr, bEventVssBeforeCloseRestore);
-#endif
-      Dmsg0(100, "Really about to call CloseRestore\n");
-      if (g_pVSSClient->CloseRestore()) {
-         Dmsg0(100, "CloseRestore success\n");
-#if 0
-         /* inform user about writer states */
-         for (int i=0; i<(int)g_pVSSClient->GetWriterCount(); i++) {
-            int msg_type = M_INFO;
-            if (g_pVSSClient->GetWriterState(i) < 1) {
-               //msg_type = M_WARNING;
-               //jcr->JobErrors++;
-            }
-            Jmsg(jcr, msg_type, 0, _("VSS Writer (RestoreComplete): %s\n"), g_pVSSClient->GetWriterInfo(i));
-         }
-#endif
-      }
-      else
-         Dmsg1(100, "CloseRestore fail - %08x\n", errno);
-      V(vss_mutex);
-   }
-#endif
 
 bail_out:
    bfree_and_null(jcr->where);
@@ -2268,7 +2314,6 @@ bail_out:
 
    Dmsg0(100, "Done in job.c\n");
 
-   int ret;
    if (jcr->multi_restore) {
       Dmsg0(100, OKstoreend);
       dir->fsend(OKstoreend);
@@ -2284,10 +2329,16 @@ bail_out:
    if (ret == 0) {
       end_restore_cmd(jcr);  /* stopping so send bEventEndRestoreJob */
    }
+
+free_mempool:
+   free_and_null_pool_memory(args);
+   free_and_null_pool_memory(restore_where);
+   free_and_null_pool_memory(restore_rwhere);
+
    return ret;
 }
 
-static int end_restore_cmd(JCR *jcr) 
+static int end_restore_cmd(JCR *jcr)
 {
    Dmsg0(5, "end_restore_cmd\n");
    generate_plugin_event(jcr, bEventEndRestoreJob);
@@ -2349,10 +2400,8 @@ static int open_sd_read_session(JCR *jcr)
  */
 static void filed_free_jcr(JCR *jcr)
 {
-   if (jcr->store_bsock) {
-      jcr->store_bsock->close();
-   }
-   free_bootstrap(jcr);
+   free_bsock(jcr->dir_bsock);
+   free_bsock(jcr->store_bsock);
    if (jcr->last_fname) {
       free_pool_memory(jcr->last_fname);
    }
@@ -2387,11 +2436,11 @@ int response(JCR *jcr, BSOCK *sd, char *resp, const char *cmd)
    if (job_canceled(jcr)) {
       return 0;                       /* if canceled avoid useless error messages */
    }
-   if (is_bnet_error(sd)) {
+   if (sd->is_error()) {
       Jmsg2(jcr, M_FATAL, 0, _("Comm error with SD. bad response to %s. ERR=%s\n"),
-         cmd, bnet_strerror(sd));
+         cmd, sd->bstrerror());
    } else {
-      Jmsg3(jcr, M_FATAL, 0, _("Bad response to %s command. Wanted %s, got %s\n"),
+      Jmsg3(jcr, M_FATAL, 0, _("Bad response from SD to %s command. Wanted %s, got %s\n"),
          cmd, resp, sd->msg);
    }
    return 0;
diff --git a/src/filed/protos.h b/src/filed/protos.h
index e419194..ac9863a 100644
--- a/src/filed/protos.h
+++ b/src/filed/protos.h
@@ -1,32 +1,20 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- * Written by Kern Sibbald, MM 
+ * Written by Kern Sibbald, MM
  *
  */
 
@@ -72,7 +60,7 @@ 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); 
+void add_file_to_fileset(JCR *jcr, const char *fname, bool is_file);
 int add_options_to_fileset(JCR *jcr, const char *item);
 int add_wild_to_fileset(JCR *jcr, const char *item, int type);
 int add_regex_to_fileset(JCR *jcr, const char *item, int type);
diff --git a/src/filed/pythonfd.c b/src/filed/pythonfd.c
deleted file mode 100644
index ab15c6b..0000000
--- a/src/filed/pythonfd.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2005-2008 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.
-*/
-/*
- *
- * Bacula interface to Python for the File Daemon
- *
- * Kern Sibbald, March MMV
- *
- *   Version $Id$
- *
- */
-
-#include "bacula.h"
-#include "filed.h"
-
-#ifdef HAVE_PYTHON
-#undef _POSIX_C_SOURCE
-#include <Python.h>
-
-#include <lib/pythonlib.h>
-
-/* Forward referenced functions */
-static PyObject *set_job_events(PyObject *self, PyObject *arg);
-static PyObject *job_write(PyObject *self, PyObject *arg);
-
-PyMethodDef JobMethods[] = {
-    {"set_events", set_job_events, METH_VARARGS, "Set Job events"},
-    {"write", job_write, METH_VARARGS, "Write to output"},
-    {NULL, NULL, 0, NULL}             /* last item */
-};
-
-
-struct s_vars {
-   const char *name;
-   const char *fmt;
-};
-
-/* Read-only variables */
-static struct s_vars getvars[] = {
-   { NT_("FDName"),     "s"},          /* 0 */
-   { NT_("Level"),      "s"},          /* 1 */
-   { NT_("Type"),       "s"},          /* 2 */
-   { NT_("JobId"),      "i"},          /* 3 */
-   { NT_("Client"),     "s"},          /* 4 */
-   { NT_("JobName"),    "s"},          /* 5 */
-   { NT_("JobStatus"),  "s"},          /* 6 */
-
-   { NULL,             NULL}
-};
-
-/* Writable variables */
-static struct s_vars setvars[] = {
-   { NT_("JobReport"),   "s"},
-
-   { NULL,             NULL}
-};
-
-/* Return Job variables */
-PyObject *job_getattr(PyObject *self, char *attrname)
-{
-   JCR *jcr;
-   bool found = false;
-   int i;
-   char buf[10];
-   char errmsg[200];
-
-   jcr = get_jcr_from_PyObject(self);
-   if (!jcr) {
-      bstrncpy(errmsg, _("Job pointer not found."), sizeof(errmsg));
-      goto bail_out;
-   }
-   for (i=0; getvars[i].name; i++) {
-      if (strcmp(getvars[i].name, attrname) == 0) {
-         found = true;
-         break;
-      }
-   }
-   if (!found) {
-      /* Try our methods */
-      return Py_FindMethod(JobMethods, self, attrname);
-   }
-   switch (i) {
-   case 0:                            /* FD's name */
-      return Py_BuildValue((char *)getvars[i].fmt, my_name);
-   case 1:                            /* level */
-      return Py_BuildValue((char *)getvars[i].fmt, job_level_to_str(jcr->getJobLevel()));
-   case 2:                            /* type */
-      return Py_BuildValue((char *)getvars[i].fmt, job_type_to_str(jcr->getJobType()));
-   case 3:                            /* JobId */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->JobId);
-   case 4:                            /* Client */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->client_name);
-   case 5:                            /* JobName */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->Job);
-   case 6:                            /* JobStatus */
-      buf[1] = 0;
-      buf[0] = jcr->JobStatus;
-      return Py_BuildValue((char *)getvars[i].fmt, buf);
-   }
-   bsnprintf(errmsg, sizeof(errmsg), _("Attribute %s not found."), attrname);
-bail_out:
-   PyErr_SetString(PyExc_AttributeError, errmsg);
-   return NULL;
-}
-
-int job_setattr(PyObject *self, char *attrname, PyObject *value)
-{
-  JCR *jcr;
-   bool found = false;
-   char *strval = NULL;
-   char buf[200];
-   char *errmsg;
-   int i;
-
-   Dmsg2(100, "In job_setattr=%s val=%p.\n", attrname, value);
-   if (value == NULL) {                /* Cannot delete variables */
-      bsnprintf(buf, sizeof(buf), _("Cannot delete attribute %s"), attrname);
-      errmsg = buf;
-      goto bail_out;
-   }
-   jcr = get_jcr_from_PyObject(self);
-   if (!jcr) {
-      errmsg = _("Job pointer not found.");
-      goto bail_out;
-   }
-
-   /* Find attribute name in list */
-   for (i=0; setvars[i].name; i++) {
-      if (strcmp(setvars[i].name, attrname) == 0) {
-         found = true;
-         break;
-      }
-   }
-   if (!found) {
-      bsnprintf(buf, sizeof(buf), _("Cannot find attribute %s"), attrname);
-      errmsg = buf;
-      goto bail_out;
-   }
-   /* Get argument value ***FIXME*** handle other formats */
-   if (setvars[i].fmt != NULL) {
-      if (!PyArg_Parse(value, (char *)setvars[i].fmt, &strval)) {
-         PyErr_SetString(PyExc_TypeError, _("Read-only attribute"));
-         return -1;
-      }
-   }   
-   switch (i) {
-   case 0:                            /* JobReport */
-      Jmsg(jcr, M_INFO, 0, "%s", strval);
-      return 0;
-   }
-   bsnprintf(buf, sizeof(buf), _("Cannot find attribute %s"), attrname);
-   errmsg = buf;
-bail_out:
-   PyErr_SetString(PyExc_AttributeError, errmsg);
-   return -1;
-}
-
-
-static PyObject *job_write(PyObject *self, PyObject *args)
-{
-   char *text = NULL;
-
-   if (!PyArg_ParseTuple(args, "s:write", &text)) {
-      Pmsg0(000, "Parse tuple error in job_write\n");
-      return NULL;
-   }
-   if (text) {
-      Jmsg(NULL, M_INFO, 0, "%s", text);
-   }
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-
-static PyObject *set_job_events(PyObject *self, PyObject *arg)
-{
-   PyObject *eObject;
-   JCR *jcr;
-
-   Dmsg0(100, "In set_job_events.\n");
-   if (!PyArg_ParseTuple(arg, "O", &eObject)) {
-      Pmsg0(000, "Parse error looking for Object argument\n");
-      return NULL;
-   }
-   jcr = get_jcr_from_PyObject(self);
-   if (!jcr) {
-      PyErr_SetString(PyExc_AttributeError, _("Job pointer not found."));
-      return NULL;
-   }
-   Py_XDECREF((PyObject *)jcr->Python_events);  /* release any old events Object */
-   Py_INCREF(eObject);
-   jcr->Python_events = (void *)eObject;        /* set new events */
-
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-
-int generate_job_event(JCR *jcr, const char *event)
-{
-   PyObject *method = NULL;
-   PyObject *Job = (PyObject *)jcr->Python_job;
-   PyObject *events = (PyObject *)jcr->Python_events;
-   PyObject *result = NULL;
-   int stat = 0;
-
-   if (!Job || !events) {
-      return 0;
-   }
-
-   lock_python();
-// PyEval_AcquireLock();
-
-   method = find_method(events, method, event);
-   if (!method) {
-      goto bail_out;
-   }
-
-   bstrncpy(jcr->event, event, sizeof(jcr->event));
-   result = PyObject_CallFunction(method, (char *)"O", Job);
-   jcr->event[0] = 0;             /* no event in progress */
-   if (result == NULL) {
-      if (PyErr_Occurred()) {
-         PyErr_Print();
-         Pmsg1(000, "Error in Python method %s\n", event);
-      }
-   } else {
-      stat = 1;
-   }
-   Py_XDECREF(result);
-
-bail_out:
-   unlock_python();
-// PyEval_ReleaseLock();
-   return stat;
-}
-
-
-#else
-
-/* Dummy if Python not configured */
-int generate_job_event(JCR *jcr, const char *event)
-{ return 1; }
-
-
-#endif /* HAVE_PYTHON */
diff --git a/src/filed/restore.c b/src/filed/restore.c
index 96edcc8..4aa4898 100644
--- a/src/filed/restore.c
+++ b/src/filed/restore.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula File Daemon  restore.c Restorefiles.
@@ -368,7 +356,7 @@ void do_restore(JCR *jcr)
    r_ctx rctx;
    ATTR *attr;
    /* ***FIXME*** make configurable */
-   crypto_digest_t signing_algorithm = have_sha2 ? 
+   crypto_digest_t signing_algorithm = have_sha2 ?
                                        CRYPTO_DIGEST_SHA256 : CRYPTO_DIGEST_SHA1;
    memset(&rctx, 0, sizeof(rctx));
    rctx.jcr = jcr;
@@ -396,7 +384,7 @@ void do_restore(JCR *jcr)
    } else {
       buf_size = 0;                   /* use default */
    }
-   if (!bnet_set_buffer_size(sd, buf_size, BNET_SETBUF_WRITE)) {
+   if (!sd->set_buffer_size(buf_size, BNET_SETBUF_WRITE)) {
       jcr->setJobStatus(JS_ErrorTerminated);
       return;
    }
@@ -426,7 +414,7 @@ void do_restore(JCR *jcr)
          rctx.fork_cipher_ctx.buf = get_memory(CRYPTO_CIPHER_MAX_BLOCK_SIZE);
       }
    }
-   
+
    /*
     * Get a record from the Storage daemon. We are guaranteed to
     *   receive records in the following order:
@@ -488,7 +476,7 @@ void do_restore(JCR *jcr)
       }
       /* Strip off new stream high bits */
       rctx.stream = rctx.full_stream & STREAMMASK_TYPE;
-      Dmsg5(150, "Got hdr: Files=%d FilInx=%d size=%d Stream=%d, %s.\n", 
+      Dmsg5(150, "Got hdr: Files=%d FilInx=%d size=%d Stream=%d, %s.\n",
             jcr->JobFiles, file_index, rctx.size, rctx.stream, stream_to_ascii(rctx.stream));
 
       /*
@@ -499,13 +487,13 @@ void do_restore(JCR *jcr)
          goto bail_out;
       }
       if (rctx.size != (uint32_t)sd->msglen) {
-         Jmsg2(jcr, M_FATAL, 0, _("Actual data size %d not same as header %d\n"), 
+         Jmsg2(jcr, M_FATAL, 0, _("Actual data size %d not same as header %d\n"),
                sd->msglen, rctx.size);
          Dmsg2(50, "Actual data size %d not same as header %d\n",
                sd->msglen, rctx.size);
          goto bail_out;
       }
-      Dmsg3(130, "Got stream: %s len=%d extract=%d\n", stream_to_ascii(rctx.stream), 
+      Dmsg3(130, "Got stream: %s len=%d extract=%d\n", stream_to_ascii(rctx.stream),
             sd->msglen, rctx.extract);
 
       /*
@@ -544,7 +532,7 @@ void do_restore(JCR *jcr)
          }
          /*
           * Restore objects should be ignored here -- they are
-          * returned at the beginning of the restore. 
+          * returned at the beginning of the restore.
           */
          if (IS_FT_OBJECT(rctx.type)) {
             continue;
@@ -557,14 +545,17 @@ void do_restore(JCR *jcr)
             goto bail_out;
          }
 
-         Dmsg3(100, "File %s\nattrib=%s\nattribsEx=%s\n", attr->fname,
-               attr->attr, attr->attrEx);
+         attr->data_stream = decode_stat(attr->attr, &attr->statp, sizeof(attr->statp), &attr->LinkFI);
+
+         Dmsg5(100, "Stream %d: %s, File %s\nattrib=%s\nattribsEx=%s\n",
+               attr->data_stream, stream_to_ascii(attr->data_stream),
+               attr->fname, attr->attr, attr->attrEx);
          Dmsg3(100, "=== msglen=%d attrExlen=%d msg=%s\n", sd->msglen,
                strlen(attr->attrEx), sd->msg);
 
-         attr->data_stream = decode_stat(attr->attr, &attr->statp, sizeof(attr->statp), &attr->LinkFI);
-
          if (!is_restore_stream_supported(attr->data_stream)) {
+            Dmsg2(15, "Non-supported data stream %d: %s\n",
+               attr->data_stream, stream_to_ascii(attr->data_stream));
             if (!non_support_data++) {
                Jmsg(jcr, M_WARNING, 0, _("%s stream not supported on this Client.\n"),
                     stream_to_ascii(attr->data_stream));
@@ -584,12 +575,12 @@ void do_restore(JCR *jcr)
 
          if (jcr->plugin) {
             stat = plugin_create_file(jcr, attr, &rctx.bfd, jcr->replace);
-         } 
-         
+         }
+
          if (stat == CF_CORE) {
             stat = create_file(jcr, attr, &rctx.bfd, jcr->replace);
          }
-         jcr->lock();  
+         jcr->lock();
          pm_strcpy(jcr->last_fname, attr->ofname);
          jcr->last_type = attr->type;
          jcr->unlock();
@@ -675,7 +666,7 @@ void do_restore(JCR *jcr)
 
          if (jcr->crypto.digest) {
             crypto_digest_free(jcr->crypto.digest);
-         }  
+         }
          jcr->crypto.digest = crypto_digest_new(jcr, signing_algorithm);
          if (!jcr->crypto.digest) {
             Jmsg0(jcr, M_FATAL, 0, _("Could not create digest.\n"));
@@ -687,9 +678,9 @@ void do_restore(JCR *jcr)
          /*
           * Decode and save session keys.
           */
-         cryptoerr = crypto_session_decode((uint8_t *)sd->msg, (uint32_t)sd->msglen, 
+         cryptoerr = crypto_session_decode((uint8_t *)sd->msg, (uint32_t)sd->msglen,
                         jcr->crypto.pki_recipients, &rctx.cs);
-         switch(cryptoerr) {
+         switch (cryptoerr) {
          case CRYPTO_ERROR_NONE:
             /*
              * Success
@@ -701,11 +692,19 @@ void do_restore(JCR *jcr)
          case CRYPTO_ERROR_DECRYPTION:
             Jmsg(jcr, M_ERROR, 0, _("Decrypt of the session key failed.\n"));
             break;
+         case CRYPTO_ERROR_NOSIGNER:
+            Jmsg(jcr, M_ERROR, 0, _("Signer not found. Decryption failed.\n"));
+            break;
+         case CRYPTO_ERROR_INVALID_DIGEST:
+            Jmsg(jcr, M_ERROR, 0, _("Unsupported digest algorithm. Decrypt failed.\n"));
+            break;
+         case CRYPTO_ERROR_INVALID_CRYPTO:
+            Jmsg(jcr, M_ERROR, 0, _("Unsupported encryption algorithm. Decrypt failed.\n"));
+            break;
          default:
-            /*
-             * Shouldn't happen
-             */
-            Jmsg1(jcr, M_ERROR, 0, _("An error occurred while decoding encrypted session data stream: %s\n"), crypto_strerror(cryptoerr));
+            /* This shouldn't happen */
+            Jmsg2(jcr, M_ERROR, 0, _("An error=%d occurred while decoding encrypted session data stream: ERR=%s\n"),
+               cryptoerr, crypto_strerror(cryptoerr));
             break;
          }
 
@@ -735,7 +734,7 @@ void do_restore(JCR *jcr)
          /*
           * Force an expected, consistent stream type here
           */
-         if (rctx.extract && (rctx.prev_stream == rctx.stream 
+         if (rctx.extract && (rctx.prev_stream == rctx.stream
                          || rctx.prev_stream == STREAM_UNIX_ATTRIBUTES
                          || rctx.prev_stream == STREAM_UNIX_ATTRIBUTES_EX
                          || rctx.prev_stream == STREAM_ENCRYPTED_SESSION_DATA)) {
@@ -747,7 +746,7 @@ void do_restore(JCR *jcr)
                rctx.flags |= FO_SPARSE;
             }
 
-            if (rctx.stream == STREAM_GZIP_DATA 
+            if (rctx.stream == STREAM_GZIP_DATA
                   || rctx.stream == STREAM_SPARSE_GZIP_DATA
                   || rctx.stream == STREAM_WIN32_GZIP_DATA
                   || rctx.stream == STREAM_ENCRYPTED_FILE_GZIP_DATA
@@ -766,7 +765,7 @@ void do_restore(JCR *jcr)
                   || rctx.stream == STREAM_ENCRYPTED_WIN32_DATA
                   || rctx.stream == STREAM_ENCRYPTED_FILE_COMPRESSED_DATA
                   || rctx.stream == STREAM_ENCRYPTED_WIN32_COMPRESSED_DATA
-                  || rctx.stream == STREAM_ENCRYPTED_WIN32_GZIP_DATA) {               
+                  || rctx.stream == STREAM_ENCRYPTED_WIN32_GZIP_DATA) {
                /*
                 * Set up a decryption context
                 */
@@ -778,7 +777,7 @@ void do_restore(JCR *jcr)
                      continue;
                   }
 
-                  if ((rctx.cipher_ctx.cipher = crypto_cipher_new(rctx.cs, false, 
+                  if ((rctx.cipher_ctx.cipher = crypto_cipher_new(rctx.cs, false,
                            &rctx.cipher_ctx.block_size)) == NULL) {
                      Jmsg1(jcr, M_ERROR, 0, _("Failed to initialize decryption context for %s\n"), jcr->last_fname);
                      free_session(rctx);
@@ -790,7 +789,8 @@ void do_restore(JCR *jcr)
                rctx.flags |= FO_ENCRYPT;
             }
 
-            if (is_win32_stream(rctx.stream) && !have_win32_api()) {
+            if (is_win32_stream(rctx.stream) &&
+                (win32decomp || !have_win32_api())) {
                set_portable_backup(&rctx.bfd);
                /*
                 * "decompose" BackupWrite data
@@ -1019,7 +1019,7 @@ void do_restore(JCR *jcr)
          if (!close_previous_stream(jcr, rctx)) {
             goto bail_out;
          }
-         Dmsg1(50, "restore stream_plugin_name=%s\n", sd->msg);
+         Dmsg1(150, "restore stream_plugin_name=%s\n", sd->msg);
          plugin_name_stream(jcr, sd->msg);
          break;
 
@@ -1182,7 +1182,7 @@ static const char *zlib_strerror(int stat)
 }
 #endif
 
-static int do_file_digest(JCR *jcr, FF_PKT *ff_pkt, bool top_level) 
+static int do_file_digest(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
 {
    Dmsg1(50, "do_file_digest jcr=%p\n", jcr);
    return (digest_file(jcr, ff_pkt, jcr->crypto.digest));
@@ -1201,7 +1201,7 @@ static bool verify_signature(JCR *jcr, r_ctx &rctx)
    DIGEST *digest = NULL;
    crypto_error_t err;
    uint64_t saved_bytes;
-   crypto_digest_t signing_algorithm = have_sha2 ? 
+   crypto_digest_t signing_algorithm = have_sha2 ?
                                        CRYPTO_DIGEST_SHA256 : CRYPTO_DIGEST_SHA1;
    crypto_digest_t algorithm;
    SIGNATURE *sig = rctx.sig;
@@ -1214,8 +1214,8 @@ static bool verify_signature(JCR *jcr, r_ctx &rctx)
       return true;
    }
    if (!sig) {
-      if (rctx.type == FT_REGE || rctx.type == FT_REG || rctx.type == FT_RAW) { 
-         Jmsg1(jcr, M_ERROR, 0, _("Missing cryptographic signature for %s\n"), 
+      if (rctx.type == FT_REGE || rctx.type == FT_REG || rctx.type == FT_RAW) {
+         Jmsg1(jcr, M_ERROR, 0, _("Missing cryptographic signature for %s\n"),
                jcr->last_fname);
          goto bail_out;
       }
@@ -1232,15 +1232,15 @@ static bool verify_signature(JCR *jcr, r_ctx &rctx)
          Dmsg0(50, "== Got digest\n");
          /*
           * We computed jcr->crypto.digest using signing_algorithm while writing
-          * the file. If it is not the same as the algorithm used for 
-          * this file, punt by releasing the computed algorithm and 
+          * the file. If it is not the same as the algorithm used for
+          * this file, punt by releasing the computed algorithm and
           * computing by re-reading the file.
           */
          if (algorithm != signing_algorithm) {
             if (jcr->crypto.digest) {
                crypto_digest_free(jcr->crypto.digest);
                jcr->crypto.digest = NULL;
-            }  
+            }
          }
          if (jcr->crypto.digest) {
              /*
@@ -1248,13 +1248,13 @@ static bool verify_signature(JCR *jcr, r_ctx &rctx)
               */
             if ((err = crypto_sign_verify(sig, keypair, jcr->crypto.digest)) != CRYPTO_ERROR_NONE) {
                Dmsg1(50, "Bad signature on %s\n", jcr->last_fname);
-               Jmsg2(jcr, M_ERROR, 0, _("Signature validation failed for file %s: ERR=%s\n"), 
+               Jmsg2(jcr, M_ERROR, 0, _("Signature validation failed for file %s: ERR=%s\n"),
                      jcr->last_fname, crypto_strerror(err));
                goto bail_out;
             }
-         } else {   
+         } else {
             /*
-             * Signature found, digest allocated.  Old method, 
+             * Signature found, digest allocated.  Old method,
              * re-read the file and compute the digest
              */
             jcr->crypto.digest = digest;
@@ -1263,9 +1263,9 @@ static bool verify_signature(JCR *jcr, r_ctx &rctx)
              * Checksum the entire file
              * Make sure we don't modify JobBytes by saving and restoring it
              */
-            saved_bytes = jcr->JobBytes;                     
+            saved_bytes = jcr->JobBytes;
             if (find_one_file(jcr, jcr->ff, do_file_digest, jcr->last_fname, (dev_t)-1, 1) != 0) {
-               Jmsg(jcr, M_ERROR, 0, _("Digest one file failed for file: %s\n"), 
+               Jmsg(jcr, M_ERROR, 0, _("Digest one file failed for file: %s\n"),
                     jcr->last_fname);
                jcr->JobBytes = saved_bytes;
                goto bail_out;
@@ -1277,7 +1277,7 @@ static bool verify_signature(JCR *jcr, r_ctx &rctx)
              */
             if ((err = crypto_sign_verify(sig, keypair, digest)) != CRYPTO_ERROR_NONE) {
                Dmsg1(50, "Bad signature on %s\n", jcr->last_fname);
-               Jmsg2(jcr, M_ERROR, 0, _("Signature validation failed for file %s: ERR=%s\n"), 
+               Jmsg2(jcr, M_ERROR, 0, _("Signature validation failed for file %s: ERR=%s\n"),
                      jcr->last_fname, crypto_strerror(err));
                goto bail_out;
             }
@@ -1333,7 +1333,7 @@ bool sparse_data(JCR *jcr, BFILE *bfd, uint64_t *addr, char **data, uint32_t *le
          if (blseek(bfd, (boffset_t)*addr, SEEK_SET) < 0) {
             berrno be;
             Jmsg3(jcr, M_ERROR, 0, _("Seek to %s error on %s: ERR=%s\n"),
-                  edit_uint64(*addr, ec1), jcr->last_fname, 
+                  edit_uint64(*addr, ec1), jcr->last_fname,
                   be.bstrerror(bfd->berrno));
             return false;
          }
@@ -1419,7 +1419,7 @@ bool decompress_data(JCR *jcr, int32_t stream, char **data, uint32_t *length)
       uLong compress_len;
       int stat;
 
-      /* 
+      /*
        * NOTE! We only use uLong and Byte because they are
        * needed by the zlib routines, they should not otherwise
        * be used in Bacula.
@@ -1465,23 +1465,55 @@ static void unser_crypto_packet_len(RESTORE_CIPHER_CTX *ctx)
 
 bool store_data(JCR *jcr, BFILE *bfd, char *data, const int32_t length, bool win32_decomp)
 {
+   ssize_t wstat;
+
    if (jcr->crypto.digest) {
       crypto_digest_update(jcr->crypto.digest, (uint8_t *)data, length);
    }
    if (win32_decomp) {
       if (!processWin32BackupAPIBlock(bfd, data, length)) {
          berrno be;
-         Jmsg2(jcr, M_ERROR, 0, _("Write error in Win32 Block Decomposition on %s: %s\n"), 
+         Jmsg2(jcr, M_ERROR, 0, _("Write error in Win32 Block Decomposition on %s: %s\n"),
                jcr->last_fname, be.bstrerror(bfd->berrno));
          return false;
       }
-   } else if (bwrite(bfd, data, length) != (ssize_t)length) {
+   } else if ((wstat=bwrite(bfd, data, length)) != (ssize_t)length) {
       berrno be;
-      Jmsg2(jcr, M_ERROR, 0, _("Write error on %s: %s\n"), 
-            jcr->last_fname, be.bstrerror(bfd->berrno));
+      int type = M_ERROR;
+      int len = strlen(jcr->last_fname);
+      /*
+       * If this is the first write and the "file" is a directory
+       *  or a drive letter, then only issue a warning as we are
+       *  not able to reset the metadata, then continue.
+       * If the above is true and we have an error code 91
+       *  (directory not empty), supress the error entirely.
+       */
+      if (bfd->block == 0 && len >= 2 && (jcr->last_fname[len-1] == '/' ||
+          jcr->last_fname[len-1] == ':')) {
+         type = M_WARNING;
+         if (bfd->lerror == 91) {  /* Directory not empty */
+            type = 0;              /* suppress error */
+         }
+      }
+      if (type != 0) {
+         if (wstat >= 0) {
+            /* Insufficient bytes written */
+            Jmsg4(jcr, type, 0, _("Wrong write size error at %lld block=%d wanted=%d wrote=%d\n"),
+               bfd->total_bytes, bfd->block, length, wstat);
+         } else {
+            /* Error */
+            Jmsg6(jcr, type, 0, _("Write write error at %lld block=%d write_len=%d lerror=%d on %s: ERR=%s\n"),
+               bfd->total_bytes, bfd->block, length, bfd->lerror,
+               jcr->last_fname, be.bstrerror(bfd->berrno));
+         }
+      }
+
+      /* Ignore errors? */
+      if (type == M_WARNING || type == 0 || no_win32_write_errors) {
+         return true;
+      }
       return false;
    }
-
    return true;
 }
 
@@ -1516,16 +1548,16 @@ int32_t extract_data(JCR *jcr, BFILE *bfd, POOLMEM *buf, int32_t buflen,
        * crypto_cipher_update() will process only whole blocks,
        * buffering the remaining input.
        */
-      cipher_ctx->buf = check_pool_memory_size(cipher_ctx->buf, 
+      cipher_ctx->buf = check_pool_memory_size(cipher_ctx->buf,
                         cipher_ctx->buf_len + wsize + cipher_ctx->block_size);
 
       /*
        * Decrypt the input block
        */
-      if (!crypto_cipher_update(cipher_ctx->cipher, 
-                                (const u_int8_t *)wbuf, 
-                                wsize, 
-                                (u_int8_t *)&cipher_ctx->buf[cipher_ctx->buf_len], 
+      if (!crypto_cipher_update(cipher_ctx->cipher,
+                                (const u_int8_t *)wbuf,
+                                wsize,
+                                (u_int8_t *)&cipher_ctx->buf[cipher_ctx->buf_len],
                                 &decrypted_len)) {
          /*
           * Decryption failed. Shouldn't happen.
@@ -1597,7 +1629,7 @@ int32_t extract_data(JCR *jcr, BFILE *bfd, POOLMEM *buf, int32_t buflen,
       /* Move any remaining data to start of buffer */
       if (cipher_ctx->buf_len > 0) {
          Dmsg1(130, "Moving %u buffered bytes to start of buffer\n", cipher_ctx->buf_len);
-         memmove(cipher_ctx->buf, &cipher_ctx->buf[cipher_ctx->packet_len], 
+         memmove(cipher_ctx->buf, &cipher_ctx->buf[cipher_ctx->packet_len],
             cipher_ctx->buf_len);
       }
       /*
@@ -1624,7 +1656,7 @@ static bool close_previous_stream(JCR *jcr, r_ctx &rctx)
    if (rctx.extract) {
       if (rctx.size > 0 && !is_bopen(&rctx.bfd)) {
          Jmsg0(rctx.jcr, M_ERROR, 0, _("Logic error: output file should be open\n"));
-         Dmsg2(000, "=== logic error size=%d bopen=%d\n", rctx.size, 
+         Dmsg2(000, "=== logic error size=%d bopen=%d\n", rctx.size,
             is_bopen(&rctx.bfd));
       }
 
@@ -1687,7 +1719,7 @@ again:
    /*
     * Write out the remaining block and free the cipher context
     */
-   cipher_ctx->buf = check_pool_memory_size(cipher_ctx->buf, cipher_ctx->buf_len + 
+   cipher_ctx->buf = check_pool_memory_size(cipher_ctx->buf, cipher_ctx->buf_len +
                                             cipher_ctx->block_size);
 
    if (!crypto_cipher_finalize(cipher_ctx->cipher, (uint8_t *)&cipher_ctx->buf[cipher_ctx->buf_len],
@@ -1695,7 +1727,7 @@ again:
       /*
        * Writing out the final, buffered block failed. Shouldn't happen.
        */
-      Jmsg3(jcr, M_ERROR, 0, _("Decryption error. buf_len=%d decrypt_len=%d on file %s\n"), 
+      Jmsg3(jcr, M_ERROR, 0, _("Decryption error. buf_len=%d decrypt_len=%d on file %s\n"),
             cipher_ctx->buf_len, decrypted_len, jcr->last_fname);
    }
 
@@ -1743,7 +1775,7 @@ again:
     */
    if (cipher_ctx->buf_len > 0) {
       Dmsg1(130, "Moving %u buffered bytes to start of buffer\n", cipher_ctx->buf_len);
-      memmove(cipher_ctx->buf, &cipher_ctx->buf[cipher_ctx->packet_len], 
+      memmove(cipher_ctx->buf, &cipher_ctx->buf[cipher_ctx->packet_len],
          cipher_ctx->buf_len);
    }
    /*
diff --git a/src/filed/restore.h b/src/filed/restore.h
index 6a52268..779e49b 100644
--- a/src/filed/restore.h
+++ b/src/filed/restore.h
@@ -3,27 +3,15 @@
 
    Copyright (C) 2009 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef __RESTORE_H
diff --git a/src/filed/status.c b/src/filed/status.c
index 6700098..5747057 100644
--- a/src/filed/status.c
+++ b/src/filed/status.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula File Daemon Status routines
@@ -42,14 +30,12 @@ extern bool GetWindowsVersionString(char *buf, int maxsiz);
 
 
 /* Forward referenced functions */
-static void  list_terminated_jobs(STATUS_PKT *sp);
 static void  list_running_jobs(STATUS_PKT *sp);
 static void  list_status_header(STATUS_PKT *sp);
-static void sendit(const char *msg, int len, STATUS_PKT *sp);
-static const char *level_to_str(int level);
 
 /* Static variables */
-static char qstatus[] = ".status %s\n";
+static char qstatus1[] = ".status %127s\n";
+static char qstatus2[] = ".status %127s api=%d api_opts=%127s";
 
 static char OKqstatus[]   = "2000 OK .status\n";
 static char DotStatusJob[] = "JobId=%d JobStatus=%c JobErrors=%d\n";
@@ -72,9 +58,15 @@ void output_status(STATUS_PKT *sp)
 {
    list_status_header(sp);
    list_running_jobs(sp);
-   list_terminated_jobs(sp);
+   list_terminated_jobs(sp);    /* defined in lib/status.h */
 }
 
+#if defined(HAVE_LZO)
+static const bool have_lzo = true;
+#else
+static const bool have_lzo = false;
+#endif
+
 static void  list_status_header(STATUS_PKT *sp)
 {
    POOL_MEM msg(PM_MESSAGE);
@@ -82,8 +74,9 @@ static void  list_status_header(STATUS_PKT *sp)
    int len;
    char dt[MAX_TIME_LENGTH];
 
-   len = Mmsg(msg, _("%s Version: %s (%s) %s %s %s %s\n"), 
-              my_name, VERSION, BDATE, VSS, HOST_OS, DISTNAME, DISTVER);
+   len = Mmsg(msg, _("%s Version: %s (%s) %s %s %s %s\n"),
+              my_name, VERSION, BDATE, VSS, HOST_OS,
+              DISTNAME, DISTVER);
    sendit(msg.c_str(), len, sp);
    bstrftime_nc(dt, sizeof(dt), daemon_start_time);
    len = Mmsg(msg, _("Daemon started %s. Jobs: run=%d running=%d.\n"),
@@ -131,12 +124,13 @@ static void  list_status_header(STATUS_PKT *sp)
                  p_SetCurrentDirectoryA?"":"!",
                  p_SetCurrentDirectoryW?"":"!");
       sendit(msg.c_str(), len, sp);
-      len = Mmsg(msg, " %sGCDA,%sGCDW,%sGVPNW,%sGVNFVMPW\n",  
+      len = Mmsg(msg, " %sGCDA,%sGCDW,%sGVPNW,%sGVNFVMPW,%sLZO\n",
                  p_GetCurrentDirectoryA?"":"!",
                  p_GetCurrentDirectoryW?"":"!",
                  p_GetVolumePathNameW?"":"!",
-                 p_GetVolumeNameForVolumeMountPointW?"":"!");
-     sendit(msg.c_str(), len, sp);
+                 p_GetVolumeNameForVolumeMountPointW?"":"!",
+                 have_lzo?"":"!");
+      sendit(msg.c_str(), len, sp);
    }
 #endif
    len = Mmsg(msg, _(" Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
@@ -146,16 +140,25 @@ static void  list_status_header(STATUS_PKT *sp)
          edit_uint64_with_commas(sm_buffers, b4),
          edit_uint64_with_commas(sm_max_buffers, b5));
    sendit(msg.c_str(), len, sp);
-   len = Mmsg(msg, _(" Sizeof: boffset_t=%d size_t=%d debug=%d trace=%d "),
-                   sizeof(boffset_t), sizeof(size_t),
-              debug_level, get_trace());
+   len = Mmsg(msg, _(" Sizes: boffset_t=%d size_t=%d debug=%s trace=%d "
+                     "mode=%d,%d bwlimit=%skB/s\n"),
+              sizeof(boffset_t), sizeof(size_t),
+              edit_uint64(debug_level, b2), get_trace(), (int)DEVELOPER_MODE, (int)BEEF,
+              edit_uint64_with_commas(me->max_bandwidth_per_job/1024, b1));
    sendit(msg.c_str(), len, sp);
-   if (debug_level > 0 && bplugin_list->size() > 0) {
+   if (bplugin_list->size() > 0) {
       Plugin *plugin;
       int len;
-      pm_strcpy(msg, "Plugin: ");
+      pm_strcpy(msg, " Plugin: ");
       foreach_alist(plugin, bplugin_list) {
          len = pm_strcat(msg, plugin->file);
+         /* Print plugin version when debug activated */
+         if (debug_level > 0 && plugin->pinfo) {
+            pInfo *info = (pInfo *)plugin->pinfo;
+            pm_strcat(msg, "(");
+            pm_strcat(msg, NPRT(info->plugin_version));
+            len = pm_strcat(msg, ")");
+         }
          if (len > 80) {
             pm_strcat(msg, "\n   ");
          } else {
@@ -167,18 +170,20 @@ static void  list_status_header(STATUS_PKT *sp)
    }
 }
 
+/*
+ * List running jobs in for humans.
+ */
 static void  list_running_jobs_plain(STATUS_PKT *sp)
 {
-   int sec, bps;
+   int total_sec, inst_sec, total_bps, inst_bps;
    POOL_MEM msg(PM_MESSAGE);
-   char b1[32], b2[32], b3[32];
+   char b1[50], b2[50], b3[50], b4[50], b5[50];
    int len;
    bool found = false;
    JCR *njcr;
+   time_t now = time(NULL);
    char dt[MAX_TIME_LENGTH];
-   /*
-    * List running jobs
-    */
+
    Dmsg0(1000, "Begin status jcr loop.\n");
    len = Mmsg(msg, _("\nRunning Jobs:\n"));
    sendit(msg.c_str(), len, sp);
@@ -197,26 +202,58 @@ static void  list_running_jobs_plain(STATUS_PKT *sp)
                     njcr->JobId, njcr->Job);
          sendit(msg.c_str(), len, sp);
          len = Mmsg(msg, _("    %s%s %s Job started: %s\n"),
-                    vss, level_to_str(njcr->getJobLevel()), 
+                    vss, job_level_to_str(njcr->getJobLevel()),
                     job_type_to_str(njcr->getJobType()), dt);
       }
       sendit(msg.c_str(), len, sp);
       if (njcr->JobId == 0) {
          continue;
       }
-      sec = time(NULL) - njcr->start_time;
-      if (sec <= 0) {
-         sec = 1;
+      if (njcr->last_time == 0) {
+         njcr->last_time = njcr->start_time;
       }
-      bps = (int)(njcr->JobBytes / sec);
-      len = Mmsg(msg,  _("    Files=%s Bytes=%s Bytes/sec=%s Errors=%d\n"),
+      total_sec = now - njcr->start_time;
+      inst_sec = now - njcr->last_time;
+      if (total_sec <= 0) {
+         total_sec = 1;
+      }
+      if (inst_sec <= 0) {
+         inst_sec = 1;
+      }
+      /* Instanteous bps not smoothed */
+      inst_bps = (njcr->JobBytes - njcr->LastJobBytes) / inst_sec;
+      if (njcr->LastRate <= 0) {
+         njcr->LastRate = inst_bps;
+      }
+      /* Smooth the instantaneous bps a bit */
+      inst_bps = (2 * njcr->LastRate + inst_bps) / 3;
+      /* total bps (AveBytes/sec) since start of job */
+      total_bps = njcr->JobBytes / total_sec;
+      len = Mmsg(msg,  _("    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s Errors=%d\n"
+                         "    Bwlimit=%s\n"),
            edit_uint64_with_commas(njcr->JobFiles, b1),
            edit_uint64_with_commas(njcr->JobBytes, b2),
-           edit_uint64_with_commas(bps, b3),
-           njcr->JobErrors);
+           edit_uint64_with_commas(total_bps, b3),
+           edit_uint64_with_commas(inst_bps, b4),
+           njcr->JobErrors, edit_uint64_with_commas(njcr->max_bandwidth, b5));
       sendit(msg.c_str(), len, sp);
-      len = Mmsg(msg, _("    Files Examined=%s\n"),
-           edit_uint64_with_commas(njcr->num_files_examined, b1));
+
+      if (njcr->is_JobType(JT_RESTORE) && njcr->ExpectedFiles > 0) {
+         len = Mmsg(msg, _("    Files: Restored=%s Expected=%s Completed=%d%%\n"),
+            edit_uint64_with_commas(njcr->num_files_examined, b1),
+            edit_uint64_with_commas(njcr->ExpectedFiles, b2),
+            (100*njcr->num_files_examined)/njcr->ExpectedFiles);
+      } else {
+         len = Mmsg(msg, _("    Files: Examined=%s Backed up=%s\n"),
+            edit_uint64_with_commas(njcr->num_files_examined, b1),
+            edit_uint64_with_commas(njcr->JobFiles, b2));
+      }
+      /* Update only every 10 seconds */
+      if (now - njcr->last_time > 10) {
+         njcr->LastRate = inst_bps;
+         njcr->LastJobBytes = njcr->JobBytes;
+         njcr->last_time = now;
+      }
       sendit(msg.c_str(), len, sp);
       if (njcr->JobFiles > 0) {
          njcr->lock();
@@ -270,7 +307,7 @@ static void  list_running_jobs_api(STATUS_PKT *sp)
                     njcr->JobId, njcr->Job);
          sendit(msg.c_str(), len, sp);
          len = Mmsg(msg," VSS=%d\n Level=%c\n JobType=%c\n JobStarted=%s\n",
-                    vss, njcr->getJobLevel(), 
+                    vss, njcr->getJobLevel(),
                     njcr->getJobType(), dt);
       }
       sendit(msg.c_str(), len, sp);
@@ -317,114 +354,6 @@ static void  list_running_jobs(STATUS_PKT *sp)
    } else {
       list_running_jobs_plain(sp);
    }
-}  
-
-static void list_terminated_jobs(STATUS_PKT *sp)
-{
-   char dt[MAX_TIME_LENGTH], b1[30], b2[30];
-   char level[10];
-   struct s_last_job *je;
-   const char *msg;
-
-   if (!sp->api) {
-      msg =  _("\nTerminated Jobs:\n");
-      sendit(msg, strlen(msg), sp);
-   }
-
-   if (last_jobs->size() == 0) {
-      if (!sp->api) sendit(_("====\n"), 5, sp);
-      return;
-   }
-   lock_last_jobs_list();
-   if (!sp->api) {
-      msg =  _(" JobId  Level    Files      Bytes   Status   Finished        Name \n");
-      sendit(msg, strlen(msg), sp);
-      msg = _("======================================================================\n");
-      sendit(msg, strlen(msg), sp);
-   }
-   foreach_dlist(je, last_jobs) {
-      char JobName[MAX_NAME_LENGTH];
-      const char *termstat;
-      char buf[1000];
-
-      bstrftime_nc(dt, sizeof(dt), je->end_time);
-      switch (je->JobType) {
-      case JT_ADMIN:
-      case JT_RESTORE:
-         bstrncpy(level, "    ", sizeof(level));
-         break;
-      default:
-         bstrncpy(level, level_to_str(je->JobLevel), sizeof(level));
-         level[4] = 0;
-         break;
-      }
-      switch (je->JobStatus) {
-      case JS_Created:
-         termstat = _("Created");
-         break;
-      case JS_FatalError:
-      case JS_ErrorTerminated:
-         termstat = _("Error");
-         break;
-      case JS_Differences:
-         termstat = _("Diffs");
-         break;
-      case JS_Canceled:
-         termstat = _("Cancel");
-         break;
-      case JS_Terminated:
-         termstat = _("OK");
-         break;
-      default:
-         termstat = _("Other");
-         break;
-      }
-      bstrncpy(JobName, je->Job, sizeof(JobName));
-      /* There are three periods after the Job name */
-      char *p;
-      for (int i=0; i<3; i++) {
-         if ((p=strrchr(JobName, '.')) != NULL) {
-            *p = 0;
-         }
-      }
-      if (sp->api) {
-         bsnprintf(buf, sizeof(buf), _("%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"),
-            je->JobId,
-            level,
-            edit_uint64_with_commas(je->JobFiles, b1),
-            edit_uint64_with_suffix(je->JobBytes, b2),
-            termstat,
-            dt, JobName);
-      } else {
-         bsnprintf(buf, sizeof(buf), _("%6d  %-6s %8s %10s  %-7s  %-8s %s\n"),
-            je->JobId,
-            level,
-            edit_uint64_with_commas(je->JobFiles, b1),
-            edit_uint64_with_suffix(je->JobBytes, b2),
-            termstat,
-            dt, JobName);
-      }
-      sendit(buf, strlen(buf), sp);
-   }
-   if (!sp->api) sendit(_("====\n"), 5, sp);
-   unlock_last_jobs_list();
-}
-
-
-/*
- * Send to bsock (Director or Console)
- */
-static void sendit(const char *msg, int len, STATUS_PKT *sp)          
-{
-   if (sp->bs) {
-      BSOCK *user = sp->bs;
-      user->msg = check_pool_memory_size(user->msg, len+1);
-      memcpy(user->msg, msg, len+1);
-      user->msglen = len+1;
-      user->send();
-   } else {
-      sp->callback(msg, len, sp->context);
-   }
 }
 
 /*
@@ -458,17 +387,19 @@ int qstatus_cmd(JCR *jcr)
    sp.bs = dir;
    cmd = get_memory(dir->msglen+1);
 
-   if (sscanf(dir->msg, qstatus, cmd) != 1) {
-      pm_strcpy(&jcr->errmsg, dir->msg);
-      Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
-      dir->fsend(_("2900 Bad .status command, missing argument.\n"));
-      dir->signal(BNET_EOD);
-      free_memory(cmd);
-      return 0;
+   if (sscanf(dir->msg, qstatus2, cmd, &sp.api, sp.api_opts) != 3) {
+      if (sscanf(dir->msg, qstatus1, cmd) != 1) {
+         pm_strcpy(&jcr->errmsg, dir->msg);
+         Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
+         dir->fsend(_("2900 Bad .status command, missing argument.\n"));
+         dir->signal(BNET_EOD);
+         free_memory(cmd);
+         return 0;
+      }
    }
    unbash_spaces(cmd);
 
-   if (strcmp(cmd, "current") == 0) {
+   if (strcasecmp(cmd, "current") == 0) {
       dir->fsend(OKqstatus, cmd);
       foreach_jcr(njcr) {
          if (njcr->JobId != 0) {
@@ -476,7 +407,7 @@ int qstatus_cmd(JCR *jcr)
          }
       }
       endeach_jcr(njcr);
-   } else if (strcmp(cmd, "last") == 0) {
+   } else if (strcasecmp(cmd, "last") == 0) {
       dir->fsend(OKqstatus, cmd);
       if ((last_jobs) && (last_jobs->size() > 0)) {
          job = (s_last_job*)last_jobs->last();
@@ -489,8 +420,8 @@ int qstatus_cmd(JCR *jcr)
        sp.api = true;
        list_running_jobs(&sp);
    } else if (strcasecmp(cmd, "terminated") == 0) {
-       sp.api = true;
-       list_terminated_jobs(&sp);
+       sp.api = MAX(sp.api, 1);
+       list_terminated_jobs(&sp); /* defined in lib/status.h */
    } else {
       pm_strcpy(&jcr->errmsg, dir->msg);
       Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
@@ -504,109 +435,3 @@ int qstatus_cmd(JCR *jcr)
    free_memory(cmd);
    return 1;
 }
-
-/*
- * Convert Job Level into a string
- */
-static const char *level_to_str(int level)
-{
-   const char *str;
-
-   switch (level) {
-   case L_BASE:
-      str = _("Base");
-   case L_FULL:
-      str = _("Full");
-      break;
-   case L_INCREMENTAL:
-      str = _("Incremental");
-      break;
-   case L_DIFFERENTIAL:
-      str = _("Differential");
-      break;
-   case L_SINCE:
-      str = _("Since");
-      break;
-   case L_VERIFY_CATALOG:
-      str = _("Verify Catalog");
-      break;
-   case L_VERIFY_INIT:
-      str = _("Init Catalog");
-      break;
-   case L_VERIFY_VOLUME_TO_CATALOG:
-      str = _("Volume to Catalog");
-      break;
-   case L_VERIFY_DISK_TO_CATALOG:
-      str = _("Disk to Catalog");
-      break;
-   case L_VERIFY_DATA:
-      str = _("Data");
-      break;
-   case L_NONE:
-      str = " ";
-      break;
-   default:
-      str = _("Unknown Job Level");
-      break;
-   }
-   return str;
-}
-
-
-#if defined(HAVE_WIN32)
-int bacstat = 0;
-
-/*
- * Put message in Window List Box
- */
-char *bac_status(char *buf, int buf_len)
-{
-   JCR *njcr;
-   const char *termstat = _("Bacula Client: Idle");
-   struct s_last_job *job;
-   int stat = 0;                      /* Idle */
-
-   if (!last_jobs) {
-      goto done;
-   }
-   Dmsg0(1000, "Begin bac_status jcr loop.\n");
-   foreach_jcr(njcr) {
-      if (njcr->JobId != 0) {
-         stat = JS_Running;
-         termstat = _("Bacula Client: Running");
-         break;
-      }
-   }
-   endeach_jcr(njcr);
-
-   if (stat != 0) {
-      goto done;
-   }
-   if (last_jobs->size() > 0) {
-      job = (struct s_last_job *)last_jobs->last();
-      stat = job->JobStatus;
-      switch (job->JobStatus) {
-      case JS_Canceled:
-         termstat = _("Bacula Client: Last Job Canceled");
-         break;
-      case JS_ErrorTerminated:
-      case JS_FatalError:
-         termstat = _("Bacula Client: Last Job Failed");
-         break;
-      default:
-         if (job->Errors) {
-            termstat = _("Bacula Client: Last Job had Warnings");
-         }
-         break;
-      }
-   }
-   Dmsg0(1000, "End bac_status jcr loop.\n");
-done:
-   bacstat = stat;
-   if (buf) {
-      bstrncpy(buf, termstat, buf_len);
-   }
-   return buf;
-}
-
-#endif /* HAVE_WIN32 */
diff --git a/src/filed/verify.c b/src/filed/verify.c
index 8219ab3..d4350f0 100644
--- a/src/filed/verify.c
+++ b/src/filed/verify.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula File Daemon  verify.c  Verify files.
@@ -107,7 +95,7 @@ static int verify_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    case FT_DIRBEGIN:
       jcr->num_files_examined--;      /* correct file count */
       return 1;                       /* ignored */
-   case FT_REPARSE: 
+   case FT_REPARSE:
    case FT_JUNCTION:
    case FT_DIREND:
       Dmsg1(30, "FT_DIR saving: %s\n", ff_pkt->fname);
@@ -211,7 +199,7 @@ static int verify_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    }
    Dmsg2(20, "bfiled>bdird: attribs len=%d: msg=%s\n", dir->msglen, dir->msg);
    if (!stat) {
-      Jmsg(jcr, M_FATAL, 0, _("Network error in send to Director: ERR=%s\n"), bnet_strerror(dir));
+      Jmsg(jcr, M_FATAL, 0, _("Network error in send to Director: ERR=%s\n"), dir->bstrerror());
       return 0;
    }
 
@@ -254,7 +242,7 @@ static int verify_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          uint32_t size;
 
          size = sizeof(md);
-         
+
          if (digest_file(jcr, ff_pkt, digest) != 0) {
             jcr->JobErrors++;
             goto good_rtn;
@@ -263,7 +251,7 @@ static int verify_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          if (crypto_digest_finalize(digest, (uint8_t *)md, &size)) {
             char *digest_buf;
             const char *digest_name;
-            
+
             digest_buf = (char *)malloc(BASE64_SIZE(size));
             digest_name = crypto_digest_name(digest);
 
@@ -368,11 +356,11 @@ static int read_digest(BFILE *bfd, DIGEST *digest, JCR *jcr)
             continue;                 /* skip block of zeros */
          }
       }
-      
+
       crypto_digest_update(digest, (uint8_t *)buf, n);
 
       /* Can be used by BaseJobs or with accurate, update only for Verify
-       * jobs 
+       * jobs
        */
       if (jcr->getJobType() == JT_VERIFY) {
          jcr->JobBytes += n;
diff --git a/src/filed/verify_vol.c b/src/filed/verify_vol.c
index cae6a3d..aba6650 100644
--- a/src/filed/verify_vol.c
+++ b/src/filed/verify_vol.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula File Daemon  verify-vol.c Verify files on a Volume
@@ -76,7 +64,7 @@ void do_verify_volume(JCR *jcr)
    } else {
       buf_size = 0;                   /* use default */
    }
-   if (!bnet_set_buffer_size(sd, buf_size, BNET_SETBUF_WRITE)) {
+   if (!sd->set_buffer_size(buf_size, BNET_SETBUF_WRITE)) {
       jcr->setJobStatus(JS_FatalError);
       return;
    }
@@ -97,20 +85,20 @@ void do_verify_volume(JCR *jcr)
          Jmsg1(jcr, M_FATAL, 0, _("Record header scan error: %s\n"), sd->msg);
          goto bail_out;
       }
-      Dmsg2(30, "Got hdr: FilInx=%d Stream=%d.\n", file_index, stream);
+      Dmsg3(30, "Got hdr: FilInx=%d Stream=%d size=%d.\n", file_index, stream, size);
 
       /*
        * Now we expect the Stream Data
        */
       if (bget_msg(sd) < 0) {
-         Jmsg1(jcr, M_FATAL, 0, _("Data record error. ERR=%s\n"), bnet_strerror(sd));
+         Jmsg1(jcr, M_FATAL, 0, _("Data record error. ERR=%s\n"), sd->bstrerror());
          goto bail_out;
       }
       if (size != ((uint32_t)sd->msglen)) {
          Jmsg2(jcr, M_FATAL, 0, _("Actual data size %d not same as header %d\n"), sd->msglen, size);
          goto bail_out;
       }
-      Dmsg1(30, "Got stream data, len=%d\n", sd->msglen);
+      Dmsg2(30, "Got stream data %s, len=%d\n", stream_to_ascii(stream), sd->msglen);
 
       /* File Attributes stream */
       switch (stream) {
@@ -157,7 +145,7 @@ void do_verify_volume(JCR *jcr)
          }
          *fp = *ap++;                 /* terminate filename & point to attribs */
 
-         Dmsg1(200, "Attr=%s\n", ap);
+         Dmsg2(100, "File=%s Attr=%s\n", fname, ap);
          /* Skip to Link name */
          if (type == FT_LNK || type == FT_LNKSAVED) {
             lp = ap;
@@ -188,22 +176,22 @@ void do_verify_volume(JCR *jcr)
          /* Send file attributes to Director */
          Dmsg2(200, "send ATTR inx=%d fname=%s\n", jcr->JobFiles, fname);
          if (type == FT_LNK || type == FT_LNKSAVED) {
-            stat = bnet_fsend(dir, "%d %d %s %s%c%s%c%s%c", jcr->JobFiles,
+            stat = dir->fsend("%d %d %s %s%c%s%c%s%c", jcr->JobFiles,
                           STREAM_UNIX_ATTRIBUTES, "pinsug5", fname,
                           0, ap, 0, lname, 0);
          /* for a deleted record, we set fileindex=0 */
          } else if (type == FT_DELETED)  {
-            stat = bnet_fsend(dir,"%d %d %s %s%c%s%c%c", 0,
+            stat = dir->fsend("%d %d %s %s%c%s%c%c", 0,
                           STREAM_UNIX_ATTRIBUTES, "pinsug5", fname,
                           0, ap, 0, 0);
          } else {
-            stat = bnet_fsend(dir,"%d %d %s %s%c%s%c%c", jcr->JobFiles,
+            stat = dir->fsend("%d %d %s %s%c%s%c%c", jcr->JobFiles,
                           STREAM_UNIX_ATTRIBUTES, "pinsug5", fname,
                           0, ap, 0, 0);
          }
          Dmsg2(200, "bfiled>bdird: attribs len=%d: msg=%s\n", dir->msglen, dir->msg);
          if (!stat) {
-            Jmsg(jcr, M_FATAL, 0, _("Network error in send to Director: ERR=%s\n"), bnet_strerror(dir));
+            Jmsg(jcr, M_FATAL, 0, _("Network error in send to Director: ERR=%s\n"), dir->bstrerror());
             goto bail_out;
          }
          break;
@@ -211,7 +199,7 @@ void do_verify_volume(JCR *jcr)
       case STREAM_MD5_DIGEST:
          bin_to_base64(digest, sizeof(digest), (char *)sd->msg, CRYPTO_DIGEST_MD5_SIZE, true);
          Dmsg2(400, "send inx=%d MD5=%s\n", jcr->JobFiles, digest);
-         bnet_fsend(dir, "%d %d %s *MD5-%d*", jcr->JobFiles, STREAM_MD5_DIGEST, digest,
+         dir->fsend("%d %d %s *MD5-%d*", jcr->JobFiles, STREAM_MD5_DIGEST, digest,
                     jcr->JobFiles);
          Dmsg2(20, "bfiled>bdird: MD5 len=%d: msg=%s\n", dir->msglen, dir->msg);
          break;
@@ -219,7 +207,7 @@ void do_verify_volume(JCR *jcr)
       case STREAM_SHA1_DIGEST:
          bin_to_base64(digest, sizeof(digest), (char *)sd->msg, CRYPTO_DIGEST_SHA1_SIZE, true);
          Dmsg2(400, "send inx=%d SHA1=%s\n", jcr->JobFiles, digest);
-         bnet_fsend(dir, "%d %d %s *SHA1-%d*", jcr->JobFiles, STREAM_SHA1_DIGEST,
+         dir->fsend("%d %d %s *SHA1-%d*", jcr->JobFiles, STREAM_SHA1_DIGEST,
                     digest, jcr->JobFiles);
          Dmsg2(20, "bfiled>bdird: SHA1 len=%d: msg=%s\n", dir->msglen, dir->msg);
          break;
@@ -227,7 +215,7 @@ void do_verify_volume(JCR *jcr)
       case STREAM_SHA256_DIGEST:
          bin_to_base64(digest, sizeof(digest), (char *)sd->msg, CRYPTO_DIGEST_SHA256_SIZE, true);
          Dmsg2(400, "send inx=%d SHA256=%s\n", jcr->JobFiles, digest);
-         bnet_fsend(dir, "%d %d %s *SHA256-%d*", jcr->JobFiles, STREAM_SHA256_DIGEST,
+         dir->fsend("%d %d %s *SHA256-%d*", jcr->JobFiles, STREAM_SHA256_DIGEST,
                     digest, jcr->JobFiles);
          Dmsg2(20, "bfiled>bdird: SHA256 len=%d: msg=%s\n", dir->msglen, dir->msg);
          break;
@@ -235,11 +223,21 @@ void do_verify_volume(JCR *jcr)
       case STREAM_SHA512_DIGEST:
          bin_to_base64(digest, sizeof(digest), (char *)sd->msg, CRYPTO_DIGEST_SHA512_SIZE, true);
          Dmsg2(400, "send inx=%d SHA512=%s\n", jcr->JobFiles, digest);
-         bnet_fsend(dir, "%d %d %s *SHA512-%d*", jcr->JobFiles, STREAM_SHA512_DIGEST,
+         dir->fsend("%d %d %s *SHA512-%d*", jcr->JobFiles, STREAM_SHA512_DIGEST,
                     digest, jcr->JobFiles);
          Dmsg2(20, "bfiled>bdird: SHA512 len=%d: msg=%s\n", dir->msglen, dir->msg);
          break;
 
+      /*
+       * Restore stream object is counted, but not restored here
+       */
+      case STREAM_RESTORE_OBJECT:
+         jcr->lock();
+         jcr->JobFiles++;
+         jcr->num_files_examined++;
+         jcr->unlock();
+         break;
+
       /* Ignore everything else */
       default:
          break;
diff --git a/src/filed/xattr.c b/src/filed/xattr.c
index 21a6365..64d3f9c 100644
--- a/src/filed/xattr.c
+++ b/src/filed/xattr.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2008-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2008-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /**
  * Functions to handle Extended Attributes for bacula.
@@ -167,7 +155,7 @@ static void xattr_drop_internal_table(alist *xattr_value_list)
  *    value - The actual content of the extended attribute
  *
  * This is repeated 1 or more times.
- * 
+ *
  */
 static uint32_t serialize_xattr_stream(JCR *jcr,
                                        uint32_t expected_serialize_len,
@@ -480,6 +468,7 @@ static bxattr_exit_code aix_xattr_build_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));
+      memset(current_xattr, 0, sizeof(xattr_t));
       current_xattr->magic = XATTR_MAGIC;
       expected_serialize_len += sizeof(current_xattr->magic);
 
@@ -778,6 +767,7 @@ static bxattr_exit_code irix_xattr_build_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));
+            memset(current_xattr, 0, sizeof(xattr_t));
             current_xattr->magic = XATTR_MAGIC;
             expected_serialize_len += sizeof(current_xattr->magic);
 
@@ -1741,8 +1731,8 @@ 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));
+         memset(current_xattr, 0, sizeof(xattr_t));
          current_xattr->magic = XATTR_MAGIC;
-         current_xattr->value = NULL;
          expected_serialize_len += sizeof(current_xattr->magic);
 
          /*
@@ -2145,6 +2135,7 @@ static bxattr_exit_code tru64_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));
+      memset(current_xattr, 0, sizeof(xattr_t));
       current_xattr->magic = XATTR_MAGIC;
       expected_serialize_len += sizeof(current_xattr->magic);
 
@@ -2712,7 +2703,7 @@ static bxattr_exit_code solaris_save_xattrs(JCR *jcr, const char *xattr_namespac
  * This is stored as an opaque stream of bytes with the following encoding:
  *
  * <xattr_name>\0<stat_buffer>\0<acl_string>\0<actual_xattr_data>
- * 
+ *
  * or for a hardlinked or symlinked attribute
  *
  * <xattr_name>\0<stat_buffer>\0<xattr_link_source>\0
@@ -3008,7 +2999,7 @@ static bxattr_exit_code solaris_save_xattr(JCR *jcr, int fd, const char *xattr_n
     * available on this extended attribute.
     */
    retval = solaris_save_xattrs(jcr, xattr_namespace, attrname);
-      
+
    /*
     * The recursive call could change our working dir so change back to the wanted workdir.
     */
@@ -3047,7 +3038,7 @@ static bxattr_exit_code solaris_save_xattrs(JCR *jcr, const char *xattr_namespac
    struct dirent *dp;
    char current_xattr_namespace[PATH_MAX];
    bxattr_exit_code retval = bxattr_exit_error;
- 
+
    /*
     * Determine what argument to use. Use attr_parent when set
     * (recursive call) or jcr->last_fname for first call. Also save
diff --git a/src/filed/xattr.h b/src/filed/xattr.h
index b61ec11..131e6c6 100644
--- a/src/filed/xattr.h
+++ b/src/filed/xattr.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef __XATTR_H
diff --git a/src/fileopts.h b/src/fileopts.h
index 4767a5d..5b3e87b 100644
--- a/src/fileopts.h
+++ b/src/fileopts.h
@@ -1,32 +1,20 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- * File types 
+ * File types
  *
  *     Kern Sibbald MMI
  *
@@ -37,7 +25,7 @@
 #ifndef __BFILEOPTS_H
 #define __BFILEOPTS_H
 
-/*  
+/*
  * Options saved int "options" of the include/exclude lists.
  * They are directly jammed ito  "flag" of ff packet
  */
diff --git a/src/filetypes.h b/src/filetypes.h
index ea79966..9d50586 100644
--- a/src/filetypes.h
+++ b/src/filetypes.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /**
  * Stream definitions.  Split from baconfig.h Nov 2010
@@ -63,7 +51,7 @@
 #define FT_NOOPEN    15               /* Could not open directory */
 #define FT_RAW       16               /* Raw block device */
 #define FT_FIFO      17               /* Raw fifo device */
-/** 
+/**
  * The DIRBEGIN packet is sent to the FD file processing routine so
  * that it can filter packets, but otherwise, it is not used
  * or saved */
diff --git a/src/findlib/Makefile.in b/src/findlib/Makefile.in
index 7946ec6..cd3c2a3 100644
--- a/src/findlib/Makefile.in
+++ b/src/findlib/Makefile.in
@@ -25,9 +25,8 @@ dummy:
 INCLUDE_FILES = bfile.h find.h protos.h 
 
 #
-LIBBACFIND_SRCS = find.c match.c find_one.c attribs.c create_file.c \
-		  bfile.c drivetype.c enable_priv.c fstype.c mkpath.c \
-		  savecwd.c
+LIBBACFIND_SRCS = find.c match.c find_one.c file_attrs.c file_create.c \
+		  bfile.c drivetype.c priv.c fstype.c makepath.c
 LIBBACFIND_OBJS = $(LIBBACFIND_SRCS:.c=.o)
 LIBBACFIND_LOBJS = $(LIBBACFIND_SRCS:.c=.lo)
 
diff --git a/src/findlib/bfile.c b/src/findlib/bfile.c
index e315675..663e932 100644
--- a/src/findlib/bfile.c
+++ b/src/findlib/bfile.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula low level File I/O routines.  This routine simulates
@@ -39,7 +27,7 @@
 
 const int dbglvl = 200;
 
-int       (*plugin_bopen)(BFILE *bfd, const char *fname, int flags, mode_t mode) = NULL;
+int       (*plugin_bopen)(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode) = NULL;
 int       (*plugin_bclose)(BFILE *bfd) = NULL;
 ssize_t   (*plugin_bread)(BFILE *bfd, void *buf, size_t count) = NULL;
 ssize_t   (*plugin_bwrite)(BFILE *bfd, void *buf, size_t count) = NULL;
@@ -153,6 +141,12 @@ const char *stream_to_ascii(int stream)
       return _("Encrypted Win32 Compressed data");
    case STREAM_ENCRYPTED_MACOS_FORK_DATA:
       return _("Encrypted MacOS fork data");
+   case STREAM_PLUGIN_NAME:
+      return _("Plugin Name");
+   case STREAM_PLUGIN_DATA:
+      return _("Plugin Data");
+   case STREAM_RESTORE_OBJECT:
+      return _("Restore Object");
    case STREAM_ACL_AIX_TEXT:
       return _("AIX Specific ACL attribs");
    case STREAM_ACL_DARWIN_ACCESS_ACL:
@@ -219,7 +213,7 @@ const char *stream_to_ascii(int stream)
    }
 }
 
-/**   
+/**
  *  Convert a 64 bit little endian to a big endian
  */
 void int64_LE2BE(int64_t* pBE, const int64_t v)
@@ -236,7 +230,7 @@ void int64_LE2BE(int64_t* pBE, const int64_t v)
          rv[i] = pv[7 - i];
       }
       memcpy(pBE, &rv, sizeof(int64_t));
-   }    
+   }
 }
 
 /**
@@ -256,16 +250,16 @@ void int32_LE2BE(int32_t* pBE, const int32_t v)
          rv[i] = pv[3 - i];
       }
       memcpy(pBE, &rv, sizeof(int32_t));
-   }    
+   }
 }
 
 
-/**
+/*
  *  Read a BackupRead block and pull out the file data
  */
 bool processWin32BackupAPIBlock (BFILE *bfd, void *pBuffer, ssize_t dwSize)
 {
-   /* pByte contains the buffer 
+   /* pByte contains the buffer
       dwSize the len to be processed.  function assumes to be
       called in successive incremental order over the complete
       BackupRead stream beginning at pos 0 and ending at the end.
@@ -277,9 +271,9 @@ bool processWin32BackupAPIBlock (BFILE *bfd, void *pBuffer, ssize_t dwSize)
    int64_t dwDataLen;
 
    /* Win32 Stream Header size without name of stream.
-    * = sizeof (WIN32_STREAM_ID)- sizeof(WCHAR*); 
+    * = sizeof (WIN32_STREAM_ID)- sizeof(WCHAR*);
     */
-   int32_t dwSizeHeader = 20; 
+   int32_t dwSizeHeader = 20;
 
    do {
       if (pContext->liNextHeader >= dwSize) {
@@ -303,7 +297,7 @@ bool processWin32BackupAPIBlock (BFILE *bfd, void *pBuffer, ssize_t dwSize)
 
          if (pContext->liNextHeader < 0) {
             /* start of header was before this block, so we
-             * continue with the part in the current block 
+             * continue with the part in the current block
              */
             dwOffsetTarget = -pContext->liNextHeader;
             dwOffsetSource = 0;
@@ -318,7 +312,7 @@ bool processWin32BackupAPIBlock (BFILE *bfd, void *pBuffer, ssize_t dwSize)
 
          if (dwHeaderPartLen <= dwSize-dwOffsetSource) {
             /* header (or rest of header) is completely available
-               in current block 
+               in current block
              */
             bHeaderIsComplete = true;
          } else {
@@ -333,7 +327,7 @@ bool processWin32BackupAPIBlock (BFILE *bfd, void *pBuffer, ssize_t dwSize)
          /* recalculate position of next header */
          if (bHeaderIsComplete) {
             /* convert stream name size (32 bit little endian) to machine type */
-            int32_t dwNameSize; 
+            int32_t dwNameSize;
             int32_LE2BE (&dwNameSize, pContext->header_stream.dwStreamNameSize);
             dwDataOffset = dwNameSize+pContext->liNextHeader+dwSizeHeader;
 
@@ -360,475 +354,6 @@ bool processWin32BackupAPIBlock (BFILE *bfd, void *pBuffer, ssize_t dwSize)
 
 
 
-/* ===============================================================
- *
- *            W I N D O W S
- *
- * ===============================================================
- */
-
-#if defined(HAVE_WIN32)
-
-void unix_name_to_win32(POOLMEM **win32_name, char *name);
-extern "C" HANDLE get_osfhandle(int fd);
-
-
-void binit(BFILE *bfd)
-{
-   memset(bfd, 0, sizeof(BFILE));
-   bfd->fid = -1;
-   bfd->mode = BF_CLOSED;
-   bfd->use_backup_api = have_win32_api();
-   bfd->cmd_plugin = false;
-}
-
-/*
- * Enables using the Backup API (win32_data).
- *   Returns 1 if function worked
- *   Returns 0 if failed (i.e. do not have Backup API on this machine)
- */
-bool set_win32_backup(BFILE *bfd)
-{
-   /* We enable if possible here */
-   bfd->use_backup_api = have_win32_api();
-   return bfd->use_backup_api;
-}
-
-
-bool set_portable_backup(BFILE *bfd)
-{
-   bfd->use_backup_api = false;
-   return true;
-}
-
-bool set_cmd_plugin(BFILE *bfd, JCR *jcr)
-{
-   bfd->cmd_plugin = true;
-   bfd->jcr = jcr;
-   return true;
-}
-
-/*
- * Return 1 if we are NOT using Win32 BackupWrite()
- * return 0 if are
- */
-bool is_portable_backup(BFILE *bfd)
-{
-   return !bfd->use_backup_api;
-}
-
-bool have_win32_api()
-{
-   return p_BackupRead && p_BackupWrite;
-}
-
-
-/*
- * Return true  if we support the stream
- *        false if we do not support the stream
- *
- *  This code is running under Win32, so we
- *    do not need #ifdef on MACOS ...
- */
-bool is_restore_stream_supported(int stream)
-{
-   switch (stream) {
-
-/* Streams known not to be supported */
-#ifndef HAVE_LIBZ
-   case STREAM_GZIP_DATA:
-   case STREAM_SPARSE_GZIP_DATA:
-   case STREAM_WIN32_GZIP_DATA:
-#endif
-#ifndef HAVE_LZO
-   case STREAM_COMPRESSED_DATA:
-   case STREAM_SPARSE_COMPRESSED_DATA:
-   case STREAM_WIN32_COMPRESSED_DATA:
-   case STREAM_ENCRYPTED_FILE_COMPRESSED_DATA:
-   case STREAM_ENCRYPTED_WIN32_COMPRESSED_DATA:
-#endif
-   case STREAM_MACOS_FORK_DATA:
-   case STREAM_HFSPLUS_ATTRIBUTES:
-   case STREAM_ENCRYPTED_MACOS_FORK_DATA:
-      return false;
-
-   /* Known streams */
-#ifdef HAVE_LIBZ
-   case STREAM_GZIP_DATA:
-   case STREAM_SPARSE_GZIP_DATA:
-   case STREAM_WIN32_GZIP_DATA:
-#endif
-#ifdef HAVE_LZO
-   case STREAM_COMPRESSED_DATA:
-   case STREAM_SPARSE_COMPRESSED_DATA:
-   case STREAM_WIN32_COMPRESSED_DATA:
-#endif
-   case STREAM_WIN32_DATA:
-   case STREAM_UNIX_ATTRIBUTES:
-   case STREAM_FILE_DATA:
-   case STREAM_MD5_DIGEST:
-   case STREAM_UNIX_ATTRIBUTES_EX:
-   case STREAM_SPARSE_DATA:
-   case STREAM_PROGRAM_NAMES:
-   case STREAM_PROGRAM_DATA:
-   case STREAM_SHA1_DIGEST:
-#ifdef HAVE_SHA2
-   case STREAM_SHA256_DIGEST:
-   case STREAM_SHA512_DIGEST:
-#endif
-#ifdef HAVE_CRYPTO
-   case STREAM_SIGNED_DIGEST:
-   case STREAM_ENCRYPTED_FILE_DATA:
-   case STREAM_ENCRYPTED_FILE_GZIP_DATA:
-   case STREAM_ENCRYPTED_WIN32_DATA:
-   case STREAM_ENCRYPTED_WIN32_GZIP_DATA:
-#ifdef HAVE_LZO
-   case STREAM_ENCRYPTED_FILE_COMPRESSED_DATA:
-   case STREAM_ENCRYPTED_WIN32_COMPRESSED_DATA:
-#endif
-#endif     /* !HAVE_CRYPTO */
-   case 0:                            /* compatibility with old tapes */
-      return true;
-   }
-   return false;
-}
-
-HANDLE bget_handle(BFILE *bfd)
-{
-   return bfd->fh;
-}
-
-int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode)
-{
-   POOLMEM *win32_fname;
-   POOLMEM *win32_fname_wchar;
-
-   DWORD dwaccess, dwflags, dwshare;
-
-   /* Convert to Windows path format */
-   win32_fname = get_pool_memory(PM_FNAME);
-   win32_fname_wchar = get_pool_memory(PM_FNAME);
-   
-   unix_name_to_win32(&win32_fname, (char *)fname);
-
-   if (bfd->cmd_plugin && plugin_bopen) {
-      int rtnstat;
-      Dmsg1(50, "call plugin_bopen fname=%s\n", fname);
-      rtnstat = plugin_bopen(bfd, fname, flags, mode);
-      Dmsg1(50, "return from plugin_bopen status=%d\n", rtnstat);
-      if (rtnstat >= 0) {
-         if (flags & O_CREAT || flags & O_WRONLY) {   /* Open existing for write */
-            Dmsg1(50, "plugin_open for write OK file=%s.\n", fname);
-            bfd->mode = BF_WRITE;
-         } else {
-            Dmsg1(50, "plugin_open for read OK file=%s.\n", fname);
-            bfd->mode = BF_READ;
-         }
-      } else {
-         bfd->mode = BF_CLOSED;
-         Dmsg1(000, "==== plugin_bopen returned bad status=%d\n", rtnstat);
-      }
-      free_pool_memory(win32_fname_wchar);
-      free_pool_memory(win32_fname);
-      return bfd->mode == BF_CLOSED ? -1 : 1;
-   }
-   Dmsg0(50, "=== NO plugin\n");
-
-   if (!(p_CreateFileA || p_CreateFileW)) {
-      Dmsg0(50, "No CreateFileA and no CreateFileW!!!!!\n");
-      return 0;
-   }
-
-   if (p_CreateFileW && p_MultiByteToWideChar) {
-      make_win32_path_UTF8_2_wchar(&win32_fname_wchar, fname);
-   }
-
-   if (flags & O_CREAT) {             /* Create */
-      if (bfd->use_backup_api) {
-         dwaccess = GENERIC_WRITE|FILE_ALL_ACCESS|WRITE_OWNER|WRITE_DAC|ACCESS_SYSTEM_SECURITY;
-         dwflags = FILE_FLAG_BACKUP_SEMANTICS;
-      } else {
-         dwaccess = GENERIC_WRITE;
-         dwflags = 0;
-      }
-
-      if (p_CreateFileW && p_MultiByteToWideChar) {   
-         // unicode open for create write
-         Dmsg1(100, "Create CreateFileW=%s\n", win32_fname);
-         bfd->fh = p_CreateFileW((LPCWSTR)win32_fname_wchar,
-                dwaccess,                /* Requested access */
-                0,                       /* Shared mode */
-                NULL,                    /* SecurityAttributes */
-                CREATE_ALWAYS,           /* CreationDisposition */
-                dwflags,                 /* Flags and attributes */
-                NULL);                   /* TemplateFile */
-      } else {
-         // ascii open
-         Dmsg1(100, "Create CreateFileA=%s\n", win32_fname);
-         bfd->fh = p_CreateFileA(win32_fname,
-                dwaccess,                /* Requested access */
-                0,                       /* Shared mode */
-                NULL,                    /* SecurityAttributes */
-                CREATE_ALWAYS,           /* CreationDisposition */
-                dwflags,                 /* Flags and attributes */
-                NULL);                   /* TemplateFile */
-      }
-
-      bfd->mode = BF_WRITE;
-
-   } else if (flags & O_WRONLY) {     /* Open existing for write */
-      if (bfd->use_backup_api) {
-         dwaccess = GENERIC_WRITE|WRITE_OWNER|WRITE_DAC;
-         dwflags = FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT;
-      } else {
-         dwaccess = GENERIC_WRITE;
-         dwflags = 0;
-      }
-
-      if (p_CreateFileW && p_MultiByteToWideChar) {   
-         // unicode open for open existing write
-         Dmsg1(100, "Write only CreateFileW=%s\n", win32_fname);
-         bfd->fh = p_CreateFileW((LPCWSTR)win32_fname_wchar,
-                dwaccess,                /* Requested access */
-                0,                       /* Shared mode */
-                NULL,                    /* SecurityAttributes */
-                OPEN_EXISTING,           /* CreationDisposition */
-                dwflags,                 /* Flags and attributes */
-                NULL);                   /* TemplateFile */
-      } else {
-         // ascii open
-         Dmsg1(100, "Write only CreateFileA=%s\n", win32_fname);
-         bfd->fh = p_CreateFileA(win32_fname,
-                dwaccess,                /* Requested access */
-                0,                       /* Shared mode */
-                NULL,                    /* SecurityAttributes */
-                OPEN_EXISTING,           /* CreationDisposition */
-                dwflags,                 /* Flags and attributes */
-                NULL);                   /* TemplateFile */
-
-      }
-
-      bfd->mode = BF_WRITE;
-
-   } else {                           /* Read */
-      if (bfd->use_backup_api) {
-         dwaccess = GENERIC_READ|READ_CONTROL|ACCESS_SYSTEM_SECURITY;
-         dwflags = FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_SEQUENTIAL_SCAN |
-                   FILE_FLAG_OPEN_REPARSE_POINT;
-         dwshare = FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE;
-      } else {
-         dwaccess = GENERIC_READ;
-         dwflags = 0;
-         dwshare = FILE_SHARE_READ|FILE_SHARE_WRITE;
-      }
-
-      if (p_CreateFileW && p_MultiByteToWideChar) {   
-         // unicode open for open existing read
-         Dmsg1(100, "Read CreateFileW=%s\n", win32_fname);
-         bfd->fh = p_CreateFileW((LPCWSTR)win32_fname_wchar,
-                dwaccess,                /* Requested access */
-                dwshare,                 /* Share modes */
-                NULL,                    /* SecurityAttributes */
-                OPEN_EXISTING,           /* CreationDisposition */
-                dwflags,                 /* Flags and attributes */
-                NULL);                   /* TemplateFile */
-      } else {
-         // ascii open 
-         Dmsg1(100, "Read CreateFileA=%s\n", win32_fname);
-         bfd->fh = p_CreateFileA(win32_fname,
-                dwaccess,                /* Requested access */
-                dwshare,                 /* Share modes */
-                NULL,                    /* SecurityAttributes */
-                OPEN_EXISTING,           /* CreationDisposition */
-                dwflags,                 /* Flags and attributes */
-                NULL);                   /* TemplateFile */
-      }
-
-      bfd->mode = BF_READ;
-   }
-
-   if (bfd->fh == INVALID_HANDLE_VALUE) {
-      bfd->lerror = GetLastError();
-      bfd->berrno = b_errno_win32;
-      errno = b_errno_win32;
-      bfd->mode = BF_CLOSED;
-   }
-   bfd->errmsg = NULL;
-   bfd->lpContext = NULL;
-   bfd->win32DecompContext.bIsInData = false;
-   bfd->win32DecompContext.liNextHeader = 0;
-   free_pool_memory(win32_fname_wchar);
-   free_pool_memory(win32_fname);
-   return bfd->mode == BF_CLOSED ? -1 : 1;
-}
-
-/*
- * Returns  0 on success
- *         -1 on error
- */
-int bclose(BFILE *bfd)
-{
-   int stat = 0;
-
-   if (bfd->mode == BF_CLOSED) {
-      Dmsg0(50, "=== BFD already closed.\n");
-      return 0;
-   }
-
-   if (bfd->cmd_plugin && plugin_bclose) {
-      stat = plugin_bclose(bfd);
-      Dmsg0(50, "==== BFD closed!!!\n");
-      goto all_done;
-   }
-
-   /*
-    * We need to tell the API to release the buffer it
-    *  allocated in lpContext.  We do so by calling the
-    *  API one more time, but with the Abort bit set.
-    */
-   if (bfd->use_backup_api && bfd->mode == BF_READ) {
-      BYTE buf[10];
-      if (bfd->lpContext && !p_BackupRead(bfd->fh,
-              buf,                    /* buffer */
-              (DWORD)0,               /* bytes to read */
-              &bfd->rw_bytes,         /* bytes read */
-              1,                      /* Abort */
-              1,                      /* ProcessSecurity */
-              &bfd->lpContext)) {     /* Read context */
-         errno = b_errno_win32;
-         stat = -1;
-      }
-   } else if (bfd->use_backup_api && bfd->mode == BF_WRITE) {
-      BYTE buf[10];
-      if (bfd->lpContext && !p_BackupWrite(bfd->fh,
-              buf,                    /* buffer */
-              (DWORD)0,               /* bytes to read */
-              &bfd->rw_bytes,         /* bytes written */
-              1,                      /* Abort */
-              1,                      /* ProcessSecurity */
-              &bfd->lpContext)) {     /* Write context */
-         errno = b_errno_win32;
-         stat = -1;
-      }
-   }
-   if (!CloseHandle(bfd->fh)) {
-      stat = -1;
-      errno = b_errno_win32;
-   }
-
-all_done:
-   if (bfd->errmsg) {
-      free_pool_memory(bfd->errmsg);
-      bfd->errmsg = NULL;
-   }
-   bfd->mode = BF_CLOSED;
-   bfd->lpContext = NULL;
-   bfd->cmd_plugin = false;
-   return stat;
-}
-
-/* Returns: bytes read on success
- *           0         on EOF
- *          -1         on error
- */
-ssize_t bread(BFILE *bfd, void *buf, size_t count)
-{
-   bfd->rw_bytes = 0;
-
-   if (bfd->cmd_plugin && plugin_bread) {
-      return plugin_bread(bfd, buf, count);
-   }
-
-   if (bfd->use_backup_api) {
-      if (!p_BackupRead(bfd->fh,
-           (BYTE *)buf,
-           count,
-           &bfd->rw_bytes,
-           0,                           /* no Abort */
-           1,                           /* Process Security */
-           &bfd->lpContext)) {          /* Context */
-         bfd->lerror = GetLastError();
-         bfd->berrno = b_errno_win32;
-         errno = b_errno_win32;
-         return -1;
-      }
-   } else {
-      if (!ReadFile(bfd->fh,
-           buf,
-           count,
-           &bfd->rw_bytes,
-           NULL)) {
-         bfd->lerror = GetLastError();
-         bfd->berrno = b_errno_win32;
-         errno = b_errno_win32;
-         return -1;
-      }
-   }
-
-   return (ssize_t)bfd->rw_bytes;
-}
-
-ssize_t bwrite(BFILE *bfd, void *buf, size_t count)
-{
-   bfd->rw_bytes = 0;
-
-   if (bfd->cmd_plugin && plugin_bwrite) {
-      return plugin_bwrite(bfd, buf, count);
-   }
-
-   if (bfd->use_backup_api) {
-      if (!p_BackupWrite(bfd->fh,
-           (BYTE *)buf,
-           count,
-           &bfd->rw_bytes,
-           0,                           /* No abort */
-           1,                           /* Process Security */
-           &bfd->lpContext)) {          /* Context */
-         bfd->lerror = GetLastError();
-         bfd->berrno = b_errno_win32;
-         errno = b_errno_win32;
-         return -1;
-      }
-   } else {
-      if (!WriteFile(bfd->fh,
-           buf,
-           count,
-           &bfd->rw_bytes,
-           NULL)) {
-         bfd->lerror = GetLastError();
-         bfd->berrno = b_errno_win32;
-         errno = b_errno_win32;
-         return -1;
-      }
-   }
-   return (ssize_t)bfd->rw_bytes;
-}
-
-bool is_bopen(BFILE *bfd)
-{
-   return bfd->mode != BF_CLOSED;
-}
-
-boffset_t blseek(BFILE *bfd, boffset_t offset, int whence)
-{
-   LONG  offset_low = (LONG)offset;
-   LONG  offset_high = (LONG)(offset >> 32);
-   DWORD dwResult;
-
-   if (bfd->cmd_plugin && plugin_blseek) {
-      return plugin_blseek(bfd, offset, whence);
-   }
-
-   dwResult = SetFilePointer(bfd->fh, offset_low, &offset_high, whence);
-
-   if (dwResult == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) {
-      return (boffset_t)-1;
-   }
-
-   return ((boffset_t)offset_high << 32) | dwResult;
-}
-
-#else  /* Unix systems */
 
 /* ===============================================================
  *
@@ -836,12 +361,14 @@ boffset_t blseek(BFILE *bfd, boffset_t offset, int whence)
  *
  * ===============================================================
  */
+/* Unix */
 void binit(BFILE *bfd)
 {
    memset(bfd, 0, sizeof(BFILE));
    bfd->fid = -1;
 }
 
+/* Unix */
 bool have_win32_api()
 {
    return false;                       /* no can do */
@@ -852,12 +379,14 @@ bool have_win32_api()
  *   Returns true  if function worked
  *   Returns false if failed (i.e. do not have Backup API on this machine)
  */
+/* Unix */
 bool set_win32_backup(BFILE *bfd)
 {
    return false;                       /* no can do */
 }
 
 
+/* Unix */
 bool set_portable_backup(BFILE *bfd)
 {
    return true;                        /* no problem */
@@ -867,16 +396,19 @@ bool set_portable_backup(BFILE *bfd)
  * Return true  if we are writing in portable format
  * return false if not
  */
+/* Unix */
 bool is_portable_backup(BFILE *bfd)
 {
    return true;                       /* portable by definition */
 }
 
+/* Unix */
 bool set_prog(BFILE *bfd, char *prog, JCR *jcr)
 {
    return false;
 }
 
+/* Unix */
 bool set_cmd_plugin(BFILE *bfd, JCR *jcr)
 {
    bfd->cmd_plugin = true;
@@ -884,9 +416,10 @@ bool set_cmd_plugin(BFILE *bfd, JCR *jcr)
    return true;
 }
 
-/* 
- * This code is running on a non-Win32 machine 
+/*
+ * This code is running on a non-Win32 machine
  */
+/* Unix */
 bool is_restore_stream_supported(int stream)
 {
    /* No Win32 backup on this machine */
@@ -894,7 +427,7 @@ bool is_restore_stream_supported(int stream)
 #ifndef HAVE_LIBZ
    case STREAM_GZIP_DATA:
    case STREAM_SPARSE_GZIP_DATA:
-   case STREAM_WIN32_GZIP_DATA:    
+   case STREAM_WIN32_GZIP_DATA:
 #endif
 #ifndef HAVE_LZO
    case STREAM_COMPRESSED_DATA:
@@ -913,7 +446,7 @@ bool is_restore_stream_supported(int stream)
 #ifdef HAVE_LIBZ
    case STREAM_GZIP_DATA:
    case STREAM_SPARSE_GZIP_DATA:
-   case STREAM_WIN32_GZIP_DATA:    
+   case STREAM_WIN32_GZIP_DATA:
 #endif
 #ifdef HAVE_LZO
    case STREAM_COMPRESSED_DATA:
@@ -956,12 +489,13 @@ bool is_restore_stream_supported(int stream)
    return false;
 }
 
-int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode)
+/* Unix */
+int bopen(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode)
 {
    if (bfd->cmd_plugin && plugin_bopen) {
       Dmsg1(400, "call plugin_bopen fname=%s\n", fname);
       bfd->fid = plugin_bopen(bfd, fname, flags, mode);
-      Dmsg1(400, "Plugin bopen stat=%d\n", bfd->fid);
+      Dmsg2(400, "Plugin bopen fid=%d file=%s\n", bfd->fid, fname);
       return bfd->fid;
    }
 
@@ -990,6 +524,8 @@ int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode)
    }
    bfd->berrno = errno;
    bfd->m_flags = flags;
+   bfd->block = 0;
+   bfd->total_bytes = 0;
    Dmsg1(400, "Open file %d\n", bfd->fid);
    errno = bfd->berrno;
 
@@ -1008,7 +544,7 @@ int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode)
 
 #ifdef HAVE_DARWIN_OS
 /* Open the resource fork of a file. */
-int bopen_rsrc(BFILE *bfd, const char *fname, int flags, mode_t mode)
+int bopen_rsrc(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode)
 {
    POOLMEM *rsrc_fname;
 
@@ -1020,28 +556,30 @@ int bopen_rsrc(BFILE *bfd, const char *fname, int flags, mode_t mode)
    return bfd->fid;
 }
 #else
-int bopen_rsrc(BFILE *bfd, const char *fname, int flags, mode_t mode)
+/* Unix */
+int bopen_rsrc(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode)
 {
    return -1;
 }
 #endif
 
 
+/* Unix */
 int bclose(BFILE *bfd)
 {
    int stat;
 
    Dmsg1(400, "Close file %d\n", bfd->fid);
 
+   if (bfd->fid == -1) {
+      return 0;
+   }
    if (bfd->cmd_plugin && plugin_bclose) {
       stat = plugin_bclose(bfd);
       bfd->fid = -1;
       bfd->cmd_plugin = false;
    }
 
-   if (bfd->fid == -1) {
-      return 0;
-   }
 #if defined(HAVE_POSIX_FADVISE) && defined(POSIX_FADV_DONTNEED)
    if (bfd->m_flags & O_RDONLY) {
       fdatasync(bfd->fid);            /* sync the file */
@@ -1058,6 +596,7 @@ int bclose(BFILE *bfd)
    return stat;
 }
 
+/* Unix */
 ssize_t bread(BFILE *bfd, void *buf, size_t count)
 {
    ssize_t stat;
@@ -1068,9 +607,14 @@ ssize_t bread(BFILE *bfd, void *buf, size_t count)
 
    stat = read(bfd->fid, buf, count);
    bfd->berrno = errno;
+   bfd->block++;
+   if (stat > 0) {
+      bfd->total_bytes += stat;
+   }
    return stat;
 }
 
+/* Unix */
 ssize_t bwrite(BFILE *bfd, void *buf, size_t count)
 {
    ssize_t stat;
@@ -1080,14 +624,20 @@ ssize_t bwrite(BFILE *bfd, void *buf, size_t count)
    }
    stat = write(bfd->fid, buf, count);
    bfd->berrno = errno;
+   bfd->block++;
+   if (stat > 0) {
+      bfd->total_bytes += stat;
+   }
    return stat;
 }
 
+/* Unix */
 bool is_bopen(BFILE *bfd)
 {
    return bfd->fid >= 0;
 }
 
+/* Unix */
 boffset_t blseek(BFILE *bfd, boffset_t offset, int whence)
 {
    boffset_t pos;
@@ -1099,5 +649,3 @@ boffset_t blseek(BFILE *bfd, boffset_t offset, int whence)
    bfd->berrno = errno;
    return pos;
 }
-
-#endif
diff --git a/src/findlib/bfile.h b/src/findlib/bfile.h
index 2fe1cfe..e1b543a 100644
--- a/src/findlib/bfile.h
+++ b/src/findlib/bfile.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula low level File I/O routines.  This routine simulates
@@ -48,14 +36,14 @@ typedef struct _BWIN32_STREAM_ID {
         int32_t        dwStreamId;
         int32_t        dwStreamAttributes;
         int64_t        Size;
-        int32_t        dwStreamNameSize;        
+        int32_t        dwStreamNameSize;
 } BWIN32_STREAM_ID, *LPBWIN32_STREAM_ID ;
 
 
 typedef struct _PROCESS_WIN32_BACKUPAPIBLOCK_CONTEXT {
         int64_t          liNextHeader;
         bool             bIsInData;
-        BWIN32_STREAM_ID header_stream;        
+        BWIN32_STREAM_ID header_stream;
 } PROCESS_WIN32_BACKUPAPIBLOCK_CONTEXT;
 
 /*  =======================================================
@@ -85,11 +73,13 @@ struct BFILE {
    DWORD rw_bytes;                    /* Bytes read or written */
    DWORD lerror;                      /* Last error code */
    int berrno;                        /* errno */
+   int block;                         /* Count of read/writes */
+   uint64_t total_bytes;              /* bytes written */
    boffset_t offset;                  /* Delta offset */
    JCR *jcr;                          /* jcr for editing job codes */
    PROCESS_WIN32_BACKUPAPIBLOCK_CONTEXT win32DecompContext; /* context for decomposition of win32 backup streams */
    int use_backup_decomp;             /* set if using BackupRead Stream Decomposition */
-   bool reparse_point;                /* set if reparse point */ 
+   bool reparse_point;                /* set if reparse point */
    bool cmd_plugin;                   /* set if we have a command plugin */
 };
 
@@ -107,9 +97,11 @@ HANDLE bget_handle(BFILE *bfd);
 /* Basic Unix low level I/O file packet */
 struct BFILE {
    int fid;                           /* file id on Unix */
-   int m_flags;                       /* open flags */
    int berrno;                        /* errno */
    int32_t lerror;                    /* not used - simplies Win32 builds */
+   int block;                         /* Count of read/writes */
+   uint64_t m_flags;                  /* open flags */
+   uint64_t total_bytes;              /* bytes written */
    boffset_t offset;                  /* Delta offset */
    JCR *jcr;                          /* jcr for editing job codes */
    PROCESS_WIN32_BACKUPAPIBLOCK_CONTEXT win32DecompContext; /* context for decomposition of win32 backup streams */
@@ -129,9 +121,8 @@ bool    have_win32_api();
 bool    is_portable_backup(BFILE *bfd);
 bool    is_restore_stream_supported(int stream);
 bool    is_win32_stream(int stream);
-char   *xberror(BFILE *bfd);          /* DO NOT USE  -- use berrno class */
-int     bopen(BFILE *bfd, const char *fname, int flags, mode_t mode);
-int     bopen_rsrc(BFILE *bfd, const char *fname, int flags, mode_t mode);
+int     bopen(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode);
+int     bopen_rsrc(BFILE *bfd, const char *fname, uint64_t flags, mode_t mode);
 int     bclose(BFILE *bfd);
 ssize_t bread(BFILE *bfd, void *buf, size_t count);
 ssize_t bwrite(BFILE *bfd, void *buf, size_t count);
diff --git a/src/findlib/drivetype.c b/src/findlib/drivetype.c
index 4531761..24c0802 100644
--- a/src/findlib/drivetype.c
+++ b/src/findlib/drivetype.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Implement routines to determine drive type (Windows specific).
diff --git a/src/findlib/enable_priv.c b/src/findlib/enable_priv.c
deleted file mode 100644
index 89b9b79..0000000
--- a/src/findlib/enable_priv.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2003-2009 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.
-*/
-/*
- *  Enable backup privileges for Win32 systems.
- *
- *    Kern Sibbald, May MMIII
- *
- *   Version $Id$
- *
- */
-
-#include "bacula.h"
-#include "find.h"
-#include "jcr.h"
-
-
-/*=============================================================*/
-/*                                                             */
-/*                 * * *  U n i x * * * *                      */
-/*                                                             */
-/*=============================================================*/
-
-#if !defined(HAVE_WIN32)
-
-int enable_backup_privileges(JCR *jcr, int ignore_errors)
- { return 0; }
-
-
-#endif
-
-
-
-/*=============================================================*/
-/*                                                             */
-/*                 * * *  W i n 3 2 * * * *                    */
-/*                                                             */
-/*=============================================================*/
-
-#if defined(HAVE_WIN32)
-
-void win_error(JCR *jcr, const char *prefix, DWORD lerror);
-
-static int
-enable_priv(JCR *jcr, HANDLE hToken, const char *name, int ignore_errors)
-{
-    TOKEN_PRIVILEGES tkp;
-    DWORD lerror;
-
-    if (!(p_LookupPrivilegeValue && p_AdjustTokenPrivileges)) {
-       return 0;                      /* not avail on this OS */
-    }
-
-    // Get the LUID for the security privilege.
-    if (!p_LookupPrivilegeValue(NULL, name,  &tkp.Privileges[0].Luid)) {
-       win_error(jcr, "LookupPrivilegeValue", GetLastError());
-       return 0;
-    }
-
-    /* Set the security privilege for this process. */
-    tkp.PrivilegeCount = 1;
-    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
-    p_AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), NULL, NULL);
-    lerror = GetLastError();
-    if (lerror != ERROR_SUCCESS) {
-       if (!ignore_errors) {
-          char buf[200];
-          strcpy(buf, _("AdjustTokenPrivileges set "));
-          bstrncat(buf, name, sizeof(buf));
-          win_error(jcr, buf, lerror);
-       }
-       return 0;
-    }
-    return 1;
-}
-
-/*
- * Setup privileges we think we will need.  We probably do not need
- *  the SE_SECURITY_NAME, but since nothing seems to be working,
- *  we get it hoping to fix the problems.
- */
-int enable_backup_privileges(JCR *jcr, int ignore_errors)
-{
-    HANDLE hToken, hProcess;
-    int stat = 0;
-
-    if (!p_OpenProcessToken) {
-       return 0;                      /* No avail on this OS */
-    }
-
-    hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());
-
-    // Get a token for this process.
-    if (!p_OpenProcessToken(hProcess,
-            TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
-       if (!ignore_errors) {
-          win_error(jcr, "OpenProcessToken", GetLastError());
-       }
-       /* Forge on anyway */
-    }
-
-    /* Return a bit map of permissions set. */
-    if (enable_priv(jcr, hToken, SE_BACKUP_NAME, ignore_errors)) {
-       stat |= 1<<1;
-    }
-    if (enable_priv(jcr, hToken, SE_RESTORE_NAME, ignore_errors)) {
-       stat |= 1<<2;
-    }
-    if (enable_priv(jcr, hToken, SE_SECURITY_NAME, ignore_errors)) {
-       stat |= 1<<0;
-    }
-    if (enable_priv(jcr, hToken, SE_TAKE_OWNERSHIP_NAME, ignore_errors)) {
-       stat |= 1<<3;
-    }
-    if (enable_priv(jcr, hToken, SE_ASSIGNPRIMARYTOKEN_NAME, ignore_errors)) {
-       stat |= 1<<4;
-    }
-    if (enable_priv(jcr, hToken, SE_SYSTEM_ENVIRONMENT_NAME, ignore_errors)) {
-       stat |= 1<<5;
-    }
-    if (enable_priv(jcr, hToken, SE_CREATE_TOKEN_NAME, ignore_errors)) {
-       stat |= 1<<6;
-    }
-    if (enable_priv(jcr, hToken, SE_MACHINE_ACCOUNT_NAME, ignore_errors)) {
-       stat |= 1<<7;
-    }
-    if (enable_priv(jcr, hToken, SE_TCB_NAME, ignore_errors)) {
-       stat |= 1<<8;
-    }
-    if (enable_priv(jcr, hToken, SE_CREATE_PERMANENT_NAME, ignore_errors)) {
-       stat |= 1<<10;
-    }
-
-    if (stat) {
-       stat |= 1<<9;
-    }
-
-    CloseHandle(hToken);
-    CloseHandle(hProcess);
-    return stat;
-}
-
-#endif  /* HAVE_WIN32 */
diff --git a/src/findlib/attribs.c b/src/findlib/file_attrs.c
similarity index 65%
rename from src/findlib/attribs.c
rename to src/findlib/file_attrs.c
index 0d6e7c2..9268ce1 100644
--- a/src/findlib/attribs.c
+++ b/src/findlib/file_attrs.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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,27 +34,26 @@
  *
  */
 
+//#define _POSIX_C_SOURCE 200809L
+//#define _BSD_SOURCE 1
+
 #include "bacula.h"
 #include "find.h"
 #include "ch.h"
 
 static uid_t my_uid = 1;
-static gid_t my_gid = 1;                        
+static gid_t my_gid = 1;
 static bool uid_set = false;
 
-
-#if defined(HAVE_WIN32)
-/* Forward referenced subroutines */
-static bool set_win32_attributes(JCR *jcr, ATTR *attr, BFILE *ofd);
-void unix_name_to_win32(POOLMEM **win32_name, char *name);
-void win_error(JCR *jcr, const char *prefix, POOLMEM *ofile);
-HANDLE bget_handle(BFILE *bfd);
-#endif /* HAVE_WIN32 */
-
-/* For old systems that don't have lchown() use chown() */
+/*
+ * For old systems that don't have lchown() or lchmod()
+ */
 #ifndef HAVE_LCHOWN
 #define lchown chown
 #endif
+#ifndef HAVE_LCHMOD
+#define lchmod chmod
+#endif
 
 /*=============================================================*/
 /*                                                             */
@@ -62,7 +61,101 @@ HANDLE bget_handle(BFILE *bfd);
 /*                                                             */
 /*=============================================================*/
 
-/**
+/*
+ * To turn off use of fchown(), fchmod(), or futimes(),
+ *   uncomment one or more of the following.
+ */
+//#undef HAVE_FCHOWN
+//#undef HAVE_FCHMOD
+//#undef HAVE_FUTIMES
+
+/*
+ * Print errors only if debug level defined or we are root.
+ *  root should not get errors.  Errors for users causes
+ *  too much output.
+ */
+#define print_error (chk_dbglvl(100) || my_uid == 0)
+
+bool set_mod_own_time(JCR *jcr, BFILE *ofd, ATTR *attr)
+{
+   bool ok = true;
+   struct utimbuf ut;
+
+   /* Do not try to set rights with f functions when using a plugin */
+   if (is_bopen(ofd) && !ofd->cmd_plugin) { /* TODO: Look with opt_plugin */
+      /*
+       * The #ifdefing is a bit ugly, but it is the only
+       *  way we can ensure this works on older systems.
+       */
+#ifdef HAVE_FCHOWN
+      if (fchown(ofd->fid, attr->statp.st_uid, attr->statp.st_gid) < 0 && print_error) {
+#else
+      if (lchown(attr->ofname, attr->statp.st_uid, attr->statp.st_gid) < 0 && print_error) {
+#endif
+         berrno be;
+         Jmsg2(jcr, M_ERROR, 0, _("Unable to set file owner %s: ERR=%s\n"),
+            attr->ofname, be.bstrerror());
+         ok = false;
+      }
+#ifdef HAVE_FCHMOD
+      if (fchmod(ofd->fid, attr->statp.st_mode) < 0 && print_error) {
+#else
+      if (lchmod(attr->ofname, attr->statp.st_mode) < 0 && print_error) {
+#endif
+         berrno be;
+         Jmsg2(jcr, M_ERROR, 0, _("Unable to set file modes %s: ERR=%s\n"),
+            attr->ofname, be.bstrerror());
+         ok = false;
+      }
+
+#ifdef HAVE_FUTIMES
+      struct timeval times[2];
+      times[0].tv_sec = attr->statp.st_atime;
+      times[0].tv_usec = 0;
+      times[1].tv_sec = attr->statp.st_mtime;
+      times[1].tv_usec = 0;
+      if (futimes(ofd->fid, times) < 0 && print_error) {
+#else
+      ut.actime = attr->statp.st_atime;
+      ut.modtime = attr->statp.st_mtime;
+      //bclose(ofd);
+      if (utime(attr->ofname, &ut) < 0 && print_error) {
+#endif
+         berrno be;
+         Jmsg2(jcr, M_ERROR, 0, _("Unable to set file times %s: ERR=%s\n"),
+            attr->ofname, be.bstrerror());
+         ok = false;
+      }
+   } else {
+      if (lchown(attr->ofname, attr->statp.st_uid, attr->statp.st_gid) < 0 && print_error) {
+         berrno be;
+         Jmsg2(jcr, M_ERROR, 0, _("Unable to set file owner %s: ERR=%s\n"),
+            attr->ofname, be.bstrerror());
+         ok = false;
+      }
+      if (lchmod(attr->ofname, attr->statp.st_mode) < 0 && print_error) {
+         berrno be;
+         Jmsg2(jcr, M_ERROR, 0, _("Unable to set file modes %s: ERR=%s\n"),
+            attr->ofname, be.bstrerror());
+         ok = false;
+      }
+      /*
+       * Reset file times.
+       */
+      ut.actime = attr->statp.st_atime;
+      ut.modtime = attr->statp.st_mtime;
+
+      if (utime(attr->ofname, &ut) < 0 && print_error) {
+         berrno be;
+         Jmsg2(jcr, M_ERROR, 0, _("Unable to set file times %s: ERR=%s\n"),
+            attr->ofname, be.bstrerror());
+         ok = false;
+      }
+   }
+   return ok;
+}
+
+/*
  * Return the data stream that will be used
  */
 int select_data_stream(FF_PKT *ff_pkt)
@@ -213,7 +306,7 @@ void encode_stat(char *buf, struct stat *statp, int stat_size, int32_t LinkFI, i
     *  the same when compiling this library and the calling program.
     */
    ASSERT(stat_size == (int)sizeof(struct stat));
-      
+
    /**
     *  Encode a stat packet.  I should have done this more intelligently
     *   with a length so that it could be easily expanded.
@@ -262,6 +355,10 @@ void encode_stat(char *buf, struct stat *statp, int stat_size, int32_t LinkFI, i
 #endif
    *p++ = ' ';
    p += to_base64((int64_t)data_stream, p);
+#ifdef HAVE_MINGW
+   *p++ = ' ';
+   p += to_base64((int64_t)statp->st_fattrs, p);
+#endif
    *p = 0;
    return;
 }
@@ -284,11 +381,15 @@ void encode_stat(char *buf, struct stat *statp, int stat_size, int32_t LinkFI, i
 #endif
 
 
-/** Decode a stat packet from base64 characters */
+/*
+ * Decode a stat packet from base64 characters
+ * returns: data_stream
+ */
 int decode_stat(char *buf, struct stat *statp, int stat_size, int32_t *LinkFI)
 {
    char *p = buf;
    int64_t val;
+   int data_stream;
 
    /*
     * We store into the stat packet so make sure the caller's conception
@@ -373,7 +474,18 @@ int decode_stat(char *buf, struct stat *statp, int stat_size, int32_t *LinkFI)
    } else {
       val = 0;
    }
-   return (int)val;
+   data_stream = val;
+#ifdef HAVE_MINGW
+   if (*p == ' ' || (*p != 0 && *(p+1) == ' ')) {
+      p++;
+      p += from_base64(&val, p);
+      plug(statp->st_fattrs, val);
+   } else {
+      statp->st_fattrs = 0;
+      val = 0;
+   }
+#endif
+   return data_stream;
 }
 
 /** Decode a LinkFI field of encoded stat packet */
@@ -435,50 +547,21 @@ int32_t decode_LinkFI(char *buf, struct stat *statp, int stat_size)
  */
 bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
 {
-   struct utimbuf ut;
    mode_t old_mask;
    bool ok = true;
    boffset_t fsize;
- 
+
    if (uid_set) {
       my_uid = getuid();
       my_gid = getgid();
       uid_set = true;
    }
 
-#if defined(HAVE_WIN32)
-   if (attr->stream == STREAM_UNIX_ATTRIBUTES_EX &&
-       set_win32_attributes(jcr, attr, ofd)) {
-       if (is_bopen(ofd)) {
-           bclose(ofd);
-       }
-       pm_strcpy(attr->ofname, "*none*");
-       return true;
-   }
-   if (attr->data_stream == STREAM_WIN32_DATA ||
-       attr->data_stream == STREAM_WIN32_GZIP_DATA ||
-       attr->data_stream == STREAM_WIN32_COMPRESSED_DATA) {
-      if (is_bopen(ofd)) {
-         bclose(ofd);
-      }
-      pm_strcpy(attr->ofname, "*none*");
-      return true;
-   }
-
-
-   /**
-    * If Windows stuff failed, e.g. attempt to restore Unix file
-    *  to Windows, simply fall through and we will do it the
-    *  universal way.
-    */
-#endif
-
    old_mask = umask(0);
    if (is_bopen(ofd)) {
       char ec1[50], ec2[50];
       fsize = blseek(ofd, 0, SEEK_END);
-      bclose(ofd);                    /* first close file */
-      if (attr->type == FT_REG && fsize > 0 && attr->statp.st_size > 0 && 
+      if (attr->type == FT_REG && fsize > 0 && attr->statp.st_size > 0 &&
                         fsize != (boffset_t)attr->statp.st_size) {
          Jmsg3(jcr, M_ERROR, 0, _("File size of restored file %s not correct. Original %s, restored %s.\n"),
             attr->ofname, edit_uint64(attr->statp.st_size, ec1),
@@ -486,7 +569,7 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
       }
    }
 
-   /**
+   /*
     * We do not restore sockets, so skip trying to restore their
     *   attributes.
     */
@@ -494,45 +577,25 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
       goto bail_out;
    }
 
-   ut.actime = attr->statp.st_atime;
-   ut.modtime = attr->statp.st_mtime;
-
    /* ***FIXME**** optimize -- don't do if already correct */
-   /**
+   /*
     * For link, change owner of link using lchown, but don't
     *   try to do a chmod as that will update the file behind it.
     */
    if (attr->type == FT_LNK) {
       /** Change owner of link, not of real file */
-      if (lchown(attr->ofname, attr->statp.st_uid, attr->statp.st_gid) < 0 && my_uid == 0) {
+      if (lchown(attr->ofname, attr->statp.st_uid, attr->statp.st_gid) < 0 && print_error) {
          berrno be;
          Jmsg2(jcr, M_ERROR, 0, _("Unable to set file owner %s: ERR=%s\n"),
             attr->ofname, be.bstrerror());
          ok = false;
       }
    } else {
-      if (chown(attr->ofname, attr->statp.st_uid, attr->statp.st_gid) < 0 && my_uid == 0) {
-         berrno be;
-         Jmsg2(jcr, M_ERROR, 0, _("Unable to set file owner %s: ERR=%s\n"),
-            attr->ofname, be.bstrerror());
-         ok = false;
-      }
-      if (chmod(attr->ofname, attr->statp.st_mode) < 0 && my_uid == 0) {
-         berrno be;
-         Jmsg2(jcr, M_ERROR, 0, _("Unable to set file modes %s: ERR=%s\n"),
-            attr->ofname, be.bstrerror());
-         ok = false;
-      }
-
-      /**
-       * Reset file times.
+      /*
+       * At this point, we have a file that is not a LINK
        */
-      if (utime(attr->ofname, &ut) < 0 && my_uid == 0) {
-         berrno be;
-         Jmsg2(jcr, M_ERROR, 0, _("Unable to set file times %s: ERR=%s\n"),
-            attr->ofname, be.bstrerror());
-         ok = false;
-      }
+      ok = set_mod_own_time(jcr, ofd, attr);
+
 #ifdef HAVE_CHFLAGS
       /**
        * FreeBSD user flags
@@ -541,7 +604,7 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
        *  but if the immutable bit is set, it will make the utimes()
        *  fail.
        */
-      if (chflags(attr->ofname, attr->statp.st_flags) < 0 && my_uid == 0) {
+      if (chflags(attr->ofname, attr->statp.st_flags) < 0 && print_error) {
          berrno be;
          Jmsg2(jcr, M_ERROR, 0, _("Unable to set file flags %s: ERR=%s\n"),
             attr->ofname, be.bstrerror());
@@ -551,6 +614,9 @@ bool set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
    }
 
 bail_out:
+   if (is_bopen(ofd)) {
+      bclose(ofd);
+   }
    pm_strcpy(attr->ofname, "*none*");
    umask(old_mask);
    return ok;
@@ -599,224 +665,3 @@ int encode_attribsEx(JCR *jcr, char *attribsEx, FF_PKT *ff_pkt)
 }
 
 #endif
-
-
-
-/*=============================================================*/
-/*                                                             */
-/*                 * * *  W i n 3 2 * * * *                    */
-/*                                                             */
-/*=============================================================*/
-
-#if defined(HAVE_WIN32)
-
-int encode_attribsEx(JCR *jcr, char *attribsEx, FF_PKT *ff_pkt)
-{
-   char *p = attribsEx;
-   WIN32_FILE_ATTRIBUTE_DATA atts;
-   ULARGE_INTEGER li;
-
-   attribsEx[0] = 0;                  /* no extended attributes */
-
-   if (jcr->cmd_plugin || ff_pkt->type == FT_DELETED) {
-      return STREAM_UNIX_ATTRIBUTES;
-   }
-
-   unix_name_to_win32(&ff_pkt->sys_fname, ff_pkt->fname);
-
-   /** try unicode version */
-   if (p_GetFileAttributesExW)  {
-      POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);   
-      make_win32_path_UTF8_2_wchar(&pwszBuf, ff_pkt->fname);
-
-      BOOL b=p_GetFileAttributesExW((LPCWSTR)pwszBuf, GetFileExInfoStandard, 
-                                    (LPVOID)&atts);
-      free_pool_memory(pwszBuf);
-
-      if (!b) {
-         win_error(jcr, "GetFileAttributesExW:", ff_pkt->sys_fname);
-         return STREAM_UNIX_ATTRIBUTES;
-      }
-   }
-   else {
-      if (!p_GetFileAttributesExA)
-         return STREAM_UNIX_ATTRIBUTES;      
-
-      if (!p_GetFileAttributesExA(ff_pkt->sys_fname, GetFileExInfoStandard,
-                              (LPVOID)&atts)) {
-         win_error(jcr, "GetFileAttributesExA:", ff_pkt->sys_fname);
-         return STREAM_UNIX_ATTRIBUTES;
-      }
-   }
-
-   p += to_base64((uint64_t)atts.dwFileAttributes, p);
-   *p++ = ' ';                        /* separate fields with a space */
-   li.LowPart = atts.ftCreationTime.dwLowDateTime;
-   li.HighPart = atts.ftCreationTime.dwHighDateTime;
-   p += to_base64((uint64_t)li.QuadPart, p);
-   *p++ = ' ';
-   li.LowPart = atts.ftLastAccessTime.dwLowDateTime;
-   li.HighPart = atts.ftLastAccessTime.dwHighDateTime;
-   p += to_base64((uint64_t)li.QuadPart, p);
-   *p++ = ' ';
-   li.LowPart = atts.ftLastWriteTime.dwLowDateTime;
-   li.HighPart = atts.ftLastWriteTime.dwHighDateTime;
-   p += to_base64((uint64_t)li.QuadPart, p);
-   *p++ = ' ';
-   p += to_base64((uint64_t)atts.nFileSizeHigh, p);
-   *p++ = ' ';
-   p += to_base64((uint64_t)atts.nFileSizeLow, p);
-   *p = 0;
-   return STREAM_UNIX_ATTRIBUTES_EX;
-}
-
-/** Define attributes that are legal to set with SetFileAttributes() */
-#define SET_ATTRS ( \
-         FILE_ATTRIBUTE_ARCHIVE| \
-         FILE_ATTRIBUTE_HIDDEN| \
-         FILE_ATTRIBUTE_NORMAL| \
-         FILE_ATTRIBUTE_NOT_CONTENT_INDEXED| \
-         FILE_ATTRIBUTE_OFFLINE| \
-         FILE_ATTRIBUTE_READONLY| \
-         FILE_ATTRIBUTE_SYSTEM| \
-         FILE_ATTRIBUTE_TEMPORARY)
-
-
-/**
- * Set Extended File Attributes for Win32
- *
- *  fname is the original filename
- *  ofile is the output filename (may be in a different directory)
- *
- * Returns:  true  on success
- *           false on failure
- */
-static bool set_win32_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
-{
-   char *p = attr->attrEx;
-   int64_t val;
-   WIN32_FILE_ATTRIBUTE_DATA atts;
-   ULARGE_INTEGER li;
-   POOLMEM *win32_ofile;
-
-   /** if we have neither Win ansi nor wchar API, get out */
-   if (!(p_SetFileAttributesW || p_SetFileAttributesA)) {
-      return false;
-   }
-
-   if (!p || !*p) {                   /* we should have attributes */
-      Dmsg2(100, "Attributes missing. of=%s ofd=%d\n", attr->ofname, ofd->fid);
-      if (is_bopen(ofd)) {
-         bclose(ofd);
-      }
-      return false;
-   } else {
-      Dmsg2(100, "Attribs %s = %s\n", attr->ofname, attr->attrEx);
-   }
-
-   p += from_base64(&val, p);
-   plug(atts.dwFileAttributes, val);
-   p++;                               /* skip space */
-   p += from_base64(&val, p);
-   li.QuadPart = val;
-   atts.ftCreationTime.dwLowDateTime = li.LowPart;
-   atts.ftCreationTime.dwHighDateTime = li.HighPart;
-   p++;                               /* skip space */
-   p += from_base64(&val, p);
-   li.QuadPart = val;
-   atts.ftLastAccessTime.dwLowDateTime = li.LowPart;
-   atts.ftLastAccessTime.dwHighDateTime = li.HighPart;
-   p++;                               /* skip space */
-   p += from_base64(&val, p);
-   li.QuadPart = val;
-   atts.ftLastWriteTime.dwLowDateTime = li.LowPart;
-   atts.ftLastWriteTime.dwHighDateTime = li.HighPart;
-   p++;
-   p += from_base64(&val, p);
-   plug(atts.nFileSizeHigh, val);
-   p++;
-   p += from_base64(&val, p);
-   plug(atts.nFileSizeLow, val);
-
-   /** Convert to Windows path format */
-   win32_ofile = get_pool_memory(PM_FNAME);
-   unix_name_to_win32(&win32_ofile, attr->ofname);
-
-   /** At this point, we have reconstructed the WIN32_FILE_ATTRIBUTE_DATA pkt */
-
-   if (!is_bopen(ofd)) {
-      Dmsg1(100, "File not open: %s\n", attr->ofname);
-      bopen(ofd, attr->ofname, O_WRONLY|O_BINARY, 0);   /* attempt to open the file */
-   }
-
-   if (is_bopen(ofd)) {
-      Dmsg1(100, "SetFileTime %s\n", attr->ofname);
-      if (!SetFileTime(bget_handle(ofd),
-                         &atts.ftCreationTime,
-                         &atts.ftLastAccessTime,
-                         &atts.ftLastWriteTime)) {
-         win_error(jcr, "SetFileTime:", win32_ofile);
-      }
-      bclose(ofd);
-   }
-
-   Dmsg1(100, "SetFileAtts %s\n", attr->ofname);
-   if (!(atts.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
-      if (p_SetFileAttributesW) {
-         POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);   
-         make_win32_path_UTF8_2_wchar(&pwszBuf, attr->ofname);
-
-         BOOL b=p_SetFileAttributesW((LPCWSTR)pwszBuf, atts.dwFileAttributes & SET_ATTRS);
-         free_pool_memory(pwszBuf);
-      
-         if (!b) 
-            win_error(jcr, "SetFileAttributesW:", win32_ofile); 
-      }
-      else {
-         if (!p_SetFileAttributesA(win32_ofile, atts.dwFileAttributes & SET_ATTRS)) {
-            win_error(jcr, "SetFileAttributesA:", win32_ofile);
-         }
-      }
-   }
-   free_pool_memory(win32_ofile);
-   return true;
-}
-
-void win_error(JCR *jcr, const char *prefix, POOLMEM *win32_ofile)
-{
-   DWORD lerror = GetLastError();
-   LPTSTR msg;
-   FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
-                 FORMAT_MESSAGE_FROM_SYSTEM,
-                 NULL,
-                 lerror,
-                 0,
-                 (LPTSTR)&msg,
-                 0,
-                 NULL);
-   Dmsg3(100, "Error in %s on file %s: ERR=%s\n", prefix, win32_ofile, msg);
-   strip_trailing_junk(msg);
-   Jmsg3(jcr, M_ERROR, 0, _("Error in %s file %s: ERR=%s\n"), prefix, win32_ofile, msg);
-   LocalFree(msg);
-}
-
-void win_error(JCR *jcr, const char *prefix, DWORD lerror)
-{
-   LPTSTR msg;
-   FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
-                 FORMAT_MESSAGE_FROM_SYSTEM,
-                 NULL,
-                 lerror,
-                 0,
-                 (LPTSTR)&msg,
-                 0,
-                 NULL);
-   strip_trailing_junk(msg);
-   if (jcr) {
-      Jmsg2(jcr, M_ERROR, 0, _("Error in %s: ERR=%s\n"), prefix, msg);
-   } else {
-      MessageBox(NULL, msg, prefix, MB_OK);
-   }
-   LocalFree(msg);
-}
-#endif  /* HAVE_WIN32 */
diff --git a/src/findlib/create_file.c b/src/findlib/file_create.c
similarity index 91%
rename from src/findlib/create_file.c
rename to src/findlib/file_create.c
index b283af3..0abb200 100644
--- a/src/findlib/create_file.c
+++ b/src/findlib/file_create.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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,8 +30,6 @@
  *
  *    Kern Sibbald, November MM
  *
- *   Version $Id$
- *
  */
 
 #include "bacula.h"
@@ -46,6 +44,13 @@
 #define O_CTG 0
 #endif
 
+#ifndef O_EXCL
+#define O_EXCL 0
+#endif
+#ifndef O_NOFOLLOW
+#define O_NOFOLLOW 0
+#endif
+
 static int separate_path_and_file(JCR *jcr, char *fname, char *ofile);
 static int path_already_seen(JCR *jcr, char *path, int pnl);
 
@@ -80,11 +85,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
    struct stat mstatp;
 
    bfd->reparse_point = false;
-   if (is_win32_stream(attr->data_stream)) {
-      set_win32_backup(bfd);
-   } else {
-      set_portable_backup(bfd);
-   }
+   set_portable_backup(bfd);
 
    new_mode = attr->statp.st_mode;
    Dmsg3(200, "type=%d newmode=%x file=%s\n", attr->type, new_mode, attr->ofname);
@@ -92,29 +93,6 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
    gid = attr->statp.st_gid;
    uid = attr->statp.st_uid;
 
-#ifdef HAVE_WIN32
-   if (!bfd->use_backup_api) {
-      // eliminate invalid windows filename characters from foreign filenames
-      char *ch = (char *)attr->ofname;
-      if (ch[0] != 0 && ch[1] != 0) {
-         ch += 2;
-         while (*ch) {
-            switch (*ch) {
-            case ':':
-            case '<':
-            case '>':
-            case '*':
-            case '?':
-            case '|':
-               *ch = '_';
-                break;
-            }
-            ch++;
-         }
-      }
-   }
-#endif
-
    Dmsg2(400, "Replace=%c %d\n", (char)replace, replace);
    if (lstat(attr->ofname, &mstatp) == 0) {
       exists = true;
@@ -153,7 +131,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
    case FT_SPEC:                      /* fifo, ... to be backed up */
    case FT_REGE:                      /* empty file */
    case FT_REG:                       /* regular file */
-      /* 
+      /*
        * Note, we do not delete FT_RAW because these are device files
        *  or FIFOs that should already exist. If we blow it away,
        *  we may blow away a FIFO that is being used to read the
@@ -166,7 +144,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
             berrno be;
             Qmsg(jcr, M_ERROR, 0, _("File %s already exists and could not be replaced. ERR=%s.\n"),
                attr->ofname, be.bstrerror());
-            /* Continue despite error */
+            return CF_ERROR;
          }
       }
       /*
@@ -210,7 +188,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
       case FT_REGE:
       case FT_REG:
          Dmsg1(100, "Create=%s\n", attr->ofname);
-         flags =  O_WRONLY | O_CREAT | O_TRUNC | O_BINARY; /*  O_NOFOLLOW; */
+         flags =  O_WRONLY | O_CREAT | O_BINARY | O_EXCL;
          if (IS_CTG(attr->statp.st_mode)) {
             flags |= O_CTG;              /* set contiguous bit if needed */
          }
@@ -218,7 +196,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
             Qmsg1(jcr, M_ERROR, 0, _("bpkt already open fid=%d\n"), bfd->fid);
             bclose(bfd);
          }
-      
+
 
          if ((bopen(bfd, attr->ofname, flags, S_IRUSR | S_IWUSR)) < 0) {
             berrno be;
@@ -230,7 +208,6 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
          }
          return CF_EXTRACT;
 
-#ifndef HAVE_WIN32  // none of these exist in MS Windows
       case FT_RAW:                    /* Bacula raw device e.g. /dev/sda1 */
       case FT_FIFO:                   /* Bacula fifo to save data */
       case FT_SPEC:
@@ -265,7 +242,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
           * Here we are going to attempt to restore to a FIFO, which
           *   means that the FIFO must already exist, AND there must
           *   be some process already attempting to read from the
-          *   FIFO, so we open it write-only. 
+          *   FIFO, so we open it write-only.
           */
          if (attr->type == FT_RAW || attr->type == FT_FIFO) {
             btimer_t *tid;
@@ -313,14 +290,12 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
             berrno be;
 #ifdef HAVE_CHFLAGS
             struct stat s;
-
-        /*
+           /*
             * If using BSD user flags, maybe has a file flag
             * preventing this. So attempt to disable, retry link,
             * and reset flags.
             * Note that BSD securelevel may prevent disabling flag.
-        */
-
+            */
             if (stat(attr->olname, &s) == 0 && s.st_flags != 0) {
                if (chflags(attr->olname, 0) == 0) {
                   if (link(attr->olname, attr->ofname) != 0) {
@@ -355,7 +330,6 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
 
          }
          return CF_CREATED;
-#endif
       } /* End inner switch */
 
    case FT_REPARSE:
@@ -380,14 +354,6 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
          if ((bopen(bfd, attr->ofname, O_WRONLY|O_BINARY, 0)) < 0) {
             berrno be;
             be.set_errno(bfd->berrno);
-#ifdef HAVE_WIN32
-            /* Check for trying to create a drive, if so, skip */
-            if (attr->ofname[1] == ':' && 
-                IsPathSeparator(attr->ofname[2]) && 
-                attr->ofname[3] == '\0') {
-               return CF_SKIP;
-            }
-#endif
             Qmsg2(jcr, M_ERROR, 0, _("Could not open %s: ERR=%s\n"),
                   attr->ofname, be.bstrerror());
             return CF_ERROR;
@@ -414,6 +380,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
       break;
    default:
       Qmsg2(jcr, M_ERROR, 0, _("Unknown file type %d; not restored: %s\n"), attr->type, attr->fname);
+      Pmsg2(000, "Unknown file type %d; not restored: %s\n", attr->type, attr->fname);
       break;
    }
    return CF_ERROR;
@@ -431,20 +398,10 @@ static int separate_path_and_file(JCR *jcr, char *fname, char *ofile)
 
    /* Separate pathname and filename */
    for (q=p=f=ofile; *p; p++) {
-#ifdef HAVE_WIN32
-      if (IsPathSeparator(*p)) {
-         f = q;
-         if (IsPathSeparator(p[1])) {
-            p++;
-         }
-      }
-      *q++ = *p;                   /* copy data */
-#else
       if (IsPathSeparator(*p)) {
          f = q;                    /* possible filename */
       }
       q++;
-#endif
    }
 
    if (IsPathSeparator(*f)) {
diff --git a/src/findlib/find.c b/src/findlib/find.c
index dba28bf..606b4f0 100644
--- a/src/findlib/find.c
+++ b/src/findlib/find.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Main routine for finding files on a file system.
@@ -111,51 +99,12 @@ set_find_changed_function(FF_PKT *ff, bool check_fct(JCR *jcr, FF_PKT *ff))
  * the function returns the number of used drives and
  * fills "drives" with up to 26 (A..Z) drive names
  *
+ * szDrives must be at least 27 bytes long
  */
 int
 get_win32_driveletters(FF_PKT *ff, char* szDrives)
 {
-   /* szDrives must be at least 27 bytes long */
-
-#if !defined(HAVE_WIN32)
-   return 0;
-#endif
-   int nCount;
-   /*
-    * Can be already filled by plugin, so check that all
-    *   letters are in upper case. There should be no duplicates.
-    */
-   for (nCount = 0; nCount < 27 && szDrives[nCount] ; nCount++) {
-      szDrives[nCount] = toupper(szDrives[nCount]);
-   }
-
-   findFILESET *fileset = ff->fileset;
-   if (fileset) {
-      int i;
-      dlistString *node;
-      
-      for (i=0; i<fileset->include_list.size(); i++) {
-         findINCEXE *incexe = (findINCEXE *)fileset->include_list.get(i);
-         
-         /* look through all files and check */
-         foreach_dlist(node, &incexe->name_list) {
-            char *fname = node->c_str();
-            /* fname should match x:/ */
-            if (strlen(fname) >= 2 && B_ISALPHA(fname[0]) 
-               && fname[1] == ':') {
-               
-               /* always add in uppercase */
-               char ch = toupper(fname[0]);
-               /* if not found in string, add drive letter */
-               if (!strchr(szDrives,ch)) {
-                  szDrives[nCount] = ch;
-                  szDrives[nCount+1] = 0;
-                  nCount++;
-               }                                
-            }            
-         }
-      }
-   }
+   int nCount = 0;
    return nCount;
 }
 
@@ -168,7 +117,7 @@ get_win32_driveletters(FF_PKT *ff, char* szDrives)
  */
 int
 find_files(JCR *jcr, FF_PKT *ff, int file_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level),
-           int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)) 
+           int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level))
 {
    ff->file_save = file_save;
    ff->plugin_save = plugin_save;
@@ -217,7 +166,7 @@ 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));
             }
          }
-         Dmsg4(50, "Verify=<%s> Accurate=<%s> BaseJob=<%s> flags=<%d>\n", 
+         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) {
@@ -240,6 +189,14 @@ find_files(JCR *jcr, FF_PKT *ff, int file_save(JCR *jcr, FF_PKT *ff_pkt, bool to
             Dmsg1(dbglvl, "PluginCommand: %s\n", fname);
             ff->top_fname = fname;
             ff->cmd_plugin = true;
+
+            /* Make sure that opt plugin is not set
+             * The current implementation doesn't allow option plugin
+             * and command plugin to run at the same time
+             */
+            ff->opt_plugin = false;
+            ff->plugin = NULL;
+
             plugin_save(jcr, ff, true);
             ff->cmd_plugin = false;
             if (job_canceled(jcr)) {
@@ -253,7 +210,7 @@ find_files(JCR *jcr, FF_PKT *ff, int file_save(JCR *jcr, FF_PKT *ff_pkt, bool to
 
 /*
  * Test if the currently selected directory (in ff->fname) is
- *  explicitly in the Include list or explicitly in the Exclude 
+ *  explicitly in the Include list or explicitly in the Exclude
  *  list.
  */
 bool is_in_fileset(FF_PKT *ff)
diff --git a/src/findlib/find.h b/src/findlib/find.h
index 8d6be39..188245e 100644
--- a/src/findlib/find.h
+++ b/src/findlib/find.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * File types as returned by find_files()
diff --git a/src/findlib/find_one.c b/src/findlib/find_one.c
index d854994..b87a571 100644
--- a/src/findlib/find_one.c
+++ b/src/findlib/find_one.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
 
@@ -87,7 +75,7 @@ static inline int LINKHASH(const struct stat &info)
 /*
  * Create a new directory Find File packet, but copy
  *   some of the essential info from the current packet.
- *   However, be careful to zero out the rest of the 
+ *   However, be careful to zero out the rest of the
  *   packet.
  */
 static FF_PKT *new_dir_ff_pkt(FF_PKT *ff_pkt)
@@ -244,7 +232,7 @@ bool has_file_changed(JCR *jcr, FF_PKT *ff_pkt)
 
    if (lstat(ff_pkt->fname, &statp) != 0) {
       berrno be;
-      Jmsg(jcr, M_WARNING, 0, 
+      Jmsg(jcr, M_WARNING, 0,
            _("Cannot stat file %s: ERR=%s\n"),ff_pkt->fname,be.bstrerror());
       return true;
    }
@@ -262,20 +250,12 @@ bool has_file_changed(JCR *jcr, FF_PKT *ff_pkt)
             (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)) {
-      Jmsg(jcr, M_ERROR, 0, _("%s size changed during backup.\n"),ff_pkt->fname);
+   if ((int64_t)statp.st_size != (int64_t)ff_pkt->statp.st_size) {
+      Jmsg(jcr, M_ERROR, 0, _("%s size of %lld changed during backup to %lld.n"),ff_pkt->fname,
+         (int64_t)ff_pkt->statp.st_size, (int64_t)statp.st_size);
       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);
+            (int64_t)ff_pkt->statp.st_size, (int64_t)statp.st_size);
       return true;
    }
 
@@ -288,7 +268,7 @@ bool has_file_changed(JCR *jcr, FF_PKT *ff_pkt)
  */
 bool check_changes(JCR *jcr, FF_PKT *ff_pkt)
 {
-   /* in special mode (like accurate backup), the programmer can 
+   /* in special mode (like accurate backup), the programmer can
     * choose his comparison function.
     */
    if (ff_pkt->check_fct) {
@@ -301,10 +281,10 @@ bool check_changes(JCR *jcr, FF_PKT *ff_pkt)
    if (ff_pkt->incremental &&
        (ff_pkt->statp.st_mtime < ff_pkt->save_time &&
         ((ff_pkt->flags & FO_MTIMEONLY) ||
-         ff_pkt->statp.st_ctime < ff_pkt->save_time))) 
+         ff_pkt->statp.st_ctime < ff_pkt->save_time)))
    {
       return false;
-   } 
+   }
 
    return true;
 }
@@ -319,7 +299,7 @@ static bool have_ignoredir(FF_PKT *ff_pkt)
       return false;
    }
    ignoredir = ff_pkt->fileset->incexe->ignoredir;
-   
+
    if (ignoredir) {
       if (!ff_pkt->ignoredir_fname) {
          ff_pkt->ignoredir_fname = get_pool_memory(PM_FNAME);
@@ -329,12 +309,12 @@ static bool have_ignoredir(FF_PKT *ff_pkt)
          Dmsg2(100, "Directory '%s' ignored (found %s)\n",
                ff_pkt->fname, ignoredir);
          return true;      /* Just ignore this directory */
-      } 
+      }
    }
    return false;
 }
 
-/* 
+/*
  * When the current file is a hardlink, the backup code can compute
  * the checksum and store it into the link_t structure.
  */
@@ -359,7 +339,7 @@ ff_pkt_set_link_digest(FF_PKT *ff_pkt,
  *  descending into a directory.
  */
 int
-find_one_file(JCR *jcr, FF_PKT *ff_pkt, 
+find_one_file(JCR *jcr, FF_PKT *ff_pkt,
                int handle_file(JCR *jcr, FF_PKT *ff, bool top_level),
                char *fname, dev_t parent_device, bool top_level)
 {
@@ -435,8 +415,8 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt,
     * since our last "save_time", presumably the last Full save
     * or Incremental.
     */
-   if (   !S_ISDIR(ff_pkt->statp.st_mode) 
-       && !check_changes(jcr, ff_pkt)) 
+   if (   !S_ISDIR(ff_pkt->statp.st_mode)
+       && !check_changes(jcr, ff_pkt))
    {
       Dmsg1(500, "Non-directory incremental: %s\n", ff_pkt->fname);
       ff_pkt->type = FT_NOCHG;
@@ -458,6 +438,7 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt,
           ff_pkt->ff_errno = errno;
           return handle_file(jcr, ff_pkt, top_level);
        }
+       return -1; /* ignore */
    }
 #endif
 
@@ -501,7 +482,7 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt,
              ff_pkt->digest_stream = lp->digest_stream;
              ff_pkt->digest_len = lp->digest_len;
              rtn_stat = handle_file(jcr, ff_pkt, top_level);
-             Dmsg3(400, "FT_LNKSAVED FI=%d LinkFI=%d file=%s\n", 
+             Dmsg3(400, "FT_LNKSAVED FI=%d LinkFI=%d file=%s\n",
                 ff_pkt->FileIndex, lp->FileIndex, lp->name);
              return rtn_stat;
          }
@@ -542,11 +523,11 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt,
       if (ff_pkt->linked) {
          ff_pkt->linked->FileIndex = ff_pkt->FileIndex;
       }
-      Dmsg3(400, "FT_REG FI=%d linked=%d file=%s\n", ff_pkt->FileIndex, 
+      Dmsg3(400, "FT_REG FI=%d linked=%d file=%s\n", ff_pkt->FileIndex,
          ff_pkt->linked ? 1 : 0, fname);
       if (ff_pkt->flags & FO_KEEPATIME) {
          utime(fname, &restore_times);
-      }       
+      }
       return rtn_stat;
 
 
@@ -613,32 +594,8 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt,
       }
       /*
        * We have set st_rdev to 1 if it is a reparse point, otherwise 0,
-       *  if st_rdev is 2, it is a mount point 
+       *  if st_rdev is 2, it is a mount point
        */
-#if defined(HAVE_WIN32)
-      /*
-       * A reparse point (WIN32_REPARSE_POINT)
-       *  is something special like one of the following: 
-       *  IO_REPARSE_TAG_DFS              0x8000000A
-       *  IO_REPARSE_TAG_DFSR             0x80000012
-       *  IO_REPARSE_TAG_HSM              0xC0000004
-       *  IO_REPARSE_TAG_HSM2             0x80000006
-       *  IO_REPARSE_TAG_SIS              0x80000007
-       *  IO_REPARSE_TAG_SYMLINK          0xA000000C
-       *
-       * A junction point is a:
-       *  IO_REPARSE_TAG_MOUNT_POINT      0xA0000003
-       * which can be either a link to a Volume (WIN32_MOUNT_POINT)
-       * or a link to a directory (WIN32_JUNCTION_POINT)
-       *
-       * Ignore WIN32_REPARSE_POINT and WIN32_JUNCTION_POINT
-       */
-      if (ff_pkt->statp.st_rdev == WIN32_REPARSE_POINT) {
-         ff_pkt->type = FT_REPARSE;
-      } else if (ff_pkt->statp.st_rdev == WIN32_JUNCTION_POINT) {
-         ff_pkt->type = FT_JUNCTION;
-      }
-#endif 
       /*
        * Note, we return the directory to the calling program (handle_file)
        * when we first see the directory (FT_DIRBEGIN.
@@ -677,15 +634,10 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt,
        * to cross, or we may be restricted by a list of permitted
        * file systems.
        */
-      bool is_win32_mount_point = false;
-#if defined(HAVE_WIN32)
-      is_win32_mount_point = ff_pkt->statp.st_rdev == WIN32_MOUNT_POINT;
-#endif
       if (!top_level && ff_pkt->flags & FO_NO_RECURSION) {
          ff_pkt->type = FT_NORECURSE;
          recurse = false;
-      } else if (!top_level && (parent_device != ff_pkt->statp.st_dev ||
-                 is_win32_mount_point)) {
+      } else if (!top_level && (parent_device != ff_pkt->statp.st_dev)) {
          if(!(ff_pkt->flags & FO_MULTIFS)) {
             ff_pkt->type = FT_NOFSCHG;
             recurse = false;
@@ -833,7 +785,7 @@ int term_find_one(FF_PKT *ff)
    int count = 0;
    int i;
 
-   
+
    if (ff->linkhash == NULL) return 0;
 
    for (i =0 ; i < LINK_HASHTABLE_SIZE; i ++) {
diff --git a/src/findlib/fstype.c b/src/findlib/fstype.c
index 4765f94..82d2b91 100644
--- a/src/findlib/fstype.c
+++ b/src/findlib/fstype.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Implement routines to determine file system types.
diff --git a/src/findlib/mkpath.c b/src/findlib/makepath.c
similarity index 89%
rename from src/findlib/mkpath.c
rename to src/findlib/makepath.c
index 985fdd8..511c628 100644
--- a/src/findlib/mkpath.c
+++ b/src/findlib/makepath.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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,22 +28,26 @@
 
 /*
  *  Kern Sibbald, September MMVII
- * 
+ *
  *  This is tricky code, especially when writing from scratch. Fortunately,
  *    a non-copyrighted version of mkdir was available to consult.
- *
- * ***FIXME*** the mkpath code could be significantly optimized by
- *   walking up the path chain from the bottom until it either gets
- *   to the top or finds an existing directory then walk back down
- *   creating the path components.  Currently, it always starts at
- *   the top, which can be rather inefficient for long path names.
- *
  */
 #include "bacula.h"
 #include "jcr.h"
 
 #define dbglvl 50
 
+/*
+ * For old systems that don't have lchown() or lchmod()
+ */
+#ifndef HAVE_LCHOWN
+#define lchown chown
+#endif
+#ifndef HAVE_LCHMOD
+#define lchmod chmod
+#endif
+
+
 typedef struct PrivateCurDir {
    hlink link;
    char fname[1];
@@ -76,11 +80,11 @@ bool path_list_add(JCR *jcr, uint32_t len, char *fname)
 
    /* we store CurDir, fname in the same chunk */
    item = (CurDir *)jcr->path_list->hash_malloc(sizeof(CurDir)+len+1);
-   
+
    memset(item, 0, sizeof(CurDir));
    memcpy(item->fname, fname, len+1);
 
-   jcr->path_list->insert(item->fname, item); 
+   jcr->path_list->insert(item->fname, item);
 
    Dmsg1(dbglvl, "add fname=<%s>\n", fname);
    return ret;
@@ -133,7 +137,7 @@ static bool makedir(JCR *jcr, char *path, mode_t mode, int *created)
    if (mkdir(path, mode) != 0) {
       berrno be;
       *created = false;
-      if (stat(path, &statp) != 0) {
+      if (lstat(path, &statp) != 0) {
          Jmsg2(jcr, M_ERROR, 0, _("Cannot create directory %s: ERR=%s\n"),
               path, be.bstrerror());
          return false;
@@ -143,6 +147,15 @@ static bool makedir(JCR *jcr, char *path, mode_t mode, int *created)
       }
       return true;                 /* directory exists */
    }
+   if (S_ISLNK(statp.st_mode)) {
+      /*
+       * Note, we created a directory, not a link, so if we find a
+       *  link, there is a security problem here.
+       */
+      Jmsg1(jcr, M_FATAL, 0, _("Security problem!! We created directory %s, but it is a link.\n"),
+         path);
+      return false;
+   }
 
    if (jcr->keep_path_list) {
       /* When replace=NEVER, we keep track of all directories newly created */
@@ -153,9 +166,13 @@ static bool makedir(JCR *jcr, char *path, mode_t mode, int *created)
    return true;
 }
 
+/*
+ * Restore the owner and permissions (mode) of a Directory.
+ *  See attribs.c for the equivalent for files.
+ */
 static void set_own_mod(ATTR *attr, char *path, uid_t owner, gid_t group, mode_t mode)
 {
-   if (chown(path, owner, group) != 0 && attr->uid == 0
+   if (lchown(path, owner, group) != 0 && attr->uid == 0
 #ifdef AFS
         && errno != EPERM
 #endif
@@ -164,7 +181,7 @@ static void set_own_mod(ATTR *attr, char *path, uid_t owner, gid_t group, mode_t
       Jmsg2(attr->jcr, M_WARNING, 0, _("Cannot change owner and/or group of %s: ERR=%s\n"),
            path, be.bstrerror());
    }
-   if (chmod(path, mode) != 0 && attr->uid == 0) {
+   if (lchmod(path, mode) != 0 && attr->uid == 0) {
       berrno be;
       Jmsg2(attr->jcr, M_WARNING, 0, _("Cannot change permissions of %s: ERR=%s\n"),
            path, be.bstrerror());
@@ -174,7 +191,7 @@ static void set_own_mod(ATTR *attr, char *path, uid_t owner, gid_t group, mode_t
 /*
  * mode is the mode bits to use in creating a new directory
  *
- * parent_mode are the parent's modes if we need to create parent 
+ * parent_mode are the parent's modes if we need to create parent
  *    directories.
  *
  * owner and group are to set on any created dirs
@@ -286,8 +303,9 @@ 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 */
+   /* Don't propagate the hidden or encrypted attributes to parent directories */
    parent_mode &= ~S_ISVTX;
+   parent_mode &= ~S_ISGID;
 
    if (path[1] == ':') {
       p = &path[3];
diff --git a/src/findlib/match.c b/src/findlib/match.c
index beffad5..ba85de6 100644
--- a/src/findlib/match.c
+++ b/src/findlib/match.c
@@ -1,39 +1,27 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- *     Old style 
+ *     Old style
  *
  *  Routines used to keep and match include and exclude
  *   filename/pathname patterns.
  *
  *  Note, this file is used for the old style include and
  *   excludes, so is deprecated. The new style code is
- *   found in find.c.   
+ *   found in find.c.
  *  This code is still used for lists in testls and bextract.
  *
  *   Kern E. Sibbald, December MMI
@@ -236,14 +224,6 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, const char *fname)
          break;
       }
    }
-#if defined(HAVE_WIN32)
-   /* Convert any \'s into /'s */
-   for (p=inc->fname; *p; p++) {
-      if (*p == '\\') {
-         *p = '/';
-      }
-   }
-#endif
    inc->next = NULL;
    /* Chain this one on the end of the list */
    if (!ff->included_files_list) {
@@ -256,7 +236,7 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, const char *fname)
          { }
       next->next = inc;
    }
-   Dmsg4(100, "add_fname_to_include prefix=%d compres=%d alg= %d fname=%s\n", 
+   Dmsg4(100, "add_fname_to_include prefix=%d compres=%d alg= %d fname=%s\n",
          prefixed, !!(inc->options & FO_COMPRESS), inc->algo, inc->fname);
 }
 
@@ -283,14 +263,6 @@ void add_fname_to_exclude_list(FF_PKT *ff, const char *fname)
    exc->next = *list;
    exc->len = len;
    strcpy(exc->fname, fname);
-#if defined(HAVE_WIN32)
-   /* Convert any \'s into /'s */
-   for (char *p=exc->fname; *p; p++) {
-      if (*p == '\\') {
-         *p = '/';
-      }
-   }
-#endif
    *list = exc;
 }
 
@@ -387,16 +359,6 @@ int file_is_excluded(FF_PKT *ff, const char *file)
 {
    const char *p;
 
-#if defined(HAVE_WIN32)
-   /*
-    *  ***NB*** this removes the drive from the exclude
-    *  rule.  Why?????
-    */
-   if (file[1] == ':') {
-      file += 2;
-   }
-#endif
-
    if (file_in_excluded_list(ff->excluded_paths_list, file)) {
       return 1;
    }
diff --git a/src/tray-monitor/tray-monitor.h b/src/findlib/priv.c
similarity index 67%
rename from src/tray-monitor/tray-monitor.h
rename to src/findlib/priv.c
index 59f6af5..0bd0495 100644
--- a/src/tray-monitor/tray-monitor.h
+++ b/src/findlib/priv.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
@@ -26,32 +26,22 @@
    Switzerland, email:ftf at fsfeurope.org.
 */
 /*
- * Includes specific to the tray monitor
+ *  Enable backup privileges for Win32 systems.
  *
- *     Nicolas Boichat, August MMIV
+ *    Kern Sibbald, May MMIII
  *
- *    Version $Id$
  */
 
-#include <gtk/gtk.h>
+#include "bacula.h"
+#include "jcr.h"
 
-#include "tray_conf.h"
 
-#include "jcr.h"
+/*=============================================================*/
+/*                                                             */
+/*                 * * *  U n i x * * * *                      */
+/*                                                             */
+/*=============================================================*/
+
+int enable_backup_privileges(JCR *jcr, int ignore_errors)
+ { return 0; }
 
-enum stateenum {
-   idle = 0,
-   running = 1,
-   warn = 2,
-   error = 3
-};
-
-struct monitoritem {
-   rescode type; /* R_DIRECTOR, R_CLIENT or R_STORAGE */
-   void* resource; /* DIRRES*, CLIENT* or STORE* */
-   BSOCK *D_sock;
-   stateenum state;
-   stateenum oldstate;
-   GtkWidget* image;
-   GtkWidget* label;
-};
diff --git a/src/findlib/protos.h b/src/findlib/protos.h
index 5b218b3..caf331c 100644
--- a/src/findlib/protos.h
+++ b/src/findlib/protos.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Prototypes for finlib directory of Bacula
@@ -64,13 +52,13 @@ struct s_included_file *get_next_included_file(FF_PKT *ff,
                            struct s_included_file *inc);
 
 /* From find_one.c */
-int   find_one_file(JCR *jcr, FF_PKT *ff, 
+int   find_one_file(JCR *jcr, FF_PKT *ff,
                int handle_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level),
                char *p, dev_t parent_device, bool top_level);
 int   term_find_one(FF_PKT *ff);
 bool  has_file_changed(JCR *jcr, FF_PKT *ff_pkt);
 bool check_changes(JCR *jcr, FF_PKT *ff_pkt);
-void ff_pkt_set_link_digest(FF_PKT *ff_pkt, 
+void ff_pkt_set_link_digest(FF_PKT *ff_pkt,
                             int32_t digest_stream, const char *digest, uint32_t len);
 
 /* From get_priv.c */
diff --git a/src/findlib/savecwd.c b/src/findlib/savecwd.c
deleted file mode 100644
index c09766a..0000000
--- a/src/findlib/savecwd.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-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.
-*/
-
-/*
- *  Kern Sibbald, August MMVII
- *
- */
-
-#include "bacula.h"
-#include "savecwd.h"
-
-/* 
- * Attempt to save the current working directory by various means so that
- *  we can optimize code by doing a cwd and then restore the cwd.
- */
-
-#ifdef HAVE_FCHDIR
-static bool fchdir_failed = false;          /* set if we get a fchdir failure */
-#else
-static bool fchdir_failed = true;           /* set if we get a fchdir failure */
-#endif
-
-/* 
- * Save current working directory.
- * Returns: true if OK
- *          false if failed
- */
-bool saveCWD::save(JCR *jcr)
-{
-   release();                                /* clean up */
-   if (!fchdir_failed) {
-      m_fd = open(".", O_RDONLY);
-      if (m_fd < 0) {
-         berrno be;
-         Jmsg1(jcr, M_ERROR, 0, _("Cannot open current directory: ERR=%s\n"), be.bstrerror());
-         m_saved = false;
-         return false;
-      }
-   }
-
-   if (fchdir_failed) {
-      POOLMEM *buf = get_memory(5000);
-      m_cwd = (POOLMEM *)getcwd(buf, sizeof_pool_memory(buf));
-      if (m_cwd == NULL) {
-         berrno be;
-         Jmsg1(jcr, M_ERROR, 0, _("Cannot get current directory: ERR=%s\n"), be.bstrerror());
-         free_pool_memory(buf);
-         m_saved = false;
-         return false;
-      }
-   }
-   m_saved = true;
-   return true;
-}
-
-/*
- * Restore previous working directory.
- * Returns: true if OK
- *          false if failed
- */
-bool saveCWD::restore(JCR *jcr)
-{
-   if (!m_saved) {
-      return true;
-   }
-   m_saved = false;
-   if (m_fd >= 0) {
-      if (fchdir(m_fd) != 0) {
-         berrno be;
-         Jmsg1(jcr, M_ERROR, 0, _("Cannot reset current directory: ERR=%s\n"), be.bstrerror());
-         close(m_fd);
-         m_fd = -1;
-         fchdir_failed = true;
-         chdir("/");                  /* punt */
-         return false;
-      }
-      return true;
-   }
-   if (chdir(m_cwd) < 0) {
-      berrno be;
-      Jmsg1(jcr, M_ERROR, 0, _("Cannot reset current directory: ERR=%s\n"), be.bstrerror());
-      chdir("/");
-      free_pool_memory(m_cwd);
-      m_cwd = NULL;
-      return false;
-   }
-   return true;
-}       
-
-void saveCWD::release()
-{
-   if (!m_saved) {
-      return;
-   }
-   m_saved = false;
-   if (m_fd >= 0) {
-      close(m_fd);
-      m_fd = -1;
-   }
-   if (m_cwd) {
-      free_pool_memory(m_cwd);
-      m_cwd = NULL;
-   }
-}
diff --git a/src/findlib/savecwd.h b/src/findlib/savecwd.h
deleted file mode 100644
index bdd5032..0000000
--- a/src/findlib/savecwd.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-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.
-*/
-
-/*
- *  Kern Sibbald, August MMVII
- *
- */
-
-#ifndef _SAVECWD_H
-#define _SAVECWD_H 1
-
-class saveCWD {
-   bool m_saved;                   /* set if we should do chdir i.e. save_cwd worked */
-   int m_fd;                       /* fd of current dir before chdir */
-   char *m_cwd;                    /* cwd before chdir if fd fchdir() works */
-
-public:
-   saveCWD() { m_saved=false; m_fd=-1; m_cwd=NULL; };
-   ~saveCWD() { release(); };
-   bool save(JCR *jcr);
-   bool restore(JCR *jcr);
-   void release();
-   bool is_saved() { return m_saved; };
-};
-
-#endif /* _SAVECWD_H */
diff --git a/src/findlib/testresults.txt b/src/findlib/testresults.txt
deleted file mode 100644
index 16e7900..0000000
--- a/src/findlib/testresults.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-Ovni (Win2000 c:/) testfind results:
-Err: Could not stat /PAGEFILE.SYS: Permission denied
-Total files    : 68155
-Max file length: 69
-Max path length: 132
-Files truncated: 0
-Paths truncated: 0
-
-Minou (WinNT c:/ d:/) testfind results: 
-Err: Could not stat c:/pagefile.sys: Permission denied
-Err: Could not stat d:/pagefile.sys: Permission denied
-Total files    : 33112
-Max file length: 91
-Max path length: 85
-Files truncated: 0
-Paths truncated: 0
-
-Minimatou (Win98 c:/) testfind results:
-Total files    : 87276
-Max file length: 140
-Max path length: 107
-Files truncated: 0
-Paths truncated: 0
-
-moby (Solaris) testfind results:
-Total files    : 248263
-Max file length: 82
-Max path length: 114
-Files truncated: 0
-Paths truncated: 0
-
-polymatou (Linux) testfind results:
-Total files    : 207176
-Max file length: 82
-Max path length: 105
-Files truncated: 0
-Paths truncated: 0
-
-rufus (Linux) testfind results:
-Total files    : 170280
-Max file length: 84
-Max path length: 121
-Files truncated: 0
-Paths truncated: 0
diff --git a/src/gcc-Wall b/src/gcc-Wall
deleted file mode 100755
index 9c5ccc1..0000000
--- a/src/gcc-Wall
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-# gcc -Wall plus other important warnings not included in -Wall
-
-for arg
-do
-    case $arg in
-	-O*) Wuninitialized=-Wuninitialized;;  # only makes sense with `-O'
-    esac
-done
-
-exec gcc \
-	-Wall $Wuninitialized \
-	-Wwrite-strings \
-	-Wcast-qual \
-	-Wbad-function-cast \
-	-Wpointer-arith \
-	-Wstrict-prototypes \
-	-Wmissing-prototypes \
-	-Wmissing-declarations \
-	-Wnested-externs \
-	-Wtraditional \
-	-Wconversion \
-	-Wcomment \
-	-Wcast-align \
-	-Winline \
-	-Wshadow \
-	-Wredundant-decls \
-	-Wid-clash-31 \
-	"$@"
-
-#    -Wall implies:
-#	-Wimplicit
-#	-Wreturn-type
-#	-Wunused
-#	-Wswitch
-#	-Wformat
-#	-Wchar-subscripts
-#	-Wparentheses
-#	-Wmissing-braces
-------------------------------------------------------------------------------
diff --git a/src/host.h.in b/src/host.h.in
index 3fdbb05..801e945 100644
--- a/src/host.h.in
+++ b/src/host.h.in
@@ -3,27 +3,15 @@
 
    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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Define Host machine
diff --git a/src/jcr.h b/src/jcr.h
index 0ff93ab..ef56593 100644
--- a/src/jcr.h
+++ b/src/jcr.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula JCR Structure definition for Daemons and the Library
@@ -31,8 +19,7 @@
  *  to all daemons and used by the library routines, and a
  *  daemon specific part that is enabled with #defines.
  *
- * Kern Sibbald, Nov MM
- *
+ *  Written by Kern Sibbald, Nov MM
  */
 
 
@@ -75,7 +62,6 @@
 #define JS_Differences           'D'  /* Verify differences */
 #define JS_ErrorTerminated       'E'  /* Job terminated in error */
 #define JS_WaitFD                'F'  /* waiting on File daemon */
-#define JS_Incomplete            'I'  /* Incomplete Job */
 #define JS_DataCommitting        'L'  /* Committing data (last despool) */
 #define JS_WaitMount             'M'  /* waiting for Mount */
 #define JS_Running               'R'  /* running */
@@ -95,7 +81,7 @@
 #define JS_WaitPriority          'p'  /* Waiting for higher priority jobs to finish */
 #define JS_WaitDevice            'q'  /* Queued waiting for device */
 #define JS_WaitStoreRes          's'  /* Waiting for storage resource */
-#define JS_WaitStartTime         't'  /* Waiting for start time */ 
+#define JS_WaitStartTime         't'  /* Waiting for start time */
 
 
 /* Migration selection types */
@@ -140,8 +126,8 @@ enum {
 
 #define endeach_jcr(jcr) jcr_walk_end(jcr)
 
-#define SD_APPEND 1
-#define SD_READ   0
+#define SD_APPEND true
+#define SD_READ   false
 
 /* Forward referenced structures */
 class JCR;
@@ -193,7 +179,6 @@ public:
    void destroy_mutex(void) {pthread_mutex_destroy(&mutex); };
    bool is_job_canceled() {return job_canceled(this); };
    bool is_canceled() {return job_canceled(this); };
-   bool is_incomplete() { return JobStatus == JS_Incomplete; };
    bool is_JobLevel(int32_t JobLevel) { return JobLevel == m_JobLevel; };
    bool is_JobType(int32_t JobType) { return JobType == m_JobType; };
    bool is_JobStatus(int32_t aJobStatus) { return aJobStatus == JobStatus; };
@@ -205,8 +190,7 @@ public:
    int32_t getJobLevel() const { return m_JobLevel; };
    int32_t getJobStatus() const { return JobStatus; };
    bool no_client_used() const {
-      return (m_JobType == JT_MIGRATE || m_JobType == JT_COPY ||
-              m_JobLevel == L_VIRTUAL_FULL);
+      return (m_JobLevel == L_VIRTUAL_FULL);
    };
    const char *get_OperationName();       /* in lib/jcr.c */
    const char *get_ActionName(bool past); /* in lib/jcr.c */
@@ -244,11 +228,12 @@ public:
    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 */
+   uint64_t ReadBytes;                /* Bytes read */
    FileId_t FileId;                   /* Last FileId used */
    volatile int32_t JobStatus;        /* ready, running, blocked, terminated */
    int32_t JobPriority;               /* Job priority */
    time_t sched_time;                 /* job schedule time, i.e. when it should start */
+   time_t initial_sched_time;         /* original sched time before any reschedules are done */
    time_t start_time;                 /* when job actually started */
    time_t run_time;                   /* used for computing speed */
    time_t last_time;                  /* Last sample time */
@@ -280,6 +265,7 @@ public:
    bool HasBase;                      /* True if job use base jobs */
    bool rerunning;                    /* rerunning an incomplete job */
    bool job_started;                  /* Set when the job is actually started */
+   bool sd_calls_client;              /* Set for SD to call client (FD/SD) */
 
    void *Python_job;                  /* Python Job Object */
    void *Python_events;               /* Python Events Object */
@@ -312,12 +298,14 @@ public:
    BSOCK *ua;                         /* User agent */
    JOB *job;                          /* Job resource */
    JOB *verify_job;                   /* Job resource of verify previous job */
+   alist *plugin_config;              /* List of ConfigFile needed for restore */
    alist *rstorage;                   /* Read storage possibilities */
    STORE *rstore;                     /* Selected read storage */
    alist *wstorage;                   /* Write storage possibilities */
    STORE *wstore;                     /* Selected write storage */
    CLIENT *client;                    /* Client resource */
    POOL *pool;                        /* Pool resource = write for migration */
+   POOL *next_pool;                   /* Next pool override */
    POOL *rpool;                       /* Read pool. Used only in migration */
    POOL *full_pool;                   /* Full backup pool resource */
    POOL *inc_pool;                    /* Incremental backup pool resource */
@@ -333,14 +321,13 @@ public:
    uint32_t ExpectedFiles;            /* Expected restore files */
    uint32_t MediaId;                  /* DB record IDs associated with this job */
    uint32_t FileIndex;                /* Last FileIndex processed */
-   utime_t MaxRunSchedTime;           /* max run time in seconds from Scheduled time*/
+   utime_t MaxRunSchedTime;           /* max run time in seconds from Initial Scheduled time */
    POOLMEM *fname;                    /* name to put into catalog */
-   POOLMEM *component_fname;          /* Component info file name */
-   FILE *component_fd;                /* Component info file desc */
+   POOLMEM *media_type;               /* Set if user supplied Storage */
    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 */
-   JCR *mig_jcr;                      /* JCR for migration/copy job */
+   JCR *wjcr;                         /* JCR for migration/copy write job */
    char FSCreateTime[MAX_TIME_LENGTH]; /* FileSet CreateTime as returned from DB */
    char since[MAX_TIME_LENGTH];       /* since time */
    char PrevJob[MAX_NAME_LENGTH];     /* Previous job name assiciated with since time */
@@ -350,6 +337,7 @@ public:
    };
    POOLMEM *client_uname;             /* client uname */
    POOLMEM *pool_source;              /* Where pool came from */
+   POOLMEM *next_pool_source;         /* Where next pool came from */
    POOLMEM *rpool_source;             /* Where migrate read pool came from */
    POOLMEM *rstore_source;            /* Where read storage came from */
    POOLMEM *wstore_source;            /* Where write storage came from */
@@ -358,8 +346,10 @@ public:
    int32_t NumVols;                   /* Number of Volume used in pool */
    int32_t reschedule_count;          /* Number of times rescheduled */
    int32_t FDVersion;                 /* File daemon version number */
+   int32_t SDVersion;                 /* Storage daemon version number */
    int64_t spool_size;                /* Spool size for this job */
    volatile bool sd_msg_thread_done;  /* Set when Storage message thread done */
+   bool SD_msg_chan_started;          /* Set if message thread started */
    bool wasVirtualFull;               /* set if job was VirtualFull */
    bool IgnoreDuplicateJobChecking;   /* set in migration jobs */
    bool spool_data;                   /* Spool data in SD */
@@ -377,11 +367,14 @@ public:
    bool keep_sd_auth_key;             /* Clear or not the SD auth key after connection*/
    bool use_accurate_chksum;          /* Use or not checksum option in accurate code */
    bool run_pool_override;
+   bool run_next_pool_override;       /* Next pool is overridden */
    bool run_full_pool_override;
    bool run_inc_pool_override;
    bool run_diff_pool_override;
    bool sd_canceled;                  /* set if SD canceled */
    bool RescheduleIncompleteJobs;     /* set if incomplete can be rescheduled */
+   bool use_all_JobIds;               /* Use all jobids present in command line */
+   bool sd_client;                    /* This job runs as SD client */
 #endif /* DIRECTOR_DAEMON */
 
 
@@ -390,10 +383,13 @@ public:
    uint32_t num_files_examined;       /* files examined this job */
    POOLMEM *last_fname;               /* last file saved/verified */
    POOLMEM *job_metadata;             /* VSS job metadata */
+   pthread_cond_t job_start_wait;     /* Wait for SD to start Job */
    acl_data_t *acl_data;              /* ACLs for backup/restore */
    xattr_data_t *xattr_data;          /* Extended Attributes for backup/restore */
    int32_t last_type;                 /* type of last file saved/verified */
    int incremental;                   /* set if incremental for SINCE */
+   time_t last_stat_time;             /* Last time stats sent to Dir */
+   time_t stat_interval;              /* Stats send interval */
    utime_t mtime;                     /* begin time for SINCE */
    int listing;                       /* job listing in estimate */
    long Ticket;                       /* Ticket */
@@ -440,11 +436,16 @@ public:
    POOLMEM *job_name;                 /* base Job name (not unique) */
    POOLMEM *fileset_name;             /* FileSet */
    POOLMEM *fileset_md5;              /* MD5 for FileSet */
+   char stored_addr[MAX_NAME_LENGTH]; /* storage daemon address */
+   char client_addr[MAX_NAME_LENGTH]; /* client daemon address */
    VOL_LIST *VolList;                 /* list to read */
    int32_t NumWriteVolumes;           /* number of volumes written */
    int32_t NumReadVolumes;            /* total number of volumes to read */
    int32_t CurReadVolume;             /* current read volume number */
    int32_t label_errors;              /* count of label errors */
+   int32_t DIRVersion;                /* Director version number */
+   int32_t FDVersion;                 /* File daemon version number */
+   int32_t SDVersion;                 /* Storage daemon version number */
    bool session_opened;
    long Ticket;                       /* ticket for this job */
    bool ignore_label_errors;          /* ignore Volume label errors */
@@ -454,13 +455,14 @@ public:
    bool spool_data;                   /* set to spool data */
    int32_t CurVol;                    /* Current Volume count */
    DIRRES* director;                  /* Director resource */
-   alist *write_store;                /* list of write storage devices sent by DIR */ 
+   alist *write_store;                /* list of write storage devices sent by DIR */
    alist *read_store;                 /* list of read devices sent by DIR */
    alist *reserve_msgs;               /* reserve fail messages */
    bool write_part_after_job;         /* Set to write part after job */
    bool PreferMountedVols;            /* Prefer mounted vols rather than new */
    bool Resched;                      /* Job may be rescheduled */
    bool bscan_insert_jobmedia_records; /*Bscan: needs to insert job media records */
+   bool sd_client;                    /* Set if acting as client */
 
    /* Parmaters for Open Read Session */
    BSR *bsr;                          /* Bootstrap record -- has everything */
@@ -484,7 +486,7 @@ public:
 
 /*
  * Setting a NULL in tsd doesn't clear the tsd but instead tells
- *   pthreads not to call the tsd destructor. Consequently, we 
+ *   pthreads not to call the tsd destructor. Consequently, we
  *   define this *invalid* jcr address and stuff it in the tsd
  *   when the jcr is not valid.
  */
diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
index 009f157..82ec57e 100644
--- a/src/lib/Makefile.in
+++ b/src/lib/Makefile.in
@@ -5,10 +5,8 @@
 # Define library versions
 LIBBAC_LT_RELEASE = @LIBBAC_LT_RELEASE@
 LIBBACCFG_LT_RELEASE = @LIBBACCFG_LT_RELEASE@
-LIBBACPY_LT_RELEASE = @LIBBACPY_LT_RELEASE@
 
 #
-python = @PYTHON_INCDIR@
 
 srcdir =	.
 VPATH = 	.
@@ -43,7 +41,7 @@ INCLUDE_FILES = ../baconfig.h ../bacula.h ../bc_types.h \
 		smartall.h status.h tls.h tree.h var.h \
 		waitq.h watchdog.h workq.h \
 		parse_conf.h ini.h \
-		pythonlib.h lockmgr.h devlock.h
+		lockmgr.h devlock.h
 
 #
 # libbac
@@ -70,12 +68,6 @@ LIBBACCFG_SRCS = ini.c parse_conf.c res.c
 LIBBACCFG_OBJS = $(LIBBACCFG_SRCS:.c=.o)
 LIBBACCFG_LOBJS = $(LIBBACCFG_SRCS:.c=.lo)
 
-#
-# libbacpy (python functions)
-#
-LIBBACPY_SRCS = pythonlib.c
-LIBBACPY_OBJS = $(LIBBACPY_SRCS:.c=.o)
-LIBBACPY_LOBJS = $(LIBBACPY_SRCS:.c=.lo)
 
 .SUFFIXES:	.c .cc .o .lo .ch .dvi .pdf .tex .view .w .1
 .PHONY:
@@ -84,32 +76,25 @@ LIBBACPY_LOBJS = $(LIBBACPY_SRCS:.c=.lo)
 # inference rules
 .c.o:
 	@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) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
 .c.lo:
 	@echo "Compiling $<"
-	$(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+	$(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
 .cc.o:
 	@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) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
 .cc.lo:
 	@echo "Compiling $<"
-	$(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+	$(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
 # specific build rules
 
-pythonlib.o: pythonlib.c
-	@echo "Compiling $<"
-	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(python) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
-
-pythonlib.lo: pythonlib.c
-	@echo "Compiling $<"
-	$(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(python) -I../configlib -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
 #-------------------------------------------------------------------------
-all: Makefile libbac$(DEFAULT_ARCHIVE_TYPE) libbaccfg$(DEFAULT_ARCHIVE_TYPE) libbacpy$(DEFAULT_ARCHIVE_TYPE) 
+all: Makefile libbac$(DEFAULT_ARCHIVE_TYPE) libbaccfg$(DEFAULT_ARCHIVE_TYPE) 
 	@echo "==== Make of lib is good ===="
 	@echo " "
 
@@ -131,15 +116,6 @@ libbaccfg.la: Makefile $(LIBBACCFG_LOBJS)
 	@echo "Making $@ ..."
 	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(LIBBACCFG_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCFG_LT_RELEASE) $(OPENSSL_LIBS) $(LIBS)
 
-libbacpy.a: $(LIBBACPY_OBJS) 
-	@echo "Making $@ ..."
-	$(AR) rc  $@ $(LIBBACPY_OBJS)
-	$(RANLIB) $@
-
-libbacpy.la: Makefile $(LIBBACPY_LOBJS) 
-	@echo "Making $@ ..."
-	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(LIBBACPY_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACPY_LT_RELEASE) $(PYTHON_LIBS) $(OPENSSL_LIBS) $(LIBS)
-
 Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
 	cd $(topdir) \
 	  && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
@@ -232,7 +208,6 @@ libtool-install: all
 	$(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)
 
 libtool-uninstall:
 	$(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(libdir)/libbac.la
@@ -268,8 +243,8 @@ depend:
 	@$(MV) Makefile Makefile.bak
 	@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
 	@$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
-	@for src in $(LIBBAC_SRCS) $(LIBBACCFG_SRCS) $(LIBBACPY_SRCS); do \
-	    $(CXX) -S -M -MT `basename $$src .c`$(DEFAULT_OBJECT_TYPE) $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $$src >> Makefile; \
+	@for src in $(LIBBAC_SRCS) $(LIBBACCFG_SRCS); do \
+	    $(CXX) -S -M -MT `basename $$src .c`$(DEFAULT_OBJECT_TYPE) $(CPPFLAGS) $(XINC) -I$(srcdir) -I$(basedir) $$src >> Makefile; \
 	done
 	@if test -f Makefile ; then \
 	    $(RMF) Makefile.bak; \
diff --git a/src/lib/address_conf.c b/src/lib/address_conf.c
index 871443e..0d5fb07 100644
--- a/src/lib/address_conf.c
+++ b/src/lib/address_conf.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Configuration file parser for IP-Addresse ipv4 and ipv6
@@ -77,7 +65,7 @@ IPADDR::IPADDR(int af) : type(R_EMPTY)
      saddr4->sin_port = 0xffff;
   }
 #ifdef HAVE_IPV6
-  else {
+  else if (af  == AF_INET6) {
      saddr6->sin6_port = 0xffff;
   }
 #endif
@@ -108,11 +96,11 @@ unsigned short IPADDR::get_port_net_order() const
       port = saddr4->sin_port;
    }
 #ifdef HAVE_IPV6
-   else {
+   else if (saddr->sa_family == AF_INET6) {
       port = saddr6->sin6_port;
    }
 #endif
-    return port;
+   return port;
 }
 
 void IPADDR::set_port_net(unsigned short port)
@@ -121,7 +109,7 @@ void IPADDR::set_port_net(unsigned short port)
       saddr4->sin_port = port;
    }
 #ifdef HAVE_IPV6
-   else {
+   else if (saddr->sa_family == AF_INET6) {
       saddr6->sin6_port = port;
    }
 #endif
@@ -132,6 +120,12 @@ int IPADDR::get_family() const
     return saddr->sa_family;
 }
 
+/*
+ * Note, this returns the address of the socket structure
+ *  not the address of the socket address.
+ *  This socket address is a union of the different types
+ *  of sockets (IPv4, ...) available, so it is portable.
+ */
 struct sockaddr *IPADDR::get_sockaddr()
 {
    return saddr;
@@ -151,7 +145,7 @@ void IPADDR::copy_addr(IPADDR *src)
       saddr4->sin_addr.s_addr = src->saddr4->sin_addr.s_addr;
    }
 #ifdef HAVE_IPV6
-   else {
+   else if (saddr->sa_family == AF_INET6) {
       saddr6->sin6_addr = src->saddr6->sin6_addr;
    }
 #endif
@@ -163,8 +157,8 @@ void IPADDR::set_addr_any()
       saddr4->sin_addr.s_addr = INADDR_ANY;
    }
 #ifdef HAVE_IPV6
-   else {
-     saddr6->sin6_addr= in6addr_any;
+   else if (saddr->sa_family == AF_INET6) {
+     saddr6->sin6_addr = in6addr_any;
    }
 #endif
 }
@@ -172,7 +166,7 @@ void IPADDR::set_addr_any()
 void IPADDR::set_addr4(struct in_addr *ip4)
 {
    if (saddr->sa_family != AF_INET) {
-      Emsg1(M_ERROR_TERM, 0, _("It was tried to assign a ipv6 address to a ipv4(%d)\n"), saddr->sa_family);
+      Emsg1(M_ERROR_TERM, 0, _("You tried to assign a ipv6 address to an ipv4(%d)\n"), saddr->sa_family);
    }
    saddr4->sin_addr = *ip4;
 }
@@ -181,7 +175,7 @@ void IPADDR::set_addr4(struct in_addr *ip4)
 void IPADDR::set_addr6(struct in6_addr *ip6)
 {
    if (saddr->sa_family != AF_INET6) {
-      Emsg1(M_ERROR_TERM, 0, _("It was tried to assign a ipv4 address to a ipv6(%d)\n"), saddr->sa_family);
+      Emsg1(M_ERROR_TERM, 0, _("You tried to assign an ipv4 address to an ipv6(%d)\n"), saddr->sa_family);
    }
    saddr6->sin6_addr = *ip6;
 }
@@ -207,9 +201,14 @@ const char *IPADDR::get_address(char *outputbuf, int outlen)
 const char *IPADDR::build_address_str(char *buf, int blen)
 {
    char tmp[1024];
-   bsnprintf(buf, blen, "host[%s:%s:%hu] ",
-            get_family() == AF_INET ? "ipv4" : "ipv6",
-            get_address(tmp, sizeof(tmp) - 1), get_port_host_order());
+   *buf = 0;
+   if (get_family() == AF_INET) {
+      bsnprintf(buf, blen, "%s:%hu ",
+                get_address(tmp, sizeof(tmp) - 1), get_port_host_order());
+   } else if (get_family() == AF_INET6) {
+      bsnprintf(buf, blen, "[%s]:%hu ",
+                get_address(tmp, sizeof(tmp) - 1), get_port_host_order());
+   }
    return buf;
 }
 
@@ -255,13 +254,15 @@ int get_first_port_host_order(dlist *addrs)
    }
 }
 
-void init_default_addresses(dlist **out, int port)
+void init_default_addresses(dlist **addr_list, int port)
 {
    char buf[1024];
    unsigned short sport = port;
-   if (!add_address(out, IPADDR::R_DEFAULT, htons(sport), AF_INET, 0, 0, buf, sizeof(buf))) {
-      Emsg1(M_ERROR_TERM, 0, _("Can't add default address (%s)\n"), buf);
+   if (!add_address(addr_list, IPADDR::R_DEFAULT, htons(sport), AF_INET, 0, 0, buf, sizeof(buf))) {
+      Emsg1(M_ERROR_TERM, 0, _("Can't add default IPv4 address (%s)\n"), buf);
    }
+   Dmsg1(20, "Initaddr %s\n", build_addresses_str(*addr_list, buf, sizeof(buf)));
+
 }
 
 static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultport, int family,
@@ -280,8 +281,8 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
       addrs = *out = New(dlist(tmp, &tmp->link));
    }
 
-   type = (type == IPADDR::R_SINGLE_PORT
-           || type == IPADDR::R_SINGLE_ADDR) ? IPADDR::R_SINGLE : type;
+   type = (type == IPADDR::R_SINGLE_PORT ||
+           type == IPADDR::R_SINGLE_ADDR) ? IPADDR::R_SINGLE : type;
    if (type != IPADDR::R_DEFAULT) {
       IPADDR *def = 0;
       foreach_dlist(iaddr, addrs) {
@@ -289,7 +290,8 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
             def = iaddr;
          } else if (iaddr->get_type() != type) {
             bsnprintf(buf, buflen,
-                      _("the old style addresses cannot be mixed with new style"));
+                      _("Old style addresses cannot be mixed with new style. Try removing Port=nnn."));
+            Dmsg1(20, "%s\n", buf);
             return 0;
          }
       }
@@ -310,7 +312,8 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
          if (s) {
             port = s->s_port;
          } else {
-            bsnprintf(buf, buflen, _("can't resolve service(%s)"), port_str);
+            bsnprintf(buf, buflen, _("Cannot resolve service(%s)"), port_str);
+            Dmsg1(20, "%s\n", buf);
             return 0;
          }
       }
@@ -319,8 +322,9 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
    const char *myerrstr;
    hostaddrs = bnet_host2ipaddrs(hostname_str, family, &myerrstr);
    if (!hostaddrs) {
-      bsnprintf(buf, buflen, _("can't resolve hostname(%s) %s"), hostname_str,
+      bsnprintf(buf, buflen, _("Cannot resolve hostname(%s) %s"), hostname_str,
                 myerrstr);
+      Dmsg1(20, "%s\n", buf);
       return 0;
    }
 
@@ -347,7 +351,7 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
          /* for duplicates */
          foreach_dlist(jaddr, addrs) {
             if (iaddr->get_sockaddr_len() == jaddr->get_sockaddr_len() &&
-            !memcmp(iaddr->get_sockaddr(), jaddr->get_sockaddr(),
+                !memcmp(iaddr->get_sockaddr(), jaddr->get_sockaddr(),
                     iaddr->get_sockaddr_len()))
                 {
                goto skip;          /* no price */
@@ -366,6 +370,22 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
 }
 
 /*
+ *  Some IPv6 rules from Wikipedia:
+ *
+ *  For convenience, an IPv6 address may be abbreviated to shorter
+ *  notations by application of the following rules, where possible.
+ *
+ * 1.  One or more leading zeroes from any groups of hexadecimal
+ *     digits are removed; this is usually done to either all or none of
+ *     the leading zeroes.  For example, the group 0042 is converted to
+ *     42.
+ *
+ * 2.  Consecutive sections of zeroes are replaced with a double
+ *     colon (::).  The double colon may only be used once in an
+ *     address, as multiple use would render the address indeterminate.
+ *     RFC 5952 recommends that a double colon must not be used to
+ *     denote an omitted single section of zeroes.[39]
+ *
  *   my tests
  *   positiv
  *   = { ip = { addr = 1.2.3.4; port = 1205; } ipv4 = { addr = 1.2.3.4; port = http; } }
@@ -389,8 +409,9 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp
  *     }
  *     ip = {
  *       addr = bluedot.thun.net
- (     }
+ *     }
  *   }
+ *
  *   negativ
  *   = { ip = { } }
  *   = { ipv4 { addr = doof.nowaytoheavenxyz.uhu; } }
@@ -409,7 +430,7 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass)
 
    token = lex_get_token(lc, T_SKIP_EOL);
    if (token != T_BOB) {
-      scan_err1(lc, _("Expected a block begin { , got: %s"), lc->str);
+      scan_err1(lc, _("Expected a block to begin with { but got: %s"), lc->str);
    }
 
    token = lex_get_token(lc, T_SKIP_EOL);
@@ -418,36 +439,38 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass)
    }
    do {
       if (!(token == T_UNQUOTED_STRING || token == T_IDENTIFIER)) {
-         scan_err1(lc, _("Expected a string, got: %s"), lc->str);
+         scan_err1(lc, _("Expected a string but got: %s"), lc->str);
       }
-      if (strcasecmp("ip", lc->str) == 0 || strcasecmp("ipv4", lc->str) == 0) {
+      if (strcasecmp("ip", lc->str) == 0) {
+         family = AF_INET6;
+      } else if (strcasecmp("ipv4", lc->str) == 0) {
          family = AF_INET;
       }
 #ifdef HAVE_IPV6
       else if (strcasecmp("ipv6", lc->str) == 0) {
          family = AF_INET6;
       } else {
-         scan_err1(lc, _("Expected a string [ip|ipv4|ipv6], got: %s"), lc->str);
+         scan_err1(lc, _("Expected a string [ip|ipv4|ipv6] but got: %s"), lc->str);
       }
 #else
       else {
-         scan_err1(lc, _("Expected a string [ip|ipv4], got: %s"), lc->str);
+         scan_err1(lc, _("Expected a string [ip|ipv4] but got: %s"), lc->str);
       }
 #endif
       token = lex_get_token(lc, T_SKIP_EOL);
       if (token != T_EQUALS) {
-         scan_err1(lc, _("Expected a equal =, got: %s"), lc->str);
+         scan_err1(lc, _("Expected an equal = but got: %s"), lc->str);
       }
       token = lex_get_token(lc, T_SKIP_EOL);
       if (token != T_BOB) {
-         scan_err1(lc, _("Expected a block begin { , got: %s"), lc->str);
+         scan_err1(lc, _("Expected a block to begin with { but got: %s"), lc->str);
       }
       token = lex_get_token(lc, T_SKIP_EOL);
       exist = EMPTYLINE;
       port_str[0] = hostname_str[0] = '\0';
       do {
          if (token != T_IDENTIFIER) {
-            scan_err1(lc, _("Expected a identifier [addr|port], got: %s"), lc->str);
+            scan_err1(lc, _("Expected an identifier [addr|port] but got: %s"), lc->str);
          }
          if (strcasecmp("port", lc->str) == 0) {
             next_line = PORTLINE;
@@ -462,7 +485,7 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass)
             }
             exist |= ADDRLINE;
          } else {
-            scan_err1(lc, _("Expected a identifier [addr|port], got: %s"), lc->str);
+            scan_err1(lc, _("Expected a identifier [addr|port] but got: %s"), lc->str);
          }
          token = lex_get_token(lc, T_SKIP_EOL);
          if (token != T_EQUALS) {
@@ -472,15 +495,15 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass)
          switch (next_line) {
          case PORTLINE:
             if (!
-                (token == T_UNQUOTED_STRING || token == T_NUMBER
-                 || token == T_IDENTIFIER)) {
-               scan_err1(lc, _("Expected a number or a string, got: %s"), lc->str);
+                (token == T_UNQUOTED_STRING || token == T_NUMBER ||
+                 token == T_IDENTIFIER)) {
+               scan_err1(lc, _("Expected a number or a string but got: %s"), lc->str);
             }
             bstrncpy(port_str, lc->str, sizeof(port_str));
             break;
          case ADDRLINE:
             if (!(token == T_UNQUOTED_STRING || token == T_IDENTIFIER)) {
-               scan_err1(lc, _("Expected an IP number or a hostname, got: %s"),
+               scan_err1(lc, _("Expected an IP number or a hostname but got: %s"),
                          lc->str);
             }
             bstrncpy(hostname_str, lc->str, sizeof(hostname_str));
@@ -492,19 +515,19 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass)
          token = lex_get_token(lc, T_SKIP_EOL);
       } while (token == T_IDENTIFIER);
       if (token != T_EOB) {
-         scan_err1(lc, _("Expected a end of block }, got: %s"), lc->str);
+         scan_err1(lc, _("Expected a end of block with } but got: %s"), lc->str);
       }
 
       if (pass == 1 && !add_address((dlist **)(item->value), IPADDR::R_MULTIPLE,
-               htons(item->default_value), family, hostname_str, port_str, 
+               htons(item->default_value), family, hostname_str, port_str,
                errmsg, sizeof(errmsg))) {
-           scan_err3(lc, _("Can't add hostname(%s) and port(%s) to addrlist (%s)"),
+         scan_err3(lc, _("Cannot add hostname(%s) and port(%s) to addrlist (%s)"),
                    hostname_str, port_str, errmsg);
-        }
+      }
       token = scan_to_next_not_eol(lc);
    } while ((token == T_IDENTIFIER || token == T_UNQUOTED_STRING));
    if (token != T_EOB) {
-      scan_err1(lc, _("Expected a end of block }, got: %s"), lc->str);
+      scan_err1(lc, _("Expected an end of block with } but got: %s"), lc->str);
    }
 }
 
@@ -516,9 +539,9 @@ void store_addresses_address(LEX * lc, RES_ITEM * item, int index, int pass)
       scan_err1(lc, _("Expected an IP number or a hostname, got: %s"), lc->str);
    }
    if (pass == 1 && !add_address((dlist **)(item->value), IPADDR::R_SINGLE_ADDR,
-                    htons(item->default_value), AF_INET, lc->str, 0, 
+                    htons(item->default_value), AF_INET, lc->str, 0,
                     errmsg, sizeof(errmsg))) {
-      scan_err2(lc, _("can't add port (%s) to (%s)"), lc->str, errmsg);
+      scan_err2(lc, _("Cannot add port (%s) to (%s)"), lc->str, errmsg);
    }
 }
 
@@ -530,9 +553,9 @@ void store_addresses_port(LEX * lc, RES_ITEM * item, int index, int pass)
       scan_err1(lc, _("Expected a port number or string, got: %s"), lc->str);
    }
    if (pass == 1 && !add_address((dlist **)(item->value), IPADDR::R_SINGLE_PORT,
-                    htons(item->default_value), AF_INET, 0, lc->str, 
+                    htons(item->default_value), AF_INET, 0, lc->str,
                     errmsg, sizeof(errmsg))) {
-      scan_err2(lc, _("can't add port (%s) to (%s)"), lc->str, errmsg);
+      scan_err2(lc, _("Cannot add port (%s) to (%s)"), lc->str, errmsg);
    }
 }
 
@@ -552,7 +575,7 @@ int sockaddr_get_port_net_order(const struct sockaddr *client_addr)
       return ((struct sockaddr_in *)client_addr)->sin_port;
    }
 #ifdef HAVE_IPV6
-   else {
+   else if (client_addr->sa_family == AF_INET6) {
       return ((struct sockaddr_in6 *)client_addr)->sin6_port;
    }
 #endif
@@ -565,7 +588,7 @@ int sockaddr_get_port(const struct sockaddr *client_addr)
       return ntohs(((struct sockaddr_in *)client_addr)->sin_port);
    }
 #ifdef HAVE_IPV6
-   else {
+   else if (client_addr->sa_family == AF_INET6) {
       return ntohs(((struct sockaddr_in6 *)client_addr)->sin6_port);
    }
 #endif
@@ -573,25 +596,72 @@ int sockaddr_get_port(const struct sockaddr *client_addr)
 }
 
 
-char *sockaddr_to_ascii(const struct sockaddr *sa, char *buf, int len)
+char *sockaddr_to_ascii(const struct sockaddr *sa, int socklen, char *buf, int buflen)
 {
+#ifdef HAVE_GETNAMEINFO
+  /* This is the more modern way of doing it */
+  char clienthost[NI_MAXHOST];
+  char clientservice[NI_MAXSERV];
+  int status;
+  status = getnameinfo(sa, socklen, clienthost, sizeof(clienthost),
+                       clientservice, sizeof(clientservice),
+                       NI_NUMERICHOST | NI_NUMERICSERV);
+  if (status == 0) {
+     /* Enclose IPv6 in [] */
+     if (strchr(clienthost, ':') != NULL) {
+        bsnprintf(buf, buflen, "[%s]", clienthost);
+     } else {
+        bstrncpy(buf, clienthost, buflen);
+     }
+  } else {
+     bstrncpy(buf, "Hostname not found", buflen);
+  }
+
+#else
 #ifdef HAVE_INET_NTOP
-   /* MA Bug 5 the problem was that i mixed up sockaddr and in_addr */
    inet_ntop(sa->sa_family,
 # ifdef HAVE_IPV6
-             sa->sa_family == AF_INET ? 
+             sa->sa_family == AF_INET ?
                  (void*)&(((struct sockaddr_in*)sa)->sin_addr) :
                  (void*)&(((struct sockaddr_in6*)sa)->sin6_addr),
 # else
                  (void*)&(((struct sockaddr_in*)sa)->sin_addr),
 # endif /* HAVE_IPV6 */
-             buf, len);
+             buf, buflen);
 #else
-   bstrncpy(buf, inet_ntoa(((struct sockaddr_in *)sa)->sin_addr), len);
+   bstrncpy(buf, inet_ntoa(((struct sockaddr_in *)sa)->sin_addr), buflen);
+#endif
 #endif
    return buf;
 }
 
+/*
+ * Remove duplicate IP addresses.
+ */
+void remove_duplicate_addresses(dlist *addr_list)
+{
+   IPADDR *ipaddr, *next, *duplicate;
+   /*
+    * 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; ) {
+         duplicate = NULL;
+         if (ipaddr->get_sockaddr_len() == next->get_sockaddr_len() &&
+             memcmp(ipaddr->get_sockaddr(), next->get_sockaddr(),
+                    ipaddr->get_sockaddr_len()) == 0) {
+            duplicate = next;
+         }
+         next = (IPADDR *)addr_list->next(next);
+         if (duplicate) {
+            addr_list->remove(duplicate);  /* remove from list */
+            delete duplicate;              /* free it */
+         }
+      }
+   }
+}
+
 #ifdef HAVE_OLD_SOCKOPT
 int inet_aton(const char *cp, struct in_addr *inp)
 {
diff --git a/src/lib/address_conf.h b/src/lib/address_conf.h
index e161e73..1035946 100644
--- a/src/lib/address_conf.h
+++ b/src/lib/address_conf.h
@@ -1,35 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *   Written by Meno Abels, June MMIV
  *
- *   Version $Id$
  */
 
 
@@ -95,7 +82,7 @@ extern const char *build_addresses_str(dlist *addrs, char *buf, int blen);
 
 extern int sockaddr_get_port_net_order(const struct sockaddr *sa);
 extern int sockaddr_get_port(const struct sockaddr *sa);
-extern char *sockaddr_to_ascii(const struct sockaddr *sa, char *buf, int len);
+extern char *sockaddr_to_ascii(const struct sockaddr *sa, int socklen, char *buf, int buflen);
 #ifdef WIN32
 #undef HAVE_OLD_SOCKOPT
 #endif
diff --git a/src/lib/alist.c b/src/lib/alist.c
index 6423058..c569a04 100644
--- a/src/lib/alist.c
+++ b/src/lib/alist.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula array list routines
diff --git a/src/lib/alist.h b/src/lib/alist.h
index d2f1d06..0f89ed3 100644
--- a/src/lib/alist.h
+++ b/src/lib/alist.h
@@ -1,29 +1,17 @@
 /*
-   Bacula(R) - The Network Backup Solution
-
-   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.
-   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(R) 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.
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2003-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 /*
  *  Kern Sibbald, June MMIII
@@ -77,9 +65,9 @@ class alist : public SMARTALLOC {
    bool own_items;
    void grow_list(void);
 public:
-   alist(int num = 1, bool own=true);
+   alist(int num = 10, bool own=true);
    ~alist();
-   void init(int num = 1, bool own=true);
+   void init(int num = 10, bool own=true);
    void append(void *item);
    void prepend(void *item);
    void *remove(int index);
diff --git a/src/lib/attr.c b/src/lib/attr.c
index 2f37ef1..b6df46b 100644
--- a/src/lib/attr.c
+++ b/src/lib/attr.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   attr.c  Unpack an Attribute record returned from the tape
@@ -113,7 +101,7 @@ int unpack_attributes_record(JCR *jcr, int32_t stream, char *rec, int32_t reclen
       /* We have an object, so do a binary copy */
       object_len = reclen + rec - p;
       attr->attrEx = check_pool_memory_size(attr->attrEx, object_len + 1);
-      memcpy(attr->attrEx, p, object_len);  
+      memcpy(attr->attrEx, p, object_len);
       /* Add a EOS for those who attempt to print the object */
       p = attr->attrEx + object_len;
       *p = 0;
@@ -131,7 +119,7 @@ int unpack_attributes_record(JCR *jcr, int32_t stream, char *rec, int32_t reclen
          if (p - rec < reclen) {
             attr->delta_seq = str_to_int32(p); /* delta_seq */
          }
-      }       
+      }
    }
    Dmsg8(dbglvl, "unpack_attr FI=%d Type=%d fname=%s attr=%s lname=%s attrEx=%s datastr=%d delta_seq=%d\n",
       attr->file_index, attr->type, attr->fname, attr->attr, attr->lname,
@@ -174,7 +162,7 @@ void build_attr_output_fnames(JCR *jcr, ATTR *attr)
     *
     */
 
-   if (jcr->where_bregexp) { 
+   if (jcr->where_bregexp) {
       char *ret;
       apply_bregexps(attr->fname, jcr->where_bregexp, &ret);
       pm_strcpy(attr->ofname, ret);
@@ -192,7 +180,7 @@ void build_attr_output_fnames(JCR *jcr, ATTR *attr)
             pm_strcpy(attr->olname, attr->lname);
          }
       }
-      
+
    } else if (jcr->where[0] == 0) {
       pm_strcpy(attr->ofname, attr->fname);
       pm_strcpy(attr->olname, attr->lname);
@@ -236,8 +224,8 @@ void build_attr_output_fnames(JCR *jcr, ATTR *attr)
 #endif
          fn = attr->lname;       /* take whole name */
          /* Ensure where is terminated with a slash */
-         if (add_link && 
-            !IsPathSeparator(jcr->where[wherelen-1]) && 
+         if (add_link &&
+            !IsPathSeparator(jcr->where[wherelen-1]) &&
             !IsPathSeparator(fn[0])) {
             pm_strcat(attr->olname, "/");
          }
@@ -266,7 +254,7 @@ void print_ls_output(JCR *jcr, ATTR *attr)
 
    if (attr->type == FT_DELETED) { /* TODO: change this to get last seen values */
       bsnprintf(buf, sizeof(buf),
-                "----------   - -        -                - ---------- --------  %s\n", attr->ofname);
+                "----------   - -        -                  - ---------- --------  %s\n", attr->ofname);
       Dmsg1(dbglvl, "%s", buf);
       Jmsg(jcr, M_RESTORED, 1, "%s", buf);
       return;
@@ -278,7 +266,7 @@ void print_ls_output(JCR *jcr, ATTR *attr)
    guid = jcr->id_list;
    p = encode_mode(attr->statp.st_mode, buf);
    p += sprintf(p, "  %2d ", (uint32_t)attr->statp.st_nlink);
-   p += sprintf(p, "%-8.8s %-8.8s", 
+   p += sprintf(p, "%-8.8s %-8.8s",
                 guid->uid_to_name(attr->statp.st_uid, en1, sizeof(en1)),
                 guid->gid_to_name(attr->statp.st_gid, en2, sizeof(en2)));
    p += sprintf(p, "%12.12s ", edit_int64(attr->statp.st_size, ec1));
diff --git a/src/lib/attr.h b/src/lib/attr.h
index aacdb35..495c178 100644
--- a/src/lib/attr.h
+++ b/src/lib/attr.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   attr.h Definition of attributes packet for unpacking from tape
diff --git a/src/lib/base64.c b/src/lib/base64.c
index 7975864..0ffdeae 100644
--- a/src/lib/base64.c
+++ b/src/lib/base64.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Generic base 64 input and output routines
@@ -242,7 +230,7 @@ int base64_to_bin(char *dest, int dest_size, char *src, int srclen)
       *(bufout++) = (base64_map[bufin[2]] << 6 | base64_map[bufin[3]]);
    }
    *bufout = 0;
-   
+
    return (bufout - (uint8_t *) dest);
 }
 
diff --git a/src/lib/base64.h b/src/lib/base64.h
index ae53cd8..a6fc1a5 100644
--- a/src/lib/base64.h
+++ b/src/lib/base64.h
@@ -8,29 +8,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /* Maximum size of len bytes after base64 encoding */
diff --git a/src/lib/berrno.c b/src/lib/berrno.c
index 13ffb03..8f3968b 100644
--- a/src/lib/berrno.c
+++ b/src/lib/berrno.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula errno handler
@@ -33,7 +21,7 @@
  *
  *    See berrno.h for how to use berrno.
  *
- *   Kern Sibbald, July MMIV
+ *   Written by Kern Sibbald, July MMIV
  *
  *
  */
@@ -50,7 +38,7 @@ const char *berrno::bstrerror()
 {
    *m_buf = 0;
 #ifdef HAVE_WIN32
-   if (m_berrno & b_errno_win32) {
+   if (m_berrno & (b_errno_win32)) {
       format_win32_message();
       return (const char *)m_buf;
    }
@@ -83,7 +71,7 @@ const char *berrno::bstrerror()
    }
 #endif
    /* Normal errno */
-   if (b_strerror(m_berrno, m_buf, 1024) < 0) {
+   if (b_strerror(m_berrno, m_buf, sizeof_pool_memory(m_buf)) < 0) {
       return _("Invalid errno. No error message possible.");
    }
    return m_buf;
diff --git a/src/lib/berrno.h b/src/lib/berrno.h
index 731fbd7..f524c28 100644
--- a/src/lib/berrno.h
+++ b/src/lib/berrno.h
@@ -1,34 +1,21 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- *   Version $Id$
  *
- * Kern Sibbald, July MMIV
+ *   Written by Kern Sibbald, July MMIV
  *
  */
 
diff --git a/src/lib/bget_msg.c b/src/lib/bget_msg.c
index 0187386..2a8a6a6 100644
--- a/src/lib/bget_msg.c
+++ b/src/lib/bget_msg.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Subroutines to receive network data and handle
@@ -59,7 +47,7 @@ int bget_msg(BSOCK *sock)
       if (n >= 0) {                  /* normal return */
          return n;
       }
-      if (is_bnet_stop(sock)) {      /* error return */
+      if (sock->is_stop()) {         /* error return */
          return n;
       }
 
diff --git a/src/lib/binflate.c b/src/lib/binflate.c
index de3e171..3e4cb2e 100644
--- a/src/lib/binflate.c
+++ b/src/lib/binflate.c
@@ -1,29 +1,17 @@
 /*
-   Bacula® - The Network Backup Solution
+   Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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 may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
-   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.
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 /*
  * Bacula zlib compression wrappers
@@ -110,4 +98,3 @@ int Zinflate(char *in, int in_len, char *out, int &out_len)
    return 1;
 #endif
 }
-
diff --git a/src/lib/bits.h b/src/lib/bits.h
index efebb06..d961203 100644
--- a/src/lib/bits.h
+++ b/src/lib/bits.h
@@ -1,38 +1,25 @@
-/* Some elementary bit manipulations
- *
- *   Kern Sibbald, MM
- *
- *  NOTE:  base 0
- *
- *   Version $Id$
- */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2006 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.
+   Copyright (C) 2000-2014 Free Software Foundation Europe e.V.
 
-   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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
-   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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
+/* Some elementary bit manipulations
+ *
+ *   Kern Sibbald, MM
+ *
+ *  NOTE:  base 0
+ *
+ */
 
 #ifndef __BITS_H_
 #define __BITS_H_
diff --git a/src/lib/bnet.c b/src/lib/bnet.c
index b677523..f61929f 100644
--- a/src/lib/bnet.c
+++ b/src/lib/bnet.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Network Utility Routines
@@ -35,6 +23,7 @@
  *
  */
 
+
 #include "bacula.h"
 #include "jcr.h"
 #include <netdb.h>
@@ -62,6 +51,7 @@ static pthread_mutex_t ip_mutex = PTHREAD_MUTEX_INITIALIZER;
  * 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;
@@ -113,6 +103,9 @@ int32_t read_nbytes(BSOCK * bsock, char *ptr, int32_t nbytes)
       }
       nleft -= nread;
       ptr += nread;
+      if (bsock->use_bwlimit()) {
+         bsock->control_bwlimit(nread);
+      }
    }
    return nbytes - nleft;          /* return >= 0 */
 }
@@ -131,8 +124,8 @@ int32_t write_nbytes(BSOCK * bsock, char *ptr, int32_t nbytes)
       if (nwritten != nbytes) {
          berrno be;
          bsock->b_errno = errno;
-         Qmsg1(bsock->jcr(), M_FATAL, 0, _("Attr spool write error. ERR=%s\n"),
-               be.bstrerror());
+         Qmsg3(bsock->jcr(), M_FATAL, 0, _("Attr spool write error. wrote=%d wanted=%d bytes. ERR=%s\n"),
+               nbytes, nwritten, be.bstrerror());
          Dmsg2(400, "nwritten=%d nbytes=%d.\n", nwritten, nbytes);
          errno = bsock->b_errno;
          return -1;
@@ -196,74 +189,14 @@ int32_t write_nbytes(BSOCK * bsock, char *ptr, int32_t nbytes)
       }
       nleft -= nwritten;
       ptr += nwritten;
+      if (bsock->use_bwlimit()) {
+         bsock->control_bwlimit(nwritten);
+      }
    }
    return nbytes - nleft;
 }
 
 /*
- * Receive a message from the other end. Each message consists of
- * two packets. The first is a header that contains the size
- * of the data that follows in the second packet.
- * Returns number of bytes read (may return zero)
- * Returns -1 on signal (BNET_SIGNAL)
- * Returns -2 on hard end of file (BNET_HARDEOF)
- * Returns -3 on error  (BNET_ERROR)
- *
- *  Unfortunately, it is a bit complicated because we have these
- *    four return types:
- *    1. Normal data
- *    2. Signal including end of data stream
- *    3. Hard end of file
- *    4. Error
- *  Using is_bnet_stop() and is_bnet_error() you can figure this all out.
- */
-int32_t bnet_recv(BSOCK * bsock)
-{
-   return bsock->recv();
-}
-
-
-/*
- * Return 1 if there are errors on this bsock or it is closed,
- *   i.e. stop communicating on this line.
- */
-bool is_bnet_stop(BSOCK * bsock)
-{
-   return bsock->is_stop();
-}
-
-/*
- * Return number of errors on socket
- */
-int is_bnet_error(BSOCK * bsock)
-{
-   return bsock->is_error();
-}
-
-/*
- * Call here after error during closing to suppress error
- *  messages which are due to the other end shutting down too.
- */
-void bnet_suppress_error_messages(BSOCK * bsock, bool flag)
-{
-   bsock->m_suppress_error_msgs = flag;
-}
-
-/*
- * Send a message over the network. The send consists of
- * two network packets. The first is sends a 32 bit integer containing
- * the length of the data packet which follows.
- *
- * Returns: false on failure
- *          true  on success
- */
-bool bnet_send(BSOCK *bsock)
-{
-   return bsock->send();
-}
-
-
-/*
  * Establish a TLS connection -- server side
  *  Returns: true  on success
  *           false on failure
@@ -273,7 +206,7 @@ bool bnet_tls_server(TLS_CONTEXT *ctx, BSOCK * bsock, alist *verify_list)
 {
    TLS_CONNECTION *tls;
    JCR *jcr = bsock->jcr();
-   
+
    tls = new_tls_connection(ctx, bsock->m_fd);
    if (!tls) {
       Qmsg0(bsock->jcr(), M_FATAL, 0, _("TLS connection initialization failed.\n"));
@@ -310,7 +243,7 @@ err:
  * Returns: true  on success
  *          false on failure
  */
-bool bnet_tls_client(TLS_CONTEXT *ctx, BSOCK * bsock, alist *verify_list)
+bool bnet_tls_client(TLS_CONTEXT *ctx, BSOCK *bsock, alist *verify_list)
 {
    TLS_CONNECTION *tls;
    JCR *jcr = bsock->jcr();
@@ -337,9 +270,11 @@ bool bnet_tls_client(TLS_CONTEXT *ctx, BSOCK * bsock, alist *verify_list)
                                          bsock->host());
          goto err;
       }
-   } else {
-      if (!tls_postconnect_verify_host(jcr, tls, bsock->host())) {
-         Qmsg1(bsock->jcr(), M_FATAL, 0, _("TLS host certificate verification failed. Host name \"%s\" did not match presented certificate\n"), 
+   } else if (!tls_postconnect_verify_host(jcr, tls, bsock->host())) {
+      /* If host is 127.0.0.1, try localhost */
+      if (strcmp(bsock->host(), "127.0.0.1") != 0 ||
+             !tls_postconnect_verify_host(jcr, tls, "localhost")) {
+         Qmsg1(bsock->jcr(), M_FATAL, 0, _("TLS host certificate verification failed. Host name \"%s\" did not match presented certificate\n"),
                bsock->host());
          goto err;
       }
@@ -368,27 +303,6 @@ bool bnet_tls_client(TLS_CONTEXT *ctx, BSOCK * bsock, alist *verify_list)
 
 #endif /* HAVE_TLS */
 
-/*
- * Wait for a specified time for data to appear on
- * the BSOCK connection.
- *
- *   Returns: 1 if data available
- *            0 if timeout
- *           -1 if error
- */
-int bnet_wait_data(BSOCK * bsock, int sec)
-{
-   return bsock->wait_data(sec);
-}
-
-/*
- * As above, but returns on interrupt
- */
-int bnet_wait_data_intr(BSOCK * bsock, int sec)
-{
-   return bsock->wait_data_intr(sec);
-}
-
 #ifndef NETDB_INTERNAL
 #define NETDB_INTERNAL  -1         /* See errno. */
 #endif
@@ -465,7 +379,9 @@ const char *resolv_host(int family, const char *host, dlist *addr_list)
    freeaddrinfo(ai);
    return NULL;
 }
+
 #else
+
 /*
  * Get human readable error for gethostbyname()
  */
@@ -498,12 +414,14 @@ static const char *gethost_strerror()
    return msg;
 }
 
-static const char *resolv_host(int family, const char *host, dlist *addr_list)
+/*
+ * Note: this is the old way of resolving a host
+ *  that does not use the new getaddrinfo() above.
+ */
+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
@@ -516,24 +434,20 @@ 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++) {
-         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;
+         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);
+            addr_list->append(addr);
+         }
 #ifdef HAVE_IPV6
-          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;
+         else if (addr->get_family() == AF_INET6) {
+            addr->set_addr6((struct in6_addr*)*p);
+            addr_list->append(addr);
          }
-         addr_list->append(addr);
+#endif
       }
       V(ip_mutex);
    }
@@ -612,120 +526,6 @@ dlist *bnet_host2ipaddrs(const char *host, int family, const char **errstr)
 }
 
 /*
- * This is the "old" way of opening a connection.  The preferred way is
- *   now to do what this subroutine does, but inline. That allows the 
- *   connect() call to return error status, ...
- */      
-BSOCK *bnet_connect(JCR * jcr, int retry_interval, utime_t max_retry_time,
-                    utime_t heart_beat,
-                    const char *name, char *host, char *service, int port,
-                    int verbose)
-{
-   BSOCK *bsock = new_bsock();
-   if (!bsock->connect(jcr, retry_interval, max_retry_time, heart_beat,
-                       name, host, service, port, verbose)) {
-       bsock->destroy();
-       bsock = NULL;
-   }
-   return bsock;
-}
-
-/*
- * Return the string for the error that occurred
- * on the socket. Only the first error is retained.
- */
-const char *bnet_strerror(BSOCK * bsock)
-{
-   return bsock->bstrerror();
-}
-
-/*
- * Format and send a message
- *  Returns: false on error
- *           true  on success
- */
-bool bnet_fsend(BSOCK * bs, const char *fmt, ...)
-{
-   va_list arg_ptr;
-   int maxlen;
-
-   if (bs->errors || bs->is_terminated()) {
-      return false;
-   }
-   /* This probably won't work, but we vsnprintf, then if we
-    * get a negative length or a length greater than our buffer
-    * (depending on which library is used), the printf was truncated, so
-    * get a bigger buffer and try again.
-    */
-   for (;;) {
-      maxlen = sizeof_pool_memory(bs->msg) - 1;
-      va_start(arg_ptr, fmt);
-      bs->msglen = bvsnprintf(bs->msg, maxlen, fmt, arg_ptr);
-      va_end(arg_ptr);
-      if (bs->msglen > 0 && bs->msglen < (maxlen - 5)) {
-         break;
-      }
-      bs->msg = realloc_pool_memory(bs->msg, maxlen + maxlen / 2);
-   }
-   return bs->send();
-}
-
-int bnet_get_peer(BSOCK *bs, char *buf, socklen_t buflen) 
-{
-   return bs->get_peer(buf, buflen);  
-}
-
-/*
- * Set the network buffer size, suggested size is in size.
- *  Actual size obtained is returned in bs->msglen
- *
- *  Returns: 0 on failure
- *           1 on success
- */
-bool bnet_set_buffer_size(BSOCK * bs, uint32_t size, int rw)
-{
-   return bs->set_buffer_size(size, rw);
-}
-
-/*
- * Set socket non-blocking
- * Returns previous socket flag
- */
-int bnet_set_nonblocking(BSOCK *bsock) 
-{
-   return bsock->set_nonblocking();
-}
-
-/*
- * Set socket blocking
- * Returns previous socket flags
- */
-int bnet_set_blocking(BSOCK *bsock) 
-{
-   return bsock->set_blocking();
-}
-
-/*
- * Restores socket flags
- */
-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
- *
- *  Returns: false on failure
- *           true  on success
- */
-bool bnet_sig(BSOCK * bs, int signal)
-{
-   return bs->signal(signal);
-}
-
-/*
  * Convert a network "signal" code into
  * human readable ASCII.
  */
@@ -777,11 +577,7 @@ BSOCK *init_bsock(JCR * jcr, int sockfd, const char *who, const char *host, int
    bsock->set_port(port);
    memset(&bsock->peer_addr, 0, sizeof(bsock->peer_addr));
    memcpy(&bsock->client_addr, client_addr, sizeof(bsock->client_addr));
-   /*
-    * ****FIXME**** reduce this to a few hours once
-    *   heartbeats are implemented
-    */
-   bsock->timeout = 60 * 60 * 6 * 24;   /* 6 days timeout */
+   bsock->timeout = BSOCK_TIMEOUT;
    bsock->set_jcr(jcr);
    return bsock;
 }
@@ -805,13 +601,47 @@ BSOCK *dup_bsock(BSOCK *osock)
    return bsock;
 }
 
-/* Close the network connection */
-void bnet_close(BSOCK * bsock)
+int set_socket_errno(int sockstat)
 {
-   bsock->close();
-}
-
-void term_bsock(BSOCK * bsock)
-{
-   bsock->destroy();
+#ifdef HAVE_WIN32
+   /*
+    * For Windows, we must simulate Unix errno on a socket
+    *  error in order to handle errors correctly.
+    */
+   if (sockstat == SOCKET_ERROR) {
+      berrno be;
+      DWORD err = WSAGetLastError();
+      if (err == WSAEINTR) {
+         errno = EINTR;
+         return sockstat;
+      } else if (err == WSAEWOULDBLOCK) {
+         errno = EAGAIN;
+         return sockstat;
+      } else {
+         errno = b_errno_win32 | b_errno_WSA;
+      }
+      Dmsg2(20, "Socket error: err=%d %s\n", err, be.bstrerror(err));
+   }
+#else
+   if (sockstat == SOCKET_ERROR) {
+      /* Handle errrors from prior connections as EAGAIN */
+      switch (errno) {
+         case ENETDOWN:
+         case EPROTO:
+         case ENOPROTOOPT:
+         case EHOSTDOWN:
+#ifdef ENONET
+         case ENONET:
+#endif
+         case EHOSTUNREACH:
+         case EOPNOTSUPP:
+         case ENETUNREACH:
+            errno = EAGAIN;
+            break;
+         default:
+            break;
+      }
+   }
+#endif
+   return sockstat;
 }
diff --git a/src/lib/bnet_server.c b/src/lib/bnet_server.c
index 853c1c7..f00e8da 100644
--- a/src/lib/bnet_server.c
+++ b/src/lib/bnet_server.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
  /*
   * Originally written by Kern Sibbald for inclusion in apcupsd,
@@ -67,7 +55,7 @@ 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
+ * ipv4 and ipv6 style. The Addresses are given in a comma
  * seperated string in bind_addr
  *
  * At the moment it is inpossible to bind different ports.
@@ -77,13 +65,13 @@ void bnet_thread_server(dlist *addr_list, int max_clients, workq_t *client_wq,
 {
    int newsockfd, stat;
    socklen_t clilen;
-   struct sockaddr cli_addr;       /* client's address */
+   struct sockaddr_storage clientaddr;   /* client's address */
    int tlog;
    int turnon = 1;
 #ifdef HAVE_LIBWRAP
    struct request_info request;
 #endif
-   IPADDR *ipaddr, *next;
+   IPADDR *ipaddr;
    struct s_sockfd {
       dlink link;                     /* this MUST be the first item */
       int fd;
@@ -94,23 +82,13 @@ void bnet_thread_server(dlist *addr_list, int max_clients, workq_t *client_wq,
 
    char allbuf[256 * 10];
 
-   /*
-    * 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);
-         }
-      }
-   }
+   remove_duplicate_addresses(addr_list);
 
-   Dmsg1(100, "Addresses %s\n", build_addresses_str(addr_list, allbuf, sizeof(allbuf)));
+   Dmsg1(20, "Addresses %s\n", build_addresses_str(addr_list, allbuf, sizeof(allbuf)));
 
+   /*
+    * Listen on each address provided.
+    */
    foreach_dlist(ipaddr, addr_list) {
       /* Allocate on stack from -- no need to free */
       fd_ptr = (s_sockfd *)alloca(sizeof(s_sockfd));
@@ -139,22 +117,35 @@ void bnet_thread_server(dlist *addr_list, int max_clients, workq_t *client_wq,
                be.bstrerror());
       }
 
-      int tmax = 30 * (60 / 5);    /* wait 30 minutes max */
-      for (tlog = 0; bind(fd_ptr->fd, ipaddr->get_sockaddr(), ipaddr->get_sockaddr_len()) < 0; tlog -= 5) {
+      int tmax = 1 * (60 / 5);    /* wait 1 minute max */
+      for (tlog = 0; bind(fd_ptr->fd, ipaddr->get_sockaddr(), ipaddr->get_sockaddr_len()) == SOCKET_ERROR; tlog -= 5) {
          berrno be;
          if (tlog <= 0) {
-            tlog = 2 * 60;         /* Complain every 2 minutes */
+            tlog = 1 * 60;         /* Complain every 1 minute */
             Emsg2(M_WARNING, 0, _("Cannot bind port %d: ERR=%s: Retrying ...\n"),
                   ntohs(fd_ptr->port), be.bstrerror());
+            Dmsg2(20, "Cannot bind port %d: ERR=%s: Retrying ...\n",
+                  ntohs(fd_ptr->port), be.bstrerror());
+
          }
          bmicrosleep(5, 0);
          if (--tmax <= 0) {
             Emsg2(M_ABORT, 0, _("Cannot bind port %d: ERR=%s.\n"), ntohs(fd_ptr->port),
                   be.bstrerror());
+            Pmsg2(000, "Aborting cannot bind port %d: ERR=%s.\n", ntohs(fd_ptr->port),
+                  be.bstrerror());
          }
       }
-      listen(fd_ptr->fd, 50);      /* tell system we are ready */
-      sockfds.append(fd_ptr);
+      if (listen(fd_ptr->fd, 50) < 0) {      /* tell system we are ready */
+         berrno be;
+         Emsg2(M_ABORT, 0, _("Cannot bind port %d: ERR=%s.\n"), ntohs(fd_ptr->port),
+               be.bstrerror());
+      } else {
+         sockfds.append(fd_ptr);
+      }
+   }
+   if (sockfds.size() == 0) {
+      Emsg0(M_ABORT, 0, _("No addr/port found to listen on.\n"));
    }
    /* Start work queue thread */
    if ((stat = workq_init(client_wq, max_clients, handle_client_request)) != 0) {
@@ -187,10 +178,12 @@ void bnet_thread_server(dlist *addr_list, int max_clients, workq_t *client_wq,
          if (FD_ISSET(fd_ptr->fd, &sockset)) {
             /* Got a connection, now accept it. */
             do {
-               clilen = sizeof(cli_addr);
-               newsockfd = accept(fd_ptr->fd, &cli_addr, &clilen);
-            } while (newsockfd < 0 && errno == EINTR);
-            if (newsockfd < 0) {
+               clilen = sizeof(clientaddr);
+               newsockfd = accept(fd_ptr->fd, (struct sockaddr *)&clientaddr, &clilen);
+               newsockfd = set_socket_errno(newsockfd);
+            } while (newsockfd == SOCKET_ERROR && (errno == EINTR || errno == EAGAIN));
+            if (newsockfd == SOCKET_ERROR) {
+               Dmsg2(20, "Accept=%d errno=%d\n", newsockfd, errno);
                continue;
             }
 #ifdef HAVE_LIBWRAP
@@ -201,8 +194,9 @@ void bnet_thread_server(dlist *addr_list, int max_clients, workq_t *client_wq,
                V(mutex);
                Jmsg2(NULL, M_SECURITY, 0,
                      _("Connection from %s:%d refused by hosts.access\n"),
-                     sockaddr_to_ascii(&cli_addr, buf, sizeof(buf)),
-                     sockaddr_get_port(&cli_addr));
+                     sockaddr_to_ascii((struct sockaddr *)&clientaddr,
+                                       sizeof(clientaddr), buf, sizeof(buf)),
+                     sockaddr_get_port((struct sockaddr *)&clientaddr));
                close(newsockfd);
                continue;
             }
@@ -221,10 +215,11 @@ void bnet_thread_server(dlist *addr_list, int max_clients, workq_t *client_wq,
 
             /* see who client is. i.e. who connected to us. */
             P(mutex);
-            sockaddr_to_ascii(&cli_addr, buf, sizeof(buf));
+            sockaddr_to_ascii((struct sockaddr *)&clientaddr, sizeof(clientaddr), buf, sizeof(buf));
             V(mutex);
             BSOCK *bs;
-            bs = init_bsock(NULL, newsockfd, "client", buf, ntohs(fd_ptr->port), &cli_addr);
+            bs = init_bsock(NULL, newsockfd, "client", buf, ntohs(fd_ptr->port),
+                    (struct sockaddr *)&clientaddr);
             if (bs == NULL) {
                Jmsg0(NULL, M_ABORT, 0, _("Could not create client BSOCK.\n"));
             }
diff --git a/src/lib/bpipe.c b/src/lib/bpipe.c
index ad2e7ad..44c5164 100644
--- a/src/lib/bpipe.c
+++ b/src/lib/bpipe.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   bpipe.c bi-directional pipe
@@ -57,6 +45,15 @@ int num_execvp_errors = (int)(sizeof(execvp_errors)/sizeof(int));
 #if !defined(HAVE_WIN32)
 static void build_argc_argv(char *cmd, int *bargc, char *bargv[], int max_arg);
 
+void build_sh_argc_argv(char *cmd, int *bargc, char *bargv[], int max_arg)
+{
+   bargv[0] = (char *)"/bin/sh";
+   bargv[1] = (char *)"-c";
+   bargv[2] = cmd;
+   bargv[3] = NULL;
+   *bargc = 3;
+}
+
 /*
  * Run an external program. Optionally wait a specified number
  *   of seconds. Program killed if wait exceeded. We open
@@ -69,7 +66,7 @@ BPIPE *open_bpipe(char *prog, int wait, const char *mode)
    int bargc, i;
    int readp[2], writep[2];
    POOLMEM *tprog;
-   int mode_read, mode_write;
+   int mode_read, mode_write, mode_shell;
    BPIPE *bpipe;
    int save_errno;
 
@@ -77,10 +74,17 @@ BPIPE *open_bpipe(char *prog, int wait, const char *mode)
    memset(bpipe, 0, sizeof(BPIPE));
    mode_read = (mode[0] == 'r');
    mode_write = (mode[0] == 'w' || mode[1] == 'w');
+   /* mode is at least 2 bytes long, can be 3, rs, rws, ws */
+   mode_shell = (mode[1] == 's' || (mode[1] && mode[2] == 's'));
    /* Build arguments for running program. */
    tprog = get_pool_memory(PM_FNAME);
    pm_strcpy(tprog, prog);
-   build_argc_argv(tprog, &bargc, bargv, MAX_ARGV);
+   if (mode_shell) {
+      build_sh_argc_argv(tprog, &bargc, bargv, MAX_ARGV);
+
+   } else {
+      build_argc_argv(tprog, &bargc, bargv, MAX_ARGV);
+   }
 #ifdef  xxxxxx
    printf("argc=%d\n", bargc);
    for (i=0; i<bargc; i++) {
@@ -370,7 +374,7 @@ int run_program(char *prog, int wait, POOLMEM *&results)
 
 /*
  * Run an external program. Optionally wait a specified number
- *   of seconds. Program killed if wait exceeded (it is done by the 
+ *   of seconds. Program killed if wait exceeded (it is done by the
  *   watchdog, as fgets is a blocking function).
  *
  *   If the watchdog kills the program, fgets returns, and ferror is set
@@ -393,12 +397,12 @@ int run_program_full_output(char *prog, int wait, POOLMEM *&results)
    char *buf;
    const int bufsize = 32000;
 
-   
+
    Dsm_check(200);
 
    tmp = get_pool_memory(PM_MESSAGE);
    buf = (char *)malloc(bufsize+1);
-   
+
    results[0] = 0;
    mode = (char *)"r";
    bpipe = open_bpipe(prog, wait, mode);
@@ -406,7 +410,7 @@ int run_program_full_output(char *prog, int wait, POOLMEM *&results)
       stat1 = ENOENT;
       goto bail_out;
    }
-   
+
    Dsm_check(200);
    tmp[0] = 0;
    while (1) {
@@ -448,7 +452,7 @@ int run_program_full_output(char *prog, int wait, POOLMEM *&results)
    Dmsg3(1900, "resadr=0x%x reslen=%d res=%s\n", results, strlen(results), results);
    stat2 = close_bpipe(bpipe);
    stat1 = stat2 != 0 ? stat2 : stat1;
-   
+
    Dmsg1(900, "Run program returning %d\n", stat1);
 bail_out:
    free_pool_memory(tmp);
diff --git a/src/lib/bpipe.h b/src/lib/bpipe.h
index 1ed3cf4..d49f3a9 100644
--- a/src/lib/bpipe.h
+++ b/src/lib/bpipe.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Bi-directional pipe structure
diff --git a/src/lib/breg.c b/src/lib/breg.c
index ac48765..893e8ba 100644
--- a/src/lib/breg.c
+++ b/src/lib/breg.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    Bacula® is a registered trademark of Kern Sibbald.
-   The licensor of Bacula is the Free Software Foundation Europe
-   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zuerich,
-   Switzerland, email:ftf at fsfeurope.org.
 */
 /*
  * Manipulation routines for BREGEXP list
@@ -43,7 +31,7 @@ BREGEXP *new_bregexp(const char *motif)
    Dmsg0(500, "bregexp: creating new bregexp object\n");
    BREGEXP *self = (BREGEXP *)bmalloc(sizeof(BREGEXP));
    memset(self, 0, sizeof(BREGEXP));
-   
+
    if (!self->extract_regexp(motif)) {
       Dmsg0(100, "bregexp: extract_regexp error\n");
       free_bregexp(self);
@@ -104,7 +92,7 @@ bool apply_bregexps(const char *fname, alist *bregexps, char **result)
    return ok;
 }
 
-/* return an alist of BREGEXP or return NULL if it's not a 
+/* return an alist of BREGEXP or return NULL if it's not a
  * where=!tmp!opt!ig,!temp!opt!i
  */
 alist *get_bregexps(const char *where)
@@ -122,7 +110,7 @@ alist *get_bregexps(const char *where)
    }
 
    if (list->size()) {
-      return list;      
+      return list;
    } else {
       delete list;
       return NULL;
@@ -134,20 +122,21 @@ bool BREGEXP::extract_regexp(const char *motif)
    if ( !motif ) {
       return false;
    }
-   
+
    char sep = motif[0];
 
-   if (!(sep == '!' || 
-         sep == ':' || 
-         sep == ';' || 
-         sep == '|' || 
-         sep == ',' || 
-         sep == '&' || 
-         sep == '%' || 
-         sep == '=' || 
+   if (!(sep == '!' ||
+         sep == ':' ||
+         sep == ';' ||
+         sep == '|' ||
+         sep == ',' ||
+         sep == '&' ||
+         sep == '%' ||
+         sep == '=' ||
          sep == '~' ||
          sep == '/' ||
-         sep == '#'   )) 
+         sep == '<' ||
+         sep == '#'   ))
    {
       return false;
    }
@@ -161,7 +150,7 @@ bool BREGEXP::extract_regexp(const char *motif)
 
    while (*search && !ok) {
       if (search[0] == '\\' && search[1] == sep) {
-         *dest++ = *++search;       /* we skip separator */ 
+         *dest++ = *++search;       /* we skip separator */
 
       } else if (search[0] == '\\' && search[1] == '\\') {
          *dest++ = *++search;       /* we skip the second \ */
@@ -173,7 +162,7 @@ bool BREGEXP::extract_regexp(const char *motif)
             ok = true;
 
          } else {
-            *dest++ = *++search; /* we skip separator */ 
+            *dest++ = *++search; /* we skip separator */
             subst = dest;        /* get replaced string */
          }
 
@@ -182,7 +171,7 @@ bool BREGEXP::extract_regexp(const char *motif)
       }
    }
    *dest = '\0';                /* in case of */
-   
+
    if (!ok || !subst) {
       /* bad regexp */
       return false;
@@ -245,7 +234,7 @@ char *BREGEXP::replace(const char *fname)
    }
 
    return result;
-} 
+}
 
 char *BREGEXP::return_fname(const char *fname, int len)
 {
@@ -278,10 +267,10 @@ int BREGEXP::compute_dest_len(const char *fname, regmatch_t pmatch[])
          /* we check if the back reference exists */
          /* references can not match if we are using (..)? */
 
-         if (pmatch[no].rm_so >= 0 && pmatch[no].rm_eo >= 0) { 
+         if (pmatch[no].rm_so >= 0 && pmatch[no].rm_eo >= 0) {
             len += pmatch[no].rm_eo - pmatch[no].rm_so;
          }
-         
+
       } else {
          len++;
       }
@@ -305,7 +294,7 @@ char *BREGEXP::edit_subst(const char *fname, regmatch_t pmatch[])
    /* il faut recopier fname dans dest
     *  on recopie le debut fname -> pmatch->start[0]
     */
-   
+
    for (i = 0; i < pmatch[0].rm_so ; i++) {
       result[i] = fname[i];
    }
@@ -352,7 +341,7 @@ char *bregexp_escape_string(char *dest, const char *src, const char sep)
    }
    *dest = '\0';
 
-   return ret; 
+   return ret;
 }
 
 static const char regexp_sep = '!';
@@ -360,12 +349,12 @@ static const char *str_strip_prefix = "!%s!!i";
 static const char *str_add_prefix   = "!^!%s!";
 static const char *str_add_suffix   = "!([^/])$!$1%s!";
 
-int bregexp_get_build_where_size(char *strip_prefix, 
-                                 char *add_prefix, 
+int bregexp_get_build_where_size(char *strip_prefix,
+                                 char *add_prefix,
                                  char *add_suffix)
 {
    int str_size = ((strip_prefix?strlen(strip_prefix)+strlen(str_strip_prefix):0) +
-                   (add_prefix?strlen(add_prefix)+strlen(str_add_prefix)      :0) +  
+                   (add_prefix?strlen(add_prefix)+strlen(str_add_prefix)      :0) +
                    (add_suffix?strlen(add_suffix)+strlen(str_add_suffix)      :0) )
          /* escape + 3*, + \0 */
             * 2    + 3   + 1;
@@ -376,16 +365,16 @@ int bregexp_get_build_where_size(char *strip_prefix,
 
 /* build a regexp string with user arguments
  * Usage :
- * 
+ *
  * int len = bregexp_get_build_where_size(a,b,c) ;
  * char *dest = (char *) bmalloc (len * sizeof(char));
  * bregexp_build_where(dest, len, a, b, c);
  * bfree(dest);
- * 
+ *
  */
 char *bregexp_build_where(char *dest, int str_size,
-                          char *strip_prefix, 
-                          char *add_prefix, 
+                          char *strip_prefix,
+                          char *add_prefix,
                           char *add_suffix)
 {
    int len=0;
@@ -393,7 +382,7 @@ char *bregexp_build_where(char *dest, int str_size,
    POOLMEM *str_tmp = get_memory(str_size);
 
    *str_tmp = *dest = '\0';
-   
+
    if (strip_prefix) {
       len += bsnprintf(dest, str_size - len, str_strip_prefix,
                        bregexp_escape_string(str_tmp, strip_prefix, regexp_sep));
@@ -409,7 +398,7 @@ char *bregexp_build_where(char *dest, int str_size,
    if (add_prefix) {
       if (len) dest[len++] = ',';
 
-      len += bsnprintf(dest + len, str_size - len, str_add_prefix, 
+      len += bsnprintf(dest + len, str_size - len, str_add_prefix,
                        bregexp_escape_string(str_tmp, add_prefix, regexp_sep));
    }
 
diff --git a/src/lib/breg.h b/src/lib/breg.h
index 1a7d412..cfb19d9 100644
--- a/src/lib/breg.h
+++ b/src/lib/breg.h
@@ -6,29 +6,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 
@@ -46,7 +34,7 @@
 /* Usage:
  *
  * #include "lib/breg.h"
- * 
+ *
  * BREGEXP *breg = new_bregexp("!/prod!/test!");
  * char *filename = breg->replace("/prod/data.dat");
  *   or
@@ -81,10 +69,10 @@ public:
 };
 
 /* create new BREGEXP and compile regex_t */
-BREGEXP *new_bregexp(const char *motif); 
+BREGEXP *new_bregexp(const char *motif);
 
 /* launch each bregexp on filename */
-int run_bregexp(alist *bregexps, const char *fname); 
+int run_bregexp(alist *bregexps, const char *fname);
 
 /* free BREGEXP (and all POOLMEM) */
 void free_bregexp(BREGEXP *script);
@@ -99,19 +87,19 @@ bool apply_bregexps(const char *fname, alist *bregexps, char **result);
 void free_bregexps(alist *bregexps); /* you have to free alist */
 
 /* get regexp size */
-int bregexp_get_build_where_size(char *strip_prefix, 
-                                 char *add_prefix, 
+int bregexp_get_build_where_size(char *strip_prefix,
+                                 char *add_prefix,
                                  char *add_suffix);
 
-/* get a bregexp string from user arguments 
+/* get a bregexp string from user arguments
  * you must allocate it with bregexp_get_build_where_size();
  */
 char *bregexp_build_where(char *dest, int str_size,
-                          char *strip_prefix, 
-                          char *add_prefix, 
+                          char *strip_prefix,
+                          char *add_prefix,
                           char *add_suffix);
 
-/* escape a string to regexp format (sep and \) 
+/* escape a string to regexp format (sep and \)
  * dest must be long enough (dest = 2*src + 1)
  */
 char *bregexp_escape_string(char *dest, const char *src, const char sep);
diff --git a/src/lib/bregex.c b/src/lib/bregex.c
index e07de3b..b6ef5d6 100644
--- a/src/lib/bregex.c
+++ b/src/lib/bregex.c
@@ -35,29 +35,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 
@@ -726,7 +714,7 @@ void re_compile_fastmap(regex_t * bufp)
    bufp->fastmap_accurate = 1;
 }
 
-/* 
+/*
  * star is coded as:
  * 1: failure_jump 2
  *    ... code for operand of star
@@ -1465,7 +1453,7 @@ int regcomp(regex_t * bufp, const char *regex, int cflags)
       char *p, *lcase = bstrdup(regex);
       for( p = lcase; *p ; p++) {
          *p = tolower(*p);
-      } 
+      }
       re_compile_pattern(bufp, (unsigned char *)lcase);
       bfree(lcase);
    } else {
@@ -1477,12 +1465,12 @@ int regcomp(regex_t * bufp, const char *regex, int cflags)
    return 0;
 }
 
-void re_registers_to_regmatch(regexp_registers_t old_regs, 
-                              regmatch_t pmatch[], 
+void re_registers_to_regmatch(regexp_registers_t old_regs,
+                              regmatch_t pmatch[],
                               size_t nmatch)
 {
    size_t i=0;
-   
+
    /* We have to set the last entry to -1 */
    nmatch = nmatch - 1;
    for (i=0; (i < nmatch) && (old_regs->start[i] > -1) ; i++) {
@@ -1491,7 +1479,7 @@ void re_registers_to_regmatch(regexp_registers_t old_regs,
    }
 
    pmatch[i].rm_eo = pmatch[i].rm_so = -1;
-} 
+}
 
 int regexec(regex_t * preg, const char *string, size_t nmatch,
             regmatch_t pmatch[], int eflags)
@@ -1503,7 +1491,7 @@ int regexec(regex_t * preg, const char *string, size_t nmatch,
    if (stat >= 0) {
       re_registers_to_regmatch(&regs, pmatch, nmatch);
    }
-   /* stat is the start position in the string base 0 where       
+   /* stat is the start position in the string base 0 where
     *  the pattern was found or negative if not found.
     */
    return stat < 0 ? -1 : 0;
diff --git a/src/lib/bregex.h b/src/lib/bregex.h
index 84e60c0..d115ef8 100644
--- a/src/lib/bregex.h
+++ b/src/lib/bregex.h
@@ -1,6 +1,7 @@
 
-#ifndef b_REGEXPR_H
-#define b_REGEXPR_H
+#ifndef __b_REGEXPR_H__
+#define __b_REGEXPR_H__
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -20,42 +21,30 @@ extern "C" {
  * Created: Thu Sep 26 17:15:36 1991 ylo
  * Last modified: Mon Nov  4 15:49:46 1991 ylo
  *
- *  Modified to work with C++ for use in Bacula,           
+ *  Modified to work with C++ for use in Bacula,
  *     Kern Sibbald April, 2006
- */ 
+ */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-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.
+   Copyright (C) 2006-2014 Free Software Foundation Europe e.V.
 
-   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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
-   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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef REGEXPR_H
 #define REGEXPR_H
 
 /* If we pull in this header, make sure we only get our own library
- *  bregex.c 
+ *  bregex.c
  */
 #define regex_t               b_regex_t
 #define regmatch_t            b_regmatch_t
@@ -108,7 +97,7 @@ struct regex_t
    char *errmsg;
    int cflags;                     /* compilation flags */
    POOLMEM *lcase;                 /* used by REG_ICASE */
-};        
+};
 
 
 typedef struct re_registers
@@ -190,7 +179,7 @@ void re_compile_fastmap(regex_t *compiled);
 int regcomp(regex_t *preg, const char *regex, int cflags);
 int regexec(regex_t *preg, const char *string, size_t nmatch,
             regmatch_t pmatch[], int eflags);
-size_t regerror(int errcode, regex_t *preg, char *errbuf, 
+size_t regerror(int errcode, regex_t *preg, char *errbuf,
                 size_t errbuf_size);
 void regfree(regex_t *preg);
 
@@ -201,4 +190,4 @@ void regfree(regex_t *preg);
 #ifdef __cplusplus
 }
 #endif
-#endif /* !b_REGEXPR_H */
+#endif /* !__b_REGEXPR_H__ */
diff --git a/src/lib/bsnprintf.c b/src/lib/bsnprintf.c
index afef57c..a1f21a6 100644
--- a/src/lib/bsnprintf.c
+++ b/src/lib/bsnprintf.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Copyright Patrick Powell 1995
@@ -52,7 +40,7 @@
  *  For Bacula we turn this off, and it silently ignores
  *  formats that could pose a security problem.
  */
-#undef SECURITY_PROBLEM 
+#undef SECURITY_PROBLEM
 
 #ifdef USE_BSNPRINTF
 
@@ -83,7 +71,7 @@ static int32_t fmtfp(char *buffer, int32_t currlen, int32_t maxlen,
 /*
  *  NOTE!!!! do not use this #define with a construct such
  *    as outch(--place);.  It just will NOT work, because the
- *    decrement of place is done ONLY if there is room in the 
+ *    decrement of place is done ONLY if there is room in the
  *    output buffer.
  */
 #define outch(c) {int len=currlen; if (currlen < maxlen) \
@@ -124,8 +112,8 @@ static int32_t fmtfp(char *buffer, int32_t currlen, int32_t maxlen,
 /*
   You might ask why does Bacula have it's own printf routine? Well,
   There are two reasons: 1. Here (as opposed to library routines), we
-  define %d and %ld to be 32 bit; %lld and %q to be 64 bit.  2. We 
-  disable %n for security reasons.                
+  define %d and %ld to be 32 bit; %lld and %q to be 64 bit.  2. We
+  disable %n for security reasons.
  */
 
 int bsnprintf(char *str, int32_t size, const char *fmt,  ...)
@@ -342,7 +330,7 @@ int bvsnprintf(char *buffer, int32_t maxlen, const char *format, va_list args)
             currlen = fmtfp(buffer, currlen, maxlen, fvalue, min, max, flags);
             break;
          case 'c':
-            ch = va_arg(args, int); 
+            ch = va_arg(args, int);
             outch(ch);
             break;
          case 's':
@@ -496,7 +484,7 @@ static int32_t fmtwstr(char *buffer, int32_t currlen, int32_t maxlen,
       --padlen;
    }
    while (*value && (cnt < max)) {
-      
+
       ch = (*value++) & 0xff;
       outch(ch);
       ++cnt;
@@ -661,12 +649,11 @@ static int32_t fmtfp(char *buffer, int32_t currlen, int32_t maxlen,
    int fplace = 0;
    int padlen = 0;                 /* amount to pad */
    int zpadlen = 0;
-   int caps = 0;
    int64_t intpart;
    int64_t fracpart;
    const char *cvt_str;
 
-   /* 
+   /*
     * AIX manpage says the default is 0, but Solaris says the default
     * is 6, and sprintf on AIX defaults to 6
     */
@@ -682,16 +669,11 @@ static int32_t fmtfp(char *buffer, int32_t currlen, int32_t maxlen,
    else if (flags & DP_F_SPACE)
       signvalue = ' ';
 
-#if 0
-   if (flags & DP_F_UP)
-      caps = 1;                    /* Should characters be upper case? */
-#endif
-
 #ifndef HAVE_FCVT
    intpart = (int64_t)ufvalue;
 
-   /* 
-    * Sorry, we only support 9 digits past the decimal because of our 
+   /*
+    * Sorry, we only support 9 digits past the decimal because of our
     * conversion method
     */
    if (max > 9)
@@ -713,7 +695,7 @@ static int32_t fmtfp(char *buffer, int32_t currlen, int32_t maxlen,
 #endif
 
    /* Convert integer part */
-   cvt_str = caps ? "0123456789ABCDEF" : "0123456789abcdef";
+   cvt_str = "0123456789";
    do {
       iconvert[iplace++] = cvt_str[(int)(intpart % 10)];
       intpart = (intpart / 10);
@@ -725,11 +707,11 @@ static int32_t fmtfp(char *buffer, int32_t currlen, int32_t maxlen,
    iconvert[iplace] = 0;
 
    /* Convert fractional part */
-   cvt_str = caps ? "0123456789ABCDEF" : "0123456789abcdef";
-   do {
+   cvt_str = "0123456789";
+   for (int fiter = max; fiter > 0; fiter--) {
       fconvert[fplace++] = cvt_str[fracpart % 10];
       fracpart = (fracpart / 10);
-   } while (fracpart && (fplace < (int)sizeof(fconvert)));
+   }
 
    if (fplace == (int)sizeof(fconvert)) {
       fplace--;
@@ -889,9 +871,10 @@ int main(int argc, char *argv[])
       "%3.2f",
       "%.0f",
       "%.1f",
+      "%.2f",
       NULL
    };
-   double fp_nums[] = { -1.5, 134.21, 91340.2, 341.1234, 0203.9, 0.96, 0.996,
+   double fp_nums[] = { 1.05, -1.5, 134.21, 91340.2, 341.1234, 0203.9, 0.96, 0.996,
       0.9996, 1.996, 4.136, 6442452944.1234, 0, 23365.5
    };
 #endif
@@ -968,8 +951,6 @@ int main(int argc, char *argv[])
    };
    const wchar_t *ls_nums[] = { L"abc", L"def", L"ghi", L"123", L"4567", L"a", L"bb", L"ccccccc", NULL};
 
-
-
    int x, y;
    int fail = 0;
    int num = 0;
diff --git a/src/lib/bsock.c b/src/lib/bsock.c
index 4df45e5..d947ba0 100644
--- a/src/lib/bsock.c
+++ b/src/lib/bsock.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Network Utility Routines
  *
- *  by Kern Sibbald
+ *  Written by Kern Sibbald
  *
  */
 
@@ -46,17 +34,20 @@
 #endif
 
 #ifdef HAVE_WIN32
+#include <mswsock.h>
 #define socketRead(fd, buf, len)  ::recv(fd, buf, len, 0)
 #define socketWrite(fd, buf, len) ::send(fd, buf, len, 0)
 #define socketClose(fd)           ::closesocket(fd)
+static void win_close_wait(int fd);
 #else
 #define socketRead(fd, buf, len)  ::read(fd, buf, len)
 #define socketWrite(fd, buf, len) ::write(fd, buf, len)
 #define socketClose(fd)           ::close(fd)
 #endif
 
+
 /*
- * This is a non-class BSOCK "constructor"  because we want to 
+ * This is a non-class BSOCK "constructor"  because we want to
  *   call the Bacula smartalloc routines instead of new.
  */
 BSOCK *new_bsock()
@@ -69,30 +60,19 @@ BSOCK *new_bsock()
 void BSOCK::init()
 {
    memset(this, 0, sizeof(BSOCK));
+   set_closed();
+   set_terminated();
    m_blocking = 1;
    msg = get_pool_memory(PM_BSOCK);
    errmsg = get_pool_memory(PM_MESSAGE);
-   /*
-    * ****FIXME**** reduce this to a few hours once
-    *   heartbeats are implemented
-    */
-   timeout = 60 * 60 * 6 * 24;   /* 6 days timeout */
-}
-
-/*
- * This is our "class destructor" that ensures that we use
- *   smartalloc rather than the system free().
- */
-void BSOCK::free_bsock()
-{
-   destroy();
+   timeout = BSOCK_TIMEOUT;
 }
 
 void BSOCK::free_tls()
 {
    free_tls_connection(this->tls);
    this->tls = NULL;
-}   
+}
 
 /*
  * Try to connect to host for max_retry_time at retry_time intervals.
@@ -115,14 +95,14 @@ bool BSOCK::connect(JCR * jcr, int retry_interval, utime_t max_retry_time,
    if (max_retry_time) {
       tid = start_thread_timer(jcr, pthread_self(), (uint32_t)max_retry_time);
    }
-   
+
    for (i = 0; !open(jcr, name, host, service, port, heart_beat, &fatal);
         i -= retry_interval) {
       berrno be;
       if (fatal || (jcr && job_canceled(jcr))) {
          goto bail_out;
       }
-      Dmsg4(100, "Unable to connect to %s on %s:%d. ERR=%s\n",
+      Dmsg4(50, "Unable to connect to %s on %s:%d. ERR=%s\n",
             name, host, port, be.bstrerror());
       if (i < 0) {
          i = 60 * 5;               /* complain again in 5 minutes */
@@ -148,14 +128,20 @@ bail_out:
    return ok;
 }
 
-/*       
- * Finish initialization of the pocket structure.
+/*
+ * Finish initialization of the packet structure.
  */
 void BSOCK::fin_init(JCR * jcr, int sockfd, const char *who, const char *host, int port,
-                     struct sockaddr *lclient_addr)
+               struct sockaddr *lclient_addr)
 {
    Dmsg3(100, "who=%s host=%s port=%d\n", who, host, port);
    m_fd = sockfd;
+   if (m_who) {
+      free(m_who);
+   }
+   if (m_host) {
+      free(m_host);
+   }
    set_who(bstrdup(who));
    set_host(bstrdup(host));
    set_port(port);
@@ -188,11 +174,11 @@ void BSOCK::set_source_address(dlist *src_addr_list)
  * Returns BSOCK * pointer on success
  */
 bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
-                 int port, utime_t heart_beat, int *fatal)
+               int port, utime_t heart_beat, int *fatal)
 {
    int sockfd = -1;
    dlist *addr_list;
-   IPADDR *ipaddr, *next;
+   IPADDR *ipaddr;
    bool connected = false;
    int turnon = 1;
    const char *errstr;
@@ -204,7 +190,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, _("bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"),
+      Qmsg2(jcr, M_ERROR, 0, _("gethostbyname() for host \"%s\" failed: ERR=%s\n"),
             host, errstr);
       Dmsg2(100, "bnet_host2ipaddrs() for host %s failed: ERR=%s\n",
             host, errstr);
@@ -212,21 +198,7 @@ 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);
-         }
-      }
-   }
-
+   remove_duplicate_addresses(addr_list);
    foreach_dlist(ipaddr, addr_list) {
       ipaddr->set_port_net(htons(port));
       char allbuf[256 * 10];
@@ -239,24 +211,18 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
          berrno be;
          save_errno = errno;
          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
+             * 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
          default:
             *fatal = 1;
+            Qmsg3(jcr, M_ERROR, 0,  _("Socket open error. proto=%d port=%d. ERR=%s\n"),
+               ipaddr->get_family(), ipaddr->get_port_host_order(), be.bstrerror());
             Pmsg3(000, _("Socket open error. proto=%d port=%d. ERR=%s\n"),
                ipaddr->get_family(), ipaddr->get_port_host_order(), be.bstrerror());
             break;
@@ -270,8 +236,11 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
             berrno be;
             save_errno = errno;
             *fatal = 1;
+            Qmsg2(jcr, M_ERROR, 0, _("Source address bind error. proto=%d. ERR=%s\n"),
+                  src_addr->get_family(), be.bstrerror() );
             Pmsg2(000, _("Source address bind error. proto=%d. ERR=%s\n"),
                   src_addr->get_family(), be.bstrerror() );
+            if (sockfd >= 0) socketClose(sockfd);
             continue;
          }
       }
@@ -298,7 +267,7 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
       /* connect to server */
       if (::connect(sockfd, ipaddr->get_sockaddr(), ipaddr->get_sockaddr_len()) < 0) {
          save_errno = errno;
-         socketClose(sockfd);
+         if (sockfd >= 0) socketClose(sockfd);
          continue;
       }
       *fatal = 0;
@@ -307,8 +276,11 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
    }
 
    if (!connected) {
+      berrno be;
       free_addresses(addr_list);
       errno = save_errno | b_errno_win32;
+      Dmsg4(50, "Could not connect to server %s %s:%d. ERR=%s\n",
+            name, host, port, be.bstrerror());
       return false;
    }
    /*
@@ -322,6 +294,21 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
    }
    fin_init(jcr, sockfd, name, host, port, ipaddr->get_sockaddr());
    free_addresses(addr_list);
+
+   /* Clean the packet a bit */
+   m_closed = false;
+   m_duped = false;
+   m_spool = false;
+   m_use_locking = false;
+   m_timed_out = false;
+   m_terminated = false;
+   m_suppress_error_msgs = false;
+   errors = 0;
+   m_blocking = 0;
+
+   Dmsg3(50, "OK connected to server  %s %s:%d.\n",
+         name, host, port);
+
    return true;
 }
 
@@ -368,7 +355,15 @@ bool BSOCK::send()
    int32_t pktsiz;
    int32_t *hdr;
    bool ok = true;
+   int32_t save_msglen;
+   POOLMEM *save_msg;
 
+   if (is_closed()) {
+      if (!m_suppress_error_msgs) {
+         Qmsg0(m_jcr, M_ERROR, 0,  _("Socket is closed\n"));
+      }
+      return false;
+   }
    if (errors) {
       if (!m_suppress_error_msgs) {
          Qmsg4(m_jcr, M_ERROR, 0,  _("Socket has errors=%d on call to %s:%s:%d\n"),
@@ -393,18 +388,21 @@ bool BSOCK::send()
    }
 
    if (m_use_locking) P(m_mutex);
+   save_msglen = msglen;
+   save_msg = msg;
    /* Compute total packet length */
    if (msglen <= 0) {
       pktsiz = sizeof(pktsiz);               /* signal, no data */
    } else {
       pktsiz = msglen + sizeof(pktsiz);      /* data */
    }
-   /* Store packet length at head of message -- note, we
+   /*
+    * Store packet length at head of message -- note, we
     *  have reserved an int32_t just before msg, so we can
-    *  store there 
+    *  store there
     */
    hdr = (int32_t *)(msg - (int)sizeof(pktsiz));
-   *hdr = htonl(msglen);                     /* store signal/length */
+   *hdr = htonl(msglen);              /* store signal/length */
 
    out_msg_no++;            /* increment message number */
 
@@ -424,17 +422,19 @@ bool BSOCK::send()
       if (rc < 0) {
          if (!m_suppress_error_msgs) {
             Qmsg5(m_jcr, M_ERROR, 0,
-                  _("Write error sending %d bytes to %s:%s:%d: ERR=%s\n"), 
-                  msglen, m_who,
+                  _("Write error sending %d bytes to %s:%s:%d: ERR=%s\n"),
+                  pktsiz, m_who,
                   m_host, m_port, this->bstrerror());
          }
       } else {
          Qmsg5(m_jcr, M_ERROR, 0,
                _("Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"),
-               msglen, m_who, m_host, m_port, rc);
+               pktsiz, m_who, m_host, m_port, rc);
       }
       ok = false;
    }
+   msglen = save_msglen;
+   msg = save_msg;
    if (m_use_locking) V(m_mutex);
    return ok;
 }
@@ -449,7 +449,7 @@ bool BSOCK::fsend(const char *fmt, ...)
    va_list arg_ptr;
    int maxlen;
 
-   if (errors || is_terminated()) {
+   if (errors || is_terminated() || is_closed()) {
       return false;
    }
    /* This probably won't work, but we vsnprintf, then if we
@@ -485,20 +485,24 @@ bool BSOCK::fsend(const char *fmt, ...)
  *    2. Signal including end of data stream
  *    3. Hard end of file
  *    4. Error
- *  Using is_bnet_stop() and is_bnet_error() you can figure this all out.
+ *  Using bsock->is_stop() and bsock->is_error() you can figure this all out.
  */
 int32_t BSOCK::recv()
 {
    int32_t nbytes;
    int32_t pktsiz;
+   bool locked = false;
 
    msg[0] = 0;
    msglen = 0;
-   if (errors || is_terminated()) {
+   if (errors || is_terminated() || is_closed()) {
       return BNET_HARDEOF;
    }
 
-   if (m_use_locking) P(m_mutex);
+   if (m_use_locking) {
+      P(m_mutex);
+      locked = true;
+   }
    read_seqno++;            /* bump sequence number */
    timer_start = watchdog_time;  /* set start wait time */
    clear_timed_out();
@@ -538,9 +542,9 @@ int32_t BSOCK::recv()
    /* If signal or packet size too big */
    if (pktsiz < 0 || pktsiz > 1000000) {
       if (pktsiz > 0) {            /* if packet too big */
-         Qmsg3(m_jcr, M_FATAL, 0,
-               _("Packet size too big from \"%s:%s:%d. Terminating connection.\n"),
-               m_who, m_host, m_port);
+         Qmsg4(m_jcr, M_FATAL, 0,
+               _("Packet size=%d too big from \"%s:%s:%d. Terminating connection.\n"),
+               pktsiz, m_who, m_host, m_port);
          pktsiz = BNET_TERMINATE;  /* hang up */
       }
       if (pktsiz == BNET_TERMINATE) {
@@ -585,19 +589,20 @@ int32_t BSOCK::recv()
       nbytes = BNET_ERROR;
       goto get_out;
    }
+
    /* always add a zero by to properly terminate any
     * string that was send to us. Note, we ensured above that the
     * buffer is at least one byte longer than the message length.
     */
    msg[nbytes] = 0; /* terminate in case it is a string */
    /*
-    * The following uses *lots* of resources so turn it on only for 
+    * The following uses *lots* of resources so turn it on only for
     * serious debugging.
     */
    Dsm_check(300);
 
 get_out:
-   if (m_use_locking) V(m_mutex);
+   if (locked) V(m_mutex);
    return nbytes;                  /* return actual length of message */
 }
 
@@ -613,7 +618,7 @@ bool BSOCK::signal(int signal)
    return send();
 }
 
-/* 
+/*
  * Despool spooled attributes
  */
 bool BSOCK::despool(void update_attr_spool_size(ssize_t size), ssize_t tsize)
@@ -642,8 +647,8 @@ bool BSOCK::despool(void update_attr_spool_size(ssize_t size), ssize_t tsize)
          if (nbytes != (size_t)msglen) {
             berrno be;
             Dmsg2(400, "nbytes=%d msglen=%d\n", nbytes, msglen);
-            Qmsg1(get_jcr(), M_FATAL, 0, _("fread attr spool error. ERR=%s\n"),
-                  be.bstrerror());
+            Qmsg3(get_jcr(), M_FATAL, 0, _("fread attr spool error. Wanted=%d got=%d bytes. ERR=%s\n"),
+                  msglen, nbytes, be.bstrerror());
             update_attr_spool_size(tsize - last);
             return false;
          }
@@ -680,7 +685,7 @@ const char *BSOCK::bstrerror()
    return errmsg;
 }
 
-int BSOCK::get_peer(char *buf, socklen_t buflen) 
+int BSOCK::get_peer(char *buf, socklen_t buflen)
 {
 #if !defined(HAVE_WIN32)
     if (peer_addr.sin_family == 0) {
@@ -711,7 +716,7 @@ bool BSOCK::set_buffer_size(uint32_t size, int rw)
 #if defined(IP_TOS) && defined(IPTOS_THROUGHPUT)
    int opt;
    opt = IPTOS_THROUGHPUT;
-   setsockopt(fd, IPPROTO_IP, IP_TOS, (sockopt_val_t)&opt, sizeof(opt));
+   setsockopt(m_fd, IPPROTO_IP, IP_TOS, (sockopt_val_t)&opt, sizeof(opt));
 #endif
 
    if (size != 0) {
@@ -851,7 +856,7 @@ void BSOCK::set_killable(bool killable)
 /*
  * Restores socket flags
  */
-void BSOCK::restore_blocking (int flags) 
+void BSOCK::restore_blocking (int flags)
 {
 #ifndef HAVE_WIN32
    if ((fcntl(m_fd, F_SETFL, flags)) < 0) {
@@ -933,23 +938,34 @@ int BSOCK::wait_data_intr(int sec, int usec)
 }
 
 /*
- * Note, this routine closes and destroys all the sockets
- *  that are open including the duped ones.
+ *  This routine closes the current BSOCK.
+ *   It does not delete the socket packet
+ *   resources, which are released int
+ *   bsock->destroy().
  */
 #ifndef SHUT_RDWR
 #define SHUT_RDWR 2
 #endif
 
+/*
+ * Note, this routine closes the socket, but leaves the
+ *   bsock memory in place.
+ */
 void BSOCK::close()
 {
    BSOCK *bsock = this;
    BSOCK *next;
 
+   if (bsock->is_closed()) {
+      return;
+   }
    if (!m_duped) {
       clear_locking();
    }
    for (; bsock; bsock = next) {
       next = bsock->m_next;           /* get possible pointer to next before destoryed */
+      bsock->set_closed();
+      bsock->set_terminated();
       if (!bsock->m_duped) {
          /* Shutdown tls cleanly. */
          if (bsock->tls) {
@@ -957,23 +973,36 @@ void BSOCK::close()
             free_tls_connection(bsock->tls);
             bsock->tls = NULL;
          }
+
+#ifdef HAVE_WIN32
+         if (!bsock->is_timed_out()) {
+            win_close_wait(bsock->m_fd);  /* Ensure that data is not discarded */
+         }
+#else
          if (bsock->is_timed_out()) {
             shutdown(bsock->m_fd, SHUT_RDWR);   /* discard any pending I/O */
          }
+#endif
+         /* On Windows this discards data if we did not do a close_wait() */
          socketClose(bsock->m_fd);      /* normal close */
       }
-      bsock->destroy();
    }
    return;
 }
 
+/*
+ * Destroy the socket (i.e. release all resources)
+ *  including and duped sockets.
+ */
 void BSOCK::destroy()
 {
+   this->close();                  /* Ensure that socket is closed */
+
    if (msg) {
       free_pool_memory(msg);
       msg = NULL;
    } else {
-      ASSERT(1 == 0);              /* double close */
+      ASSERT2(1 == 0, "Two calls to destroy socket");  /* double destroy */
    }
    if (errmsg) {
       free_pool_memory(errmsg);
@@ -990,7 +1019,10 @@ void BSOCK::destroy()
    if (src_addr) {
       free(src_addr);
       src_addr = NULL;
-   } 
+   }
+   if (m_next) {
+      m_next->destroy();
+   }
    free(this);
 }
 
@@ -1004,7 +1036,7 @@ static char OKhello[]   = "1000 OK:";
  * Authenticate Director
  */
 bool BSOCK::authenticate_director(const char *name, const char *password,
-                                  TLS_CONTEXT *tls_ctx, char *response, int response_len)
+               TLS_CONTEXT *tls_ctx, char *errmsg, int errmsg_len)
 {
    int tls_local_need = BNET_TLS_NONE;
    int tls_remote_need = BNET_TLS_NONE;
@@ -1012,7 +1044,7 @@ bool BSOCK::authenticate_director(const char *name, const char *password,
    char bashed_name[MAX_NAME_LENGTH];
    BSOCK *dir = this;        /* for readability */
 
-   response[0] = 0;
+   *errmsg = 0;
    /*
     * Send my name to the Director then do authentication
     */
@@ -1029,14 +1061,14 @@ bool BSOCK::authenticate_director(const char *name, const char *password,
    if (!cram_md5_respond(dir, password, &tls_remote_need, &compatible) ||
        /* Now challenge dir */
        !cram_md5_challenge(dir, password, tls_local_need, compatible)) {
-      bsnprintf(response, response_len, _("Director authorization problem at \"%s:%d\"\n"),
+      bsnprintf(errmsg, errmsg_len, _("Director authorization error at \"%s:%d\"\n"),
          dir->host(), dir->port());
       goto bail_out;
    }
 
    /* Verify that the remote host is willing to meet our TLS requirements */
    if (tls_remote_need < tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {
-      bsnprintf(response, response_len, _("Authorization problem:"
+      bsnprintf(errmsg, errmsg_len, _("Authorization error:"
              " Remote server at \"%s:%d\" did not advertise required TLS support.\n"),
              dir->host(), dir->port());
       goto bail_out;
@@ -1044,7 +1076,7 @@ bool BSOCK::authenticate_director(const char *name, const char *password,
 
    /* Verify that we are willing to meet the remote host's requirements */
    if (tls_remote_need > tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {
-      bsnprintf(response, response_len, _("Authorization problem with Director at \"%s:%d\":"
+      bsnprintf(errmsg, errmsg_len, _("Authorization error with Director at \"%s:%d\":"
                      " Remote server requires TLS.\n"),
                      dir->host(), dir->port());
 
@@ -1056,7 +1088,7 @@ bool BSOCK::authenticate_director(const char *name, const char *password,
       if (tls_local_need >= BNET_TLS_OK && tls_remote_need >= BNET_TLS_OK) {
          /* Engage TLS! Full Speed Ahead! */
          if (!bnet_tls_client(tls_ctx, dir, NULL)) {
-            bsnprintf(response, response_len, _("TLS negotiation failed with Director at \"%s:%d\"\n"),
+            bsnprintf(errmsg, errmsg_len, _("TLS negotiation failed with Director at \"%s:%d\"\n"),
                dir->host(), dir->port());
             goto bail_out;
          }
@@ -1066,8 +1098,8 @@ bool BSOCK::authenticate_director(const char *name, const char *password,
    Dmsg1(6, ">dird: %s", dir->msg);
    if (dir->recv() <= 0) {
       dir->stop_timer();
-      bsnprintf(response, response_len, _("Bad response to Hello command: ERR=%s\n"
-                      "The Director at \"%s:%d\" is probably not running.\n"),
+      bsnprintf(errmsg, errmsg_len, _("Bad errmsg to Hello command: ERR=%s\n"
+                      "The Director at \"%s:%d\" may not be running.\n"),
                     dir->bstrerror(), dir->host(), dir->port());
       return false;
    }
@@ -1075,20 +1107,85 @@ bool BSOCK::authenticate_director(const char *name, const char *password,
    dir->stop_timer();
    Dmsg1(10, "<dird: %s", dir->msg);
    if (strncmp(dir->msg, OKhello, sizeof(OKhello)-1) != 0) {
-      bsnprintf(response, response_len, _("Director at \"%s:%d\" rejected Hello command\n"),
+      bsnprintf(errmsg, errmsg_len, _("Director at \"%s:%d\" rejected Hello command\n"),
          dir->host(), dir->port());
       return false;
    } else {
-      bsnprintf(response, response_len, "%s", dir->msg);
+      bsnprintf(errmsg, errmsg_len, "%s", dir->msg);
    }
    return true;
 
 bail_out:
    dir->stop_timer();
-   bsnprintf(response, response_len, _("Authorization problem with Director at \"%s:%d\"\n"
+   bsnprintf(errmsg, errmsg_len, _("Authorization error with Director at \"%s:%d\"\n"
              "Most likely the passwords do not agree.\n"
              "If you are using TLS, there may have been a certificate validation error during the TLS handshake.\n"
              "Please see " MANUAL_AUTH_URL " for help.\n"),
              dir->host(), dir->port());
    return false;
 }
+
+/* Try to limit the bandwidth of a network connection
+ */
+void BSOCK::control_bwlimit(int bytes)
+{
+   btime_t now, temp;
+   if (bytes == 0) {
+      return;
+   }
+
+   now = get_current_btime();          /* microseconds */
+   temp = now - m_last_tick;           /* microseconds */
+
+   m_nb_bytes += bytes;
+
+   /* Less than 0.1ms since the last call, see the next time */
+   if (temp < 100) {
+      return;
+   }
+
+   if (temp > 10000000) { /* Take care of clock problems (>10s) */
+      m_nb_bytes = bytes;
+      m_last_tick = now;
+      return;
+   }
+
+   /* Remove what was authorised to be written in temp us */
+   m_nb_bytes -= (int64_t)(temp * ((double)m_bwlimit / 1000000.0));
+
+   if (m_nb_bytes < 0) {
+      m_nb_bytes = 0;
+   }
+
+   /* What exceed should be converted in sleep time */
+   int64_t usec_sleep = (int64_t)(m_nb_bytes /((double)m_bwlimit / 1000000.0));
+   if (usec_sleep > 100) {
+      bmicrosleep(0, usec_sleep); /* TODO: Check that bmicrosleep slept enough or sleep again */
+      m_last_tick = get_current_btime();
+      m_nb_bytes = 0;
+   } else {
+      m_last_tick = now;
+   }
+}
+
+#ifdef HAVE_WIN32
+/*
+ * closesocket is supposed to do a graceful disconnect under Window
+ *   but it doesn't. Comments on http://msdn.microsoft.com/en-us/li
+ *   confirm this behaviour. DisconnectEx is required instead, but
+ *   that function needs to be retrieved via WS IOCTL
+ */
+static void
+win_close_wait(int fd)
+{
+   int ret;
+   GUID disconnectex_guid = WSAID_DISCONNECTEX;
+   DWORD bytes_returned;
+   LPFN_DISCONNECTEX DisconnectEx;
+   ret = WSAIoctl(fd, SIO_GET_EXTENSION_FUNCTION_POINTER, &disconnectex_guid, sizeof(disconnectex_guid), &DisconnectEx, sizeof(DisconnectEx), &bytes_returned, NULL, NULL);
+   Dmsg1(100, "WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER, WSAID_DISCONNECTEX) ret = %d\n", ret);
+   if (!ret) {
+      DisconnectEx(fd, NULL, 0, 0);
+   }
+}
+#endif
diff --git a/src/lib/bsock.h b/src/lib/bsock.h
index fa2ad2a..7c82db1 100644
--- a/src/lib/bsock.h
+++ b/src/lib/bsock.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Sock Class definition
@@ -38,7 +26,6 @@
  * Negative msglen, is special "signal" (no data follows).
  *   See below for SIGNAL codes.
  *
- *   Version $Id$
  */
 
 #ifndef __BSOCK_H_
@@ -46,12 +33,14 @@
 
 struct btimer_t;                      /* forward reference */
 class BSOCK;
+/* Effectively disable the bsock time out */
+#define BSOCK_TIMEOUT  3600 * 24 * 200;  /* default 200 days */
 btimer_t *start_bsock_timer(BSOCK *bs, uint32_t wait);
 void stop_bsock_timer(btimer_t *wid);
 
 
 class BSOCK {
-/* 
+/*
  * Note, keep this public part before the private otherwise
  *  bat breaks on some systems such as RedHat.
  */
@@ -85,26 +74,32 @@ private:
    char *m_host;                      /* Host name/IP */
    int m_port;                        /* desired port */
    btimer_t *m_tid;                   /* timer id */
-   boffset_t m_data_end;              /* offset of last valid data written */
-   int32_t m_FileIndex;               /* last valid attr spool FI */
+   boffset_t m_data_end;              /* offset of data written */
+   boffset_t m_last_data_end;          /* offset of last valid data written */
+   int32_t m_FileIndex;               /* attr spool FI */
+   int32_t m_lastFileIndex;           /* last valid attr spool FI */
    volatile bool m_timed_out: 1;      /* timed out in read/write */
    volatile bool m_terminated: 1;     /* set when BNET_TERMINATE arrives */
+   bool m_closed: 1;                  /* set when socket is closed */
    bool m_duped: 1;                   /* set if duped BSOCK */
    bool m_spool: 1;                   /* set for spooling */
    bool m_use_locking: 1;             /* set to use locking */
 
+   int64_t m_bwlimit;                 /* set to limit bandwidth */
+   int64_t m_nb_bytes;                /* bytes sent/recv since the last tick */
+   btime_t m_last_tick;               /* last tick used by bwlimit */
+
    void fin_init(JCR * jcr, int sockfd, const char *who, const char *host, int port,
                struct sockaddr *lclient_addr);
    bool open(JCR *jcr, const char *name, char *host, char *service,
                int port, utime_t heart_beat, int *fatal);
-   
+
 public:
    /* methods -- in bsock.c */
    void init();
-   void free_bsock();
    void free_tls();
    bool connect(JCR * jcr, int retry_interval, utime_t max_retry_time,
-                utime_t heart_beat, const char *name, char *host, 
+                utime_t heart_beat, const char *name, char *host,
                 char *service, int port, int verbose);
    int32_t recv();
    bool send();
@@ -127,43 +122,53 @@ public:
    bool set_locking();                /* in bsock.c */
    void clear_locking();              /* in bsock.c */
    void set_source_address(dlist *src_addr_list);
+   void control_bwlimit(int bytes);   /* in bsock.c */
 
    /* Inline functions */
+   void suppress_error_messages(bool flag) { m_suppress_error_msgs = flag; };
    void set_jcr(JCR *jcr) { m_jcr = jcr; };
    void set_who(char *who) { m_who = who; };
    void set_host(char *host) { m_host = host; };
    void set_port(int port) { m_port = port; };
-   char *who() { return m_who; };
-   char *host() { return m_host; };
-   int port() { return m_port; };
-   JCR *jcr() { return m_jcr; };
-   JCR *get_jcr() { return m_jcr; };
-   bool is_spooling() { return m_spool; };
-   bool is_duped() { return m_duped; };
-   bool is_terminated() { return m_terminated; };
-   bool is_timed_out() { return m_timed_out; };
-   bool is_stop() { return errors || is_terminated(); }
-   bool is_error() { errno = b_errno; return errors; }
-   void set_data_end(int32_t FileIndex) { 
+   char *who() const { return m_who; };
+   char *host() const { return m_host; };
+   int port() const { return m_port; };
+   JCR *jcr() const { return m_jcr; };
+   JCR *get_jcr() const { return m_jcr; };
+   bool is_spooling() const { return m_spool; };
+   bool is_duped() const { return m_duped; };
+   bool is_terminated() const { return m_terminated; };
+   bool is_timed_out() const { return m_timed_out; };
+   bool is_closed() const { return m_closed; };
+   bool is_open() const { return !m_closed; };
+   bool is_stop() const { return errors || is_terminated() || is_closed(); }
+   bool is_error() { errno = b_errno; return errors; };
+   void set_data_end(int32_t FileIndex) {
           if (m_spool && FileIndex > m_FileIndex) {
-              m_FileIndex = FileIndex - 1;
+              m_lastFileIndex = m_FileIndex;
+              m_last_data_end = m_data_end;
+              m_FileIndex = FileIndex;
               m_data_end = ftello(m_spool_fd);
            }
         };
-   boffset_t get_data_end() { return m_data_end; };
-   int32_t get_FileIndex() { return m_FileIndex; };
+   boffset_t get_last_data_end() { return m_last_data_end; };
+   int32_t get_lastFileIndex() { return m_lastFileIndex; };
+   void set_bwlimit(int64_t maxspeed) { m_bwlimit = maxspeed; };
+   bool use_bwlimit() { return m_bwlimit > 0;};
    void set_spooling() { m_spool = true; };
    void clear_spooling() { m_spool = false; };
    void set_duped() { m_duped = true; };
    void set_timed_out() { m_timed_out = true; };
    void clear_timed_out() { m_timed_out = false; };
    void set_terminated() { m_terminated = true; };
+   void set_closed() { m_closed = true; };
    void start_timer(int sec) { m_tid = start_bsock_timer(this, sec); };
    void stop_timer() { stop_bsock_timer(m_tid); };
+   void swap_msgs();
 };
 
-/* 
- *  Signal definitions for use in bnet_sig()   
+/*
+ *  Signal definitions for use in bsock->signal()
  *  Note! These must be negative.  There are signals that are generated
  *   by the bsock software not by the OS ...
  */
@@ -193,7 +198,7 @@ enum {
    BNET_RUN_CMD        = -23,         /* Run command follows */
    BNET_YESNO          = -24,         /* Request yes no response */
    BNET_START_RTREE    = -25,         /* Start restore tree mode */
-   BNET_END_RTREE      = -26,         /* End restore tree mode */ 
+   BNET_END_RTREE      = -26,         /* End restore tree mode */
    BNET_SUB_PROMPT     = -27,         /* Indicate we are at a subprompt */
    BNET_TEXT_INPUT     = -28          /* Get text input from user */
 };
@@ -201,9 +206,9 @@ enum {
 #define BNET_SETBUF_READ  1           /* Arg for bnet_set_buffer_size */
 #define BNET_SETBUF_WRITE 2           /* Arg for bnet_set_buffer_size */
 
-/* 
+/*
  * Return status from bnet_recv()
- * Note, the HARDEOF and ERROR refer to comm status/problems 
+ * Note, the HARDEOF and ERROR refer to comm status/problems
  *  rather than the BNET_xxx above, which are software signals.
  */
 enum {
@@ -226,5 +231,14 @@ int32_t read_nbytes(BSOCK * bsock, char *ptr, int32_t nbytes);
 int32_t write_nbytes(BSOCK * bsock, char *ptr, int32_t nbytes);
 
 BSOCK *new_bsock();
+/*
+ * Completely release the socket packet, and NULL the pointer
+ */
+#define free_bsock(a) do{if(a){(a)->close(); (a)->destroy(); (a)=NULL;}} while(0)
+
+/*
+ * Does the socket exist and is it open?
+ */
+#define is_bsock_open(a) ((a) && (a)->is_open())
 
 #endif /* __BSOCK_H_ */
diff --git a/src/lib/bsys.c b/src/lib/bsys.c
index 7900e3c..40e048e 100644
--- a/src/lib/bsys.c
+++ b/src/lib/bsys.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Miscellaneous Bacula memory and thread safe routines
@@ -45,9 +33,82 @@ static pthread_mutex_t timer_mutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_cond_t timer = PTHREAD_COND_INITIALIZER;
 
 /*
+ * Quote a string
+ */
+POOLMEM *quote_string(POOLMEM *snew, const char *old)
+{
+   char *n;
+   int i;
+
+   if (!old) {
+      strcpy(snew, "null");
+      return snew;
+   }
+   n = snew;
+   *n++ = '"';
+   for (i=0; old[i]; i++) {
+      switch (old[i]) {
+      case '"':
+         *n++ = '\\';
+         *n++ = '"';
+         break;
+      case '\\':
+         *n++ = '\\';
+         *n++ = '\\';
+         break;
+      default:
+         *n++ = old[i];
+         break;
+      }
+   }
+   *n++ = '"';
+   *n = 0;
+   return snew;
+}
+
+/*
+ * Quote a where (list of addresses separated by spaces)
+ */
+POOLMEM *quote_where(POOLMEM *snew, const char *old)
+{
+   char *n;
+   int i;
+
+   if (!old) {
+      strcpy(snew, "null");
+      return snew;
+   }
+   n = snew;
+   *n++ = '"';
+   for (i=0; old[i]; i++) {
+      switch (old[i]) {
+      case ' ':
+         *n++ = '"';
+         *n++ = ',';
+         *n++ = '"';
+         break;
+      case '"':
+         *n++ = '\\';
+         *n++ = '"';
+         break;
+      case '\\':
+         *n++ = '\\';
+         *n++ = '\\';
+         break;
+      default:
+         *n++ = old[i];
+         break;
+      }
+   }
+   *n++ = '"';
+   *n = 0;
+   return snew;
+}
+
+/*
  * 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 
+ *   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)
@@ -119,7 +180,7 @@ int bmicrosleep(int32_t sec, int32_t usec)
       timeout.tv_sec++;
    }
 
-   Dmsg2(200, "pthread_cond_timedwait sec=%lld usec=%d\n", sec, usec);
+   Dmsg2(200, "pthread_cond_timedwait sec=%d usec=%d\n", sec, usec);
    /* Note, this unlocks mutex during the sleep */
    P(timer_mutex);
    stat = pthread_cond_timedwait(&timer, &timer_mutex, &timeout);
@@ -191,14 +252,25 @@ bool bstrcmp(const char *s1, const char *s2)
 }
 
 /*
+ * Allows one or both pointers to be NULL
+ */
+bool bstrcasecmp(const char *s1, const char *s2)
+{
+   if (s1 == s2) return true;
+   if (s1 == NULL || s2 == NULL) return false;
+   return strcasecmp(s1, s2) == 0;
+}
+
+
+/*
  * Get character length of UTF-8 string
  *
  * Valid UTF-8 codes
- * U-00000000 - U-0000007F: 0xxxxxxx 
- * U-00000080 - U-000007FF: 110xxxxx 10xxxxxx 
- * U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx 
- * U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 
- * U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 
+ * U-00000000 - U-0000007F: 0xxxxxxx
+ * U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
+ * U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
+ * U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  * U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  */
 int cstrlen(const char *str)
@@ -465,7 +537,7 @@ void create_pid_file(char *dir, const char *progname, int port)
            read(pidfd, &pidbuf, sizeof(pidbuf)) < 0 ||
            sscanf(pidbuf, "%d", &oldpid) != 1) {
          berrno be;
-         Emsg2(M_ERROR_TERM, 0, _("Cannot open pid file. %s ERR=%s\n"), fname, 
+         Emsg2(M_ERROR_TERM, 0, _("Cannot open pid file. %s ERR=%s\n"), fname,
                be.bstrerror());
       }
       /* Some OSes (IRIX) don't bother to clean out the old pid files after a crash, and
@@ -494,7 +566,7 @@ void create_pid_file(char *dir, const char *progname, int port)
       del_pid_file_ok = TRUE;         /* we created it so we can delete it */
    } else {
       berrno be;
-      Emsg2(M_ERROR_TERM, 0, _("Could not open pid file. %s ERR=%s\n"), fname, 
+      Emsg2(M_ERROR_TERM, 0, _("Could not open pid file. %s ERR=%s\n"), fname,
             be.bstrerror());
    }
    free_pool_memory(fname);
@@ -553,7 +625,7 @@ void read_state_file(char *dir, const char *progname, int port)
    if ((sfd = open(fname, O_RDONLY|O_BINARY)) < 0) {
       berrno be;
       Dmsg3(010, "Could not open state file. sfd=%d size=%d: ERR=%s\n",
-                    sfd, sizeof(hdr), be.bstrerror());
+            sfd, (int)sizeof(hdr), be.bstrerror());
       goto bail_out;
    }
    if ((stat=read(sfd, &hdr, hdr_size)) != hdr_size) {
@@ -597,7 +669,7 @@ void write_state_file(char *dir, const char *progname, int port)
    int sfd;
    bool ok = false;
    POOLMEM *fname = get_pool_memory(PM_FNAME);
-   
+
    P(state_mutex);                    /* Only one job at a time can call here */
    Mmsg(&fname, "%s/%s.%d.state", dir, progname, port);
    /* Create new state file */
@@ -774,6 +846,19 @@ char *escape_filename(const char *file_path)
    return escaped_path;
 }
 
+/*
+ * For the moment preventing suspensions is only
+ *  implemented on Windows.
+ */
+#ifndef HAVE_WIN32
+void prevent_os_suspensions()
+{ }
+
+void allow_os_suspensions()
+{ }
+#endif
+
+
 #if HAVE_BACKTRACE && HAVE_GCC
 #include <cxxabi.h>
 #include <execinfo.h>
@@ -783,10 +868,10 @@ void stack_trace()
    size_t stack_depth;
    void *stack_addrs[max_depth];
    char **stack_strings;
-   
+
    stack_depth = backtrace(stack_addrs, max_depth);
    stack_strings = backtrace_symbols(stack_addrs, stack_depth);
-   
+
    for (size_t i = 3; i < stack_depth; i++) {
       size_t sz = 200; /* just a guess, template names will go much wider */
       char *function = (char *)actuallymalloc(sz);
@@ -803,7 +888,7 @@ void stack_trace()
          *begin++ = '\0';
          *end = '\0';
          /* found our mangled name, now in [begin, end] */
-         
+
          int status;
          char *ret = abi::__cxa_demangle(begin, function, &sz, &status);
          if (ret) {
diff --git a/src/lib/btime.c b/src/lib/btime.c
index 175d77e..3a1a151 100644
--- a/src/lib/btime.c
+++ b/src/lib/btime.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula floating point time and date routines -- John Walker
@@ -32,8 +20,8 @@
  *
  */
 
-
-/* Concerning times. There are a number of differnt time standards
+/*
+ * Concerning times. There are a number of different time standards
  * in Bacula (fdate_t, ftime_t, time_t (Unix standard), btime_t, and
  *  utime_t).  fdate_t and ftime_t are deprecated and should no longer
  *  be used, and in general, Unix time time_t should no longer be used,
@@ -74,8 +62,19 @@ char *bstrftimes(char *dt, int maxlen, utime_t utime)
    return dt;
 }
 
+/* Formatted time with day name for user display: dd-Mon hh:mm */
+char *bstrftime_dn(char *dt, int maxlen, utime_t utime)
+{
+   time_t time = (time_t)utime;
+   struct tm tm;
+
+   /* ***FIXME**** the format and localtime_r() should be user configurable */
+   (void)localtime_r(&time, &tm);
+   strftime(dt, maxlen, "%a %d-%b %H:%M", &tm);
+   return dt;
+}
 
-/* Formatted time for user display: dd-Mon hh:mm */
+/* Formatted time (no year) for user display: dd-Mon hh:mm */
 char *bstrftime_ny(char *dt, int maxlen, utime_t utime)
 {
    time_t time = (time_t)utime;
@@ -183,9 +182,34 @@ utime_t btime_to_utime(btime_t bt)
 }
 
 /*
+ * Definition of a leap year from Wikipedia.
+ *  I knew it anyway but better check.
+ */
+static bool is_leap_year(int year)
+{
+   if (year % 400 == 0) return true;
+   if (year % 100 == 0) return false;
+   if (year % 4 == 0) return true;
+   return false;
+}
+
+/*
+ * Return the last day of the month, base 0
+ *   month=0-11, year is actual year
+ *   ldom is base 0
+ */
+int tm_ldom(int month, int year)
+{                     /* jan feb mar apr may jun jul aug sep oct nov dec */
+   static int dom[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+
+   if (is_leap_year(year) && month == 1) return 28;
+   return dom[month] - 1;
+}
+
+/*
  * Return the week of the month, base 0 (wom)
  *   given tm_mday and tm_wday. Value returned
- *   can be from 0 to 4 => week1, ... week5
+ *   can be from 0 to 5 => week1, ... week6
  */
 int tm_wom(int mday, int wday)
 {
@@ -223,7 +247,7 @@ int tm_woy(time_t stime)
    tm_yday = tm.tm_yday;
    tm.tm_mon = 0;
    tm.tm_mday = 4;
-   tm.tm_isdst = 0;                   /* 4 Jan is not DST */ 
+   tm.tm_isdst = 0;                   /* 4 Jan is not DST */
    time4 = mktime(&tm);
    (void)localtime_r(&time4, &tm);
    fty = 1 - tm.tm_wday;
@@ -257,8 +281,8 @@ void get_current_time(struct date_time *dt)
 }
 
 
-/*  date_encode  --  Encode civil date as a Julian day number.  */
 
+/*  date_encode  --  Encode civil date as a Julian day number.  */
 /* Deprecated. Do not use. */
 fdate_t date_encode(uint32_t year, uint8_t month, uint8_t day)
 {
diff --git a/src/lib/btime.h b/src/lib/btime.h
index c269327..8da4f4d 100644
--- a/src/lib/btime.h
+++ b/src/lib/btime.h
@@ -1,39 +1,24 @@
-
-/*
-
-  See btime.c for defintions.
-
-     Version $Id$
-
- */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2006 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.
+   Copyright (C) 2000-2014 Free Software Foundation Europe e.V.
 
-   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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
-   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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
+/*
+ * See btime.c for defintions.
+ *  Kern Sibbald, MM
+ */
+
 
 #ifndef __btime_INCLUDED
 #define __btime_INCLUDED
@@ -45,12 +30,14 @@ utime_t btime_to_utime(btime_t bt); /* bacula time to utime_t */
 
 int tm_wom(int mday, int wday);
 int tm_woy(time_t stime);
+int tm_ldom(int month, int year);
 
 char *bstrutime(char *dt, int maxlen, utime_t tim);
 char *bstrftime(char *dt, int maxlen, utime_t tim);
 char *bstrftimes(char *dt, int maxlen, utime_t tim);
 char *bstrftime_ny(char *dt, int maxlen, utime_t tim);
 char *bstrftime_nc(char *dt, int maxlen, utime_t tim);
+char *bstrftime_dn(char *dt, int maxlen, utime_t tim);
 utime_t str_to_utime(char *str);
 
 
diff --git a/src/lib/btimers.c b/src/lib/btimers.c
index 67093ec..d73b3c8 100644
--- a/src/lib/btimers.c
+++ b/src/lib/btimers.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Process and thread timer routines, built on top of watchdogs.
@@ -176,7 +164,7 @@ btimer_t *start_bsock_timer(BSOCK *bsock, uint32_t wait)
    wid->type = TYPE_BSOCK;
    wid->tid = pthread_self();
    wid->bsock = bsock;
-   wid->jcr = bsock->jcr(); 
+   wid->jcr = bsock->jcr();
 
    wid->wd->callback = callback_thread_timer;
    wid->wd->one_shot = true;
diff --git a/src/lib/btimers.h b/src/lib/btimers.h
index 72c2d1c..a638aa5 100644
--- a/src/lib/btimers.h
+++ b/src/lib/btimers.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Process and thread timer routines, built on top of watchdogs.
diff --git a/src/lib/cram-md5.c b/src/lib/cram-md5.c
index f2aa2f7..b1a9443 100644
--- a/src/lib/cram-md5.c
+++ b/src/lib/cram-md5.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Challenge Response Authentication Method using MD5 (CRAM-MD5)
@@ -69,23 +57,23 @@ bool cram_md5_challenge(BSOCK *bs, const char *password, int tls_local_need, int
    /* Send challenge -- no hashing yet */
    bsnprintf(chal, sizeof(chal), "<%u.%u@%s>", (uint32_t)random(), (uint32_t)time(NULL), host);
    if (compatible) {
-      Dmsg2(dbglvl, "send: auth cram-md5 %s ssl=%d\n", chal, tls_local_need);
+      Dmsg2(dbglvl, "send: auth cram-md5 challenge %s ssl=%d\n", chal, tls_local_need);
       if (!bs->fsend("auth cram-md5 %s ssl=%d\n", chal, tls_local_need)) {
-         Dmsg1(dbglvl, "Bnet send challenge comm error. ERR=%s\n", bs->bstrerror());
+         Dmsg1(dbglvl, "Send challenge comm error. ERR=%s\n", bs->bstrerror());
          return false;
       }
    } else {
       /* Old non-compatible system */
-      Dmsg2(dbglvl, "send: auth cram-md5 %s ssl=%d\n", chal, tls_local_need);
+      Dmsg2(dbglvl, "send: auth cram-md5 challenge %s ssl=%d\n", chal, tls_local_need);
       if (!bs->fsend("auth cram-md5 %s ssl=%d\n", chal, tls_local_need)) {
-         Dmsg1(dbglvl, "Bnet send challenge comm error. ERR=%s\n", bs->bstrerror());
+         Dmsg1(dbglvl, "Send challenge comm error. ERR=%s\n", bs->bstrerror());
          return false;
       }
    }
 
    /* Read hashed response to challenge */
    if (bs->wait_data(180) <= 0 || bs->recv() <= 0) {
-      Dmsg1(dbglvl, "Bnet receive challenge response comm error. ERR=%s\n", bs->bstrerror());
+      Dmsg1(dbglvl, "Receive cram-md5 response comm error. ERR=%s\n", bs->bstrerror());
       bmicrosleep(5, 0);
       return false;
    }
@@ -97,7 +85,7 @@ bool cram_md5_challenge(BSOCK *bs, const char *password, int tls_local_need, int
    if (ok) {
       Dmsg1(dbglvl, "Authenticate OK %s\n", host);
    } else {
-      bin_to_base64(host, sizeof(host), (char *)hmac, 16, false);     
+      bin_to_base64(host, sizeof(host), (char *)hmac, 16, false);
       ok = strcmp(bs->msg, host) == 0;
       if (!ok) {
          Dmsg2(dbglvl, "Authenticate NOT OK: wanted %s, got %s\n", host, bs->msg);
@@ -133,7 +121,7 @@ bool cram_md5_respond(BSOCK *bs, const char *password, int *tls_remote_need, int
       *compatible = true;
    } else if (sscanf(bs->msg, "auth cram-md5 %s ssl=%d", chal, tls_remote_need) != 2) {
       if (sscanf(bs->msg, "auth cram-md5 %s\n", chal) != 1) {
-         Dmsg1(dbglvl, "Cannot scan challenge: %s", bs->msg);
+         Dmsg1(dbglvl, "Cannot scan received response to challenge: %s", bs->msg);
          bs->fsend(_("1999 Authorization failed.\n"));
          bmicrosleep(5, 0);
          return false;
@@ -142,6 +130,7 @@ bool cram_md5_respond(BSOCK *bs, const char *password, int *tls_remote_need, int
 
    hmac_md5((uint8_t *)chal, strlen(chal), (uint8_t *)password, strlen(password), hmac);
    bs->msglen = bin_to_base64(bs->msg, 50, (char *)hmac, 16, *compatible) + 1;
+// Don't turn the following on except for local debugging -- security
 // Dmsg3(100, "get_auth: chal=%s pw=%s hmac=%s\n", chal, password, bs->msg);
    if (!bs->send()) {
       Dmsg1(dbglvl, "Send challenge failed. ERR=%s\n", bs->bstrerror());
@@ -149,7 +138,7 @@ bool cram_md5_respond(BSOCK *bs, const char *password, int *tls_remote_need, int
    }
    Dmsg1(99, "sending resp to challenge: %s\n", bs->msg);
    if (bs->wait_data(180) <= 0 || bs->recv() <= 0) {
-      Dmsg1(dbglvl, "Receive chanllenge response failed. ERR=%s\n", bs->bstrerror());
+      Dmsg1(dbglvl, "Receive cram-md5 response failed. ERR=%s\n", bs->bstrerror());
       bmicrosleep(5, 0);
       return false;
    }
diff --git a/src/lib/crc32.c b/src/lib/crc32.c
index ac2ff94..b0ba199 100644
--- a/src/lib/crc32.c
+++ b/src/lib/crc32.c
@@ -1,25 +1,17 @@
 /*
-   crc32.c 32 bit CRC
+   Bacula® - The Network Backup Solution
 
    Copyright (C) 2010 Joakim Tjernlund
 
-   This file is free software: you can redistribute it and/or modify
-   it under the terms of the GNU Lesser General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
-   This file 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 Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public License
-   along with Bacula.  If not, see <http://www.gnu.org/licenses/>.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Original 32 bit CRC.  Algorithm from RFC 2083 (png format)
@@ -426,7 +418,7 @@ static void usage()
  * Reads a single ASCII file and prints the HEX md5 sum.
  */
 #include <stdio.h>
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
    FILE *fd;
    char buf[5000];
@@ -457,7 +449,7 @@ int main(int argc, char *argv[])
    uint32_t res;
    while (fgets(buf, sizeof(buf), fd)) {
       res = bcrc32((unsigned char *)buf, strlen(buf));
-      printf("%02x\n", res); 
+      printf("%02x\n", res);
    }
    printf("  %s\n", argv[0]);
    fclose(fd);
diff --git a/src/lib/crypto.c b/src/lib/crypto.c
index 7ffa20e..f62e97a 100644
--- a/src/lib/crypto.c
+++ b/src/lib/crypto.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * crypto.c Encryption support functions
@@ -232,7 +220,7 @@ IMPLEMENT_STACK_OF(RecipientInfo)
 #define sk_SignerInfo_is_sorted(st) SKM_sk_is_sorted(SignerInfo, (st))
 
 #define d2i_ASN1_SET_OF_SignerInfo(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
-        SKM_ASN1_SET_OF_d2i(SignerInfo, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 
+        SKM_ASN1_SET_OF_d2i(SignerInfo, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
 #define i2d_ASN1_SET_OF_SignerInfo(st, pp, i2d_func, ex_tag, ex_class, is_set) \
         SKM_ASN1_SET_OF_i2d(SignerInfo, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
 #define ASN1_seq_pack_SignerInfo(st, i2d_func, buf, len) \
@@ -262,7 +250,7 @@ IMPLEMENT_STACK_OF(RecipientInfo)
 #define sk_RecipientInfo_is_sorted(st) SKM_sk_is_sorted(RecipientInfo, (st))
 
 #define d2i_ASN1_SET_OF_RecipientInfo(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
-        SKM_ASN1_SET_OF_d2i(RecipientInfo, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 
+        SKM_ASN1_SET_OF_d2i(RecipientInfo, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
 #define i2d_ASN1_SET_OF_RecipientInfo(st, pp, i2d_func, ex_tag, ex_class, is_set) \
         SKM_ASN1_SET_OF_i2d(RecipientInfo, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
 #define ASN1_seq_pack_RecipientInfo(st, i2d_func, buf, len) \
@@ -369,7 +357,7 @@ static ASN1_OCTET_STRING *openssl_cert_keyid(X509 *cert) {
  *  Returns: A pointer to a X509 KEYPAIR object on success.
  *           NULL on failure.
  */
-X509_KEYPAIR *crypto_keypair_new(void) 
+X509_KEYPAIR *crypto_keypair_new(void)
 {
    X509_KEYPAIR *keypair;
 
@@ -465,7 +453,7 @@ int crypto_keypair_load_cert(X509_KEYPAIR *keypair, const char *file)
 
    /* Validate the public key type (only RSA is supported) */
    if (EVP_PKEY_type(keypair->pubkey->type) != EVP_PKEY_RSA) {
-       Jmsg1(NULL, M_ERROR, 0, 
+       Jmsg1(NULL, M_ERROR, 0,
              _("Unsupported key type provided: %d\n"), EVP_PKEY_type(keypair->pubkey->type));
        goto err;
    }
@@ -656,7 +644,7 @@ bool crypto_digest_update(DIGEST *digest, const uint8_t *data, uint32_t length)
       Dmsg0(150, "digest update failed\n");
       openssl_post_errors(digest->jcr, M_ERROR, _("OpenSSL digest update failed"));
       return false;
-   } else { 
+   } else {
       return true;
    }
 }
@@ -725,7 +713,7 @@ SIGNATURE *crypto_sign_new(JCR *jcr)
  * Returns: CRYPTO_ERROR_NONE on success, with the newly allocated DIGEST in digest.
  *          A crypto_error_t value on failure.
  */
-crypto_error_t crypto_sign_get_digest(SIGNATURE *sig, X509_KEYPAIR *keypair, 
+crypto_error_t crypto_sign_get_digest(SIGNATURE *sig, X509_KEYPAIR *keypair,
                                       crypto_digest_t &type, DIGEST **digest)
 {
    STACK_OF(SignerInfo) *signers;
@@ -1215,7 +1203,7 @@ crypto_error_t crypto_session_decode(const uint8_t *data, uint32_t length, alist
          /* Match against the subjectKeyIdentifier */
          if (M_ASN1_OCTET_STRING_cmp(keypair->keyid, ri->subjectKeyIdentifier) == 0) {
             /* Match found, extract symmetric encryption session data */
-            
+
             /* RSA is required. */
             assert(EVP_PKEY_type(keypair->privkey->type) == EVP_PKEY_RSA);
 
@@ -1283,7 +1271,7 @@ CIPHER_CONTEXT *crypto_cipher_new(CRYPTO_SESSION *cs, bool encrypt, uint32_t *bl
     * Acquire a cipher instance for the given ASN.1 cipher NID
     */
    if ((ec = EVP_get_cipherbyobj(cs->cryptoData->contentEncryptionAlgorithm)) == NULL) {
-      Jmsg1(NULL, M_ERROR, 0, 
+      Jmsg1(NULL, M_ERROR, 0,
          _("Unsupported contentEncryptionAlgorithm: %d\n"), OBJ_obj2nid(cs->cryptoData->contentEncryptionAlgorithm));
       free(cipher_ctx);
       return NULL;
@@ -1316,7 +1304,7 @@ CIPHER_CONTEXT *crypto_cipher_new(CRYPTO_SESSION *cs, bool encrypt, uint32_t *bl
       openssl_post_errors(M_ERROR, _("Encryption session provided an invalid IV"));
       goto err;
    }
-   
+
    /* Add the key and IV to the cipher context */
    if (!EVP_CipherInit_ex(&cipher_ctx->ctx, NULL, NULL, cs->session_key, M_ASN1_STRING_data(cs->cryptoData->iv), -1)) {
       openssl_post_errors(M_ERROR, _("OpenSSL cipher context key/IV initialization failed"));
@@ -1388,7 +1376,7 @@ int init_crypto (void)
 
    if ((stat = openssl_init_threads()) != 0) {
       berrno be;
-      Jmsg1(NULL, M_ABORT, 0, 
+      Jmsg1(NULL, M_ABORT, 0,
         _("Unable to init OpenSSL threading: ERR=%s\n"), be.bstrerror(stat));
    }
 
@@ -1518,7 +1506,7 @@ bool crypto_digest_update(DIGEST *digest, const uint8_t *data, uint32_t length)
    }
 }
 
-bool crypto_digest_finalize(DIGEST *digest, uint8_t *dest, uint32_t *length) 
+bool crypto_digest_finalize(DIGEST *digest, uint8_t *dest, uint32_t *length)
 {
    switch (digest->type) {
    case CRYPTO_DIGEST_MD5:
@@ -1558,8 +1546,8 @@ int cleanup_crypto (void) { return 0; }
 
 SIGNATURE *crypto_sign_new(JCR *jcr) { return NULL; }
 
-crypto_error_t crypto_sign_get_digest (SIGNATURE *sig, X509_KEYPAIR *keypair, 
-                                       crypto_digest_t &type, DIGEST **digest) 
+crypto_error_t crypto_sign_get_digest (SIGNATURE *sig, X509_KEYPAIR *keypair,
+                                       crypto_digest_t &type, DIGEST **digest)
    { return CRYPTO_ERROR_INTERNAL; }
 
 crypto_error_t crypto_sign_verify (SIGNATURE *sig, X509_KEYPAIR *keypair, DIGEST *digest) { return CRYPTO_ERROR_INTERNAL; }
@@ -1606,7 +1594,7 @@ int crypto_default_pem_callback(char *buf, int size, const void *userdata)
  * Returns the ASCII name of the digest type.
  * Returns: ASCII name of digest type.
  */
-const char *crypto_digest_name(DIGEST *digest) 
+const char *crypto_digest_name(DIGEST *digest)
 {
    switch (digest->type) {
    case CRYPTO_DIGEST_MD5:
diff --git a/src/lib/crypto.h b/src/lib/crypto.h
index d7a6299..2a75302 100644
--- a/src/lib/crypto.h
+++ b/src/lib/crypto.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * crypto.h Encryption support functions
@@ -76,10 +64,17 @@ typedef enum {
    CRYPTO_DIGEST_SHA512 = 4
 } crypto_digest_t;
 
+
+#ifdef HAVE_SHA2
+# define CRYPTO_DIGEST_DEFAULT CRYPTO_DIGEST_SHA256
+#else
+# define CRYPTO_DIGEST_DEFAULT CRYPTO_DIGEST_SHA1
+#endif
+
 /* Cipher Types */
 typedef enum {
    /* These are not stored on disk */
-   CRYPTO_CIPHER_AES_128_CBC,
+   CRYPTO_CIPHER_AES_128_CBC,   /* Keep AES128 as the first one */
    CRYPTO_CIPHER_AES_192_CBC,
    CRYPTO_CIPHER_AES_256_CBC,
    CRYPTO_CIPHER_BLOWFISH_CBC
diff --git a/src/lib/daemon.c b/src/lib/daemon.c
index 72b3365..deb030f 100644
--- a/src/lib/daemon.c
+++ b/src/lib/daemon.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  daemon.c by Kern Sibbald 2000
@@ -40,7 +28,6 @@
 
 
 #include "bacula.h"
-extern int debug_level;
 
 void
 daemon_start()
diff --git a/src/lib/devlock.c b/src/lib/devlock.c
index 5b26545..e716670 100644
--- a/src/lib/devlock.c
+++ b/src/lib/devlock.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Thread Read/Write locking code. It permits
@@ -49,7 +37,7 @@
  *           errno on failure
  */
 
-devlock *new_devlock()                          
+devlock *new_devlock()
 {
    devlock *lock;
    lock = (devlock *)malloc(sizeof (devlock));
@@ -57,14 +45,14 @@ devlock *new_devlock()
    return lock;
 }
 
-int devlock::init(int priority)                            
+int devlock::init(int init_priority)
 {
    int stat;
    devlock *rwl = this;
 
    rwl->r_active = rwl->w_active = 0;
    rwl->r_wait = rwl->w_wait = 0;
-   rwl->priority = priority;
+   rwl->priority = init_priority;
    if ((stat = pthread_mutex_init(&rwl->mutex, NULL)) != 0) {
       return stat;
    }
@@ -273,7 +261,7 @@ int devlock::writelock(int areason, bool acan_take)
       rwl->w_active++;                /* we are running */
       rwl->writer_id = pthread_self(); /* save writer thread's id */
       lmgr_post_lock();
-   } 
+   }
    rwl->reason = areason;
    rwl->can_take = acan_take;
    pthread_mutex_unlock(&rwl->mutex);
diff --git a/src/lib/devlock.h b/src/lib/devlock.h
index 779e53c..2f3b6a3 100644
--- a/src/lib/devlock.h
+++ b/src/lib/devlock.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Thread Read/Write locking code. It permits
@@ -66,14 +54,14 @@ private:
 public:
    devlock(int reason, bool can_take=false);
    ~devlock();
-   int init(int initial_priority);
+   int init(int init_priority);
    int destroy();
    int take_lock(take_lock_t *hold, int reason);
    int return_lock(take_lock_t *hold);
    void new_reason(int nreason) { prev_reason = reason; reason = nreason; };
    void restore_reason() { reason = prev_reason; prev_reason = 0; };
 
-   int writelock(int reason, bool can_take=false); 
+   int writelock(int reason, bool can_take=false);
    int writetrylock();
    int writeunlock();
    void write_release();
diff --git a/src/lib/dlist.c b/src/lib/dlist.c
index 2d4e507..1566265 100644
--- a/src/lib/dlist.c
+++ b/src/lib/dlist.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula doubly linked list routines.
@@ -270,7 +258,7 @@ void *dlist::binary_search(void *item, int compare(void *item1, void *item2))
       }
    }
    /*
-    * low == high can only happen if low just 
+    * low == high can only happen if low just
     *   got incremented from cur, and we have
     *   not yet tested cur+1
     */
@@ -312,6 +300,7 @@ void dlist::remove(void *item)
    if (num_items == 0) {
       head = tail = NULL;
    }
+   ilink->prev = ilink->next = NULL;
 }
 
 void *dlist::next(void *item)
@@ -420,7 +409,7 @@ int main()
 
    /* The following may seem a bit odd, but we create a chaing
     *  of jcr objects.  Within a jcr object, there is a buf
-    *  that points to a malloced string containing data   
+    *  that points to a malloced string containing data
     */
    jcr_chain = New(dlist(jcr, &jcr->link));
    printf("append 20 items 0-19\n");
diff --git a/src/lib/dlist.h b/src/lib/dlist.h
index dcb11f9..4c28fc0 100644
--- a/src/lib/dlist.h
+++ b/src/lib/dlist.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Written by Kern Sibbald MMIV
@@ -34,7 +22,7 @@
 /* ========================================================================
  *
  *   Doubly linked list  -- dlist
- * 
+ *
  *   See the end of the file for the dlistString class which
  *     facilitates storing strings in a dlist.
  *
@@ -92,7 +80,7 @@ public:
    void remove(void *item);
    bool empty() const;
    int  size() const;
-   void *next(void *item);      
+   void *next(void *item);
    void *prev(void *item);
    void destroy();
    void *first() const;
@@ -192,7 +180,7 @@ inline void * dlist::last() const
 }
 
 /*
- * C string helper routines for dlist   
+ * C string helper routines for dlist
  *   The string (char *) is kept in the node
  *
  *   Kern Sibbald, February 2007
@@ -200,12 +188,12 @@ inline void * dlist::last() const
  */
 class dlistString
 {
-public:   
+public:
    char *c_str() { return m_str; };
 
 private:
    dlink m_link;
-   char m_str[1];                                
+   char m_str[1];
    /* !!! Don't put anything after this as this space is used
     *     to hold the string in inline
     */
diff --git a/src/lib/edit.c b/src/lib/edit.c
index dd7cb90..b5d0d5c 100644
--- a/src/lib/edit.c
+++ b/src/lib/edit.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   edit.c  edit string to ascii, and ascii to internal
@@ -331,7 +319,7 @@ char *edit_utime(utime_t val, char *buf, int buf_len)
    return buf;
 }
 
-static bool strunit_to_uint64(char *str, int str_len, uint64_t *value, 
+static bool strunit_to_uint64(char *str, int str_len, uint64_t *value,
                               const char **mod)
 {
    int i, mod_len;
@@ -393,7 +381,7 @@ bool size_to_uint64(char *str, int str_len, uint64_t *value)
 bool speed_to_uint64(char *str, int str_len, uint64_t *value)
 {
    /* first item * not used */
-   static const char *mod[]  = {"*", "k/s", "kb/s", "m/s", "mb/s",  NULL}; 
+   static const char *mod[]  = {"*", "k/s", "kb/s", "m/s", "mb/s",  NULL};
    return strunit_to_uint64(str, str_len, value, mod);
 }
 
@@ -405,6 +393,10 @@ bool is_a_number(const char *n)
 {
    bool digit_seen = false;
 
+   if (n == NULL) {
+      return false;
+   }
+
    if( *n == '-' || *n == '+' ) {
       n++;
    }
@@ -429,8 +421,11 @@ bool is_a_number(const char *n)
  */
 bool is_a_number_list(const char *n)
 {
-   bool previous_digit = false; 
+   bool previous_digit = false;
    bool digit_seen = false;
+   if (n == NULL) {
+      return false;
+   }
    while (*n) {
       if (B_ISDIGIT(*n)) {
          previous_digit=true;
@@ -442,7 +437,7 @@ bool is_a_number_list(const char *n)
       }
       n++;
    }
-   return digit_seen && *n==0; 
+   return digit_seen && *n==0;
 }
 
 /*
@@ -451,6 +446,9 @@ bool is_a_number_list(const char *n)
 bool is_an_integer(const char *n)
 {
    bool digit_seen = false;
+   if (n == NULL) {
+      return false;
+   }
    while (B_ISDIGIT(*n)) {
       digit_seen = true;
       n++;
diff --git a/src/lib/fnmatch.c b/src/lib/fnmatch.c
index b395b11..9f1658a 100644
--- a/src/lib/fnmatch.c
+++ b/src/lib/fnmatch.c
@@ -37,8 +37,6 @@
  * Compares a filename or pathname to a pattern.
  */
 
-/* Version: $Id$ */
-
 /* Define SYS to use the system fnmatch() rather than ours */
 /* #define SYS 1 */
 
@@ -65,7 +63,7 @@
 static int rangematch(const char *, char, int, char **);
 static int r_fnmatch(const char *, const char *, int, int);
 
-#ifdef SYS 
+#ifdef SYS
 int xfnmatch(const char *pattern, const char *string, int flags)
 #else
 int fnmatch(const char *pattern, const char *string, int flags)
@@ -80,7 +78,7 @@ int fnmatch(const char *pattern, const char *string, int flags)
    return (e);
 }
 
-static 
+static
 int r_fnmatch(const char *pattern, const char *string, int flags, int recur)
 {
    const char *stringstart;
@@ -247,7 +245,7 @@ struct test {
    const char *pattern;
    const char *string;
    const int options;
-   const int result; 
+   const int result;
 };
 
 /*
@@ -329,7 +327,7 @@ int main()
    for (int i=0; i<ntests; i++) {
       if (fnmatch(tests[i].pattern, tests[i].string, tests[i].options) != tests[i].result) {
          printf("Test %d failed: pat=%s str=%s expect=%s got=%s\n",
-            i+1, tests[i].pattern, tests[i].string, 
+            i+1, tests[i].pattern, tests[i].string,
             tests[i].result==0?"matches":"no match",
             tests[i].result==0?"no match":"matches");
          fail = true;
diff --git a/src/lib/fnmatch.h b/src/lib/fnmatch.h
index 9bc52cd..b1c6a86 100644
--- a/src/lib/fnmatch.h
+++ b/src/lib/fnmatch.h
@@ -30,7 +30,6 @@
  *
  *      @(#)fnmatch.h   8.1 (Berkeley) 6/2/93
  */
-/* Version: $Id$ */
 
 #ifndef _FNMATCH_H_
 #define _FNMATCH_H_
diff --git a/src/lib/gconsole b/src/lib/gconsole
deleted file mode 100755
index 1e22ee0..0000000
--- a/src/lib/gconsole
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-cd $HOME/bacula/k/src/gnome-console
-if [ $# = 1 ] ; then
-   echo "doing gnome-console $1.conf"
-   ./gnome-console -c $1.conf
-else
-   ./gnome-console
-fi
diff --git a/src/lib/guid_to_name.c b/src/lib/guid_to_name.c
index dd458e2..7b98174 100644
--- a/src/lib/guid_to_name.c
+++ b/src/lib/guid_to_name.c
@@ -1,33 +1,21 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Kern Sibbald
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Written by Kern Sibbald, July 2007 to replace idcache.c
- * 
+ *
  *  Program to convert uid and gid into names, and cache the results
  *   for preformance reasons.
  *
@@ -148,7 +136,7 @@ char *guid_list::uid_to_name(uid_t uid, char *name, int maxlen)
       if (fitem != item) {               /* item already there this shouldn't happen */
          free(item->name);
          free(item);
-         item = fitem;   
+         item = fitem;
       }
    }
    bstrncpy(name, item->name, maxlen);
@@ -174,7 +162,7 @@ char *guid_list::gid_to_name(gid_t gid, char *name, int maxlen)
       if (fitem != item) {               /* item already there this shouldn't happen */
          free(item->name);
          free(item);
-         item = fitem;   
+         item = fitem;
       }
    }
 
@@ -196,11 +184,11 @@ int main()
       printf("uid=%d name=%s  gid=%d name=%s\n", i, list->uid_to_name(i, ed1, sizeof(ed1)),
          i, list->gid_to_name(i, ed2, sizeof(ed2)));
    }
-    
+
    free_guid_list(list);
    sm_dump(false);     /* unit test */
 
    return 0;
 }
- 
+
 #endif
diff --git a/src/lib/guid_to_name.h b/src/lib/guid_to_name.h
index f0ab466..55515c8 100644
--- a/src/lib/guid_to_name.h
+++ b/src/lib/guid_to_name.h
@@ -1,37 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007 Kern Sibbald
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Written by Kern Sibbald, July 2007 to replace idcache.c
- * 
+ *
  *  Program to convert uid and gid into names, and cache the results
  *   for preformance reasons.
  *
- *  Version $Id$
  */
 
 class guid_list {
@@ -45,4 +32,3 @@ public:
 
 guid_list *new_guid_list();
 void free_guid_list(guid_list *list);
-
diff --git a/src/lib/hmac.c b/src/lib/hmac.c
index 0772df1..92b9402 100644
--- a/src/lib/hmac.c
+++ b/src/lib/hmac.c
@@ -1,39 +1,28 @@
 /*
- *  Hashed Message Authentication Code using MD5 (HMAC-MD5)
- *
- * hmac_md5 was based on sample code in RFC2104 (thanks guys).
- *
- * Adapted to Bacula by Kern E. Sibbald, February MMI.
- *
- */
-/*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2006 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 two of the GNU Lesser General 
-   Public License as published by the Free Software Foundation plus 
-   additions in the file LICENSE.
+   Copyright (C) 2001-2014 Free Software Foundation Europe e.V.
 
-   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
-   Lesser General Public License for more details.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
-   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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
+/*
+ *  Hashed Message Authentication Code using MD5 (HMAC-MD5)
+ *
+ * hmac_md5 was based on sample code in RFC2104 (thanks guys).
+ *
+ * Adapted to Bacula by Kern E. Sibbald, February MMI.
+ *
+ */
+
 #include "bacula.h"
 
 #define PAD_LEN 64           /* PAD length */
diff --git a/src/lib/htable.c b/src/lib/htable.c
index af38960..0e85f92 100644
--- a/src/lib/htable.c
+++ b/src/lib/htable.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula hash table routines
@@ -56,7 +44,8 @@
 #define MIN_BUF_SIZE (MIN_PAGES * B_PAGE_SIZE) /* 128 Kb */
 #define MAX_BUF_SIZE (MAX_PAGES * B_PAGE_SIZE) /* approx 10MB */
 
-static const int dbglvl = 500;
+#define dbglvl     500
+#define dbglvl_mem DT_MEMORY|100
 
 /* ===================================================================
  *    htable
@@ -76,7 +65,7 @@ void htable::malloc_big_buf(int size)
    mem_block = hmem;
    hmem->mem = mem_block->first;
    hmem->rem = (char *)hmem + size - hmem->mem;
-   Dmsg3(100, "malloc buf=%p size=%d rem=%d\n", hmem, size, hmem->rem);
+   Dmsg3(dbglvl_mem, "malloc buf=%p size=%d rem=%d\n", hmem, size, hmem->rem);
 }
 
 /* This routine frees the whole tree */
@@ -87,13 +76,13 @@ void htable::hash_big_free()
    for (hmem=mem_block; hmem; ) {
       rel = hmem;
       hmem = hmem->next;
-      Dmsg1(100, "free malloc buf=%p\n", rel);
+      Dmsg1(dbglvl_mem, "free malloc buf=%p\n", rel);
       free(rel);
    }
 }
 
 /*
- * Normal hash malloc routine that gets a 
+ * Normal hash malloc routine that gets a
  *  "small" buffer from the big buffer
  */
 char *htable::hash_malloc(int size)
@@ -109,7 +98,7 @@ char *htable::hash_malloc(int size)
          mb_size = extend_length / 2;
       }
       malloc_big_buf(mb_size);
-      Dmsg1(100, "Created new big buffer of %ld bytes\n", mb_size);
+      Dmsg1(dbglvl_mem, "Created new big buffer of %ld bytes\n", mb_size);
    }
    mem_block->rem -= asize;
    buf = mem_block->mem;
@@ -195,7 +184,7 @@ void htable::init(void *item, void *link, int tsize, int nr_pages)
    }
    malloc_big_buf(buffer_size);
    extend_length = buffer_size;
-   Dmsg1(100, "Allocated big buffer of %ld bytes\n", buffer_size);
+   Dmsg1(dbglvl_mem, "Allocated big buffer of %ld bytes\n", buffer_size);
 }
 
 uint32_t htable::size()
@@ -205,7 +194,7 @@ uint32_t htable::size()
 
 /*
  * Take each hash link and walk down the chain of items
- *  that hash there counting them (i.e. the hits), 
+ *  that hash there counting them (i.e. the hits),
  *  then report that number.
  * Obiously, the more hits in a chain, the more time
  *  it takes to reference them. Empty chains are not so
@@ -243,6 +232,7 @@ void htable::stats()
    printf("buckets=%d num_items=%d max_items=%d\n", buckets, num_items, max_items);
    printf("max hits in a bucket = %d\n", max);
    printf("total bytes malloced = %lld\n", (long long int)total_size);
+   printf("total bytes malloced = %lld\n", (long long int)total_size);
    printf("total blocks malloced = %d\n", blocks);
 }
 
diff --git a/src/lib/htable.h b/src/lib/htable.h
index 054f950..816fc79 100644
--- a/src/lib/htable.h
+++ b/src/lib/htable.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Written by Kern Sibbald, MMIV
diff --git a/src/lib/ini.c b/src/lib/ini.c
index 61d9c39..7be5a86 100644
--- a/src/lib/ini.c
+++ b/src/lib/ini.c
@@ -1,35 +1,23 @@
 /*
-   Copyright (C) 2011-2011 Bacula Systems(R) SA
+   Bacula® - The Network Backup Solution
 
-   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 modify it under the terms of
-   version three of the GNU Affero General Public License as published by the 
-   Free Software Foundation, which is listed in the file LICENSE.
+   Copyright (C) 2011-2014 Free Software Foundation Europe e.V.
 
-   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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
-   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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    Bacula® is a registered trademark of Kern Sibbald.
-   Bacula Systems(R) is a trademark of Bacula Systems SA.
-   Bacula Enterprise(TM) is a trademark of Bacula Systems SA.
-
-   The licensor of Bacula Enterprise(TM) is Bacula Systems(R) SA,
-   Rue Galilee 5, 1400 Yverdon-les-Bains, Switzerland.
 */
-
 /*
  * Handle simple configuration file such as "ini" files.
  * key1 = val     # comment
  * key2 = val     # <type>
- * 
+ *
  */
 
 #include "bacula.h"
@@ -57,8 +45,8 @@ static struct ini_store funcs[] = {
    {NULL,       NULL,               NULL}
 };
 
-/* 
- * Get handler code from handler @ 
+/*
+ * Get handler code from handler @
  */
 const char *ini_get_store_code(INI_ITEM_HANDLER *handler)
 {
@@ -70,8 +58,8 @@ const char *ini_get_store_code(INI_ITEM_HANDLER *handler)
    return NULL;
 }
 
-/* 
- * Get handler function from handler name 
+/*
+ * Get handler function from handler name
  */
 INI_ITEM_HANDLER *ini_get_store_handler(const char *key)
 {
@@ -79,7 +67,7 @@ INI_ITEM_HANDLER *ini_get_store_handler(const char *key)
       if (!strcmp(funcs[i].key, key)) {
          return funcs[i].handler;
       }
-   }   
+   }
    return NULL;
 }
 
@@ -108,13 +96,13 @@ static void s_err(const char *file, int line, LEX *lc, const char *msg, ...)
          buf, lc->line_no, lc->col_no, lc->fname, lc->line);
 
 //   } else if (ini->ctx) {       /* called from plugin */
-//      ini->bfuncs->JobMessage(ini->ctx, __FILE__, __LINE__, M_FATAL, 0, 
+//      ini->bfuncs->JobMessage(ini->ctx, __FILE__, __LINE__, M_FATAL, 0,
 //                    _("Config file error: %s\n"
 //                      "            : Line %d, col %d of file %s\n%s\n"),
 //                            buf, lc->line_no, lc->col_no, lc->fname, lc->line);
 //
    } else {                     /* called from ??? */
-      e_msg(file, line, M_ERROR, 0, 
+      e_msg(file, line, M_ERROR, 0,
             _("Config file error: %s\n"
               "            : Line %d, col %d of file %s\n%s\n"),
             buf, lc->line_no, lc->col_no, lc->fname, lc->line);
@@ -137,7 +125,7 @@ void ConfigFile::clear_items()
 
          } else if (items[i].handler == ini_store_alist_str) {
             delete items[i].val.alistval;
-            items[i].val.alistval = NULL;            
+            items[i].val.alistval = NULL;
          }
          items[i].found = false;
       }
@@ -150,6 +138,7 @@ void ConfigFile::free_items()
       for (int i=0; items[i].name; i++) {
          bfree_and_null_const(items[i].name);
          bfree_and_null_const(items[i].comment);
+         bfree_and_null_const(items[i].default_value);
       }
       free(items);
    }
@@ -184,7 +173,7 @@ bool ConfigFile::dump_string(const char *buf, int32_t len)
       out_fname = get_pool_memory(PM_FNAME);
       make_unique_filename(&out_fname, (int)(intptr_t)this, (char*)"configfile");
    }
-   
+
    fp = fopen(out_fname, "wb");
    if (!fp) {
       return ret;
@@ -209,7 +198,7 @@ bool ConfigFile::serialize(const char *fname)
    if (!items) {
       return ret;
    }
-   
+
    fp = fopen(fname, "w");
    if (!fp) {
       return ret;
@@ -235,18 +224,18 @@ int ConfigFile::serialize(POOLMEM **buf)
       **buf = 0;
       return 0;
    }
-   
+
    len = Mmsg(buf, "# Plugin configuration file\n# Version %d\n", version);
 
    tmp = get_pool_memory(PM_MESSAGE);
 
    for (int i=0; items[i].name ; i++) {
       if (items[i].comment) {
-         Mmsg(tmp, "OptPrompt=%s\n", items[i].comment);
+         Mmsg(tmp, "OptPrompt=\"%s\"\n", items[i].comment);
          pm_strcat(buf, tmp);
       }
       if (items[i].default_value) {
-         Mmsg(tmp, "OptDefault=%s\n", items[i].default_value);
+         Mmsg(tmp, "OptDefault=\"%s\"\n", items[i].default_value);
          pm_strcat(buf, tmp);
       }
       if (items[i].required) {
@@ -255,7 +244,7 @@ int ConfigFile::serialize(POOLMEM **buf)
       }
 
       /* variable = @INT64@ */
-      Mmsg(tmp, "%s=%s\n\n", 
+      Mmsg(tmp, "%s=%s\n\n",
            items[i].name, ini_get_store_code(items[i].handler));
       len = pm_strcat(buf, tmp);
    }
@@ -407,7 +396,7 @@ bool ConfigFile::unserialize(const char *fname)
       } else if (strcasecmp("optdefault", lc->str) == 0) {
          assign = &(items[nb].default_value);
 
-      } else if (strcasecmp("optrequired", lc->str) == 0) { 
+      } else if (strcasecmp("optrequired", lc->str) == 0) {
          items[nb].required = true;               /* Don't use argument */
          scan_to_eol(lc);
          continue;
@@ -507,10 +496,10 @@ bool ini_store_alist_str(LEX *lc, ConfigFile *inifile, ini_items *item)
    if (item->val.alistval == NULL) {
       list = New(alist(10, owned_by_alist));
    } else {
-      list = item->val.alistval;    
+      list = item->val.alistval;
    }
 
-   Dmsg4(900, "Append %s to alist %p size=%d %s\n", 
+   Dmsg4(900, "Append %s to alist %p size=%d %s\n",
          lc->str, list, list->size(), item->name);
    list->append(bstrdup(lc->str));
    item->val.alistval = list;
@@ -584,13 +573,21 @@ bool ini_store_bool(LEX *lc, ConfigFile *inifile, ini_items *item)
    if (lex_get_token(lc, T_NAME) == T_ERROR) {
       return false;
    }
-   if (strcasecmp(lc->str, "yes") == 0 || strcasecmp(lc->str, "true") == 0) {
+   if (strcasecmp(lc->str, "yes")  == 0 ||
+       strcasecmp(lc->str, "true") == 0 ||
+       strcasecmp(lc->str, "on")   == 0)
+   {
       item->val.boolval = true;
-   } else if (strcasecmp(lc->str, "no") == 0 || strcasecmp(lc->str, "false") == 0) {
+
+   } else if (strcasecmp(lc->str, "no")    == 0 ||
+              strcasecmp(lc->str, "false") == 0 ||
+              strcasecmp(lc->str, "off")   == 0)
+   {
       item->val.boolval = false;
+
    } else {
       /* YES and NO must not be translated */
-      scan_err2(lc, _("Expect %s, got: %s"), "YES, NO, TRUE, or FALSE", lc->str);
+      scan_err2(lc, _("Expect %s, got: %s"), "YES, NO, ON, OFF, TRUE, or FALSE", lc->str);
       return false;
    }
    scan_to_eol(lc);
@@ -723,12 +720,12 @@ int main()
    fclose(fp);
    ini->clear_items();
    ini->free_items();
-   
+
    /* Test  */
    if ((fp = fopen("test2.cfg", "w")) == NULL) {
       exit (1);
    }
-   fprintf(fp, 
+   fprintf(fp,
            "# this is a comment\n"
            "optprompt=\"Datastore Name\"\n"
            "datastore=@NAME@\n"
@@ -767,7 +764,7 @@ int main()
    ok(ini->items[pos].val.int64val == 10, "Test int");
    ok(ini->items[pos].required == true, "Check required");
 
-   ok((pos = ini->get_item("bool")) == 4, "Check bool definition");   
+   ok((pos = ini->get_item("bool")) == 4, "Check bool definition");
    ok(ini->items[pos].val.boolval == true, "Test bool");
 
    ok(ini->dump_results(&buf), "Test to dump results");
@@ -776,7 +773,7 @@ int main()
    ini->clear_items();
    ini->free_items();
    report();
-   
+
    free_pool_memory(buf);
    exit (0);
 }
diff --git a/src/lib/ini.h b/src/lib/ini.h
index aa82bcd..c68994b 100644
--- a/src/lib/ini.h
+++ b/src/lib/ini.h
@@ -4,7 +4,7 @@
    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 modify it under the terms of
-   version three of the GNU Affero General Public License as published by the 
+   version three of the GNU Affero General Public License as published by the
    Free Software Foundation, which is listed in the file LICENSE.
 
    This program is distributed in the hope that it will be useful, but
@@ -28,24 +28,24 @@
 #ifndef INI_H
 #define INI_H
 
-/* 
+/*
  * Plugin has a internal C structure that describes the configuration:
  * struct ini_items[]
  *
  * The ConfigFile object can generate a text file that describes the C
  * structure. This text format is saved as RestoreObject in the catalog.
- * 
+ *
  *   struct ini_items[]  -> register_items()  -> serialize() -> RestoreObject R1
  *
  * On the Director side, at the restore time, we can analyse this text to
  * get the C structure.
- * 
+ *
  * RestoreObject R1 -> write to disk -> unserialize() -> struct ini_items[]
  *
  * Once done, we can ask questions to the user at the restore time and fill
  * the C struct with answers. The Director can send back as a RestoreObject
  * the result of the questionnaire.
- * 
+ *
  * struct ini_items[] -> UAContext -> dump_result() -> FD as RestoreObject R2
  *
  * On the Plugin side, it can get back the C structure and use it.
@@ -66,8 +66,8 @@ typedef union {
 } item_value;
 
 /* These functions are used to convert a string to the appropriate value */
-typedef 
-bool (INI_ITEM_HANDLER)(LEX *lc, ConfigFile *inifile, 
+typedef
+bool (INI_ITEM_HANDLER)(LEX *lc, ConfigFile *inifile,
                         struct ini_items *item);
 
 /* If no items are registred at the scan time, we detect this list from
@@ -79,9 +79,10 @@ struct ini_items {
    const char *comment;         /* comment associated, used in prompt */
 
    int required;                /* optional required or not */
+   const char *default_value;   /* optional default value */
+
    const char *re_value;        /* optional regexp associated */
    const char *in_values;       /* optional list of values */
-   const char *default_value;   /* optional default value */
 
    bool found;                  /* if val is set */
    item_value val;              /* val contains the value */
@@ -119,19 +120,24 @@ public:
    JCR *jcr;                    /* JCR needed for Jmsg */
    int version;                 /* Internal version check */
    int sizeof_ini_items;        /* Extra check when using dynamic loading */
+   bool unlink_temp_file;       /* Unlink temp file when destroying object */
    struct ini_items *items;     /* Structure of the config file */
    POOLMEM *out_fname;          /* Can be used to dump config to disk */
    POOLMEM *edit;               /* Can be used to build result file */
+   char *plugin_name;           /* Used to store owner of this ConfigFile */
 
    ConfigFile() {
       lc = NULL;
       jcr = NULL;
       items = NULL;
       out_fname = NULL;
+      plugin_name = NULL;
 
       version = 1;
       items_allocated = false;
+      unlink_temp_file = true;
       edit = get_pool_memory(PM_FNAME);
+      edit[0] = 0;
       sizeof_ini_items = sizeof(struct ini_items);
    }
 
@@ -143,20 +149,37 @@ public:
          free_pool_memory(edit);
       }
       if (out_fname) {
-         unlink(out_fname);
+         if (unlink_temp_file) {
+            unlink(out_fname);
+         }
          free_pool_memory(out_fname);
       }
+      if (plugin_name) {
+         free(plugin_name);
+      }
+      clear_items();
       free_items();
    }
 
    /* Dump a config string to out_fname */
    bool dump_string(const char *buf, int32_t len);
 
+   void set_plugin_name(char *n) {
+      if (plugin_name) {
+         free(plugin_name);
+      }
+      plugin_name = bstrdup(n);
+   }
+
    /* JCR needed for Jmsg */
    void set_jcr(JCR *ajcr) {
       jcr = ajcr;
    }
 
+   void set_unlink_temp_file(bool val) {
+      unlink_temp_file = val;
+   }
+
    /* Free malloced items such as char* or alist or items */
    void free_items();
 
@@ -166,7 +189,7 @@ public:
    /* Dump the item table to a file (used on plugin side) */
    bool serialize(const char *fname);
 
-   /* Dump the item table format to a buffer (used on plugin side) 
+   /* Dump the item table format to a buffer (used on plugin side)
     * returns the length of the buffer, -1 if error
     */
    int serialize(POOLMEM **buf);
@@ -189,14 +212,20 @@ public:
       }
       return false;
    }
-   
+
    /* Parse a ini file with a item list previously registred (plugin side) */
    bool parse(const char *filename);
 
    /* Create a item list from a ini file (director side) */
    bool unserialize(const char *filename);
+
+   /* Get Menu for an entry */
+   char *get_menu(int index, POOLMEM **dest);
+
+   /* Check if an entry is a part of a menu */
+   bool is_in_menu(int index, const char *menu);
 };
-                              
+
 /*
  * Standard global parsers defined in ini.c
  * When called with lc=NULL, it converts the item value back in inifile->edit
diff --git a/src/lib/jcr.c b/src/lib/jcr.c
index 53679c4..ab56a6b 100644
--- a/src/lib/jcr.c
+++ b/src/lib/jcr.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Manipulation routines for Job Control Records and
@@ -41,7 +29,7 @@
  *  The result is that there is one lock/unlock for each entry
  *  in the list while traversing it rather than a single lock
  *  at the beginning of a traversal and one at the end.  This
- *  incurs slightly more overhead, but effectively eliminates 
+ *  incurs slightly more overhead, but effectively eliminates
  *  the possibilty of race conditions.  In addition, with the
  *  exception of the global locking of the list during the
  *  re-reading of the config file, no recursion is needed.
@@ -75,7 +63,7 @@ static void unlock_jcr_chain();
 int num_jobs_run;
 dlist *last_jobs = NULL;
 const int max_last_jobs = 10;
- 
+
 static dlist *jcrs = NULL;            /* JCR chain */
 static pthread_mutex_t jcr_lock = PTHREAD_MUTEX_INITIALIZER;
 
@@ -85,7 +73,7 @@ static pthread_mutex_t last_jobs_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 static pthread_key_t jcr_key;         /* Pointer to jcr for each thread */
 
-pthread_once_t key_once = PTHREAD_ONCE_INIT; 
+pthread_once_t key_once = PTHREAD_ONCE_INIT;
 
 static char Job_status[]     = "Status Job=%s JobStatus=%d\n";
 
@@ -344,6 +332,8 @@ JCR *new_jcr(int size, JCR_free_HANDLER *daemon_free_jcr)
    }
    jcr = (JCR *)malloc(size);
    memset(jcr, 0, size);
+   /* Note for the director, this value is changed in jobq.c */
+   jcr->my_thread_id = pthread_self();
    jcr->msg_queue = New(dlist(item, &item->link));
    if ((status = pthread_mutex_init(&jcr->msg_queue_mutex, NULL)) != 0) {
       berrno be;
@@ -352,9 +342,10 @@ JCR *new_jcr(int size, JCR_free_HANDLER *daemon_free_jcr)
    }
    jcr->job_end_push.init(1, false);
    jcr->sched_time = time(NULL);
+   jcr->initial_sched_time = jcr->sched_time;
    jcr->daemon_free_jcr = daemon_free_jcr;    /* plug daemon free routine */
    jcr->init_mutex();
-   jcr->inc_use_count();   
+   jcr->inc_use_count();
    jcr->VolumeName = get_pool_memory(PM_FNAME);
    jcr->VolumeName[0] = 0;
    jcr->errmsg = get_pool_memory(PM_MESSAGE);
@@ -423,7 +414,6 @@ static void free_common_jcr(JCR *jcr)
       jcr->msg_queue = NULL;
       pthread_mutex_destroy(&jcr->msg_queue_mutex);
    }
-   close_msg(jcr);                    /* close messages for this job */
 
    /* do this after closing messages */
    if (jcr->client_name) {
@@ -445,10 +435,8 @@ static void free_common_jcr(JCR *jcr)
       jcr->VolumeName = NULL;
    }
 
-   if (jcr->dir_bsock) {
-      bnet_close(jcr->dir_bsock);
-      jcr->dir_bsock = NULL;
-   }
+   free_bsock(jcr->dir_bsock);
+
    if (jcr->errmsg) {
       free_pool_memory(jcr->errmsg);
       jcr->errmsg = NULL;
@@ -498,7 +486,7 @@ void free_jcr(JCR *jcr)
 {
    struct s_last_job *je;
 
-   Dmsg3(dbglvl, "Enter free_jcr jid=%u use_count=%d Job=%s\n", 
+   Dmsg3(dbglvl, "Enter free_jcr jid=%u use_count=%d Job=%s\n",
          jcr->JobId, jcr->use_count(), jcr->Job);
 
 #endif
@@ -510,7 +498,7 @@ void free_jcr(JCR *jcr)
          jcr->use_count(), jcr->JobId);
    }
    if (jcr->JobId > 0) {
-      Dmsg3(dbglvl, "Dec free_jcr jid=%u use_count=%d Job=%s\n", 
+      Dmsg3(dbglvl, "Dec free_jcr jid=%u use_count=%d Job=%s\n",
          jcr->JobId, jcr->use_count(), jcr->Job);
    }
    if (jcr->use_count() > 0) {          /* if in use */
@@ -518,13 +506,14 @@ void free_jcr(JCR *jcr)
       return;
    }
    if (jcr->JobId > 0) {
-      Dmsg3(dbglvl, "remove jcr jid=%u use_count=%d Job=%s\n", 
+      Dmsg3(dbglvl, "remove jcr jid=%u use_count=%d Job=%s\n",
             jcr->JobId, jcr->use_count(), jcr->Job);
    }
    remove_jcr(jcr);                   /* remove Jcr from chain */
    unlock_jcr_chain();
 
    dequeue_messages(jcr);
+   close_msg(jcr);                    /* close messages for this job */
    job_end_pop(jcr);                  /* pop and call hooked routines */
 
    Dmsg1(dbglvl, "End job=%d\n", jcr->JobId);
@@ -577,7 +566,6 @@ void free_jcr(JCR *jcr)
    }
 
    free_common_jcr(jcr);
-   close_msg(NULL);                   /* flush any daemon messages */
    Dmsg0(dbglvl, "Exit free_jcr\n");
 }
 
@@ -588,7 +576,7 @@ void free_jcr(JCR *jcr)
 void remove_jcr_from_tsd(JCR *jcr)
 {
    JCR *tjcr = get_jcr_from_tsd();
-   if (tjcr == jcr) { 
+   if (tjcr == jcr) {
       set_jcr_in_tsd(INVALID_JCR);
    }
 }
@@ -598,11 +586,6 @@ void JCR::set_killable(bool killable)
    JCR *jcr = this;
    jcr->lock();
    jcr->my_thread_killable = killable;
-   if (killable) {
-      jcr->my_thread_id = pthread_self();
-   } else {
-      memset(&jcr->my_thread_id, 0, sizeof(jcr->my_thread_id));
-   }
    jcr->unlock();
 }
 
@@ -616,7 +599,7 @@ void set_jcr_in_tsd(JCR *jcr)
    int status = pthread_setspecific(jcr_key, (void *)jcr);
    if (status != 0) {
       berrno be;
-      Jmsg1(jcr, M_ABORT, 0, _("pthread_setspecific failed: ERR=%s\n"), 
+      Jmsg1(jcr, M_ABORT, 0, _("pthread_setspecific failed: ERR=%s\n"),
             be.bstrerror(status));
    }
 }
@@ -650,7 +633,7 @@ JCR *get_jcr_from_tsd()
    return jcr;
 }
 
- 
+
 /*
  * Find which JobId corresponds to the current thread
  */
@@ -678,7 +661,7 @@ JCR *get_jcr_by_id(uint32_t JobId)
    foreach_jcr(jcr) {
       if (jcr->JobId == JobId) {
          jcr->inc_use_count();
-         Dmsg3(dbglvl, "Inc get_jcr jid=%u use_count=%d Job=%s\n", 
+         Dmsg3(dbglvl, "Inc get_jcr jid=%u use_count=%d Job=%s\n",
             jcr->JobId, jcr->use_count(), jcr->Job);
          break;
       }
@@ -724,7 +707,7 @@ JCR *get_jcr_by_session(uint32_t SessionId, uint32_t SessionTime)
       if (jcr->VolSessionId == SessionId &&
           jcr->VolSessionTime == SessionTime) {
          jcr->inc_use_count();
-         Dmsg3(dbglvl, "Inc get_jcr jid=%u use_count=%d Job=%s\n", 
+         Dmsg3(dbglvl, "Inc get_jcr jid=%u use_count=%d Job=%s\n",
             jcr->JobId, jcr->use_count(), jcr->Job);
          break;
       }
@@ -753,7 +736,7 @@ JCR *get_jcr_by_partial_name(char *Job)
    foreach_jcr(jcr) {
       if (strncmp(Job, jcr->Job, len) == 0) {
          jcr->inc_use_count();
-         Dmsg3(dbglvl, "Inc get_jcr jid=%u use_count=%d Job=%s\n", 
+         Dmsg3(dbglvl, "Inc get_jcr jid=%u use_count=%d Job=%s\n",
             jcr->JobId, jcr->use_count(), jcr->Job);
          break;
       }
@@ -779,7 +762,7 @@ JCR *get_jcr_by_full_name(char *Job)
    foreach_jcr(jcr) {
       if (strcmp(jcr->Job, Job) == 0) {
          jcr->inc_use_count();
-         Dmsg3(dbglvl, "Inc get_jcr jid=%u use_count=%d Job=%s\n", 
+         Dmsg3(dbglvl, "Inc get_jcr jid=%u use_count=%d Job=%s\n",
             jcr->JobId, jcr->use_count(), jcr->Job);
          break;
       }
@@ -809,7 +792,7 @@ static void update_wait_time(JCR *jcr, int newJobStatus)
       enter_in_waittime = false; /* not a Wait situation */
       break;
    }
-   
+
    /*
     * If we were previously waiting and are not any more
     *   we want to update the wait_time variable, which is
@@ -840,16 +823,13 @@ static void update_wait_time(JCR *jcr, int newJobStatus)
    }
 }
 
-/* 
+/*
  * Priority runs from 0 (lowest) to 10 (highest)
  */
 static int get_status_priority(int JobStatus)
 {
    int priority = 0;
    switch (JobStatus) {
-   case JS_Incomplete:
-      priority = 10;
-      break;
    case JS_ErrorTerminated:
    case JS_FatalError:
    case JS_Canceled:
@@ -874,7 +854,7 @@ bool JCR::sendJobStatus()
    if (jcr->dir_bsock) {
       return jcr->dir_bsock->fsend(Job_status, jcr->Job, jcr->JobStatus);
    }
-   return true; 
+   return true;
 }
 
 /*
@@ -889,7 +869,7 @@ bool JCR::sendJobStatus(int newJobStatus)
          return jcr->dir_bsock->fsend(Job_status, jcr->Job, jcr->JobStatus);
       }
    }
-   return true; 
+   return true;
 }
 
 void JCR::setJobStarted()
@@ -906,7 +886,7 @@ void JCR::setJobStatus(int newJobStatus)
    int oldJobStatus = jcr->JobStatus;
    priority = get_status_priority(newJobStatus);
    old_priority = get_status_priority(oldJobStatus);
-   
+
    Dmsg2(800, "set_jcr_job_status(%s, %c)\n", Job, newJobStatus);
 
    /* Update wait_time depending on newJobStatus and oldJobStatus */
@@ -920,7 +900,7 @@ void JCR::setJobStatus(int newJobStatus)
    /*
     * If status priority is > than proposed new status, change it.
     * If status priority == new priority and both are zero, take
-    *   the new status. 
+    *   the new status.
     * If it is not zero, then we keep the first non-zero "error" that
     *   occurred.
     */
@@ -985,9 +965,9 @@ static void unlock_jcr_chain()
  *   released with:
  *
  *    free_jcr(jcr);
- *  
+ *
  */
-JCR *jcr_walk_start() 
+JCR *jcr_walk_start()
 {
    JCR *jcr;
    lock_jcr_chain();
@@ -995,7 +975,7 @@ JCR *jcr_walk_start()
    if (jcr) {
       jcr->inc_use_count();
       if (jcr->JobId > 0) {
-         Dmsg3(dbglvl, "Inc walk_start jid=%u use_count=%d Job=%s\n", 
+         Dmsg3(dbglvl, "Inc walk_start jid=%u use_count=%d Job=%s\n",
             jcr->JobId, jcr->use_count(), jcr->Job);
       }
    }
@@ -1015,7 +995,7 @@ JCR *jcr_walk_next(JCR *prev_jcr)
    if (jcr) {
       jcr->inc_use_count();
       if (jcr->JobId > 0) {
-         Dmsg3(dbglvl, "Inc walk_next jid=%u use_count=%d Job=%s\n", 
+         Dmsg3(dbglvl, "Inc walk_next jid=%u use_count=%d Job=%s\n",
             jcr->JobId, jcr->use_count(), jcr->Job);
       }
    }
@@ -1033,7 +1013,7 @@ void jcr_walk_end(JCR *jcr)
 {
    if (jcr) {
       if (jcr->JobId > 0) {
-         Dmsg3(dbglvl, "Free walk_end jid=%u use_count=%d Job=%s\n", 
+         Dmsg3(dbglvl, "Free walk_end jid=%u use_count=%d Job=%s\n",
             jcr->JobId, jcr->use_count(), jcr->Job);
       }
       free_jcr(jcr);
@@ -1101,7 +1081,7 @@ static void jcr_timeout_check(watchdog_t *self)
             bs->set_timed_out();
             Qmsg(jcr, M_ERROR, 0, _(
 "Watchdog sending kill after %d secs to thread stalled reading Storage daemon.\n"),
-                 watchdog_time - timer_start);
+                 (int)(watchdog_time - timer_start));
             jcr->my_thread_send_signal(TIMEOUT_SIGNAL);
          }
       }
@@ -1113,7 +1093,7 @@ static void jcr_timeout_check(watchdog_t *self)
             bs->set_timed_out();
             Qmsg(jcr, M_ERROR, 0, _(
 "Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"),
-                 watchdog_time - timer_start);
+                 (int)(watchdog_time - timer_start));
             jcr->my_thread_send_signal(TIMEOUT_SIGNAL);
          }
       }
@@ -1125,7 +1105,7 @@ static void jcr_timeout_check(watchdog_t *self)
             bs->set_timed_out();
             Qmsg(jcr, M_ERROR, 0, _(
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"),
-                 watchdog_time - timer_start);
+                 (int)(watchdog_time - timer_start));
             jcr->my_thread_send_signal(TIMEOUT_SIGNAL);
          }
       }
@@ -1135,8 +1115,8 @@ static void jcr_timeout_check(watchdog_t *self)
    Dmsg0(dbglvl, "Finished JCR timeout checks\n");
 }
 
-/* 
- * Return next JobId from comma separated list   
+/*
+ * Return next JobId from comma separated list
  *
  * Returns:
  *   1 if next JobId returned
@@ -1178,7 +1158,7 @@ extern "C" void timeout_handler(int sig)
    return;                            /* thus interrupting the function */
 }
 
-/* Used to display specific daemon information after a fatal signal 
+/* Used to display specific daemon information after a fatal signal
  * (like B_DB in the director)
  */
 #define MAX_DBG_HOOK 10
@@ -1191,8 +1171,14 @@ void dbg_jcr_add_hook(dbg_jcr_hook_t *hook)
    dbg_jcr_hooks[dbg_jcr_handler_count++] = hook;
 }
 
+/* on win32, the pthread_t is a struct, so we don't display it */
+#ifdef HAVE_MINGW_W64
+# define get_threadid(a) (void *)0
+#else
+# define get_threadid(a) (void *)(a)
+#endif
 /*
- * !!! WARNING !!! 
+ * !!! WARNING !!!
  *
  * This function should be used ONLY after a fatal signal. We walk through the
  * JCR chain without doing any lock, Bacula should not be running.
@@ -1207,11 +1193,11 @@ void dbg_print_jcr(FILE *fp)
    fprintf(fp, "Attempt to dump current JCRs. njcrs=%d\n", jcrs->size());
 
    for (JCR *jcr = (JCR *)jcrs->first(); jcr ; jcr = (JCR *)jcrs->next(jcr)) {
-      fprintf(fp, "threadid=%p JobId=%d JobStatus=%c jcr=%p name=%s\n", 
-              (void *)jcr->my_thread_id, (int)jcr->JobId, jcr->JobStatus, jcr, jcr->Job);
+      fprintf(fp, "threadid=%p JobId=%d JobStatus=%c jcr=%p name=%s\n",
+              get_threadid(jcr->my_thread_id), (int)jcr->JobId, jcr->JobStatus, jcr, jcr->Job);
       fprintf(fp, "threadid=%p killable=%d JobId=%d JobStatus=%c "
                   "jcr=%p name=%s\n",
-              (void *)jcr->my_thread_id, jcr->is_killable(),
+              get_threadid(jcr->my_thread_id), jcr->is_killable(),
               (int)jcr->JobId, jcr->JobStatus, jcr, jcr->Job);
       fprintf(fp, "\tuse_count=%i\n", jcr->use_count());
       fprintf(fp, "\tJobType=%c JobLevel=%c\n",
@@ -1222,9 +1208,9 @@ void dbg_print_jcr(FILE *fp)
       bstrftime(buf4, sizeof(buf4), jcr->wait_time);
       fprintf(fp, "\tsched_time=%s start_time=%s\n\tend_time=%s wait_time=%s\n",
               buf1, buf2, buf3, buf4);
-      fprintf(fp, "\tdb=%p db_batch=%p batch_started=%i\n", 
+      fprintf(fp, "\tdb=%p db_batch=%p batch_started=%i\n",
               jcr->db, jcr->db_batch, jcr->batch_started);
-      
+
       /*
        * Call all the jcr debug hooks
        */
diff --git a/src/lib/lex.c b/src/lib/lex.c
index c4c78d6..ead211c 100644
--- a/src/lib/lex.c
+++ b/src/lib/lex.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Lexical scanner for Bacula configuration file
@@ -35,8 +23,6 @@
 #include "bacula.h"
 #include "lex.h"
 
-extern int debug_level;
-
 /* Debug level for this source file */
 static const int dbglvl = 5000;
 
@@ -54,6 +40,9 @@ void scan_to_eol(LEX *lc)
          lex_unget_char(lc);
          return;
       }
+      if (token == T_EOF) {
+         return;
+      }
    }
 }
 
@@ -91,7 +80,7 @@ static void s_err(const char *file, int line, LEX *lc, const char *msg, ...)
                 _("Problem probably begins at line %d.\n"), lc->begin_line_no);
    } else {
       more[0] = 0;
-   }  
+   }
    if (lc->line_no > 0) {
       e_msg(file, line, lc->err_type, 0, _("Config error: %s\n"
 "            : line %d, col %d of file %s\n%s\n%s"),
@@ -134,13 +123,15 @@ LEX *lex_close_file(LEX *lf)
    if (lf->bpipe) {
       close_bpipe(lf->bpipe);
       lf->bpipe = NULL;
-   } else {
+   } else if (lf->fd) {
       fclose(lf->fd);
    }
    Dmsg1(dbglvl, "Close cfg file %s\n", lf->fname);
    free(lf->fname);
    free_memory(lf->line);
    lf->line = NULL;
+   free_memory(lf->str);
+   lf->str = NULL;
    if (of) {
       of->options = lf->options;      /* preserve options */
       memcpy(lf, of, sizeof(LEX));
@@ -149,7 +140,9 @@ LEX *lex_close_file(LEX *lf)
       of = lf;
       lf = NULL;
    }
-   free(of);
+   if (of) {
+      free(of);
+   }
    return lf;
 }
 
@@ -190,10 +183,10 @@ LEX *lex_open_file(LEX *lf, const char *filename, LEX_ERROR_HANDLER *scan_error)
       lf->next = nf;                  /* if have lf, push it behind new one */
       lf->options = nf->options;      /* preserve user options */
       /*
-       * preserve err_type to prevent bacula exiting on 'reload' 
-       * if config is invalid. Fixes bug #877         
+       * preserve err_type to prevent bacula exiting on 'reload'
+       * if config is invalid. Fixes bug #877
        */
-      lf->err_type = nf->err_type;    
+      lf->err_type = nf->err_type;
    } else {
       lf = nf;                        /* start new packet */
       memset(lf, 0, sizeof(LEX));
@@ -210,6 +203,7 @@ LEX *lex_open_file(LEX *lf, const char *filename, LEX_ERROR_HANDLER *scan_error)
    lf->line = get_memory(5000);
    lf->state = lex_none;
    lf->ch = L_EOL;
+   lf->str = get_memory(5000);
    Dmsg1(dbglvl, "Return lex=%x\n", lf);
    return lf;
 }
@@ -263,7 +257,7 @@ void lex_unget_char(LEX *lf)
  */
 static void add_str(LEX *lf, int ch)
 {
-   if (lf->str_len >= MAXSTRING-3) {
+   if (lf->str_len >= sizeof_pool_memory(lf->str)) {
       Emsg3(M_ERROR_TERM, 0, _(
            _("Config token too long, file: %s, line %d, begins at line %d\n")),
              lf->fname, lf->line_no, lf->begin_line_no);
@@ -659,7 +653,7 @@ lex_get_token(LEX *lf, int expect)
          add_str(lf, ch);
          break;
       case lex_utf8_bom:
-         /* we only end up in this state if we have read an 0xEF 
+         /* we only end up in this state if we have read an 0xEF
             as the first byte of the file, indicating we are probably
             reading a UTF-8 file */
          if (ch == 0xBB && bom_bytes_seen == 1) {
@@ -672,7 +666,7 @@ lex_get_token(LEX *lf, int expect)
          }
          break;
       case lex_utf16_le_bom:
-         /* we only end up in this state if we have read an 0xFF 
+         /* we only end up in this state if we have read an 0xFF
             as the first byte of the file -- indicating that we are
             probably dealing with an Intel based (little endian) UTF-16 file*/
          if (ch == 0xFE) {
diff --git a/src/lib/lex.h b/src/lib/lex.h
index b2a55c5..d2568fc 100644
--- a/src/lib/lex.h
+++ b/src/lib/lex.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   lex.h
@@ -87,7 +75,7 @@ enum lex_state {
    lex_quoted_string,
    lex_include_quoted_string,
    lex_include,
-   lex_utf8_bom,      /* we are parsing out a utf8 byte order mark */ 
+   lex_utf8_bom,      /* we are parsing out a utf8 byte order mark */
    lex_utf16_le_bom   /* we are parsing out a utf-16 (little endian) byte order mark */
 };
 
@@ -97,7 +85,7 @@ enum lex_state {
 #define LOPT_NO_EXTERN           0x4  /* Don't follow @ command */
 
 class BPIPE;                          /* forward reference */
-  
+
 /* Lexical context */
 typedef struct s_lex_context {
    struct s_lex_context *next;        /* pointer to next lexical context */
@@ -105,7 +93,7 @@ typedef struct s_lex_context {
    char *fname;                       /* filename */
    FILE *fd;                          /* file descriptor */
    POOLMEM *line;                     /* input line */
-   char str[MAXSTRING];               /* string being scanned */
+   POOLMEM *str;                      /* string being scanned */
    int str_len;                       /* length of string */
    int line_no;                       /* file line number */
    int col_no;                        /* char position on line */
diff --git a/src/lib/lib.h b/src/lib/lib.h
index b81f89f..174e04b 100644
--- a/src/lib/lib.h
+++ b/src/lib/lib.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Library includes for Bacula lib directory
diff --git a/src/lib/lockmgr.c b/src/lib/lockmgr.c
index 93654ba..a72dd72 100644
--- a/src/lib/lockmgr.c
+++ b/src/lib/lockmgr.c
@@ -1,36 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2008-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2008-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /*
   How to use mutex with bad order usage detection
  ------------------------------------------------
 
- Note: see file mutex_list.h for current mutexes with 
+ Note: see file mutex_list.h for current mutexes with
        defined priorities.
 
  Instead of using:
@@ -47,13 +35,13 @@
 
  Mutex that doesn't need this extra check can be declared as pthread_mutex_t.
  You can use this object on pthread_mutex_lock/unlock/cond_wait/cond_timewait.
- 
+
  With dynamic creation, you can use:
     bthread_mutex_t mutex;
     pthread_mutex_init(&mutex);
     bthread_mutex_set_priority(&mutex, 10);
     pthread_mutex_destroy(&mutex);
- 
+
  */
 
 #define _LOCKMGR_COMPLIANT
@@ -70,8 +58,14 @@
    Pmsg3(000, _("ASSERT failed at %s:%i: %s \n"), f, l, #x); \
    jcr[0] = 0; }
 
+#define ASSERT2_p(x,m,f,l) if (!(x)) {          \
+   char *jcr = NULL; \
+   set_assert_msg(f, l, m); \
+   Pmsg4(000, _("ASSERT failed at %s:%i: %s (%s)\n"), f, l, #x, m);        \
+   jcr[0] = 0; }
+
 /*
-  Inspired from 
+  Inspired from
   http://www.cs.berkeley.edu/~kamil/teaching/sp03/041403.pdf
 
   This lock manager will replace some pthread calls. It can be
@@ -87,6 +81,7 @@
 
 */
 
+#define DBGLEVEL_EVENT 50
 
 /*
  * pthread_mutex_lock for memory allocator and other
@@ -149,7 +144,7 @@ public:
    void init(void *n, void *c) {
       node = n;
       child = c;
-      seen = LMGR_WHITE;      
+      seen = LMGR_WHITE;
    }
 
    void mark_as_seen(lmgr_color_t c) {
@@ -172,10 +167,10 @@ class lmgr_lock_t: public SMARTALLOC
 {
 public:
    dlink link;
-   void *lock;
+   void *lock;                  /* Link to the mutex (or any value) */
    lmgr_state_t state;
    int max_priority;
-   int priority;
+   int priority;                /* Current node priority */
 
    const char *file;
    int line;
@@ -199,7 +194,7 @@ public:
 
 };
 
-/* 
+/*
  * Get the child list, ret must be already allocated
  */
 static void search_all_node(dlist *g, lmgr_node_t *v, alist *ret)
@@ -257,6 +252,34 @@ static bool contains_cycle(dlist *g)
 
 /****************************************************************/
 
+/* lmgr_thread_event struct, some call can add events, and they will
+ * be dumped during a lockdump
+ */
+typedef struct
+{
+   int32_t     id;              /* Id of the event */
+   int32_t     global_id;       /* Current global id */
+   int32_t     flags;           /* Flags for this event */
+
+   int32_t     line;            /* from which line in filename */
+   const char *from;            /* From where in the code (filename) */
+
+   char       *comment;         /* Comment */
+   intptr_t    user_data;       /* Optionnal user data (will print address) */
+
+}  lmgr_thread_event;
+
+static int32_t global_event_id=0;
+
+/* Keep this number of event per thread */
+#ifdef _TEST_IT
+# define LMGR_THREAD_EVENT_MAX  15
+#else
+# define LMGR_THREAD_EVENT_MAX  1024
+#endif
+
+#define lmgr_thread_event_get_pos(x)   ((x) % LMGR_THREAD_EVENT_MAX)
+
 class lmgr_thread_t: public SMARTALLOC
 {
 public:
@@ -268,30 +291,120 @@ public:
    int max;
    int max_priority;
 
+   lmgr_thread_event events[LMGR_THREAD_EVENT_MAX];
+   int event_id;
+
    lmgr_thread_t() {
       int status;
       if ((status = pthread_mutex_init(&mutex, NULL)) != 0) {
          berrno be;
          Pmsg1(000, _("pthread key create failed: ERR=%s\n"),
                  be.bstrerror(status));
-         ASSERT(0);
+         ASSERT2(0, "pthread_mutex_init failed");
       }
+      event_id = 0;
       thread_id = pthread_self();
       current = -1;
       max = 0;
       max_priority = 0;
    }
 
+   /* Add event to the event list of the thread */
+   void add_event(const char *comment, intptr_t user_data, int32_t flags,
+                  const char *from, int32_t line)
+   {
+      char *p;
+      int   i = lmgr_thread_event_get_pos(event_id);
+
+      events[i].flags = LMGR_EVENT_INVALID;
+      p = events[i].comment;
+      events[i].comment = (char *)"*Freed*";
+
+      /* Shared between thread, just an indication about timing */
+      events[i].global_id = global_event_id++;
+      events[i].id = event_id;
+      events[i].line = line;
+      events[i].from = from;
+
+      /* It means we are looping over the ring, so we need
+       * to check if the memory need to be freed
+       */
+      if (event_id >= LMGR_THREAD_EVENT_MAX) {
+         if (events[i].flags & LMGR_EVENT_FREE) {
+            free(p);
+         }
+      }
+
+      /* We need to copy the memory */
+      if (flags & LMGR_EVENT_DUP) {
+         events[i].comment = bstrdup(comment);
+         flags |= LMGR_EVENT_FREE; /* force the free */
+
+      } else {
+         events[i].comment = (char *)comment;
+      }
+      events[i].user_data = user_data;
+      events[i].flags = flags;  /* mark it valid */
+      event_id++;
+   }
+
+   void free_event_list() {
+      /* We first check how far we go in the event list */
+      int max = MIN(event_id, LMGR_THREAD_EVENT_MAX);
+      char *p;
+
+      for (int i = 0; i < max ; i++) {
+         if (events[i].flags & LMGR_EVENT_FREE) {
+            p = events[i].comment;
+            events[i].flags = LMGR_EVENT_INVALID;
+            events[i].comment = (char *)"*Freed*";
+            free(p);
+         }
+      }
+   }
+
+   void print_event(lmgr_thread_event *ev, FILE *fp) {
+      if (ev->flags & LMGR_EVENT_INVALID) {
+         return;
+      }
+      fprintf(fp, "    %010d id=%010d %s data=%p at %s:%d\n",
+              ev->global_id,
+              ev->id,
+              NPRT(ev->comment),
+              (void *)ev->user_data,
+              ev->from,
+              ev->line);
+   }
+
    void _dump(FILE *fp) {
-      fprintf(fp, "threadid=%p max=%i current=%i\n", 
+      fprintf(fp, "threadid=%p max=%i current=%i\n",
               (void *)thread_id, max, current);
       for(int i=0; i<=current; i++) {
-         fprintf(fp, "   lock=%p state=%s priority=%i %s:%i\n", 
-                 lock_list[i].lock, 
+         fprintf(fp, "   lock=%p state=%s priority=%i %s:%i\n",
+                 lock_list[i].lock,
                  (lock_list[i].state=='W')?"Wanted ":"Granted",
                  lock_list[i].priority,
                  lock_list[i].file, lock_list[i].line);
-      } 
+      }
+
+      if (debug_flags & DEBUG_PRINT_EVENT) {
+         /* Debug events */
+         fprintf(fp, "   events:\n");
+
+         /* Display events between (event_id % LMGR_THREAD_EVENT_MAX) and LMGR_THREAD_EVENT_MAX */
+         if (event_id > LMGR_THREAD_EVENT_MAX) {
+            for (int i = event_id % LMGR_THREAD_EVENT_MAX ; i < LMGR_THREAD_EVENT_MAX ; i++)
+            {
+               print_event(&events[i], fp);
+            }
+         }
+
+         /* Display events between 0 and event_id % LMGR_THREAD_EVENT_MAX*/
+         for (int i = 0 ;  i < (event_id % LMGR_THREAD_EVENT_MAX) ; i++)
+         {
+            print_event(&events[i], fp);
+         }
+      }
    }
 
    void dump(FILE *fp) {
@@ -305,12 +418,20 @@ public:
    /*
     * Call before a lock operation (mark mutex as WANTED)
     */
-   virtual void pre_P(void *m, int priority, 
-                      const char *f="*unknown*", int l=0) 
+   virtual void pre_P(void *m, int priority,
+                      const char *f="*unknown*", int l=0)
    {
       int max_prio = max_priority;
-      ASSERT_p(current < LMGR_MAX_LOCK, f, l);
-      ASSERT_p(current >= -1, f, l);
+
+      if (chk_dbglvl(DBGLEVEL_EVENT) || debug_flags & DEBUG_MUTEX_EVENT) {
+         /* Keep track of this event */
+         add_event("P()", (intptr_t)m, 0, f, l);
+      }
+
+      /* Fail if too many locks in use */
+      ASSERT2_p(current < LMGR_MAX_LOCK, "Too many locks in use", f, l);
+      /* Fail if the "current" value is out of bounds */
+      ASSERT2_p(current >= -1, "current lock value is out of bounds", f, l);
       lmgr_p(&mutex);
       {
          current++;
@@ -324,18 +445,29 @@ public:
          max_priority = MAX(priority, max_priority);
       }
       lmgr_v(&mutex);
-      ASSERT_p(!priority || priority >= max_prio, f, l);
+
+      /* Fail if we tried to lock a mutex with a lower priority than
+       * the current value. It means that you need to lock mutex in a
+       * different order to ensure that the priority field is always
+       * increasing. The mutex priority list is defined in mutex_list.h.
+       *
+       * Look the *.lockdump generated to get the list of all mutexes,
+       * and where they were granted to find the priority problem.
+       */
+      ASSERT2_p(!priority || priority >= max_prio,
+                "Mutex priority problem found, locking done in wrong order",
+                f, l);
    }
 
    /*
     * Call after the lock operation (mark mutex as GRANTED)
     */
    virtual void post_P() {
-      ASSERT(current >= 0);
+      ASSERT2(current >= 0, "Lock stack when negative");
       ASSERT(lock_list[current].state == LMGR_LOCK_WANTED);
       lock_list[current].state = LMGR_LOCK_GRANTED;
    }
-   
+
    /* Using this function is some sort of bug */
    void shift_list(int i) {
       for(int j=i+1; j<=current; j++) {
@@ -357,7 +489,14 @@ public:
     * Remove the mutex from the list
     */
    virtual void do_V(void *m, const char *f="*unknown*", int l=0) {
-      ASSERT_p(current >= 0, f, l);
+      int old_current = current;
+
+      /* Keep track of this event */
+      if (chk_dbglvl(DBGLEVEL_EVENT) || debug_flags & DEBUG_MUTEX_EVENT) {
+         add_event("V()", (intptr_t)m, 0, f, l);
+      }
+
+      ASSERT2_p(current >= 0, "No previous P found, the mutex list is empty", f, l);
       lmgr_p(&mutex);
       {
          if (lock_list[current].lock == m) {
@@ -365,16 +504,15 @@ public:
             lock_list[current].state = LMGR_LOCK_EMPTY;
             current--;
          } else {
-            ASSERT(current > 0);
-            Pmsg3(0, "ERROR: wrong P/V order search lock=%p %s:%i\n", m, f, l);
-            Pmsg4(000, "ERROR: wrong P/V order pos=%i lock=%p %s:%i\n",
-                    current, lock_list[current].lock, lock_list[current].file, 
+            Pmsg3(0, "ERROR: V out of order lock=%p %s:%i dumping locks...\n", m, f, l);
+            Pmsg4(000, "  wrong P/V order pos=%i lock=%p %s:%i\n",
+                    current, lock_list[current].lock, lock_list[current].file,
                     lock_list[current].line);
             for (int i=current-1; i >= 0; i--) { /* already seen current */
-               Pmsg4(000, "ERROR: wrong P/V order pos=%i lock=%p %s:%i\n",
+               Pmsg4(000, "  wrong P/V order pos=%i lock=%p %s:%i\n",
                      i, lock_list[i].lock, lock_list[i].file, lock_list[i].line);
                if (lock_list[i].lock == m) {
-                  Pmsg3(000, "ERROR: FOUND P pos=%i %s:%i\n", i, f, l);
+                  Pmsg3(000, "ERROR: FOUND P for out of order V at pos=%i %s:%i\n", i, f, l);
                   shift_list(i);
                   current--;
                   break;
@@ -383,17 +521,20 @@ public:
          }
          /* reset max_priority to the last one */
          if (current >= 0) {
-            max_priority = lock_list[current].max_priority; 
+            max_priority = lock_list[current].max_priority;
          } else {
             max_priority = 0;
          }
       }
       lmgr_v(&mutex);
+      /* ASSERT2 should be called outside from the mutex lock */
+      ASSERT2_p(current != old_current, "V() called without a previous P()", f, l);
    }
 
    virtual ~lmgr_thread_t() {destroy();}
 
    void destroy() {
+      free_event_list();
       pthread_mutex_destroy(&mutex);
    }
 } ;
@@ -412,7 +553,7 @@ class lmgr_dummy_thread_t: public lmgr_thread_t
  *
  */
 
-pthread_once_t key_lmgr_once = PTHREAD_ONCE_INIT; 
+pthread_once_t key_lmgr_once = PTHREAD_ONCE_INIT;
 static pthread_key_t lmgr_key;  /* used to get lgmr_thread_t object */
 
 static dlist *global_mgr = NULL;  /* used to store all lgmr_thread_t objects */
@@ -483,8 +624,8 @@ bool lmgr_detect_deadlock_unlocked()
             g->append(node);
          }
       }
-   }      
-   
+   }
+
    //foreach_dlist(node, g) {
    //   printf("g n=%p c=%p\n", node->node, node->child);
    //}
@@ -493,7 +634,7 @@ bool lmgr_detect_deadlock_unlocked()
    if (ret) {
       printf("Found a deadlock !!!!\n");
    }
-   
+
    delete g;
    return ret;
 }
@@ -508,7 +649,7 @@ bool lmgr_detect_deadlock()
    bool ret=false;
    if (!lmgr_is_active()) {
       return ret;
-   } 
+   }
 
    lmgr_p(&lmgr_global_mutex);
    {
@@ -529,7 +670,7 @@ bool lmgr_detect_deadlock()
 }
 
 /*
- * !!! WARNING !!! 
+ * !!! WARNING !!!
  * Use this function is used only after a fatal signal
  * We don't use locking to display the information
  */
@@ -574,8 +715,12 @@ void *check_deadlock(void *)
    while (!bmicrosleep(30, 0)) {
       pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old);
       if (lmgr_detect_deadlock()) {
+         /* If we have information about P()/V(), display them */
+         if (debug_flags & DEBUG_MUTEX_EVENT || chk_dbglvl(DBGLEVEL_EVENT)) {
+            debug_flags |= DEBUG_PRINT_EVENT;
+         }
          lmgr_dump();
-         ASSERT(0);
+         ASSERT2(0, "Lock deadlock");   /* Abort if we found a deadlock */
       }
       pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old);
       pthread_testcancel();
@@ -610,7 +755,7 @@ void create_lmgr_key()
       berrno be;
       Pmsg1(000, _("pthread key create failed: ERR=%s\n"),
             be.bstrerror(status));
-      ASSERT(0);
+      ASSERT2(0, "pthread_key_create failed");
    }
 
    lmgr_thread_t *n=NULL;
@@ -622,7 +767,7 @@ void create_lmgr_key()
          berrno be;
          Pmsg1(000, _("pthread_create failed: ERR=%s\n"),
                be.bstrerror(status));
-         ASSERT(0);
+         ASSERT2(0, "pthread_create failed");
       }
    }
 }
@@ -638,7 +783,7 @@ void lmgr_init_thread()
       berrno be;
       Pmsg1(000, _("pthread key create failed: ERR=%s\n"),
             be.bstrerror(status));
-      ASSERT(0);
+      ASSERT2(0, "pthread_once failed");
    }
    lmgr_thread_t *l = New(lmgr_thread_t());
    pthread_setspecific(lmgr_key, l);
@@ -666,7 +811,7 @@ void lmgr_cleanup_thread()
 void lmgr_cleanup_main()
 {
    dlist *temp;
-   
+
    if (!global_mgr) {
       return;
    }
@@ -683,7 +828,14 @@ void lmgr_cleanup_main()
    lmgr_v(&lmgr_global_mutex);
 }
 
-/* 
+void lmgr_add_event_p(const char *comment, intptr_t user_data, int32_t flags,
+                      const char *file, int32_t line)
+{
+   lmgr_thread_t *self = lmgr_get_thread_info();
+   self->add_event(comment, user_data, flags, file, line);
+}
+
+/*
  * Set the priority of the lmgr mutex object
  */
 void bthread_mutex_set_priority(bthread_mutex_t *m, int prio)
@@ -710,14 +862,14 @@ int pthread_mutex_destroy(bthread_mutex_t *m)
    return pthread_mutex_destroy(&m->mutex);
 }
 
-/* 
+/*
  * Replacement for pthread_kill (only with USE_LOCKMGR_SAFEKILL)
  */
-int bthread_kill(pthread_t thread, int sig, 
+int bthread_kill(pthread_t thread, int sig,
                  const char *file, int line)
 {
    bool thread_found_in_process=false;
-   
+
    /* We doesn't allow to send signal to ourself */
    ASSERT(!pthread_equal(thread, pthread_self()));
 
@@ -739,7 +891,7 @@ int bthread_kill(pthread_t thread, int sig,
    /* Sending a signal to non existing thread can create problem
     * so, we can stop here.
     */
-   ASSERT(thread_found_in_process == true);
+   ASSERT2(thread_found_in_process, "Wanted to pthread_kill non-existant thread");
 
    Dmsg3(100, "%s:%d send kill to existing thread %p\n", file, line, thread);
    return pthread_kill(thread, sig);
@@ -747,14 +899,14 @@ int bthread_kill(pthread_t thread, int sig,
 
 /*
  * Replacement for pthread_mutex_lock()
- * Returns always ok 
+ * Returns always ok
  */
 int bthread_mutex_lock_p(bthread_mutex_t *m, const char *file, int line)
 {
    lmgr_thread_t *self = lmgr_get_thread_info();
    self->pre_P(m, m->priority, file, line);
    lmgr_p(&m->mutex);
-   self->post_P();   
+   self->post_P();
    return 0;
 }
 
@@ -772,14 +924,14 @@ int bthread_mutex_unlock_p(bthread_mutex_t *m, const char *file, int line)
 
 /*
  * Replacement for pthread_mutex_lock() but with real pthread_mutex_t
- * Returns always ok 
+ * Returns always ok
  */
 int bthread_mutex_lock_p(pthread_mutex_t *m, const char *file, int line)
 {
    lmgr_thread_t *self = lmgr_get_thread_info();
    self->pre_P(m, 0, file, line);
    lmgr_p(m);
-   self->post_P();   
+   self->post_P();
    return 0;
 }
 
@@ -804,7 +956,7 @@ int bthread_cond_wait_p(pthread_cond_t *cond,
 {
    int ret;
    lmgr_thread_t *self = lmgr_get_thread_info();
-   self->do_V(m, file, line);   
+   self->do_V(m, file, line);
    ret = pthread_cond_wait(cond, m);
    self->pre_P(m, 0, file, line);
    self->post_P();
@@ -820,7 +972,7 @@ int bthread_cond_timedwait_p(pthread_cond_t *cond,
 {
    int ret;
    lmgr_thread_t *self = lmgr_get_thread_info();
-   self->do_V(m, file, line);   
+   self->do_V(m, file, line);
    ret = pthread_cond_timedwait(cond, m, abstime);
    self->pre_P(m, 0, file, line);
    self->post_P();
@@ -835,7 +987,7 @@ int bthread_cond_wait_p(pthread_cond_t *cond,
 {
    int ret;
    lmgr_thread_t *self = lmgr_get_thread_info();
-   self->do_V(m, file, line);   
+   self->do_V(m, file, line);
    ret = pthread_cond_wait(cond, &m->mutex);
    self->pre_P(m, m->priority, file, line);
    self->post_P();
@@ -851,14 +1003,14 @@ int bthread_cond_timedwait_p(pthread_cond_t *cond,
 {
    int ret;
    lmgr_thread_t *self = lmgr_get_thread_info();
-   self->do_V(m, file, line);   
+   self->do_V(m, file, line);
    ret = pthread_cond_timedwait(cond, &m->mutex, abstime);
    self->pre_P(m, m->priority, file, line);
    self->post_P();
    return ret;
 }
 
-/*  Test if this mutex is locked by the current thread 
+/*  Test if this mutex is locked by the current thread
  *  returns:
  *     0 - unlocked
  *     1 - locked by the current thread
@@ -923,7 +1075,7 @@ typedef struct {
    void *arg;
 } lmgr_thread_arg_t;
 
-extern "C" 
+extern "C"
 void *lmgr_thread_launcher(void *x)
 {
    void *ret=NULL;
@@ -946,7 +1098,7 @@ int lmgr_thread_create(pthread_t *thread,
                        void *(*start_routine)(void*), void *arg)
 {
    /* lmgr should be active (lmgr_init_thread() call in main()) */
-   ASSERT(lmgr_is_active());
+   ASSERT2(lmgr_is_active(), "Lock manager not active");
    /* Will be freed by the child */
    lmgr_thread_arg_t *a = (lmgr_thread_arg_t*) malloc(sizeof(lmgr_thread_arg_t));
    a->start_routine = start_routine;
@@ -957,7 +1109,7 @@ int lmgr_thread_create(pthread_t *thread,
 #else  /* _USE_LOCKMGR */
 
 /*
- * !!! WARNING !!! 
+ * !!! WARNING !!!
  * Use this function is used only after a fatal signal
  * We don't use locking to display information
  */
@@ -993,7 +1145,7 @@ void *self_lock(void *temp)
    P(mutex1);
    P(mutex1);
    V(mutex1);
-   
+
    return NULL;
 }
 
@@ -1039,7 +1191,7 @@ void *th2(void *temp)
 {
    P(mutex2);
    P(mutex1);
-   
+
    lmgr_dump();
 
    sleep(10);
@@ -1055,7 +1207,7 @@ void *th1(void *temp)
    P(mutex1);
    sleep(2);
    P(mutex2);
-   
+
    lmgr_dump();
 
    sleep(10);
@@ -1097,10 +1249,34 @@ void *th_prio(void *a) {
    char buf[512];
    bstrncpy(buf, my_prog, sizeof(buf));
    bstrncat(buf, " priority", sizeof(buf));
-   int ret = system(buf);
+   intptr_t ret = system(buf);
    return (void*) ret;
 }
 
+void *th_event1(void *a) {
+   for (int i=0; i < 10000; i++) {
+      if ((i % 7) == 0) {
+         lmgr_add_event_flag("strdup test", i, LMGR_EVENT_DUP);
+      } else {
+         lmgr_add_event("My comment", i);
+      }
+   }
+   sleep(5);
+   return NULL;
+}
+
+void *th_event2(void *a) {
+   for (int i=0; i < 10000; i++) {
+      if ((i % 2) == 0) {
+         lmgr_add_event_flag(bstrdup("free test"), i, LMGR_EVENT_FREE);
+      } else {
+         lmgr_add_event("My comment", i);
+      }
+   }
+   sleep(5);
+   return NULL;
+}
+
 int err=0;
 int nb=0;
 void _ok(const char *file, int l, const char *op, int value, const char *label)
@@ -1135,7 +1311,7 @@ int report()
    return err>0;
 }
 
-/* 
+/*
  * TODO:
  *  - Must detect multiple lock
  *  - lock/unlock in wrong order
@@ -1145,9 +1321,10 @@ int main(int argc, char **argv)
 {
    void *ret=NULL;
    lmgr_thread_t *self;
-   pthread_t id1, id2, id3, tab[200];
+   pthread_t id1, id2, id3, id4, id5, tab[200];
    bthread_mutex_t bmutex1;
    pthread_mutex_t pmutex2;
+   debug_level = 10;
    my_prog = argv[0];
 
    use_undertaker = false;
@@ -1194,7 +1371,7 @@ int main(int argc, char **argv)
    nok(lmgr_detect_deadlock(), "Check for multiple lock");
    V(mutex1);
    pthread_join(id1, NULL);
-   pthread_join(id2, NULL);   
+   pthread_join(id2, NULL);
    pthread_join(id3, NULL);
 
 
@@ -1212,8 +1389,8 @@ int main(int argc, char **argv)
    nok(lmgr_detect_deadlock(), "Check for multiple rwlock");
 
    pthread_join(id1, NULL);
-   pthread_join(id2, NULL);   
-   pthread_join(id3, NULL);   
+   pthread_join(id2, NULL);
+   pthread_join(id3, NULL);
 
    rwl_writelock(&wr);
    P(mutex1);
@@ -1244,9 +1421,9 @@ int main(int argc, char **argv)
    P(mutex4);
    P(mutex5);
    P(mutex6);
-   ok(lmgr_mutex_is_locked(&mutex6) == 1, "Check if mutex is locked"); 
+   ok(lmgr_mutex_is_locked(&mutex6) == 1, "Check if mutex is locked");
    V(mutex6);
-   ok(lmgr_mutex_is_locked(&mutex6) == 0, "Check if mutex is locked"); 
+   ok(lmgr_mutex_is_locked(&mutex6) == 0, "Check if mutex is locked");
    V(mutex5);
    V(mutex4);
 
@@ -1297,7 +1474,24 @@ int main(int argc, char **argv)
    V(mutex_p1);
    V(mutex_p2);
 
-//   lmgr_dump();
+   for (int i=0; i < 10000; i++) {
+      if ((i % 7) == 0) {
+         lmgr_add_event_flag("xxxxxxxxxxxxxxxx strdup test xxxxxxxxxxxxxxxx", i, LMGR_EVENT_DUP);
+      } else {
+         lmgr_add_event("My comment", i);
+      }
+   }
+
+   pthread_create(&id4, NULL, th_event1, NULL);
+   pthread_create(&id5, NULL, th_event2, NULL);
+
+   sleep(2);
+
+   lmgr_dump();
+
+   pthread_join(id4, NULL);
+   pthread_join(id5, NULL);
+
 //
 //   pthread_create(&id3, NULL, th3, NULL);
 //
diff --git a/src/lib/lockmgr.h b/src/lib/lockmgr.h
index 17dd2a9..6844eeb 100644
--- a/src/lib/lockmgr.h
+++ b/src/lib/lockmgr.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2008-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2008-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef _LOCKMGR_H
@@ -46,7 +34,7 @@ typedef struct bthread_mutex_t
    int priority;
 } bthread_mutex_t;
 
-/* 
+/*
  * We decide that a thread won't lock more than LMGR_MAX_LOCK at the same time
  */
 #define LMGR_MAX_LOCK 32
@@ -71,7 +59,7 @@ int bthread_cond_timedwait_p(pthread_cond_t *cond,
                              const char *file="*unknown*", int line=0);
 
 /* Replacement of pthread_mutex_lock()  but with real pthread_mutex_t */
-int bthread_mutex_lock_p(pthread_mutex_t *m, 
+int bthread_mutex_lock_p(pthread_mutex_t *m,
                          const char *file="*unknown*", int line=0);
 
 /* Replacement for pthread_mutex_unlock() but with real pthread_mutex_t */
@@ -79,11 +67,11 @@ int bthread_mutex_unlock_p(pthread_mutex_t *m,
                            const char *file="*unknown*", int line=0);
 
 /* Replacement of pthread_mutex_lock() */
-int bthread_mutex_lock_p(bthread_mutex_t *m, 
+int bthread_mutex_lock_p(bthread_mutex_t *m,
                          const char *file="*unknown*", int line=0);
 
 /* Replacement of pthread_mutex_unlock() */
-int bthread_mutex_unlock_p(bthread_mutex_t *m, 
+int bthread_mutex_unlock_p(bthread_mutex_t *m,
                            const char *file="*unknown*", int line=0);
 
 /*  Test if this mutex is locked by the current thread
@@ -91,8 +79,8 @@ int bthread_mutex_unlock_p(bthread_mutex_t *m,
  *     1 - locked by the current thread
  */
 int lmgr_mutex_is_locked(void *m);
-                   
-/* 
+
+/*
  * Use them when you want use your lock yourself (ie rwlock)
  */
 
@@ -100,15 +88,15 @@ int lmgr_mutex_is_locked(void *m);
 void lmgr_pre_lock(void *m, int prio=0,
                    const char *file="*unknown*", int line=0);
 
-/* Call after getting it */ 
+/* Call after getting it */
 void lmgr_post_lock();
 
 /* Same as pre+post lock */
-void lmgr_do_lock(void *m, int prio=0, 
+void lmgr_do_lock(void *m, int prio=0,
                   const char *file="*unknown*", int line=0);
 
 /* Call just before releasing the lock */
-void lmgr_do_unlock(void *m); 
+void lmgr_do_unlock(void *m);
 
 /* We use C++ mangling to make integration eaysier */
 int pthread_mutex_init(bthread_mutex_t *m, const pthread_mutexattr_t *attr);
@@ -128,7 +116,7 @@ void lmgr_init_thread();
 void lmgr_cleanup_thread();
 
 /*
- * Call this at the end of the program, it will release the 
+ * Call this at the end of the program, it will release the
  * global lock manager
  */
 void lmgr_cleanup_main();
@@ -143,6 +131,19 @@ void lmgr_dump();
  */
 bool lmgr_detect_deadlock();
 
+/* Bit flags */
+#define LMGR_EVENT_NONE    0
+#define LMGR_EVENT_DUP     1       /* use strdup() to copy the comment (will set FREE) */
+#define LMGR_EVENT_FREE    2       /* use free() when overwriting/deleting the comment */
+#define LMGR_EVENT_INVALID 4       /* Used to mark the record invalid */
+
+/*
+ * Add event to the thread event list
+ */
+void lmgr_add_event_p(const char *comment, intptr_t user_data, int32_t flags, const char *file, int32_t line);
+#define lmgr_add_event(c, u) lmgr_add_event_p(c, u, 0, __FILE__, __LINE__)
+#define lmgr_add_event_flag(c, u, f) lmgr_add_event_p(c, u, (f), __FILE__, __LINE__)
+
 /*
  * Search a deadlock after a fatal signal
  * no lock are granted, so the program must be
@@ -158,10 +159,10 @@ int lmgr_thread_create(pthread_t *thread,
                        const pthread_attr_t *attr,
                        void *(*start_routine)(void*), void *arg);
 
-/* 
+/*
  * Can use SAFEKILL to check if the argument is a valid threadid
  */
-int bthread_kill(pthread_t thread, int sig, 
+int bthread_kill(pthread_t thread, int sig,
                  const char *file="*unknown*", int line=0);
 
 #define BTHREAD_MUTEX_NO_PRIORITY      {PTHREAD_MUTEX_INITIALIZER, 0}
@@ -179,9 +180,11 @@ int bthread_kill(pthread_t thread, int sig,
 #define bthread_cond_wait(x,y)     bthread_cond_wait_p(x,y, __FILE__, __LINE__)
 #define bthread_cond_timedwait(x,y,z) bthread_cond_timedwait_p(x,y,z, __FILE__, __LINE__)
 
-/* 
+/*
  * Define _LOCKMGR_COMPLIANT to use real pthread functions
  */
+#define real_P(x) lmgr_p(&(x))
+#define real_V(x) lmgr_v(&(x))
 
 #ifdef _LOCKMGR_COMPLIANT
 # define P(x) lmgr_p(&(x))
@@ -203,6 +206,8 @@ int bthread_kill(pthread_t thread, int sig,
 #else   /* _USE_LOCKMGR */
 
 # define lmgr_detect_deadloc()
+# define lmgr_add_event_p(c, u, f, l)
+# define lmgr_add_event(c, u)
 # define lmgr_dump()
 # define lmgr_init_thread()
 # define lmgr_cleanup_thread()
@@ -225,6 +230,7 @@ int bthread_kill(pthread_t thread, int sig,
 # define BTHREAD_MUTEX_NO_PRIORITY      PTHREAD_MUTEX_INITIALIZER
 # define BTHREAD_MUTEX_INITIALIZER      PTHREAD_MUTEX_INITIALIZER
 # define lmgr_mutex_is_locked(m)        (1)
+# define bthread_cond_wait_p(w, x, y, z) pthread_cond_wait(w,x)
 
 #endif  /* _USE_LOCKMGR */
 
diff --git a/src/lib/md5.c b/src/lib/md5.c
index ba7eff1..421b7a6 100644
--- a/src/lib/md5.c
+++ b/src/lib/md5.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * This code implements the MD5 message-digest algorithm.
@@ -132,7 +120,7 @@ void MD5Update(struct MD5Context *ctx, unsigned char *buf, unsigned len)
 }
 
 /*
- * Final wrapup - pad to 64-byte boundary with the bit pattern 
+ * Final wrapup - pad to 64-byte boundary with the bit pattern
  * 1 0* (64-bit count of bits processed, MSB-first)
  */
 void MD5Final(unsigned char digest[16], struct MD5Context *ctx)
@@ -173,7 +161,7 @@ void MD5Final(unsigned char digest[16], struct MD5Context *ctx)
     MD5Transform(ctx->buf, (uint32_t *) ctx->in);
     byteReverse((unsigned char *) ctx->buf, 4);
     memcpy(digest, ctx->buf, 16);
-    memset(ctx, 0, sizeof(ctx));        /* In case it's sensitive */
+    memset(ctx, 0, sizeof(*ctx));        /* In case it's sensitive */
 }
 
 
@@ -298,7 +286,7 @@ static bool decode = false;
  * Reads a single ASCII file and prints the HEX md5 sum.
  */
 #include <stdio.h>
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
    FILE *fd;
    MD5Context ctx;
@@ -309,7 +297,7 @@ int main(int argc, char *argv[])
    while ((ch = getopt(argc, argv, "d?")) != -1) {
       switch (ch) {
       case 'd':
-         decode = true;                
+         decode = true;
          break;
       case '?':
       default:
@@ -339,10 +327,10 @@ int main(int argc, char *argv[])
    }
    MD5Final((unsigned char *)signature, &ctx);
    for (int i=0; i < 16; i++) {
-      printf("%02x", signature[i]& 0xFF); 
+      printf("%02x", signature[i]& 0xFF);
    }
 #ifdef OUTPUT_BASE64
-   char MD5buf[40];                 /* 24 should do */ 
+   char MD5buf[40];                 /* 24 should do */
    memset(MD5buf, 0, 40);
    bin_to_base64(MD5buf, sizeof(MD5buf), (char *)signature, 16, true); /* encode 16 bytes */
    printf("  %s", MD5buf);
diff --git a/src/lib/md5.h b/src/lib/md5.h
index a4cb81b..3301481 100644
--- a/src/lib/md5.h
+++ b/src/lib/md5.h
@@ -8,29 +8,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef __BMD5_H
diff --git a/src/lib/mem_pool.c b/src/lib/mem_pool.c
index 566a346..84fec5c 100644
--- a/src/lib/mem_pool.c
+++ b/src/lib/mem_pool.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula memory pool routines.
@@ -47,6 +35,7 @@
  */
 
 #include "bacula.h"
+#define dbglvl DT_MEMORY|800
 
 #ifdef HAVE_MALLOC_TRIM
 extern "C" int malloc_trim (size_t pad);
@@ -120,7 +109,7 @@ POOLMEM *sm_get_pool_memory(const char *fname, int lineno, int pool)
          pool_ctl[pool].max_used = pool_ctl[pool].in_use;
       }
       V(mutex);
-      Dmsg3(1800, "sm_get_pool_memory reuse %p to %s:%d\n", buf, fname, lineno);
+      Dmsg3(dbglvl, "sm_get_pool_memory reuse %p to %s:%d\n", buf, fname, lineno);
       sm_new_owner(fname, lineno, (char *)buf);
       return (POOLMEM *)((char *)buf+HEAD_SIZE);
    }
@@ -136,7 +125,7 @@ POOLMEM *sm_get_pool_memory(const char *fname, int lineno, int pool)
       pool_ctl[pool].max_used = pool_ctl[pool].in_use;
    }
    V(mutex);
-   Dmsg3(1800, "sm_get_pool_memory give %p to %s:%d\n", buf, fname, lineno);
+   Dmsg3(dbglvl, "sm_get_pool_memory give %p to %s:%d\n", buf, fname, lineno);
    return (POOLMEM *)((char *)buf+HEAD_SIZE);
 }
 
@@ -217,13 +206,15 @@ void sm_free_pool_memory(const char *fname, int lineno, POOLMEM *obuf)
    if (pool == 0) {
       free((char *)buf);              /* free nonpooled memory */
    } else {                           /* otherwise link it to the free pool chain */
-#ifdef DEBUG
+
+   /* Disabled because it hangs in #5507 */
+#ifdef xDEBUG
       struct abufhead *next;
       /* Don't let him free the same buffer twice */
       for (next=pool_ctl[pool].free_buf; next; next=next->next) {
          if (next == buf) {
-            Dmsg4(1800, "free_pool_memory %p pool=%d from %s:%d\n", buf, pool, fname, lineno);
-            Dmsg4(1800, "bad free_pool_memory %p pool=%d from %s:%d\n", buf, pool, fname, lineno);
+            Dmsg4(dbglvl, "free_pool_memory %p pool=%d from %s:%d\n", buf, pool, fname, lineno);
+            Dmsg4(dbglvl, "bad free_pool_memory %p pool=%d from %s:%d\n", buf, pool, fname, lineno);
             V(mutex);                 /* unblock the pool */
             ASSERT(next != buf);      /* attempt to free twice */
          }
@@ -232,7 +223,7 @@ void sm_free_pool_memory(const char *fname, int lineno, POOLMEM *obuf)
       buf->next = pool_ctl[pool].free_buf;
       pool_ctl[pool].free_buf = buf;
    }
-   Dmsg4(1800, "free_pool_memory %p pool=%d from %s:%d\n", buf, pool, fname, lineno);
+   Dmsg4(dbglvl, "free_pool_memory %p pool=%d from %s:%d\n", buf, pool, fname, lineno);
    V(mutex);
 }
 
@@ -356,7 +347,7 @@ void free_pool_memory(POOLMEM *obuf)
       buf->next = pool_ctl[pool].free_buf;
       pool_ctl[pool].free_buf = buf;
    }
-   Dmsg2(1800, "free_pool_memory %p pool=%d\n", buf, pool);
+   Dmsg2(dbglvl, "free_pool_memory %p pool=%d\n", buf, pool);
    V(mutex);
 }
 #endif /* SMARTALLOC */
@@ -410,8 +401,8 @@ void close_memory_pool()
       }
       pool_ctl[i].free_buf = NULL;
    }
-   Dmsg2(001, "Freed mem_pool count=%d size=%s\n", count, edit_uint64_with_commas(bytes, ed1));
-   if (debug_level >= 1) {
+   Dmsg2(DT_MEMORY|001, "Freed mem_pool count=%d size=%s\n", count, edit_uint64_with_commas(bytes, ed1));
+   if (chk_dbglvl(DT_MEMORY|1)) {
       print_memory_pool_stats();
    }
    V(mutex);
diff --git a/src/lib/mem_pool.h b/src/lib/mem_pool.h
index c1a2f4d..cc74bbe 100644
--- a/src/lib/mem_pool.h
+++ b/src/lib/mem_pool.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Memory Pool prototypes
diff --git a/src/lib/message.c b/src/lib/message.c
index 3ae4d37..bc5da5c 100644
--- a/src/lib/message.c
+++ b/src/lib/message.c
@@ -1,39 +1,27 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula message handling routines
  *
  * NOTE: don't use any Jmsg or Qmsg calls within this file,
- *   except in q_msg or j_msg (setup routines), 
+ *   except in q_msg or j_msg (setup routines),
  *   otherwise you may get into recursive calls if there are
  *   errors, and that can lead to looping or deadlocks.
  *
- *   Kern Sibbald, April 2000
+ *   Written by Kern Sibbald, April 2000
  *
  */
 
@@ -49,24 +37,28 @@ sql_escape_func p_sql_escape = NULL;
  *  This is where we define "Globals" because all the
  *    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 */
-bool prt_kaboom = false;              /* Print kaboom output */
-utime_t daemon_start_time = 0;        /* Daemon start time */
+const char *working_directory = NULL; /* working directory path stored here */
+const char *assert_msg = NULL;        /* ASSERT2 error message */
 const char *version = VERSION " (" BDATE ")";
 const char *dist_name = DISTNAME " " DISTVER;
-int beef = BEEF;
-char my_name[30] = {0};               /* daemon name is stored here */
-char host_name[50] = {0};             /* host machine name */
 char *exepath = (char *)NULL;
 char *exename = (char *)NULL;
-int console_msg_pending = false;
+char *catalog_db = NULL;              /* database type */
 char con_fname[500];                  /* Console filename */
+char my_name[30] = {0};               /* daemon name is stored here */
+char host_name[50] = {0};             /* host machine name */
+char fail_time[30] = {0};             /* Time of failure */
+int verbose = 0;                      /* increase User messages */
+int64_t debug_level = 0;              /* debug level */
+int32_t debug_flags = 0;              /* debug flags */
+int beef = BEEF;
+int console_msg_pending = false;
+utime_t daemon_start_time = 0;        /* Daemon start time */
 FILE *con_fd = NULL;                  /* Console file descriptor */
 brwlock_t con_lock;                   /* Console lock structure */
+bool dbg_timestamp = false;           /* print timestamp in debug output */
+bool prt_kaboom = false;              /* Print kaboom output */
+job_code_callback_t message_job_code_callback = NULL;   /* Job code callback. Only used by director. */
 
 /* Forward referenced functions */
 
@@ -81,7 +73,6 @@ void create_jcr_key();
 /* 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 */
-static char *catalog_db = NULL;       /* database type */
 static void (*message_callback)(int type, char *msg) = NULL;
 static FILE *trace_fd = NULL;
 #if defined(HAVE_WIN32)
@@ -98,7 +89,7 @@ const char *distver = DISTVER;
 
 /*
  * Walk back in a string from end looking for a
- *  path separator.  
+ *  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.
@@ -106,7 +97,7 @@ const char *distver = DISTVER;
 static const char *bstrrpath(const char *start, const char *end)
 {
    while ( end > start ) {
-      end--;   
+      end--;
       if (IsPathSeparator(*end)) {
          break;
       }
@@ -114,6 +105,16 @@ static const char *bstrrpath(const char *start, const char *end)
    return end;
 }
 
+/*
+ * Returns: 0 if not configured
+ *         -1 on error
+ *          1 OK
+ */
+int generate_daemon_event(JCR *jcr, const char *event)
+{
+   return 0;
+}
+
 /* Some message class methods */
 void MSGS::lock()
 {
@@ -174,7 +175,50 @@ static void delivery_error(const char *fmt,...)
    fflush(stdout);
    syslog(LOG_DAEMON|LOG_ERR, "%s", pool_buf);
    free_memory(pool_buf);
-}                 
+}
+
+void set_debug_flags(char *options)
+{
+   for (char *p = options; *p ; p++) {
+      switch(*p) {
+      case '0':                 /* clear flags */
+         debug_flags = 0;
+         break;
+
+      case 'i':                 /* used by FD */
+      case 'd':                 /* used by FD */
+         break;
+
+      case 't':
+         dbg_timestamp = true;
+         break;
+
+      case 'T':
+         dbg_timestamp = false;
+         break;
+
+      case 'c':
+         /* truncate the trace file */
+         if (trace && trace_fd) {
+            ftruncate(fileno(trace_fd), 0);
+         }
+         break;
+
+      case 'l':
+         /* Turn on/off add_events for P()/V() */
+         debug_flags |= DEBUG_MUTEX_EVENT;
+         break;
+
+      case 'p':
+         /* Display event stack during lockdump */
+         debug_flags |= DEBUG_PRINT_EVENT;
+         break;
+
+      default:
+         Dmsg1(000, "Unknown debug flag %c\n", *p);
+      }
+   }
+}
 
 void register_message_callback(void msg_callback(int type, char *msg))
 {
@@ -246,6 +290,16 @@ void my_name_is(int argc, char *argv[], const char *name)
    }
 }
 
+/* Set special ASSERT2 message where debugger can find it */
+void
+set_assert_msg(const char *file, int line, const char *msg)
+{
+   char buf[2000];
+   bsnprintf(buf, sizeof(buf), "ASSERT at %s:%d-%u ERR=%s",
+      get_basename(file), line, get_jobid_from_tsd(), msg);
+   assert_msg = bstrdup(buf);
+}
+
 void
 set_db_type(const char *name)
 {
@@ -264,7 +318,7 @@ set_db_type(const char *name)
  *   non-NULL     -> initialize jcr using Message resource
  */
 void
-init_msg(JCR *jcr, MSGS *msg)
+init_msg(JCR *jcr, MSGS *msg, job_code_callback_t job_code_callback)
 {
    DEST *d, *dnew, *temp_chain = NULL;
    int i;
@@ -277,6 +331,8 @@ init_msg(JCR *jcr, MSGS *msg)
       set_jcr_in_tsd(INVALID_JCR);
    }
 
+   message_job_code_callback = job_code_callback;
+
 #if !defined(HAVE_WIN32)
    /*
     * Make sure we have fd's 0, 1, 2 open
@@ -345,7 +401,6 @@ init_msg(JCR *jcr, MSGS *msg)
    }
 
    Dmsg2(250, "Copy message resource %p to %p\n", msg, temp_chain);
-
 }
 
 /* Initialize so that the console (User Agent) can
@@ -470,7 +525,7 @@ static BPIPE *open_mail_pipe(JCR *jcr, POOLMEM *&cmd, DEST *d)
    BPIPE *bpipe;
 
    if (d->mail_cmd) {
-      cmd = edit_job_codes(jcr, cmd, d->mail_cmd, d->where);
+      cmd = edit_job_codes(jcr, cmd, d->mail_cmd, d->where, message_job_code_callback);
    } else {
       Mmsg(cmd, "/usr/lib/sendmail -F Bacula %s", d->where);
    }
@@ -613,13 +668,13 @@ void close_msg(JCR *jcr)
             }
             free_memory(line);
 rem_temp_file:
-            /* Remove temp file */
+            /* Remove temp mail file */
             if (d->fd) {
-               fclose(d->fd);
-               d->fd = NULL;
+              fclose(d->fd);
+              d->fd = NULL;
             }
+            /* Exclude spaces in mail_filename */
             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;
@@ -655,9 +710,11 @@ void free_msgs_res(MSGS *msgs)
    for (d=msgs->dest_chain; d; ) {
       if (d->where) {
          free(d->where);
+         d->where = NULL;
       }
       if (d->mail_cmd) {
          free(d->mail_cmd);
+         d->mail_cmd = NULL;
       }
       old = d;                        /* save pointer to release */
       d = d->next;                    /* point to next buffer */
@@ -705,7 +762,7 @@ void term_msg()
    term_last_jobs_list();
 }
 
-static bool open_dest_file(JCR *jcr, DEST *d, const char *mode) 
+static bool open_dest_file(JCR *jcr, DEST *d, const char *mode)
 {
    d->fd = fopen(d->where, mode);
    if (!d->fd) {
@@ -824,7 +881,7 @@ void dispatch_message(JCR *jcr, int type, utime_t mtime, char *msg)
                 if (p_sql_query && p_sql_escape) {
                    POOLMEM *cmd = get_pool_memory(PM_MESSAGE);
                    POOLMEM *esc_msg = get_pool_memory(PM_MESSAGE);
-                   
+
                    int len = strlen(msg) + 1;
                    esc_msg = check_pool_memory_size(esc_msg, len * 2 + 1);
                    if (p_sql_escape(jcr, jcr->db, esc_msg, msg, len)) {
@@ -837,7 +894,7 @@ void dispatch_message(JCR *jcr, int type, utime_t mtime, char *msg)
                    } else {
                       delivery_error(_("Msg delivery error: Unable to store data in database.\n"));
                    }
-                   
+
                    free_pool_memory(cmd);
                    free_pool_memory(esc_msg);
                 }
@@ -985,15 +1042,15 @@ send_to_file:
 
 /*********************************************************************
  *
- *  This subroutine returns the filename portion of a path.  
- *  It is used because some compilers set __FILE__ 
+ *  This subroutine returns the filename portion of a path.
+ *  It is used because some compilers set __FILE__
  *  to the full path.  Try to return base + next higher path.
  */
 
 const char *get_basename(const char *pathname)
 {
    const char *basename;
-   
+
    if ((basename = bstrrpath(pathname, pathname+strlen(pathname))) == pathname) {
       /* empty */
    } else if ((basename = bstrrpath(pathname, basename-1)) == pathname) {
@@ -1005,7 +1062,7 @@ const char *get_basename(const char *pathname)
 }
 
 /*
- * print or write output to trace file 
+ * print or write output to trace file
  */
 static void pt_out(char *buf)
 {
@@ -1044,7 +1101,7 @@ static void pt_out(char *buf)
  *  are not printed.
  */
 void
-d_msg(const char *file, int line, int level, const char *fmt,...)
+d_msg(const char *file, int line, int64_t level, const char *fmt,...)
 {
     char      buf[5000];
     int       len;
@@ -1057,7 +1114,7 @@ d_msg(const char *file, int line, int level, const char *fmt,...)
        level = -level;
     }
 
-    if (level <= debug_level) {
+    if (chk_dbglvl(level)) {
        if (dbg_timestamp) {
           mtime = time(NULL);
           bstrftimes(buf, sizeof(buf), mtime);
@@ -1066,10 +1123,10 @@ d_msg(const char *file, int line, int level, const char *fmt,...)
           buf[len] = 0;
           pt_out(buf);
        }
-    
+
 #ifdef FULL_LOCATION
        if (details) {
-          len = bsnprintf(buf, sizeof(buf), "%s: %s:%d-%u ", 
+          len = bsnprintf(buf, sizeof(buf), "%s: %s:%d-%u ",
                 my_name, get_basename(file), line, get_jobid_from_tsd());
        } else {
           len = 0;
@@ -1140,7 +1197,7 @@ 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-%u ", 
+       len = bsnprintf(buf, sizeof(buf), "%s: %s:%d-%u ",
              my_name, get_basename(file), line, get_jobid_from_tsd());
     } else {
        len = 0;
@@ -1153,7 +1210,7 @@ p_msg(const char *file, int line, int level, const char *fmt,...)
     bvsnprintf(buf+len, sizeof(buf)-len, (char *)fmt, arg_ptr);
     va_end(arg_ptr);
 
-    pt_out(buf);     
+    pt_out(buf);
 }
 
 
@@ -1168,7 +1225,7 @@ p_msg(const char *file, int line, int level, const char *fmt,...)
  *  are not printed.
  */
 void
-t_msg(const char *file, int line, int level, const char *fmt,...)
+t_msg(const char *file, int line, int64_t level, const char *fmt,...)
 {
     char      buf[5000];
     int       len;
@@ -1180,7 +1237,7 @@ t_msg(const char *file, int line, int level, const char *fmt,...)
        level = -level;
     }
 
-    if (level <= debug_level) {
+    if (chk_dbglvl(level)) {
        if (!trace_fd) {
           bsnprintf(buf, sizeof(buf), "%s/%s.trace", working_directory ? working_directory : ".", my_name);
           trace_fd = fopen(buf, "a+b");
@@ -1319,7 +1376,7 @@ Jmsg(JCR *jcr, int type, utime_t mtime, const char *fmt,...)
     if (jcr) {
        if (!jcr->dequeuing_msgs) { /* Avoid recursion */
           /* Dequeue messages to keep the original order  */
-          dequeue_messages(jcr); 
+          dequeue_messages(jcr);
        }
        msgs = jcr->jcr_msgs;
        JobId = jcr->JobId;
@@ -1365,7 +1422,7 @@ Jmsg(JCR *jcr, int type, utime_t mtime, const char *fmt,...)
        }
        break;
     case M_SECURITY:
-       len = bsnprintf(rbuf, sizeof(rbuf), _("%s JobId %u: Security violation: "), 
+       len = bsnprintf(rbuf, sizeof(rbuf), _("%s JobId %u: Security violation: "),
                my_name, JobId);
        break;
     default:
@@ -1624,3 +1681,105 @@ void q_msg(const char *file, int line, JCR *jcr, int type, utime_t mtime, const
    Qmsg(jcr, type, mtime, "%s", pool_buf);
    free_memory(pool_buf);
 }
+
+
+/* not all in alphabetical order.  New commands are added after existing commands with similar letters
+   to prevent breakage of existing user scripts.  */
+struct debugtags {
+   const char *tag;             /* command */
+   int64_t     bit;             /* bit to set */
+   const char *help;            /* main purpose */
+};
+
+/* setdebug tag=all,-plugin */
+static struct debugtags debug_tags[] = {
+ { NT_("lock"),        DT_LOCK,     _("Debug lock information")},
+ { NT_("network"),     DT_NETWORK,  _("Debug network information")},
+ { NT_("plugin"),      DT_PLUGIN,   _("Debug plugin information")},
+ { NT_("volume"),      DT_VOLUME,   _("Debug volume information")},
+ { NT_("sql"),         DT_SQL,      _("Debug SQL queries")},
+ { NT_("bvfs"),        DT_BVFS,     _("Debug BVFS queries")},
+ { NT_("memory"),      DT_MEMORY,   _("Debug memory allocation")},
+ { NT_("scheduler"),   DT_SCHEDULER,_("Debug scheduler information")},
+ { NT_("protocol"),    DT_PROTOCOL, _("Debug protocol information")},
+ { NT_("all"),         DT_ALL,      _("Debug all information")},
+ { NULL,               0,   NULL}
+};
+
+/* Allow +-, */
+bool debug_find_tag(const char *tagname, bool add, int64_t *current_level)
+{
+   Dmsg3(010, "add=%d tag=%s level=%lld\n", add, tagname, *current_level);
+   if (!*tagname) {
+      /* Nothing in the buffer */
+      return true;
+   }
+   for (int i=0; debug_tags[i].tag ; i++) {
+      if (strcasecmp(debug_tags[i].tag, tagname) == 0) {
+         if (add) {
+            *current_level |= debug_tags[i].bit;
+         } else {
+            *current_level &= ~(debug_tags[i].bit);
+         }
+         return true;
+      }
+   }
+   return false;
+}
+
+bool debug_parse_tags(const char *options, int64_t *current_level)
+{
+   bool operation;              /* + => true, - false */
+   char *p, *t, tag[256];
+   int max = sizeof(tag) - 1;
+   bool ret=true;
+   int64_t level= *current_level;
+
+   t = tag;
+   *tag = 0;
+   operation = true;            /* add by default */
+
+   if (!options) {
+      Dmsg0(100, "No options for tags\n");
+      return false;
+   }
+
+   for (p = (char *)options; *p ; p++) {
+      if (*p == ',' || *p == '+' || *p == '-' || *p == '!') {
+         /* finish tag keyword */
+         *t = 0;
+         /* handle tag */
+         ret &= debug_find_tag(tag, operation, &level);
+
+         if (*p == ',') {
+            /* reset tag */
+            t = tag;
+            *tag = 0;
+            operation = true;
+
+         } else {
+            /* reset tag */
+            t = tag;
+            *tag = 0;
+            operation = (*p == '+');
+         }
+
+      } else if (isalpha(*p) && (t - tag) < max) {
+         *t++ = *p;
+
+      } else {                  /* not isalpha or too long */
+         Dmsg1(010, "invalid %c\n", *p);
+         return false;
+      }
+   }
+
+   /* At the end, finish the string and look it */
+   *t = 0;
+   if (t > tag) {               /* something found */
+      /* handle tag */
+      ret &= debug_find_tag(tag, operation, &level);
+   }
+
+   *current_level = level;
+   return ret;
+}
diff --git a/src/lib/message.h b/src/lib/message.h
index fd6141e..382606f 100644
--- a/src/lib/message.h
+++ b/src/lib/message.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Define Message Types for Bacula
@@ -139,12 +127,44 @@ struct MQUEUE_ITEM {
    char msg[1];
 };
 
- 
-void d_msg(const char *file, int line, int level, const char *fmt,...);
-void e_msg(const char *file, int line, int type, int level, const char *fmt,...);
-void Jmsg(JCR *jcr, int type, utime_t mtime, const char *fmt,...);
-void Qmsg(JCR *jcr, int type, utime_t mtime, const char *fmt,...);
+/* Debug options */
+#define DEBUG_CLEAR_FLAGS           /* 0    clear debug_flags */
+#define DEBUG_NO_WIN32_WRITE_ERROR  /* i    continue even after win32 errors */
+#define DEBUG_WIN32DECOMP           /* d */
+#define DEBUG_DBG_TIMESTAMP         /* t    turn on timestamp in trace file */
+#define DEBUG_DBG_NO_TIMESTAMP      /* T    turn off timestamp in trace file */
+#define DEBUG_TRUNCATE_TRACE        /* c    clear trace file if opened */
+
+/* Bits (1, 2, 4, ...) for debug_flags used by set_debug_flags() */
+#define DEBUG_MUTEX_EVENT           (1 << 0)    /* l */
+#define DEBUG_PRINT_EVENT           (1 << 1)    /* p */
+
+/* Tags that can be used with the setdebug command
+ * We can extend this list to use 64bit
+ * When adding new ones, keep existing one
+ * Corresponding strings are defined in messages.c (debugtags)
+ */
+#define    DT_LOCK       (1<<30)                /* lock    */
+#define    DT_NETWORK    (1<<29)                /* network */
+#define    DT_PLUGIN     (1<<28)                /* plugin  */
+#define    DT_VOLUME     (1<<27)                /* volume  */
+#define    DT_SQL        (1<<26)                /* sql     */
+#define    DT_BVFS       (1<<25)                /* bvfs    */
+#define    DT_MEMORY     (1<<24)                /* memory  */
+#define    DT_SCHEDULER  (1<<23)                /* scheduler */
+#define    DT_PROTOCOL   (1<<22)                /* protocol */
+#define    DT_ALL        (0x7FFF0000)           /* all (up to debug_level 65635, 15 flags available) */
+
+bool debug_find_tag(const char *tagname, bool add, int64_t *current_level);
+bool debug_parse_tags(const char *options, int64_t *current_level);
+
+
+void d_msg(const char *file, int line, int64_t level, const char *fmt,...) CHECK_FORMAT(printf, 4, 5);
+void e_msg(const char *file, int line, int type, int level, const char *fmt,...) CHECK_FORMAT(printf, 5, 6);;
+void Jmsg(JCR *jcr, int type, utime_t mtime, const char *fmt,...) CHECK_FORMAT(printf, 4, 5);
+void Qmsg(JCR *jcr, int type, utime_t mtime, const char *fmt,...) CHECK_FORMAT(printf, 4, 5);
 bool get_trace(void);
+void set_debug_flags(char *options);
 const char *get_basename(const char *pathname);
 
 class B_DB;
@@ -154,12 +174,12 @@ typedef bool (*sql_escape_func)(JCR *jcr, B_DB *db, char *snew, char *old, int l
 extern DLL_IMP_EXP sql_query_func     p_sql_query;
 extern DLL_IMP_EXP sql_escape_func    p_sql_escape;
 
-extern DLL_IMP_EXP int           debug_level;
+extern DLL_IMP_EXP int64_t       debug_level;
+extern DLL_IMP_EXP int32_t       debug_flags;
 extern DLL_IMP_EXP bool          dbg_timestamp;          /* print timestamp in debug output */
 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 ca2c8a8..0b34c70 100644
--- a/src/lib/mntent_cache.c
+++ b/src/lib/mntent_cache.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /**
diff --git a/src/lib/mntent_cache.h b/src/lib/mntent_cache.h
index 82c2f64..9a064fb 100644
--- a/src/lib/mntent_cache.h
+++ b/src/lib/mntent_cache.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /*
diff --git a/src/lib/mutex_list.h b/src/lib/mutex_list.h
index 2f07dd5..ab76b14 100644
--- a/src/lib/mutex_list.h
+++ b/src/lib/mutex_list.h
@@ -1,44 +1,33 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef MUTEX_LIST_H
 #define MUTEX_LIST_H 1
 
-/* 
+/*
  * Use this list to manage lock order and protect the Bacula from
  * race conditions and dead locks
  */
 
-#define PRIO_SD_DEV_ACQUIRE   4            /* dev.acquire_mutex */
-#define PRIO_SD_DEV_ACCESS    5            /* dev.m_mutex */
-#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 */
+#define PRIO_SD_DEV_ACQUIRE    4            /* dev.acquire_mutex */
+#define PRIO_SD_DEV_ACCESS     5            /* dev.m_mutex */
+#define PRIO_SD_VOL_LIST       0            /* vol_list_lock */
+#define PRIO_SD_VOL_INFO       12           /* vol_info_mutex */
+#define PRIO_SD_READ_VOL_LIST  13           /* read_vol_list */
+#define PRIO_SD_DEV_SPOOL      14           /* dev.spool_mutex */
+#define PRIO_SD_ACH_ACCESS     16           /* autochanger lock mutex */
 
 #endif
diff --git a/src/lib/openssl.c b/src/lib/openssl.c
index 57fea7c..647f38e 100644
--- a/src/lib/openssl.c
+++ b/src/lib/openssl.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * openssl.c OpenSSL support functions
@@ -98,7 +86,7 @@ static unsigned long get_openssl_thread_id(void)
    return (unsigned long)getpid();
 #else
    /*
-    * Comparison without use of pthread_equal() is mandated by the OpenSSL API 
+    * Comparison without use of pthread_equal() is mandated by the OpenSSL API
     *
     * Note: this creates problems with the new Win32 pthreads
     *   emulation code, which defines pthread_t as a structure.
@@ -204,14 +192,14 @@ void openssl_cleanup_threads(void)
 
    /* Unset thread ID callback */
    CRYPTO_set_id_callback(NULL);
-  
+
    /* Deallocate static lock mutexes */
    numlocks = CRYPTO_num_locks();
    for (i = 0; i < numlocks; i++) {
       if ((stat = pthread_mutex_destroy(&mutexes[i])) != 0) {
          berrno be;
          /* We don't halt execution, reporting the error should be sufficient */
-         Jmsg1(NULL, M_ERROR, 0, _("Unable to destroy mutex: ERR=%s\n"), 
+         Jmsg1(NULL, M_ERROR, 0, _("Unable to destroy mutex: ERR=%s\n"),
                be.bstrerror(stat));
       }
    }
diff --git a/src/lib/openssl.h b/src/lib/openssl.h
index da48daf..339fafe 100644
--- a/src/lib/openssl.h
+++ b/src/lib/openssl.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * openssl.h OpenSSL support functions
diff --git a/src/lib/parse_conf.c b/src/lib/parse_conf.c
index b2a3a98..b75786f 100644
--- a/src/lib/parse_conf.c
+++ b/src/lib/parse_conf.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Master Configuration routines.
@@ -149,7 +137,7 @@ struct s_kw {
 };
 
 /*
- * Tape Label types permitted in Pool records 
+ * Tape Label types permitted in Pool records
  *
  *   tape label      label code = token
  */
@@ -322,7 +310,7 @@ void store_msgs(LEX *lc, RES_ITEM *item, int index, int pass)
  */
 static void scan_types(LEX *lc, MSGS *msg, int dest_code, char *where, char *cmd)
 {
-   int i; 
+   int i;
    bool found, is_not;
    int msg_type = 0;
    char *str;
@@ -429,7 +417,7 @@ void store_dir(LEX *lc, RES_ITEM *item, int index, int pass)
    lex_get_token(lc, T_STRING);
    if (pass == 1) {
       if (lc->str[0] != '|') {
-         do_shell_expansion(lc->str, sizeof(lc->str));
+         do_shell_expansion(lc->str, sizeof_pool_memory(lc->str));
       }
       *(item->value) = bstrdup(lc->str);
    }
@@ -531,7 +519,7 @@ void store_alist_res(LEX *lc, RES_ITEM *item, int index, int pass)
                item->name, lc->line_no, lc->line);
             return;
          }
-         Dmsg5(900, "Append %p to alist %p size=%d i=%d %s\n", 
+         Dmsg5(900, "Append %p to alist %p size=%d i=%d %s\n",
                res, list, list->size(), i, item->name);
          list->append(res);
          (item->value)[i] = (char *)list;
@@ -557,11 +545,11 @@ void store_alist_str(LEX *lc, RES_ITEM *item, int index, int pass)
       if (*(item->value) == NULL) {
          list = New(alist(10, owned_by_alist));
       } else {
-         list = (alist *)(*(item->value));    
+         list = (alist *)(*(item->value));
       }
 
       lex_get_token(lc, T_STRING);   /* scan next item */
-      Dmsg4(900, "Append %s to alist %p size=%d %s\n", 
+      Dmsg4(900, "Append %s to alist %p size=%d %s\n",
          lc->str, list, list->size(), item->name);
       list->append(bstrdup(lc->str));
       *(item->value) = (char *)list;
@@ -634,7 +622,7 @@ enum store_unit_type {
 } ;
 
 /* Store a size in bytes */
-static void store_int_unit(LEX *lc, RES_ITEM *item, int index, int pass, 
+static void store_int_unit(LEX *lc, RES_ITEM *item, int index, int pass,
                            bool size32, enum store_unit_type type)
 {
    int token;
@@ -678,7 +666,7 @@ static void store_int_unit(LEX *lc, RES_ITEM *item, int index, int pass,
       }
       break;
    default:
-      scan_err2(lc, _("expected a %s, got: %s"), 
+      scan_err2(lc, _("expected a %s, got: %s"),
                 (type == STORE_SIZE)?_("size"):_("speed"), lc->str);
       return;
    }
@@ -858,15 +846,15 @@ parse_config(const char *cf, LEX_ERROR_HANDLER *scan_error, int err_type)
 {
    int ok;
    CONFIG *config = new_config_parser();
-   config->init(cf, scan_error, err_type, (void *)&res_all, res_all_size,    
+   config->init(cf, scan_error, err_type, (void *)&res_all, res_all_size,
                 r_first, r_last, resources, res_head);
    ok = config->parse_config();
    free(config);
    return ok;
 }
 #endif
-      
-   
+
+
 bool CONFIG::parse_config()
 {
    LEX *lc = NULL;
@@ -906,16 +894,18 @@ bool CONFIG::parse_config()
          /* We must create a lex packet to print the error */
          lc = (LEX *)malloc(sizeof(LEX));
          memset(lc, 0, sizeof(LEX));
+         lc->str = get_memory(5000);
          if (scan_error) {
             lc->scan_error = scan_error;
          } else {
             lex_set_default_error_handler(lc);
          }
          lex_set_error_handler_error_type(lc, err_type) ;
-         bstrncpy(lc->str, cf, sizeof(lc->str));
+         pm_strcpy(lc->str, cf);
          lc->fname = lc->str;
          scan_err2(lc, _("Cannot open config file \"%s\": %s\n"),
             lc->str, be.bstrerror());
+         free_pool_memory(lc->str);
          free(lc);
          return 0;
       }
@@ -1067,7 +1057,7 @@ const char *get_default_configdir()
 
 /*
  * Returns false on error
- *         true  on OK, with full_path set to where config file should be 
+ *         true  on OK, with full_path set to where config file should be
  */
 static bool
 find_config_file(const char *config_file, char *full_path, int max_path)
diff --git a/src/lib/parse_conf.h b/src/lib/parse_conf.h
index 0a83353..88ac9d2 100644
--- a/src/lib/parse_conf.h
+++ b/src/lib/parse_conf.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -156,7 +144,7 @@ public:
 
 inline char *MSGS::name() const { return hdr.name; }
 
-/* 
+/*
  * Old C style configuration routines -- deprecated do not use.
  */
 //int   parse_config(const char *cf, LEX_ERROR_HANDLER *scan_error = NULL, int err_type=M_ERROR_TERM);
@@ -179,7 +167,7 @@ public:
    /* The below are not yet implemented */
    int32_t m_r_first;                  /* first daemon resource type */
    int32_t m_r_last;                   /* last daemon resource type */
-   RES_TABLE *m_resources;             /* pointer to table of permitted resources */      
+   RES_TABLE *m_resources;             /* pointer to table of permitted resources */
    RES **m_res_head;                   /* pointer to defined resources */
    brwlock_t m_res_lock;               /* resource lock */
 
@@ -200,7 +188,7 @@ public:
    RES **save_resources();
    RES **new_res_head();
 };
- 
+
 CONFIG *new_config_parser();
 
 
@@ -219,7 +207,7 @@ const char *res_to_str(int rcode);
 #ifdef HAVE_TYPEOF
 #define foreach_res(var, type) \
         for((var)=NULL; ((var)=(typeof(var))GetNextRes((type), (RES *)var));)
-#else 
+#else
 #define foreach_res(var, type) \
     for(var=NULL; (*((void **)&(var))=(void *)GetNextRes((type), (RES *)var));)
 #endif
diff --git a/src/lib/plugins.c b/src/lib/plugins.c
index e6cf7b0..fef2787 100644
--- a/src/lib/plugins.c
+++ b/src/lib/plugins.c
@@ -1,29 +1,17 @@
 /*
-   Bacula(R) - The Network Backup Solution
+   Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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 may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
-   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(R) 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.
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 /*
  *    Plugin load/unloader for all Bacula daemons
@@ -49,7 +37,7 @@ int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
 
 static const int dbglvl = 50;
 
-/* 
+/*
  * List of all loaded plugins.
  *
  * NOTE!!! This is a global do not try walking it with
@@ -60,7 +48,7 @@ alist *bplugin_list = NULL;
 /*
  * Create a new plugin "class" entry and enter it in the
  *  list of plugins.  Note, this is not the same as
- *  an instance of the plugin. 
+ *  an instance of the plugin.
  */
 Plugin *new_plugin()
 {
@@ -91,7 +79,7 @@ static void close_plugin(Plugin *plugin)
 /*
  * Load all the plugins in the specified directory.
  */
-bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir, 
+bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
         const char *type, bool is_plugin_compatible(Plugin *plugin))
 {
    bool found = false;
@@ -114,13 +102,13 @@ bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
 
    if (!(dp = opendir(plugin_dir))) {
       berrno be;
-      Jmsg(NULL, M_ERROR_TERM, 0, _("Failed to open Plugin directory %s: ERR=%s\n"), 
+      Jmsg(NULL, M_ERROR_TERM, 0, _("Failed to open Plugin directory %s: ERR=%s\n"),
             plugin_dir, be.bstrerror());
-      Dmsg2(dbglvl, "Failed to open Plugin directory %s: ERR=%s\n", 
+      Dmsg2(dbglvl, "Failed to open Plugin directory %s: ERR=%s\n",
             plugin_dir, be.bstrerror());
       goto get_out;
    }
-   
+
    len = strlen(plugin_dir);
    if (len > 0) {
       need_slash = !IsPathSeparator(plugin_dir[len - 1]);
@@ -131,13 +119,13 @@ bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
 
       if ((readdir_r(dp, entry, &result) != 0) || (result == NULL)) {
          if (!found) {
-            Jmsg(NULL, M_WARNING, 0, _("Failed to find any plugins in %s\n"), 
+            Jmsg(NULL, M_WARNING, 0, _("Failed to find any plugins in %s\n"),
                   plugin_dir);
             Dmsg1(dbglvl, "Failed to find any plugins in %s\n", plugin_dir);
          }
          break;
       }
-      if (strcmp(result->d_name, ".") == 0 || 
+      if (strcmp(result->d_name, ".") == 0 ||
           strcmp(result->d_name, "..") == 0) {
          continue;
       }
@@ -149,7 +137,7 @@ bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
          continue;
       }
       Dmsg2(dbglvl, "Found plugin: name=%s len=%d\n", result->d_name, len);
-       
+
       pm_strcpy(fname, plugin_dir);
       if (need_slash) {
          pm_strcat(fname, "/");
@@ -165,9 +153,9 @@ bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
       plugin->pHandle = dlopen(fname.c_str(), RTLD_NOW);
       if (!plugin->pHandle) {
          const char *error = dlerror();
-         Jmsg(NULL, M_ERROR, 0, _("dlopen plugin %s failed: ERR=%s\n"), 
+         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(), 
+         Dmsg2(dbglvl, "dlopen plugin %s failed: ERR=%s\n", fname.c_str(),
                NPRT(error));
          close_plugin(plugin);
          continue;
@@ -178,7 +166,7 @@ bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
       if (!loadPlugin) {
          Jmsg(NULL, M_ERROR, 0, _("Lookup of loadPlugin in plugin %s failed: ERR=%s\n"),
             fname.c_str(), NPRT(dlerror()));
-         Dmsg2(dbglvl, "Lookup of loadPlugin in plugin %s failed: ERR=%s\n", 
+         Dmsg2(dbglvl, "Lookup of loadPlugin in plugin %s failed: ERR=%s\n",
             fname.c_str(), NPRT(dlerror()));
          close_plugin(plugin);
          continue;
@@ -199,7 +187,7 @@ bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
          continue;
       }
       if (!is_plugin_compatible) {
-         Dmsg0(50, "Plugin compatibility pointer not set.\n");   
+         Dmsg0(50, "Plugin compatibility pointer not set.\n");
       } else if (!is_plugin_compatible(plugin)) {
          close_plugin(plugin);
          continue;
@@ -223,7 +211,7 @@ get_out:
 }
 
 /*
- * Unload all the loaded plugins 
+ * Unload all the loaded plugins
  */
 void unload_plugins()
 {
diff --git a/src/lib/plugins.h b/src/lib/plugins.h
index ff69016..b5f9021 100644
--- a/src/lib/plugins.h
+++ b/src/lib/plugins.h
@@ -1,29 +1,17 @@
 /*
-   Bacula(R) - The Network Backup Solution
-
-   Copyright (C) 2007-2011 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, which is 
-   listed 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(R) 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.
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2007-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 /*
  * Common plugin definitions
@@ -86,7 +74,7 @@ public:
 
 /* Functions */
 extern Plugin *new_plugin();
-extern bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir, 
+extern bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
         const char *type, bool is_plugin_compatible(Plugin *plugin));
 extern void unload_plugins();
 
diff --git a/src/lib/priv.c b/src/lib/priv.c
index cfa4ec7..08f625e 100644
--- a/src/lib/priv.c
+++ b/src/lib/priv.c
@@ -1,29 +1,17 @@
 /*
-   Bacula� - The Network Backup Solution
+   Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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 may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
-   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.
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 
 #include "bacula.h"
diff --git a/src/lib/protos.h b/src/lib/protos.h
index d04c847..2e3f09b 100644
--- a/src/lib/protos.h
+++ b/src/lib/protos.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Prototypes for lib directory of Bacula
@@ -35,6 +23,9 @@
 
 class JCR;
 
+/* address_conf.c */
+void remove_duplicate_addresses(dlist *addr_list);
+
 /* attr.c */
 ATTR     *new_attr(JCR *jcr);
 void      free_attr(ATTR *attr);
@@ -46,16 +37,19 @@ void      print_ls_output(JCR *jcr, ATTR *attr);
 void      base64_init            (void);
 int       to_base64              (int64_t value, char *where);
 int       from_base64            (int64_t *value, char *where);
-int       bin_to_base64          (char *buf, int buflen, char *bin, int binlen, 
+int       bin_to_base64          (char *buf, int buflen, char *bin, int binlen,
                                   int compatible);
 int       base64_to_bin(char *dest, int destlen, char *src, int srclen);
 
 /* bsys.c */
+POOLMEM  *quote_string           (POOLMEM *snew, const char *old);
+POOLMEM  *quote_where            (POOLMEM *snew, const char *old);
 char     *bstrncpy               (char *dest, const char *src, int maxlen);
 char     *bstrncpy               (char *dest, POOL_MEM &src, int maxlen);
 char     *bstrncat               (char *dest, const char *src, int maxlen);
 char     *bstrncat               (char *dest, POOL_MEM &src, int maxlen);
 bool      bstrcmp                (const char *s1, const char *s2);
+bool      bstrcasecmp            (const char *s1, const char *s2);
 int       cstrlen                (const char *str);
 void     *b_malloc               (const char *file, int line, size_t size);
 #ifndef bmalloc
@@ -86,20 +80,10 @@ void      stack_trace();
 int       safer_unlink(const char *pathname, const char *regex);
 
 /* bnet.c */
-int32_t    bnet_recv             (BSOCK *bsock);
-bool       bnet_send             (BSOCK *bsock);
-bool       bnet_fsend            (BSOCK *bs, const char *fmt, ...);
-bool       bnet_set_buffer_size  (BSOCK *bs, uint32_t size, int rw);
-bool       bnet_sig              (BSOCK *bs, int sig);
 bool       bnet_tls_server       (TLS_CONTEXT *ctx, BSOCK *bsock,
                                   alist *verify_list);
 bool       bnet_tls_client       (TLS_CONTEXT *ctx, BSOCK *bsock,
                                   alist *verify_list);
-BSOCK *    bnet_connect          (JCR *jcr, int retry_interval,
-               utime_t max_retry_time, utime_t heart_beat, 
-               const char *name, char *host, char *service,
-               int port, int verbose);
-void       bnet_close            (BSOCK *bsock);
 BSOCK *    init_bsock            (JCR *jcr, int sockfd, const char *who, const char *ip,
                                   int port, struct sockaddr *client_addr);
 #ifdef HAVE_WIN32
@@ -112,15 +96,9 @@ BSOCK *    dup_bsock             (BSOCK *bsock);
 void       term_bsock            (BSOCK *bsock);
 const char *bnet_strerror         (BSOCK *bsock);
 const char *bnet_sig_to_ascii     (BSOCK *bsock);
-int        bnet_wait_data        (BSOCK *bsock, int sec);
-int        bnet_wait_data_intr   (BSOCK *bsock, int sec);
-bool       is_bnet_stop          (BSOCK *bsock);
-int        is_bnet_error         (BSOCK *bsock);
-void       bnet_suppress_error_messages(BSOCK *bsock, bool flag);
 dlist *bnet_host2ipaddrs(const char *host, int family, const char **errstr);
-int        bnet_set_blocking     (BSOCK *sock);
-int        bnet_set_nonblocking  (BSOCK *sock);
 void       bnet_restore_blocking (BSOCK *sock, int flags);
+int        set_socket_errno(int sockstat);
 
 /* bget_msg.c */
 int      bget_msg(BSOCK *sock);
@@ -147,7 +125,7 @@ bool               crypto_digest_update        (DIGEST *digest, const uint8_t *d
 bool               crypto_digest_finalize      (DIGEST *digest, uint8_t *dest, uint32_t *length);
 void               crypto_digest_free          (DIGEST *digest);
 SIGNATURE *        crypto_sign_new             (JCR *jcr);
-crypto_error_t     crypto_sign_get_digest      (SIGNATURE *sig, X509_KEYPAIR *keypair, 
+crypto_error_t     crypto_sign_get_digest      (SIGNATURE *sig, X509_KEYPAIR *keypair,
                                                 crypto_digest_t &algorithm, DIGEST **digest);
 crypto_error_t     crypto_sign_verify          (SIGNATURE *sig, X509_KEYPAIR *keypair, DIGEST *digest);
 int                crypto_sign_add_signer      (SIGNATURE *sig, DIGEST *digest, X509_KEYPAIR *keypair);
@@ -157,7 +135,7 @@ void               crypto_sign_free            (SIGNATURE *sig);
 CRYPTO_SESSION *   crypto_session_new          (crypto_cipher_t cipher, alist *pubkeys);
 void               crypto_session_free         (CRYPTO_SESSION *cs);
 bool               crypto_session_encode       (CRYPTO_SESSION *cs, uint8_t *dest, uint32_t *length);
-crypto_error_t     crypto_session_decode       (const uint8_t *data, uint32_t length, alist *keypairs, CRYPTO_SESSION **session); 
+crypto_error_t     crypto_session_decode       (const uint8_t *data, uint32_t length, alist *keypairs, CRYPTO_SESSION **session);
 CRYPTO_SESSION *   crypto_session_decode       (const uint8_t *data, uint32_t length);
 CIPHER_CONTEXT *   crypto_cipher_new           (CRYPTO_SESSION *cs, bool encrypt, uint32_t *blocksize);
 bool               crypto_cipher_update        (CIPHER_CONTEXT *cipher_ctx, const uint8_t *data, uint32_t length, const uint8_t *dest, uint32_t *written);
@@ -214,7 +192,7 @@ int      job_count();
 JCR     *get_jcr_from_tsd();
 void     set_jcr_in_tsd(JCR *jcr);
 void     remove_jcr_from_tsd(JCR *jcr);
-uint32_t get_jobid_from_tsd();             
+uint32_t get_jobid_from_tsd();
 uint32_t get_jobid_from_tid(pthread_t tid);
 
 
@@ -228,9 +206,14 @@ int       lex_get_token          (LEX *lf, int expect);
 void      lex_set_default_error_handler (LEX *lf);
 int       lex_set_error_handler_error_type (LEX *lf, int err_type);
 
+/* Required typedef, not in a C file */
+extern "C" {
+typedef char *(*job_code_callback_t)(JCR *, const char *);
+}
+
 /* message.c */
 void       my_name_is            (int argc, char *argv[], const char *name);
-void       init_msg              (JCR *jcr, MSGS *msg);
+void       init_msg              (JCR *jcr, MSGS *msg, job_code_callback_t job_code_callback = NULL);
 void       term_msg              (void);
 void       close_msg             (JCR *jcr);
 void       add_msg_dest          (MSGS *msg, int dest, int type, char *where, char *dest_code);
@@ -245,6 +228,7 @@ bool       get_trace             (void);
 void       set_hangup            (int hangup_value);
 int        get_hangup            (void);
 void       set_db_type           (const char *name);
+void       set_assert_msg        (const char *file, int line, const char *msg);
 void       register_message_callback(void msg_callback(int type, char *msg));
 
 /* bnet_server.c */
@@ -256,9 +240,7 @@ int              net_connect             (int port);
 BSOCK *          bnet_bind               (int port);
 BSOCK *          bnet_accept             (BSOCK *bsock, char *who);
 
-/* pythonlib.c */
 typedef int (EVENT_HANDLER)(JCR *jcr, const char *event);
-//EVENT_HANDLER *generate_daemon_event;
 int generate_daemon_event(JCR *jcr, const char *event);
 
 /* signal.c */
@@ -312,11 +294,6 @@ bool             get_tls_enable          (TLS_CONTEXT *ctx);
 
 
 /* util.c */
-
-extern "C" {
-typedef char *(*job_code_callback_t)(JCR *, const char *);
-}
-
 bool             is_buf_zero             (char *buf, int len);
 void             lcase                   (char *str);
 void             bash_spaces             (char *str);
@@ -342,7 +319,6 @@ POOLMEM *        edit_job_codes          (JCR *jcr, char *omsg, char *imsg, cons
 void             set_working_directory   (char *wd);
 const char *     last_path_separator     (const char *str);
 
-
 /* watchdog.c */
 int start_watchdog(void);
 int stop_watchdog(void);
diff --git a/src/lib/pythonlib.c b/src/lib/pythonlib.c
deleted file mode 100644
index 4967968..0000000
--- a/src/lib/pythonlib.c
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2011 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.
-*/
-/*
- *
- * Bacula common code library interface to Python
- *
- * Kern Sibbald, November MMIV
- *
- */
-
-#include "bacula.h"
-#include "jcr.h"
-
-#ifdef HAVE_PYTHON
-
-#undef _POSIX_C_SOURCE
-#include <Python.h>
-
-#include "pythonlib.h"
-
-/* Forward referenced subroutines */
-static void init_python_lock();
-static void term_python_lock();
-
-static PyObject *bacula_module = NULL;    /* We create this */
-static PyObject *StartUp_module = NULL;   /* We import this */
-
-/* These are the daemon events or methods that are defined */
-static PyObject *JobStart_method = NULL;
-static PyObject *JobEnd_method = NULL;
-static PyObject *Exit_method = NULL;
-
-static PyObject *set_bacula_events(PyObject *self, PyObject *args);
-static PyObject *bacula_write(PyObject *self, PyObject *args);
-
-PyObject *find_method(PyObject *eventsObject, PyObject *method, const char *name);
-
-/* Define Bacula daemon method entry points */
-static PyMethodDef BaculaMethods[] = {
-    {"set_events", set_bacula_events, METH_VARARGS, "Define Bacula events."},
-    {"write", bacula_write, METH_VARARGS, "Write output."},
-    {NULL, NULL, 0, NULL}             /* last item */
-};
-
-static char my_version[] = VERSION " " BDATE;
-
-/*
- * This is a Bacula Job type as defined in Python. We store a pointer
- * to the jcr. That is all we need, but the user's script may keep
- * local data attached to this.
- */
-typedef struct s_JobObject {
-    PyObject_HEAD
-    JCR *jcr;
-} JobObject;
-
-static PyTypeObject JobType = {
-    PyObject_HEAD_INIT(NULL)
-    /* Other items filled in in code below */
-};
-
-/* Return the JCR pointer from the JobObject */
-JCR *get_jcr_from_PyObject(PyObject *self)
-{
-   if (!self) {
-      return NULL;
-   }
-   return ((JobObject *)self)->jcr;
-}
-
-/* Start the interpreter */
-void init_python_interpreter(init_python_interpreter_args *args)
-{
-   char buf[MAXSTRING];
-
-   if (!args->scriptdir || args->scriptdir[0] == 0) {
-      Dmsg1(100, "No script dir. prog=%s\n", args->modulename);
-      return;
-   }
-   Dmsg2(100, "Script dir=%s prog=%s\n", args->scriptdir, args->modulename);
-
-   Py_SetProgramName((char *)args->progname);
-   Py_Initialize();
-   PyEval_InitThreads();
-   bacula_module = Py_InitModule("bacula", BaculaMethods);
-   PyModule_AddStringConstant(bacula_module, "Name", my_name);
-   PyModule_AddStringConstant(bacula_module, "Version", my_version);
-   PyModule_AddStringConstant(bacula_module, "ConfigFile", (char *)args->configfile);
-   PyModule_AddStringConstant(bacula_module, "WorkingDir", (char *)args->workingdir);
-   if (!bacula_module) {
-      Jmsg0(NULL, M_ERROR_TERM, 0, _("Could not initialize Python\n"));
-   }
-   bsnprintf(buf, sizeof(buf), "import sys\n"
-            "sys.path.append('%s')\n", args->scriptdir);
-   if (PyRun_SimpleString(buf) != 0) {
-      Jmsg1(NULL, M_ERROR_TERM, 0, _("Could not Run Python string %s\n"), buf);
-   }   
-
-   /* Explicitly set values we want */
-   JobType.tp_name = "Bacula.Job";
-   JobType.tp_basicsize = sizeof(JobObject);
-   JobType.tp_flags = Py_TPFLAGS_DEFAULT;
-   JobType.tp_doc = "Bacula Job object";
-   JobType.tp_getattr = args->job_getattr;
-   JobType.tp_setattr = args->job_setattr;
-
-   if (PyType_Ready(&JobType) != 0) {
-      Jmsg0(NULL, M_ERROR_TERM, 0, _("Could not initialize Python Job type.\n"));
-      PyErr_Print();
-   }   
-   StartUp_module = PyImport_ImportModule((char *)args->modulename);
-   if (!StartUp_module) {
-      Emsg2(M_ERROR, 0, _("Could not import Python script %s/%s. Python disabled.\n"),
-           args->scriptdir, args->modulename);
-      if (PyErr_Occurred()) {
-         PyErr_Print();
-         Dmsg0(000, "Python Import error.\n");
-      }
-   }
-   PyEval_ReleaseLock();
-   init_python_lock();
-}
-
-void term_python_interpreter()
-{
-   if (StartUp_module) {
-      Py_XDECREF(StartUp_module);
-      Py_Finalize();
-   }
-   term_python_lock();
-}
-
-static PyObject *set_bacula_events(PyObject *self, PyObject *args)
-{
-   PyObject *eObject;
-
-   Dmsg0(100, "In set_bacula_events.\n");
-   if (!PyArg_ParseTuple(args, "O:set_bacula_events", &eObject)) {
-      return NULL;
-   }
-   JobStart_method = find_method(eObject, JobStart_method, "JobStart");
-   JobEnd_method = find_method(eObject, JobEnd_method, "JobEnd");
-   Exit_method = find_method(eObject, Exit_method, "Exit");
-
-   Py_XINCREF(eObject);
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-/* Write text to daemon output */
-static PyObject *bacula_write(PyObject *self, PyObject *args)
-{
-   char *text;
-   if (!PyArg_ParseTuple(args, "s:write", &text)) {
-      return NULL;
-   }
-   if (text) {
-      Jmsg(NULL, M_INFO, 0, "%s", text);
-   }
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-/*
- * Check that a method exists and is callable.
- */
-PyObject *find_method(PyObject *eventsObject, PyObject *method, const char *name)
-{
-   Py_XDECREF(method);             /* release old method if any */
-   method = PyObject_GetAttrString(eventsObject, (char *)name);
-   if (method == NULL) {
-       Dmsg1(000, "Python method %s not found\n", name);
-   } else if (PyCallable_Check(method) == 0) {
-       Dmsg1(000, "Python object %s found but not a method.\n", name);
-       Py_XDECREF(method);
-       method = NULL;
-   } else {
-       Dmsg1(100, "Got method %s\n", name);
-   }
-   return method; 
-}
-
-
-/*
- * Generate and process a Bacula event by importing a Python
- *  module and running it.
- *
- *  Returns: 0 if Python not configured or module not found
- *          -1 on Python error
- *           1 OK
- */
-int generate_daemon_event(JCR *jcr, const char *event)
-{
-   PyObject *pJob;
-   int stat = -1;
-   PyObject *result = NULL;
-   char *obj_fmt = (char *)"O";
-
-   if (!StartUp_module) {
-      Dmsg0(100, "No startup module.\n");
-      return 0;
-   }
-
-   Dmsg1(100, "event=%s\n", event);
-   lock_python();
-// PyEval_AcquireLock();
-   if (strcmp(event, "JobStart") == 0) {
-      if (!JobStart_method) {
-         stat = 0;
-         goto bail_out;
-      }
-      /* Create JCR argument to send to function */
-      pJob = (PyObject *)PyObject_New(JobObject, &JobType);
-      if (!pJob) {
-         Jmsg(jcr, M_ERROR, 0, _("Could not create Python Job Object.\n"));
-         goto bail_out;
-      }
-      ((JobObject *)pJob)->jcr = jcr;
-      bstrncpy(jcr->event, event, sizeof(jcr->event));
-      result = PyObject_CallFunction(JobStart_method, obj_fmt, pJob);
-      jcr->event[0] = 0;             /* no event in progress */
-      if (result == NULL) {
-         JobStart_method = NULL;
-         if (PyErr_Occurred()) {
-            PyErr_Print();
-            Dmsg0(000, "Python JobStart error.\n");
-         }
-         Jmsg(jcr, M_ERROR, 0, _("Python function \"%s\" not found.\n"), event);
-         Py_XDECREF(pJob);
-         goto bail_out;
-      }
-      jcr->Python_job = (void *)pJob;
-      stat = 1;                       /* OK */
-      goto jobstart_ok;
-
-   } else if (strcmp(event, "JobEnd") == 0) {
-      if (!JobEnd_method || !jcr->Python_job) {
-         stat = 0;                    /* probably already here */
-         goto bail_out;
-      }
-      bstrncpy(jcr->event, event, sizeof(jcr->event));
-      Dmsg1(100, "Call daemon event=%s\n", event);
-      result = PyObject_CallFunction(JobEnd_method, obj_fmt, jcr->Python_job);
-      jcr->event[0] = 0;             /* no event in progress */
-      if (result == NULL) {
-         if (PyErr_Occurred()) {
-            PyErr_Print();
-            Dmsg2(000, "Python JobEnd error. job=%p JobId=%d\n", jcr->Python_job,
-               jcr->JobId);
-            JobEnd_method = NULL;
-         }
-         Jmsg(jcr, M_ERROR, 0, _("Python function \"%s\" not found.\n"), event);
-         goto bail_out;
-      }
-      stat = 1;                    /* OK */
-   } else if (strcmp(event, "Exit") == 0) {
-      if (!Exit_method) {
-         stat = 0;
-         goto bail_out;
-      }
-      result = PyObject_CallFunction(Exit_method, NULL);
-      if (result == NULL) {
-         goto bail_out;
-      }
-      stat = 1;                    /* OK */
-   } else {
-      Jmsg1(jcr, M_ABORT, 0, _("Unknown Python daemon event %s\n"), event);
-   }
-
-bail_out:
-   if (jcr) {
-      Py_XDECREF((PyObject *)jcr->Python_job);
-      jcr->Python_job = NULL;
-      Py_XDECREF((PyObject *)jcr->Python_events);
-      jcr->Python_events = NULL;
-   }
-   /* Fall through */
-jobstart_ok:
-   Py_XDECREF(result);
-   unlock_python();
-// PyEval_ReleaseLock();
-   return stat; 
-}
-
-static brwlock_t python_rwlock;
-
-static void init_python_lock()
-{
-   int errstat;
-   if ((errstat=rwl_init(&python_rwlock)) != 0) {
-      berrno be;
-      Emsg1(M_ABORT, 0, _("Unable to initialize the Python lock. ERR=%s\n"),
-            be.bstrerror(errstat));
-   }
-
-}
-
-static void term_python_lock()
-{
-   rwl_destroy(&python_rwlock);
-}
-
-/* This applies to a drive and to Volumes */
-void lock_python()
-{
-   int errstat;
-   if ((errstat=rwl_writelock(&python_rwlock)) != 0) {
-      berrno be;
-      Emsg2(M_ABORT, 0, "Python rwl_writelock failure. stat=%d: ERR=%s\n",
-           errstat, be.bstrerror(errstat));
-   }
-}
-
-void unlock_python()
-{
-   int errstat;
-   if ((errstat=rwl_writeunlock(&python_rwlock)) != 0) {
-      berrno be;
-      Emsg2(M_ABORT, 0, "Python rwl_writeunlock failure. stat=%d: ERR=%s\n",
-           errstat, be.bstrerror(errstat));
-   }
-}
-
-#else
-
-/*
- *  No Python configured -- create external entry points and
- *    dummy routines so that library code can call this without
- *    problems even if it is not configured.
- */
-int generate_daemon_event(JCR *jcr, const char *event) { return 0; }
-
-#endif /* HAVE_PYTHON */
diff --git a/src/lib/pythonlib.h b/src/lib/pythonlib.h
deleted file mode 100644
index 92ad012..0000000
--- a/src/lib/pythonlib.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
- *
- * Interface definitions of bacula <--> python interface
- *
- * Version $Id:$
- *
- * Marco van Wieringen, October MMVIII
- *
- */
-
-/*
- * This is the argument struct passed to init_python_interpreter
- * which initializes the python interpreter and makes sure we don't
- * depend on global variables.
- */
-typedef struct {
-   const char *progname;
-   const char *scriptdir;
-   const char *modulename;
-   const char *configfile;
-   const char *workingdir;
-   PyObject *(*job_getattr)(PyObject *, char *);
-   int (*job_setattr)(PyObject *, char *, PyObject *);
-} init_python_interpreter_args;
-
-void init_python_interpreter(init_python_interpreter_args *args);
-void term_python_interpreter();
-void lock_python();
-void unlock_python();
-
-JCR *get_jcr_from_PyObject(PyObject *self);
-PyObject *find_method(PyObject *eventsObject, PyObject *method, const char *name);
-
diff --git a/src/lib/queue.c b/src/lib/queue.c
index 0bb25e1..bc64f02 100644
--- a/src/lib/queue.c
+++ b/src/lib/queue.c
@@ -13,29 +13,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 
diff --git a/src/lib/queue.h b/src/lib/queue.h
index e1186cf..f8d9ecc 100644
--- a/src/lib/queue.h
+++ b/src/lib/queue.h
@@ -6,29 +6,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 
diff --git a/src/lib/rblist.c b/src/lib/rblist.c
index 2d5477f..81ef484 100644
--- a/src/lib/rblist.c
+++ b/src/lib/rblist.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Bacula red-black binary tree routines.
@@ -31,7 +19,7 @@
  *    rblist is a binary tree with the links being in the data item.
  *
  *   Developped in part from ideas obtained from several online University
- *    courses. 
+ *    courses.
  *
  *   Kern Sibbald, November MMV
  *
@@ -46,8 +34,8 @@
 /*
  *  Insert an item in the tree, but only if it is unique
  *   otherwise, the item is returned non inserted
- *  The big trick is keeping the tree balanced after the 
- *   insert. We use a parent pointer to make it simpler and 
+ *  The big trick is keeping the tree balanced after the
+ *   insert. We use a parent pointer to make it simpler and
  *   to avoid recursion.
  *
  * Returns: item         if item inserted
@@ -169,8 +157,8 @@ void *rblist::search(void *item, int compare(void *item1, void *item2))
    return found;
 }
 
-/* 
- * Get first item (i.e. lowest value) 
+/*
+ * Get first item (i.e. lowest value)
  */
 void *rblist::first(void)
 {
@@ -199,9 +187,9 @@ void *rblist::first(void)
  *  was called once before calling this routine.
  *  We always go down as far as we can to the left, then up, and
  *  down one to the right, and again down as far as we can to the
- *  left.  etc. 
+ *  left.  etc.
  *
- * Returns: pointer to next larger item 
+ * Returns: pointer to next larger item
  *          NULL when no more items in tree
  */
 void *rblist::next(void *item)
@@ -216,7 +204,7 @@ void *rblist::next(void *item)
    if ((down && !left(x) && right(x)) || (!down && right(x))) {
       /* Move down to right one */
       down = true;
-      x = right(x);                       
+      x = right(x);
       /* Then all the way down left */
       while (left(x))  {
          x = left(x);
@@ -258,7 +246,7 @@ void *rblist::any(void *item)
    if ((down && !left(x) && right(x)) || (!down && right(x))) {
       /* Move down to right one */
       down = true;
-      x = right(x);                       
+      x = right(x);
       /* Then all the way down left */
       while (left(x))  {
          x = left(x);
@@ -349,12 +337,12 @@ void rblist::destroy()
          }
       }
       if (!left(x) && !right(x)) {
-         if (head == x) {  
+         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));
-//          }   
+//          }
          free((void *)x);      /* free previous node */
          num_items--;
       }
@@ -460,7 +448,7 @@ int main()
    if ((jcr1=(MYJCR *)jcr_chain->search((void *)jcr, my_compare))) {
       printf("Search for AAA got %s\n", jcr1->buf);
    } else {
-      printf("Search for AAA not found\n"); 
+      printf("Search for AAA not found\n");
    }
    free(jcr->buf);
 
@@ -468,7 +456,7 @@ int main()
    if ((jcr1 = (MYJCR *)jcr_chain->search((void *)jcr, my_compare))) {
       printf("Search for ZZZ got %s\n", jcr1->buf);
    } else {
-      printf("Search for ZZZ not found\n"); 
+      printf("Search for ZZZ not found\n");
    }
    free(jcr->buf);
    free(jcr);
diff --git a/src/lib/rblist.h b/src/lib/rblist.h
index 5551a5f..d804cd2 100644
--- a/src/lib/rblist.h
+++ b/src/lib/rblist.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /*
diff --git a/src/lib/res.c b/src/lib/res.c
index bb7e63a..9ee51f1 100644
--- a/src/lib/res.c
+++ b/src/lib/res.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  This file handles locking and seaching resources
@@ -54,7 +42,7 @@ void b_LockRes(const char *file, int line)
 {
    int errstat;
 #ifdef TRACE_RES
-   Pmsg4(000, "LockRes  locked=%d w_active=%d at %s:%d\n", 
+   Pmsg4(000, "LockRes  locked=%d w_active=%d at %s:%d\n",
          res_locked, res_lock.w_active, file, line);
     if (res_locked) {
        Pmsg2(000, "LockRes writerid=%d myid=%d\n", res_lock.writer_id,
@@ -77,7 +65,7 @@ void b_UnlockRes(const char *file, int line)
    }
    res_locked--;
 #ifdef TRACE_RES
-   Pmsg4(000, "UnLockRes locked=%d wactive=%d at %s:%d\n", 
+   Pmsg4(000, "UnLockRes locked=%d wactive=%d at %s:%d\n",
          res_locked, res_lock.w_active, file, line);
 #endif
 }
diff --git a/src/lib/runscript.c b/src/lib/runscript.c
index a0bd899..595021b 100644
--- a/src/lib/runscript.c
+++ b/src/lib/runscript.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Manipulation routines for RunScript list
@@ -36,7 +24,7 @@
 #include "bacula.h"
 #include "jcr.h"
 #include "runscript.h"
-               
+
 /*
  * This function pointer is set only by the Director (dird.c),
  * and is not set in the File daemon, because the File
@@ -51,7 +39,7 @@ RUNSCRIPT *new_runscript()
    RUNSCRIPT *cmd = (RUNSCRIPT *)malloc(sizeof(RUNSCRIPT));
    memset(cmd, 0, sizeof(RUNSCRIPT));
    cmd->reset_default();
-   
+
    return cmd;
 }
 
@@ -63,7 +51,7 @@ void RUNSCRIPT::reset_default(bool free_strings)
    if (free_strings && target) {
      free_pool_memory(target);
    }
-   
+
    target = NULL;
    command = NULL;
    on_success = true;
@@ -87,7 +75,7 @@ RUNSCRIPT *copy_runscript(RUNSCRIPT *src)
    dst->set_command(src->command, src->cmd_type);
    dst->set_target(src->target);
 
-   return dst;   
+   return dst;
 }
 
 void free_runscript(RUNSCRIPT *script)
@@ -106,7 +94,7 @@ void free_runscript(RUNSCRIPT *script)
 int run_scripts(JCR *jcr, alist *runscripts, const char *label)
 {
    Dmsg2(200, "runscript: running all RUNSCRIPT object (%s) JobStatus=%c\n", label, jcr->JobStatus);
-   
+
    RUNSCRIPT *script;
    bool runit;
 
@@ -130,13 +118,13 @@ int run_scripts(JCR *jcr, alist *runscripts, const char *label)
       runit = false;
 
       if ((script->when & SCRIPT_Before) && (when & SCRIPT_Before)) {
-         if ((script->on_success && 
+         if ((script->on_success &&
               (jcr->JobStatus == JS_Running || jcr->JobStatus == JS_Created))
-            || (script->on_failure && 
+            || (script->on_failure &&
                 (job_canceled(jcr) || jcr->JobStatus == JS_Differences))
             )
          {
-            Dmsg4(200, "runscript: Run it because SCRIPT_Before (%s,%i,%i,%c)\n", 
+            Dmsg4(200, "runscript: Run it because SCRIPT_Before (%s,%i,%i,%c)\n",
                   script->command, script->on_success, script->on_failure,
                   jcr->JobStatus );
             runit = true;
@@ -148,7 +136,7 @@ int run_scripts(JCR *jcr, alist *runscripts, const char *label)
             || (script->on_failure && job_canceled(jcr))
             )
          {
-            Dmsg4(200, "runscript: Run it because SCRIPT_AfterVSS (%s,%i,%i,%c)\n", 
+            Dmsg4(200, "runscript: Run it because SCRIPT_AfterVSS (%s,%i,%i,%c)\n",
                   script->command, script->on_success, script->on_failure,
                   jcr->JobStatus );
             runit = true;
@@ -158,11 +146,11 @@ int run_scripts(JCR *jcr, alist *runscripts, const char *label)
       if ((script->when & SCRIPT_After) && (when & SCRIPT_After)) {
          if ((script->on_success &&
               (jcr->JobStatus == JS_Terminated || jcr->JobStatus == JS_Warnings))
-            || (script->on_failure && 
+            || (script->on_failure &&
                 (job_canceled(jcr) || jcr->JobStatus == JS_Differences))
             )
          {
-            Dmsg4(200, "runscript: Run it because SCRIPT_After (%s,%i,%i,%c)\n", 
+            Dmsg4(200, "runscript: Run it because SCRIPT_After (%s,%i,%i,%c)\n",
                   script->command, script->on_success, script->on_failure,
                   jcr->JobStatus );
             runit = true;
@@ -233,7 +221,7 @@ bool RUNSCRIPT::run(JCR *jcr, const char *name)
 
    ecmd = edit_job_codes(jcr, ecmd, this->command, "", this->job_code_callback);
    Dmsg1(100, "runscript: running '%s'...\n", ecmd);
-   Jmsg(jcr, M_INFO, 0, _("%s: run %s \"%s\"\n"), 
+   Jmsg(jcr, M_INFO, 0, _("%s: run %s \"%s\"\n"),
         cmd_type==SHELL_CMD?"shell command":"console command", name, ecmd);
 
    switch (cmd_type) {
@@ -303,7 +291,7 @@ void RUNSCRIPT::debug()
    Dmsg1(200,  _("  --> RunWhen=%u\n"),  when);
 }
 
-void RUNSCRIPT::set_job_code_callback(job_code_callback_t arg_job_code_callback) 
+void RUNSCRIPT::set_job_code_callback(job_code_callback_t arg_job_code_callback)
 {
    this->job_code_callback = arg_job_code_callback;
 }
diff --git a/src/lib/runscript.h b/src/lib/runscript.h
index 27b28d1..2adb254 100644
--- a/src/lib/runscript.h
+++ b/src/lib/runscript.h
@@ -1,36 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula RUNSCRIPT Structure definition for FileDaemon and Director
  * Eric Bollengier May 2006
  * Version $Id$
  */
- 
+
 
 #ifndef __RUNSCRIPT_H_
 #define __RUNSCRIPT_H_ 1
@@ -41,17 +29,17 @@
  *
  * #define USE_RUNSCRIPT
  * #include "lib/runscript.h"
- * 
+ *
  * RUNSCRIPT *script = new_runscript();
  * script->set_command("/bin/sleep 20");
  * script->on_failure = true;
  * script->when = SCRIPT_After;
- * 
+ *
  * script->run("LabelBefore");  // the label must contain "Before" or "After" special keyword
  * free_runscript(script);
  */
 
-/* 
+/*
  * RUNSCRIPT->when can take following bit values:
  */
 enum {
@@ -64,7 +52,7 @@ enum {
 
 enum {
    SHELL_CMD   = '|',
-   CONSOLE_CMD = '@' 
+   CONSOLE_CMD = '@'
 };
 
 /*
@@ -97,13 +85,13 @@ public:
 };
 
 /* create new RUNSCRIPT (set all value to 0) */
-RUNSCRIPT *new_runscript();           
+RUNSCRIPT *new_runscript();
 
 /* create new RUNSCRIPT from an other */
 RUNSCRIPT *copy_runscript(RUNSCRIPT *src);
 
 /* launch each script from runscripts*/
-int run_scripts(JCR *jcr, alist *runscripts, const char *name); 
+int run_scripts(JCR *jcr, alist *runscripts, const char *name);
 
 /* free RUNSCRIPT (and all POOLMEM) */
 void free_runscript(RUNSCRIPT *script);
diff --git a/src/lib/rwlock.c b/src/lib/rwlock.c
index bc001ac..a077a66 100644
--- a/src/lib/rwlock.c
+++ b/src/lib/rwlock.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Thread Read/Write locking code. It permits
@@ -254,7 +242,7 @@ int rwl_writelock_p(brwlock_t *rwl, const char *file, int line)
       rwl->w_active++;                /* we are running */
       rwl->writer_id = pthread_self(); /* save writer thread's id */
       lmgr_post_lock();
-   } 
+   }
    pthread_mutex_unlock(&rwl->mutex);
    return stat;
 }
diff --git a/src/lib/rwlock.h b/src/lib/rwlock.h
index 334938b..ee5c947 100644
--- a/src/lib/rwlock.h
+++ b/src/lib/rwlock.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula Thread Read/Write locking code. It permits
diff --git a/src/lib/scan.c b/src/lib/scan.c
index d8dfab3..1581365 100644
--- a/src/lib/scan.c
+++ b/src/lib/scan.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   scan.c -- scanning routines for Bacula
@@ -172,13 +160,13 @@ int fstrsch(const char *a, const char *b)   /* folded case search */
  * Called with pointer to pointer to command line. This
  *   pointer is updated to point to the remainder of the
  *   command line.
- * 
+ *
  * Returns pointer to next argument -- don't store the result
  *   in the pointer you passed as an argument ...
  *   The next argument is terminated by a space unless within
  *   quotes. Double quote characters (unless preceded by a \) are
  *   stripped.
- *   
+ *
  */
 char *next_arg(char **s)
 {
@@ -264,14 +252,14 @@ int parse_args(POOLMEM *cmd, POOLMEM **args, int *argc,
  * This routine parses the input command line.
  *   It makes a copy in args, then builds an
  *   argc, argk, but no argv (values).
- *   This routine is useful for scanning command lines where the data 
+ *   This routine is useful for scanning command lines where the data
  *   is a filename and no keywords are expected.  If we scan a filename
  *   for keywords, any = in the filename will be interpreted as the
  *   end of a keyword, and this is not good.
  *
  *  argc = count of arguments
  *  argk[i] = argument keyword (part preceding =)
- *  argv[i] = NULL                         
+ *  argv[i] = NULL
  *
  *  example:  arg1 arg2=abc arg3=
  *
@@ -363,6 +351,10 @@ void split_path_and_filename(const char *fname, POOLMEM **path, int *pnl,
 
 /*
  * Extremely simple sscanf. Handles only %(u,d,ld,qd,qu,lu,lld,llu,c,nns)
+ *
+ * Note, BIG is the default maximum length when no length
+ *   has been specified for %s. If it is not big enough, then
+ *   simply add a length such as %10000s.
  */
 const int BIG = 1000;
 int bsscanf(const char *buf, const char *fmt, ...)
diff --git a/src/lib/sellist.c b/src/lib/sellist.c
index 34d74df..0997068 100644
--- a/src/lib/sellist.c
+++ b/src/lib/sellist.c
@@ -1,29 +1,17 @@
 /*
-   Bacula(R) - The Network Backup Solution
-
-   Copyright (C) 2011-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(R) 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.
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2011-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 /*
  *  Kern Sibbald, January  MMXII
@@ -43,11 +31,12 @@
 int64_t sellist::next()
 {
    errmsg = NULL;
-   if (beg <= end) {
+   if (beg <= end) {     /* scan done? */
+      //printf("Return %lld\n", beg);
       return beg++;
    }
    if (e == NULL) {
-      goto bail_out;
+      goto bail_out;      /* nothing to scan */
    }
    /*
     * As we walk the list, we set EOF in
@@ -55,13 +44,12 @@ int64_t sellist::next()
     *   but save and then restore the character.
     */
    for (p=e; p && *p; p=e) {
+      esave = hsave = 0;
       /* Check for list */
-      e = strchr(p, ',');
-      if (e) {
+      e = strpbrk(p, ", ");
+      if (e) {                       /* have list */
          esave = *e;
          *e++ = 0;
-      } else {
-         esave = 0;
       }
       /* Check for range */
       h = strchr(p, '-');             /* range? */
@@ -69,7 +57,7 @@ int64_t sellist::next()
          errmsg = _("Negative numbers not permitted.\n");
          goto bail_out;
       }
-      if (h) {
+      if (h) {                        /* have range */
          hsave = *h;
          *h++ = 0;
          if (!is_an_integer(h)) {
@@ -83,13 +71,25 @@ int64_t sellist::next()
          }
          beg = str_to_int64(p);
          end = str_to_int64(h);
-         if (end < beg) {
+         //printf("beg=%lld end=%lld\n", beg, end);
+         if (end <= beg) {
             errmsg = _("Range end not bigger than start.\n");
             goto bail_out;
          }
-      } else {
-         hsave = 0;
+      } else {                           /* not list, not range */
          skip_spaces(&p);
+         /* Check for abort (.) */
+         if (*p == '.') {
+            errmsg = _("User cancel requested.\n");
+            goto bail_out;
+         }
+         /* Check for all keyword */
+         if (strncasecmp(p, "all", 3) == 0) {
+            all = true;
+            errmsg = NULL;
+            //printf("Return 0 i.e. all\n");
+            return 0;
+         }
          if (!is_an_integer(p)) {
             errmsg = _("Input value is not an integer.\n");
             goto bail_out;
@@ -106,19 +106,24 @@ int64_t sellist::next()
          errmsg = _("Selection items must be be greater than zero.\n");
          goto bail_out;
       }
-      if (end > max) {
-         errmsg = _("Selection item too large.\n");
-         goto bail_out;
-      }
       if (beg <= end) {
+         //printf("Return %lld\n", beg);
          return beg++;
       }
    }
+   //printf("Rtn=-1. End of items\n");
    /* End of items */
-   errmsg = NULL;      /* No error */
-   return -1;
+   begin();
+   e = NULL;
+   return -1;          /* No error */
 
 bail_out:
+   if (errmsg) {
+      //printf("Bail out rtn=-1. p=%c err=%s\n", *p, errmsg);
+   } else {
+      //printf("Rtn=-1. End of items\n");
+   }
+   e = NULL;
    return -1;          /* Error, errmsg set */
 }
 
@@ -128,71 +133,139 @@ bail_out:
  *   returns false on error in string
  *   returns true if OK
  */
-bool sellist::set_string(char *string, bool scan=true)
+bool sellist::set_string(const char *string, bool scan=true)
 {
+   bool ok = true;
    /*
     * Copy string, because we write into it,
     *  then scan through it once to find any
     *  errors.
     */
+   if (expanded) {
+      free(expanded);
+      expanded = NULL;
+   }
    if (str) {
       free(str);
    }
-   e = str = bstrdup(string);
-   end = 0;
-   beg = 1;
+   str = bstrdup(string);
+   begin();
    num_items = 0;
    if (scan) {
       while (next() >= 0) {
          num_items++;
       }
-      if (get_errmsg()) {
-         return false;
+      ok = get_errmsg() == NULL;
+   }
+   if (ok) {
+      begin();
+   } else {
+      e = NULL;
+   }
+   return ok;
+}
+
+/*
+ * Get the expanded list of values separated by commas,
+ * useful for SQL queries
+ */
+char *sellist::get_expanded_list()
+{
+   int32_t expandedsize = 512;
+   int32_t len;
+   int64_t val;
+   char    *p, *tmp;
+   char    ed1[50];
+
+   if (!expanded) {
+      p = expanded = (char *)malloc(expandedsize * sizeof(char));
+      *p = 0;
+
+      while ((val = next()) >= 0) {
+         edit_int64(val, ed1);
+         len = strlen(ed1);
+
+         /* Alloc more space if needed */
+         if ((p + len + 1) > (expanded + expandedsize)) {
+            expandedsize = expandedsize * 2;
+
+            tmp = (char *) realloc(expanded, expandedsize);
+
+            /* Compute new addresses for p and expanded */
+            p = tmp + (p - expanded);
+            expanded = tmp;
+         }
+
+         /* If not at the begining of the string, add a "," */
+         if (p != expanded) {
+            strcpy(p, ",");
+            p++;
+         }
+
+         strcpy(p, ed1);
+         p += len;
       }
-      e = str;
-      end = 0;
-      beg = 1;
    }
-   return true;
+   return expanded;
 }
 
 #ifdef TEST_PROGRAM
+
+/* Test input string */
+const char *sinp[] = {
+   "1,70",
+   "1",
+   "256",
+   "1-5",
+   "1-5,7",
+   "1 10 20 30",
+   "1-5,7,20 21",
+   "all",
+   "12a",    /* error */
+   "12-11",  /* error */
+   "12-13a", /* error */
+   "a123",   /* error */
+   NULL
+};
+
+/* Scanned output string -- or ERROR if input is illegal */
+const char *sout[] = {
+   "1,70",
+   "1",
+   "256",
+   "1,2,3,4,5",
+   "1,2,3,4,5,7",
+   "1,10,20,30",
+   "1,2,3,4,5,7,20,21",
+   "0",
+   "ERROR",
+   "ERROR",
+   "ERROR",
+   "ERROR",
+   NULL
+};
+
 int main(int argc, char **argv, char **env)
 {
-   char *msg;
+   const char *msg;
    sellist sl;
-   int i;
+   int x;
 
-   if (!argv[1]) {
-      msg = _("No input string given.\n");
-      goto bail_out;
-   }
-   Dmsg1(000, "argv[1]=%s\n", argv[1]);
-
-   strip_trailing_junk(argv[1]);
-   sl.set_string(argv[1]);
-   if ((msg = sl.get_errmsg())) {
-      goto bail_out;
-   }
-   while ((i=sl.next()) >= 0) {
-      Dmsg1(000, "%d\n", i);
-   }
-   if ((msg = sl.get_errmsg())) {
-      goto bail_out;
-   }
-   printf("\nPass 2\n");
-   sl.set_string(argv[1]);
-   while ((i=sl.next()) >= 0) {
-      Dmsg1(000, "%d\n", i);
-   }
-   if ((msg = sl.get_errmsg())) {
-      goto bail_out;
+   for (x=0; sinp[x] != NULL; x++) {
+      if (!sl.set_string(sinp[x], true)) {
+         printf("ERR: input: %s ERR=%s", sinp[x], sl.get_errmsg());
+         continue;
+      }
+      msg = sl.get_expanded_list();
+      if (sl.get_errmsg() == NULL && strcmp(msg, sout[x]) == 0) {
+         printf("OK: input: %s output: %s\n", sinp[x], msg);
+      } else {
+         printf("ERR: input: %s gave output: %s ERR=%s\n", sinp[x], msg,
+            sl.get_errmsg());
+      }
    }
+   printf("\n");
    return 0;
 
-bail_out:
-   Dmsg1(000, "Error: %s\n", msg);
-   return 1;
-
 }
 #endif /* TEST_PROGRAM */
diff --git a/src/lib/sellist.h b/src/lib/sellist.h
index b87e39c..18389e9 100644
--- a/src/lib/sellist.h
+++ b/src/lib/sellist.h
@@ -1,29 +1,17 @@
 /*
-   Bacula(R) - The Network Backup Solution
+   Bacula® - The Network Backup Solution
 
-   Copyright (C) 2011-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2011-2014 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.
+   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 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 may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
-   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(R) 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.
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 /*
  *  Kern Sibbald, January  MMXII
@@ -33,6 +21,9 @@
  *   are also permitted.
  */
 
+#ifndef __SELLIST_H_
+#define __SELLIST_H_
+
 /*
  * Loop var through each member of list
  */
@@ -44,20 +35,24 @@ class sellist : public SMARTALLOC {
    const char *errmsg;
    char *p, *e, *h;
    char esave, hsave;
+   bool all;
    int64_t beg, end;
-   int64_t max;
    int num_items;
    char *str;
+   char *expanded;
 public:
    sellist();
    ~sellist();
-   bool set_string(char *string, bool scan);
+   bool set_string(const char *string, bool scan);
+   bool is_all() { return all; };
    int64_t first();
    int64_t next();
    void begin();
    /* size() valid only if scan enabled on string */
    int size() const { return num_items; };
    char *get_list() { return str; };
+   /* get the list of all jobids */
+   char *get_expanded_list();
    /* if errmsg == NULL, no error */
    const char *get_errmsg() { return errmsg; };
 };
@@ -68,21 +63,25 @@ public:
 inline sellist::sellist()
 {
    num_items = 0;
-   max = 99999;
+   expanded = NULL;
    str = NULL;
    e = NULL;
    errmsg = NULL;
-}   
+}
 
 /*
  * Destroy the list
  */
-inline sellist::~sellist() 
+inline sellist::~sellist()
 {
    if (str) {
       free(str);
       str = NULL;
    }
+   if (expanded) {
+      free(expanded);
+      expanded = NULL;
+   }
 }
 
 /*
@@ -104,5 +103,8 @@ inline void sellist::begin()
    e = str;
    end = 0;
    beg = 1;
+   all = false;
    errmsg = NULL;
 }
+
+#endif /* __SELLIST_H_ */
diff --git a/src/lib/serial.c b/src/lib/serial.c
index 2a2e48d..560c6d6 100644
--- a/src/lib/serial.c
+++ b/src/lib/serial.c
@@ -6,29 +6,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 
@@ -172,7 +160,7 @@ void serial_float64(uint8_t * * const ptr, const float64_t v)
 
 void serial_string(uint8_t * * const ptr, const char * const str)
 {
-   int i;                   
+   int i;
    char *dest = (char *)*ptr;
    char *src = (char *)str;
    for (i=0; src[i] != 0;  i++) {
@@ -306,7 +294,7 @@ float64_t unserial_float64(uint8_t * * const ptr)
 
 void unserial_string(uint8_t * * const ptr, char * const str, int max)
 {
-   int i;                   
+   int i;
    char *src = (char*)(*ptr);
    char *dest = str;
    for (i=0; i<max && src[i] != 0;  i++) {
diff --git a/src/lib/serial.h b/src/lib/serial.h
index ca35d06..fe73914 100644
--- a/src/lib/serial.h
+++ b/src/lib/serial.h
@@ -1,29 +1,17 @@
 /*
    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 ofKern 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.
+   Copyright (C) 2000-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 /*
  *
diff --git a/src/lib/signal.c b/src/lib/signal.c
index 548466c..e23f274 100644
--- a/src/lib/signal.c
+++ b/src/lib/signal.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Signal handlers for Bacula daemons
@@ -49,6 +37,7 @@
 #endif
 
 extern char my_name[];
+extern char fail_time[];
 extern char *exepath;
 extern char *exename;
 extern bool prt_kaboom;
@@ -78,7 +67,7 @@ extern void dbg_print_plugin(FILE *fp);
 extern void dbg_print_lock(FILE *fp);
 
 /*
- * !!! WARNING !!! 
+ * !!! WARNING !!!
  *
  * This function should be used ONLY after a violent signal. We walk through the
  * JCR chain without locking, Bacula should not be running.
@@ -87,16 +76,16 @@ static void dbg_print_bacula()
 {
    char buf[512];
 
-   snprintf(buf, sizeof(buf), "%s/%s.%d.bactrace", 
+   snprintf(buf, sizeof(buf), "%s/%s.%d.lockdump",
             working_directory, my_name, (int)getpid());
    FILE *fp = fopen(buf, "a+") ;
    if (!fp) {
       fp = stderr;
    }
-   
+
    fprintf(stderr, "Dumping: %s\n", buf);
 
-   /* Print also B_DB and RWLOCK structure 
+   /* Print also B_DB and RWLOCK structure
     * Can add more info about JCR with dbg_jcr_add_hook()
     */
    dbg_print_lock(fp);
@@ -108,7 +97,7 @@ static void dbg_print_bacula()
 #ifdef direct_print
       if (prt_kaboom) {
          rewind(fp);
-         printf("\n\n ==== bactrace output ====\n\n");
+         printf("\n\n ==== lockdump output ====\n\n");
          while (fgets(buf, (int)sizeof(buf), fp) != NULL) {
             printf("%s", buf);
          }
@@ -117,7 +106,7 @@ static void dbg_print_bacula()
 #else
       if (prt_kaboom) {
          char buf1[512];
-         printf("\n\n ==== bactrace output ====\n\n");
+         printf("\n\n ==== lockdump output ====\n\n");
          snprintf(buf1, sizeof(buf1), "/bin/cat %s", buf);
          system(buf1);
          printf(" ==== End baktrace output ====\n\n");
@@ -134,6 +123,7 @@ extern "C" void signal_handler(int sig)
 {
    static int already_dead = 0;
    int chld_status=-1;
+   utime_t now;
 
    /* If we come back more than once, get out fast! */
    if (already_dead) {
@@ -144,14 +134,21 @@ extern "C" void signal_handler(int sig)
    if (sig == SIGCHLD || sig == SIGUSR2) {
       return;
    }
+   /* FreeBSD seems to generate a signal of 0, which is of course undefined */
+   if (sig == 0) {
+      return;
+   }
    already_dead++;
    /* Don't use Emsg here as it may lock and thus block us */
    if (sig == SIGTERM) {
        syslog(LOG_DAEMON|LOG_ERR, "Shutting down Bacula service: %s ...\n", my_name);
    } else {
       fprintf(stderr, _("Bacula interrupted by signal %d: %s\n"), sig, get_signal_name(sig));
-      syslog(LOG_DAEMON|LOG_ERR, 
+      syslog(LOG_DAEMON|LOG_ERR,
          _("Bacula interrupted by signal %d: %s\n"), sig, get_signal_name(sig));
+      /* Edit current time for showing in the dump */
+      now = time(NULL);
+      bstrftimes(fail_time, 30, now);
    }
 
 #ifdef TRACEBACK
@@ -164,8 +161,8 @@ extern "C" void signal_handler(int sig)
       pid_t pid;
       int exelen = strlen(exepath);
 
-      fprintf(stderr, _("Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"),
-              exename, my_name, sig, get_signal_name(sig));
+      fprintf(stderr, _("Kaboom! %s, %s got signal %d - %s at %s. Attempting traceback.\n"),
+              exename, my_name, sig, get_signal_name(sig), fail_time);
       fprintf(stderr, _("Kaboom! exepath=%s\n"), exepath);
 
       if (exelen + 12 > (int)sizeof(btpath)) {
@@ -196,7 +193,7 @@ extern "C" void signal_handler(int sig)
       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 */
+      /* print information about the current state into working/<file>.lockdump */
       dbg_print_bacula();
 #endif
 
@@ -243,15 +240,15 @@ extern "C" void signal_handler(int sig)
       if (WEXITSTATUS(chld_status) == 0) {
          fprintf(stderr, _("It looks like the traceback worked...\n"));
       } else {
-         fprintf(stderr, _("The btraceback call returned %d\n"), 
+         fprintf(stderr, _("The btraceback call returned %d\n"),
                            WEXITSTATUS(chld_status));
       }
       /* If we want it printed, do so */
 #ifdef direct_print
       if (prt_kaboom) {
          FILE *fd;
-         snprintf(buf, sizeof(buf), "%s/bacula.%s.traceback", working_directory, pid_buf); 
-         fd = fopen(buf, "r"); 
+         snprintf(buf, sizeof(buf), "%s/bacula.%s.traceback", working_directory, pid_buf);
+         fd = fopen(buf, "r");
          if (fd != NULL) {
             printf("\n\n ==== Traceback output ====\n\n");
             while (fgets(buf, (int)sizeof(buf), fd) != NULL) {
@@ -271,7 +268,7 @@ extern "C" void signal_handler(int sig)
 #endif
 
 #ifndef DEVELOPER /* When DEVELOPER set, this is done above */
-      /* print information about the current state into working/<file>.bactrace */
+      /* print information about the current state into working/<file>.lockdump */
       dbg_print_bacula();
 #endif
 
@@ -403,7 +400,7 @@ void init_signals(void terminate(int sig))
    sigaction(SIGEMT,    &sighandle, NULL);
 #endif
 #ifdef SIGIOT
-   sigaction(SIGIOT,    &sighandle, NULL);                     
+   sigaction(SIGIOT,    &sighandle, NULL);
 #endif
    sigaction(SIGBUS,    &sighandle, NULL);
    sigaction(SIGFPE,    &sighandle, NULL);
diff --git a/src/lib/smartall.c b/src/lib/smartall.c
index 7032272..b515419 100644
--- a/src/lib/smartall.c
+++ b/src/lib/smartall.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
 
@@ -144,7 +132,7 @@ static void *smalloc(const char *fname, int lineno, unsigned int nbytes)
    } else {
       Emsg0(M_ABORT, 0, _("Out of memory\n"));
    }
-   Dmsg4(1150, "smalloc %d at %p from %s:%d\n", nbytes, buf, fname, lineno);
+   Dmsg4(DT_MEMORY|50, "smalloc %d at %p from %s:%d\n", nbytes, buf, fname, lineno);
 #if    SMALLOC_SANITY_CHECK > 0
    if (sm_bytes > SMALLOC_SANITY_CHECK) {
       Emsg0(M_ABORT, 0, _("Too much memory used."));
@@ -185,7 +173,7 @@ void sm_free(const char *file, int line, void *fp)
    struct abufhead *head = (struct abufhead *)cp;
 
    P(mutex);
-   Dmsg4(1150, "sm_free %d at %p from %s:%d\n",
+   Dmsg4(DT_MEMORY|50, "sm_free %d at %p from %s:%d\n",
          head->ablen, fp,
          get_basename(head->abfname), head->ablineno);
 
@@ -212,7 +200,7 @@ void sm_free(const char *file, int line, void *fp)
 
    if (((unsigned char *)cp)[head->ablen - 1] != ((((intptr_t) cp) & 0xFF) ^ 0xC5)) {
       V(mutex);
-      Emsg6(M_ABORT, 0, _("Overrun buffer: len=%d addr=%p allocated: %s:%d called from %s:%d\n"), 
+      Emsg6(M_ABORT, 0, _("Overrun buffer: len=%d addr=%p allocated: %s:%d called from %s:%d\n"),
          head->ablen, fp, get_basename(head->abfname), head->ablineno, file, line);
    }
    if (sm_buffers > 0) {
@@ -288,7 +276,7 @@ void *sm_realloc(const char *fname, int lineno, void *ptr, unsigned int size)
    void *buf;
    char *cp = (char *) ptr;
 
-   Dmsg4(1400, "sm_realloc %s:%d %p %d\n", get_basename(fname), (uint32_t)lineno, ptr, size);
+   Dmsg4(DT_MEMORY|50, "sm_realloc %s:%d %p %d\n", get_basename(fname), (uint32_t)lineno, ptr, size);
    if (size <= 0) {
       e_msg(fname, lineno, M_ABORT, 0, _("sm_realloc size: %d\n"), size);
    }
@@ -328,7 +316,7 @@ void *sm_realloc(const char *fname, int lineno, void *ptr, unsigned int size)
       /* All done.  Free and dechain the original buffer. */
       sm_free(fname, lineno, ptr);
    }
-   Dmsg4(4150, _("sm_realloc %d at %p from %s:%d\n"), size, buf, get_basename(fname), (uint32_t)lineno);
+   Dmsg4(DT_MEMORY|60, _("sm_realloc %d at %p from %s:%d\n"), size, buf, get_basename(fname), (uint32_t)lineno);
    return buf;
 }
 
@@ -359,7 +347,7 @@ void *actuallycalloc(unsigned int nelem, unsigned int elsize)
 
 void *actuallyrealloc(void *ptr, unsigned int size)
 {
-   Dmsg2(1400, "Actuallyrealloc %p %d\n", ptr, size);
+   Dmsg2(DT_MEMORY|40, "Actuallyrealloc %p %d\n", ptr, size);
    return realloc(ptr, size);
 }
 
@@ -374,7 +362,7 @@ void actuallyfree(void *cp)
 /*  SM_DUMP  --  Print orphaned buffers (and dump them if BUFDUMP is
  *               True).
  */
-void sm_dump(bool bufdump, bool in_use) 
+void sm_dump(bool bufdump, bool in_use)
 {
    struct abufhead *ap;
 
@@ -399,7 +387,7 @@ void sm_dump(bool bufdump, bool in_use)
          uint32_t memsize = ap->ablen - (HEAD_SIZE + 1);
          char *cp = ((char *)ap) + HEAD_SIZE;
 
-         Pmsg6(0, "%s buffer: %s %d bytes at %p from %s:%d\n", 
+         Pmsg6(0, "%s buffer: %s %d bytes at %p from %s:%d\n",
             in_use?"In use":"Orphaned",
             my_name, memsize, cp, get_basename(ap->abfname), ap->ablineno);
          if (bufdump) {
@@ -465,7 +453,7 @@ int sm_check_rtn(const char *fname, int lineno, bool bufdump)
       }
       badbuf |= bad;
       if (bad) {
-         Pmsg2(0, 
+         Pmsg2(0,
             _("\nDamaged buffers found at %s:%d\n"), get_basename(fname), (uint32_t)lineno);
 
          if (bad & 0x1) {
@@ -490,7 +478,7 @@ int sm_check_rtn(const char *fname, int lineno, bool bufdump)
             uint32_t memsize = ap->ablen - (HEAD_SIZE + 1);
             char errmsg[80];
 
-            Pmsg4(0, 
+            Pmsg4(0,
               _("Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"),
                memsize, ap->ablineno, my_name, get_basename(ap->abfname)
             );
diff --git a/src/lib/smartall.h b/src/lib/smartall.h
index 4973f4f..de2a040 100644
--- a/src/lib/smartall.h
+++ b/src/lib/smartall.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
 
@@ -139,7 +127,7 @@ void  operator delete(void *ptr, const char * /*fname*/, int /*line*/)
 {
    free(ptr);
 }
-void  operator delete[](void *ptr, size_t /*i*/, 
+void  operator delete[](void *ptr, size_t /*i*/,
                         const char * /*fname*/, int /*line*/)
 {
    free(ptr);
@@ -175,5 +163,5 @@ class SMARTALLOC
       }
 };
 #endif  /* SMARTALLOC */
-   
+
 #endif  /* !SMARTALLOC_H */
diff --git a/src/lib/status.h b/src/lib/status.h
index 607d126..8dacd18 100644
--- a/src/lib/status.h
+++ b/src/lib/status.h
@@ -1,32 +1,20 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2008-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2008-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- *  Status packet definition that is used in both the SD and FD. It 
+ *  Status packet definition that is used in both the SD and FD. It
  *    permits Win32 to call output_status() and get the output back
  *    at the callback address line by line, and for Linux code,
  *    the output can be sent directly to a BSOCK.
@@ -48,7 +36,8 @@ public:
   BSOCK *bs;                       /* used on Unix machines */
   void *context;                   /* Win32 */
   void (*callback)(const char *msg, int len, void *context);  /* Win32 */
-  bool api;                        /* set if we want API output */
+  char api_opts[MAX_NAME_LENGTH];
+  int  api;                        /* set if we want API output, with api level */
 
   /* Methods */
   STATUS_PKT() { memset(this, 0, sizeof(STATUS_PKT)); };
@@ -57,5 +46,176 @@ public:
 
 extern void output_status(STATUS_PKT *sp);
 
+/*
+ * Send to bsock (Director or Console)
+ */
+static void sendit(const char *msg, int len, STATUS_PKT *sp)
+{
+   if (sp->bs) {
+      BSOCK *user = sp->bs;
+      user->msg = check_pool_memory_size(user->msg, len+1);
+      memcpy(user->msg, msg, len+1);
+      user->msglen = len+1;
+      user->send();
+   } else {
+      sp->callback(msg, len, sp->context);
+   }
+}
+
+/* common to SD/FD */
+static void list_terminated_jobs(STATUS_PKT *sp)
+{
+   char dt[MAX_TIME_LENGTH], b1[30], b2[30];
+   char level[10];
+   struct s_last_job *je;
+   const char *msg;
+
+   msg =  _("\nTerminated Jobs:\n");
+   if (!sp->api) sendit(msg, strlen(msg), sp);
+   if (last_jobs->size() == 0) {
+      if (!sp->api) sendit("====\n", 5, sp);
+      return;
+   }
+   lock_last_jobs_list();
+   msg =  _(" JobId  Level    Files      Bytes   Status   Finished        Name \n");
+   if (!sp->api) sendit(msg, strlen(msg), sp);
+   msg =  _("===================================================================\n");
+   if (!sp->api) sendit(msg, strlen(msg), sp);
+   foreach_dlist(je, last_jobs) {
+      char JobName[MAX_NAME_LENGTH];
+      const char *termstat;
+      char buf[1000];
+
+      bstrftime_nc(dt, sizeof(dt), je->end_time);
+      switch (je->JobType) {
+      case JT_ADMIN:
+      case JT_RESTORE:
+         bstrncpy(level, "    ", sizeof(level));
+         break;
+      default:
+         bstrncpy(level, job_level_to_str(je->JobLevel), sizeof(level));
+         level[4] = 0;
+         break;
+      }
+      switch (je->JobStatus) {
+      case JS_Created:
+         termstat = _("Created");
+         break;
+      case JS_FatalError:
+      case JS_ErrorTerminated:
+         termstat = _("Error");
+         break;
+      case JS_Differences:
+         termstat = _("Diffs");
+         break;
+      case JS_Canceled:
+         termstat = _("Cancel");
+         break;
+      case JS_Terminated:
+         termstat = _("OK");
+         break;
+      case JS_Warnings:
+         termstat = _("OK -- with warnings");
+         break;
+         break;
+      default:
+         termstat = _("Other");
+         break;
+      }
+      bstrncpy(JobName, je->Job, sizeof(JobName));
+      /* There are three periods after the Job name */
+      char *p;
+      for (int i=0; i<3; i++) {
+         if ((p=strrchr(JobName, '.')) != NULL) {
+            *p = 0;
+         }
+      }
+      if (sp->api == 1) {
+         bsnprintf(buf, sizeof(buf), _("%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"),
+            je->JobId,
+            level,
+            edit_uint64_with_commas(je->JobFiles, b1),
+            edit_uint64_with_suffix(je->JobBytes, b2),
+            termstat,
+            dt, JobName);
+      } else {
+         bsnprintf(buf, sizeof(buf), _("%6d  %-6s %8s %10s  %-7s  %-8s %s\n"),
+            je->JobId,
+            level,
+            edit_uint64_with_commas(je->JobFiles, b1),
+            edit_uint64_with_suffix(je->JobBytes, b2),
+            termstat,
+            dt, JobName);
+      }
+      sendit(buf, strlen(buf), sp);
+   }
+   unlock_last_jobs_list();
+   if (!sp->api) {
+      sendit("====\n", 5, sp);
+   }
+}
+
+#if defined(HAVE_WIN32)
+int bacstat = 0;
+
+#ifdef FILE_DAEMON
+# define BAC_COMPONENT "Client"
+#else
+# define BAC_COMPONENT "Storage"
+#endif
+
+/* Return a one line status for the tray monitor */
+char *bac_status(char *buf, int buf_len)
+{
+   JCR *njcr;
+   const char *termstat = _("Bacula " BAC_COMPONENT ": Idle");
+   struct s_last_job *job;
+   int stat = 0;                      /* Idle */
+
+   if (!last_jobs) {
+      goto done;
+   }
+   Dmsg0(1000, "Begin bac_status jcr loop.\n");
+   foreach_jcr(njcr) {
+      if (njcr->JobId != 0) {
+         stat = JS_Running;
+         termstat = _("Bacula " BAC_COMPONENT ": Running");
+         break;
+      }
+   }
+   endeach_jcr(njcr);
+
+   if (stat != 0) {
+      goto done;
+   }
+   if (last_jobs->size() > 0) {
+      job = (struct s_last_job *)last_jobs->last();
+      stat = job->JobStatus;
+      switch (job->JobStatus) {
+      case JS_Canceled:
+         termstat = _("Bacula " BAC_COMPONENT ": Last Job Canceled");
+         break;
+      case JS_ErrorTerminated:
+      case JS_FatalError:
+         termstat = _("Bacula " BAC_COMPONENT ": Last Job Failed");
+         break;
+      default:
+         if (job->Errors) {
+            termstat = _("Bacula " BAC_COMPONENT ": Last Job had Warnings");
+         }
+         break;
+      }
+   }
+   Dmsg0(1000, "End bac_status jcr loop.\n");
+done:
+   bacstat = stat;
+   if (buf) {
+      bstrncpy(buf, termstat, buf_len);
+   }
+   return buf;
+}
+
+#endif /* HAVE_WIN32 */
+
 
 #endif
diff --git a/src/lib/tls.c b/src/lib/tls.c
index fc447c2..32d4c75 100644
--- a/src/lib/tls.c
+++ b/src/lib/tls.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * tls.c TLS support functions
@@ -229,12 +217,12 @@ void free_tls_context(TLS_CONTEXT *ctx)
    free(ctx);
 }
 
-bool get_tls_require(TLS_CONTEXT *ctx) 
+bool get_tls_require(TLS_CONTEXT *ctx)
 {
    return ctx->tls_require;
 }
 
-bool get_tls_enable(TLS_CONTEXT *ctx) 
+bool get_tls_enable(TLS_CONTEXT *ctx)
 {
    return ctx->tls_enable;
 }
@@ -293,6 +281,7 @@ bool tls_postconnect_verify_host(JCR *jcr, TLS_CONNECTION *tls, const char *host
    bool auth_success = false;
    int extensions;
    int i, j;
+   const char *pval, *phost;
 
    int cnLastPos = -1;
    X509_NAME_ENTRY *neCN;
@@ -300,8 +289,9 @@ bool tls_postconnect_verify_host(JCR *jcr, TLS_CONNECTION *tls, const char *host
 
    /* Check if peer provided a certificate */
    if (!(cert = SSL_get_peer_certificate(ssl))) {
-      Qmsg1(jcr, M_ERROR, 0, 
+      Qmsg1(jcr, M_ERROR, 0,
             _("Peer %s failed to present a TLS certificate\n"), host);
+      Dmsg1(250, _("Peer %s failed to present a TLS certificate\n"), host);
       return false;
    }
 
@@ -358,13 +348,23 @@ bool tls_postconnect_verify_host(JCR *jcr, TLS_CONNECTION *tls, const char *host
             val = method->i2v(method, extstr, NULL);
 
             /* dNSName shortname is "DNS" */
+            Dmsg0(250, "Check DNS name\n");
             for (j = 0; j < sk_CONF_VALUE_num(val); j++) {
                nval = sk_CONF_VALUE_value(val, j);
                if (strcmp(nval->name, "DNS") == 0) {
-                  if (strcasecmp(nval->value, host) == 0) {
+                  if (strncasecmp(nval->value, "*.", 2) == 0) {
+                     Dmsg0(250, "Wildcard Certificate\n");
+                     pval = strstr(nval->value, ".");
+                     phost = strstr(host, ".");
+                     if (pval && phost && (strcasecmp(pval, phost) == 0)) {
+                        auth_success = true;
+                        goto success;
+                     }
+                  } else if (strcasecmp(nval->value, host) == 0) {
                      auth_success = true;
                      goto success;
                   }
+                  Dmsg2(250, "No DNS name match. Host=%s cert=%s\n", host, nval->value);
                }
             }
          }
@@ -373,6 +373,7 @@ bool tls_postconnect_verify_host(JCR *jcr, TLS_CONNECTION *tls, const char *host
 
    /* Try verifying against the subject name */
    if (!auth_success) {
+      Dmsg0(250, "Check subject name name\n");
       if ((subject = X509_get_subject_name(cert)) != NULL) {
          /* Loop through all CNs */
          for (;;) {
@@ -382,17 +383,26 @@ bool tls_postconnect_verify_host(JCR *jcr, TLS_CONNECTION *tls, const char *host
             }
             neCN = X509_NAME_get_entry(subject, cnLastPos);
             asn1CN = X509_NAME_ENTRY_get_data(neCN);
-            if (strcasecmp((const char*)asn1CN->data, host) == 0) {
+            if (strncasecmp((const char*)asn1CN->data, "*.", 2) == 0) {
+               /* wildcard certificate */
+               Dmsg0(250, "Wildcard Certificate\n");
+               pval = strstr((const char*)asn1CN->data, ".");
+               phost = strstr(host, ".");
+               if (pval && phost && (strcasecmp(pval, phost) == 0)) {
+                  auth_success = true;
+                  goto success;
+               }
+            } else if (strcasecmp((const char*)asn1CN->data, host) == 0) {
                auth_success = true;
                break;
             }
+            Dmsg2(250, "No subject name match. Host=%s cert=%s\n", host, (const char*)asn1CN->data);
          }
       }
    }
 
 success:
    X509_free(cert);
-
    return auth_success;
 }
 
@@ -474,7 +484,7 @@ static inline bool openssl_bsock_session_start(BSOCK *bsock, bool server)
    bsock->clear_timed_out();
    bsock->set_killable(false);
 
-   for (;;) { 
+   for (;;) {
       if (server) {
          err = SSL_accept(tls->openssl);
       } else {
@@ -624,7 +634,7 @@ static inline int openssl_bsock_readwrite(BSOCK *bsock, char *ptr, int nbytes, b
 
    nleft = nbytes;
 
-   while (nleft > 0) { 
+   while (nleft > 0) {
       if (write) {
          nwritten = SSL_write(tls->openssl, ptr, nleft);
       } else {
@@ -702,13 +712,13 @@ cleanup:
 }
 
 
-int tls_bsock_writen(BSOCK *bsock, char *ptr, int32_t nbytes) 
+int tls_bsock_writen(BSOCK *bsock, char *ptr, int32_t nbytes)
 {
    /* SSL_write(bsock->tls->openssl, ptr, nbytes) */
    return openssl_bsock_readwrite(bsock, ptr, nbytes, true);
 }
 
-int tls_bsock_readn(BSOCK *bsock, char *ptr, int32_t nbytes) 
+int tls_bsock_readn(BSOCK *bsock, char *ptr, int32_t nbytes)
 {
    /* SSL_read(bsock->tls->openssl, ptr, nbytes) */
    return openssl_bsock_readwrite(bsock, ptr, nbytes, false);
@@ -737,12 +747,12 @@ void tls_bsock_shutdown(BSOCK *bsock) { }
 
 void free_tls_connection(TLS_CONNECTION *tls) { }
 
-bool get_tls_require(TLS_CONTEXT *ctx) 
+bool get_tls_require(TLS_CONTEXT *ctx)
 {
    return false;
 }
 
-bool get_tls_enable(TLS_CONTEXT *ctx) 
+bool get_tls_enable(TLS_CONTEXT *ctx)
 {
    return false;
 }
diff --git a/src/lib/tls.h b/src/lib/tls.h
index 3740bc1..e9c90eb 100644
--- a/src/lib/tls.h
+++ b/src/lib/tls.h
@@ -1,37 +1,23 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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 two of the GNU Lesser General 
-   Public License as published by the Free Software Foundation plus 
-   additions in the file LICENSE.
+   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 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
-   Lesser 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * tls.h TLS support functions
  *
  * Author: Landon Fuller <landonf at threerings.net>
  *
- * Version $Id$
- *
  * This file was contributed to the Bacula project by Landon Fuller
  * and Three Rings Design, Inc.
  *
diff --git a/src/lib/tree.c b/src/lib/tree.c
index 008e25a..1012f17 100644
--- a/src/lib/tree.c
+++ b/src/lib/tree.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Directory tree build/traverse routines
@@ -102,6 +90,8 @@ TREE_ROOT *new_tree(int count)
    root->cached_path = get_pool_memory(PM_FNAME);
    root->type = TN_ROOT;
    root->fname = "";
+   HL_ENTRY* entry = NULL;
+   root->hardlinks.init(entry, &entry->link, 0, 1);
    return root;
 }
 
@@ -172,6 +162,7 @@ void free_tree(TREE_ROOT *root)
    struct s_mem *mem, *rel;
    uint32_t freed_blocks = 0;
 
+   root->hardlinks.destroy();
    for (mem=root->mem; mem; ) {
       rel = mem;
       mem = mem->next;
@@ -192,7 +183,7 @@ void free_tree(TREE_ROOT *root)
 void tree_add_delta_part(TREE_ROOT *root, TREE_NODE *node,
                          JobId_t JobId, int32_t FileIndex)
 {
-   struct delta_list *elt = 
+   struct delta_list *elt =
       (struct delta_list*) tree_alloc(root, sizeof(struct delta_list));
 
    elt->next = node->delta_list;
@@ -386,7 +377,7 @@ TREE_NODE *tree_cwd(char *path, TREE_ROOT *root, TREE_NODE *node)
    /* Handle relative path */
    if (path[0] == '.' && path[1] == '.' && (IsPathSeparator(path[2]) || path[2] == '\0')) {
       TREE_NODE *parent = node->parent ? node->parent : node;
-      if (path[2] == 0) { 
+      if (path[2] == 0) {
          return parent;
       } else {
          return tree_cwd(path+3, root, parent);
diff --git a/src/lib/tree.h b/src/lib/tree.h
index 3464cb1..f2e7ec6 100644
--- a/src/lib/tree.h
+++ b/src/lib/tree.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Directory tree build/traverse routines
@@ -32,6 +20,8 @@
  *
 */
 
+#include "htable.h"
+
 struct s_mem {
    struct s_mem *next;                /* next buffer */
    int rem;                           /* remaining bytes */
@@ -112,9 +102,17 @@ struct s_tree_root {
    int cached_path_len;               /* length of cached path */
    char *cached_path;                 /* cached current path */
    TREE_NODE *cached_parent;          /* cached parent for above path */
+   htable hardlinks;                  /* references to first occurrence of hardlinks */
 };
 typedef struct s_tree_root TREE_ROOT;
 
+/* hardlink hashtable entry */
+struct s_hl_entry {
+   uint64_t key;
+   hlink link;
+   TREE_NODE *node;
+};
+typedef struct s_hl_entry HL_ENTRY;
 
 /* type values */
 #define TN_ROOT    1                  /* root node */
@@ -130,7 +128,7 @@ TREE_NODE *insert_tree_node(char *path, char *fname, int type,
 TREE_NODE *make_tree_path(char *path, TREE_ROOT *root);
 TREE_NODE *tree_cwd(char *path, TREE_ROOT *root, TREE_NODE *node);
 TREE_NODE *tree_relcwd(char *path, TREE_ROOT *root, TREE_NODE *node);
-void tree_add_delta_part(TREE_ROOT *root, TREE_NODE *node, 
+void tree_add_delta_part(TREE_ROOT *root, TREE_NODE *node,
                          JobId_t JobId, int32_t FileIndex);
 void free_tree(TREE_ROOT *root);
 int tree_getpath(TREE_NODE *node, char *buf, int buf_size);
diff --git a/src/lib/util.c b/src/lib/util.c
index 0f9b985..c64e222 100644
--- a/src/lib/util.c
+++ b/src/lib/util.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   util.c  miscellaneous utility subroutines for Bacula
@@ -188,9 +176,6 @@ void jobstatus_to_ascii(int JobStatus, char *msg, int maxlen)
    case JS_Terminated:
       jobstat = _("OK");
       break;
-   case JS_Incomplete:
-      jobstat = _("Error: incomplete job");
-      break;
    case JS_FatalError:
    case JS_ErrorTerminated:
       jobstat = _("Error");
@@ -394,7 +379,7 @@ const char *job_type_to_str(int type)
    }
    if (!str) {
       str = _("Unknown Type");
-   }   
+   }
    return str;
 }
 
@@ -612,9 +597,7 @@ void make_session_key(char *key, char *seed, int mode)
       LARGE_INTEGER     li;
       DWORD             length;
       FILETIME          ft;
-      char             *p;
 
-      p = s;
       bsnprintf(s + strlen(s), ss, "%lu", (uint32_t)GetCurrentProcessId());
       (void)getcwd(s + strlen(s), 256);
       bsnprintf(s + strlen(s), ss, "%lu", (uint32_t)GetTickCount());
@@ -833,6 +816,10 @@ POOLMEM *edit_job_codes(JCR *jcr, char *omsg, char *imsg, const char *to, job_co
                str = _("*none*");
             }
             break;
+         case 'P':
+            edit_uint64(getpid(), add);
+            str = add;
+            break;
          default:
             str = NULL;
             if (callback != NULL) {
diff --git a/src/lib/var.c b/src/lib/var.c
index e527830..3e52682 100644
--- a/src/lib/var.c
+++ b/src/lib/var.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
 **  OSSP var - Variable Expansion
@@ -1991,7 +1979,7 @@ parse_variable_complex(
         goto error_return;
     }
     if ((inc = (*p++ == '+'))) {
-       p++;                           /* skip the + */ 
+       p++;                           /* skip the + */
     }
 
     /* lookup the variable value now */
@@ -2415,7 +2403,7 @@ var_create(
         return VAR_RC(VAR_ERR_INVALID_ARGUMENT);
     if ((var = (var_t *)malloc(sizeof(var_t))) == NULL)
         return VAR_RC(VAR_ERR_OUT_OF_MEMORY);
-    memset(var, 0, sizeof(var));
+    memset(var, 0, sizeof(*var));
     var_config(var, VAR_CONFIG_SYNTAX, &var_syntax_default);
     *pvar = var;
     return VAR_OK;
diff --git a/src/lib/var.h b/src/lib/var.h
index 5f430f5..0e60056 100644
--- a/src/lib/var.h
+++ b/src/lib/var.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
 **  OSSP var - Variable Expansion
diff --git a/src/lib/waitq.h b/src/lib/waitq.h
index 729af2b..69a6927 100644
--- a/src/lib/waitq.h
+++ b/src/lib/waitq.h
@@ -13,29 +13,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef __WAITQ_H
diff --git a/src/lib/watchdog.c b/src/lib/watchdog.c
index 9a224e7..9795397 100644
--- a/src/lib/watchdog.c
+++ b/src/lib/watchdog.c
@@ -1,32 +1,20 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- * Bacula thread watchdog routine. General routine that 
+ * Bacula thread watchdog routine. General routine that
  *  allows setting a watchdog timer with a callback that is
  *  called when the timer goes off.
  *
@@ -60,7 +48,7 @@ static pthread_t wd_tid;
 static dlist *wd_queue;
 static dlist *wd_inactive;
 
-/* 
+/*
  * Returns: 0 if the current thread is NOT the watchdog
  *          1 if the current thread is the watchdog
  */
@@ -269,7 +257,7 @@ extern "C" void *watchdog_thread(void *arg)
        *
        *  NOTE. lock_jcr_chain removed, but the message below
        *   was left until we are sure there are no deadlocks.
-       *  
+       *
        * We lock the jcr chain here because a good number of the
        *   callback routines lock the jcr chain. We need to lock
        *   it here *before* the watchdog lock because the SD message
diff --git a/src/lib/watchdog.h b/src/lib/watchdog.h
index 673d9c9..3688cc1 100644
--- a/src/lib/watchdog.h
+++ b/src/lib/watchdog.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Watchdog timer routines
diff --git a/src/lib/workq.c b/src/lib/workq.c
index e3f7517..6a754d1 100644
--- a/src/lib/workq.c
+++ b/src/lib/workq.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula work queue routines. Permits passing work to
@@ -310,16 +298,7 @@ void *workq_server(void *arg)
           * Wait 2 seconds, then if no more work, exit
           */
          Dmsg0(1400, "pthread_cond_timedwait()\n");
-#ifdef xxxxxxxxxxxxxxxx_was_HAVE_CYGWIN
-         /* CYGWIN dies with a page fault the second
-          * time that pthread_cond_timedwait() is called
-          * so fake it out.
-          */
-         P(wq->mutex);
-         stat = ETIMEDOUT;
-#else
          stat = pthread_cond_timedwait(&wq->work, &wq->mutex, &timeout);
-#endif
          Dmsg1(1400, "timedwait=%d\n", stat);
          if (stat == ETIMEDOUT) {
             timedout = 1;
diff --git a/src/lib/workq.h b/src/lib/workq.h
index 5e3c464..90521cc 100644
--- a/src/lib/workq.h
+++ b/src/lib/workq.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Bacula work queue routines. Permits passing work to
diff --git a/src/plugins/dir/Makefile.in b/src/plugins/dir/Makefile.in
index 2c767e7..f49565c 100644
--- a/src/plugins/dir/Makefile.in
+++ b/src/plugins/dir/Makefile.in
@@ -1,8 +1,6 @@
 #
 # Simple Makefile for building test FD plugins for Bacula
 #
-# Version $Id: Makefile.in 7841 2008-10-19 10:34:03Z kerns $
-#
 @MCOMMON@
 
 
@@ -39,7 +37,8 @@ clean: @LIBTOOL_CLEAN_TARGET@
 	rm -f main *.so *.o 1 2 3
 
 distclean: clean
-	rm -f Makefile
+	rm -f Makefile *.la *.lo
+	rm -rf .libs
 
 libtool-uninstall:
 	$(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(plugindir)/example-plugin-dir.la
diff --git a/src/plugins/dir/example-plugin-dir.c b/src/plugins/dir/example-plugin-dir.c
index c307860..ea32d42 100644
--- a/src/plugins/dir/example-plugin-dir.c
+++ b/src/plugins/dir/example-plugin-dir.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Sample Plugin program
@@ -91,7 +79,7 @@ bRC loadPlugin(bDirInfo *lbinfo, bDirFuncs *lbfuncs, pDirInfo **pinfo, pDirFuncs
    return bRC_OK;
 }
 
-bRC unloadPlugin() 
+bRC unloadPlugin()
 {
    printf("plugin: Unloaded\n");
    return bRC_OK;
@@ -114,13 +102,13 @@ static bRC freePlugin(bpContext *ctx)
    return bRC_OK;
 }
 
-static bRC getPluginValue(bpContext *ctx, pDirVariable var, void *value) 
+static bRC getPluginValue(bpContext *ctx, pDirVariable var, void *value)
 {
    printf("plugin: getPluginValue var=%d\n", var);
    return bRC_OK;
 }
 
-static bRC setPluginValue(bpContext *ctx, pDirVariable var, void *value) 
+static bRC setPluginValue(bpContext *ctx, pDirVariable var, void *value)
 {
    printf("plugin: setPluginValue var=%d\n", var);
    return bRC_OK;
diff --git a/src/plugins/fd/Makefile.in b/src/plugins/fd/Makefile.in
index 207590c..0255f49 100644
--- a/src/plugins/fd/Makefile.in
+++ b/src/plugins/fd/Makefile.in
@@ -63,7 +63,8 @@ clean:	libtool-clean
 	@rm -f main *.so *.o 1 2 3
 
 distclean: clean
-	@rm -f Makefile
+	@rm -f Makefile *.la *.lo
+	@rm -rf .libs
 
 libtool-uninstall:
 	$(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(plugindir)/bpipe-fd.so
diff --git a/src/plugins/fd/bpipe-fd.c b/src/plugins/fd/bpipe-fd.c
index f4269ef..3338514 100644
--- a/src/plugins/fd/bpipe-fd.c
+++ b/src/plugins/fd/bpipe-fd.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * A simple pipe plugin for the Bacula File Daemon
@@ -142,16 +130,16 @@ bRC loadPlugin(bInfo *lbinfo, bFuncs *lbfuncs, pInfo **pinfo, pFuncs **pfuncs)
 }
 
 /*
- * External entry point to unload the plugin 
+ * External entry point to unload the plugin
  */
-bRC unloadPlugin() 
+bRC unloadPlugin()
 {
 // printf("bpipe-fd: Unloaded\n");
    return bRC_OK;
 }
 
 /*
- * The following entry points are accessed through the function 
+ * The following entry points are accessed through the function
  *   pointers we supplied to Bacula. Each plugin type (dir, fd, sd)
  *   has its own set of entry points that the plugin must define.
  */
@@ -189,7 +177,7 @@ static bRC freePlugin(bpContext *ctx)
 /*
  * Return some plugin value (none defined)
  */
-static bRC getPluginValue(bpContext *ctx, pVariable var, void *value) 
+static bRC getPluginValue(bpContext *ctx, pVariable var, void *value)
 {
    return bRC_OK;
 }
@@ -197,7 +185,7 @@ static bRC getPluginValue(bpContext *ctx, pVariable var, void *value)
 /*
  * Set a plugin value (none defined)
  */
-static bRC setPluginValue(bpContext *ctx, pVariable var, void *value) 
+static bRC setPluginValue(bpContext *ctx, pVariable var, void *value)
 {
    return bRC_OK;
 }
@@ -221,7 +209,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
     */
    switch (event->eventType) {
    case bEventPluginCommand:
-      bfuncs->DebugMessage(ctx, fi, li, dbglvl, 
+      bfuncs->DebugMessage(ctx, fi, li, dbglvl,
                            "bpipe-fd: PluginCommand=%s\n", (char *)value);
       break;
    case bEventJobStart:
@@ -282,7 +270,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
       }
       *p++ = 0;           /* terminate reader string */
       p_ctx->writer = p;
-//    printf("bpipe-fd: plugin=%s fname=%s reader=%s writer=%s\n", 
+//    printf("bpipe-fd: plugin=%s fname=%s reader=%s writer=%s\n",
 //         p_ctx->cmd, p_ctx->fname, p_ctx->reader, p_ctx->writer);
       break;
 
@@ -293,7 +281,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
    return bRC_OK;
 }
 
-/* 
+/*
  * Start the backup of a specific file
  */
 static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
@@ -339,7 +327,7 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
    if (!p_ctx) {
       return bRC_Error;
    }
-    
+
    io->status = 0;
    io->io_errno = 0;
    switch(io->func) {
@@ -349,11 +337,11 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
          char *writer_codes = apply_rp_codes(p_ctx);
 
          p_ctx->fd = popen(writer_codes, "w");
-         bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: IO_OPEN fd=%d writer=%s\n", 
+         bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: IO_OPEN fd=%d writer=%s\n",
              p_ctx->fd, writer_codes);
          if (!p_ctx->fd) {
             io->io_errno = errno;
-            bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, 
+            bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0,
                "Open pipe writer=%s failed: ERR=%s\n", writer_codes, strerror(errno));
             if (writer_codes) {
                free(writer_codes);
@@ -365,11 +353,11 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
          }
       } else {
          p_ctx->fd = popen(p_ctx->reader, "r");
-         bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: IO_OPEN fd=%p reader=%s\n", 
+         bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: IO_OPEN fd=%p reader=%s\n",
             p_ctx->fd, p_ctx->reader);
          if (!p_ctx->fd) {
             io->io_errno = errno;
-            bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, 
+            bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0,
                "Open pipe reader=%s failed: ERR=%s\n", p_ctx->reader, strerror(errno));
             return bRC_Error;
          }
@@ -385,9 +373,9 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
       io->status = fread(io->buf, 1, io->count, p_ctx->fd);
 //    bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: IO_READ buf=%p len=%d\n", io->buf, io->status);
       if (io->status == 0 && ferror(p_ctx->fd)) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, 
+         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0,
             "Pipe read error: ERR=%s\n", strerror(errno));
-         bfuncs->DebugMessage(ctx, fi, li, dbglvl, 
+         bfuncs->DebugMessage(ctx, fi, li, dbglvl,
             "Pipe read error: ERR=%s\n", strerror(errno));
          return bRC_Error;
       }
@@ -402,9 +390,9 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
       io->status = fwrite(io->buf, 1, io->count, p_ctx->fd);
 //    printf("bpipe-fd: IO_WRITE buf=%p len=%d\n", io->buf, io->status);
       if (io->status == 0 && ferror(p_ctx->fd)) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, 
+         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0,
             "Pipe write error\n");
-         bfuncs->DebugMessage(ctx, fi, li, dbglvl, 
+         bfuncs->DebugMessage(ctx, fi, li, dbglvl,
             "Pipe read error: ERR=%s\n", strerror(errno));
          return bRC_Error;
       }
@@ -416,6 +404,28 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
          return bRC_Error;
       }
       io->status = pclose(p_ctx->fd);
+
+      /* Problem during execution */
+      if (io->status < 0) {
+         io->io_errno = errno;
+         bfuncs->JobMessage(ctx, fi, li, M_ERROR, 0, "bpipe-fd: Error closing stream for pseudo file %s: %d (%s)\n",
+                            p_ctx->fname, io->status, strerror(errno));
+
+      /* Problem inside the subprogram */
+      } else if (io->status > 0) {
+         int status=1;
+         if (WIFEXITED(io->status)) {    /* process exit()ed */
+            status = WEXITSTATUS(io->status);
+
+         } else if (WIFSIGNALED(io->status)) {  /* process died */
+#ifndef HAVE_WIN32
+            status = WTERMSIG(io->status);
+#endif
+         }
+         bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: exit=%d\n", io->status);
+         bfuncs->JobMessage(ctx, fi, li, M_ERROR, 0, "bpipe-fd: Error closing stream for pseudo file %s: exit %d\n",
+               p_ctx->fname, status);
+      }
       break;
 
    case IO_SEEK:
@@ -448,7 +458,7 @@ static bRC endRestoreFile(bpContext *ctx)
 /*
  * This is called during restore to create the file (if necessary)
  * We must return in rp->create_status:
- *   
+ *
  *  CF_ERROR    -- error
  *  CF_SKIP     -- skip processing this file
  *  CF_EXTRACT  -- extract the file (i.e.call i/o routines)
@@ -526,9 +536,9 @@ static char *apply_rp_codes(struct plugin_ctx * p_ctx)
       }
    }
 
-   /* Required mem: 
-    * len(imsg) 
-    * + number of "where" codes * (len(where)-2) 
+   /* Required mem:
+    * len(imsg)
+    * + number of "where" codes * (len(where)-2)
     * - number of "replace" codes
     */
    omsg = (char*)malloc(strlen(imsg) + (w_count * (strlen(p_ctx->where)-2)) - r_count + 1);
diff --git a/src/plugins/fd/example-plugin-fd.c b/src/plugins/fd/example-plugin-fd.c
index 47d5239..3a6f843 100644
--- a/src/plugins/fd/example-plugin-fd.c
+++ b/src/plugins/fd/example-plugin-fd.c
@@ -1,13 +1,17 @@
 /*
+   Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2012 Kern Sibbald
+   Copyright (C) 2010-2014 Free Software Foundation Europe e.V.
 
-   You may freely use this code to create your own plugin provided
-   it is to write a plugin for Bacula licensed under AGPLv3
-   (as Bacula is), and in that case, you may also remove
-   the above Copyright and this notice as well as modify 
-   the code in any way. 
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 
 #define BUILD_PLUGIN
@@ -98,7 +102,7 @@ loadPlugin(bInfo *lbinfo, bFuncs *lbfuncs, pInfo **pinfo, pFuncs **pfuncs)
  *  Bacula is going to exit.
  */
 bRC DLL_IMP_EXP
-unloadPlugin() 
+unloadPlugin()
 {
    printf("plugin: Unloaded\n");
    return bRC_OK;
@@ -121,7 +125,7 @@ static bRC newPlugin(bpContext *ctx)
 }
 
 /*
- * Release everything concerning a particular instance of a 
+ * Release everything concerning a particular instance of a
  *  plugin. Normally called when the Job terminates.
  */
 static bRC freePlugin(bpContext *ctx)
@@ -136,17 +140,17 @@ static bRC freePlugin(bpContext *ctx)
  * Called by core code to get a variable from the plugin.
  *   Not currently used.
  */
-static bRC getPluginValue(bpContext *ctx, pVariable var, void *value) 
+static bRC getPluginValue(bpContext *ctx, pVariable var, void *value)
 {
 // printf("plugin: getPluginValue var=%d\n", var);
    return bRC_OK;
 }
 
-/* 
+/*
  * Called by core code to set a plugin variable.
  *  Not currently used.
  */
-static bRC setPluginValue(bpContext *ctx, pVariable var, void *value) 
+static bRC setPluginValue(bpContext *ctx, pVariable var, void *value)
 {
 // printf("plugin: setPluginValue var=%d\n", var);
    return bRC_OK;
@@ -224,13 +228,13 @@ static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
  * Done backing up a file.
  */
 static bRC endBackupFile(bpContext *ctx)
-{ 
+{
    return bRC_OK;
 }
 
 /*
  * Do actual I/O.  Bacula calls this after startBackupFile
- *   or after startRestoreFile to do the actual file 
+ *   or after startRestoreFile to do the actual file
  *   input or output.
  */
 static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
diff --git a/src/plugins/fd/fd_common.h b/src/plugins/fd/fd_common.h
index 666c24c..bcdd4e3 100644
--- a/src/plugins/fd/fd_common.h
+++ b/src/plugins/fd/fd_common.h
@@ -1,30 +1,18 @@
 /*
-   Bacula(R) - The Network Backup Solution
+   Bacula® - The Network Backup Solution
 
-   Copyright (C) 2010-2011 Bacula Systems(R) SA
+   Copyright (C) 2010-2014 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 modify it under the terms of
-   version three of the GNU Affero General Public License as published by the Free
-   Software Foundation, which is listed in the file LICENSE.
+   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 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 may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
-   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.
 
-   Bacula(R) is a registered trademark of Kern Sibbald.
-   Bacula Systems(R) is a trademark of Bacula Systems SA.
-   Bacula Enterprise(TM) is a trademark of Bacula Systems SA.
-
-   The licensor of Bacula Enterprise(TM) is Bacula Systems(R) SA,
-   Rue Galilee 5, 1400 Yverdon-les-Bains, Switzerland.
 */
 
 /* You can include this file to your plugin to have
@@ -126,7 +114,7 @@ static void add_drive(char *drives, int *nCount, char *fname) {
          drives[*nCount] = ch;
          drives[*nCount+1] = 0;
          (*nCount)++;
-      }                                
+      }
    }
 }
 
diff --git a/src/plugins/fd/test-deltaseq-fd.c b/src/plugins/fd/test-deltaseq-fd.c
index b365711..71bbc8d 100644
--- a/src/plugins/fd/test-deltaseq-fd.c
+++ b/src/plugins/fd/test-deltaseq-fd.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * A simple delta plugin for the Bacula File Daemon
@@ -117,7 +105,7 @@ public:
    bool done;
    int level;
 
-   delta_test(bpContext *bpc) { 
+   delta_test(bpContext *bpc) {
       fd = NULL;
       ctx = bpc;
       done = false;
@@ -154,16 +142,16 @@ bRC loadPlugin(bInfo *lbinfo, bFuncs *lbfuncs, pInfo **pinfo, pFuncs **pfuncs)
 }
 
 /*
- * External entry point to unload the plugin 
+ * External entry point to unload the plugin
  */
-bRC unloadPlugin() 
+bRC unloadPlugin()
 {
 // Dmsg(NULL, dbglvl, "delta-test-fd: Unloaded\n");
    return bRC_OK;
 }
 
 /*
- * The following entry points are accessed through the function 
+ * The following entry points are accessed through the function
  *   pointers we supplied to Bacula. Each plugin type (dir, fd, sd)
  *   has its own set of entry points that the plugin must define.
  */
@@ -196,7 +184,7 @@ static bRC freePlugin(bpContext *ctx)
 /*
  * Return some plugin value (none defined)
  */
-static bRC getPluginValue(bpContext *ctx, pVariable var, void *value) 
+static bRC getPluginValue(bpContext *ctx, pVariable var, void *value)
 {
    return bRC_OK;
 }
@@ -204,7 +192,7 @@ static bRC getPluginValue(bpContext *ctx, pVariable var, void *value)
 /*
  * Set a plugin value (none defined)
  */
-static bRC setPluginValue(bpContext *ctx, pVariable var, void *value) 
+static bRC setPluginValue(bpContext *ctx, pVariable var, void *value)
 {
    return bRC_OK;
 }
@@ -230,7 +218,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
     */
    switch (event->eventType) {
    case bEventPluginCommand:
-//    Dmsg(ctx, dbglvl, 
+//    Dmsg(ctx, dbglvl,
 //         "delta-test-fd: PluginCommand=%s\n", (char *)value);
       break;
    case bEventJobStart:
@@ -271,7 +259,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
       if (self->level == 'I' || self->level == 'D') {
          bfuncs->getBaculaValue(ctx, bVarAccurate, (void *)&accurate);
          if (!accurate) {       /* can be changed to FATAL */
-            Jmsg(ctx, M_FATAL, 
+            Jmsg(ctx, M_FATAL,
                  "Accurate mode should be turned on when using the "
                  "delta-test plugin\n");
             return bRC_Error;
@@ -294,7 +282,7 @@ static const char *files[] = {
 };
 static int nb_files = 4;
 
-/* 
+/*
  * Start the backup of a specific file
  */
 static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
@@ -321,7 +309,7 @@ static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
       self->delta = sp->delta_seq + 1;
    }
    pm_strcpy(self->fname, files[self->delta % nb_files]);
-   Dmsg(ctx, dbglvl, "delta-test-fd: delta_seq=%i delta=%i fname=%s\n", 
+   Dmsg(ctx, dbglvl, "delta-test-fd: delta_seq=%i delta=%i fname=%s\n",
         sp->delta_seq, self->delta, self->fname);
 // Dmsg(ctx, dbglvl, "delta-test-fd: startBackupFile\n");
    return bRC_OK;
@@ -350,7 +338,7 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
    if (!self) {
       return bRC_Error;
    }
-    
+
    io->status = 0;
    io->io_errno = 0;
    switch(io->func) {
@@ -365,7 +353,7 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
          }
          if (!self->fd) {
             io->io_errno = errno;
-            Jmsg(ctx, M_FATAL, 
+            Jmsg(ctx, M_FATAL,
                  "Open failed: ERR=%s\n", strerror(errno));
             return bRC_Error;
          }
@@ -374,7 +362,7 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
          self->fd = fopen(self->fname, "r");
          if (!self->fd) {
             io->io_errno = errno;
-            Jmsg(ctx, M_FATAL, 
+            Jmsg(ctx, M_FATAL,
                "Open failed: ERR=%s\n", strerror(errno));
             return bRC_Error;
          }
@@ -391,7 +379,7 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
       } else {
          /* first time, read 300, then replace 50-250 by other data */
          if (self->delta == 0) {
-            io->status = fread(io->buf, 1, 400, self->fd);            
+            io->status = fread(io->buf, 1, 400, self->fd);
          } else {
             io->offset = self->delta * 100 / 2; /* chunks are melted */
             io->status = fread(io->buf, 1, 100, self->fd);
@@ -400,9 +388,9 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
          self->done = true;
       }
       if (io->status == 0 && ferror(self->fd)) {
-         Jmsg(ctx, M_FATAL, 
+         Jmsg(ctx, M_FATAL,
             "Pipe read error: ERR=%s\n", strerror(errno));
-         Dmsg(ctx, dbglvl, 
+         Dmsg(ctx, dbglvl,
             "Pipe read error: ERR=%s\n", strerror(errno));
          return bRC_Error;
       }
@@ -417,9 +405,9 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
       Dmsg(ctx, dbglvl, "delta-test-fd: WRITE count=%lld\n", (int64_t)io->count);
       io->status = fwrite(io->buf, 1, io->count, self->fd);
       if (io->status == 0 && ferror(self->fd)) {
-         Jmsg(ctx, M_FATAL, 
+         Jmsg(ctx, M_FATAL,
             "Pipe write error\n");
-         Dmsg(ctx, dbglvl, 
+         Dmsg(ctx, dbglvl,
             "Pipe read error: ERR=%s\n", strerror(errno));
          return bRC_Error;
       }
@@ -469,7 +457,7 @@ static bRC endRestoreFile(bpContext *ctx)
 /*
  * This is called during restore to create the file (if necessary)
  * We must return in rp->create_status:
- *   
+ *
  *  CF_ERROR    -- error
  *  CF_SKIP     -- skip processing this file
  *  CF_EXTRACT  -- extract the file (i.e.call i/o routines)
diff --git a/src/plugins/fd/test-plugin-fd.c b/src/plugins/fd/test-plugin-fd.c
index 765903f..0dff4c1 100644
--- a/src/plugins/fd/test-plugin-fd.c
+++ b/src/plugins/fd/test-plugin-fd.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * A simple test plugin for the Bacula File Daemon derived from
@@ -114,7 +102,7 @@ static struct ini_items test_items[] = {
    { "string2",  ini_store_str,  "2nd String",        0},
    { "ok",       ini_store_bool, "boolean",           0},
 
-// We can also use the ITEMS_DEFAULT  
+// We can also use the ITEMS_DEFAULT
 // { "ok",       ini_store_bool, "boolean",           0, ITEMS_DEFAULT},
    { NULL,       NULL,           NULL,                0}
 };
@@ -156,16 +144,16 @@ bRC loadPlugin(bInfo *lbinfo, bFuncs *lbfuncs, pInfo **pinfo, pFuncs **pfuncs)
 }
 
 /*
- * External entry point to unload the plugin 
+ * External entry point to unload the plugin
  */
-bRC unloadPlugin() 
+bRC unloadPlugin()
 {
 // printf("test-plugin-fd: Unloaded\n");
    return bRC_OK;
 }
 
 /*
- * The following entry points are accessed through the function 
+ * The following entry points are accessed through the function
  *   pointers we supplied to Bacula. Each plugin type (dir, fd, sd)
  *   has its own set of entry points that the plugin must define.
  */
@@ -206,7 +194,7 @@ static bRC freePlugin(bpContext *ctx)
 /*
  * Return some plugin value (none defined)
  */
-static bRC getPluginValue(bpContext *ctx, pVariable var, void *value) 
+static bRC getPluginValue(bpContext *ctx, pVariable var, void *value)
 {
    return bRC_OK;
 }
@@ -214,7 +202,7 @@ static bRC getPluginValue(bpContext *ctx, pVariable var, void *value)
 /*
  * Set a plugin value (none defined)
  */
-static bRC setPluginValue(bpContext *ctx, pVariable var, void *value) 
+static bRC setPluginValue(bpContext *ctx, pVariable var, void *value)
 {
    return bRC_OK;
 }
@@ -266,7 +254,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
          break;
       }
       rop = (restore_object_pkt *)value;
-      bfuncs->DebugMessage(ctx, fi, li, dbglvl, 
+      bfuncs->DebugMessage(ctx, fi, li, dbglvl,
                            "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);
@@ -292,7 +280,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
          }
          ini.register_items(test_items, sizeof(struct ini_items));
          if (ini.parse(ini.out_fname)) {
-            bfuncs->JobMessage(ctx, fi, li, M_INFO, 0, "string1 = %s\n", 
+            bfuncs->JobMessage(ctx, fi, li, M_INFO, 0, "string1 = %s\n",
                                ini.items[0].val.strval);
          } else {
             bfuncs->JobMessage(ctx, fi, li, M_ERROR, 0, "Can't parse config\n");
@@ -332,7 +320,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
       }
       *p++ = 0;           /* terminate reader string */
       p_ctx->writer = p;
-      printf("test-plugin-fd: plugin=%s fname=%s reader=%s writer=%s\n", 
+      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;
    }
@@ -351,7 +339,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
    return bRC_OK;
 }
 
-/* 
+/*
  * Start the backup of a specific file
  */
 static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
@@ -363,15 +351,15 @@ 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", 
+      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", 
+      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", 
+      bfuncs->DebugMessage(ctx, fi, li, dbglvl, "AcceptFile=%s = %d\n",
                            sp->fname, bfuncs->AcceptFile(ctx, sp));
    }
 
@@ -586,7 +574,7 @@ static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
          fclose(fp);
       }
       free_pool_memory(q);
-   
+
    } else if (p_ctx->nb_obj == 1) {
       ConfigFile ini;
       p_ctx->buf = get_pool_memory(PM_BSOCK);
@@ -598,7 +586,7 @@ static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
       sp->type = FT_PLUGIN_CONFIG;
 
       Dmsg1(0, "RestoreOptions=<%s>\n", p_ctx->buf);
-   } 
+   }
 
    time_t now = time(NULL);
    sp->index = ++p_ctx->nb_obj;
@@ -610,7 +598,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=%.127s\n", 
+                        "Creating RestoreObject len=%d oname=%s data=%.127s\n",
                         sp->object_len, sp->object_name, sp->object);
 
    printf("test-plugin-fd: startBackupFile\n");
@@ -639,7 +627,7 @@ static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
    if (!p_ctx) {
       return bRC_Error;
    }
-    
+
    io->status = 0;
    io->io_errno = 0;
    return bRC_OK;
@@ -668,7 +656,7 @@ static bRC endRestoreFile(bpContext *ctx)
 /*
  * This is called during restore to create the file (if necessary)
  * We must return in rp->create_status:
- *   
+ *
  *  CF_ERROR    -- error
  *  CF_SKIP     -- skip processing this file
  *  CF_EXTRACT  -- extract the file (i.e.call i/o routines)
diff --git a/src/plugins/sd/Makefile.in b/src/plugins/sd/Makefile.in
index 7a3ae26..d06554d 100644
--- a/src/plugins/sd/Makefile.in
+++ b/src/plugins/sd/Makefile.in
@@ -1,7 +1,6 @@
 #
 # Simple Makefile for building test FD plugins for Bacula
 #
-# Version $Id: Makefile.in 7841 2008-10-19 10:34:03Z kerns $
 #
 @MCOMMON@
 
@@ -33,13 +32,16 @@ install: all
 libtool-clean:
 	find . -name '*.lo' -print | xargs $(LIBTOOL_CLEAN) $(RMF)
 	$(RMF) *.la
-	$(RMF) -r .libs _libs
+	$(RMF) -rf .libs _libs
 
 clean: @LIBTOOL_CLEAN_TARGET@
-	rm -f main *.so *.o 1 2 3
+	rm -f main *.so *.o 1 2 3 *.la *.lo
+	rm -rf .libs
+
 
 distclean: clean
-	rm -f Makefile
+	rm -f Makefile *.la *.lo
+	rm -rf .libs
 
 libtool-uninstall:
 	$(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(plugindir)/example-plugin-sd.so
diff --git a/src/plugins/sd/example-plugin-sd.c b/src/plugins/sd/example-plugin-sd.c
index f391123..b3f2c2c 100644
--- a/src/plugins/sd/example-plugin-sd.c
+++ b/src/plugins/sd/example-plugin-sd.c
@@ -1,29 +1,17 @@
 /*
-   Bacula(R) - The Network Backup Solution
-
-   Copyright (C) 2007-2011 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, which is 
-   listed 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(R) 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.
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2007-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 /*
  * Sample Storage daemon Plugin program
@@ -99,17 +87,17 @@ loadPlugin(bsdInfo *lbinfo, bsdFuncs *lbfuncs, psdInfo **pinfo, psdFuncs **pfunc
 }
 
 /*
- * External entry point to unload the plugin 
+ * External entry point to unload the plugin
  */
 bRC DLL_IMP_EXP
-unloadPlugin() 
+unloadPlugin()
 {
    printf("example-plugin-sd: Unloaded\n");
    return bRC_OK;
 }
 
 /*
- * The following entry points are accessed through the function 
+ * The following entry points are accessed through the function
  *   pointers we supplied to Bacula. Each plugin type (dir, fd, sd)
  *   has its own set of entry points that the plugin must define.
  */
@@ -139,7 +127,7 @@ static bRC freePlugin(bpContext *ctx)
 /*
  * Return some plugin value (none defined)
  */
-static bRC getPluginValue(bpContext *ctx, psdVariable var, void *value) 
+static bRC getPluginValue(bpContext *ctx, psdVariable var, void *value)
 {
    printf("example-plugin-sd: getPluginValue var=%d\n", var);
    return bRC_OK;
@@ -148,7 +136,7 @@ static bRC getPluginValue(bpContext *ctx, psdVariable var, void *value)
 /*
  * Set a plugin value (none defined)
  */
-static bRC setPluginValue(bpContext *ctx, psdVariable var, void *value) 
+static bRC setPluginValue(bpContext *ctx, psdVariable var, void *value)
 {
    printf("example-plugin-sd: setPluginValue var=%d\n", var);
    return bRC_OK;
diff --git a/src/plugins/sd/main.c b/src/plugins/sd/main.c
index 0b3fee5..07100ee 100644
--- a/src/plugins/sd/main.c
+++ b/src/plugins/sd/main.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Main program to test loading and running Bacula plugins.
@@ -53,7 +41,7 @@ static bFuncs bfuncs = {
    NULL,
    NULL
 };
-    
+
 
 
 
@@ -63,7 +51,7 @@ int main(int argc, char *argv[])
    bpContext ctx;
    bEvent event;
    Plugin *plugin;
-    
+
    bplugin_list = New(alist(10, not_owned_by_alist));
 
    ctx.bContext = NULL;
@@ -73,23 +61,23 @@ int main(int argc, char *argv[])
    load_plugins((void *)&bfuncs, plugin_dir, plugin_type);
 
    foreach_alist(plugin, bplugin_list) {
-      printf("bacula: plugin_size=%d plugin_version=%d\n", 
+      printf("bacula: plugin_size=%d plugin_version=%d\n",
               pref(plugin)->size, pref(plugin)->interface);
       printf("License: %s\nAuthor: %s\nDate: %s\nVersion: %s\nDescription: %s\n",
-         pref(plugin)->plugin_license, pref(plugin)->plugin_author, 
-         pref(plugin)->plugin_date, pref(plugin)->plugin_version, 
+         pref(plugin)->plugin_license, pref(plugin)->plugin_author,
+         pref(plugin)->plugin_date, pref(plugin)->plugin_version,
          pref(plugin)->plugin_description);
 
       /* Start a new instance of the plugin */
       pref(plugin)->newPlugin(&ctx);
-      event.eventType = bEventNewVolume;   
+      event.eventType = bEventNewVolume;
       pref(plugin)->handlePluginEvent(&ctx, &event);
       /* Free the plugin instance */
       pref(plugin)->freePlugin(&ctx);
 
       /* Start a new instance of the plugin */
       pref(plugin)->newPlugin(&ctx);
-      event.eventType = bEventNewVolume;   
+      event.eventType = bEventNewVolume;
       pref(plugin)->handlePluginEvent(&ctx, &event);
       /* Free the plugin instance */
       pref(plugin)->freePlugin(&ctx);
diff --git a/src/qt-console/README b/src/qt-console/README
index 6f392ff..1db13a3 100644
--- a/src/qt-console/README
+++ b/src/qt-console/README
@@ -13,10 +13,9 @@ yourself or if your distro does not have it, we have included the source
 in depkgs-qt, which you can download from the Bacula Source Forge        
 download area.
 
-Building and running bat is done much like bconsole, the gnome console,
-or the wxWidgets console.  You add the appropriate options to your   
-./configure, then simply do a make.  Please see the Installation chapter
-of the manual for more details.
+Building and running bat is done much like bconsole.  You add the appropriate
+ options to your ./configure, then simply do a make.  Please see the
+Installation chapter of the manual for more details.
 
 
 Win32 mingw infos for QT4 :
@@ -104,8 +103,7 @@ Design/implementation considerations:
   a tree view, but for the moment does nothing ...  It is a bit
   ugly. Canceling it should get you back to the normal command prompt.
 
-- Implement a restore page that does a directory tree restore selection
-  much like wx-console does.
+- Implement a restore page that does a directory tree restore selection.
 
 Not working:
 - The left selection window and the right window (where the console
diff --git a/src/qt-console/bat.h b/src/qt-console/bat.h
index 315210b..2bbdbe1 100644
--- a/src/qt-console/bat.h
+++ b/src/qt-console/bat.h
@@ -4,29 +4,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Kern Sibbald, January 2007
diff --git a/src/qt-console/bat_conf.cpp b/src/qt-console/bat_conf.cpp
index feea10e..279e7fa 100644
--- a/src/qt-console/bat_conf.cpp
+++ b/src/qt-console/bat_conf.cpp
@@ -3,27 +3,15 @@
 
    Copyright (C) 2000-2009 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Main configuration file parser for Bacula User Agent
@@ -108,6 +96,7 @@ static RES_ITEM con_items[] = {
    {"tlscertificate", store_dir,       ITEM(con_res.tls_certfile), 0, 0, 0},
    {"tlskey",         store_dir,       ITEM(con_res.tls_keyfile), 0, 0, 0},
    {"heartbeatinterval", store_time, ITEM(con_res.heartbeat_interval), 0, ITEM_DEFAULT, 0},
+   {"director",       store_str,       ITEM(con_res.director), 0, 0, 0},
    {NULL, NULL, {0}, 0, 0, 0}
 };
 
@@ -194,7 +183,7 @@ void free_resource(RES *sres, int type)
       if (res->dir_res.address) {
          free(res->dir_res.address);
       }
-      if (res->dir_res.tls_ctx) { 
+      if (res->dir_res.tls_ctx) {
          free_tls_context(res->dir_res.tls_ctx);
       }
       if (res->dir_res.tls_ca_certfile) {
@@ -214,7 +203,7 @@ void free_resource(RES *sres, int type)
       if (res->con_res.password) {
          free(res->con_res.password);
       }
-      if (res->con_res.tls_ctx) { 
+      if (res->con_res.tls_ctx) {
          free_tls_context(res->con_res.tls_ctx);
       }
       if (res->con_res.tls_ca_certfile) {
@@ -229,6 +218,9 @@ void free_resource(RES *sres, int type)
       if (res->con_res.tls_keyfile) {
          free(res->con_res.tls_keyfile);
       }
+      if (res->con_res.director) {
+         free(res->con_res.director);
+      }
       break;
    case R_CONSOLE_FONT:
       if (res->con_font.fontface) {
diff --git a/src/qt-console/bat_conf.h b/src/qt-console/bat_conf.h
index 1686858..e9e41f7 100644
--- a/src/qt-console/bat_conf.h
+++ b/src/qt-console/bat_conf.h
@@ -1,32 +1,20 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- * Bacula Adminstration Tool (bat) 
+ * Bacula Adminstration Tool (bat)
  *
  *     Kern Sibbald, March 2002
  *
@@ -101,6 +89,7 @@ public:
    char *tls_ca_certdir;              /* TLS CA Certificate Directory */
    char *tls_certfile;                /* TLS Client Certificate File */
    char *tls_keyfile;                 /* TLS Client Key File */
+   char *director;                    /* bind to director */
    utime_t heartbeat_interval;        /* Cons heartbeat interval */
 
    TLS_CONTEXT *tls_ctx;              /* Shared TLS Context */
diff --git a/src/qt-console/bcomm/dircomm.cpp b/src/qt-console/bcomm/dircomm.cpp
index b2261f9..4b81699 100644
--- a/src/qt-console/bcomm/dircomm.cpp
+++ b/src/qt-console/bcomm/dircomm.cpp
@@ -3,34 +3,22 @@
 
    Copyright (C) 2007-2011 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  DirComm, Director communications,class
  *
  *   Kern Sibbald, January MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "console.h"
@@ -70,13 +58,12 @@ void DirComm::terminate()
       }
       if (mainWin->m_connDebug)
          Pmsg2(000, "DirComm %i terminating connections %s\n", m_conn, m_console->m_dir->name());
-      m_sock->close();
-      m_sock = NULL;
+      free_bsock(m_sock);
    }
 }
 
 /*
- * Connect to Director. 
+ * Connect to Director.
  */
 bool DirComm::connect_dir()
 {
@@ -84,10 +71,16 @@ bool DirComm::connect_dir()
    utime_t heart_beat;
    char buf[1024];
    CONRES *cons;
-      
+   int numcon = 0;
+   int i = 0;
+
    buf[0] = 0;
 
-   if (m_sock) {
+   foreach_res(cons, R_CONSOLE) {
+      numcon++;
+   }
+
+   if (m_sock && !is_bsock_open(m_sock)) {
       mainWin->set_status( tr("Already connected."));
       m_console->display_textf(_("Already connected\"%s\".\n"),
             m_console->m_dir->name());
@@ -107,21 +100,47 @@ bool DirComm::connect_dir()
 
    /* Give GUI a chance */
    app->processEvents();
-   
+
    LockRes();
    /* If cons==NULL, default console will be used */
-   cons = (CONRES *)GetNextRes(R_CONSOLE, NULL);
+   for (i=0; i<numcon; i++) {
+      cons = (CONRES *)GetNextRes(R_CONSOLE, (RES *)cons);
+      if (cons->director && strcasecmp(cons->director, m_console->m_dir->name()) == 0) {
+         break;
+      }
+      if (i == (numcon - 1)) {
+         cons = NULL;
+      }
+   }
+
+   /* Look for the first non-linked console */
+   if (cons == NULL) {
+      for (i=0; i<numcon; i++) {
+         cons = (CONRES *)GetNextRes(R_CONSOLE, (RES *)cons);
+         if (cons->director == NULL) {
+            break;
+         }
+         if (i == (numcon - 1)) {
+            cons = NULL;
+         }
+      }
+   }
+
+   /* If no console, take first one */
+   if (!cons) {
+      cons = (CONRES *)GetNextRes(R_CONSOLE, (RES *)NULL);
+   }
    UnlockRes();
 
    /* Initialize Console TLS context once */
    if (cons && !cons->tls_ctx && (cons->tls_enable || cons->tls_require)) {
       /* Generate passphrase prompt */
-      bsnprintf(buf, sizeof(buf), "Passphrase for Console \"%s\" TLS private key: ", 
+      bsnprintf(buf, sizeof(buf), "Passphrase for Console \"%s\" TLS private key: ",
                 cons->name());
 
       /* Initialize TLS context:
        * Args: CA certfile, CA certdir, Certfile, Keyfile,
-       * Keyfile PEM Callback, Keyfile CB Userdata, DHfile, Verify Peer   
+       * Keyfile PEM Callback, Keyfile CB Userdata, DHfile, Verify Peer
        */
       cons->tls_ctx = new_tls_context(cons->tls_ca_certfile,
          cons->tls_ca_certdir, cons->tls_certfile,
@@ -140,7 +159,7 @@ bool DirComm::connect_dir()
    /* Initialize Director TLS context once */
    if (!m_console->m_dir->tls_ctx && (m_console->m_dir->tls_enable || m_console->m_dir->tls_require)) {
       /* Generate passphrase prompt */
-      bsnprintf(buf, sizeof(buf), "Passphrase for Director \"%s\" TLS private key: ", 
+      bsnprintf(buf, sizeof(buf), "Passphrase for Director \"%s\" TLS private key: ",
                 m_console->m_dir->name());
 
       /* Initialize TLS context:
@@ -167,11 +186,17 @@ bool DirComm::connect_dir()
       heart_beat = cons->heartbeat_interval;
    } else {
       heart_beat = 0;
-   }        
+   }
 
-   m_sock = bnet_connect(NULL, 5, 15, heart_beat,
+   if (!m_sock) {
+      m_sock = new_bsock();
+   }
+   if (!m_sock->connect(NULL, 5, 15, heart_beat,
                           _("Director daemon"), m_console->m_dir->address,
-                          NULL, m_console->m_dir->DIRport, 0);
+                          NULL, m_console->m_dir->DIRport, 0)) {
+      m_sock->destroy();
+      m_sock = NULL;
+   }
    if (m_sock == NULL) {
       mainWin->set_status("Connection failed");
       if (mainWin->m_connDebug) {
@@ -207,7 +232,7 @@ bool DirComm::connect_dir()
 
    mainWin->set_status(_("Initializing ..."));
 
-   /* 
+   /*
     * Set up input notifier
     */
    m_notifier = new QSocketNotifier(m_sock->m_fd, QSocketNotifier::Read, 0);
@@ -236,8 +261,8 @@ bail_out:
    return false;
 }
 
-/* 
- * This should be moved into a bSocket class 
+/*
+ * This should be moved into a bSocket class
  */
 char *DirComm::msg()
 {
@@ -290,7 +315,7 @@ int DirComm::sock_read()
    return stat;
 }
 
-/* 
+/*
  * Blocking read from director
  */
 int DirComm::read()
@@ -306,7 +331,7 @@ int DirComm::read()
          stat = m_sock->wait_data_intr(0, 50000);
          if (stat > 0) {
             break;
-         } 
+         }
          app->processEvents();
          if (m_api_set && m_console->is_messagesPending() && is_notify_enabled() && m_console->hasFocus()) {
             if (mainWin->m_commDebug) Pmsg1(000, "conn %i process_events\n", m_conn);
@@ -369,7 +394,7 @@ int DirComm::read()
          mainWin->set_status(_("At prompt waiting for input ..."));
          break;
       case BNET_TEXT_INPUT:
-         if (mainWin->m_commDebug) Pmsg4(000, "conn %i TEXT_INPUT at_prompt=%d  m_in_select=%d notify=%d\n", 
+         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) {
@@ -445,11 +470,10 @@ int DirComm::read()
          stat = BNET_HARDEOF;
          return stat;
       }
-      if (is_bnet_stop(m_sock)) {         /* error or term request */
+      if (m_sock->is_stop()) {         /* error or term request */
          if (mainWin->m_commDebug) Pmsg1(000, "conn %i BNET STOP\n", m_conn);
          m_console->stopTimer();
-         m_sock->close();
-         m_sock = NULL;
+         free_bsock(m_sock);
          mainWin->actionConnect->setIcon(QIcon(":images/disconnected.png"));
          QBrush redBrush(Qt::red);
          QTreeWidgetItem *item = mainWin->getFromHash(m_console);
@@ -464,7 +488,7 @@ int DirComm::read()
          stat = BNET_HARDEOF;
       }
       break;
-   } 
+   }
    return stat;
 }
 
@@ -488,7 +512,7 @@ void DirComm::notify_read_dir(int /* fd */)
 
 /*
  * When the notifier is enabled, read_dir() will automatically be
- * called by the Qt event loop when ever there is any output 
+ * called by the Qt event loop when ever there is any output
  * from the Director, and read_dir() will then display it on
  * the console.
  *
@@ -496,13 +520,13 @@ void DirComm::notify_read_dir(int /* fd */)
  * from the Directory, so we set notify to off.
  *    m_console->notify(false);
  */
-bool DirComm::notify(bool enable) 
-{ 
+bool DirComm::notify(bool enable)
+{
    bool prev_enabled = false;
    /* Set global flag */
    mainWin->m_notify = enable;
    if (m_notifier) {
-      prev_enabled = m_notifier->isEnabled();   
+      prev_enabled = m_notifier->isEnabled();
       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);
@@ -519,7 +543,7 @@ bool DirComm::is_notify_enabled() const
 
 /*
  * Call-back for reading a passphrase for an encrypted PEM file
- * This function uses getpass(), 
+ * This function uses getpass(),
  *  which uses a static buffer and is NOT thread-safe.
  */
 static int tls_pem_callback(char *buf, int size, const void *userdata)
diff --git a/src/qt-console/bcomm/dircomm.h b/src/qt-console/bcomm/dircomm.h
index b098914..630c071 100644
--- a/src/qt-console/bcomm/dircomm.h
+++ b/src/qt-console/bcomm/dircomm.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -57,7 +45,7 @@ public:
    ~DirComm();
    Console *m_console;
    int  sock_read();
-   bool authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons, 
+   bool authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons,
           char *buf, int buflen);
    bool is_connected() { return m_sock != NULL; };
    bool is_ready() { return is_connected() && m_at_prompt && m_at_main_prompt; };
@@ -66,7 +54,7 @@ public:
    bool is_notify_enabled() const;
    bool is_in_command() const { return m_in_command > 0; };
    void terminate();
-   bool connect_dir();                     
+   bool connect_dir();
    int read(void);
    int write(const char *msg);
    int write(QString msg);
@@ -75,7 +63,7 @@ public slots:
    void notify_read_dir(int fd);
 
 private:
-   BSOCK *m_sock;   
+   BSOCK *m_sock;
    bool m_at_prompt;
    bool m_at_main_prompt;
    bool m_sent_blank;
diff --git a/src/qt-console/bcomm/dircomm_auth.cpp b/src/qt-console/bcomm/dircomm_auth.cpp
index 331a628..548a26e 100644
--- a/src/qt-console/bcomm/dircomm_auth.cpp
+++ b/src/qt-console/bcomm/dircomm_auth.cpp
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /*
@@ -33,31 +21,38 @@
  *
  *     Kern Sibbald, June MMI   adapted to bat, Jan MMVI
  *
- *     Version $Id$
- *
  */
 
 
 #include "bat.h"
 
+/*
+ * Version at end of Hello
+ *   prior to 06Aug13 no version
+ *   1 21Oct13 - added comm line compression
+ */
+#define BAT_VERSION 1
+
 
 /* Commands sent to Director */
-static char hello[]    = "Hello %s calling\n";
+static char hello[]    = "Hello %s calling %d\n";
 
 /* Response from Director */
-static char OKhello[]   = "1000 OK:";
+static char oldOKhello[]   = "1000 OK:";
+static char newOKhello[]   = "1000 OK: %d";
 
 /* Forward referenced functions */
 
 /*
  * Authenticate Director
  */
-bool DirComm::authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons, 
-                char *errmsg, int errmsg_len) 
+bool DirComm::authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons,
+                char *errmsg, int errmsg_len)
 {
    BSOCK *dir = jcr->dir_bsock;
    int tls_local_need = BNET_TLS_NONE;
    int tls_remote_need = BNET_TLS_NONE;
+   int dir_version = 0;
    bool tls_authenticate;
    int compatible = true;
    char bashed_name[MAX_NAME_LENGTH];
@@ -103,7 +98,7 @@ bool DirComm::authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons,
 
    /* Timeout Hello after 15 secs */
    dir->start_timer(15);
-   dir->fsend(hello, bashed_name);
+   dir->fsend(hello, bashed_name, BAT_VERSION);
 
    /* respond to Dir challenge */
    if (!cram_md5_respond(dir, password, &tls_remote_need, &compatible) ||
@@ -155,14 +150,17 @@ bool DirComm::authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons,
 
    dir->stop_timer();
    Dmsg1(10, "<dird: %s", dir->msg);
-   if (strncmp(dir->msg, OKhello, sizeof(OKhello)-1) != 0) {
+   if (strncmp(dir->msg, oldOKhello, sizeof(oldOKhello)-1) != 0) {
       bsnprintf(errmsg, errmsg_len, _("Director at \"%s:%d\" rejected Hello command\n"),
          dir->host(), dir->port());
       return false;
    } else {
-      if (m_conn == 0) { 
-         bsnprintf(errmsg, errmsg_len, "%s", dir->msg);
-      }
+      /* If Dir version exists, get it */
+      sscanf(dir->msg, newOKhello, &dir_version);
+   }
+
+   if (m_conn == 0) {
+      bsnprintf(errmsg, errmsg_len, "%s", dir->msg);
    }
    return true;
 
diff --git a/src/qt-console/clients/clients.cpp b/src/qt-console/clients/clients.cpp
index 4726a1c..6ba383d 100644
--- a/src/qt-console/clients/clients.cpp
+++ b/src/qt-console/clients/clients.cpp
@@ -3,29 +3,17 @@
 
    Copyright (C) 2007-2009 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *   Version $Id$
  *
@@ -33,7 +21,7 @@
  *
  *   Dirk Bartley, March 2007
  *
- */ 
+ */
 
 #include "bat.h"
 #include <QAbstractEventDispatcher>
@@ -67,7 +55,7 @@ Clients::~Clients()
 }
 
 /*
- * The main meat of the class!!  The function that queries the director and 
+ * The main meat of the class!!  The function that queries the director and
  * creates the widgets with appropriate values.
  */
 void Clients::populateTable()
@@ -162,7 +150,7 @@ void Clients::populateTable()
    /* set default sorting */
    tableWidget->sortByColumn(sortcol, sortord);
    tableWidget->setSortingEnabled(true);
-   
+
    /* Resize rows and columns */
    tableWidget->resizeColumnsToContents();
    tableWidget->resizeRowsToContents();
@@ -226,8 +214,8 @@ void Clients::tableItemChanged(QTableWidgetItem *currentwidgetitem, QTableWidget
    }
 }
 
-/* 
- * Setup a context menu 
+/*
+ * Setup a context menu
  * Made separate from populate so that it would not create context menu over and
  * over as the tree is repopulated.
  */
@@ -286,7 +274,7 @@ void Clients::currentStackItem()
 }
 
 /*
- * Function responding to actionPurgeJobs 
+ * Function responding to actionPurgeJobs
  */
 void Clients::consolePurgeJobs()
 {
diff --git a/src/qt-console/clients/clients.h b/src/qt-console/clients/clients.h
index 13d32c7..4a7dbf8 100644
--- a/src/qt-console/clients/clients.h
+++ b/src/qt-console/clients/clients.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -40,7 +28,7 @@
 
 class Clients : public Pages, public Ui::ClientForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    Clients();
diff --git a/src/qt-console/console/console.cpp b/src/qt-console/console/console.cpp
index 65656a8..ade97e5 100644
--- a/src/qt-console/console/console.cpp
+++ b/src/qt-console/console/console.cpp
@@ -1,36 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Console Class
  *
- *   Kern Sibbald, January MMVII
+ *   Written by Kern Sibbald, January MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "console.h"
@@ -49,7 +37,7 @@ Console::Console(QTabWidget *parent) : Pages()
    m_warningPrevent = false;
    m_dircommCounter = 0;
 
-   /* 
+   /*
     * Create a connection to the Director and put it in a hash table
     */
    m_dircommHash.insert(m_dircommCounter, new DirComm(this, m_dircommCounter));
@@ -140,7 +128,7 @@ void Console::connect_dir()
       beginNewCommand(0);
    }
    mainWin->set_status(_("Connected"));
-   
+
    startTimer();                      /* start message timer */
 }
 
@@ -154,7 +142,7 @@ void Console::populateLists(bool /*forcenew*/)
    if (!getDirComm(conn)) {
       if (mainWin->m_connDebug) Pmsg0(000, "call newDirComm\n");
       if (!newDirComm(conn)) {
-         Emsg1(M_ABORT, 0, "Failed to connect to %s for populateLists.\n", m_dir->name());
+         Emsg1(M_INFO, 0, "Failed to connect to %s for populateLists.\n", m_dir->name());
          return;
       }
    }
@@ -178,7 +166,7 @@ void Console::populateLists(int conn)
    dir_cmd(conn, ".jobs", job_list);
    dir_cmd(conn, ".jobs type=R", restore_list);
    dir_cmd(conn, ".clients", client_list);
-   dir_cmd(conn, ".filesets", fileset_list);  
+   dir_cmd(conn, ".filesets", fileset_list);
    dir_cmd(conn, ".msgs", messages_list);
    dir_cmd(conn, ".pools", pool_list);
    dir_cmd(conn, ".storage", storage_list);
@@ -231,7 +219,7 @@ bool Console::dir_cmd(const char *cmd, QStringList &results)
 
 /*
  * Send a command to the Director, and return the
- *  results in a QStringList.  
+ *  results in a QStringList.
  */
 bool Console::dir_cmd(int conn, const char *cmd, QStringList &results)
 {
@@ -290,7 +278,7 @@ bool Console::sql_cmd(const char *query, QStringList &results)
 
 /*
  * Send an sql query to the Director, and return the
- *  results in a QStringList.  
+ *  results in a QStringList.
  */
 bool Console::sql_cmd(int &conn, const char *query, QStringList &results, bool donotify)
 {
@@ -308,7 +296,7 @@ bool Console::sql_cmd(int &conn, const char *query, QStringList &results, bool d
       dircomm->notify(false);
    }
    mainWin->waitEnter();
-   
+
    pm_strcpy(cmd, ".sql query=\"");
    pm_strcat(cmd, query);
    pm_strcat(cmd, "\"");
@@ -341,7 +329,7 @@ bool Console::sql_cmd(int &conn, const char *query, QStringList &results, bool d
    return !mainWin->isClosing();      /* return false if closing */
 }
 
-/* 
+/*
  * Overloads for
  * Sending a command to the Director
  */
@@ -408,9 +396,9 @@ bool Console::get_job_defaults(int &conn, struct job_defaults &job_defs)
    return get_job_defaults(conn, job_defs, true);
 }
 
-/*  
+/*
  * Send a job name to the director, and read all the resulting
- *  defaults. 
+ *  defaults.
  */
 bool Console::get_job_defaults(int &conn, struct job_defaults &job_defs, bool donotify)
 {
@@ -521,7 +509,7 @@ void Console::writeSettings()
  * Read and restore user settings associated with this console
  */
 void Console::readSettings()
-{ 
+{
    QFont font = get_font();
 
    QSettings settings(m_dir->name(), "bat");
@@ -636,7 +624,7 @@ void Console::beginNewCommand(int conn)
 }
 
 void Console::displayToPrompt(int conn)
-{ 
+{
    DirComm *dircomm = m_dircommHash.value(conn);
 
    int stat = 0;
@@ -678,7 +666,7 @@ void Console::discardToPrompt(int conn)
 }
 
 QString Console::returnFromPrompt(int conn)
-{ 
+{
    DirComm *dircomm = m_dircommHash.value(conn);
    QString text("");
 
@@ -698,7 +686,7 @@ QString Console::returnFromPrompt(int conn)
 
 /*
  * When the notifier is enabled, read_dir() will automatically be
- * called by the Qt event loop when ever there is any output 
+ * called by the Qt event loop when ever there is any output
  * from the Director, and read_dir() will then display it on
  * the console.
  *
@@ -709,7 +697,7 @@ QString Console::returnFromPrompt(int conn)
 
 /* dual purpose function to turn notify off and return a connection */
 int Console::notifyOff()
-{ 
+{
    int conn = 0;
    if (getDirComm(conn)) {
       notify(conn, false);
@@ -719,7 +707,7 @@ int Console::notifyOff()
 
 /* knowing a connection, turn notify off or on */
 bool Console::notify(int conn, bool enable)
-{ 
+{
    DirComm *dircomm = m_dircommHash.value(conn);
    if (dircomm) {
       return dircomm->notify(enable);
@@ -744,8 +732,8 @@ void Console::setDirectorTreeItem(QTreeWidgetItem *item)
    m_directorTreeItem = item;
 }
 
-void Console::setDirRes(DIRRES *dir) 
-{ 
+void Console::setDirRes(DIRRES *dir)
+{
    m_dir = dir;
 }
 
@@ -781,7 +769,7 @@ bool Console::hasFocus()
       return false;
 }
 
-/* For adding feature to have the gui's messages button change when 
+/* For adding feature to have the gui's messages button change when
  * messages are pending */
 bool Console::messagesPending(bool pend)
 {
@@ -876,13 +864,13 @@ bool Console::getDirComm(int &conn)
 /*
  * Try to find a free (unused but established) connection
  * KES: Note, I think there is a problem here because for
- *   some reason, the notifier is often turned off on file  
+ *   some reason, the notifier is often turned off on file
  *   descriptors that seem to me to be available.  That means
  *   that we do not use a free descriptor and thus we will create
  *   a new connection that is maybe not necessary.  Someone needs
  *   to look into whether or not notify() is correctly turned on
  *   when we are back at the command prompt and idle.
- *                         
+ *
  */
 bool Console::findDirComm(int &conn)
 {
@@ -894,7 +882,7 @@ bool Console::findDirComm(int &conn)
          return true;
       }
       if (mainWin->m_connDebug) {
-         Pmsg4(000, "currentDirComm=%d at_prompt=%d at_main=%d && notify=%d\n",                                      
+         Pmsg4(000, "currentDirComm=%d at_prompt=%d at_main=%d && notify=%d\n",
             dircomm->m_conn, dircomm->m_at_prompt, dircomm->m_at_main_prompt, dircomm->is_notify_enabled());
       }
       ++iter;
diff --git a/src/qt-console/console/console.h b/src/qt-console/console/console.h
index 8d23a6c..1d16764 100644
--- a/src/qt-console/console/console.h
+++ b/src/qt-console/console/console.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -66,7 +54,7 @@ struct job_defaults {
 
 class Console : public Pages, public Ui::ConsoleForm
 {
-   Q_OBJECT 
+   Q_OBJECT
    friend class DirComm;
 
 public:
@@ -80,7 +68,7 @@ public:
    int notifyOff(); // enables/disables socket notification - returns the previous state
    bool notify(int conn, bool enable); // enables/disables socket notification - returns the previous state
    bool is_notify_enabled(int conn) const;
-   bool getDirComm(int &conn);  
+   bool getDirComm(int &conn);
    bool findDirComm(int &conn);
    void displayToPrompt(int conn);
    QString returnFromPrompt(int conn);
@@ -140,7 +128,7 @@ public:
    QStringList location_list;
 
 public slots:
-   void connect_dir();                     
+   void connect_dir();
    void status_dir(void);
    void messages(void);
    void set_font(void);
diff --git a/src/qt-console/fileset/fileset.cpp b/src/qt-console/fileset/fileset.cpp
index 6efe7ae..a3f49b1 100644
--- a/src/qt-console/fileset/fileset.cpp
+++ b/src/qt-console/fileset/fileset.cpp
@@ -3,29 +3,17 @@
 
    Copyright (C) 2007-2009 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *   Version $Id$
  *
@@ -33,7 +21,7 @@
  *
  *   Dirk Bartley, March 2007
  *
- */ 
+ */
 
 #include "bat.h"
 #include <QAbstractEventDispatcher>
@@ -65,7 +53,7 @@ FileSet::~FileSet()
 }
 
 /*
- * The main meat of the class!!  The function that querries the director and 
+ * The main meat of the class!!  The function that querries the director and
  * creates the widgets with appropriate values.
  */
 void FileSet::populateTable()
@@ -127,7 +115,7 @@ void FileSet::populateTable()
             if (indexOf != -1) { notFoundList.removeAt(indexOf); }
 
             TableItemFormatter item(*tableWidget, row);
-  
+
             /* Iterate through fields in the record */
             QStringListIterator fld(fieldlist);
             int col = 0;
@@ -150,11 +138,11 @@ void FileSet::populateTable()
       item.setTextFld(0, filesetName);
       row++;
    }
-   
+
    /* set default sorting */
    tableWidget->sortByColumn(headerlist.indexOf(tr("FileSet Name")), Qt::AscendingOrder);
    tableWidget->setSortingEnabled(true);
-   
+
    /* Resize rows and columns */
    tableWidget->resizeColumnsToContents();
    tableWidget->resizeRowsToContents();
@@ -215,8 +203,8 @@ void FileSet::tableItemChanged(QTableWidgetItem *currentwidgetitem, QTableWidget
    }
 }
 
-/* 
- * Setup a context menu 
+/*
+ * Setup a context menu
  * Made separate from populate so that it would not create context menu over and
  * over as the tree is repopulated.
  */
@@ -274,7 +262,7 @@ void FileSet::writeSettings()
  * Read and restore user settings associated with this page
  */
 void FileSet::readSettings()
-{ 
+{
    QSettings settings(m_console->m_dir->name(), "bat");
    settings.beginGroup("FileSet");
    restoreGeometry(settings.value("geometry").toByteArray());
diff --git a/src/qt-console/fileset/fileset.h b/src/qt-console/fileset/fileset.h
index 852e811..d75b112 100644
--- a/src/qt-console/fileset/fileset.h
+++ b/src/qt-console/fileset/fileset.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -40,7 +28,7 @@
 
 class FileSet : public Pages, public Ui::FileSetForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    FileSet();
diff --git a/src/qt-console/help/help.cpp b/src/qt-console/help/help.cpp
index 051dc5a..dad2dac 100644
--- a/src/qt-console/help/help.cpp
+++ b/src/qt-console/help/help.cpp
@@ -3,35 +3,23 @@
 
    Copyright (C) 2007-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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Help Window class
  *
  *   Kern Sibbald, May MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "help.h"
diff --git a/src/qt-console/help/help.h b/src/qt-console/help/help.h
index d4eb383..e2f9a29 100644
--- a/src/qt-console/help/help.h
+++ b/src/qt-console/help/help.h
@@ -4,31 +4,19 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Help Window class
  *
@@ -37,14 +25,14 @@
  *   Kern Sibbald, May MMVII
  *
  *  $Id$
- */ 
+ */
 
 #include "bat.h"
 #include "ui_help.h"
 
 class Help : public QWidget, public Ui::helpForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    Help(const QString &path, const QString &file, QWidget *parent = NULL);
diff --git a/src/qt-console/job/job.cpp b/src/qt-console/job/job.cpp
index 245ed7e..ca27d00 100644
--- a/src/qt-console/job/job.cpp
+++ b/src/qt-console/job/job.cpp
@@ -1,31 +1,19 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bat.h"
 #include "job.h"
 #include "util/fmtwidgetitem.h"
@@ -143,7 +131,7 @@ void Job::populateText()
    if (mainWin->m_sqlDebug) {
       Pmsg1(000, "Log query cmd : %s\n", query.toUtf8().data());
    }
-  
+
    QStringList results;
    if (m_console->sql_cmd(query, results)) {
 
@@ -153,13 +141,13 @@ void Job::populateText()
                "It is possible you may need to add \"catalog = all\" "
                "to the Messages resource for this job.\n"), QMessageBox::Ok);
          return;
-      } 
+      }
 
       QString jobstr("JobId "); /* FIXME: should this be translated ? */
       jobstr += m_jobId;
 
       QString htmlbuf("<html><body><pre>");
-  
+
       /* Iterate through the lines of results. */
       QString field;
       QStringList fieldlist;
@@ -167,7 +155,7 @@ void Job::populateText()
       QString lastSvc;
       foreach (QString resultline, results) {
          fieldlist = resultline.split("\t");
-         
+
          if (fieldlist.size() < 2)
             continue;
 
@@ -176,12 +164,12 @@ void Job::populateText()
          field = fieldlist[1].trimmed();
          int colon = field.indexOf(":");
          if (colon > 0) {
-            /* string is like <service> <jobId xxxx>: ..." 
-             * we split at ':' then remove the jobId xxxx string (always the same) */ 
+            /* string is like <service> <jobId xxxx>: ..."
+             * we split at ':' then remove the jobId xxxx string (always the same) */
             QString curSvc(field.left(colon).replace(jobstr,"").trimmed());
             if (curSvc == lastSvc  && curTime == lastTime) {
                curTime.clear();
-               curSvc.clear(); 
+               curSvc.clear();
             } else {
                lastTime = curTime;
                lastSvc = curSvc;
@@ -208,7 +196,7 @@ void Job::populateText()
 //          htmlbuf += "<td>" + curTime + "</td>";
             htmlbuf += "\n" + field ;
          }
-  
+
       } /* foreach resultline */
 
       htmlbuf += "</pre></body></html>";
@@ -216,11 +204,11 @@ void Job::populateText()
       /* full text ready. Here a custom sheet is used to align columns */
       QString logSheet(".err {color:#FF0000;}");
       textJobLog->document()->setDefaultStyleSheet(logSheet);
-      textJobLog->document()->setHtml(htmlbuf); 
+      textJobLog->document()->setHtml(htmlbuf);
       textJobLog->moveCursor(QTextCursor::Start);
 
    } /* if results from query */
-  
+
 }
 
 
@@ -253,10 +241,10 @@ void Job::updateRunInfo()
    QRegExp oldline("Files=([\\d,]+) Bytes=([\\d,]+) Bytes/sec=([\\d,]+) Errors=([\\d,]+)");
    QString com(",");
    QString empty("");
-   
+
    if (m_console->dir_cmd(cmd, results)) {
       foreach (QString mline, results) {
-         foreach (QString line, mline.split("\n")) { 
+         foreach (QString line, mline.split("\n")) {
             line = line.trimmed();
             if (oldline.indexIn(line) >= 0) {
                if (parseit) {
@@ -277,12 +265,12 @@ void Job::updateRunInfo()
                lst.removeFirst();
 
             } else {
-               if (mainWin->m_miscDebug) 
+               if (mainWin->m_miscDebug)
                   Pmsg1(0, "bad line=%s\n", line.toUtf8().data());
                continue;
             }
             if (lst.count() < 2) {
-               if (mainWin->m_miscDebug) 
+               if (mainWin->m_miscDebug)
                   Pmsg2(0, "bad line=%s count=%d\n", line.toUtf8().data(), lst.count());
             }
             if (lst[0] == "JobId") {
@@ -295,11 +283,11 @@ void Job::updateRunInfo()
             if (!parseit) {
                continue;
             }
-            
+
 //         } else if (lst[0] == "Job") {
 //            grpRun->setTitle(lst[1]);
-            
-//               
+
+//
 //         } else if (lst[0] == "VSS") {
 
 //         } else if (lst[0] == "Level") {
@@ -312,19 +300,19 @@ void Job::updateRunInfo()
 
             if (lst[0] == "Errors") {
                label_JobErrors->setText(lst[1]);
-               
+
             } else if (lst[0] == "Bytes/sec") {
                label_Speed->setText(convertBytesSI(lst[1].toULongLong())+"/s");
-               
+
             } else if (lst[0] == "Files") {
                label_JobFiles->setText(lst[1]);
-               
+
             } else if (lst[0] == "Bytes") {
                label_JobBytes->setText(convertBytesSI(lst[1].toULongLong()));
-               
+
             } else if (lst[0] == "Files Examined") {
                label_FilesExamined->setText(lst[1]);
-               
+
             } else if (lst[0] == "Processing file") {
                label_CurrentFile->setText(lst[1]);
             }
@@ -340,14 +328,14 @@ void Job::populateForm()
 {
    QString stat, err;
    char buf[256];
-   QString query = 
+   QString query =
       "SELECT JobId, Job.Name, Level, Client.Name, Pool.Name, FileSet,"
       "SchedTime, StartTime, EndTime, EndTime-StartTime AS Duration, "
       "JobBytes, JobFiles, JobErrors, JobStatus, PurgedFiles "
       "FROM Job JOIN Client USING (ClientId) "
         "LEFT JOIN Pool ON (Job.PoolId = Pool.PoolId) "
         "LEFT JOIN FileSet ON (Job.FileSetId = FileSet.FileSetId)"
-      "WHERE JobId=" + m_jobId; 
+      "WHERE JobId=" + m_jobId;
    QStringList results;
    if (m_console->sql_cmd(query, results)) {
       QString resultline, duration;
@@ -358,7 +346,7 @@ void Job::populateForm()
          QStringListIterator fld(fieldlist);
          label_JobId->setText(fld.next());
          label_Name->setText(fld.next());
-         
+
          label_Level->setText(job_level_to_str(fld.next()[0].toAscii()));
 
          m_client = fld.next();
@@ -369,9 +357,9 @@ void Job::populateForm()
          label_StartTime->setText(fld.next());
          label_EndTime->setText(fld.next());
          duration = fld.next();
-         /* 
+         /*
           * Note: if we have a negative duration, it is because the EndTime
-          *  is zero (i.e. the Job is still running).  We should use 
+          *  is zero (i.e. the Job is still running).  We should use
           *  duration = StartTime - current_time
           */
          if (duration.left(1) == "-") {
@@ -417,16 +405,16 @@ void Job::populateForm()
       }
    }
 }
-  
+
 void Job::populateVolumes()
 {
 
-   QString query = 
+   QString query =
       "SELECT DISTINCT VolumeName, InChanger, Slot "
       "FROM Job JOIN JobMedia USING (JobId) JOIN Media USING (MediaId) "
-      "WHERE JobId=" + m_jobId + " ORDER BY VolumeName "; 
+      "WHERE JobId=" + m_jobId + " ORDER BY VolumeName ";
    if (mainWin->m_sqlDebug) Pmsg1(0, "Query cmd : %s\n",query.toUtf8().data());
-         
+
 
    QStringList results;
    if (m_console->sql_cmd(query, results)) {
@@ -436,7 +424,7 @@ void Job::populateVolumes()
       foreach (resultline, results) { // should have only one result
          fieldlist = resultline.split("\t");
          QStringListIterator fld(fieldlist);
-//         QListWidgetItem(QIcon(":/images/inchanger" + fld.next() + ".png"), 
+//         QListWidgetItem(QIcon(":/images/inchanger" + fld.next() + ".png"),
 //                         fld.next(), list_Volume);
          list_Volume->addItem(fld.next());
       }
diff --git a/src/qt-console/job/job.h b/src/qt-console/job/job.h
index 8d7f0cb..9c08c17 100644
--- a/src/qt-console/job/job.h
+++ b/src/qt-console/job/job.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 <QtGui>
@@ -34,7 +22,7 @@
 
 class Job : public Pages, public Ui::JobForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    Job(QString &jobId, QTreeWidgetItem *parentTreeWidgetItem);
diff --git a/src/qt-console/jobgraphs/jobplot.cpp b/src/qt-console/jobgraphs/jobplot.cpp
index 95dc4a7..510d9f0 100644
--- a/src/qt-console/jobgraphs/jobplot.cpp
+++ b/src/qt-console/jobgraphs/jobplot.cpp
@@ -3,29 +3,17 @@
 
    Copyright (C) 2007-2007 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *   Version $Id$
  *
@@ -33,7 +21,7 @@
  *
  *   Dirk Bartley, March 2007
  *
- */ 
+ */
 
 #include "bat.h"
 #include <QtGui>
@@ -193,7 +181,7 @@ void JobPlot::setupControls()
       controls->limitSpinBox->setValue(mainWin->m_recordLimitVal);
       controls->daysCheckBox->setCheckState(mainWin->m_daysLimitCheck ? Qt::Checked : Qt::Unchecked);
       controls->daysSpinBox->setValue(mainWin->m_daysLimitVal);
-   } 
+   }
 }
 
 /*
@@ -260,7 +248,7 @@ void JobPlot::runQuery()
 
       QString field;
       QStringList fieldlist;
-   
+
       int row = 0;
       /* Iterate through the record returned from the query */
       foreach (resultline, results) {
@@ -283,7 +271,7 @@ void JobPlot::runQuery()
          }
          row++;
       }
-   } 
+   }
    if ((controls->volumeComboBox->itemText(volumeIndex) != tr("Any")) && (results.count() == 0)){
       /* for context sensitive searches, let the user know if there were no
        *        * results */
@@ -320,7 +308,7 @@ void JobPlot::setupUserInterface()
    area->setObjectName(QString::fromUtf8("area"));
    controls = new JobPlotControls();
    area->setWidget(controls);
-   
+
    m_splitter->addWidget(m_jobPlot);
    m_splitter->addWidget(area);
 
@@ -398,7 +386,7 @@ void JobPlot::addCurve()
          }
          QDateTime mdt = QDateTime::fromString(monthBegin, mainWin->m_dtformat);
          double monbeg = mdt.toTime_t();
-   
+
          //  ...a vertical line at the first of each month
          QwtPlotMarker *mX = new QwtPlotMarker();
          mX->setLabel(mdt.toString("MMM-d"));
@@ -448,7 +436,7 @@ void JobPlot::setPlotType(QString currentText)
 void JobPlot::fillSymbolCombo(QComboBox *q)
 {
   q->addItem( tr("Ellipse"), (int)QwtSymbol::Ellipse);
-  q->addItem( tr("Rect"), (int)QwtSymbol::Rect); 
+  q->addItem( tr("Rect"), (int)QwtSymbol::Rect);
   q->addItem( tr("Diamond"), (int)QwtSymbol::Diamond);
   q->addItem( tr("Triangle"), (int)QwtSymbol::Triangle);
   q->addItem( tr("DTrianle"), (int)QwtSymbol::DTriangle);
@@ -461,7 +449,7 @@ void JobPlot::fillSymbolCombo(QComboBox *q)
   q->addItem( tr("Vline"), (int)QwtSymbol::VLine);
   q->addItem( tr("Star1"), (int)QwtSymbol::Star1);
   q->addItem( tr("Star2"), (int)QwtSymbol::Star2);
-  q->addItem( tr("Hexagon"), (int)QwtSymbol::Hexagon); 
+  q->addItem( tr("Hexagon"), (int)QwtSymbol::Hexagon);
   q->addItem( tr("None"), (int)QwtSymbol::NoSymbol);
 }
 
@@ -490,7 +478,7 @@ void JobPlot::setSymbolType(int index, int type)
       sym.setStyle( (QwtSymbol::Style)style.toInt() );
       sym.setBrush(QColor(Qt::yellow));
       m_fileCurve->setSymbol(sym);
-   
+
    } else {
       style = controls->byteSymbolTypeCombo->itemData(index);
       sym.setStyle( (QwtSymbol::Style)style.toInt() );
@@ -545,7 +533,7 @@ void JobPlot::writeSettings()
    settings.endGroup();
 }
 
-/* 
+/*
  * Read settings values for Controls
  */
 void JobPlot::readControlSettings()
@@ -571,7 +559,7 @@ void JobPlot::readSplitterSettings()
 {
    QSettings settings(m_console->m_dir->name(), "bat");
    settings.beginGroup("JobPlot");
-   if (settings.contains("m_splitterSizes")) { 
+   if (settings.contains("m_splitterSizes")) {
       m_splitter->restoreState(settings.value("m_splitterSizes").toByteArray());
    }
    settings.endGroup();
diff --git a/src/qt-console/jobgraphs/jobplot.h b/src/qt-console/jobgraphs/jobplot.h
index da61205..c418bff 100644
--- a/src/qt-console/jobgraphs/jobplot.h
+++ b/src/qt-console/jobgraphs/jobplot.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -60,7 +48,7 @@ struct PlotJobData
 
 /*
  * Class for the purpose of having a single object to pass data to the JobPlot
- * Constructor.  The other option was a constructor with this many passed 
+ * Constructor.  The other option was a constructor with this many passed
  * values or some sort of code to parse a list.  I liked this best at the time.
  */
 class JobPlotPass
@@ -112,7 +100,7 @@ public:
  */
 class JobPlot : public Pages
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    JobPlot(QTreeWidgetItem *parentTreeWidgetItem, JobPlotPass &);
diff --git a/src/qt-console/joblist/joblist.cpp b/src/qt-console/joblist/joblist.cpp
index cab9abd..222043a 100644
--- a/src/qt-console/joblist/joblist.cpp
+++ b/src/qt-console/joblist/joblist.cpp
@@ -3,34 +3,22 @@
 
    Copyright (C) 2007-2009 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
  *
  *   Dirk Bartley, March 2007
  */
- 
+
 #include "bat.h"
 #include <QAbstractEventDispatcher>
 #include <QTableWidgetItem>
@@ -122,8 +110,8 @@ void JobList::populateTable()
 
    /* Set up the Header for the table */
    QStringList headerlist = (QStringList()
-      << tr("Job Id") << tr("Job Name") << tr("Client") << tr("Job Starttime") 
-      << tr("Job Type") << tr("Job Level") << tr("Job Files") 
+      << tr("Job Id") << tr("Job Name") << tr("Client") << tr("Job Starttime")
+      << tr("Job Type") << tr("Job Level") << tr("Job Files")
       << tr("Job Bytes") << tr("Job Status")  << tr("Purged") << tr("File Set")
       << tr("Pool Name") << tr("First Volume") << tr("VolCount"));
 
@@ -169,7 +157,7 @@ void JobList::populateTable()
             continue; /* some fields missing, ignore row */
 
          TableItemFormatter jobitem(*mp_tableWidget, row);
-  
+
          /* Iterate through fields in the record */
          QStringListIterator fld(fieldlist);
          int col = 0;
@@ -217,11 +205,11 @@ void JobList::populateTable()
          jobitem.setNumericFld(col++, fld.next());
          row++;
       }
-   } 
+   }
    /* set default sorting */
    mp_tableWidget->sortByColumn(m_jobIdIndex, Qt::DescendingOrder);
    mp_tableWidget->setSortingEnabled(true);
-   
+
    /* Resize the columns */
    mp_tableWidget->resizeColumnsToContents();
    mp_tableWidget->resizeRowsToContents();
@@ -278,7 +266,7 @@ void JobList::fillQueryString(QString &query)
       m_mediaName = volumeComboBox->itemText(volumeIndex);
    QString distinct = "";
    if (m_mediaName != tr("Any")) { distinct = "DISTINCT "; }
-   query += "SELECT " + distinct + "Job.JobId AS JobId, Job.Name AS JobName, " 
+   query += "SELECT " + distinct + "Job.JobId AS JobId, Job.Name AS JobName, "
             " Client.Name AS Client,"
             " Job.Starttime AS JobStart, Job.Type AS JobType,"
             " Job.Level AS BackupLevel, Job.Jobfiles AS FileCount,"
@@ -396,7 +384,7 @@ void JobList::treeWidgetName(QString &desc)
  */
 void JobList::createConnections()
 {
-   /* connect to the action specific to this pages class that shows up in the 
+   /* connect to the action specific to this pages class that shows up in the
     * page selector tree */
    connect(actionRefreshJobList, SIGNAL(triggered()), this, SLOT(populateTable()));
    connect(refreshButton, SIGNAL(pressed()), this, SLOT(populateTable()));
diff --git a/src/qt-console/joblist/joblist.h b/src/qt-console/joblist/joblist.h
index dceaf20..9f13912 100644
--- a/src/qt-console/joblist/joblist.h
+++ b/src/qt-console/joblist/joblist.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -40,10 +28,10 @@
 
 class JobList : public Pages, public Ui::JobListForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
-   JobList(const QString &medianame, const QString &clientname, 
+   JobList(const QString &medianame, const QString &clientname,
            const QString &jobname, const QString &filesetname, QTreeWidgetItem *);
    ~JobList();
    virtual void PgSeltreeWidgetClicked();
diff --git a/src/qt-console/joblog/joblog.cpp b/src/qt-console/joblog/joblog.cpp
index 25e4c6f..871edb3 100644
--- a/src/qt-console/joblog/joblog.cpp
+++ b/src/qt-console/joblog/joblog.cpp
@@ -3,29 +3,17 @@
 
    Copyright (C) 2007-2009 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *   Version $Id$
  *
@@ -33,7 +21,7 @@
  *
  *   Dirk Bartley, March 2007
  *
- */ 
+ */
 
 #include "bat.h"
 #include "joblog.h"
@@ -81,7 +69,7 @@ void JobLog::populateText()
    if (mainWin->m_sqlDebug) {
       Pmsg1(000, "Log query cmd : %s\n", query.toUtf8().data());
    }
-  
+
    QStringList results;
    if (m_console->sql_cmd(query, results)) {
 
@@ -91,14 +79,14 @@ void JobLog::populateText()
 	       "It is possible you may need to add \"catalog = all\" "
 	       "to the Messages resource for this job.\n"), QMessageBox::Ok);
 	 return;
-      } 
+      }
 
       QString jobstr("JobId "); /* FIXME: should this be translated ? */
       jobstr += m_jobId;
 
       QString htmlbuf("<html><body><b>" + tr("Log records for job %1").arg(m_jobId) );
       htmlbuf += "</b><table>";
-  
+
       /* Iterate through the lines of results. */
       QString field;
       QStringList fieldlist;
@@ -106,7 +94,7 @@ void JobLog::populateText()
       QString lastSvc;
       foreach (QString resultline, results) {
          fieldlist = resultline.split("\t");
-	 
+	
 	 if (fieldlist.size() < 2)
 	    continue;
 
@@ -117,12 +105,12 @@ void JobLog::populateText()
 	 field = fieldlist[1].trimmed();
 	 int colon = field.indexOf(":");
 	 if (colon > 0) {
- 	    /* string is like <service> <jobId xxxx>: ..." 
-	     * we split at ':' then remove the jobId xxxx string (always the same) */ 
+ 	    /* string is like <service> <jobId xxxx>: ..."
+	     * we split at ':' then remove the jobId xxxx string (always the same) */
 	    QString curSvc(field.left(colon).replace(jobstr,"").trimmed());
 	    if (curSvc == lastSvc  && curTime == lastTime) {
 	       curTime.clear();
-	       curSvc.clear(); 
+	       curSvc.clear();
 	    } else {
 	       lastTime = curTime;
 	       lastSvc = curSvc;
@@ -151,7 +139,7 @@ void JobLog::populateText()
 	 }
 
 	 htmlbuf += "</tr>";
-  
+
       } /* foreach resultline */
 
       htmlbuf += "</table></body></html>";
@@ -159,10 +147,10 @@ void JobLog::populateText()
       /* full text ready. Here a custom sheet is used to align columns */
       QString logSheet("p,pre,.err {margin-left: 10px} .err {color:#FF0000;}");
       textEdit->document()->setDefaultStyleSheet(logSheet);
-      textEdit->document()->setHtml(htmlbuf); 
+      textEdit->document()->setHtml(htmlbuf);
       textEdit->moveCursor(QTextCursor::Start);
 
    } /* if results from query */
-  
+
 }
-  
+
diff --git a/src/qt-console/joblog/joblog.h b/src/qt-console/joblog/joblog.h
index 9e5043e..e890497 100644
--- a/src/qt-console/joblog/joblog.h
+++ b/src/qt-console/joblog/joblog.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -39,7 +27,7 @@
 
 class JobLog : public Pages, public Ui::JobLogForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    JobLog(QString &jobId, QTreeWidgetItem *parentTreeWidgetItem);
diff --git a/src/qt-console/jobs/jobs.cpp b/src/qt-console/jobs/jobs.cpp
index 9cf4afe..2dbff14 100644
--- a/src/qt-console/jobs/jobs.cpp
+++ b/src/qt-console/jobs/jobs.cpp
@@ -1,39 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
- *   Version $Id$
- *
  *  Jobs Class
  *
  *   Dirk Bartley, March 2007
- *
- */ 
+ */
 
 #include "bat.h"
 #include "jobs/jobs.h"
@@ -66,7 +51,7 @@ Jobs::~Jobs()
 }
 
 /*
- * The main meat of the class!!  The function that querries the director and 
+ * The main meat of the class!!  The function that querries the director and
  * creates the widgets with appropriate values.
  */
 void Jobs::populateTable()
@@ -80,9 +65,9 @@ void Jobs::populateTable()
    m_checkcurwidget = false;
    tableWidget->clear();
    m_checkcurwidget = true;
-   QStringList headerlist = (QStringList() << tr("Job Name") 
-      << tr("Pool") << tr("Messages") << tr("Client") 
-      << tr("Storage") << tr("Level") << tr("Type") 
+   QStringList headerlist = (QStringList() << tr("Job Name")
+      << tr("Pool") << tr("Messages") << tr("Client")
+      << tr("Storage") << tr("Level") << tr("Type")
       << tr("FileSet") << tr("Catalog") << tr("Enabled")
       << tr("Where"));
 
@@ -104,7 +89,7 @@ void Jobs::populateTable()
       if (m_console->get_job_defaults(job_defs)) {
          int col = 0;
          TableItemFormatter jobsItem(*tableWidget, row);
-         jobsItem.setTextFld(col++, jobName); 
+         jobsItem.setTextFld(col++, jobName);
          jobsItem.setTextFld(col++, job_defs.pool_name);
          jobsItem.setTextFld(col++, job_defs.messages_name);
          jobsItem.setTextFld(col++, job_defs.client_name);
@@ -121,7 +106,7 @@ void Jobs::populateTable()
    /* set default sorting */
    tableWidget->sortByColumn(headerlist.indexOf(tr("Job Name")), Qt::AscendingOrder);
    tableWidget->setSortingEnabled(true);
-   
+
    /* Resize rows and columns */
    tableWidget->resizeColumnsToContents();
    tableWidget->resizeRowsToContents();
@@ -180,8 +165,8 @@ void Jobs::tableItemChanged(QTableWidgetItem *currentwidgetitem, QTableWidgetIte
    }
 }
 
-/* 
- * Setup a context menu 
+/*
+ * Setup a context menu
  * Made separate from populate so that it would not create context menu over and
  * over as the table is repopulated.
  */
@@ -267,7 +252,7 @@ void Jobs::listJobs()
 }
 
 /*
- * Open a new job run page with the currently selected job 
+ * Open a new job run page with the currently selected job
  * defaulted In
  */
 void Jobs::runJob()
diff --git a/src/qt-console/jobs/jobs.h b/src/qt-console/jobs/jobs.h
index fb9de96..0b77ac5 100644
--- a/src/qt-console/jobs/jobs.h
+++ b/src/qt-console/jobs/jobs.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -40,7 +28,7 @@
 
 class Jobs : public Pages, public Ui::jobsForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    Jobs();
diff --git a/src/qt-console/label/label.cpp b/src/qt-console/label/label.cpp
index 3afbae2..914e427 100644
--- a/src/qt-console/label/label.cpp
+++ b/src/qt-console/label/label.cpp
@@ -3,35 +3,23 @@
 
    Copyright (C) 2007-2011 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Label Page class
  *
  *   Kern Sibbald, February MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "label.h"
@@ -93,7 +81,7 @@ void labelPage::okButtonPushed()
    scmd = QString("label volume=\"%1\" pool=\"%2\" storage=\"%3\" slot=%4\n")
                   .arg(volumeName->text())
                   .arg(poolCombo->currentText())
-                  .arg(storageCombo->currentText()) 
+                  .arg(storageCombo->currentText())
                   .arg(slotSpin->value());
    if (mainWin->m_commandDebug) {
       Pmsg1(000, "sending command : %s\n", scmd.toUtf8().data());
diff --git a/src/qt-console/label/label.h b/src/qt-console/label/label.h
index 61d4dcd..6f5bd2b 100644
--- a/src/qt-console/label/label.h
+++ b/src/qt-console/label/label.h
@@ -1,31 +1,19 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
-/* 
+/*
  * Kern Sibbald, February MMVII
  */
 
@@ -39,7 +27,7 @@
 
 class labelPage : public Pages, public Ui::labelForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    labelPage();
diff --git a/src/qt-console/main.cpp b/src/qt-console/main.cpp
index 7c1f55b..870cabc 100644
--- a/src/qt-console/main.cpp
+++ b/src/qt-console/main.cpp
@@ -1,36 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Main program for bat (qt-console)
  *
- *   Kern Sibbald, January MMVII
+ *   Written by Kern Sibbald, January MMVII
  *
- */ 
+ */
 
 
 #include "bat.h"
@@ -50,7 +38,7 @@ MainWin *mainWin;
 QApplication *app;
 
 /* Forward referenced functions */
-void terminate_console(int sig);                                
+void terminate_console(int sig);
 static void usage();
 static int check_resources();
 
@@ -71,10 +59,11 @@ int main(int argc, char *argv[])
    bool test_config = false;
 
 
-   app = new QApplication(argc, argv);        
+   app = new QApplication(argc, argv);
+   app->setStyle(new QPlastiqueStyle());
    app->setQuitOnLastWindowClosed(true);
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
-     
+
    QTranslator qtTranslator;
    qtTranslator.load(QString("qt_") + QLocale::system().name(),QLibraryInfo::location(QLibraryInfo::TranslationsPath));
    app->installTranslator(&qtTranslator);
@@ -236,7 +225,7 @@ static int check_resources()
          ok = false;
       }
    }
-   
+
    if (numdir == 0) {
       Emsg1(M_FATAL, 0, _("No Director resource defined in %s\n"
                           "Without that I don't how to speak to the Director :-(\n"), configfile);
diff --git a/src/qt-console/mainwin.cpp b/src/qt-console/mainwin.cpp
index ed9852e..6425ca3 100644
--- a/src/qt-console/mainwin.cpp
+++ b/src/qt-console/mainwin.cpp
@@ -3,27 +3,15 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /*
@@ -32,7 +20,7 @@
  *
  *   Kern Sibbald, January MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "version.h"
@@ -56,7 +44,7 @@
 #include "status/dirstat.h"
 #include "util/fmtwidgetitem.h"
 
-/* 
+/*
  * Daemon message callback
  */
 void message_callback(int /* type */, char *msg)
@@ -97,7 +85,7 @@ MainWin::MainWin(QWidget *parent) : QMainWindow(parent)
    foreach(Console *console, m_consoleHash) {
       console->connect_dir();
    }
-   /* 
+   /*
     * Note, the notifier is now a global flag, although each notifier
     *  can be individually turned on and off at a socket level.  Once
     *  the notifier is turned off, we don't accept anything from anyone
@@ -169,8 +157,8 @@ void MainWin::createPages()
       item->setForeground(0, redBrush);
 
       /*
-       * Create instances in alphabetic order of the rest 
-       *  of the classes that will by default exist under each Director.  
+       * Create instances in alphabetic order of the rest
+       *  of the classes that will by default exist under each Director.
        */
       new bRestore();
       new Clients();
@@ -317,7 +305,7 @@ void MainWin::disconnectSignals()
  */
 void MainWin::waitEnter()
 {
-   if (m_waitState || m_isClosing) { 
+   if (m_waitState || m_isClosing) {
       return;
    }
    m_waitState = true;
@@ -363,7 +351,7 @@ void MainWin::disconnectConsoleSignals(Console *console)
 }
 
 
-/* 
+/*
  * Two functions to respond to menu items to repop lists and execute reload and repopulate
  * the lists for jobs, clients, filesets .. ..
  */
@@ -378,8 +366,8 @@ void MainWin::reloadRepopLists()
    m_currentConsole->populateLists(false);
 }
 
-/* 
- * Reimplementation of QWidget closeEvent virtual function   
+/*
+ * Reimplementation of QWidget closeEvent virtual function
  */
 void MainWin::closeEvent(QCloseEvent *event)
 {
@@ -425,7 +413,7 @@ void MainWin::writeSettings()
 }
 
 void MainWin::readSettings()
-{ 
+{
    QSettings settings("bacula.org", "bat");
 
    settings.beginGroup("MainWin");
@@ -437,7 +425,7 @@ void MainWin::readSettings()
 
 /*
  * This subroutine is called with an item in the Page Selection window
- *   is clicked 
+ *   is clicked
  */
 void MainWin::treeItemClicked(QTreeWidgetItem *item, int /*column*/)
 {
@@ -490,7 +478,7 @@ void MainWin::treeItemChanged(QTreeWidgetItem *currentitem, QTreeWidgetItem *pre
       nextPage = NULL;
       nextConsole = NULL;
    }
-          
+
    /* The Previous item */
 
    /* this condition prevents a segfault.  The first time there is no previousitem*/
@@ -518,7 +506,7 @@ void MainWin::treeItemChanged(QTreeWidgetItem *currentitem, QTreeWidgetItem *pre
    }
 
    /* process the current (next) item */
-   
+
    if ((nextPage) || (nextConsole)) {
       if (nextConsole != previousConsole) {
          /* make connections to the current console */
@@ -533,7 +521,7 @@ void MainWin::treeItemChanged(QTreeWidgetItem *currentitem, QTreeWidgetItem *pre
       /* set the value for the currently active console */
       int stackindex = tabWidget->indexOf(nextPage);
       nextPage->firstUseDock();
-   
+
       /* Is this page currently on the stack or is it undocked */
       if (stackindex >= 0) {
          /* put this page on the top of the stack */
@@ -556,22 +544,22 @@ void MainWin::treeItemChanged(QTreeWidgetItem *currentitem, QTreeWidgetItem *pre
    }
 }
 
-void MainWin::labelButtonClicked() 
+void MainWin::labelButtonClicked()
 {
    new labelPage();
 }
 
-void MainWin::runButtonClicked() 
+void MainWin::runButtonClicked()
 {
    new runPage("");
 }
 
-void MainWin::estimateButtonClicked() 
+void MainWin::estimateButtonClicked()
 {
    new estimatePage();
 }
 
-void MainWin::browseButtonClicked() 
+void MainWin::browseButtonClicked()
 {
 //   new restoreTree();
 }
@@ -593,7 +581,7 @@ void MainWin::statusPageButtonClicked()
    }
 }
 
-void MainWin::restoreButtonClicked() 
+void MainWin::restoreButtonClicked()
 {
    new prerestorePage();
    if (mainWin->m_miscDebug) Pmsg0(000, "in restoreButtonClicked after prerestorePage\n");
@@ -636,8 +624,9 @@ void MainWin::input_line()
 void MainWin::about()
 {
    QMessageBox::about(this, tr("About bat"),
-      tr("<br><h2>bat %1 (%2), by Dirk H Bartley and Kern Sibbald</h2>"
+      tr("<br><h2>Bat %1 (%2), by Dirk H Bartley and Kern Sibbald</h2>"
          "<p>Copyright © 2007-%3 Free Software Foundation Europe e.V."
+         "<p>Improved by Bacula Systems SA."
          "<p>The <b>bat</b> is an administrative console"
          " interface to the Director.").arg(VERSION).arg(BDATE).arg(BYEAR));
 }
@@ -684,14 +673,14 @@ void MainWin::undockWindowButton()
 }
 
 /*
- * Function to respond to action on page selector context menu to toggle the 
+ * Function to respond to action on page selector context menu to toggle the
  * dock status of the window associated with the page selectors current
  * tree widget item.
  */
 void MainWin::toggleDockContextWindow()
 {
    QTreeWidgetItem *currentitem = treeWidget->currentItem();
-   
+
    /* Is this a page that has been inserted into the hash  */
    if (getFromHash(currentitem)) {
       Pages* page = getFromHash(currentitem);
@@ -787,8 +776,8 @@ void MainWin::closePage(int item)
       if (getFromHash(currentitem)) {
          page = getFromHash(currentitem);
       }
-   }   
-   
+   }
+
    if (page) {
       if (page->isCloseable()) {
          page->closeStackPage();
@@ -978,7 +967,7 @@ void MainWin::readPreferences()
    settings.beginGroup("Misc");
    m_longList = settings.value("longList", false).toBool();
    ItemFormatterBase::setBytesConversion(
-         (ItemFormatterBase::BYTES_CONVERSION) settings.value("byteConvert", 
+         (ItemFormatterBase::BYTES_CONVERSION) settings.value("byteConvert",
          ItemFormatterBase::BYTES_CONVERSION_IEC).toInt());
    m_openPlot = settings.value("openplot", false).toBool();
    m_openBrowser = settings.value("openbrowser", false).toBool();
diff --git a/src/qt-console/mainwin.h b/src/qt-console/mainwin.h
index b748da0..f29464a 100644
--- a/src/qt-console/mainwin.h
+++ b/src/qt-console/mainwin.h
@@ -1,31 +1,19 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
-/* 
+/*
  *   Version $Id$
  *
  * qt-console main window class definition.
@@ -43,7 +31,7 @@
 class Console;
 class Pages;
 
-class MainWin : public QMainWindow, public Ui::MainForm    
+class MainWin : public QMainWindow, public Ui::MainForm
 {
    Q_OBJECT
 
@@ -142,8 +130,8 @@ protected:
 private:
    void connectConsole();
    void createPages();
-   void connectSignals(); 
-   void disconnectSignals(); 
+   void connectSignals();
+   void disconnectSignals();
    void connectConsoleSignals();
    void disconnectConsoleSignals(Console *console);
 
diff --git a/src/qt-console/mediaedit/mediaedit.cpp b/src/qt-console/mediaedit/mediaedit.cpp
index 3e3b6d0..12b1cfa 100644
--- a/src/qt-console/mediaedit/mediaedit.cpp
+++ b/src/qt-console/mediaedit/mediaedit.cpp
@@ -3,34 +3,22 @@
 
    Copyright (C) 2007-2009 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
  *
  *   Dirk Bartley, March 2007
  */
- 
+
 #include "bat.h"
 #include <QAbstractEventDispatcher>
 #include <QTableWidgetItem>
@@ -38,9 +26,9 @@
 #include "mediaedit.h"
 
 /*
- * A constructor 
+ * A constructor
  */
-MediaEdit::MediaEdit(QTreeWidgetItem *parentWidget, QString &mediaId) 
+MediaEdit::MediaEdit(QTreeWidgetItem *parentWidget, QString &mediaId)
   : Pages()
 {
    setupUi(this);
@@ -67,7 +55,7 @@ MediaEdit::MediaEdit(QTreeWidgetItem *parentWidget, QString &mediaId)
    poolCombo->addItems(m_console->pool_list);
 
    /* The media's Status */
-   QStringList statusList = (QStringList() << "Full" << "Used" << "Append" 
+   QStringList statusList = (QStringList() << "Full" << "Used" << "Append"
        << "Error" << "Purged" << "Recycle" << "Read-Only" << "Cleaning");
    statusCombo->addItems(statusList);
 
@@ -302,7 +290,7 @@ void MediaEdit::useDurationChanged()
 void MediaEdit::setSpins(int value)
 {
    int years, months, days, hours, minutes, seconds, left;
-        
+
    years = abs(value / 31536000);
    left = value - years * 31536000;
    months = abs(left / 2592000);
@@ -376,7 +364,7 @@ void MediaEdit::durationChanged()
    connectSpins();
    if (retentionRadio->isChecked()) {
       int retention;
-      retention = secondsSpin->value() + minutesSpin->value() * 60 + 
+      retention = secondsSpin->value() + minutesSpin->value() * 60 +
          hoursSpin->value() * 3600 + daysSpin->value() * 86400 +
          monthsSpin->value() * 2592000 +
          yearsSpin->value() * 31536000;
@@ -386,7 +374,7 @@ void MediaEdit::durationChanged()
    }
    if (useDurationRadio->isChecked()) {
       int useDuration;
-      useDuration = secondsSpin->value() + minutesSpin->value() * 60 + 
+      useDuration = secondsSpin->value() + minutesSpin->value() * 60 +
          hoursSpin->value() * 3600 + daysSpin->value() * 86400 +
          monthsSpin->value() * 2592000 +
          yearsSpin->value() * 31536000;
diff --git a/src/qt-console/mediaedit/mediaedit.h b/src/qt-console/mediaedit/mediaedit.h
index 843cc1c..252fc44 100644
--- a/src/qt-console/mediaedit/mediaedit.h
+++ b/src/qt-console/mediaedit/mediaedit.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -40,7 +28,7 @@
 
 class MediaEdit : public Pages, public Ui::mediaEditForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    MediaEdit(QTreeWidgetItem *parentWidget, QString &mediaId);
diff --git a/src/qt-console/mediainfo/mediainfo.cpp b/src/qt-console/mediainfo/mediainfo.cpp
index f9ba661..040192a 100644
--- a/src/qt-console/mediainfo/mediainfo.cpp
+++ b/src/qt-console/mediainfo/mediainfo.cpp
@@ -3,29 +3,17 @@
 
    Copyright (C) 2007-2009 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bat.h"
 #include <QAbstractEventDispatcher>
 #include <QTableWidgetItem>
@@ -38,9 +26,9 @@
 #include "job/job.h"
 
 /*
- * A constructor 
+ * A constructor
  */
-MediaInfo::MediaInfo(QTreeWidgetItem *parentWidget, QString &mediaName) 
+MediaInfo::MediaInfo(QTreeWidgetItem *parentWidget, QString &mediaName)
   : Pages()
 {
    setupUi(this);
@@ -53,7 +41,7 @@ MediaInfo::MediaInfo(QTreeWidgetItem *parentWidget, QString &mediaName)
    connect(pbDelete, SIGNAL(clicked()), this, SLOT(deleteVol()));
    connect(pbEdit, SIGNAL(clicked()), this, SLOT(editVol()));
    connect(tableJob, SIGNAL(itemDoubleClicked(QTableWidgetItem*)), this, SLOT(showInfoForJob(QTableWidgetItem *)));
-   
+
    dockPage();
    setCurrent();
    populateForm();
@@ -133,7 +121,7 @@ void MediaInfo::populateForm()
    QString stat, LastWritten;
    struct tm tm;
    char buf[256];
-   QString query = 
+   QString query =
       "SELECT MediaId, VolumeName, Pool.Name, MediaType, FirstWritten,"
       "LastWritten, VolMounts, VolBytes, Media.Enabled,"
       "Location.Location, VolStatus, RecyclePool.Name, Media.Recycle, "
@@ -171,7 +159,7 @@ void MediaInfo::populateForm()
          label_Location->setText(fld.next());
          label_VolStatus->setText(fld.next());
          label_RecyclePool->setText(fld.next());
-         chkbox_Recycle->setCheckState(fld.next().toInt()?Qt::Checked:Qt::Unchecked);         
+         chkbox_Recycle->setCheckState(fld.next().toInt()?Qt::Checked:Qt::Unchecked);
          edit_utime(fld.next().toULongLong(), buf, sizeof(buf));
          label_VolReadTime->setText(QString(buf));
 
@@ -193,7 +181,7 @@ void MediaInfo::populateForm()
             t = str_to_utime(LastWritten.toAscii().data());
             t = t + stat.toULongLong();
             ttime = t;
-            localtime_r(&ttime, &tm);         
+            localtime_r(&ttime, &tm);
             strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &tm);
             label_Expire->setText(QString(buf));
          }
@@ -205,11 +193,11 @@ void MediaInfo::populateForm()
 
 //         jobstatus_to_ascii_gui(stat[0].toAscii(), buf, sizeof(buf));
 //         stat = buf;
-//       
+//
       }
    }
 
-   query = 
+   query =
       "SELECT DISTINCT JobId, Name, StartTime, Type, Level, JobFiles,"
       "JobBytes,JobStatus "
       "FROM Job JOIN JobMedia USING (JobId) JOIN Media USING (MediaId) "
@@ -231,7 +219,7 @@ void MediaInfo::populateForm()
          TableItemFormatter jobitem(*tableJob, row);
 
          /* JobId */
-         jobitem.setNumericFld(index++, fld.next()); 
+         jobitem.setNumericFld(index++, fld.next());
 
          /* job name */
          jobitem.setTextFld(index++, fld.next());
diff --git a/src/qt-console/mediainfo/mediainfo.h b/src/qt-console/mediainfo/mediainfo.h
index f9d8e88..c9194c2 100644
--- a/src/qt-console/mediainfo/mediainfo.h
+++ b/src/qt-console/mediainfo/mediainfo.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -39,7 +27,7 @@
 
 class MediaInfo : public Pages, public Ui::mediaInfoForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    MediaInfo(QTreeWidgetItem *parentWidget, QString &mediaId);
diff --git a/src/qt-console/medialist/medialist.cpp b/src/qt-console/medialist/medialist.cpp
index 670241f..2627840 100644
--- a/src/qt-console/medialist/medialist.cpp
+++ b/src/qt-console/medialist/medialist.cpp
@@ -3,35 +3,23 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  MediaList Class
  *
  *   Dirk Bartley, March 2007
  *
- */ 
+ */
 
 #include "bat.h"
 #include <QAbstractEventDispatcher>
@@ -69,7 +57,7 @@ MediaList::~MediaList()
 }
 
 /*
- * The main meat of the class!!  The function that querries the director and 
+ * The main meat of the class!!  The function that querries the director and
  * creates the widgets with appropriate values.
  */
 void MediaList::populateTree()
@@ -98,7 +86,7 @@ void MediaList::populateTree()
    m_topItem->setText(0, tr("Pools"));
    m_topItem->setData(0, Qt::UserRole, 0);
    m_topItem->setExpanded(true);
-   
+
    mp_treeWidget->setHeaderLabels(headerlist);
 
    QSettings settings(m_console->m_dir->name(), "bat");
@@ -172,15 +160,15 @@ void MediaList::populateTree()
 
             int index = 0;
             TreeItemFormatter mediaitem(*pooltreeitem, 2);
-  
+
             /* Iterate through fields in the record */
             QStringListIterator fld(fieldlist);
 
             /* volname */
-            mediaitem.setTextFld(index++, fld.next()); 
+            mediaitem.setTextFld(index++, fld.next());
 
             /* id */
-            mediaitem.setNumericFld(index++, fld.next()); 
+            mediaitem.setNumericFld(index++, fld.next());
 
             /* status */
             mediaitem.setVolStatusFld(index++, fld.next());
@@ -192,24 +180,24 @@ void MediaList::populateTree()
             mediaitem.setBytesFld(index++, fld.next());
 
             /* files */
-            mediaitem.setNumericFld(index++, fld.next()); 
+            mediaitem.setNumericFld(index++, fld.next());
 
             /* jobs */
-            mediaitem.setNumericFld(index++, fld.next()); 
+            mediaitem.setNumericFld(index++, fld.next());
 
             /* retention */
             mediaitem.setDurationFld(index++, fld.next());
 
             /* media type */
-            mediaitem.setTextFld(index++, fld.next()); 
+            mediaitem.setTextFld(index++, fld.next());
 
             /* inchanger + slot */
             int inchanger = fld.next().toInt();
             if (inchanger) {
-               mediaitem.setNumericFld(index++, fld.next()); 
+               mediaitem.setNumericFld(index++, fld.next());
             } else {
                /* volume not in changer, show blank slot */
-               mediaitem.setNumericFld(index++, ""); 
+               mediaitem.setNumericFld(index++, "");
                fld.next();
             }
 
@@ -217,10 +205,10 @@ void MediaList::populateTree()
             mediaitem.setDurationFld(index++, fld.next());
 
             /* max jobs */
-            mediaitem.setNumericFld(index++, fld.next()); 
+            mediaitem.setNumericFld(index++, fld.next());
 
             /* max files */
-            mediaitem.setNumericFld(index++, fld.next()); 
+            mediaitem.setNumericFld(index++, fld.next());
 
             /* max bytes */
             mediaitem.setBytesFld(index++, fld.next());
@@ -229,10 +217,10 @@ void MediaList::populateTree()
             mediaitem.setBoolFld(index++, fld.next());
 
             /* last written */
-            mediaitem.setTextFld(index++, fld.next()); 
+            mediaitem.setTextFld(index++, fld.next());
 
             /* first written */
-            mediaitem.setTextFld(index++, fld.next()); 
+            mediaitem.setTextFld(index++, fld.next());
 
             /* read time */
             mediaitem.setDurationFld(index++, fld.next());
@@ -241,10 +229,10 @@ void MediaList::populateTree()
             mediaitem.setDurationFld(index++, fld.next());
 
             /* Recycle Count */
-            mediaitem.setNumericFld(index++, fld.next()); 
+            mediaitem.setNumericFld(index++, fld.next());
 
             /* recycle pool */
-            mediaitem.setTextFld(index++, fld.next()); 
+            mediaitem.setTextFld(index++, fld.next());
 
          } /* foreach resultline */
          counter += 1;
@@ -334,8 +322,8 @@ void MediaList::treeItemChanged(QTreeWidgetItem *currentwidgetitem, QTreeWidgetI
    }
 }
 
-/* 
- * Setup a context menu 
+/*
+ * Setup a context menu
  * Made separate from populate so that it would not create context menu over and
  * over as the tree is repopulated.
  */
diff --git a/src/qt-console/medialist/medialist.h b/src/qt-console/medialist/medialist.h
index 47bf066..3ce2e0c 100644
--- a/src/qt-console/medialist/medialist.h
+++ b/src/qt-console/medialist/medialist.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Dirk Bartley, March 2007
@@ -38,7 +26,7 @@
 
 class MediaList : public Pages, public Ui::MediaListForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    MediaList();
diff --git a/src/qt-console/medialist/mediaview.cpp b/src/qt-console/medialist/mediaview.cpp
index 7a44e15..1475297 100644
--- a/src/qt-console/medialist/mediaview.cpp
+++ b/src/qt-console/medialist/mediaview.cpp
@@ -3,29 +3,17 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bat.h"
 #include <QAbstractEventDispatcher>
 #include <QMenu>
@@ -50,7 +38,7 @@ MediaView::MediaView() : Pages()
    connect(m_pbPurge, SIGNAL(pressed()), this, SLOT(purgePushed()));
    connect(m_pbDelete, SIGNAL(pressed()), this, SLOT(deletePushed()));
    connect(m_pbPrune, SIGNAL(pressed()), this, SLOT(prunePushed()));
-   connect(m_tableMedia, SIGNAL(itemDoubleClicked(QTableWidgetItem*)), 
+   connect(m_tableMedia, SIGNAL(itemDoubleClicked(QTableWidgetItem*)),
            this, SLOT(showInfoForMedia(QTableWidgetItem *)));
 
    /* mp_treeWidget, Storage Tree Tree Widget inherited from ui_medialist.h */
@@ -82,7 +70,7 @@ void MediaView::editPushed()
    QStringList sel;
    QString cmd;
    getSelection(sel);
-   
+
    for(int i=0; i<sel.count(); i++) {
       cmd = sel.at(i);
       new MediaEdit(mainWin->getFromHash(this), cmd);
@@ -205,7 +193,7 @@ void MediaView::populateForm()
    m_cbLocation->addItems(m_console->location_list);
 }
 
-/* 
+/*
  * If chkExpired button is checked, we can remove all non Expired
  * entries
  */
@@ -237,7 +225,7 @@ void MediaView::filterExipired(QStringList &list)
 }
 
 /*
- * The main meat of the class!!  The function that querries the director and 
+ * The main meat of the class!!  The function that querries the director and
  * creates the widgets with appropriate values.
  */
 void MediaView::populateTable()
@@ -260,7 +248,7 @@ void MediaView::populateTable()
    if (m_cbPool->currentText() != "") {
       cmd = " Pool.Name = '" + m_cbPool->currentText() + "'";
       where.append(cmd);
-   } 
+   }
 
    if (m_cbStatus->currentText() != "") {
       cmd = " Media.VolStatus = '" + m_cbStatus->currentText() + "'";
@@ -305,22 +293,22 @@ void MediaView::populateTable()
    if (m_console->sql_cmd(query, results)) {
       foreach (resultline, results) {
          fieldlist = resultline.split("\t");
-         if (fieldlist.at(1).toInt() >= 1) { 
+         if (fieldlist.at(1).toInt() >= 1) {
             //           MediaType
-            hash_size[fieldlist.at(2)] 
-               = fieldlist.at(0).toFloat(); 
+            hash_size[fieldlist.at(2)]
+               = fieldlist.at(0).toFloat();
          }
       }
-   }      
-   
+   }
+
    m_tableMedia->clearContents();
-   query = 
+   query =
       "SELECT VolumeName, InChanger, "
       "Slot, MediaType, VolStatus, VolBytes, Pool.Name,  "
       "LastWritten, Media.VolRetention "
       "FROM Media JOIN Pool USING (PoolId) "
       "LEFT JOIN Location ON (Media.LocationId=Location.LocationId) "
-      + cmd + 
+      + cmd +
       " ORDER BY VolumeName LIMIT " + m_sbLimit->cleanText();
 
    m_tableMedia->sortByColumn(0, Qt::AscendingOrder);
@@ -345,8 +333,8 @@ void MediaView::populateTable()
          TableItemFormatter mediaitem(*m_tableMedia, row);
 
          /* VolumeName */
-         mediaitem.setTextFld(index++, fld.next()); 
-         
+         mediaitem.setTextFld(index++, fld.next());
+
          /* Online */
          mediaitem.setInChanger(index++, fld.next());
 
@@ -384,10 +372,10 @@ void MediaView::populateTable()
             t = str_to_utime(LastWritten.toAscii().data());
             t = t + stat.toULongLong();
             ttime = t;
-            localtime_r(&ttime, &tm);         
+            localtime_r(&ttime, &tm);
             strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &tm);
          }
-         
+
          /* LastWritten */
          mediaitem.setTextFld(index++, LastWritten);
 
@@ -439,7 +427,7 @@ void MediaView::currentStackItem()
 //    setConsoleCurrent();
 //    new relabelDialog(m_console, m_currentVolumeName);
 // }
-// 
+//
 // /*
 //  * Called from the signal of the context sensitive menu to purge!
 //  */
@@ -449,14 +437,14 @@ void MediaView::currentStackItem()
 //    consoleCommand(cmd);
 //    populateTable();
 // }
-// 
+//
 // void MediaView::allVolumes()
 // {
 //    QString cmd = "update volume allfrompools";
 //    consoleCommand(cmd);
 //    populateTable();
 // }
-// 
+//
 //  /*
 //   * Called from the signal of the context sensitive menu to purge!
 //   */
@@ -470,4 +458,4 @@ void MediaView::currentStackItem()
 //     consoleCommand(cmd);
 //     populateTable();
 //  }
-//  
+//
diff --git a/src/qt-console/medialist/mediaview.h b/src/qt-console/medialist/mediaview.h
index 778cb26..d11d271 100644
--- a/src/qt-console/medialist/mediaview.h
+++ b/src/qt-console/medialist/mediaview.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 <QtGui>
@@ -35,7 +23,7 @@
 
 class MediaView : public Pages, public Ui::MediaViewForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    MediaView();
diff --git a/src/qt-console/mount/mount.cpp b/src/qt-console/mount/mount.cpp
index 3324a58..188004a 100644
--- a/src/qt-console/mount/mount.cpp
+++ b/src/qt-console/mount/mount.cpp
@@ -3,42 +3,30 @@
 
    Copyright (C) 2007-2007 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Label Dialog class
  *
  *   Kern Sibbald, February MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "mount/mount.h"
 #include <QMessageBox>
 
 /*
- * A constructor 
+ * A constructor
  */
 mountDialog::mountDialog(Console *console, QString &storageName) : QDialog()
 {
diff --git a/src/qt-console/mount/mount.h b/src/qt-console/mount/mount.h
index 0cea8f4..157c851 100644
--- a/src/qt-console/mount/mount.h
+++ b/src/qt-console/mount/mount.h
@@ -1,31 +1,19 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
-/* 
+/*
  * Kern Sibbald, February MMVII
  */
 
@@ -38,7 +26,7 @@
 
 class mountDialog : public QDialog, public Ui::mountForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    mountDialog(Console *console, QString &storage);
diff --git a/src/qt-console/pages.cpp b/src/qt-console/pages.cpp
index b22e6bf..0a7c70c 100644
--- a/src/qt-console/pages.cpp
+++ b/src/qt-console/pages.cpp
@@ -3,27 +3,15 @@
 
    Copyright (C) 2007-2011 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Dirk Bartley, March 2007
@@ -33,7 +21,7 @@
 #include "pages.h"
 
 /* A global function */
-bool isWin32Path(QString &fullPath) 
+bool isWin32Path(QString &fullPath)
 {
    if (fullPath.size()<2) {
       return false;
@@ -133,8 +121,8 @@ void Pages::undockPage()
 }
 
 /*
- * This function is intended to be called with the subclasses.  When it is 
- * called the specific sublclass does not have to be known to Pages.  When it 
+ * This function is intended to be called with the subclasses.  When it is
+ * called the specific sublclass does not have to be known to Pages.  When it
  * is called this function will change the page from it's current state of being
  * docked or undocked and change it to the other.
  */
@@ -149,7 +137,7 @@ void Pages::togglePageDocking()
 }
 
 /*
- * This function is because I wanted for some reason to keep it protected but still 
+ * This function is because I wanted for some reason to keep it protected but still
  * give any subclasses the ability to find out if it is currently stacked or not.
  */
 bool Pages::isDocked()
@@ -206,8 +194,8 @@ void Pages::closeEvent(QCloseEvent* event)
    /* this fixes my woes of getting the widget to show up on top when closed */
    event->ignore();
 
-   /* Set the current tree widget item in the Page Selector window to the item 
-    * which represents "this" 
+   /* Set the current tree widget item in the Page Selector window to the item
+    * which represents "this"
     * Which will also bring "this" to the top of the stacked widget */
    setCurrent();
 }
@@ -277,7 +265,7 @@ void Pages::pgInitialize(const QString &tname, QTreeWidgetItem *parentTreeWidget
    }
 
    QTreeWidgetItem *item = new QTreeWidgetItem(parentTreeWidgetItem);
-   QString name; 
+   QString name;
    treeWidgetName(name);
    item->setText(0, name);
    mainWin->hashInsert(item, this);
@@ -379,7 +367,7 @@ void Pages::setCurrent()
 
 /*
  * Function to set the text of the toggle dock context menu when page and
- * widget item are NOT known.  
+ * widget item are NOT known.
  */
 void Pages::setContextMenuDockText()
 {
@@ -390,7 +378,7 @@ void Pages::setContextMenuDockText()
    } else {
       docktext = tr("ReDock %1 Window").arg(item->text(0));
    }
-      
+
    mainWin->actionToggleDock->setText(docktext);
    setTreeWidgetItemDockColor();
 }
diff --git a/src/qt-console/pages.h b/src/qt-console/pages.h
index 6dc2d47..bc460ca 100644
--- a/src/qt-console/pages.h
+++ b/src/qt-console/pages.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Dirk Bartley, March 2007
@@ -43,7 +31,7 @@
  *  of or into the stack.  It also provides virtual functions called
  *  from in mainwin so that subclasses can contain functions to allow them
  *  to populate the screens at the time of first viewing, (when selected) as
- *  opposed to  the first creation of the console connection.  The 
+ *  opposed to  the first creation of the console connection.  The
  *  console is not connected until after the page selector tree has been
  *  populated.
  */
diff --git a/src/qt-console/relabel/relabel.cpp b/src/qt-console/relabel/relabel.cpp
index b089c8f..fb967f6 100644
--- a/src/qt-console/relabel/relabel.cpp
+++ b/src/qt-console/relabel/relabel.cpp
@@ -3,35 +3,23 @@
 
    Copyright (C) 2007-2009 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Label Dialog class
  *
  *   Kern Sibbald, February MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "relabel.h"
@@ -93,7 +81,7 @@ void relabelDialog::accept()
       return;
    }
    if (m_fromVolume == volumeName->text().toUtf8()) {
-      QMessageBox::warning(this, tr("New name must be different"), 
+      QMessageBox::warning(this, tr("New name must be different"),
                            tr("New name must be different"),
                            QMessageBox::Ok, QMessageBox::Ok);
       return;
diff --git a/src/qt-console/relabel/relabel.h b/src/qt-console/relabel/relabel.h
index aebf961..c4aa636 100644
--- a/src/qt-console/relabel/relabel.h
+++ b/src/qt-console/relabel/relabel.h
@@ -1,31 +1,19 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
-/* 
+/*
  * Kern Sibbald, February MMVII
  */
 
@@ -38,7 +26,7 @@
 
 class relabelDialog : public QDialog, public Ui::relabelForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    relabelDialog(Console *console, QString &fromVolume);
diff --git a/src/qt-console/restore/brestore.cpp b/src/qt-console/restore/brestore.cpp
index f397b4e..980bd8e 100644
--- a/src/qt-console/restore/brestore.cpp
+++ b/src/qt-console/restore/brestore.cpp
@@ -3,36 +3,24 @@
 
    Copyright (C) 2007-2011 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *
  *  bRestore Class  (Eric's brestore)
  *
  *   Kern Sibbald, January MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "restore.h"
@@ -195,7 +183,7 @@ void bRestore::displayFiles(int64_t pathid, QString path)
    LocationEntry->setText(m_path);
    QString offset = QString().setNum(Offset1Spin->value());
    QString limit=QString().setNum(Offset2Spin->value() - Offset1Spin->value());
-   QString q = ".bvfs_lsdir jobid=" + m_jobids + arg 
+   QString q = ".bvfs_lsdir jobid=" + m_jobids + arg
       + " limit=" + limit + " offset=" + offset ;
    if (mainWin->m_miscDebug) qDebug() << q;
    if (m_console->dir_cmd(q, results)) {
@@ -232,7 +220,7 @@ void bRestore::displayFiles(int64_t pathid, QString path)
          fieldlist = resultline.split("\t");
          TableItemFormatter item(*FileList, row++);
          item.setTextFld(col++, fieldlist.at(5)); // name
-         decode_stat(fieldlist.at(4).toLocal8Bit().data(), 
+         decode_stat(fieldlist.at(4).toLocal8Bit().data(),
                      &statp, sizeof(statp), &LinkFI);
          item.setBytesFld(col++, QString().setNum(statp.st_size));
          item.setDateFld(col++, statp.st_mtime);
@@ -257,7 +245,7 @@ void bRestore::PgSeltreeWidgetClicked()
 }
 
 // Display all versions of a file for this client
-void bRestore::displayFileVersion(QString pathid, QString fnid, 
+void bRestore::displayFileVersion(QString pathid, QString fnid,
                                   QString client, QString filename)
 {
    int row=0;
@@ -265,10 +253,10 @@ void bRestore::displayFileVersion(QString pathid, QString fnid,
    int32_t LinkFI;
    Freeze frz_rev(*FileRevisions); /* disable updating*/
    FileRevisions->clearContents();
-   
+
    QString q = ".bvfs_versions jobid=" + m_jobids +
-      " pathid=" + pathid + 
-      " fnid=" + fnid + 
+      " pathid=" + pathid +
+      " fnid=" + fnid +
       " client=" + client;
 
    if (VersionsChk->checkState() == Qt::Checked) {
@@ -289,7 +277,7 @@ void bRestore::displayFileVersion(QString pathid, QString fnid,
          item.setInChanger(col++, fieldlist.at(7)); // inchanger
          item.setTextFld(col++, fieldlist.at(6)); // Volume
          item.setNumericFld(col++, fieldlist.at(3)); // JobId
-         decode_stat(fieldlist.at(4).toLocal8Bit().data(), 
+         decode_stat(fieldlist.at(4).toLocal8Bit().data(),
                      &statp, sizeof(statp), &LinkFI);
          item.setBytesFld(col++, QString().setNum(statp.st_size)); // size
          item.setDateFld(col++, statp.st_mtime); // date
@@ -355,9 +343,9 @@ void bRestore::setupPage()
    ClientList->addItems(m_console->client_list);
    connect(ClientList, SIGNAL(currentIndexChanged(int)), this, SLOT(setClient()));
    connect(JobList, SIGNAL(currentIndexChanged(int)), this, SLOT(setJob()));
-   connect(FileList, SIGNAL(itemClicked(QTableWidgetItem*)), 
+   connect(FileList, SIGNAL(itemClicked(QTableWidgetItem*)),
            this, SLOT(clearVersions(QTableWidgetItem *)));
-   connect(FileList, SIGNAL(itemDoubleClicked(QTableWidgetItem*)), 
+   connect(FileList, SIGNAL(itemDoubleClicked(QTableWidgetItem*)),
            this, SLOT(showInfoForFile(QTableWidgetItem *)));
    connect(LocationBp, SIGNAL(pressed()), this, SLOT(applyLocation()));
    connect(MergeChk, SIGNAL(clicked()), this, SLOT(setJob()));
@@ -462,7 +450,7 @@ void bRestoreTable::dropEvent(QDropEvent *event)
          item.setFileType(0, "folder");
       }
       item.setTextFld(col++, fields.at(5)); // filename
-      decode_stat(fields.at(4).toLocal8Bit().data(), 
+      decode_stat(fields.at(4).toLocal8Bit().data(),
                   &statp, sizeof(statp), &LinkFI);
       item.setBytesFld(col++, QString().setNum(statp.st_size)); // size
       item.setDateFld(col++, statp.st_mtime); // date
@@ -546,7 +534,7 @@ bRunRestore::bRunRestore(bRestore *parent)
    computeVolumeList();
 }
 
-void bRestore::get_info_from_selection(QStringList &fileids, 
+void bRestore::get_info_from_selection(QStringList &fileids,
                                        QStringList &jobids,
                                        QStringList &dirids,
                                        QStringList &findexes)
@@ -560,7 +548,7 @@ void bRestore::get_info_from_selection(QStringList &fileids,
       if (lst.at(1) != "0") {   // skip path
          fileids << lst.at(2);
          jobids << lst.at(3);
-         decode_stat(lst.at(4).toLocal8Bit().data(), 
+         decode_stat(lst.at(4).toLocal8Bit().data(),
                      &statp, sizeof(statp), &LinkFI);
          if (LinkFI) {
             findexes << lst.at(3) + "," + QString().setNum(LinkFI);
@@ -588,7 +576,7 @@ void bRunRestore::computeVolumeList()
    QString q =
 " SELECT DISTINCT VolumeName, Enabled, InChanger "
  " FROM File, "
-  " ( " // -- Get all media from this job 
+  " ( " // -- Get all media from this job
      " SELECT MIN(FirstIndex) AS FirstIndex, MAX(LastIndex) AS LastIndex, "
             " VolumeName, Enabled, Inchanger "
        " FROM JobMedia JOIN Media USING (MediaId) "
@@ -605,7 +593,7 @@ void bRunRestore::computeVolumeList()
       TableMedia->setRowCount(results.size());
       /* Iterate through the record returned from the query */
       foreach (QString resultline, results) {
-         // 0        1          2 
+         // 0        1          2
          //volname, enabled, inchanger
          fieldlist = resultline.split("\t");
          int col=0;
@@ -683,7 +671,7 @@ int64_t bRunRestore::runRestore(QString tablename)
    q += " file=\"?" + tablename + "\"";
    q += " when=\"" + WhenEditor->dateTime().toString("yyyy-MM-dd hh:mm:ss") + "\"";
    q += " done yes";
-   
+
    if (mainWin->m_miscDebug) qDebug() << q;
    QStringList results;
    if (brestore->console()->dir_cmd(q, results)) {
@@ -719,5 +707,5 @@ void bRunRestore::computeRestore()
          q = ".bvfs_cleanup path=b2123";
          brestore->console()->dir_cmd(q, results);
       }
-   }   
+   }
 }
diff --git a/src/qt-console/restore/prerestore.cpp b/src/qt-console/restore/prerestore.cpp
index 8a89188..50cf3e7 100644
--- a/src/qt-console/restore/prerestore.cpp
+++ b/src/qt-console/restore/prerestore.cpp
@@ -3,35 +3,23 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  preRestore -> dialog put up to determine the restore type
  *
  *   Kern Sibbald, February MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "restore.h"
@@ -167,10 +155,10 @@ void prerestorePage::okButtonPushed()
    if (mainWin->m_commandDebug) {
       Pmsg1(000, "preRestore command \'%s\'\n", cmd.toUtf8().data());
    }
-   /* 
+   /*
     * Send off command that looks something like:
     *
-    * restore fileset="Full Set" client="timmy-fd" 
+    * restore fileset="Full Set" client="timmy-fd"
     *        storage="File" current select
     */
    m_console->write_dir(m_conn, cmd.toUtf8().data());
@@ -359,7 +347,7 @@ void prerestorePage::jobRadioClicked(bool checked)
       selectJobIdsRadio->setChecked(true);
    }
    if (mainWin->m_miscDebug) {
-      Pmsg2(000, "jobRadio=%d jobidsRadio=%d\n", selectJobRadio->isChecked(), 
+      Pmsg2(000, "jobRadio=%d jobidsRadio=%d\n", selectJobRadio->isChecked(),
          selectJobIdsRadio->isChecked());
    }
 }
@@ -392,7 +380,7 @@ void prerestorePage::jobidsRadioClicked(bool checked)
       selectJobIdsRadio->setChecked(false);
    }
    if (mainWin->m_miscDebug) {
-      Pmsg2(000, "jobRadio=%d jobidsRadio=%d\n", selectJobRadio->isChecked(), 
+      Pmsg2(000, "jobRadio=%d jobidsRadio=%d\n", selectJobRadio->isChecked(),
          selectJobIdsRadio->isChecked());
    }
 }
diff --git a/src/qt-console/restore/restore.cpp b/src/qt-console/restore/restore.cpp
index 7bf915d..caeefee 100644
--- a/src/qt-console/restore/restore.cpp
+++ b/src/qt-console/restore/restore.cpp
@@ -3,35 +3,23 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
- *  Restore Class 
+ *  Restore Class
  *
  *   Kern Sibbald, February MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "restore.h"
@@ -52,7 +40,7 @@ restorePage::restorePage(int conn) : Pages()
 
    m_console->notify(m_conn, false);          /* this should already be off */
 
-   connect(fileWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), 
+   connect(fileWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)),
            this, SLOT(fileDoubleClicked(QTreeWidgetItem *, int)));
    connect(directoryWidget, SIGNAL(
            currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
@@ -72,14 +60,14 @@ restorePage::restorePage(int conn) : Pages()
    setFont(m_console->get_font());
    m_console->displayToPrompt(m_conn);
 
-   titles << tr("Mark") << tr("File") << tr("Mode") << tr("User") 
+   titles << tr("Mark") << tr("File") << tr("Mode") << tr("User")
           << tr("Group") << tr("Size") << tr("Date");
    fileWidget->setHeaderLabels(titles);
 
    get_cwd();
 
    readSettings();
-   /* wait was entered from pre-restore 
+   /* wait was entered from pre-restore
     * will exit, but will reenter in fillDirectory */
    mainWin->waitExit();
    fillDirectory();
@@ -221,11 +209,11 @@ void restorePage::addDirectory(QString &newdirr)
          directoryWidget->setCurrentItem(NULL);
       }
    } else {
-      // Unix add / first if not already there 
+      // Unix add / first if not already there
       if (m_dirPaths.empty()) {
          QTreeWidgetItem *item = new QTreeWidgetItem(directoryWidget);
          item->setIcon(0,QIcon(QString::fromUtf8(":images/folder.png")));
-            
+
          QString text("/");
          item->setText(0, text.toUtf8().data());
          if (mainWin->m_miscDebug) {
@@ -235,7 +223,7 @@ void restorePage::addDirectory(QString &newdirr)
          m_dirTreeItems.insert(item, text);
       }
    }
- 
+
    /* Does it already exist ?? */
    if (!m_dirPaths.contains(fullpath)) {
       QTreeWidgetItem *item = NULL;
@@ -337,8 +325,8 @@ void restorePage::fileDoubleClicked(QTreeWidgetItem *item, int column)
       m_console->displayToPrompt(m_conn);
       mainWin->waitExit();
       return;
-   }    
-   /* 
+   }
+   /*
     * Double clicking other than column 0 means to decend into
     *  the directory -- or nothing if it is not a directory.
     */
@@ -434,7 +422,7 @@ void restorePage::unmarkButtonPushed()
 }
 
 /*
- * Change current working directory 
+ * Change current working directory
  */
 bool restorePage::cwd(const char *dir)
 {
@@ -461,7 +449,7 @@ bool restorePage::cwd(const char *dir)
 }
 
 /*
- * Return cwd when in tree restore mode 
+ * Return cwd when in tree restore mode
  */
 char *restorePage::get_cwd()
 {
@@ -476,7 +464,7 @@ char *restorePage::get_cwd()
       Dmsg1(dbglvl, "Something went wrong read stat=%d\n", stat);
       QMessageBox::critical(this, "Error", tr(".pwd command failed"), QMessageBox::Ok);
    }
-   m_console->discardToPrompt(m_conn); 
+   m_console->discardToPrompt(m_conn);
    mainWin->waitExit();
    return m_cwd.toUtf8().data();
 }
@@ -500,7 +488,7 @@ void restorePage::readSettings()
    m_splitText = "splitterSizes_2";
    QSettings settings(m_console->m_dir->name(), "bat");
    settings.beginGroup("RestorePage");
-   if (settings.contains(m_splitText)) { 
+   if (settings.contains(m_splitText)) {
       splitter->restoreState(settings.value(m_splitText).toByteArray());
    }
    settings.endGroup();
diff --git a/src/qt-console/restore/restore.h b/src/qt-console/restore/restore.h
index c0b5bff..ac79fd4 100644
--- a/src/qt-console/restore/restore.h
+++ b/src/qt-console/restore/restore.h
@@ -4,29 +4,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -41,7 +29,7 @@
 
 class bRestoreTable : public QTableWidget
 {
-   Q_OBJECT 
+   Q_OBJECT
 private:
    QPoint dragStartPosition;
 public:
@@ -73,7 +61,7 @@ enum {
  */
 class prerestorePage : public Pages, public Ui::prerestoreForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    prerestorePage();
@@ -97,14 +85,14 @@ private:
    unsigned int m_dataInType;
 };
 
-/*  
+/*
  * The restore dialog is brought up once we are in the Bacula
  * restore tree routines.  It handles putting up a GUI tree
  * representation of the files to be restored.
  */
 class restorePage : public Pages, public Ui::restoreForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    restorePage(int conn);
@@ -136,7 +124,7 @@ private:
 
 class bRestore : public Pages, public Ui::bRestoreForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    bRestore();
@@ -163,13 +151,13 @@ private:
    void setupPage();
    bool m_populated;
    void displayFiles(int64_t pathid, QString path);
-   void displayFileVersion(QString pathid, QString fnid, 
+   void displayFileVersion(QString pathid, QString fnid,
                            QString client, QString filename);
 };
 
 class bRunRestore : public QDialog, public Ui::bRunRestoreForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 private:
    bRestore *brestore;
    QStringList m_fileids, m_jobids, m_dirids, m_findexes;
diff --git a/src/qt-console/restore/restoretree.cpp b/src/qt-console/restore/restoretree.cpp
index e9eb0ca..c44f6f3 100644
--- a/src/qt-console/restore/restoretree.cpp
+++ b/src/qt-console/restore/restoretree.cpp
@@ -3,36 +3,24 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *
- *  Restore Class 
+ *  Restore Class
  *
  *   Kern Sibbald, February MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "restoretree.h"
@@ -171,7 +159,7 @@ void restoreTree::populateDirectoryTree()
    updateRefresh();
    int taskcount = 3, ontask = 1;
    if (m_dropdownChanged) taskcount += 1;
-   
+
    /* Set progress bars and repaint */
    prBar1->setVisible(true);
    prBar1->setRange(0,taskcount);
@@ -292,7 +280,7 @@ void restoreTree::populateDirectoryTree()
 /*
  *  Function to set m_checkedJobs from the jobs that are checked in the table
  *  of jobs
- */     
+ */
 void restoreTree::setJobsCheckedList()
 {
    m_JobsCheckedList = "";
@@ -336,7 +324,7 @@ void restoreTree::parseDirectory(const QString &dir_in)
 
      QTreeWidgetItem *item       = NULL;
      QTreeWidgetItem *parentItem = m_dirPaths.value(parent);
-     
+
      if (parentItem==0) {
        // recurse to build parent...
        parseDirectory(parent);
@@ -421,7 +409,7 @@ void restoreTree::directoryCurrentItemChanged(QTreeWidgetItem *item, QTreeWidget
    fileTable->setColumnCount(headerlist.size());
    fileTable->setHorizontalHeaderLabels(headerlist);
    fileTable->setRowCount(0);
-   
+
    m_fileCheckStateList.clear();
    disconnect(fileTable, SIGNAL(itemChanged(QTableWidgetItem *)),
            this, SLOT(fileTableItemChanged(QTableWidgetItem *)));
@@ -442,12 +430,12 @@ void restoreTree::directoryCurrentItemChanged(QTreeWidgetItem *item, QTreeWidget
 
       QStringList results;
       if (m_console->sql_cmd(cmd, results)) {
-      
+
          QTableWidgetItem* tableItem;
          QString field;
          QStringList fieldlist;
          fileTable->setRowCount(results.size());
-   
+
          int row = 0;
          /* Iterate through the record returned from the query */
          foreach (QString resultline, results) {
@@ -458,7 +446,7 @@ void restoreTree::directoryCurrentItemChanged(QTreeWidgetItem *item, QTreeWidget
                field = field.trimmed();  /* strip leading & trailing spaces */
                tableItem = new QTableWidgetItem(field, 1);
                /* Possible flags are Qt::ItemFlags flag = Qt::ItemIsSelectable | Qt::ItemIsEditablex
-                *  | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | Qt::ItemIsUserCheckable 
+                *  | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | Qt::ItemIsUserCheckable
                 *  | Qt::ItemIsEnabled | Qt::ItemIsTristate; */
                tableItem->setForeground(blackBrush);
                /* Just in case a column ever gets added */
@@ -520,16 +508,16 @@ void restoreTree::fileCurrentItemChanged(QTableWidgetItem *currentFileTableItem,
 
    QBrush blackBrush(Qt::black);
 
-   QStringList headerlist = (QStringList() 
+   QStringList headerlist = (QStringList()
       << tr("Job Id") << tr("Type") << tr("End Time") << tr("Hash") << tr("FileId") << tr("Job Type") << tr("First Volume"));
    versionTable->clear();
    versionTable->setColumnCount(headerlist.size());
    versionTable->setHorizontalHeaderLabels(headerlist);
    versionTable->setRowCount(0);
-   
+
    int pathid = m_directoryPathIdHash.value(directory, -1);
    if ((pathid != -1) && (fileNameId != -1)) {
-      QString cmd = 
+      QString cmd =
          "SELECT Job.JobId AS JobId, Job.Level AS Type,"
            " Job.EndTime AS EndTime, File.MD5 AS MD5,"
            " File.FileId AS FileId, Job.Type AS JobType,"
@@ -543,16 +531,16 @@ void restoreTree::fileCurrentItemChanged(QTableWidgetItem *currentFileTableItem,
          " AND Filename.FilenameId=" + QString("%1").arg(fileNameId) +
          " AND Job.Jobid IN (" + m_checkedJobs + ")"
          " ORDER BY Job.EndTime DESC";
-   
+
       if (mainWin->m_sqlDebug) Pmsg1(000, "Query cmd : %s\n", cmd.toUtf8().data());
       QStringList results;
       if (m_console->sql_cmd(cmd, results)) {
-      
+
          QTableWidgetItem* tableItem;
          QString field;
          QStringList fieldlist;
          versionTable->setRowCount(results.size());
-   
+
          int row = 0;
          /* Iterate through the record returned from the query */
          foreach (QString resultline, results) {
@@ -650,7 +638,7 @@ void restoreTree::populateJobTable()
    QBrush blackBrush(Qt::black);
 
    if (mainWin->m_rtPopDirDebug) Pmsg0(000, "Repopulating the Job Table\n");
-   QStringList headerlist = (QStringList() 
+   QStringList headerlist = (QStringList()
       << tr("Job Id") << tr("End Time") << tr("Level") << tr("Type")
       << tr("Name") << tr("Purged") << tr("TU") << tr("TD"));
    m_toggleUpIndex = headerlist.indexOf(tr("TU"));
@@ -696,7 +684,7 @@ void restoreTree::populateJobTable()
 
    QStringList results;
    if (m_console->sql_cmd(jobQuery, results)) {
-   
+
       QTableWidgetItem* tableItem;
       QString field;
       QStringList fieldlist;
@@ -726,7 +714,7 @@ void restoreTree::populateJobTable()
                   if (mainWin->m_sqlDebug) Pmsg1(000, "Column=%d\n", column);
                   if (column == 0) {
                      bool ok;
-                     int purged = fieldlist[purgedIndex].toInt(&ok, 10); 
+                     int purged = fieldlist[purgedIndex].toInt(&ok, 10);
                      if (!((ok) && (purged == 1))) {
                         Qt::ItemFlags flag = Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsTristate;
                         tableItem->setFlags(flag);
@@ -1313,7 +1301,7 @@ void restoreTree::directoryIconStateRemove()
 
       QStringList paths;
       fullPathtoSubPaths(paths, keyPath);
-      /* if the state of the item in m_fileExceptionHash is checked 
+      /* if the state of the item in m_fileExceptionHash is checked
        * each of the subpaths should be "Checked Green" */
       if (state == Qt::Checked) {
 
@@ -1473,7 +1461,7 @@ void restoreTree::restoreButtonPushed()
          if (mainWin->m_rtRestore1Debug)
             Pmsg1(000, "Directory Checked=\"%s\"\n", directory.toUtf8().data());
          /* With a checked directory, query for the files in the directory */
-   
+
          QString cmd =
             "SELECT Filename.Name AS Filename, t1.JobId AS JobId, File.FileIndex AS FileIndex"
             " FROM"
@@ -1490,12 +1478,12 @@ void restoreTree::restoreButtonPushed()
               " AND File.FilenameId=t1.FilenameId"
               " AND Job.Jobid=t1.JobId"
             " ORDER BY Filename";
-   
+
          if (mainWin->m_sqlDebug) Pmsg1(000, "Query cmd : %s\n", cmd.toUtf8().data());
          QStringList results;
          if (m_console->sql_cmd(cmd, results)) {
             QStringList fieldlist;
-      
+
             int row = 0;
             /* Iterate through the record returned from the query */
             foreach (QString resultline, results) {
@@ -1519,7 +1507,7 @@ void restoreTree::restoreButtonPushed()
                   column++;
                }
                fileExcpState = m_fileExceptionHash.value(fullPath, (Qt::CheckState)3);
-               
+
                int excpVersion = m_versionExceptionHash.value(fullPath, 0);
                if (fileExcpState != Qt::Unchecked) {
                   QString debugtext;
@@ -1686,7 +1674,7 @@ int restoreTree::mostRecentVersionfromFullPath(QString &fullPath)
             " AND Filename.Name='" + fileName + "'"
             " AND File.FilenameId!=" + QString("%1").arg(m_nullFileNameId) +
             " GROUP BY Filename.Name";
-    
+
          if (mainWin->m_sqlDebug) Pmsg1(000, "Query cmd : %s\n", cmd.toUtf8().data());
          QStringList results;
          if (m_console->sql_cmd(cmd, results)) {
diff --git a/src/qt-console/restore/restoretree.h b/src/qt-console/restore/restoretree.h
index 312b21b..7e203a4 100644
--- a/src/qt-console/restore/restoretree.h
+++ b/src/qt-console/restore/restoretree.h
@@ -4,29 +4,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -39,12 +27,12 @@
 #include "ui_restoretree.h"
 
 
-/*  
+/*
  * A restore tree to view files in the catalog
  */
 class restoreTree : public Pages, public Ui::restoreTreeForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    restoreTree();
diff --git a/src/qt-console/run/estimate.cpp b/src/qt-console/run/estimate.cpp
index 4b829b5..28399da 100644
--- a/src/qt-console/run/estimate.cpp
+++ b/src/qt-console/run/estimate.cpp
@@ -3,36 +3,24 @@
 
    Copyright (C) 2007-2009 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Run Dialog class
  *
  *   Kern Sibbald, February MMVII
  *
  *  $Id$
- */ 
+ */
 
 #include "bat.h"
 #include "run.h"
@@ -73,7 +61,7 @@ void estimatePage::okButtonPushed()
    m_aButtonPushed = true;
    this->hide();
    QString cmd;
-   QTextStream(&cmd) << "estimate" << 
+   QTextStream(&cmd) << "estimate" <<
       " job=\"" << jobCombo->currentText() << "\"" <<
       " fileset=\"" << filesetCombo->currentText() << "\"" <<
       " level=\"" << levelCombo->currentText() << "\"" <<
diff --git a/src/qt-console/run/prune.cpp b/src/qt-console/run/prune.cpp
index fbe8d32..2836312 100644
--- a/src/qt-console/run/prune.cpp
+++ b/src/qt-console/run/prune.cpp
@@ -3,36 +3,24 @@
 
    Copyright (C) 2007-2009 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Run Dialog class
  *
  *   Kern Sibbald, February MMVII
  *
  *  $Id$
- */ 
+ */
 
 #include "bat.h"
 #include "run.h"
diff --git a/src/qt-console/run/run.cpp b/src/qt-console/run/run.cpp
index e586c3d..d7585ae 100644
--- a/src/qt-console/run/run.cpp
+++ b/src/qt-console/run/run.cpp
@@ -3,35 +3,23 @@
 
    Copyright (C) 2007-2011 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Run Dialog class
  *
  *   Kern Sibbald, February MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "run.h"
@@ -53,7 +41,7 @@ runPage::runPage(const QString &defJob) : Pages()
 }
 
 
-runPage::runPage(const QString &defJob, const QString &level, 
+runPage::runPage(const QString &defJob, const QString &level,
                  const QString &pool, const QString &storage,
                  const QString &client, const QString &fileset)
    : Pages()
@@ -69,7 +57,7 @@ runPage::runPage(const QString &defJob, const QString &level,
    poolCombo->setCurrentIndex(poolCombo->findText(pool, Qt::MatchExactly));
 
    if (storage != "") {         // TODO: enable storage
-      storageCombo->setCurrentIndex(storageCombo->findText(storage, 
+      storageCombo->setCurrentIndex(storageCombo->findText(storage,
                                                            Qt::MatchExactly));
    }
    show();
@@ -82,7 +70,7 @@ runPage::runPage(const QString &defJob, const QString &level,
 void runPage::init()
 {
    QDateTime dt;
-   QDesktopWidget *desk = QApplication::desktop(); 
+   QDesktopWidget *desk = QApplication::desktop();
    QRect scrn;
 
    m_name = tr("Run");
@@ -126,7 +114,7 @@ void runPage::okButtonPushed()
 {
    this->hide();
    QString cmd;
-   QTextStream(&cmd) << "run" << 
+   QTextStream(&cmd) << "run" <<
       " job=\"" << jobCombo->currentText() << "\"" <<
       " fileset=\"" << filesetCombo->currentText() << "\"" <<
       " level=\"" << levelCombo->currentText() << "\"" <<
@@ -141,7 +129,7 @@ void runPage::okButtonPushed()
       * with a  job */
 #endif
    if (bootstrap->text() != "") {
-      cmd += " bootstrap=\"" + bootstrap->text() + "\""; 
+      cmd += " bootstrap=\"" + bootstrap->text() + "\"";
    }
    cmd += " yes";
 
diff --git a/src/qt-console/run/run.h b/src/qt-console/run/run.h
index 8eea1c7..4838d4a 100644
--- a/src/qt-console/run/run.h
+++ b/src/qt-console/run/run.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef _RUN_H_
@@ -38,14 +26,14 @@
 
 class runPage : public Pages, public Ui::runForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    runPage();
 
    runPage(const QString &defJob);
 
-   runPage(const QString &defJob, 
+   runPage(const QString &defJob,
            const QString &level,
            const QString &pool,
            const QString &storage,
@@ -64,7 +52,7 @@ private:
 
 class runCmdPage : public Pages, public Ui::runCmdForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    runCmdPage(int conn);
@@ -80,7 +68,7 @@ private:
 
 class estimatePage : public Pages, public Ui::estimateForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    estimatePage();
@@ -97,7 +85,7 @@ private:
 
 class prunePage : public Pages, public Ui::pruneForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    prunePage(const QString &volume, const QString &client);
diff --git a/src/qt-console/run/runcmd.cpp b/src/qt-console/run/runcmd.cpp
index f66bcf2..e9369ca 100644
--- a/src/qt-console/run/runcmd.cpp
+++ b/src/qt-console/run/runcmd.cpp
@@ -3,41 +3,29 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Run Command Dialog class
  *
  *  This is called when a Run Command signal is received from the
- *    Director. We parse the Director's output and throw up a 
+ *    Director. We parse the Director's output and throw up a
  *    dialog box.  This happens, for example, after the user finishes
  *    selecting files to be restored. The Director will then submit a
  *    run command, that causes this page to be popped up.
  *
  *   Kern Sibbald, March MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "run.h"
@@ -74,7 +62,7 @@ void runCmdPage::fill()
 
    clientCombo->addItems(m_console->client_list);
    filesetCombo->addItems(m_console->fileset_list);
-   replaceCombo->addItems(QStringList() << tr("never") << tr("always") << tr("ifnewer") 
+   replaceCombo->addItems(QStringList() << tr("never") << tr("always") << tr("ifnewer")
         << tr("ifolder"));
    replaceCombo->setCurrentIndex(replaceCombo->findText(tr("never"), Qt::MatchExactly));
    storageCombo->addItems(m_console->storage_list);
@@ -127,7 +115,7 @@ void runCmdPage::fill()
       if (item.startsWith("Priority:")) {
          bool okay;
          int pri = val.toInt(&okay, 10);
-         if (okay) 
+         if (okay)
             prioritySpin->setValue(pri);
          continue;
       }
@@ -154,7 +142,7 @@ void runCmdPage::okButtonPushed()
    QTextStream(&pri) << " priority=\"" << prioritySpin->value() << "\"";
    cmd += pri;
    cmd += " yes\n";
-   
+
    setConsoleCurrent();
    QString displayhtml("<font color=\"blue\">");
    displayhtml += cmd + "</font>\n";
diff --git a/src/qt-console/select/select.cpp b/src/qt-console/select/select.cpp
index 3b330fd..9184581 100644
--- a/src/qt-console/select/select.cpp
+++ b/src/qt-console/select/select.cpp
@@ -3,35 +3,23 @@
 
    Copyright (C) 2007-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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Select dialog class
  *
  *   Kern Sibbald, March MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "select.h"
diff --git a/src/qt-console/select/select.h b/src/qt-console/select/select.h
index 1d3aabb..fdeee45 100644
--- a/src/qt-console/select/select.h
+++ b/src/qt-console/select/select.h
@@ -1,3 +1,18 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2000-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
 
 #ifndef _SELECT_H_
 #define _SELECT_H_
@@ -8,7 +23,7 @@
 
 class selectDialog : public QDialog, public Ui::selectForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    selectDialog(Console *console, int conn);
@@ -26,7 +41,7 @@ private:
 
 class yesnoPopUp : public QDialog
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    yesnoPopUp(Console *console, int conn);
diff --git a/src/qt-console/select/textinput.cpp b/src/qt-console/select/textinput.cpp
index 9c91ba8..a085bce 100644
--- a/src/qt-console/select/textinput.cpp
+++ b/src/qt-console/select/textinput.cpp
@@ -3,35 +3,23 @@
 
    Copyright (C) 2007-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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *  Select dialog class
  *
  *   Kern Sibbald, March MMVII
  *
- */ 
+ */
 
 #include "bat.h"
 #include "textinput.h"
@@ -39,7 +27,7 @@
 /*
  * Read input text box
  */
-textInputDialog::textInputDialog(Console *console, int conn) 
+textInputDialog::textInputDialog(Console *console, int conn)
 {
    m_conn = conn;
    QDateTime dt;
diff --git a/src/qt-console/select/textinput.h b/src/qt-console/select/textinput.h
index 602121a..cfbcf07 100644
--- a/src/qt-console/select/textinput.h
+++ b/src/qt-console/select/textinput.h
@@ -1,3 +1,18 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2000-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
 
 #ifndef _TEXTENTRY_H_
 #define _TEXTENTRY_H_
@@ -8,7 +23,7 @@
 
 class textInputDialog : public QDialog, public Ui::textInputForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    textInputDialog(Console *console, int conn);
diff --git a/src/qt-console/status/clientstat.cpp b/src/qt-console/status/clientstat.cpp
index 5794032..4096830 100644
--- a/src/qt-console/status/clientstat.cpp
+++ b/src/qt-console/status/clientstat.cpp
@@ -3,32 +3,20 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Dirk Bartley, March 2007
  */
- 
+
 #include "bat.h"
 #include <QAbstractEventDispatcher>
 #include <QTableWidgetItem>
diff --git a/src/qt-console/status/clientstat.h b/src/qt-console/status/clientstat.h
index 341130f..2c4c88d 100644
--- a/src/qt-console/status/clientstat.h
+++ b/src/qt-console/status/clientstat.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id: clientstat.h 5372 2007-08-17 12:17:04Z kerns $
@@ -40,7 +28,7 @@
 
 class ClientStat : public Pages, public Ui::ClientStatForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    ClientStat(QString&, QTreeWidgetItem*);
diff --git a/src/qt-console/status/dirstat.cpp b/src/qt-console/status/dirstat.cpp
index 24813b6..4190de6 100644
--- a/src/qt-console/status/dirstat.cpp
+++ b/src/qt-console/status/dirstat.cpp
@@ -3,33 +3,21 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *   Dirk Bartley, March 2007
  */
- 
+
 #include "bat.h"
 #include <QAbstractEventDispatcher>
 #include <QTableWidgetItem>
@@ -143,10 +131,10 @@ void DirStat::populateTerminated()
    terminatedTable->clear();
    QStringList headerlist = (QStringList()
       << tr("Job Id") << tr("Job Level") << tr("Job Files")
-      << tr("Job Bytes") << tr("Job Status") << tr("Job Time") 
+      << tr("Job Bytes") << tr("Job Status") << tr("Job Time")
       << tr("Job Name"));
    QStringList flaglist = (QStringList()
-      << "R" << "L" << "R" << "R" << "LC" 
+      << "R" << "L" << "R" << "R" << "LC"
       << "L" << "L");
 
    terminatedTable->setColumnCount(headerlist.size());
@@ -199,7 +187,7 @@ void DirStat::populateScheduled()
 
    scheduledTable->clear();
    QStringList headerlist = (QStringList()
-      << tr("Job Level") << tr("Job Type") << tr("Priority") << tr("Job Time") 
+      << tr("Job Level") << tr("Job Type") << tr("Priority") << tr("Job Time")
       << tr("Job Name") << tr("Volume"));
    QStringList flaglist = (QStringList()
       << "L" << "L" << "R" << "L" << "L" << "L");
diff --git a/src/qt-console/status/dirstat.h b/src/qt-console/status/dirstat.h
index 017f4de..501ccf4 100644
--- a/src/qt-console/status/dirstat.h
+++ b/src/qt-console/status/dirstat.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id: dirstat.h 5372 2007-08-17 12:17:04Z kerns $
@@ -40,7 +28,7 @@
 
 class DirStat : public Pages, public Ui::DirStatForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    DirStat();
diff --git a/src/qt-console/status/storstat.cpp b/src/qt-console/status/storstat.cpp
index 5e35162..59bca70 100644
--- a/src/qt-console/status/storstat.cpp
+++ b/src/qt-console/status/storstat.cpp
@@ -3,33 +3,21 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *   Dirk Bartley, March 2007
  */
- 
+
 #include "bat.h"
 #include <QAbstractEventDispatcher>
 #include <QTableWidgetItem>
@@ -41,7 +29,7 @@ static bool working = false;     /* prevent timer recursion */
 
 /*
 .status storage=<storage-name> <keyword>
-where <storage-name> is the storage name in the Director, and 
+where <storage-name> is the storage name in the Director, and
 <keyword> is one of the following:
 header
 running
@@ -240,10 +228,10 @@ void StorStat::populateTerminated()
    terminatedTable->clear();
    QStringList headerlist = (QStringList()
       << tr("Job Id") << tr("Job Level") << tr("Job Files")
-      << tr("Job Bytes") << tr("Job Status") << tr("Job Time") 
+      << tr("Job Bytes") << tr("Job Status") << tr("Job Time")
       << tr("Job Name"));
    QStringList flaglist = (QStringList()
-      << "R" << "L" << "R" << "R" << "LC" 
+      << "R" << "L" << "R" << "R" << "LC"
       << "L" << "L");
 
    terminatedTable->setColumnCount(headerlist.size());
@@ -449,4 +437,4 @@ void StorStat::releaseButtonPushed()
 void StorStat::labelButtonPushed()
 {
    new labelPage(m_storage);
-}  
+}
diff --git a/src/qt-console/status/storstat.h b/src/qt-console/status/storstat.h
index 7d99e34..66cd155 100644
--- a/src/qt-console/status/storstat.h
+++ b/src/qt-console/status/storstat.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id: dirstat.h 5372 2007-08-17 12:17:04Z kerns $
@@ -40,7 +28,7 @@
 
 class StorStat : public Pages, public Ui::StorStatForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    StorStat(QString &, QTreeWidgetItem *);
diff --git a/src/qt-console/storage/content.cpp b/src/qt-console/storage/content.cpp
index 9794be0..a41f873 100644
--- a/src/qt-console/storage/content.cpp
+++ b/src/qt-console/storage/content.cpp
@@ -3,29 +3,17 @@
 
    Copyright (C) 2007-2009 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bat.h"
 #include <QAbstractEventDispatcher>
 #include <QMenu>
@@ -36,11 +24,11 @@
 #include "util/fmtwidgetitem.h"
 #include "status/storstat.h"
 
-// 
+//
 // TODO: List tray
 //       List drives in autochanger
 //       use user selection to add slot= argument
-// 
+//
 
 Content::Content(QString storage, QTreeWidgetItem *parentWidget) : Pages()
 {
@@ -104,7 +92,7 @@ void table_get_selection(QTableWidget *table, QString &sel)
     */
    int s = table->rowCount();
    bool *tab = (bool *)malloc(s * sizeof(bool));
-   memset(tab, 0, s); 
+   memset(tab, 0, s);
 
    foreach (item, table->selectedItems()) {
       current = item->row();
@@ -173,7 +161,7 @@ void Content::statusStorageWindow()
 }
 
 /*
- * The main meat of the class!!  The function that querries the director and 
+ * The main meat of the class!!  The function that querries the director and
  * creates the widgets with appropriate values.
  */
 void Content::populateContent()
@@ -224,33 +212,33 @@ void Content::populateContent()
       }
 
       /* Slot */
-      slotitem.setNumericFld(index++, fld.next()); 
+      slotitem.setNumericFld(index++, fld.next());
 
       /* Real Slot */
       if (fld.next() != "") {
 
          /* Volume */
          slotitem.setTextFld(index++, fld.next());
-         
+
          /* Bytes */
          slotitem.setBytesFld(index++, fld.next());
-         
+
          /* Status */
          slotitem.setVolStatusFld(index++, fld.next());
-         
+
          /* MediaType */
          slotitem.setTextFld(index++, fld.next());
-         
+
          /* Pool */
          slotitem.setTextFld(index++, fld.next());
-         
+
          tim = fld.next().toInt();
          if (tim > 0) {
             /* LastW */
             localtime_r(&tim, &tm);
             strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &tm);
             slotitem.setTextFld(index++, QString(buf));
-            
+
             /* Expire */
             tim = fld.next().toInt();
             localtime_r(&tim, &tm);
@@ -293,14 +281,14 @@ void Content::populateContent()
       fld.next();
 
       /* Number */
-      slotitem.setNumericFld(index++, fld.next()); 
+      slotitem.setNumericFld(index++, fld.next());
 
       /* Slot */
       fld.next();
-      
+
       /* Volume */
       slotitem.setTextFld(index++, fld.next());
-         
+
       row++;
    }
 
@@ -328,7 +316,7 @@ void Content::consoleUpdateSlots()
 {
    QString sel = "";
    table_get_selection(tableContent, sel);
-   
+
    QString cmd("update slots");
    if (sel != "") {
       cmd += sel;
diff --git a/src/qt-console/storage/content.h b/src/qt-console/storage/content.h
index e1eac67..9f86c5d 100644
--- a/src/qt-console/storage/content.h
+++ b/src/qt-console/storage/content.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 <QtGui>
@@ -35,7 +23,7 @@
 
 class Content : public Pages, public Ui::ContentForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    Content(QString storage, QTreeWidgetItem *parentWidget);
diff --git a/src/qt-console/storage/storage.cpp b/src/qt-console/storage/storage.cpp
index 7a3021c..da61da6 100644
--- a/src/qt-console/storage/storage.cpp
+++ b/src/qt-console/storage/storage.cpp
@@ -3,36 +3,24 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *
  *  Storage Class
  *
  *   Dirk Bartley, March 2007
  *
- */ 
+ */
 
 #include "bat.h"
 #include <QAbstractEventDispatcher>
@@ -69,7 +57,7 @@ Storage::~Storage()
 }
 
 /*
- * The main meat of the class!!  The function that querries the director and 
+ * The main meat of the class!!  The function that querries the director and
  * creates the widgets with appropriate values.
  */
 void Storage::populateTree()
@@ -85,7 +73,7 @@ void Storage::populateTree()
    m_checkcurwidget = true;
 
    QStringList headerlist = (QStringList() << tr("Name") << tr("Id")
-        << tr("Changer") << tr("Slot") << tr("Status") << tr("Enabled") << tr("Pool") 
+        << tr("Changer") << tr("Slot") << tr("Status") << tr("Enabled") << tr("Pool")
         << tr("Media Type") );
 
    m_topItem = new QTreeWidgetItem(mp_treeWidget);
@@ -144,7 +132,7 @@ void Storage::populateTree()
 
             int index = 1;
             QStringListIterator fld(fieldlist);
- 
+
             /* storage id */
             storageItem.setNumericFld(index++, fld.next());
 
@@ -171,7 +159,7 @@ void Storage::mediaList(QTreeWidgetItem *parent, const QString &storageID)
 {
    QString query("SELECT Media.VolumeName AS Media, Media.Slot AS Slot,"
                  " Media.VolStatus AS VolStatus, Media.Enabled AS Enabled,"
-                 " Pool.Name AS MediaPool, Media.MediaType AS MediaType" 
+                 " Pool.Name AS MediaPool, Media.MediaType AS MediaType"
                  " From Media"
                  " JOIN Pool ON (Media.PoolId=Pool.PoolId)"
                  " WHERE Media.StorageId='" + storageID + "'"
@@ -187,11 +175,11 @@ void Storage::mediaList(QTreeWidgetItem *parent, const QString &storageID)
       QString resultline;
       QString field;
       QStringList fieldlist;
- 
+
       foreach (resultline, results) {
          fieldlist = resultline.split("\t");
          if (fieldlist.size() < 6)
-             continue; 
+             continue;
 
          /* Iterate through fields in the record */
          QStringListIterator fld(fieldlist);
@@ -199,8 +187,8 @@ void Storage::mediaList(QTreeWidgetItem *parent, const QString &storageID)
          TreeItemFormatter fmt(*parent, 2);
 
          /* volname */
-         fmt.setTextFld(index++, fld.next()); 
- 
+         fmt.setTextFld(index++, fld.next());
+
          /* skip the next two columns, unused by media */
          index += 2;
 
@@ -211,13 +199,13 @@ void Storage::mediaList(QTreeWidgetItem *parent, const QString &storageID)
          fmt.setVolStatusFld(index++, fld.next());
 
          /* enabled */
-         fmt.setBoolFld(index++, fld.next()); 
+         fmt.setBoolFld(index++, fld.next());
 
          /* pool */
-         fmt.setTextFld(index++, fld.next()); 
+         fmt.setTextFld(index++, fld.next());
 
          /* media type */
-         fmt.setTextFld(index++, fld.next()); 
+         fmt.setTextFld(index++, fld.next());
 
       }
    }
@@ -297,8 +285,8 @@ void Storage::treeItemChanged(QTreeWidgetItem *currentwidgetitem, QTreeWidgetIte
    }
 }
 
-/* 
- * Setup a context menu 
+/*
+ * Setup a context menu
  * Made separate from populate so that it would not create context menu over and
  * over as the tree is repopulated.
  */
@@ -335,7 +323,7 @@ void Storage::createContextMenu()
 
 void Storage::contentWindow()
 {
-   if (m_currentStorage != "" && m_currentAutoChanger) { 
+   if (m_currentStorage != "" && m_currentAutoChanger) {
       QTreeWidgetItem *parentItem = mainWin->getFromHash(this);
       new Content(m_currentStorage, parentItem);
    }
diff --git a/src/qt-console/storage/storage.h b/src/qt-console/storage/storage.h
index ae0f8e2..2eee355 100644
--- a/src/qt-console/storage/storage.h
+++ b/src/qt-console/storage/storage.h
@@ -3,29 +3,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
@@ -40,7 +28,7 @@
 
 class Storage : public Pages, public Ui::StorageForm
 {
-   Q_OBJECT 
+   Q_OBJECT
 
 public:
    Storage();
diff --git a/src/qt-console/tray-monitor/authenticate.cpp b/src/qt-console/tray-monitor/authenticate.cpp
index c9b09bc..22688b1 100644
--- a/src/qt-console/tray-monitor/authenticate.cpp
+++ b/src/qt-console/tray-monitor/authenticate.cpp
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -128,7 +116,7 @@ int authenticate_storage_daemon(JCR *jcr, MONITOR *monitor, STORE* store)
    btimer_t *tid = start_bsock_timer(sd, 60 * 5);
    if (!sd->fsend(SDFDhello, dirname)) {
       stop_bsock_timer(tid);
-      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to Storage daemon. ERR=%s\n"), bnet_strerror(sd));
+      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to Storage daemon. ERR=%s\n"), sd->bstrerror());
       return 0;
    }
    if (!cram_md5_respond(sd, store->password, &tls_remote_need, &compatible) ||
@@ -174,7 +162,7 @@ int authenticate_file_daemon(JCR *jcr, MONITOR *monitor, CLIENT* client)
    btimer_t *tid = start_bsock_timer(fd, 60 * 5);
    if (!fd->fsend(SDFDhello, dirname)) {
       stop_bsock_timer(tid);
-      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to File daemon. ERR=%s\n"), bnet_strerror(fd));
+      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to File daemon. ERR=%s\n"), fd->bstrerror());
       return 0;
    }
    if (!cram_md5_respond(fd, client->password, &tls_remote_need, &compatible) ||
diff --git a/src/qt-console/tray-monitor/tray-monitor.cpp b/src/qt-console/tray-monitor/tray-monitor.cpp
index cd38ad7..ed69d10 100644
--- a/src/qt-console/tray-monitor/tray-monitor.cpp
+++ b/src/qt-console/tray-monitor/tray-monitor.cpp
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "tray-ui.h"
@@ -99,7 +87,7 @@ void get_list(monitoritem *item, const char *cmd, QStringList &lst)
    
    doconnect(item);
    item->writecmd(cmd);
-   while((stat = bnet_recv(item->D_sock)) >= 0) {
+   while((stat = item->D_sock->recv()) >= 0) {
       strip_trailing_junk(item->D_sock->msg);
       if (*(item->D_sock->msg)) {
          lst << QString(item->D_sock->msg);
@@ -150,7 +138,7 @@ int main(int argc, char *argv[])
    init_stack_dump();
    my_name_is(argc, argv, "tray-monitor");
    lmgr_init_thread();
-   init_msg(NULL, NULL);
+   init_msg(NULL, NULL, NULL);
    working_directory = "/tmp";
 
    struct sigaction sigignore;
@@ -303,8 +291,8 @@ int main(int argc, char *argv[])
       if (items[i].D_sock) {
          items[i].writecmd("quit");
          if (items[i].D_sock) {
-            bnet_sig(items[i].D_sock, BNET_TERMINATE); /* send EOF */
-            bnet_close(items[i].D_sock);
+            items[i].D_sock->signal(BNET_TERMINATE); /* send EOF */
+            free_bsock(items[i].D_sock);
          }
       }
    }
@@ -346,7 +334,7 @@ void changeStatusMessage(monitoritem*, const char *fmt,...) {
 
 int doconnect(monitoritem* item) 
 {
-   if (!item->D_sock) {
+   if (!is_bsock_open(item->D_sock)) {
       memset(&jcr, 0, sizeof(jcr));
 
       DIRRES* dird;
@@ -357,21 +345,30 @@ int doconnect(monitoritem* item)
       case R_DIRECTOR:
          dird = (DIRRES*)item->resource;
          changeStatusMessage(item, _("Connecting to Director %s:%d"), dird->address, dird->DIRport);
-         item->D_sock = bnet_connect(NULL, monitor->DIRConnectTimeout, 
+         if (!item->D_sock) {
+            item->D_sock = new_bsock();
+         }
+         item->D_sock->connect(NULL, monitor->DIRConnectTimeout, 
                                      0, 0, _("Director daemon"), dird->address, NULL, dird->DIRport, 0);
          jcr.dir_bsock = item->D_sock;
          break;
       case R_CLIENT:
          filed = (CLIENT*)item->resource;
          changeStatusMessage(item, _("Connecting to Client %s:%d"), filed->address, filed->FDport);
-         item->D_sock = bnet_connect(NULL, monitor->FDConnectTimeout, 
+         if (!item->D_sock) {
+            item->D_sock = new_bsock();
+         }
+         item->D_sock->connect(NULL, monitor->FDConnectTimeout, 
                                      0, 0, _("File daemon"), filed->address, NULL, filed->FDport, 0);
          jcr.file_bsock = item->D_sock;
          break;
       case R_STORAGE:
          stored = (STORE*)item->resource;
          changeStatusMessage(item, _("Connecting to Storage %s:%d"), stored->address, stored->SDport);
-         item->D_sock = bnet_connect(NULL, monitor->SDConnectTimeout, 
+         if (!item->D_sock) {
+            item->D_sock = new_bsock();
+         }
+         item->D_sock->connect(NULL, monitor->SDConnectTimeout, 
                                      0, 0, _("Storage daemon"), stored->address, NULL, stored->SDport, 0);
          jcr.store_bsock = item->D_sock;
          break;
@@ -430,7 +427,7 @@ int docmd(monitoritem* item, const char* command)
       item->writecmd(command);
 
    while(1) {
-      if ((stat = bnet_recv(item->D_sock)) >= 0) {
+      if ((stat = item->D_sock->recv()) >= 0) {
          strip_trailing_newline(item->D_sock->msg);
          tray->appendText(item->get_name(), item->D_sock->msg);
       }
@@ -444,7 +441,7 @@ int docmd(monitoritem* item, const char* command)
             return 0;
          }
          else if (item->D_sock->msglen == BNET_HEARTBEAT) {
-            bnet_sig(item->D_sock, BNET_HB_RESPONSE);
+            item->D_sock->signal(BNET_HB_RESPONSE);
          }
          else {
             qDebug() << bnet_sig_to_ascii(item->D_sock);
@@ -459,7 +456,7 @@ int docmd(monitoritem* item, const char* command)
          return 0;
       }
 
-      if (is_bnet_stop(item->D_sock)) {
+      if (item->D_sock->is_stop()) {
          item->D_sock = NULL;
          item->state = error;
          item->oldstate = error;
diff --git a/src/qt-console/tray-monitor/tray-monitor.h b/src/qt-console/tray-monitor/tray-monitor.h
index ac2c257..33f111b 100644
--- a/src/qt-console/tray-monitor/tray-monitor.h
+++ b/src/qt-console/tray-monitor/tray-monitor.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Includes specific to the tray monitor
@@ -99,7 +87,7 @@ public:
    void writecmd(const char* command) {
       if (this->D_sock) {
          this->D_sock->msglen = pm_strcpy(&this->D_sock->msg, command);
-         bnet_send(this->D_sock);
+         this->D_sock->send();
       }
    }
 
@@ -129,7 +117,7 @@ public:
          /* Pointer to default value */
          *def++ = 0;
          strip_trailing_junk(def);
-         
+
          if (strcmp(dircomm->msg, "job") == 0) {
             if (strcmp(def, job_defs.job_name.toUtf8().data()) != 0) {
                goto bail_out;
diff --git a/src/qt-console/tray-monitor/tray-ui.h b/src/qt-console/tray-monitor/tray-ui.h
index 1119e26..d008405 100644
--- a/src/qt-console/tray-monitor/tray-ui.h
+++ b/src/qt-console/tray-monitor/tray-ui.h
@@ -1,30 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2011-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2011-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 #ifndef TRAYUI_H
@@ -83,7 +70,7 @@ public:
 
       qDebug() << "start getting elements";
       get_list(item, ".jobs type=B", res.job_list);
-      
+
       if (res.job_list.length() == 0) {
          QMessageBox msgBox;
          msgBox.setText("This restricted console doesn't have access to Backup jobs");
@@ -155,7 +142,7 @@ private slots:
       qDebug() << cmd;
       item->D_sock->fsend("%s", cmd.toUtf8().data());
       QString output;
-      while(bnet_recv(item->D_sock) >= 0) {output += item->D_sock->msg;}
+      while(item->D_sock->recv() >= 0) {output += item->D_sock->msg;}
       QMessageBox msgBox;
       msgBox.setText(output);
       msgBox.exec();
@@ -205,7 +192,7 @@ public:
        return hash.value(QString(title));
     }
 
-    void clearText(char *title) 
+    void clearText(char *title)
     {
        QPlainTextEdit *w = getTextEdit(title);
        if (!w) {
@@ -214,7 +201,7 @@ public:
        w->clear();
     }
 
-    void appendText(char *title, char *line) 
+    void appendText(char *title, char *line)
     {
        QPlainTextEdit *w = getTextEdit(title);
        if (!w) {
@@ -257,7 +244,7 @@ public:
         director = NULL;
         if (TrayMonitor->objectName().isEmpty())
             TrayMonitor->setObjectName(QString::fromUtf8("TrayMonitor"));
-        TrayMonitor->setWindowIcon(QIcon(":/images/cartridge1.png")); 
+        TrayMonitor->setWindowIcon(QIcon(":/images/cartridge1.png"));
         TrayMonitor->resize(789, 595);
         centralwidget = new QWidget(TrayMonitor);
         centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
@@ -311,15 +298,15 @@ public:
         QAction* actAbout = new QAction(QApplication::translate("TrayMonitor",
                                "About",
                                 0, QApplication::UnicodeUTF8),TrayMonitor);
-	QAction* actRun = new QAction(QApplication::translate("TrayMonitor",
+        QAction* actRun = new QAction(QApplication::translate("TrayMonitor",
                                "Run...",
                                 0, QApplication::UnicodeUTF8),TrayMonitor);
-	stmenu->addAction(actShow);
+        stmenu->addAction(actShow);
         stmenu->addAction(actRun);
         stmenu->addAction(actAbout);
         stmenu->addSeparator();
-	stmenu->addAction(actQuit);
-        
+        stmenu->addAction(actQuit);
+
         connect(actRun, SIGNAL(triggered()), this, SLOT(cb_run()));
         connect(actShow, SIGNAL(triggered()), this, SLOT(cb_show()));
         connect(actQuit, SIGNAL(triggered()), this, SLOT(cb_quit()));
@@ -328,11 +315,11 @@ public:
         connect(tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
                 this, SLOT(cb_trayIconActivated(QSystemTrayIcon::ActivationReason)));
 
-	tray->setContextMenu(stmenu);
-	QIcon icon(":/images/cartridge1.png");
-	tray->setIcon(icon);
+        tray->setContextMenu(stmenu);
+        QIcon icon(":/images/cartridge1.png");
+        tray->setIcon(icon);
         tray->setToolTip(QString("Bacula Tray Monitor"));
-	tray->show();
+        tray->show();
 
         retranslateUi(TrayMonitor);
         QMetaObject::connectSlotsByName(TrayMonitor);
diff --git a/src/qt-console/tray-monitor/tray_conf.cpp b/src/qt-console/tray-monitor/tray_conf.cpp
index c56fdf7..a6bbbf2 100644
--- a/src/qt-console/tray-monitor/tray_conf.cpp
+++ b/src/qt-console/tray-monitor/tray_conf.cpp
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
 *   Main configuration file parser for Bacula Tray Monitor.
@@ -174,7 +162,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    }
    switch (type) {
    case R_MONITOR:
-      sendit(sock, _("Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"), 
+      sendit(sock, _("Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"),
              reshdr->name,
              edit_uint64(res->res_monitor.FDConnectTimeout, ed1),
              edit_uint64(res->res_monitor.SDConnectTimeout, ed2));
diff --git a/src/qt-console/tray-monitor/tray_conf.h b/src/qt-console/tray-monitor/tray_conf.h
index 140ce34..a75a56e 100644
--- a/src/qt-console/tray-monitor/tray_conf.h
+++ b/src/qt-console/tray-monitor/tray_conf.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Tray Monitor specific configuration and defines
diff --git a/src/qt-console/util/comboutil.cpp b/src/qt-console/util/comboutil.cpp
index 57c9741..1abc5c2 100644
--- a/src/qt-console/util/comboutil.cpp
+++ b/src/qt-console/util/comboutil.cpp
@@ -3,27 +3,15 @@
 
    Copyright (C) 2007-2009 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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /*
diff --git a/src/qt-console/util/comboutil.h b/src/qt-console/util/comboutil.h
index f0cf5e4..d440f82 100644
--- a/src/qt-console/util/comboutil.h
+++ b/src/qt-console/util/comboutil.h
@@ -3,34 +3,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Version $Id$
  *
- *   Combobox helpers - Riccardo Ghetta, May 2008 
+ *   Combobox helpers - Riccardo Ghetta, May 2008
  */
 
 class QComboBox;
diff --git a/src/qt-console/util/fmtwidgetitem.cpp b/src/qt-console/util/fmtwidgetitem.cpp
index ef742bf..dd08129 100644
--- a/src/qt-console/util/fmtwidgetitem.cpp
+++ b/src/qt-console/util/fmtwidgetitem.cpp
@@ -3,36 +3,24 @@
 
    Copyright (C) 2007-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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
- 
+
 /*
  *
  *  Helper functions for tree widget formatting
  *
  *   Riccardo Ghetta, May 2008
  *
- */ 
+ */
 
 #include "bat.h"
 #include <QTreeWidgetItem>
@@ -68,13 +56,13 @@ QString convertJobStatus(const QString &sts)
 Freeze::Freeze(QWidget &q):
 qw(&q)
 {
-   qw->setUpdatesEnabled(false); 
+   qw->setUpdatesEnabled(false);
 }
 
 Freeze::~Freeze()
 {
    if (qw) {
-      qw->setUpdatesEnabled(true); 
+      qw->setUpdatesEnabled(true);
       qw->update();
    }
 }
@@ -101,15 +89,15 @@ QString convertBytesIEC(qint64 qfld)
       smaller unit (e.g. GB for a TB number and so on) */
    char suffix;
    if (qfld >= EB) {
-      qfld /= PB; 
+      qfld /= PB;
       suffix = 'E';
    }
    else if (qfld >= PB) {
-      qfld /= TB; 
+      qfld /= TB;
       suffix = 'P';
    }
    else if (qfld >= TB) {
-      qfld /= GB; 
+      qfld /= GB;
       suffix = 'T';
    }
    else if (qfld >= GB) {
@@ -125,7 +113,7 @@ QString convertBytesIEC(qint64 qfld)
    }
    else  {
       /* plain bytes, no need to reformat */
-      return QString("%1 B").arg(qfld); 
+      return QString("%1 B").arg(qfld);
    }
 
    /* having divided for a smaller unit, now we can safely convert to double and
@@ -147,15 +135,15 @@ QString convertBytesSI(qint64 qfld)
       smaller unit (e.g. GB for a TB number and so on) */
    char suffix;
    if (qfld >= EB) {
-      qfld /= PB; 
+      qfld /= PB;
       suffix = 'E';
    }
    else if (qfld >= PB) {
-      qfld /= TB; 
+      qfld /= TB;
       suffix = 'P';
    }
    else if (qfld >= TB) {
-      qfld /= GB; 
+      qfld /= GB;
       suffix = 'T';
    }
    else if (qfld >= GB) {
@@ -171,7 +159,7 @@ QString convertBytesSI(qint64 qfld)
    }
    else  {
       /* plain bytes, no need to reformat */
-      return QString("%1 B").arg(qfld); 
+      return QString("%1 B").arg(qfld);
    }
 
    /* having divided for a smaller unit, now we can safely convert to double and
@@ -222,7 +210,7 @@ void ItemFormatterBase::setPercent(int index, float value)
 /* By default, the setPixmap implementation with tooltip don't implement
  * the tooltip stuff
  */
-void ItemFormatterBase::setPixmap(int index, const QPixmap &pix, 
+void ItemFormatterBase::setPixmap(int index, const QPixmap &pix,
                                   const QString & /* tip */)
 {
    setPixmap(index, pix);
@@ -387,7 +375,7 @@ void ItemFormatterBase::setJobStatusFld(int index, const QString &status, bool c
       setBackground(index, Qt::green);
    } else if (redchars.contains(st, Qt::CaseSensitive)) {
       setBackground(index, Qt::red);
-   } else if (yellowchars.contains(st, Qt::CaseSensitive)){ 
+   } else if (yellowchars.contains(st, Qt::CaseSensitive)){
       setBackground(index, Qt::yellow);
    }
 }
@@ -467,7 +455,7 @@ void TableItemFormatter::BatSortingTableItem::setSortData(const QVariant &d)
    setData(SORTDATA_ROLE, d);
 }
 
-bool TableItemFormatter::BatSortingTableItem::operator< ( const QTableWidgetItem & o ) const 
+bool TableItemFormatter::BatSortingTableItem::operator< ( const QTableWidgetItem & o ) const
 {
    QVariant my = data(SORTDATA_ROLE);
    QVariant other = o.data(SORTDATA_ROLE);
@@ -476,11 +464,11 @@ bool TableItemFormatter::BatSortingTableItem::operator< ( const QTableWidgetItem
 
    /* 64bit integers must be handled separately, others can be converted to double */
    if (QVariant::ULongLong == my.type()) {
-      return my.toULongLong() < other.toULongLong(); 
+      return my.toULongLong() < other.toULongLong();
    } else if (QVariant::LongLong == my.type()) {
-      return my.toLongLong() < other.toLongLong(); 
+      return my.toLongLong() < other.toLongLong();
    } else if (my.canConvert(QVariant::Double)) {
-      return my.toDouble() < other.toDouble(); 
+      return my.toDouble() < other.toDouble();
    } else {
       return QTableWidgetItem::operator< (o); /* invalid combination, revert to default sorting */
    }
@@ -508,7 +496,7 @@ void TableItemFormatter::setPixmap(int index, const QPixmap &pix)
    parent->setCellWidget(row, index, lbl);
 }
 
-void TableItemFormatter::setPixmap(int index, const QPixmap &pix, 
+void TableItemFormatter::setPixmap(int index, const QPixmap &pix,
                                    const QString &tips)
 {
 // Centered, but not sortable !
diff --git a/src/qt-console/util/fmtwidgetitem.h b/src/qt-console/util/fmtwidgetitem.h
index 3646973..05da32e 100644
--- a/src/qt-console/util/fmtwidgetitem.h
+++ b/src/qt-console/util/fmtwidgetitem.h
@@ -3,32 +3,20 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- *   TreeView formatting helpers - Riccardo Ghetta, May 2008 
+ *   TreeView formatting helpers - Riccardo Ghetta, May 2008
  */
 
 class QWidget;
@@ -80,7 +68,7 @@ public:
    };
 
 public:
-   virtual ~ItemFormatterBase(); 
+   virtual ~ItemFormatterBase();
 
    /* Prints Yes if fld is != 0, No otherwise. Centers field if center true*/
    void setBoolFld(int index, const QString &fld, bool center = true);
@@ -110,19 +98,19 @@ public:
 
    /* fld value interpreted as volume status. Colored accordingly */
    void setVolStatusFld(int index, const QString &fld, bool center = true);
-  
+
    /* fld value interpreted as job status. Colored accordingly */
    void setJobStatusFld(int index, const QString &status, bool center = true);
-  
+
    /* fld value interpreted as job type. */
    void setJobTypeFld(int index, const QString &fld, bool center = false);
-  
+
    /* fld value interpreted as job level. */
    void setJobLevelFld(int index, const QString &fld, bool center = false);
 
    /* fld value interpreted as Online/Offline */
    void setInChanger(int index, const QString &InChanger);
-  
+
    /* fld value interpreted as file or folder */
    void setFileType(int index, const QString &type);
 
@@ -186,14 +174,14 @@ class TableItemFormatter : public ItemFormatterBase
 {
 private:
 
-   /* specialized widget item - allows an optional data property for sorting */ 
+   /* specialized widget item - allows an optional data property for sorting */
    class BatSortingTableItem : public QTableWidgetItem
    {
    private:
       static const int SORTDATA_ROLE = Qt::UserRole + 100;
    public:
       BatSortingTableItem();
-      
+
       /* uses the sort data if available, reverts to default behavior othervise */
       virtual bool operator< ( const QTableWidgetItem & o ) const;
 
diff --git a/src/stored/Makefile.in b/src/stored/Makefile.in
index 27d68a5..7671fa7 100644
--- a/src/stored/Makefile.in
+++ b/src/stored/Makefile.in
@@ -24,50 +24,65 @@ first_rule: all
 dummy:
 
 # bacula-sd
-SDOBJS =  stored.o ansi_label.o vtape.o \
+SDOBJS =  stored.o ansi_label.o vtape_dev.o \
 	  autochanger.o acquire.o append.o \
 	  askdir.o authenticate.o \
-	  block.o butil.o dev.o \
-	  device.o dircmd.o dvd.o ebcdic.o fd_cmds.o job.o \
-	  label.o lock.o mac.o match_bsr.o mount.o parse_bsr.o \
-	  pythonsd.o read.o read_record.o record.o \
+	  block.o block_util.o butil.o dev.o os.o file_dev.o tape_dev.o \
+	  device.o dircmd.o ebcdic.o fd_cmds.o job.o \
+	  label.o lock.o match_bsr.o mount.o parse_bsr.o \
+	  read.o read_records.o \
+	  record_read.o record_write.o record_util.o \
 	  reserve.o scan.o sd_plugins.o \
-	  spool.o status.o stored_conf.o vol_mgr.o wait.o
+	  spool.o status.o stored_conf.o \
+	  vbackup.o vol_mgr.o wait.o
 
 # btape
-TAPEOBJS = btape.o block.o butil.o dev.o device.o label.o vtape.o \
-	   lock.o ansi_label.o dvd.o ebcdic.o \
-	   autochanger.o acquire.o mount.o record.o read_record.o \
+TAPEOBJS = btape.o block.o block_util.o butil.o \
+	   dev.o os.o file_dev.o tape_dev.o \
+	   device.o label.o vtape_dev.o \
+	   lock.o ansi_label.o ebcdic.o \
+	   autochanger.o acquire.o mount.o record_util.o \
+	   read_records.o record_read.o record_write.o \
 	   reserve.o stored_conf.o match_bsr.o parse_bsr.o scan.o \
-	   sd_plugins.o spool.o vol_mgr.o wait.o
+	   sd_plugins.o status.o spool.o vol_mgr.o wait.o
 
 # bls
-BLSOBJS = bls.o block.o butil.o device.o dev.o label.o match_bsr.o vtape.o \
-	  ansi_label.o dvd.o ebcdic.o lock.o \
-	  autochanger.o acquire.o mount.o parse_bsr.o record.o	\
-	  read_record.o reserve.o scan.o stored_conf.o spool.o \
-	  sd_plugins.o vol_mgr.o wait.o
+BLSOBJS = bls.o block.o block_util.o butil.o device.o \
+	  dev.o os.o file_dev.o tape_dev.o label.o match_bsr.o vtape_dev.o \
+	  ansi_label.o ebcdic.o lock.o \
+	  autochanger.o acquire.o mount.o parse_bsr.o \
+	  record_read.o record_write.o record_util.o \
+	  read_records.o reserve.o scan.o stored_conf.o spool.o \
+	  sd_plugins.o status.o vol_mgr.o wait.o
 
 # bextract
-BEXTOBJS = bextract.o block.o device.o dev.o label.o record.o vtape.o \
-	   ansi_label.o dvd.o ebcdic.o lock.o \
+BEXTOBJS = bextract.o block.o block_util.o device.o \
+	   dev.o os.o file_dev.o tape_dev.o label.o vtape_dev.o \
+	   ansi_label.o ebcdic.o lock.o \
 	   autochanger.o acquire.o mount.o match_bsr.o parse_bsr.o butil.o \
-	   read_record.o reserve.o scan.o stored_conf.o spool.o \
-	   sd_plugins.o vol_mgr.o wait.o
+	   read_records.o record_read.o record_write.o record_util.o \
+	   reserve.o scan.o stored_conf.o spool.o \
+	   sd_plugins.o status.o vol_mgr.o wait.o
 
 # bscan
-SCNOBJS = bscan.o block.o device.o dev.o label.o vtape.o \
-	  ansi_label.o dvd.o ebcdic.o lock.o \
-	  autochanger.o acquire.o mount.o record.o match_bsr.o parse_bsr.o \
-	  butil.o read_record.o scan.o reserve.o stored_conf.o spool.o \
-	  sd_plugins.o vol_mgr.o wait.o
+SCNOBJS = bscan.o block.o block_util.o device.o \
+	  dev.o os.o file_dev.o tape_dev.o label.o vtape_dev.o \
+	  ansi_label.o ebcdic.o lock.o \
+	  autochanger.o acquire.o mount.o \
+	  record_read.o record_write.o read_records.o record_util.o \
+	  match_bsr.o parse_bsr.o \
+	  butil.o scan.o reserve.o stored_conf.o spool.o \
+	  sd_plugins.o status.o vol_mgr.o wait.o
 
 # bcopy
-COPYOBJS = bcopy.o block.o device.o dev.o label.o vtape.o \
-	   ansi_label.o dvd.o ebcdic.o lock.o \
-	   autochanger.o acquire.o mount.o record.o match_bsr.o parse_bsr.o \
-	   butil.o read_record.o reserve.o \
-	   sd_plugins.o scan.o stored_conf.o spool.o vol_mgr.o wait.o
+COPYOBJS = bcopy.o block.o block_util.o device.o \
+	   dev.o os.o file_dev.o tape_dev.o label.o vtape_dev.o \
+	   ansi_label.o ebcdic.o lock.o \
+	   autochanger.o acquire.o mount.o \
+	   record_read.o record_write.o read_records.o record_util.o \
+	   match_bsr.o parse_bsr.o butil.o reserve.o \
+	   sd_plugins.o scan.o status.o stored_conf.o spool.o \
+	   vol_mgr.o wait.o
 
 
 
@@ -76,7 +91,8 @@ EXTRAOBJS = @OBJLIST@
 
 CAP_LIBS = @CAP_LIBS@
 ZLIBS=@ZLIBS@
-LZOLIBS = @LZOLIBS@
+LZO_LIBS= @LZO_LIBS@
+LZO_INC= @LZO_INC@
 
 
 .SUFFIXES:	.c .o
@@ -86,22 +102,22 @@ LZOLIBS = @LZOLIBS@
 # inference rules
 .c.o:
 	@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) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 #-------------------------------------------------------------------------
 
 all: Makefile bacula-sd @STATIC_SD@ bls bextract bscan btape bcopy
 	@echo "===== Make of stored is good ===="
 	@echo " "
 
-bacula-sd: Makefile $(SDOBJS) ../lib/libbacpy$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
+bacula-sd: Makefile $(SDOBJS) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
 	@echo "Linking $@ ..."
 	$(LIBTOOL_LINK) $(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -o $@ $(SDOBJS) $(ZLIBS) \
-	   -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(DLIB) $(LIBS) $(WRAPLIBS) \
+	   -lbaccfg -lbac -lm $(DLIB) $(LIBS) $(WRAPLIBS) \
 	$(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS)
 
-static-bacula-sd: Makefile $(SDOBJS) ../lib/libbacpy$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
+static-bacula-sd: Makefile $(SDOBJS) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
 	$(LIBTOOL_LINK) $(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -o $@ $(SDOBJS) $(ZLIBS) \
-	   -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(DLIB) $(LIBS) $(WRAPLIBS) \
+	   -lbaccfg -lbac -lm $(DLIB) $(LIBS) $(WRAPLIBS) \
 	$(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS)
 	strip $@
 
@@ -127,11 +143,11 @@ bls:	Makefile $(BLSOBJS) ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE) ../lib/lib
 bextract.o: bextract.c
 	@echo "Compiling $<"
 	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) \
-	   -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+	   -I$(basedir) $(DINCLUDE) $(CFLAGS) $(LZO_INC) $<
 
 bextract: Makefile $(BEXTOBJS) ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
 	@echo "Compiling $<"
-	$(LIBTOOL_LINK) $(CXX) $(TTOOL_LDFLAGS) $(LDFLAGS) -L../lib -L../findlib -o $@ $(BEXTOBJS) $(DLIB) $(ZLIBS) $(LZOLIBS) \
+	$(LIBTOOL_LINK) $(CXX) $(TTOOL_LDFLAGS) $(LDFLAGS) -L../lib -L../findlib -o $@ $(BEXTOBJS) $(DLIB) $(ZLIBS) $(LZO_LIBS) \
 	   -lbacfind -lbaccfg -lbac -lm $(LIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
 
 bscan.o: bscan.c
@@ -216,7 +232,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) $(XINC) -I$(srcdir) -I$(basedir) *.c >> Makefile
 	@if test -f Makefile ; then \
 	    $(RMF) Makefile.bak; \
 	else \
diff --git a/src/stored/acquire.c b/src/stored/acquire.c
index ef31f74..a64b14d 100644
--- a/src/stored/acquire.c
+++ b/src/stored/acquire.c
@@ -1,34 +1,22 @@
 /*
-   Bacula(R) - The Network Backup Solution
-
-   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.
-   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(R) 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.
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2002-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 /*
  *  Routines to acquire and release a device for read/write
  *
- *   Kern Sibbald, August MMII
+ *   Written by Kern Sibbald, August MMII
  *
  */
 
@@ -38,13 +26,11 @@
 static int const rdbglvl = 100;
 
 /* Forward referenced functions */
-static void attach_dcr_to_dev(DCR *dcr);
-static void detach_dcr_from_dev(DCR *dcr);
 static void set_dcr_from_vol(DCR *dcr, VOL_LIST *vol);
 
 /*********************************************************************
- * Acquire device for reading. 
- *  The drive should have previously been reserved by calling 
+ * Acquire device for reading.
+ *  The drive should have previously been reserved by calling
  *  reserve_device_for_read(). We read the Volume label from the block and
  *  leave the block pointers just after the label.
  *
@@ -62,7 +48,7 @@ bool acquire_device_for_read(DCR *dcr)
    int i;
    int vol_label_status;
    int retry = 0;
-   
+
    Enter(rdbglvl);
    dev = dcr->dev;
    dev->Lock_read_acquire();
@@ -71,7 +57,7 @@ bool acquire_device_for_read(DCR *dcr)
    dev->dblock(BST_DOING_ACQUIRE);
 
    if (dev->num_writers > 0) {
-      Jmsg2(jcr, M_FATAL, 0, _("Acquire read: num_writers=%d not zero. Job %d canceled.\n"), 
+      Jmsg2(jcr, M_FATAL, 0, _("Acquire read: num_writers=%d not zero. Job %d canceled.\n"),
          dev->num_writers, jcr->JobId);
       goto get_out;
    }
@@ -80,7 +66,7 @@ bool acquire_device_for_read(DCR *dcr)
    vol = jcr->VolList;
    if (!vol) {
       char ed1[50];
-      Jmsg(jcr, M_FATAL, 0, _("No volumes specified for reading. Job %s canceled.\n"), 
+      Jmsg(jcr, M_FATAL, 0, _("No volumes specified for reading. Job %s canceled.\n"),
          edit_int64(jcr->JobId, ed1));
       goto get_out;
    }
@@ -91,12 +77,17 @@ bool acquire_device_for_read(DCR *dcr)
    if (!vol) {
       Jmsg(jcr, M_FATAL, 0, _("Logic error: no next volume to read. Numvol=%d Curvol=%d\n"),
          jcr->NumReadVolumes, jcr->CurReadVolume);
-      goto get_out;                   /* should not happen */   
+      goto get_out;                   /* should not happen */
    }
    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(rdbglvl, "Want Vol=%s Slot=%d\n", vol->VolumeName, vol->Slot);
-    
+
    /*
     * If the MediaType requested for this volume is not the
     *  same as the current drive, we attempt to find the same
@@ -115,12 +106,16 @@ bool acquire_device_for_read(DCR *dcr)
       DIRSTORE *store;
       int stat;
 
-      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(rdbglvl, "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
-                              "  device=%s\n", 
-            dcr->media_type, dev->device->media_type, dev->print_name());
+      Jmsg4(jcr, M_INFO, 0, _("Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
+                              "  %s device=%s\n"),
+            dcr->media_type, dev->device->media_type, dev->print_type(),
+            dev->print_name());
+      Dmsg4(rdbglvl, "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
+                              "  %s device=%s\n",
+            dcr->media_type, dev->device->media_type,
+            dev->print_type(), dev->print_name());
+
+      generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
 
       dev->dunblock(DEV_UNLOCKED);
 
@@ -133,14 +128,14 @@ bool acquire_device_for_read(DCR *dcr)
       rctx.device_name = vol->device;
       store = new DIRSTORE;
       memset(store, 0, sizeof(DIRSTORE));
-      store->name[0] = 0; /* No dir name */
+      store->name[0] = 0; /* No storage name */
       bstrncpy(store->media_type, vol->MediaType, sizeof(store->media_type));
       bstrncpy(store->pool_name, dcr->pool_name, sizeof(store->pool_name));
       bstrncpy(store->pool_type, dcr->pool_type, sizeof(store->pool_type));
       store->append = false;
       rctx.store = store;
       clean_device(dcr);                     /* clean up the dcr */
-      
+
       /*
        * Search for a new device
        */
@@ -156,17 +151,22 @@ bool acquire_device_for_read(DCR *dcr)
          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); 
+         dev->dblock(BST_DOING_ACQUIRE);
 
          dcr->VolumeName[0] = 0;
-         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());
+         Jmsg(jcr, M_INFO, 0, _("Media Type change.  New read %s device %s chosen.\n"),
+            dev->print_type(), dev->print_name());
+         Dmsg2(50, "Media Type change.  New read %s device %s chosen.\n",
+            dev->print_type(), 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));
          dcr->VolCatInfo.Slot = vol->Slot;
-         dcr->VolCatInfo.InChanger = vol->Slot > 0; 
+         dcr->VolCatInfo.InChanger = vol->Slot > 0;
          bstrncpy(dcr->pool_name, store->pool_name, sizeof(dcr->pool_name));
          bstrncpy(dcr->pool_type, store->pool_type, sizeof(dcr->pool_type));
       } else {
@@ -196,12 +196,12 @@ bool acquire_device_for_read(DCR *dcr)
    /* Volume info is always needed because of VolParts */
    Dmsg1(rdbglvl, "dir_get_volume_info vol=%s\n", dcr->VolumeName);
    if (!dir_get_volume_info(dcr, GET_VOL_INFO_FOR_READ)) {
-      Dmsg2(rdbglvl, "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);
    }
    dev->set_load();                /* set to load volume */
-   
+
    for ( ;; ) {
       /* If not polling limit retries */
       if (!dev->poll && retry++ > 10) {
@@ -216,8 +216,8 @@ bool acquire_device_for_read(DCR *dcr)
       }
 
       dcr->do_unload();
-      dcr->do_swapping(false/*!is_writing*/);
-      dcr->do_load(false /*!is_writing*/);
+      dcr->do_swapping(SD_READ);
+      dcr->do_load(SD_READ);
       set_dcr_from_vol(dcr, vol);          /* refresh dcr with desired volume info */
 
       /*
@@ -228,13 +228,13 @@ bool acquire_device_for_read(DCR *dcr)
       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());
+            Jmsg4(jcr, M_WARNING, 0, _("Read open %s device %s Volume \"%s\" failed: ERR=%s\n"),
+                  dev->print_type(), dev->print_name(), dcr->VolumeName, dev->bstrerror());
          }
          goto default_path;
       }
       Dmsg1(rdbglvl, "opened dev %s OK\n", dev->print_name());
-      
+
       /* Read Volume Label */
       Dmsg0(rdbglvl, "calling read-vol-label\n");
       vol_label_status = read_dev_volume_label(dcr);
@@ -255,8 +255,11 @@ bool acquire_device_for_read(DCR *dcr)
             Jmsg(jcr, M_WARNING, 0, "Read acquire: %s", jcr->errmsg);
          }
          goto default_path;
+      case VOL_TYPE_ERROR:
+         Jmsg(jcr, M_FATAL, 0, dev->errmsg);
+         goto get_out;
       case VOL_NAME_ERROR:
-         Dmsg3(rdbglvl, "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;
@@ -264,7 +267,7 @@ bool acquire_device_for_read(DCR *dcr)
          dev->set_unload();              /* force unload of unwanted tape */
          if (!unload_autochanger(dcr, -1)) {
             /* at least free the device so we can re-open with correct volume */
-            dev->close();                                                          
+            dev->close();
             free_volume(dev);
          }
          dev->set_load();
@@ -274,7 +277,7 @@ bool acquire_device_for_read(DCR *dcr)
 default_path:
          Dmsg0(rdbglvl, "default path\n");
          tape_previously_mounted = true;
-         
+
          /*
           * If the device requires mount, close it, so the device can be ejected.
           */
@@ -282,29 +285,29 @@ default_path:
             dev->close();
             free_volume(dev);
          }
-         
+
          /* Call autochanger only once unless ask_sysop called */
          if (try_autochanger) {
             int stat;
             Dmsg2(rdbglvl, "calling autoload Vol=%s Slot=%d\n",
                dcr->VolumeName, dcr->VolCatInfo.Slot);
-            stat = autoload_device(dcr, 0, NULL);
+            stat = autoload_device(dcr, SD_READ, NULL);
             if (stat > 0) {
                try_autochanger = false;
                continue;              /* try reading volume mounted */
             }
          }
-         
+
          /* Mount a specific volume and no other */
          Dmsg0(rdbglvl, "calling dir_ask_sysop\n");
-         if (!dir_ask_sysop_to_mount_volume(dcr, ST_READ)) {
+         if (!dir_ask_sysop_to_mount_volume(dcr, SD_READ)) {
             goto get_out;             /* error return */
          }
 
          /* Volume info is always needed because of VolParts */
          Dmsg1(150, "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(150, "dir_get_vol_info failed for vol=%s: %s\n",
                   dcr->VolumeName, jcr->errmsg);
             Jmsg1(jcr, M_WARNING, 0, "Read acquire: %s", jcr->errmsg);
          }
@@ -318,24 +321,28 @@ default_path:
    } /* end for loop */
 
    if (!ok) {
-      Jmsg1(jcr, M_FATAL, 0, _("Too many errors trying to mount device %s for reading.\n"),
-            dev->print_name());
+      Jmsg2(jcr, M_FATAL, 0, _("Too many errors trying to mount %s device %s for reading.\n"),
+            dev->print_type(), dev->print_name());
       goto get_out;
    }
 
    dev->clear_append();
    dev->set_read();
    jcr->sendJobStatus(JS_Running);
-   Jmsg(jcr, M_INFO, 0, _("Ready to read from volume \"%s\" on device %s.\n"),
-      dcr->VolumeName, dev->print_name());
+   Jmsg(jcr, M_INFO, 0, _("Ready to read from volume \"%s\" on %s device %s.\n"),
+      dcr->VolumeName, dev->print_type(), dev->print_name());
 
 get_out:
    dev->Lock();
    dcr->clear_reserved();
-   /* 
-    * Normally we are blocked, but in at least one error case above 
+   /* If failed and not writing plugin close device */
+   if (!ok && dev->num_writers == 0 && dev->num_reserved() == 0) {
+      generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
+   }
+   /*
+    * Normally we are blocked, but in at least one error case above
     *   we are not blocked because we unsuccessfully tried changing
-    *   devices.  
+    *   devices.
     */
    if (dev->is_blocked()) {
       dev->dunblock(DEV_LOCKED);
@@ -372,14 +379,14 @@ DCR *acquire_device_for_append(DCR *dcr)
    dev->Lock();
    Dmsg1(100, "acquire_append device is %s\n", dev->is_tape()?"tape":
         (dev->is_dvd()?"DVD":"disk"));
-
-
    /*
     * With the reservation system, this should not happen
     */
    if (dev->can_read()) {
-      Jmsg1(jcr, M_FATAL, 0, _("Want to append, but device %s is busy reading.\n"), dev->print_name());
-      Dmsg1(200, "Want to append but device %s is busy reading.\n", dev->print_name());
+      Mmsg2(jcr->errmsg, "Want to append but %s device %s is busy reading.\n",
+         dev->print_type(), dev->print_name());
+      Jmsg(jcr, M_FATAL, 0, jcr->errmsg);
+      Dmsg0(50, jcr->errmsg);
       goto get_out;
    }
 
@@ -411,10 +418,10 @@ DCR *acquire_device_for_append(DCR *dcr)
       if (!dcr->mount_next_write_volume()) {
          if (!job_canceled(jcr)) {
             /* Reduce "noise" -- don't print if job canceled */
-            Jmsg(jcr, M_FATAL, 0, _("Could not ready device %s for append.\n"),
-               dev->print_name());
-            Dmsg1(200, "Could not ready device %s for append.\n", 
-               dev->print_name());
+            Mmsg2(jcr->errmsg, _("Could not ready %s device %s for append.\n"),
+               dev->print_type(), dev->print_name());
+            Jmsg(jcr, M_FATAL, 0, jcr->errmsg);
+            Dmsg0(50, jcr->errmsg);
          }
          dev->Lock();
          unblock_device(dev);
@@ -425,13 +432,20 @@ DCR *acquire_device_for_append(DCR *dcr)
       unblock_device(dev);
    }
 
+   if (generate_plugin_event(jcr, bsdEventDeviceOpen, dcr) != bRC_OK) {
+      Mmsg0(jcr->errmsg,  _("generate_plugin_event(bsdEventDeviceOpen) Failed\n"));
+      Jmsg(jcr, M_FATAL, 0, jcr->errmsg);
+      Dmsg0(50, jcr->errmsg);
+      goto get_out;
+   }
+
    dev->num_writers++;                /* we are now a writer */
    if (jcr->NumWriteVolumes == 0) {
       jcr->NumWriteVolumes = 1;
    }
    dev->VolCatInfo.VolCatJobs++;              /* increment number of jobs on vol */
-   Dmsg4(100, "=== nwriters=%d nres=%d vcatjob=%d dev=%s\n", 
-      dev->num_writers, dev->num_reserved(), dev->VolCatInfo.VolCatJobs, 
+   Dmsg4(100, "=== nwriters=%d nres=%d vcatjob=%d dev=%s\n",
+      dev->num_writers, dev->num_reserved(), dev->VolCatInfo.VolCatJobs,
       dev->print_name());
    dir_update_volume_info(dcr, false, false); /* send Volume info to Director */
    ok = true;
@@ -462,6 +476,7 @@ bool release_device(DCR *dcr)
    char tbuf[100];
    int was_blocked = BST_NOT_BLOCKED;
 
+
    dev->Lock();
    if (!dev->is_blocked()) {
       block_device(dev, BST_RELEASING);
@@ -477,6 +492,7 @@ 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);
@@ -486,7 +502,7 @@ bool release_device(DCR *dcr)
          volume_unused(dcr);
       }
    } else if (dev->num_writers > 0) {
-      /* 
+      /*
        * Note if WEOT is set, we are at the end of the tape
        *   and may not be positioned correctly, so the
        *   job_media_record and update_vol_info have already been
@@ -495,7 +511,7 @@ bool release_device(DCR *dcr)
       dev->num_writers--;
       Dmsg1(100, "There are %d writers in release_device\n", dev->num_writers);
       if (dev->is_labeled()) {
-         Dmsg2(200, "dir_create_jobmedia. Release vol=%s dev=%s\n", 
+         Dmsg2(200, "dir_create_jobmedia. Release vol=%s dev=%s\n",
                dev->getVolCatName(), dev->print_name());
          if (!dev->at_weot() && !dir_create_jobmedia_record(dcr)) {
             Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
@@ -507,31 +523,33 @@ bool release_device(DCR *dcr)
             write_ansi_ibm_labels(dcr, ANSI_EOF_LABEL, dev->VolHdr.VolumeName);
          }
          if (!dev->at_weot()) {
-            dev->VolCatInfo.VolCatFiles = dev->file;   /* set number of files */
+            dev->VolCatInfo.VolCatFiles = dev->get_file();   /* set number of files */
             /* Note! do volume update before close, which zaps VolCatInfo */
             dir_update_volume_info(dcr, false, false); /* send Volume info to Director */
-            Dmsg2(200, "dir_update_vol_info. Release vol=%s dev=%s\n", 
+            Dmsg2(200, "dir_update_vol_info. Release vol=%s dev=%s\n",
                   dev->getVolCatName(), dev->print_name());
          }
          if (dev->num_writers == 0) {         /* if not being used */
             volume_unused(dcr);               /*  we obviously are not using the volume */
+            generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
          }
       }
 
    } else {
-      /*                
+      /*
        * If we reach here, it is most likely because the job
        *   has failed, since the device is not in read mode and
        *   there are no writers. It was probably reserved.
        */
       volume_unused(dcr);
+      generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
    }
    Dmsg3(100, "%d writers, %d reserve, dev=%s\n", dev->num_writers, dev->num_reserved(),
          dev->print_name());
 
    /* If no writers, close if file or !CAP_ALWAYS_OPEN */
    if (dev->num_writers == 0 && (!dev->is_tape() || !dev->has_cap(CAP_ALWAYSOPEN))) {
-      dvd_remove_empty_part(dcr);        /* get rid of any empty spool part */
+      generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
       dev->close();
       free_volume(dev);
    }
@@ -565,7 +583,7 @@ bool release_device(DCR *dcr)
       free_pool_memory(alert);
    }
    pthread_cond_broadcast(&dev->wait_next_vol);
-   Dmsg2(100, "JobId=%u broadcast wait_device_release at %s\n", 
+   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);
 
@@ -581,7 +599,7 @@ bool release_device(DCR *dcr)
    }
 
    if (dcr->keep_dcr) {
-      detach_dcr_from_dev(dcr);
+      dev->detach_dcr_from_dev(dcr);
    } else {
       free_dcr(dcr);
    }
@@ -605,7 +623,7 @@ bool clean_device(DCR *dcr)
 /*
  * Create a new Device Control Record and attach
  *   it to the device (if this is a real job).
- * Note, this has been updated so that it can be called first 
+ * Note, this has been updated so that it can be called first
  *   without a DEVICE, then a second or third time with a DEVICE,
  *   and each time, it should cleanup and point to the new device.
  *   This should facilitate switching devices.
@@ -615,41 +633,30 @@ bool clean_device(DCR *dcr)
  *   this dcr in the right place
  *
  */
-DCR *new_dcr(JCR *jcr, DCR *dcr, DEVICE *dev)
+DCR *new_dcr(JCR *jcr, DCR *dcr, DEVICE *dev, bool writing)
 {
+   DEVICE *odev;
    if (!dcr) {
-      int errstat;
       dcr = (DCR *)malloc(sizeof(DCR));
       memset(dcr, 0, sizeof(DCR));
       dcr->tid = pthread_self();
       dcr->spool_fd = -1;
-      if ((errstat = pthread_mutex_init(&dcr->m_mutex, NULL)) != 0) {
-         berrno be;
-         dev->dev_errno = errstat;
-         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 */
+   odev = dcr->dev;
+   if (dcr->attached_to_dev && odev) {
+      Dmsg2(100, "Detach 0x%x from olddev %s\n", dcr, odev->print_name());
+      odev->detach_dcr_from_dev(dcr);
+   }
+   ASSERT2(!dcr->attached_to_dev, "DCR is attached. Wrong!");
    /* Set device information, possibly change device */
    if (dev) {
-      if (dcr->block) {
-         free_block(dcr->block);
-      }
+      dcr->free_blocks();
       dcr->block = new_block(dev);
       if (dcr->rec) {
          free_record(dcr->rec);
       }
       dcr->rec = new_record();
-      if (dcr->attached_to_dev) {
-         detach_dcr_from_dev(dcr);
-      }
       /* Use job spoolsize prior to device spoolsize */
       if (jcr && jcr->spool_size) {
          dcr->max_job_spool_size = jcr->spool_size;
@@ -658,7 +665,13 @@ DCR *new_dcr(JCR *jcr, DCR *dcr, DEVICE *dev)
       }
       dcr->device = dev->device;
       dcr->set_dev(dev);
-      attach_dcr_to_dev(dcr);
+      Dmsg2(100, "Attach 0x%x to dev %s\n", dcr, dev->print_name());
+      dev->attach_dcr_to_dev(dcr);
+   }
+   if (writing) {
+      dcr->set_writing();
+   } else {
+      dcr->clear_writing();
    }
    return dcr;
 }
@@ -692,57 +705,46 @@ static void remove_dcr_from_dcrs(DCR *dcr)
 }
 #endif
 
-static void attach_dcr_to_dev(DCR *dcr)
+void DEVICE::attach_dcr_to_dev(DCR *dcr)
 {
-   DEVICE *dev;
-   JCR *jcr;
+   JCR *jcr = dcr->jcr;
 
-   P(dcr->m_mutex);
-   dev = dcr->dev;
+   Lock_dcrs();
    jcr = dcr->jcr;
    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->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->Unlock();
+   if (!dcr->attached_to_dev && initiated && jcr && jcr->getJobType() != JT_SYSTEM) {
+      Dmsg4(200, "Attach Jid=%d dcr=%p size=%d dev=%s\n", (uint32_t)jcr->JobId,
+         dcr, attached_dcrs->size(), print_name());
+      attached_dcrs->append(dcr);  /* attach dcr to device */
       dcr->attached_to_dev = true;
    }
-   V(dcr->m_mutex);
+   Unlock_dcrs();
 }
 
-/* 
- * DCR is locked before calling this routine
+/*
+ * Note!! Do not enter with dev->Lock() since unreserve_device()
+ *   is going to lock it too.
  */
-static void locked_detach_dcr_from_dev(DCR *dcr)
+void DEVICE::detach_dcr_from_dev(DCR *dcr)
 {
-   DEVICE *dev = dcr->dev;
    Dmsg0(500, "Enter detach_dcr_from_dev\n"); /* jcr is NULL in some cases */
 
+   Lock();
+   Lock_dcrs();
    /* Detach this dcr only if attached */
-   if (dcr->attached_to_dev && dev) {
-      dcr->unreserve_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());
+   if (dcr->attached_to_dev) {
+      dcr->unreserve_device(true);
+      Dmsg4(200, "Detach Jid=%d dcr=%p size=%d to dev=%s\n", (uint32_t)dcr->jcr->JobId,
+         dcr, attached_dcrs->size(), print_name());
       dcr->attached_to_dev = false;
-      if (dev->attached_dcrs->size()) {
-         dev->attached_dcrs->remove(dcr);  /* detach dcr from device */
+      if (attached_dcrs->size()) {
+         attached_dcrs->remove(dcr);  /* detach dcr from device */
       }
-//    remove_dcr_from_dcrs(dcr);      /* remove dcr from jcr list */
-      dev->Unlock();
    }
    dcr->attached_to_dev = false;
-}
-
-
-static void detach_dcr_from_dev(DCR *dcr)
-{
-   P(dcr->m_mutex);
-   locked_detach_dcr_from_dev(dcr);
-   V(dcr->m_mutex);
+   Unlock_dcrs();
+   Unlock();
 }
 
 /*
@@ -753,14 +755,13 @@ void free_dcr(DCR *dcr)
 {
    JCR *jcr;
 
-   P(dcr->m_mutex);
    jcr = dcr->jcr;
 
-   locked_detach_dcr_from_dev(dcr);
-
-   if (dcr->block) {
-      free_block(dcr->block);
+   if (dcr->dev) {
+      dcr->dev->detach_dcr_from_dev(dcr);
    }
+
+   dcr->free_blocks();
    if (dcr->rec) {
       free_record(dcr->rec);
    }
@@ -770,21 +771,18 @@ void free_dcr(DCR *dcr)
    if (jcr && jcr->read_dcr == dcr) {
       jcr->read_dcr = NULL;
    }
-   V(dcr->m_mutex);
-   pthread_mutex_destroy(&dcr->m_mutex);
-   pthread_mutex_destroy(&dcr->r_mutex);
    free(dcr);
 }
 
 static void set_dcr_from_vol(DCR *dcr, VOL_LIST *vol)
 {
-   /*    
-    * Note, if we want to be able to work from a .bsr file only          
+   /*
+    * Note, if we want to be able to work from a .bsr file only
     *  for disaster recovery, we must "simulate" reading the catalog
     */
    bstrncpy(dcr->VolumeName, vol->VolumeName, sizeof(dcr->VolumeName));
    dcr->setVolCatName(vol->VolumeName);
    bstrncpy(dcr->media_type, vol->MediaType, sizeof(dcr->media_type));
    dcr->VolCatInfo.Slot = vol->Slot;
-   dcr->VolCatInfo.InChanger = vol->Slot > 0; 
+   dcr->VolCatInfo.InChanger = vol->Slot > 0;
 }
diff --git a/src/stored/ansi_label.c b/src/stored/ansi_label.c
index 8f6ca49..31a74e7 100644
--- a/src/stored/ansi_label.c
+++ b/src/stored/ansi_label.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -32,9 +20,6 @@
  *
  *   Kern Sibbald, MMV
  *
- *
- *
- *   Version $Id$
  */
 
 #include "bacula.h"                   /* pull in global headers */
@@ -51,7 +36,7 @@ static bool same_label_names(char *bacula_name, char *ansi_name);
 /*
  * We read an ANSI label and compare the Volume name. We require
  * a VOL1 record of 80 characters followed by a HDR1 record containing
- * BACULA.DATA in the filename field. We then read up to 3 more 
+ * BACULA.DATA in the filename field. We then read up to 3 more
  * header records (they are not required) and an EOF, at which
  * point, all is good.
  *
@@ -61,9 +46,9 @@ static bool same_label_names(char *bacula_name, char *ansi_name);
  *    VOL_IO_ERROR      I/O error on read
  *    VOL_NAME_ERROR    Wrong name in VOL1 record
  *    VOL_LABEL_ERROR   Probably an ANSI label, but something wrong
- *      
- */ 
-int read_ansi_ibm_label(DCR *dcr) 
+ *
+ */
+int read_ansi_ibm_label(DCR *dcr)
 {
    DEVICE * volatile dev = dcr->dev;
    JCR *jcr = dcr->jcr;
@@ -125,7 +110,7 @@ int read_ansi_ibm_label(DCR *dcr)
                   Dmsg0(100, "Found IBM label.\n");
                   Dmsg0(100, "Got IBM VOL1 label\n");
                }
-            }       
+            }
          }
          if (!ok) {
             Dmsg0(100, "No VOL1 label\n");
@@ -135,10 +120,10 @@ int read_ansi_ibm_label(DCR *dcr)
 
 
          /* Compare Volume Names allow special wild card */
-         if (VolName && *VolName && *VolName != '*') { 
+         if (VolName && *VolName && *VolName != '*') {
             if (!same_label_names(VolName, &label[4])) {
                char *p = &label[4];
-               char *q;  
+               char *q;
 
                free_volume(dev);
                /* Store new Volume name */
@@ -206,7 +191,7 @@ int read_ansi_ibm_label(DCR *dcr)
    Dmsg0(100, "Too many records in ANSI/IBM label.\n");
    Mmsg0(jcr->errmsg, _("Too many records in while reading ANSI/IBM label.\n"));
    return VOL_LABEL_ERROR;
-}  
+}
 
 /*
  * ANSI/IBM VOL1 label
@@ -214,7 +199,7 @@ int read_ansi_ibm_label(DCR *dcr)
  * Pos   count   Function      What Bacula puts
  * 0-3     4     "VOL1"          VOL1
  * 4-9     6     Volume name     Volume name
- * 10-10   1     Access code 
+ * 10-10   1     Access code
  * 11-36   26    Unused
  *
  * ANSI
@@ -254,7 +239,7 @@ int read_ansi_ibm_label(DCR *dcr)
  * 5-9     5     Block length         32000
  * 10-14   5     Rec length           32000
  * 15-15   1     Density
- * 16-16   1     Continued 
+ * 16-16   1     Continued
  * 17-33   17    Job
  * 34-35   2     Recording
  * 36-36   1     cr/lf ctl
@@ -264,7 +249,7 @@ int read_ansi_ibm_label(DCR *dcr)
  * 50-51   2     offset
  * 52-79   28    reserved
 
- */ 
+ */
 
 static const char *labels[] = {"HDR", "EOF", "EOV"};
 
diff --git a/src/stored/append.c b/src/stored/append.c
index 7b69a4c..fa3946f 100644
--- a/src/stored/append.c
+++ b/src/stored/append.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Append code for Storage daemon
@@ -39,22 +27,15 @@
 static char OK_data[]    = "3000 OK data\n";
 static char OK_append[]  = "3000 OK append data\n";
 
-/* Forward referenced functions */
-
-
-/* 
- */
-void possible_incomplete_job(JCR *jcr, int32_t last_file_index)
-{
-}
 /*
- *  Append Data sent from File daemon
+ *  Append Data sent from Client (FD/SD)
  *
  */
 bool do_append_data(JCR *jcr)
 {
    int32_t n;
    int32_t file_index, stream, last_file_index;
+   uint64_t stream_len;
    BSOCK *fd = jcr->file_bsock;
    bool ok = true;
    DEV_RECORD rec;
@@ -64,15 +45,17 @@ bool do_append_data(JCR *jcr)
    char ec[50];
 
 
-   if (!dcr) { 
-      Jmsg0(jcr, M_FATAL, 0, _("DCR is NULL!!!\n"));
+   if (!dcr) {
+      pm_strcpy(jcr->errmsg, _("DCR is NULL!!!\n"));
+      Jmsg0(jcr, M_FATAL, 0, jcr->errmsg);
       return false;
-   }                                              
+   }
    dev = dcr->dev;
-   if (!dev) { 
-      Jmsg0(jcr, M_FATAL, 0, _("DEVICE is NULL!!!\n"));
+   if (!dev) {
+      pm_strcpy(jcr->errmsg, _("DEVICE is NULL!!!\n"));
+      Jmsg0(jcr, M_FATAL, 0, jcr->errmsg);
       return false;
-   }                                              
+   }
 
    Dmsg1(100, "Start append data. res=%d\n", dev->num_reserved());
 
@@ -80,7 +63,8 @@ bool do_append_data(JCR *jcr)
 
    if (!fd->set_buffer_size(dcr->device->max_network_buffer_size, BNET_SETBUF_WRITE)) {
       jcr->setJobStatus(JS_ErrorTerminated);
-      Jmsg0(jcr, M_FATAL, 0, _("Unable to set network buffer size.\n"));
+      pm_strcpy(jcr->errmsg, _("Unable to set network buffer size.\n"));
+      Jmsg0(jcr, M_FATAL, 0, jcr->errmsg);
       return false;
    }
 
@@ -91,6 +75,7 @@ bool do_append_data(JCR *jcr)
 
    jcr->sendJobStatus(JS_Running);
 
+   //ASSERT(dev->VolCatInfo.VolCatName[0]);
    if (dev->VolCatInfo.VolCatName[0] == 0) {
       Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
    }
@@ -100,6 +85,7 @@ bool do_append_data(JCR *jcr)
    begin_attribute_spool(jcr);
 
    Dmsg0(100, "Just after acquire_device_for_append\n");
+   //ASSERT(dev->VolCatInfo.VolCatName[0]);
    if (dev->VolCatInfo.VolCatName[0] == 0) {
       Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
    }
@@ -112,6 +98,7 @@ bool do_append_data(JCR *jcr)
       jcr->setJobStatus(JS_ErrorTerminated);
       ok = false;
    }
+   //ASSERT(dev->VolCatInfo.VolCatName[0]);
    if (dev->VolCatInfo.VolCatName[0] == 0) {
       Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
    }
@@ -149,44 +136,43 @@ bool do_append_data(JCR *jcr)
        *  The stream header consists of the following:
        *    file_index (sequential Bacula file index, base 1)
        *    stream     (Bacula number to distinguish parts of data)
-       *    info       (Info for Storage daemon -- compressed, encrypted, ...)
-       *       info is not currently used, so is read, but ignored!
+       *    stream_len (Expected length of this stream. This
+       *       will be the size backed up if the file does not
+       *       grow during the backup.
        */
      if ((n=bget_msg(fd)) <= 0) {
          if (n == BNET_SIGNAL && fd->msglen == BNET_EOD) {
+            Dmsg0(200, "Got EOD on reading header.\n");
             break;                    /* end of data */
          }
-         Jmsg1(jcr, M_FATAL, 0, _("Error reading data header from FD. ERR=%s\n"),
-               fd->bstrerror());
-         possible_incomplete_job(jcr, last_file_index);
+         Jmsg3(jcr, M_FATAL, 0, _("Error reading data header from FD. n=%d msglen=%d ERR=%s\n"),
+               n, fd->msglen, fd->bstrerror());
          ok = false;
          break;
       }
 
-      if (sscanf(fd->msg, "%ld %ld", &file_index, &stream) != 2) {
+      if (sscanf(fd->msg, "%ld %ld %lld", &file_index, &stream, &stream_len) != 3) {
          Jmsg1(jcr, M_FATAL, 0, _("Malformed data header from FD: %s\n"), fd->msg);
          ok = false;
-         possible_incomplete_job(jcr, last_file_index);
          break;
       }
 
-      Dmsg2(890, "<filed: Header FilInx=%d stream=%d\n", file_index, stream);
+      Dmsg3(890, "<filed: Header FilInx=%d stream=%d stream_len=%lld\n",
+         file_index, stream, stream_len);
 
       /*
        * We make sure the file_index is advancing sequentially.
-       * An incomplete job can start the file_index at any number.
-       * otherwise, it must start at 1.
        */
       if (jcr->rerunning && file_index > 0 && last_file_index == 0) {
          goto fi_checked;
       }
+      Dmsg2(400, "file_index=%d last_file_index=%d\n", file_index, last_file_index);
       if (file_index > 0 && (file_index == last_file_index ||
           file_index == last_file_index + 1)) {
          goto fi_checked;
       }
-      Jmsg2(jcr, M_FATAL, 0, _("FI=%d from FD not positive or sequential=%d\n"),
+      Jmsg2(jcr, M_FATAL, 0, _("FI=%d from FD not positive or last_FI=%d\n"),
             file_index, last_file_index);
-      possible_incomplete_job(jcr, last_file_index);
       ok = false;
       break;
 
@@ -204,12 +190,13 @@ fi_checked:
          rec.VolSessionTime = jcr->VolSessionTime;
          rec.FileIndex = file_index;
          rec.Stream = stream;
+         rec.StreamLen = stream_len;
          rec.maskedStream = stream & STREAMMASK_TYPE;   /* strip high bits */
          rec.data_len = fd->msglen;
          rec.data = fd->msg;            /* use message buffer */
 
          Dmsg4(850, "before writ_rec FI=%d SessId=%d Strm=%s len=%d\n",
-            rec.FileIndex, rec.VolSessionId, 
+            rec.FileIndex, rec.VolSessionId,
             stream_to_ascii(buf1, rec.Stream,rec.FileIndex),
             rec.data_len);
 
@@ -227,14 +214,13 @@ fi_checked:
          send_attrs_to_dir(jcr, &rec);
          Dmsg0(650, "Enter bnet_get\n");
       }
-      Dmsg1(650, "End read loop with FD. Stat=%d\n", n);
+      Dmsg2(650, "End read loop with FD. JobFiles=%d Stat=%d\n", jcr->JobFiles, n);
 
       if (fd->is_error()) {
          if (!jcr->is_job_canceled()) {
             Dmsg1(350, "Network read error from FD. ERR=%s\n", fd->bstrerror());
             Jmsg1(jcr, M_FATAL, 0, _("Network error reading from FD. ERR=%s\n"),
                   fd->bstrerror());
-            possible_incomplete_job(jcr, last_file_index);
          }
          ok = false;
          break;
@@ -245,9 +231,9 @@ fi_checked:
    jcr->setJobStatus(ok?JS_Terminated:JS_ErrorTerminated);
 
    if (ok) {
-      /* Terminate connection with FD */
+      /* Terminate connection with Client */
       fd->fsend(OK_append);
-      do_fd_commands(jcr);               /* finish dialog with FD */
+      do_client_commands(jcr);            /* finish dialog with Client */
    } else {
       fd->fsend("3999 Failed append\n");
    }
@@ -264,12 +250,10 @@ fi_checked:
          if (ok && !jcr->is_job_canceled()) {
             Jmsg1(jcr, M_FATAL, 0, _("Error writing end session label. ERR=%s\n"),
                   dev->bstrerror());
-            possible_incomplete_job(jcr, last_file_index);
          }
          jcr->setJobStatus(JS_ErrorTerminated);
          ok = false;
       }
-      Dmsg0(90, "back from write_end_session_label()\n");
       /* Flush out final partial block of this session */
       if (!dcr->write_block_to_device()) {
          /* Print only if ok and not cancelled to avoid spurious messages */
@@ -277,24 +261,19 @@ fi_checked:
             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"));
-            possible_incomplete_job(jcr, last_file_index);
          }
          jcr->setJobStatus(JS_ErrorTerminated);
          ok = false;
       }
    }
 
-   if (!ok && !jcr->is_JobStatus(JS_Incomplete)) {
+   if (!ok) {
       discard_data_spool(dcr);
    } else {
       /* Note: if commit is OK, the device will remain blocked */
       commit_data_spool(dcr);
    }
 
-   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
@@ -308,14 +287,14 @@ fi_checked:
    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
     *  and unlock it.
     */
    release_device(dcr);
 
-   if ((!ok || jcr->is_job_canceled()) && !jcr->is_JobStatus(JS_Incomplete)) {
+   if (!ok || jcr->is_job_canceled()) {
       discard_attribute_spool(jcr);
    } else {
       commit_attribute_spool(jcr);
@@ -331,7 +310,7 @@ fi_checked:
 /* Send attributes and digest to Director for Catalog */
 bool send_attrs_to_dir(JCR *jcr, DEV_RECORD *rec)
 {
-   if (rec->maskedStream == STREAM_UNIX_ATTRIBUTES    || 
+   if (rec->maskedStream == STREAM_UNIX_ATTRIBUTES    ||
        rec->maskedStream == STREAM_UNIX_ATTRIBUTES_EX ||
        rec->maskedStream == STREAM_RESTORE_OBJECT     ||
        crypto_digest_stream_type(rec->maskedStream) != CRYPTO_DIGEST_NONE) {
@@ -340,7 +319,7 @@ bool send_attrs_to_dir(JCR *jcr, DEV_RECORD *rec)
          if (are_attributes_spooled(jcr)) {
             dir->set_spooling();
          }
-         Dmsg0(850, "Send attributes to dir.\n");
+         Dmsg1(850, "Send attributes to dir. FI=%d\n", rec->FileIndex);
          if (!dir_update_file_attributes(jcr->dcr, rec)) {
             Jmsg(jcr, M_FATAL, 0, _("Error updating file attributes. ERR=%s\n"),
                dir->bstrerror());
diff --git a/src/stored/askdir.c b/src/stored/askdir.c
index 9a89927..f31a30f 100644
--- a/src/stored/askdir.c
+++ b/src/stored/askdir.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Subroutines to handle Catalog reqests sent to the Director
@@ -53,16 +41,17 @@ static char FileAttributes[] = "UpdCat Job=%s FileAttributes ";
 
 /* Responses received from the Director */
 static char OK_media[] = "1000 OK VolName=%127s VolJobs=%u VolFiles=%lu"
-   " VolBlocks=%lu VolBytes=%lld VolMounts=%lu VolErrors=%lu VolWrites=%lu"
+   " VolBlocks=%lu VolBytes=%lld VolMounts=%lu"
+   " VolErrors=%lu VolWrites=%lu"
    " MaxVolBytes=%lld VolCapacityBytes=%lld VolStatus=%20s"
    " Slot=%ld MaxVolJobs=%lu MaxVolFiles=%lu InChanger=%ld"
    " VolReadTime=%lld VolWriteTime=%lld EndFile=%lu EndBlock=%lu"
-   " VolParts=%lu LabelType=%ld MediaId=%lld\n";
+   " VolParts=%lu LabelType=%ld MediaId=%lld ScratchPoolId=%lld\n";
 
 
 static char OK_create[] = "1000 OK CreateJobMedia\n";
 
-static pthread_mutex_t vol_info_mutex = PTHREAD_MUTEX_INITIALIZER;
+static bthread_mutex_t vol_info_mutex = BTHREAD_MUTEX_PRIORITY(PRIO_SD_VOL_INFO);
 
 #ifdef needed
 
@@ -81,7 +70,7 @@ bool dir_update_device(JCR *jcr, DEVICE *dev)
    POOL_MEM dev_name, VolumeName, MediaType, ChangerName;
    DEVRES *device = dev->device;
    bool ok;
-   
+
    pm_strcpy(dev_name, device->hdr.name);
    bash_spaces(dev_name);
    if (dev->is_labeled()) {
@@ -98,15 +87,15 @@ bool dir_update_device(JCR *jcr, DEVICE *dev)
    } else {
       pm_strcpy(ChangerName, "*");
    }
-   ok = dir->fsend(Device_update, 
+   ok = dir->fsend(Device_update,
       jcr->Job,
       dev_name.c_str(),
       dev->can_append()!=0,
-      dev->can_read()!=0, dev->num_writers, 
+      dev->can_read()!=0, dev->num_writers,
       dev->is_open()!=0, dev->is_labeled()!=0,
-      dev->is_offline()!=0, dev->reserved_device, 
+      dev->is_offline()!=0, dev->reserved_device,
       dev->is_tape()?100000:1,
-      dev->autoselect, 0, 
+      dev->autoselect, 0,
       ChangerName.c_str(), MediaType.c_str(), VolumeName.c_str());
    Dmsg1(dbglvl, ">dird: %s\n", dir->msg);
    return ok;
@@ -183,28 +172,36 @@ static bool do_get_volume_info(DCR *dcr)
     Dmsg1(dbglvl, "<dird %s", dir->msg);
     n = sscanf(dir->msg, OK_media, vol.VolCatName,
                &vol.VolCatJobs, &vol.VolCatFiles,
-               &vol.VolCatBlocks, &vol.VolCatBytes,
+               &vol.VolCatBlocks, &vol.VolCatAmetaBytes,
                &vol.VolCatMounts, &vol.VolCatErrors,
                &vol.VolCatWrites, &vol.VolCatMaxBytes,
                &vol.VolCatCapacityBytes, vol.VolCatStatus,
                &vol.Slot, &vol.VolCatMaxJobs, &vol.VolCatMaxFiles,
                &InChanger, &vol.VolReadTime, &vol.VolWriteTime,
                &vol.EndFile, &vol.EndBlock, &vol.VolCatParts,
-               &vol.LabelType, &vol.VolMediaId);
-    if (n != 22) {
-       Dmsg3(dbglvl, "Bad response from Dir fields=%d, len=%d: %s", 
-             n, dir->msglen, dir->msg);
+               &vol.LabelType, &vol.VolMediaId, &vol.VolScratchPoolId);
+    if (n != 23) {
+       Dmsg1(dbglvl, "get_volume_info failed: ERR=%s", dir->msg);
+       /*
+        * Note, we can get an error here either because there is
+        *  a comm problem, or if the volume is not a suitable
+        *  volume to use, so do not issue a Jmsg() here, do it
+        *  in the calling routine.
+        */
        Mmsg(jcr->errmsg, _("Error getting Volume info: %s"), dir->msg);
        return false;
     }
     vol.InChanger = InChanger;        /* bool in structure */
     vol.is_valid = true;
+    vol.VolCatBytes = vol.VolCatAmetaBytes;
     unbash_spaces(vol.VolCatName);
     bstrncpy(dcr->VolumeName, vol.VolCatName, sizeof(dcr->VolumeName));
     dcr->VolCatInfo = vol;            /* structure assignment */
 
     Dmsg2(dbglvl, "do_reqest_vol_info return true slot=%d Volume=%s\n",
           vol.Slot, vol.VolCatName);
+    Dmsg3(dbglvl, "Dir returned VolCatAmetaBytes=%lld Status=%s Vol=%s\n",
+       vol.VolCatAmetaBytes, vol.VolCatStatus, vol.VolCatName);
     return true;
 }
 
@@ -244,7 +241,7 @@ bool dir_get_volume_info(DCR *dcr, enum get_vol_info_rw writing)
  * Returns: true  on success dcr->VolumeName is volume
  *                reserve_volume() called on Volume name
  *          false on failure dcr->VolumeName[0] == 0
- *                also sets dcr->found_in_use if at least one 
+ *                also sets dcr->found_in_use if at least one
  *                in use volume was found.
  *
  *          Volume information returned in dcr
@@ -257,11 +254,12 @@ bool dir_find_next_appendable_volume(DCR *dcr)
     bool rtn;
     char lastVolume[MAX_NAME_LENGTH];
 
-    Dmsg2(dbglvl, "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);
+    Mmsg(jcr->errmsg, "Unknown error\n");
 
     /*
-     * Try the twenty oldest or most available volumes.  Note,
+     * Try the thirty oldest or most available volumes.  Note,
      *   the most available could already be mounted on another
      *   drive, so we continue looking for a not in use Volume.
      */
@@ -269,7 +267,7 @@ bool dir_find_next_appendable_volume(DCR *dcr)
     P(vol_info_mutex);
     dcr->clear_found_in_use();
     lastVolume[0] = 0;
-    for (int vol_index=1;  vol_index < 20; vol_index++) {
+    for (int vol_index=1;  vol_index < 30; vol_index++) {
        bash_spaces(dcr->media_type);
        bash_spaces(dcr->pool_name);
        dir->fsend(Find_media, jcr->Job, vol_index, dcr->pool_name, dcr->media_type);
@@ -279,6 +277,8 @@ bool dir_find_next_appendable_volume(DCR *dcr)
        if (do_get_volume_info(dcr)) {
           /* Give up if we get the same volume name twice */
           if (lastVolume[0] && strcmp(lastVolume, dcr->VolumeName) == 0) {
+             Mmsg(jcr->errmsg, "Director returned same volume name=%s twice.\n",
+                lastVolume);
              Dmsg1(dbglvl, "Got same vol = %s\n", lastVolume);
              break;
           }
@@ -286,8 +286,12 @@ bool dir_find_next_appendable_volume(DCR *dcr)
           if (dcr->can_i_write_volume()) {
              Dmsg1(dbglvl, "Call reserve_volume for write. Vol=%s\n", dcr->VolumeName);
              if (reserve_volume(dcr, dcr->VolumeName) == NULL) {
-                Dmsg2(dbglvl, "Could not reserve volume %s on %s\n", dcr->VolumeName,
-                    dcr->dev->print_name());
+                Dmsg1(dbglvl, "%s", jcr->errmsg);
+                if (dcr->dev->must_wait()) {
+                   rtn = false;
+                   dcr->VolumeName[0] = 0;
+                   goto get_out;
+                }
                 continue;
              }
              Dmsg1(dbglvl, "dir_find_next_appendable_volume return true. vol=%s\n",
@@ -295,6 +299,7 @@ bool dir_find_next_appendable_volume(DCR *dcr)
              rtn = true;
              goto get_out;
           } else {
+             Mmsg(jcr->errmsg, "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();
@@ -311,11 +316,20 @@ bool dir_find_next_appendable_volume(DCR *dcr)
 get_out:
     V(vol_info_mutex);
     unlock_volumes();
+    if (!rtn && dcr->VolCatInfo.VolScratchPoolId != 0) {
+       Jmsg(jcr, M_WARNING, 0, "%s", jcr->errmsg);
+       Dmsg2(000, "!!!!!!!!! Volume=%s rejected ScratchPoolId=%lld\n", dcr->VolumeName,
+          dcr->VolCatInfo.VolScratchPoolId);
+       Dmsg1(000, "%s", jcr->errmsg);
+    //} else {
+    //   Dmsg3(000, "Rtn=%d Volume=%s ScratchPoolId=%lld\n", rtn, dcr->VolumeName,
+    //      dcr->VolCatInfo.VolScratchPoolId);
+    }
     return rtn;
 }
 
 
-/**
+/*
  * After writing a Volume, send the updated statistics
  * back to the director. The information comes from the
  * dev record.
@@ -325,8 +339,8 @@ bool dir_update_volume_info(DCR *dcr, bool label, bool update_LastWritten)
    JCR *jcr = dcr->jcr;
    BSOCK *dir = jcr->dir_bsock;
    DEVICE *dev = dcr->dev;
-   VOLUME_CAT_INFO *vol = &dev->VolCatInfo;
-   char ed1[50], ed2[50], ed3[50], ed4[50], ed5[50], ed6[50];
+   VOLUME_CAT_INFO *vol;
+   char ed1[50], ed4[50], ed5[50], ed6[50], ed7[50], ed8[50];
    int InChanger;
    bool ok = false;
    POOL_MEM VolumeName;
@@ -336,6 +350,7 @@ bool dir_update_volume_info(DCR *dcr, bool label, bool update_LastWritten)
       return true;
    }
 
+   vol = &dev->VolCatInfo;
    if (vol->VolCatName[0] == 0) {
       Jmsg0(jcr, M_FATAL, 0, _("NULL Volume name. This shouldn't happen!!!\n"));
       Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
@@ -344,10 +359,10 @@ bool dir_update_volume_info(DCR *dcr, bool label, bool update_LastWritten)
 
    /* Lock during Volume update */
    P(vol_info_mutex);
-   Dmsg1(dbglvl, "Update cat VolBytes=%lld\n", vol->VolCatBytes);
+   dev->Lock_VolCatInfo();
    /* Just labeled or relabeled the tape */
    if (label) {
-      bstrncpy(vol->VolCatStatus, "Append", sizeof(vol->VolCatStatus));
+      dev->setVolCatStatus("Append");
    }
 // if (update_LastWritten) {
       vol->VolLastWritten = time(NULL);
@@ -357,33 +372,42 @@ bool dir_update_volume_info(DCR *dcr, bool label, bool update_LastWritten)
    InChanger = vol->InChanger;
    dir->fsend(Update_media, jcr->Job,
       VolumeName.c_str(), vol->VolCatJobs, vol->VolCatFiles,
-      vol->VolCatBlocks, edit_uint64(vol->VolCatBytes, ed1),
+      vol->VolCatBlocks, edit_uint64(vol->VolCatAmetaBytes, ed1),
       vol->VolCatMounts, vol->VolCatErrors,
-      vol->VolCatWrites, edit_uint64(vol->VolCatMaxBytes, ed2),
-      edit_uint64(vol->VolLastWritten, ed6), 
+      vol->VolCatWrites, edit_uint64(vol->VolCatMaxBytes, ed4),
+      edit_uint64(vol->VolLastWritten, ed5),
       vol->VolCatStatus, vol->Slot, label,
       InChanger,                      /* bool in structure */
-      edit_int64(vol->VolReadTime, ed3),
-      edit_int64(vol->VolWriteTime, ed4),
-      edit_uint64(vol->VolFirstWritten, ed5),
+      edit_int64(vol->VolReadTime, ed6),
+      edit_int64(vol->VolWriteTime, ed7),
+      edit_uint64(vol->VolFirstWritten, ed8),
       vol->VolCatParts);
-    Dmsg1(dbglvl, ">dird %s", dir->msg);
+    Dmsg1(100, ">dird %s", dir->msg);
 
    /* Do not lock device here because it may be locked from label */
    if (!jcr->is_canceled()) {
+      /*
+       * We sent info directly from dev to the Director.
+       *  What the Director sends back is first read into
+       *  the dcr with do_get_volume_info()
+       */
       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"), 
+         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);
+      Dmsg1(100, "get_volume_info() %s", dir->msg);
       /* Update dev Volume info in case something changed (e.g. expired) */
-      dev->VolCatInfo = dcr->VolCatInfo;
+      dcr->VolCatInfo.VolCatAmetaBytes = dev->VolCatInfo.VolCatAmetaBytes;
+      dcr->VolCatInfo.VolCatFiles = dev->VolCatInfo.VolCatFiles;
+      bstrncpy(vol->VolCatStatus, dcr->VolCatInfo.VolCatStatus, sizeof(vol->VolCatStatus));
+      /* ***FIXME***  copy other fields that can change, if any */
       ok = true;
    }
 
 bail_out:
+   dev->Unlock_VolCatInfo();
    V(vol_info_mutex);
    return ok;
 }
@@ -397,22 +421,27 @@ bool dir_create_jobmedia_record(DCR *dcr, bool zero)
    BSOCK *dir = jcr->dir_bsock;
    char ed1[50];
 
+   if (!dcr->WroteVol) {
+      return true;                    /* nothing written to the Volume */
+   }
+
    /* If system job, do not update catalog */
    if (jcr->getJobType() == JT_SYSTEM) {
       return true;
    }
 
    /* Throw out records where FI is zero -- i.e. nothing done */
-   if (!zero && dcr->VolFirstIndex == 0 && 
+   if (!zero && dcr->VolFirstIndex == 0 &&
         (dcr->StartBlock != 0 || dcr->EndBlock != 0)) {
-      Dmsg0(dbglvl, "JobMedia FI=0 StartBlock!=0 record suppressed\n");
+      Dmsg7(dbglvl, "Discard: JobMedia Vol=%s wrote=%d MediaId=%d FI=%d LI=%d StartBlock=%d EndBlock=%d Suppressed\n",
+         dcr->VolumeName, dcr->WroteVol, dcr->VolMediaId,
+         dcr->VolFirstIndex, dcr->VolLastIndex, dcr->StartBlock, dcr->EndBlock);
       return true;
    }
 
-   if (!dcr->WroteVol) {
-      return true;                    /* nothing written to tape */
-   }
-
+   Dmsg7(100, "JobMedia Vol=%s wrote=%d MediaId=%d FI=%d LI=%d StartBlock=%d EndBlock=%d Wrote\n",
+      dcr->VolumeName, dcr->WroteVol, dcr->VolMediaId,
+      dcr->VolFirstIndex, dcr->VolLastIndex, dcr->StartBlock, dcr->EndBlock);
    dcr->WroteVol = false;
    if (zero) {
       /* Send dummy place holder to avoid purging */
@@ -422,8 +451,8 @@ bool dir_create_jobmedia_record(DCR *dcr, bool zero)
       dir->fsend(Create_job_media, jcr->Job,
          dcr->VolFirstIndex, dcr->VolLastIndex,
          dcr->StartFile, dcr->EndFile,
-         dcr->StartBlock, dcr->EndBlock, 
-         dcr->Copy, dcr->Stripe, 
+         dcr->StartBlock, dcr->EndBlock,
+         dcr->Copy, dcr->Stripe,
          edit_uint64(dcr->VolMediaId, ed1));
    }
    Dmsg1(dbglvl, ">dird %s", dir->msg);
@@ -433,7 +462,7 @@ bool dir_create_jobmedia_record(DCR *dcr, bool zero)
            dir->bstrerror());
       return false;
    }
-   Dmsg1(dbglvl, "<dird %s", dir->msg);
+   Dmsg1(210, "<dird %s", dir->msg);
    if (strcmp(dir->msg, OK_create) != 0) {
       Dmsg1(dbglvl, "Bad response from Dir: %s\n", dir->msg);
       Jmsg(jcr, M_FATAL, 0, _("Error creating JobMedia record: %s\n"), dir->msg);
@@ -446,7 +475,7 @@ bool dir_create_jobmedia_record(DCR *dcr, bool zero)
 /**
  * Update File Attribute data
  * We do the following:
- *  1. expand the bsock buffer to be large enough 
+ *  1. expand the bsock buffer to be large enough
  *  2. Write a "header" into the buffer with serialized data
  *    VolSessionId
  *    VolSeesionTime
@@ -482,6 +511,11 @@ bool dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec)
    ser_bytes(rec->data, rec->data_len);
    dir->msglen = ser_length(dir->msg);
    Dmsg1(1800, ">dird %s\n", dir->msg);    /* Attributes */
+   if (rec->maskedStream == STREAM_UNIX_ATTRIBUTES ||
+       rec->maskedStream == STREAM_UNIX_ATTRIBUTES_EX) {
+      Dmsg2(1500, "==== set_data_end FI=%ld %s\n", rec->FileIndex, rec->data);
+      dir->set_data_end(rec->FileIndex);    /* set offset of valid data */
+   }
    return dir->send();
 }
 
@@ -514,7 +548,7 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
    if (job_canceled(jcr)) {
       return false;
    }
-   Dmsg0(dbglvl, "enter dir_ask_sysop_to_create_appendable_volume\n");
+   Dmsg0(400, "enter dir_ask_sysop_to_create_appendable_volume\n");
    ASSERT(dev->blocked());
    for ( ;; ) {
       if (job_canceled(jcr)) {
@@ -528,6 +562,7 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
       if (got_vol) {
          goto get_out;
       } else {
+         dev->clear_wait();
          if (stat == W_TIMEOUT || stat == W_MOUNT) {
             Mmsg(dev->errmsg, _(
 "Job %s is waiting. Cannot find any appendable volumes.\n"
@@ -574,7 +609,7 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
 
 get_out:
    jcr->sendJobStatus(JS_Running);
-   Dmsg0(dbglvl, "leave dir_ask_sysop_to_mount_create_appendable_volume\n");
+   Dmsg0(dbglvl, "leave dir_ask_sysop_to_create_appendable_volume\n");
    return true;
 }
 
@@ -590,18 +625,18 @@ get_out:
  *                  Note, must create dev->errmsg on error return.
  *
  */
-bool dir_ask_sysop_to_mount_volume(DCR *dcr, int mode)
+bool dir_ask_sysop_to_mount_volume(DCR *dcr, bool write_access)
 {
    int stat = W_TIMEOUT;
    DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
 
-   Dmsg0(dbglvl, "enter dir_ask_sysop_to_mount_volume\n");
+   Dmsg0(400, "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;
    }
-   ASSERT(dev->blocked());
+
    for ( ;; ) {
       if (job_canceled(jcr)) {
          Mmsg(dev->errmsg, _("Job %s canceled while waiting for mount on Storage Device %s.\n"),
@@ -609,10 +644,10 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr, int mode)
          return false;
       }
 
-      if (dev->is_dvd()) {   
+      if (dev->is_dvd()) {
          dev->unmount(0);
       }
-      
+
       /*
        * If we are not polling, and the wait timeout or the
        *   user explicitly did a mount, send him the message.
@@ -620,36 +655,37 @@ 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 append Volume \"%s\" or label a new one for:\n"
+         if (write_access) {
+            msg = _("%sPlease 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 read Volume \"%s\" for:\n"
+            msg = _("%sPlease mount read Volume \"%s\" for:\n"
               "    Job:          %s\n"
               "    Storage:      %s\n"
               "    Pool:         %s\n"
               "    Media type:   %s\n");
          }
-         Jmsg(jcr, M_MOUNT, 0, msg, 
+         Jmsg(jcr, M_MOUNT, 0, msg,
+              dev->is_nospace()?_("\n\nWARNING: device is full! Please add more disk space then ...\n\n"):"",
               dcr->VolumeName,
               jcr->Job,
               dev->print_name(),
               dcr->pool_name,
               dcr->media_type);
-         Dmsg3(dbglvl, "Mount \"%s\" on device \"%s\" for Job %s\n",
+         Dmsg3(400, "Mount \"%s\" on device \"%s\" for Job %s\n",
                dcr->VolumeName, dev->print_name(), jcr->Job);
       }
 
       jcr->sendJobStatus(JS_WaitMount);
 
       stat = wait_for_sysop(dcr);          /* wait on device */
-      Dmsg1(dbglvl, "Back from wait_for_sysop stat=%d\n", stat);
+      Dmsg1(100, "Back from wait_for_sysop stat=%d\n", stat);
       if (dev->poll) {
-         Dmsg1(dbglvl, "Poll timeout in mount vol on device %s\n", dev->print_name());
-         Dmsg1(dbglvl, "Blocked=%s\n", dev->print_blocked());
+         Dmsg1(100, "Poll timeout in mount vol on device %s\n", dev->print_name());
+         Dmsg1(100, "Blocked=%s\n", dev->print_blocked());
          goto get_out;
       }
 
@@ -658,7 +694,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(dbglvl, "Gave up waiting on device %s\n", dev->print_name());
+            Dmsg1(400, "Gave up waiting on device %s\n", dev->print_name());
             return false;             /* exceeded maximum waits */
          }
          continue;
@@ -669,12 +705,12 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr, int mode)
          Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
          return false;
       }
-      Dmsg1(dbglvl, "Someone woke me for device %s\n", dev->print_name());
+      Dmsg1(100, "Someone woke me for device %s\n", dev->print_name());
       break;
    }
 
 get_out:
    jcr->sendJobStatus(JS_Running);
-   Dmsg0(dbglvl, "leave dir_ask_sysop_to_mount_volume\n");
+   Dmsg0(100, "leave dir_ask_sysop_to_mount_volume\n");
    return true;
 }
diff --git a/src/stored/authenticate.c b/src/stored/authenticate.c
index 0b7a97f..2289c30 100644
--- a/src/stored/authenticate.c
+++ b/src/stored/authenticate.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Authenticate caller
  *
- *   Kern Sibbald, October 2000
+ *   Written by Kern Sibbald, October 2000
  *
  */
 
@@ -36,11 +24,26 @@
 #include "bacula.h"
 #include "stored.h"
 
+extern STORES *me;               /* our Global resource */
+
+
 const int dbglvl = 50;
 
+/* Version at end of Hello
+ *   prior to 06Aug13 no version
+ *   1 06Aug13 - added comm line compression
+ *   2 13Dec13 - added api version to status command
+ *   3 22Feb14 - Added SD->SD with SD_Calls_Client
+ */
+#define SD_VERSION 3
+#define FD_VERSION 10
+static char hello_sd[]  = "Hello Bacula SD: Start Job %s %d %d\n";
+
+
 static char Dir_sorry[] = "3999 No go\n";
-static char OK_hello[]  = "3000 OK Hello\n";
+static char OK_hello[]  = "3000 OK Hello %d\n";
 
+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
 /*********************************************************************
  *
@@ -55,6 +58,7 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
    int compatible = true;                  /* require md5 compatible DIR */
    bool auth_success = false;
    alist *verify_list = NULL;
+   int dir_version = 0;
 
    if (rcode != R_DIRECTOR) {
       Dmsg1(dbglvl, "I only authenticate Directors, not %d\n", rcode);
@@ -71,18 +75,22 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
    dirname = get_pool_memory(PM_MESSAGE);
    dirname = check_pool_memory_size(dirname, bs->msglen);
 
-   if (sscanf(bs->msg, "Hello Director %127s calling", dirname) != 1) {
+   if (sscanf(bs->msg, "Hello SD: Bacula Director %127s calling %d",
+          dirname, &dir_version) != 2 &&
+       sscanf(bs->msg, "Hello SD: Bacula Director %127s calling",
+          dirname) != 1) {
       bs->msg[100] = 0;
       Dmsg2(dbglvl, "Bad Hello command from Director at %s: %s\n",
             bs->who(), bs->msg);
       Jmsg2(jcr, M_FATAL, 0, _("Bad Hello command from Director at %s: %s\n"),
             bs->who(), bs->msg);
+      free_pool_memory(dirname);
       return 0;
    }
    director = NULL;
    unbash_spaces(dirname);
    foreach_res(director, rcode) {
-      if (strcmp(director->hdr.name, dirname) == 0) {
+      if (strcasecmp(director->hdr.name, dirname) == 0) {
          break;
       }
    }
@@ -119,10 +127,10 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
    if (auth_success) {
       auth_success = cram_md5_respond(bs, director->password, &tls_remote_need, &compatible);
       if (!auth_success) {
-         Dmsg1(dbglvl, "cram_get_auth failed with %s\n", bs->who());
+         Dmsg1(dbglvl, "cram_get_auth respond failed with Director %s\n", bs->who());
       }
    } else {
-      Dmsg1(dbglvl, "cram_auth failed with %s\n", bs->who());
+      Dmsg1(dbglvl, "cram_auth challenge failed with Director %s\n", bs->who());
    }
 
    if (!auth_success) {
@@ -134,7 +142,7 @@ static int authenticate(int rcode, BSOCK *bs, JCR* jcr)
 
    /* Verify that the remote host is willing to meet our TLS requirements */
    if (tls_remote_need < tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {
-      Jmsg0(jcr, M_FATAL, 0, _("Authorization problem: Remote server did not" 
+      Jmsg0(jcr, M_FATAL, 0, _("Authorization problem: Remote server did not"
            " advertize required TLS support.\n"));
       Dmsg2(dbglvl, "remote_need=%d local_need=%d\n", tls_remote_need, tls_local_need);
       auth_success = false;
@@ -186,13 +194,13 @@ int authenticate_director(JCR *jcr)
    BSOCK *dir = jcr->dir_bsock;
 
    if (!authenticate(R_DIRECTOR, dir, jcr)) {
-      dir->fsend("%s", Dir_sorry);
+      dir->fsend(Dir_sorry);
       Dmsg1(dbglvl, "Unable to authenticate Director at %s.\n", dir->who());
       Jmsg1(jcr, M_ERROR, 0, _("Unable to authenticate Director at %s.\n"), dir->who());
       bmicrosleep(5, 0);
       return 0;
    }
-   return dir->fsend("%s", OK_hello);
+   return dir->fsend(OK_hello, SD_VERSION);
 }
 
 int authenticate_filed(JCR *jcr)
@@ -224,15 +232,17 @@ int authenticate_filed(JCR *jcr)
    /* Timeout Hello after 5 mins */
    btimer_t *tid = start_bsock_timer(fd, AUTH_TIMEOUT);
    /* Challenge FD */
+   Dmsg0(050, "Challenge FD\n");
    auth_success = cram_md5_challenge(fd, jcr->sd_auth_key, tls_local_need, compatible);
    if (auth_success) {
        /* Respond to his challenge */
+       Dmsg0(050, "Respond to FD challenge\n");
        auth_success = cram_md5_respond(fd, jcr->sd_auth_key, &tls_remote_need, &compatible);
        if (!auth_success) {
-          Dmsg1(dbglvl, "Respond cram-get-auth failed with %s\n", fd->who());
+          Dmsg1(dbglvl, "Respond cram-get-auth respond failed with FD: %s\n", fd->who());
        }
    } else {
-      Dmsg1(dbglvl, "Challenge cram-auth failed with %s\n", fd->who());
+      Dmsg1(dbglvl, "Challenge cram-auth failed with FD: %s\n", fd->who());
    }
 
    if (!auth_success) {
@@ -245,7 +255,7 @@ int authenticate_filed(JCR *jcr)
 
    /* Verify that the remote host is willing to meet our TLS requirements */
    if (tls_remote_need < tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {
-      Jmsg(jcr, M_FATAL, 0, _("Authorization problem: Remote server did not" 
+      Jmsg(jcr, M_FATAL, 0, _("Authorization problem: Remote server did not"
            " advertize required TLS support.\n"));
       Dmsg2(dbglvl, "remote_need=%d local_need=%d\n", tls_remote_need, tls_local_need);
       auth_success = false;
@@ -281,5 +291,122 @@ auth_fatal:
            fd->who());
    }
    jcr->authenticated = auth_success;
+   if (auth_success && jcr->FDVersion >= 5) {
+      /* Send hello and our version to FD */
+      fd->fsend(OK_hello, SD_VERSION);
+   }
+   return auth_success;
+}
+
+/*
+ * First prove our identity to the Storage daemon, then
+ * make him prove his identity.
+ */
+bool authenticate_storagedaemon(JCR *jcr, char *Job)
+{
+   BSOCK *sd = jcr->store_bsock;
+   int tls_local_need = BNET_TLS_NONE;
+   int tls_remote_need = BNET_TLS_NONE;
+   int compatible = true;
+   bool auth_success = false;
+   int sd_version = 0;
+
+   btimer_t *tid = start_bsock_timer(sd, AUTH_TIMEOUT);
+
+   /* TLS Requirement */
+   if (have_tls && me->tls_enable) {
+      if (me->tls_require) {
+         tls_local_need = BNET_TLS_REQUIRED;
+      } else {
+         tls_local_need = BNET_TLS_OK;
+      }
+   }
+
+   if (me->tls_authenticate) {
+      tls_local_need = BNET_TLS_REQUIRED;
+   }
+
+   if (job_canceled(jcr)) {
+      auth_success = false;     /* force quick exit */
+      goto auth_fatal;
+   }
+
+
+   bash_spaces(Job);
+   sd->fsend(hello_sd, Job, FD_VERSION, SD_VERSION);
+   Dmsg1(100, "Send to SD: %s\n", sd->msg);
+
+   /* Respond to SD challenge */
+   Dmsg0(050, "Respond to SD challenge\n");
+   auth_success = cram_md5_respond(sd, jcr->sd_auth_key, &tls_remote_need, &compatible);
+   if (job_canceled(jcr)) {
+      auth_success = false;     /* force quick exit */
+      goto auth_fatal;
+   }
+   if (!auth_success) {
+      Dmsg1(dbglvl, "cram_respond failed for SD: %s\n", sd->who());
+   } else {
+      /* Now challenge him */
+      Dmsg0(050, "Challenge SD\n");
+      auth_success = cram_md5_challenge(sd, jcr->sd_auth_key, tls_local_need, compatible);
+      if (!auth_success) {
+         Dmsg1(dbglvl, "cram_challenge failed for SD: %s\n", sd->who());
+      }
+   }
+
+   if (!auth_success) {
+      Jmsg(jcr, M_FATAL, 0, _("Authorization key rejected by Storage daemon.\n"
+       "Please see " MANUAL_AUTH_URL " for help.\n"));
+      goto auth_fatal;
+   } else {
+      Dmsg0(050, "Authorization with SD is OK\n");
+   }
+
+   /* Verify that the remote host is willing to meet our TLS requirements */
+   if (tls_remote_need < tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {
+      Jmsg(jcr, M_FATAL, 0, _("Authorization problem: Remote server did not"
+           " advertize required TLS support.\n"));
+      Dmsg2(dbglvl, "remote_need=%d local_need=%d\n", tls_remote_need, tls_local_need);
+      auth_success = false;
+      goto auth_fatal;
+   }
+
+   /* Verify that we are willing to meet the remote host's requirements */
+   if (tls_remote_need > tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {
+      Jmsg(jcr, M_FATAL, 0, _("Authorization problem: Remote server requires TLS.\n"));
+      Dmsg2(dbglvl, "remote_need=%d local_need=%d\n", tls_remote_need, tls_local_need);
+      auth_success = false;
+      goto auth_fatal;
+   }
+
+   if (tls_local_need >= BNET_TLS_OK && tls_remote_need >= BNET_TLS_OK) {
+      /* Engage TLS! Full Speed Ahead! */
+      if (!bnet_tls_client(me->tls_ctx, sd, NULL)) {
+         Jmsg(jcr, M_FATAL, 0, _("TLS negotiation failed.\n"));
+         auth_success = false;
+         goto auth_fatal;
+      }
+      if (me->tls_authenticate) {           /* tls authentication only? */
+         sd->free_tls();                    /* yes, shutdown tls */
+      }
+   }
+   if (sd->recv() <= 0) {
+      auth_success = false;
+      goto auth_fatal;
+   }
+   sscanf(sd->msg, "3000 OK Hello %d", &sd_version);
+
+   /* At this point, we have successfully connected */
+
+auth_fatal:
+   /* Destroy session key */
+   memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key));
+   stop_bsock_timer(tid);
+   /* Single thread all failures to avoid DOS */
+   if (!auth_success) {
+      P(mutex);
+      bmicrosleep(6, 0);
+      V(mutex);
+   }
    return auth_success;
 }
diff --git a/src/stored/autochanger.c b/src/stored/autochanger.c
index 219f579..4f294e6 100644
--- a/src/stored/autochanger.c
+++ b/src/stored/autochanger.c
@@ -1,46 +1,43 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *  Routines for handling the autochanger.
  *
- *   Kern Sibbald, August MMII
- *                            
+ *   Written by Kern Sibbald, August MMII
+ *
  */
 
 #include "bacula.h"                   /* pull in global headers */
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
+static const int dbglvl = 60;
+
 /* Forward referenced functions */
 static void lock_changer(DCR *dcr);
 static void unlock_changer(DCR *dcr);
 static bool unload_other_drive(DCR *dcr, int slot);
 
+bool DCR::is_virtual_autochanger()
+{
+   return device->changer_command &&
+      (device->changer_command[0] == 0 ||
+       strcmp(device->changer_command, "/dev/null") == 0);
+}
+
 /* Init all the autochanger resources found */
 bool init_autochangers()
 {
@@ -52,7 +49,7 @@ bool init_autochangers()
       foreach_alist(device, changer->device) {
          /*
           * If the device does not have a changer name or changer command
-          *   defined, used the one from the Autochanger resource 
+          *   defined, used the one from the Autochanger resource
           */
          if (!device->changer_name && changer->changer_name) {
             device->changer_name = bstrdup(changer->changer_name);
@@ -61,17 +58,17 @@ bool init_autochangers()
             device->changer_command = bstrdup(changer->changer_command);
          }
          if (!device->changer_name) {
-            Jmsg(NULL, M_ERROR, 0, 
+            Jmsg(NULL, M_ERROR, 0,
                _("No Changer Name given for device %s. Cannot continue.\n"),
                device->hdr.name);
             OK = false;
-         }   
+         }
          if (!device->changer_command) {
-            Jmsg(NULL, M_ERROR, 0, 
+            Jmsg(NULL, M_ERROR, 0,
                _("No Changer Command given for device %s. Cannot continue.\n"),
                device->hdr.name);
             OK = false;
-         }   
+         }
       }
    }
    return OK;
@@ -92,7 +89,7 @@ bool init_autochangers()
  *           0 on failure (no changer available)
  *          -1 on error on autochanger
  */
-int autoload_device(DCR *dcr, int writing, BSOCK *dir)
+int autoload_device(DCR *dcr, bool writing, BSOCK *dir)
 {
    JCR *jcr = dcr->jcr;
    DEVICE * volatile dev = dcr->dev;
@@ -102,19 +99,17 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir)
    POOLMEM *changer;
 
    if (!dev->is_autochanger()) {
-      Dmsg1(100, "Device %s is not an autochanger\n", dev->print_name());
+      Dmsg1(dbglvl, "Device %s is not an autochanger\n", dev->print_name());
       return 0;
    }
 
    /* An empty ChangerCommand => virtual disk autochanger */
-   if (dcr->device->changer_command && dcr->device->changer_command[0] == 0) {
-      Dmsg0(100, "ChangerCommand=0, virtual disk changer\n");
+   if (dcr->is_virtual_autochanger()) {
+      Dmsg0(dbglvl, "ChangerCommand=0, virtual disk changer\n");
       return 1;                       /* nothing to load */
    }
 
    slot = dcr->VolCatInfo.InChanger ? dcr->VolCatInfo.Slot : 0;
-   Dmsg3(100, "autoload: slot=%d InChgr=%d Vol=%s\n", dcr->VolCatInfo.Slot,
-         dcr->VolCatInfo.InChanger, dcr->getVolCatName());
    /*
     * Handle autoloaders here.  If we cannot autoload it, we
     *  will return 0 so that the sysop will be asked to load it.
@@ -128,15 +123,18 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir)
          slot = dcr->VolCatInfo.InChanger ? dcr->VolCatInfo.Slot : 0;
       } else {
          slot = 0;
+         dev->clear_wait();
       }
    }
-   Dmsg1(400, "Want changer slot=%d\n", slot);
+   Dmsg4(dbglvl, "Want slot=%d drive=%d InChgr=%d Vol=%s\n",
+         dcr->VolCatInfo.Slot, drive,
+         dcr->VolCatInfo.InChanger, dcr->getVolCatName());
 
    changer = get_pool_memory(PM_FNAME);
    if (slot <= 0) {
       /* Suppress info when polling */
       if (!dev->poll) {
-         Jmsg(jcr, M_INFO, 0, _("No slot defined in catalog (slot=%d) for Volume \"%s\" on %s.\n"), 
+         Jmsg(jcr, M_INFO, 0, _("No slot defined in catalog (slot=%d) for Volume \"%s\" on %s.\n"),
               slot, dcr->getVolCatName(), dev->print_name());
          Jmsg(jcr, M_INFO, 0, _("Cartridge change or \"update slots\" may be required.\n"));
       }
@@ -157,20 +155,23 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir)
       rtn_stat = 0;
   } else {
       /* Attempt to load the Volume */
-
       uint32_t timeout = dcr->device->max_changer_wait;
       int loaded, status;
 
       loaded = get_autochanger_loaded_slot(dcr);
+      if (loaded < 0) {   /* Autochanger error, try again */
+         loaded = get_autochanger_loaded_slot(dcr);
+      }
+      Dmsg2(dbglvl, "Found loaded=%d drive=%d\n", loaded, drive);
 
-      if (loaded != slot) {
+      if (loaded <= 0 || loaded != slot) {
          POOL_MEM results(PM_MESSAGE);
 
          /* Unload anything in our drive */
          if (!unload_autochanger(dcr, loaded)) {
             goto bail_out;
          }
-            
+
          /* Make sure desired slot is unloaded */
          if (!unload_other_drive(dcr, slot)) {
             goto bail_out;
@@ -180,19 +181,19 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir)
           * Load the desired cassette
           */
          lock_changer(dcr);
-         Dmsg2(100, "Doing changer load slot %d %s\n", slot, dev->print_name());
+         Dmsg2(dbglvl, "Doing changer load slot %d %s\n", slot, dev->print_name());
          Jmsg(jcr, M_INFO, 0,
               _("3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"),
               slot, drive);
          dcr->VolCatInfo.Slot = slot;    /* slot to be loaded */
          changer = edit_device_codes(dcr, changer, dcr->device->changer_command, "load");
          dev->close();
-         Dmsg1(200, "Run program=%s\n", changer);
+         Dmsg1(dbglvl, "Run program=%s\n", changer);
          status = run_program_full_output(changer, timeout, results.addr());
          if (status == 0) {
             Jmsg(jcr, M_INFO, 0, _("3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"),
                     slot, drive);
-            Dmsg2(100, "load slot %d, drive %d, status is OK.\n", slot, drive);
+            Dmsg2(dbglvl, "OK: load slot %d, drive %d.\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 */
@@ -201,21 +202,20 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir)
          } else {
             berrno be;
             be.set_errno(status);
-            Dmsg3(100, "load slot %d, drive %d, bad stats=%s.\n", slot, drive,
-               be.bstrerror());
+            Dmsg4(dbglvl, "Error: load slot %d, drive %d, bad stats=%s.\nResults=%s\n", slot, drive,
+               be.bstrerror(), results.c_str());
             Jmsg(jcr, M_FATAL, 0, _("3992 Bad autochanger \"load slot %d, drive %d\": "
                  "ERR=%s.\nResults=%s\n"),
                     slot, drive, be.bstrerror(), results.c_str());
             rtn_stat = -1;            /* hard error */
-            dev->set_slot(-1);        /* mark unknown */
+            dev->clear_slot();        /* mark unknown */
          }
-         Dmsg2(100, "load slot %d status=%d\n", slot, status);
          unlock_changer(dcr);
       } else {
          status = 0;                  /* we got what we want */
          dev->set_slot(slot);         /* set currently loaded slot */
       }
-      Dmsg1(100, "After changer, status=%d\n", status);
+      Dmsg1(dbglvl, "After changer, status=%d\n", status);
       if (status == 0) {              /* did we succeed? */
          rtn_stat = 1;                /* tape loaded by changer */
       }
@@ -251,12 +251,14 @@ int get_autochanger_loaded_slot(DCR *dcr)
    if (!dcr->device->changer_command) {
       return -1;
    }
-   if (dev->get_slot() > 0) {
+
+   if (dev->get_slot() > 0 && dev->has_cap(CAP_ALWAYSOPEN)) {
+      Dmsg1(dbglvl, "Return cached slot=%d\n", dev->get_slot());
       return dev->get_slot();
    }
 
    /* Virtual disk autochanger */
-   if (dcr->device->changer_command[0] == 0) {
+   if (dcr->is_virtual_autochanger()) {
       return 1;
    }
 
@@ -264,26 +266,26 @@ int get_autochanger_loaded_slot(DCR *dcr)
    changer = get_pool_memory(PM_FNAME);
    lock_changer(dcr);
    /* Suppress info when polling */
-   if (!dev->poll && debug_level >= 1) {
+   if (!dev->poll && chk_dbglvl(1)) {
       Jmsg(jcr, M_INFO, 0, _("3301 Issuing autochanger \"loaded? drive %d\" command.\n"),
            drive);
    }
    changer = edit_device_codes(dcr, changer, dcr->device->changer_command, "loaded");
-   Dmsg1(100, "Run program=%s\n", changer);
+   Dmsg1(dbglvl, "Run program=%s\n", changer);
    status = run_program_full_output(changer, timeout, results.addr());
-   Dmsg3(100, "run_prog: %s stat=%d result=%s", changer, status, results.c_str());
+   Dmsg3(dbglvl, "run_prog: %s stat=%d result=%s", changer, status, results.c_str());
    if (status == 0) {
       loaded = str_to_int32(results.c_str());
       if (loaded > 0) {
          /* Suppress info when polling */
-         if (!dev->poll && debug_level >= 1) {
+         if (!dev->poll && chk_dbglvl(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 && debug_level >= 1) {
+         if (!dev->poll && chk_dbglvl(1)) {
             Jmsg(jcr, M_INFO, 0, _("3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"),
                  drive);
          }
@@ -298,7 +300,10 @@ int get_autochanger_loaded_slot(DCR *dcr)
       be.set_errno(status);
       Jmsg(jcr, M_INFO, 0, _("3991 Bad autochanger \"loaded? drive %d\" command: "
            "ERR=%s.\nResults=%s\n"), drive, be.bstrerror(), results.c_str());
+      Dmsg3(dbglvl, "Error: autochanger loaded? drive %d "
+           "ERR=%s.\nResults=%s\n", drive, be.bstrerror(), results.c_str());
       loaded = -1;              /* force unload */
+      dev->clear_slot();        /* slot unknown */
    }
    unlock_changer(dcr);
    free_pool_memory(changer);
@@ -310,7 +315,7 @@ static void lock_changer(DCR *dcr)
    AUTOCHANGER *changer_res = dcr->device->changer_res;
    if (changer_res) {
       int errstat;
-      Dmsg1(200, "Locking changer %s\n", changer_res->hdr.name);
+      Dmsg1(dbglvl, "Locking changer %s\n", changer_res->hdr.name);
       if ((errstat=rwl_writelock(&changer_res->changer_lock)) != 0) {
          berrno be;
          Jmsg(dcr->jcr, M_ERROR_TERM, 0, _("Lock failure on autochanger. ERR=%s\n"),
@@ -324,7 +329,7 @@ static void unlock_changer(DCR *dcr)
    AUTOCHANGER *changer_res = dcr->device->changer_res;
    if (changer_res) {
       int errstat;
-      Dmsg1(200, "Unlocking changer %s\n", changer_res->hdr.name);
+      Dmsg1(dbglvl, "Unlocking changer %s\n", changer_res->hdr.name);
       if ((errstat=rwl_writeunlock(&changer_res->changer_lock)) != 0) {
          berrno be;
          Jmsg(dcr->jcr, M_ERROR_TERM, 0, _("Unlock failure on autochanger. ERR=%s\n"),
@@ -357,7 +362,7 @@ bool unload_autochanger(DCR *dcr, int loaded)
    }
 
    /* Virtual disk autochanger */
-   if (dcr->device->changer_command[0] == 0) {
+   if (dcr->is_virtual_autochanger()) {
       dev->clear_unload();
       return true;
    }
@@ -365,6 +370,9 @@ bool unload_autochanger(DCR *dcr, int loaded)
    lock_changer(dcr);
    if (loaded < 0) {
       loaded = get_autochanger_loaded_slot(dcr);
+      if (loaded < 0) {   /* try again, maybe autochanger error */
+         loaded = get_autochanger_loaded_slot(dcr);
+      }
    }
 
    if (loaded > 0) {
@@ -375,10 +383,10 @@ bool unload_autochanger(DCR *dcr, int loaded)
            loaded, dev->drive_index);
       slot = dcr->VolCatInfo.Slot;
       dcr->VolCatInfo.Slot = loaded;
-      changer = edit_device_codes(dcr, changer, 
+      changer = edit_device_codes(dcr, changer,
                    dcr->device->changer_command, "unload");
       dev->close();
-      Dmsg1(100, "Run program=%s\n", changer);
+      Dmsg1(dbglvl, "Run program=%s\n", changer);
       int stat = run_program_full_output(changer, timeout, results.addr());
       dcr->VolCatInfo.Slot = slot;
       if (stat != 0) {
@@ -387,22 +395,21 @@ bool unload_autochanger(DCR *dcr, int loaded)
          Jmsg(jcr, M_INFO, 0, _("3995 Bad autochanger \"unload slot %d, drive %d\": "
               "ERR=%s\nResults=%s\n"),
                  loaded, dev->drive_index, be.bstrerror(), results.c_str());
+         Dmsg4(dbglvl, "Error: load slot %d, drive %d, bad stats=%s.\nResults=%s\n",
+               loaded, dev->drive_index,
+               be.bstrerror(), results.c_str());
          ok = false;
          dev->clear_slot();        /* unknown */
       } else {
-         dev->set_slot(0);         /* nothing loaded */
+         dev->set_slot(0);         /* unload is OK, mark nothing loaded */
+         dev->clear_unload();
       }
-
       free_pool_memory(changer);
    }
    unlock_changer(dcr);
 
-   if (loaded > 0) {           /* free_volume outside from changer lock */
-      free_volume(dev);        /* Free any volume associated with this drive */
-   }
-
    if (ok) {
-      dev->clear_unload();
+      free_volume(dev);
    }
    return ok;
 }
@@ -418,6 +425,8 @@ static bool unload_other_drive(DCR *dcr, int slot)
    AUTOCHANGER *changer = dcr->dev->device->changer_res;
    DEVRES *device;
    int retries = 0;                /* wait for device retries */
+   int loaded;
+   int i;
 
    if (!changer) {
       return false;
@@ -431,40 +440,56 @@ static bool unload_other_drive(DCR *dcr, int slot)
     *   we want in other drives, and if possible, unload
     *   it.
     */
-   Dmsg0(100, "Wiffle through devices looking for slot\n");
-   foreach_alist(device, changer->device) {
+   Dmsg1(dbglvl, "Begin wiffle through devices looking for slot=%d\n", slot);
+   /*
+    *  foreach_alist(device, changer->device) {
+    *
+    * The above fails to loop through all devices. It is
+    * probably a compiler bug.
+    */
+   for (i=0; i < changer->device->size(); i++) {
+      device = (DEVRES *)changer->device->get(i);
       dev = device->dev;
       if (!dev) {
+         Dmsg0(dbglvl, "No dev attached to device\n");
          continue;
       }
+
       dev_save = dcr->dev;
       dcr->set_dev(dev);
-      if (dev->get_slot() <= 0 && get_autochanger_loaded_slot(dcr) <= 0) {
-         dcr->set_dev(dev_save);
-         continue;
-      }
+      loaded = get_autochanger_loaded_slot(dcr);
       dcr->set_dev(dev_save);
-      if (dev->get_slot() == slot) {
-         found = true;
-         break;
+
+      if (loaded > 0) {
+         Dmsg4(dbglvl, "Want slot=%d, drive=%d loaded=%d dev=%s\n",
+            slot, dev->drive_index, loaded, dev->print_name());
+         if (loaded == slot) {
+            found = true;
+            break;
+         }
+      } else {
+         Dmsg4(dbglvl, "After slot=%d drive=%d loaded=%d dev=%s\n",
+            slot, dev->drive_index, loaded, dev->print_name());
       }
    }
+   Dmsg1(dbglvl, "End wiffle through devices looking for slot=%d\n", slot);
    if (!found) {
-      Dmsg1(100, "Slot=%d not found in another device\n", slot);
+      Dmsg1(dbglvl, "Slot=%d not found in another device\n", slot);
       return true;
    } else {
-      Dmsg1(100, "Slot=%d found in another device\n", slot);
-   }   
+      Dmsg3(dbglvl, "Slot=%d drive=%d found in dev=%s\n", slot, dev->drive_index, dev->print_name());
+   }
 
    /* The Volume we want is on another device. */
    if (dev->is_busy()) {
-      Dmsg4(100, "Vol %s for dev=%s in use dev=%s slot=%d\n",
+      Dmsg4(dbglvl, "Vol %s for dev=%s in use dev=%s slot=%d\n",
            dcr->VolumeName, dcr->dev->print_name(),
            dev->print_name(), slot);
-   }   
+   }
    for (int i=0; i < 3; i++) {
       if (dev->is_busy()) {
-         wait_for_device(dcr->jcr, retries);
+         Dmsg0(40, "Device is busy. Calling wait_for_device()\n");
+         wait_for_device(dcr, retries);
          continue;
       }
       break;
@@ -472,9 +497,9 @@ static bool unload_other_drive(DCR *dcr, int slot)
    if (dev->is_busy()) {
       Jmsg(dcr->jcr, M_WARNING, 0, _("Volume \"%s\" wanted on %s is in use by device %s\n"),
            dcr->VolumeName, dcr->dev->print_name(), dev->print_name());
-      Dmsg4(100, "Vol %s for dev=%s is busy dev=%s slot=%d\n",
+      Dmsg4(dbglvl, "Vol %s for dev=%s is busy dev=%s slot=%d\n",
            dcr->VolumeName, dcr->dev->print_name(), dev->print_name(), dev->get_slot());
-      Dmsg2(100, "num_writ=%d reserv=%d\n", dev->num_writers, dev->num_reserved());
+      Dmsg2(dbglvl, "num_writ=%d reserv=%d\n", dev->num_writers, dev->num_reserved());
       volume_unused(dcr);
       return false;
    }
@@ -500,21 +525,21 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
    save_dev = dcr->dev;               /* save dcr device */
    dcr->set_dev(dev);                 /* temporarily point dcr at other device */
 
-   /* Update slot if not set or not always_open */
-   if (dev->get_slot() <= 0 || !dev->has_cap(CAP_ALWAYSOPEN)) {
-      get_autochanger_loaded_slot(dcr);
-   }
+   get_autochanger_loaded_slot(dcr);
 
    /* Fail if we have no slot to unload */
    if (dev->get_slot() <= 0) {
+      if (dev->get_slot() < 0) {
+         Dmsg1(dbglvl, "Cannot unload, slot not defined. dev=%s\n",
+            dev->print_name());
+      }
       dcr->set_dev(save_dev);
       return false;
    }
-   
+
    save_slot = dcr->VolCatInfo.Slot;
    dcr->VolCatInfo.Slot = dev->get_slot();
 
-//   dev->dlock();
 
    POOLMEM *changer_cmd = get_pool_memory(PM_FNAME);
    POOL_MEM results(PM_MESSAGE);
@@ -523,40 +548,38 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
         _("3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"),
         dev->get_slot(), dev->drive_index);
 
-   Dmsg2(100, "Issuing autochanger \"unload slot %d, drive %d\" command.\n",
+   Dmsg2(dbglvl, "Issuing autochanger \"unload slot %d, drive %d\" command.\n",
         dev->get_slot(), dev->drive_index);
 
-   changer_cmd = edit_device_codes(dcr, changer_cmd, 
+   changer_cmd = edit_device_codes(dcr, changer_cmd,
                 dcr->device->changer_command, "unload");
    dev->close();
-   Dmsg2(200, "close dev=%s reserve=%d\n", dev->print_name(), 
+   Dmsg2(dbglvl, "close dev=%s reserve=%d\n", dev->print_name(),
       dev->num_reserved());
-   Dmsg1(100, "Run program=%s\n", changer_cmd);
+   Dmsg1(dbglvl, "Run program=%s\n", changer_cmd);
    int stat = run_program_full_output(changer_cmd, timeout, results.addr());
    dcr->VolCatInfo.Slot = save_slot;
-   dcr->set_dev(save_dev);
    if (stat != 0) {
       berrno be;
       be.set_errno(stat);
       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",
-              dev->get_slot(), dev->drive_index, be.bstrerror());
+      Dmsg4(dbglvl, "Error: load slot %d, drive %d, bad stats=%s.\nResults=%s\n",
+            dev->get_slot(), dev->drive_index,
+            be.bstrerror(), results.c_str());
       ok = false;
       dev->clear_slot();          /* unknown */
    } else {
-      Dmsg2(100, "Slot %d unloaded %s\n", dev->get_slot(), dev->print_name());
-      dev->set_slot(0);           /* nothing loaded */
-   }
-   if (ok) {
+      Dmsg2(dbglvl, "Slot %d unloaded %s\n", dev->get_slot(), dev->print_name());
+      dev->set_slot(0);           /* unload OK, mark nothing loaded */
       dev->clear_unload();
    }
    unlock_changer(dcr);
 
-//   dev->dunlock();
-
-   free_volume(dev);               /* Free any volume associated with this drive */
+   if (ok) {
+      free_volume(dev);
+   }
+   dcr->set_dev(save_dev);
    free_pool_memory(changer_cmd);
    return ok;
 }
@@ -568,7 +591,7 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
  *   with their barcodes.
  *   We assume that it is always the Console that is calling us.
  */
-bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)  
+bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
 {
    DEVICE *dev = dcr->dev;
    uint32_t timeout = dcr->device->max_changer_wait;
@@ -579,7 +602,7 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
 
    if (!dev->is_autochanger() || !dcr->device->changer_name ||
        !dcr->device->changer_command) {
-      if (strcmp(cmd, "drives") == 0) {
+      if (strcasecmp(cmd, "drives") == 0) {
          dir->fsend("drives=1\n");
       }
       dir->fsend(_("3993 Device %s not an autochanger device.\n"),
@@ -587,19 +610,19 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
       return false;
    }
 
-   if (strcmp(cmd, "drives") == 0) {
+   if (strcasecmp(cmd, "drives") == 0) {
       AUTOCHANGER *changer_res = dcr->device->changer_res;
       int drives = 1;
       if (changer_res) {
          drives = changer_res->device->size();
       }
       dir->fsend("drives=%d\n", drives);
-      Dmsg1(100, "drives=%d\n", drives);
+      Dmsg1(dbglvl, "drives=%d\n", drives);
       return true;
    }
 
    /* If listing, reprobe changer */
-   if (bstrcmp(cmd, "list") || bstrcmp(cmd, "listall")) {
+   if (bstrcasecmp(cmd, "list") || bstrcasecmp(cmd, "listall")) {
       dcr->dev->set_slot(0);
       get_autochanger_loaded_slot(dcr);
    }
@@ -607,7 +630,7 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
    changer = get_pool_memory(PM_FNAME);
    lock_changer(dcr);
    /* Now issue the command */
-   changer = edit_device_codes(dcr, changer, 
+   changer = edit_device_codes(dcr, changer,
                  dcr->device->changer_command, cmd);
    dir->fsend(_("3306 Issuing autochanger \"%s\" command.\n"), cmd);
    bpipe = open_bpipe(changer, timeout, "r");
@@ -615,14 +638,14 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
       dir->fsend(_("3996 Open bpipe failed.\n"));
       goto bail_out;            /* TODO: check if we need to return false */
    }
-   if (bstrcmp(cmd, "list") || bstrcmp(cmd, "listall")) {
+   if (bstrcasecmp(cmd, "list") || bstrcasecmp(cmd, "listall")) {
       /* Get output from changer */
       while (fgets(dir->msg, len, bpipe->rfd)) {
          dir->msglen = strlen(dir->msg);
-         Dmsg1(100, "<stored: %s\n", dir->msg);
-         bnet_send(dir);
+         Dmsg1(dbglvl, "<stored: %s\n", dir->msg);
+         dir->send();
       }
-   } else if (strcmp(cmd, "slots") == 0 ) {
+   } else if (strcasecmp(cmd, "slots") == 0 ) {
       char buf[100], *p;
       /* For slots command, read a single line */
       buf[0] = 0;
@@ -632,9 +655,9 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
       for (p=buf; B_ISSPACE(*p); p++)
         { }
       dir->fsend("slots=%s", p);
-      Dmsg1(100, "<stored: %s", dir->msg);
-   } 
-                 
+      Dmsg1(dbglvl, "<stored: %s", dir->msg);
+   }
+
    stat = close_bpipe(bpipe);
    if (stat != 0) {
       berrno be;
@@ -657,6 +680,7 @@ bail_out:
  *  %d = changer drive index
  *  %f = Client's name
  *  %j = Job name
+ *  %l = archive control channel name
  *  %o = command
  *  %s = Slot base 0
  *  %S = Slot base 1
@@ -688,6 +712,9 @@ char *edit_device_codes(DCR *dcr, char *omsg, const char *imsg, const char *cmd)
          case 'c':
             str = NPRT(dcr->device->changer_name);
             break;
+         case 'l':
+            str = NPRT(dcr->device->control_name);
+            break;
          case 'd':
             sprintf(add, "%d", dcr->dev->drive_index);
             str = add;
diff --git a/src/stored/bacula-sd.conf.in b/src/stored/bacula-sd.conf.in
index 7537cff..73d5669 100644
--- a/src/stored/bacula-sd.conf.in
+++ b/src/stored/bacula-sd.conf.in
@@ -5,14 +5,14 @@
 #
 # You may need to change the name of your tape drive
 #   on the "Archive Device" directive in the Device
-#   resource.  If you change the Name and/or the 
+#   resource.  If you change the Name and/or the
 #   "Media Type" in the Device resource, please ensure
 #   that dird.conf has corresponding changes.
 #
 
 Storage {                             # definition of myself
   Name = @basename at -sd
-  SDPort = @sd_port@                  # Director's port      
+  SDPort = @sd_port@                  # Director's port
   WorkingDirectory = "@working_dir@"
   Pid Directory = "@piddir@"
   Maximum Concurrent Jobs = 20
@@ -39,27 +39,84 @@ Director {
 #
 # Note, for a list of additional Device templates please
 #  see the directory <bacula-source>/examples/devices
-# Or follow the following link:
-#  http://bacula.svn.sourceforge.net/viewvc/bacula/trunk/bacula/examples/devices/
 #
 
 #
 # Devices supported by this Storage daemon
 # To connect, the Director's bacula-dir.conf must have the
-#  same Name and MediaType. 
+#  same Name and MediaType.
 #
 
+#
+# Define a Virtual autochanger
+#
+Autochanger {
+  Name = FileChgr1
+  Device = FileChgr1-Dev1, FileChgr1-Dev2
+  Changer Command = ""
+  Changer Device = /dev/null
+}
+
+Device {
+  Name = FileChgr1-Dev1
+  Media Type = File1
+  Archive Device = @archivedir@
+  LabelMedia = yes;                   # lets Bacula label unlabeled media
+  Random Access = Yes;
+  AutomaticMount = yes;               # when device opened, read it
+  RemovableMedia = no;
+  AlwaysOpen = no;
+  Maximum Concurrent Jobs = 5
+}
+
+Device {
+  Name = FileChgr1-Dev2
+  Media Type = File1
+  Archive Device = @archivedir@
+  LabelMedia = yes;                   # lets Bacula label unlabeled media
+  Random Access = Yes;
+  AutomaticMount = yes;               # when device opened, read it
+  RemovableMedia = no;
+  AlwaysOpen = no;
+  Maximum Concurrent Jobs = 5
+}
+
+#
+# Define a second Virtual autochanger
+#
+Autochanger {
+  Name = FileChgr2
+  Device = FileChgr2-Dev1, FileChgr2-Dev2
+  Changer Command = ""
+  Changer Device = /dev/null
+}
+
+Device {
+  Name = FileChgr2-Dev1
+  Media Type = File2
+  Archive Device = @archivedir@
+  LabelMedia = yes;                   # lets Bacula label unlabeled media
+  Random Access = Yes;
+  AutomaticMount = yes;               # when device opened, read it
+  RemovableMedia = no;
+  AlwaysOpen = no;
+  Maximum Concurrent Jobs = 5
+}
+
 Device {
-  Name = FileStorage
-  Media Type = File
+  Name = FileChgr2-Dev2
+  Media Type = File2
   Archive Device = @archivedir@
   LabelMedia = yes;                   # lets Bacula label unlabeled media
   Random Access = Yes;
   AutomaticMount = yes;               # when device opened, read it
   RemovableMedia = no;
   AlwaysOpen = no;
+  Maximum Concurrent Jobs = 5
 }
 
+
+
 #
 # An autochanger device with two drives
 #
@@ -84,13 +141,13 @@ Device {
 #  #
 #  # Enable the Alert command only if you have the mtx package loaded
 #  # Note, apparently on some systems, tapeinfo resets the SCSI controller
-#  #  thus if you turn this on, make sure it does not reset your SCSI 
+#  #  thus if you turn this on, make sure it does not reset your SCSI
 #  #  controller.  I have never had any problems, and smartctl does
 #  #  not seem to cause such problems.
 #  #
 #  Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
-#  If you have smartctl, enable this, it has more info than tapeinfo 
-#  Alert Command = "sh -c 'smartctl -H -l error %c'"  
+#  If you have smartctl, enable this, it has more info than tapeinfo
+#  Alert Command = "sh -c 'smartctl -H -l error %c'"
 #}
 
 #Device {
@@ -105,8 +162,8 @@ Device {
 #  AutoChanger = yes
 #  # Enable the Alert command only if you have the mtx package loaded
 #  Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
-#  If you have smartctl, enable this, it has more info than tapeinfo 
-#  Alert Command = "sh -c 'smartctl -H -l error %c'"  
+#  If you have smartctl, enable this, it has more info than tapeinfo
+#  Alert Command = "sh -c 'smartctl -H -l error %c'"
 #}
 
 #
@@ -126,8 +183,8 @@ Device {
 ## AutoChanger = yes
 #  # Enable the Alert command only if you have the mtx package loaded
 ## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
-## If you have smartctl, enable this, it has more info than tapeinfo 
-## Alert Command = "sh -c 'smartctl -H -l error %c'"  
+## If you have smartctl, enable this, it has more info than tapeinfo
+## Alert Command = "sh -c 'smartctl -H -l error %c'"
 #}
 
 #
@@ -147,8 +204,8 @@ Device {
 ## AutoChanger = yes
 #  # Enable the Alert command only if you have the mtx package loaded
 ## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
-## If you have smartctl, enable this, it has more info than tapeinfo 
-## Alert Command = "sh -c 'smartctl -H -l error %c'"  
+## If you have smartctl, enable this, it has more info than tapeinfo
+## Alert Command = "sh -c 'smartctl -H -l error %c'"
 #}
 
 #
@@ -168,18 +225,38 @@ Device {
 ## AutoChanger = yes
 #  # Enable the Alert command only if you have the mtx package loaded
 ## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
-## If you have smartctl, enable this, it has more info than tapeinfo 
-## Alert Command = "sh -c 'smartctl -H -l error %c'"  
+## If you have smartctl, enable this, it has more info than tapeinfo
+## Alert Command = "sh -c 'smartctl -H -l error %c'"
 #}
 
-
-
+#
+# An HP-UX tape drive
+#
+#Device {
+#  Name = Drive-1                      #
+#  Drive Index = 0
+#  Media Type = DLT-8000
+#  Archive Device = /dev/rmt/1mnb
+#  AutomaticMount = yes;               # when device opened, read it
+#  AlwaysOpen = yes;
+#  RemovableMedia = yes;
+#  RandomAccess = no;
+#  AutoChanger = no
+#  Two EOF = yes
+#  Hardware End of Medium = no
+#  Fast Forward Space File = no
+#  #
+#  # Enable the Alert command only if you have the mtx package loaded
+#  Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
+#  If you have smartctl, enable this, it has more info than tapeinfo
+#  Alert Command = "sh -c 'smartctl -H -l error %c'"
+#}
 
 #
 # A FreeBSD tape drive
 #
 #Device {
-#  Name = DDS-4 
+#  Name = DDS-4
 #  Description = "DDS-4 for FreeBSD"
 #  Media Type = DDS-4
 #  Archive Device = /dev/nsa1
@@ -191,12 +268,12 @@ Device {
 #  Backward Space Record = no
 #  Fast Forward Space File = no
 #  TWO EOF = yes
-#  If you have smartctl, enable this, it has more info than tapeinfo 
-#  Alert Command = "sh -c 'smartctl -H -l error %c'"  
+#  If you have smartctl, enable this, it has more info than tapeinfo
+#  Alert Command = "sh -c 'smartctl -H -l error %c'"
 #}
 
-# 
-# Send all messages to the Director, 
+#
+# Send all messages to the Director,
 # mount messages also are sent to the email address
 #
 Messages {
diff --git a/src/stored/bcopy.c b/src/stored/bcopy.c
index 8db3259..ce1144e 100644
--- a/src/stored/bcopy.c
+++ b/src/stored/bcopy.c
@@ -1,43 +1,29 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *  Program to copy a Bacula from one volume to another.
  *
- *   Kern E. Sibbald, October 2002
+ *   Written by Kern E. Sibbald, October 2002
  *
  */
 
 #include "bacula.h"
 #include "stored.h"
 
-/* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) { return 1; }
 extern bool parse_sd_config(CONFIG *config, const char *configfile, int exit_code);
 
 /* Forward referenced functions */
@@ -60,6 +46,8 @@ static SESSION_LABEL sessrec;
 
 static CONFIG *config;
 #define CONFIG_FILE "bacula-sd.conf"
+
+void *start_heap;
 char *configfile = NULL;
 STORES *me = NULL;                    /* our Global resource */
 bool forge_on = false;                /* proceed inspite of I/O errors */
@@ -172,10 +160,12 @@ int main (int argc, char *argv[])
 
    config = new_config_parser();
    parse_sd_config(config, configfile, M_ERROR_TERM);
+   setup_me();
+   load_sd_plugins(me->plugin_directory);
 
    /* Setup and acquire input device for reading */
    Dmsg0(100, "About to setup input jcr\n");
-   in_jcr = setup_jcr("bcopy", argv[0], bsr, iVolumeName, 1); /* read device */
+   in_jcr = setup_jcr("bcopy", argv[0], bsr, iVolumeName, SD_READ); /* read device */
    if (!in_jcr) {
       exit(1);
    }
@@ -187,7 +177,7 @@ int main (int argc, char *argv[])
 
    /* Setup output device for writing */
    Dmsg0(100, "About to setup output jcr\n");
-   out_jcr = setup_jcr("bcopy", argv[1], bsr, oVolumeName, 0); /* no acquire */
+   out_jcr = setup_jcr("bcopy", argv[1], bsr, oVolumeName, SD_APPEND); /* no acquire */
    if (!out_jcr) {
       exit(1);
    }
@@ -367,7 +357,7 @@ bool    dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec) { return 1;}
 bool    dir_send_job_status(JCR *jcr) {return 1;}
 
 
-bool dir_ask_sysop_to_mount_volume(DCR *dcr, int /*mode*/)
+bool dir_ask_sysop_to_mount_volume(DCR *dcr, bool /*writing*/)
 {
    DEVICE *dev = dcr->dev;
    fprintf(stderr, _("Mount Volume \"%s\" on device %s and press return when ready: "),
@@ -381,7 +371,9 @@ bool dir_get_volume_info(DCR *dcr, enum get_vol_info_rw  writing)
 {
    Dmsg0(100, "Fake dir_get_volume_info\n");
    dcr->setVolCatName(dcr->VolumeName);
+#ifdef BUILD_DVD
    dcr->VolCatInfo.VolCatParts = find_num_dvd_parts(dcr);
+#endif
    Dmsg2(500, "Vol=%s num_parts=%d\n", dcr->getVolCatName(), dcr->VolCatInfo.VolCatParts);
    return 1;
 }
diff --git a/src/stored/bextract.c b/src/stored/bextract.c
index e3f30fa..5e2664a 100644
--- a/src/stored/bextract.c
+++ b/src/stored/bextract.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -38,6 +26,11 @@
 #include "ch.h"
 #include "findlib/find.h"
 
+#ifdef HAVE_LZO
+#include <lzo/lzoconf.h>
+#include <lzo/lzo1x.h>
+#endif
+
 extern bool parse_sd_config(CONFIG *config, const char *configfile, int exit_code);
 
 static void do_extract(char *fname);
@@ -67,6 +60,8 @@ static uint64_t fileAddr = 0;         /* file write address */
 
 static CONFIG *config;
 #define CONFIG_FILE "bacula-sd.conf"
+
+void *start_heap;
 char *configfile = NULL;
 STORES *me = NULL;                    /* our Global resource */
 bool forge_on = false;
@@ -203,6 +198,8 @@ int main (int argc, char *argv[])
 
    config = new_config_parser();
    parse_sd_config(config, configfile, M_ERROR_TERM);
+   setup_me();
+   load_sd_plugins(me->plugin_directory);
 
    if (!got_inc) {                            /* If no include file, */
       add_fname_to_include_list(ff, 0, "/");  /*   include everything */
@@ -233,7 +230,7 @@ static void do_extract(char *devname)
 
    enable_backup_privileges(NULL, 1);
 
-   jcr = setup_jcr("bextract", devname, bsr, VolumeName, 1); /* acquire for read */
+   jcr = setup_jcr("bextract", devname, bsr, VolumeName, SD_READ);
    if (!jcr) {
       exit(1);
    }
@@ -606,7 +603,7 @@ bool    dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec) { return 1;}
 bool    dir_send_job_status(JCR *jcr) {return 1;}
 
 
-bool dir_ask_sysop_to_mount_volume(DCR *dcr, int /*mode*/)
+bool dir_ask_sysop_to_mount_volume(DCR *dcr, bool /*writing*/)
 {
    DEVICE *dev = dcr->dev;
    fprintf(stderr, _("Mount Volume \"%s\" on device %s and press return when ready: "),
@@ -620,7 +617,9 @@ bool dir_get_volume_info(DCR *dcr, enum get_vol_info_rw  writing)
 {
    Dmsg0(100, "Fake dir_get_volume_info\n");
    dcr->setVolCatName(dcr->VolumeName);
+#ifdef BUILD_DVD
    dcr->VolCatInfo.VolCatParts = find_num_dvd_parts(dcr);
+#endif
    Dmsg2(500, "Vol=%s num_parts=%d\n", dcr->getVolCatName(), dcr->VolCatInfo.VolCatParts);
    return 1;
 }
diff --git a/src/stored/block.c b/src/stored/block.c
index e731320..3cf0dbb 100644
--- a/src/stored/block.c
+++ b/src/stored/block.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -51,299 +39,12 @@ 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);
-static void reread_last_block(DCR *dcr);
-
-/*
- * Dump the block header, then walk through
- * the block printing out the record headers.
- */
-void dump_block(DEV_BLOCK *b, const char *msg)
-{
-   ser_declare;
-   char *p;
-   char Id[BLKHDR_ID_LENGTH+1];
-   uint32_t CheckSum, BlockCheckSum;
-   uint32_t block_len;
-   uint32_t BlockNumber;
-   uint32_t VolSessionId, VolSessionTime, data_len;
-   int32_t  FileIndex;
-   int32_t  Stream;
-   int bhl, rhl;
-   char buf1[100], buf2[100];
-
-   unser_begin(b->buf, BLKHDR1_LENGTH);
-   unser_uint32(CheckSum);
-   unser_uint32(block_len);
-   unser_uint32(BlockNumber);
-   unser_bytes(Id, BLKHDR_ID_LENGTH);
-   ASSERT(unser_length(b->buf) == BLKHDR1_LENGTH);
-   Id[BLKHDR_ID_LENGTH] = 0;
-   if (Id[3] == '2') {
-      unser_uint32(VolSessionId);
-      unser_uint32(VolSessionTime);
-      bhl = BLKHDR2_LENGTH;
-      rhl = RECHDR2_LENGTH;
-   } else {
-      VolSessionId = VolSessionTime = 0;
-      bhl = BLKHDR1_LENGTH;
-      rhl = RECHDR1_LENGTH;
-   }
-
-   if (block_len > 4000000) {
-      Dmsg3(20, "Dump block %s 0x%x blocksize too big %u\n", msg, b, block_len);
-      return;
-   }
-
-   BlockCheckSum = bcrc32((uint8_t *)b->buf+BLKHDR_CS_LENGTH,
-                         block_len-BLKHDR_CS_LENGTH);
-   Pmsg6(000, _("Dump block %s %x: size=%d BlkNum=%d\n"
-"               Hdrcksum=%x cksum=%x\n"),
-      msg, b, block_len, BlockNumber, CheckSum, BlockCheckSum);
-   p = b->buf + bhl;
-   while (p < (b->buf + block_len+WRITE_RECHDR_LENGTH)) {
-      unser_begin(p, WRITE_RECHDR_LENGTH);
-      if (rhl == RECHDR1_LENGTH) {
-         unser_uint32(VolSessionId);
-         unser_uint32(VolSessionTime);
-      }
-      unser_int32(FileIndex);
-      unser_int32(Stream);
-      unser_uint32(data_len);
-      Pmsg6(000, _("   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"),
-           VolSessionId, VolSessionTime, FI_to_ascii(buf1, FileIndex),
-           stream_to_ascii(buf2, Stream, FileIndex), data_len, p);
-      p += data_len + rhl;
-  }
-}
-
-/*
- * Create a new block structure.
- * We pass device so that the block can inherit the
- * min and max block sizes.
- */
-DEV_BLOCK *new_block(DEVICE *dev)
-{
-   DEV_BLOCK *block = (DEV_BLOCK *)get_memory(sizeof(DEV_BLOCK));
-
-   memset(block, 0, sizeof(DEV_BLOCK));
-
-   /* If the user has specified a max_block_size, use it as the default */
-   if (dev->max_block_size == 0) {
-      block->buf_len = DEFAULT_BLOCK_SIZE;
-   } else {
-      block->buf_len = dev->max_block_size;
-   }
-   block->dev = dev;
-   block->block_len = block->buf_len;  /* default block size */
-   block->buf = get_memory(block->buf_len);
-   empty_block(block);
-   block->BlockVer = BLOCK_VER;       /* default write version */
-   Dmsg1(650, "Returning new block=%x\n", block);
-   return block;
-}
-
-
-/*
- * Duplicate an existing block (eblock)
- */
-DEV_BLOCK *dup_block(DEV_BLOCK *eblock)
-{
-   DEV_BLOCK *block = (DEV_BLOCK *)get_memory(sizeof(DEV_BLOCK));
-   int buf_len = sizeof_pool_memory(eblock->buf);
-
-   memcpy(block, eblock, sizeof(DEV_BLOCK));
-   block->buf = get_memory(buf_len);
-   memcpy(block->buf, eblock->buf, buf_len);
-   return block;
-}
-
-
-/*
- * Only the first block checksum error was reported.
- *   If there are more, report it now.
- */
-void print_block_read_errors(JCR *jcr, DEV_BLOCK *block)
-{
-   if (block->read_errors > 1) {
-      Jmsg(jcr, M_ERROR, 0, _("%d block read errors not printed.\n"),
-         block->read_errors);
-   }
-}
-
-/*
- * Free block
- */
-void free_block(DEV_BLOCK *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 */
-void empty_block(DEV_BLOCK *block)
-{
-   block->binbuf = WRITE_BLKHDR_LENGTH;
-   block->bufp = block->buf + block->binbuf;
-   block->read_len = 0;
-   block->write_failed = false;
-   block->block_read = false;
-   block->FirstIndex = block->LastIndex = 0;
-}
-
-/*
- * Create block header just before write. The space
- * in the buffer should have already been reserved by
- * init_block.
- */
-static uint32_t ser_block_header(DEV_BLOCK *block, bool do_checksum)
-{
-   ser_declare;
-   uint32_t CheckSum = 0;
-   uint32_t block_len = block->binbuf;
-
-   Dmsg1(1390, "ser_block_header: block_len=%d\n", block_len);
-   ser_begin(block->buf, BLKHDR2_LENGTH);
-   ser_uint32(CheckSum);
-   ser_uint32(block_len);
-   ser_uint32(block->BlockNumber);
-   ser_bytes(WRITE_BLKHDR_ID, BLKHDR_ID_LENGTH);
-   if (BLOCK_VER >= 2) {
-      ser_uint32(block->VolSessionId);
-      ser_uint32(block->VolSessionTime);
-   }
-
-   /* Checksum whole block except for the checksum */
-   if (do_checksum) {
-      CheckSum = bcrc32((uint8_t *)block->buf+BLKHDR_CS_LENGTH,
-                    block_len-BLKHDR_CS_LENGTH);
-   }
-   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;
-}
-
-/*
- * Unserialize the block header for reading block.
- *  This includes setting all the buffer pointers correctly.
- *
- *  Returns: false on failure (not a block)
- *           true  on success
- */
-static bool unser_block_header(JCR *jcr, DEVICE *dev, DEV_BLOCK *block)
-{
-   ser_declare;
-   char Id[BLKHDR_ID_LENGTH+1];
-   uint32_t CheckSum, BlockCheckSum;
-   uint32_t block_len;
-   uint32_t block_end;
-   uint32_t BlockNumber;
-   int bhl;
-
-   unser_begin(block->buf, BLKHDR_LENGTH);
-   unser_uint32(CheckSum);
-   unser_uint32(block_len);
-   unser_uint32(BlockNumber);
-   unser_bytes(Id, BLKHDR_ID_LENGTH);
-   ASSERT(unser_length(block->buf) == BLKHDR1_LENGTH);
-
-   Id[BLKHDR_ID_LENGTH] = 0;
-   if (Id[3] == '1') {
-      bhl = BLKHDR1_LENGTH;
-      block->BlockVer = 1;
-      block->bufp = block->buf + bhl;
-      if (strncmp(Id, BLKHDR1_ID, BLKHDR_ID_LENGTH) != 0) {
-         dev->dev_errno = EIO;
-         Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer discarded.\n"),
-            dev->file, dev->block_num, BLKHDR1_ID, Id);
-         if (block->read_errors == 0 || verbose >= 2) {
-            Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
-         }
-         block->read_errors++;
-         return false;
-      }
-   } else if (Id[3] == '2') {
-      unser_uint32(block->VolSessionId);
-      unser_uint32(block->VolSessionTime);
-      bhl = BLKHDR2_LENGTH;
-      block->BlockVer = 2;
-      block->bufp = block->buf + bhl;
-      if (strncmp(Id, BLKHDR2_ID, BLKHDR_ID_LENGTH) != 0) {
-         dev->dev_errno = EIO;
-         Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer discarded.\n"),
-            dev->file, dev->block_num, BLKHDR2_ID, Id);
-         if (block->read_errors == 0 || verbose >= 2) {
-            Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
-         }
-         block->read_errors++;
-         return false;
-      }
-   } else {
-      dev->dev_errno = EIO;
-      Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer discarded.\n"),
-          dev->file, dev->block_num, BLKHDR2_ID, Id);
-      Dmsg1(50, "%s", dev->errmsg);
-      if (block->read_errors == 0 || verbose >= 2) {
-         Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
-      }
-      block->read_errors++;
-      unser_uint32(block->VolSessionId);
-      unser_uint32(block->VolSessionTime);
-      return false;
-   }
-
-   /* Sanity check */
-   if (block_len > MAX_BLOCK_LENGTH) {
-      dev->dev_errno = EIO;
-      Mmsg3(dev->errmsg,  _("Volume data error at %u:%u! Block length %u is insane (too large), probably due to a bad archive.\n"),
-         dev->file, dev->block_num, block_len);
-      if (block->read_errors == 0 || verbose >= 2) {
-         Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
-      }
-      block->read_errors++;
-      return false;
-   }
-
-   Dmsg1(390, "unser_block_header block_len=%d\n", block_len);
-   /* Find end of block or end of buffer whichever is smaller */
-   if (block_len > block->read_len) {
-      block_end = block->read_len;
-   } else {
-      block_end = block_len;
-   }
-   block->binbuf = block_end - bhl;
-   block->block_len = block_len;
-   block->BlockNumber = BlockNumber;
-   Dmsg3(390, "Read binbuf = %d %d block_len=%d\n", block->binbuf,
-      bhl, block_len);
-   if (block_len <= block->read_len && dev->do_checksum()) {
-      BlockCheckSum = bcrc32((uint8_t *)block->buf+BLKHDR_CS_LENGTH,
-                         block_len-BLKHDR_CS_LENGTH);
-      if (BlockCheckSum != CheckSum) {
-         dev->dev_errno = EIO;
-         Mmsg6(dev->errmsg, _("Volume data error at %u:%u!\n" 
-            "Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"),
-            dev->file, dev->block_num, (unsigned)BlockNumber, 
-            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) {
-            return false;
-         }
-      }
-   }
-   return true;
-}
+bool do_new_file_bookkeeping(DCR *dcr);
+//bool do_dvd_size_checks(DCR *dcr);
+void reread_last_block(DCR *dcr);
+uint32_t get_len_and_clear_block(DEV_BLOCK *block, DEVICE *dev, uint32_t &pad);
+uint32_t ser_block_header(DEV_BLOCK *block, bool do_checksum);
+bool unser_block_header(JCR *jcr, DEVICE *dev, DEV_BLOCK *block);
 
 /*
  * Write a block to the device, with locking and unlocking
@@ -358,54 +59,33 @@ bool DCR::write_block_to_device()
    DCR *dcr = this;
 
    if (dcr->spooling) {
-      Dmsg0(100, "Write to spool\n");
+      Dmsg0(200, "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->rLock();                  /* no, lock it */
+   if (!is_dev_locked()) {        /* device already locked? */
+      /* note, do not change this to dcr->rLock */
+      dev->rLock(false);          /* no, lock it */
    }
 
-   /*
-    * If a new volume has been mounted since our last write
-    *   Create a JobMedia record for the previous volume written,
-    *   and set new parameters to write this volume
-    * The same applies for if we are in a new file.
-    */
-   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 */
-      if (!dir_create_jobmedia_record(dcr)) {
-         dev->dev_errno = EIO;
-         Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
-            dcr->getVolCatName(), jcr->Job);
-         set_new_volume_parameters(dcr);
+   if (!check_for_newvol_or_newfile(dcr)) {
+      stat = false;
+      goto bail_out;   /* fatal error */
+   }
+
+   Dmsg1(500, "Write block to dev=%p\n", dcr->dev);
+   if (!write_block_to_dev()) {
+      if (job_canceled(jcr) || jcr->getJobType() == JT_SYSTEM) {
          stat = false;
-         Dmsg0(100, "cannot create media record\n");
-         goto bail_out;
-      }
-      if (dcr->NewVol) {
-         /* Note, setting a new volume also handles any pending new file */
-         set_new_volume_parameters(dcr);
+         Dmsg2(40, "cancel=%d or SYSTEM=%d\n", job_canceled(jcr),
+            jcr->getJobType() == JT_SYSTEM);
       } else {
-         set_new_file_parameters(dcr);
+         Dmsg0(40, "Calling fixup_device ...\n");
+         stat = fixup_device_block_write_error(dcr);
       }
    }
 
-   if (!dcr->write_block_to_dev()) {
-       if (job_canceled(jcr) || jcr->getJobType() == JT_SYSTEM) {
-          stat = false;
-       } else {
-          stat = fixup_device_block_write_error(dcr);
-       }
-   }
-
 bail_out:
    if (!dcr->is_dev_locked()) {        /* did we lock dev above? */
       /* note, do not change this to dcr->dunlock */
@@ -424,10 +104,10 @@ bool DCR::write_block_to_dev()
 {
    ssize_t stat = 0;
    uint32_t wlen;                     /* length to write */
-   int hit_max1, hit_max2;
    bool ok = true;
    DCR *dcr = this;
    uint32_t checksum;
+   uint32_t pad;                      /* padding or zeros written */
 
    if (no_tape_write_test) {
       empty_block(block);
@@ -437,96 +117,66 @@ bool DCR::write_block_to_dev()
       return false;
    }
 
-   ASSERT(block->binbuf == ((uint32_t) (block->bufp - block->buf)));
+   Dmsg3(200, "fd=%d bufp-buf=%d binbuf=%d\n", dev->fd(),
+      block->bufp-block->buf, block->binbuf);
+   ASSERT2(block->binbuf == ((uint32_t)(block->bufp - block->buf)), "binbuf badly set");
 
-   wlen = block->binbuf;
-   if (wlen <= WRITE_BLKHDR_LENGTH) {  /* Does block have data in it? */
-      Dmsg0(100, "return write_block_to_dev no data to write\n");
+   if (is_block_empty(block)) {  /* Does block have data in it? */
+      Dmsg0(150, "return write_block_to_dev no data to write\n");
       return true;
    }
 
-   /* dump_block(block, "before write"); */
+   dump_block(block, "before write");
    if (dev->at_weot()) {
-      Dmsg0(100, "return write_block_to_dev with ST_WEOT\n");
+      Dmsg0(50, "==== FATAL: At EOM 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());
+      Dmsg1(50, "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());
+      Dmsg1(50, "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.
-    */
-   if (wlen != block->buf_len) {
-      uint32_t blen;                  /* current buffer length */
-
-      Dmsg2(250, "binbuf=%d buf_len=%d\n", block->binbuf, block->buf_len);
-      blen = wlen;
-
-      /* Adjust write size to min/max for tapes only */
-      if (dev->is_tape()) {
-         /* check for fixed block size */
-         if (dev->min_block_size == dev->max_block_size) {
-            wlen = block->buf_len;    /* fixed block size already rounded */
-         /* Check for min block size */
-         } else if (wlen < dev->min_block_size) {
-            wlen =  ((dev->min_block_size + TAPE_BSIZE - 1) / TAPE_BSIZE) * TAPE_BSIZE;
-         /* Ensure size is rounded */
-         } else {
-            wlen = ((wlen + TAPE_BSIZE - 1) / TAPE_BSIZE) * TAPE_BSIZE;
-         }
-      }
-      if (wlen-blen > 0) {
-         memset(block->bufp, 0, wlen-blen); /* clear garbage */
-      }
-   }
+   wlen = get_len_and_clear_block(block, dev, pad);
+   block->block_len = wlen;
 
    checksum = ser_block_header(block, dev->do_checksum());
 
-   /* Limit maximum Volume size to value specified by user */
-   hit_max1 = (dev->max_volume_size > 0) &&
-       ((dev->VolCatInfo.VolCatBytes + block->binbuf)) >= dev->max_volume_size;
-   hit_max2 = (dev->VolCatInfo.VolCatMaxBytes > 0) &&
-       ((dev->VolCatInfo.VolCatBytes + block->binbuf)) >= dev->VolCatInfo.VolCatMaxBytes;
-   if (hit_max1 || hit_max2) {
-      char ed1[50];
-      uint64_t max_cap;
-      Dmsg0(100, "==== Output bytes Triggered medium max capacity.\n");
-      if (hit_max1) {
-         max_cap = dev->max_volume_size;
-      } else {
-         max_cap = dev->VolCatInfo.VolCatMaxBytes;
-      }
-      Jmsg(jcr, M_INFO, 0, _("User defined maximum volume capacity %s exceeded on device %s.\n"),
-            edit_uint64_with_commas(max_cap, ed1),  dev->print_name());
+   /* Handle max vol size here */
+   if (user_volume_size_reached(dcr, true)) {
+      Dmsg0(40, "Calling terminate_writing_volume\n");
       terminate_writing_volume(dcr);
-      reread_last_block(dcr);   /* DEBUG */
+      reread_last_block(dcr);   /* Only used on tapes */
       dev->dev_errno = ENOSPC;
       return false;
    }
 
-   /* Limit maximum File size on volume to user specified value */
+   /*
+    * Limit maximum File size on volume to user specified value.
+    *  In practical terms, this means to put an EOF mark on
+    *  a tape after every X bytes. This effectively determines
+    *  how many index records we have (JobMedia). If you set
+    *  max_file_size too small, it will cause a lot of shoe-shine
+    *  on very fast modern tape (LTO-3 and above).
+    */
    if ((dev->max_file_size > 0) &&
        (dev->file_size+block->binbuf) >= dev->max_file_size) {
       dev->file_size = 0;             /* reset file size */
 
       if (!dev->weof(1)) {            /* write eof */
          Dmsg0(50, "WEOF error in max file size.\n");
-         Jmsg(jcr, M_FATAL, 0, _("Unable to write EOF. ERR=%s\n"), 
+         Jmsg(jcr, M_FATAL, 0, _("Unable to write EOF. ERR=%s\n"),
             dev->bstrerror());
+         Dmsg0(40, "Calling terminate_writing_volume\n");
          terminate_writing_volume(dcr);
          dev->dev_errno = ENOSPC;
          return false;
@@ -540,14 +190,9 @@ bool DCR::write_block_to_dev()
          return false;
       }
    }
-   
-   if (!do_dvd_size_checks(dcr)) {
-      /* Error message already sent */
-      return false;
-   }
 
-   dev->VolCatInfo.VolCatWrites++;
-   Dmsg1(1300, "Write block of %u bytes\n", wlen);
+   dev->updateVolCatWrites(1);
+
 #ifdef DEBUG_BLOCK_ZEROING
    uint32_t *bp = (uint32_t *)block->buf;
    if (bp[0] == 0 && bp[1] == 0 && bp[2] == 0 && block->buf[12] == 0) {
@@ -556,9 +201,9 @@ bool DCR::write_block_to_dev()
 #endif
 
    /*
-    * Do write here, make a somewhat feeble attempt to recover from 
+    * Do write here, make a somewhat feeble attempt to recover from
     *  I/O errors, or from the OS telling us it is busy.
-    */ 
+    */
    int retry = 0;
    errno = 0;
    stat = 0;
@@ -571,7 +216,9 @@ bool DCR::write_block_to_dev()
          dev->clrerror(-1);
       }
       stat = dev->write(block->buf, (size_t)wlen);
-
+      Dmsg4(110, "Write() BlockAddr=%lld NextAddr=%lld Vol=%s wlen=%d\n",
+         block->BlockAddr, dev->lseek(dcr, 0, SEEK_CUR),
+         dev->VolHdr.VolumeName, wlen);
    } while (stat == -1 && (errno == EBUSY || errno == EIO) && retry++ < 3);
 
    if (debug_block_checksum) {
@@ -598,7 +245,7 @@ bool DCR::write_block_to_dev()
        */
       if (stat == -1) {
          berrno be;
-         dev->clrerror(-1);
+         dev->clrerror(-1);                 /* saves errno in dev->dev_errno */
          if (dev->dev_errno == 0) {
             dev->dev_errno = ENOSPC;        /* out of space */
          }
@@ -611,21 +258,20 @@ bool DCR::write_block_to_dev()
         dev->dev_errno = ENOSPC;            /* out of space */
       }
       if (dev->dev_errno == ENOSPC) {
+         dev->clear_nospace();
          Jmsg(jcr, M_INFO, 0, _("End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"),
             dev->getVolCatName(),
             dev->file, dev->block_num, dev->print_name(), wlen, stat);
       }
-      if (debug_level >= 100) {
+      if (chk_dbglvl(100)) {
          berrno be;
-         Dmsg7(100, "=== Write error. fd=%d size=%u rtn=%d dev_blk=%d blk_blk=%d errno=%d: ERR=%s\n",
-            dev->fd(), wlen, stat, dev->block_num, block->BlockNumber, 
+         Dmsg7(90, "==== Write error. fd=%d size=%u rtn=%d dev_blk=%d blk_blk=%d errno=%d: ERR=%s\n",
+            dev->fd(), wlen, stat, dev->block_num, block->BlockNumber,
             dev->dev_errno, be.bstrerror(dev->dev_errno));
       }
 
+      Dmsg0(40, "Calling terminate_writing_volume\n");
       ok = terminate_writing_volume(dcr);
-      if (!ok && !forge_on) {
-         return false;
-      }
       if (ok) {
          reread_last_block(dcr);
       }
@@ -633,10 +279,12 @@ bool DCR::write_block_to_dev()
    }
 
    /* We successfully wrote the block, now do housekeeping */
-   Dmsg2(1300, "VolCatBytes=%d newVolCatBytes=%d\n", (int)dev->VolCatInfo.VolCatBytes,
-      (int)(dev->VolCatInfo.VolCatBytes+wlen));
-   dev->VolCatInfo.VolCatBytes += wlen;         
-   dev->VolCatInfo.VolCatBlocks++;
+   Dmsg2(1300, "VolCatBytes=%lld newVolCatBytes=%lld\n", dev->VolCatInfo.VolCatBytes,
+      (dev->VolCatInfo.VolCatBytes+wlen));
+   dev->updateVolCatBytes(wlen);
+   Dmsg2(200, "AmetaBytes=%lld Bytes=%lld\n",
+         dev->VolCatInfo.VolCatAmetaBytes, dev->VolCatInfo.VolCatBytes);
+   dev->updateVolCatBlocks(1);
    dev->EndBlock = dev->block_num;
    dev->EndFile  = dev->file;
    dev->LastBlock = block->BlockNumber;
@@ -650,12 +298,24 @@ bool DCR::write_block_to_dev()
    } else {
       /* Save address of block just written */
       uint64_t addr = dev->file_addr + wlen - 1;
+      if (dcr->EndBlock > (uint32_t)addr ||
+          dcr->EndFile > (uint32_t)(addr >> 32)) {
+         Pmsg4(000, "Incorrect EndBlock/EndFile oldEndBlock=%d newEndBlock=%d oldEndFile=%d newEndFile=%d\n",
+            dcr->EndBlock, (uint32_t)addr, dcr->EndFile, (uint32_t)(addr >> 32));
+      }
       dcr->EndBlock = (uint32_t)addr;
       dcr->EndFile = (uint32_t)(addr >> 32);
-      dev->block_num = dcr->EndBlock;
-      dev->file = dcr->EndFile;
+      dev->block_num = (uint32_t)addr;
+      dev->file = (uint32_t)(addr >> 32);
+      block->BlockAddr = dev->file_addr + wlen;
+      Dmsg3(150, "Set block->BlockAddr=%lld wlen=%d block=%x\n",
+         block->BlockAddr, wlen, block);
+      Dmsg2(200, "AmetaBytes=%lld Bytes=%lld\n",
+         dev->VolCatInfo.VolCatAmetaBytes, dev->VolCatInfo.VolCatBytes);
    }
    dcr->VolMediaId = dev->VolCatInfo.VolMediaId;
+   Dmsg3(150, "VolFirstIndex=%d blockFirstIndex=%d Vol=%s\n",
+     dcr->VolFirstIndex, block->FirstIndex, dcr->VolumeName);
    if (dcr->VolFirstIndex == 0 && block->FirstIndex > 0) {
       dcr->VolFirstIndex = block->FirstIndex;
    }
@@ -666,287 +326,13 @@ bool DCR::write_block_to_dev()
    dev->file_addr += wlen;            /* update file address */
    dev->file_size += wlen;
    dev->part_size += wlen;
+   dev->setVolCatInfo(false);         /* Needs update */
 
    Dmsg2(1300, "write_block: wrote block %d bytes=%d\n", dev->block_num, wlen);
    empty_block(block);
    return true;
 }
 
-static void reread_last_block(DCR *dcr)
-{
-#define CHECK_LAST_BLOCK
-#ifdef  CHECK_LAST_BLOCK
-   bool ok = true;
-   DEVICE *dev = dcr->dev;
-   JCR *jcr = dcr->jcr;
-   DEV_BLOCK *block = dcr->block;
-   /*
-    * If the device is a tape and it supports backspace record,
-    *   we backspace over one or two eof marks depending on
-    *   how many we just wrote, then over the last record,
-    *   then re-read it and verify that the block number is
-    *   correct.
-    */
-   if (dev->is_tape() && dev->has_cap(CAP_BSR)) {
-      /* Now back up over what we wrote and read the last block */
-      if (!dev->bsf(1)) {
-         berrno be;
-         ok = false;
-         Jmsg(jcr, M_ERROR, 0, _("Backspace file at EOT failed. ERR=%s\n"), 
-              be.bstrerror(dev->dev_errno));
-      }
-      if (ok && dev->has_cap(CAP_TWOEOF) && !dev->bsf(1)) {
-         berrno be;
-         ok = false;
-         Jmsg(jcr, M_ERROR, 0, _("Backspace file at EOT failed. ERR=%s\n"), 
-              be.bstrerror(dev->dev_errno));
-      }
-      /* Backspace over record */
-      if (ok && !dev->bsr(1)) {
-         berrno be;
-         ok = false;
-         Jmsg(jcr, M_ERROR, 0, _("Backspace record at EOT failed. ERR=%s\n"), 
-              be.bstrerror(dev->dev_errno));
-         /*
-          *  On FreeBSD systems, if the user got here, it is likely that his/her
-          *    tape drive is "frozen".  The correct thing to do is a
-          *    rewind(), but if we do that, higher levels in cleaning up, will
-          *    most likely write the EOS record over the beginning of the
-          *    tape.  The rewind *is* done later in mount.c when another
-          *    tape is requested. Note, the clrerror() call in bsr()
-          *    calls ioctl(MTCERRSTAT), which *should* fix the problem.
-          */
-      }
-      if (ok) {
-         DEV_BLOCK *lblock = new_block(dev);
-         /* Note, this can destroy dev->errmsg */
-         dcr->block = lblock;
-         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 {
-            /*
-             * If we wrote block and the block numbers don't agree
-             *  we have a possible problem.
-             */
-            if (lblock->BlockNumber != dev->LastBlock) {
-                if (dev->LastBlock > (lblock->BlockNumber + 1)) {
-                   Jmsg(jcr, M_FATAL, 0, _(
-"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"),
-                       lblock->BlockNumber, dev->LastBlock);
-                 } else {
-                   Jmsg(jcr, M_ERROR, 0, _(
-"Re-read of last block OK, but block numbers differ. Read block=%u Want block=%u.\n"),
-                       lblock->BlockNumber, dev->LastBlock);
-                 }
-            } else {
-               Jmsg(jcr, M_INFO, 0, _("Re-read of last block succeeded.\n"));
-            }
-         }
-         free_block(lblock);
-         dcr->block = block;
-      }
-   }
-#endif
-}
-
-/*
- * If this routine is called, we do our bookkeeping and
- *   then assure that the volume will not be written any
- *   more.
- */
-static bool terminate_writing_volume(DCR *dcr)
-{
-   DEVICE *dev = dcr->dev;
-   bool ok = true;
-
-   /* Create a JobMedia record to indicated end of tape */
-   dev->VolCatInfo.VolCatFiles = dev->file;
-   if (!dir_create_jobmedia_record(dcr)) {
-      Dmsg0(50, "Error from create JobMedia\n");
-      dev->dev_errno = EIO;
-        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;
-   if (!dev->weof(1)) {         /* end the tape */
-      dev->VolCatInfo.VolCatErrors++;
-      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(50, "Error writing final EOF to volume.\n");
-   }
-   if (ok) {
-      ok = write_ansi_ibm_labels(dcr, ANSI_EOV_LABEL, dev->VolHdr.VolumeName);
-   }
-   bstrncpy(dev->VolCatInfo.VolCatStatus, "Full", sizeof(dev->VolCatInfo.VolCatStatus));
-   dev->VolCatInfo.VolCatFiles = dev->file;   /* set number of files */
-   
-   if (dev->is_dvd()) {
-      if (!dvd_write_part(dcr)) {             /* write last part */
-         dev->VolCatInfo.VolCatErrors++;
-         Jmsg(dcr->jcr, M_FATAL, 0, _("Error writing final part to DVD. "
-                                 "This Volume may not be readable.\n%s"),
-                         dev->errmsg);
-         ok = false;
-         Dmsg0(100, "dvd_write_part error.\n");
-      }
-      dev->VolCatInfo.VolCatParts = dev->num_dvd_parts;
-   }
-   
-   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(50, "dir_update_volume_info terminate writing -- %s\n", ok?"OK":"ERROR");
-
-   /*
-    * Walk through all attached dcrs setting flag to call
-    * set_new_file_parameters() when that dcr is next used.
-    */
-   DCR *mdcr;
-   foreach_dlist(mdcr, dev->attached_dcrs) {
-      if (mdcr->jcr->JobId == 0) {
-         continue;
-      }
-      mdcr->NewFile = true;        /* set reminder to do set_new_file_params */
-   }
-   /* Set new file/block parameters for current dcr */
-   set_new_file_parameters(dcr);
-
-   if (ok && dev->has_cap(CAP_TWOEOF) && !dev->weof(1)) {  /* end the tape */
-      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 */
-   Dmsg1(50, "*** Leave terminate_writing_volume -- %s\n", ok?"OK":"ERROR");
-   return ok;
-}
-
-/*
- * Do bookkeeping when a new file is created on a Volume. This is
- *  also done for disk files to generate the jobmedia records for
- *  quick seeking.
- */
-static bool do_new_file_bookkeeping(DCR *dcr) 
-{
-   DEVICE *dev = dcr->dev;
-   JCR *jcr = dcr->jcr;
-
-   /* Create a JobMedia record so restore can seek */
-   if (!dir_create_jobmedia_record(dcr)) {
-      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);
-      terminate_writing_volume(dcr);
-      dev->dev_errno = EIO;
-      return false;
-   }
-   dev->VolCatInfo.VolCatFiles = dev->file;
-   if (!dir_update_volume_info(dcr, false, false)) {
-      Dmsg0(50, "Error from update_vol_info.\n");
-      terminate_writing_volume(dcr);
-      dev->dev_errno = EIO;
-      return false;
-   }
-   Dmsg0(100, "dir_update_volume_info max file size -- OK\n");
-
-   /*
-    * Walk through all attached dcrs setting flag to call
-    * set_new_file_parameters() when that dcr is next used.
-    */
-   DCR *mdcr;
-   foreach_dlist(mdcr, dev->attached_dcrs) {
-      if (mdcr->jcr->JobId == 0) {
-         continue;
-      }
-      mdcr->NewFile = true;        /* set reminder to do set_new_file_params */
-   }
-   /* Set new file/block parameters for current dcr */
-   set_new_file_parameters(dcr);
-   return true;
-}
-
-/*
- * Do all checks for DVD sizes during writing.
- */
-static bool do_dvd_size_checks(DCR *dcr) 
-{
-   DEVICE *dev = dcr->dev;
-   JCR *jcr = dcr->jcr;
-   DEV_BLOCK *block = dcr->block;
-
-   /* Don't go further if the device is not a dvd */
-   if (!dev->is_dvd()) {
-      return true;
-   }
-   
-   /* Limit maximum part size to value specified by user 
-    */
-   if (dev->max_part_size > 0 && ((dev->part_size + block->binbuf) >= dev->max_part_size)) {
-      if (dev->part < dev->num_dvd_parts) {
-         Jmsg3(dcr->jcr, M_FATAL, 0, _("Error while writing, current part number"
-               " is less than the total number of parts (%d/%d, device=%s)\n"),
-               dev->part, dev->num_dvd_parts, dev->print_name());
-         dev->dev_errno = EIO;
-         return false;
-      }
-      
-      if (dvd_open_next_part(dcr) < 0) {
-         Jmsg2(dcr->jcr, M_FATAL, 0, _("Unable to open device next part %s: ERR=%s\n"),
-                dev->print_name(), dev->bstrerror());
-         dev->dev_errno = EIO;
-         return false;
-      }
-      
-      dev->VolCatInfo.VolCatParts = dev->num_dvd_parts;
-            
-      if (!dir_update_volume_info(dcr, false, false)) {
-         Dmsg0(190, "Error from update_vol_info.\n");
-         dev->dev_errno = EIO;
-         return false;
-      }
-   }
-
-   dev->update_freespace();
-   
-   if (!dev->is_freespace_ok()) { /* Error while getting free space */
-      char ed1[50], ed2[50];
-      Dmsg1(100, "Cannot get free space on the device ERR=%s.\n", dev->errmsg);
-      Jmsg(jcr, M_FATAL, 0, _("End of Volume \"%s\" at %u:%u on device %s "
-         "(part_size=%s, free_space=%s, free_space_errno=%d, errmsg=%s).\n"),
-           dev->getVolCatName(),
-           dev->file, dev->block_num, dev->print_name(),
-           edit_uint64_with_commas(dev->part_size, ed1), edit_uint64_with_commas(dev->free_space, ed2),
-           dev->free_space_errno, dev->errmsg);
-      dev->dev_errno = dev->free_space_errno;
-      return false;
-   }
-   
-   if ((dev->is_freespace_ok() && (dev->part_size + block->binbuf) >= dev->free_space)) {
-      char ed1[50], ed2[50];
-      Dmsg0(100, "==== Just enough free space on the device to write the current part...\n");
-      Jmsg(jcr, M_INFO, 0, _("End of Volume \"%s\" at %u:%u on device %s "
-         "(part_size=%s, free_space=%s, free_space_errno=%d).\n"),
-            dev->getVolCatName(),
-            dev->file, dev->block_num, dev->print_name(),
-            edit_uint64_with_commas(dev->part_size, ed1), edit_uint64_with_commas(dev->free_space, ed2),
-            dev->free_space_errno);
-      terminate_writing_volume(dcr);
-      dev->dev_errno = ENOSPC;
-      return false;
-   }   
-   return true;
-}
-
 
 /*
  * Read block with locking
@@ -957,9 +343,9 @@ bool DCR::read_block_from_device(bool check_block_numbers)
    bool ok;
 
    Dmsg0(250, "Enter read_block_from_device\n");
-   dev->rLock();
+   dev->rLock(false);
    ok = read_block_from_dev(check_block_numbers);
-   dev->Unlock();
+   dev->rUnlock();
    Dmsg0(250, "Leave read_block_from_device\n");
    return ok;
 }
@@ -981,20 +367,21 @@ bool DCR::read_block_from_dev(bool check_block_numbers)
       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);
+   Dmsg1(250, "Full read in read_block_from_device() len=%d\n", block->buf_len);
 
    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);
+      Jmsg(dcr->jcr, M_FATAL, 0, "%s", dev->errmsg);
+      Pmsg2(000, "Fatal: dev=%p dcr=%p\n", dev, dcr);
+      Pmsg1(000, "%s", dev->errmsg);
       block->read_len = 0;
       return false;
     }
@@ -1008,23 +395,14 @@ reread:
       block->read_len = 0;
       return false;
    }
-   
-   /* Check for DVD part file end */
-   if (dev->at_eof() && dev->is_dvd() && dev->num_dvd_parts > 0 &&
-        dev->part <= dev->num_dvd_parts) {
-      Dmsg0(400, "Call dvd_open_next_part\n");
-      if (dvd_open_next_part(dcr) < 0) {
-         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;
-      }
-   }
-   
+
+   dump_block(block, "before read");
+
    retry = 0;
    errno = 0;
    stat = 0;
+
+   boffset_t pos = dev->lseek(dcr, (boffset_t)0, SEEK_CUR); /* get curr pos */
    do {
       if ((retry > 0 && stat == -1 && errno == EBUSY)) {
          berrno be;
@@ -1036,38 +414,50 @@ reread:
       stat = dev->read(block->buf, (size_t)block->buf_len);
 
    } while (stat == -1 && (errno == EBUSY || errno == EINTR || errno == EIO) && retry++ < 3);
+   Dmsg3(110, "Read() vol=%s nbytes=%d addr=%lld\n",
+      dev->VolHdr.VolumeName, stat, pos);
    if (stat < 0) {
       berrno be;
       dev->clrerror(-1);
-      Dmsg1(250, "Read device got: ERR=%s\n", be.bstrerror());
+      Dmsg2(90, "Read device fd=%d got: ERR=%s\n", dev->fd(), be.bstrerror());
       block->read_len = 0;
-      Mmsg5(dev->errmsg, _("Read error on fd=%d at file:blk %u:%u on device %s. ERR=%s.\n"),
-         dev->fd(), dev->file, dev->block_num, dev->print_name(), be.bstrerror());
+      if (dev->file == 0 && dev->block_num == 0) { /* Attempt to read label */
+         Mmsg(dev->errmsg, _("The Volume=%s on device=%s appears to be unlabeled.\n"),
+            dev->VolCatInfo.VolCatName, dev->print_name());
+      } else {
+         Mmsg5(dev->errmsg, _("Read error on fd=%d at file:blk %u:%u on device %s. ERR=%s.\n"),
+            dev->fd(), dev->file, dev->block_num, dev->print_name(), be.bstrerror());
+      }
       Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
       if (dev->at_eof()) {        /* EOF just seen? */
          dev->set_eot();          /* yes, error => EOT */
       }
       return false;
    }
-   Dmsg3(250, "Read device got %d bytes at %u:%u\n", stat,
-      dev->file, dev->block_num);
    if (stat == 0) {             /* Got EOF ! */
+      if (dev->file == 0 && dev->block_num == 0) { /* Attempt to read label */
+         Mmsg2(dev->errmsg, _("The Volume=%s on device=%s appears to be unlabeled.\n"),
+            dev->VolCatInfo.VolCatName, dev->print_name());
+      } else {
+         Mmsg3(dev->errmsg, _("Read zero bytes Vol=%s at %lld on device %s.\n"),
+               dev->VolCatInfo.VolCatName, pos, dev->print_name());
+      }
       dev->block_num = 0;
       block->read_len = 0;
-      Mmsg3(dev->errmsg, _("Read zero bytes at %u:%u on device %s.\n"),
-         dev->file, dev->block_num, dev->print_name());
+      Dmsg1(100, "%s", dev->errmsg);
       if (dev->at_eof()) {       /* EOF already read? */
          dev->set_eot();         /* yes, 2 EOFs => EOT */
-         return 0;
+         return false;
       }
       dev->set_ateof();
+      Dmsg2(150, "==== Read zero bytes. vol=%s at %lld\n", dev->VolCatInfo.VolCatName, pos);
       return false;             /* return eof */
    }
 
    /* Continue here for successful read */
 
    block->read_len = stat;      /* save length read */
-   if (block->read_len == 80 && 
+   if (block->read_len == 80 &&
         (dcr->VolCatInfo.LabelType != B_BACULA_LABEL ||
          dcr->device->label_type != B_BACULA_LABEL)) {
       /* ***FIXME*** should check label */
@@ -1075,19 +465,19 @@ reread:
       dev->clear_eof();
       goto reread;             /* skip ANSI/IBM label */
    }
-                                          
+
    if (block->read_len < BLKHDR2_LENGTH) {
       dev->dev_errno = EIO;
       Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Very short block of %d bytes on device %s discarded.\n"),
          dev->file, dev->block_num, block->read_len, dev->print_name());
       Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
-      dev->set_short_block();   
+      dev->set_short_block();
       block->read_len = block->binbuf = 0;
-      Dmsg2(200, "set block=%p binbuf=%d\n", block, block->binbuf);
+      Dmsg2(50, "set block=%p binbuf=%d\n", block, block->binbuf);
       return false;             /* return error */
    }
 
-// BlockNumber = block->BlockNumber + 1;
+   //BlockNumber = block->BlockNumber + 1;
    if (!unser_block_header(jcr, dev, block)) {
       if (forge_on) {
          dev->file_addr += block->read_len;
@@ -1102,6 +492,7 @@ reread:
     *  re-reading the block, allocate a buffer of the correct size,
     *  and go re-read.
     */
+   Dmsg2(150, "block_len=%d buf_len=%d\n", block->block_len, block->buf_len);
    if (block->block_len > block->buf_len) {
       dev->dev_errno = EIO;
       Mmsg2(dev->errmsg,  _("Block length %u is greater than buffer %u. Attempting recovery.\n"),
@@ -1149,8 +540,8 @@ reread:
 
    dev->clear_short_block();
    dev->clear_eof();
-   dev->VolCatInfo.VolCatReads++;
-   dev->VolCatInfo.VolCatRBytes += block->read_len;
+   dev->updateVolCatReads(1);
+   dev->updateVolCatReadBytes(block->read_len);
 
    dev->EndBlock = dev->block_num;
    dev->EndFile  = dev->file;
@@ -1162,14 +553,14 @@ reread:
       dcr->EndFile  = dev->EndFile;
    } else {
       /* We need to take care about a short block in EndBlock/File
-       * computation 
+       * computation
        */
       uint32_t len = MIN(block->read_len, block->block_len);
       uint64_t addr = dev->file_addr + len - 1;
       dcr->EndBlock = (uint32_t)addr;
       dcr->EndFile = (uint32_t)(addr >> 32);
-      dev->block_num = dev->EndBlock = dcr->EndBlock;
-      dev->file = dev->EndFile = dcr->EndFile;
+      dev->block_num = dev->EndBlock = (uint32_t)addr;
+      dev->file = dev->EndFile = (uint32_t)(addr >> 32);
    }
    dcr->VolMediaId = dev->VolCatInfo.VolMediaId;
    dev->file_addr += block->read_len;
@@ -1195,14 +586,14 @@ reread:
       Dmsg1(250, "Current lseek pos=%s\n", edit_int64(pos, ed1));
       pos -= (block->read_len - block->block_len);
       dev->lseek(dcr, pos, SEEK_SET);
-      Dmsg3(250, "Did lseek pos=%s blk_size=%d rdlen=%d\n", 
+      Dmsg3(250, "Did lseek pos=%s blk_size=%d rdlen=%d\n",
          edit_int64(pos, ed1), block->block_len,
             block->read_len);
       dev->file_addr = pos;
       dev->file_size = pos;
    }
-   Dmsg2(250, "Exit read_block read_len=%d block_len=%d\n",
-      block->read_len, block->block_len);
+   Dmsg3(150, "Exit read_block read_len=%d block_len=%d binbuf=%d\n",
+      block->read_len, block->block_len, block->binbuf);
    block->block_read = true;
    return true;
 }
diff --git a/src/stored/block.h b/src/stored/block.h
index 320058d..a438350 100644
--- a/src/stored/block.h
+++ b/src/stored/block.h
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Block definitions for Bacula media data format.
  *
- *    Kern Sibbald, MM
+ *    Written by Kern Sibbald, MM
  *
  */
 
@@ -53,7 +41,13 @@
 
 /* Record header definitions */
 #define RECHDR1_LENGTH      20
-#define RECHDR2_LENGTH      12
+/*
+ * Record header consists of:
+ *  int32_t FileIndex
+ *  int32_t Stream
+ *  uint32_t data_length
+ */
+#define RECHDR2_LENGTH  (3*sizeof(int32_t))
 #define WRITE_RECHDR_LENGTH RECHDR2_LENGTH
 
 /* Tape label and version definitions */
@@ -66,16 +60,23 @@
 /*
  * This is the Media structure for a block header
  *  Note, when written, it is serialized.
+   16 bytes
 
    uint32_t CheckSum;
    uint32_t block_len;
    uint32_t BlockNumber;
    char     Id[BLKHDR_ID_LENGTH];
 
- * for BB02 block, we also have
+ * for BB02 block, we have
+   24 bytes
 
+   uint32_t CheckSum;
+   uint32_t block_len;
+   uint32_t BlockNumber;
+   char     Id[BLKHDR_ID_LENGTH];
    uint32_t VolSessionId;
    uint32_t VolSessionTime;
+
  */
 
 class DEVICE;                         /* for forward reference */
@@ -96,20 +97,29 @@ struct DEV_BLOCK {
     *   For writes, it is bytes not yet written.
     *   For reads, it is remaining bytes not yet read.
     */
+   uint64_t BlockAddr;                /* Block address */
    uint32_t binbuf;                   /* bytes in buffer */
    uint32_t block_len;                /* length of current block read */
    uint32_t buf_len;                  /* max/default block length */
+   uint32_t reclen;                   /* Last record length put in block */
    uint32_t BlockNumber;              /* sequential Bacula block number */
    uint32_t read_len;                 /* bytes read into buffer, if zero, block empty */
    uint32_t VolSessionId;             /* */
    uint32_t VolSessionTime;           /* */
    uint32_t read_errors;              /* block errors (checksum, header, ...) */
+   uint32_t CheckSum;                 /* Block checksum */
    int      BlockVer;                 /* block version 1 or 2 */
    bool     write_failed;             /* set if write failed */
    bool     block_read;               /* set when block read */
+   bool     needs_write;              /* block must be written */
+   bool     no_header;                /* Set if no block header */
+   bool     new_fi;                   /* New FI arrived */
    int32_t  FirstIndex;               /* first index this block */
    int32_t  LastIndex;                /* last index this block */
+   int32_t  rechdr_items;             /* number of items in rechdr queue */
    char    *bufp;                     /* pointer into buffer */
+   char     ser_buf[BLKHDR2_LENGTH];  /* Serial buffer for data */
+   POOLMEM *rechdr_queue;             /* record header queue */
    POOLMEM *buf;                      /* actual data buffer */
 };
 
diff --git a/src/stored/block_util.c b/src/stored/block_util.c
new file mode 100644
index 0000000..790dad8
--- /dev/null
+++ b/src/stored/block_util.c
@@ -0,0 +1,674 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2001-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ *
+ *   block_util.c -- tape block utility functions
+ *
+ *              Kern Sibbald, split from block.c March MMXII
+ *
+ */
+
+
+#include "bacula.h"
+#include "stored.h"
+
+static const int dbgel = 160;
+
+#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
+
+/*
+ * Dump the block header, then walk through
+ * the block printing out the record headers.
+ */
+void dump_block(DEV_BLOCK *b, const char *msg)
+{
+   ser_declare;
+   char *p;
+   char Id[BLKHDR_ID_LENGTH+1];
+   uint32_t CheckSum, BlockCheckSum;
+   uint32_t block_len, reclen;
+   uint32_t BlockNumber;
+   uint32_t VolSessionId, VolSessionTime, data_len;
+   int32_t  FileIndex;
+   int32_t  Stream;
+   int bhl, rhl;
+   char buf1[100], buf2[100];
+
+   if ((debug_level & ~DT_ALL) < 250) {
+      return;
+   }
+   unser_begin(b->buf, BLKHDR1_LENGTH);
+   unser_uint32(CheckSum);
+   unser_uint32(block_len);
+   unser_uint32(BlockNumber);
+   unser_bytes(Id, BLKHDR_ID_LENGTH);
+   ASSERT(unser_length(b->buf) == BLKHDR1_LENGTH);
+   Id[BLKHDR_ID_LENGTH] = 0;
+   if (Id[3] == '2') {
+      unser_uint32(VolSessionId);
+      unser_uint32(VolSessionTime);
+      bhl = BLKHDR2_LENGTH;
+      rhl = RECHDR2_LENGTH;
+   } else {
+      VolSessionId = VolSessionTime = 0;
+      bhl = BLKHDR1_LENGTH;
+      rhl = RECHDR1_LENGTH;
+   }
+
+   if (block_len > 4000000) {
+      Dmsg3(20, "!!!Dump block %s 0x%x blocksize too big %u\n", msg, b, block_len);
+      return;
+   }
+
+   BlockCheckSum = bcrc32((uint8_t *)b->buf+BLKHDR_CS_LENGTH,
+                         block_len-BLKHDR_CS_LENGTH);
+   Pmsg6(000, _("Dump block %s %p: size=%d BlkNum=%d\n"
+"               Hdrcksum=%x cksum=%x\n"),
+      msg, b, block_len, BlockNumber, CheckSum, BlockCheckSum);
+   p = b->buf + bhl;
+   while (p < b->bufp) {
+      unser_begin(p, WRITE_RECHDR_LENGTH);
+      if (rhl == RECHDR1_LENGTH) {
+         unser_uint32(VolSessionId);
+         unser_uint32(VolSessionTime);
+      }
+      unser_int32(FileIndex);
+      unser_int32(Stream);
+      unser_uint32(data_len);
+      reclen = 0;
+      p += data_len + rhl;
+      Pmsg6(000, _("   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d reclen=%d\n"),
+           VolSessionId, VolSessionTime, FI_to_ascii(buf1, FileIndex),
+           stream_to_ascii(buf2, Stream, FileIndex), data_len, reclen);
+  }
+}
+
+/*
+ * Create a new block structure.
+ * We pass device so that the block can inherit the
+ * min and max block sizes.
+ */
+DEV_BLOCK *new_block(DEVICE *dev)
+{
+   DEV_BLOCK *block = (DEV_BLOCK *)get_memory(sizeof(DEV_BLOCK));
+   int len;
+
+   memset(block, 0, sizeof(DEV_BLOCK));
+
+   /* If the user has specified a max_block_size, use it as the default */
+   if (dev->max_block_size == 0) {
+      len = DEFAULT_BLOCK_SIZE;
+   } else {
+      len = dev->max_block_size;
+   }
+   block->dev = dev;
+   /*
+    * Round to multiple of block size + ensure that
+    * the data length is a multiple of the block size
+    */
+   block->buf_len = len;
+   block->buf = get_memory(block->buf_len);
+   block->rechdr_queue = get_memory(block->buf_len);
+   block->rechdr_items = 0;
+   empty_block(block);
+   block->BlockVer = BLOCK_VER;       /* default write version */
+   Dmsg2(150, "New block len=%d block=%p\n", len, block);
+   return block;
+}
+
+
+/*
+ * Duplicate an existing block (eblock)
+ */
+DEV_BLOCK *dup_block(DEV_BLOCK *eblock)
+{
+   DEV_BLOCK *block = (DEV_BLOCK *)get_memory(sizeof(DEV_BLOCK));
+   int buf_len = sizeof_pool_memory(eblock->buf);
+
+   memcpy(block, eblock, sizeof(DEV_BLOCK));
+   block->buf = get_memory(buf_len);
+   memcpy(block->buf, eblock->buf, buf_len);
+   return block;
+}
+
+
+/*
+ * Only the first block checksum error was reported.
+ *   If there are more, report it now.
+ */
+void print_block_read_errors(JCR *jcr, DEV_BLOCK *block)
+{
+   if (block->read_errors > 1) {
+      Jmsg(jcr, M_ERROR, 0, _("%d block read errors not printed.\n"),
+         block->read_errors);
+   }
+}
+
+
+void DCR::free_blocks()
+{
+   if (block) {
+      free_block(block);
+   }
+}
+
+/*
+ * Free block
+ */
+void free_block(DEV_BLOCK *block)
+{
+   if (block) {
+      Dmsg1(999, "free_block buffer %x\n", block->buf);
+      free_memory(block->buf);
+      free_memory(block->rechdr_queue);
+      Dmsg1(999, "free_block block %x\n", block);
+      free_memory((POOLMEM *)block);
+   }
+}
+
+bool is_block_empty(DEV_BLOCK *block)
+{
+   return block->binbuf <= WRITE_BLKHDR_LENGTH;
+}
+
+/* Empty the block -- for writing */
+void empty_block(DEV_BLOCK *block)
+{
+   block->binbuf = WRITE_BLKHDR_LENGTH;
+   Dmsg3(200, "empty len=%d block=%p set binbuf=%d\n",
+         block->buf_len, block, block->binbuf);
+   block->bufp = block->buf + block->binbuf;
+   block->buf[0] = 0;        /* clear for debugging */
+   block->bufp[0] = 0;       /* clear for debugging */
+   block->read_len = 0;
+   block->write_failed = false;
+   block->block_read = false;
+   block->needs_write = false;
+   block->FirstIndex = block->LastIndex = 0;
+}
+
+/*
+ * Create block header just before write. The space
+ * in the buffer should have already been reserved by
+ * init_block.
+ */
+uint32_t ser_block_header(DEV_BLOCK *block, bool do_checksum)
+{
+   ser_declare;
+   uint32_t block_len = block->binbuf;
+
+   block->CheckSum = 0;
+   Dmsg1(160, "block_header: block_len=%d\n", block_len);
+   ser_begin(block->buf, BLKHDR2_LENGTH);
+   ser_uint32(block->CheckSum);
+   ser_uint32(block_len);
+   ser_uint32(block->BlockNumber);
+   ser_bytes(WRITE_BLKHDR_ID, BLKHDR_ID_LENGTH);
+   if (BLOCK_VER >= 2) {
+      ser_uint32(block->VolSessionId);
+      ser_uint32(block->VolSessionTime);
+   }
+
+   /* Checksum whole block except for the checksum */
+   if (do_checksum) {
+      block->CheckSum = bcrc32((uint8_t *)block->buf+BLKHDR_CS_LENGTH,
+                    block_len-BLKHDR_CS_LENGTH);
+   }
+   Dmsg1(160, "ser_block_header: checksum=%x\n", block->CheckSum);
+   ser_begin(block->buf, BLKHDR2_LENGTH);
+   ser_uint32(block->CheckSum);    /* now add checksum to block header */
+   return block->CheckSum;
+}
+
+/*
+ * Unserialize the block header for reading block.
+ *  This includes setting all the buffer pointers correctly.
+ *
+ *  Returns: false on failure (not a block)
+ *           true  on success
+ */
+bool unser_block_header(JCR *jcr, DEVICE *dev, DEV_BLOCK *block)
+{
+   ser_declare;
+   char Id[BLKHDR_ID_LENGTH+1];
+   uint32_t BlockCheckSum;
+   uint32_t block_len;
+   uint32_t block_end;
+   uint32_t BlockNumber;
+   int bhl;
+
+   if (block->no_header) {
+      return true;
+   }
+   unser_begin(block->buf, BLKHDR_LENGTH);
+   unser_uint32(block->CheckSum);
+   unser_uint32(block_len);
+   unser_uint32(BlockNumber);
+   unser_bytes(Id, BLKHDR_ID_LENGTH);
+   ASSERT(unser_length(block->buf) == BLKHDR1_LENGTH);
+
+   Id[BLKHDR_ID_LENGTH] = 0;
+   if (Id[3] == '1') {
+      bhl = BLKHDR1_LENGTH;
+      block->BlockVer = 1;
+      block->bufp = block->buf + bhl;
+      //Dmsg3(100, "Block=%p buf=%p bufp=%p\n", block, block->buf, block->bufp);
+      if (strncmp(Id, BLKHDR1_ID, BLKHDR_ID_LENGTH) != 0) {
+         dev->dev_errno = EIO;
+         Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer discarded.\n"),
+            dev->file, dev->block_num, BLKHDR1_ID, Id);
+         if (block->read_errors == 0 || verbose >= 2) {
+            Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
+         }
+         block->read_errors++;
+         return false;
+      }
+   } else if (Id[3] == '2') {
+      unser_uint32(block->VolSessionId);
+      unser_uint32(block->VolSessionTime);
+      bhl = BLKHDR2_LENGTH;
+      block->BlockVer = 2;
+      block->bufp = block->buf + bhl;
+      if (strncmp(Id, BLKHDR2_ID, BLKHDR_ID_LENGTH) != 0) {
+         dev->dev_errno = EIO;
+         Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer discarded.\n"),
+            dev->file, dev->block_num, BLKHDR2_ID, Id);
+         if (block->read_errors == 0 || verbose >= 2) {
+            Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
+         }
+         block->read_errors++;
+         return false;
+      }
+   } else {
+      dev->dev_errno = EIO;
+      Mmsg4(dev->errmsg, _("Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer discarded.\n"),
+          dev->file, dev->block_num, BLKHDR2_ID, Id);
+      Dmsg1(50, "%s", dev->errmsg);
+      if (block->read_errors == 0 || verbose >= 2) {
+         Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
+      }
+      block->read_errors++;
+      unser_uint32(block->VolSessionId);
+      unser_uint32(block->VolSessionTime);
+      return false;
+   }
+
+   /* Sanity check */
+   if (block_len > MAX_BLOCK_LENGTH) {
+      dev->dev_errno = EIO;
+      Mmsg3(dev->errmsg,  _("Volume data error at %u:%u! Block length %u is insane (too large), probably due to a bad archive.\n"),
+         dev->file, dev->block_num, block_len);
+      if (block->read_errors == 0 || verbose >= 2) {
+         Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
+      }
+      block->read_errors++;
+      return false;
+   }
+
+   Dmsg1(390, "unser_block_header block_len=%d\n", block_len);
+   /* Find end of block or end of buffer whichever is smaller */
+   if (block_len > block->read_len) {
+      block_end = block->read_len;
+   } else {
+      block_end = block_len;
+   }
+   block->binbuf = block_end - bhl;
+   Dmsg2(200, "set block=%p binbuf=%d\n", block, block->binbuf);
+   block->block_len = block_len;
+   block->BlockNumber = BlockNumber;
+   Dmsg3(390, "Read binbuf = %d %d block_len=%d\n", block->binbuf,
+      bhl, block_len);
+   if (block_len <= block->read_len && dev->do_checksum()) {
+      BlockCheckSum = bcrc32((uint8_t *)block->buf+BLKHDR_CS_LENGTH,
+                         block_len-BLKHDR_CS_LENGTH);
+      if (BlockCheckSum != block->CheckSum) {
+         dev->dev_errno = EIO;
+         Mmsg6(dev->errmsg, _("Volume data error at %u:%u!\n"
+            "Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"),
+            dev->file, dev->block_num, (unsigned)BlockNumber,
+            block_len, BlockCheckSum, block->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) {
+            return false;
+         }
+      }
+   }
+   return true;
+}
+
+/*
+ * Calculate how many bytes to write and then clear to end
+ *  of block.
+ */
+uint32_t get_len_and_clear_block(DEV_BLOCK *block, DEVICE *dev, uint32_t &pad)
+{
+   uint32_t wlen;
+   /*
+    * Clear to the end of the buffer if it is not full,
+    *  and on tape devices, apply min and fixed blocking.
+    */
+   wlen = block->binbuf;
+   if (wlen != block->buf_len) {
+      Dmsg2(250, "binbuf=%d buf_len=%d\n", block->binbuf, block->buf_len);
+
+      /* Adjust write size to min/max for tapes only */
+      if (dev->is_tape()) {
+         /* check for fixed block size */
+         if (dev->min_block_size == dev->max_block_size) {
+            wlen = block->buf_len;    /* fixed block size already rounded */
+         /* Check for min block size */
+         } else if (wlen < dev->min_block_size) {
+            wlen =  ((dev->min_block_size + TAPE_BSIZE - 1) / TAPE_BSIZE) * TAPE_BSIZE;
+         /* Ensure size is rounded */
+         } else {
+            wlen = ((wlen + TAPE_BSIZE - 1) / TAPE_BSIZE) * TAPE_BSIZE;
+         }
+      }
+      ASSERT(wlen <= block->buf_len);
+      /* Clear from end of data to end of block */
+      if (wlen-block->binbuf > 0) {
+         memset(block->bufp, 0, wlen-block->binbuf); /* clear garbage */
+      }
+      pad = wlen - block->binbuf;        /* padding or zeros written */
+      Dmsg4(150, "Zero end blk: cleared=%d buf_len=%d wlen=%d binbuf=%d\n",
+         pad, block->buf_len, wlen, block->binbuf);
+   } else {
+      pad = 0;
+   }
+
+   return wlen;              /* bytes to write */
+}
+
+/*
+ * Determine if user defined volume size has been
+ *  reached, and if so, return true, otherwise
+ *  return false.
+ */
+bool user_volume_size_reached(DCR *dcr, bool quiet)
+{
+   bool hit_max1, hit_max2;
+   uint64_t size, max_size;
+   DEVICE *dev = dcr->dev;
+   char ed1[50];
+   bool rtn = false;
+
+   Enter(dbgel);
+   size = dev->VolCatInfo.VolCatBytes + dcr->block->binbuf;
+   /* Limit maximum Volume size to value specified by user */
+   hit_max1 = (dev->max_volume_size > 0) && (size >= dev->max_volume_size);
+   hit_max2 = (dev->VolCatInfo.VolCatMaxBytes > 0) &&
+       (size >= dev->VolCatInfo.VolCatMaxBytes);
+   if (hit_max1) {
+      max_size = dev->max_volume_size;
+   } else {
+      max_size = dev->VolCatInfo.VolCatMaxBytes;
+   }
+   if (hit_max1 || hit_max2) {
+      if (!quiet) {
+         Jmsg(dcr->jcr, M_INFO, 0, _("User defined maximum volume size %s will be exceeded on device %s.\n"
+            "   Marking Volume \"%s\" as Full.\n"),
+            edit_uint64_with_commas(max_size, ed1),  dev->print_name(),
+            dev->getVolCatName());
+      }
+      Dmsg4(100, "Maximum volume size %s exceeded Vol=%s device=%s.\n"
+         "Marking Volume \"%s\" as Full.\n",
+         edit_uint64_with_commas(max_size, ed1), dev->getVolCatName(),
+         dev->print_name(), dev->getVolCatName());
+      rtn = true;
+   }
+   Dmsg1(dbgel, "Return from user_volume_size_reached=%d\n", rtn);
+   Leave(dbgel);
+   return rtn;
+}
+
+
+void reread_last_block(DCR *dcr)
+{
+#define CHECK_LAST_BLOCK
+#ifdef  CHECK_LAST_BLOCK
+   bool ok = true;
+   DEVICE *dev = dcr->dev;
+   JCR *jcr = dcr->jcr;
+   DEV_BLOCK *block = dcr->block;
+   /*
+    * If the device is a tape and it supports backspace record,
+    *   we backspace over one or two eof marks depending on
+    *   how many we just wrote, then over the last record,
+    *   then re-read it and verify that the block number is
+    *   correct.
+    */
+   if (dev->is_tape() && dev->has_cap(CAP_BSR)) {
+      /* Now back up over what we wrote and read the last block */
+      if (!dev->bsf(1)) {
+         berrno be;
+         ok = false;
+         Jmsg(jcr, M_ERROR, 0, _("Backspace file at EOT failed. ERR=%s\n"),
+              be.bstrerror(dev->dev_errno));
+      }
+      if (ok && dev->has_cap(CAP_TWOEOF) && !dev->bsf(1)) {
+         berrno be;
+         ok = false;
+         Jmsg(jcr, M_ERROR, 0, _("Backspace file at EOT failed. ERR=%s\n"),
+              be.bstrerror(dev->dev_errno));
+      }
+      /* Backspace over record */
+      if (ok && !dev->bsr(1)) {
+         berrno be;
+         ok = false;
+         Jmsg(jcr, M_ERROR, 0, _("Backspace record at EOT failed. ERR=%s\n"),
+              be.bstrerror(dev->dev_errno));
+         /*
+          *  On FreeBSD systems, if the user got here, it is likely that his/her
+          *    tape drive is "frozen".  The correct thing to do is a
+          *    rewind(), but if we do that, higher levels in cleaning up, will
+          *    most likely write the EOS record over the beginning of the
+          *    tape.  The rewind *is* done later in mount.c when another
+          *    tape is requested. Note, the clrerror() call in bsr()
+          *    calls ioctl(MTCERRSTAT), which *should* fix the problem.
+          */
+      }
+      if (ok) {
+         DEV_BLOCK *lblock = new_block(dev);
+         /* Note, this can destroy dev->errmsg */
+         dcr->block = lblock;
+         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 {
+            /*
+             * If we wrote block and the block numbers don't agree
+             *  we have a possible problem.
+             */
+            if (lblock->BlockNumber != dev->LastBlock) {
+                if (dev->LastBlock > (lblock->BlockNumber + 1)) {
+                   Jmsg(jcr, M_FATAL, 0, _(
+"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"),
+                       lblock->BlockNumber, dev->LastBlock);
+                 } else {
+                   Jmsg(jcr, M_ERROR, 0, _(
+"Re-read of last block OK, but block numbers differ. Read block=%u Want block=%u.\n"),
+                       lblock->BlockNumber, dev->LastBlock);
+                 }
+            } else {
+               Jmsg(jcr, M_INFO, 0, _("Re-read of last block succeeded.\n"));
+            }
+         }
+         free_block(lblock);
+         dcr->block = block;
+      }
+   }
+#endif
+}
+
+/*
+ * If this routine is called, we do our bookkeeping and
+ *   then assure that the volume will not be written any
+ *   more.
+ */
+bool terminate_writing_volume(DCR *dcr)
+{
+   DEVICE *dev = dcr->dev;
+   bool ok = true;
+
+   Enter(dbgel);
+
+   if (dev->is_ateot()) {
+      return ok;          /* already been here return now */
+   }
+
+   /* Create a JobMedia record to indicated end of medium */
+   dev->VolCatInfo.VolCatFiles = dev->get_file();
+   if (!dir_create_jobmedia_record(dcr)) {
+      Dmsg0(50, "Error from create JobMedia\n");
+      dev->dev_errno = EIO;
+        Mmsg2(dev->errmsg, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
+            dev->getVolCatName(), dcr->jcr->Job);
+       Jmsg(dcr->jcr, M_FATAL, 0, "%s", dev->errmsg);
+       ok = false;
+   }
+   dcr->block->write_failed = true;
+   if (dev->can_append() && !dev->weof(1)) {     /* end the tape */
+      dev->VolCatInfo.VolCatErrors++;
+      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(50, "Error writing final EOF to volume.\n");
+   }
+   if (ok) {
+      ok = write_ansi_ibm_labels(dcr, ANSI_EOV_LABEL, dev->VolHdr.VolumeName);
+   }
+
+   Dmsg2(100, "Set VolCatStatus Full size=%lld vol=%s\n",
+      dev->VolCatInfo.VolCatBytes, dev->VolCatInfo.VolCatName);
+
+   /* If still in append mode mark volume Full */
+   if (bstrcmp(dev->VolCatInfo.VolCatStatus, "Append")) {
+      dev->setVolCatStatus("Full");
+   }
+
+   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");
+   }
+   Dmsg2(150, "dir_update_volume_info vol=%s to terminate writing -- %s\n",
+      dev->getVolCatName(), ok?"OK":"ERROR");
+
+   dev->notify_newvol_in_attached_dcrs(NULL);
+
+   /* Set new file/block parameters for current dcr */
+   set_new_file_parameters(dcr);
+
+   if (ok && dev->has_cap(CAP_TWOEOF) && dev->can_append() && !dev->weof(1)) {  /* end the tape */
+      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 */
+   Dmsg2(150, "Leave terminate_writing_volume=%s -- %s\n",
+      dev->getVolCatName(), ok?"OK":"ERROR");
+   Leave(dbgel);
+   return ok;
+}
+
+/*
+ * If a new volume has been mounted since our last write
+ *   Create a JobMedia record for the previous volume written,
+ *   and set new parameters to write this volume
+ * The same applies for if we are in a new file.
+ */
+bool check_for_newvol_or_newfile(DCR *dcr)
+{
+   JCR *jcr = dcr->jcr;
+
+   if (dcr->NewVol || dcr->NewFile) {
+      if (job_canceled(jcr)) {
+         Dmsg0(100, "Canceled\n");
+         return false;
+      }
+      /* Create a jobmedia record for this job */
+      if (!dir_create_jobmedia_record(dcr)) {
+         dcr->dev->dev_errno = EIO;
+         Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
+            dcr->getVolCatName(), jcr->Job);
+         set_new_volume_parameters(dcr);
+         Dmsg0(100, "cannot create media record\n");
+         return false;
+      }
+      if (dcr->NewVol) {
+         /* Note, setting a new volume also handles any pending new file */
+         set_new_volume_parameters(dcr);
+      } else {
+         set_new_file_parameters(dcr);
+      }
+   }
+   return true;
+}
+
+/*
+ * Do bookkeeping when a new file is created on a Volume. This is
+ *  also done for disk files to generate the jobmedia records for
+ *  quick seeking.
+ */
+bool do_new_file_bookkeeping(DCR *dcr)
+{
+   DEVICE *dev = dcr->dev;
+   JCR *jcr = dcr->jcr;
+
+   /* Create a JobMedia record so restore can seek */
+   if (!dir_create_jobmedia_record(dcr)) {
+      Dmsg0(40, "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);
+      Dmsg0(40, "Call terminate_writing_volume\n");
+      terminate_writing_volume(dcr);
+      dev->dev_errno = EIO;
+      return false;
+   }
+   dev->VolCatInfo.VolCatFiles = dev->get_file();
+   if (!dir_update_volume_info(dcr, false, false)) {
+      Dmsg0(50, "Error from update_vol_info.\n");
+      Dmsg0(40, "Call terminate_writing_volume\n");
+      terminate_writing_volume(dcr);
+      dev->dev_errno = EIO;
+      return false;
+   }
+   Dmsg0(100, "dir_update_volume_info max file size -- OK\n");
+
+   dev->notify_newfile_in_attached_dcrs();
+
+   /* Set new file/block parameters for current dcr */
+   set_new_file_parameters(dcr);
+   return true;
+}
diff --git a/src/stored/bls.c b/src/stored/bls.c
index 771f855..3ee9604 100644
--- a/src/stored/bls.c
+++ b/src/stored/bls.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *  Dumb program to do an "ls" of a Bacula 1.0 mortal file.
- * 
+ *
  *  Kern Sibbald, MM
  *
  */
@@ -37,8 +25,6 @@
 #include "stored.h"
 #include "findlib/find.h"
 
-/* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) { return 1; }
 extern bool parse_sd_config(CONFIG *config, const char *configfile, int exit_code);
 
 static void do_blocks(char *infname);
@@ -60,6 +46,7 @@ static uint32_t num_files = 0;
 static ATTR *attr;
 static CONFIG *config;
 
+void *start_heap;
 #define CONFIG_FILE "bacula-sd.conf"
 char *configfile = NULL;
 STORES *me = NULL;                    /* our Global resource */
@@ -218,6 +205,8 @@ int main (int argc, char *argv[])
 
    config = new_config_parser();
    parse_sd_config(config, configfile, M_ERROR_TERM);
+   setup_me();
+   load_sd_plugins(me->plugin_directory);
 
    if (ff->included_files_list == NULL) {
       add_fname_to_include_list(ff, 0, "/");
@@ -227,7 +216,7 @@ int main (int argc, char *argv[])
       if (bsrName) {
          bsr = parse_bsr(NULL, bsrName);
       }
-      jcr = setup_jcr("bls", argv[i], bsr, VolumeName, 1); /* acquire for read */
+      jcr = setup_jcr("bls", argv[i], bsr, VolumeName, SD_READ);
       if (!jcr) {
          exit(1);
       }
@@ -284,7 +273,7 @@ static void do_blocks(char *infname)
    char buf1[100], buf2[100];
    for ( ;; ) {
       if (!dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK)) {
-         Dmsg1(100, "!read_block(): ERR=%s\n", dev->bstrerror());
+         Dmsg1(100, "!read_block(): ERR=%s\n", dev->print_errmsg());
          if (dev->at_eot()) {
             if (!mount_next_read_volume(dcr)) {
                Jmsg(jcr, M_INFO, 0, _("Got EOM at file %u on device %s, Volume \"%s\"\n"),
@@ -305,7 +294,7 @@ static void do_blocks(char *infname)
             Dmsg0(20, "read_record got eof. try again\n");
             continue;
          } else if (dev->is_short_block()) {
-            Jmsg(jcr, M_INFO, 0, "%s", dev->errmsg);
+            Jmsg(jcr, M_INFO, 0, "%s", dev->print_errmsg());
             continue;
          } else {
             /* I/O error */
@@ -374,10 +363,18 @@ static void do_ls(char *infname)
  */
 static bool record_cb(DCR *dcr, DEV_RECORD *rec)
 {
-   if (rec->FileIndex < 0) {
-      get_session_record(dev, rec, &sessrec);
+   if (verbose && rec->FileIndex < 0) {
+      dump_label_record(dcr->dev, rec, verbose);
       return true;
    }
+   if (verbose) {
+      char buf1[100], buf2[100];
+      Pmsg6(000, "Record: FI=%s SessId=%d Strm=%s len=%u remlen=%d data_len=%d\n",
+         FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
+         stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_bytes, rec->remlen,
+         rec->data_len);
+   }
+
    /* File Attributes stream */
    if (rec->maskedStream == STREAM_UNIX_ATTRIBUTES ||
        rec->maskedStream == STREAM_UNIX_ATTRIBUTES_EX) {
@@ -396,7 +393,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
 
       if (file_is_included(ff, attr->fname) && !file_is_excluded(ff, attr->fname)) {
          if (verbose) {
-            Pmsg5(-1, _("FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"),
+            Pmsg5(000, _("FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"),
                   rec->FileIndex, rec->VolSessionId, rec->VolSessionTime, rec->Stream, rec->data_len);
          }
          print_ls_output(jcr, attr);
@@ -406,11 +403,11 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
       char data[100];
       int len = MIN(rec->data_len+1, sizeof(data));
       bstrncpy(data, rec->data, len);
-      Pmsg1(000, "Plugin data: %s\n", data);
+      Dmsg1(100, "Plugin data: %s\n", data);
    } else if (rec->Stream == STREAM_RESTORE_OBJECT) {
-      Pmsg0(000, "Restore Object record\n");
+      Dmsg0(100, "Restore Object record\n");
    }
-      
+
    return true;
 }
 
@@ -451,7 +448,7 @@ static void get_session_record(DEVICE *dev, DEV_RECORD *rec, SESSION_LABEL *sess
       break;
    default:
       rtype = _("Unknown");
-      Dmsg1(10, "FI rtype=%d unknown\n", rec->FileIndex);     
+      Dmsg1(10, "FI rtype=%d unknown\n", rec->FileIndex);
       break;
    }
    Dmsg5(10, "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n",
@@ -471,9 +468,9 @@ bool    dir_ask_sysop_to_create_appendable_volume(DCR *dcr) { return 1; }
 bool    dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec) { return 1;}
 bool    dir_send_job_status(JCR *jcr) {return 1;}
 int     generate_job_event(JCR *jcr, const char *event) { return 1; }
-       
 
-bool dir_ask_sysop_to_mount_volume(DCR *dcr, int /*mode*/)
+
+bool dir_ask_sysop_to_mount_volume(DCR *dcr, bool /*writing*/)
 {
    DEVICE *dev = dcr->dev;
    fprintf(stderr, _("Mount Volume \"%s\" on device %s and press return when ready: "),
@@ -487,7 +484,9 @@ bool dir_get_volume_info(DCR *dcr, enum get_vol_info_rw  writing)
 {
    Dmsg0(100, "Fake dir_get_volume_info\n");
    dcr->setVolCatName(dcr->VolumeName);
+#ifdef BUILD_DVD
    dcr->VolCatInfo.VolCatParts = find_num_dvd_parts(dcr);
+#endif
    Dmsg2(500, "Vol=%s num_parts=%d\n", dcr->getVolCatName(), dcr->VolCatInfo.VolCatParts);
    return 1;
 }
diff --git a/src/stored/bscan.c b/src/stored/bscan.c
index e0f635f..0a02971 100644
--- a/src/stored/bscan.c
+++ b/src/stored/bscan.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -40,9 +28,7 @@
 #include "findlib/find.h"
 #include "cats/cats.h"
 #include "cats/sql_glue.h"
- 
-/* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) { return 1; }
+
 extern bool parse_sd_config(CONFIG *config, const char *configfile, int exit_code);
 
 /* Forward referenced functions */
@@ -104,6 +90,8 @@ static int num_files = 0;
 
 static CONFIG *config;
 #define CONFIG_FILE "bacula-sd.conf"
+
+void *start_heap;
 char *configfile = NULL;
 STORES *me = NULL;                    /* our Global resource */
 bool forge_on = false;                /* proceed inspite of I/O errors */
@@ -135,7 +123,8 @@ PROG_COPYRIGHT
 "       -v                verbose\n"
 "       -V <Volumes>      specify Volume names (separated by |)\n"
 "       -w <dir>          specify working directory (default from conf file)\n"
-"       -?                print this message\n\n"), 2001, VERSION, BDATE);
+"       -?                print this message\n\n"),
+      2001, VERSION, BDATE);
    exit(1);
 }
 
@@ -190,7 +179,7 @@ int main (int argc, char *argv[])
       case 'h':
          db_host = optarg;
          break;
-         
+
       case 't':
          db_port = atoi(optarg);
          break;
@@ -255,14 +244,9 @@ int main (int argc, char *argv[])
 
    config = new_config_parser();
    parse_sd_config(config, configfile, M_ERROR_TERM);
-   LockRes();
-   me = (STORES *)GetNextRes(R_STORAGE, NULL);
-   if (!me) {
-      UnlockRes();
-      Emsg1(M_ERROR_TERM, 0, _("No Storage resource defined in %s. Cannot continue.\n"),
-         configfile);
-   }
-   UnlockRes();
+   setup_me();
+   load_sd_plugins(me->plugin_directory);
+
    /* Check if -w option given, otherwise use resource for working directory */
    if (wd) {
       working_directory = wd;
@@ -283,7 +267,7 @@ int main (int argc, char *argv[])
          working_directory);
    }
 
-   bjcr = setup_jcr("bscan", argv[0], bsr, VolumeName, 1); /* read device */
+   bjcr = setup_jcr("bscan", argv[0], bsr, VolumeName, SD_READ);
    if (!bjcr) {
       exit(1);
    }
@@ -293,7 +277,7 @@ int main (int argc, char *argv[])
       struct stat sb;
       fstat(dev->fd(), &sb);
       currentVolumeSize = sb.st_size;
-      Pmsg1(000, _("First Volume Size = %s\n"), 
+      Pmsg1(000, _("First Volume Size = %s\n"),
          edit_uint64(currentVolumeSize, ed1));
    }
 
@@ -335,7 +319,7 @@ static bool bscan_mount_next_read_volume(DCR *dcr)
    Dmsg1(100, "Walk attached jcrs. Volume=%s\n", dev->getVolCatName());
    foreach_dlist(mdcr, dev->attached_dcrs) {
       JCR *mjcr = mdcr->jcr;
-      Dmsg1(000, "========== JobId=%u ========\n", mjcr->JobId);
+      Dmsg1(100, "========== JobId=%u ========\n", mjcr->JobId);
       if (mjcr->JobId == 0) {
          continue;
       }
@@ -369,7 +353,7 @@ static bool bscan_mount_next_read_volume(DCR *dcr)
       struct stat sb;
       fstat(dev->fd(), &sb);
       currentVolumeSize = sb.st_size;
-      Pmsg1(000, _("First Volume Size = %s\n"), 
+      Pmsg1(000, _("First Volume Size = %s\n"),
          edit_uint64(currentVolumeSize, ed1));
    }
    return stat;
@@ -451,7 +435,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
          bstrncpy(pr.Name, dev->VolHdr.PoolName, sizeof(pr.Name));
          bstrncpy(pr.PoolType, dev->VolHdr.PoolType, sizeof(pr.PoolType));
          num_pools++;
-         if (db_get_pool_record(bjcr, db, &pr)) {
+         if (db_get_pool_numvols(bjcr, db, &pr)) {
             if (verbose) {
                Pmsg1(000, _("Pool record for %s found in DB.\n"), pr.Name);
             }
@@ -554,15 +538,15 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
          bstrncpy(dcr->pool_type, label.PoolType, sizeof(dcr->pool_type));
          bstrncpy(dcr->pool_name, label.PoolName, sizeof(dcr->pool_name));
 
-         /* Look for existing Job Media records for this job.  If there are 
-            any, no new ones need be created.  This may occur if File 
+         /* Look for existing Job Media records for this job.  If there are
+            any, no new ones need be created.  This may occur if File
             Retention has expired before Job Retention, or if the volume
             has already been bscan'd */
          Mmsg(sql_buffer, "SELECT count(*) from JobMedia where JobId=%d", jr.JobId);
-         db_sql_query(db, sql_buffer.c_str(), db_int64_handler, &jmr_count); 
+         db_sql_query(db, sql_buffer.c_str(), db_int64_handler, &jmr_count);
          if( jmr_count.value > 0 ) {
             //FIELD NAME TO BE DEFINED/CONFIRMED (maybe a struct?)
-            mjcr->bscan_insert_jobmedia_records = false; 
+            mjcr->bscan_insert_jobmedia_records = false;
          } else {
             mjcr->bscan_insert_jobmedia_records = true;
          }
@@ -612,7 +596,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
          /* Create JobMedia record */
          mjcr->read_dcr->VolLastIndex = dcr->VolLastIndex;
          if( mjcr->bscan_insert_jobmedia_records ) {
-            create_jobmedia_record(db, mjcr); 
+            create_jobmedia_record(db, mjcr);
          }
          free_dcr(mjcr->read_dcr);
          free_jcr(mjcr);
@@ -740,11 +724,11 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
    case STREAM_ENCRYPTED_FILE_COMPRESSED_DATA:
    case STREAM_ENCRYPTED_WIN32_GZIP_DATA:
    case STREAM_ENCRYPTED_WIN32_COMPRESSED_DATA:
-      /* No correct, we should (decrypt and) expand it 
-         done using JCR 
+      /* No correct, we should (decrypt and) expand it
+         done using JCR
       */
       mjcr->JobBytes += rec->data_len;
-      free_jcr(mjcr);                 
+      free_jcr(mjcr);
       break;
 
    case STREAM_SPARSE_GZIP_DATA:
@@ -874,14 +858,8 @@ static void bscan_free_jcr(JCR *jcr)
 {
    Dmsg0(200, "Start bscan free_jcr\n");
 
-   if (jcr->file_bsock) {
-      Dmsg0(200, "Close File bsock\n");
-      jcr->file_bsock->close();
-   }
-   if (jcr->store_bsock) {
-      Dmsg0(200, "Close Store bsock\n");
-      jcr->store_bsock->close();
-   }
+   free_bsock(jcr->file_bsock);
+   free_bsock(jcr->store_bsock);
    if (jcr->RestoreBootstrap) {
       free(jcr->RestoreBootstrap);
    }
@@ -1041,7 +1019,7 @@ static int create_pool_record(B_DB *db, POOL_DBR *pr)
 static int create_client_record(B_DB *db, CLIENT_DBR *cr)
 {
    /*
-    * Note, update_db can temporarily be set false while 
+    * Note, update_db can temporarily be set false while
     * updating the database, so we must ensure that ClientId is non-zero.
     */
    if (!update_db) {
@@ -1197,7 +1175,7 @@ static int update_job_record(B_DB *db, JOB_DBR *jr, SESSION_LABEL *elabel,
       return 0;
    }
    if (verbose) {
-      Pmsg3(000, _("Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"), 
+      Pmsg3(000, _("Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"),
          jr->JobId, job_level_to_str(mjcr->getJobLevel()), jr->JobStatus);
    }
    if (verbose > 1) {
@@ -1352,7 +1330,7 @@ static JCR *create_jcr(JOB_DBR *jr, DEV_RECORD *rec, uint32_t JobId)
    jobjcr->VolSessionId = rec->VolSessionId;
    jobjcr->VolSessionTime = rec->VolSessionTime;
    jobjcr->ClientId = jr->ClientId;
-   jobjcr->dcr = jobjcr->read_dcr = new_dcr(jobjcr, NULL, dev);
+   jobjcr->dcr = jobjcr->read_dcr = new_dcr(jobjcr, NULL, dev, SD_READ);
 
    return jobjcr;
 }
@@ -1366,7 +1344,7 @@ bool    dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec) { return 1;}
 bool    dir_send_job_status(JCR *jcr) {return 1;}
 int     generate_job_event(JCR *jcr, const char *event) { return 1; }
 
-bool dir_ask_sysop_to_mount_volume(DCR *dcr, int /*mode*/)
+bool dir_ask_sysop_to_mount_volume(DCR *dcr, bool /*writing*/)
 {
    DEVICE *dev = dcr->dev;
    Dmsg0(20, "Enter dir_ask_sysop_to_mount_volume\n");
@@ -1378,11 +1356,13 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr, int /*mode*/)
    return true;
 }
 
-bool dir_get_volume_info(DCR *dcr, enum get_vol_info_rw  writing)
+bool dir_get_volume_info(DCR *dcr, enum get_vol_info_rw writing)
 {
    Dmsg0(100, "Fake dir_get_volume_info\n");
    dcr->setVolCatName(dcr->VolumeName);
+#ifdef BUILD_DVD
    dcr->VolCatInfo.VolCatParts = find_num_dvd_parts(dcr);
+#endif
    Dmsg2(500, "Vol=%s num_parts=%d\n", dcr->getVolCatName(), dcr->VolCatInfo.VolCatParts);
    return 1;
 }
diff --git a/src/stored/bsr.h b/src/stored/bsr.h
index 11af2cc..577a268 100644
--- a/src/stored/bsr.h
+++ b/src/stored/bsr.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * BootStrap record definition -- for restoring files.
diff --git a/src/stored/btape.c b/src/stored/btape.c
index a3f751c..109294b 100644
--- a/src/stored/btape.c
+++ b/src/stored/btape.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -43,17 +31,16 @@
 #include "stored.h"
 
 #ifdef USE_VTAPE
-#include "vtape.h"
+#include "vtape_dev.h"
 #endif
 
-/* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) { return 1; }
 extern bool parse_sd_config(CONFIG *config, const char *configfile, int exit_code);
 
 /* External subroutines */
 extern void free_config_resources();
 
 /* Exported variables */
+void *start_heap;
 int quit = 0;
 char buf[100000];
 int bsize = TAPE_BSIZE;
@@ -166,7 +153,7 @@ int main(int margc, char *margv[])
    uint32_t x32, y32;
    uint64_t x64, y64;
    char buf[1000];
-   
+
    setlocale(LC_ALL, "");
    bindtextdomain("bacula", LOCALEDIR);
    textdomain("bacula");
@@ -198,7 +185,7 @@ int main(int margc, char *margv[])
    bsnprintf(buf, sizeof(buf), "%" llu, x64);
    i = bsscanf(buf, "%llu", &y64);
    if (i != 1 || x64 != y64) {
-      Pmsg3(-1, _("64 bit printf/scanf problem. i=%d x64=%" llu " y64=%" llu "\n"), 
+      Pmsg3(-1, _("64 bit printf/scanf problem. i=%d x64=%" llu " y64=%" llu "\n"),
             i, x64, y64);
       exit(1);
    }
@@ -273,6 +260,8 @@ int main(int margc, char *margv[])
 
    config = new_config_parser();
    parse_sd_config(config, configfile, M_ERROR_TERM);
+   setup_me();
+   load_sd_plugins(me->plugin_directory);
 
    /* See if we can open a device */
    if (margc == 0) {
@@ -285,7 +274,7 @@ int main(int margc, char *margv[])
       exit(1);
    }
 
-   jcr = setup_jcr("btape", margv[0], bsr, NULL, 0); /* write */
+   jcr = setup_jcr("btape", margv[0], bsr, NULL, SD_APPEND);
    if (!jcr) {
       exit(1);
    }
@@ -321,14 +310,6 @@ static void terminate_btape(int stat)
    free_jcr(jcr);
    jcr = NULL;
 
-   if (configfile) {
-      free(configfile);
-   }
-   if (config) {
-      config->free_resources();
-      free(config);
-      config = NULL;
-   }
    if (args) {
       free_pool_memory(args);
       args = NULL;
@@ -349,11 +330,22 @@ static void terminate_btape(int stat)
       dev->term();
    }
 
-   if (debug_level > 10)
+   if (configfile) {
+      free(configfile);
+   }
+
+   if (config) {
+      config->free_resources();
+      free(config);
+      config = NULL;
+   }
+
+   if (chk_dbglvl(10))
       print_memory_pool_stats();
 
    if (this_block) {
       free_block(this_block);
+      this_block = NULL;
    }
 
    stop_watchdog();
@@ -381,7 +373,7 @@ static void print_total_speed()
    char ec1[50], ec2[50];
    uint64_t rate = total_size / total_time;
    Pmsg2(000, _("Total Volume bytes=%sB. Total Write rate = %sB/s\n"),
-         edit_uint64_with_suffix(total_size, ec1), 
+         edit_uint64_with_suffix(total_size, ec1),
          edit_uint64_with_suffix(rate, ec2));
 }
 
@@ -467,10 +459,10 @@ static bool open_the_device()
    bool ok = true;
 
    block = new_block(dev);
-   dev->rLock();
+   dev->rLock(false);
    Dmsg1(200, "Opening device %s\n", dcr->VolumeName);
    if (!dev->open(dcr, OPEN_READ_WRITE)) {
-      Emsg1(M_FATAL, 0, _("dev open failed: %s\n"), dev->errmsg);
+      Emsg1(M_FATAL, 0, _("dev open failed: %s\n"), dev->print_errmsg());
       ok = false;
       goto bail_out;
    }
@@ -517,7 +509,7 @@ static void labelcmd()
  */
 static void readlabelcmd()
 {
-   int save_debug_level = debug_level;
+   int64_t save_debug_level = debug_level;
    int stat;
 
    stat = read_dev_volume_label(dcr);
@@ -531,6 +523,9 @@ static void readlabelcmd()
    case VOL_IO_ERROR:
       Pmsg1(0, _("I/O error on device: ERR=%s"), dev->bstrerror());
       break;
+   case VOL_TYPE_ERROR:
+      Pmsg1(0, _("Volume type error: ERR=%s\n"), dev->print_errmsg());
+      break;
    case VOL_NAME_ERROR:
       Pmsg0(0, _("Volume name error\n"));
       break;
@@ -858,8 +853,7 @@ static bool re_read_block_test()
    }
    Pmsg0(0, _("Backspace record OK.\n"));
    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));
+      Pmsg1(0, _("Read block failed! ERR=%s\n"), dev->print_errmsg());
       goto bail_out;
    }
    memset(rec->data, 0, rec->data_len);
@@ -904,7 +898,7 @@ static bool speed_test_raw(fill_mode_t mode, uint64_t nb_gb, uint32_t nb)
    init_total_speed();
    fill_buffer(mode, block->buf, block->buf_len);
 
-   Pmsg3(0, _("Begin writing %i files of %sB with raw blocks of %u bytes.\n"), 
+   Pmsg3(0, _("Begin writing %i files of %sB with raw blocks of %u bytes.\n"),
          nb, edit_uint64_with_suffix(nb_gb, ed1), block->buf_len);
 
    for (uint32_t j=0; j<nb; j++) {
@@ -959,7 +953,7 @@ static bool speed_test_bacula(fill_mode_t mode, uint64_t nb_gb, uint32_t nb)
 
    fill_buffer(mode, rec->data, rec->data_len);
 
-   Pmsg3(0, _("Begin writing %i files of %sB with blocks of %u bytes.\n"), 
+   Pmsg3(0, _("Begin writing %i files of %sB with blocks of %u bytes.\n"),
          nb, edit_uint64_with_suffix(nb_gb, ed1), block->buf_len);
 
    for (uint32_t j=0; j<nb; j++) {
@@ -1012,10 +1006,10 @@ static int btape_find_arg(const char *keyword)
 #define ok(a)    if (!(a)) return
 
 /*
- * For file (/dev/zero, /dev/urandom, normal?) 
+ * For file (/dev/zero, /dev/urandom, normal?)
  *    use raw mode to write a suite of 3 files of 1, 2, 4, 8 GB
  *    use qfill mode to write the same
- * 
+ *
  */
 static void speed_test()
 {
@@ -1054,7 +1048,7 @@ static void speed_test()
 
    if (do_raw) {
       dev->rewind(dcr);
-      if (do_zero) { 
+      if (do_zero) {
          Pmsg0(0, _("Test with zero data, should give the "
                     "maximum throughput.\n"));
          if (file_size) {
@@ -1066,7 +1060,7 @@ static void speed_test()
          }
       }
 
-      if (do_random) { 
+      if (do_random) {
          Pmsg0(0, _("Test with random data, should give the minimum "
                     "throughput.\n"));
          if (file_size) {
@@ -1085,14 +1079,14 @@ static void speed_test()
          Pmsg0(0, _("Test with zero data and bacula block structure.\n"));
          if (file_size) {
             ok(speed_test_bacula(FILL_ZERO, file_size, nb_file));
-         } else { 
+         } else {
             ok(speed_test_bacula(FILL_ZERO, 1, nb_file));
             ok(speed_test_bacula(FILL_ZERO, 2, nb_file));
                ok(speed_test_bacula(FILL_ZERO, 4, nb_file));
          }
       }
-   
-      if (do_random) { 
+
+      if (do_random) {
          Pmsg0(0, _("Test with random data, should give the minimum "
                     "throughput.\n"));
          if (file_size) {
@@ -1120,8 +1114,9 @@ static bool write_two_files()
    /*
     * Set big max_file_size so that write_record_to_block
     * doesn't insert any additional EOF marks
+    * Do calculation in 64 bits to avoid overflow.  
     */
-   dev->max_file_size = 2 * num_recs * dev->max_block_size;
+   dev->max_file_size = (uint64_t)2 * (uint64_t)num_recs * (uint64_t)dev->max_block_size;
    Pmsg2(-1, _("\n=== Write, rewind, and re-read test ===\n\n"
       "I'm going to write %d records and an EOF\n"
       "then write %d records and an EOF, then rewind,\n"
@@ -1223,14 +1218,13 @@ static bool write_read_test()
    for (i=1; i<=2*num_recs; i++) {
 read_again:
       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"));
             if (i == num_recs+1) {
                goto read_again;
             }
          }
-         Pmsg2(0, _("Read block %d failed! ERR=%s\n"), i, be.bstrerror(dev->dev_errno));
+         Pmsg2(0, _("Read block %d failed! ERR=%s\n"), i, dev->print_errmsg());
          goto bail_out;
       }
       memset(rec->data, 0, rec->data_len);
@@ -1258,7 +1252,7 @@ read_again:
 bail_out:
    free_record(rec);
    if (!rc) {
-      exit_code = 1;   
+      exit_code = 1;
    }
    return rc;
 }
@@ -1342,7 +1336,6 @@ static bool position_test()
       }
 read_again:
       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"));
             if (!got_eof) {
@@ -1351,7 +1344,7 @@ read_again:
             }
          }
          Pmsg4(0, _("Read block %d failed! file=%d blk=%d. ERR=%s\n\n"),
-            recno, file, blk, be.bstrerror(dev->dev_errno));
+            recno, file, blk, dev->print_errmsg());
          Pmsg0(0, _("This may be because the tape drive block size is not\n"
                     " set to variable blocking as normally used by Bacula.\n"
                     " Please see the Tape Testing chapter in the manual and \n"
@@ -1493,7 +1486,7 @@ try_again:
    dcr->VolCatInfo.Slot = slot;
    /* Find out what is loaded, zero means device is unloaded */
    Pmsg0(-1, _("3301 Issuing autochanger \"loaded\" command.\n"));
-   changer = edit_device_codes(dcr, changer, 
+   changer = edit_device_codes(dcr, changer,
                 dcr->device->changer_command, "loaded");
    status = run_program(changer, timeout, results);
    Dmsg3(100, "run_prog: %s stat=%d result=\"%s\"\n", changer, status, results);
@@ -1517,7 +1510,7 @@ try_again:
       dev->close();
       Pmsg2(-1, _("3302 Issuing autochanger \"unload %d %d\" command.\n"),
          loaded, dev->drive_index);
-      changer = edit_device_codes(dcr, changer, 
+      changer = edit_device_codes(dcr, changer,
                    dcr->device->changer_command, "unload");
       status = run_program(changer, timeout, results);
       Pmsg2(-1, _("unload status=%s %d\n"), status==0?_("OK"):_("Bad"), status);
@@ -1536,7 +1529,7 @@ try_again:
    dcr->VolCatInfo.Slot = slot;
    Pmsg2(-1, _("3303 Issuing autochanger \"load %d %d\" command.\n"),
       slot, dev->drive_index);
-   changer = edit_device_codes(dcr, changer, 
+   changer = edit_device_codes(dcr, changer,
                 dcr->device->changer_command, "load");
    Dmsg1(100, "Changer=%s\n", changer);
    dev->close();
@@ -2092,7 +2085,7 @@ static void scan_blocks()
             printf(_("Short block read.\n"));
             continue;
          }
-         printf(_("Error reading block. ERR=%s\n"), dev->bstrerror());
+         printf(_("Error reading block. ERR=%s\n"), dev->print_errmsg());
          goto bail_out;
       }
       if (block->block_len != block_size) {
@@ -2136,7 +2129,7 @@ bail_out:
 
 static void statcmd()
 {
-   int debug = debug_level;
+   int64_t debug = debug_level;
    debug_level = 30;
    Pmsg2(0, _("Device status: %u. ERR=%s\n"), status_dev(dev), dev->bstrerror());
 #ifdef xxxx
@@ -2270,7 +2263,7 @@ static void fillcmd()
       mix_buffer(FILL_RANDOM, rec.data, rec.data_len);
 
       Dmsg4(250, "before write_rec FI=%d SessId=%d Strm=%s len=%d\n",
-         rec.FileIndex, rec.VolSessionId, 
+         rec.FileIndex, rec.VolSessionId,
          stream_to_ascii(buf1, rec.Stream, rec.FileIndex),
          rec.data_len);
 
@@ -2334,7 +2327,7 @@ static void fillcmd()
       /* Get out after writing 1000 blocks to the second tape */
       if (BlockNumber > 1000 && stop != 0) {      /* get out */
          char ed1[50];
-         Pmsg1(-1, "Done writing %s records ...\n", 
+         Pmsg1(-1, "Done writing %s records ...\n",
              edit_uint64_with_commas(write_count, ed1));
          break;
       }
@@ -2530,7 +2523,7 @@ static bool do_unfill()
    dev->close();
    dev->num_writers = 0;
    if (!acquire_device_for_read(dcr)) {
-      Pmsg1(-1, "%s", dev->errmsg);
+      Pmsg1(-1, "%s", dev->print_errmsg());
       goto bail_out;
    }
    /*
@@ -2555,7 +2548,7 @@ static bool do_unfill()
    }
    Pmsg1(-1, _("Reading block %u.\n"), last_block_num);
    if (!dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK)) {
-      Pmsg1(-1, _("Error reading block: ERR=%s\n"), dev->bstrerror());
+      Pmsg1(-1, _("Error reading block: ERR=%s\n"), dev->print_errmsg());
       goto bail_out;
    }
    if (compare_blocks(last_block, block)) {
@@ -2593,7 +2586,7 @@ static bool do_unfill()
 
    dev->clear_read();
    if (!acquire_device_for_read(dcr)) {
-      Pmsg1(-1, "%s", dev->errmsg);
+      Pmsg1(-1, "%s", dev->print_errmsg());
       goto bail_out;
    }
 
@@ -2607,7 +2600,7 @@ static bool do_unfill()
    }
    Pmsg1(-1, _("Reading block %d.\n"), dev->block_num);
    if (!dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK)) {
-      Pmsg1(-1, _("Error reading block: ERR=%s\n"), dev->bstrerror());
+      Pmsg1(-1, _("Error reading block: ERR=%s\n"), dev->print_errmsg());
       goto bail_out;
    }
    if (compare_blocks(first_block, block)) {
@@ -2623,7 +2616,7 @@ static bool do_unfill()
    }
    Pmsg1(-1, _("Reading block %d.\n"), dev->block_num);
    if (!dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK)) {
-      Pmsg1(-1, _("Error reading block: ERR=%s\n"), dev->bstrerror());
+      Pmsg1(-1, _("Error reading block: ERR=%s\n"), dev->print_errmsg());
       goto bail_out;
    }
    if (compare_blocks(last_block, block)) {
@@ -2635,6 +2628,7 @@ bail_out:
    free_block(last_block1);
    free_block(last_block2);
    free_block(first_block);
+   last_block = first_block = last_block1 = last_block2 = NULL;
    return rc;
 }
 
@@ -2699,7 +2693,7 @@ static int flush_block(DEV_BLOCK *block, int dump)
    DEV_BLOCK *tblock;
    uint32_t this_file, this_block_num;
 
-   dev->rLock();
+   dev->rLock(false);
    if (!this_block) {
       this_block = new_block(dev);
    }
@@ -2745,7 +2739,7 @@ static int flush_block(DEV_BLOCK *block, int dump)
       vol_size = dev->VolCatInfo.VolCatBytes;
       Pmsg4(000, _("End of tape %d:%d. Volume Bytes=%s. Write rate = %sB/s\n"),
          dev->file, dev->block_num,
-         edit_uint64_with_commas(dev->VolCatInfo.VolCatBytes, ec1), 
+         edit_uint64_with_commas(dev->VolCatInfo.VolCatBytes, ec1),
          edit_uint64_with_suffix(rate, ec2));
 
       if (simple) {
@@ -2878,7 +2872,7 @@ static void rawfill_cmd()
    berrno be;
    printf(_("Write failed at block %u. stat=%d ERR=%s\n"), block_num, stat,
       be.bstrerror(my_errno));
-   
+
    print_speed(jcr->JobBytes);
    weofcmd();
 }
@@ -3035,14 +3029,14 @@ bool dir_find_next_appendable_volume(DCR *dcr)
    return dcr->VolumeName[0] != 0;
 }
 
-bool dir_ask_sysop_to_mount_volume(DCR *dcr, int /* mode */)
+bool dir_ask_sysop_to_mount_volume(DCR *dcr, bool /* writing */)
 {
    DEVICE *dev = dcr->dev;
    Dmsg0(20, "Enter dir_ask_sysop_to_mount_volume\n");
    if (dcr->VolumeName[0] == 0) {
       return dir_ask_sysop_to_create_appendable_volume(dcr);
    }
-   Pmsg1(-1, "%s", dev->errmsg);           /* print reason */
+   Pmsg1(-1, "%s", dev->print_errmsg());           /* print reason */
    if (dcr->VolumeName[0] == 0 || strcmp(dcr->VolumeName, "TestVolume2") == 0) {
       fprintf(stderr, _("Mount second Volume on device %s and press return when ready: "),
          dev->print_name());
@@ -3107,7 +3101,7 @@ static bool my_mount_next_read_volume(DCR *dcr)
    }
    rate = VolBytes / now;
    Pmsg3(-1, _("Read block=%u, VolBytes=%s rate=%sB/s\n"), block->BlockNumber,
-            edit_uint64_with_commas(VolBytes, ec1), 
+            edit_uint64_with_commas(VolBytes, ec1),
             edit_uint64_with_suffix(rate, ec2));
 
    if (strcmp(dcr->VolumeName, "TestVolume2") == 0) {
diff --git a/src/stored/butil.c b/src/stored/butil.c
index f6385f7..471d328 100644
--- a/src/stored/butil.c
+++ b/src/stored/butil.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -36,15 +24,14 @@
  *    daemon because we interact more directly with the user
  *    i.e. printf, ...
  *
- *   Version $Id$
  */
 
 #include "bacula.h"
 #include "stored.h"
 
 /* Forward referenced functions */
-static DCR *setup_to_access_device(JCR *jcr, char *dev_name, const char *VolumeName, int mode);
-static DEVRES *find_device_res(char *device_name, int mode);
+static DCR *setup_to_access_device(JCR *jcr, char *dev_name, const char *VolumeName, bool writing);
+static DEVRES *find_device_res(char *device_name, bool writing);
 static void my_free_jcr(JCR *jcr);
 
 /* Imported variables -- eliminate some day */
@@ -78,11 +65,26 @@ char *rec_state_bits_to_str(DEV_RECORD *rec)
 #endif
 
 /*
+ * Setup a pointer to my resource me
+ */
+void setup_me()
+{
+   LockRes();
+   me = (STORES *)GetNextRes(R_STORAGE, NULL);
+   if (!me) {
+      UnlockRes();
+      Emsg1(M_ERROR_TERM, 0, _("No Storage resource defined in %s. Cannot continue.\n"),
+         configfile);
+   }
+   UnlockRes();
+}
+
+/*
  * Setup a "daemon" JCR for the various standalone
  *  tools (e.g. bls, bextract, bscan, ...)
  */
 JCR *setup_jcr(const char *name, char *dev_name, BSR *bsr,
-               const char *VolumeName, int mode)
+               const char *VolumeName, bool writing)
 {
    DCR *dcr;
    JCR *jcr = new_jcr(sizeof(JCR), my_free_jcr);
@@ -105,12 +107,10 @@ JCR *setup_jcr(const char *name, char *dev_name, BSR *bsr,
    pm_strcpy(jcr->fileset_name, "Dummy.fileset.name");
    jcr->fileset_md5 = get_pool_memory(PM_FNAME);
    pm_strcpy(jcr->fileset_md5, "Dummy.fileset.md5");
-   jcr->comment = get_pool_memory(PM_MESSAGE);
-   *jcr->comment = '\0';
    init_autochangers();
    create_volume_lists();
 
-   dcr = setup_to_access_device(jcr, dev_name, VolumeName, mode);
+   dcr = setup_to_access_device(jcr, dev_name, VolumeName, writing);
    if (!dcr) {
       return NULL;
    }
@@ -127,8 +127,8 @@ JCR *setup_jcr(const char *name, char *dev_name, BSR *bsr,
  *   If the caller wants read access, acquire the device, otherwise,
  *     the caller will do it.
  */
-static DCR *setup_to_access_device(JCR *jcr, char *dev_name, 
-              const char *VolumeName, int mode)
+static DCR *setup_to_access_device(JCR *jcr, char *dev_name,
+              const char *VolumeName, bool writing)
 {
    DEVICE *dev;
    char *p;
@@ -164,7 +164,7 @@ static DCR *setup_to_access_device(JCR *jcr, char *dev_name,
       }
    }
 
-   if ((device=find_device_res(dev_name, mode)) == NULL) {
+   if ((device=find_device_res(dev_name, writing)) == NULL) {
       Jmsg2(jcr, M_FATAL, 0, _("Cannot find device \"%s\" in config file %s.\n"),
            dev_name, configfile);
       return NULL;
@@ -176,7 +176,7 @@ static DCR *setup_to_access_device(JCR *jcr, char *dev_name,
       return NULL;
    }
    device->dev = dev;
-   jcr->dcr = dcr = new_dcr(jcr, NULL, dev);
+   jcr->dcr = dcr = new_dcr(jcr, NULL, dev, writing);
    if (VolName[0]) {
       bstrncpy(dcr->VolumeName, VolName, sizeof(dcr->VolumeName));
    }
@@ -184,7 +184,7 @@ static DCR *setup_to_access_device(JCR *jcr, char *dev_name,
 
    create_restore_volume_list(jcr);
 
-   if (mode) {                        /* read only access? */
+   if (!writing) {                      /* read only access? */
       Dmsg0(100, "Acquire device for read\n");
       if (!acquire_device_for_read(dcr)) {
          return NULL;
@@ -245,7 +245,7 @@ static void my_free_jcr(JCR *jcr)
  * Returns: NULL on failure
  *          Device resource pointer on success
  */
-static DEVRES *find_device_res(char *device_name, int read_access)
+static DEVRES *find_device_res(char *device_name, bool write_access)
 {
    bool found = false;
    DEVRES *device;
@@ -283,11 +283,10 @@ static DEVRES *find_device_res(char *device_name, int read_access)
             configfile);
       return NULL;
    }
-   if (read_access) {
-      Pmsg1(0, _("Using device: \"%s\" for reading.\n"), device_name);
-   }
-   else {
+   if (write_access) {
       Pmsg1(0, _("Using device: \"%s\" for writing.\n"), device_name);
+   } else {
+      Pmsg1(0, _("Using device: \"%s\" for reading.\n"), device_name);
    }
    return device;
 }
diff --git a/src/stored/dev.c b/src/stored/dev.c
index 3d4e44b..263a881 100644
--- a/src/stored/dev.c
+++ b/src/stored/dev.c
@@ -1,35 +1,23 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
  *   dev.c  -- low level operations on device (storage device)
  *
- *              Kern Sibbald, MM
+ *     written by, Kern Sibbald, MM
  *
  *     NOTE!!!! None of these routines are reentrant. You must
  *        use dev->rLock() and dev->Unlock() at a higher level,
@@ -77,19 +65,35 @@
  * business with no lost data.
  */
 
-
 #include "bacula.h"
 #include "stored.h"
 
-#ifndef O_NONBLOCK 
+#ifndef O_NONBLOCK
 #define O_NONBLOCK 0
 #endif
 
+/* Imported functions */
+extern void set_os_device_parameters(DCR *dcr);
+extern bool dev_get_os_pos(DEVICE *dev, struct mtget *mt_stat);
+extern uint32_t status_dev(DEVICE *dev);
+
 /* Forward referenced functions */
-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);
+const char *mode_to_str(int mode);
+DEVICE *m_init_dev(JCR *jcr, DEVRES *device, bool alt);
+/*
+ * Device types for printing
+ */
+static const char *prt_dev_types[] = {
+   "*none*",
+   "file",
+   "tape",
+   "DVD",
+   "FIFO",
+   "Vtape",
+   "FTP",
+   "VTL",
+   "virtual"
+};
 
 /*
  * Allocate and initialize the DEVICE structure
@@ -102,15 +106,14 @@ static DEVICE *m_init_dev(JCR *jcr, DEVRES *device, bool new_init);
  *     is the directory in which the file will be placed.
  *
  */
-DEVICE *
-init_dev(JCR *jcr, DEVRES *device)
+DEVICE *init_dev(JCR *jcr, DEVRES *device)
 {
+   generate_global_plugin_event(bsdGlobalEventDeviceInit, device);
    DEVICE *dev = m_init_dev(jcr, device, false);
    return dev;
 }
 
-static DEVICE *
-m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
+DEVICE *m_init_dev(JCR *jcr, DEVRES *device, bool alt)
 {
    struct stat statp;
    int errstat;
@@ -118,13 +121,12 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
    DEVICE *dev;
    uint32_t max_bs;
 
-
    /* If no device type specified, try to guess */
    if (!device->dev_type) {
       /* Check that device is available */
       if (stat(device->device_name, &statp) < 0) {
          berrno be;
-         Jmsg2(jcr, M_ERROR, 0, _("Unable to stat device %s: ERR=%s\n"), 
+         Jmsg2(jcr, M_ERROR, 0, _("Unable to stat device %s: ERR=%s\n"),
             device->device_name, be.bstrerror());
          return NULL;
       }
@@ -135,10 +137,10 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
       } else if (S_ISFIFO(statp.st_mode)) {
          device->dev_type = B_FIFO_DEV;
 #ifdef USE_VTAPE
-      /* must set DeviceType = Vtape 
+      /* must set DeviceType = Vtape
        * in normal mode, autodetection is disabled
        */
-      } else if (S_ISREG(statp.st_mode)) { 
+      } else if (S_ISREG(statp.st_mode)) {
          device->dev_type = B_VTAPE_DEV;
 #endif
       } else if (!(device->cap_bits & CAP_REQMOUNT)) {
@@ -152,7 +154,10 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
    }
    switch (device->dev_type) {
    case B_DVD_DEV:
-      Jmsg0(jcr, M_FATAL, 0, _("DVD support is now deprecated\n"));
+      Jmsg0(jcr, M_FATAL, 0, _("DVD support is now deprecated.\n"));
+      return NULL;
+   case B_VIRTUAL_DEV:
+      Jmsg0(jcr, M_FATAL, 0, _("Aligned device not supported. Please use \"DeviceType = File\"\n"));
       return NULL;
    case B_VTAPE_DEV:
       dev = New(vtape);
@@ -162,19 +167,22 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
       dev = New(ftp_device);
       break;
 #endif
-#ifdef HAVE_WIN32
+#ifdef xHAVE_WIN32
 /* TODO: defined in src/win32/stored/mtops.cpp */
    case B_TAPE_DEV:
-      dev = New(win32_tape_device);
+      dev = New(win_tape_dev);
       break;
    case B_FILE_DEV:
-      dev = New(win32_file_device);
+      dev = New(win_file_dev);
       break;
 #else
    case B_TAPE_DEV:
+      dev = New(tape_dev);
+      break;
    case B_FILE_DEV:
    case B_FIFO_DEV:
-      dev = New(DEVICE);
+      dev = New(file_dev);
+      break;
       break;
 #endif
    default:
@@ -198,11 +206,11 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
    dev->volume_capacity = device->volume_capacity;
    dev->max_rewind_wait = device->max_rewind_wait;
    dev->max_open_wait = device->max_open_wait;
-   dev->max_open_vols = device->max_open_vols;
    dev->vol_poll_interval = device->vol_poll_interval;
    dev->max_spool_size = device->max_spool_size;
    dev->drive_index = device->drive_index;
    dev->autoselect = device->autoselect;
+   dev->read_only = device->read_only;
    dev->dev_type = device->dev_type;
    dev->device = device;
    if (dev->is_tape()) { /* No parts on tapes */
@@ -214,6 +222,23 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
    if (dev->vol_poll_interval && dev->vol_poll_interval < 60) {
       dev->vol_poll_interval = 60;
    }
+   /*
+    * ***FIXME*** remove this when we implement write device
+    *  switching.
+    *
+    * We limit aligned Jobs to run one at a time.
+    * This is required because:
+    *  1. BlockAddr must be local for each JCR, today it
+    *     is global.
+    *  2. When flushing buffers, all other processes must
+    *     be locked out, and they currently are not.
+    *  3. We need to reserve the full space for a job, but
+    *     currently space for only one block is reserved.
+    *  4. In the case that the file grows, we must be able
+    *     to create multiple references to the correct data
+    *     blocks, if they are not contiguous.
+    */
+
    device->dev = dev;
 
    if (dev->is_fifo()) {
@@ -221,17 +246,17 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
    }
 
    /* If the device requires mount :
-    * - Check that the mount point is available 
+    * - Check that the mount point is available
     * - Check that (un)mount commands are defined
     */
    if (dev->is_file() && dev->requires_mount()) {
       if (!device->mount_point || stat(device->mount_point, &statp) < 0) {
          berrno be;
          dev->dev_errno = errno;
-         Jmsg2(jcr, M_ERROR_TERM, 0, _("Unable to stat mount point %s: ERR=%s\n"), 
+         Jmsg2(jcr, M_ERROR_TERM, 0, _("Unable to stat mount point %s: ERR=%s\n"),
             device->mount_point, be.bstrerror());
       }
-   
+
       if (!device->mount_command || !device->unmount_command) {
          Jmsg0(jcr, M_ERROR_TERM, 0, _("Mount and unmount commands must defined for a device which requires mount.\n"));
       }
@@ -244,7 +269,7 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
       max_bs = dev->max_block_size;
    }
    if (dev->min_block_size > max_bs) {
-      Jmsg(jcr, M_ERROR_TERM, 0, _("Min block size > max on device %s\n"), 
+      Jmsg(jcr, M_ERROR_TERM, 0, _("Min block size > max on device %s\n"),
            dev->print_name());
    }
    if (dev->max_block_size > 4096000) {
@@ -257,7 +282,7 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
          dev->max_block_size, dev->print_name(), TAPE_BSIZE);
    }
    if (dev->max_volume_size != 0 && dev->max_volume_size < (dev->max_block_size << 4)) {
-      Jmsg(jcr, M_ERROR_TERM, 0, _("Max Vol Size < 8 * Max Block Size for device %s\n"), 
+      Jmsg(jcr, M_ERROR_TERM, 0, _("Max Vol Size < 8 * Max Block Size for device %s\n"),
            dev->print_name());
    }
 
@@ -300,10 +325,21 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
       Mmsg1(dev->errmsg, _("Unable to init read acquire mutex: ERR=%s\n"), be.bstrerror(errstat));
       Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
    }
+   if ((errstat = dev->init_volcat_mutex()) != 0) {
+      berrno be;
+      dev->dev_errno = errstat;
+      Mmsg1(dev->errmsg, _("Unable to init volcat mutex: ERR=%s\n"), be.bstrerror(errstat));
+      Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
+   }
+   if ((errstat = dev->init_dcrs_mutex()) != 0) {
+      berrno be;
+      dev->dev_errno = errstat;
+      Mmsg1(dev->errmsg, _("Unable to init dcrs 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;
@@ -317,34 +353,8 @@ m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
    dev->attached_dcrs = New(dlist(dcr, &dcr->dev_link));
    Dmsg2(100, "init_dev: tape=%d dev_name=%s\n", dev->is_tape(), dev->dev_name);
    dev->initiated = true;
-   
-   return dev;
-}
-
-/* default primitives are designed for file */
-int DEVICE::d_open(const char *pathname, int flags)
-{
-   return ::open(pathname, flags);
-}
-
-int DEVICE::d_close(int fd)
-{
-   return ::close(fd);
-}
-
-int DEVICE::d_ioctl(int fd, ioctl_req_t request, char *mt_com)
-{
-   return ::ioctl(fd, request, mt_com);
-}
 
-ssize_t DEVICE::d_read(int fd, void *buffer, size_t count)
-{
-   return ::read(fd, buffer, count);
-}
-
-ssize_t DEVICE::d_write(int fd, const void *buffer, size_t count)
-{
-   return ::write(fd, buffer, count);
+   return dev;
 }
 
 /*
@@ -360,17 +370,16 @@ 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.
  */
-bool
-DEVICE::open(DCR *dcr, int omode)
+bool DEVICE::open(DCR *dcr, int omode)
 {
    int preserve = 0;
    if (is_open()) {
       if (openmode == omode) {
          return true;
       } else {
+         Dmsg1(200, "Close fd=%d for mode change in open().\n", m_fd);
          d_close(m_fd);
          clear_opened();
-         Dmsg0(100, "Close fd for mode change.\n");
          preserve = state & (ST_LABEL|ST_APPEND|ST_READ);
       }
    }
@@ -379,25 +388,26 @@ DEVICE::open(DCR *dcr, int omode)
       VolCatInfo = dcr->VolCatInfo;    /* structure assign */
    }
 
-   Dmsg4(100, "open dev: type=%d dev_name=%s vol=%s mode=%s\n", dev_type,
-         print_name(), getVolCatName(), mode_to_str(omode));
-   state &= ~(ST_LABEL|ST_APPEND|ST_READ|ST_EOT|ST_WEOT|ST_EOF);
+   state &= ~(ST_NOSPACE|ST_LABEL|ST_APPEND|ST_READ|ST_EOT|ST_WEOT|ST_EOF);
    label_type = B_BACULA_LABEL;
 
    if (is_tape() || is_fifo()) {
       open_tape_device(dcr, omode);
    } else if (is_ftp()) {
-      open_device(dcr, omode);
+      this->open_device(dcr, omode);
    } else {
       Dmsg1(100, "call open_file_device mode=%s\n", mode_to_str(omode));
       open_file_device(dcr, omode);
    }
    state |= preserve;                 /* reset any important state info */
    Dmsg2(100, "preserve=0x%x fd=%d\n", preserve, m_fd);
+
+   Dmsg7(100, "open dev: fd=%d dev=%p dcr=%p vol=%s type=%d dev_name=%s mode=%s\n",
+         m_fd, getVolCatName(), this, dcr, dev_type, print_name(), mode_to_str(omode));
    return m_fd >= 0;
 }
 
-void DEVICE::set_mode(int new_mode) 
+void DEVICE::set_mode(int new_mode)
 {
    switch (new_mode) {
    case CREATE_READ_WRITE:
@@ -417,260 +427,19 @@ void DEVICE::set_mode(int new_mode)
    }
 }
 
-/*
- */
-void DEVICE::open_tape_device(DCR *dcr, int omode) 
-{
-   file_size = 0;
-   int timeout = max_open_wait;
-#if !defined(HAVE_WIN32)
-   struct mtop mt_com;
-   utime_t start_time = time(NULL);
-#endif
-
-   mount(1);                          /* do mount if required */
-
-   Dmsg0(100, "Open dev: device is tape\n");
-
-   get_autochanger_loaded_slot(dcr);
-
-   openmode = omode;
-   set_mode(omode);
-
-   if (timeout < 1) {
-      timeout = 1;
-   }
-   errno = 0;
-   if (is_fifo() && timeout) {
-      /* Set open timer */
-      tid = start_thread_timer(dcr->jcr, pthread_self(), timeout);
-   }
-   Dmsg2(100, "Try open %s mode=%s\n", print_name(), mode_to_str(omode));
-#if defined(HAVE_WIN32)
-
-   /*   Windows Code */
-   if ((m_fd = d_open(dev_name, mode)) < 0) {
-      dev_errno = errno;
-   }
-
-#else
-
-   /*  UNIX  Code */
-   /* If busy retry each second for max_open_wait seconds */
-   for ( ;; ) {
-      /* Try non-blocking open */
-      m_fd = d_open(dev_name, mode+O_NONBLOCK);
-      if (m_fd < 0) {
-         berrno be;
-         dev_errno = errno;
-         Dmsg5(100, "Open error on %s omode=%d mode=%x errno=%d: ERR=%s\n", 
-              print_name(), omode, mode, errno, be.bstrerror());
-      } else {
-         /* Tape open, now rewind it */
-         Dmsg0(100, "Rewind after open\n");
-         mt_com.mt_op = MTREW;
-         mt_com.mt_count = 1;
-         /* rewind only if dev is a tape */
-         if (is_tape() && (d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0)) {
-            berrno be;
-            dev_errno = errno;           /* set error status from rewind */
-            d_close(m_fd);
-            clear_opened();
-            Dmsg2(100, "Rewind error on %s close: ERR=%s\n", print_name(),
-                  be.bstrerror(dev_errno));
-            /* If we get busy, device is probably rewinding, try again */
-            if (dev_errno != EBUSY) {
-               break;                    /* error -- no medium */
-            }
-         } else {
-            /* Got fd and rewind worked, so we must have medium in drive */
-            d_close(m_fd);
-            m_fd = d_open(dev_name, mode);  /* open normally */
-            if (m_fd < 0) {
-               berrno be;
-               dev_errno = errno;
-               Dmsg5(100, "Open error on %s omode=%d mode=%x errno=%d: ERR=%s\n", 
-                     print_name(), omode, mode, errno, be.bstrerror());
-               break;
-            }
-            dev_errno = 0;
-            lock_door();
-            set_os_device_parameters(dcr);       /* do system dependent stuff */
-            break;                               /* Successfully opened and rewound */
-         }
-      }
-      bmicrosleep(5, 0);
-      /* Exceed wait time ? */
-      if (time(NULL) - start_time >= max_open_wait) {
-         break;                       /* yes, get out */
-      }
-   }
-#endif
-
-   if (!is_open()) {
-      berrno be;
-      Mmsg2(errmsg, _("Unable to open device %s: ERR=%s\n"),
-            print_name(), be.bstrerror(dev_errno));
-      Dmsg1(100, "%s", errmsg);
-   }
-
-   /* Stop any open() timer we started */
-   if (tid) {
-      stop_thread_timer(tid);
-      tid = 0;
-   }
-   Dmsg1(100, "open dev: tape %d opened\n", m_fd);
-}
 
 void DEVICE::open_device(DCR *dcr, int omode)
 {
    /* do nothing waiting to split open_file/tape_device */
 }
 
-/*
- * Open a file device.
- */
-void DEVICE::open_file_device(DCR *dcr, int omode) 
-{
-   POOL_MEM archive_name(PM_FNAME);
-
-   get_autochanger_loaded_slot(dcr);
-
-   /*
-    * Handle opening of File Archive (not a tape)
-    */     
-
-   pm_strcpy(archive_name, dev_name);
-   /*  
-    * If this is a virtual autochanger (i.e. changer_res != NULL)
-    *  we simply use the device name, assuming it has been
-    *  appropriately setup by the "autochanger".
-    */
-   if (!device->changer_res || device->changer_command[0] == 0) {
-      if (VolCatInfo.VolCatName[0] == 0) {
-         Mmsg(errmsg, _("Could not open file device %s. No Volume name given.\n"),
-            print_name());
-         clear_opened();
-         return;
-      }
-
-      if (!IsPathSeparator(archive_name.c_str()[strlen(archive_name.c_str())-1])) {
-         pm_strcat(archive_name, "/");
-      }
-      pm_strcat(archive_name, getVolCatName());
-   }
-
-   mount(1);                          /* do mount if required */
-         
-   openmode = omode;
-   set_mode(omode);
-   /* If creating file, give 0640 permissions */
-   Dmsg3(100, "open disk: mode=%s open(%s, 0x%x, 0640)\n", mode_to_str(omode), 
-         archive_name.c_str(), mode);
-   /* Use system open() */
-   if ((m_fd = ::open(archive_name.c_str(), mode, 0640)) < 0) {
-      berrno be;
-      dev_errno = errno;
-      Mmsg2(errmsg, _("Could not open: %s, ERR=%s\n"), archive_name.c_str(), 
-            be.bstrerror());
-      Dmsg1(100, "open failed: %s", errmsg);
-   }
-   if (m_fd >= 0) {
-      dev_errno = 0;
-      file = 0;
-      file_addr = 0;
-   }
-   Dmsg4(100, "open dev: disk fd=%d opened, part=%d/%d, part_size=%u\n", 
-      m_fd, part, num_dvd_parts, part_size);
-}
-
-/*
- * Rewind the device.
- *  Returns: true  on success
- *           false on failure
- */
-bool DEVICE::rewind(DCR *dcr)
-{
-   struct mtop mt_com;
-   unsigned int i;
-   bool first = true;
-
-   Dmsg3(400, "rewind res=%d fd=%d %s\n", num_reserved(), m_fd, print_name());
-   state &= ~(ST_EOT|ST_EOF|ST_WEOT);  /* remove EOF/EOT flags */
-   block_num = file = 0;
-   file_size = 0;
-   file_addr = 0;
-   if (m_fd < 0) {
-      return false;
-   }
-   if (is_tape()) {
-      mt_com.mt_op = MTREW;
-      mt_com.mt_count = 1;
-      /* If we get an I/O error on rewind, it is probably because
-       * the drive is actually busy. We loop for (about 5 minutes)
-       * retrying every 5 seconds.
-       */
-      for (i=max_rewind_wait; ; i -= 5) {
-         if (d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0) {
-            berrno be;
-            clrerror(MTREW);
-            if (i == max_rewind_wait) {
-               Dmsg1(200, "Rewind error, %s. retrying ...\n", be.bstrerror());
-            }
-            /*
-             * This is a gross hack, because if the user has the
-             *   device mounted (i.e. open), then uses mtx to load
-             *   a tape, the current open file descriptor is invalid.
-             *   So, we close the drive and re-open it.
-             */
-            if (first && dcr) {
-               int open_mode = openmode;
-               d_close(m_fd);
-               clear_opened();
-               open(dcr, open_mode);
-               if (m_fd < 0) {
-                  return false;
-               }
-               first = false;
-               continue;
-            }
-#ifdef HAVE_SUN_OS
-            if (dev_errno == EIO) {         
-               Mmsg1(errmsg, _("No tape loaded or drive offline on %s.\n"), print_name());
-               return false;
-            }
-#else
-            if (dev_errno == EIO && i > 0) {
-               Dmsg0(200, "Sleeping 5 seconds.\n");
-               bmicrosleep(5, 0);
-               continue;
-            }
-#endif
-            Mmsg2(errmsg, _("Rewind error on %s. ERR=%s.\n"),
-               print_name(), be.bstrerror());
-            return false;
-         }
-         break;
-      }
-   } else if (is_file()) {
-      if (lseek(dcr, (boffset_t)0, SEEK_SET) < 0) {
-         berrno be;
-         dev_errno = errno;
-         Mmsg2(errmsg, _("lseek error on %s. ERR=%s.\n"),
-            print_name(), be.bstrerror());
-         return false;
-      }
-   }
-   return true;
-}
-
 
 /*
  * Called to indicate that we have just read an
  *  EOF from the device.
  */
-void DEVICE::set_ateof() 
-{ 
+void DEVICE::set_ateof()
+{
    set_eof();
    if (is_tape()) {
       file++;
@@ -684,170 +453,14 @@ void DEVICE::set_ateof()
  * Called to indicate we are now at the end of the tape, and
  *   writing is not possible.
  */
-void DEVICE::set_ateot() 
+void DEVICE::set_ateot()
 {
    /* Make tape effectively read-only */
+   Dmsg0(200, "==== Set AtEof\n");
    state |= (ST_EOF|ST_EOT|ST_WEOT);
    clear_append();
 }
 
-/*
- * Position device to end of medium (end of data)
- *  Returns: true  on succes
- *           false on error
- */
-bool DEVICE::eod(DCR *dcr)
-{
-   struct mtop mt_com;
-   bool ok = true;
-   boffset_t pos;
-   int32_t os_file;
-
-   if (m_fd < 0) {
-      dev_errno = EBADF;
-      Mmsg1(errmsg, _("Bad call to eod. Device %s not open\n"), print_name());
-      return false;
-   }
-
-#if defined (__digital__) && defined (__unix__)
-   return fsf(VolCatInfo.VolCatFiles);
-#endif
-
-   Dmsg0(100, "Enter eod\n");
-   if (at_eot()) {
-      return true;
-   }
-   clear_eof();         /* remove EOF flag */
-   block_num = file = 0;
-   file_size = 0;
-   file_addr = 0;
-   if (is_fifo()) {
-      return true;
-   }
-   if (!is_tape()) {
-      pos = lseek(dcr, (boffset_t)0, SEEK_END);
-      Dmsg1(200, "====== Seek to %lld\n", pos);
-      if (pos >= 0) {
-         update_pos(dcr);
-         set_eot();
-         return true;
-      }
-      dev_errno = errno;
-      berrno be;
-      Mmsg2(errmsg, _("lseek error on %s. ERR=%s.\n"),
-             print_name(), be.bstrerror());
-      Dmsg0(100, errmsg);
-      return false;
-   }
-#ifdef MTEOM
-   if (has_cap(CAP_FASTFSF) && !has_cap(CAP_EOM)) {
-      Dmsg0(100,"Using FAST FSF for EOM\n");
-      /* If unknown position, rewind */
-      if (get_os_tape_file() < 0) {
-        if (!rewind(NULL)) {
-          Dmsg0(100, "Rewind error\n");
-          return false;
-        }
-      }
-      mt_com.mt_op = MTFSF;
-      /*
-       * ***FIXME*** fix code to handle case that INT16_MAX is
-       *   not large enough.
-       */
-      mt_com.mt_count = INT16_MAX;    /* use big positive number */
-      if (mt_com.mt_count < 0) {
-         mt_com.mt_count = INT16_MAX; /* brain damaged system */
-      }
-   }
-
-   if (has_cap(CAP_MTIOCGET) && (has_cap(CAP_FASTFSF) || has_cap(CAP_EOM))) {
-      if (has_cap(CAP_EOM)) {
-         Dmsg0(100,"Using EOM for EOM\n");
-         mt_com.mt_op = MTEOM;
-         mt_com.mt_count = 1;
-      }
-
-      if (d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0) {
-         berrno be;
-         clrerror(mt_com.mt_op);
-         Dmsg1(50, "ioctl error: %s\n", be.bstrerror());
-         update_pos(dcr);
-         Mmsg2(errmsg, _("ioctl MTEOM error on %s. ERR=%s.\n"),
-            print_name(), be.bstrerror());
-         Dmsg0(100, errmsg);
-         return false;
-      }
-
-      os_file = get_os_tape_file();
-      if (os_file < 0) {
-         berrno be;
-         clrerror(-1);
-         Mmsg2(errmsg, _("ioctl MTIOCGET error on %s. ERR=%s.\n"),
-            print_name(), be.bstrerror());
-         Dmsg0(100, errmsg);
-         return false;
-      }
-      Dmsg1(100, "EOD file=%d\n", os_file);
-      set_ateof();
-      file = os_file;
-   } else {
-#else
-   {
-#endif
-      /*
-       * Rewind then use FSF until EOT reached
-       */
-      if (!rewind(NULL)) {
-         Dmsg0(100, "Rewind error.\n");
-         return false;
-      }
-      /*
-       * Move file by file to the end of the tape
-       */
-      int file_num;
-      for (file_num=file; !at_eot(); file_num++) {
-         Dmsg0(200, "eod: doing fsf 1\n");
-         if (!fsf(1)) {
-            Dmsg0(100, "fsf error.\n");
-            return false;
-         }
-         /*
-          * Avoid infinite loop by ensuring we advance.
-          */
-         if (!at_eot() && file_num == (int)file) {
-            Dmsg1(100, "fsf did not advance from file %d\n", file_num);
-            set_ateof();
-            os_file = get_os_tape_file();
-            if (os_file >= 0) {
-               Dmsg2(100, "Adjust file from %d to %d\n", file_num, os_file);
-               file = os_file;
-            }       
-            break;
-         }
-      }
-   }
-   /*
-    * Some drivers leave us after second EOF when doing
-    * MTEOM, so we must backup so that appending overwrites
-    * the second EOF.
-    */
-   if (has_cap(CAP_BSFATEOM)) {
-      /* Backup over EOF */
-      ok = bsf(1);
-      /* If BSF worked and fileno is known (not -1), set file */
-      os_file = get_os_tape_file();
-      if (os_file >= 0) {
-         Dmsg2(100, "BSFATEOF adjust file from %d to %d\n", file , os_file);
-         file = os_file;
-      } else {
-         file++;                       /* wing it -- not correct on all OSes */
-      }
-   } else {
-      update_pos(dcr);                 /* update position */
-   }
-   Dmsg1(200, "EOD dev->file=%d\n", file);
-   return ok;
-}
 
 /*
  * Set the position of the device -- only for files and DVD
@@ -887,869 +500,59 @@ bool DEVICE::update_pos(DCR *dcr)
    return ok;
 }
 
-/*
- * Return the status of the device.  This was meant
- * to be a generic routine. Unfortunately, it doesn't
- * seem possible (at least I do not know how to do it
- * currently), which means that for the moment, this
- * routine has very little value.
- *
- *   Returns: status
- */
-uint32_t status_dev(DEVICE *dev)
+void DEVICE::set_slot(int32_t slot)
 {
-   struct mtget mt_stat;
-   uint32_t stat = 0;
-
-   if (dev->state & (ST_EOT | ST_WEOT)) {
-      stat |= BMT_EOD;
-      Pmsg0(-20, " EOD");
-   }
-   if (dev->state & ST_EOF) {
-      stat |= BMT_EOF;
-      Pmsg0(-20, " EOF");
-   }
-   if (dev->is_tape()) {
-      stat |= BMT_TAPE;
-      Pmsg0(-20,_(" Bacula status:"));
-      Pmsg2(-20,_(" file=%d block=%d\n"), dev->file, dev->block_num);
-      if (dev->d_ioctl(dev->fd(), MTIOCGET, (char *)&mt_stat) < 0) {
-         berrno be;
-         dev->dev_errno = errno;
-         Mmsg2(dev->errmsg, _("ioctl MTIOCGET error on %s. ERR=%s.\n"),
-            dev->print_name(), be.bstrerror());
-         return 0;
-      }
-      Pmsg0(-20, _(" Device status:"));
-
-#if defined(HAVE_LINUX_OS)
-      if (GMT_EOF(mt_stat.mt_gstat)) {
-         stat |= BMT_EOF;
-         Pmsg0(-20, " EOF");
-      }
-      if (GMT_BOT(mt_stat.mt_gstat)) {
-         stat |= BMT_BOT;
-         Pmsg0(-20, " BOT");
-      }
-      if (GMT_EOT(mt_stat.mt_gstat)) {
-         stat |= BMT_EOT;
-         Pmsg0(-20, " EOT");
-      }
-      if (GMT_SM(mt_stat.mt_gstat)) {
-         stat |= BMT_SM;
-         Pmsg0(-20, " SM");
-      }
-      if (GMT_EOD(mt_stat.mt_gstat)) {
-         stat |= BMT_EOD;
-         Pmsg0(-20, " EOD");
-      }
-      if (GMT_WR_PROT(mt_stat.mt_gstat)) {
-         stat |= BMT_WR_PROT;
-         Pmsg0(-20, " WR_PROT");
-      }
-      if (GMT_ONLINE(mt_stat.mt_gstat)) {
-         stat |= BMT_ONLINE;
-         Pmsg0(-20, " ONLINE");
-      }
-      if (GMT_DR_OPEN(mt_stat.mt_gstat)) {
-         stat |= BMT_DR_OPEN;
-         Pmsg0(-20, " DR_OPEN");
-      }
-      if (GMT_IM_REP_EN(mt_stat.mt_gstat)) {
-         stat |= BMT_IM_REP_EN;
-         Pmsg0(-20, " IM_REP_EN");
-      }
-#elif defined(HAVE_WIN32)
-      if (GMT_EOF(mt_stat.mt_gstat)) {
-         stat |= BMT_EOF;
-         Pmsg0(-20, " EOF");
-      }
-      if (GMT_BOT(mt_stat.mt_gstat)) {
-         stat |= BMT_BOT;
-         Pmsg0(-20, " BOT");
-      }
-      if (GMT_EOT(mt_stat.mt_gstat)) {
-         stat |= BMT_EOT;
-         Pmsg0(-20, " EOT");
-      }
-      if (GMT_EOD(mt_stat.mt_gstat)) {
-         stat |= BMT_EOD;
-         Pmsg0(-20, " EOD");
-      }
-      if (GMT_WR_PROT(mt_stat.mt_gstat)) {
-         stat |= BMT_WR_PROT;
-         Pmsg0(-20, " WR_PROT");
-      }
-      if (GMT_ONLINE(mt_stat.mt_gstat)) {
-         stat |= BMT_ONLINE;
-         Pmsg0(-20, " ONLINE");
-      }
-      if (GMT_DR_OPEN(mt_stat.mt_gstat)) {
-         stat |= BMT_DR_OPEN;
-         Pmsg0(-20, " DR_OPEN");
-      }
-      if (GMT_IM_REP_EN(mt_stat.mt_gstat)) {
-         stat |= BMT_IM_REP_EN;
-         Pmsg0(-20, " IM_REP_EN");
-      }
+   m_slot = slot;
+   if (vol) vol->clear_slot();
+}
 
-#endif /* !SunOS && !OSF */
-      if (dev->has_cap(CAP_MTIOCGET)) {
-         Pmsg2(-20, _(" file=%d block=%d\n"), mt_stat.mt_fileno, mt_stat.mt_blkno);
-      } else {
-         Pmsg2(-20, _(" file=%d block=%d\n"), -1, -1);
-      }
-   } else {
-      stat |= BMT_ONLINE | BMT_BOT;
-   }
-   return stat;
+void DEVICE::clear_slot()
+{
+   m_slot = -1;
+   if (vol) vol->set_slot(-1);
 }
 
+const char *DEVICE::print_type() const
+{
+   return prt_dev_types[device->dev_type];
+}
 
 /*
- * Load medium in device
- *  Returns: true  on success
- *           false on failure
+ * Set to unload the current volume in the drive
  */
-bool load_dev(DEVICE *dev)
+void DEVICE::set_unload()
 {
-#ifdef MTLOAD
-   struct mtop mt_com;
-#endif
-
-   if (dev->fd() < 0) {
-      dev->dev_errno = EBADF;
-      Mmsg0(dev->errmsg, _("Bad call to load_dev. Device not open\n"));
-      Emsg0(M_FATAL, 0, dev->errmsg);
-      return false;
-   }
-   if (!(dev->is_tape())) {
-      return true;
+   if (!m_unload && VolHdr.VolumeName[0] != 0) {
+       m_unload = true;
+       memcpy(UnloadVolName, VolHdr.VolumeName, sizeof(UnloadVolName));
+       notify_newvol_in_attached_dcrs(NULL);
    }
-#ifndef MTLOAD
-   Dmsg0(200, "stored: MTLOAD command not available\n");
-   berrno be;
-   dev->dev_errno = ENOTTY;           /* function not available */
-   Mmsg2(dev->errmsg, _("ioctl MTLOAD error on %s. ERR=%s.\n"),
-         dev->print_name(), be.bstrerror());
-   return false;
-#else
+}
 
-   dev->block_num = dev->file = 0;
-   dev->file_size = 0;
-   dev->file_addr = 0;
-   mt_com.mt_op = MTLOAD;
-   mt_com.mt_count = 1;
-   if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
-      berrno be;
-      dev->dev_errno = errno;
-      Mmsg2(dev->errmsg, _("ioctl MTLOAD error on %s. ERR=%s.\n"),
-         dev->print_name(), be.bstrerror());
-      return false;
-   }
-   return true;
-#endif
+/*
+ * Clear volume header
+ */
+void DEVICE::clear_volhdr()
+{
+   Dmsg1(100, "Clear volhdr vol=%s\n", VolHdr.VolumeName);
+   memset(&VolHdr, 0, sizeof(VolHdr));
+   setVolCatInfo(false);
 }
 
+
 /*
- * Rewind device and put it offline
- *  Returns: true  on success
- *           false on failure
+ * Close the device
  */
-bool DEVICE::offline()
+void DEVICE::close()
 {
-   struct mtop mt_com;
+   Dmsg4(40, "close_dev vol=%s fd=%d dev=%p dev=%s\n",
+      VolHdr.VolumeName, m_fd, this, print_name());
+   offline_or_rewind();
 
-   if (!is_tape()) {
-      return true;                    /* device not open */
-   }
-
-   state &= ~(ST_APPEND|ST_READ|ST_EOT|ST_EOF|ST_WEOT);  /* remove EOF/EOT flags */
-   block_num = file = 0;
-   file_size = 0;
-   file_addr = 0;
-   unlock_door();
-   mt_com.mt_op = MTOFFL;
-   mt_com.mt_count = 1;
-   if (d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0) {
-      berrno be;
-      dev_errno = errno;
-      Mmsg2(errmsg, _("ioctl MTOFFL error on %s. ERR=%s.\n"),
-         print_name(), be.bstrerror());
-      return false;
-   }
-   Dmsg1(100, "Offlined device %s\n", print_name());
-   return true;
-}
-
-bool DEVICE::offline_or_rewind()
-{
-   if (m_fd < 0) {
-      return false;
-   }
-   if (has_cap(CAP_OFFLINEUNMOUNT)) {
-      return offline();
-   } else {
-   /*
-    * Note, this rewind probably should not be here (it wasn't
-    *  in prior versions of Bacula), but on FreeBSD, this is
-    *  needed in the case the tape was "frozen" due to an error
-    *  such as backspacing after writing and EOF. If it is not
-    *  done, all future references to the drive get and I/O error.
-    */
-      clrerror(MTREW);
-      return rewind(NULL);
-   }
-}
-
-/*
- * Foward space a file
- *   Returns: true  on success
- *            false on failure
- */
-bool DEVICE::fsf(int num)
-{
-   int32_t os_file = 0;
-   struct mtop mt_com;
-   int stat = 0;
-
-   if (!is_open()) {
-      dev_errno = EBADF;
-      Mmsg0(errmsg, _("Bad call to fsf. Device not open\n"));
-      Emsg0(M_FATAL, 0, errmsg);
-      return false;
-   }
-
-   if (!is_tape()) {
-      return true;
-   }
-
-   if (at_eot()) {
-      dev_errno = 0;
-      Mmsg1(errmsg, _("Device %s at End of Tape.\n"), print_name());
-      return false;
-   }
-   if (at_eof()) {
-      Dmsg0(200, "ST_EOF set on entry to FSF\n");
-   }
-
-   Dmsg0(100, "fsf\n");
-   block_num = 0;
-   /*
-    * If Fast forward space file is set, then we
-    *  use MTFSF to forward space and MTIOCGET
-    *  to get the file position. We assume that
-    *  the SCSI driver will ensure that we do not
-    *  forward space past the end of the medium.
-    */
-   if (has_cap(CAP_FSF) && has_cap(CAP_MTIOCGET) && has_cap(CAP_FASTFSF)) {
-      int my_errno = 0;
-      mt_com.mt_op = MTFSF;
-      mt_com.mt_count = num;
-      stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
-      if (stat < 0) {
-         my_errno = errno;            /* save errno */
-      } else if ((os_file=get_os_tape_file()) < 0) {
-         my_errno = errno;            /* save errno */
-      }
-      if (my_errno != 0) {
-         berrno be;
-         set_eot();
-         Dmsg0(200, "Set ST_EOT\n");
-         clrerror(MTFSF);
-         Mmsg2(errmsg, _("ioctl MTFSF error on %s. ERR=%s.\n"),
-            print_name(), be.bstrerror(my_errno));
-         Dmsg1(200, "%s", errmsg);
-         return false;
-      }
-
-      Dmsg1(200, "fsf file=%d\n", os_file);
-      set_ateof();
-      file = os_file;
-      return true;
-
-   /*
-    * Here if CAP_FSF is set, and virtually all drives
-    *  these days support it, we read a record, then forward
-    *  space one file. Using this procedure, which is slow,
-    *  is the only way we can be sure that we don't read
-    *  two consecutive EOF marks, which means End of Data.
-    */
-   } else if (has_cap(CAP_FSF)) {
-      POOLMEM *rbuf;
-      int rbuf_len;
-      Dmsg0(200, "FSF has cap_fsf\n");
-      if (max_block_size == 0) {
-         rbuf_len = DEFAULT_BLOCK_SIZE;
-      } else {
-         rbuf_len = max_block_size;
-      }
-      rbuf = get_memory(rbuf_len);
-      mt_com.mt_op = MTFSF;
-      mt_com.mt_count = 1;
-      while (num-- && !at_eot()) {
-         Dmsg0(100, "Doing read before fsf\n");
-         if ((stat = this->read((char *)rbuf, rbuf_len)) < 0) {
-            if (errno == ENOMEM) {     /* tape record exceeds buf len */
-               stat = rbuf_len;        /* This is OK */
-            /*
-             * On IBM drives, they return ENOSPC at EOM
-             *  instead of EOF status
-             */
-            } else if (at_eof() && errno == ENOSPC) {
-               stat = 0;
-            } else {
-               berrno be;
-               set_eot();
-               clrerror(-1);
-               Dmsg2(100, "Set ST_EOT read errno=%d. ERR=%s\n", dev_errno,
-                  be.bstrerror());
-               Mmsg2(errmsg, _("read error on %s. ERR=%s.\n"),
-                  print_name(), be.bstrerror());
-               Dmsg1(100, "%s", errmsg);
-               break;
-            }
-         }
-         if (stat == 0) {                /* EOF */
-            Dmsg1(100, "End of File mark from read. File=%d\n", file+1);
-            /* Two reads of zero means end of tape */
-            if (at_eof()) {
-               set_eot();
-               Dmsg0(100, "Set ST_EOT\n");
-               break;
-            } else {
-               set_ateof();
-               continue;
-            }
-         } else {                        /* Got data */
-            clear_eot();
-            clear_eof();
-         }
-
-         Dmsg0(100, "Doing MTFSF\n");
-         stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
-         if (stat < 0) {                 /* error => EOT */
-            berrno be;
-            set_eot();
-            Dmsg0(100, "Set ST_EOT\n");
-            clrerror(MTFSF);
-            Mmsg2(errmsg, _("ioctl MTFSF error on %s. ERR=%s.\n"),
-               print_name(), be.bstrerror());
-            Dmsg0(100, "Got < 0 for MTFSF\n");
-            Dmsg1(100, "%s", errmsg);
-         } else {
-            set_ateof();
-         }
-      }
-      free_memory(rbuf);
-
-   /*
-    * No FSF, so use FSR to simulate it
-    */
-   } else {
-      Dmsg0(200, "Doing FSR for FSF\n");
-      while (num-- && !at_eot()) {
-         fsr(INT32_MAX);    /* returns -1 on EOF or EOT */
-      }
-      if (at_eot()) {
-         dev_errno = 0;
-         Mmsg1(errmsg, _("Device %s at End of Tape.\n"), print_name());
-         stat = -1;
-      } else {
-         stat = 0;
-      }
-   }
-   Dmsg1(200, "Return %d from FSF\n", stat);
-   if (at_eof()) {
-      Dmsg0(200, "ST_EOF set on exit FSF\n");
-   }
-   if (at_eot()) {
-      Dmsg0(200, "ST_EOT set on exit FSF\n");
-   }
-   Dmsg1(200, "Return from FSF file=%d\n", file);
-   return stat == 0;
-}
-
-/*
- * Backward space a file
- *  Returns: false on failure
- *           true  on success
- */
-bool DEVICE::bsf(int num)
-{
-   struct mtop mt_com;
-   int stat;
-
-   if (!is_open()) {
-      dev_errno = EBADF;
-      Mmsg0(errmsg, _("Bad call to bsf. Device not open\n"));
-      Emsg0(M_FATAL, 0, errmsg);
-      return false;
-   }
-
-   if (!is_tape()) {
-      Mmsg1(errmsg, _("Device %s cannot BSF because it is not a tape.\n"),
-         print_name());
-      return false;
-   }
-
-   Dmsg0(100, "bsf\n");
-   clear_eot();
-   clear_eof();
-   file -= num;
-   file_addr = 0;
-   file_size = 0;
-   mt_com.mt_op = MTBSF;
-   mt_com.mt_count = num;
-   stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
-   if (stat < 0) {
-      berrno be;
-      clrerror(MTBSF);
-      Mmsg2(errmsg, _("ioctl MTBSF error on %s. ERR=%s.\n"),
-         print_name(), be.bstrerror());
-   }
-   return stat == 0;
-}
-
-
-/*
- * Foward space num records
- *  Returns: false on failure
- *           true  on success
- */
-bool DEVICE::fsr(int num)
-{
-   struct mtop mt_com;
-   int stat;
-
-   if (!is_open()) {
-      dev_errno = EBADF;
-      Mmsg0(errmsg, _("Bad call to fsr. Device not open\n"));
-      Emsg0(M_FATAL, 0, errmsg);
-      return false;
-   }
-
-   if (!is_tape()) {
-      return false;
-   }
-
-   if (!has_cap(CAP_FSR)) {
-      Mmsg1(errmsg, _("ioctl MTFSR not permitted on %s.\n"), print_name());
-      return false;
-   }
-
-   Dmsg1(100, "fsr %d\n", num);
-   mt_com.mt_op = MTFSR;
-   mt_com.mt_count = num;
-   stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
-   if (stat == 0) {
-      clear_eof();
-      block_num += num;
-   } else {
-      berrno be;
-      struct mtget mt_stat;
-      clrerror(MTFSR);
-      Dmsg1(100, "FSF fail: ERR=%s\n", be.bstrerror());
-      if (dev_get_os_pos(this, &mt_stat)) {
-         Dmsg4(100, "Adjust from %d:%d to %d:%d\n", file,
-            block_num, mt_stat.mt_fileno, mt_stat.mt_blkno);
-         file = mt_stat.mt_fileno;
-         block_num = mt_stat.mt_blkno;
-      } else {
-         if (at_eof()) {
-            set_eot();
-         } else {
-            set_ateof();
-         }
-      }
-      Mmsg3(errmsg, _("ioctl MTFSR %d error on %s. ERR=%s.\n"),
-         num, print_name(), be.bstrerror());
-   }
-   return stat == 0;
-}
-
-/*
- * Backward space a record
- *   Returns:  false on failure
- *             true  on success
- */
-bool DEVICE::bsr(int num)
-{
-   struct mtop mt_com;
-   int stat;
-
-   if (!is_open()) {
-      dev_errno = EBADF;
-      Mmsg0(errmsg, _("Bad call to bsr_dev. Device not open\n"));
-      Emsg0(M_FATAL, 0, errmsg);
-      return false;
-   }
-
-   if (!is_tape()) {
-      return false;
-   }
-
-   if (!has_cap(CAP_BSR)) {
-      Mmsg1(errmsg, _("ioctl MTBSR not permitted on %s.\n"), print_name());
-      return false;
-   }
-
-   Dmsg0(100, "bsr_dev\n");
-   block_num -= num;
-   clear_eof();
-   clear_eot();
-   mt_com.mt_op = MTBSR;
-   mt_com.mt_count = num;
-   stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
-   if (stat < 0) {
-      berrno be;
-      clrerror(MTBSR);
-      Mmsg2(errmsg, _("ioctl MTBSR error on %s. ERR=%s.\n"),
-         print_name(), be.bstrerror());
-   }
-   return stat == 0;
-}
-
-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);
-#endif
-}
-
-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);
-#endif
-}
-
-void DEVICE::set_slot(int32_t slot)
-{ 
-   m_slot = slot; 
-   if (vol) vol->clear_slot();
-}
-
-void DEVICE::clear_slot()
-{ 
-   m_slot = -1; 
-   if (vol) vol->set_slot(-1);
-}
-
- 
-
-/*
- * Reposition the device to file, block
- * Returns: false on failure
- *          true  on success
- */
-bool DEVICE::reposition(DCR *dcr, uint32_t rfile, uint32_t rblock)
-{
-   if (!is_open()) {
-      dev_errno = EBADF;
-      Mmsg0(errmsg, _("Bad call to reposition. Device not open\n"));
-      Emsg0(M_FATAL, 0, errmsg);
-      return false;
-   }
-
-   if (!is_tape()) {
-      boffset_t pos = (((boffset_t)rfile)<<32) | rblock;
-      Dmsg1(100, "===== lseek to %d\n", (int)pos);
-      if (lseek(dcr, pos, SEEK_SET) == (boffset_t)-1) {
-         berrno be;
-         dev_errno = errno;
-         Mmsg2(errmsg, _("lseek error on %s. ERR=%s.\n"),
-            print_name(), be.bstrerror());
-         return false;
-      }
-      file = rfile;
-      block_num = rblock;
-      file_addr = pos;
-      return true;
-   }
-
-   /* After this point, we are tape only */
-   Dmsg4(100, "reposition from %u:%u to %u:%u\n", file, block_num, rfile, rblock);
-   if (rfile < file) {
-      Dmsg0(100, "Rewind\n");
-      if (!rewind(NULL)) {
-         return false;
-      }
-   }
-   if (rfile > file) {
-      Dmsg1(100, "fsf %d\n", rfile-file);
-      if (!fsf(rfile-file)) {
-         Dmsg1(100, "fsf failed! ERR=%s\n", bstrerror());
-         return false;
-      }
-      Dmsg2(100, "wanted_file=%d at_file=%d\n", rfile, file);
-   }
-   if (rblock < block_num) {
-      Dmsg2(100, "wanted_blk=%d at_blk=%d\n", rblock, block_num);
-      Dmsg0(100, "bsf 1\n");
-      bsf(1);
-      Dmsg0(100, "fsf 1\n");
-      fsf(1);
-      Dmsg2(100, "wanted_blk=%d at_blk=%d\n", rblock, block_num);
-   }
-   if (has_cap(CAP_POSITIONBLOCKS) && rblock > block_num) {
-      /* Ignore errors as Bacula can read to the correct block */
-      Dmsg1(100, "fsr %d\n", rblock-block_num);
-      return fsr(rblock-block_num);
-   } else {
-      while (rblock > block_num) {
-         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",
-               print_name(), be.bstrerror());
-            return false;
-         }
-         Dmsg2(300, "moving forward wanted_blk=%d at_blk=%d\n", rblock, block_num);
-      }
-   }
-   return true;
-}
-
-
-
-/*
- * Write an end of file on the device
- *   Returns: true on success
- *            false on failure
- */
-bool DEVICE::weof(int num)
-{
-   struct mtop mt_com;
-   int stat;
-   Dmsg1(129, "=== weof_dev=%s\n", print_name());
-   
-   if (!is_open()) {
-      dev_errno = EBADF;
-      Mmsg0(errmsg, _("Bad call to weof_dev. Device not open\n"));
-      Emsg0(M_FATAL, 0, errmsg);
-      return false;
-   }
-   file_size = 0;
-
-   if (!is_tape()) {
-      return true;
-   }
-   if (!can_append()) {
-      Mmsg0(errmsg, _("Attempt to WEOF on non-appendable Volume\n"));
-      Emsg0(M_FATAL, 0, errmsg);
-      return false;
-   }
-      
-   clear_eof();
-   clear_eot();
-   mt_com.mt_op = MTWEOF;
-   mt_com.mt_count = num;
-   stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
-   if (stat == 0) {
-      block_num = 0;
-      file += num;
-      file_addr = 0;
-   } else {
-      berrno be;
-      clrerror(MTWEOF);
-      if (stat == -1) {
-         Mmsg2(errmsg, _("ioctl MTWEOF error on %s. ERR=%s.\n"),
-            print_name(), be.bstrerror());
-       }
-   }
-   return stat == 0;
-}
-
-
-/*
- * If implemented in system, clear the tape
- * error status.
- */
-void DEVICE::clrerror(int func)
-{
-   const char *msg = NULL;
-   char buf[100];
-
-   dev_errno = errno;         /* save errno */
-   if (errno == EIO) {
-      VolCatInfo.VolCatErrors++;
-   }
-
-   if (!is_tape()) {
-      return;
-   }
-
-   if (errno == ENOTTY || errno == ENOSYS) { /* Function not implemented */
-      switch (func) {
-      case -1:
-         break;                  /* ignore message printed later */
-      case MTWEOF:
-         msg = "WTWEOF";
-         clear_cap(CAP_EOF);     /* turn off feature */
-         break;
-#ifdef MTEOM
-      case MTEOM:
-         msg = "WTEOM";
-         clear_cap(CAP_EOM);     /* turn off feature */
-         break;
-#endif
-      case MTFSF:
-         msg = "MTFSF";
-         clear_cap(CAP_FSF);     /* turn off feature */
-         break;
-      case MTBSF:
-         msg = "MTBSF";
-         clear_cap(CAP_BSF);     /* turn off feature */
-         break;
-      case MTFSR:
-         msg = "MTFSR";
-         clear_cap(CAP_FSR);     /* turn off feature */
-         break;
-      case MTBSR:
-         msg = "MTBSR";
-         clear_cap(CAP_BSR);     /* turn off feature */
-         break;
-      case MTREW:
-         msg = "MTREW";
-         break;
-#ifdef MTSETBLK
-      case MTSETBLK:
-         msg = "MTSETBLK";
-         break;
-#endif
-#ifdef MTSETDRVBUFFER
-      case MTSETDRVBUFFER:
-         msg = "MTSETDRVBUFFER";
-         break;
-#endif
-#ifdef MTRESET
-      case MTRESET:
-         msg = "MTRESET";
-         break;
-#endif
-
-#ifdef MTSETBSIZ 
-      case MTSETBSIZ:
-         msg = "MTSETBSIZ";
-         break;
-#endif
-#ifdef MTSRSZ
-      case MTSRSZ:
-         msg = "MTSRSZ";
-         break;
-#endif
-#ifdef MTLOAD
-      case MTLOAD:
-         msg = "MTLOAD";
-         break;
-#endif
-#ifdef MTUNLOCK
-      case MTUNLOCK:
-         msg = "MTUNLOCK";
-         break;
-#endif
-      case MTOFFL:
-         msg = "MTOFFL";
-         break;
-      default:
-         bsnprintf(buf, sizeof(buf), _("unknown func code %d"), func);
-         msg = buf;
-         break;
-      }
-      if (msg != NULL) {
-         dev_errno = ENOSYS;
-         Mmsg1(errmsg, _("I/O function \"%s\" not supported on this device.\n"), msg);
-         Emsg0(M_ERROR, 0, errmsg);
-      }
-   }
-
-   /*
-    * Now we try different methods of clearing the error
-    *  status on the drive so that it is not locked for
-    *  further operations.
-    */
-
-   /* On some systems such as NetBSD, this clears all errors */
-   get_os_tape_file();
-
-/* Found on Solaris */
-#ifdef MTIOCLRERR
-{
-   d_ioctl(m_fd, MTIOCLRERR);
-   Dmsg0(200, "Did MTIOCLRERR\n");
-}
-#endif
-
-/* Typically on FreeBSD */
-#ifdef MTIOCERRSTAT
-{
-  berrno be;
-   /* Read and clear SCSI error status */
-   union mterrstat mt_errstat;
-   Dmsg2(200, "Doing MTIOCERRSTAT errno=%d ERR=%s\n", dev_errno,
-      be.bstrerror(dev_errno));
-   d_ioctl(m_fd, MTIOCERRSTAT, (char *)&mt_errstat);
-}
-#endif
-
-/* Clear Subsystem Exception TRU64 */
-#ifdef MTCSE
-{
-   struct mtop mt_com;
-   mt_com.mt_op = MTCSE;
-   mt_com.mt_count = 1;
-   /* Clear any error condition on the tape */
-   d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
-   Dmsg0(200, "Did MTCSE\n");
-}
-#endif
-}
-
-
-/*
- * Set to unload the current volume in the drive
- */
-void DEVICE::set_unload()
-{
-   if (!m_unload && VolHdr.VolumeName[0] != 0) {
-       m_unload = true;
-       memcpy(UnloadVolName, VolHdr.VolumeName, sizeof(UnloadVolName));
-   }
-}
-
-
-/*
- * Clear volume header
- */
-void DEVICE::clear_volhdr()
-{
-   Dmsg1(100, "Clear volhdr vol=%s\n", VolHdr.VolumeName);
-   memset(&VolHdr, 0, sizeof(VolHdr));
-   setVolCatInfo(false);
-}
-
-
-/*
- * Close the device
- */
-void DEVICE::close()
-{
-   Dmsg1(100, "close_dev %s\n", print_name());
-   offline_or_rewind();
-
-   if (!is_open()) {
-      Dmsg2(100, "device %s already closed vol=%s\n", print_name(),
-         VolHdr.VolumeName);
-      return;                         /* already closed */
+   if (!is_open()) {
+      Dmsg2(200, "device %s already closed vol=%s\n", print_name(),
+         VolHdr.VolumeName);
+      return;                         /* already closed */
    }
 
    switch (dev_type) {
@@ -1767,12 +570,13 @@ void DEVICE::close()
 
    /* Clean up device packet so it can be reused */
    clear_opened();
+
    /*
     * Be careful not to clear items needed by the DVD driver
     *    when it is closing a single part.
     */
    state &= ~(ST_LABEL|ST_READ|ST_APPEND|ST_EOT|ST_WEOT|ST_EOF|
-              ST_MOUNTED|ST_MEDIA|ST_SHORT);
+              ST_NOSPACE|ST_MOUNTED|ST_MEDIA|ST_SHORT);
    label_type = B_BACULA_LABEL;
    file = block_num = 0;
    file_size = 0;
@@ -1793,7 +597,7 @@ void DEVICE::close()
  *  difference between close_part() and close() is that close_part()
  *  saves the state information of the device (e.g. the Volume lable,
  *  the Volume Catalog record, ...  This permits opening and closing
- *  the Volume parts multiple times without losing track of what the    
+ *  the Volume parts multiple times without losing track of what the
  *  main Volume parameters are.
  */
 void DEVICE::close_part(DCR * /*dcr*/)
@@ -1809,104 +613,12 @@ void DEVICE::close_part(DCR * /*dcr*/)
    VolCatInfo = saveVolCatInfo;       /* structure assignment */
 }
 
-boffset_t DEVICE::lseek(DCR *dcr, boffset_t offset, int whence)
-{
-   switch (dev_type) {
-   case B_FILE_DEV:
-#if defined(HAVE_WIN32)
-      return ::_lseeki64(m_fd, (__int64)offset, whence);
-#else
-      return ::lseek(m_fd, offset, whence);
-#endif
-   }
-   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) {
-   case B_VTL_DEV:
-   case B_VTAPE_DEV:
-   case B_TAPE_DEV:
-      /* maybe we should rewind and write and eof ???? */
-      return true;                    /* we don't really truncate tapes */
-   case B_FILE_DEV:
-      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;
-         }
-
-         /*
-          * 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;
-            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, "/");
-            }
-            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;
-}
-
 /*
  * Mount the device.
  * If timeout, wait until the mount command returns 0.
  * If !timeout, try to mount the device only once.
  */
-bool DEVICE::mount(int timeout) 
+bool DEVICE::mount(int timeout)
 {
    Dmsg0(190, "Enter mount\n");
 
@@ -1939,7 +651,7 @@ bool DEVICE::mount(int timeout)
  * If timeout, wait until the unmount command returns 0.
  * If !timeout, try to unmount the device only once.
  */
-bool DEVICE::unmount(int timeout) 
+bool DEVICE::unmount(int timeout)
 {
    Dmsg0(100, "Enter unmount\n");
 
@@ -1968,187 +680,6 @@ bool DEVICE::unmount(int timeout)
    return true;
 }
 
-/*
- * (Un)mount the device (for tape devices)
- */
-bool DEVICE::do_tape_mount(int mount, int dotimeout)
-{
-   POOL_MEM ocmd(PM_FNAME);
-   POOLMEM *results;
-   char *icmd;
-   int status, tries;
-   berrno be;
-
-   Dsm_check(200);
-   if (mount) {
-      icmd = device->mount_command;
-   } else {
-      icmd = device->unmount_command;
-   }
-
-   edit_mount_codes(ocmd, icmd);
-
-   Dmsg2(100, "do_tape_mount: cmd=%s mounted=%d\n", ocmd.c_str(), !!is_mounted());
-
-   if (dotimeout) {
-      /* Try at most 10 times to (un)mount the device. This should perhaps be configurable. */
-      tries = 10;
-   } else {
-      tries = 1;
-   }
-   results = get_memory(4000);
-
-   /* If busy retry each second */
-   Dmsg1(100, "do_tape_mount run_prog=%s\n", ocmd.c_str());
-   while ((status = run_program_full_output(ocmd.c_str(), max_open_wait/2, results)) != 0) {
-      if (tries-- > 0) {
-         continue;
-      }
-
-      Dmsg5(100, "Device %s cannot be %smounted. stat=%d result=%s ERR=%s\n", print_name(),
-           (mount ? "" : "un"), status, results, be.bstrerror(status));
-      Mmsg(errmsg, _("Device %s cannot be %smounted. ERR=%s\n"),
-           print_name(), (mount ? "" : "un"), be.bstrerror(status));
-
-      set_mounted(false);
-      free_pool_memory(results);
-      Dmsg0(200, "============ mount=0\n");
-      Dsm_check(200);
-      return false;
-   }
-
-   set_mounted(mount);              /* set/clear mounted flag */
-   free_pool_memory(results);
-   Dmsg1(200, "============ mount=%d\n", mount);
-   return true;
-}
-
-/*
- * (Un)mount the device (either a FILE or DVD device)
- */
-bool DEVICE::do_file_mount(int mount, int dotimeout) 
-{
-   POOL_MEM ocmd(PM_FNAME);
-   POOLMEM *results;
-   DIR* dp;
-   char *icmd;
-   struct dirent *entry, *result;
-   int status, tries, name_max, count;
-   berrno be;
-
-   Dsm_check(200);
-   if (mount) {
-      icmd = device->mount_command;
-   } else {
-      icmd = device->unmount_command;
-   }
-   
-   clear_freespace_ok();
-   edit_mount_codes(ocmd, icmd);
-   
-   Dmsg2(100, "do_file_mount: cmd=%s mounted=%d\n", ocmd.c_str(), !!is_mounted());
-
-   if (dotimeout) {
-      /* Try at most 10 times to (un)mount the device. This should perhaps be configurable. */
-      tries = 10;
-   } else {
-      tries = 1;
-   }
-   results = get_memory(4000);
-
-   /* If busy retry each second */
-   Dmsg1(100, "do_file_mount run_prog=%s\n", ocmd.c_str());
-   while ((status = run_program_full_output(ocmd.c_str(), max_open_wait/2, results)) != 0) {
-      /* Doesn't work with internationalization (This is not a problem) */
-      if (mount && fnmatch("*is already mounted on*", results, 0) == 0) {
-         break;
-      }
-      if (!mount && fnmatch("* not mounted*", results, 0) == 0) {
-         break;
-      }
-      if (tries-- > 0) {
-         /* Sometimes the device cannot be mounted because it is already mounted.
-          * Try to unmount it, then remount it */
-         if (mount) {
-            Dmsg1(400, "Trying to unmount the device %s...\n", print_name());
-            do_file_mount(0, 0);
-         }
-         bmicrosleep(1, 0);
-         continue;
-      }
-      Dmsg5(100, "Device %s cannot be %smounted. stat=%d result=%s ERR=%s\n", print_name(),
-           (mount ? "" : "un"), status, results, be.bstrerror(status));
-      Mmsg(errmsg, _("Device %s cannot be %smounted. ERR=%s\n"),
-           print_name(), (mount ? "" : "un"), be.bstrerror(status));
-
-      /*
-       * Now, just to be sure it is not mounted, try to read the filesystem.
-       */
-      name_max = pathconf(".", _PC_NAME_MAX);
-      if (name_max < 1024) {
-         name_max = 1024;
-      }
-         
-      if (!(dp = opendir(device->mount_point))) {
-         berrno be;
-         dev_errno = errno;
-         Dmsg3(100, "do_file_mount: failed to open dir %s (dev=%s), ERR=%s\n", 
-               device->mount_point, print_name(), be.bstrerror());
-         goto get_out;
-      }
-      
-      entry = (struct dirent *)malloc(sizeof(struct dirent) + name_max + 1000);
-      count = 0;
-      while (1) {
-         if ((readdir_r(dp, entry, &result) != 0) || (result == NULL)) {
-            dev_errno = EIO;
-            Dmsg2(129, "do_file_mount: failed to find suitable file in dir %s (dev=%s)\n", 
-                  device->mount_point, print_name());
-            break;
-         }
-         if ((strcmp(result->d_name, ".")) && (strcmp(result->d_name, "..")) && (strcmp(result->d_name, ".keep"))) {
-            count++; /* result->d_name != ., .. or .keep (Gentoo-specific) */
-            break;
-         } else {
-            Dmsg2(129, "do_file_mount: ignoring %s in %s\n", result->d_name, device->mount_point);
-         }
-      }
-      free(entry);
-      closedir(dp);
-      
-      Dmsg1(100, "do_file_mount: got %d files in the mount point (not counting ., .. and .keep)\n", count);
-      
-      if (count > 0) {
-         /* If we got more than ., .. and .keep */
-         /*   there must be something mounted */
-         if (mount) {
-            Dmsg1(100, "Did Mount by count=%d\n", count);
-            break;
-         } else {
-            /* An unmount request. We failed to unmount - report an error */
-            set_mounted(true);
-            free_pool_memory(results);
-            Dmsg0(200, "== error mount=1 wanted unmount\n");
-            return false;
-         }
-      }
-get_out:
-      set_mounted(false);
-      free_pool_memory(results);
-      Dmsg0(200, "============ mount=0\n");
-      Dsm_check(200);
-      return false;
-   }
-   
-   set_mounted(mount);              /* set/clear mounted flag */
-   free_pool_memory(results);
-   /* Do not check free space when unmounting */
-   if (mount && !update_freespace()) {
-      return false;
-   }
-   Dmsg1(200, "============ mount=%d\n", mount);
-   return true;
-}
 
 /*
  * Edit codes into (Un)MountCommand, Write(First)PartCommand
@@ -2168,7 +699,7 @@ void DEVICE::edit_mount_codes(POOL_MEM &omsg, const char *imsg)
    const char *p;
    const char *str;
    char add[20];
-   
+
    POOL_MEM archive_name(PM_FNAME);
 
    omsg.c_str()[0] = 0;
@@ -2200,10 +731,6 @@ void DEVICE::edit_mount_codes(POOL_MEM &omsg, const char *imsg)
          case 'm':
             str = device->mount_point;
             break;
-         case 'v':
-            make_spooled_dvd_filename(this, archive_name);
-            str = archive_name.c_str();
-            break;
          default:
             add[0] = '%';
             add[1] = *p;
@@ -2222,7 +749,7 @@ void DEVICE::edit_mount_codes(POOL_MEM &omsg, const char *imsg)
    }
 }
 
-/* return the last timer interval (ms) 
+/* return the last timer interval (ms)
  * or 0 if something goes wrong
  */
 btime_t DEVICE::get_timer_count()
@@ -2251,7 +778,7 @@ ssize_t DEVICE::read(void *buf, size_t len)
       DevReadBytes += read_len;
    }
 
-   return read_len;   
+   return read_len;
 }
 
 /* write to fd */
@@ -2272,7 +799,7 @@ ssize_t DEVICE::write(const void *buf, size_t len)
       DevWriteBytes += write_len;
    }
 
-   return write_len;   
+   return write_len;
 }
 
 /* Return the resource name for the device */
@@ -2281,24 +808,71 @@ const char *DEVICE::name() const
    return device->hdr.name;
 }
 
-/* Returns file position on tape or -1 */
-int32_t DEVICE::get_os_tape_file()
+uint32_t DEVICE::get_file()
 {
-   struct mtget mt_stat;
+   if (is_dvd() || is_tape()) {
+      return file;
+   } else {
+      uint64_t bytes = VolCatInfo.VolCatAmetaBytes;
+      return (uint32_t)(bytes >> 32);
+   }
+}
 
-   if (has_cap(CAP_MTIOCGET) &&
-       d_ioctl(m_fd, MTIOCGET, (char *)&mt_stat) == 0) {
-      return mt_stat.mt_fileno;
+uint32_t DEVICE::get_block_num()
+{
+   if (is_dvd() || is_tape()) {
+      return block_num;
+   } else {
+      return  VolCatInfo.VolCatAmetaBlocks;
    }
-   return -1;
 }
 
-char *
-dev_vol_name(DEVICE *dev)
+/*
+ * Walk through all attached jcrs indicating the volume has changed
+ *   Note: If you have the new VolumeName, it is passed here,
+ *     otherwise pass a NULL.
+ */
+void
+DEVICE::notify_newvol_in_attached_dcrs(const char *newVolumeName)
 {
-   return dev->getVolCatName();
+   Dmsg2(140, "Notify dcrs of vol change. oldVolume=%s NewVolume=%s\n",
+      getVolCatName(), newVolumeName?"*None*":newVolumeName);
+   Lock_dcrs();
+   DCR *mdcr;
+   foreach_dlist(mdcr, attached_dcrs) {
+      if (mdcr->jcr->JobId == 0) {
+         continue;                 /* ignore console */
+      }
+      mdcr->NewVol = true;
+      mdcr->NewFile = true;
+      if (newVolumeName && mdcr->VolumeName != newVolumeName) {
+         bstrncpy(mdcr->VolumeName, newVolumeName, sizeof(mdcr->VolumeName));
+         Dmsg2(140, "Set NewVol=%s in JobId=%d\n", mdcr->VolumeName, mdcr->jcr->JobId);
+      }
+   }
+   Unlock_dcrs();
 }
 
+/*
+ * Walk through all attached jcrs indicating the File has changed
+ */
+void
+DEVICE::notify_newfile_in_attached_dcrs()
+{
+   Dmsg1(140, "Notify dcrs of file change. Volume=%s\n", getVolCatName());
+   Lock_dcrs();
+   DCR *mdcr;
+   foreach_dlist(mdcr, attached_dcrs) {
+      if (mdcr->jcr->JobId == 0) {
+         continue;                 /* ignore console */
+      }
+      Dmsg1(140, "Notify JobI=%d\n", mdcr->jcr->JobId);
+      mdcr->NewFile = true;
+   }
+   Unlock_dcrs();
+}
+
+
 
 /*
  * Free memory allocated for the device
@@ -2324,7 +898,6 @@ void DEVICE::term(void)
    pthread_cond_destroy(&wait);
    pthread_cond_destroy(&wait_next_vol);
    pthread_mutex_destroy(&spool_mutex);
-// rwl_destroy(&lock);
    if (attached_dcrs) {
       delete attached_dcrs;
       attached_dcrs = NULL;
@@ -2377,7 +950,7 @@ void init_jcr_device_wait_timers(JCR *jcr)
 
 
 /*
- * The dev timers are used for waiting on a particular device 
+ * The dev timers are used for waiting on a particular device
  *
  * Returns: true if time doubled
  *          false if max time expired
@@ -2396,118 +969,6 @@ bool double_dev_wait_time(DEVICE *dev)
    return true;
 }
 
-
-void set_os_device_parameters(DCR *dcr)
-{
-   DEVICE *dev = dcr->dev;
-
-   if (strcmp(dev->dev_name, "/dev/null") == 0) {
-      return;                            /* no use trying to set /dev/null */
-   }
-
-#if defined(HAVE_LINUX_OS) || defined(HAVE_WIN32)
-   struct mtop mt_com;
-
-   Dmsg0(100, "In set_os_device_parameters\n");
-#if defined(MTSETBLK) 
-   if (dev->min_block_size == dev->max_block_size &&
-       dev->min_block_size == 0) {    /* variable block mode */
-      mt_com.mt_op = MTSETBLK;
-      mt_com.mt_count = 0;
-      Dmsg0(100, "Set block size to zero\n");
-      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
-         dev->clrerror(MTSETBLK);
-      }
-   }
-#endif
-#if defined(MTSETDRVBUFFER)
-   if (getuid() == 0) {          /* Only root can do this */
-      mt_com.mt_op = MTSETDRVBUFFER;
-      mt_com.mt_count = MT_ST_CLEARBOOLEANS;
-      if (!dev->has_cap(CAP_TWOEOF)) {
-         mt_com.mt_count |= MT_ST_TWO_FM;
-      }
-      if (dev->has_cap(CAP_EOM)) {
-         mt_com.mt_count |= MT_ST_FAST_MTEOM;
-      }
-      Dmsg0(100, "MTSETDRVBUFFER\n");
-      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
-         dev->clrerror(MTSETDRVBUFFER);
-      }
-   }
-#endif
-   return;
-#endif
-
-#ifdef HAVE_NETBSD_OS
-   struct mtop mt_com;
-   if (dev->min_block_size == dev->max_block_size &&
-       dev->min_block_size == 0) {    /* variable block mode */
-      mt_com.mt_op = MTSETBSIZ;
-      mt_com.mt_count = 0;
-      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
-         dev->clrerror(MTSETBSIZ);
-      }
-      /* Get notified at logical end of tape */
-      mt_com.mt_op = MTEWARN;
-      mt_com.mt_count = 1;
-      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
-         dev->clrerror(MTEWARN);
-      }
-   }
-   return;
-#endif
-
-#if HAVE_FREEBSD_OS || HAVE_OPENBSD_OS
-   struct mtop mt_com;
-   if (dev->min_block_size == dev->max_block_size &&
-       dev->min_block_size == 0) {    /* variable block mode */
-      mt_com.mt_op = MTSETBSIZ;
-      mt_com.mt_count = 0;
-      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
-         dev->clrerror(MTSETBSIZ);
-      }
-   }
-#if defined(MTIOCSETEOTMODEL) 
-   uint32_t neof;
-   if (dev->has_cap(CAP_TWOEOF)) {
-      neof = 2;
-   } else {
-      neof = 1;
-   }
-   if (dev->d_ioctl(dev->fd(), MTIOCSETEOTMODEL, (caddr_t)&neof) < 0) {
-      berrno be;
-      dev->dev_errno = errno;         /* save errno */
-      Mmsg2(dev->errmsg, _("Unable to set eotmodel on device %s: ERR=%s\n"),
-            dev->print_name(), be.bstrerror(dev->dev_errno));
-      Jmsg(dcr->jcr, M_FATAL, 0, dev->errmsg);
-   }
-#endif
-   return;
-#endif
-
-#ifdef HAVE_SUN_OS
-   struct mtop mt_com;
-   if (dev->min_block_size == dev->max_block_size &&
-       dev->min_block_size == 0) {    /* variable block mode */
-      mt_com.mt_op = MTSRSZ;
-      mt_com.mt_count = 0;
-      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
-         dev->clrerror(MTSRSZ);
-      }
-   }
-   return;
-#endif
-}
-
-static bool dev_get_os_pos(DEVICE *dev, struct mtget *mt_stat)
-{
-   Dmsg0(100, "dev_get_os_pos\n");
-   return dev->has_cap(CAP_MTIOCGET) && 
-          dev->d_ioctl(dev->fd(), MTIOCGET, (char *)mt_stat) == 0 &&
-          mt_stat->mt_fileno >= 0;
-}
-
 static const char *modes[] = {
    "CREATE_READ_WRITE",
    "OPEN_READ_WRITE",
@@ -2516,7 +977,7 @@ static const char *modes[] = {
 };
 
 
-static const char *mode_to_str(int mode)  
+const char *mode_to_str(int mode)
 {
    static char buf[100];
    if (mode < 1 || mode > 4) {
diff --git a/src/stored/dev.h b/src/stored/dev.h
index c7a01cf..f773267 100644
--- a/src/stored/dev.h
+++ b/src/stored/dev.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Definitions for using the Device functions in Bacula
@@ -34,14 +22,7 @@
  */
 
 /*
- * Some details of how volume and device 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
+ * Some details of how device reservations work
  *
  * class DEVICE:
  *   set_load()       set to load volume
@@ -86,7 +67,11 @@ enum {
    OPEN_WRITE_ONLY
 };
 
-/* Device types */
+/*
+ * Device types
+ * If you update this table, be sure to add an
+ *  entry in prt_dev_types[] in dev.c
+ */
 enum {
    B_FILE_DEV = 1,
    B_TAPE_DEV,
@@ -94,7 +79,8 @@ enum {
    B_FIFO_DEV,
    B_VTAPE_DEV,                       /* change to B_TAPE_DEV after init */
    B_FTP_DEV,
-   B_VTL_DEV
+   B_VTL_DEV,
+   B_VIRTUAL_DEV                      /* Virtual device */
 };
 
 /* Generic status bits returned from status_dev() */
@@ -160,22 +146,30 @@ enum {
 #define ST_MEDIA           (1<<16)    /* Media found in mounted device */
 #define ST_OFFLINE         (1<<17)    /* set offline by operator */
 #define ST_PART_SPOOLED    (1<<18)    /* spooling part */
-#define ST_FREESPACE_OK    (1<<19)    /* Have valid freespace for DVD */
+#define ST_FREESPACE_OK    (1<<19)    /* Have valid freespace */
+#define ST_NOSPACE         (1<<20)    /* No space on device */
 
 
 /* Volume Catalog Information structure definition */
 struct VOLUME_CAT_INFO {
    /* Media info for the current Volume */
-   uint32_t VolCatJobs;               /* number of jobs on this Volume */
+   uint64_t VolCatBytes;              /* Total bytes written */
+   uint64_t VolCatAmetaBytes;         /* Ameta bytes written */
+   uint64_t VolCatPadding;            /* Total padding bytes written */
+   uint32_t VolCatBlocks;             /* Total blocks */
+   uint32_t VolCatAmetaBlocks;        /* Ameta blocks */
+   uint32_t VolCatWrites;             /* Total writes this volume */
+   uint32_t VolCatAmetaWrites;        /* Ameta writes this volume */
+   uint32_t VolCatReads;              /* Total reads this volume */
+   uint32_t VolCatAmetaReads;         /* Ameta reads this volume */
+   uint64_t VolCatRBytes;             /* Total bytes read */
+   uint64_t VolCatAmetaRBytes;        /* Ameta bytes read */
+
+   uint32_t VolCatJobs;               /* Number of jobs on this Volume */
    uint32_t VolCatFiles;              /* Number of files */
-   uint32_t VolCatBlocks;             /* Number of blocks */
-   uint64_t VolCatBytes;              /* Number of bytes written */
    uint32_t VolCatParts;              /* Number of parts written */
    uint32_t VolCatMounts;             /* Number of mounts this volume */
    uint32_t VolCatErrors;             /* Number of errors this volume */
-   uint32_t VolCatWrites;             /* Number of writes this volume */
-   uint32_t VolCatReads;              /* Number of reads this volume */
-   uint64_t VolCatRBytes;             /* Number of bytes read */
    uint32_t VolCatRecycles;           /* Number of recycles this volume */
    uint32_t EndFile;                  /* Last file number */
    uint32_t EndBlock;                 /* Last block number */
@@ -188,6 +182,7 @@ struct VOLUME_CAT_INFO {
    btime_t  VolReadTime;              /* time spent reading */
    btime_t  VolWriteTime;             /* time spent writing this Volume */
    int64_t  VolMediaId;               /* MediaId */
+   int64_t  VolScratchPoolId;         /* ScratchPoolId */
    utime_t  VolFirstWritten;          /* Time of first write */
    utime_t  VolLastWritten;           /* Time of last write */
    bool     InChanger;                /* Set if vol in current magazine */
@@ -212,20 +207,24 @@ private:
    int m_blocked;                     /* set if we must wait (i.e. change tape) */
    int m_count;                       /* Mutex use count -- DEBUG only */
    int m_num_reserved;                /* counter of device reservations */
-   int32_t m_slot;                    /* slot loaded in drive or -1 if none */ 
+   bool m_append_reserve;             /* reserved for append or read in m_num_reserved set */
+   int32_t m_slot;                    /* slot loaded in drive or -1 if none */
    pthread_t m_pid;                   /* Thread that locked -- DEBUG only */
    bool m_unload;                     /* set when Volume must be unloaded */
    bool m_load;                       /* set when Volume must be loaded */
+   bool m_wait;                       /* must wait for device to free volume */
+   bthread_mutex_t m_mutex;           /* access control */
+   bthread_mutex_t acquire_mutex;     /* mutex for acquire code */
+   pthread_mutex_t read_acquire_mutex; /* mutex for acquire read code */
+   pthread_mutex_t volcat_mutex;      /* VolCatInfo mutex */
+   pthread_mutex_t dcrs_mutex;        /* Attached dcr mutex */
 
 public:
    DEVICE() {};
    virtual ~DEVICE() {};
    DEVICE * volatile swap_dev;        /* Swap vol from this device */
    dlist *attached_dcrs;              /* attached DCR list */
-   bthread_mutex_t m_mutex;           /* access control */
    bthread_mutex_t spool_mutex;       /* mutex for updating spool_size */
-   bthread_mutex_t acquire_mutex;     /* mutex for acquire code */
-   pthread_mutex_t read_acquire_mutex; /* mutex for acquire read code */
    pthread_cond_t wait;               /* thread wait variable */
    pthread_cond_t wait_next_vol;      /* wait for tape to be mounted */
    pthread_t no_wait_id;              /* this thread must not wait */
@@ -239,7 +238,13 @@ public:
    int openmode;                      /* parameter passed to open_dev (useful to reopen the device) */
    int dev_type;                      /* device type */
    bool autoselect;                   /* Autoselect in autochanger */
+   bool read_only;                    /* Device is read only */
    bool initiated;                    /* set when init_dev() called */
+   bool m_shstore;                    /* Shares storage can be used */
+   bool m_shstore_lock;               /* set if shared lock set */
+   bool m_shstore_user_lock;          /* set if user set shared lock */
+   bool m_shstore_register;           /* set if register key set */
+   bool m_shstore_blocked;            /* Set if I am blocked */
    int label_type;                    /* Bacula/ANSI/IBM label types */
    uint32_t drive_index;              /* Autochanger drive index (base 0) */
    POOLMEM *dev_name;                 /* Physical device name */
@@ -262,20 +267,20 @@ public:
    uint64_t spool_size;               /* current spool size for this device */
    uint32_t max_rewind_wait;          /* max secs to allow for rewind */
    uint32_t max_open_wait;            /* max secs to allow for open */
-   uint32_t max_open_vols;            /* max simultaneous open volumes */
-   
+
    uint64_t max_part_size;            /* max part size */
    uint64_t part_size;                /* current part size */
    uint32_t part;                     /* current part number (starts at 0) */
    uint64_t part_start;               /* current part start address (relative to the whole volume) */
    uint32_t num_dvd_parts;            /* number of parts WRITTEN on the DVD */
    /* state ST_FREESPACE_OK is set if free_space is valid */
-   uint64_t free_space;               /* current free space on medium (without the current part) */
+   uint64_t free_space;               /* current free space on device */
+   uint64_t min_free_space;           /* Minimum free disk space */
    int free_space_errno;              /* indicates errno getting freespace */
    bool truncating;                   /* if set, we are currently truncating the DVD */
    bool blank_dvd;                    /* if set, we have a blank DVD in the drive */
-   
-   
+
+
    utime_t  vol_poll_interval;        /* interval between polling Vol mount */
    DEVRES *device;                    /* pointer to Device Resource */
    VOLRES *vol;                       /* Pointer to Volume reservation item */
@@ -287,6 +292,7 @@ public:
    char pool_type[MAX_NAME_LENGTH];   /* pool type */
 
    char UnloadVolName[MAX_NAME_LENGTH];  /* Last wrong Volume mounted */
+   char lock_holder[12];              /* holder of SCSI lock */
    bool poll;                         /* set to poll Volume */
    /* Device wait times ***FIXME*** look at durations */
    int min_wait;
@@ -314,7 +320,7 @@ public:
    int is_autochanger() const { return capabilities & CAP_AUTOCHANGER; }
    int requires_mount() const { return capabilities & CAP_REQMOUNT; }
    int is_removable() const { return capabilities & CAP_REM; }
-   int is_tape() const { return (dev_type == B_TAPE_DEV || 
+   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); }
@@ -332,11 +338,14 @@ public:
    int have_media() const { return state & ST_MEDIA; }
    int is_short_block() const { return state & ST_SHORT; }
    int is_busy() const { return (state & ST_READ) || num_writers || num_reserved(); }
+   bool is_reserved_for_read() const { return num_reserved() && !m_append_reserve; }
+   bool is_ateot() const { return (state & ST_EOF) && (state & ST_EOT) && (state & ST_WEOT); }
    int at_eof() const { return state & ST_EOF; }
    int at_eot() const { return state & ST_EOT; }
    int at_weot() const { return state & ST_WEOT; }
    int can_append() const { return state & ST_APPEND; }
    int is_freespace_ok() const { return state & ST_FREESPACE_OK; }
+   int is_nospace() const { return (is_freespace_ok() && (state & ST_NOSPACE)); };
    /*
     * can_write() is meant for checking at the end of a job to see
     * if we still have a tape (perhaps not if at end of tape
@@ -344,12 +353,12 @@ public:
     */
    int can_write() const { return is_open() && can_append() &&
                             is_labeled() && !at_weot(); }
-   int can_read() const   { return state & ST_READ; }
+   bool can_read() const   { return (state & ST_READ) != 0; }
    bool can_steal_lock() const { return m_blocked &&
                     (m_blocked == BST_UNMOUNTED ||
                      m_blocked == BST_WAITING_FOR_SYSOP ||
                      m_blocked == BST_UNMOUNTED_WAITING_FOR_SYSOP); };
-   bool waiting_for_mount() const { return 
+   bool waiting_for_mount() const { return
                     (m_blocked == BST_UNMOUNTED ||
                      m_blocked == BST_WAITING_FOR_SYSOP ||
                      m_blocked == BST_UNMOUNTED_WAITING_FOR_SYSOP); };
@@ -359,13 +368,12 @@ public:
    const char *archive_name() const;
    const char *name() const;
    const char *print_name() const;    /* Name for display purposes */
+   const char *print_type() const;    /* in dev.c */
    void set_ateof(); /* in dev.c */
    void set_ateot(); /* in dev.c */
    void set_eot() { state |= ST_EOT; };
    void set_eof() { state |= ST_EOF; };
-   void set_append() { state |= ST_APPEND; };
    void set_labeled() { state |= ST_LABEL; };
-   inline void set_read() { state |= ST_READ; };
    void set_offline() { state |= ST_OFFLINE; };
    void set_mounted() { state |= ST_MOUNTED; };
    void set_media() { state |= ST_MEDIA; };
@@ -377,12 +385,15 @@ public:
    bool is_volume_to_unload() const { \
       return m_unload && strcmp(VolHdr.VolumeName, UnloadVolName) == 0; };
    void set_load() { m_load = true; };
+   void set_wait() { m_wait = true; };
+   void clear_wait() { m_wait = false; };
+   bool must_wait() const { return m_wait; };
    void inc_reserved() { m_num_reserved++; }
    void set_mounted(int val) { if (val) state |= ST_MOUNTED; \
           else state &= ~ST_MOUNTED; };
    void dec_reserved() { m_num_reserved--; ASSERT(m_num_reserved>=0); };
-   void clear_append() { state &= ~ST_APPEND; };
-   void clear_read() { state &= ~ST_READ; };
+   void set_read_reserve() { m_append_reserve = false; };
+   void set_append_reserve() { m_append_reserve = true; };
    void clear_labeled() { state &= ~ST_LABEL; };
    void clear_offline() { state &= ~ST_OFFLINE; };
    void clear_eot() { state &= ~ST_EOT; };
@@ -403,13 +414,27 @@ public:
      bstrncpy(VolCatInfo.VolCatName, name, sizeof(VolCatInfo.VolCatName));
      setVolCatInfo(false);
    };
+   void setVolCatStatus(const char *status) {
+     bstrncpy(VolCatInfo.VolCatStatus, status, sizeof(VolCatInfo.VolCatStatus));
+     setVolCatInfo(false);
+   };
+
+   void clearVolCatBytes() {
+      VolCatInfo.VolCatBytes = 0;
+      VolCatInfo.VolCatAmetaBytes = 0;
+   };
+
    char *getVolCatName() { return VolCatInfo.VolCatName; };
 
+   void set_nospace();           /* in aligned.c */
+   void set_append();            /* in aligned.c */
+   void set_read();              /* in aligned.c */
+   void clear_nospace();         /* in aligned.c */
+   void clear_append();          /* in aligned.c */
+   void clear_read();            /* in aligned.c */
    void set_unload();            /* in dev.c */
    void clear_volhdr();          /* in dev.c */
-   void close();                 /* in dev.c */
    void close_part(DCR *dcr);    /* 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 */
@@ -417,30 +442,32 @@ public:
    bool unmount(int timeout);    /* in dev.c */
    void edit_mount_codes(POOL_MEM &omsg, const char *imsg); /* in dev.c */
    bool offline_or_rewind();     /* in dev.c */
-   bool offline();               /* in dev.c */
-   bool bsf(int count);          /* in dev.c */
    bool eod(DCR *dcr);           /* in dev.c */
    bool fsr(int num);            /* in dev.c */
-   bool fsf(int num);            /* in dev.c */
    bool bsr(int num);            /* in dev.c */
    bool weof(int num);           /* in dev.c */
-   void lock_door();             /* in dev.c */
-   void unlock_door();           /* in dev.c */
    int32_t get_os_tape_file();   /* in dev.c */
    bool scan_dir_for_volume(DCR *dcr); /* in scan.c */
-   bool reposition(DCR *dcr, uint32_t rfile, uint32_t rblock); /* in dev.c */
    void clrerror(int func);      /* in dev.c */
    void set_slot(int32_t slot);  /* in dev.c */
    void clear_slot();            /* in dev.c */
+   void notify_newvol_in_attached_dcrs(const char *VolumeName); /* in dev.c */
+   void notify_newfile_in_attached_dcrs();/* in dev.c */
+   void attach_dcr_to_dev(DCR *dcr);      /* in acquire.c */
+   void detach_dcr_from_dev(DCR *dcr);    /* in acquire.c */
 
+   void updateVolCatBytes(uint64_t);      /* in dev.c */
+   void updateVolCatBlocks(uint32_t);     /* in dev.c */
+   void updateVolCatWrites(uint32_t);     /* in dev.c */
+   void updateVolCatReads(uint32_t);      /* in dev.c */
+   void updateVolCatReadBytes(uint64_t);  /* in dev.c */
 
-   bool update_freespace();      /* in dvd.c */
+   uint32_t get_file();                   /* in dev.c */
+   uint32_t get_block_num();              /* in dev.c */
 
-   uint32_t get_file() const { return file; };
-   uint32_t get_block_num() const { return block_num; };
    int fd() const { return m_fd; };
 
-   /* low level operations */
+   /* Virtual functions that can be overridden */
    virtual int d_ioctl(int fd, ioctl_req_t request, char *mt_com=NULL);
    virtual int d_open(const char *pathname, int flags);
    virtual int d_close(int fd);
@@ -451,23 +478,43 @@ public:
    virtual bool rewind(DCR *dcr);
    virtual bool truncate(DCR *dcr);
    virtual void open_device(DCR *dcr, int omode);
-   /* 
+   virtual void close();                 /* in dev.c */
+   virtual bool open(DCR *dcr, int mode); /* in dev.c */
+
+   /* These could probably be made tape_dev only */
+   virtual bool bsf(int count) { return true; }
+   virtual bool fsf(int num) { return true; }
+   virtual bool offline() { return true; }
+   virtual void lock_door() { return; }
+   virtual void unlock_door() { return; }
+   virtual bool reposition(DCR *dcr, uint32_t rfile, uint32_t rblock);
+
+
+   /*
     * Locking and blocking calls
     */
-#ifdef  SD_DEBUG_LOCK
-   void dbg_rLock(const char *, int, bool locked=false);    /* in lock.c */
-   void dbg_rUnlock(const char *, int);                     /* in lock.c */
+#ifdef DEV_DEBUG_LOCK
    void dbg_Lock(const char *, int);                        /* in lock.c */
    void dbg_Unlock(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 */
+#else
+   void Lock();                           /* in lock.c */
+   void Unlock();                         /* in lock.c */
+   void rLock(bool locked=false);         /* in lock.c */
+   void rUnlock();                        /* in lock.c */
+#endif
+   void Lock_dcrs() { P(dcrs_mutex); };
+   void Unlock_dcrs() { V(dcrs_mutex); };
+
+#ifdef  SD_DEBUG_LOCK
    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 */
+   void dbg_Lock_VolCatInfo(const char *, int);             /* in lock.c */
+   void dbg_Unlock_VolCatInfo(const char *, int);           /* in lock.c */
 #else
-   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 */
@@ -479,6 +526,7 @@ public:
    int init_acquire_mutex();              /* in lock.c */
    int init_read_acquire_mutex();         /* in lock.c */
    int init_volcat_mutex();               /* in lock.c */
+   int init_dcrs_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 */
@@ -488,15 +536,14 @@ public:
    int blocked() const { return m_blocked; };
    bool is_blocked() const { return m_blocked != BST_NOT_BLOCKED; };
    const char *print_blocked() const;     /* in dev.c */
+   void open_tape_device(DCR *dcr, int omode);    /* in dev.c */
+   void open_file_device(DCR *dcr, int omode);    /* in dev.c */
 
 private:
    bool do_tape_mount(int mount, int dotimeout);  /* in dev.c */
    bool do_file_mount(int mount, int dotimeout);  /* in dev.c */
    void set_mode(int omode);                      /* in dev.c */
-   void open_tape_device(DCR *dcr, int omode);    /* in dev.c */
-   void open_file_device(DCR *dcr, int omode);    /* in dev.c */
 };
-
 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; }
@@ -510,10 +557,10 @@ inline const char *DEVICE::print_name() const { return prt_name; }
  *  There is one of these records for each Job that is using
  *  the device. Items in this record are "local" to the Job and
  *  do not affect other Jobs. Note, a job can have multiple
- *  DCRs open, each pointing to a different device. 
+ *  DCRs open, each pointing to a different device.
  * Normally, there is only one JCR thread per DCR. However, the
  *  big and important exception to this is when a Job is being
- *  canceled. At that time, there may be two threads using the 
+ *  canceled. At that time, there may be two threads using the
  *  same DCR. Consequently, when creating/attaching/detaching
  *  and freeing the DCR we must lock it (m_mutex).
  */
@@ -523,13 +570,13 @@ private:
    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 */
+   bool m_writing;                    /* set when DCR used for writing */
 
 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 */
+   DEVICE *ameta_dev;                 /* pointer to ameta_dev */
    DEVRES *device;                    /* pointer to device resource */
    DEV_BLOCK *block;                  /* pointer to block */
    DEV_RECORD *rec;                   /* pointer to record */
@@ -566,14 +613,20 @@ public:
    VOLUME_CAT_INFO VolCatInfo;        /* Catalog info for desired volume */
 
    /* Methods */
-   void set_dev(DEVICE *ndev) { dev = ndev; }; 
+   void set_dev(DEVICE *ndev) { dev = ndev; ameta_dev = ndev; };
+   void set_dev_locked() { m_dev_locked = true; };
+   void set_writing() { m_writing = true; };
+   void clear_writing() { m_writing = false; };
+   bool is_reading() const { return !m_writing; };
+   bool is_writing() const { return m_writing; };
+   void clear_dev_locked() { m_dev_locked = false; };
    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; }
+   bool is_dev_locked() const { return m_dev_locked; }
    void setVolCatInfo(bool valid) { VolCatInfo.is_valid = valid; };
    bool haveVolCatInfo() const { return VolCatInfo.is_valid; };
    void setVolCatName(const char *name) {
@@ -582,23 +635,27 @@ public:
    };
    char *getVolCatName() { return VolCatInfo.VolCatName; };
 
+   /* Methods in autochanger.c */
+   bool is_virtual_autochanger();
+
    /* 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 read_record.c */
+   bool read_records(
+           bool record_cb(DCR *dcr, DEV_RECORD *rec),
+           bool mount_cb(DCR *dcr));
+   bool try_repositioning(DEV_RECORD *rec);
+   BSR *position_to_first_file();
+
    /* Methods in reserve.c */
    void clear_reserved();
-   void set_reserved();
-   void unreserve_device();
+   void set_reserved_for_read();
+   void set_reserved_for_append();
+   void unreserve_device(bool locked);
 
    /* Methods in vol_mgr.c */
    bool can_i_use_volume();
@@ -621,6 +678,7 @@ public:
    bool is_tape_position_ok();
 
    /* Methods in block.c */
+   void free_blocks();
    bool write_block_to_device();
    bool write_block_to_dev();
    bool read_block_from_device(bool check_block_numbers);
@@ -628,7 +686,7 @@ public:
 
    /* Methods in label.c */
    bool rewrite_volume_label(bool recycle);
-   
+
 };
 
 /* Get some definition of function to position
diff --git a/src/stored/device.c b/src/stored/device.c
index 1f4084d..3743bce 100644
--- a/src/stored/device.c
+++ b/src/stored/device.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -39,7 +27,7 @@
  *        Obviously, no zzz_dev() is allowed to call
  *        a www_device() or everything falls apart.
  *
- * Concerning the routines dev->r_lock()() and block_device()
+ * Concerning the routines dev->rLock()() and block_device()
  *  see the end of this module for details.  In general,
  *  blocking a device leaves it in a state where all threads
  *  other than the current thread block when they attempt to
@@ -53,12 +41,20 @@
  *
  *   Kern Sibbald, MM, MMI
  *
- *   Version $Id$
  */
 
 #include "bacula.h"                   /* pull in global headers */
+#ifdef HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#else
+#define statvfs statfs
+#endif
+/* statvfs.h defines ST_APPEND, which is also used by Bacula */
+#undef ST_APPEND
+
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
+
 /* Forward referenced functions */
 
 /*
@@ -76,7 +72,7 @@
  * We enter with device locked, and
  *     exit with device locked.
  *
- * Note, we are called only from one place in block.c for the daemons.  
+ * Note, we are called only from one place in block.c for the daemons.
  *     The btape utility calls it from btape.c.
  *
  *  Returns: true  on success
@@ -86,15 +82,19 @@ bool fixup_device_block_write_error(DCR *dcr, int retries)
 {
    char PrevVolName[MAX_NAME_LENGTH];
    DEV_BLOCK *label_blk;
-   DEV_BLOCK *block = dcr->block;
+   DEV_BLOCK *block;
    char b1[30], b2[30];
    time_t wait_time;
    char dt[MAX_TIME_LENGTH];
    JCR *jcr = dcr->jcr;
-   DEVICE *dev = dcr->dev;
-   int blocked = dev->blocked();         /* save any previous blocked status */
+   DEVICE *dev;
+   int blocked;              /* save any previous blocked status */
    bool ok = false;
 
+   dev = dcr->dev;
+   blocked = dev->blocked();
+   block = dcr->block;
+
    wait_time = time(NULL);
 
    Dmsg0(100, "=== Enter fixup_device_block_write_error\n");
@@ -122,15 +122,22 @@ bool fixup_device_block_write_error(DCR *dcr, int retries)
         edit_uint64_with_commas(dev->VolCatInfo.VolCatBlocks, b2),
         bstrftime(dt, sizeof(dt), time(NULL)));
 
-   Dmsg1(050, "set_unload dev=%s\n", dev->print_name());
+   Dmsg1(150, "set_unload dev=%s\n", dev->print_name());
    dev->set_unload();
+
+   /* Clear DCR Start/End Block/File positions */
+   dcr->StartBlock = dcr->EndBlock = 0;
+   dcr->StartFile  = dcr->EndFile = 0;
+
    if (!dcr->mount_next_write_volume()) {
       free_block(label_blk);
       dcr->block = block;
-      dev->Lock();  
+      dev->Lock();
       goto bail_out;
    }
-   Dmsg2(050, "must_unload=%d dev=%s\n", dev->must_unload(), dev->print_name());
+   Dmsg2(150, "must_unload=%d dev=%s\n", dev->must_unload(), dev->print_name());
+
+   dev->notify_newvol_in_attached_dcrs(dcr->VolumeName);
    dev->Lock();                    /* lock again */
 
    dev->VolCatInfo.VolCatJobs++;              /* increment number of jobs on vol */
@@ -157,22 +164,6 @@ bool fixup_device_block_write_error(DCR *dcr, int retries)
    free_block(label_blk);
    dcr->block = block;
 
-   /*
-    * Walk through all attached jcrs indicating the volume has changed
-    */
-   Dmsg1(100, "Notify vol change. Volume=%s\n", dev->getVolCatName());
-   DCR *mdcr;
-   foreach_dlist(mdcr, dev->attached_dcrs) {
-      JCR *mjcr = mdcr->jcr;
-      if (mjcr->JobId == 0) {
-         continue;                 /* ignore console */
-      }
-      mdcr->NewVol = true;
-      if (jcr != mjcr) {
-         bstrncpy(mdcr->VolumeName, dcr->VolumeName, sizeof(mdcr->VolumeName));
-      }
-   }
-
    /* Clear NewVol now because dir_get_volume_info() already done */
    jcr->dcr->NewVol = false;
    set_new_volume_parameters(dcr);
@@ -187,7 +178,7 @@ bool fixup_device_block_write_error(DCR *dcr, int retries)
         be.bstrerror(dev->dev_errno));
       /* Note: recursive call */
       if (retries-- <= 0 || !fixup_device_block_write_error(dcr, retries)) {
-         Jmsg2(jcr, M_FATAL, 0, 
+         Jmsg2(jcr, M_FATAL, 0,
               _("Catastrophic error. Cannot write overflow block to device %s. ERR=%s"),
               dev->print_name(), be.bstrerror(dev->dev_errno));
          goto bail_out;
@@ -216,8 +207,11 @@ void set_start_vol_position(DCR *dcr)
       dcr->StartBlock = dev->block_num;
       dcr->StartFile = dev->file;
    } else {
-      dcr->StartBlock = (uint32_t)dev->file_addr;
-      dcr->StartFile  = (uint32_t)(dev->file_addr >> 32);
+      /*
+       * Note: we only update the DCR values for blocks
+       */
+      dcr->StartBlock = dcr->EndBlock = (uint32_t)dev->file_addr;
+      dcr->StartFile  = dcr->EndFile = (uint32_t)(dev->file_addr >> 32);
    }
 }
 
@@ -229,8 +223,17 @@ void set_start_vol_position(DCR *dcr)
 void set_new_volume_parameters(DCR *dcr)
 {
    JCR *jcr = dcr->jcr;
-   if (dcr->NewVol && !dir_get_volume_info(dcr, GET_VOL_INFO_FOR_WRITE)) {
-      Jmsg1(jcr, M_ERROR, 0, "%s", jcr->errmsg);
+   Dmsg1(40, "set_new_volume_parameters dev=%s\n", dcr->dev->print_name());
+   if (dcr->NewVol) {
+      while (dcr->VolumeName[0] == 0) {
+         int retries = 5;
+         wait_for_device(dcr, retries);
+      }
+      if (dir_get_volume_info(dcr, GET_VOL_INFO_FOR_WRITE)) {
+         dcr->dev->clear_wait();
+      } else {
+         Dmsg1(40, "getvolinfo failed. No new Vol: %s", jcr->errmsg);
+      }
    }
    set_new_file_parameters(dcr);
    jcr->NumWriteVolumes++;
@@ -247,6 +250,8 @@ void set_new_file_parameters(DCR *dcr)
    set_start_vol_position(dcr);
 
    /* Reset indicies */
+   Dmsg3(1000, "Reset indices Vol=%s were: FI=%d LI=%d\n", dcr->VolumeName,
+      dcr->VolFirstIndex, dcr->VolLastIndex);
    dcr->VolFirstIndex = 0;
    dcr->VolLastIndex = 0;
    dcr->NewFile = false;
@@ -279,7 +284,7 @@ bool first_open_device(DCR *dcr)
       return false;
    }
 
-   dev->rLock();
+   dev->rLock(false);
 
    /* Defer opening files */
    if (!dev->is_tape()) {
@@ -302,14 +307,14 @@ bool first_open_device(DCR *dcr)
    Dmsg1(129, "open dev %s OK\n", dev->print_name());
 
 bail_out:
-   dev->Unlock();
+   dev->rUnlock();
    return ok;
 }
 
 /*
  * Make sure device is open, if not do so
  */
-bool open_device(DCR *dcr)
+bool open_dev(DCR *dcr)
 {
    DEVICE *dev = dcr->dev;
    /* Open device */
@@ -326,10 +331,103 @@ bool open_device(DCR *dcr)
       if (!dev->poll && !dev->is_dvd() && !dev->is_removable()) {
          Jmsg2(dcr->jcr, M_FATAL, 0, _("Unable to open device %s: ERR=%s\n"),
             dev->print_name(), dev->bstrerror());
-         Pmsg2(000, _("Unable to open archive %s: ERR=%s\n"), 
+         Pmsg2(000, _("Unable to open archive %s: ERR=%s\n"),
             dev->print_name(), dev->bstrerror());
       }
       return false;
    }
    return true;
 }
+
+/*
+ */
+void DEVICE::updateVolCatBytes(uint64_t bytes)
+{
+   DEVICE *dev;
+   Lock_VolCatInfo();
+   dev = this;
+   dev->VolCatInfo.VolCatAmetaBytes += bytes;
+   dev->VolCatInfo.VolCatBytes += bytes;
+   setVolCatInfo(false);
+   Unlock_VolCatInfo();
+}
+
+void DEVICE::updateVolCatBlocks(uint32_t blocks)
+{
+   DEVICE *dev;
+   Lock_VolCatInfo();
+   dev = this;
+   dev->VolCatInfo.VolCatAmetaBlocks += blocks;
+   dev->VolCatInfo.VolCatBlocks += blocks;
+   setVolCatInfo(false);
+   Unlock_VolCatInfo();
+}
+
+void DEVICE::updateVolCatWrites(uint32_t writes)
+{
+   DEVICE *dev;
+   Lock_VolCatInfo();
+   dev = this;
+   dev->VolCatInfo.VolCatAmetaWrites += writes;
+   dev->VolCatInfo.VolCatWrites += writes;
+   setVolCatInfo(false);
+   Unlock_VolCatInfo();
+}
+
+void DEVICE::updateVolCatReads(uint32_t reads)
+{
+   DEVICE *dev;
+   Lock_VolCatInfo();
+   dev = this;
+   dev->VolCatInfo.VolCatAmetaReads += reads;
+   dev->VolCatInfo.VolCatReads += reads;
+   setVolCatInfo(false);
+   Unlock_VolCatInfo();
+}
+
+void DEVICE::updateVolCatReadBytes(uint64_t bytes)
+{
+   DEVICE *dev;
+   Lock_VolCatInfo();
+   dev = this;
+   dev->VolCatInfo.VolCatAmetaRBytes += bytes;
+   dev->VolCatInfo.VolCatRBytes += bytes;
+   setVolCatInfo(false);
+   Unlock_VolCatInfo();
+}
+
+void DEVICE::set_nospace()
+{
+   state |= ST_NOSPACE;
+}
+
+void DEVICE::clear_nospace()
+{
+   state &= ~ST_NOSPACE;
+}
+
+/* Put device in append mode */
+void DEVICE::set_append()
+{
+   state &= ~(ST_NOSPACE|ST_READ|ST_EOT|ST_EOF|ST_WEOT);  /* remove EOF/EOT flags */
+   state |= ST_APPEND;
+}
+
+/* Clear append mode */
+void DEVICE::clear_append()
+{
+   state &= ~ST_APPEND;
+}
+
+/* Put device in read mode */
+void DEVICE::set_read()
+{
+   state &= ~(ST_APPEND|ST_EOT|ST_EOF|ST_WEOT);  /* remove EOF/EOT flags */
+   state |= ST_READ;
+}
+
+/* Clear read mode */
+void DEVICE::clear_read()
+{
+   state &= ~ST_READ;
+}
diff --git a/src/stored/dircmd.c b/src/stored/dircmd.c
index a463802..0043a61 100644
--- a/src/stored/dircmd.c
+++ b/src/stored/dircmd.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  This file handles accepting Director Commands
@@ -34,14 +22,14 @@
  *    in job.c.
  *
  *    N.B. in this file, in general we must use P(dev->mutex) rather
- *      than dev->r_lock() so that we can examine the blocked
+ *      than dev->rLock() so that we can examine the blocked
  *      state rather than blocking ourselves because a Job
  *      thread has the device blocked. In some "safe" cases,
  *      we can do things to a blocked device. CAREFUL!!!!
  *
  *    File daemon commands are handled in fdcmd.c
  *
- *     Kern Sibbald, May MMI
+ *     Written by Kern Sibbald, May MMI
  *
  */
 
@@ -57,10 +45,11 @@ extern bool init_done;
 
 /* Static variables */
 static char derrmsg[]     = "3900 Invalid command:";
-static char OKsetdebug[]  = "3000 OK setdebug=%d\n";
+static char OKsetdebug[]  = "3000 OK setdebug=%ld trace=%ld options=%s tags=%s\n";
 static char invalid_cmd[] = "3997 Invalid command for a Director with Monitor directive enabled.\n";
 static char OK_bootstrap[]    = "3000 OK bootstrap\n";
 static char ERROR_bootstrap[] = "3904 Error bootstrap\n";
+static char OKclient[] = "3000 OK client command\n";
 
 /* Imported functions */
 extern void terminate_child();
@@ -72,6 +61,8 @@ extern bool qstatus_cmd(JCR *jcr);
 //extern bool query_cmd(JCR *jcr);
 
 /* Forward referenced functions */
+static bool client_cmd(JCR *jcr);
+static bool storage_cmd(JCR *jcr);
 static bool label_cmd(JCR *jcr);
 static bool die_cmd(JCR *jcr);
 static bool relabel_cmd(JCR *jcr);
@@ -85,7 +76,8 @@ static bool unmount_cmd(JCR *jcr);
 static bool bootstrap_cmd(JCR *jcr);
 static bool changer_cmd(JCR *sjcr);
 static bool do_label(JCR *jcr, int relabel);
-static DCR *find_device(JCR *jcr, POOL_MEM &dev_name, int drive);
+static DCR *find_device(JCR *jcr, POOL_MEM &dev_name,
+                        POOLMEM *media_type, int drive);
 static void read_volume_label(JCR *jcr, DCR *dcr, DEVICE *dev, int Slot);
 static void label_volume_if_ok(DCR *dcr, char *oldname,
                                char *newname, char *poolname,
@@ -93,6 +85,13 @@ static void label_volume_if_ok(DCR *dcr, char *oldname,
 static bool try_autoload_device(JCR *jcr, DCR *dcr, int slot, const char *VolName);
 static void send_dir_busy_message(BSOCK *dir, DEVICE *dev);
 
+/* Responses send to Director for storage command */
+static char BADcmd[]  = "2902 Bad %s\n";
+static char OKstore[] = "2000 OK storage\n";
+
+/* Commands received from director that need scanning */
+static char storaddr[] = "storage address=%s port=%d ssl=%d Job=%127s Authentication=%127s";
+
 struct s_cmds {
    const char *cmd;
    bool (*func)(JCR *jcr);
@@ -107,6 +106,7 @@ static struct s_cmds cmds[] = {
    {"autochanger", changer_cmd,     0},
    {"bootstrap",   bootstrap_cmd,   0},
    {"cancel",      cancel_cmd,      0},
+   {"client",      client_cmd,      0},     /* client address */
    {".die",        die_cmd,         0},
    {"label",       label_cmd,       0},     /* label a tape */
    {"mount",       mount_cmd,       0},
@@ -116,8 +116,9 @@ static struct s_cmds cmds[] = {
    {"setdebug=",   setdebug_cmd,    0},     /* set debug level */
    {"status",      status_cmd,      1},
    {".status",     qstatus_cmd,     1},
+   {"stop",        cancel_cmd,      0},
+   {"storage",     storage_cmd,     0},     /* get SD addr from Dir */
    {"unmount",     unmount_cmd,     0},
-//   {"action_on_purge",  action_on_purge_cmd,    0},
    {"use storage=", use_cmd,        0},
    {"run",         run_cmd,         0},
 // {"query",       query_cmd,       0},
@@ -146,15 +147,16 @@ void *handle_connection_request(void *arg)
    BSOCK *bs = (BSOCK *)arg;
    JCR *jcr;
    int i;
+   int fd_version, sd_version;
    bool found, quit;
    int bnet_stat = 0;
    char name[500];
    char tbuf[100];
 
    if (bs->recv() <= 0) {
-      Emsg1(M_ERROR, 0, _("Connection request from %s failed.\n"), bs->who());
+      Jmsg1(NULL, M_ERROR, 0, _("Connection request from %s failed.\n"), bs->who());
       bmicrosleep(5, 0);   /* make user wait 5 seconds */
-      bs->close();
+      bs->destroy();
       return NULL;
    }
 
@@ -162,32 +164,34 @@ void *handle_connection_request(void *arg)
     * Do a sanity check on the message received
     */
    if (bs->msglen < 25 || bs->msglen > (int)sizeof(name)) {
-      Dmsg1(000, "<filed: %s", bs->msg);
-      Emsg2(M_ERROR, 0, _("Invalid connection from %s. Len=%d\n"), bs->who(), bs->msglen);
+      Pmsg1(000, "<filed: %s", bs->msg);
+      Jmsg2(NULL, M_ERROR, 0, _("Invalid connection from %s. Len=%d\n"), bs->who(), bs->msglen);
       bmicrosleep(5, 0);   /* make user wait 5 seconds */
-      bs->close();
+      bs->destroy();
       return NULL;
    }
+
+   Dmsg1(100, "Conn: %s", bs->msg);
+   fd_version = 0;
+   sd_version = 0;
    /*
     * See if this is a File daemon connection. If so
     *   call FD handler.
     */
-   Dmsg1(110, "Conn: %s", bs->msg);
-   if (debug_level == 3) {
-      Dmsg1(000, "<filed: %s", bs->msg);
-   }
-   if (sscanf(bs->msg, "Hello Start Job %127s", name) == 1) {
-      Dmsg1(110, "Got a FD connection at %s\n", bstrftimes(tbuf, sizeof(tbuf), 
+   if (sscanf(bs->msg, "Hello Bacula SD: Start Job %127s %d %d", name, &fd_version, &sd_version) == 3 ||
+       sscanf(bs->msg, "Hello FD: Bacula Storage calling Start Job %127s %d", name, &sd_version) == 2 ||
+       sscanf(bs->msg, "Hello Start Job %127s", name) == 1) {
+      Dmsg1(050, "Got a FD connection at %s\n", bstrftimes(tbuf, sizeof(tbuf),
             (utime_t)time(NULL)));
       Dmsg1(50, "%s", bs->msg);
-      handle_filed_connection(bs, name);
+      handle_filed_connection(bs, name, fd_version, sd_version);
       return NULL;
    }
 
-   /* 
-    * This is a connection from the Director, so setup a JCR 
+   /*
+    * This is a connection from the Director, so setup a JCR
     */
-   Dmsg1(110, "Got a DIR connection at %s\n", bstrftimes(tbuf, sizeof(tbuf), 
+   Dmsg1(050, "Got a DIR connection at %s\n", bstrftimes(tbuf, sizeof(tbuf),
          (utime_t)time(NULL)));
    jcr = new_jcr(sizeof(JCR), stored_free_jcr); /* create Job Control Record */
    jcr->dir_bsock = bs;               /* save Director bsock */
@@ -206,6 +210,7 @@ void *handle_connection_request(void *arg)
    /*
     * Authenticate the Director
     */
+   /* We should have: Hello SD: Bacula Director <dirname> calling */
    if (!authenticate_director(jcr)) {
       Jmsg(jcr, M_FATAL, 0, _("Unable to authenticate Director\n"));
       goto bail_out;
@@ -275,7 +280,7 @@ static bool die_cmd(JCR *jcr)
       P(m);
       P(m);
    }
-   
+
    Pmsg1(000, "I have been requested to die ... (%s)\n", dir->msg);
    a = djcr->JobId;   /* ref NULL pointer */
    djcr->JobId = a;
@@ -283,7 +288,140 @@ static bool die_cmd(JCR *jcr)
    return 0;
 }
 
-     
+/*
+ * Get address of client from Director
+ *   We attempt to connect to the client (an FD or SD) and
+ *   authenticate it.
+ */
+static bool client_cmd(JCR *jcr)
+{
+   int client_port;                 /* client port */
+   int enable_ssl;                 /* enable ssl */
+   BSOCK *dir = jcr->dir_bsock;
+   BSOCK *cl = new_bsock();        /* client bsock */
+
+   Dmsg1(100, "ClientCmd: %s", dir->msg);
+   jcr->sd_calls_client = true;
+   if (sscanf(dir->msg, "client address=%s port=%d ssl=%d", &jcr->client_addr, &client_port,
+              &enable_ssl) != 3) {
+      pm_strcpy(jcr->errmsg, dir->msg);
+      Jmsg(jcr, M_FATAL, 0, _("Bad client command: %s"), jcr->errmsg);
+      Dmsg1(050, "Bad client command: %s", jcr->errmsg);
+      goto bail_out;
+   }
+
+   Dmsg3(110, "Connect to client: %s:%d ssl=%d\n", jcr->client_addr, client_port,
+         enable_ssl);
+   /* Open command communications with Client */
+   /* Try to connect for 1 hour at 10 second intervals */
+   if (!cl->connect(jcr, 10, (int)me->ClientConnectTimeout, me->heartbeat_interval,
+                _("Client daemon"), jcr->client_addr, NULL, client_port, 1)) {
+      /* destroy() OK because cl is local */
+      cl->destroy();
+      Jmsg(jcr, M_FATAL, 0, _("Failed to connect to Client daemon: %s:%d\n"),
+          jcr->client_addr, client_port);
+      Dmsg2(100, "Failed to connect to Client daemon: %s:%d\n",
+          jcr->client_addr, client_port);
+      goto bail_out;
+   }
+   Dmsg0(110, "SD connection OK to Client.\n");
+
+   /* Send Hello */
+   cl->fsend("Hello FD: Bacula Storage calling Start Job %s 1\n", jcr->Job);
+   jcr->file_bsock = cl;
+   jcr->file_bsock->set_jcr(jcr);
+   /* Send OK to Director */
+   return dir->fsend(OKclient);
+
+bail_out:
+   jcr->setJobStatus(JS_ErrorTerminated);
+   dir->fsend("3902 Bad %s cmd\n", "client");
+   return 0;
+}
+
+/*
+ * Get address of storage daemon from Director
+ */
+static bool storage_cmd(JCR *jcr)
+{
+   int stored_port;                /* storage daemon port */
+   int enable_ssl;                 /* enable ssl to sd */
+   char sd_auth_key[200];
+   BSOCK *dir = jcr->dir_bsock;
+   BSOCK *sd = new_bsock();        /* storage daemon bsock */
+   char Job[MAX_NAME_LENGTH];
+
+   Dmsg1(050, "StorageCmd: %s", dir->msg);
+   if (sscanf(dir->msg, storaddr, &jcr->stored_addr, &stored_port,
+              &enable_ssl, Job, sd_auth_key) != 5) {
+      pm_strcpy(jcr->errmsg, dir->msg);
+      Jmsg(jcr, M_FATAL, 0, _("Bad storage command: %s"), jcr->errmsg);
+      Pmsg1(010, "Bad storage command: %s", jcr->errmsg);
+      goto bail_out;
+   }
+
+   unbash_spaces(Job);
+   if (jcr->sd_auth_key) {
+      bfree_and_null(jcr->sd_auth_key);
+      jcr->sd_auth_key = bstrdup(sd_auth_key);
+   }
+   if (stored_port != 0) {
+      Dmsg2(050, "sd_calls=%d sd_client=%d\n", jcr->sd_calls_client,
+         jcr->sd_client);
+      jcr->sd_calls_client = false;   /* We are doing the connecting */
+      Dmsg3(050, "Connect to storage and wait: %s:%d ssl=%d\n", jcr->stored_addr, stored_port,
+            enable_ssl);
+      /* Open command communications with Storage daemon */
+      /* Try to connect for 1 hour at 10 second intervals */
+      if (!sd->connect(jcr, 10, (int)me->ClientConnectTimeout, me->heartbeat_interval,
+                _("Storage daemon"), jcr->stored_addr, NULL, stored_port, 1)) {
+         /* destroy() OK because sd is local */
+         sd->destroy();
+         Jmsg(jcr, M_FATAL, 0, _("Failed to connect to Storage daemon: %s:%d\n"),
+             jcr->stored_addr, stored_port);
+         Dmsg2(010, "Failed to connect to Storage daemon: %s:%d\n",
+             jcr->stored_addr, stored_port);
+         goto bail_out;
+      }
+
+      Dmsg0(050, "Connection OK to SD.\n");
+
+      jcr->store_bsock = sd;
+   } else {                      /* The storage daemon called us */
+      jcr->sd_calls_client = true;
+      /* We should already have a storage connection! */
+      if (jcr->file_bsock && jcr->store_bsock == NULL) {
+         jcr->store_bsock = jcr->file_bsock;
+      }
+      if (jcr->store_bsock == NULL) {
+         Jmsg0(jcr, M_FATAL, 0, _("In storage_cmd port==0, no prior Storage connection.\n"));
+         Pmsg0(010, "In storage_cmd port==0, no prior Storage connection.\n");
+         goto bail_out;
+      }
+   }
+
+   if (!authenticate_storagedaemon(jcr, Job)) {
+      goto bail_out;
+   }
+   /*
+    * We are a client so we read from the socket we just
+    *   opened as if we were a FD, so set file_bsock and
+    *   clear the store_bsock.
+    */
+   jcr->file_bsock = jcr->store_bsock;
+   jcr->store_bsock = NULL;
+   jcr->authenticated = true;    /* Dir authentication is sufficient */
+   Dmsg1(050, "=== Storage_cmd authenticated Job=%s with SD.\n", Job);
+
+   /* Send OK to Director */
+   return dir->fsend(OKstore);
+
+bail_out:
+   Dmsg0(100, "Send storage command failed.\n");
+   dir->fsend(BADcmd, "storage");
+   return false;
+}
+
 
 /*
  * Set debug level as requested by the Director
@@ -292,16 +430,31 @@ static bool die_cmd(JCR *jcr)
 static bool setdebug_cmd(JCR *jcr)
 {
    BSOCK *dir = jcr->dir_bsock;
-   int32_t level, trace_flag;
+   int32_t trace_flag, lvl, hangup; /* hangup is ignored right now */
+   int64_t level;
+   char options[60];
+   char tags[512];
+   *tags = *options = 0;
 
    Dmsg1(10, "setdebug_cmd: %s", dir->msg);
-   if (sscanf(dir->msg, "setdebug=%d trace=%d", &level, &trace_flag) != 2 || level < 0) {
-      dir->fsend(_("3991 Bad setdebug command: %s\n"), dir->msg);
-      return 0;
+
+   if (sscanf(dir->msg, "setdebug=%ld trace=%ld hangup=%ld options=%55s tags=%511s",
+              &lvl, &trace_flag, &hangup, options, tags) != 5)
+   {
+      if (sscanf(dir->msg, "setdebug=%ld trace=%ld", &lvl, &trace_flag) != 2 || lvl < 0) {
+         dir->fsend(_("3991 Bad setdebug command: %s\n"), dir->msg);
+         return 0;
+      }
    }
-   debug_level = level;
+   level = lvl;
    set_trace(trace_flag);
-   return dir->fsend(OKsetdebug, level);
+   set_debug_flags(options);
+   if (!debug_parse_tags(tags, &level)) {
+      *tags = 0;
+   }
+   debug_level = level;
+
+   return dir->fsend(OKsetdebug, lvl, trace_flag, options, tags);
 }
 
 
@@ -355,7 +508,8 @@ static bool cancel_cmd(JCR *cjcr)
          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->my_thread_send_signal(TIMEOUT_SIGNAL);
+      dir->fsend(_("3000 JobId=%ld Job=\"%s\" marked to be %s.\n"),
          jcr->JobId, jcr->Job, reason);
       free_jcr(jcr);
    }
@@ -396,14 +550,14 @@ static bool do_label(JCR *jcr, int relabel)
    if (relabel) {
       if (sscanf(dir->msg, "relabel %127s OldName=%127s NewName=%127s PoolName=%127s "
                  "MediaType=%127s Slot=%d drive=%d",
-                  dev_name.c_str(), oldname, newname, poolname, mtype, 
+                  dev_name.c_str(), oldname, newname, poolname, mtype,
                   &slot, &drive) == 7) {
          ok = true;
       }
    } else {
       *oldname = 0;
       if (sscanf(dir->msg, "label %127s VolumeName=%127s PoolName=%127s "
-                 "MediaType=%127s Slot=%d drive=%d", 
+                 "MediaType=%127s Slot=%d drive=%d",
           dev_name.c_str(), newname, poolname, mtype, &slot, &drive) == 6) {
          ok = true;
       }
@@ -413,7 +567,7 @@ static bool do_label(JCR *jcr, int relabel)
       unbash_spaces(oldname);
       unbash_spaces(poolname);
       unbash_spaces(mtype);
-      dcr = find_device(jcr, dev_name, drive);
+      dcr = find_device(jcr, dev_name, mtype, drive);
       if (dcr) {
          dev = dcr->dev;
          dev->Lock();                 /* Use P to avoid indefinite block */
@@ -470,7 +624,6 @@ static void label_volume_if_ok(DCR *dcr, char *oldname,
    steal_device_lock(dev, &hold, BST_WRITING_LABEL);
    Dmsg1(100, "Stole device %s lock, writing label.\n", dev->print_name());
 
-
    Dmsg0(90, "try_autoload_device - looking for volume_info\n");
    if (!try_autoload_device(dcr->jcr, dcr, slot, volname)) {
       goto bail_out;                  /* error */
@@ -491,12 +644,12 @@ static void label_volume_if_ok(DCR *dcr, char *oldname,
    if (!dev->open(dcr, mode)) {
       dir->fsend(_("3910 Unable to open device \"%s\": ERR=%s\n"),
          dev->print_name(), dev->bstrerror());
-      goto bail_out;      
+      goto bail_out;
    }
 
    /* See what we have for a Volume */
    label_status = read_dev_volume_label(dcr);
-   
+
    /* Set new volume name */
    dcr->setVolCatName(newname);
    switch(label_status) {
@@ -523,7 +676,7 @@ static void label_volume_if_ok(DCR *dcr, char *oldname,
       /* Fall through wanted! */
    case VOL_IO_ERROR:
    case VOL_NO_LABEL:
-      if (!write_new_volume_label_to_dev(dcr, newname, poolname, 
+      if (!write_new_volume_label_to_dev(dcr, newname, poolname,
               relabel, true /* write dvd now */)) {
          dir->fsend(_("3912 Failed to label Volume: ERR=%s\n"), dev->bstrerror());
          break;
@@ -534,6 +687,9 @@ static void label_volume_if_ok(DCR *dcr, char *oldname,
                  edit_uint64(dev->VolCatInfo.VolCatBytes, ed1),
                  dev->is_dvd()?1:0, newname, dev->print_name());
       break;
+   case VOL_TYPE_ERROR:
+      dir->fsend(_("3915 Failed to label Volume: ERR=%s\n"), dev->errmsg);
+      break;
    case VOL_NO_MEDIA:
       dir->fsend(_("3914 Failed to label Volume (no media): ERR=%s\n"), dev->bstrerror());
       break;
@@ -589,11 +745,12 @@ static bool read_label(DCR *dcr)
    return ok;
 }
 
-/* 
+/*
  * Searches for device by name, and if found, creates a dcr and
  *  returns it.
  */
-static DCR *find_device(JCR *jcr, POOL_MEM &devname, int drive)
+static DCR *find_device(JCR *jcr, POOL_MEM &devname,
+                        POOLMEM *media_type, int drive)
 {
    DEVRES *device;
    AUTOCHANGER *changer;
@@ -603,7 +760,8 @@ static DCR *find_device(JCR *jcr, POOL_MEM &devname, int drive)
    unbash_spaces(devname);
    foreach_res(device, R_DEVICE) {
       /* Find resource, and make sure we were able to open it */
-      if (strcmp(device->hdr.name, devname.c_str()) == 0) {
+      if (strcmp(device->hdr.name, devname.c_str()) == 0 &&
+          (!media_type || strcmp(device->media_type, media_type) ==0)) {
          if (!device->dev) {
             device->dev = init_dev(jcr, device);
          }
@@ -639,7 +797,8 @@ static DCR *find_device(JCR *jcr, POOL_MEM &devname, int drive)
                   Dmsg1(100, "Device %s not autoselect skipped.\n", devname.c_str());
                   continue;              /* device is not available */
                }
-               if (drive < 0 || drive == (int)device->dev->drive_index) {
+               if ((drive < 0 || drive == (int)device->dev->drive_index) &&
+                   (!media_type || strcmp(device->media_type, media_type) ==0)) {
                   Dmsg1(20, "Found changer device %s\n", device->hdr.name);
                   found = true;
                   break;
@@ -674,27 +833,28 @@ static bool mount_cmd(JCR *jcr)
    int32_t slot = 0;
    bool ok;
 
-   ok = sscanf(dir->msg, "mount %127s drive=%d slot=%d", devname.c_str(), 
+   ok = sscanf(dir->msg, "mount %127s drive=%d slot=%d", devname.c_str(),
                &drive, &slot) == 3;
    if (!ok) {
       ok = sscanf(dir->msg, "mount %127s drive=%d", devname.c_str(), &drive) == 2;
    }
    Dmsg3(100, "ok=%d drive=%d slot=%d\n", ok, drive, slot);
    if (ok) {
-      dcr = find_device(jcr, devname, drive);
+      dcr = find_device(jcr, devname, NULL, drive);
       if (dcr) {
          dev = dcr->dev;
          dev->Lock();                 /* Use P to avoid indefinite block */
-         Dmsg2(100, "mount cmd blocked=%d must_unload=%d\n", dev->blocked(), 
+         Dmsg2(100, "mount cmd blocked=%d must_unload=%d\n", dev->blocked(),
             dev->must_unload());
          switch (dev->blocked()) {         /* device blocked? */
          case BST_WAITING_FOR_SYSOP:
             /* Someone is waiting, wake him */
             Dmsg0(100, "Waiting for mount. Attempting to wake thread\n");
             dev->set_blocked(BST_MOUNT);
-            dir->fsend("3001 OK mount requested. %sDevice=%s\n", 
+            dir->fsend("3001 OK mount requested. %sDevice=%s\n",
                        slot>0?_("Specified slot ignored. "):"",
                        dev->print_name());
+            Dmsg1(100, "JobId=%u broadcast wait_next_vol\n", (uint32_t)dcr->jcr->JobId);
             pthread_cond_broadcast(&dev->wait_next_vol);
             Dmsg1(100, "JobId=%u broadcast wait_device_release\n", (uint32_t)dcr->jcr->JobId);
             pthread_cond_broadcast(&wait_device_release);
@@ -747,7 +907,7 @@ static bool mount_cmd(JCR *jcr)
             break;
 
          case BST_WRITING_LABEL:
-            dir->fsend(_("3903 Device \"%s\" is being labeled.\n"), 
+            dir->fsend(_("3903 Device \"%s\" is being labeled.\n"),
                dev->print_name());
             break;
 
@@ -788,7 +948,7 @@ static bool mount_cmd(JCR *jcr)
                   dir->fsend(_("3002 Device \"%s\" is mounted.\n"), dev->print_name());
                } else {
                   dir->fsend(_("3907 %s"), dev->bstrerror());
-               } 
+               }
             } else { /* must be file */
                dir->fsend(_("3906 File device \"%s\" is always mounted.\n"),
                   dev->print_name());
@@ -831,31 +991,34 @@ static bool unmount_cmd(JCR *jcr)
    int32_t drive;
 
    if (sscanf(dir->msg, "unmount %127s drive=%d", devname.c_str(), &drive) == 2) {
-      dcr = find_device(jcr, devname, drive);
+      dcr = find_device(jcr, devname, NULL, drive);
       if (dcr) {
          dev = dcr->dev;
          dev->Lock();                 /* Use P to avoid indefinite block */
          if (!dev->is_open()) {
             if (!dev->is_busy()) {
-               unload_autochanger(dcr, -1);          
+               unload_autochanger(dcr, -1);
             }
             if (dev->is_unmountable()) {
                if (dev->unmount(0)) {
-                  dir->fsend(_("3002 Device \"%s\" unmounted.\n"), 
+                  dir->fsend(_("3002 Device \"%s\" unmounted.\n"),
                      dev->print_name());
                } else {
                   dir->fsend(_("3907 %s"), dev->bstrerror());
-               } 
+               }
             } else {
                Dmsg0(90, "Device already unmounted\n");
-               dir->fsend(_("3901 Device \"%s\" is already unmounted.\n"), 
+               dir->fsend(_("3901 Device \"%s\" is already unmounted.\n"),
                   dev->print_name());
             }
          } else if (dev->blocked() == BST_WAITING_FOR_SYSOP) {
             Dmsg2(90, "%d waiter dev_block=%d. doing unmount\n", dev->num_waiting,
                dev->blocked());
             if (!unload_autochanger(dcr, -1)) {
-               /* ***FIXME**** what is this ????  */
+               /*
+                * ***FIXME**** what is this ???? -- probably we had
+                *   the wrong volume so we must free it and try again. KES
+                */
                dev->close();
                free_volume(dev);
             }
@@ -863,16 +1026,16 @@ static bool unmount_cmd(JCR *jcr)
                dir->fsend(_("3907 %s"), dev->bstrerror());
             } else {
                dev->set_blocked(BST_UNMOUNTED_WAITING_FOR_SYSOP);
-               dir->fsend(_("3001 Device \"%s\" unmounted.\n"), 
+               dir->fsend(_("3001 Device \"%s\" unmounted.\n"),
                   dev->print_name());
             }
 
          } else if (dev->blocked() == BST_DOING_ACQUIRE) {
-            dir->fsend(_("3902 Device \"%s\" is busy in acquire.\n"), 
+            dir->fsend(_("3902 Device \"%s\" is busy in acquire.\n"),
                dev->print_name());
 
          } else if (dev->blocked() == BST_WRITING_LABEL) {
-            dir->fsend(_("3903 Device \"%s\" is being labeled.\n"), 
+            dir->fsend(_("3903 Device \"%s\" is being labeled.\n"),
                dev->print_name());
 
          } else if (dev->is_busy()) {
@@ -894,7 +1057,7 @@ static bool unmount_cmd(JCR *jcr)
             if (dev->is_unmountable() && !dev->unmount(0)) {
                dir->fsend(_("3907 %s"), dev->bstrerror());
             } else {
-               dir->fsend(_("3002 Device \"%s\" unmounted.\n"), 
+               dir->fsend(_("3002 Device \"%s\" unmounted.\n"),
                   dev->print_name());
             }
          }
@@ -930,9 +1093,9 @@ static bool action_on_purge_cmd(JCR *jcr)
    int32_t action;
 
    /* TODO: Need to find a free device and ask for slot to the director */
-   if (sscanf(dir->msg, 
+   if (sscanf(dir->msg,
               "action_on_purge %127s vol=%127s action=%d",
-              devname, volumename, &action)!= 5) 
+              devname, volumename, &action)!= 5)
    {
       dir->fsend(_("3916 Error scanning action_on_purge command\n"));
       goto done;
@@ -943,7 +1106,7 @@ static bool action_on_purge_cmd(JCR *jcr)
    /* Check if action is correct */
    if (action & AOP_TRUNCTATE) {
 
-   } 
+   }
    /* ... */
 
 done:
@@ -968,7 +1131,7 @@ static bool release_cmd(JCR *jcr)
    int32_t drive;
 
    if (sscanf(dir->msg, "release %127s drive=%d", devname.c_str(), &drive) == 2) {
-      dcr = find_device(jcr, devname, drive);
+      dcr = find_device(jcr, devname, NULL, drive);
       if (dcr) {
          dev = dcr->dev;
          dev->Lock();                 /* Use P to avoid indefinite block */
@@ -977,28 +1140,28 @@ static bool release_cmd(JCR *jcr)
                unload_autochanger(dcr, -1);
             }
             Dmsg0(90, "Device already released\n");
-            dir->fsend(_("3921 Device \"%s\" already released.\n"), 
+            dir->fsend(_("3921 Device \"%s\" already released.\n"),
                dev->print_name());
 
          } else if (dev->blocked() == BST_WAITING_FOR_SYSOP) {
             Dmsg2(90, "%d waiter dev_block=%d.\n", dev->num_waiting,
                dev->blocked());
             unload_autochanger(dcr, -1);
-            dir->fsend(_("3922 Device \"%s\" waiting for sysop.\n"), 
+            dir->fsend(_("3922 Device \"%s\" waiting for sysop.\n"),
                dev->print_name());
 
          } else if (dev->blocked() == BST_UNMOUNTED_WAITING_FOR_SYSOP) {
             Dmsg2(90, "%d waiter dev_block=%d. doing unmount\n", dev->num_waiting,
                dev->blocked());
-            dir->fsend(_("3922 Device \"%s\" waiting for mount.\n"), 
+            dir->fsend(_("3922 Device \"%s\" waiting for mount.\n"),
                dev->print_name());
 
          } else if (dev->blocked() == BST_DOING_ACQUIRE) {
-            dir->fsend(_("3923 Device \"%s\" is busy in acquire.\n"), 
+            dir->fsend(_("3923 Device \"%s\" is busy in acquire.\n"),
                dev->print_name());
 
          } else if (dev->blocked() == BST_WRITING_LABEL) {
-            dir->fsend(_("3914 Device \"%s\" is being labeled.\n"), 
+            dir->fsend(_("3914 Device \"%s\" is being labeled.\n"),
                dev->print_name());
 
          } else if (dev->is_busy()) {
@@ -1006,7 +1169,7 @@ static bool release_cmd(JCR *jcr)
          } else {                     /* device not being used */
             Dmsg0(90, "Device not in use, releasing\n");
             dcr->release_volume();
-            dir->fsend(_("3022 Device \"%s\" released.\n"), 
+            dir->fsend(_("3022 Device \"%s\" released.\n"),
                dev->print_name());
          }
          dev->Unlock();
@@ -1050,19 +1213,19 @@ static bool get_bootstrap_file(JCR *jcr, BSOCK *sock)
          jcr->RestoreBootstrap, be.bstrerror());
       goto bail_out;
    }
-   Dmsg0(10, "=== Bootstrap file ===\n");
+   Dmsg0(150, "=== Bootstrap file ===\n");
    while (sock->recv() >= 0) {
-       Dmsg1(10, "%s", sock->msg);
+       Dmsg1(150, "%s", sock->msg);
        fputs(sock->msg, bs);
    }
    fclose(bs);
-   Dmsg0(10, "=== end bootstrap file ===\n");
+   Dmsg0(150, "=== end bootstrap file ===\n");
    jcr->bsr = parse_bsr(jcr, jcr->RestoreBootstrap);
    if (!jcr->bsr) {
       Jmsg(jcr, M_FATAL, 0, _("Error parsing bootstrap file.\n"));
       goto bail_out;
    }
-   if (debug_level >= 10) {
+   if (chk_dbglvl(150)) {
       dump_bsr(jcr->bsr, true);
    }
    /* If we got a bootstrap, we are reading, so create read volume list */
@@ -1116,12 +1279,12 @@ static bool changer_cmd(JCR *jcr)
       safe_cmd = ok = true;
    }
    if (ok) {
-      dcr = find_device(jcr, devname, -1);
+      dcr = find_device(jcr, devname, NULL, -1);
       if (dcr) {
          dev = dcr->dev;
          dev->Lock();                 /* Use P to avoid indefinite block */
          if (!dev->device->changer_res) {
-            dir->fsend(_("3998 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()) {
@@ -1156,9 +1319,9 @@ static bool readlabel_cmd(JCR *jcr)
    DCR *dcr;
    int32_t Slot, drive;
 
-   if (sscanf(dir->msg, "readlabel %127s Slot=%d drive=%d", devname.c_str(), 
+   if (sscanf(dir->msg, "readlabel %127s Slot=%d drive=%d", devname.c_str(),
        &Slot, &drive) == 3) {
-      dcr = find_device(jcr, devname, drive);
+      dcr = find_device(jcr, devname, NULL, drive);
       if (dcr) {
          dev = dcr->dev;
          dev->Lock();                 /* Use P to avoid indefinite block */
diff --git a/src/stored/dvd.c b/src/stored/dvd.c
deleted file mode 100644
index 5b8ea26..0000000
--- a/src/stored/dvd.c
+++ /dev/null
@@ -1,825 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   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.
-   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.
-*/
-/*
- *
- *   dvd.c  -- Routines specific to DVD devices (and
- *             possibly other removable hard media). 
- *
- *    Nicolas Boichat, MMV
- *
- */
-
-#include "bacula.h"
-#include "stored.h"
-
-/* Forward referenced functions */
-static void add_file_and_part_name(DEVICE *dev, POOL_MEM &archive_name);
-
-/* 
- * Write the current volume/part filename to archive_name.
- */
-void make_mounted_dvd_filename(DEVICE *dev, POOL_MEM &archive_name) 
-{
-   pm_strcpy(archive_name, dev->device->mount_point);
-   add_file_and_part_name(dev, archive_name);
-}
-
-void make_spooled_dvd_filename(DEVICE *dev, POOL_MEM &archive_name)
-{
-   /* Use the working directory if spool directory is not defined */
-   if (dev->device->spool_directory) {
-      pm_strcpy(archive_name, dev->device->spool_directory);
-   } else {
-      pm_strcpy(archive_name, working_directory);
-   }
-   add_file_and_part_name(dev, archive_name);
-}      
-
-static void add_file_and_part_name(DEVICE *dev, POOL_MEM &archive_name)
-{
-   char partnumber[20];
-
-   if (!IsPathSeparator(archive_name.c_str()[strlen(archive_name.c_str())-1])) {
-      pm_strcat(archive_name, "/");
-   }
-
-   pm_strcat(archive_name, dev->getVolCatName());
-   /* if part > 1, append .# to the filename (where # is the part number) */
-   if (dev->part > 1) {
-      pm_strcat(archive_name, ".");
-      bsnprintf(partnumber, sizeof(partnumber), "%d", dev->part);
-      pm_strcat(archive_name, partnumber);
-   }
-   Dmsg2(400, "Exit add_file_part_name: arch=%s, part=%d\n",
-                  archive_name.c_str(), dev->part);
-}  
-
-/* Update the free space on the device */
-bool DEVICE::update_freespace() 
-{
-   POOL_MEM ocmd(PM_FNAME);
-   POOLMEM* results;
-   char* icmd;
-   int timeout;
-   uint64_t free;
-   char ed1[50];
-   bool ok = false;
-   int status;
-
-   if (!is_dvd() || is_freespace_ok()) {
-      return true;
-   }
-   
-   /* The device must be mounted in order to dvd-freespace to work */
-   mount(1);
-   
-   Dsm_check(400);
-   icmd = device->free_space_command;
-   
-   if (!icmd) {
-      free_space = 0;
-      free_space_errno = 0;
-      clear_freespace_ok();              /* No valid freespace */
-      clear_media();
-      Dmsg2(29, "ERROR: update_free_space_dev: free_space=%s, free_space_errno=%d (!icmd)\n", 
-            edit_uint64(free_space, ed1), free_space_errno);
-      Mmsg(errmsg, _("No FreeSpace command defined.\n"));
-      return false;
-   }
-   
-   edit_mount_codes(ocmd, icmd);
-   
-   Dmsg1(29, "update_freespace: cmd=%s\n", ocmd.c_str());
-
-   results = get_pool_memory(PM_MESSAGE);
-   
-   /* Try at most 3 times to get the free space on the device. This should perhaps be configurable. */
-   timeout = 3;
-   
-   while (1) {
-      berrno be;
-      Dmsg1(20, "Run freespace prog=%s\n", ocmd.c_str());
-      status = run_program_full_output(ocmd.c_str(), max_open_wait/2, results);
-      Dmsg2(500, "Freespace status=%d result=%s\n", status, results);
-      if (status == 0) {
-         free = str_to_int64(results);
-         Dmsg1(400, "Free space program run: Freespace=%s\n", results);
-         if (free >= 0) {
-            free_space = free;
-            free_space_errno = 0;
-            set_freespace_ok();     /* have valid freespace */
-            set_media();
-            Mmsg(errmsg, "");
-            ok = true;
-            break;
-         }
-      }
-      free_space = 0;
-      free_space_errno = EPIPE;
-      clear_freespace_ok();         /* no valid freespace */
-      Mmsg2(errmsg, _("Cannot run free space command. Results=%s ERR=%s\n"), 
-            results, be.bstrerror(status));
-      
-      if (--timeout > 0) {
-         Dmsg4(40, "Cannot get free space on device %s. free_space=%s, "
-            "free_space_errno=%d ERR=%s\n", print_name(), 
-               edit_uint64(free_space, ed1), free_space_errno, 
-               errmsg);
-         bmicrosleep(1, 0);
-         continue;
-      }
-
-      dev_errno = free_space_errno;
-      Dmsg4(40, "Cannot get free space on device %s. free_space=%s, "
-         "free_space_errno=%d ERR=%s\n",
-            print_name(), edit_uint64(free_space, ed1),
-            free_space_errno, errmsg);
-      break;
-   }
-   
-   free_pool_memory(results);
-   Dmsg4(29, "leave update_freespace: free_space=%s freespace_ok=%d free_space_errno=%d have_media=%d\n", 
-      edit_uint64(free_space, ed1), !!is_freespace_ok(), free_space_errno, !!have_media());
-   Dsm_check(400);
-   return ok;
-}
-
-/*
- * Note!!!! Part numbers now begin at 1. The part number is
- *  suppressed from the first part, which is just the Volume
- *  name. Each subsequent part is the Volumename.partnumber.
- *
- * Write a part (Vol, Vol.2, ...) from the spool to the DVD   
- * This routine does not update the part number, so normally, you
- *  should call open_next_part()
- *
- * It is also called from truncate_dvd to "blank" the medium, as
- *  well as from block.c when the DVD is full to write the last part.
- */
-bool dvd_write_part(DCR *dcr)
-{
-   DEVICE *dev = dcr->dev;
-   POOL_MEM archive_name(PM_FNAME);
-   
-   /*
-    * Don't write empty part files.
-    * This is only useful when growisofs does not support write beyond
-    * the 4GB boundary.
-    * Example :
-    *   - 3.9 GB on the volume, dvd-freespace reports 0.4 GB free
-    *   - Write 0.2 GB on the volume, Bacula thinks it could still
-    *     append data, it creates a new empty part.
-    *   - dvd-freespace reports 0 GB free, as the 4GB boundary has
-    *     been crossed
-    *   - Bacula thinks he must finish to write to the device, so it
-    *     tries to write the last part (0-byte), but dvd-writepart fails...
-    *
-    * There is one exception: when recycling a volume, we write a blank part
-    * file, so, then, we need to accept to write it.
-    */
-   if (dev->part_size == 0 && !dev->truncating) {
-      Dmsg2(29, "dvd_write_part: device is %s, won't write blank part %d\n", dev->print_name(), dev->part);
-      /* Delete spool file */
-      make_spooled_dvd_filename(dev, archive_name);
-      unlink(archive_name.c_str());
-      dev->set_part_spooled(false);
-      Dmsg1(29, "========= unlink(%s)\n", archive_name.c_str());
-      Dsm_check(400);
-      return true;
-   }
-   
-   POOL_MEM ocmd(PM_FNAME);
-   POOL_MEM results(PM_MESSAGE);
-   char* icmd;
-   int status;
-   int timeout;
-   char ed1[50];
-   
-   dev->clear_freespace_ok();             /* need to update freespace */
-
-   Dsm_check(400);
-   Dmsg3(29, "dvd_write_part: device is %s, part is %d, is_mounted=%d\n", dev->print_name(), dev->part, dev->is_mounted());
-   icmd = dev->device->write_part_command;
-   
-   dev->edit_mount_codes(ocmd, icmd);
-      
-   /*
-    * original line follows
-    * timeout = dev->max_open_wait + (dev->max_part_size/(1350*1024/2));
-    * I modified this for a longer timeout; pre-formatting, blanking and
-    * writing can take quite a while
-    */
-
-   /* Explanation of the timeout value, when writing the first part,
-    *  by Arno Lehmann :
-    * 9 GB, write speed 1x: 6990 seconds (almost 2 hours...)
-    * Overhead: 900 seconds (starting, initializing, finalizing,probably 
-    *   reloading 15 minutes)
-    * Sum: 15780.
-    * A reasonable last-exit timeout would be 16000 seconds. Quite long - 
-    * almost 4.5 hours, but hopefully, that timeout will only ever be needed 
-    * in case of a serious emergency.
-    */
-
-   if (dev->part == 1) {
-      timeout = 16000;
-   } else {
-      timeout = dev->max_open_wait + (dev->part_size/(1350*1024/4));
-   }
-
-   Dmsg2(20, "Write part: cmd=%s timeout=%d\n", ocmd.c_str(), timeout);
-   status = run_program_full_output(ocmd.c_str(), timeout, results.addr());
-   Dmsg2(20, "Write part status=%d result=%s\n", status, results.c_str());
-
-   dev->blank_dvd = false;
-   if (status != 0) {
-      Jmsg2(dcr->jcr, M_FATAL, 0, _("Error writing part %d to the DVD: ERR=%s\n"),
-         dev->part, results.c_str());
-      Mmsg1(dev->errmsg, _("Error while writing current part to the DVD: %s"), 
-            results.c_str());
-      Dmsg1(100, "%s\n", dev->errmsg);
-      dev->dev_errno = EIO;
-      if (!dev->truncating) {
-         dcr->mark_volume_in_error();
-      }
-      Dsm_check(400);
-      return false;
-   }
-   Jmsg(dcr->jcr, M_INFO, 0, _("Part %d (%lld bytes) written to DVD.\n"), dev->part, dev->part_size);
-   Dmsg3(400, "dvd_write_part: Part %d (%lld bytes) written to DVD\nResults: %s\n",
-            dev->part, dev->part_size, results.c_str());
-    
-   dev->num_dvd_parts++;            /* there is now one more part on DVD */
-   dev->VolCatInfo.VolCatParts = dev->num_dvd_parts;
-   dcr->VolCatInfo.VolCatParts = dev->num_dvd_parts;
-   Dmsg1(100, "Update num_parts=%d\n", dev->num_dvd_parts);
-
-   /* Delete spool file */
-   make_spooled_dvd_filename(dev, archive_name);
-   unlink(archive_name.c_str());
-   dev->set_part_spooled(false);
-   Dmsg1(29, "========= unlink(%s)\n", archive_name.c_str());
-   Dsm_check(400);
-   
-   /* growisofs umounted the device, so remount it (it will update the free space) */
-   dev->clear_mounted();
-   dev->mount(1);
-   Jmsg(dcr->jcr, M_INFO, 0, _("Remaining free space %s on %s\n"), 
-      edit_uint64_with_commas(dev->free_space, ed1), dev->print_name());
-   Dsm_check(400);
-   return true;
-}
-
-/*
- * Open the next part file.
- *  - Close the fd
- *  - Increment part number 
- *  - Reopen the device
- */
-int dvd_open_next_part(DCR *dcr)
-{
-   DEVICE *dev = dcr->dev;
-
-   Dmsg6(29, "Enter: == open_next_part part=%d npart=%d dev=%s vol=%s mode=%d file_addr=%d\n", 
-      dev->part, dev->num_dvd_parts, dev->print_name(),
-         dev->getVolCatName(), dev->openmode, dev->file_addr);
-   if (!dev->is_dvd()) {
-      Dmsg1(100, "Device %s is not dvd!!!!\n", dev->print_name()); 
-      return -1;
-   }
-   
-   /* When appending, do not open a new part if the current is empty */
-   if (dev->can_append() && (dev->part > dev->num_dvd_parts) && 
-       (dev->part_size == 0)) {
-      Dmsg0(29, "open_next_part exited immediately (dev->part_size == 0).\n");
-      return dev->fd();
-   }
-
-   dev->close_part(dcr);               /* close current part */
-   
-   /*
-    * If we have a spooled part open, write it to the
-    *  DVD before opening the next part.
-    */
-   if (dev->is_part_spooled()) {
-      Dmsg2(100, "Before open next write previous. part=%d num_parts=%d\n",
-         dev->part, dev->num_dvd_parts);
-      if (!dvd_write_part(dcr)) {
-         Dmsg0(29, "Error in dvd_write part.\n");
-         return -1;
-      }
-   }
-     
-   dev->part_start += dev->part_size;
-   dev->part++;
-   Dmsg2(29, "Inc part=%d num_dvd_parts=%d\n", dev->part, dev->num_dvd_parts);
-
-   /* Are we working on a part past what is written in the DVD? */
-   if (dev->num_dvd_parts < dev->part) {
-      POOL_MEM archive_name(PM_FNAME);
-      struct stat buf;
-      /* 
-       * First check what is on DVD.  If our part is there, we
-       *   are in trouble, so bail out.
-       * NB: This is however not a problem if we are writing the first part.
-       * It simply means that we are over writing an existing volume...
-       */
-      if (dev->num_dvd_parts > 0) {
-         make_mounted_dvd_filename(dev, archive_name);   /* makes dvd name */
-         Dmsg1(100, "Check if part on DVD: %s\n", archive_name.c_str());
-         if (stat(archive_name.c_str(), &buf) == 0) {
-            /* bad news bail out */
-            dev->set_part_spooled(false);
-            Mmsg1(&dev->errmsg, _("Next Volume part already exists on DVD. Cannot continue: %s\n"),
-               archive_name.c_str());
-            return -1;
-         }
-      }
-   }
-
-   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)) {
-      return -1;
-   } 
-   dev->set_labeled();                   /* all next parts are "labeled" */
-   
-   return dev->fd();
-}
-
-/*
- * Open the first part file.
- *  - Close the fd
- *  - Reopen the device
- */
-static bool dvd_open_first_part(DCR *dcr, int mode)
-{
-   DEVICE *dev = dcr->dev;
-
-   Dmsg5(29, "Enter: ==== open_first_part dev=%s Vol=%s mode=%d num_dvd_parts=%d append=%d\n", dev->print_name(), 
-         dev->getVolCatName(), dev->openmode, dev->num_dvd_parts, dev->can_append());
-
-
-   dev->close_part(dcr);
-
-   Dmsg2(400, "Call dev->open(vol=%s, mode=%d)\n", dcr->getVolCatName(), 
-         mode);
-   Dmsg0(100, "Set part=1\n");
-   dev->part = 1;
-   dev->part_start = 0;
-
-   if (!dev->open(dcr, mode)) {
-      Dmsg0(400, "open dev() failed\n");
-      return false;
-   }
-   Dmsg2(400, "Leave open_first_part state=%s append=%d\n", dev->is_open()?"open":"not open", dev->can_append());
-   
-   return true;
-}
-
-
-/* 
- * Do an lseek on a DVD handling all the different parts
- */
-boffset_t lseek_dvd(DCR *dcr, boffset_t offset, int whence)
-{
-   DEVICE *dev;
-   boffset_t pos;
-   char ed1[50], ed2[50];
-
-   if (!dcr) {                  /* can be NULL when called from rewind(NULL) */
-      return -1;
-   }
-   dev = dcr->dev;
-   
-   Dmsg5(400, "Enter lseek_dvd fd=%d off=%s w=%d part=%d nparts=%d\n", dev->fd(),
-      edit_int64(offset, ed1), whence, dev->part, dev->num_dvd_parts);
-
-   switch(whence) {
-   case SEEK_SET:
-      Dmsg2(400, "lseek_dvd SEEK_SET to %s (part_start=%s)\n",
-         edit_int64(offset, ed1), edit_uint64(dev->part_start, ed2));
-      if ((uint64_t)offset >= dev->part_start) {
-         if ((uint64_t)offset == dev->part_start || 
-             (uint64_t)offset < dev->part_start+dev->part_size) {
-            /* We are staying in the current part, just seek */
-#if defined(HAVE_WIN32)
-            pos = _lseeki64(dev->fd(), offset-dev->part_start, SEEK_SET);
-#else
-            pos = lseek(dev->fd(), offset-dev->part_start, SEEK_SET);
-#endif
-            if (pos < 0) {
-               return pos;
-            } else {
-               return pos + dev->part_start;
-            }
-         } else {
-            /* Load next part, and start again */
-            Dmsg0(100, "lseek open next part\n");
-            if (dvd_open_next_part(dcr) < 0) {
-               Dmsg0(400, "lseek_dvd failed while trying to open the next part\n");
-               return -1;
-            }
-            Dmsg2(100, "Recurse lseek after open next part=%d num_part=%d\n",
-               dev->part, dev->num_dvd_parts);
-            return lseek_dvd(dcr, offset, SEEK_SET);
-         }
-      } else {
-         /*
-          * pos < dev->part_start :
-          * We need to access a previous part, 
-          * so just load the first one, and seek again
-          * until the right one is loaded
-          */
-         Dmsg0(100, "lseek open first part\n");
-         if (!dvd_open_first_part(dcr, dev->openmode)) {
-            Dmsg0(400, "lseek_dvd failed while trying to open the first part\n");
-            return -1;
-         }
-         Dmsg2(100, "Recurse lseek after open first part=%d num_part=%d\n",
-               dev->part, dev->num_dvd_parts);
-         return lseek_dvd(dcr, offset, SEEK_SET); /* system lseek */
-      }
-      break;
-   case SEEK_CUR:
-      Dmsg1(400, "lseek_dvd SEEK_CUR to %s\n", edit_int64(offset, ed1));
-      if ((pos = lseek(dev->fd(), 0, SEEK_CUR)) < 0) {
-         Dmsg0(400, "Seek error.\n");
-         return pos;                  
-      }
-      pos += dev->part_start;
-      if (offset == 0) {
-         Dmsg1(400, "lseek_dvd SEEK_CUR returns %s\n", edit_uint64(pos, ed1));
-         return pos;
-      } else { 
-         Dmsg1(400, "do lseek_dvd SEEK_SET %s\n", edit_uint64(pos, ed1));
-         return lseek_dvd(dcr, pos, SEEK_SET);
-      }
-      break;
-   case SEEK_END:
-      Dmsg1(400, "lseek_dvd SEEK_END to %s\n", edit_int64(offset, ed1));
-      /*
-       * Bacula does not use offsets for SEEK_END
-       *  Also, Bacula uses seek_end only when it wants to
-       *  append to the volume, so for a dvd that means
-       *  that the volume must be spooled since the DVD
-       *  itself is read-only (as currently implemented).
-       */
-      if (offset > 0) { /* Not used by bacula */
-         Dmsg1(400, "lseek_dvd SEEK_END called with an invalid offset %s\n", 
-            edit_uint64(offset, ed1));
-         errno = EINVAL;
-         return -1;
-      }
-      /* If we are already on a spooled part and have the
-       *  right part number, simply seek
-       */
-      if (dev->is_part_spooled() && dev->part > dev->num_dvd_parts) {
-         if ((pos = lseek(dev->fd(), 0, SEEK_END)) < 0) {
-            return pos;   
-         } else {
-            Dmsg1(400, "lseek_dvd SEEK_END returns %s\n", 
-                  edit_uint64(pos + dev->part_start, ed1));
-            return pos + dev->part_start;
-         }
-      } else {
-         /*
-          * Load the first part, then load the next until we reach the last one.
-          * This is the only way to be sure we compute the right file address.
-          *
-          * Save previous openmode, and open all but last part read-only 
-          * (useful for DVDs) 
-          */
-         int modesave = dev->openmode;
-         if (!dvd_open_first_part(dcr, OPEN_READ_ONLY)) {
-            Dmsg0(400, "lseek_dvd failed while trying to open the first part\n");
-            return -1;
-         }
-         if (dev->num_dvd_parts > 0) {
-            while (dev->part < dev->num_dvd_parts) {
-               if (dvd_open_next_part(dcr) < 0) {
-                  Dmsg0(400, "lseek_dvd failed while trying to open the next part\n");
-                  return -1;
-               }
-            }
-            dev->openmode = modesave;
-            if (dvd_open_next_part(dcr) < 0) {
-               Dmsg0(400, "lseek_dvd failed while trying to open the next part\n");
-               return -1;
-            }
-         }
-         return lseek_dvd(dcr, 0, SEEK_END);
-      }
-      break;
-   default:
-      Dmsg0(400, "Seek call error.\n");
-      errno = EINVAL;
-      return -1;
-   }
-}
-
-bool dvd_close_job(DCR *dcr)
-{
-   DEVICE *dev = dcr->dev;
-   JCR *jcr = dcr->jcr;
-   bool ok = true;
-
-   /*
-    * If the device is a dvd and WritePartAfterJob
-    * is set to yes, open the next part, so, in case of a device
-    * that requires mount, it will be written to the device.
-    */
-   if (dev->is_dvd() && jcr->write_part_after_job && (dev->part_size > 0)) {
-      Dmsg1(400, "Writing last part=%d write_partafter_job is set.\n",
-         dev->part);
-      if (dev->part < dev->num_dvd_parts+1) {
-         Jmsg3(jcr, M_FATAL, 0, _("Error writing. Current part less than total number of parts (%d/%d, device=%s)\n"),
-               dev->part, dev->num_dvd_parts, dev->print_name());
-         dev->dev_errno = EIO;
-         ok = false;
-      }
-      
-      if (ok && !dvd_write_part(dcr)) {
-         Jmsg2(jcr, M_FATAL, 0, _("Unable to write last on %s: ERR=%s\n"),
-               dev->print_name(), dev->bstrerror());
-         dev->dev_errno = EIO;
-         ok = false;
-      }
-   }
-   return ok;
-}
-
-void dvd_remove_empty_part(DCR *dcr) 
-{
-   DEVICE *dev = dcr->dev;
-
-   /* Remove the last part file if it is empty */
-   if (dev->is_dvd() && dev->num_dvd_parts > 0) {
-      struct stat statp;
-      uint32_t part_save = dev->part;
-      POOL_MEM archive_name(PM_FNAME);
-      int status;
-
-      dev->part = dev->num_dvd_parts;
-      make_spooled_dvd_filename(dev, archive_name);
-      /* Check that the part file is empty */
-      status = stat(archive_name.c_str(), &statp);
-      if (status == 0 && statp.st_size == 0) {
-         Dmsg3(100, "Unlink empty part in close call make_dvd_filename. part=%d num=%d vol=%s\n", 
-                part_save, dev->num_dvd_parts, dev->getVolCatName());
-         Dmsg1(100, "unlink(%s)\n", archive_name.c_str());
-         unlink(archive_name.c_str());
-         if (part_save == dev->part) {
-            dev->set_part_spooled(false);  /* no spooled part left */
-         }
-      } else if (status < 0) {                         
-         if (part_save == dev->part) {
-            dev->set_part_spooled(false);  /* spool doesn't exit */
-         }
-      }       
-      dev->part = part_save;               /* restore part number */
-   }
-}
-
-bool truncate_dvd(DCR *dcr) 
-{
-   DEVICE* dev = dcr->dev;
-
-   dev->clear_freespace_ok();             /* need to update freespace */
-   dev->close_part(dcr);
-
-   if (!dev->unmount(1)) {
-      Dmsg0(400, "truncate_dvd: Failed to unmount DVD\n");
-      return false;
-   }
-
-   /* If necessary, delete its spool file. */
-   if (dev->is_part_spooled()) {
-      POOL_MEM archive_name(PM_FNAME);
-      /* Delete spool file */
-      make_spooled_dvd_filename(dev, archive_name);
-      unlink(archive_name.c_str());
-      dev->set_part_spooled(false);
-   }
-
-   /* Set num_dvd_parts to zero (on disk) */
-   dev->part = 0;
-   dev->num_dvd_parts = 0;
-   dcr->VolCatInfo.VolCatParts = 0;
-   dev->VolCatInfo.VolCatParts = 0;
-   
-   Dmsg0(400, "truncate_dvd: Opening first part (1)...\n");
-   
-   dev->truncating = true;
-   /* This creates a zero length spool file and sets part=1 */
-   if (!dvd_open_first_part(dcr, CREATE_READ_WRITE)) {
-      Dmsg0(400, "truncate_dvd: Error while opening first part (1).\n");
-      dev->truncating = false;
-      return false;
-   }
-
-   dev->close_part(dcr);
-   
-   Dmsg0(400, "truncate_dvd: Opening first part (2)...\n");
-   
-   /* 
-    * Now actually truncate the DVD which is done by writing
-    *  a zero length part to the DVD/
-    */
-   if (!dvd_write_part(dcr)) {
-      Dmsg0(400, "truncate_dvd: Error while writing to DVD.\n");
-      dev->truncating = false;
-      return false;
-   }
-   dev->truncating = false;
-   
-   /* Set num_dvd_parts to zero (on disk) */
-   dev->part = 0;
-   dev->num_dvd_parts = 0;
-   dcr->VolCatInfo.VolCatParts = 0;
-   dev->VolCatInfo.VolCatParts = 0;
-   /* Clear the size of the volume */
-   dev->VolCatInfo.VolCatBytes = 0;
-   dcr->VolCatInfo.VolCatBytes = 0;
-
-   /* Update catalog */
-   if (!dir_update_volume_info(dcr, false, true)) {
-      return false;
-   }
-   
-   return true;
-}
-
-/*
- * Checks if we can write on a non-blank DVD: meaning that it just have been
- * truncated (there is only one zero-sized file on the DVD).
- *  
- * Note!  Normally if we can mount the device, which should be the case
- *   when we get here, it is not a blank DVD.  Hence we check if
- *   if all files are of zero length (i.e. no data), in which case we allow it.
- *
- */
-bool check_can_write_on_non_blank_dvd(DCR *dcr) 
-{
-   DEVICE* dev = dcr->dev;
-   DIR* dp;
-   struct dirent *entry, *result;
-   int name_max;
-   struct stat filestat;
-   bool ok = true;
-      
-   name_max = pathconf(".", _PC_NAME_MAX);
-   if (name_max < 1024) {
-      name_max = 1024;
-   }
-   
-   if (!(dp = opendir(dev->device->mount_point))) {
-      berrno be;
-      dev->dev_errno = errno;
-      Dmsg3(29, "check_can_write_on_non_blank_dvd: failed to open dir %s (dev=%s), ERR=%s\n", 
-            dev->device->mount_point, dev->print_name(), be.bstrerror());
-      return false;
-   }
-   
-   entry = (struct dirent *)malloc(sizeof(struct dirent) + name_max + 1000);
-   for ( ;; ) {
-      if ((readdir_r(dp, entry, &result) != 0) || (result == NULL)) {
-         dev->dev_errno = EIO;
-         Dmsg2(129, "check_can_write_on_non_blank_dvd: no more files in dir %s (dev=%s)\n", 
-               dev->device->mount_point, dev->print_name());
-         break;
-      } else {
-         Dmsg2(99, "check_can_write_on_non_blank_dvd: found %s (versus %s)\n", 
-               result->d_name, dev->getVolCatName());
-         if (strcmp(result->d_name, ".") && strcmp(result->d_name, "..") &&
-             strcmp(result->d_name, ".keep")) {
-            /* Found a file, checking it is empty */
-            POOL_MEM filename(PM_FNAME);
-            pm_strcpy(filename, dev->device->mount_point);
-            if (!IsPathSeparator(filename.c_str()[strlen(filename.c_str())-1])) {
-               pm_strcat(filename, "/");
-            }
-            pm_strcat(filename, result->d_name);
-            if (stat(filename.c_str(), &filestat) < 0) {
-               berrno be;
-               dev->dev_errno = errno;
-               Dmsg2(29, "check_can_write_on_non_blank_dvd: cannot stat file (file=%s), ERR=%s\n", 
-                  filename.c_str(), be.bstrerror());
-               ok = false;
-               break;
-            }
-            Dmsg2(99, "check_can_write_on_non_blank_dvd: size of %s is %lld\n", 
-               filename.c_str(), filestat.st_size);
-            if (filestat.st_size != 0) {
-               ok = false;
-               break;
-            }
-         }
-      }
-   }
-   free(entry);
-   closedir(dp);
-   
-   Dmsg1(29, "OK  can_write_on_non_blank_dvd: OK=%d\n", ok);
-   return ok;
-}
-
-/* 
- * Mount a DVD device, then scan to find out how many parts
- *  there are.
- */
-int find_num_dvd_parts(DCR *dcr)
-{
-   DEVICE *dev = dcr->dev;
-   int num_parts = 0;
-
-   if (!dev->is_dvd()) {
-      return 0;
-   }
-   
-   if (dev->mount(1)) {
-      DIR* dp;
-      struct dirent *entry, *result;
-      int name_max;
-      int len = strlen(dcr->getVolCatName());
-
-      /* Now count the number of parts */
-      name_max = pathconf(".", _PC_NAME_MAX);
-      if (name_max < 1024) {
-         name_max = 1024;
-      }
-         
-      if (!(dp = opendir(dev->device->mount_point))) {
-         berrno be;
-         dev->dev_errno = errno;
-         Dmsg3(29, "find_num_dvd_parts: failed to open dir %s (dev=%s), ERR=%s\n", 
-               dev->device->mount_point, dev->print_name(), be.bstrerror());
-         goto get_out;
-      }
-      
-      entry = (struct dirent *)malloc(sizeof(struct dirent) + name_max + 1000);
-
-      Dmsg1(100, "Looking for Vol=%s\n", dcr->getVolCatName());
-      for ( ;; ) {
-         int flen;
-         bool ignore;
-         if ((readdir_r(dp, entry, &result) != 0) || (result == NULL)) {
-            dev->dev_errno = EIO;
-            Dmsg2(129, "find_num_dvd_parts: failed to find suitable file in dir %s (dev=%s)\n", 
-                  dev->device->mount_point, dev->print_name());
-            break;
-         }
-         flen = strlen(result->d_name);
-         ignore = true;
-         if (flen >= len) {
-            result->d_name[len] = 0;
-            if (strcmp(dcr->getVolCatName(), result->d_name) == 0) {
-               num_parts++;
-               Dmsg1(100, "find_num_dvd_parts: found part: %s\n", result->d_name);
-               ignore = false;
-            }
-         }
-         if (ignore) {
-            Dmsg2(129, "find_num_dvd_parts: ignoring %s in %s\n", 
-                  result->d_name, dev->device->mount_point);
-         }
-      }
-      free(entry);
-      closedir(dp);
-      Dmsg1(29, "find_num_dvd_parts = %d\n", num_parts);
-   }
-   
-get_out:
-   dev->set_freespace_ok();
-   if (dev->is_mounted()) {
-      dev->unmount(0);
-   }
-   return num_parts;
-}
diff --git a/src/stored/ebcdic.c b/src/stored/ebcdic.c
index 15f59a4..2e7d4bd 100644
--- a/src/stored/ebcdic.c
+++ b/src/stored/ebcdic.c
@@ -1,33 +1,21 @@
 /*
- * Taken from the public domain ansitape program for 
+ * Taken from the public domain ansitape program for
  *   integration into Bacula. KES - Mar 2005
  */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 
@@ -170,7 +158,7 @@ static char to_ebcdic_table[256] = {
 
 
 /*
- * Convert from ASCII to EBCDIC 
+ * Convert from ASCII to EBCDIC
  */
 void ascii_to_ebcdic(char *dst, char *src, int count)
 {
diff --git a/src/stored/fd_cmds.c b/src/stored/fd_cmds.c
index a97f832..e8fcc20 100644
--- a/src/stored/fd_cmds.c
+++ b/src/stored/fd_cmds.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * This file handles commands from the File daemon.
  *
- *  Kern Sibbald, MM
+ *   Written by Kern Sibbald, MM
  *
  * We get here because the Director has initiated a Job with
  *  the Storage daemon, then done the same with the File daemon,
@@ -42,6 +30,9 @@
 #include "bacula.h"
 #include "stored.h"
 
+/* Forward referenced functions */
+static bool response(JCR *jcr, BSOCK *bs, const char *resp, const char *cmd);
+
 /* Imported variables */
 extern STORES *me;
 
@@ -51,6 +42,7 @@ static char ferrmsg[]      = "3900 Invalid command\n";
 /* Imported functions */
 extern bool do_append_data(JCR *jcr);
 extern bool do_read_data(JCR *jcr);
+extern bool do_backup_job(JCR *jcr);
 
 /* Forward referenced FD commands */
 static bool append_open_session(JCR *jcr);
@@ -92,19 +84,20 @@ static char NOT_opened[]      = "3902 Error session not opened\n";
 static char OK_end[]          = "3000 OK end\n";
 static char OK_close[]        = "3000 OK close Status = %d\n";
 static char OK_open[]         = "3000 OK open ticket = %d\n";
-static char ERROR_append[]    = "3903 Error append data\n";
+static char ERROR_append[]    = "3903 Error append data: %s\n";
 
 /* Information sent to the Director */
 static char Job_start[] = "3010 Job %s start\n";
-char Job_end[]   =
+char Job_end[] =
    "3099 Job %s end JobStatus=%d JobFiles=%d JobBytes=%s JobErrors=%u\n";
 
 /*
- * Run a File daemon Job -- File daemon already authorized
- *  Director sends us this command.
+ * Run a Client Job -- Client already authorized
+ *  Note: this can be either a backup or restore or
+ *    migrate/copy job.
  *
  * Basic task here is:
- * - Read a command from the File daemon
+ * - Read a command from the Client -- FD or SD
  * - Execute it
  *
  */
@@ -119,7 +112,40 @@ void run_job(JCR *jcr)
    jcr->start_time = time(NULL);
    jcr->run_time = jcr->start_time;
    jcr->sendJobStatus(JS_Running);
-   do_fd_commands(jcr);
+   /*
+    * A migrate or copy job does both a restore (read_data) and
+    *   a backup (append_data).
+    * Otherwise we do the commands that the client sends
+    *   which are for normal backup or restore jobs.
+    */
+   Dmsg3(050, "==== JobType=%c run_job=%d sd_client=%d\n", jcr->getJobType(), jcr->JobId, jcr->sd_client);
+   if (jcr->is_JobType(JT_BACKUP) && jcr->sd_client) {
+      jcr->session_opened = true;
+      Dmsg0(050, "Do: receive for 3000 OK data then append");
+      if (!response(jcr, jcr->file_bsock, "3000 OK data\n", "Append data")) {
+         Dmsg1(050, "Expect: 3000 OK data, got: %s", jcr->file_bsock->msg);
+         Jmsg0(jcr, M_FATAL, 0, "Append data not accepted\n");
+         goto bail_out;
+      }
+      append_data_cmd(jcr);
+      append_end_session(jcr);
+   } else if (jcr->is_JobType(JT_MIGRATE) || jcr->is_JobType(JT_COPY)) {
+      jcr->session_opened = true;
+      Dmsg1(050, "Do: read_data_cmd file_bsock=%p\n", jcr->file_bsock);
+      read_data_cmd(jcr);
+      if (!response(jcr, jcr->file_bsock, "3000 OK data\n", "Data received")) {
+         Dmsg1(050, "Expect 3000 OK data, got: %s", jcr->file_bsock->msg);
+         Jmsg0(jcr, M_FATAL, 0, "Read data not accepted\n");
+         jcr->file_bsock->signal(BNET_EOD);
+         goto bail_out;
+      }
+      jcr->file_bsock->signal(BNET_EOD);
+   } else {
+      /* Either a Backup or Restore job */
+      Dmsg0(050, "Do: do_client_commands\n");
+      do_client_commands(jcr);
+   }
+bail_out:
    jcr->end_time = time(NULL);
    dequeue_messages(jcr);             /* send any queued messages */
    jcr->setJobStatus(JS_Terminated);
@@ -127,15 +153,16 @@ void run_job(JCR *jcr)
    generate_plugin_event(jcr, bsdEventJobEnd);
    dir->fsend(Job_end, jcr->Job, jcr->JobStatus, jcr->JobFiles,
       edit_uint64(jcr->JobBytes, ec1), jcr->JobErrors);
+   Dmsg1(100, "==== %s", dir->msg);
    dir->signal(BNET_EOD);             /* send EOD to Director daemon */
    free_plugins(jcr);                 /* release instantiated plugins */
    return;
 }
 
 /*
- * Now talk to the FD and do what he says
+ * Now talk to the Client (FD/SD) and do what he says
  */
-void do_fd_commands(JCR *jcr)
+void do_client_commands(JCR *jcr)
 {
    int i;
    bool found, quit;
@@ -147,7 +174,7 @@ void do_fd_commands(JCR *jcr)
 
       /* Read command coming from the File daemon */
       stat = fd->recv();
-      if (is_bnet_stop(fd)) {         /* hardeof or error */
+      if (fd->is_stop()) {            /* hard eof or error */
          break;                       /* connection terminated */
       }
       if (stat <= 0) {
@@ -163,7 +190,7 @@ void do_fd_commands(JCR *jcr)
                /* Note fd->msg command may be destroyed by comm activity */
                if (!job_canceled(jcr)) {
                   if (jcr->errmsg[0]) {
-                     Jmsg1(jcr, M_FATAL, 0, _("Command error with FD, hanging up. %s\n"),
+                     Jmsg1(jcr, M_FATAL, 0, _("Command error with FD, hanging up. ERR=%s\n"),
                            jcr->errmsg);
                   } else {
                      Jmsg0(jcr, M_FATAL, 0, _("Command error with FD, hanging up.\n"));
@@ -200,12 +227,12 @@ static bool append_data_cmd(JCR *jcr)
    if (jcr->session_opened) {
       Dmsg1(110, "<bfiled: %s", fd->msg);
       jcr->setJobType(JT_BACKUP);
+      jcr->errmsg[0] = 0;
       if (do_append_data(jcr)) {
          return true;
       } else {
-         pm_strcpy(jcr->errmsg, _("Append data error.\n"));
-         bnet_suppress_error_messages(fd, 1); /* ignore errors at this point */
-         fd->fsend(ERROR_append);
+         fd->suppress_error_messages(true); /* ignore errors at this point */
+         fd->fsend(ERROR_append, jcr->errmsg);
       }
    } else {
       pm_strcpy(jcr->errmsg, _("Attempt to append on non-open session.\n"));
@@ -308,7 +335,7 @@ static bool read_open_session(JCR *jcr)
 {
    BSOCK *fd = jcr->file_bsock;
 
-   Dmsg1(120, "%s\n", fd->msg);
+   Dmsg1(120, "%s", fd->msg);
    if (jcr->session_opened) {
       pm_strcpy(jcr->errmsg, _("Attempt to open read on non-open session.\n"));
       fd->fsend(NO_open);
@@ -363,3 +390,30 @@ static bool read_close_session(JCR *jcr)
    jcr->session_opened = false;
    return true;
 }
+
+/*
+ * Get response from FD or SD
+ * sent. Check that the response agrees with what we expect.
+ *
+ *  Returns: false on failure
+ *           true  on success
+ */
+static bool response(JCR *jcr, BSOCK *bs, const char *resp, const char *cmd)
+{
+   int n;
+
+   if (bs->is_error()) {
+      return false;
+   }
+   if ((n = bs->recv()) >= 0) {
+      if (strcmp(bs->msg, resp) == 0) {
+         return true;
+      }
+      Jmsg(jcr, M_FATAL, 0, _("Bad response to %s command: wanted %s, got %s\n"),
+            cmd, resp, bs->msg);
+      return false;
+   }
+   Jmsg(jcr, M_FATAL, 0, _("Socket error on %s command: ERR=%s\n"),
+         cmd, bs->bstrerror());
+   return false;
+}
diff --git a/src/stored/file_dev.c b/src/stored/file_dev.c
new file mode 100644
index 0000000..e5ad02f
--- /dev/null
+++ b/src/stored/file_dev.c
@@ -0,0 +1,384 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2000-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ *
+ *   file_dev.c  -- low level operations on file devices
+ *
+ *     written by, Kern Sibbald, MM
+ *     separated from dev.c February 2014
+ *
+ */
+
+#include "bacula.h"
+#include "stored.h"
+
+/* Imported functions */
+const char *mode_to_str(int mode);
+
+
+/* default primitives are designed for file */
+int DEVICE::d_open(const char *pathname, int flags)
+{
+   return ::open(pathname, flags);
+}
+
+int DEVICE::d_close(int fd)
+{
+   return ::close(fd);
+}
+
+int DEVICE::d_ioctl(int fd, ioctl_req_t request, char *mt_com)
+{
+   return ::ioctl(fd, request, mt_com);
+}
+
+ssize_t DEVICE::d_read(int fd, void *buffer, size_t count)
+{
+   return ::read(fd, buffer, count);
+}
+
+ssize_t DEVICE::d_write(int fd, const void *buffer, size_t count)
+{
+   return ::write(fd, buffer, count);
+}
+
+/* Rewind file device */
+bool DEVICE::rewind(DCR *dcr)
+{
+   Dmsg3(400, "rewind res=%d fd=%d %s\n", num_reserved(), m_fd, print_name());
+   state &= ~(ST_EOT|ST_EOF|ST_WEOT);  /* remove EOF/EOT flags */
+   block_num = file = 0;
+   file_size = 0;
+   file_addr = 0;
+   if (m_fd < 0) {
+      return false;
+   }
+   if (is_file()) {
+      if (lseek(dcr, (boffset_t)0, SEEK_SET) < 0) {
+         berrno be;
+         dev_errno = errno;
+         Mmsg2(errmsg, _("lseek error on %s. ERR=%s.\n"),
+            print_name(), be.bstrerror());
+         return false;
+      }
+   }
+   return true;
+}
+
+/*
+ * Reposition the device to file, block
+ * Returns: false on failure
+ *          true  on success
+ */
+bool DEVICE::reposition(DCR *dcr, uint32_t rfile, uint32_t rblock)
+{
+   if (!is_open()) {
+      dev_errno = EBADF;
+      Mmsg0(errmsg, _("Bad call to reposition. Device not open\n"));
+      Emsg0(M_FATAL, 0, errmsg);
+      return false;
+   }
+
+   boffset_t pos = (((boffset_t)rfile)<<32) | rblock;
+   Dmsg1(100, "===== lseek to %d\n", (int)pos);
+   if (lseek(dcr, pos, SEEK_SET) == (boffset_t)-1) {
+      berrno be;
+      dev_errno = errno;
+      Mmsg2(errmsg, _("lseek error on %s. ERR=%s.\n"),
+         print_name(), be.bstrerror());
+      return false;
+   }
+   file = rfile;
+   block_num = rblock;
+   file_addr = pos;
+   return true;
+}
+
+
+/* Seek to specified place */
+boffset_t DEVICE::lseek(DCR *dcr, boffset_t offset, int whence)
+{
+   switch (dev_type) {
+   case B_FILE_DEV:
+#if defined(HAVE_WIN32)
+      return ::_lseeki64(m_fd, (__int64)offset, whence);
+#else
+      return ::lseek(m_fd, offset, whence);
+#endif
+   }
+   return -1;
+}
+
+/*
+ * Open a file device. For Aligned type we open both Volumes
+ */
+void DEVICE::open_file_device(DCR *dcr, int omode)
+{
+   POOL_MEM archive_name(PM_FNAME);
+   POOL_MEM aligned_name(PM_FNAME);
+
+   get_autochanger_loaded_slot(dcr);
+
+   /*
+    * Handle opening of File Archive (not a tape)
+    */
+
+   pm_strcpy(archive_name, dev_name);
+   /*
+    * If this is a virtual autochanger (i.e. changer_res != NULL)
+    *  we simply use the device name, assuming it has been
+    *  appropriately setup by the "autochanger".
+    */
+   if (!device->changer_res || device->changer_command[0] == 0 ||
+        strcmp(device->changer_command, "/dev/null") == 0) {
+      if (VolCatInfo.VolCatName[0] == 0) {
+         Mmsg(errmsg, _("Could not open file device %s. No Volume name given.\n"),
+            print_name());
+         clear_opened();
+         return;
+      }
+
+      if (!IsPathSeparator(archive_name.c_str()[strlen(archive_name.c_str())-1])) {
+         pm_strcat(archive_name, "/");
+      }
+      pm_strcat(archive_name, getVolCatName());
+   }
+
+   mount(1);                          /* do mount if required */
+
+   openmode = omode;
+   set_mode(omode);
+   /* If creating file, give 0640 permissions */
+   Dmsg3(100, "open disk: mode=%s open(%s, 0x%x, 0640)\n", mode_to_str(omode),
+         archive_name.c_str(), mode);
+   /* Use system open() */
+   if ((m_fd = ::open(archive_name.c_str(), mode, 0640)) < 0) {
+      berrno be;
+      dev_errno = errno;
+      Mmsg3(errmsg, _("Could not open(%s,%s,0640): ERR=%s\n"),
+            archive_name.c_str(), mode_to_str(omode), be.bstrerror());
+      Dmsg1(40, "open failed: %s", errmsg);
+   }
+   if (m_fd >= 0) {
+      dev_errno = 0;
+      file = 0;
+      file_addr = 0;
+   }
+   Dmsg1(100, "open dev: disk fd=%d opened\n", m_fd);
+}
+
+
+/*
+ * Truncate a volume.  If this is aligned disk, we
+ *  truncate both volumes.
+ */
+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) {
+   case B_VTL_DEV:
+   case B_VTAPE_DEV:
+   case B_TAPE_DEV:
+      /* maybe we should rewind and write and eof ???? */
+      return true;                    /* we don't really truncate tapes */
+   case B_FILE_DEV:
+      Dmsg1(100, "Truncate fd=%d\n", dev->m_fd);
+      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;
+      }
+
+      /*
+       * 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;
+         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, "/");
+         }
+         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(40, "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);
+      }
+      return true;
+   }
+   return false;
+}
+
+
+/*
+ * (Un)mount the device (either a FILE or DVD device)
+ */
+bool DEVICE::do_file_mount(int mount, int dotimeout)
+{
+   POOL_MEM ocmd(PM_FNAME);
+   POOLMEM *results;
+   DIR* dp;
+   char *icmd;
+   struct dirent *entry, *result;
+   int status, tries, name_max, count;
+   berrno be;
+
+   Dsm_check(200);
+   if (mount) {
+      icmd = device->mount_command;
+   } else {
+      icmd = device->unmount_command;
+   }
+
+   clear_freespace_ok();
+   edit_mount_codes(ocmd, icmd);
+
+   Dmsg2(100, "do_file_mount: cmd=%s mounted=%d\n", ocmd.c_str(), !!is_mounted());
+
+   if (dotimeout) {
+      /* Try at most 10 times to (un)mount the device. This should perhaps be configurable. */
+      tries = 10;
+   } else {
+      tries = 1;
+   }
+   results = get_memory(4000);
+
+   /* If busy retry each second */
+   Dmsg1(100, "do_file_mount run_prog=%s\n", ocmd.c_str());
+   while ((status = run_program_full_output(ocmd.c_str(), max_open_wait/2, results)) != 0) {
+      /* Doesn't work with internationalization (This is not a problem) */
+      if (mount && fnmatch("*is already mounted on*", results, 0) == 0) {
+         break;
+      }
+      if (!mount && fnmatch("* not mounted*", results, 0) == 0) {
+         break;
+      }
+      if (tries-- > 0) {
+         /* Sometimes the device cannot be mounted because it is already mounted.
+          * Try to unmount it, then remount it */
+         if (mount) {
+            Dmsg1(400, "Trying to unmount the device %s...\n", print_name());
+            do_file_mount(0, 0);
+         }
+         bmicrosleep(1, 0);
+         continue;
+      }
+      Dmsg5(100, "Device %s cannot be %smounted. stat=%d result=%s ERR=%s\n", print_name(),
+           (mount ? "" : "un"), status, results, be.bstrerror(status));
+      Mmsg(errmsg, _("Device %s cannot be %smounted. ERR=%s\n"),
+           print_name(), (mount ? "" : "un"), be.bstrerror(status));
+
+      /*
+       * Now, just to be sure it is not mounted, try to read the filesystem.
+       */
+      name_max = pathconf(".", _PC_NAME_MAX);
+      if (name_max < 1024) {
+         name_max = 1024;
+      }
+
+      if (!(dp = opendir(device->mount_point))) {
+         berrno be;
+         dev_errno = errno;
+         Dmsg3(100, "do_file_mount: failed to open dir %s (dev=%s), ERR=%s\n",
+               device->mount_point, print_name(), be.bstrerror());
+         goto get_out;
+      }
+
+      entry = (struct dirent *)malloc(sizeof(struct dirent) + name_max + 1000);
+      count = 0;
+      while (1) {
+         if ((readdir_r(dp, entry, &result) != 0) || (result == NULL)) {
+            dev_errno = EIO;
+            Dmsg2(129, "do_file_mount: failed to find suitable file in dir %s (dev=%s)\n",
+                  device->mount_point, print_name());
+            break;
+         }
+         if ((strcmp(result->d_name, ".")) && (strcmp(result->d_name, "..")) && (strcmp(result->d_name, ".keep"))) {
+            count++; /* result->d_name != ., .. or .keep (Gentoo-specific) */
+            break;
+         } else {
+            Dmsg2(129, "do_file_mount: ignoring %s in %s\n", result->d_name, device->mount_point);
+         }
+      }
+      free(entry);
+      closedir(dp);
+
+      Dmsg1(100, "do_file_mount: got %d files in the mount point (not counting ., .. and .keep)\n", count);
+
+      if (count > 0) {
+         /* If we got more than ., .. and .keep */
+         /*   there must be something mounted */
+         if (mount) {
+            Dmsg1(100, "Did Mount by count=%d\n", count);
+            break;
+         } else {
+            /* An unmount request. We failed to unmount - report an error */
+            set_mounted(true);
+            free_pool_memory(results);
+            Dmsg0(200, "== error mount=1 wanted unmount\n");
+            return false;
+         }
+      }
+get_out:
+      set_mounted(false);
+      free_pool_memory(results);
+      Dmsg0(200, "============ mount=0\n");
+      Dsm_check(200);
+      return false;
+   }
+
+   set_mounted(mount);              /* set/clear mounted flag */
+   free_pool_memory(results);
+   Dmsg1(200, "============ mount=%d\n", mount);
+   return true;
+}
diff --git a/src/stored/file_dev.h b/src/stored/file_dev.h
new file mode 100644
index 0000000..eef61b2
--- /dev/null
+++ b/src/stored/file_dev.h
@@ -0,0 +1,30 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2014-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ * Inspired by vtape.h
+ */
+
+#ifndef __FILE_DEV_
+#define __FILE_DEV_
+
+class file_dev : public DEVICE {
+public:
+
+   file_dev() { };
+   ~file_dev() { m_fd = -1; };
+};
+
+#endif /* __FILE_DEV_ */
diff --git a/src/stored/job.c b/src/stored/job.c
index 9d8cd7c..82546db 100644
--- a/src/stored/job.c
+++ b/src/stored/job.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Job control and execution for Storage Daemon
  *
- *   Kern Sibbald, MM
+ *   Written by Kern Sibbald, MM
  *
  */
 
@@ -38,18 +26,19 @@
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
 /* Imported variables */
+extern STORES *me;                    /* our Global resource */
 extern uint32_t VolSessionTime;
 
 /* Imported functions */
 extern uint32_t newVolSessionId();
-extern bool do_mac(JCR *jcr);
+extern bool do_vbackup(JCR *jcr);
 
 /* Requests from the Director daemon */
-/* Added in 3.1.4 14Sep09 KES */
 static char jobcmd[] = "JobId=%d job=%127s job_name=%127s client_name=%127s "
       "type=%d level=%d FileSet=%127s NoAttr=%d SpoolAttr=%d FileSetMD5=%127s "
       "SpoolData=%d WritePartAfterJob=%d PreferMountedVols=%d SpoolSize=%s "
-      "rerunning=%d VolSessionId=%d VolSessionTime=%d\n";
+      "rerunning=%d VolSessionId=%d VolSessionTime=%d sd_client=%d "
+      "Authorization=%s\n";
 
 /* Responses sent to Director daemon */
 static char OKjob[]     = "3000 OK Job SDid=%u SDtime=%u Authorization=%s\n";
@@ -68,13 +57,14 @@ static char BAD_job[]   = "3915 Bad Job command. stat=%d CMD: %s\n";
 bool job_cmd(JCR *jcr)
 {
    int32_t JobId;
-   char auth_key[100];
+   char sd_auth_key[200];
    char spool_size[30];
    char seed[100];
    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, rerunning;
+   int32_t is_client;
    int stat;
    JCR *ojcr;
 
@@ -88,8 +78,9 @@ 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,
-              &rerunning, &jcr->VolSessionId, &jcr->VolSessionTime);
-   if (stat != 17) {
+              &rerunning, &jcr->VolSessionId, &jcr->VolSessionTime,
+              &is_client, &sd_auth_key);
+   if (stat != 19) {
       pm_strcpy(jcr->errmsg, dir->msg);
       dir->fsend(BAD_job, stat, jcr->errmsg);
       Dmsg1(100, ">dird: %s", dir->msg);
@@ -97,6 +88,10 @@ bool job_cmd(JCR *jcr)
       return false;
    }
    jcr->rerunning = (rerunning) ? true : false;
+   jcr->sd_client = is_client;
+   if (is_client) {
+      jcr->sd_auth_key = bstrdup(sd_auth_key);
+   }
    Dmsg3(100, "rerunning=%d VolSesId=%d VolSesTime=%d\n", jcr->rerunning,
          jcr->VolSessionId, jcr->VolSessionTime);
    /*
@@ -113,11 +108,6 @@ bool job_cmd(JCR *jcr)
    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
-    * are given to us (same as restarted job).
-    */
    if (!jcr->rerunning) {
       jcr->VolSessionId = newVolSessionId();
       jcr->VolSessionTime = VolSessionTime;
@@ -149,12 +139,19 @@ bool job_cmd(JCR *jcr)
    /*
     * Pass back an authorization key for the File daemon
     */
-   bsnprintf(seed, sizeof(seed), "%p%d", jcr, JobId);
-   make_session_key(auth_key, seed, 1);
-   dir->fsend(OKjob, jcr->VolSessionId, jcr->VolSessionTime, auth_key);
-   Dmsg2(50, ">dird jid=%u: %s", (uint32_t)jcr->JobId, dir->msg);
-   jcr->sd_auth_key = bstrdup(auth_key);
-   memset(auth_key, 0, sizeof(auth_key));
+   if (jcr->sd_client) {
+      bstrncpy(sd_auth_key, "xxx", 3);
+   } else {
+      bsnprintf(seed, sizeof(seed), "%p%d", jcr, JobId);
+      make_session_key(sd_auth_key, seed, 1);
+   }
+   dir->fsend(OKjob, jcr->VolSessionId, jcr->VolSessionTime, sd_auth_key);
+   Dmsg2(150, ">dird jid=%u: %s", (uint32_t)jcr->JobId, dir->msg);
+   /* If not client, set key, otherwise it is already set */
+   if (!jcr->sd_client) {
+      jcr->sd_auth_key = bstrdup(sd_auth_key);
+      memset(sd_auth_key, 0, sizeof(sd_auth_key));
+   }
    new_plugins(jcr);            /* instantiate the plugins */
    generate_daemon_event(jcr, "JobStart");
    generate_plugin_event(jcr, bsdEventJobStart, (void *)"JobStart");
@@ -167,45 +164,100 @@ bool run_cmd(JCR *jcr)
    struct timezone tz;
    struct timespec timeout;
    int errstat = 0;
+   BSOCK *cl;
+   int fd_version = 0;
+   int sd_version = 0;
+   char job_name[500];
+   int i;
+   int stat;
 
    Dsm_check(200);
    Dmsg1(200, "Run_cmd: %s\n", jcr->dir_bsock->msg);
 
-   /* If we do not need the FD, we are doing a migrate, copy, or virtual
-    *   backup.
-    */
+   /* If we do not need the FD, we are doing a virtual backup. */
    if (jcr->no_client_used()) {
-      do_mac(jcr);
+      do_vbackup(jcr);
       return false;
    }
 
    jcr->sendJobStatus(JS_WaitFD);          /* wait for FD to connect */
 
-   gettimeofday(&tv, &tz);
-   timeout.tv_nsec = tv.tv_usec * 1000;
-   timeout.tv_sec = tv.tv_sec + me->client_wait;
-
-   Dmsg3(50, "%s waiting %d sec for FD to contact SD key=%s\n",
-         jcr->Job, (int)(timeout.tv_sec-time(NULL)), jcr->sd_auth_key);
-   Dmsg2(800, "Wait FD for jid=%d %p\n", jcr->JobId, jcr);
-
-   /*
-    * Wait for the File daemon to contact us to start the Job,
-    *  when he does, we will be released, unless the 30 minutes
-    *  expires.
-    */
-   P(mutex);
-   while ( !jcr->authenticated && !job_canceled(jcr) ) {
-      errstat = pthread_cond_timedwait(&jcr->job_start_wait, &mutex, &timeout);
-      if (errstat == ETIMEDOUT || errstat == EINVAL || errstat == EPERM) {
-         break;
+   Dmsg2(050, "sd_calls_client=%d sd_client=%d\n", jcr->sd_calls_client, jcr->sd_client);
+   if (jcr->sd_calls_client) {
+      /* We connected to Client, so finish work */
+      cl = jcr->file_bsock;
+      if (!cl) {
+         Jmsg0(jcr, M_FATAL, 0, _("Client socket not open. Could not connect to Client.\n"));
+         Dmsg0(050, "Client socket not open. Could not connect to Client.\n");
+         return false;
       }
-      Dmsg1(800, "=== Auth cond errstat=%d\n", errstat);
+      /* Get response to Hello command sent earlier */
+      Dmsg0(050, "Read Hello command from Client\n");
+      for (i=0; i<60; i++) {
+         stat = cl->recv();
+         if (stat <= 0) {
+            bmicrosleep(1, 0);
+         } else {
+            break;
+         }
+      }
+      if (stat <= 0) {
+         berrno be;
+         Jmsg1(jcr, M_FATAL, 0, _("Recv request to Client failed. ERR=%s\n"),
+            be.bstrerror());
+         Dmsg1(050, _("Recv request to Client failed. ERR=%s\n"), be.bstrerror());
+         return false;
+      }
+      Dmsg1(050, "Got from FD: %s\n", cl->msg);
+      if (sscanf(cl->msg, "Hello Bacula SD: Start Job %127s %d %d", job_name, &fd_version, &sd_version) != 3) {
+         Jmsg1(jcr, M_FATAL, 0, _("Bad Hello from Client: %s.\n"), cl->msg);
+         Dmsg1(050, _("Bad Hello from Client: %s.\n"), cl->msg);
+         return false;
+      }
+      unbash_spaces(job_name);
+      jcr->FDVersion = fd_version;
+      jcr->SDVersion = sd_version;
+      Dmsg1(050, "FDVersion=%d\n", fd_version);
+
+      /*
+       * Authenticate the File daemon
+       */
+      Dmsg0(050, "=== Authenticate FD\n");
+      if (jcr->authenticated || !authenticate_filed(jcr)) {
+         Dmsg1(050, "Authentication failed Job %s\n", jcr->Job);
+         Jmsg(jcr, M_FATAL, 0, _("Unable to authenticate File daemon\n"));
+      } else {
+         jcr->authenticated = true;
+      }
+   } else if (!jcr->sd_client) {
+      /* We wait to receive connection from Client */
+      gettimeofday(&tv, &tz);
+      timeout.tv_nsec = tv.tv_usec * 1000;
+      timeout.tv_sec = tv.tv_sec + me->client_wait;
+
+      Dmsg3(050, "%s waiting %d sec for FD to contact SD key=%s\n",
+            jcr->Job, (int)(timeout.tv_sec-time(NULL)), jcr->sd_auth_key);
+
+      Dmsg3(800, "=== Block Job=%s jid=%d %p\n", jcr->Job, jcr->JobId, jcr);
+
+      /*
+       * Wait for the File daemon to contact us to start the Job,
+       *  when he does, we will be released, unless the 30 minutes
+       *  expires.
+       */
+      P(mutex);
+      while ( !jcr->authenticated && !job_canceled(jcr) ) {
+         errstat = pthread_cond_timedwait(&jcr->job_start_wait, &mutex, &timeout);
+         if (errstat == ETIMEDOUT || errstat == EINVAL || errstat == EPERM) {
+            break;
+         }
+         Dmsg1(800, "=== Auth cond errstat=%d\n", errstat);
+      }
+      Dmsg4(050, "=== Auth=%d jid=%d canceled=%d errstat=%d\n",
+         jcr->JobId, jcr->authenticated, job_canceled(jcr), errstat);
+      V(mutex);
+      Dmsg2(800, "Auth fail or cancel for jid=%d %p\n", jcr->JobId, jcr);
    }
-   Dmsg3(50, "Auth=%d canceled=%d errstat=%d\n", jcr->authenticated,
-      job_canceled(jcr), errstat);
-   V(mutex);
-   Dmsg2(800, "Auth fail or cancel for jid=%d %p\n", jcr->JobId, jcr);
 
    memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key));
 
@@ -221,37 +273,35 @@ bool run_cmd(JCR *jcr)
  * After receiving a connection (in dircmd.c) if it is
  *   from the File daemon, this routine is called.
  */
-void handle_filed_connection(BSOCK *fd, char *job_name)
+void handle_filed_connection(BSOCK *fd, char *job_name, int fd_version,
+        int sd_version)
 {
    JCR *jcr;
 
-/*
- * With the following bmicrosleep on, running the 
- * SD under the debugger fails.   
- */ 
-// bmicrosleep(0, 50000);             /* wait 50 millisecs */
    if (!(jcr=get_jcr_by_full_name(job_name))) {
       Jmsg1(NULL, M_FATAL, 0, _("FD connect failed: Job name not found: %s\n"), job_name);
       Dmsg1(3, "**** Job \"%s\" not found.\n", job_name);
-      fd->close();
+      fd->destroy();
       return;
    }
 
-
-   Dmsg1(50, "Found Job %s\n", job_name);
+   Dmsg1(100, "Found Filed Job %s\n", job_name);
 
    if (jcr->authenticated) {
       Jmsg2(jcr, M_FATAL, 0, _("Hey!!!! JobId %u Job %s already authenticated.\n"),
          (uint32_t)jcr->JobId, jcr->Job);
-      Dmsg2(50, "Hey!!!! JobId %u Job %s already authenticated.\n",
+      Dmsg2(050, "Hey!!!! JobId %u Job %s already authenticated.\n",
          (uint32_t)jcr->JobId, jcr->Job);
-      fd->close();
+      fd->destroy();
       free_jcr(jcr);
       return;
    }
 
    jcr->file_bsock = fd;
    jcr->file_bsock->set_jcr(jcr);
+   jcr->FDVersion = fd_version;
+   jcr->SDVersion = sd_version;
+   Dmsg2(050, "fd_version=%d sd_version=%d\n", fd_version, sd_version);
 
    /*
     * Authenticate the File daemon
@@ -261,12 +311,16 @@ void handle_filed_connection(BSOCK *fd, char *job_name)
       Jmsg(jcr, M_FATAL, 0, _("Unable to authenticate File daemon\n"));
    } else {
       jcr->authenticated = true;
-      Dmsg2(50, "OK Authentication jid=%u Job %s\n", (uint32_t)jcr->JobId, jcr->Job);
+      Dmsg2(050, "OK Authentication jid=%u Job %s\n", (uint32_t)jcr->JobId, jcr->Job);
    }
 
    if (!jcr->authenticated) {
       jcr->setJobStatus(JS_ErrorTerminated);
    }
+   Dmsg3(050, "=== Auth OK, unblock Job %s jid=%d sd_ver=%d\n", job_name, jcr->JobId, sd_version);
+   if (sd_version > 0) {
+      jcr->sd_client = true;
+   }
    pthread_cond_signal(&jcr->job_start_wait); /* wake waiting job */
    free_jcr(jcr);
    return;
@@ -303,7 +357,7 @@ bool query_cmd(JCR *jcr)
             }
             if (!device->dev) {
                break;
-            }  
+            }
             ok = dir_update_device(jcr, device->dev);
             if (ok) {
                ok = dir->fsend(OK_query);
@@ -358,10 +412,7 @@ void stored_free_jcr(JCR *jcr)
       jcr->dir_bsock->signal(BNET_EOD);
       jcr->dir_bsock->signal(BNET_TERMINATE);
    }
-   if (jcr->file_bsock) {
-      jcr->file_bsock->close();
-      jcr->file_bsock = NULL;
-   }
+   free_bsock(jcr->file_bsock);
    if (jcr->job_name) {
       free_pool_memory(jcr->job_name);
    }
diff --git a/src/stored/label.c b/src/stored/label.c
index c7ce4d1..86155f2 100644
--- a/src/stored/label.c
+++ b/src/stored/label.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -37,7 +25,10 @@
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
 /* Forward referenced functions */
-static void create_volume_label_record(DCR *dcr, DEVICE *dev, DEV_RECORD *rec);
+static void create_volume_label_record(DCR *dcr, DEVICE *dev, DEV_RECORD *rec, bool alt);
+static bool sub_write_volume_label_to_block(DCR *dcr);
+static bool sub_write_new_volume_label_to_dev(DCR *dcr, const char *VolName,
+              const char *PoolName, bool relabel, bool dvdnow);
 
 /*
  * Read the volume label
@@ -61,6 +52,7 @@ static void create_volume_label_record(DCR *dcr, DEVICE *dev, DEV_RECORD *rec);
  *
  *  The dcr block is emptied on return, and the Volume is
  *    rewound.
+ *
  */
 int read_dev_volume_label(DCR *dcr)
 {
@@ -74,12 +66,14 @@ int read_dev_volume_label(DCR *dcr)
    bool want_ansi_label;
    bool have_ansi_label = false;
 
+   Enter(200);
    Dmsg4(100, "Enter read_volume_label res=%d device=%s vol=%s dev_Vol=%s\n",
-      dev->num_reserved(), dev->print_name(), VolName, 
+      dev->num_reserved(), dev->print_name(), VolName,
       dev->VolHdr.VolumeName[0]?dev->VolHdr.VolumeName:"*NULL*");
 
    if (!dev->is_open()) {
       if (!dev->open(dcr, OPEN_READ_ONLY)) {
+         Leave(200);
          return VOL_IO_ERROR;
       }
    }
@@ -90,9 +84,10 @@ int read_dev_volume_label(DCR *dcr)
    dev->label_type = B_BACULA_LABEL;
 
    if (!dev->rewind(dcr)) {
-      Mmsg(jcr->errmsg, _("Couldn't rewind device %s: ERR=%s\n"), 
-         dev->print_name(), dev->print_errmsg());
+      Mmsg(jcr->errmsg, _("Couldn't rewind %s device %s: ERR=%s\n"),
+         dev->print_type(), dev->print_name(), dev->print_errmsg());
       Dmsg1(130, "return VOL_NO_MEDIA: %s", jcr->errmsg);
+      Leave(200);
       return VOL_NO_MEDIA;
    }
    bstrncpy(dev->VolHdr.Id, "**error**", sizeof(dev->VolHdr.Id));
@@ -101,14 +96,14 @@ int read_dev_volume_label(DCR *dcr)
   want_ansi_label = dcr->VolCatInfo.LabelType != B_BACULA_LABEL ||
                     dcr->device->label_type != B_BACULA_LABEL;
   if (want_ansi_label || dev->has_cap(CAP_CHECKLABELS)) {
-      stat = read_ansi_ibm_label(dcr);            
+      stat = read_ansi_ibm_label(dcr);
       /* If we want a label and didn't find it, return error */
       if (want_ansi_label && stat != VOL_OK) {
          goto bail_out;
       }
       if (stat == VOL_NAME_ERROR || stat == VOL_LABEL_ERROR) {
-         Mmsg(jcr->errmsg, _("Wrong Volume mounted on device %s: Wanted %s have %s\n"),
-              dev->print_name(), VolName, dev->VolHdr.VolumeName);
+         Mmsg(jcr->errmsg, _("Wrong Volume mounted on %s device %s: Wanted %s have %s\n"),
+              dev->print_type(), dev->print_name(), VolName, dev->VolHdr.VolumeName);
          if (!dev->poll && jcr->label_errors++ > 100) {
             Jmsg(jcr, M_FATAL, 0, _("Too many tries: %s"), jcr->errmsg);
          }
@@ -120,16 +115,16 @@ int read_dev_volume_label(DCR *dcr)
          have_ansi_label = true;
       }
    }
-  
+
    /* Read the Bacula Volume label block */
    record = new_record();
    empty_block(block);
 
    Dmsg0(130, "Big if statement in read_volume_label\n");
    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());
+      Mmsg(jcr->errmsg, _("Requested Volume \"%s\" on %s device %s is not a Bacula "
+           "labeled Volume, because: ERR=%s"), NPRT(VolName),
+           dev->print_type(), dev->print_name(), dev->print_errmsg());
       Dmsg1(130, "%s", jcr->errmsg);
    } else if (!read_record_from_block(dcr, record)) {
       Mmsg(jcr->errmsg, _("Could not read Volume label from block.\n"));
@@ -152,10 +147,11 @@ int read_dev_volume_label(DCR *dcr)
    }
 
    if (!ok) {
-      if (forge_on || jcr->ignore_label_errors) {
+      if (jcr->ignore_label_errors) {
          dev->set_labeled();         /* set has Bacula label */
          Jmsg(jcr, M_ERROR, 0, "%s", jcr->errmsg);
          empty_block(block);
+         Leave(100);
          return VOL_OK;
       }
       Dmsg0(100, "No volume label - bailing out\n");
@@ -172,8 +168,8 @@ int read_dev_volume_label(DCR *dcr)
    if (dev->VolHdr.VerNum != BaculaTapeVersion &&
        dev->VolHdr.VerNum != OldCompatibleBaculaTapeVersion1 &&
        dev->VolHdr.VerNum != OldCompatibleBaculaTapeVersion2) {
-      Mmsg(jcr->errmsg, _("Volume on %s has wrong Bacula version. Wanted %d got %d\n"),
-         dev->print_name(), BaculaTapeVersion, dev->VolHdr.VerNum);
+      Mmsg(jcr->errmsg, _("Volume on %s device %s has wrong Bacula version. Wanted %d got %d\n"),
+         dev->print_type(), dev->print_name(), BaculaTapeVersion, dev->VolHdr.VerNum);
       Dmsg1(130, "VOL_VERSION_ERROR: %s", jcr->errmsg);
       stat = VOL_VERSION_ERROR;
       goto bail_out;
@@ -183,8 +179,8 @@ int read_dev_volume_label(DCR *dcr)
     * a Bacula volume label (VOL_LABEL)
     */
    if (dev->VolHdr.LabelType != PRE_LABEL && dev->VolHdr.LabelType != VOL_LABEL) {
-      Mmsg(jcr->errmsg, _("Volume on %s has bad Bacula label type: %x\n"),
-          dev->print_name(), dev->VolHdr.LabelType);
+      Mmsg(jcr->errmsg, _("Volume on %s device %s has bad Bacula label type: %x\n"),
+          dev->print_type(), dev->print_name(), dev->VolHdr.LabelType);
       Dmsg1(130, "%s", jcr->errmsg);
       if (!dev->poll && jcr->label_errors++ > 100) {
          Jmsg(jcr, M_FATAL, 0, _("Too many tries: %s"), jcr->errmsg);
@@ -199,8 +195,8 @@ int read_dev_volume_label(DCR *dcr)
    /* Compare Volume Names */
    Dmsg2(130, "Compare Vol names: VolName=%s hdr=%s\n", VolName?VolName:"*", dev->VolHdr.VolumeName);
    if (VolName && *VolName && *VolName != '*' && strcmp(dev->VolHdr.VolumeName, VolName) != 0) {
-      Mmsg(jcr->errmsg, _("Wrong Volume mounted on device %s: Wanted %s have %s\n"),
-           dev->print_name(), VolName, dev->VolHdr.VolumeName);
+      Mmsg(jcr->errmsg, _("Wrong Volume mounted on %s device %s: Wanted %s have %s\n"),
+           dev->print_type(), dev->print_name(), VolName, dev->VolHdr.VolumeName);
       Dmsg1(130, "%s", jcr->errmsg);
       /*
        * Cancel Job if too many label errors
@@ -214,8 +210,7 @@ int read_dev_volume_label(DCR *dcr)
       goto bail_out;
    }
 
-
-   if (debug_level >= 200) {
+   if (chk_dbglvl(100)) {
       dump_volume_label(dev);
    }
    Dmsg0(130, "Leave read_volume_label() VOL_OK\n");
@@ -223,7 +218,7 @@ int read_dev_volume_label(DCR *dcr)
    if (!dev->has_cap(CAP_STREAM)) {
       dev->rewind(dcr);
       if (have_ansi_label) {
-         stat = read_ansi_ibm_label(dcr);            
+         stat = read_ansi_ibm_label(dcr);
          /* If we want a label and didn't find it, return error */
          if (stat != VOL_OK) {
             goto bail_out;
@@ -233,58 +228,90 @@ int read_dev_volume_label(DCR *dcr)
 
    Dmsg1(100, "Call reserve_volume=%s\n", dev->VolHdr.VolumeName);
    if (reserve_volume(dcr, dev->VolHdr.VolumeName) == NULL) {
-      Mmsg2(jcr->errmsg, _("Could not reserve volume %s on %s\n"),
-           dev->VolHdr.VolumeName, dev->print_name());
+      if (!jcr->errmsg[0]) {
+         Mmsg3(jcr->errmsg, _("Could not reserve volume %s on %s device %s\n"),
+              dev->VolHdr.VolumeName, dev->print_type(), dev->print_name());
+      }
       Dmsg2(150, "Could not reserve volume %s on %s\n", dev->VolHdr.VolumeName, dev->print_name());
       stat = VOL_NAME_ERROR;
       goto bail_out;
    }
 
    empty_block(block);
+
+   Leave(200);
    return VOL_OK;
 
 bail_out:
    empty_block(block);
    dev->rewind(dcr);
    Dmsg1(150, "return %d\n", stat);
+   Leave(200);
    return stat;
 }
 
+
 /*
- * Put a volume label into the block
+ * Create and put a volume label into the block
  *
  *  Returns: false on failure
  *           true  on success
+ *
  */
 static bool write_volume_label_to_block(DCR *dcr)
 {
-   DEVICE *dev = dcr->dev;
-   DEV_BLOCK *block = dcr->block;
-   DEV_RECORD rec;
-   JCR *jcr = dcr->jcr;
+   bool ok;
 
+   Enter(100);
    Dmsg0(130, "write Label in write_volume_label_to_block()\n");
 
+   Dmsg0(100, "Call sub_write_vol_label\n");
+   ok = sub_write_volume_label_to_block(dcr);
+   if (!ok) {
+      goto get_out;
+   }
+
+get_out:
+   Leave(100);
+   return ok;
+}
+
+static bool sub_write_volume_label_to_block(DCR *dcr)
+{
+   DEVICE *dev;
+   DEV_BLOCK *block;
+   DEV_RECORD rec;
+   JCR *jcr = dcr->jcr;
+   bool ok = true;
+
+   Enter(100);
+   dev = dcr->dev;
+   block = dcr->block;
    memset(&rec, 0, sizeof(rec));
    rec.data = get_memory(SER_LENGTH_Volume_Label);
+   memset(rec.data, 0, SER_LENGTH_Volume_Label);
    empty_block(block);                /* Volume label always at beginning */
 
-   create_volume_label_record(dcr, dev, &rec);
+   create_volume_label_record(dcr, dcr->dev, &rec, false);
 
    block->BlockNumber = 0;
+   Dmsg0(100, "write_record_to_block\n");
    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());
-      return false;
+      Jmsg2(jcr, M_FATAL, 0, _("Cannot write Volume label to block for %s device %s\n"),
+         dev->print_type(), dev->print_name());
+      ok = false;
+      goto get_out;
    } else {
-      Dmsg2(130, "Wrote label of %d bytes to block. Vol=%s\n", rec.data_len,
-            dcr->VolumeName);
+      Dmsg3(100, "Wrote fd=%d label of %d bytes to block. Vol=%s\n",
+         dev->fd(), rec.data_len, dcr->VolumeName);
    }
    free_pool_memory(rec.data);
-   return true;
-}
 
+get_out:
+   Leave(100);
+   return ok;
+}
 
 /*
  * Write a Volume Label
@@ -293,13 +320,17 @@ static bool write_volume_label_to_block(DCR *dcr)
  *            after the label will be destroyed,
  *            in fact, we write the label 5 times !!!!
  *
- *  This routine should be used only when labeling a blank tape.
+ *  This routine should be used only when labeling a blank tape or
+ *  when recylcing a volume.
+ *
  */
-bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName, 
+bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName,
               const char *PoolName, bool relabel, bool dvdnow)
 {
-   DEVICE *dev = dcr->dev;
-   DEV_BLOCK *block = dcr->block;
+   DEVICE *dev;
+
+   Enter(100);
+   dev = dcr->dev;
 
    Dmsg0(150, "write_volume_label()\n");
    if (*VolName == 0) {
@@ -321,93 +352,118 @@ bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName,
    /* Set the new filename for open, ... */
    dev->setVolCatName(VolName);
    dcr->setVolCatName(VolName);
-   Dmsg1(150, "New VolName=%s\n", VolName);
+   dev->clearVolCatBytes();
+
+   Dmsg1(100, "New VolName=%s\n", VolName);
    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)) {
-         Jmsg3(dcr->jcr, M_WARNING, 0, _("Open device %s Volume \"%s\" failed: ERR=%s\n"),
-               dev->print_name(), dcr->VolumeName, dev->bstrerror());
+         Jmsg4(dcr->jcr, M_WARNING, 0, _("Open %s device %s Volume \"%s\" failed: ERR=%s\n"),
+               dev->print_type(), dev->print_name(), dcr->VolumeName, dev->bstrerror());
          goto bail_out;
       }
    }
    Dmsg1(150, "Label type=%d\n", dev->label_type);
 
-   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;
-         }
+   if (!sub_write_new_volume_label_to_dev(dcr, VolName, PoolName, relabel, dvdnow)) {
+      goto bail_out;
+   }
+   if (dev->weof(1)) {
+      dev->set_labeled();
+      write_ansi_ibm_labels(dcr, ANSI_EOF_LABEL, dev->VolHdr.VolumeName);
+   }
+
+   if (chk_dbglvl(100))  {
+      dump_volume_label(dev);
+   }
+   Dmsg0(50, "Call reserve_volume\n");
+   /**** ***FIXME*** if dev changes, dcr must be updated */
+   if (reserve_volume(dcr, VolName) == NULL) {
+      if (!dcr->jcr->errmsg[0]) {
+         Mmsg3(dcr->jcr->errmsg, _("Could not reserve volume %s on %s device %s\n"),
+              dev->VolHdr.VolumeName, dev->print_type(), dev->print_name());
       }
+      Dmsg1(50, "%s", dcr->jcr->errmsg);
+      goto bail_out;
+   }
+   dev = dcr->dev;                    /* may have changed in reserve_volume */
+   dev->clear_append();               /* remove append since this is PRE_LABEL */
+   Leave(100);
+   return true;
 
-      /* Temporarily mark in append state to enable writing */
-      dev->set_append();
+bail_out:
+   volume_unused(dcr);
+   dcr->dev->clear_append();            /* remove append since this is PRE_LABEL */
+   Leave(100);
+   return false;
+}
 
-      /* Create PRE_LABEL or VOL_LABEL if DVD */
-      create_volume_label(dev, VolName, PoolName, dvdnow);
+static bool sub_write_new_volume_label_to_dev(DCR *dcr, const char *VolName,
+              const char *PoolName, bool relabel, bool dvdnow)
+{
+   DEVICE *dev;
+   DEV_BLOCK *block;
 
-      /*
-       * 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;
-      }
+   Enter(100);
+   dev = dcr->dev;
+   block = dcr->block;
 
-      create_volume_label_record(dcr, dev, dcr->rec);
-      dcr->rec->Stream = 0;
-      dcr->rec->maskedStream = 0;
+   empty_block(block);
+   if (!dev->rewind(dcr)) {
+      Dmsg2(130, "Bad status on %s from rewind: 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());
-      }
+   /* Temporarily mark in append state to enable writing */
+   dev->set_append();
 
-      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());
+   /* Create PRE_LABEL or VOL_LABEL if DVD */
+   create_volume_header(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);
          goto bail_out;
       }
-      break;
+   } else if (!write_ansi_ibm_labels(dcr, ANSI_VOL_LABEL, VolName)) {
+      goto bail_out;
    }
-   dev = dcr->dev;
 
+   create_volume_label_record(dcr, dev, dcr->rec, false);
+   dcr->rec->Stream = 0;
+   dcr->rec->maskedStream = 0;
 
-   Dmsg0(130, " Wrote block to device\n");
-
-   if (dev->weof(1)) {
-      dev->set_labeled();
-      write_ansi_ibm_labels(dcr, ANSI_EOF_LABEL, dev->VolHdr.VolumeName);
-   }
+   Dmsg1(100, "write_record_to_block FI=%d\n", dcr->rec->FileIndex);
 
-   if (debug_level >= 20)  {
-      dump_volume_label(dev);
+   if (!write_record_to_block(dcr, dcr->rec)) {
+      Dmsg2(40, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg());
+      goto bail_out;
+   } else {
+      Dmsg2(100, "Wrote label=%d bytes block: %s\n", dcr->rec->data_len, dev->print_name());
    }
-   Dmsg0(100, "Call reserve_volume\n");
-   if (reserve_volume(dcr, VolName) == NULL) {
-      Mmsg2(dcr->jcr->errmsg, _("Could not reserve volume %s on %s\n"),
-           dev->VolHdr.VolumeName, dev->print_name());
-      Dmsg1(100, "%s", dcr->jcr->errmsg);
+   Dmsg2(100, "New label VolCatBytes=%lld VolCatStatus=%s\n",
+      dev->VolCatInfo.VolCatBytes, dev->VolCatInfo.VolCatStatus);
+
+   Dmsg3(130, "Call write_block_to_dev() fd=%d block=%p Addr=%lld\n",
+      dcr->dev->fd(), dcr->block, block->dev->lseek(dcr, 0, SEEK_CUR));
+   Dmsg0(100, "write_record_to_dev\n");
+   /* Write block to device */
+   if (!dcr->write_block_to_dev()) {
+      Dmsg2(40, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg());
       goto bail_out;
    }
-   dev = dcr->dev;                    /* may have changed in reserve_volume */
-
-   dev->clear_append();               /* remove append since this is PRE_LABEL */
+   Dmsg2(100, "New label VolCatBytes=%lld VolCatStatus=%s\n",
+      dev->VolCatInfo.VolCatBytes, dev->VolCatInfo.VolCatStatus);
+   Leave(100);
    return true;
 
 bail_out:
-   volume_unused(dcr);
-   dev->clear_volhdr();
-   dev->clear_append();               /* remove append since this is PRE_LABEL */
+   Leave(100);
    return false;
 }
 
@@ -415,6 +471,8 @@ bail_out:
  * Write a volume label. This is ONLY called if we have a valid Bacula
  *   label of type PRE_LABEL or we are recyling an existing Volume.
  *
+ * By calling write_volume_label_to_block
+ *
  *  Returns: true if OK
  *           false if unable to write it
  */
@@ -422,71 +480,87 @@ bool DCR::rewrite_volume_label(bool recycle)
 {
    DCR *dcr = this;
 
+   Enter(100);
+   ASSERT(dcr->VolumeName[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());
+       Jmsg4(jcr, M_WARNING, 0, _("Open %s device %s Volume \"%s\" failed: ERR=%s\n"),
+             dev->print_type(), dev->print_name(), dcr->VolumeName, dev->bstrerror());
+      Leave(100);
       return false;
    }
    Dmsg2(190, "set append found freshly labeled volume. fd=%d dev=%x\n", dev->fd(), dev);
    dev->VolHdr.LabelType = VOL_LABEL; /* set Volume label */
    dev->set_append();
-   if (!write_volume_label_to_block(dcr)) {
-      Dmsg0(200, "Error from write volume label.\n");
-      return false;
-   }
-   Dmsg1(150, "wrote vol label to block. Vol=%s\n", dcr->VolumeName);
+   Dmsg0(100, "Rewrite_volume_label set volcatbytes=0\n");
+   dev->clearVolCatBytes();
+   dev->setVolCatStatus("Append");    /* set append status */
 
-   dev->setVolCatInfo(false);
-   dev->VolCatInfo.VolCatBytes = 0;        /* reset byte count */
-
-   /*
-    * If we are not dealing with a streaming device,
-    *  write the block now to ensure we have write permission.
-    *  It is better to find out now rather than later.
-    * We do not write the block now if this is an ANSI label. This
-    *  avoids re-writing the ANSI label, which we do not want to do.
-    */
    if (!dev->has_cap(CAP_STREAM)) {
       if (!dev->rewind(dcr)) {
-         Jmsg2(jcr, M_FATAL, 0, _("Rewind error on device %s: ERR=%s\n"),
-               dev->print_name(), dev->print_errmsg());
+         Jmsg3(jcr, M_FATAL, 0, _("Rewind error on %s device %s: ERR=%s\n"),
+               dev->print_type(), dev->print_name(), dev->print_errmsg());
+         Leave(100);
          return false;
       }
       if (recycle) {
          Dmsg1(150, "Doing recycle. Vol=%s\n", dcr->VolumeName);
          if (!dev->truncate(dcr)) {
-            Jmsg2(jcr, M_FATAL, 0, _("Truncate error on device %s: ERR=%s\n"),
-                  dev->print_name(), dev->print_errmsg());
+            Jmsg3(jcr, M_FATAL, 0, _("Truncate error on %s device %s: ERR=%s\n"),
+                  dev->print_type(), dev->print_name(), dev->print_errmsg());
+            Leave(100);
             return false;
          }
          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());
+            Jmsg3(jcr, M_FATAL, 0,
+               _("Failed to re-open DVD after truncate on %s device %s: ERR=%s\n"),
+               dev->print_type(), dev->print_name(), dev->print_errmsg());
+            Leave(100);
             return false;
          }
       }
+   }
+
+   if (!write_volume_label_to_block(dcr)) {
+      Dmsg0(150, "Error from write volume label.\n");
+      Leave(100);
+      return false;
+   }
+   Dmsg1(100, "wrote vol label to block. Vol=%s\n", dcr->VolumeName);
+
+   ASSERT(dcr->VolumeName[0]);
+   dev->setVolCatInfo(false);
 
+   /*
+    * If we are not dealing with a streaming device,
+    *  write the block now to ensure we have write permission.
+    *  It is better to find out now rather than later.
+    * We do not write the block now if this is an ANSI label. This
+    *  avoids re-writing the ANSI label, which we do not want to do.
+    */
+   if (!dev->has_cap(CAP_STREAM)) {
       /*
        * If we have already detected an ANSI label, re-read it
-       *   to skip past it. Otherwise, we write a new one if 
-       *   so requested.  
+       *   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);
+            Leave(100);
             return false;
          }
       } else if (!write_ansi_ibm_labels(dcr, ANSI_VOL_LABEL, dev->VolHdr.VolumeName)) {
+         Leave(100);
          return false;
       }
 
       /* Attempt write to check write permission */
       Dmsg1(200, "Attempt to write to device fd=%d.\n", dev->fd());
       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());
+         Jmsg3(jcr, M_ERROR, 0, _("Unable to write %s device %s: ERR=%s\n"),
+            dev->print_type(), dev->print_name(), dev->print_errmsg());
          Dmsg0(200, "===ERROR write block to dev\n");
+         Leave(100);
          return false;
       }
    }
@@ -507,25 +581,28 @@ bool DCR::rewrite_volume_label(bool recycle)
       dev->VolCatInfo.VolCatWrites = 1;
       dev->VolCatInfo.VolCatReads = 1;
    }
-   Dmsg1(150, "dir_update_vol_info. Set Append vol=%s\n", dcr->VolumeName);
+   Dmsg1(100, "dir_update_vol_info. Set Append vol=%s\n", dcr->VolumeName);
    dev->VolCatInfo.VolFirstWritten = time(NULL);
-   bstrncpy(dev->VolCatInfo.VolCatStatus, "Append", sizeof(dev->VolCatInfo.VolCatStatus));
+   dev->setVolCatStatus("Append");
+   ASSERT(dcr->VolumeName[0]);
    dev->setVolCatName(dcr->VolumeName);
    if (!dir_update_volume_info(dcr, true, true)) {  /* indicate doing relabel */
+      Leave(100);
       return false;
    }
    if (recycle) {
-      Jmsg(jcr, M_INFO, 0, _("Recycled volume \"%s\" on device %s, all previous data lost.\n"),
-         dcr->VolumeName, dev->print_name());
+      Jmsg(jcr, M_INFO, 0, _("Recycled volume \"%s\" on %s device %s, all previous data lost.\n"),
+         dcr->VolumeName, dev->print_type(), dev->print_name());
    } else {
-      Jmsg(jcr, M_INFO, 0, _("Wrote label to prelabeled Volume \"%s\" on device %s\n"),
-         dcr->VolumeName, dev->print_name());
+      Jmsg(jcr, M_INFO, 0, _("Wrote label to prelabeled Volume \"%s\" on %s device %s\n"),
+         dcr->VolumeName, dev->print_type(), dev->print_name());
    }
    /*
     * End writing real Volume label (from pre-labeled tape), or recycling
     *  the volume.
     */
-   Dmsg1(150, "OK from rewrite vol label. Vol=%s\n", dcr->VolumeName);
+   Dmsg1(100, "OK from rewrite vol label. Vol=%s\n", dcr->VolumeName);
+   Leave(100);
    return true;
 }
 
@@ -536,7 +613,8 @@ bool DCR::rewrite_volume_label(bool recycle)
  *   Assumes that the dev->VolHdr structure is properly
  *   initialized.
 */
-static void create_volume_label_record(DCR *dcr, DEVICE *dev, DEV_RECORD *rec)
+static void create_volume_label_record(DCR *dcr, DEVICE *dev,
+     DEV_RECORD *rec, bool alt)
 {
    ser_declare;
    struct date_time dt;
@@ -545,7 +623,9 @@ static void create_volume_label_record(DCR *dcr, DEVICE *dev, DEV_RECORD *rec)
 
    /* Serialize the label into the device record. */
 
+   Enter(100);
    rec->data = check_pool_memory_size(rec->data, SER_LENGTH_Volume_Label);
+   memset(rec->data, 0, SER_LENGTH_Volume_Label);
    ser_begin(rec->data, SER_LENGTH_Volume_Label);
    ser_string(dev->VolHdr.Id);
 
@@ -578,34 +658,36 @@ static void create_volume_label_record(DCR *dcr, DEVICE *dev, 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));
+   ASSERT(dcr->VolumeName[0]);
    rec->data_len = ser_length(rec->data);
    rec->FileIndex = dev->VolHdr.LabelType;
+   Dmsg1(100, "LabelType=%d\n", dev->VolHdr.LabelType);
    rec->VolSessionId = jcr->VolSessionId;
    rec->VolSessionTime = jcr->VolSessionTime;
    rec->Stream = jcr->NumWriteVolumes;
    rec->maskedStream = jcr->NumWriteVolumes;
-   Dmsg2(150, "Created Vol label rec: FI=%s len=%d\n", FI_to_ascii(buf, rec->FileIndex),
+   Dmsg2(100, "Created Vol label rec: FI=%s len=%d\n", FI_to_ascii(buf, rec->FileIndex),
       rec->data_len);
+   Dmsg2(100, "reclen=%d recdata=%s\n", rec->data_len, rec->data);
+   Leave(100);
 }
 
 
 /*
- * Create a volume label in memory
+ * Create a volume header in memory
  */
-void create_volume_label(DEVICE *dev, const char *VolName, 
+void create_volume_header(DEVICE *dev, const char *VolName,
                          const char *PoolName, bool dvdnow)
 {
    DEVRES *device = (DEVRES *)dev->device;
 
-   Dmsg0(130, "Start create_volume_label()\n");
+   Dmsg0(130, "Start create_volume_header()\n");
 
    ASSERT(dev != NULL);
 
-   dev->clear_volhdr();          /* clear any old volume info */
-
    bstrncpy(dev->VolHdr.Id, BaculaId, sizeof(dev->VolHdr.Id));
    dev->VolHdr.VerNum = BaculaTapeVersion;
    if (dev->is_dvd() && dvdnow) {
@@ -628,10 +710,10 @@ void create_volume_label(DEVICE *dev, const char *VolName,
       dev->VolHdr.HostName[0] = 0;
    }
    bstrncpy(dev->VolHdr.LabelProg, my_name, sizeof(dev->VolHdr.LabelProg));
-   sprintf(dev->VolHdr.ProgVersion, "Ver. %s %s", VERSION, BDATE);
-   sprintf(dev->VolHdr.ProgDate, "Build %s %s", __DATE__, __TIME__);
+   sprintf(dev->VolHdr.ProgVersion, "Ver. %s %s ", VERSION, BDATE);
+   sprintf(dev->VolHdr.ProgDate, "Build %s %s ", __DATE__, __TIME__);
    dev->set_labeled();               /* set has Bacula label */
-   if (debug_level >= 90) {
+   if (chk_dbglvl(100)) {
       dump_volume_label(dev);
    }
 }
@@ -645,6 +727,7 @@ void create_session_label(DCR *dcr, DEV_RECORD *rec, int label)
    JCR *jcr = dcr->jcr;
    ser_declare;
 
+   Enter(100);
    rec->VolSessionId   = jcr->VolSessionId;
    rec->VolSessionTime = jcr->VolSessionTime;
    rec->Stream         = jcr->JobId;
@@ -688,6 +771,7 @@ void create_session_label(DCR *dcr, DEV_RECORD *rec, int label)
    }
    ser_end(rec->data, SER_LENGTH_Session_Label);
    rec->data_len = ser_length(rec->data);
+   Leave(100);
 }
 
 /* Write session label
@@ -702,6 +786,7 @@ bool write_session_label(DCR *dcr, int label)
    DEV_BLOCK *block = dcr->block;
    char buf1[100], buf2[100];
 
+   Enter(100);
    rec = new_record();
    Dmsg1(130, "session_label record=%x\n", rec);
    switch (label) {
@@ -718,7 +803,7 @@ bool write_session_label(DCR *dcr, int label)
       }
       break;
    default:
-      Jmsg1(jcr, M_ABORT, 0, _("Bad Volume session label = %d\n"), label);
+      Jmsg1(jcr, M_ABORT, 0, _("Bad Volume session label request=%d\n"), label);
       break;
    }
    create_session_label(dcr, rec, label);
@@ -736,11 +821,18 @@ bool write_session_label(DCR *dcr, int label)
       if (!dcr->write_block_to_device()) {
          Dmsg0(130, "Got session label write_block_to_dev error.\n");
          free_record(rec);
+         Leave(100);
          return false;
       }
    }
-   if (!write_record_to_block(dcr, rec)) {
+   /*
+    * We use write_record() because it handles the case that
+    *  the maximum user size has been reached.
+    */
+   if (!dcr->write_record(rec)) {
+      Dmsg0(150, "Bad return from write_record\n");
       free_record(rec);
+      Leave(100);
       return false;
    }
 
@@ -753,6 +845,7 @@ bool write_session_label(DCR *dcr, int label)
    free_record(rec);
    Dmsg2(150, "Leave write_session_label Block=%ud File=%ud\n",
       dev->get_block_num(), dev->get_file());
+   Leave(100);
    return true;
 }
 
@@ -772,12 +865,14 @@ bool unser_volume_label(DEVICE *dev, DEV_RECORD *rec)
    ser_declare;
    char buf1[100], buf2[100];
 
+   Enter(100);
    if (rec->FileIndex != VOL_LABEL && rec->FileIndex != PRE_LABEL) {
       Mmsg3(dev->errmsg, _("Expecting Volume Label, got FI=%s Stream=%s len=%d\n"),
               FI_to_ascii(buf1, rec->FileIndex),
               stream_to_ascii(buf2, rec->Stream, rec->FileIndex),
               rec->data_len);
       if (!forge_on) {
+         Leave(100);
          return false;
       }
    }
@@ -787,7 +882,9 @@ bool unser_volume_label(DEVICE *dev, DEV_RECORD *rec)
 
 
    /* Unserialize the record into the Volume Header */
+   Dmsg2(100, "reclen=%d recdata=%s\n", rec->data_len, rec->data);
    rec->data = check_pool_memory_size(rec->data, SER_LENGTH_Volume_Label);
+   Dmsg2(100, "reclen=%d recdata=%s\n", rec->data_len, rec->data);
    ser_begin(rec->data, SER_LENGTH_Volume_Label);
    unser_string(dev->VolHdr.Id);
    unser_uint32(dev->VolHdr.VerNum);
@@ -815,9 +912,10 @@ bool unser_volume_label(DEVICE *dev, DEV_RECORD *rec)
 
    ser_end(rec->data, SER_LENGTH_Volume_Label);
    Dmsg0(190, "unser_vol_label\n");
-   if (debug_level >= 190) {
+   if (chk_dbglvl(100)) {
       dump_volume_label(dev);
    }
+   Leave(100);
    return true;
 }
 
@@ -826,6 +924,7 @@ bool unser_session_label(SESSION_LABEL *label, DEV_RECORD *rec)
 {
    ser_declare;
 
+   Enter(100);
    rec->data = check_pool_memory_size(rec->data, SER_LENGTH_Session_Label);
    unser_begin(rec->data, SER_LENGTH_Session_Label);
    unser_string(label->Id);
@@ -866,12 +965,13 @@ bool unser_session_label(SESSION_LABEL *label, DEV_RECORD *rec)
          label->JobStatus = JS_Terminated; /* kludge */
       }
    }
+   Leave(100);
    return true;
 }
 
 void dump_volume_label(DEVICE *dev)
 {
-   int dbl = debug_level;
+   int64_t dbl = debug_level;
    uint32_t File;
    const char *LabelType;
    char buf[30];
@@ -943,7 +1043,7 @@ bail_out:
 
 static void dump_session_label(DEV_RECORD *rec, const char *type)
 {
-   int dbl;
+   int64_t dbl;
    struct date_time dt;
    struct tm tm;
    SESSION_LABEL label;
@@ -1010,7 +1110,7 @@ static void dump_session_label(DEV_RECORD *rec, const char *type)
 void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose)
 {
    const char *type;
-   int dbl;
+   int64_t dbl;
 
    if (rec->FileIndex == 0 && rec->VolSessionId == 0 && rec->VolSessionTime == 0) {
       return;
@@ -1055,15 +1155,15 @@ void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose)
          break;
       case EOM_LABEL:
          Pmsg7(-1, _("%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"),
-            type, dev->file, dev->block_num, rec->VolSessionId, 
+            type, dev->file, dev->block_num, rec->VolSessionId,
             rec->VolSessionTime, rec->Stream, rec->data_len);
          break;
       case EOT_LABEL:
-         Pmsg0(-1, _("End of physical tape.\n"));
+         Pmsg0(-1, _("Bacula \"End of Tape\" label found.\n"));
          break;
       default:
          Pmsg7(-1, _("%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"),
-            type, dev->file, dev->block_num, rec->VolSessionId, 
+            type, dev->file, dev->block_num, rec->VolSessionId,
             rec->VolSessionTime, rec->Stream, rec->data_len);
          break;
       }
@@ -1096,7 +1196,7 @@ void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose)
       case VOL_LABEL:
       default:
          Pmsg7(-1, _("%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"),
-            type, dev->file, dev->block_num, rec->VolSessionId, rec->VolSessionTime, 
+            type, dev->file, dev->block_num, rec->VolSessionId, rec->VolSessionTime,
             rec->Stream, rec->data_len);
          break;
       case EOT_LABEL:
diff --git a/src/stored/lock.c b/src/stored/lock.c
index 73d1a66..f0459e9 100644
--- a/src/stored/lock.c
+++ b/src/stored/lock.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Collection of Bacula Storage daemon locking software
@@ -36,7 +24,7 @@
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
 #ifdef SD_DEBUG_LOCK
-const int dbglvl = 0;
+const int dbglvl = 300;
 #else
 const int dbglvl = 500;
 #endif
@@ -53,7 +41,7 @@ const int dbglvl = 500;
                  called the device is unlocked.
  *  2. Lock()    simple mutex that locks the device structure. A Lock
  *               can be acquired while a device is blocked if it is not
- *               locked.      
+ *               locked.
  *  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
@@ -68,18 +56,18 @@ const int dbglvl = 500;
  *    i.e. it will wait until the device is not blocked.
  *  A block is normally set during long operations like writing to
  *    the device.
- *  If you are writing the device, you will normally block and 
+ *  If you are writing the device, you will normally block and
  *    lock it.
  *  A lock cannot be violated. No other thread can touch the
- *    device while a lock is set.  
+ *    device while a lock is set.
  *  When a block is set, every thread accept the thread that set
  *    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,
  *    ...
- *  Under certain conditions the block that is set on a device can be    
+ *  Under certain conditions the block that is set on a device can be
  *    stolen and the device can be used by another thread. For example,
- *    a device is blocked because it is waiting for the operator to  
+ *    a device is blocked because it is waiting for the operator to
  *    mount a tape.  The operator can then unmount the device, and label
  *    a tape, re-mount it, give back the block, and the job will continue.
  *
@@ -95,14 +83,14 @@ const int dbglvl = 500;
  *                       Lock()
  *                    if blocked and not same thread that locked
  *                       pthread_cond_wait
- *                    leaves device locked 
+ *                    leaves device locked
  *
  *   DEVICE::rUnlock() unlocks but does not unblock
  *                    same as Unlock();
  *
- *   DEVICE::dblock(why)  does 
+ *   DEVICE::dblock(why)  does
  *                    rLock();         (recursive device lock)
- *                    block_device(this, why) 
+ *                    block_device(this, why)
  *                    rUnlock()
  *
  *   DEVICE::dunblock does
@@ -110,7 +98,7 @@ const int dbglvl = 500;
  *                    unblock_device()
  *                    Unlock()
  *
- *   block_device() does  (must be locked and not blocked at entry)  
+ *   block_device() does  (must be locked and not blocked at entry)
  *                    set blocked status
  *                    set our pid
  *
@@ -155,160 +143,167 @@ void DEVICE::dunblock(bool locked)
 }
 
 
-#ifdef SD_DEBUG_LOCK
 
 /*
- * Debug DCR locks  N.B.
+ * Debug DEVICE locks  N.B.
  *
  */
-void DCR::dbg_mLock(const char *file, int line, bool locked)
-{
-   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::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;
-}
+#ifdef DEV_DEBUG_LOCK
 
-/*
- * Debug DEVICE locks  N.B.
- *
- */
 void DEVICE::dbg_Lock(const char *file, int line)
 {
-   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.  
-    */
-   if (m_count > 0 && pthread_equal(m_pid, pthread_self())) {
-      Dmsg4(sd_dbglvl, "Possible DEADLOCK!! lock held by JobId=%u from %s:%d m_count=%d\n", 
-            get_jobid_from_tid(m_pid),
-            file, line, m_count);
-   }
+   Dmsg3(sd_dbglvl, "Lock from %s:%d precnt=%d\n", file, line, m_count);
    bthread_mutex_lock_p(&m_mutex, file, line);
    m_pid = pthread_self();
-   m_count++; 
+   m_count++;
 }
 
 void DEVICE::dbg_Unlock(const char *file, int line)
 {
-   m_count--; 
-   Dmsg3(sd_dbglvl, "Unlock from %s:%d postcnt=%d\n", file, line, m_count); 
+   m_count--;
+   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); 
+   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);
-}
+#else
 
-void DEVICE::dbg_Unlock_acquire(const char *file, int line)
+/*
+ * DEVICE locks  N.B.
+ *
+ */
+
+
+void DEVICE::rUnlock()
 {
-   Dmsg2(sd_dbglvl, "Unlock_acquire from %s:%d\n", file, line); 
-   bthread_mutex_unlock_p(&acquire_mutex, file, line);
+   Unlock();
 }
 
-void DEVICE::dbg_Lock_read_acquire(const char *file, int line)
+void DEVICE::Lock()
 {
-   Dmsg2(sd_dbglvl, "Lock_read_acquire from %s:%d\n", file, line); 
-   bthread_mutex_lock_p(&read_acquire_mutex, file, line);
+   P(m_mutex);
 }
 
-void DEVICE::dbg_Unlock_read_acquire(const char *file, int line)
+void DEVICE::Unlock()
 {
-   Dmsg2(sd_dbglvl, "Unlock_read_acquire from %s:%d\n", file, line); 
-   bthread_mutex_unlock_p(&read_acquire_mutex, file, line);
+   V(m_mutex);
 }
 
-
-#else
+#endif /* DEV_DEBUG_LOCK */
 
 /*
- * DCR locks  N.B.
+ * This is a recursive lock that checks if the device is blocked.
  *
+ * When blocked is set, all threads EXCEPT thread with id no_wait_id
+ * must wait. The no_wait_id thread is out obtaining a new volume
+ * and preparing the label.
  */
-/* Multiple rLock implementation */
-void DCR::mLock(bool locked)
+#ifdef DEV_DEBUG_LOCK
+void DEVICE::dbg_rLock(const char *file, int line, bool locked)
 {
-   P(r_mutex);
-   if (is_dev_locked()) {
-      V(r_mutex);
-      return;
+   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++;
+   }
+
+   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, "rLock blked=%s no_wait=%p me=%p\n", print_blocked(),
+               no_wait_id, pthread_self());
+#endif
+         if ((stat = bthread_cond_wait_p(&this->wait, &m_mutex, file, line)) != 0) {
+            berrno be;
+            this->dbg_Unlock(file, line);
+            Emsg1(M_ABORT, 0, _("pthread_cond_wait failure. ERR=%s\n"),
+               be.bstrerror(stat));
+         }
+      }
+      num_waiting--;             /* no longer waiting */
    }
-   dev->rLock(locked);
-   inc_dev_lock();
-   V(r_mutex);
-   return;
 }
+#else /* DEV_DEBUG_LOCK */
 
-/* Multiple rUnlock implementation */
-void DCR::mUnlock()
+void DEVICE::rLock(bool locked)
 {
-   P(r_mutex);
-   if (!is_dev_locked()) {
-      V(r_mutex);
-      ASSERT2(0, "Call on dcr mUnlock when not locked");
-      return;
+   if (!locked) {
+      Lock();
+      m_count++;
    }
-   dec_dev_lock();
-   /* When the count goes to zero, unlock it */
-   if (!is_dev_locked()) {
-      dev->rUnlock();
+
+   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, "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->Unlock();
+            Emsg1(M_ABORT, 0, _("pthread_cond_wait failure. ERR=%s\n"),
+               be.bstrerror(stat));
+         }
+      }
+      num_waiting--;             /* no longer waiting */
    }
-   V(r_mutex);
-   return;
 }
 
-/*
- * DEVICE locks  N.B.
- *
- */
+#endif  /* DEV_DEBUG_LOCK */
 
-void DEVICE::rUnlock()
+#ifdef SD_DEBUG_LOCK
+
+void DEVICE::dbg_Lock_acquire(const char *file, int line)
 {
-   Unlock();
+   Dmsg2(sd_dbglvl, "Lock_acquire from %s:%d\n", file, line);
+   bthread_mutex_lock_p(&acquire_mutex, file, line);
 }
 
-void DEVICE::Lock()
+void DEVICE::dbg_Unlock_acquire(const char *file, int line)
 {
-   P(m_mutex);
+   Dmsg2(sd_dbglvl, "Unlock_acquire from %s:%d\n", file, line);
+   bthread_mutex_unlock_p(&acquire_mutex, file, line);
 }
 
-void DEVICE::Unlock()
+void DEVICE::dbg_Lock_read_acquire(const char *file, int line)
 {
-   V(m_mutex);
+   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);
 }
 
+void DEVICE::dbg_Lock_VolCatInfo(const char *file, int line)
+{
+   bthread_mutex_lock_p(&volcat_mutex, file, line);
+}
+
+void DEVICE::dbg_Unlock_VolCatInfo(const char *file, int line)
+{
+   bthread_mutex_unlock_p(&volcat_mutex, file, line);
+}
+
+#else
+
 void DEVICE::Lock_acquire()
 {
    P(acquire_mutex);
@@ -329,6 +324,18 @@ void DEVICE::Unlock_read_acquire()
    V(read_acquire_mutex);
 }
 
+void DEVICE::Lock_VolCatInfo()
+{
+   P(volcat_mutex);
+}
+
+void DEVICE::Unlock_VolCatInfo()
+{
+   V(volcat_mutex);
+}
+
+
+
 #endif
 
 /* Main device access control */
@@ -349,6 +356,18 @@ int DEVICE::init_read_acquire_mutex()
    return pthread_mutex_init(&read_acquire_mutex, NULL);
 }
 
+/* VolCatInfo mutex */
+int DEVICE::init_volcat_mutex()
+{
+   return pthread_mutex_init(&volcat_mutex, NULL);
+}
+
+/* dcrs mutex */
+int DEVICE::init_dcrs_mutex()
+{
+   return pthread_mutex_init(&dcrs_mutex, NULL);
+}
+
 /* Set order in which device locks must be acquired */
 void DEVICE::set_mutex_priorities()
 {
@@ -365,52 +384,6 @@ int DEVICE::next_vol_timedwait(const struct timespec *timeout)
 
 
 /*
- * This is a recursive lock that checks if the device is blocked.
- *
- * When blocked is set, all threads EXCEPT thread with id no_wait_id
- * must wait. The no_wait_id thread is out obtaining a new volume
- * and preparing the label.
- */
-#ifdef SD_DEBUG_LOCK
-void DEVICE::dbg_rLock(const char *file, int line, bool locked)
-{
-   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::rLock(bool locked)
-{
-   if (!locked) {
-      Lock();
-      m_count++;
-   }
-#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, "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->Unlock();
-            Emsg1(M_ABORT, 0, _("pthread_cond_wait failure. ERR=%s\n"),
-               be.bstrerror(stat));
-         }
-      }
-      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->rLock(),
@@ -420,8 +393,7 @@ void DEVICE::rLock(bool locked)
  */
 void _block_device(const char *file, int line, DEVICE *dev, int state)
 {
-// ASSERT(lmgr_mutex_is_locked(&dev->m_mutex) == 1);
-   ASSERT(dev->blocked() == BST_NOT_BLOCKED);
+   ASSERT2(dev->blocked() == BST_NOT_BLOCKED, "Block request of device already blocked");
    dev->set_blocked(state);           /* make other threads wait */
    dev->no_wait_id = pthread_self();  /* allow us to continue */
    Dmsg3(sd_dbglvl, "set blocked=%s from %s:%d\n", dev->print_blocked(), file, line);
@@ -435,8 +407,7 @@ void _block_device(const char *file, int line, DEVICE *dev, int state)
 void _unblock_device(const char *file, int line, DEVICE *dev)
 {
    Dmsg3(sd_dbglvl, "unblock %s from %s:%d\n", dev->print_blocked(), file, line);
-// ASSERT(lmgr_mutex_is_locked(&dev->m_mutex) == 1);
-   ASSERT(dev->blocked());
+   ASSERT2(dev->blocked(), "Unblock request of device not blocked");
    dev->set_blocked(BST_NOT_BLOCKED);
    clear_thread_id(dev->no_wait_id);
    if (dev->num_waiting > 0) {
@@ -479,7 +450,7 @@ void _give_back_device_lock(const char *file, int line, DEVICE *dev, bsteal_lock
    }
 }
 
-const char *DEVICE::print_blocked() const 
+const char *DEVICE::print_blocked() const
 {
    switch (m_blocked) {
    case BST_NOT_BLOCKED:
diff --git a/src/stored/lock.h b/src/stored/lock.h
index 795bc31..16b47bb 100644
--- a/src/stored/lock.h
+++ b/src/stored/lock.h
@@ -1,48 +1,86 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Definitions for locking and blocking functions in the SD
  *
  * Kern Sibbald, pulled out of dev.h June 2007
  *
- *   Version $Id$
- *
  */
 
 
 #ifndef __LOCK_H
 #define __LOCK_H 1
 
+void    _lock_reservations(const char *file="**Unknown**", int line=0);
+void    _unlock_reservations();
+void    _lock_volumes(const char *file="**Unknown**", int line=0);
+void    _unlock_volumes();
+
+#ifdef  SD_DEBUG_LOCK
+
+#define lock_reservations() \
+         do { Dmsg3(sd_dbglvl, "lock_reservations at %s:%d precnt=%d\n", \
+              __FILE__, __LINE__, \
+              reservations_lock_count); \
+              _lock_reservations(__FILE__, __LINE__); \
+              Dmsg0(sd_dbglvl, "lock_reservations: got lock\n"); \
+         } while (0)
+#define unlock_reservations() \
+         do { Dmsg3(sd_dbglvl, "unlock_reservations at %s:%d precnt=%d\n", \
+              __FILE__, __LINE__, \
+              reservations_lock_count); \
+                   _unlock_reservations(); } while (0)
+
+#define lock_volumes() \
+         do { Dmsg3(sd_dbglvl, "lock_volumes at %s:%d precnt=%d\n", \
+              __FILE__, __LINE__, \
+              vol_list_lock_count); \
+              _lock_volumes(__FILE__, __LINE__); \
+              Dmsg0(sd_dbglvl, "lock_volumes: got lock\n"); \
+         } while (0)
+
+#define unlock_volumes() \
+         do { Dmsg3(sd_dbglvl, "unlock_volumes at %s:%d precnt=%d\n", \
+              __FILE__, __LINE__, \
+              vol_list_lock_count); \
+                   _unlock_volumes(); } while (0)
+
+#else
+
+#define lock_reservations() _lock_reservations(__FILE__, __LINE__)
+#define unlock_reservations() _unlock_reservations()
+#define lock_volumes() _lock_volumes(__FILE__, __LINE__)
+#define unlock_volumes() _unlock_volumes()
+
+#endif
+
+#ifdef DEV_DEBUG_LOCK
+#define Lock() dbg_Lock(__FILE__, __LINE__)
+#define Unlock() dbg_Unlock(__FILE__, __LINE__)
+#define rLock(locked) dbg_rLock(__FILE__, __LINE__, locked)
+#define rUnlock() dbg_rUnlock(__FILE__, __LINE__)
+#endif
+
 #ifdef SD_DEBUG_LOCK
-#define r_dlock()   _r_dlock(__FILE__, __LINE__);    /* in lock.c */
-#define r_dunlock() _r_dunlock(__FILE__, __LINE__);  /* in lock.c */
-#define dlock()     _dlock(__FILE__, __LINE__);      /* in lock.c */
-#define dunlock()   _dunlock(__FILE__, __LINE__);    /* in lock.c */
+#define Lock_acquire() dbg_Lock_acquire(__FILE__, __LINE__)
+#define Unlock_acquire() dbg_Unlock_acquire(__FILE__, __LINE__)
+#define Lock_read_acquire() dbg_Lock_read_acquire(__FILE__, __LINE__)
+#define Unlock_read_acquire() dbg_Unlock_read_acquire(__FILE__, __LINE__)
+#define Lock_VolCatInfo() dbg_Lock_VolCatInfo(__FILE__, __LINE__)
+#define Unlock_VolCatInfo() dbg_Unlock_VolCatInfo(__FILE__, __LINE__)
 #endif
 
 #define block_device(d, s)          _block_device(__FILE__, __LINE__, (d), s)
diff --git a/src/stored/match_bsr.c b/src/stored/match_bsr.c
index 698ed29..28b08bb 100644
--- a/src/stored/match_bsr.c
+++ b/src/stored/match_bsr.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Match Bootstrap Records (used for restores) against
@@ -36,7 +24,7 @@
 /*
  * ***FIXME***
  * Also for efficiency, once a bsr is done, it really should be
- *   delinked from the bsr chain.  This will avoid the above 
+ *   delinked from the bsr chain.  This will avoid the above
  *   problem and make traversal of the bsr chain more efficient.
  *
  *   To be done ...
@@ -275,7 +263,7 @@ static bool get_smallest_voladdr(BSR_VOLADDR *va, uint64_t *ret)
  *   that has already been consumed, and this will cause the
  *   bsr to be used, thus we may seek back and re-read the
  *   same records, causing an error.  This deficiency must
- *   be fixed.  For the moment, it has been kludged in 
+ *   be fixed.  For the moment, it has been kludged in
  *   read_record.c to avoid seeking back if find_next_bsr
  *   returns a bsr pointing to a smaller address (file/block).
  *
@@ -317,7 +305,7 @@ static BSR *find_smallest_volfile(BSR *found_bsr, BSR *bsr)
          bsr_sfile = vf->sfile;
       }
    }
-    
+
    /* if the bsr file is less than the found_bsr file, return bsr */
    if (found_bsr_sfile > bsr_sfile) {
       return_bsr = bsr;
@@ -402,7 +390,7 @@ static int match_all(BSR *bsr, DEV_RECORD *rec, VOLUME_LABEL *volrec,
 
    if (!match_volfile(bsr, bsr->volfile, rec, 1)) {
       if (bsr->volfile) {
-         Dmsg3(dbglevel, "Fail on file=%u. bsr=%u,%u\n", 
+         Dmsg3(dbglevel, "Fail on file=%u. bsr=%u,%u\n",
                rec->File, bsr->volfile->sfile, bsr->volfile->efile);
       }
       goto no_match;
@@ -410,7 +398,7 @@ static int match_all(BSR *bsr, DEV_RECORD *rec, VOLUME_LABEL *volrec,
 
    if (!match_voladdr(bsr, bsr->voladdr, rec, 1)) {
       if (bsr->voladdr) {
-         Dmsg3(dbglevel, "Fail on Addr=%llu. bsr=%llu,%llu\n", 
+         Dmsg3(dbglevel, "Fail on Addr=%llu. bsr=%llu,%llu\n",
                get_record_address(rec), bsr->voladdr->saddr, bsr->voladdr->eaddr);
       }
       goto no_match;
@@ -435,11 +423,13 @@ static int match_all(BSR *bsr, DEV_RECORD *rec, VOLUME_LABEL *volrec,
          rec->FileIndex, bsr->FileIndex->findex, bsr->FileIndex->findex2);
       goto no_match;
    }
-   Dmsg3(dbglevel, "match on findex=%d. bsr=%d,%d\n",
-         rec->FileIndex, bsr->FileIndex->findex, bsr->FileIndex->findex2);
+   if (bsr->FileIndex) {
+      Dmsg3(dbglevel, "match on findex=%d. bsr=%d,%d\n",
+            rec->FileIndex, bsr->FileIndex->findex, bsr->FileIndex->findex2);
+   }
 
    if (!match_fileregex(bsr, rec, jcr)) {
-     Dmsg1(dbglevel, "Fail on fileregex='%s'\n", bsr->fileregex);
+     Dmsg1(dbglevel, "Fail on fileregex='%s'\n", NPRT(bsr->fileregex));
      goto no_match;
    }
 
@@ -712,7 +702,7 @@ static int match_sesstime(BSR *bsr, BSR_SESSTIME *sesstime, DEV_RECORD *rec, boo
    return 0;
 }
 
-/* 
+/*
  * Note, we cannot mark bsr done based on session id because we may
  *  have interleaved records, and there may be more of what we want
  *  later.
@@ -774,7 +764,7 @@ uint64_t get_bsr_start_addr(BSR *bsr, uint32_t *file, uint32_t *block)
          bsr_addr = bsr->voladdr->saddr;
          sfile = bsr_addr>>32;
          sblock = (uint32_t)bsr_addr;
-         
+
       } else if (bsr->volfile && bsr->volblock) {
          bsr_addr = (((uint64_t)bsr->volfile->sfile)<<32)|bsr->volblock->sblock;
          sfile = bsr->volfile->sfile;
diff --git a/src/stored/mount.c b/src/stored/mount.c
index a825123..fc92b14 100644
--- a/src/stored/mount.c
+++ b/src/stored/mount.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -75,32 +63,33 @@ bool DCR::mount_next_write_volume()
    int mode;
    DCR *dcr = this;
 
-   Dmsg2(150, "Enter mount_next_volume(release=%d) dev=%s\n", dev->must_unload(),
+   Enter(200);
+   Dmsg2(100, "Enter mount_next_volume(release=%d) dev=%s\n", dev->must_unload(),
       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, ...)
     */
 mount_next_vol:
-   Dmsg1(150, "mount_next_vol retry=%d\n", retry);
+   Dmsg1(100, "mount_next_vol retry=%d\n", retry);
    /* Ignore retry if this is poll request */
-   if (retry++ > 4) {
+   if (dev->is_nospace() || retry++ > 4) {
       /* Last ditch effort before giving up, force operator to respond */
       VolCatInfo.Slot = 0;
       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());
+      if (!dir_ask_sysop_to_mount_volume(dcr, SD_APPEND)) {
+         Jmsg(jcr, M_FATAL, 0, _("Too many errors trying to mount %s device %s.\n"),
+              dev->print_type(), dev->print_name());
          goto no_lock_bail_out;
       }
       P(mount_mutex);
-      Dmsg1(150, "Continue after dir_ask_sysop_to_mount. must_load=%d\n", dev->must_load());
+      Dmsg1(90, "Continue after dir_ask_sysop_to_mount. must_load=%d\n", dev->must_load());
    }
    if (job_canceled(jcr)) {
       Jmsg(jcr, M_FATAL, 0, _("Job %d canceled.\n"), jcr->JobId);
@@ -112,8 +101,8 @@ mount_next_vol:
       ask = true;                     /* ask operator to mount tape */
    }
    do_unload();
-   do_swapping(true /*is_writing*/);
-   do_load(true /*is_writing*/);
+   do_swapping(SD_APPEND);
+   do_load(SD_APPEND);
 
    if (!find_a_volume()) {
       goto bail_out;
@@ -122,9 +111,11 @@ mount_next_vol:
    if (job_canceled(jcr)) {
       goto bail_out;
    }
-   Dmsg3(150, "After find_next_append. Vol=%s Slot=%d Parts=%d\n",
+   Dmsg3(100, "After find_a_volume. Vol=%s Slot=%d Parts=%d\n",
          getVolCatName(), VolCatInfo.Slot, VolCatInfo.VolCatParts);
-   
+
+   dev->notify_newvol_in_attached_dcrs(getVolCatName());
+
    /*
     * Get next volume and ready it for append
     * This code ensures that the device is ready for
@@ -137,7 +128,7 @@ mount_next_vol:
     *
     */
    dcr->setVolCatInfo(false);   /* out of date when Vols unlocked */
-   if (autoload_device(dcr, true/*writing*/, NULL) > 0) {
+   if (autoload_device(dcr, SD_APPEND, NULL) > 0) {
       autochanger = true;
       ask = false;
    } else {
@@ -145,7 +136,7 @@ mount_next_vol:
       VolCatInfo.Slot = 0;
       ask = retry >= 2;
    }
-   Dmsg1(150, "autoload_dev returns %d\n", autochanger);
+   Dmsg1(100, "autoload_dev returns %d\n", autochanger);
    /*
     * If we autochanged to correct Volume or (we have not just
     *   released the Volume AND we can automount) we go ahead
@@ -161,12 +152,12 @@ mount_next_vol:
       Dmsg0(250, "(2)Ask=0\n");
       ask = false;
    }
-   Dmsg2(250, "Ask=%d autochanger=%d\n", ask, autochanger);
+   Dmsg2(100, "Ask=%d autochanger=%d\n", ask, autochanger);
 
    if (ask) {
       V(mount_mutex);
       dcr->setVolCatInfo(false);   /* out of date when Vols unlocked */
-      if (!dir_ask_sysop_to_mount_volume(dcr, ST_APPEND)) {
+      if (!dir_ask_sysop_to_mount_volume(dcr, SD_APPEND)) {
          Dmsg0(150, "Error return ask_sysop ...\n");
          goto no_lock_bail_out;
       }
@@ -175,7 +166,7 @@ mount_next_vol:
    if (job_canceled(jcr)) {
       goto bail_out;
    }
-   Dmsg3(150, "want vol=%s devvol=%s dev=%s\n", VolumeName, 
+   Dmsg3(100, "want vol=%s devvol=%s dev=%s\n", VolumeName,
       dev->VolHdr.VolumeName, dev->print_name());
 
    if (dev->poll && dev->has_cap(CAP_CLOSEONPOLL)) {
@@ -190,11 +181,13 @@ mount_next_vol:
       mode = OPEN_READ_WRITE;
    }
    /* Try autolabel if enabled */
+   Dmsg1(100, "Try open Vol=%s\n", getVolCatName());
    if (!dev->open(dcr, mode)) {
+      Dmsg1(100, "Try autolabel Vol=%s\n", getVolCatName());
       try_autolabel(false);      /* try to create a new volume label */
    }
    while (!dev->open(dcr, mode)) {
-      Dmsg1(150, "open_device failed: ERR=%s\n", dev->bstrerror());
+      Dmsg1(100, "open_device failed: ERR=%s\n", dev->bstrerror());
       if ((dev->is_file() && dev->is_removable()) || dev->is_dvd()) {
          bool ok = true;
          Dmsg0(150, "call scan_dir_for_vol\n");
@@ -215,12 +208,12 @@ mount_next_vol:
       if (try_autolabel(false) == try_read_vol) {
          break;                       /* created a new volume label */
       }
-      Jmsg3(jcr, M_WARNING, 0, _("Open device %s Volume \"%s\" failed: ERR=%s\n"),
-            dev->print_name(), dcr->VolumeName, dev->bstrerror());
-      Dmsg0(50, "set_unload\n");
+      Jmsg4(jcr, M_WARNING, 0, _("Open of %s device %s Volume \"%s\" failed: ERR=%s\n"),
+            dev->print_type(), dev->print_name(), dcr->VolumeName, dev->bstrerror());
+      Dmsg0(100, "set_unload\n");
       dev->set_unload();              /* force ask sysop */
       ask = true;
-      Dmsg0(150, "goto mount_next_vol\n");
+      Dmsg0(100, "goto mount_next_vol\n");
       goto mount_next_vol;
    }
 
@@ -232,7 +225,7 @@ read_volume:
    case check_next_vol:
       Dmsg0(50, "set_unload\n");
       dev->set_unload();                 /* want a different Volume */
-      Dmsg0(150, "goto mount_next_vol\n");
+      Dmsg0(100, "goto mount_next_vol\n");
       goto mount_next_vol;
    case check_read_vol:
       goto read_volume;
@@ -242,10 +235,10 @@ read_volume:
       break;
    }
    /*
-    * Check that volcatinfo is good   
+    * Check that volcatinfo is good
     */
    if (!dev->haveVolCatInfo()) {
-      Dmsg0(210, "Do not have volcatinfo\n");
+      Dmsg0(100, "Do not have volcatinfo\n");
       if (!find_a_volume()) {
          goto mount_next_vol;
       }
@@ -267,6 +260,7 @@ read_volume:
     */
    recycle = strcmp(dev->VolCatInfo.VolCatStatus, "Recycle") == 0;
    if (dev->VolHdr.LabelType == PRE_LABEL || recycle) {
+      dcr->WroteVol = false;
       if (!dcr->rewrite_volume_label(recycle)) {
          mark_volume_in_error();
          goto mount_next_vol;
@@ -283,13 +277,14 @@ read_volume:
          VolumeName);
 
       if (!dev->eod(dcr)) {
-         Dmsg2(050, "Unable to position to end of data on device %s: ERR=%s\n", 
-            dev->print_name(), dev->bstrerror());
-         Jmsg(jcr, M_ERROR, 0, _("Unable to position to end of data on device %s: ERR=%s\n"),
-            dev->print_name(), dev->bstrerror());
+         Dmsg3(050, "Unable to position to end of data on %s device %s: ERR=%s\n",
+            dev->print_type(), dev->print_name(), dev->bstrerror());
+         Jmsg(jcr, M_ERROR, 0, _("Unable to position to end of data on %s device %s: ERR=%s\n"),
+            dev->print_type(), dev->print_name(), dev->bstrerror());
          mark_volume_in_error();
          goto mount_next_vol;
       }
+
       if (!is_eod_valid()) {
          Dmsg0(100, "goto mount_next_vol\n");
          goto mount_next_vol;
@@ -300,7 +295,7 @@ read_volume:
       if (!dir_update_volume_info(dcr, false, false)) {
          goto bail_out;
       }
-      
+
       /* Return an empty block */
       empty_block(block);             /* we used it for reading so set for write */
    }
@@ -315,6 +310,7 @@ bail_out:
    V(mount_mutex);
 
 no_lock_bail_out:
+   Leave(200);
    return false;
 }
 
@@ -328,6 +324,7 @@ no_lock_bail_out:
 bool DCR::find_a_volume()
 {
    DCR *dcr = this;
+   bool ok;
 
    if (!is_suitable_volume_mounted()) {
       bool have_vol = false;
@@ -347,17 +344,26 @@ bool DCR::find_a_volume()
             if (job_canceled(jcr)) {
                return false;
             }
+            /*
+             * Unlock the mount mutex while waiting or
+             *   the Director for a new volume
+             */
             V(mount_mutex);
-            if (!dir_ask_sysop_to_create_appendable_volume(dcr)) {
-               P(mount_mutex);
+            if (dev->must_wait()) {
+               int retries = 5;
+               Dmsg0(40, "No appendable volume. Calling wait_for_device\n");
+               wait_for_device(dcr, retries);
+               ok = true;
+            } else {
+               ok = dir_ask_sysop_to_create_appendable_volume(dcr);
+            }
+            P(mount_mutex);
+            if (!ok || job_canceled(jcr)) {
                return false;
-             }
-             P(mount_mutex);
-             if (job_canceled(jcr)) {
-                return false;
-             }
-             Dmsg0(150, "Again dir_find_next_append...\n");
+            }
+            Dmsg0(150, "Again dir_find_next_append...\n");
          }
+         dev->clear_wait();
       }
    }
    if (dcr->haveVolCatInfo()) {
@@ -369,13 +375,16 @@ bool DCR::find_a_volume()
 int DCR::check_volume_label(bool &ask, bool &autochanger)
 {
    int vol_label_status;
+
+   Enter(200);
+
    /*
     * If we are writing to a stream device, ASSUME the volume label
     *  is correct.
     */
    if (dev->has_cap(CAP_STREAM)) {
       vol_label_status = VOL_OK;
-      create_volume_label(dev, VolumeName, "Default", false /* not DVD */);
+      create_volume_header(dev, VolumeName, "Default", false /* not DVD */);
       dev->VolHdr.LabelType = PRE_LABEL;
    } else {
       vol_label_status = read_dev_volume_label(this);
@@ -408,8 +417,8 @@ int DCR::check_volume_label(bool &ask, bool &autochanger)
 
       /* If not removable, Volume is broken */
       if (!dev->is_removable()) {
-         Jmsg(jcr, M_WARNING, 0, _("Volume \"%s\" not on device %s.\n"),
-            VolumeName, dev->print_name());
+         Jmsg(jcr, M_WARNING, 0, _("Volume \"%s\" not on %s device %s.\n"),
+            VolumeName, dev->print_type(), dev->print_name());
          mark_volume_in_error();
          goto check_next_volume;
       }
@@ -434,7 +443,7 @@ int DCR::check_volume_label(bool &ask, bool &autochanger)
          if (autochanger && !dir_get_volume_info(this, GET_VOL_INFO_FOR_READ)) {
             /*
              * If we get here, we know we cannot write on the Volume,
-             *  and we know that we cannot read it either, so it 
+             *  and we know that we cannot read it either, so it
              *  is not in the autochanger.
              */
             mark_volume_not_inchanger();
@@ -460,8 +469,12 @@ int DCR::check_volume_label(bool &ask, bool &autochanger)
       dev->VolCatInfo = VolCatInfo;   /* structure assignment */
       Dmsg1(100, "Call reserve_volume=%s\n", dev->VolHdr.VolumeName);
       if (reserve_volume(this, dev->VolHdr.VolumeName) == NULL) {
-         Jmsg2(jcr, M_WARNING, 0, _("Could not reserve volume %s on %s\n"),
-            dev->VolHdr.VolumeName, dev->print_name());
+         if (!jcr->errmsg[0]) {
+            Jmsg3(jcr, M_WARNING, 0, _("Could not reserve volume %s on %s device %s\n"),
+               dev->VolHdr.VolumeName, dev->print_type(), dev->print_name());
+         } else {
+            Jmsg(jcr, M_WARNING, 0, "%s", jcr->errmsg);
+         }
          ask = true;
          dev->setVolCatInfo(false);
          setVolCatInfo(false);
@@ -506,17 +519,21 @@ int DCR::check_volume_label(bool &ask, bool &autochanger)
       }
       goto check_next_volume;
    }
+   Leave(200);
    return check_ok;
 
 check_next_volume:
    dev->setVolCatInfo(false);
    setVolCatInfo(false);
+   Leave(200);
    return check_next_vol;
 
 check_bail_out:
+   Leave(200);
    return check_error;
 
 check_read_volume:
+   Leave(200);
    return check_read_vol;
 
 }
@@ -524,12 +541,19 @@ check_read_volume:
 
 bool DCR::is_suitable_volume_mounted()
 {
+   bool ok;
+
    /* Volume mounted? */
    if (dev->VolHdr.VolumeName[0] == 0 || dev->swap_dev || dev->must_unload()) {
       return false;                      /* no */
    }
    bstrncpy(VolumeName, dev->VolHdr.VolumeName, sizeof(VolumeName));
-   return dir_get_volume_info(this, GET_VOL_INFO_FOR_WRITE);
+   ok = dir_get_volume_info(this, GET_VOL_INFO_FOR_WRITE);
+   if (!ok) {
+      Dmsg1(40, "dir_get_volume_info failed: %s\n", jcr->errmsg);
+      dev->set_wait();
+   }
+   return ok;
 }
 
 bool DCR::do_unload()
@@ -544,7 +568,7 @@ bool DCR::do_unload()
 bool DCR::do_load(bool is_writing)
 {
    if (dev->must_load()) {
-      Dmsg1(100, "Must load %s\n", dev->print_name());
+      Dmsg1(100, "Must load dev=%s\n", dev->print_name());
       if (autoload_device(this, is_writing, NULL) > 0) {
          dev->clear_load();
          return true;
@@ -586,7 +610,11 @@ void DCR::do_swapping(bool is_writing)
          dev->print_name(), dev->swap_dev->print_name());
       dev->swap_dev = NULL;
    } else {
-      Dmsg0(100, "No swap_dev set\n");
+      if (dev->vol) {
+      Dmsg1(100, "No swap_dev set. dev->vol=%p\n", dev->vol);
+      } else {
+      Dmsg1(100, "No swap_dev set. dev->vol=%p\n", dev->vol);
+      }
    }
 }
 
@@ -601,14 +629,14 @@ bool DCR::is_eod_valid()
       char ed1[50], ed2[50];
       if (dev->VolCatInfo.VolCatBytes == dev->part_start + dev->part_size) {
          Jmsg(jcr, M_INFO, 0, _("Ready to append to end of Volume \"%s\""
-              " part=%d size=%s\n"), VolumeName, 
-              dev->part, edit_uint64(dev->VolCatInfo.VolCatBytes,ed1));
+              " part=%d size=%s\n"), VolumeName,
+              dev->part, edit_uint64_with_commas(dev->VolCatInfo.VolCatBytes,ed1));
       } else {
          Jmsg(jcr, M_ERROR, 0, _("Bacula cannot write on DVD Volume \"%s\" because: "
               "The sizes do not match! Volume=%s Catalog=%s\n"),
               VolumeName,
-              edit_uint64(dev->part_start + dev->part_size, ed1),
-              edit_uint64(dev->VolCatInfo.VolCatBytes, ed2));
+              edit_uint64_with_commas(dev->part_start + dev->part_size, ed1),
+              edit_uint64_with_commas(dev->VolCatInfo.VolCatBytes, ed2));
          mark_volume_in_error();
          return false;
       }
@@ -639,21 +667,28 @@ bool DCR::is_eod_valid()
          mark_volume_in_error();
          return false;
       }
+   /*
+    * File device.
+    */
    } else if (dev->is_file()) {
       char ed1[50], ed2[50];
       boffset_t pos;
+
       pos = dev->lseek(this, (boffset_t)0, SEEK_END);
-      if (dev->VolCatInfo.VolCatBytes == (uint64_t)pos) {
-         Jmsg(jcr, M_INFO, 0, _("Ready to append to end of Volume \"%s\""
-              " size=%s\n"), VolumeName, 
-              edit_uint64(dev->VolCatInfo.VolCatBytes, ed1));
-      } else if ((uint64_t)pos > dev->VolCatInfo.VolCatBytes) {
-         Jmsg(jcr, M_WARNING, 0, _("For Volume \"%s\":\n"
-              "The sizes do not match! Volume=%s Catalog=%s\n"
-              "Correcting Catalog\n"),
-              VolumeName, edit_uint64(pos, ed1), 
-              edit_uint64(dev->VolCatInfo.VolCatBytes, ed2));
-         dev->VolCatInfo.VolCatBytes = (uint64_t)pos;
+      if (dev->VolCatInfo.VolCatAmetaBytes == (uint64_t)pos) {
+            Jmsg(jcr, M_INFO, 0, _("Ready to append to end of Volume \"%s\""
+                 " size=%s\n"), VolumeName,
+                 edit_uint64_with_commas(dev->VolCatInfo.VolCatAmetaBytes, ed1));
+      } else if ((uint64_t)pos >= dev->VolCatInfo.VolCatAmetaBytes) {
+         if ((uint64_t)pos != dev->VolCatInfo.VolCatAmetaBytes) {
+            Jmsg(jcr, M_WARNING, 0, _("For Volume \"%s\":\n"
+               "   The sizes do not match! Volume=%s Catalog=%s\n"
+               "   Correcting Catalog\n"),
+               VolumeName, edit_uint64_with_commas(pos, ed1),
+               edit_uint64_with_commas(dev->VolCatInfo.VolCatAmetaBytes, ed2));
+         }
+         dev->VolCatInfo.VolCatAmetaBytes = pos;
+         dev->VolCatInfo.VolCatBytes = pos;
          dev->VolCatInfo.VolCatFiles = (uint32_t)(pos >> 32);
          if (!dir_update_volume_info(this, false, true)) {
             Jmsg(jcr, M_WARNING, 0, _("Error updating Catalog\n"));
@@ -664,10 +699,10 @@ bool DCR::is_eod_valid()
          Mmsg(jcr->errmsg, _("Bacula cannot write on disk Volume \"%s\" because: "
               "The sizes do not match! Volume=%s Catalog=%s\n"),
               VolumeName,
-              edit_uint64(pos, ed1),
-              edit_uint64(dev->VolCatInfo.VolCatBytes, ed2));
+              edit_uint64_with_commas(pos, ed1),
+              edit_uint64_with_commas(dev->VolCatInfo.VolCatBytes, ed2));
          Jmsg(jcr, M_ERROR, 0, jcr->errmsg);
-         Dmsg0(050, jcr->errmsg);
+         Dmsg0(100, jcr->errmsg);
          mark_volume_in_error();
          return false;
       }
@@ -698,6 +733,7 @@ int DCR::try_autolabel(bool opened)
    DCR *dcr = this;
 
    if (dev->poll && !dev->is_tape()) {
+      Dmsg0(100, "No autolabel because polling.\n");
       return try_default;       /* if polling, don't try to create new labels */
    }
    /* For a tape require it to be opened and read before labeling */
@@ -707,13 +743,13 @@ int DCR::try_autolabel(bool opened)
    if (dev->has_cap(CAP_LABEL) && (VolCatInfo.VolCatBytes == 0 ||
          (!dev->is_tape() && strcmp(VolCatInfo.VolCatStatus,
                                 "Recycle") == 0))) {
-      Dmsg0(150, "Create volume label\n");
+      Dmsg1(40, "Create new volume label vol=%s\n", VolumeName);
       /* Create a new Volume label and write it to the device */
       if (!write_new_volume_label_to_dev(dcr, VolumeName,
              pool_name, false, /* no relabel */ false /* defer DVD label */)) {
-         Dmsg2(150, "write_vol_label failed. vol=%s, pool=%s\n",
+         Dmsg2(100, "write_vol_label failed. vol=%s, pool=%s\n",
            VolumeName, pool_name);
-         if (opened) { 
+         if (opened) {
             mark_volume_in_error();
          }
          return try_next_vol;
@@ -722,20 +758,31 @@ int DCR::try_autolabel(bool opened)
       /* Copy Director's info into the device info */
       dev->VolCatInfo = VolCatInfo;    /* structure assignment */
       if (!dir_update_volume_info(dcr, true, true)) {  /* indicate tape labeled */
+         Dmsg3(100, "Update_vol_info failed no autolabel Volume \"%s\" on %s device %s.\n",
+            VolumeName, dev->print_type(), dev->print_name());
          return try_error;
       }
-      Jmsg(dcr->jcr, M_INFO, 0, _("Labeled new Volume \"%s\" on device %s.\n"),
-         VolumeName, dev->print_name());
+      Jmsg(dcr->jcr, M_INFO, 0, _("Labeled new Volume \"%s\" on %s device %s.\n"),
+         VolumeName, dev->print_type(), dev->print_name());
+      Dmsg3(100, "Labeled new Volume \"%s\" on %s device %s.\n",
+         VolumeName, dev->print_type(), dev->print_name());
       return try_read_vol;   /* read label we just wrote */
+   } else {
+      Dmsg4(40, "=== Cannot autolabel: cap_label=%d VolCatBytes=%lld is_tape=%d VolCatStatus=%s\n",
+         dev->has_cap(CAP_LABEL), VolCatInfo.VolCatBytes, dev->is_tape(),
+         VolCatInfo.VolCatStatus);
    }
    if (!dev->has_cap(CAP_LABEL) && VolCatInfo.VolCatBytes == 0) {
-      Jmsg(jcr, M_WARNING, 0, _("Device %s not configured to autolabel Volumes.\n"), 
-         dev->print_name());
+      Jmsg(jcr, M_WARNING, 0, _("%s device %s not configured to autolabel Volumes.\n"),
+         dev->print_type(), dev->print_name());
    }
    /* If not removable, Volume is broken */
    if (!dev->is_removable()) {
-      Jmsg(jcr, M_WARNING, 0, _("Volume \"%s\" not on device %s.\n"),
-         VolumeName, dev->print_name());
+      Jmsg(jcr, M_WARNING, 0, _("Volume \"%s\" not on %s device %s.\n"),
+         VolumeName, dev->print_type(), dev->print_name());
+      Dmsg3(100, "Volume \"%s\" not on %s device %s.\n",
+         VolumeName, dev->print_type(), dev->print_name());
+
       mark_volume_in_error();
       return try_next_vol;
    }
@@ -751,7 +798,7 @@ void DCR::mark_volume_in_error()
    Jmsg(jcr, M_INFO, 0, _("Marking Volume \"%s\" in Error in Catalog.\n"),
         VolumeName);
    dev->VolCatInfo = VolCatInfo;       /* structure assignment */
-   bstrncpy(dev->VolCatInfo.VolCatStatus, "Error", sizeof(dev->VolCatInfo.VolCatStatus));
+   dev->setVolCatStatus("Error");
    Dmsg0(150, "dir_update_vol_info. Set Error.\n");
    dir_update_volume_info(this, false, false);
    volume_unused(this);
@@ -787,8 +834,19 @@ void DCR::release_volume()
       Jmsg0(jcr, M_ERROR, 0, _("Hey!!!!! WroteVol non-zero !!!!!\n"));
       Pmsg0(190, "Hey!!!!! WroteVol non-zero !!!!!\n");
    }
+
+   if (dev->is_open() && (!dev->is_tape() || !dev->has_cap(CAP_ALWAYSOPEN))) {
+      generate_plugin_event(jcr, bsdEventDeviceClose, this);
+      dev->close();
+   }
+
+   /* If we have not closed the device, then at least rewind the tape */
+   if (dev->is_open()) {
+      dev->offline_or_rewind();
+   }
+
    /*
-    * First erase all memory of the current volume
+    * Erase all memory of the current volume
     */
    free_volume(dev);
    dev->block_num = dev->file = 0;
@@ -802,26 +860,18 @@ void DCR::release_volume()
    dev->label_type = B_BACULA_LABEL;
    VolumeName[0] = 0;
 
-   if (dev->is_open() && (!dev->is_tape() || !dev->has_cap(CAP_ALWAYSOPEN))) {
-      dev->close();
-   }
-
-   /* If we have not closed the device, then at least rewind the tape */
-   if (dev->is_open()) {
-      dev->offline_or_rewind();
-   }
    Dmsg0(190, "release_volume\n");
 }
 
 /*
- *      Insanity check 
+ *      Insanity check
  *
  * Check to see if the tape position as defined by the OS is
- *  the same as our concept.  If it is not, 
+ *  the same as our concept.  If it is not,
  *  it means the user has probably manually rewound the tape.
  * Note, we check only if num_writers == 0, but this code will
  *  also work fine for any number of writers. If num_writers > 0,
- *  we probably should cancel all jobs using this device, or 
+ *  we probably should cancel all jobs using this device, or
  *  perhaps even abort the SD, or at a minimum, mark the tape
  *  in error.  Another strategy with num_writers == 0, would be
  *  to rewind the tape and do a new eod() request.
@@ -831,10 +881,10 @@ bool DCR::is_tape_position_ok()
    if (dev->is_tape() && dev->num_writers == 0) {
       int32_t file = dev->get_os_tape_file();
       if (file >= 0 && file != (int32_t)dev->get_file()) {
-         Jmsg(jcr, M_ERROR, 0, _("Invalid tape position on volume \"%s\"" 
-              " on device %s. Expected %d, got %d\n"), 
+         Jmsg(jcr, M_ERROR, 0, _("Invalid tape position on volume \"%s\""
+              " on device %s. Expected %d, got %d\n"),
               dev->VolHdr.VolumeName, dev->print_name(), dev->get_file(), file);
-         /* 
+         /*
           * If the current file is greater than zero, it means we probably
           *  have some bad count of EOF marks, so mark tape in error.  Otherwise
           *  the operator might have moved the tape, so we just release it
@@ -869,11 +919,11 @@ bool mount_next_read_volume(DCR *dcr)
       dev->Lock();
       dev->close();
       dev->set_read();
-      dcr->set_reserved();
+      dcr->set_reserved_for_read();
       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);
+         Jmsg3(jcr, M_FATAL, 0, _("Cannot open %s Dev=%s, Vol=%s for reading.\n"),
+            dev->print_type(), dev->print_name(), dcr->VolumeName);
          return false;
       }
       return true;                    /* next volume mounted */
diff --git a/src/stored/os.c b/src/stored/os.c
new file mode 100644
index 0000000..c726f1d
--- /dev/null
+++ b/src/stored/os.c
@@ -0,0 +1,415 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2000-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ *
+ *   os.c  -- Operating System dependent dev.c routines
+ *
+ *     written by, Kern Sibbald, MM
+ *     separated from dev.c February 2014
+ *
+ *     Note, this is the device dependent code, and may have
+ *           to be modified for each system.
+ */
+
+
+#include "bacula.h"
+#include "stored.h"
+
+/* Returns file position on tape or -1 */
+int32_t DEVICE::get_os_tape_file()
+{
+   struct mtget mt_stat;
+
+   if (has_cap(CAP_MTIOCGET) &&
+       d_ioctl(m_fd, MTIOCGET, (char *)&mt_stat) == 0) {
+      return mt_stat.mt_fileno;
+   }
+   return -1;
+}
+
+
+void set_os_device_parameters(DCR *dcr)
+{
+   DEVICE *dev = dcr->dev;
+
+   if (strcmp(dev->dev_name, "/dev/null") == 0) {
+      return;                            /* no use trying to set /dev/null */
+   }
+
+#if defined(HAVE_LINUX_OS) || defined(HAVE_WIN32)
+   struct mtop mt_com;
+
+   Dmsg0(100, "In set_os_device_parameters\n");
+#if defined(MTSETBLK)
+   if (dev->min_block_size == dev->max_block_size &&
+       dev->min_block_size == 0) {    /* variable block mode */
+      mt_com.mt_op = MTSETBLK;
+      mt_com.mt_count = 0;
+      Dmsg0(100, "Set block size to zero\n");
+      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
+         dev->clrerror(MTSETBLK);
+      }
+   }
+#endif
+#if defined(MTSETDRVBUFFER)
+   if (getuid() == 0) {          /* Only root can do this */
+      mt_com.mt_op = MTSETDRVBUFFER;
+      mt_com.mt_count = MT_ST_CLEARBOOLEANS;
+      if (!dev->has_cap(CAP_TWOEOF)) {
+         mt_com.mt_count |= MT_ST_TWO_FM;
+      }
+      if (dev->has_cap(CAP_EOM)) {
+         mt_com.mt_count |= MT_ST_FAST_MTEOM;
+      }
+      Dmsg0(100, "MTSETDRVBUFFER\n");
+      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
+         dev->clrerror(MTSETDRVBUFFER);
+      }
+   }
+#endif
+   return;
+#endif
+
+#ifdef HAVE_NETBSD_OS
+   struct mtop mt_com;
+   if (dev->min_block_size == dev->max_block_size &&
+       dev->min_block_size == 0) {    /* variable block mode */
+      mt_com.mt_op = MTSETBSIZ;
+      mt_com.mt_count = 0;
+      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
+         dev->clrerror(MTSETBSIZ);
+      }
+      /* Get notified at logical end of tape */
+      mt_com.mt_op = MTEWARN;
+      mt_com.mt_count = 1;
+      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
+         dev->clrerror(MTEWARN);
+      }
+   }
+   return;
+#endif
+
+#if HAVE_FREEBSD_OS || HAVE_OPENBSD_OS
+   struct mtop mt_com;
+   if (dev->min_block_size == dev->max_block_size &&
+       dev->min_block_size == 0) {    /* variable block mode */
+      mt_com.mt_op = MTSETBSIZ;
+      mt_com.mt_count = 0;
+      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
+         dev->clrerror(MTSETBSIZ);
+      }
+   }
+#if defined(MTIOCSETEOTMODEL)
+   uint32_t neof;
+   if (dev->has_cap(CAP_TWOEOF)) {
+      neof = 2;
+   } else {
+      neof = 1;
+   }
+   if (dev->d_ioctl(dev->fd(), MTIOCSETEOTMODEL, (caddr_t)&neof) < 0) {
+      berrno be;
+      dev->dev_errno = errno;         /* save errno */
+      Mmsg2(dev->errmsg, _("Unable to set eotmodel on device %s: ERR=%s\n"),
+            dev->print_name(), be.bstrerror(dev->dev_errno));
+      Jmsg(dcr->jcr, M_FATAL, 0, dev->errmsg);
+   }
+#endif
+   return;
+#endif
+
+#ifdef HAVE_SUN_OS
+   struct mtop mt_com;
+   if (dev->min_block_size == dev->max_block_size &&
+       dev->min_block_size == 0) {    /* variable block mode */
+      mt_com.mt_op = MTSRSZ;
+      mt_com.mt_count = 0;
+      if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
+         dev->clrerror(MTSRSZ);
+      }
+   }
+   return;
+#endif
+}
+
+bool dev_get_os_pos(DEVICE *dev, struct mtget *mt_stat)
+{
+   Dmsg0(100, "dev_get_os_pos\n");
+   return dev->has_cap(CAP_MTIOCGET) &&
+          dev->d_ioctl(dev->fd(), MTIOCGET, (char *)mt_stat) == 0 &&
+          mt_stat->mt_fileno >= 0;
+}
+
+/*
+ * Return the status of the device.  This was meant
+ * to be a generic routine. Unfortunately, it doesn't
+ * seem possible (at least I do not know how to do it
+ * currently), which means that for the moment, this
+ * routine has very little value.
+ *
+ *   Returns: status
+ */
+uint32_t status_dev(DEVICE *dev)
+{
+   struct mtget mt_stat;
+   uint32_t stat = 0;
+
+   if (dev->state & (ST_EOT | ST_WEOT)) {
+      stat |= BMT_EOD;
+      Pmsg0(-20, " EOD");
+   }
+   if (dev->state & ST_EOF) {
+      stat |= BMT_EOF;
+      Pmsg0(-20, " EOF");
+   }
+   if (dev->is_tape()) {
+      stat |= BMT_TAPE;
+      Pmsg0(-20,_(" Bacula status:"));
+      Pmsg2(-20,_(" file=%d block=%d\n"), dev->file, dev->block_num);
+      if (dev->d_ioctl(dev->fd(), MTIOCGET, (char *)&mt_stat) < 0) {
+         berrno be;
+         dev->dev_errno = errno;
+         Mmsg2(dev->errmsg, _("ioctl MTIOCGET error on %s. ERR=%s.\n"),
+            dev->print_name(), be.bstrerror());
+         return 0;
+      }
+      Pmsg0(-20, _(" Device status:"));
+
+#if defined(HAVE_LINUX_OS)
+      if (GMT_EOF(mt_stat.mt_gstat)) {
+         stat |= BMT_EOF;
+         Pmsg0(-20, " EOF");
+      }
+      if (GMT_BOT(mt_stat.mt_gstat)) {
+         stat |= BMT_BOT;
+         Pmsg0(-20, " BOT");
+      }
+      if (GMT_EOT(mt_stat.mt_gstat)) {
+         stat |= BMT_EOT;
+         Pmsg0(-20, " EOT");
+      }
+      if (GMT_SM(mt_stat.mt_gstat)) {
+         stat |= BMT_SM;
+         Pmsg0(-20, " SM");
+      }
+      if (GMT_EOD(mt_stat.mt_gstat)) {
+         stat |= BMT_EOD;
+         Pmsg0(-20, " EOD");
+      }
+      if (GMT_WR_PROT(mt_stat.mt_gstat)) {
+         stat |= BMT_WR_PROT;
+         Pmsg0(-20, " WR_PROT");
+      }
+      if (GMT_ONLINE(mt_stat.mt_gstat)) {
+         stat |= BMT_ONLINE;
+         Pmsg0(-20, " ONLINE");
+      }
+      if (GMT_DR_OPEN(mt_stat.mt_gstat)) {
+         stat |= BMT_DR_OPEN;
+         Pmsg0(-20, " DR_OPEN");
+      }
+      if (GMT_IM_REP_EN(mt_stat.mt_gstat)) {
+         stat |= BMT_IM_REP_EN;
+         Pmsg0(-20, " IM_REP_EN");
+      }
+#elif defined(HAVE_WIN32)
+      if (GMT_EOF(mt_stat.mt_gstat)) {
+         stat |= BMT_EOF;
+         Pmsg0(-20, " EOF");
+      }
+      if (GMT_BOT(mt_stat.mt_gstat)) {
+         stat |= BMT_BOT;
+         Pmsg0(-20, " BOT");
+      }
+      if (GMT_EOT(mt_stat.mt_gstat)) {
+         stat |= BMT_EOT;
+         Pmsg0(-20, " EOT");
+      }
+      if (GMT_EOD(mt_stat.mt_gstat)) {
+         stat |= BMT_EOD;
+         Pmsg0(-20, " EOD");
+      }
+      if (GMT_WR_PROT(mt_stat.mt_gstat)) {
+         stat |= BMT_WR_PROT;
+         Pmsg0(-20, " WR_PROT");
+      }
+      if (GMT_ONLINE(mt_stat.mt_gstat)) {
+         stat |= BMT_ONLINE;
+         Pmsg0(-20, " ONLINE");
+      }
+      if (GMT_DR_OPEN(mt_stat.mt_gstat)) {
+         stat |= BMT_DR_OPEN;
+         Pmsg0(-20, " DR_OPEN");
+      }
+      if (GMT_IM_REP_EN(mt_stat.mt_gstat)) {
+         stat |= BMT_IM_REP_EN;
+         Pmsg0(-20, " IM_REP_EN");
+      }
+
+#endif /* !SunOS && !OSF */
+      if (dev->has_cap(CAP_MTIOCGET)) {
+         Pmsg2(-20, _(" file=%d block=%d\n"), mt_stat.mt_fileno, mt_stat.mt_blkno);
+      } else {
+         Pmsg2(-20, _(" file=%d block=%d\n"), -1, -1);
+      }
+   } else {
+      stat |= BMT_ONLINE | BMT_BOT;
+   }
+   return stat;
+}
+
+/*
+ * If implemented in system, clear the tape
+ * error status.
+ */
+void DEVICE::clrerror(int func)
+{
+   const char *msg = NULL;
+   char buf[100];
+
+   dev_errno = errno;         /* save errno */
+   if (errno == EIO) {
+      VolCatInfo.VolCatErrors++;
+   }
+
+   if (!is_tape()) {
+      return;
+   }
+
+   if (errno == ENOTTY || errno == ENOSYS) { /* Function not implemented */
+      switch (func) {
+      case -1:
+         break;                  /* ignore message printed later */
+      case MTWEOF:
+         msg = "WTWEOF";
+         clear_cap(CAP_EOF);     /* turn off feature */
+         break;
+#ifdef MTEOM
+      case MTEOM:
+         msg = "WTEOM";
+         clear_cap(CAP_EOM);     /* turn off feature */
+         break;
+#endif
+      case MTFSF:
+         msg = "MTFSF";
+         clear_cap(CAP_FSF);     /* turn off feature */
+         break;
+      case MTBSF:
+         msg = "MTBSF";
+         clear_cap(CAP_BSF);     /* turn off feature */
+         break;
+      case MTFSR:
+         msg = "MTFSR";
+         clear_cap(CAP_FSR);     /* turn off feature */
+         break;
+      case MTBSR:
+         msg = "MTBSR";
+         clear_cap(CAP_BSR);     /* turn off feature */
+         break;
+      case MTREW:
+         msg = "MTREW";
+         break;
+#ifdef MTSETBLK
+      case MTSETBLK:
+         msg = "MTSETBLK";
+         break;
+#endif
+#ifdef MTSETDRVBUFFER
+      case MTSETDRVBUFFER:
+         msg = "MTSETDRVBUFFER";
+         break;
+#endif
+#ifdef MTRESET
+      case MTRESET:
+         msg = "MTRESET";
+         break;
+#endif
+
+#ifdef MTSETBSIZ
+      case MTSETBSIZ:
+         msg = "MTSETBSIZ";
+         break;
+#endif
+#ifdef MTSRSZ
+      case MTSRSZ:
+         msg = "MTSRSZ";
+         break;
+#endif
+#ifdef MTLOAD
+      case MTLOAD:
+         msg = "MTLOAD";
+         break;
+#endif
+#ifdef MTUNLOCK
+      case MTUNLOCK:
+         msg = "MTUNLOCK";
+         break;
+#endif
+      case MTOFFL:
+         msg = "MTOFFL";
+         break;
+      default:
+         bsnprintf(buf, sizeof(buf), _("unknown func code %d"), func);
+         msg = buf;
+         break;
+      }
+      if (msg != NULL) {
+         dev_errno = ENOSYS;
+         Mmsg1(errmsg, _("I/O function \"%s\" not supported on this device.\n"), msg);
+         Emsg0(M_ERROR, 0, errmsg);
+      }
+   }
+
+   /*
+    * Now we try different methods of clearing the error
+    *  status on the drive so that it is not locked for
+    *  further operations.
+    */
+
+   /* On some systems such as NetBSD, this clears all errors */
+   get_os_tape_file();
+
+/* Found on Solaris */
+#ifdef MTIOCLRERR
+{
+   d_ioctl(m_fd, MTIOCLRERR);
+   Dmsg0(200, "Did MTIOCLRERR\n");
+}
+#endif
+
+/* Typically on FreeBSD */
+#ifdef MTIOCERRSTAT
+{
+  berrno be;
+   /* Read and clear SCSI error status */
+   union mterrstat mt_errstat;
+   Dmsg2(200, "Doing MTIOCERRSTAT errno=%d ERR=%s\n", dev_errno,
+      be.bstrerror(dev_errno));
+   d_ioctl(m_fd, MTIOCERRSTAT, (char *)&mt_errstat);
+}
+#endif
+
+/* Clear Subsystem Exception TRU64 */
+#ifdef MTCSE
+{
+   struct mtop mt_com;
+   mt_com.mt_op = MTCSE;
+   mt_com.mt_count = 1;
+   /* Clear any error condition on the tape */
+   d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
+   Dmsg0(200, "Did MTCSE\n");
+}
+#endif
+}
diff --git a/src/stored/parse_bsr.c b/src/stored/parse_bsr.c
index f9fb517..1cd2979 100644
--- a/src/stored/parse_bsr.c
+++ b/src/stored/parse_bsr.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Parse a Bootstrap Records (used for restores)
@@ -36,29 +24,32 @@
 #include "bacula.h"
 #include "stored.h"
 
+static void s_err(const char *file, int line, LEX *lc, const char *msg, ...);
+static bool add_restore_volume(JCR *jcr, VOL_LIST *vol);
+
 typedef BSR * (ITEM_HANDLER)(LEX *lc, BSR *bsr);
 
-static BSR *store_vol(LEX *lc, BSR *bsr);
-static BSR *store_mediatype(LEX *lc, BSR *bsr);
-static BSR *store_device(LEX *lc, BSR *bsr);
 static BSR *store_client(LEX *lc, BSR *bsr);
-static BSR *store_job(LEX *lc, BSR *bsr);
-static BSR *store_jobid(LEX *lc, BSR *bsr);
 static BSR *store_count(LEX *lc, BSR *bsr);
-static BSR *store_jobtype(LEX *lc, BSR *bsr);
-static BSR *store_joblevel(LEX *lc, BSR *bsr);
+static BSR *store_device(LEX *lc, BSR *bsr);
+static BSR *store_exclude(LEX *lc, BSR *bsr);
+static BSR *store_fileregex(LEX *lc, BSR *bsr);
 static BSR *store_findex(LEX *lc, BSR *bsr);
+static BSR *store_include(LEX *lc, BSR *bsr);
+static BSR *store_jobid(LEX *lc, BSR *bsr);
+static BSR *store_joblevel(LEX *lc, BSR *bsr);
+static BSR *store_job(LEX *lc, BSR *bsr);
+static BSR *store_jobtype(LEX *lc, BSR *bsr);
+static BSR *store_mediatype(LEX *lc, BSR *bsr);
+static BSR *store_nothing(LEX *lc, BSR *bsr);
 static BSR *store_sessid(LEX *lc, BSR *bsr);
-static BSR *store_volfile(LEX *lc, BSR *bsr);
-static BSR *store_volblock(LEX *lc, BSR *bsr);
-static BSR *store_voladdr(LEX *lc, BSR *bsr);
 static BSR *store_sesstime(LEX *lc, BSR *bsr);
-static BSR *store_include(LEX *lc, BSR *bsr);
-static BSR *store_exclude(LEX *lc, BSR *bsr);
-static BSR *store_stream(LEX *lc, BSR *bsr);
 static BSR *store_slot(LEX *lc, BSR *bsr);
-static BSR *store_fileregex(LEX *lc, BSR *bsr);
-static BSR *store_nothing(LEX *lc, BSR *bsr);
+static BSR *store_stream(LEX *lc, BSR *bsr);
+static BSR *store_voladdr(LEX *lc, BSR *bsr);
+static BSR *store_volblock(LEX *lc, BSR *bsr);
+static BSR *store_volfile(LEX *lc, BSR *bsr);
+static BSR *store_vol(LEX *lc, BSR *bsr);
 static bool is_fast_rejection_ok(BSR *bsr);
 static bool is_positioning_ok(BSR *bsr);
 
@@ -71,27 +62,27 @@ struct kw_items {
  * List of all keywords permitted in bsr files and their handlers
  */
 struct kw_items items[] = {
-   {"volume", store_vol},
-   {"mediatype", store_mediatype},
-   {"client", store_client},
-   {"job", store_job},
-   {"jobid", store_jobid},
-   {"count", store_count},
+   {"client",    store_client},
+   {"count",     store_count},
+   {"device",    store_device},
+   {"exclude",   store_exclude},
    {"fileindex", store_findex},
-   {"jobtype", store_jobtype},
-   {"joblevel", store_joblevel},
-   {"volsessionid", store_sessid},
-   {"volsessiontime", store_sesstime},
-   {"include", store_include},
-   {"exclude", store_exclude},
-   {"volfile", store_volfile},
-   {"volblock", store_volblock},
-   {"voladdr",  store_voladdr},
-   {"stream",   store_stream},
-   {"slot",     store_slot},
-   {"device",   store_device},
    {"fileregex", store_fileregex},
-   {"storage",  store_nothing},
+   {"include",   store_include},
+   {"jobid",     store_jobid},
+   {"joblevel",  store_joblevel},
+   {"job",       store_job},
+   {"jobtype",   store_jobtype},
+   {"mediatype", store_mediatype},
+   {"slot",      store_slot},
+   {"storage",   store_nothing},
+   {"stream",    store_stream},
+   {"voladdr",   store_voladdr},
+   {"volblock",  store_volblock},
+   {"volume",    store_vol},
+   {"volfile",   store_volfile},
+   {"volsessionid",   store_sessid},
+   {"volsessiontime", store_sesstime},
    {NULL, NULL}
 };
 
@@ -105,30 +96,6 @@ static BSR *new_bsr()
    return bsr;
 }
 
-/*
- * Format a scanner error message
- */
-static void s_err(const char *file, int line, LEX *lc, const char *msg, ...)
-{
-   JCR *jcr = (JCR *)(lc->caller_ctx);
-   va_list arg_ptr;
-   char buf[MAXSTRING];
-
-   va_start(arg_ptr, msg);
-   bvsnprintf(buf, sizeof(buf), msg, arg_ptr);
-   va_end(arg_ptr);
-
-   if (jcr) {
-      Jmsg(jcr, M_FATAL, 0, _("Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n%s\n"),
-         buf, lc->line_no, lc->col_no, lc->fname, lc->line);
-   } else {
-      e_msg(file, line, M_FATAL, 0, _("Bootstrap file error: %s\n"
-"            : Line %d, col %d of file %s\n%s\n"),
-         buf, lc->line_no, lc->col_no, lc->fname, lc->line);
-   }
-}
-
 
 /*********************************************************************
  *
@@ -196,105 +163,46 @@ BSR *parse_bsr(JCR *jcr, char *fname)
    return root_bsr;
 }
 
-static bool is_fast_rejection_ok(BSR *bsr)
-{
-   /*
-    * Although, this can be optimized, for the moment, require
-    *  all bsrs to have both sesstime and sessid set before
-    *  we do fast rejection.
-    */
-   for ( ; bsr; bsr=bsr->next) {
-      if (!(bsr->sesstime && bsr->sessid)) {
-         return false;
-      }
-   }
-   return true;
-}
-
-static bool is_positioning_ok(BSR *bsr)
-{
-   /*
-    * Every bsr should have a volfile entry and a volblock entry
-    * or a VolAddr
-    *   if we are going to use positioning
-    */
-   for ( ; bsr; bsr=bsr->next) {
-      if (!((bsr->volfile && bsr->volblock) || bsr->voladdr)) {
-         return false;
-      }
-   }
-   return true;
-}
-
-static BSR *store_vol(LEX *lc, BSR *bsr)
+static BSR *store_client(LEX *lc, BSR *bsr)
 {
    int token;
-   BSR_VOLUME *volume;
-   char *p, *n;
+   BSR_CLIENT *client;
 
-   token = lex_get_token(lc, T_STRING);
-   if (token == T_ERROR) {
-      return NULL;
-   }
-   if (bsr->volume) {
-      bsr->next = new_bsr();
-      bsr->next->prev = bsr;
-      bsr = bsr->next;
-   }
-   /* This may actually be more than one volume separated by a |
-    * If so, separate them.
-    */
-   for (p=lc->str; p && *p; ) {
-      n = strchr(p, '|');
-      if (n) {
-         *n++ = 0;
+   for (;;) {
+      token = lex_get_token(lc, T_NAME);
+      if (token == T_ERROR) {
+         return NULL;
       }
-      volume = (BSR_VOLUME *)malloc(sizeof(BSR_VOLUME));
-      memset(volume, 0, sizeof(BSR_VOLUME));
-      bstrncpy(volume->VolumeName, p, sizeof(volume->VolumeName));
-      /* Add it to the end of the volume chain */
-      if (!bsr->volume) {
-         bsr->volume = volume;
+      client = (BSR_CLIENT *)malloc(sizeof(BSR_CLIENT));
+      memset(client, 0, sizeof(BSR_CLIENT));
+      bstrncpy(client->ClientName, lc->str, sizeof(client->ClientName));
+      /* Add it to the end of the client chain */
+      if (!bsr->client) {
+         bsr->client = client;
       } else {
-         BSR_VOLUME *bc = bsr->volume;
+         BSR_CLIENT *bc = bsr->client;
          for ( ;bc->next; bc=bc->next)
             { }
-         bc->next = volume;
+         bc->next = client;
+      }
+      token = lex_get_token(lc, T_ALL);
+      if (token != T_COMMA) {
+         break;
       }
-      p = n;
-   }
-   return bsr;
-}
-
-/* Shove the MediaType in each Volume in the current bsr */
-static BSR *store_mediatype(LEX *lc, BSR *bsr)
-{
-   int token;
-
-   token = lex_get_token(lc, T_STRING);
-   if (token == T_ERROR) {
-      return NULL;
-   }
-   if (!bsr->volume) {
-      Emsg1(M_ERROR,0, _("MediaType %s in bsr at inappropriate place.\n"),
-         lc->str);
-      return bsr;
-   }
-   BSR_VOLUME *bv;
-   for (bv=bsr->volume; bv; bv=bv->next) {
-      bstrncpy(bv->MediaType, lc->str, sizeof(bv->MediaType));
    }
    return bsr;
 }
 
-static BSR *store_nothing(LEX *lc, BSR *bsr)
+static BSR *store_count(LEX *lc, BSR *bsr)
 {
    int token;
 
-   token = lex_get_token(lc, T_STRING);
+   token = lex_get_token(lc, T_PINT32);
    if (token == T_ERROR) {
       return NULL;
    }
+   bsr->count = lc->pint32_val;
+   scan_to_eol(lc);
    return bsr;
 }
 
@@ -319,69 +227,6 @@ static BSR *store_device(LEX *lc, BSR *bsr)
    return bsr;
 }
 
-
-
-static BSR *store_client(LEX *lc, BSR *bsr)
-{
-   int token;
-   BSR_CLIENT *client;
-
-   for (;;) {
-      token = lex_get_token(lc, T_NAME);
-      if (token == T_ERROR) {
-         return NULL;
-      }
-      client = (BSR_CLIENT *)malloc(sizeof(BSR_CLIENT));
-      memset(client, 0, sizeof(BSR_CLIENT));
-      bstrncpy(client->ClientName, lc->str, sizeof(client->ClientName));
-      /* Add it to the end of the client chain */
-      if (!bsr->client) {
-         bsr->client = client;
-      } else {
-         BSR_CLIENT *bc = bsr->client;
-         for ( ;bc->next; bc=bc->next)
-            { }
-         bc->next = client;
-      }
-      token = lex_get_token(lc, T_ALL);
-      if (token != T_COMMA) {
-         break;
-      }
-   }
-   return bsr;
-}
-
-static BSR *store_job(LEX *lc, BSR *bsr)
-{
-   int token;
-   BSR_JOB *job;
-
-   for (;;) {
-      token = lex_get_token(lc, T_NAME);
-      if (token == T_ERROR) {
-         return NULL;
-      }
-      job = (BSR_JOB *)malloc(sizeof(BSR_JOB));
-      memset(job, 0, sizeof(BSR_JOB));
-      bstrncpy(job->Job, lc->str, sizeof(job->Job));
-      /* Add it to the end of the client chain */
-      if (!bsr->job) {
-         bsr->job = job;
-      } else {
-         /* Add to end of chain */
-         BSR_JOB *bc = bsr->job;
-         for ( ;bc->next; bc=bc->next)
-            { }
-         bc->next = job;
-      }
-      token = lex_get_token(lc, T_ALL);
-      if (token != T_COMMA) {
-         break;
-      }
-   }
-   return bsr;
-}
-
 static BSR *store_findex(LEX *lc, BSR *bsr)
 {
    int token;
@@ -414,6 +259,32 @@ static BSR *store_findex(LEX *lc, BSR *bsr)
    return bsr;
 }
 
+static BSR *store_fileregex(LEX *lc, BSR *bsr)
+{
+   int token;
+   int rc;
+
+   token = lex_get_token(lc, T_STRING);
+   if (token == T_ERROR) {
+      return NULL;
+   }
+
+   if (bsr->fileregex) free(bsr->fileregex);
+   bsr->fileregex = bstrdup(lc->str);
+
+   if (bsr->fileregex_re == NULL)
+      bsr->fileregex_re = (regex_t *)bmalloc(sizeof(regex_t));
+
+   rc = regcomp(bsr->fileregex_re, bsr->fileregex, REG_EXTENDED|REG_NOSUB);
+   if (rc != 0) {
+      char prbuf[500];
+      regerror(rc, bsr->fileregex_re, prbuf, sizeof(prbuf));
+      Emsg2(M_ERROR, 0, _("REGEX '%s' compile error. ERR=%s\n"),
+            bsr->fileregex, prbuf);
+      return NULL;
+   }
+   return bsr;
+}
 
 static BSR *store_jobid(LEX *lc, BSR *bsr)
 {
@@ -434,10 +305,57 @@ static BSR *store_jobid(LEX *lc, BSR *bsr)
          bsr->JobId = jobid;
       } else {
          /* Add to end of chain */
-         BSR_JOBID *bs = bsr->JobId;
-         for ( ;bs->next; bs=bs->next)
-            {  }
-         bs->next = jobid;
+         BSR_JOBID *bs = bsr->JobId;
+         for ( ;bs->next; bs=bs->next)
+            {  }
+         bs->next = jobid;
+      }
+      token = lex_get_token(lc, T_ALL);
+      if (token != T_COMMA) {
+         break;
+      }
+   }
+   return bsr;
+}
+
+
+static BSR *store_jobtype(LEX *lc, BSR *bsr)
+{
+   /* *****FIXME****** */
+   Pmsg0(-1, _("JobType not yet implemented\n"));
+   return bsr;
+}
+
+
+static BSR *store_joblevel(LEX *lc, BSR *bsr)
+{
+   /* *****FIXME****** */
+   Pmsg0(-1, _("JobLevel not yet implemented\n"));
+   return bsr;
+}
+
+static BSR *store_job(LEX *lc, BSR *bsr)
+{
+   int token;
+   BSR_JOB *job;
+
+   for (;;) {
+      token = lex_get_token(lc, T_NAME);
+      if (token == T_ERROR) {
+         return NULL;
+      }
+      job = (BSR_JOB *)malloc(sizeof(BSR_JOB));
+      memset(job, 0, sizeof(BSR_JOB));
+      bstrncpy(job->Job, lc->str, sizeof(job->Job));
+      /* Add it to the end of the client chain */
+      if (!bsr->job) {
+         bsr->job = job;
+      } else {
+         /* Add to end of chain */
+         BSR_JOB *bc = bsr->job;
+         for ( ;bc->next; bc=bc->next)
+            { }
+         bc->next = job;
       }
       token = lex_get_token(lc, T_ALL);
       if (token != T_COMMA) {
@@ -447,65 +365,111 @@ static BSR *store_jobid(LEX *lc, BSR *bsr)
    return bsr;
 }
 
-
-static BSR *store_count(LEX *lc, BSR *bsr)
+/* Shove the MediaType in each Volume in the current bsr */
+static BSR *store_mediatype(LEX *lc, BSR *bsr)
 {
    int token;
 
-   token = lex_get_token(lc, T_PINT32);
+   token = lex_get_token(lc, T_STRING);
    if (token == T_ERROR) {
       return NULL;
    }
-   bsr->count = lc->pint32_val;
-   scan_to_eol(lc);
+   if (!bsr->volume) {
+      Emsg1(M_ERROR,0, _("MediaType %s in bsr at inappropriate place.\n"),
+         lc->str);
+      return bsr;
+   }
+   BSR_VOLUME *bv;
+   for (bv=bsr->volume; bv; bv=bv->next) {
+      bstrncpy(bv->MediaType, lc->str, sizeof(bv->MediaType));
+   }
    return bsr;
 }
 
-static BSR *store_fileregex(LEX *lc, BSR *bsr)
+static BSR *store_vol(LEX *lc, BSR *bsr)
 {
    int token;
-   int rc;
- 
+   BSR_VOLUME *volume;
+   char *p, *n;
+
    token = lex_get_token(lc, T_STRING);
    if (token == T_ERROR) {
       return NULL;
    }
-
-   if (bsr->fileregex) free(bsr->fileregex);
-   bsr->fileregex = bstrdup(lc->str);
-
-   if (bsr->fileregex_re == NULL)
-      bsr->fileregex_re = (regex_t *)bmalloc(sizeof(regex_t));
-
-   rc = regcomp(bsr->fileregex_re, bsr->fileregex, REG_EXTENDED|REG_NOSUB);
-   if (rc != 0) {
-      char prbuf[500];
-      regerror(rc, bsr->fileregex_re, prbuf, sizeof(prbuf));
-      Emsg2(M_ERROR, 0, _("REGEX '%s' compile error. ERR=%s\n"),
-            bsr->fileregex, prbuf);
-      return NULL;
+   if (bsr->volume) {
+      bsr->next = new_bsr();
+      bsr->next->prev = bsr;
+      bsr = bsr->next;
+   }
+   /* This may actually be more than one volume separated by a |
+    * If so, separate them.
+    */
+   for (p=lc->str; p && *p; ) {
+      n = strchr(p, '|');
+      if (n) {
+         *n++ = 0;
+      }
+      volume = (BSR_VOLUME *)malloc(sizeof(BSR_VOLUME));
+      memset(volume, 0, sizeof(BSR_VOLUME));
+      bstrncpy(volume->VolumeName, p, sizeof(volume->VolumeName));
+      /* Add it to the end of the volume chain */
+      if (!bsr->volume) {
+         bsr->volume = volume;
+      } else {
+         BSR_VOLUME *bc = bsr->volume;
+         for ( ;bc->next; bc=bc->next)
+            { }
+         bc->next = volume;
+      }
+      p = n;
    }
    return bsr;
 }
 
-static BSR *store_jobtype(LEX *lc, BSR *bsr)
+static bool is_positioning_ok(BSR *bsr)
 {
-   /* *****FIXME****** */
-   Pmsg0(-1, _("JobType not yet implemented\n"));
-   return bsr;
+   /*
+    * Every bsr should have a volfile entry and a volblock entry
+    * or a VolAddr
+    *   if we are going to use positioning
+    */
+   for ( ; bsr; bsr=bsr->next) {
+      if (!((bsr->volfile && bsr->volblock) || bsr->voladdr)) {
+         return false;
+      }
+   }
+   return true;
+}
+
+static bool is_fast_rejection_ok(BSR *bsr)
+{
+   /*
+    * Although, this can be optimized, for the moment, require
+    *  all bsrs to have both sesstime and sessid set before
+    *  we do fast rejection.
+    */
+   for ( ; bsr; bsr=bsr->next) {
+      if (!(bsr->sesstime && bsr->sessid)) {
+         return false;
+      }
+   }
+   return true;
 }
 
 
-static BSR *store_joblevel(LEX *lc, BSR *bsr)
+static BSR *store_nothing(LEX *lc, BSR *bsr)
 {
-   /* *****FIXME****** */
-   Pmsg0(-1, _("JobLevel not yet implemented\n"));
+   int token;
+
+   token = lex_get_token(lc, T_STRING);
+   if (token == T_ERROR) {
+      return NULL;
+   }
    return bsr;
 }
 
 
 
-
 /*
  * Routine to handle Volume start/end file
  */
@@ -836,7 +800,7 @@ void dump_sesstime(BSR_SESSTIME *sesstime)
 
 void dump_bsr(BSR *bsr, bool recurse)
 {
-   int save_debug = debug_level;
+   int64_t save_debug = debug_level;
    debug_level = 1;
    if (!bsr) {
       Pmsg0(-1, _("BSR is NULL\n"));
@@ -950,59 +914,6 @@ static VOL_LIST *new_restore_volume()
 }
 
 /*
- * Add current volume to end of list, only if the Volume
- * is not already in the list.
- *
- *   returns: 1 if volume added
- *            0 if volume already in list
- */
-static bool add_restore_volume(JCR *jcr, VOL_LIST *vol)
-{
-   VOL_LIST *next = jcr->VolList;
-
-   /* Add volume to volume manager's read list */
-   add_read_volume(jcr, vol->VolumeName);
-
-   if (!next) {                       /* list empty ? */
-      jcr->VolList = vol;             /* yes, add volume */
-   } else {
-      /* Loop through all but last */
-      for ( ; next->next; next=next->next) {
-         if (strcmp(vol->VolumeName, next->VolumeName) == 0) {
-            /* Save smallest start file */
-            if (vol->start_file < next->start_file) {
-               next->start_file = vol->start_file;
-            }
-            return false;              /* already in list */
-         }
-      }
-      /* Check last volume in list */
-      if (strcmp(vol->VolumeName, next->VolumeName) == 0) {
-         if (vol->start_file < next->start_file) {
-            next->start_file = vol->start_file;
-         }
-         return false;                /* already in list */
-      }
-      next->next = vol;               /* add volume */
-   }
-   return true;
-}
-
-void free_restore_volume_list(JCR *jcr)
-{
-   VOL_LIST *vol = jcr->VolList;
-   VOL_LIST *tmp;
-
-   for ( ; vol; ) {
-      tmp = vol->next;
-      remove_read_volume(jcr, vol->VolumeName);
-      free(vol);
-      vol = tmp;
-   }
-   jcr->VolList = NULL;
-}
-
-/*
  * Create a list of Volumes (and Slots and Start positions) to be
  *  used in the current restore job.
  */
@@ -1018,7 +929,7 @@ void create_restore_volume_list(JCR *jcr)
    jcr->CurReadVolume = 0;
    if (jcr->bsr) {
       BSR *bsr = jcr->bsr;
-      if (!bsr->volume || !bsr->volume->VolumeName) {
+      if (!bsr->volume || !bsr->volume->VolumeName[0]) {
          return;
       }
       for ( ; bsr; bsr=bsr->next) {
@@ -1070,3 +981,81 @@ void create_restore_volume_list(JCR *jcr)
       }
    }
 }
+
+/*
+ * Add current volume to end of list, only if the Volume
+ * is not already in the list.
+ *
+ *   returns: 1 if volume added
+ *            0 if volume already in list
+ */
+static bool add_restore_volume(JCR *jcr, VOL_LIST *vol)
+{
+   VOL_LIST *next = jcr->VolList;
+
+   /* Add volume to volume manager's read list */
+   add_read_volume(jcr, vol->VolumeName);
+
+   if (!next) {                       /* list empty ? */
+      jcr->VolList = vol;             /* yes, add volume */
+   } else {
+      /* Loop through all but last */
+      for ( ; next->next; next=next->next) {
+         if (strcmp(vol->VolumeName, next->VolumeName) == 0) {
+            /* Save smallest start file */
+            if (vol->start_file < next->start_file) {
+               next->start_file = vol->start_file;
+            }
+            return false;              /* already in list */
+         }
+      }
+      /* Check last volume in list */
+      if (strcmp(vol->VolumeName, next->VolumeName) == 0) {
+         if (vol->start_file < next->start_file) {
+            next->start_file = vol->start_file;
+         }
+         return false;                /* already in list */
+      }
+      next->next = vol;               /* add volume */
+   }
+   return true;
+}
+
+void free_restore_volume_list(JCR *jcr)
+{
+   VOL_LIST *vol = jcr->VolList;
+   VOL_LIST *tmp;
+
+   for ( ; vol; ) {
+      tmp = vol->next;
+      remove_read_volume(jcr, vol->VolumeName);
+      free(vol);
+      vol = tmp;
+   }
+   jcr->VolList = NULL;
+}
+
+
+/*
+ * Format a scanner error message
+ */
+static void s_err(const char *file, int line, LEX *lc, const char *msg, ...)
+{
+   JCR *jcr = (JCR *)(lc->caller_ctx);
+   va_list arg_ptr;
+   char buf[MAXSTRING];
+
+   va_start(arg_ptr, msg);
+   bvsnprintf(buf, sizeof(buf), msg, arg_ptr);
+   va_end(arg_ptr);
+
+   if (jcr) {
+      Jmsg(jcr, M_FATAL, 0, _("Bootstrap file error: %s\n"
+"            : Line %d, col %d of file %s\n%s\n"),
+         buf, lc->line_no, lc->col_no, lc->fname, lc->line);
+   } else {
+      e_msg(file, line, M_FATAL, 0, _("Bootstrap file error: %s\n"
+"            : Line %d, col %d of file %s\n%s\n"),
+         buf, lc->line_no, lc->col_no, lc->fname, lc->line);
+   }
+}
diff --git a/src/stored/protos.h b/src/stored/protos.h
index ed9badf..a0572ac 100644
--- a/src/stored/protos.h
+++ b/src/stored/protos.h
@@ -1,33 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- * Protypes for stored -- Kern Sibbald MM  
+ * Protypes for stored
  *
+ *   Written by Kern Sibbald, MM
  */
 
 /* From stored.c */
@@ -38,7 +27,7 @@ DCR     *acquire_device_for_append(DCR *dcr);
 bool     acquire_device_for_read(DCR *dcr);
 bool     release_device(DCR *dcr);
 bool     clean_device(DCR *dcr);
-DCR     *new_dcr(JCR *jcr, DCR *dcr, DEVICE *dev);
+DCR     *new_dcr(JCR *jcr, DCR *dcr, DEVICE *dev, bool writing=true);
 void     free_dcr(DCR *dcr);
 
 /* From append.c */
@@ -53,7 +42,7 @@ bool    dir_get_volume_info(DCR *dcr, enum get_vol_info_rw);
 bool    dir_find_next_appendable_volume(DCR *dcr);
 bool    dir_update_volume_info(DCR *dcr, bool label, bool update_LastWritten);
 bool    dir_ask_sysop_to_create_appendable_volume(DCR *dcr);
-bool    dir_ask_sysop_to_mount_volume(DCR *dcr, int mode);
+bool    dir_ask_sysop_to_mount_volume(DCR *dcr, bool read_access);
 bool    dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec);
 bool    dir_send_job_status(JCR *jcr);
 bool    dir_create_jobmedia_record(DCR *dcr, bool zero=false);
@@ -63,10 +52,11 @@ bool    dir_update_changer(JCR *jcr, AUTOCHANGER *changer);
 /* authenticate.c */
 int     authenticate_director(JCR *jcr);
 int     authenticate_filed(JCR *jcr);
+bool    authenticate_storagedaemon(JCR *jcr, char *Job);
 
 /* From autochanger.c */
 bool     init_autochangers();
-int      autoload_device(DCR *dcr, int writing, BSOCK *dir);
+int      autoload_device(DCR *dcr, bool writing, BSOCK *dir);
 bool     autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd);
 bool     unload_autochanger(DCR *dcr, int loaded);
 bool     unload_dev(DCR *dcr, DEVICE *dev);
@@ -82,11 +72,19 @@ void    empty_block(DEV_BLOCK *block);
 void    free_block(DEV_BLOCK *block);
 void    print_block_read_errors(JCR *jcr, DEV_BLOCK *block);
 void    ser_block_header(DEV_BLOCK *block);
+bool    is_block_empty(DEV_BLOCK *block);
+bool    terminate_writing_volume(DCR *dcr);
+
+/* From block_util.c */
+bool    terminate_writing_volume(DCR *dcr);
+bool    user_volume_size_reached(DCR *dcr, bool quiet);
+bool    check_for_newvol_or_newfile(DCR *dcr);
 
 /* From butil.c -- utilities for SD tool programs */
+void    setup_me();
 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,
-                  const char *VolumeName, int mode);
+                  const char *VolumeName, bool writing);
 void    display_tape_error_status(JCR *jcr, DEVICE *dev);
 
 
@@ -103,12 +101,9 @@ void     init_device_wait_timers(DCR *dcr);
 void     init_jcr_device_wait_timers(JCR *jcr);
 bool     double_dev_wait_time(DEVICE *dev);
 
-/* Get info about device */
-char *   dev_vol_name(DEVICE *dev);
-
 /* From dvd.c */
 int     dvd_open_next_part(DCR *dcr);
-bool    dvd_write_part(DCR *dcr); 
+bool    dvd_write_part(DCR *dcr);
 bool    dvd_close_job(DCR *dcr);
 void    make_mounted_dvd_filename(DEVICE *dev, POOL_MEM &archive_name);
 void    make_spooled_dvd_filename(DEVICE *dev, POOL_MEM &archive_name);
@@ -119,7 +114,7 @@ boffset_t   lseek_dvd(DCR *dcr, boffset_t offset, int whence);
 void    dvd_remove_empty_part(DCR *dcr);
 
 /* From device.c */
-bool     open_device(DCR *dcr);
+bool     open_dev(DCR *dcr);
 bool     first_open_device(DCR *dcr);
 bool     fixup_device_block_write_error(DCR *dcr, int retries=4);
 void     set_start_vol_position(DCR *dcr);
@@ -132,18 +127,19 @@ void     *handle_connection_request(void *arg);
 
 /* From fd_cmds.c */
 void     run_job(JCR *jcr);
-void     do_fd_commands(JCR *jcr);
+void     do_client_commands(JCR *jcr);
 
 /* From job.c */
 void     stored_free_jcr(JCR *jcr);
 void     connection_from_filed(void *arg);
-void     handle_filed_connection(BSOCK *fd, char *job_name);
+void     handle_filed_connection(BSOCK *fd, char *job_name,
+           int fdversion, int sdversion);
 
 /* From label.c */
 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);
+void     create_volume_header(DEVICE *dev, const char *VolName, const char *PoolName, bool dvdnow);
 #define ANSI_VOL_LABEL 0
 #define ANSI_EOF_LABEL 1
 #define ANSI_EOV_LABEL 2
@@ -154,7 +150,7 @@ 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, 
+bool     write_new_volume_label_to_dev(DCR *dcr, const char *VolName,
             const char *PoolName, bool relabel, bool dvdnow);
 
 /* From locks.c */
@@ -173,7 +169,7 @@ int      match_bsr_block(BSR *bsr, DEV_BLOCK *block);
 void     position_bsr_block(BSR *bsr, DEV_BLOCK *block);
 BSR     *find_next_bsr(BSR *root_bsr, DEVICE *dev);
 bool     is_this_bsr_done(BSR *bsr, DEV_RECORD *rec);
-uint64_t get_bsr_start_addr(BSR *bsr, 
+uint64_t get_bsr_start_addr(BSR *bsr,
                             uint32_t *file=NULL,
                             uint32_t *block=NULL);
 
@@ -197,7 +193,7 @@ 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);
-uint64_t get_record_address(DEV_RECORD *rec);
+uint64_t    get_record_address(DEV_RECORD *rec);
 
 /* From read_record.c */
 bool read_records(DCR *dcr,
@@ -207,11 +203,6 @@ bool read_records(DCR *dcr,
 /* From reserve.c */
 void    init_reservations_lock();
 void    term_reservations_lock();
-void    _lock_reservations(const char *file="**Unknown**", int line=0);
-void    _unlock_reservations();
-void    _lock_volumes(const char *file="**Unknown**", int line=0);
-void    _unlock_volumes();
-void    unreserve_device(DCR *dcr);
 void    send_drive_reserve_messages(JCR *jcr, void sendit(const char *msg, int len, void *sarg), void *arg);
 bool    find_suitable_device_for_job(JCR *jcr, RCTX &rctx);
 int     search_res_for_device(RCTX &rctx);
@@ -219,49 +210,15 @@ void    release_reserve_messages(JCR *jcr);
 
 extern int reservations_lock_count;
 
-#ifdef  SD_DEBUG_LOCK
-
-#define lock_reservations() \
-         do { Dmsg3(sd_dbglvl, "lock_reservations at %s:%d precnt=%d\n", \
-              __FILE__, __LINE__, \
-              reservations_lock_count); \
-              _lock_reservations(__FILE__, __LINE__); \
-              Dmsg0(sd_dbglvl, "lock_reservations: got lock\n"); \
-         } while (0)
-#define unlock_reservations() \
-         do { Dmsg3(sd_dbglvl, "unlock_reservations at %s:%d precnt=%d\n", \
-              __FILE__, __LINE__, \
-              reservations_lock_count); \
-                   _unlock_reservations(); } while (0)
-
-#define lock_volumes() \
-         do { Dmsg3(sd_dbglvl, "lock_volumes at %s:%d precnt=%d\n", \
-              __FILE__, __LINE__, \
-              vol_list_lock_count); \
-              _lock_volumes(__FILE__, __LINE__); \
-              Dmsg0(sd_dbglvl, "lock_volumes: got lock\n"); \
-         } while (0)
-
-#define unlock_volumes() \
-         do { Dmsg3(sd_dbglvl, "unlock_volumes at %s:%d precnt=%d\n", \
-              __FILE__, __LINE__, \
-              vol_list_lock_count); \
-                   _unlock_volumes(); } while (0)
-
-#else
-
-#define lock_reservations() _lock_reservations(__FILE__, __LINE__)
-#define unlock_reservations() _unlock_reservations()
-#define lock_volumes() _lock_volumes(__FILE__, __LINE__)
-#define unlock_volumes() _unlock_volumes()
-
-#endif
+/* From status.c */
+void    _dbg_list_one_device(DEVICE *dev, const char *f, int l);
+#define dbg_list_one_device(x, dev) if (chk_dbglvl(x))     \
+        _dbg_list_one_device(dev, __FILE__, __LINE__)
 
 /* From vol_mgr.c */
 void    init_vol_list_lock();
 void    term_vol_list_lock();
 VOLRES *reserve_volume(DCR *dcr, const char *VolumeName);
-VOLRES *find_volume(const char *VolumeName);
 bool    free_volume(DEVICE *dev);
 bool    is_vol_list_empty();
 dlist  *dup_vol_list(JCR *jcr);
@@ -289,4 +246,9 @@ void    list_spool_stats          (void sendit(const char *msg, int len, void *s
 
 /* From wait.c */
 int wait_for_sysop(DCR *dcr);
-bool wait_for_device(JCR *jcr, int &retries);
+bool wait_for_any_device(JCR *jcr, int &retries);
+bool wait_for_device(DCR *dcr, int &retries);
+
+/* stored_conf.c */
+void store_devtype(LEX *lc, RES_ITEM *item, int index, int pass);
+void store_maxblocksize(LEX *lc, RES_ITEM *item, int index, int pass);
diff --git a/src/stored/pythonsd.c b/src/stored/pythonsd.c
deleted file mode 100644
index 978cc65..0000000
--- a/src/stored/pythonsd.c
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2005-2011 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.
-*/
-/*
- *
- * Bacula interface to Python for the Storage Daemon
- *
- * Kern Sibbald, January MMV
- *
- *  SD Python interface removed 17 December 2011 (KES)
- *
- */
-
-
-#include "bacula.h"
-#include "stored.h"
-
-#ifdef xxxxHAVE_PYTHON
-#undef _POSIX_C_SOURCE
-#include <Python.h>
-
-#include <lib/pythonlib.h>
-
-static PyObject *set_job_events(PyObject *self, PyObject *arg);
-static PyObject *job_write(PyObject *self, PyObject *arg);
-
-PyMethodDef JobMethods[] = {
-    {"set_events", set_job_events, METH_VARARGS, "Set Job events"},
-    {"write", job_write, METH_VARARGS, "Write to output"},
-    {NULL, NULL, 0, NULL}             /* last item */
-};
-
-
-struct s_vars {
-   const char *name;
-   const char *fmt;
-};
-
-static struct s_vars getvars[] = {
-   { NT_("Job"),        "s"},          /* 0 */
-   { NT_("SDName"),     "s"},          /* 1 */
-   { NT_("Level"),      "s"},          /* 2 */
-   { NT_("Type"),       "s"},          /* 3 */
-   { NT_("JobId"),      "i"},          /* 4 */
-   { NT_("Client"),     "s"},          /* 5 */
-   { NT_("Pool"),       "s"},          /* 6 */
-   { NT_("MediaType"),  "s"},          /* 7 */
-   { NT_("JobName"),    "s"},          /* 8 */
-   { NT_("JobStatus"),  "s"},          /* 9 */
-   { NT_("VolumeName"), "s"},          /* 10 */
-   { NT_("Device"),     "s"},          /* 11 */
-
-   { NULL,             NULL}
-};
-
-
-/* Writable variables */
-static struct s_vars setvars[] = {
-   { NT_("JobReport"),   "s"},
-
-   { NULL,             NULL}
-};
-
-
-/* Return Job variables */
-PyObject *job_getattr(PyObject *self, char *attrname)
-{
-   JCR *jcr;
-   bool found = false;
-   int i;
-   char buf[10];
-   char errmsg[200];
-   
-   Dmsg1(100, "In job_getattr=%s\n", attrname);
-   jcr = get_jcr_from_PyObject(self);
-   if (!jcr) {
-      bstrncpy(errmsg, _("Job pointer not found."), sizeof(errmsg));
-      goto bail_out;
-   }
-
-   for (i=0; getvars[i].name; i++) {
-      if (strcmp(getvars[i].name, attrname) == 0) {
-         found = true;
-         break;
-      }
-   }
-   if (!found) {
-      /* Try our methods */
-      return Py_FindMethod(JobMethods, self, attrname);
-   }  
-   switch (i) {
-   case 0:                            /* Job */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->job_name);    /* Non-unique name */
-   case 1:                            /* SD's name */
-      return Py_BuildValue((char *)getvars[i].fmt, my_name);
-   case 2:                            /* level */
-      return Py_BuildValue((char *)getvars[i].fmt, job_level_to_str(jcr->getJobLevel()));
-   case 3:                            /* type */
-      return Py_BuildValue((char *)getvars[i].fmt, job_type_to_str(jcr->getJobType()));
-   case 4:                            /* JobId */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->JobId);
-   case 5:                            /* Client */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->client_name);
-   case 6:                            /* Pool */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->dcr->pool_name);
-   case 7:                            /* MediaType */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->dcr->media_type);
-   case 8:                            /* JobName */
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->Job);
-   case 9:                            /* JobStatus */
-      buf[1] = 0;
-      buf[0] = jcr->JobStatus;
-      return Py_BuildValue((char *)getvars[i].fmt, buf);
-   case 10:
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->dcr->VolumeName);
-   case 11:
-      return Py_BuildValue((char *)getvars[i].fmt, jcr->dcr->dev_name);
-   }
-   bsnprintf(errmsg, sizeof(errmsg), _("Attribute %s not found."), attrname);
-bail_out:
-   PyErr_SetString(PyExc_AttributeError, errmsg);
-   return NULL;
-}
-
-int job_setattr(PyObject *self, char *attrname, PyObject *value)
-{
-  JCR *jcr;
-   bool found = false;
-   char *strval = NULL;
-   char buf[200];
-   char *errmsg;
-   int i;
-
-   Dmsg2(100, "In job_setattr=%s val=%p.\n", attrname, value);
-   if (value == NULL) {                /* Cannot delete variables */
-      bsnprintf(buf, sizeof(buf), _("Cannot delete attribute %s"), attrname);
-      errmsg = buf;
-      goto bail_out;
-   }
-   jcr = get_jcr_from_PyObject(self);
-   if (!jcr) {
-      errmsg = _("Job pointer not found.");
-      goto bail_out;
-   }
-
-   /* Find attribute name in list */
-   for (i=0; setvars[i].name; i++) {
-      if (strcmp(setvars[i].name, attrname) == 0) {
-         found = true;
-         break;
-      }
-   }
-   if (!found) {
-      goto not_found;
-   }
-   /* Get argument value ***FIXME*** handle other formats */
-   if (setvars[i].fmt != NULL) {
-      if (!PyArg_Parse(value, (char *)setvars[i].fmt, &strval)) {
-         PyErr_SetString(PyExc_TypeError, _("Read-only attribute"));
-         return -1;
-      }
-   }   
-   switch (i) {
-   case 0:                            /* JobReport */
-      Jmsg(jcr, M_INFO, 0, "%s", strval);
-      return 0;
-   }
-not_found:
-   bsnprintf(buf, sizeof(buf), _("Cannot find attribute %s"), attrname);
-   errmsg = buf;
-bail_out:
-   PyErr_SetString(PyExc_AttributeError, errmsg);
-   return -1;
-}
-
-
-static PyObject *set_job_events(PyObject *self, PyObject *arg)
-{
-   PyObject *eObject;
-   JCR *jcr;
-
-   Dmsg0(100, "In set_job_events.\n");
-   if (!PyArg_ParseTuple(arg, "O:set_events", &eObject)) {
-      Pmsg0(000, _("Error in ParseTuple\n"));
-      return NULL;
-   }
-   jcr = get_jcr_from_PyObject(self);
-   Py_XDECREF((PyObject *)jcr->Python_events);
-   Py_INCREF(eObject);
-   jcr->Python_events = (void *)eObject;
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-static PyObject *job_write(PyObject *self, PyObject *args)
-{
-   char *text = NULL;
-
-   if (!PyArg_ParseTuple(args, "s:write", &text)) {
-      Pmsg0(000, _("Parse tuple error in job_write\n"));
-      return NULL;
-   }
-   if (text) {
-      Jmsg(NULL, M_INFO, 0, "%s", text);
-   }
-   Py_INCREF(Py_None);
-   return Py_None;
-}
-
-
-int generate_job_event(JCR *jcr, const char *event)
-{
-   PyObject *method = NULL;
-   PyObject *Job = (PyObject *)jcr->Python_job;
-   PyObject *events = (PyObject *)jcr->Python_events;
-   PyObject *result = NULL;
-   int stat = 0;
-
-   if (!Job || !events) {
-      return 0;
-   }
-
-   lock_python();
-// PyEval_AcquireLock();
-
-   method = find_method(events, method, event);
-   if (!method) {
-      goto bail_out;
-   }
-
-   bstrncpy(jcr->event, event, sizeof(jcr->event));
-   result = PyObject_CallFunction(method, (char *)"O", Job);
-   jcr->event[0] = 0;             /* no event in progress */
-   if (result == NULL) {
-      if (PyErr_Occurred()) {
-         PyErr_Print();
-         Dmsg1(000, _("Error in Python method %s\n"), event);
-      }
-   } else {
-      stat = 1;
-   }
-   Py_XDECREF(result);
-
-bail_out:
-   unlock_python();
-// PyEval_ReleaseLock();
-   return stat;
-}
-
-
-#else
-
-/* Dummy if Python not configured */
-int generate_job_event(JCR *jcr, const char *event)
-{ return 1; }
-
-
-#endif /* xxxxHAVE_PYTHON */
diff --git a/src/stored/read.c b/src/stored/read.c
index 3f46f25..476b2d4 100644
--- a/src/stored/read.c
+++ b/src/stored/read.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Read code for Storage daemon
@@ -36,7 +24,8 @@
 #include "stored.h"
 
 /* Forward referenced subroutines */
-static bool record_cb(DCR *dcr, DEV_RECORD *rec);
+static bool read_record_cb(DCR *dcr, DEV_RECORD *rec);
+static bool mac_record_cb(DCR *dcr, DEV_RECORD *rec);
 
 
 /* Responses sent to the File daemon */
@@ -54,10 +43,11 @@ bool do_read_data(JCR *jcr)
    BSOCK *fd = jcr->file_bsock;
    bool ok = true;
    DCR *dcr = jcr->read_dcr;
+   char ec[50];
 
-   Dmsg0(20, "Start read data.\n");
+   Dmsg0(100, "Start read data.\n");
 
-   if (!bnet_set_buffer_size(fd, dcr->device->max_network_buffer_size, BNET_SETBUF_WRITE)) {
+   if (!fd->set_buffer_size(dcr->device->max_network_buffer_size, BNET_SETBUF_WRITE)) {
       return false;
    }
 
@@ -78,8 +68,30 @@ bool do_read_data(JCR *jcr)
 
    /* Tell File daemon we will send data */
    fd->fsend(OK_data);
+
    jcr->sendJobStatus(JS_Running);
-   ok = read_records(dcr, record_cb, mount_next_read_volume);
+   jcr->run_time = time(NULL);
+   jcr->JobFiles = 0;
+
+   if (jcr->is_JobType(JT_MIGRATE) || jcr->is_JobType(JT_COPY)) {
+      ok = read_records(dcr, mac_record_cb, mount_next_read_volume);
+   } else {
+      ok = read_records(dcr, read_record_cb, mount_next_read_volume);
+   }
+
+   /*
+    * 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));
 
    /* Send end of data to FD */
    fd->signal(BNET_EOD);
@@ -93,11 +105,11 @@ bool do_read_data(JCR *jcr)
 }
 
 /*
- * Called here for each record from read_records()
+ * Called here for reading (restore) for each record from read_records()
  *  Returns: true if OK
  *           false if error
  */
-static bool record_cb(DCR *dcr, DEV_RECORD *rec)
+static bool read_record_cb(DCR *dcr, DEV_RECORD *rec)
 {
    JCR *jcr = dcr->jcr;
    BSOCK *fd = jcr->file_bsock;
@@ -109,7 +121,7 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
       return true;
    }
    Dmsg5(400, "Send to FD: SessId=%u SessTim=%u FI=%s Strm=%s, len=%d\n",
-      rec->VolSessionId, rec->VolSessionTime, 
+      rec->VolSessionId, rec->VolSessionTime,
       FI_to_ascii(ec1, rec->FileIndex),
       stream_to_ascii(ec2, rec->Stream, rec->FileIndex),
       rec->data_len);
@@ -121,15 +133,33 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
       Jmsg1(jcr, M_FATAL, 0, _("Error sending to File daemon. ERR=%s\n"),
          fd->bstrerror());
       return false;
-   } else {
-      Dmsg1(400, ">filed: Hdr=%s\n", fd->msg);
    }
 
+   /*
+    * For normal migration jobs, FileIndex values are sequential because
+    *  we are dealing with one job.  However, for Vbackup (consolidation),
+    *  we will be getting records from multiple jobs and writing them back
+    *  out, so we need to ensure that the output FileIndex is sequential.
+    *  We do so by detecting a FileIndex change and incrementing the
+    *  JobFiles, which we then use as the output FileIndex.
+    */
+   if (rec->FileIndex >= 0) {
+      /* If something changed, increment FileIndex */
+      if (rec->VolSessionId != rec->last_VolSessionId ||
+          rec->VolSessionTime != rec->last_VolSessionTime ||
+          rec->FileIndex != rec->last_FileIndex) {
+         jcr->JobFiles++;
+         rec->last_VolSessionId = rec->VolSessionId;
+         rec->last_VolSessionTime = rec->VolSessionTime;
+         rec->last_FileIndex = rec->FileIndex;
+      }
+   }
 
    /* Send data record to File daemon */
    save_msg = fd->msg;          /* save fd message pointer */
    fd->msg = rec->data;         /* pass data directly to the FD */
    fd->msglen = rec->data_len;
+   jcr->JobBytes += rec->data_len;   /* increment bytes this job */
    Dmsg1(400, ">filed: send %d bytes data.\n", fd->msglen);
    if (!fd->send()) {
       Pmsg1(000, _("Error sending to FD. ERR=%s\n"), fd->bstrerror());
@@ -141,3 +171,108 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
    fd->msg = save_msg;                /* restore fd message pointer */
    return ok;
 }
+
+/*
+ * New routine after to SD->SD implementation
+ * Called here for each record from read_records()
+ *  Returns: true if OK
+ *           false if error
+ */
+static bool mac_record_cb(DCR *dcr, DEV_RECORD *rec)
+{
+   JCR *jcr = dcr->jcr;
+   BSOCK *fd = jcr->file_bsock;
+   char buf1[100], buf2[100];
+   bool new_header = false;
+   POOLMEM *save_msg;
+   char ec1[50], ec2[50];
+   bool ok = true;
+
+#ifdef xxx
+   Pmsg5(000, "on entry     JobId=%d FI=%s SessId=%d Strm=%s len=%d\n",
+      jcr->JobId,
+      FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
+      stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len);
+#endif
+
+   /* If label and not for us, discard it */
+   if (rec->FileIndex < 0) {
+      Dmsg1(100, "FileIndex=%d\n", rec->FileIndex);
+      return true;
+   }
+
+   /*
+    * For normal migration jobs, FileIndex values are sequential because
+    *  we are dealing with one job.  However, for Vbackup (consolidation),
+    *  we will be getting records from multiple jobs and writing them back
+    *  out, so we need to ensure that the output FileIndex is sequential.
+    *  We do so by detecting a FileIndex change and incrementing the
+    *  JobFiles, which we then use as the output FileIndex.
+    */
+   if (rec->FileIndex >= 0) {
+      /* If something changed, increment FileIndex */
+      if (rec->VolSessionId != rec->last_VolSessionId ||
+          rec->VolSessionTime != rec->last_VolSessionTime ||
+          rec->FileIndex != rec->last_FileIndex ||
+          rec->Stream != rec->last_Stream) {
+
+         /* Something changed */
+         if (rec->last_VolSessionId != 0) {        /* Not first record */
+            Dmsg1(200, "Send EOD jobfiles=%d\n", jcr->JobFiles);
+            if (!fd->signal(BNET_EOD)) {  /* End of previous stream */
+               Jmsg(jcr, M_FATAL, 0, _("Error sending to File daemon. ERR=%s\n"),
+                        fd->bstrerror());
+               return false;
+            }
+         }
+         new_header = true;
+         if (rec->FileIndex != rec->last_FileIndex) {
+            jcr->JobFiles++;
+         }
+         rec->last_VolSessionId = rec->VolSessionId;
+         rec->last_VolSessionTime = rec->VolSessionTime;
+         rec->last_FileIndex = rec->FileIndex;
+         rec->last_Stream = rec->Stream;
+      }
+      rec->FileIndex = jcr->JobFiles;     /* set sequential output FileIndex */
+   }
+
+   if (new_header) {
+      new_header = false;
+      Dmsg5(400, "Send header to FD: SessId=%u SessTim=%u FI=%s Strm=%s, len=%d\n",
+         rec->VolSessionId, rec->VolSessionTime,
+         FI_to_ascii(ec1, rec->FileIndex),
+         stream_to_ascii(ec2, rec->Stream, rec->FileIndex),
+         rec->data_len);
+
+      /* Send data header to File daemon */
+      if (!fd->fsend("%ld %ld %ld", rec->FileIndex, rec->Stream, rec->data_len)) {
+         Pmsg1(000, _(">filed: Error Hdr=%s\n"), fd->msg);
+         Jmsg1(jcr, M_FATAL, 0, _("Error sending to File daemon. ERR=%s\n"),
+            fd->bstrerror());
+         return false;
+      }
+   }
+
+   Dmsg1(400, "FI=%d\n", rec->FileIndex);
+   /* Send data record to File daemon */
+   save_msg = fd->msg;          /* save fd message pointer */
+   fd->msg = rec->data;         /* pass data directly to the FD */
+   fd->msglen = rec->data_len;
+   jcr->JobBytes += rec->data_len;   /* increment bytes this job */
+   Dmsg1(400, ">filed: send %d bytes data.\n", fd->msglen);
+   if (!fd->send()) {
+      Pmsg1(000, _("Error sending to FD. ERR=%s\n"), fd->bstrerror());
+      Jmsg1(jcr, M_FATAL, 0, _("Error sending to File daemon. ERR=%s\n"),
+         fd->bstrerror());
+      ok = false;
+   }
+   fd->msg = save_msg;                /* restore fd message pointer */
+
+   Dmsg5(500, "wrote_record JobId=%d FI=%s SessId=%d Strm=%s len=%d\n",
+      jcr->JobId,
+      FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
+      stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len);
+
+   return ok;
+}
diff --git a/src/stored/read_record.c b/src/stored/read_records.c
similarity index 89%
rename from src/stored/read_record.c
rename to src/stored/read_records.c
index 92383ab..249437e 100644
--- a/src/stored/read_record.c
+++ b/src/stored/read_records.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -51,7 +39,7 @@ static bool try_repositioning(JCR *jcr, DEV_RECORD *rec, DCR *dcr);
 static char *rec_state_bits_to_str(DEV_RECORD *rec);
 #endif
 
-static const int dbglvl = 500;
+static const int dbglvl = 190;
 static const int no_FileIndex = -999999;
 
 /*
@@ -108,7 +96,7 @@ bool read_records(DCR *dcr,
                break;
             }
             jcr->mount_next_volume = false;
-            /*  
+            /*
              * The Device can change at the end of a tape, so refresh it
              *   and the block from the dcr.
              */
@@ -129,21 +117,6 @@ bool read_records(DCR *dcr,
             continue;
 
          } else if (dev->at_eof()) {
-#ifdef neeeded_xxx
-            if (verbose) {
-               char *fp;
-               uint32_t fp_num;
-               if (dev->is_dvd()) {
-                  fp = _("part");
-                  fp_num = dev->part;
-               } else {
-                  fp = _("file");
-                  fp_num = dev->file;
-               }
-               Jmsg(jcr, M_INFO, 0, _("End of %s %u on device %s, Volume \"%s\"\n"),
-                    fp, fp_num, dev->print_name(), dcr->VolumeName);
-            }
-#endif
             Dmsg3(200, "End of file %u  on device %s, Volume \"%s\"\n",
                   dev->file, dev->print_name(), dcr->VolumeName);
             continue;
@@ -197,10 +170,10 @@ bool read_records(DCR *dcr,
       record = 0;
       rec->state_bits = 0;
       lastFileIndex = no_FileIndex;
-      Dmsg1(dbglvl, "Block %s empty\n", is_block_empty(rec)?"is":"NOT");
-      for (rec->state_bits=0; ok && !is_block_empty(rec); ) {
+      Dmsg1(dbglvl, "Block %s empty\n", is_block_marked_empty(rec)?"is":"NOT");
+      for (rec->state_bits=0; ok && !is_block_marked_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),
+            Dmsg3(200, "!read-break. state_bits=%s blk=%d rem=%d\n", rec_state_bits_to_str(rec),
                   block->BlockNumber, rec->remainder);
             break;
          }
@@ -299,7 +272,7 @@ bool read_records(DCR *dcr,
          ok = record_cb(dcr, rec);
 #if 0
          /*
-          * If we have a digest stream, we check to see if we have 
+          * If we have a digest stream, we check to see if we have
           *  finished the current bsr, and if so, repositioning will
           *  be turned on.
           */
@@ -392,7 +365,7 @@ static BSR *position_to_first_file(JCR *jcr, DCR *dcr)
    if (jcr->bsr) {
       jcr->bsr->reposition = true;    /* force repositioning */
       bsr = find_next_bsr(jcr->bsr, dev);
-      
+
       if (get_bsr_start_addr(bsr, &file, &block) > 0) {
          Jmsg(jcr, M_INFO, 0, _("Forward spacing Volume \"%s\" to file:block %u:%u.\n"),
               dev->VolHdr.VolumeName, file, block);
diff --git a/src/stored/record.c b/src/stored/record.c
index 73f0c9f..d60647f 100644
--- a/src/stored/record.c
+++ b/src/stored/record.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -662,7 +650,7 @@ bool read_record_from_block(DCR *dcr, DEV_RECORD *rec)
    /* Sanity check */
    if (data_bytes >= MAX_BLOCK_LENGTH) {
       /*
-       * Something is wrong, force read of next block, abort 
+       * Something is wrong, force read of next block, abort
        *   continuing with this block.
        */
       rec->state_bits |= (REC_NO_HEADER | REC_BLOCK_EMPTY);
diff --git a/src/stored/record.h b/src/stored/record.h
index 62c245d..c8f5273 100644
--- a/src/stored/record.h
+++ b/src/stored/record.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Record, and label definitions for Bacula
@@ -47,14 +35,15 @@ enum {
    VOL_CREATE_ERROR,                      /* Error creating label */
    VOL_VERSION_ERROR,                     /* Bacula version error */
    VOL_LABEL_ERROR,                       /* Bad label type */
-   VOL_NO_MEDIA                           /* Hard error -- no media present */
+   VOL_NO_MEDIA,                          /* Hard error -- no media present */
+   VOL_TYPE_ERROR                         /* Volume type (aligned/non-aligned) error */
 };
 
 enum rec_state {
    st_none,                               /* No state */
    st_header,                             /* Write header */
-   st_header_cont,
-   st_data,
+   st_cont_header,                        /* Write continuation header */
+   st_data                                /* Write data record */
 };
 
 
@@ -80,13 +69,13 @@ enum rec_state {
 /* Record state bit definitions */
 #define REC_NO_HEADER        (1<<0)   /* No header read */
 #define REC_PARTIAL_RECORD   (1<<1)   /* returning partial record */
-#define REC_BLOCK_EMPTY      (1<<2)   /* not enough data in block */
+#define REC_BLOCK_EMPTY      (1<<2)   /* Not enough data in block */
 #define REC_NO_MATCH         (1<<3)   /* No match on continuation data */
 #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_bits & REC_PARTIAL_RECORD)
-#define is_block_empty(r)    ((r)->state_bits & REC_BLOCK_EMPTY)
+#define is_block_marked_empty(r) ((r)->state_bits & (REC_BLOCK_EMPTY))
 
 /*
  * DEV_RECORD for reading and writing records.
@@ -100,20 +89,25 @@ struct DEV_RECORD {
    /* File and Block are always returned during reading
     *  and writing records.
     */
+   uint64_t StreamLen;                /* Expected data stream length */
    uint32_t File;                     /* File number */
    uint32_t Block;                    /* Block number */
    uint32_t VolSessionId;             /* sequential id within this session */
    uint32_t VolSessionTime;           /* session start time */
    int32_t  FileIndex;                /* sequential file number */
    int32_t  Stream;                   /* Full Stream number with high bits */
+   int32_t  last_FI;                  /* previous fi for adata */
+   int32_t  last_Stream;              /* previous stream for adata */
    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 adata_remainder;          /* remaining adata bytes to read/write */
    uint32_t remlen;                   /* temp remainder bytes */
+   uint32_t data_bytes;               /* data_bytes */
    uint32_t state_bits;               /* state bits */
-   rec_state state;                   /* state of write_record_to_block */
+   rec_state wstate;                  /* state of write_record_to_block */
+   rec_state rstate;                  /* state of read_record_from_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 */
    int32_t match_stat;                /* bsr match status */
    uint32_t last_VolSessionId;        /* used in sequencing FI for Vbackup */
@@ -181,7 +175,6 @@ 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/record_read.c b/src/stored/record_read.c
new file mode 100644
index 0000000..d92fd0e
--- /dev/null
+++ b/src/stored/record_read.c
@@ -0,0 +1,273 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2001-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ *
+ *   record_read.c -- Volume (tape/disk) record read functions
+ *
+ *            Kern Sibbald, April MMI
+ *              added BB02 format October MMII
+ */
+
+
+#include "bacula.h"
+#include "stored.h"
+
+/* Imported subroutines */
+
+
+static const int read_dbglvl = 200;
+static const int dbgep = 250;         /* debug execution path */
+
+/*
+ * Read the header record
+ */
+static bool read_header(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
+{
+   ser_declare;
+   uint32_t VolSessionId;
+   uint32_t VolSessionTime;
+   int32_t  FileIndex;
+   int32_t  Stream;
+   uint32_t rhl;
+   char buf1[100], buf2[100];
+
+   Dmsg0(dbgep, "=== rpath 1 read_header\n");
+   /* Clear state flags */
+   rec->state_bits = 0;
+   if (block->dev->is_tape()) {
+      rec->state_bits |= REC_ISTAPE;
+   }
+   rec->Block = ((DEVICE *)block->dev)->EndBlock;
+   rec->File = ((DEVICE *)block->dev)->EndFile;
+
+   /*
+    * Get the header. There is always a full header,
+    * otherwise we find it in the next block.
+    */
+   Dmsg3(read_dbglvl, "Block=%d Ver=%d block_len=%u\n",
+         block->BlockNumber, block->BlockVer, block->block_len);
+   if (block->BlockVer == 1) {
+      rhl = RECHDR1_LENGTH;
+   } else {
+      rhl = RECHDR2_LENGTH;
+   }
+   if (rec->remlen >= rhl) {
+      Dmsg0(dbgep, "=== rpath 2 begin unserial header\n");
+      Dmsg4(read_dbglvl, "read_header: remlen=%d data_len=%d rem=%d blkver=%d\n",
+            rec->remlen, rec->data_len, rec->remainder, block->BlockVer);
+
+      unser_begin(block->bufp, WRITE_RECHDR_LENGTH);
+      if (block->BlockVer == 1) {
+         unser_uint32(VolSessionId);
+         unser_uint32(VolSessionTime);
+      } else {
+         VolSessionId = block->VolSessionId;
+         VolSessionTime = block->VolSessionTime;
+      }
+      unser_int32(FileIndex);
+      unser_int32(Stream);
+      unser_uint32(rec->data_bytes);
+
+      block->bufp += rhl;
+      block->binbuf -= rhl;
+      rec->remlen -= rhl;
+
+      /* If we are looking for more (remainder!=0), we reject anything
+       *  where the VolSessionId and VolSessionTime don't agree
+       */
+      if (rec->remainder && (rec->VolSessionId != VolSessionId ||
+                             rec->VolSessionTime != VolSessionTime)) {
+         rec->state_bits |= REC_NO_MATCH;
+         Dmsg0(read_dbglvl, "remainder and VolSession doesn't match\n");
+         Dmsg0(dbgep, "=== rpath 4 VolSession no match\n");
+         return false;             /* This is from some other Session */
+      }
+
+      /* if Stream is negative, it means that this is a continuation
+       * of a previous partially written record.
+       */
+      if (Stream < 0) {               /* continuation record? */
+         Dmsg0(dbgep, "=== rpath 5 negative stream\n");
+         Dmsg1(read_dbglvl, "Got negative Stream => continuation. remainder=%d\n",
+            rec->remainder);
+         rec->state_bits |= REC_CONTINUATION;
+         if (!rec->remainder) {       /* if we didn't read previously */
+            Dmsg0(dbgep, "=== rpath 6 no remainder\n");
+            rec->data_len = 0;        /* return data as if no continuation */
+         } else if (rec->Stream != -Stream) {
+            Dmsg0(dbgep, "=== rpath 7 wrong cont stream\n");
+            rec->state_bits |= REC_NO_MATCH;
+            return false;             /* This is from some other Session */
+         }
+         rec->Stream = -Stream;       /* set correct Stream */
+         rec->maskedStream = rec->Stream & STREAMMASK_TYPE;
+      } else {                        /* Regular record */
+         Dmsg0(dbgep, "=== rpath 8 normal stream\n");
+         rec->Stream = Stream;
+         rec->maskedStream = rec->Stream & STREAMMASK_TYPE;
+         rec->data_len = 0;           /* transfer to beginning of data */
+      }
+      rec->VolSessionId = VolSessionId;
+      rec->VolSessionTime = VolSessionTime;
+      rec->FileIndex = FileIndex;
+      if (FileIndex > 0) {
+         Dmsg0(dbgep, "=== rpath 9 FileIndex>0\n");
+         if (block->FirstIndex == 0) {
+            Dmsg0(dbgep, "=== rpath 10 FirstIndex\n");
+            block->FirstIndex = FileIndex;
+         }
+         block->LastIndex = rec->FileIndex;
+      }
+
+      Dmsg6(read_dbglvl, "read_header: FI=%s SessId=%d Strm=%s len=%u rec->remlen=%d data_len=%d\n",
+         FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
+         stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_bytes, rec->remlen,
+         rec->data_len);
+   } else {
+      Dmsg0(dbgep, "=== rpath 11a block out of records\n");
+      /*
+       * No more records in this block because the number
+       * of remaining bytes are less than a record header
+       * length, so return empty handed, but indicate that
+       * he must read again. By returning, we allow the
+       * higher level routine to fetch the next block and
+       * then reread.
+       */
+      Dmsg0(read_dbglvl, "read_header: End of block\n");
+      rec->state_bits |= (REC_NO_HEADER | REC_BLOCK_EMPTY);
+      empty_block(block);                      /* mark block empty */
+      return false;
+   }
+
+   /* Sanity check */
+   if (rec->data_bytes >= MAX_BLOCK_LENGTH) {
+      Dmsg0(dbgep, "=== rpath 11b maxlen too big\n");
+      /*
+       * Something is wrong, force read of next block, abort
+       *   continuing with this block.
+       */
+      rec->state_bits |= (REC_NO_HEADER | REC_BLOCK_EMPTY);
+      empty_block(block);
+      Jmsg2(dcr->jcr, M_WARNING, 0, _("Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"),
+         MAX_BLOCK_LENGTH, rec->data_bytes);
+      return false;
+   }
+
+   rec->data = check_pool_memory_size(rec->data, rec->data_len+rec->data_bytes);
+   rec->rstate = st_data;
+   return true;
+}
+
+/*
+ * We have just read a header, now read the data into the record.
+ *  Note, if we do not read the full record, we will return to
+ *  read the next header, which will then come back here later
+ *  to finish reading the full record.
+ */
+static void read_data(DEV_BLOCK *block, DEV_RECORD *rec)
+{
+   char buf1[100], buf2[100];
+
+   Dmsg0(dbgep, "=== rpath 22 read_data\n");
+   /*
+    * At this point, we have read the header, now we
+    * must transfer as much of the data record as
+    * possible taking into account: 1. A partial
+    * data record may have previously been transferred,
+    * 2. The current block may not contain the whole data
+    * record.
+    */
+   if (rec->remlen >= rec->data_bytes) {
+      Dmsg0(dbgep, "=== rpath 23 full record\n");
+      /* Got whole record */
+      memcpy(rec->data+rec->data_len, block->bufp, rec->data_bytes);
+      block->bufp += rec->data_bytes;
+      block->binbuf -= rec->data_bytes;
+      rec->data_len += rec->data_bytes;
+      rec->remainder = 0;
+      Dmsg5(190, "Rdata full FI=%s SessId=%d Strm=%s len=%d block=%p\n",
+         FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
+         stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len,
+         block);
+   } else {
+      Dmsg0(dbgep, "=== rpath 24 partial record\n");
+      /* Partial record */
+      memcpy(rec->data+rec->data_len, block->bufp, rec->remlen);
+      block->bufp += rec->remlen;
+      block->binbuf -= rec->remlen;
+      rec->data_len += rec->remlen;
+      rec->remainder = 1;             /* partial record transferred */
+      Dmsg1(read_dbglvl, "read_data: partial xfered=%d\n", rec->data_len);
+      rec->state_bits |= (REC_PARTIAL_RECORD | REC_BLOCK_EMPTY);
+   }
+}
+
+
+/*
+ * Read a Record from the block
+ *  Returns: false if nothing read or if the continuation record does not match.
+ *                 In both of these cases, a block read must be done.
+ *           true  if at least the record header was read, this
+ *                 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_RECORD *rec)
+{
+   bool rtn;
+
+   Dmsg0(dbgep, "=== rpath 1 Enter read_record_from block\n");
+   for ( ;; ) {
+      switch (rec->rstate) {
+      case st_none:
+         dump_block(dcr->block, "st_none");
+      case st_header:
+         Dmsg0(dbgep, "=== rpath 33 st_header\n");
+         rec->remlen = dcr->block->binbuf;
+         /* Note read_header sets rec->rstate on return true */
+         if (!read_header(dcr, dcr->block, rec)) {  /* sets state */
+            Dmsg0(dbgep, "=== rpath 34 failed read header\n");
+            Dmsg0(read_dbglvl, "read_header returned EOF.\n");
+            goto fail_out;
+         }
+         continue;
+
+      case st_data:
+         Dmsg0(dbgep, "=== rpath 37 st_data\n");
+         read_data(dcr->block, rec);
+         rec->rstate = st_header;         /* next pass look for a header */
+         goto get_out;
+
+      default:
+         Dmsg0(dbgep, "=== rpath 50 default\n");
+         Dmsg0(0, "======= In default !!!!!\n");
+         Pmsg1(190, "Read: unknown state=%d\n", rec->rstate);
+         goto fail_out;
+      }
+   }
+get_out:
+   char buf1[100], buf2[100];
+   Dmsg5(read_dbglvl, "read_rec return: FI=%s Strm=%s len=%d rem=%d remainder=%d\n",
+         FI_to_ascii(buf1, rec->FileIndex),
+         stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len,
+         rec->remlen, rec->remainder);
+   rtn = true;
+   goto out;
+fail_out:
+   rec->rstate = st_none;
+   rtn = false;
+out:
+   return rtn;
+}
diff --git a/src/stored/record_util.c b/src/stored/record_util.c
new file mode 100644
index 0000000..acac864
--- /dev/null
+++ b/src/stored/record_util.c
@@ -0,0 +1,295 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2001-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ *
+ *   record-util.c -- Utilities for record handling
+ *
+ *            Kern Sibbald, October MMXII
+ *
+ */
+
+#include "bacula.h"
+#include "stored.h"
+
+/*
+ * Convert a FileIndex into a printable
+ *   ASCII string.  Not reentrant.
+ * If the FileIndex is negative, it flags the
+ *   record as a Label, otherwise it is simply
+ *   the FileIndex of the current file.
+ */
+const char *FI_to_ascii(char *buf, int fi)
+{
+   if (fi >= 0) {
+      sprintf(buf, "%d", fi);
+      return buf;
+   }
+   switch (fi) {
+   case PRE_LABEL:
+      return "PRE_LABEL";
+   case VOL_LABEL:
+      return "VOL_LABEL";
+   case EOM_LABEL:
+      return "EOM_LABEL";
+   case SOS_LABEL:
+      return "SOS_LABEL";
+   case EOS_LABEL:
+      return "EOS_LABEL";
+   case EOT_LABEL:
+      return "EOT_LABEL";
+      break;
+   case SOB_LABEL:
+      return "SOB_LABEL";
+      break;
+   case EOB_LABEL:
+      return "EOB_LABEL";
+      break;
+   default:
+     sprintf(buf, _("unknown: %d"), fi);
+     return buf;
+   }
+}
+
+/*
+ * Convert a Stream ID into a printable
+ * ASCII string.  Not reentrant.
+
+ * A negative stream number represents
+ *   stream data that is continued from a
+ *   record in the previous block.
+ * If the FileIndex is negative, we are
+ *   dealing with a Label, hence the
+ *   stream is the JobId.
+ */
+const char *stream_to_ascii(char *buf, int stream, int fi)
+{
+
+   if (fi < 0) {
+      sprintf(buf, "%d", stream);
+      return buf;
+   }
+   if (stream < 0) {
+      stream = -stream;
+      stream &= STREAMMASK_TYPE;
+      /* Stream was negative => all are continuation items */
+      switch (stream) {
+      case STREAM_UNIX_ATTRIBUTES:
+         return "contUATTR";
+      case STREAM_FILE_DATA:
+         return "contDATA";
+      case STREAM_WIN32_DATA:
+         return "contWIN32-DATA";
+      case STREAM_WIN32_GZIP_DATA:
+         return "contWIN32-GZIP";
+      case STREAM_WIN32_COMPRESSED_DATA:
+         return "contWIN32-COMPRESSED";
+      case STREAM_MD5_DIGEST:
+         return "contMD5";
+      case STREAM_SHA1_DIGEST:
+         return "contSHA1";
+      case STREAM_GZIP_DATA:
+         return "contGZIP";
+      case STREAM_COMPRESSED_DATA:
+         return "contCOMPRESSED";
+      case STREAM_UNIX_ATTRIBUTES_EX:
+         return "contUNIX-ATTR-EX";
+      case STREAM_RESTORE_OBJECT:
+         return "contRESTORE-OBJECT";
+      case STREAM_SPARSE_DATA:
+         return "contSPARSE-DATA";
+      case STREAM_SPARSE_GZIP_DATA:
+         return "contSPARSE-GZIP";
+      case STREAM_SPARSE_COMPRESSED_DATA:
+         return "contSPARSE-COMPRESSED";
+      case STREAM_PROGRAM_NAMES:
+         return "contPROG-NAMES";
+      case STREAM_PROGRAM_DATA:
+         return "contPROG-DATA";
+      case STREAM_MACOS_FORK_DATA:
+         return "contMACOS-RSRC";
+      case STREAM_HFSPLUS_ATTRIBUTES:
+         return "contHFSPLUS-ATTR";
+      case STREAM_SHA256_DIGEST:
+         return "contSHA256";
+      case STREAM_SHA512_DIGEST:
+         return "contSHA512";
+      case STREAM_SIGNED_DIGEST:
+         return "contSIGNED-DIGEST";
+      case STREAM_ENCRYPTED_SESSION_DATA:
+         return "contENCRYPTED-SESSION-DATA";
+      case STREAM_ENCRYPTED_FILE_DATA:
+         return "contENCRYPTED-FILE";
+      case STREAM_ENCRYPTED_FILE_GZIP_DATA:
+         return "contENCRYPTED-GZIP";
+      case STREAM_ENCRYPTED_FILE_COMPRESSED_DATA:
+         return "contENCRYPTED-COMPRESSED";
+      case STREAM_ENCRYPTED_WIN32_DATA:
+         return "contENCRYPTED-WIN32-DATA";
+      case STREAM_ENCRYPTED_WIN32_GZIP_DATA:
+         return "contENCRYPTED-WIN32-GZIP";
+      case STREAM_ENCRYPTED_WIN32_COMPRESSED_DATA:
+         return "contENCRYPTED-WIN32-COMPRESSED";
+      case STREAM_ENCRYPTED_MACOS_FORK_DATA:
+         return "contENCRYPTED-MACOS-RSRC";
+      case STREAM_PLUGIN_NAME:
+         return "contPLUGIN-NAME";
+
+      default:
+         sprintf(buf, "%d", -stream);
+         return buf;
+      }
+   }
+
+   switch (stream & STREAMMASK_TYPE) {
+   case STREAM_UNIX_ATTRIBUTES:
+      return "UATTR";
+   case STREAM_FILE_DATA:
+      return "DATA";
+   case STREAM_WIN32_DATA:
+      return "WIN32-DATA";
+   case STREAM_WIN32_GZIP_DATA:
+      return "WIN32-GZIP";
+   case STREAM_WIN32_COMPRESSED_DATA:
+      return "WIN32-COMPRESSED";
+   case STREAM_MD5_DIGEST:
+      return "MD5";
+   case STREAM_SHA1_DIGEST:
+      return "SHA1";
+   case STREAM_GZIP_DATA:
+      return "GZIP";
+   case STREAM_COMPRESSED_DATA:
+      return "COMPRESSED";
+   case STREAM_UNIX_ATTRIBUTES_EX:
+      return "UNIX-ATTR-EX";
+   case STREAM_RESTORE_OBJECT:
+      return "RESTORE-OBJECT";
+   case STREAM_SPARSE_DATA:
+      return "SPARSE-DATA";
+   case STREAM_SPARSE_GZIP_DATA:
+      return "SPARSE-GZIP";
+   case STREAM_SPARSE_COMPRESSED_DATA:
+      return "SPARSE-COMPRESSED";
+   case STREAM_PROGRAM_NAMES:
+      return "PROG-NAMES";
+   case STREAM_PROGRAM_DATA:
+      return "PROG-DATA";
+   case STREAM_PLUGIN_NAME:
+      return "PLUGIN-NAME";
+   case STREAM_MACOS_FORK_DATA:
+      return "MACOS-RSRC";
+   case STREAM_HFSPLUS_ATTRIBUTES:
+      return "HFSPLUS-ATTR";
+   case STREAM_SHA256_DIGEST:
+      return "SHA256";
+   case STREAM_SHA512_DIGEST:
+      return "SHA512";
+   case STREAM_SIGNED_DIGEST:
+      return "SIGNED-DIGEST";
+   case STREAM_ENCRYPTED_SESSION_DATA:
+      return "ENCRYPTED-SESSION-DATA";
+   case STREAM_ENCRYPTED_FILE_DATA:
+      return "ENCRYPTED-FILE";
+   case STREAM_ENCRYPTED_FILE_GZIP_DATA:
+      return "ENCRYPTED-GZIP";
+   case STREAM_ENCRYPTED_FILE_COMPRESSED_DATA:
+      return "ENCRYPTED-COMPRESSED";
+   case STREAM_ENCRYPTED_WIN32_DATA:
+      return "ENCRYPTED-WIN32-DATA";
+   case STREAM_ENCRYPTED_WIN32_GZIP_DATA:
+      return "ENCRYPTED-WIN32-GZIP";
+   case STREAM_ENCRYPTED_WIN32_COMPRESSED_DATA:
+      return "ENCRYPTED-WIN32-COMPRESSED";
+   case STREAM_ENCRYPTED_MACOS_FORK_DATA:
+      return "ENCRYPTED-MACOS-RSRC";
+
+   default:
+      sprintf(buf, "%d", stream);
+      return buf;
+   }
+}
+
+/*
+ * Return a new record entity
+ */
+DEV_RECORD *new_record(void)
+{
+   DEV_RECORD *rec;
+
+   rec = (DEV_RECORD *)get_memory(sizeof(DEV_RECORD));
+   memset(rec, 0, sizeof(DEV_RECORD));
+   rec->data = get_pool_memory(PM_MESSAGE);
+   rec->wstate = st_none;
+   rec->rstate = st_none;
+   return rec;
+}
+
+void empty_record(DEV_RECORD *rec)
+{
+   rec->File = rec->Block = 0;
+   rec->VolSessionId = rec->VolSessionTime = 0;
+   rec->FileIndex = rec->Stream = 0;
+   rec->data_len = rec->remainder = 0;
+   rec->state_bits &= ~(REC_PARTIAL_RECORD|REC_BLOCK_EMPTY|REC_NO_MATCH|REC_CONTINUATION);
+   rec->wstate = st_none;
+   rec->rstate = st_none;
+}
+
+/*
+ * Free the record entity
+ *
+ */
+void free_record(DEV_RECORD *rec)
+{
+   Dmsg0(950, "Enter free_record.\n");
+   if (rec->data) {
+      free_pool_memory(rec->data);
+   }
+   Dmsg0(950, "Data buf is freed.\n");
+   free_pool_memory((POOLMEM *)rec);
+   Dmsg0(950, "Leave free_record.\n");
+}
+
+/*
+ * Test if we can write whole record to the block
+ *
+ *  Returns: false on failure
+ *           true  on success (all bytes can be written)
+ */
+bool can_write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec)
+{
+   uint32_t remlen;
+
+   remlen = block->buf_len - block->binbuf;
+   if (rec->remainder == 0) {
+      if (remlen >= WRITE_RECHDR_LENGTH) {
+         remlen -= WRITE_RECHDR_LENGTH;
+         rec->remainder = rec->data_len;
+      } else {
+         return false;
+      }
+   } else {
+      return false;
+   }
+   if (rec->remainder > 0 && remlen < rec->remainder) {
+      return false;
+   }
+   return true;
+}
+
+uint64_t get_record_address(DEV_RECORD *rec)
+{
+   return ((uint64_t)rec->File)<<32 | rec->Block;
+}
diff --git a/src/stored/record_write.c b/src/stored/record_write.c
new file mode 100644
index 0000000..e078e7f
--- /dev/null
+++ b/src/stored/record_write.c
@@ -0,0 +1,353 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 20xx-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ *
+ *   record_write.c -- Volume (tape/disk) record write functions
+ *
+ *            Kern Sibbald, April MMI
+ *              added BB02 format October MMII
+ *              added aligned format November MMXII
+ *
+ */
+
+
+#include "bacula.h"
+#include "stored.h"
+
+/* Imported functions */
+
+static const int dbgep = 250;         /* debug execution path */
+static const int dbgel = 250;         /* debug Enter/Leave code */
+
+struct rechdr {
+   int32_t FileIndex;
+   uint32_t data_len;
+   uint32_t reclen;
+   int32_t Stream;
+   int32_t oStream;
+};
+
+/*
+ * Flush block to disk
+ */
+bool flush_block(DCR *dcr)
+{
+   bool rtn = false;
+
+   if (!is_block_empty(dcr->block)) {
+      Dmsg0(dbgep, "=== wpath 53 flush_block\n");
+      Dmsg3(190, "Call flush_block BlockAddr=%lld nbytes=%d block=%x\n",
+         dcr->block->BlockAddr, dcr->block->binbuf, dcr->block);
+      dump_block(dcr->block, "Flush_block");
+      if (dcr->jcr->is_canceled() || !dcr->write_block_to_device()) {
+         Dmsg0(dbgep, "=== wpath 54 flush_block\n");
+         Dmsg0(190, "Failed to write block to device, return false.\n");
+         goto get_out;
+      }
+      empty_block(dcr->block);
+   }
+   rtn = true;
+
+get_out:
+   return rtn;
+}
+
+/*
+ * Write a header record to the block.
+ */
+static bool write_header_to_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
+{
+   ser_declare;
+
+   Dmsg0(dbgep, "=== wpath 11 write_header_to_block\n");
+   rec->remlen = block->buf_len - block->binbuf;
+   /* Require enough room to write a full header */
+   if (rec->remlen < WRITE_RECHDR_LENGTH) {
+      Dmsg0(dbgep, "=== wpath 12 write_header_to_block\n");
+      Dmsg4(190, "Fail remlen=%d<%d reclen buf_len=%d binbuf=%d\n",
+         rec->remlen, WRITE_RECHDR_LENGTH, block->buf_len, block->binbuf);
+      rec->remainder = rec->data_len + WRITE_RECHDR_LENGTH;
+      return false;
+   }
+   ser_begin(block->bufp, WRITE_RECHDR_LENGTH);
+   if (BLOCK_VER == 1) {
+      Dmsg0(dbgep, "=== wpath 13 write_header_to_block\n");
+      ser_uint32(rec->VolSessionId);
+      ser_uint32(rec->VolSessionTime);
+   } else {
+      Dmsg0(dbgep, "=== wpath 14 write_header_to_block\n");
+      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;
+   rec->remlen -= WRITE_RECHDR_LENGTH;
+   rec->remainder = rec->data_len;
+   if (rec->FileIndex > 0) {
+      Dmsg0(dbgep, "=== wpath 15 write_header_to_block\n");
+      /* If data record, update what we have in this block */
+      if (block->FirstIndex == 0) {
+         Dmsg0(dbgep, "=== wpath 16 write_header_to_block\n");
+         block->FirstIndex = rec->FileIndex;
+      }
+      block->LastIndex = rec->FileIndex;
+   }
+
+   //dump_block(block, "Add header");
+   return true;
+}
+
+/*
+ * If the prior block was not big enough to hold the
+ *  whole record, write a continuation header record.
+ */
+static void write_continue_header_to_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
+{
+   ser_declare;
+
+   Dmsg0(dbgep, "=== wpath 17 write_cont_hdr_to_block\n");
+   rec->remlen = block->buf_len - block->binbuf;
+   /*
+    * 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.
+    */
+   ser_begin(block->bufp, WRITE_RECHDR_LENGTH);
+   if (BLOCK_VER == 1) {
+      Dmsg0(dbgep, "=== wpath 18 write_cont_hdr_to_block\n");
+      ser_uint32(rec->VolSessionId);
+      ser_uint32(rec->VolSessionTime);
+   } else {
+      Dmsg0(dbgep, "=== wpath 19 write_cont_hdr_to_block\n");
+      block->VolSessionId = rec->VolSessionId;
+      block->VolSessionTime = rec->VolSessionTime;
+   }
+   ser_int32(rec->FileIndex);
+   if (rec->remainder > rec->data_len) {
+      Dmsg0(dbgep, "=== wpath 20 write_cont_hdr_to_block\n");
+      ser_int32(rec->Stream);      /* normal full header */
+      ser_uint32(rec->data_len);
+      rec->remainder = rec->data_len; /* must still do data record */
+   } else {
+      Dmsg0(dbgep, "=== wpath 21 write_cont_hdr_to_block\n");
+      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) {
+      Dmsg0(dbgep, "=== wpath 22 write_cont_hdr_to_block\n");
+      /* If data record, update what we have in this block */
+      if (block->FirstIndex == 0) {
+         Dmsg0(dbgep, "=== wpath 23 write_cont_hdr_to_block\n");
+         block->FirstIndex = rec->FileIndex;
+      }
+      block->LastIndex = rec->FileIndex;
+   }
+   //dump_block(block, "Add cont header");
+}
+
+/*
+ */
+static bool write_data_to_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
+{
+   Dmsg0(dbgep, "=== wpath 24 write_data_to_block\n");
+   rec->remlen = block->buf_len - block->binbuf;
+   /* Write as much of data as possible */
+   if (rec->remlen >= rec->remainder) {
+      Dmsg0(dbgep, "=== wpath 25 write_data_to_block\n");
+      memcpy(block->bufp, rec->data+rec->data_len-rec->remainder,
+             rec->remainder);
+      block->bufp += rec->remainder;
+      block->binbuf += rec->remainder;
+      rec->remainder = 0;
+   } else {
+      Dmsg0(dbgep, "=== wpath 26 write_data_to_block\n");
+      memcpy(block->bufp, rec->data+rec->data_len-rec->remainder,
+             rec->remlen);
+      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 -- handles writing out full
+ *   blocks by writing them to the device.
+ *
+ *  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)
+{
+   Enter(dbgel);
+   Dmsg0(dbgep, "=== wpath 33 write_record\n");
+   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 (jcr->is_canceled()) {
+         Leave(dbgel);
+         return false;
+      }
+      if (!write_block_to_device()) {
+         Dmsg0(dbgep, "=== wpath 34 write_record\n");
+         Pmsg2(000, "Got write_block_to_dev error on device %s. %s\n",
+            dev->print_name(), dev->bstrerror());
+         Leave(dbgel);
+         return false;
+      }
+      Dmsg2(850, "!write_record_to_block data_len=%d rem=%d\n", rec->data_len,
+                 rec->remainder);
+   }
+   Leave(dbgel);
+   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];
+   bool rtn;
+
+   Enter(dbgel);
+   Dmsg0(dbgep, "=== wpath 35 enter write_record_to_block\n");
+   Dmsg7(200, "write_record_to_block() state=%d FI=%s SessId=%d"
+         " Strm=%s len=%d rem=%d remainder=%d\n", rec->wstate,
+         FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
+         stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len,
+         rec->remlen, rec->remainder);
+   Dmsg4(160, "write_rec Strm=%s len=%d rem=%d remainder=%d\n",
+         stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len,
+         rec->remlen, rec->remainder);
+
+   for ( ;; ) {
+      Dmsg0(dbgep, "=== wpath 37 top of for loop\n");
+      ASSERT(dcr->block->binbuf == (uint32_t) (dcr->block->bufp - dcr->block->buf));
+      ASSERT(dcr->block->buf_len >= dcr->block->binbuf);
+
+      switch (rec->wstate) {
+      case st_none:
+         Dmsg0(dbgep, "=== wpath 38 st_none\n");
+         /* Figure out what to do */
+         rec->wstate = st_header;
+         if (rec->FileIndex < 0) {
+            /* Label record  */
+            rec->wstate = st_header;
+            continue;
+         }
+         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.
+          */
+         Dmsg0(dbgep, "=== wpath 42 st_header\n");
+         if (!write_header_to_block(dcr, dcr->block, rec)) {
+            Dmsg0(dbgep, "=== wpath 43 st_header\n");
+            rec->wstate = st_cont_header;
+            goto fail_out;
+         }
+         Dmsg0(dbgep, "=== wpath 44 st_header\n");
+         rec->wstate = st_data;
+         continue;
+
+      case st_cont_header:
+         Dmsg0(dbgep, "=== wpath 45 st_cont_header\n");
+         write_continue_header_to_block(dcr, dcr->block, rec);
+         rec->wstate = st_data;
+         if (rec->remlen == 0) {
+            Dmsg0(dbgep, "=== wpath 46 st_cont_header\n");
+            goto fail_out;
+         }
+         continue;
+
+      /*
+       * We come here only once for each record
+       */
+      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.
+          */
+         Dmsg0(dbgep, "=== wpath 47 st_data\n");
+         if (rec->remainder > 0) {
+            Dmsg0(dbgep, "=== wpath 48 st_data\n");
+            if (!write_data_to_block(dcr, dcr->block, rec)) {
+               Dmsg0(dbgep, "=== wpath 49 st_data\n");
+               rec->wstate = st_cont_header;
+               goto fail_out;
+            }
+         }
+         rec->remainder = 0;                /* did whole transfer */
+         rec->wstate = st_none;
+         goto get_out;
+
+      default:
+         Dmsg0(dbgep, "=== wpath 67!!!! default\n");
+         Dmsg0(50, "Something went wrong. Default state.\n");
+         rec->wstate = st_none;
+         goto get_out;
+      }
+   }
+get_out:
+   rtn = true;
+   goto out;
+fail_out:
+   rtn = false;
+out:
+   Leave(dbgel);
+   return rtn;
+}
diff --git a/src/stored/reserve.c b/src/stored/reserve.c
index 10cc4f8..30719a7 100644
--- a/src/stored/reserve.c
+++ b/src/stored/reserve.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Drive reservation functions for Storage Daemon
  *
- *   Kern Sibbald, MM
+ *   Written by Kern Sibbald, MM
  *
  *   Split from job.c and acquire.c June 2005
  *
@@ -40,41 +28,30 @@
 const int dbglvl = 150;
 
 static brwlock_t reservation_lock;
+int reservations_lock_count = 0;
 
 /* Forward referenced functions */
-static int can_reserve_drive(DCR *dcr, RCTX &rctx);
-static int reserve_device(RCTX &rctx);
-static bool reserve_device_for_read(DCR *dcr);
+static int  can_reserve_drive(DCR *dcr, RCTX &rctx);
+static bool is_vol_in_autochanger(RCTX &rctx, VOLRES *vol);
 static bool reserve_device_for_append(DCR *dcr, RCTX &rctx);
+static bool reserve_device_for_read(DCR *dcr);
 static bool use_device_cmd(JCR *jcr);
-static void queue_reserve_message(JCR *jcr);
+static int  reserve_device(RCTX &rctx);
 static void pop_reserve_messages(JCR *jcr);
+static void queue_reserve_message(JCR *jcr);
 //void switch_device(DCR *dcr, DEVICE *dev);
 
 /* Requests from the Director daemon */
 static char use_storage[]  = "use storage=%127s media_type=%127s "
-   "pool_name=%127s pool_type=%127s append=%d copy=%d stripe=%d\n";
+    "pool_name=%127s pool_type=%127s append=%d copy=%d stripe=%d\n";
 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 or no matching Media Type.\n";
+     " resources or no matching Media Type.\n";
 static char BAD_use[]   = "3913 Bad use command: %s\n";
 
-bool use_cmd(JCR *jcr) 
-{
-   /*
-    * Get the device, media, and pool information
-    */
-   if (!use_device_cmd(jcr)) {
-      jcr->setJobStatus(JS_ErrorTerminated);
-      memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key));
-      return false;
-   }
-   return true;
-}
-
 /*
  * This allows a given thread to recursively call lock_reservations.
  *   It must, of course, call unlock_... the same number of times.
@@ -91,13 +68,6 @@ void init_reservations_lock()
    init_vol_list_lock();
 }
 
-void term_reservations_lock()
-{
-   rwl_destroy(&reservation_lock);
-   term_vol_list_lock();
-}
-
-int reservations_lock_count = 0;
 
 /* This applies to a drive and to Volumes */
 void _lock_reservations(const char *file, int line)
@@ -122,11 +92,10 @@ void _unlock_reservations()
    }
 }
 
-void DCR::set_reserved()
+void term_reservations_lock()
 {
-   m_reserved = true;
-   Dmsg2(dbglvl, "Inc reserve=%d dev=%s\n", dev->num_reserved(), dev->print_name());
-   dev->inc_reserved();
+   rwl_destroy(&reservation_lock);
+   term_vol_list_lock();
 }
 
 void DCR::clear_reserved()
@@ -138,18 +107,37 @@ void DCR::clear_reserved()
    }
 }
 
-/* 
+void DCR::set_reserved_for_append()
+{
+   m_reserved = true;
+   dev->set_append_reserve();
+   Dmsg2(dbglvl, "Inc reserve=%d dev=%s\n", dev->num_reserved(), dev->print_name());
+   dev->inc_reserved();
+}
+
+void DCR::set_reserved_for_read()
+{
+   m_reserved = true;
+   dev->set_read_reserve();
+   Dmsg2(dbglvl, "Inc reserve=%d dev=%s\n", dev->num_reserved(), dev->print_name());
+   dev->inc_reserved();
+}
+
+/*
  * Remove any reservation from a drive and tell the system
  *  that the volume is unused at least by us.
  */
-void DCR::unreserve_device()
+void DCR::unreserve_device(bool locked)
 {
-   dev->Lock();
+   if (!locked) {
+      dev->Lock();
+   }
    if (is_reserved()) {
       clear_reserved();
       reserved_volume = false;
       /* If we set read mode in reserving, remove it */
       if (dev->can_read()) {
+         remove_read_volume(jcr, this->VolumeName);
          dev->clear_read();
       }
       if (dev->num_writers < 0) {
@@ -161,7 +149,22 @@ void DCR::unreserve_device()
          volume_unused(this);
       }
    }
-   dev->Unlock();
+   if (!locked) {
+      dev->Unlock();
+   }
+}
+
+bool use_cmd(JCR *jcr)
+{
+   /*
+    * Get the device, media, and pool information
+    */
+   if (!use_device_cmd(jcr)) {
+      jcr->setJobStatus(JS_ErrorTerminated);
+      memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key));
+      return false;
+   }
+   return true;
 }
 
 /*
@@ -180,7 +183,7 @@ static bool use_device_cmd(JCR *jcr)
    POOL_MEM store_name, dev_name, media_type, pool_name, pool_type;
    BSOCK *dir = jcr->dir_bsock;
    int32_t append;
-   bool ok;       
+   bool ok;
    int32_t Copy, Stripe;
    DIRSTORE *store;
    RCTX rctx;
@@ -193,11 +196,11 @@ static bool use_device_cmd(JCR *jcr)
     *   use_device for each device that it wants to use.
     */
    dirstore = New(alist(10, not_owned_by_alist));
-   jcr->reserve_msgs = New(alist(10, not_owned_by_alist));  
+   jcr->reserve_msgs = New(alist(10, not_owned_by_alist));
    do {
       Dmsg1(dbglvl, "<dird: %s", dir->msg);
-      ok = sscanf(dir->msg, use_storage, store_name.c_str(), 
-                  media_type.c_str(), pool_name.c_str(), 
+      ok = sscanf(dir->msg, use_storage, store_name.c_str(),
+                  media_type.c_str(), pool_name.c_str(),
                   pool_type.c_str(), &append, &Copy, &Stripe) == 7;
       if (!ok) {
          break;
@@ -235,12 +238,12 @@ static bool use_device_cmd(JCR *jcr)
    }  while (ok && dir->recv() >= 0);
 
 #ifdef xxxx
-   /* Developer debug code */
+   /* Developers debug code */
    char *device_name;
    if (debug_level >= dbglvl) {
       foreach_alist(store, dirstore) {
-         Dmsg5(dbglvl, "Storage=%s media_type=%s pool=%s pool_type=%s append=%d\n", 
-            store->name, store->media_type, store->pool_name, 
+         Dmsg5(dbglvl, "Storage=%s media_type=%s pool=%s pool_type=%s append=%d\n",
+            store->name, store->media_type, store->pool_name,
             store->pool_type, store->append);
          foreach_alist(device_name, store->device) {
             Dmsg1(dbglvl, "     Device=%s\n", device_name);
@@ -250,24 +253,24 @@ static bool use_device_cmd(JCR *jcr)
 #endif
 
    init_jcr_device_wait_timers(jcr);
-   jcr->dcr = new_dcr(jcr, NULL, NULL);         /* get a dcr */
+   jcr->dcr = new_dcr(jcr, NULL, NULL, !rctx.append);   /* get a dcr */
    if (!jcr->dcr) {
       BSOCK *dir = jcr->dir_bsock;
       dir->fsend(_("3939 Could not get dcr\n"));
       Dmsg1(dbglvl, ">dird: %s", dir->msg);
       ok = false;
    }
-   /*                    
+   /*
     * At this point, we have a list of all the Director's Storage
     *  resources indicated for this Job, which include Pool, PoolType,
-    *  storage name, and Media type.     
+    *  storage name, and Media type.
     * Then for each of the Storage resources, we have a list of
     *  device names that were given.
     *
     * Wiffle through them and find one that can do the backup.
     */
    if (ok) {
-      int wait_for_device_retries = 0;  
+      int wait_for_device_retries = 0;
       int repeat = 0;
       bool fail = false;
       rctx.notify_dir = true;
@@ -293,7 +296,7 @@ static bool use_device_cmd(JCR *jcr)
              */
             rctx.num_writers = 20000000;   /* start with impossible number */
             rctx.low_use_drive = NULL;
-            rctx.PreferMountedVols = false;                
+            rctx.PreferMountedVols = false;
             rctx.exact_match = false;
             rctx.autochanger_only = true;
             if ((ok = find_suitable_device_for_job(jcr, rctx))) {
@@ -335,7 +338,7 @@ static bool use_device_cmd(JCR *jcr)
          }
          /* Keep reservations locked *except* during wait_for_device() */
          unlock_reservations();
-         /*     
+         /*
           * The idea of looping on repeat a few times it to ensure
           * that if there is some subtle timing problem between two
           * jobs, we will simply try again, and most likely succeed.
@@ -344,15 +347,16 @@ static bool use_device_cmd(JCR *jcr)
           */
          if (repeat++ > 1) {              /* try algorithm 3 times */
             bmicrosleep(30, 0);           /* wait a bit */
-            Dmsg0(dbglvl, "repeat reserve algorithm\n");
-         } else if (!rctx.suitable_device || !wait_for_device(jcr, wait_for_device_retries)) {
-            Dmsg0(dbglvl, "Fail. !suitable_device || !wait_for_device\n");
+            Dmsg1(100, "repeat reserve algorithm JobId=%d\n", jcr->JobId);
+         } else if (!rctx.suitable_device || !wait_for_any_device(jcr, wait_for_device_retries)) {
+            Dmsg0(100, "Fail. !suitable_device || !wait_for_device\n");
             fail = true;
-         }   
+         }
          lock_reservations();
          dir->signal(BNET_HEARTBEAT);  /* Inform Dir that we are alive */
       }
       unlock_reservations();
+
       if (!ok) {
          /*
           * If we get here, there are no suitable devices available, which
@@ -361,7 +365,7 @@ static bool use_device_cmd(JCR *jcr)
           */
          unbash_spaces(dir->msg);
          pm_strcpy(jcr->errmsg, dir->msg);
-         Jmsg(jcr, M_FATAL, 0, _("Device reservation failed for JobId=%d: %s\n"), 
+         Jmsg(jcr, M_FATAL, 0, _("Device reservation failed for JobId=%d: %s\n"),
               jcr->JobId, jcr->errmsg);
          dir->fsend(NO_device, dev_name.c_str());
 
@@ -379,33 +383,12 @@ static bool use_device_cmd(JCR *jcr)
    return ok;
 }
 
-
-/*
- * Walk through the autochanger resources and check if
- *  the volume is in one of them.
- * 
- * Returns:  true  if volume is in device
- *           false otherwise
- */
-static bool is_vol_in_autochanger(RCTX &rctx, VOLRES *vol)
-{
-   AUTOCHANGER *changer = vol->dev->device->changer_res;
-
-   /* Find resource, and make sure we were able to open it */
-   if (strcmp(rctx.device_name, changer->hdr.name) == 0) {
-      Dmsg1(dbglvl, "Found changer device %s\n", vol->dev->device->hdr.name);
-      return true;
-   }  
-   Dmsg1(dbglvl, "Incorrect changer device %s\n", changer->hdr.name);
-   return false;
-}
-
 /*
  * Search for a device suitable for this job.
- * Note, this routine sets sets rctx.suitable_device if any 
+ * Note, this routine sets sets rctx.suitable_device if any
  *   device exists within the SD.  The device may not be actually
  *   useable.
- * It also returns if it finds a useable device.  
+ * It also returns if it finds a useable device.
  */
 bool find_suitable_device_for_job(JCR *jcr, RCTX &rctx)
 {
@@ -424,7 +407,7 @@ bool find_suitable_device_for_job(JCR *jcr, RCTX &rctx)
          rctx.PreferMountedVols, rctx.exact_match, rctx.suitable_device,
          rctx.autochanger_only, rctx.any_drive);
 
-   /* 
+   /*
     * If the appropriate conditions of this if are met, namely that
     *  we are appending and the user wants mounted drive (or we
     *  force try a mounted drive because they are all busy), we
@@ -457,6 +440,9 @@ bool find_suitable_device_for_job(JCR *jcr, RCTX &rctx)
                rctx.device_name = device_name;
                rctx.device = vol->dev->device;
 
+               if (vol->dev->read_only) {
+                  continue;
+               }
                if (vol->dev->is_autochanger()) {
                   Dmsg1(dbglvl, "vol=%s is in changer\n", vol->vol_name);
                   if (!is_vol_in_autochanger(rctx, vol) || !vol->dev->autoselect) {
@@ -503,8 +489,8 @@ bool find_suitable_device_for_job(JCR *jcr, RCTX &rctx)
       return true;
    }
 
-   /* 
-    * No reserved volume we can use, so now search for an available device.  
+   /*
+    * No reserved volume we can use, so now search for an available device.
     *
     * For each storage device that the user specified, we
     *  search and see if there is a resource for that device.
@@ -514,7 +500,7 @@ bool find_suitable_device_for_job(JCR *jcr, RCTX &rctx)
       foreach_alist(device_name, store->device) {
          int stat;
          rctx.device_name = device_name;
-         stat = search_res_for_device(rctx); 
+         stat = search_res_for_device(rctx);
          if (stat == 1) {             /* found available device */
             Dmsg1(dbglvl, "available device found=%s\n", device_name);
             ok = true;
@@ -542,7 +528,7 @@ bool find_suitable_device_for_job(JCR *jcr, RCTX &rctx)
  * Search for a particular storage device with particular storage
  *  characteristics (MediaType).
  */
-int search_res_for_device(RCTX &rctx) 
+int search_res_for_device(RCTX &rctx)
 {
    AUTOCHANGER *changer;
    int stat;
@@ -556,6 +542,9 @@ int search_res_for_device(RCTX &rctx)
          /* Try each device in this AutoChanger */
          foreach_alist(rctx.device, changer->device) {
             Dmsg1(dbglvl, "Try changer device %s\n", rctx.device->hdr.name);
+            if (rctx.store->append && rctx.device->read_only) {
+               continue;
+            }
             if (!rctx.device->autoselect) {
                Dmsg1(100, "Device %s not autoselect skipped.\n",
                rctx.device->hdr.name);
@@ -566,11 +555,11 @@ int search_res_for_device(RCTX &rctx)
                continue;
             }
             /* Debug code */
-            if (rctx.store->append == SD_APPEND) {
-               Dmsg2(dbglvl, "Device %s reserved=%d for append.\n", 
+            if (rctx.store->append) {
+               Dmsg2(dbglvl, "Device %s reserved=%d for append.\n",
                   rctx.device->hdr.name, rctx.jcr->dcr->dev->num_reserved());
             } else {
-               Dmsg2(dbglvl, "Device %s reserved=%d for read.\n", 
+               Dmsg2(dbglvl, "Device %s reserved=%d for read.\n",
                   rctx.device->hdr.name, rctx.jcr->read_dcr->dev->num_reserved());
             }
             return stat;
@@ -589,11 +578,11 @@ int search_res_for_device(RCTX &rctx)
                continue;
             }
             /* Debug code */
-            if (rctx.store->append == SD_APPEND) {
-               Dmsg2(dbglvl, "Device %s reserved=%d for append.\n", 
+            if (rctx.store->append) {
+               Dmsg2(dbglvl, "Device %s reserved=%d for append.\n",
                   rctx.device->hdr.name, rctx.jcr->dcr->dev->num_reserved());
             } else {
-               Dmsg2(dbglvl, "Device %s reserved=%d for read.\n", 
+               Dmsg2(dbglvl, "Device %s reserved=%d for read.\n",
                   rctx.device->hdr.name, rctx.jcr->read_dcr->dev->num_reserved());
             }
             return stat;
@@ -604,6 +593,27 @@ int search_res_for_device(RCTX &rctx)
 }
 
 /*
+ * Walk through the autochanger resources and check if
+ *  the volume is in one of them.
+ *
+ * Returns:  true  if volume is in device
+ *           false otherwise
+ */
+static bool is_vol_in_autochanger(RCTX &rctx, VOLRES *vol)
+{
+   AUTOCHANGER *changer = vol->dev->device->changer_res;
+
+   /* Find resource, and make sure we were able to open it */
+   if (changer && strcmp(rctx.device_name, changer->hdr.name) == 0) {
+      Dmsg1(dbglvl, "Found changer device %s\n", vol->dev->device->hdr.name);
+      return true;
+   }
+   Dmsg1(dbglvl, "Incorrect changer device %s\n", changer->hdr.name);
+   return false;
+}
+
+
+/*
  *  Try to reserve a specific device.
  *
  *  Returns: 1 -- OK, have DCR
@@ -638,14 +648,14 @@ static int reserve_device(RCTX &rctx)
               rctx.device_name);
       }
       return -1;  /* no use waiting */
-   }  
+   }
 
    rctx.suitable_device = true;
    Dmsg1(dbglvl, "try reserve %s\n", rctx.device->hdr.name);
    if (rctx.store->append) {
-      dcr = new_dcr(rctx.jcr, rctx.jcr->dcr, rctx.device->dev);
+      dcr = new_dcr(rctx.jcr, rctx.jcr->dcr, rctx.device->dev, SD_APPEND);
    } else {
-      dcr = new_dcr(rctx.jcr, rctx.jcr->read_dcr, rctx.device->dev);
+      dcr = new_dcr(rctx.jcr, rctx.jcr->read_dcr, rctx.device->dev, SD_READ);
    }
    if (!dcr) {
       BSOCK *dir = rctx.jcr->dir_bsock;
@@ -657,8 +667,8 @@ static int reserve_device(RCTX &rctx)
    bstrncpy(dcr->pool_type, rctx.store->pool_type, name_len);
    bstrncpy(dcr->media_type, rctx.store->media_type, name_len);
    bstrncpy(dcr->dev_name, rctx.device_name, name_len);
-   if (rctx.store->append == SD_APPEND) {
-      Dmsg2(dbglvl, "call reserve for append: have_vol=%d vol=%s\n", rctx.have_volume, rctx.VolumeName);                                   
+   if (rctx.store->append) {
+      Dmsg2(dbglvl, "call reserve for append: have_vol=%d vol=%s\n", rctx.have_volume, rctx.VolumeName);
       ok = reserve_device_for_append(dcr, rctx);
       if (!ok) {
          goto bail_out;
@@ -668,7 +678,7 @@ static int reserve_device(RCTX &rctx)
       Dmsg5(dbglvl, "Reserved=%d dev_name=%s mediatype=%s pool=%s ok=%d\n",
                dcr->dev->num_reserved(),
                dcr->dev_name, dcr->media_type, dcr->pool_name, ok);
-      Dmsg3(dbglvl, "Vol=%s num_writers=%d, have_vol=%d\n", 
+      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 for append.\n");
@@ -686,6 +696,7 @@ static int reserve_device(RCTX &rctx)
             rctx.have_volume = true;
             Dmsg1(dbglvl, "looking for Volume=%s\n", rctx.VolumeName);
          } else {
+            dcr->dev->clear_wait();
             Dmsg0(dbglvl, "No next volume found\n");
             rctx.have_volume = false;
             rctx.VolumeName[0] = 0;
@@ -699,7 +710,7 @@ static int reserve_device(RCTX &rctx)
             if (dcr->found_in_use() && !rctx.PreferMountedVols) {
                rctx.PreferMountedVols = true;
                if (dcr->VolumeName[0]) {
-                  dcr->unreserve_device();
+                  dcr->unreserve_device(false);
                }
                goto bail_out;
             }
@@ -709,14 +720,14 @@ static int reserve_device(RCTX &rctx)
              *  drive, and in that case, the call above to find the next
              *  volume will fail because in attempting to reserve the Volume
              *  the code will realize that we already have a tape mounted,
-             *  and it will fail.  This *should* only happen if there are 
+             *  and it will fail.  This *should* only happen if there are
              *  writers, thus the following test.  In that case, we simply
              *  bail out, and continue waiting, rather than plunging on
-             *  and hoping that the operator can resolve the problem. 
+             *  and hoping that the operator can resolve the problem.
              */
             if (dcr->dev->num_writers != 0) {
                if (dcr->VolumeName[0]) {
-                  dcr->unreserve_device();
+                  dcr->unreserve_device(false);
                }
                goto bail_out;
             }
@@ -742,6 +753,9 @@ static int reserve_device(RCTX &rctx)
       bash_spaces(dev_name);
       ok = dir->fsend(OK_device, dev_name.c_str());  /* Return real device name */
       Dmsg1(dbglvl, ">dird: %s", dir->msg);
+      if (!ok) {
+         dcr->unreserve_device(false);
+      }
    } else {
       ok = true;
    }
@@ -754,66 +768,14 @@ bail_out:
    return 0;
 }
 
-/*
- * We "reserve" the drive by setting the ST_READ bit. No one else
- *  should touch the drive until that is cleared.
- *  This allows the DIR to "reserve" the device before actually
- *  starting the job. 
- */
-static bool reserve_device_for_read(DCR *dcr)
-{
-   DEVICE *dev = dcr->dev;
-   JCR *jcr = dcr->jcr;
-   bool ok = false;
-
-   ASSERT(dcr);
-   if (job_canceled(jcr)) {
-      return false;
-   }
-
-   dev->Lock();  
-
-   if (dev->is_device_unmounted()) {             
-      Dmsg1(dbglvl, "Device %s is BLOCKED due to user unmount.\n", dev->print_name());
-      Mmsg(jcr->errmsg, _("3601 JobId=%u device %s is BLOCKED due to user unmount.\n"),
-           jcr->JobId, dev->print_name());
-      queue_reserve_message(jcr);
-      goto bail_out;
-   }
-
-   if (dev->is_busy()) {
-      Dmsg4(dbglvl, "Device %s is busy ST_READ=%d num_writers=%d reserved=%d.\n", 
-         dev->print_name(),
-         dev->state & ST_READ?1:0, dev->num_writers, dev->num_reserved());
-      Mmsg(jcr->errmsg, _("3602 JobId=%u device %s is busy (already reading/writing).\n"),
-            jcr->JobId, dev->print_name());
-      queue_reserve_message(jcr);
-      goto bail_out;
-   }
-
-   /* Note: on failure this returns jcr->errmsg properly edited */
-   if (generate_plugin_event(jcr, bsdEventDeviceTryOpen, dcr) != bRC_OK) {
-      queue_reserve_message(jcr);
-      goto bail_out;
-   }
-   dev->clear_append();
-   dev->set_read();
-   dcr->set_reserved();
-   ok = true;
-
-bail_out:
-   dev->Unlock();
-   return ok;
-}
-
 
 /*
  * We reserve the device for appending by incrementing
  *  num_reserved(). We do virtually all the same work that
  *  is done in acquire_device_for_append(), but we do
  *  not attempt to mount the device. This routine allows
- *  the DIR to reserve multiple devices before *really* 
- *  starting the job. It also permits the SD to refuse 
+ *  the DIR to reserve multiple devices before *really*
+ *  starting the job. It also permits the SD to refuse
  *  certain devices (not up, ...).
  *
  * Note, in reserving a device, if the device is for the
@@ -828,32 +790,32 @@ static bool reserve_device_for_append(DCR *dcr, RCTX &rctx)
    DEVICE *dev = dcr->dev;
    bool ok = false;
 
-   ASSERT(dcr);
+   ASSERT2(dcr, "No dcr in reserve_device_for_append!");
    if (job_canceled(jcr)) {
       return false;
    }
 
    dev->Lock();
 
-   /* If device is being read, we cannot write it */
-   if (dev->can_read()) {
-      Mmsg(jcr->errmsg, _("3603 JobId=%u device %s is busy reading.\n"), 
-         jcr->JobId, dev->print_name());
-      Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
+   /* If device is being read or reserved for read, we cannot write it */
+   if (dev->can_read() || dev->is_reserved_for_read()) {
+      Mmsg(jcr->errmsg, _("3603 JobId=%u %s device %s is busy reading.\n"),
+         jcr->JobId, dev->print_type(), dev->print_name());
       queue_reserve_message(jcr);
+      Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
       goto bail_out;
    }
 
    /* If device is unmounted, we are out of luck */
    if (dev->is_device_unmounted()) {
-      Mmsg(jcr->errmsg, _("3604 JobId=%u device %s is BLOCKED due to user unmount.\n"), 
-         jcr->JobId, dev->print_name());
-      Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
+      Mmsg(jcr->errmsg, _("3604 JobId=%u %s device %s is BLOCKED due to user unmount.\n"),
+         jcr->JobId, dev->print_type(), dev->print_name());
       queue_reserve_message(jcr);
+      Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
       goto bail_out;
    }
 
-   Dmsg1(dbglvl, "reserve_append device is %s\n", dev->print_name());
+   Dmsg2(dbglvl, "reserve_append %s device is %s\n", dev->print_type(), dev->print_name());
 
    /* Now do detailed tests ... */
    if (can_reserve_drive(dcr, rctx) != 1) {
@@ -866,7 +828,7 @@ static bool reserve_device_for_append(DCR *dcr, RCTX &rctx)
       queue_reserve_message(jcr);
       goto bail_out;
    }
-   dcr->set_reserved();
+   dcr->set_reserved_for_append();
    ok = true;
 
 bail_out:
@@ -874,30 +836,60 @@ bail_out:
    return ok;
 }
 
-static int is_pool_ok(DCR *dcr)
+/*
+ * We "reserve" the drive by setting the ST_READ bit. No one else
+ *  should touch the drive until that is cleared.
+ *  This allows the DIR to "reserve" the device before actually
+ *  starting the job.
+ */
+static bool reserve_device_for_read(DCR *dcr)
 {
    DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
+   bool ok = false;
 
-   /* Now check if we want the same Pool and pool type */
-   if (strcmp(dev->pool_name, dcr->pool_name) == 0 &&
-       strcmp(dev->pool_type, dcr->pool_type) == 0) {
-      /* OK, compatible device */
-      Dmsg1(dbglvl, "OK dev: %s num_writers=0, reserved, pool matches\n", dev->print_name());
-      return 1;
-   } else {
-      /* Drive Pool not suitable for us */
-      Mmsg(jcr->errmsg, _(
-"3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive %s.\n"), 
-            (uint32_t)jcr->JobId, dcr->pool_name, dev->pool_name,
-            dev->num_reserved(), dev->print_name());
-      Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
+   ASSERT2(dcr, "No dcr in reserve_device_for_read!");
+   if (job_canceled(jcr)) {
+      return false;
+   }
+
+   dev->Lock();
+
+   if (dev->is_device_unmounted()) {
+      Mmsg(jcr->errmsg, _("3601 JobId=%u %s device %s is BLOCKED due to user unmount.\n"),
+           jcr->JobId, dev->print_type(), dev->print_name());
       queue_reserve_message(jcr);
+      Dmsg1(dbglvl, "Device %s is BLOCKED due to user unmount.\n", dev->print_name());
+      goto bail_out;
    }
-   return 0;
+
+   if (dev->is_busy()) {
+      Mmsg(jcr->errmsg, _("3602 JobId=%u %s device %s is busy (already reading/writing)."
+            " read=%d, writers=%d reserved=%d\n"),
+            jcr->JobId, dev->print_type(), dev->print_name(),
+            dev->state & ST_READ?1:0, dev->num_writers, dev->num_reserved());
+      queue_reserve_message(jcr);
+      Dmsg4(dbglvl, "Device %s is busy ST_READ=%d num_writers=%d reserved=%d.\n",
+         dev->print_name(),
+         dev->state & ST_READ?1:0, dev->num_writers, dev->num_reserved());
+      goto bail_out;
+   }
+
+   /* Note: on failure this returns jcr->errmsg properly edited */
+   if (generate_plugin_event(jcr, bsdEventDeviceTryOpen, dcr) != bRC_OK) {
+      queue_reserve_message(jcr);
+      goto bail_out;
+   }
+   dev->clear_append();
+   dcr->set_reserved_for_read();
+   ok = true;
+
+bail_out:
+   dev->Unlock();
+   return ok;
 }
 
-static bool is_max_jobs_ok(DCR *dcr) 
+static bool is_max_jobs_ok(DCR *dcr)
 {
    DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
@@ -908,36 +900,63 @@ static bool is_max_jobs_ok(DCR *dcr)
          dcr->VolCatInfo.VolCatStatus,
          dcr->VolumeName);
    /* Limit max concurrent jobs on this drive */
-   if (dev->max_concurrent_jobs > 0 && dev->max_concurrent_jobs <= 
+   if (dev->max_concurrent_jobs > 0 && dev->max_concurrent_jobs <=
               (uint32_t)(dev->num_writers + dev->num_reserved())) {
       /* Max Concurrent Jobs depassed or already reserved */
-      Mmsg(jcr->errmsg, _("3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"), 
-            (uint32_t)jcr->JobId, dev->print_name());
-      Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
+      Mmsg(jcr->errmsg, _("3609 JobId=%u Max concurrent jobs=%d exceeded on %s device %s.\n"),
+            (uint32_t)jcr->JobId, dev->max_concurrent_jobs,
+             dev->print_type(), dev->print_name());
       queue_reserve_message(jcr);
+      Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
       return false;
    }
    if (strcmp(dcr->VolCatInfo.VolCatStatus, "Recycle") == 0) {
       return true;
    }
+
    if (dcr->VolCatInfo.VolCatMaxJobs > 0 && dcr->VolCatInfo.VolCatMaxJobs <=
         (dcr->VolCatInfo.VolCatJobs + dev->num_reserved())) {
       /* Max Job Vols depassed or already reserved */
-      Mmsg(jcr->errmsg, _("3610 JobId=%u Volume max jobs exceeded on drive %s.\n"), 
-            (uint32_t)jcr->JobId, dev->print_name());
-      Dmsg1(dbglvl, "reserve dev failed: %s", jcr->errmsg);
+      Mmsg(jcr->errmsg, _("3611 JobId=%u Volume max jobs=%d exceeded on %s device %s.\n"),
+            (uint32_t)jcr->JobId, dcr->VolCatInfo.VolCatMaxJobs,
+            dev->print_type(), dev->print_name());
       queue_reserve_message(jcr);
+      Dmsg1(dbglvl, "reserve dev failed: %s", jcr->errmsg);
       return false;                /* wait */
    }
    return true;
 }
 
+
+static int is_pool_ok(DCR *dcr)
+{
+   DEVICE *dev = dcr->dev;
+   JCR *jcr = dcr->jcr;
+
+   /* Now check if we want the same Pool and pool type */
+   if (strcmp(dev->pool_name, dcr->pool_name) == 0 &&
+       strcmp(dev->pool_type, dcr->pool_type) == 0) {
+      /* OK, compatible device */
+      Dmsg1(dbglvl, "OK dev: %s num_writers=0, reserved, pool matches\n", dev->print_name());
+      return 1;
+   } else {
+      /* Drive Pool not suitable for us */
+      Mmsg(jcr->errmsg, _(
+"3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on %s device %s.\n"),
+            (uint32_t)jcr->JobId, dcr->pool_name, dev->pool_name,
+            dev->num_reserved(), dev->print_type(), dev->print_name());
+      Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
+      queue_reserve_message(jcr);
+   }
+   return 0;
+}
+
 /*
  * Returns: 1 if drive can be reserved
  *          0 if we should wait
  *         -1 on error or impossibility
  */
-static int can_reserve_drive(DCR *dcr, RCTX &rctx) 
+static int can_reserve_drive(DCR *dcr, RCTX &rctx)
 {
    DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
@@ -954,10 +973,10 @@ static int can_reserve_drive(DCR *dcr, RCTX &rctx)
    /* setting any_drive overrides PreferMountedVols flag */
    if (!rctx.any_drive) {
       /*
-       * When PreferMountedVols is set, we keep track of the 
+       * When PreferMountedVols is set, we keep track of the
        *  drive in use that has the least number of writers, then if
-       *  no unmounted drive is found, we try that drive. This   
-       *  helps spread the load to the least used drives.  
+       *  no unmounted drive is found, we try that drive. This
+       *  helps spread the load to the least used drives.
        */
       if (rctx.try_low_use_drive && dev == rctx.low_use_drive) {
          Dmsg2(dbglvl, "OK dev=%s == low_drive=%s.\n",
@@ -970,24 +989,24 @@ static int can_reserve_drive(DCR *dcr, RCTX &rctx)
          if ((dev->num_writers + dev->num_reserved()) < rctx.num_writers) {
             rctx.num_writers = dev->num_writers + dev->num_reserved();
             rctx.low_use_drive = dev;
-            Dmsg2(dbglvl, "set low use drive=%s num_writers=%d\n", 
+            Dmsg2(dbglvl, "set low use drive=%s num_writers=%d\n",
                dev->print_name(), rctx.num_writers);
          } else {
             Dmsg1(dbglvl, "not low use num_writers=%d\n", dev->num_writers+dev->num_reserved());
          }
-         Mmsg(jcr->errmsg, _("3605 JobId=%u wants free drive but device %s is busy.\n"), 
-            jcr->JobId, dev->print_name());
-         Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
+         Mmsg(jcr->errmsg, _("3605 JobId=%u wants free drive but %s device %s is busy.\n"),
+            jcr->JobId, dev->print_type(), dev->print_name());
          queue_reserve_message(jcr);
+         Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
          return 0;
       }
 
       /* Check for prefer mounted volumes */
       if (rctx.PreferMountedVols && !dev->vol && dev->is_tape()) {
-         Mmsg(jcr->errmsg, _("3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"), 
-            jcr->JobId, dev->print_name());
-         Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
+         Mmsg(jcr->errmsg, _("3606 JobId=%u prefers mounted drives, but %s device %s has no Volume.\n"),
+            jcr->JobId, dev->print_type(), dev->print_name());
          queue_reserve_message(jcr);
+         Dmsg1(dbglvl, "Failed: %s", jcr->errmsg);
          return 0;                 /* No volume mounted */
       }
 
@@ -1001,14 +1020,14 @@ static int can_reserve_drive(DCR *dcr, RCTX &rctx)
                rctx.PreferMountedVols, rctx.exact_match, rctx.suitable_device,
                rctx.autochanger_only, rctx.any_drive);
          Dmsg4(dbglvl, "have_vol=%d have=%s resvol=%s want=%s\n",
-                  rctx.have_volume, dev->VolHdr.VolumeName, 
+                  rctx.have_volume, dev->VolHdr.VolumeName,
                   dev->vol?dev->vol->vol_name:"*none*", rctx.VolumeName);
          ok = strcmp(dev->VolHdr.VolumeName, rctx.VolumeName) == 0 ||
                  (dev->vol && strcmp(dev->vol->vol_name, rctx.VolumeName) == 0);
          if (!ok) {
-            Mmsg(jcr->errmsg, _("3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"), 
-               jcr->JobId, rctx.VolumeName, dev->VolHdr.VolumeName, 
-               dev->print_name());
+            Mmsg(jcr->errmsg, _("3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on %s device %s.\n"),
+               jcr->JobId, rctx.VolumeName, dev->VolHdr.VolumeName,
+               dev->print_type(), dev->print_name());
             queue_reserve_message(jcr);
             Dmsg3(dbglvl, "not OK: dev have=%s resvol=%s want=%s\n",
                   dev->VolHdr.VolumeName, dev->vol?dev->vol->vol_name:"*none*", rctx.VolumeName);
@@ -1035,11 +1054,11 @@ static int can_reserve_drive(DCR *dcr, RCTX &rctx)
     */
    if (dev->num_writers == 0) {
       /* Now check if there are any reservations on the drive */
-      if (dev->num_reserved()) {           
+      if (dev->num_reserved()) {
          return is_pool_ok(dcr);
       } else if (dev->can_append()) {
          if (is_pool_ok(dcr)) {
-            return 1; 
+            return 1;
          } else {
             /* Changing pool, unload old tape if any in drive */
             Dmsg0(dbglvl, "OK dev: num_writers=0, not reserved, pool change, unload changer\n");
@@ -1062,28 +1081,26 @@ static int can_reserve_drive(DCR *dcr, RCTX &rctx)
       return is_pool_ok(dcr);
    } else {
       Pmsg1(000, _("Logic error!!!! JobId=%u Should not get here.\n"), (int)jcr->JobId);
-      Mmsg(jcr->errmsg, _("3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"),
-            jcr->JobId, dev->print_name());
+      Mmsg(jcr->errmsg, _("3910 JobId=%u Logic error!!!! %s device %s Should not get here.\n"),
+            jcr->JobId, dev->print_type(), dev->print_name());
       queue_reserve_message(jcr);
       Jmsg0(jcr, M_FATAL, 0, _("Logic error!!!! Should not get here.\n"));
       return -1;                      /* error, should not get here */
    }
-   Mmsg(jcr->errmsg, _("3911 JobId=%u failed reserve drive %s.\n"), 
-         jcr->JobId, dev->print_name());
+   Mmsg(jcr->errmsg, _("3911 JobId=%u failed reserve %s device %s.\n"),
+         jcr->JobId, dev->print_type(), dev->print_name());
    queue_reserve_message(jcr);
    Dmsg1(dbglvl, "Failed: No reserve %s\n", dev->print_name());
    return 0;
 }
 
 
-
-
 /*
  * Queue a reservation error or failure message for this jcr
  */
 static void queue_reserve_message(JCR *jcr)
 {
-   int i;   
+   int i;
    alist *msgs;
    char *msg;
 
@@ -1106,7 +1123,7 @@ static void queue_reserve_message(JCR *jcr)
       if (strncmp(msg, jcr->errmsg, 4) == 0) {
          goto bail_out;
       }
-   }      
+   }
    /* Message unique, so insert it */
    jcr->reserve_msgs->push(bstrdup(jcr->errmsg));
 
@@ -1163,7 +1180,7 @@ bail_out:
 }
 
 /*
- * Also called from acquire.c 
+ * Also called from acquire.c
  */
 void release_reserve_messages(JCR *jcr)
 {
diff --git a/src/stored/reserve.h b/src/stored/reserve.h
index 2683a02..20f7e74 100644
--- a/src/stored/reserve.h
+++ b/src/stored/reserve.h
@@ -1,37 +1,24 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Definitions for reservation system.
  *
  *  Kern Sibbald, February MMVI
  *
- *  Version $Id$
- */ 
+ */
 
 /*
  *   Use Device command from Director
diff --git a/src/stored/scan.c b/src/stored/scan.c
index 514331c..c2dba1d 100644
--- a/src/stored/scan.c
+++ b/src/stored/scan.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -69,15 +57,15 @@ bool DEVICE::scan_dir_for_volume(DCR *dcr)
    } else {
       mount_point = device->device_name;
    }
-      
+
    if (!(dp = opendir(mount_point))) {
       berrno be;
       dev_errno = errno;
-      Dmsg3(29, "scan_dir_for_vol: failed to open dir %s (dev=%s), ERR=%s\n", 
+      Dmsg3(29, "scan_dir_for_vol: failed to open dir %s (dev=%s), ERR=%s\n",
             mount_point, print_name(), be.bstrerror());
       goto get_out;
    }
-   
+
    len = strlen(mount_point);
    if (len > 0) {
       need_slash = !IsPathSeparator(mount_point[len - 1]);
@@ -86,15 +74,15 @@ bool DEVICE::scan_dir_for_volume(DCR *dcr)
    for ( ;; ) {
       if ((readdir_r(dp, entry, &result) != 0) || (result == NULL)) {
          dev_errno = EIO;
-         Dmsg2(129, "scan_dir_for_vol: failed to find suitable file in dir %s (dev=%s)\n", 
+         Dmsg2(129, "scan_dir_for_vol: failed to find suitable file in dir %s (dev=%s)\n",
                mount_point, print_name());
          break;
       }
-      if (strcmp(result->d_name, ".") == 0 || 
+      if (strcmp(result->d_name, ".") == 0 ||
           strcmp(result->d_name, "..") == 0) {
          continue;
       }
-       
+
       if (!is_volume_name_legal(result->d_name)) {
          continue;
       }
@@ -128,7 +116,7 @@ bool DEVICE::scan_dir_for_volume(DCR *dcr)
    }
    free(entry);
    closedir(dp);
-   
+
 get_out:
    if (!found) {
       /* Restore VolumeName we really wanted */
diff --git a/src/stored/sd_plugins.c b/src/stored/sd_plugins.c
index a9df662..968a69b 100644
--- a/src/stored/sd_plugins.c
+++ b/src/stored/sd_plugins.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Main program to test loading and running Bacula plugins.
@@ -41,13 +29,14 @@ const char *plugin_type = "-sd.so";
 
 /* Forward referenced functions */
 static bRC baculaGetValue(bpContext *ctx, bsdrVariable var, void *value);
+static bRC baculaGetGlobal(bsdrGlobalVariable var, void *value);
 static bRC baculaSetValue(bpContext *ctx, bsdwVariable var, void *value);
 static bRC baculaRegisterEvents(bpContext *ctx, ...);
 static bRC baculaJobMsg(bpContext *ctx, const char *file, int line,
   int type, utime_t mtime, const char *fmt, ...);
 static bRC baculaDebugMsg(bpContext *ctx, const char *file, int line,
   int level, const char *fmt, ...);
-static char *baculaEditDeviceCodes(DCR *dcr, char *omsg, 
+static char *baculaEditDeviceCodes(DCR *dcr, char *omsg,
   const char *imsg, const char *cmd);
 static bool is_plugin_compatible(Plugin *plugin);
 
@@ -67,10 +56,11 @@ static bsdFuncs bfuncs = {
    baculaSetValue,
    baculaJobMsg,
    baculaDebugMsg,
-   baculaEditDeviceCodes
+   baculaEditDeviceCodes,
+   baculaGetGlobal
 };
 
-/* 
+/*
  * Bacula private context
  */
 struct bacula_ctx {
@@ -97,7 +87,7 @@ static bool is_plugin_disabled(JCR *jcr)
 #endif
 
 /*
- * Create a plugin event 
+ * Create a plugin event
  */
 int generate_plugin_event(JCR *jcr, bsdEventType eventType, void *value)
 {
@@ -119,9 +109,17 @@ int generate_plugin_event(JCR *jcr, bsdEventType eventType, void *value)
       Dmsg0(dbglvl, "No plugin_ctx_list: generate_plugin_event ignored.\n");
       return bRC_OK;                  /* Return if no plugins loaded */
    }
-   if (jcr->is_job_canceled()) {
-      Dmsg0(dbglvl, "Cancel return from generate_plugin_event\n");
-      return bRC_Cancel;
+
+   /* Always handle JobEnd and DeviceClose requests */
+   switch (eventType) {
+   case bsdEventJobEnd:
+   case bsdEventDeviceClose:
+      break;               /* pass these through even if canceled */
+   default:
+      if (jcr->is_job_canceled()) {
+         Dmsg0(dbglvl, "Cancel return from generate_plugin_event\n");
+         return bRC_Cancel;
+      }
    }
 
    bpContext *plugin_ctx_list = (bpContext *)jcr->plugin_ctx_list;
@@ -139,10 +137,38 @@ int generate_plugin_event(JCR *jcr, bsdEventType eventType, void *value)
          break;
       }
    }
+   return rc;
+}
+
+
+/*
+ * Create a global plugin event -- i.e. no context
+ */
+int generate_global_plugin_event(bsdGlobalEventType eventType, void *value)
+{
+   bsdEvent event;
+   Plugin *plugin;
+   int i;
+   bRC rc = bRC_OK;
+
+   if (!bplugin_list) {
+      Dmsg0(dbglvl, "No bplugin_list: generate_global_plugin_event ignored.\n");
+      return bRC_OK;
+   }
+   event.eventType = eventType;
 
+   foreach_alist_index(i, plugin, bplugin_list) {
+      if (sdplug_func(plugin)->handleGlobalPluginEvent != NULL) {
+         rc = sdplug_func(plugin)->handleGlobalPluginEvent(&event, value);
+         if (rc != bRC_OK) {
+            break;
+         }
+      }
+   }
    return rc;
 }
 
+
 /*
  * Print to file the plugin info.
  */
@@ -176,7 +202,7 @@ void load_sd_plugins(const char *plugin_dir)
       return;
    }
    bplugin_list = New(alist(10, not_owned_by_alist));
-   if (!load_plugins((void *)&binfo, (void *)&bfuncs, plugin_dir, plugin_type, 
+   if (!load_plugins((void *)&binfo, (void *)&bfuncs, plugin_dir, plugin_type,
                 is_plugin_compatible)) {
       /* Either none found, or some error */
       if (bplugin_list->size() == 0) {
@@ -186,7 +212,7 @@ void load_sd_plugins(const char *plugin_dir)
          return;
       }
    }
-   /* 
+   /*
     * Verify that the plugin is acceptable, and print information
     *  about it.
     */
@@ -207,13 +233,13 @@ static bool is_plugin_compatible(Plugin *plugin)
 {
    psdInfo *info = (psdInfo *)plugin->pinfo;
    Dmsg0(50, "is_plugin_compatible called\n");
-   if (debug_level >= 50) {
+   if (chk_dbglvl(50)) {
       dump_sd_plugin(plugin, stdin);
    }
    if (strcmp(info->plugin_magic, SD_PLUGIN_MAGIC) != 0) {
       Jmsg(NULL, M_ERROR, 0, _("Plugin magic wrong. Plugin=%s wanted=%s got=%s\n"),
            plugin->file, SD_PLUGIN_MAGIC, info->plugin_magic);
-      Dmsg3(50, "Plugin magic wrong. Plugin=%s wanted=%s got=%s\n",
+      Dmsg3(000, "Plugin magic wrong. Plugin=%s wanted=%s got=%s\n",
            plugin->file, SD_PLUGIN_MAGIC, info->plugin_magic);
 
       return false;
@@ -221,7 +247,7 @@ static bool is_plugin_compatible(Plugin *plugin)
    if (info->version != SD_PLUGIN_INTERFACE_VERSION) {
       Jmsg(NULL, M_ERROR, 0, _("Plugin version incorrect. Plugin=%s wanted=%d got=%d\n"),
            plugin->file, SD_PLUGIN_INTERFACE_VERSION, info->version);
-      Dmsg3(50, "Plugin version incorrect. Plugin=%s wanted=%d got=%d\n",
+      Dmsg3(000, "Plugin version incorrect. Plugin=%s wanted=%d got=%d\n",
            plugin->file, SD_PLUGIN_INTERFACE_VERSION, info->version);
       return false;
    }
@@ -230,7 +256,7 @@ static bool is_plugin_compatible(Plugin *plugin)
        strcmp(info->plugin_license, "Bacula Systems(R) SA") != 0) {
       Jmsg(NULL, M_ERROR, 0, _("Plugin license incompatible. Plugin=%s license=%s\n"),
            plugin->file, info->plugin_license);
-      Dmsg2(50, "Plugin license incompatible. Plugin=%s license=%s\n",
+      Dmsg2(000, "Plugin license incompatible. Plugin=%s license=%s\n",
            plugin->file, info->plugin_license);
       return false;
    }
@@ -240,7 +266,7 @@ static bool is_plugin_compatible(Plugin *plugin)
            plugin->file, sizeof(psdInfo), info->size);
       return false;
    }
-      
+
    return true;
 }
 
@@ -261,7 +287,7 @@ void new_plugins(JCR *jcr)
    if (jcr->is_job_canceled()) {
       return;
    }
-   /* 
+   /*
     * If plugins already loaded, just return
     */
    if (jcr->plugin_ctx_list) {
@@ -322,6 +348,21 @@ void free_plugins(JCR *jcr)
  *
  * ==============================================================
  */
+
+/* Get a global. No job context */
+static bRC baculaGetGlobal(bsdrGlobalVariable var, void *value)
+{
+   if (!value) {
+      return bRC_Error;
+   }
+   switch (var) {
+   default:
+      break;
+   }
+   return bRC_OK;
+}
+
+
 static bRC baculaGetValue(bpContext *ctx, bsdrVariable var, void *value)
 {
    JCR *jcr;
@@ -352,16 +393,16 @@ static bRC baculaGetValue(bpContext *ctx, bsdrVariable var, void *value)
 
 static bRC baculaSetValue(bpContext *ctx, bsdwVariable var, void *value)
 {
-   JCR *jcr;   
+   JCR *jcr;
    if (!value || !ctx) {
       return bRC_Error;
    }
-// Dmsg1(dbglvl, "bacula: baculaGetValue var=%d\n", var);
+// Dmsg1(dbglvl, "bacula: baculaSetValue var=%d\n", var);
    jcr = ((bacula_ctx *)ctx->bContext)->jcr;
    if (!jcr) {
       return bRC_Error;
    }
-// Dmsg1(dbglvl, "Bacula: jcr=%p\n", jcr); 
+// Dmsg1(dbglvl, "Bacula: jcr=%p\n", jcr);
    /* Nothing implemented yet */
    Dmsg1(dbglvl, "sd-plugin: baculaSetValue var=%d\n", var);
    return bRC_OK;
@@ -413,7 +454,7 @@ static bRC baculaDebugMsg(bpContext *ctx, const char *file, int line,
    return bRC_OK;
 }
 
-static char *baculaEditDeviceCodes(DCR *dcr, char *omsg, 
+static char *baculaEditDeviceCodes(DCR *dcr, char *omsg,
   const char *imsg, const char *cmd)
 {
    return edit_device_codes(dcr, omsg, imsg, cmd);
@@ -429,7 +470,7 @@ int main(int argc, char *argv[])
    JCR *jcr2 = &mjcr2;
 
    strcpy(my_name, "test-dir");
-    
+
    getcwd(plugin_dir, sizeof(plugin_dir)-1);
    load_sd_plugins(plugin_dir);
 
@@ -448,7 +489,7 @@ int main(int argc, char *argv[])
 
    unload_plugins();
 
-   Dmsg0(dbglvl, "sd-plugin: OK ...\n");
+   Dmsg0(dbglvl, "sd-plugin: Test OK ...\n");
    close_memory_pool();
    sm_dump(false);
    return 0;
diff --git a/src/stored/sd_plugins.h b/src/stored/sd_plugins.h
index 0e41e8b..e4ccb01 100644
--- a/src/stored/sd_plugins.h
+++ b/src/stored/sd_plugins.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Interface definition for Bacula Plugins
@@ -31,8 +19,8 @@
  * Kern Sibbald, October 2007
  *
  */
- 
-#ifndef __SD_PLUGINS_H 
+
+#ifndef __SD_PLUGINS_H
 #define __SD_PLUGINS_H
 
 #ifndef _BACULA_H
@@ -71,30 +59,35 @@ extern "C" {
 
 /* Bacula Variable Ids */
 typedef enum {
-  bsdVarJob       = 1,
-  bsdVarLevel     = 2,
-  bsdVarType      = 3,
-  bsdVarJobId     = 4,
-  bsdVarClient    = 5,
-  bsdVarNumVols   = 6,
-  bsdVarPool      = 7,
-  bsdVarStorage   = 8,
-  bsdVarCatalog   = 9,
-  bsdVarMediaType = 10,
-  bsdVarJobName   = 11,
-  bsdVarJobStatus = 12,
-  bsdVarPriority  = 13,
-  bsdVarVolumeName = 14,
-  bsdVarCatalogRes = 15,
-  bsdVarJobErrors  = 16,
-  bsdVarJobFiles   = 17,
-  bsdVarSDJobFiles = 18,
-  bsdVarSDErrors   = 19,
+  bsdVarJob         = 1,
+  bsdVarLevel       = 2,
+  bsdVarType        = 3,
+  bsdVarJobId       = 4,
+  bsdVarClient      = 5,
+  bsdVarNumVols     = 6,
+  bsdVarPool        = 7,
+  bsdVarStorage     = 8,
+  bsdVarCatalog     = 9,
+  bsdVarMediaType   = 10,
+  bsdVarJobName     = 11,
+  bsdVarJobStatus   = 12,
+  bsdVarPriority    = 13,
+  bsdVarVolumeName  = 14,
+  bsdVarCatalogRes  = 15,
+  bsdVarJobErrors   = 16,
+  bsdVarJobFiles    = 17,
+  bsdVarSDJobFiles  = 18,
+  bsdVarSDErrors    = 19,
   bsdVarFDJobStatus = 20,
   bsdVarSDJobStatus = 21
 } bsdrVariable;
 
 typedef enum {
+  bsdVarDevTypes    = 1
+} bsdrGlobalVariable;
+
+
+typedef enum {
   bsdwVarJobReport  = 1,
   bsdwVarVolumeName = 2,
   bsdwVarPriority   = 3,
@@ -111,28 +104,34 @@ typedef enum {
   bsdEventDeviceClose    = 6
 } bsdEventType;
 
+typedef enum {
+  bsdGlobalEventDeviceInit = 1
+} bsdGlobalEventType;
+
+
 typedef struct s_bsdEvent {
    uint32_t eventType;
 } bsdEvent;
 
 typedef struct s_sdbaculaInfo {
    uint32_t size;
-   uint32_t version;  
+   uint32_t version;
 } bsdInfo;
 
 /* Bacula interface version and function pointers */
-typedef struct s_sdbaculaFuncs {  
+typedef struct s_sdbaculaFuncs {
    uint32_t size;
    uint32_t version;
    bRC (*registerBaculaEvents)(bpContext *ctx, ...);
    bRC (*getBaculaValue)(bpContext *ctx, bsdrVariable var, void *value);
    bRC (*setBaculaValue)(bpContext *ctx, bsdwVariable var, void *value);
-   bRC (*JobMessage)(bpContext *ctx, const char *file, int line, 
+   bRC (*JobMessage)(bpContext *ctx, const char *file, int line,
        int type, utime_t mtime, const char *fmt, ...);
    bRC (*DebugMessage)(bpContext *ctx, const char *file, int line,
        int level, const char *fmt, ...);
    char *(*EditDeviceCodes)(DCR *dcr, char *omsg,
        const char *imsg, const char *cmd);
+   bRC (*getBaculaGlobal)(bsdrGlobalVariable var, void *value);
 } bsdFuncs;
 
 /* Bacula Subroutines */
@@ -140,7 +139,7 @@ void load_sd_plugins(const char *plugin_dir);
 void new_plugins(JCR *jcr);
 void free_plugins(JCR *jcr);
 int generate_plugin_event(JCR *jcr, bsdEventType event, void *value=NULL);
-
+int generate_global_plugin_event(bsdGlobalEventType event, void *value=NULL);
 
 
 /****************************************************************************
@@ -155,8 +154,9 @@ typedef enum {
 } psdVariable;
 
 
-#define SD_PLUGIN_MAGIC     "*SDPluginData*" 
-#define SD_PLUGIN_INTERFACE_VERSION  1
+# define SD_PLUGIN_MAGIC  "*BaculaSDPluginData*"
+
+#define SD_PLUGIN_INTERFACE_VERSION  ( 12 )
 
 typedef struct s_sdpluginInfo {
    uint32_t size;
@@ -169,10 +169,10 @@ typedef struct s_sdpluginInfo {
    const char *plugin_description;
 } psdInfo;
 
-/* 
+/*
  * Functions that must be defined in every plugin
  */
-typedef struct s_sdpluginFuncs {  
+typedef struct s_sdpluginFuncs {
    uint32_t size;
    uint32_t version;
    bRC (*newPlugin)(bpContext *ctx);
@@ -180,6 +180,7 @@ typedef struct s_sdpluginFuncs {
    bRC (*getPluginValue)(bpContext *ctx, psdVariable var, void *value);
    bRC (*setPluginValue)(bpContext *ctx, psdVariable var, void *value);
    bRC (*handlePluginEvent)(bpContext *ctx, bsdEvent *event, void *value);
+   bRC (*handleGlobalPluginEvent)(bsdEvent *event, void *value);
 } psdFuncs;
 
 #define sdplug_func(plugin) ((psdFuncs *)(plugin->pfuncs))
diff --git a/src/stored/spool.c b/src/stored/spool.c
index 42868f9..4306655 100644
--- a/src/stored/spool.c
+++ b/src/stored/spool.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Spooling code
@@ -95,7 +83,7 @@ void list_spool_stats(void sendit(const char *msg, int len, void *sarg), void *a
          spool_stats.attr_jobs, edit_uint64_with_commas(spool_stats.attr_size, ed1),
          spool_stats.total_attr_jobs,
          edit_uint64_with_commas(spool_stats.max_attr_size, ed2));
-   
+
       sendit(msg.c_str(), len, arg);
    }
 }
@@ -178,31 +166,6 @@ static bool open_data_spool_file(DCR *dcr)
    return true;
 }
 
-static bool close_data_spool_file(DCR *dcr)
-{
-   POOLMEM *name  = get_pool_memory(PM_MESSAGE);
-
-   P(mutex);
-   spool_stats.data_jobs--;
-   spool_stats.total_data_jobs++;
-   if (spool_stats.data_size < dcr->job_spool_size) {
-      spool_stats.data_size = 0;
-   } else {
-      spool_stats.data_size -= dcr->job_spool_size;
-   }
-   dcr->job_spool_size = 0;
-   V(mutex);
-
-   make_unique_data_spool_filename(dcr, &name);
-   close(dcr->spool_fd);
-   dcr->spool_fd = -1;
-   dcr->spooling = false;
-   unlink(name);
-   Dmsg1(100, "Deleted spool file: %s\n", name);
-   free_pool_memory(name);
-   return true;
-}
-
 static const char *spool_name = "*spool*";
 
 /*
@@ -218,7 +181,6 @@ static bool despool_data(DCR *dcr, bool commit)
    JCR *jcr = dcr->jcr;
    int stat;
    char ec1[50];
-   BSOCK *dir = jcr->dir_bsock;
 
    Dmsg0(100, "Despooling data\n");
    if (jcr->dcr->job_spool_size == 0) {
@@ -227,7 +189,7 @@ static bool despool_data(DCR *dcr, bool commit)
 
    /*
     * Commit means that the job is done, so we commit, otherwise, we
-    *  are despooling because of user spool size max or some error  
+    *  are despooling because of user spool size max or some error
     *  (e.g. filesystem full).
     */
    if (commit) {
@@ -266,7 +228,7 @@ static bool despool_data(DCR *dcr, bool commit)
    rdev->max_block_size = dcr->dev->max_block_size;
    rdev->min_block_size = dcr->dev->min_block_size;
    rdev->device = dcr->dev->device;
-   rdcr = new_dcr(jcr, NULL, rdev);
+   rdcr = new_dcr(jcr, NULL, rdev, SD_READ);
    rdcr->spool_fd = dcr->spool_fd;
    block = dcr->block;                /* save block */
    dcr->block = rdcr->block;          /* make read and write block the same */
@@ -299,34 +261,23 @@ static bool despool_data(DCR *dcr, bool commit)
       if (!ok) {
          Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
                dcr->dev->print_name(), dcr->dev->bstrerror());
-         Dmsg2(000, "Fatal append error on device %s: ERR=%s\n",
+         Pmsg2(000, "Fatal append error on device %s: ERR=%s\n",
                dcr->dev->print_name(), dcr->dev->bstrerror());
-         /* Force in case Incomplete set */
          jcr->forceJobStatus(JS_FatalError);
       }
       Dmsg3(800, "Write block ok=%d FI=%d LI=%d\n", ok, block->FirstIndex, block->LastIndex);
    }
 
-   /*
-    * If this Job is incomplete, we need to backup the FileIndex
-    *  to the last correctly saved file so that the JobMedia
-    *  LastIndex is correct.
-    */
-   if (jcr->is_JobStatus(JS_Incomplete)) {
-      dcr->VolLastIndex = dir->get_FileIndex();
-      Dmsg1(100, "======= Set FI=%ld\n", dir->get_FileIndex());
-   }
-
    if (!dir_create_jobmedia_record(dcr)) {
       Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
          dcr->getVolCatName(), jcr->Job);
-      jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+      jcr->forceJobStatus(JS_FatalError);
    }
    /* Set new file/block parameters for current dcr */
    set_new_file_parameters(dcr);
 
    /*
-    * Subtracting run_time give us elapsed time - wait_time since 
+    * Subtracting run_time give us elapsed time - wait_time since
     * we started despooling. Note, don't use time_t as it is 32 or 64
     * bits depending on the OS and doesn't edit with %d
     */
@@ -410,21 +361,21 @@ static int read_block_from_spool_file(DCR *dcr)
          Pmsg2(000, _("Spool read error. Wanted %u bytes, got %d\n"), rlen, stat);
          Jmsg2(jcr, M_FATAL, 0, _("Spool header read error. Wanted %u bytes, got %d\n"), rlen, stat);
       }
-      jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+      jcr->forceJobStatus(JS_FatalError);
       return RB_ERROR;
    }
    rlen = hdr.len;
    if (rlen > block->buf_len) {
       Pmsg2(000, _("Spool block too big. Max %u bytes, got %u\n"), block->buf_len, rlen);
       Jmsg2(jcr, M_FATAL, 0, _("Spool block too big. Max %u bytes, got %u\n"), block->buf_len, rlen);
-      jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+      jcr->forceJobStatus(JS_FatalError);
       return RB_ERROR;
    }
    stat = read(dcr->spool_fd, (char *)block->buf, (size_t)rlen);
    if (stat != (ssize_t)rlen) {
       Pmsg2(000, _("Spool data read error. Wanted %u bytes, got %d\n"), rlen, stat);
       Jmsg2(dcr->jcr, M_FATAL, 0, _("Spool data read error. Wanted %u bytes, got %d\n"), rlen, stat);
-      jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+      jcr->forceJobStatus(JS_FatalError);
       return RB_ERROR;
    }
    /* Setup write pointers */
@@ -531,7 +482,7 @@ static bool write_spool_header(DCR *dcr)
          berrno be;
          Jmsg(jcr, M_FATAL, 0, _("Error writing header to spool file. ERR=%s\n"),
               be.bstrerror());
-         jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+         jcr->forceJobStatus(JS_FatalError);
       }
       if (stat != (ssize_t)sizeof(hdr)) {
          Jmsg(jcr, M_ERROR, 0, _("Error writing header to spool file."
@@ -553,7 +504,7 @@ static bool write_spool_header(DCR *dcr)
          }
          if (!despool_data(dcr, false)) {
             Jmsg(jcr, M_FATAL, 0, _("Fatal despooling error."));
-            jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+            jcr->forceJobStatus(JS_FatalError);
             return false;
          }
          continue;                    /* try again */
@@ -561,7 +512,7 @@ static bool write_spool_header(DCR *dcr)
       return true;
    }
    Jmsg(jcr, M_FATAL, 0, _("Retrying after header spooling error failed.\n"));
-   jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+   jcr->forceJobStatus(JS_FatalError);
    return false;
 }
 
@@ -578,7 +529,7 @@ static bool write_spool_data(DCR *dcr)
          berrno be;
          Jmsg(jcr, M_FATAL, 0, _("Error writing data to spool file. ERR=%s\n"),
               be.bstrerror());
-         jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+         jcr->forceJobStatus(JS_FatalError);
       }
       if (stat != (ssize_t)block->binbuf) {
          /*
@@ -599,7 +550,7 @@ static bool write_spool_data(DCR *dcr)
          }
          if (!despool_data(dcr, false)) {
             Jmsg(jcr, M_FATAL, 0, _("Fatal despooling error."));
-            jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+            jcr->forceJobStatus(JS_FatalError);
             return false;
          }
          if (!write_spool_header(dcr)) {
@@ -610,11 +561,36 @@ static bool write_spool_data(DCR *dcr)
       return true;
    }
    Jmsg(jcr, M_FATAL, 0, _("Retrying after data spooling error failed.\n"));
-   jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+   jcr->forceJobStatus(JS_FatalError);
    return false;
 }
 
+static bool close_data_spool_file(DCR *dcr)
+{
+   POOLMEM *name  = get_pool_memory(PM_MESSAGE);
+
+   P(mutex);
+   spool_stats.data_jobs--;
+   spool_stats.total_data_jobs++;
+   if (spool_stats.data_size < dcr->job_spool_size) {
+      spool_stats.data_size = 0;
+   } else {
+      spool_stats.data_size -= dcr->job_spool_size;
+   }
+   V(mutex);
+   P(dcr->dev->spool_mutex);
+   dcr->job_spool_size = 0;
+   V(dcr->dev->spool_mutex);
 
+   make_unique_data_spool_filename(dcr, &name);
+   close(dcr->spool_fd);
+   dcr->spool_fd = -1;
+   dcr->spooling = false;
+   unlink(name);
+   Dmsg1(100, "Deleted spool file: %s\n", name);
+   free_pool_memory(name);
+   return true;
+}
 
 bool are_attributes_spooled(JCR *jcr)
 {
@@ -636,14 +612,6 @@ bool begin_attribute_spool(JCR *jcr)
    return true;
 }
 
-bool discard_attribute_spool(JCR *jcr)
-{
-   if (are_attributes_spooled(jcr)) {
-      return close_attr_spool_file(jcr, jcr->dir_bsock);
-   }
-   return true;
-}
-
 static void update_attr_spool_size(ssize_t size)
 {
    P(mutex);
@@ -664,7 +632,7 @@ static void make_unique_spool_filename(JCR *jcr, POOLMEM **name, int fd)
 }
 
 /*
- * Tell Director where to find the attributes spool file 
+ * Tell Director where to find the attributes spool file
  *  Note, if we are not on the same machine, the Director will
  *  return an error, and the higher level routine will transmit
  *  the data record by record -- using bsock->despool().
@@ -677,13 +645,13 @@ static bool blast_attr_spool_file(JCR *jcr, boffset_t size)
    bash_spaces(name);
    jcr->dir_bsock->fsend("BlastAttr Job=%s File=%s\n", jcr->Job, name);
    free_pool_memory(name);
-   
+
    if (jcr->dir_bsock->recv() <= 0) {
       Jmsg(jcr, M_FATAL, 0, _("Network error on BlastAttributes.\n"));
-      jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+      jcr->forceJobStatus(JS_FatalError);
       return false;
    }
-   
+
    if (!bstrcmp(jcr->dir_bsock->msg, "1000 OK BlastAttr\n")) {
       return false;
    }
@@ -692,7 +660,7 @@ static bool blast_attr_spool_file(JCR *jcr, boffset_t size)
 
 bool commit_attribute_spool(JCR *jcr)
 {
-   boffset_t size, data_end;
+   boffset_t size;
    char ec1[30];
    char tbuf[100];
    BSOCK *dir;
@@ -705,31 +673,15 @@ bool commit_attribute_spool(JCR *jcr)
          berrno be;
          Jmsg(jcr, M_FATAL, 0, _("Fseek on attributes file failed: ERR=%s\n"),
               be.bstrerror());
-         jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+         jcr->forceJobStatus(JS_FatalError);
          goto bail_out;
       }
       size = ftello(dir->m_spool_fd);
-      if (jcr->is_JobStatus(JS_Incomplete)) {
-         data_end = dir->get_data_end();
-         /* Check and truncate to last valid data_end if necssary */
-         if (size > data_end) {
-            if (ftruncate(fileno(dir->m_spool_fd), data_end) != 0) {
-               berrno be;
-               Jmsg(jcr, M_FATAL, 0, _("Truncate on attributes file failed: ERR=%s\n"),
-                    be.bstrerror());
-               jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
-               goto bail_out;
-            }
-            Dmsg2(100, "=== Attrib spool truncated from %lld to %lld\n", 
-                  size, data_end);
-            size = data_end;
-         }
-      }
       if (size < 0) {
          berrno be;
          Jmsg(jcr, M_FATAL, 0, _("Fseek on attributes file failed: ERR=%s\n"),
               be.bstrerror());
-         jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+         jcr->forceJobStatus(JS_FatalError);
          goto bail_out;
       }
       P(mutex);
@@ -767,7 +719,7 @@ static bool open_attr_spool_file(JCR *jcr, BSOCK *bs)
       berrno be;
       Jmsg(jcr, M_FATAL, 0, _("fopen attr spool file %s failed: ERR=%s\n"), name,
            be.bstrerror());
-      jcr->forceJobStatus(JS_FatalError);  /* override any Incomplete */
+      jcr->forceJobStatus(JS_FatalError);
       free_pool_memory(name);
       return false;
    }
@@ -802,3 +754,11 @@ static bool close_attr_spool_file(JCR *jcr, BSOCK *bs)
    bs->clear_spooling();
    return true;
 }
+
+bool discard_attribute_spool(JCR *jcr)
+{
+   if (are_attributes_spooled(jcr)) {
+      return close_attr_spool_file(jcr, jcr->dir_bsock);
+   }
+   return true;
+}
diff --git a/src/stored/status.c b/src/stored/status.c
index 20f2c08..33d47e3 100644
--- a/src/stored/status.c
+++ b/src/stored/status.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  This file handles the status command
@@ -63,8 +51,6 @@ static void list_jobs_waiting_on_reservation(STATUS_PKT *sp);
 static void list_status_header(STATUS_PKT *sp);
 static void list_devices(STATUS_PKT *sp);
 
-static const char *level_to_str(int level);
-
 /*
  * Status command from Director
  */
@@ -178,14 +164,14 @@ static void list_devices(STATUS_PKT *sp)
                               "    Volume:      %s\n"
                               "    Pool:        %s\n"
                               "    Media type:  %s\n"),
-               dev->print_name(), 
+               dev->print_name(),
                dev->blocked()?_("waiting for"):_("mounted with"),
-               dev->VolHdr.VolumeName, 
+               dev->VolHdr.VolumeName,
                dev->pool_name[0]?dev->pool_name:_("*unknown*"),
                dev->device->media_type);
             sendit(msg, len, sp);
          } else {
-            len = Mmsg(msg, _("\nDevice %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);
          }
@@ -245,7 +231,7 @@ static void list_status_header(STATUS_PKT *sp)
    POOL_MEM msg(PM_MESSAGE);
    int len;
 
-   len = Mmsg(msg, _("%s Version: %s (%s) %s %s %s\n"), 
+   len = Mmsg(msg, _("%s Version: %s (%s) %s %s %s\n"),
               my_name, VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
    sendit(msg, len, sp);
 
@@ -263,7 +249,7 @@ static void list_status_header(STATUS_PKT *sp)
          edit_uint64_with_commas(sm_max_buffers, b5));
    sendit(msg, len, sp);
    len = Mmsg(msg, " Sizes: boffset_t=%d size_t=%d int32_t=%d int64_t=%d "
-              "mode=%d,%d\n", 
+              "mode=%d,%d\n",
               (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);
@@ -308,6 +294,7 @@ static void send_blocked_status(DEVICE *dev, STATUS_PKT *sp)
          DCR *dcr;
          bool found_jcr = false;
          dev->Lock();
+         dev->Lock_dcrs();
          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"
@@ -328,6 +315,7 @@ static void send_blocked_status(DEVICE *dev, STATUS_PKT *sp)
                found_jcr = true;
             }
          }
+         dev->Unlock_dcrs();
          dev->Unlock();
          if (!found_jcr) {
             len = Mmsg(msg, _("    Device is BLOCKED waiting for media.\n"));
@@ -349,7 +337,7 @@ 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 %s loaded in drive %d.\n"), 
+         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) {
@@ -357,7 +345,7 @@ static void send_blocked_status(DEVICE *dev, STATUS_PKT *sp)
          sendit(msg, len, sp);
       }
    }
-   if (debug_level > 1) {
+   if (chk_dbglvl(1)) {
       send_device_status(dev, sp);
    }
 }
@@ -366,51 +354,52 @@ static void send_device_status(DEVICE *dev, STATUS_PKT *sp)
 {
    POOL_MEM msg(PM_MESSAGE);
    int len;
+   DCR *dcr = NULL;
+   bool found = false;
 
-   if (debug_level > 5) {
+   if (chk_dbglvl(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_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_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", 
-      dev->is_open() ? "" : "!", 
-      dev->is_tape() ? "" : "!", 
-      dev->is_labeled() ? "" : "!", 
-      dev->state & ST_MALLOC ? "" : "!", 
-      dev->can_append() ? "" : "!", 
-      dev->can_read() ? "" : "!", 
-      dev->at_eot() ? "" : "!", 
-      dev->state & ST_WEOT ? "" : "!", 
-      dev->at_eof() ? "" : "!", 
-      dev->state & ST_NEXTVOL ? "" : "!", 
-      dev->state & ST_SHORT ? "" : "!", 
+   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() ? "" : "!",
+      dev->state & ST_MALLOC ? "" : "!",
+      dev->can_append() ? "" : "!",
+      dev->can_read() ? "" : "!",
+      dev->at_eot() ? "" : "!",
+      dev->state & ST_WEOT ? "" : "!",
+      dev->at_eof() ? "" : "!",
+      dev->state & ST_NEXTVOL ? "" : "!",
+      dev->state & ST_SHORT ? "" : "!",
       dev->state & ST_MOUNTED ? "" : "!");
    sendit(msg, len, sp);
    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, _("Attached Jobs: "));
+   len = Mmsg(msg, _("Attached JobsIds: "));
    sendit(msg, len, sp);
-   DCR *dcr = NULL; 
-   bool found = false;
    dev->Lock();
+   dev->Lock_dcrs();
    foreach_dlist(dcr, dev->attached_dcrs) {
       if (dcr->jcr) {
          if (found) {
@@ -421,6 +410,7 @@ static void send_device_status(DEVICE *dev, STATUS_PKT *sp)
          found = true;
       }
    }
+   dev->Unlock_dcrs();
    dev->Unlock();
    sendit("\n", 1, sp);
 
@@ -476,7 +466,7 @@ static void list_running_jobs(STATUS_PKT *sp)
                    jcr->JobId,
                    rdcr->VolumeName,
                    rdcr->pool_name,
-                   rdcr->dev?rdcr->dev->print_name(): 
+                   rdcr->dev?rdcr->dev->print_name():
                             rdcr->device->device_name);
             sendit(msg, len, sp);
          }
@@ -489,7 +479,7 @@ static void list_running_jobs(STATUS_PKT *sp)
                    jcr->JobId,
                    dcr->VolumeName,
                    dcr->pool_name,
-                   dcr->dev?dcr->dev->print_name(): 
+                   dcr->dev?dcr->dev->print_name():
                             dcr->device->device_name);
             sendit(msg, len, sp);
             len= Mmsg(msg, _("    spooling=%d despooling=%d despool_wait=%d\n"),
@@ -542,7 +532,7 @@ static void list_running_jobs(STATUS_PKT *sp)
 }
 
 static void list_jobs_waiting_on_reservation(STATUS_PKT *sp)
-{ 
+{
    JCR *jcr;
    POOL_MEM msg(PM_MESSAGE);
    int len;
@@ -561,158 +551,9 @@ static void list_jobs_waiting_on_reservation(STATUS_PKT *sp)
    if (!sp->api) sendit("====\n", 5, sp);
 }
 
-
-static void list_terminated_jobs(STATUS_PKT *sp)
-{
-   char dt[MAX_TIME_LENGTH], b1[30], b2[30];
-   char level[10];
-   struct s_last_job *je;
-   const char *msg;
-
-   msg =  _("\nTerminated Jobs:\n");
-   if (!sp->api) sendit(msg, strlen(msg), sp);
-   if (last_jobs->size() == 0) {
-      if (!sp->api) sendit("====\n", 5, sp);
-      return;
-   }
-   lock_last_jobs_list();
-   msg =  _(" JobId  Level    Files      Bytes   Status   Finished        Name \n");
-   if (!sp->api) sendit(msg, strlen(msg), sp);
-   msg =  _("===================================================================\n");
-   if (!sp->api) sendit(msg, strlen(msg), sp);
-   foreach_dlist(je, last_jobs) {
-      char JobName[MAX_NAME_LENGTH];
-      const char *termstat;
-      char buf[1000];
-
-      bstrftime_nc(dt, sizeof(dt), je->end_time);
-      switch (je->JobType) {
-      case JT_ADMIN:
-      case JT_RESTORE:
-         bstrncpy(level, "    ", sizeof(level));
-         break;
-      default:
-         bstrncpy(level, level_to_str(je->JobLevel), sizeof(level));
-         level[4] = 0;
-         break;
-      }
-      switch (je->JobStatus) {
-      case JS_Created:
-         termstat = _("Created");
-         break;
-      case JS_FatalError:
-      case JS_ErrorTerminated:
-         termstat = _("Error");
-         break;
-      case JS_Differences:
-         termstat = _("Diffs");
-         break;
-      case JS_Canceled:
-         termstat = _("Cancel");
-         break;
-      case JS_Terminated:
-         termstat = _("OK");
-         break;
-      case JS_Warnings:
-         termstat = _("OK -- with warnings");
-         break;
-      default:
-         termstat = _("Other");
-         break;
-      }
-      bstrncpy(JobName, je->Job, sizeof(JobName));
-      /* There are three periods after the Job name */
-      char *p;
-      for (int i=0; i<3; i++) {
-         if ((p=strrchr(JobName, '.')) != NULL) {
-            *p = 0;
-         }
-      }
-      if (sp->api) {
-         bsnprintf(buf, sizeof(buf), _("%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"),
-            je->JobId,
-            level,
-            edit_uint64_with_commas(je->JobFiles, b1),
-            edit_uint64_with_suffix(je->JobBytes, b2),
-            termstat,
-            dt, JobName);
-      } else {
-         bsnprintf(buf, sizeof(buf), _("%6d  %-6s %8s %10s  %-7s  %-8s %s\n"),
-            je->JobId,
-            level,
-            edit_uint64_with_commas(je->JobFiles, b1),
-            edit_uint64_with_suffix(je->JobBytes, b2),
-            termstat,
-            dt, JobName);
-      }  
-      sendit(buf, strlen(buf), sp);
-   }
-   unlock_last_jobs_list();
-   if (!sp->api) sendit("====\n", 5, sp);
-}
-
-/*
- * Convert Job Level into a string
- */
-static const char *level_to_str(int level)
-{
-   const char *str;
-
-   switch (level) {
-   case L_BASE:
-      str = _("Base");
-   case L_FULL:
-      str = _("Full");
-      break;
-   case L_INCREMENTAL:
-      str = _("Incremental");
-      break;
-   case L_DIFFERENTIAL:
-      str = _("Differential");
-      break;
-   case L_SINCE:
-      str = _("Since");
-      break;
-   case L_VERIFY_CATALOG:
-      str = _("Verify Catalog");
-      break;
-   case L_VERIFY_INIT:
-      str = _("Init Catalog");
-      break;
-   case L_VERIFY_VOLUME_TO_CATALOG:
-      str = _("Volume to Catalog");
-      break;
-   case L_VERIFY_DISK_TO_CATALOG:
-      str = _("Disk to Catalog");
-      break;
-   case L_VERIFY_DATA:
-      str = _("Data");
-      break;
-   case L_NONE:
-      str = " ";
-      break;
-   default:
-      str = _("Unknown Job Level");
-      break;
-   }
-   return str;
-}
-
 /*
  * Send to Director
  */
-static void sendit(const char *msg, int len, STATUS_PKT *sp)
-{
-   BSOCK *bs = sp->bs;
-   if (bs) {
-      memcpy(bs->msg, msg, len+1);
-      bs->msglen = len+1;
-      bs->send();
-   } else {
-      sp->callback(msg, len, sp->context);
-   }
-}
-
 static void sendit(const char *msg, int len, void *sp)
 {
    sendit(msg, len, (STATUS_PKT *)sp);
diff --git a/src/stored/stored.c b/src/stored/stored.c
index a180cfa..ab548da 100644
--- a/src/stored/stored.c
+++ b/src/stored/stored.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Second generation Storage daemon.
@@ -42,9 +30,9 @@
 
 /* TODO: fix problem with bls, bextract
  * that use findlib and already declare
- * filed plugins 
+ * filed plugins
  */
-#include "sd_plugins.h"         
+#include "sd_plugins.h"
 
 /* Imported functions */
 extern bool parse_sd_config(CONFIG *config, const char *configfile, int exit_code);
@@ -72,6 +60,8 @@ static uint32_t VolSessionId = 0;
 uint32_t VolSessionTime;
 char *configfile = NULL;
 bool init_done = false;
+static pthread_t server_tid;
+static bool server_tid_valid = false;
 
 /* Global static variables */
 static bool foreground = 0;
@@ -246,7 +236,7 @@ int main (int argc, char *argv[])
 
    create_pid_file(me->pid_directory, "bacula-sd",
                    get_first_port_host_order(me->sdaddrs));
-   read_state_file(me->working_directory, "bacula-sd", 
+   read_state_file(me->working_directory, "bacula-sd",
                    get_first_port_host_order(me->sdaddrs));
 
    set_jcr_in_tsd(INVALID_JCR);
@@ -281,6 +271,8 @@ int main (int argc, char *argv[])
    init_jcr_subsystem();              /* start JCR watchdogs etc. */
 
    /* Single server used for Director and File daemon */
+   server_tid = pthread_self();
+   server_tid_valid = true;
    bnet_thread_server(me->sdaddrs, me->max_concurrent_jobs * 2 + 1,
                       &dird_workq, handle_connection_request);
    exit(1);                           /* to keep compiler quiet */
@@ -345,7 +337,7 @@ static int check_resources()
 
    DIRRES *director;
    STORES *store;
-   foreach_res(store, R_STORAGE) { 
+   foreach_res(store, R_STORAGE) {
       /* tls_require implies tls_enable */
       if (store->tls_require) {
          if (have_tls) {
@@ -390,7 +382,7 @@ static int check_resources()
             store->tls_keyfile, NULL, NULL, store->tls_dhfile,
             store->tls_verify_peer);
 
-         if (!store->tls_ctx) { 
+         if (!store->tls_ctx) {
             Jmsg(NULL, M_FATAL, 0, _("Failed to initialize TLS context for Storage \"%s\" in %s.\n"),
                  store->hdr.name, configfile);
             OK = false;
@@ -398,7 +390,7 @@ static int check_resources()
       }
    }
 
-   foreach_res(director, R_DIRECTOR) { 
+   foreach_res(director, R_DIRECTOR) {
       /* tls_require implies tls_enable */
       if (director->tls_require) {
          director->tls_enable = true;
@@ -437,7 +429,7 @@ static int check_resources()
             director->tls_keyfile, NULL, NULL, director->tls_dhfile,
             director->tls_verify_peer);
 
-         if (!director->tls_ctx) { 
+         if (!director->tls_ctx) {
             Jmsg(NULL, M_FATAL, 0, _("Failed to initialize TLS context for Director \"%s\" in %s.\n"),
                  director->hdr.name, configfile);
             OK = false;
@@ -447,7 +439,7 @@ static int check_resources()
 
    OK = init_autochangers();
 
-   
+
    if (OK) {
       close_msg(NULL);                   /* close temp message handler */
       init_msg(NULL, me->messages);      /* open daemon message handler */
@@ -497,10 +489,10 @@ static void cleanup_old_files()
    if (name_max < 1024) {
       name_max = 1024;
    }
-      
+
    if (!(dp = opendir(me->working_directory))) {
       berrno be;
-      Pmsg2(000, "Failed to open working dir %s for cleanup: ERR=%s\n", 
+      Pmsg2(000, "Failed to open working dir %s for cleanup: ERR=%s\n",
             me->working_directory, be.bstrerror());
       goto get_out1;
    }
@@ -514,7 +506,7 @@ static void cleanup_old_files()
       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;    
+         continue;
       }
 
       /* Unlink files that match regex */
@@ -607,7 +599,8 @@ void *device_initialization(void *arg)
       jcr->dcr = NULL;
    }
 #endif
-   free_jcr(jcr); 
+   free_plugins(jcr);
+   free_jcr(jcr);
    init_done = true;
    UnlockRes();
    return NULL;
@@ -683,7 +676,9 @@ void terminate_stored(int sig)
          Dmsg1(10, "No dev structure %s\n", device->device_name);
       }
    }
-
+   if (server_tid_valid) {
+      bnet_stop_thread_server(server_tid);
+   }
    if (configfile) {
       free(configfile);
       configfile = NULL;
@@ -694,7 +689,7 @@ void terminate_stored(int sig)
       config = NULL;
    }
 
-   if (debug_level > 10) {
+   if (chk_dbglvl(10)) {
       print_memory_pool_stats();
    }
    term_msg();
diff --git a/src/stored/stored.h b/src/stored/stored.h
index 2af78c4..7721184 100644
--- a/src/stored/stored.h
+++ b/src/stored/stored.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2013 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Storage daemon specific defines and includes
@@ -35,10 +23,17 @@
 
 #define STORAGE_DAEMON 1
 
-/* Set to debug mutexes */
-//#define SD_DEBUG_LOCK
+/* Set to debug Lock() and Unlock() only */
+#define DEV_DEBUG_LOCK
+
+/*
+ * Set to define all SD locks except Lock()
+ *  currently this does not work. More locks
+ *  must be converted.
+ */
+#define SD_DEBUG_LOCK
 #ifdef SD_DEBUG_LOCK
-const int sd_dbglvl = 3;
+const int sd_dbglvl = 300;
 #else
 const int sd_dbglvl = 300;
 #endif
@@ -61,6 +56,8 @@ const int sd_dbglvl = 300;
 #include "block.h"
 #include "record.h"
 #include "dev.h"
+#include "file_dev.h"
+#include "tape_dev.h"
 #include "stored_conf.h"
 #include "bsr.h"
 #include "jcr.h"
@@ -72,10 +69,6 @@ const int sd_dbglvl = 300;
 #else
 #define uLongf uint32_t
 #endif
-#ifdef HAVE_LZO
-#include <lzo/lzoconf.h>
-#include <lzo/lzo1x.h>
-#endif
 #ifdef HAVE_FNMATCH
 #include <fnmatch.h>
 #else
@@ -89,13 +82,15 @@ const int sd_dbglvl = 300;
 int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
 #endif
 
-#include "vtape.h"
+#include "file_dev.h"
+#include "tape_dev.h"
+#include "vtape_dev.h"
 #include "sd_plugins.h"
 
 /* Daemon globals from stored.c */
 extern STORES *me;                    /* "Global" daemon resource */
 extern bool forge_on;                 /* proceed inspite of I/O errors */
 extern pthread_mutex_t device_release_mutex;
-extern pthread_cond_t wait_device_release; /* wait for any device to be released */                           
+extern pthread_cond_t wait_device_release; /* wait for any device to be released */
 
 #endif /* __STORED_H_ */
diff --git a/src/stored/stored_conf.c b/src/stored/stored_conf.c
index f659d16..dce408b 100644
--- a/src/stored/stored_conf.c
+++ b/src/stored/stored_conf.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Configuration file parser for Bacula Storage daemon
@@ -41,11 +29,6 @@ static RES *sres_head[R_LAST - R_FIRST + 1];
 RES **res_head = sres_head;
 
 
-/* Forward referenced subroutines */
-static void store_devtype(LEX *lc, RES_ITEM *item, int index, int pass);
-static void store_maxblocksize(LEX *lc, RES_ITEM *item, int index, int pass);
-
-
 /* We build the current resource here statically,
  * then move it to dynamic memory */
 #if defined(_MSC_VER)
@@ -142,12 +125,12 @@ static RES_ITEM dev_items[] = {
    {"offlineonunmount",      store_bit,  ITEM(res_dev.cap_bits), CAP_OFFLINEUNMOUNT, ITEM_DEFAULT, 0},
    {"blockchecksum",         store_bit,  ITEM(res_dev.cap_bits), CAP_BLOCKCHECKSUM, ITEM_DEFAULT, 1},
    {"autoselect",            store_bool, ITEM(res_dev.autoselect), 1, ITEM_DEFAULT, 1},
+   {"readonly",              store_bool, ITEM(res_dev.read_only), 1, ITEM_DEFAULT, 0},
    {"changerdevice",         store_strname,ITEM(res_dev.changer_name), 0, 0, 0},
    {"changercommand",        store_strname,ITEM(res_dev.changer_command), 0, 0, 0},
    {"alertcommand",          store_strname,ITEM(res_dev.alert_command), 0, 0, 0},
    {"maximumchangerwait",    store_time,   ITEM(res_dev.max_changer_wait), 0, ITEM_DEFAULT, 5 * 60},
    {"maximumopenwait",       store_time,   ITEM(res_dev.max_open_wait), 0, ITEM_DEFAULT, 5 * 60},
-   {"maximumopenvolumes",    store_pint32,   ITEM(res_dev.max_open_vols), 0, ITEM_DEFAULT, 1},
    {"maximumnetworkbuffersize", store_pint32, ITEM(res_dev.max_network_buffer_size), 0, 0, 0},
    {"volumepollinterval",    store_time,   ITEM(res_dev.vol_poll_interval), 0, ITEM_DEFAULT, 5 * 60},
    {"maximumrewindwait",     store_time,   ITEM(res_dev.max_rewind_wait), 0, ITEM_DEFAULT, 5 * 60},
@@ -224,7 +207,7 @@ static s_kw dev_types[] = {
  * Store Device Type (File, FIFO, Tape, DVD)
  *
  */
-static void store_devtype(LEX *lc, RES_ITEM *item, int index, int pass)
+void store_devtype(LEX *lc, RES_ITEM *item, int index, int pass)
 {
    int i;
 
@@ -248,11 +231,11 @@ static void store_devtype(LEX *lc, RES_ITEM *item, int index, int pass)
  * Store Maximum Block Size, and check it is not greater than MAX_BLOCK_LENGTH
  *
  */
-static void store_maxblocksize(LEX *lc, RES_ITEM *item, int index, int pass)
+void store_maxblocksize(LEX *lc, RES_ITEM *item, int index, int pass)
 {
    store_size32(lc, item, index, pass);
    if (*(uint32_t *)(item->value) > MAX_BLOCK_LENGTH) {
-      scan_err2(lc, _("Maximum Block Size configured value %u is greater than allowed maximum: %u"), 
+      scan_err2(lc, _("Maximum Block Size configured value %u is greater than allowed maximum: %u"),
          *(uint32_t *)(item->value), MAX_BLOCK_LENGTH );
    }
 }
@@ -425,7 +408,7 @@ void free_resource(RES *sres, int type)
       if (res->res_dir.address) {
          free(res->res_dir.address);
       }
-      if (res->res_dir.tls_ctx) { 
+      if (res->res_dir.tls_ctx) {
          free_tls_context(res->res_dir.tls_ctx);
       }
       if (res->res_dir.tls_ca_certfile) {
@@ -458,7 +441,7 @@ void free_resource(RES *sres, int type)
          delete res->res_changer.device;
       }
       rwl_destroy(&res->res_changer.changer_lock);
-      break; 
+      break;
    case R_STORAGE:
       if (res->res_store.sdaddrs) {
          free_addresses(res->res_store.sdaddrs);
@@ -481,7 +464,7 @@ void free_resource(RES *sres, int type)
       if (res->res_store.scripts_directory) {
          free(res->res_store.scripts_directory);
       }
-      if (res->res_store.tls_ctx) { 
+      if (res->res_store.tls_ctx) {
          free_tls_context(res->res_store.tls_ctx);
       }
       if (res->res_store.tls_ca_certfile) {
@@ -566,7 +549,7 @@ void free_resource(RES *sres, int type)
 
 /* Save the new resource by chaining it into the head list for
  * the resource. If this is pass 2, we update any resource
- * or alist pointers.  
+ * or alist pointers.
  */
 void save_resource(int type, RES_ITEM *items, int pass)
 {
@@ -627,17 +610,17 @@ void save_resource(int type, RES_ITEM *items, int pass)
          /* we must explicitly copy the device alist pointer */
          res->res_changer.device   = res_all.res_changer.device;
          /*
-          * Now update each device in this resource to point back 
+          * Now update each device in this resource to point back
           *  to the changer resource.
           */
          foreach_alist(dev, res->res_changer.device) {
             dev->changer_res = (AUTOCHANGER *)&res->res_changer;
          }
-         if ((errstat = rwl_init(&res->res_changer.changer_lock, 
+         if ((errstat = rwl_init(&res->res_changer.changer_lock,
                                  PRIO_SD_ACH_ACCESS)) != 0)
          {
             berrno be;
-            Jmsg1(NULL, M_ERROR_TERM, 0, _("Unable to init lock: ERR=%s\n"), 
+            Jmsg1(NULL, M_ERROR_TERM, 0, _("Unable to init lock: ERR=%s\n"),
                   be.bstrerror(errstat));
          }
          break;
diff --git a/src/stored/stored_conf.h b/src/stored/stored_conf.h
index 13d8c74..98c2925 100644
--- a/src/stored/stored_conf.h
+++ b/src/stored/stored_conf.h
@@ -1,30 +1,20 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
+
+
 /*
  * Resource codes -- they must be sequential for indexing
  *
@@ -86,6 +76,7 @@ public:
    char *scripts_directory;
    uint32_t max_concurrent_jobs;      /* maximum concurrent jobs to run */
    MSGS *messages;                    /* Daemon message handler */
+   utime_t ClientConnectTimeout;      /* Max time to wait to connect client */
    utime_t heartbeat_interval;        /* Interval to send hb to FD */
    utime_t client_wait;               /* Time to wait for FD to connect */
    bool tls_authenticate;             /* Authenticate with TLS */
@@ -120,18 +111,19 @@ public:
    char *media_type;                  /* User assigned media type */
    char *device_name;                 /* Archive device name */
    char *changer_name;                /* Changer device name */
+   char *control_name;                /* SCSI control device name */
    char *changer_command;             /* Changer command  -- external program */
    char *alert_command;               /* Alert command -- external program */
    char *spool_directory;             /* Spool file directory */
    uint32_t dev_type;                 /* device type */
    uint32_t label_type;               /* label type */
    bool autoselect;                   /* Automatically select from AutoChanger */
+   bool read_only;                    /* Drive is read only */
    uint32_t drive_index;              /* Autochanger drive index */
    uint32_t cap_bits;                 /* Capabilities of this device */
    utime_t max_changer_wait;          /* Changer timeout */
    utime_t max_rewind_wait;           /* maximum secs to wait for rewind */
    utime_t max_open_wait;             /* maximum secs to wait for open */
-   uint32_t max_open_vols;            /* maximum simultaneous open volumes */
    uint32_t min_block_size;           /* min block size */
    uint32_t max_block_size;           /* max block size */
    uint32_t max_volume_jobs;          /* max jobs to put on one volume */
@@ -142,16 +134,17 @@ public:
    int64_t max_volume_size;           /* max bytes to put on one volume */
    int64_t max_file_size;             /* max file size in bytes */
    int64_t volume_capacity;           /* advisory capacity */
+   int64_t min_free_space;            /* Minimum disk free space */
    int64_t max_spool_size;            /* Max spool size for all jobs */
    int64_t max_job_spool_size;        /* Max spool size for any single job */
-   
+
    int64_t max_part_size;             /* Max part size */
    char *mount_point;                 /* Mount point for require mount devices */
    char *mount_command;               /* Mount command */
    char *unmount_command;             /* Unmount command */
    char *write_part_command;          /* Write part command */
    char *free_space_command;          /* Free space command */
-   
+
    /* The following are set at runtime */
    DEVICE *dev;                       /* Pointer to phyical dev -- set at runtime */
    AUTOCHANGER *changer_res;          /* pointer to changer res if any */
diff --git a/src/stored/tape_dev.c b/src/stored/tape_dev.c
new file mode 100644
index 0000000..281b85a
--- /dev/null
+++ b/src/stored/tape_dev.c
@@ -0,0 +1,1000 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2000-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ *
+ *   tape_dev.c  -- low level operations on tape devices
+ *
+ *     written by, Kern Sibbald, MM
+ *     separated from dev.c in February 2014
+ *
+ *   The separation between tape and file is not yet clean.
+ *
+ */
+
+/*
+ * Handling I/O errors and end of tape conditions are a bit tricky.
+ * This is how it is currently done when writing.
+ * On either an I/O error or end of tape,
+ * we will stop writing on the physical device (no I/O recovery is
+ * attempted at least in this daemon). The state flag will be sent
+ * to include ST_EOT, which is ephemeral, and ST_WEOT, which is
+ * persistent. Lots of routines clear ST_EOT, but ST_WEOT is
+ * cleared only when the problem goes away.  Now when ST_WEOT
+ * is set all calls to write_block_to_device() call the fix_up
+ * routine. In addition, all threads are blocked
+ * from writing on the tape by calling lock_dev(), and thread other
+ * than the first thread to hit the EOT will block on a condition
+ * variable. The first thread to hit the EOT will continue to
+ * be able to read and write the tape (he sort of tunnels through
+ * the locking mechanism -- see lock_dev() for details).
+ *
+ * Now presumably somewhere higher in the chain of command
+ * (device.c), someone will notice the EOT condition and
+ * get a new tape up, get the tape label read, and mark
+ * the label for rewriting. Then this higher level routine
+ * will write the unwritten buffer to the new volume.
+ * Finally, he will release
+ * any blocked threads by doing a broadcast on the condition
+ * variable.  At that point, we should be totally back in
+ * business with no lost data.
+ */
+
+#include "bacula.h"
+#include "stored.h"
+
+#ifndef O_NONBLOCK
+#define O_NONBLOCK 0
+#endif
+
+/* Imported functions */
+extern void set_os_device_parameters(DCR *dcr);
+extern bool dev_get_os_pos(DEVICE *dev, struct mtget *mt_stat);
+extern uint32_t status_dev(DEVICE *dev);
+const char *mode_to_str(int mode);
+
+/*
+ */
+void DEVICE::open_tape_device(DCR *dcr, int omode)
+{
+   file_size = 0;
+   int timeout = max_open_wait;
+#if !defined(HAVE_WIN32)
+   struct mtop mt_com;
+   utime_t start_time = time(NULL);
+#endif
+
+   mount(1);                          /* do mount if required */
+
+   Dmsg0(100, "Open dev: device is tape\n");
+
+   get_autochanger_loaded_slot(dcr);
+
+   openmode = omode;
+   set_mode(omode);
+
+   if (timeout < 1) {
+      timeout = 1;
+   }
+   errno = 0;
+   if (is_fifo() && timeout) {
+      /* Set open timer */
+      tid = start_thread_timer(dcr->jcr, pthread_self(), timeout);
+   }
+   Dmsg2(100, "Try open %s mode=%s\n", print_name(), mode_to_str(omode));
+#if defined(HAVE_WIN32)
+
+   /*   Windows Code */
+   if ((m_fd = d_open(dev_name, mode)) < 0) {
+      dev_errno = errno;
+   }
+
+#else
+
+   /*  UNIX  Code */
+   /* If busy retry each second for max_open_wait seconds */
+   for ( ;; ) {
+      /* Try non-blocking open */
+      m_fd = d_open(dev_name, mode+O_NONBLOCK);
+      if (m_fd < 0) {
+         berrno be;
+         dev_errno = errno;
+         Dmsg5(100, "Open error on %s omode=%d mode=%x errno=%d: ERR=%s\n",
+              print_name(), omode, mode, errno, be.bstrerror());
+      } else {
+         /* Tape open, now rewind it */
+         Dmsg0(100, "Rewind after open\n");
+         mt_com.mt_op = MTREW;
+         mt_com.mt_count = 1;
+         /* rewind only if dev is a tape */
+         if (is_tape() && (d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0)) {
+            berrno be;
+            dev_errno = errno;           /* set error status from rewind */
+            d_close(m_fd);
+            clear_opened();
+            Dmsg2(100, "Rewind error on %s close: ERR=%s\n", print_name(),
+                  be.bstrerror(dev_errno));
+            /* If we get busy, device is probably rewinding, try again */
+            if (dev_errno != EBUSY) {
+               break;                    /* error -- no medium */
+            }
+         } else {
+            /* Got fd and rewind worked, so we must have medium in drive */
+            d_close(m_fd);
+            m_fd = d_open(dev_name, mode);  /* open normally */
+            if (m_fd < 0) {
+               berrno be;
+               dev_errno = errno;
+               Dmsg5(100, "Open error on %s omode=%d mode=%x errno=%d: ERR=%s\n",
+                     print_name(), omode, mode, errno, be.bstrerror());
+               break;
+            }
+            dev_errno = 0;
+            lock_door();
+            set_os_device_parameters(dcr);       /* do system dependent stuff */
+            break;                               /* Successfully opened and rewound */
+         }
+      }
+      bmicrosleep(5, 0);
+      /* Exceed wait time ? */
+      if (time(NULL) - start_time >= max_open_wait) {
+         break;                       /* yes, get out */
+      }
+   }
+#endif
+
+   if (!is_open()) {
+      berrno be;
+      Mmsg2(errmsg, _("Unable to open device %s: ERR=%s\n"),
+            print_name(), be.bstrerror(dev_errno));
+      Dmsg1(100, "%s", errmsg);
+   }
+
+   /* Stop any open() timer we started */
+   if (tid) {
+      stop_thread_timer(tid);
+      tid = 0;
+   }
+   Dmsg1(100, "open dev: tape %d opened\n", m_fd);
+}
+
+
+/*
+ * Rewind the device.
+ *  Returns: true  on success
+ *           false on failure
+ */
+bool tape_dev::rewind(DCR *dcr)
+{
+   struct mtop mt_com;
+   unsigned int i;
+   bool first = true;
+
+   Dmsg3(400, "rewind res=%d fd=%d %s\n", num_reserved(), m_fd, print_name());
+   state &= ~(ST_EOT|ST_EOF|ST_WEOT);  /* remove EOF/EOT flags */
+   block_num = file = 0;
+   file_size = 0;
+   file_addr = 0;
+   if (m_fd < 0) {
+      return false;
+   }
+   if (is_tape()) {
+      mt_com.mt_op = MTREW;
+      mt_com.mt_count = 1;
+      /* If we get an I/O error on rewind, it is probably because
+       * the drive is actually busy. We loop for (about 5 minutes)
+       * retrying every 5 seconds.
+       */
+      for (i=max_rewind_wait; ; i -= 5) {
+         if (d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0) {
+            berrno be;
+            clrerror(MTREW);
+            if (i == max_rewind_wait) {
+               Dmsg1(200, "Rewind error, %s. retrying ...\n", be.bstrerror());
+            }
+            /*
+             * This is a gross hack, because if the user has the
+             *   device mounted (i.e. open), then uses mtx to load
+             *   a tape, the current open file descriptor is invalid.
+             *   So, we close the drive and re-open it.
+             */
+            if (first && dcr) {
+               int open_mode = openmode;
+               d_close(m_fd);
+               clear_opened();
+               open(dcr, open_mode);
+               if (m_fd < 0) {
+                  return false;
+               }
+               first = false;
+               continue;
+            }
+#ifdef HAVE_SUN_OS
+            if (dev_errno == EIO) {
+               Mmsg1(errmsg, _("No tape loaded or drive offline on %s.\n"), print_name());
+               return false;
+            }
+#else
+            if (dev_errno == EIO && i > 0) {
+               Dmsg0(200, "Sleeping 5 seconds.\n");
+               bmicrosleep(5, 0);
+               continue;
+            }
+#endif
+            Mmsg2(errmsg, _("Rewind error on %s. ERR=%s.\n"),
+               print_name(), be.bstrerror());
+            return false;
+         }
+         break;
+      }
+   }
+   return true;
+}
+
+/*
+ * Position device to end of medium (end of data)
+ *  Returns: true  on succes
+ *           false on error
+ */
+bool DEVICE::eod(DCR *dcr)
+{
+   struct mtop mt_com;
+   bool ok = true;
+   boffset_t pos;
+   int32_t os_file;
+
+   Enter(100);
+   if (m_fd < 0) {
+      dev_errno = EBADF;
+      Mmsg1(errmsg, _("Bad call to eod. Device %s not open\n"), print_name());
+      Dmsg1(100, "%s", errmsg);
+      return false;
+   }
+
+#if defined (__digital__) && defined (__unix__)
+   return fsf(VolCatInfo.VolCatFiles);
+#endif
+
+   if (at_eot()) {
+      Leave(100);
+      return true;
+   }
+   clear_eof();         /* remove EOF flag */
+   block_num = file = 0;
+   file_size = 0;
+   file_addr = 0;
+   if (is_fifo()) {
+      Leave(100);
+      return true;
+   }
+   if (!is_tape()) {
+      pos = lseek(dcr, (boffset_t)0, SEEK_END);
+      Dmsg1(200, "====== Seek to %lld\n", pos);
+      if (pos >= 0) {
+         update_pos(dcr);
+         set_eot();
+         Leave(100);
+         return true;
+      }
+      dev_errno = errno;
+      berrno be;
+      Mmsg2(errmsg, _("lseek error on %s. ERR=%s.\n"),
+             print_name(), be.bstrerror());
+      Dmsg1(100, "%s", errmsg);
+      Leave(100);
+      return false;
+   }
+#ifdef MTEOM
+   if (has_cap(CAP_FASTFSF) && !has_cap(CAP_EOM)) {
+      Dmsg0(100,"Using FAST FSF for EOM\n");
+      /* If unknown position, rewind */
+      if (get_os_tape_file() < 0) {
+        if (!rewind(NULL)) {
+          Dmsg0(100, "Rewind error\n");
+          Leave(100);
+          return false;
+        }
+      }
+      mt_com.mt_op = MTFSF;
+      /*
+       * ***FIXME*** fix code to handle case that INT16_MAX is
+       *   not large enough.
+       */
+      mt_com.mt_count = INT16_MAX;    /* use big positive number */
+      if (mt_com.mt_count < 0) {
+         mt_com.mt_count = INT16_MAX; /* brain damaged system */
+      }
+   }
+
+   if (has_cap(CAP_MTIOCGET) && (has_cap(CAP_FASTFSF) || has_cap(CAP_EOM))) {
+      if (has_cap(CAP_EOM)) {
+         Dmsg0(100,"Using EOM for EOM\n");
+         mt_com.mt_op = MTEOM;
+         mt_com.mt_count = 1;
+      }
+
+      if (d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0) {
+         berrno be;
+         clrerror(mt_com.mt_op);
+         Dmsg1(50, "ioctl error: %s\n", be.bstrerror());
+         update_pos(dcr);
+         Mmsg2(errmsg, _("ioctl MTEOM error on %s. ERR=%s.\n"),
+            print_name(), be.bstrerror());
+         Dmsg1(100, "%s", errmsg);
+         Leave(100);
+         return false;
+      }
+
+      os_file = get_os_tape_file();
+      if (os_file < 0) {
+         berrno be;
+         clrerror(-1);
+         Mmsg2(errmsg, _("ioctl MTIOCGET error on %s. ERR=%s.\n"),
+            print_name(), be.bstrerror());
+         Dmsg1(100, "%s", errmsg);
+         Leave(100);
+         return false;
+      }
+      Dmsg1(100, "EOD file=%d\n", os_file);
+      set_ateof();
+      file = os_file;
+   } else {
+#else
+   {
+#endif
+      /*
+       * Rewind then use FSF until EOT reached
+       */
+      if (!rewind(NULL)) {
+         Dmsg0(100, "Rewind error.\n");
+         Leave(100);
+         return false;
+      }
+      /*
+       * Move file by file to the end of the tape
+       */
+      int file_num;
+      for (file_num=file; !at_eot(); file_num++) {
+         Dmsg0(200, "eod: doing fsf 1\n");
+         if (!fsf(1)) {
+            Dmsg0(100, "fsf error.\n");
+            Leave(100);
+            return false;
+         }
+         /*
+          * Avoid infinite loop by ensuring we advance.
+          */
+         if (!at_eot() && file_num == (int)file) {
+            Dmsg1(100, "fsf did not advance from file %d\n", file_num);
+            set_ateof();
+            os_file = get_os_tape_file();
+            if (os_file >= 0) {
+               Dmsg2(100, "Adjust file from %d to %d\n", file_num, os_file);
+               file = os_file;
+            }
+            break;
+         }
+      }
+   }
+   /*
+    * Some drivers leave us after second EOF when doing
+    * MTEOM, so we must backup so that appending overwrites
+    * the second EOF.
+    */
+   if (has_cap(CAP_BSFATEOM)) {
+      /* Backup over EOF */
+      ok = bsf(1);
+      /* If BSF worked and fileno is known (not -1), set file */
+      os_file = get_os_tape_file();
+      if (os_file >= 0) {
+         Dmsg2(100, "BSFATEOF adjust file from %d to %d\n", file , os_file);
+         file = os_file;
+      } else {
+         file++;                       /* wing it -- not correct on all OSes */
+      }
+   } else {
+      update_pos(dcr);                 /* update position */
+   }
+   Dmsg1(200, "EOD dev->file=%d\n", file);
+   Leave(100);
+   return ok;
+}
+
+/*
+ * Load medium in device
+ *  Returns: true  on success
+ *           false on failure
+ */
+bool load_dev(DEVICE *dev)
+{
+#ifdef MTLOAD
+   struct mtop mt_com;
+#endif
+
+   if (dev->fd() < 0) {
+      dev->dev_errno = EBADF;
+      Mmsg0(dev->errmsg, _("Bad call to load_dev. Device not open\n"));
+      Emsg0(M_FATAL, 0, dev->errmsg);
+      return false;
+   }
+   if (!(dev->is_tape())) {
+      return true;
+   }
+#ifndef MTLOAD
+   Dmsg0(200, "stored: MTLOAD command not available\n");
+   berrno be;
+   dev->dev_errno = ENOTTY;           /* function not available */
+   Mmsg2(dev->errmsg, _("ioctl MTLOAD error on %s. ERR=%s.\n"),
+         dev->print_name(), be.bstrerror());
+   return false;
+#else
+
+   dev->block_num = dev->file = 0;
+   dev->file_size = 0;
+   dev->file_addr = 0;
+   mt_com.mt_op = MTLOAD;
+   mt_com.mt_count = 1;
+   if (dev->d_ioctl(dev->fd(), MTIOCTOP, (char *)&mt_com) < 0) {
+      berrno be;
+      dev->dev_errno = errno;
+      Mmsg2(dev->errmsg, _("ioctl MTLOAD error on %s. ERR=%s.\n"),
+         dev->print_name(), be.bstrerror());
+      return false;
+   }
+   return true;
+#endif
+}
+
+/*
+ * Rewind device and put it offline
+ *  Returns: true  on success
+ *           false on failure
+ */
+bool tape_dev::offline()
+{
+   struct mtop mt_com;
+
+   if (!is_tape()) {
+      return true;                    /* device not open */
+   }
+
+   state &= ~(ST_APPEND|ST_READ|ST_EOT|ST_EOF|ST_WEOT);  /* remove EOF/EOT flags */
+   block_num = file = 0;
+   file_size = 0;
+   file_addr = 0;
+   unlock_door();
+   mt_com.mt_op = MTOFFL;
+   mt_com.mt_count = 1;
+   if (d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0) {
+      berrno be;
+      dev_errno = errno;
+      Mmsg2(errmsg, _("ioctl MTOFFL error on %s. ERR=%s.\n"),
+         print_name(), be.bstrerror());
+      return false;
+   }
+   Dmsg1(100, "Offlined device %s\n", print_name());
+   return true;
+}
+
+bool DEVICE::offline_or_rewind()
+{
+   if (m_fd < 0) {
+      return false;
+   }
+   if (has_cap(CAP_OFFLINEUNMOUNT)) {
+      return offline();
+   } else {
+   /*
+    * Note, this rewind probably should not be here (it wasn't
+    *  in prior versions of Bacula), but on FreeBSD, this is
+    *  needed in the case the tape was "frozen" due to an error
+    *  such as backspacing after writing and EOF. If it is not
+    *  done, all future references to the drive get and I/O error.
+    */
+      clrerror(MTREW);
+      return rewind(NULL);
+   }
+}
+
+/*
+ * Foward space a file
+ *   Returns: true  on success
+ *            false on failure
+ */
+bool tape_dev::fsf(int num)
+{
+   int32_t os_file = 0;
+   struct mtop mt_com;
+   int stat = 0;
+
+   if (!is_open()) {
+      dev_errno = EBADF;
+      Mmsg0(errmsg, _("Bad call to fsf. Device not open\n"));
+      Emsg0(M_FATAL, 0, errmsg);
+      return false;
+   }
+
+   if (!is_tape()) {
+      return true;
+   }
+
+   if (at_eot()) {
+      dev_errno = 0;
+      Mmsg1(errmsg, _("Device %s at End of Tape.\n"), print_name());
+      return false;
+   }
+   if (at_eof()) {
+      Dmsg0(200, "ST_EOF set on entry to FSF\n");
+   }
+
+   Dmsg0(100, "fsf\n");
+   block_num = 0;
+   /*
+    * If Fast forward space file is set, then we
+    *  use MTFSF to forward space and MTIOCGET
+    *  to get the file position. We assume that
+    *  the SCSI driver will ensure that we do not
+    *  forward space past the end of the medium.
+    */
+   if (has_cap(CAP_FSF) && has_cap(CAP_MTIOCGET) && has_cap(CAP_FASTFSF)) {
+      int my_errno = 0;
+      mt_com.mt_op = MTFSF;
+      mt_com.mt_count = num;
+      stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
+      if (stat < 0) {
+         my_errno = errno;            /* save errno */
+      } else if ((os_file=get_os_tape_file()) < 0) {
+         my_errno = errno;            /* save errno */
+      }
+      if (my_errno != 0) {
+         berrno be;
+         set_eot();
+         Dmsg0(200, "Set ST_EOT\n");
+         clrerror(MTFSF);
+         Mmsg2(errmsg, _("ioctl MTFSF error on %s. ERR=%s.\n"),
+            print_name(), be.bstrerror(my_errno));
+         Dmsg1(200, "%s", errmsg);
+         return false;
+      }
+
+      Dmsg1(200, "fsf file=%d\n", os_file);
+      set_ateof();
+      file = os_file;
+      return true;
+
+   /*
+    * Here if CAP_FSF is set, and virtually all drives
+    *  these days support it, we read a record, then forward
+    *  space one file. Using this procedure, which is slow,
+    *  is the only way we can be sure that we don't read
+    *  two consecutive EOF marks, which means End of Data.
+    */
+   } else if (has_cap(CAP_FSF)) {
+      POOLMEM *rbuf;
+      int rbuf_len;
+      Dmsg0(200, "FSF has cap_fsf\n");
+      if (max_block_size == 0) {
+         rbuf_len = DEFAULT_BLOCK_SIZE;
+      } else {
+         rbuf_len = max_block_size;
+      }
+      rbuf = get_memory(rbuf_len);
+      mt_com.mt_op = MTFSF;
+      mt_com.mt_count = 1;
+      while (num-- && !at_eot()) {
+         Dmsg0(100, "Doing read before fsf\n");
+         if ((stat = this->read((char *)rbuf, rbuf_len)) < 0) {
+            if (errno == ENOMEM) {     /* tape record exceeds buf len */
+               stat = rbuf_len;        /* This is OK */
+            /*
+             * On IBM drives, they return ENOSPC at EOM
+             *  instead of EOF status
+             */
+            } else if (at_eof() && errno == ENOSPC) {
+               stat = 0;
+            } else {
+               berrno be;
+               set_eot();
+               clrerror(-1);
+               Dmsg2(100, "Set ST_EOT read errno=%d. ERR=%s\n", dev_errno,
+                  be.bstrerror());
+               Mmsg2(errmsg, _("read error on %s. ERR=%s.\n"),
+                  print_name(), be.bstrerror());
+               Dmsg1(100, "%s", errmsg);
+               break;
+            }
+         }
+         if (stat == 0) {                /* EOF */
+            Dmsg1(100, "End of File mark from read. File=%d\n", file+1);
+            /* Two reads of zero means end of tape */
+            if (at_eof()) {
+               set_eot();
+               Dmsg0(100, "Set ST_EOT\n");
+               break;
+            } else {
+               set_ateof();
+               continue;
+            }
+         } else {                        /* Got data */
+            clear_eot();
+            clear_eof();
+         }
+
+         Dmsg0(100, "Doing MTFSF\n");
+         stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
+         if (stat < 0) {                 /* error => EOT */
+            berrno be;
+            set_eot();
+            Dmsg0(100, "Set ST_EOT\n");
+            clrerror(MTFSF);
+            Mmsg2(errmsg, _("ioctl MTFSF error on %s. ERR=%s.\n"),
+               print_name(), be.bstrerror());
+            Dmsg0(100, "Got < 0 for MTFSF\n");
+            Dmsg1(100, "%s", errmsg);
+         } else {
+            set_ateof();
+         }
+      }
+      free_memory(rbuf);
+
+   /*
+    * No FSF, so use FSR to simulate it
+    */
+   } else {
+      Dmsg0(200, "Doing FSR for FSF\n");
+      while (num-- && !at_eot()) {
+         fsr(INT32_MAX);    /* returns -1 on EOF or EOT */
+      }
+      if (at_eot()) {
+         dev_errno = 0;
+         Mmsg1(errmsg, _("Device %s at End of Tape.\n"), print_name());
+         stat = -1;
+      } else {
+         stat = 0;
+      }
+   }
+   Dmsg1(200, "Return %d from FSF\n", stat);
+   if (at_eof()) {
+      Dmsg0(200, "ST_EOF set on exit FSF\n");
+   }
+   if (at_eot()) {
+      Dmsg0(200, "ST_EOT set on exit FSF\n");
+   }
+   Dmsg1(200, "Return from FSF file=%d\n", file);
+   return stat == 0;
+}
+
+/*
+ * Backward space a file
+ *  Returns: false on failure
+ *           true  on success
+ */
+bool tape_dev::bsf(int num)
+{
+   struct mtop mt_com;
+   int stat;
+
+   if (!is_open()) {
+      dev_errno = EBADF;
+      Mmsg0(errmsg, _("Bad call to bsf. Device not open\n"));
+      Emsg0(M_FATAL, 0, errmsg);
+      return false;
+   }
+
+   if (!is_tape()) {
+      Mmsg1(errmsg, _("Device %s cannot BSF because it is not a tape.\n"),
+         print_name());
+      return false;
+   }
+
+   Dmsg0(100, "bsf\n");
+   clear_eot();
+   clear_eof();
+   file -= num;
+   file_addr = 0;
+   file_size = 0;
+   mt_com.mt_op = MTBSF;
+   mt_com.mt_count = num;
+   stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
+   if (stat < 0) {
+      berrno be;
+      clrerror(MTBSF);
+      Mmsg2(errmsg, _("ioctl MTBSF error on %s. ERR=%s.\n"),
+         print_name(), be.bstrerror());
+   }
+   return stat == 0;
+}
+
+
+/*
+ * Foward space num records
+ *  Returns: false on failure
+ *           true  on success
+ */
+bool DEVICE::fsr(int num)
+{
+   struct mtop mt_com;
+   int stat;
+
+   if (!is_open()) {
+      dev_errno = EBADF;
+      Mmsg0(errmsg, _("Bad call to fsr. Device not open\n"));
+      Emsg0(M_FATAL, 0, errmsg);
+      return false;
+   }
+
+   if (!is_tape()) {
+      return false;
+   }
+
+   if (!has_cap(CAP_FSR)) {
+      Mmsg1(errmsg, _("ioctl MTFSR not permitted on %s.\n"), print_name());
+      return false;
+   }
+
+   Dmsg1(100, "fsr %d\n", num);
+   mt_com.mt_op = MTFSR;
+   mt_com.mt_count = num;
+   stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
+   if (stat == 0) {
+      clear_eof();
+      block_num += num;
+   } else {
+      berrno be;
+      struct mtget mt_stat;
+      clrerror(MTFSR);
+      Dmsg1(100, "FSF fail: ERR=%s\n", be.bstrerror());
+      if (dev_get_os_pos(this, &mt_stat)) {
+         Dmsg4(100, "Adjust from %d:%d to %d:%d\n", file,
+            block_num, mt_stat.mt_fileno, mt_stat.mt_blkno);
+         file = mt_stat.mt_fileno;
+         block_num = mt_stat.mt_blkno;
+      } else {
+         if (at_eof()) {
+            set_eot();
+         } else {
+            set_ateof();
+         }
+      }
+      Mmsg3(errmsg, _("ioctl MTFSR %d error on %s. ERR=%s.\n"),
+         num, print_name(), be.bstrerror());
+   }
+   return stat == 0;
+}
+
+/*
+ * Backward space a record
+ *   Returns:  false on failure
+ *             true  on success
+ */
+bool DEVICE::bsr(int num)
+{
+   struct mtop mt_com;
+   int stat;
+
+   if (!is_open()) {
+      dev_errno = EBADF;
+      Mmsg0(errmsg, _("Bad call to bsr_dev. Device not open\n"));
+      Emsg0(M_FATAL, 0, errmsg);
+      return false;
+   }
+
+   if (!is_tape()) {
+      return false;
+   }
+
+   if (!has_cap(CAP_BSR)) {
+      Mmsg1(errmsg, _("ioctl MTBSR not permitted on %s.\n"), print_name());
+      return false;
+   }
+
+   Dmsg0(100, "bsr_dev\n");
+   block_num -= num;
+   clear_eof();
+   clear_eot();
+   mt_com.mt_op = MTBSR;
+   mt_com.mt_count = num;
+   stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
+   if (stat < 0) {
+      berrno be;
+      clrerror(MTBSR);
+      Mmsg2(errmsg, _("ioctl MTBSR error on %s. ERR=%s.\n"),
+         print_name(), be.bstrerror());
+   }
+   return stat == 0;
+}
+
+void tape_dev::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);
+#endif
+}
+
+void tape_dev::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);
+#endif
+}
+
+/*
+ * Reposition the device to file, block
+ * Returns: false on failure
+ *          true  on success
+ */
+bool tape_dev::reposition(DCR *dcr, uint32_t rfile, uint32_t rblock)
+{
+   if (!is_open()) {
+      dev_errno = EBADF;
+      Mmsg0(errmsg, _("Bad call to reposition. Device not open\n"));
+      Emsg0(M_FATAL, 0, errmsg);
+      return false;
+   }
+
+   /* After this point, we are tape only */
+   Dmsg4(100, "reposition from %u:%u to %u:%u\n", file, block_num, rfile, rblock);
+   if (rfile < file) {
+      Dmsg0(100, "Rewind\n");
+      if (!rewind(NULL)) {
+         return false;
+      }
+   }
+   if (rfile > file) {
+      Dmsg1(100, "fsf %d\n", rfile-file);
+      if (!fsf(rfile-file)) {
+         Dmsg1(100, "fsf failed! ERR=%s\n", bstrerror());
+         return false;
+      }
+      Dmsg2(100, "wanted_file=%d at_file=%d\n", rfile, file);
+   }
+   if (rblock < block_num) {
+      Dmsg2(100, "wanted_blk=%d at_blk=%d\n", rblock, block_num);
+      Dmsg0(100, "bsf 1\n");
+      bsf(1);
+      Dmsg0(100, "fsf 1\n");
+      fsf(1);
+      Dmsg2(100, "wanted_blk=%d at_blk=%d\n", rblock, block_num);
+   }
+   if (has_cap(CAP_POSITIONBLOCKS) && rblock > block_num) {
+      /* Ignore errors as Bacula can read to the correct block */
+      Dmsg1(100, "fsr %d\n", rblock-block_num);
+      return fsr(rblock-block_num);
+   } else {
+      while (rblock > block_num) {
+         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",
+               print_name(), be.bstrerror());
+            return false;
+         }
+         Dmsg2(300, "moving forward wanted_blk=%d at_blk=%d\n", rblock, block_num);
+      }
+   }
+   return true;
+}
+
+
+/*
+ * Write an end of file on the device
+ *   Returns: true on success
+ *            false on failure
+ */
+bool DEVICE::weof(int num)
+{
+   struct mtop mt_com;
+   int stat;
+   Dmsg1(129, "=== weof_dev=%s\n", print_name());
+
+   if (!is_open()) {
+      dev_errno = EBADF;
+      Mmsg0(errmsg, _("Bad call to weof_dev. Device not open\n"));
+      Emsg0(M_FATAL, 0, errmsg);
+      return false;
+   }
+   file_size = 0;
+
+   if (!is_tape()) {
+      return true;
+   }
+   if (!can_append()) {
+      Mmsg0(errmsg, _("Attempt to WEOF on non-appendable Volume\n"));
+      Emsg0(M_FATAL, 0, errmsg);
+      return false;
+   }
+
+   clear_eof();
+   clear_eot();
+   mt_com.mt_op = MTWEOF;
+   mt_com.mt_count = num;
+   stat = d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
+   if (stat == 0) {
+      block_num = 0;
+      file += num;
+      file_addr = 0;
+   } else {
+      berrno be;
+      clrerror(MTWEOF);
+      if (stat == -1) {
+         Mmsg2(errmsg, _("ioctl MTWEOF error on %s. ERR=%s.\n"),
+            print_name(), be.bstrerror());
+       }
+   }
+   return stat == 0;
+}
+
+/*
+ * (Un)mount the device (for tape devices)
+ */
+bool DEVICE::do_tape_mount(int mount, int dotimeout)
+{
+   POOL_MEM ocmd(PM_FNAME);
+   POOLMEM *results;
+   char *icmd;
+   int status, tries;
+   berrno be;
+
+   Dsm_check(200);
+   if (mount) {
+      icmd = device->mount_command;
+   } else {
+      icmd = device->unmount_command;
+   }
+
+   edit_mount_codes(ocmd, icmd);
+
+   Dmsg2(100, "do_tape_mount: cmd=%s mounted=%d\n", ocmd.c_str(), !!is_mounted());
+
+   if (dotimeout) {
+      /* Try at most 10 times to (un)mount the device. This should perhaps be configurable. */
+      tries = 10;
+   } else {
+      tries = 1;
+   }
+   results = get_memory(4000);
+
+   /* If busy retry each second */
+   Dmsg1(100, "do_tape_mount run_prog=%s\n", ocmd.c_str());
+   while ((status = run_program_full_output(ocmd.c_str(), max_open_wait/2, results)) != 0) {
+      if (tries-- > 0) {
+         continue;
+      }
+
+      Dmsg5(100, "Device %s cannot be %smounted. stat=%d result=%s ERR=%s\n", print_name(),
+           (mount ? "" : "un"), status, results, be.bstrerror(status));
+      Mmsg(errmsg, _("Device %s cannot be %smounted. ERR=%s\n"),
+           print_name(), (mount ? "" : "un"), be.bstrerror(status));
+
+      set_mounted(false);
+      free_pool_memory(results);
+      Dmsg0(200, "============ mount=0\n");
+      Dsm_check(200);
+      return false;
+   }
+
+   set_mounted(mount);              /* set/clear mounted flag */
+   free_pool_memory(results);
+   Dmsg1(200, "============ mount=%d\n", mount);
+   return true;
+}
diff --git a/src/stored/tape_dev.h b/src/stored/tape_dev.h
new file mode 100644
index 0000000..f6e087b
--- /dev/null
+++ b/src/stored/tape_dev.h
@@ -0,0 +1,39 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2014-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
+ * Inspired by vtape.h
+ */
+
+#ifndef __TAPE_DEV_
+#define __TAPE_DEV_
+
+class tape_dev : public DEVICE {
+public:
+
+   tape_dev() { };
+   ~tape_dev() { };
+
+   /* DEVICE virtual functions that we redefine with our tape code */
+   bool fsf(int num);
+   bool offline();
+   bool rewind(DCR *dcr);
+   bool bsf(int num);
+   void lock_door();
+   void unlock_door();
+   bool reposition(DCR *dcr, uint32_t rfile, uint32_t rblock);
+};
+
+#endif /* __TAPE_DEV_ */
diff --git a/src/stored/mac.c b/src/stored/vbackup.c
similarity index 68%
rename from src/stored/mac.c
rename to src/stored/vbackup.c
index 7883c9d..a8ae560 100644
--- a/src/stored/mac.c
+++ b/src/stored/vbackup.c
@@ -1,33 +1,20 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
- * SD -- mac.c --  responsible for doing
- *     migration, archive, copy, and virtual backup jobs.
+ * SD -- vbackup.c --  responsible for doing virtual backup jobs.
  *
  *     Kern Sibbald, January MMVI
  *
@@ -37,18 +24,17 @@
 #include "stored.h"
 
 /* Import functions */
-extern char Job_end[];   
+extern char Job_end[];
 
 /* Forward referenced subroutines */
 static bool record_cb(DCR *dcr, DEV_RECORD *rec);
 
-
 /*
  *  Read Data and send to File Daemon
  *   Returns: false on failure
  *            true  on success
  */
-bool do_mac(JCR *jcr)
+bool do_vbackup(JCR *jcr)
 {
    bool ok = true;
    BSOCK *dir = jcr->dir_bsock;
@@ -91,6 +77,8 @@ bool do_mac(JCR *jcr)
    Dmsg3(200, "Found %d volumes names for %s. First=%s\n", jcr->NumReadVolumes,
       jcr->VolList->VolumeName, Type);
 
+   ASSERT(jcr->read_dcr != jcr->dcr);
+   ASSERT(jcr->read_dcr->dev != jcr->dcr->dev);
    /* Ready devices for reading and writing */
    if (!acquire_device_for_read(jcr->read_dcr) ||
        !acquire_device_for_append(jcr->dcr)) {
@@ -99,7 +87,7 @@ bool do_mac(JCR *jcr)
    }
 
    Dmsg2(200, "===== After acquire pos %u:%u\n", jcr->dcr->dev->file, jcr->dcr->dev->block_num);
-     
+
    jcr->sendJobStatus(JS_Running);
 
    begin_data_spool(jcr->dcr);
@@ -129,7 +117,7 @@ ok_out:
             ok = false;
          }
          Dmsg2(200, "Flush block to device pos %u:%u\n", dev->file, dev->block_num);
-      }  
+      }
 
       if (!ok) {
          discard_data_spool(jcr->dcr);
@@ -152,9 +140,12 @@ ok_out:
             job_elapsed / 3600, job_elapsed % 3600 / 60, job_elapsed % 60,
             edit_uint64_with_suffix(jcr->JobBytes / job_elapsed, ec1));
 
+#ifdef BUILD_DVD
       if (ok && dev->is_dvd()) {
          ok = dvd_close_job(jcr->dcr);   /* do DVD cleanup if any */
       }
+#endif
+
       /* Release the device -- and send final Vol info to DIR */
       release_device(jcr->dcr);
 
@@ -183,14 +174,15 @@ ok_out:
    generate_plugin_event(jcr, bsdEventJobEnd);
    dir->fsend(Job_end, jcr->Job, jcr->JobStatus, jcr->JobFiles,
       edit_uint64(jcr->JobBytes, ec1), jcr->JobErrors);
-   Dmsg4(100, Job_end, jcr->Job, jcr->JobStatus, jcr->JobFiles, ec1); 
-       
+   Dmsg4(100, Job_end, jcr->Job, jcr->JobStatus, jcr->JobFiles, ec1);
+
    dir->signal(BNET_EOD);             /* send EOD to Director daemon */
    free_plugins(jcr);                 /* release instantiated plugins */
 
    return ok;
 }
 
+
 /*
  * Called here for each record from read_records()
  *  Returns: true if OK
@@ -201,9 +193,9 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
    JCR *jcr = dcr->jcr;
    DEVICE *dev = jcr->dcr->dev;
    char buf1[100], buf2[100];
-   
+
 #ifdef xxx
-   Dmsg5(000, "on entry     JobId=%d FI=%s SessId=%d Strm=%s len=%d\n",
+   Pmsg5(000, "on entry     JobId=%d FI=%s SessId=%d Strm=%s len=%d\n",
       jcr->JobId,
       FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
       stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len);
@@ -213,35 +205,35 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
       return true;
    }
    /* We want to write SOS_LABEL and EOS_LABEL discard all others */
-   switch (rec->FileIndex) {                        
+   switch (rec->FileIndex) {
    case PRE_LABEL:
    case VOL_LABEL:
    case EOT_LABEL:
    case EOM_LABEL:
       return true;                    /* don't write vol labels */
    }
-//   if (jcr->getJobType() == JT_BACKUP) {
-      /*
-       * For normal migration jobs, FileIndex values are sequential because
-       *  we are dealing with one job.  However, for Vbackup (consolidation),
-       *  we will be getting records from multiple jobs and writing them back
-       *  out, so we need to ensure that the output FileIndex is sequential.
-       *  We do so by detecting a FileIndex change and incrementing the
-       *  JobFiles, which we then use as the output FileIndex.
-       */
-      if (rec->FileIndex >= 0) { 
-         /* If something changed, increment FileIndex */
-         if (rec->VolSessionId != rec->last_VolSessionId || 
-             rec->VolSessionTime != rec->last_VolSessionTime ||
-             rec->FileIndex != rec->last_FileIndex) {
-            jcr->JobFiles++;
-            rec->last_VolSessionId = rec->VolSessionId;
-            rec->last_VolSessionTime = rec->VolSessionTime;
-            rec->last_FileIndex = rec->FileIndex;
-         }
-         rec->FileIndex = jcr->JobFiles;     /* set sequential output FileIndex */
+
+   /*
+    * For normal migration jobs, FileIndex values are sequential because
+    *  we are dealing with one job.  However, for Vbackup (consolidation),
+    *  we will be getting records from multiple jobs and writing them back
+    *  out, so we need to ensure that the output FileIndex is sequential.
+    *  We do so by detecting a FileIndex change and incrementing the
+    *  JobFiles, which we then use as the output FileIndex.
+    */
+   if (rec->FileIndex >= 0) {
+      /* If something changed, increment FileIndex */
+      if (rec->VolSessionId != rec->last_VolSessionId ||
+          rec->VolSessionTime != rec->last_VolSessionTime ||
+          rec->FileIndex != rec->last_FileIndex) {
+         jcr->JobFiles++;
+         rec->last_VolSessionId = rec->VolSessionId;
+         rec->last_VolSessionTime = rec->VolSessionTime;
+         rec->last_FileIndex = rec->FileIndex;
       }
-//   }
+      rec->FileIndex = jcr->JobFiles;     /* set sequential output FileIndex */
+   }
+
    /*
     * Modify record SessionId and SessionTime to correspond to
     * output.
@@ -252,17 +244,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, 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 (!jcr->dcr->write_block_to_device()) {
-         Dmsg2(90, "Got write_block_to_dev error on device %s. %s\n",
+   if (!jcr->dcr->write_record(rec)) {
+      Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
             dev->print_name(), dev->bstrerror());
-         Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
-               dev->print_name(), dev->bstrerror());
-         return false;
-      }
-      Dmsg2(200, "===== Wrote block new pos %u:%u\n", dev->file, dev->block_num);
+      return false;
    }
    /* Restore packet */
    rec->VolSessionId = rec->last_VolSessionId;
diff --git a/src/stored/vol_mgr.c b/src/stored/vol_mgr.c
index f3e28e7..31bf14a 100644
--- a/src/stored/vol_mgr.c
+++ b/src/stored/vol_mgr.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2013 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *   Volume management functions for Storage Daemon
  *
- *   Kern Sibbald, MM
+ *   Written by Kern Sibbald, MM
  *
  *   Split from reserve.c October 2008
  *
@@ -52,7 +40,7 @@ static void debug_list_volumes(const char *imsg);
 /*
  * For append volumes the key is the VolumeName.
  */
-static int my_compare(void *item1, void *item2)
+static int name_compare(void *item1, void *item2)
 {
    return strcmp(((VOLRES *)item1)->vol_name, ((VOLRES *)item2)->vol_name);
 }
@@ -74,8 +62,7 @@ static int read_compare(void *item1, void *item2)
    return 1;
 }
 
-
-bool is_vol_list_empty() 
+bool is_vol_list_empty()
 {
    return vol_list->empty();
 }
@@ -125,12 +112,13 @@ void _unlock_volumes()
    }
 }
 
-void lock_read_volumes(const char *file="**Unknown", int line=0)
+#define lock_read_volumes() lock_read_volumes_p(__FILE__, __LINE__)
+static void lock_read_volumes_p(const char *file="**Unknown", int line=0)
 {
    bthread_mutex_lock_p(&read_vol_lock, file, line);
 }
 
-void unlock_read_volumes()
+static void unlock_read_volumes()
 {
    bthread_mutex_unlock(&read_vol_lock);
 }
@@ -140,7 +128,7 @@ void unlock_read_volumes()
  * Note, we use VOLRES because it simplifies the code
  *   even though, the only part of VOLRES that we need is
  *   the volume name.  The same volume may be in the list
- *   multiple times, but each one is distinguished by the 
+ *   multiple times, but each one is distinguished by the
  *   JobId.  We use JobId, VolumeName as the key.
  * We can get called multiple times for the same volume because
  *   when parsing the bsr, the volume name appears multiple times.
@@ -151,15 +139,30 @@ void add_read_volume(JCR *jcr, const char *VolumeName)
 
    nvol = new_vol_item(NULL, VolumeName);
    nvol->set_jobid(jcr->JobId);
+   nvol->set_reading();
    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();
+}
+
+/*
+ * Check if volume name is in the read list.
+ */
+bool is_read_volume(JCR *jcr, const char *VolumeName)
+{
+   VOLRES vol, *fvol;
+   lock_read_volumes();
+   vol.vol_name = bstrdup(VolumeName);
+   fvol = (VOLRES *)read_vol_list->binary_search(&vol, name_compare);
+   free(vol.vol_name);
+   unlock_read_volumes();
+   return fvol != NULL;
 }
 
 /*
@@ -197,12 +200,17 @@ static void debug_list_volumes(const char *imsg)
    VOLRES *vol;
    POOL_MEM msg(PM_MESSAGE);
 
+   if (debug_level < dbglvl) {
+      return;
+   }
+
    foreach_vol(vol) {
       if (vol->dev) {
-         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());
+         Mmsg(msg, "List %s: %s in_use=%d swap=%d on %s device %s\n", imsg,
+              vol->vol_name, vol->is_in_use(), vol->is_swapping(),
+              vol->dev->print_type(), vol->dev->print_name());
       } else {
-         Mmsg(msg, "List %s: %s in_use=%d swap=%d no dev\n", imsg, vol->vol_name, 
+         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());
@@ -223,14 +231,15 @@ void list_volumes(void sendit(const char *msg, int len, void *sarg), void *arg)
    foreach_vol(vol) {
       DEVICE *dev = vol->dev;
       if (dev) {
-         len = Mmsg(msg, "%s on device %s\n", vol->vol_name, dev->print_name());
+         len = Mmsg(msg, "Reserved volume: %s on %s device %s\n", vol->vol_name,
+                  dev->print_type(), dev->print_name());
          sendit(msg.c_str(), len, arg);
          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, "Volume %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);
       }
@@ -241,14 +250,15 @@ void list_volumes(void sendit(const char *msg, int len, void *sarg), void *arg)
    foreach_dlist(vol, read_vol_list) {
       DEVICE *dev = vol->dev;
       if (dev) {
-         len = Mmsg(msg, "Read volume: %s on device %s\n", vol->vol_name, dev->print_name());
+         len = Mmsg(msg, "Read volume: %s on %s device %s\n", vol->vol_name,
+                  dev->print_type(), 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,
+         len = Mmsg(msg, "Volume: %s no device. volinuse=%d\n", vol->vol_name,
             vol->is_in_use());
          sendit(msg.c_str(), len, arg);
       }
@@ -281,12 +291,12 @@ static void free_vol_item(VOLRES *vol)
    DEVICE *dev = NULL;
 
    vol->dec_use_count();
-   vol->Lock();
+   vol->vLock();
    if (vol->use_count() > 0) {
-      vol->Unlock();
+      vol->vUnlock();
       return;
    }
-   vol->Unlock();
+   vol->vUnlock();
    free(vol->vol_name);
    if (vol->dev) {
       dev = vol->dev;
@@ -306,7 +316,7 @@ static void free_vol_item(VOLRES *vol)
  * If the device has any current volume associated with it,
  *  and it is a different Volume, and the device is not busy,
  *  we release the old Volume item and insert the new one.
- * 
+ *
  * It is assumed that the device is free and locked so that
  *  we can change the device structure.
  *
@@ -347,20 +357,32 @@ static void free_vol_item(VOLRES *vol)
  *
  *  Return: VOLRES entry on success
  *          NULL volume busy on another drive
+ *               jcr->errmsg has details
  */
 VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
 {
    VOLRES *vol, *nvol;
    DEVICE * volatile dev = dcr->dev;
+   JCR *jcr = dcr->jcr;
 
+   jcr->errmsg[0] = 0;
    if (job_canceled(dcr->jcr)) {
+      Mmsg1(jcr->errmsg, _("Could not reserve volume \"%s\", because job canceled.\n"),
+         dev->VolHdr.VolumeName);
       return NULL;
    }
-   ASSERT(dev != NULL);
+   ASSERT2(dev != NULL, "No device in reserve_volume!");
 
    Dmsg2(dbglvl, "enter reserve_volume=%s drive=%s\n", VolumeName,
       dcr->dev->print_name());
 
+   /* If acquiring to write, don't accept a Volume in read list */
+   if (dcr->is_writing() && is_read_volume(dcr->jcr, VolumeName)) {
+      Mmsg1(jcr->errmsg, _("Could not reserve volume \"%s\" for append, because it will be read.\n"),
+         dev->VolHdr.VolumeName);
+      return NULL;
+   }
+
    /*
     * We lock the reservations system here to ensure
     *  when adding a new volume that no newly scheduled
@@ -382,13 +404,16 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
        *  is not being used and is marked as not reserved.
        */
       if (strcmp(vol->vol_name, VolumeName) == 0) {
-         Dmsg2(dbglvl, "=== set reserved vol=%s dev=%s\n", VolumeName,
+         Dmsg2(dbglvl, "set reserved vol=%s dev=%s\n", VolumeName,
                vol->dev->print_name());
          goto get_out;                  /* Volume already on this device */
       } else {
          /* Don't release a volume if it was reserved by someone other than us */
-         if (vol->is_in_use() && !dcr->reserved_volume) { 
-            Dmsg1(dbglvl, "Cannot free vol=%s. It is reserved.\n", vol->vol_name);
+         if (vol->is_in_use() && !dcr->reserved_volume) {
+            Dmsg2(dbglvl, "Set wait(). Cannot free vol=%s for %s. It is reserved.\n", vol->vol_name, VolumeName);
+            Mmsg1(dcr->jcr->errmsg, _("Cannot free Volume \"%s\", because it is reserved by someone else.\n"),
+               vol->vol_name);
+            dev->set_wait();
             vol = NULL;                  /* vol in use */
             goto get_out;
          }
@@ -407,21 +432,40 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
    nvol = new_vol_item(dcr, VolumeName);
 
    /*
-    * Now try to insert the new Volume
+    * Handle request for read volume for file
+    *  device, for which we assume we can open multiple
+    *  devices to read the Volume.
+    *
+    * Note: when doing multiple simultaneous reads
+    *  of the same volume, the volume names are not
+    *  inserted into the write volume list.
+    */
+   if (dcr->is_reading() && dev->is_file()) {
+      nvol->set_jobid(dcr->jcr->JobId);
+      nvol->set_reading();
+      vol = nvol;
+      dev->vol = vol;
+      goto get_out;
+   } else {
+      vol = (VOLRES *)vol_list->binary_insert(nvol, name_compare);
+   }
+
+   /*
+    * This part handles any write volumes or read volumes that
+    *  cannot be simultaneously on multiple devices.
     */
-   vol = (VOLRES *)vol_list->binary_insert(nvol, my_compare);
    if (vol != nvol) {
-      Dmsg2(dbglvl, "Found vol=%s dev-same=%d\n", vol->vol_name, dev==vol->dev);
       /*
        * At this point, a Volume with this name already is in the list,
        *   so we simply release our new Volume entry. Note, this should
        *   only happen if we are moving the volume from one drive to another.
        */
-      Dmsg2(dbglvl, "reserve_vol free-tmp vol=%s at %p\n", 
+      Dmsg2(dbglvl, "Found vol=%s dev-same=%d\n", vol->vol_name, dev==vol->dev);
+      Dmsg2(dbglvl, "reserve_vol free-tmp vol=%s at %p\n",
             vol->vol_name, vol->vol_name);
       /*
-       * Clear dev pointer so that free_vol_item() doesn't 
-       *  take away our volume. 
+       * Clear dev pointer so that free_vol_item() doesn't
+       *  take away our volume.
        */
       nvol->dev = NULL;                  /* don't zap dev entry */
       free_vol_item(nvol);
@@ -439,7 +483,7 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
          /* Caller wants to switch Volume to another device */
          if (!vol->dev->is_busy() && !vol->is_swapping()) {
             int32_t slot;
-            Dmsg3(dbglvl, "==== Swap vol=%s from dev=%s to %s\n", 
+            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 */
             Dmsg1(50, "set_unload dev=%s\n", dev->print_name());
@@ -456,18 +500,29 @@ 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 {
-            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) {
-               Dmsg3(dbglvl, "Swap failed vol=%s from=%s to dev=%s\n", 
-                 vol->vol_name, dev->swap_dev->print_name(), dev->print_name());
+            if (dev) {
+               Jmsg8(jcr, M_WARNING, 0, "Need volume for %s from other drive, "
+                  "but swap not possible. Status: reader=%d writers=%d "
+                  "reserves=%d swap=%d vol=%s from dev=%s to %s\n", 
+                  dcr->is_writing()?"write":"read",
+                  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()) {
+               if (vol->dev && vol->dev->swap_dev && dev && dev->swap_dev) {
+                  Mmsg3(jcr->errmsg, _("Volume %s is busy swapping from %s to %s\n"),
+                     vol->vol_name, dev->print_name(), dev->swap_dev->print_name());
+               } else {
+                  Mmsg1(jcr->errmsg, _("Volume %s is busy swapping.\n"),
+                     vol->vol_name);
+               }
+            } else if (vol->dev) {
+               Mmsg2(jcr->errmsg, _("%s device %s is busy.\n"), 
+                  vol->dev->print_type(), vol->dev->print_name());
             } else {
-               Dmsg3(dbglvl, "Swap failed vol=%s from=%p to dev=%s\n", 
-                  vol->vol_name, dev->swap_dev, dev->print_name());
+               Mmsg1(jcr->errmsg, _("Volume %s is busy swapping.\n"),
+                  vol->vol_name);
             }
             debug_list_volumes("failed swap");
             vol = NULL;                  /* device busy */
@@ -482,7 +537,7 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
 
 get_out:
    if (vol) {
-      Dmsg2(dbglvl, "=== set in_use. vol=%s dev=%s\n", vol->vol_name,
+      Dmsg2(dbglvl, "set in_use. vol=%s dev=%s\n", vol->vol_name,
             vol->dev->print_name());
       vol->set_in_use();
       dcr->reserved_volume = true;
@@ -537,10 +592,10 @@ VOLRES *vol_walk_next(VOLRES *prev_vol)
       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);
    }
+   unlock_volumes();
    return vol;
 }
 
@@ -550,9 +605,11 @@ VOLRES *vol_walk_next(VOLRES *prev_vol)
 void vol_walk_end(VOLRES *vol)
 {
    if (vol) {
+      lock_volumes();
       Dmsg2(dbglvl, "Free walk_end use_count=%d volname=%s\n",
             vol->use_count(), vol->vol_name);
       free_vol_item(vol);
+      unlock_volumes();
    }
 }
 
@@ -562,7 +619,7 @@ void vol_walk_end(VOLRES *vol)
  *  Returns: VOLRES entry on success
  *           NULL if the Volume is not in the list
  */
-VOLRES *find_volume(const char *VolumeName) 
+static VOLRES *find_volume(const char *VolumeName)
 {
    VOLRES vol, *fvol;
 
@@ -572,7 +629,7 @@ VOLRES *find_volume(const char *VolumeName)
    /* Do not lock reservations here */
    lock_volumes();
    vol.vol_name = bstrdup(VolumeName);
-   fvol = (VOLRES *)vol_list->binary_search(&vol, my_compare);
+   fvol = (VOLRES *)vol_list->binary_search(&vol, name_compare);
    free(vol.vol_name);
    Dmsg2(dbglvl, "find_vol=%s found=%d\n", VolumeName, fvol!=NULL);
    debug_list_volumes("find_volume");
@@ -586,7 +643,7 @@ VOLRES *find_volume(const char *VolumeName)
  *  Returns: VOLRES entry on success
  *           NULL if the Volume is not in the list
  */
-static VOLRES *find_read_volume(const char *VolumeName) 
+static VOLRES *find_read_volume(const char *VolumeName)
 {
    VOLRES vol, *fvol;
 
@@ -597,8 +654,8 @@ static VOLRES *find_read_volume(const char *VolumeName)
    /* Do not lock reservations here */
    lock_read_volumes();
    vol.vol_name = bstrdup(VolumeName);
-   /* Note, we do want a simple my_compare on volume name only here */
-   fvol = (VOLRES *)read_vol_list->binary_search(&vol, my_compare);
+   /* Note, we do want a simple name_compare on volume name only here */
+   fvol = (VOLRES *)read_vol_list->binary_search(&vol, name_compare);
    free(vol.vol_name);
    Dmsg2(dbglvl, "find_read_vol=%s found=%d\n", VolumeName, fvol!=NULL);
    unlock_read_volumes();
@@ -626,7 +683,7 @@ bool volume_unused(DCR *dcr)
       return false;
    }
 
-   Dmsg1(dbglvl, "=== clear in_use vol=%s\n", dev->vol->vol_name);
+   Dmsg1(dbglvl, "Clear in_use vol=%s\n", dev->vol->vol_name);
    dev->vol->clear_in_use();
 
    if (dev->vol->is_swapping()) {
@@ -641,7 +698,7 @@ bool volume_unused(DCR *dcr)
     *  explicitly read in this drive. This allows the SD to remember
     *  where the tapes are or last were.
     */
-   Dmsg4(dbglvl, "=== set not reserved vol=%s num_writers=%d dev_reserved=%d dev=%s\n",
+   Dmsg4(dbglvl, "set not reserved vol=%s writers=%d reserves=%d dev=%s\n",
       dev->vol->vol_name, dev->num_writers, dev->num_reserved(), dev->print_name());
    if (dev->is_tape() || dev->is_autochanger()) {
       return true;
@@ -656,6 +713,8 @@ bool volume_unused(DCR *dcr)
 
 /*
  * Unconditionally release the volume entry
+ * Note: read volumes are not in the list, so
+ *   do not attempt to remove them.
  */
 bool free_volume(DEVICE *dev)
 {
@@ -670,21 +729,22 @@ bool free_volume(DEVICE *dev)
    }
    /* Don't free a volume while it is being swapped */
    if (!vol->is_swapping()) {
-      Dmsg1(dbglvl, "=== clear in_use vol=%s\n", vol->vol_name);
+      Dmsg1(dbglvl, "Clear in_use vol=%s\n", vol->vol_name);
       dev->vol = NULL;
-      vol_list->remove(vol);
-      Dmsg2(dbglvl, "=== remove volume %s dev=%s\n", vol->vol_name, dev->print_name());
+      if (vol->is_writing()) {
+         vol_list->remove(vol);
+      }
+      Dmsg2(dbglvl, "Remove volume %s dev=%s\n", vol->vol_name, dev->print_name());
       free_vol_item(vol);
       debug_list_volumes("free_volume");
    } else {
-      Dmsg1(dbglvl, "=== cannot clear swapping vol=%s\n", vol->vol_name);
+      Dmsg1(dbglvl, "=== Cannot clear. Swapping vol=%s\n", vol->vol_name);
    }
    unlock_volumes();
-// pthread_cond_broadcast(&wait_next_vol);
    return true;
 }
 
-      
+
 /* Create the Volume list */
 void create_volume_lists()
 {
@@ -746,8 +806,9 @@ void free_volume_lists()
    }
 }
 
-/* 
- * Determine if caller can write on volume
+/*
+ * Determine if caller can write on volume.
+ *  If not, return reason in jcr->errmsg
  */
 bool DCR::can_i_write_volume()
 {
@@ -755,6 +816,7 @@ bool DCR::can_i_write_volume()
 
    vol = find_read_volume(VolumeName);
    if (vol) {
+      Mmsg(jcr->errmsg, "Found in read list; cannot write vol=%s\n", VolumeName);
       Dmsg1(100, "Found in read list; cannot write vol=%s\n", VolumeName);
       return false;
    }
@@ -762,7 +824,8 @@ bool DCR::can_i_write_volume()
 }
 
 /*
- * Determine if caller can read or write volume
+ * Determine if caller can read or write volume.
+ *  If not, return reason in jcr->errmsg
  */
 bool DCR::can_i_use_volume()
 {
@@ -770,6 +833,7 @@ bool DCR::can_i_use_volume()
    VOLRES *vol;
 
    if (job_canceled(jcr)) {
+      Mmsg(jcr->errmsg, "Job is canceled\n");
       return false;
    }
    lock_volumes();
@@ -778,7 +842,7 @@ bool DCR::can_i_use_volume()
       Dmsg1(dbglvl, "Vol=%s not in use.\n", VolumeName);
       goto get_out;                   /* vol not in list */
    }
-   ASSERT(vol->dev != NULL);
+   ASSERT2(vol->dev != NULL, "No device in can_i_use_volume!");
 
    if (dev == vol->dev) {        /* same device OK */
       Dmsg1(dbglvl, "Vol=%s on same dev.\n", VolumeName);
@@ -794,7 +858,8 @@ bool DCR::can_i_use_volume()
    } else {
       Dmsg2(dbglvl, "Vol=%s dev=%s busy.\n", VolumeName, vol->dev->print_name());
    }
-   Dmsg2(dbglvl, "Vol=%s in use by %s.\n", VolumeName, vol->dev->print_name());
+   Mmsg(jcr->errmsg, "Volume=%s in use on another device %s.\n", VolumeName, vol->dev->print_name());
+   Dmsg2(dbglvl, "Volume=%s in use on another device %s.\n", VolumeName, vol->dev->print_name());
    rtn = false;
 
 get_out:
@@ -827,7 +892,7 @@ dlist *dup_vol_list(JCR *jcr)
       memset(tvol, 0, sizeof(VOLRES));
       tvol->vol_name = bstrdup(vol->vol_name);
       tvol->dev = vol->dev;
-      nvol = (VOLRES *)temp_vol_list->binary_insert(tvol, my_compare);
+      nvol = (VOLRES *)temp_vol_list->binary_insert(tvol, name_compare);
       if (tvol != nvol) {
          tvol->dev = NULL;                   /* don't zap dev entry */
          free_vol_item(tvol);
diff --git a/src/stored/vol_mgr.h b/src/stored/vol_mgr.h
index 44659ed..a065f3f 100644
--- a/src/stored/vol_mgr.h
+++ b/src/stored/vol_mgr.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2013 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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
@@ -55,7 +43,7 @@ void vol_walk_end(VOLRES *vol);
 /*
  * Volume reservation class -- see vol_mgr.c and reserve.c
  */
-class VOLRES { 
+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 */
@@ -70,8 +58,8 @@ public:
 
    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 vLock() { P(m_mutex); };
+   void vUnlock() { 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; };
diff --git a/src/stored/vtape.c b/src/stored/vtape_dev.c
similarity index 86%
rename from src/stored/vtape.c
rename to src/stored/vtape_dev.c
index c7c9f9b..d50cc2b 100644
--- a/src/stored/vtape.c
+++ b/src/stored/vtape_dev.c
@@ -1,32 +1,28 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2008-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2008-2014 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, which is 
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /*
+ * Please note!!! The VTAPE device is for testing only.
+ *  It simulates a tape drive, which is useful for testing
+ *  without a real drive, but is inefficient for writing
+ *  disk volumes. In addition, we do not test for every
+ *  possible error condition, so please do not use this
+ *  in production.
+ */
+/*
 
 Device {
   Name = Drive-1                      #
@@ -60,10 +56,8 @@ Device {
 #include "bacula.h"             /* define 64bit file usage */
 #include "stored.h"
 
-#include "vtape.h"
-
-
 #ifdef USE_VTAPE
+#include <fcntl.h>
 
 static int dbglevel = 100;
 #define FILE_OFFSET 30
@@ -73,6 +67,7 @@ void vtape_debug(int level)
    dbglevel = level;
 }
 
+/* DEVICE virtual that we redefine. */
 int vtape::d_ioctl(int fd, ioctl_req_t request, char *op)
 {
    int result = 0;
@@ -100,7 +95,7 @@ int vtape::tape_op(struct mtop *mt_com)
       errno = ENOMEDIUM;
       return -1;
    }
-   
+
    switch (mt_com->mt_op)
    {
    case MTRESET:
@@ -133,12 +128,12 @@ int vtape::tape_op(struct mtop *mt_com)
 /*
     file number = 1
     block number = 0
-   
+
     file number = 1
     block number = 1
-   
+
     mt: /dev/lto2: Erreur d'entree/sortie
-   
+
     file number = 2
     block number = 0
 */
@@ -168,7 +163,7 @@ int vtape::tape_op(struct mtop *mt_com)
       break;
 
    case MTOFFL:                 /* put tape offline */
-      result = offline();
+      result = offline() ? 0 : -1;
       break;
 
    case MTRETEN:                /* Re-tension tape. */
@@ -280,7 +275,7 @@ int vtape::tape_get(struct mtget *mt_get)
 //   pos_info.PartitionBlockValid ? pos_info.Partition : (ULONG)-1;
 
    /* TODO */
-   mt_get->mt_dsreg = 
+   mt_get->mt_dsreg =
       ((density << MT_ST_DENSITY_SHIFT) & MT_ST_DENSITY_MASK) |
       ((block_size << MT_ST_BLKSIZE_SHIFT) & MT_ST_BLKSIZE_MASK);
 
@@ -332,7 +327,7 @@ int vtape::tape_pos(struct mtpos *mt_pos)
  * current position are discarded.
  */
 int vtape::truncate_file()
-{  
+{
    Dmsg2(dbglevel, "truncate %i:%i\n", current_file, current_block);
    ftruncate(fd, lseek(fd, 0, SEEK_CUR));
    last_file = current_file;
@@ -347,7 +342,7 @@ vtape::~vtape()
 
 vtape::vtape()
 {
-   fd = -1;
+   lockfd = fd = -1;
 
    atEOF = false;
    atBOT = false;
@@ -361,6 +356,8 @@ vtape::vtape()
    current_file = 0;
    current_block = -1;
 
+   lockfile = NULL;
+
    max_block = VTAPE_MAX_BLOCK;
 }
 
@@ -370,6 +367,8 @@ int vtape::get_fd()
 }
 
 /*
+ * DEVICE virtual that we redefine.
+ *
  * Write a variable block of count size.
  * block = vtape_header + data
  * vtape_header = sizeof(data)
@@ -383,7 +382,7 @@ ssize_t vtape::d_write(int, const void *buffer, size_t count)
    ASSERT(buffer);
 
    ssize_t nb;
-   Dmsg3(dbglevel*2, "write len=%i %i:%i\n", 
+   Dmsg3(dbglevel*2, "write len=%i %i:%i\n",
          count, current_file,current_block);
 
    if (atEOT) {
@@ -395,7 +394,7 @@ ssize_t vtape::d_write(int, const void *buffer, size_t count)
    if (!atEOD) {                /* if not at the end of the data */
       truncate_file();
    }
- 
+
    if (current_block != -1) {
       current_block++;
    }
@@ -409,11 +408,11 @@ ssize_t vtape::d_write(int, const void *buffer, size_t count)
    uint32_t size = count;
    ::write(fd, &size, sizeof(uint32_t));
    nb = ::write(fd, buffer, count);
-   
+
    if (nb != (ssize_t)count) {
       atEOT = true;
-      Dmsg2(dbglevel, 
-            "Not enough space writing only %i of %i requested\n", 
+      Dmsg2(dbglevel,
+            "Not enough space writing only %i of %i requested\n",
             nb, count);
    }
 
@@ -449,7 +448,7 @@ int vtape::weof()
 
    last_FM = cur_FM;
    cur_FM = lseek(fd, 0, SEEK_CUR); // current position
-   
+
    /* update previous next_FM  */
    lseek(fd, last_FM + sizeof(uint32_t)+sizeof(boffset_t), SEEK_SET);
    ::write(fd, &cur_FM, sizeof(boffset_t));
@@ -472,7 +471,7 @@ int vtape::weof()
 
    last_file = MAX(current_file, last_file);
 
-   Dmsg4(dbglevel, "Writing EOF %i:%i last=%lli cur=%lli next=0\n", 
+   Dmsg4(dbglevel, "Writing EOF %i:%i last=%lli cur=%lli next=0\n",
          current_file, current_block, last_FM, cur_FM);
 
    return 0;
@@ -482,7 +481,7 @@ int vtape::weof()
  * Go to next FM
  */
 int vtape::fsf()
-{   
+{
    ASSERT(online);
    ASSERT(current_file >= 0);
    ASSERT(fd >= 0);
@@ -550,8 +549,8 @@ bool vtape::read_fm(VT_READ_FM_MODE read_all)
    ret = ::read(fd, &next_FM, sizeof(next_FM));
 
    current_block=0;
-   
-   Dmsg3(dbglevel, "Read FM cur=%lli last=%lli next=%lli\n", 
+
+   Dmsg3(dbglevel, "Read FM cur=%lli last=%lli next=%lli\n",
          cur_FM, last_FM, next_FM);
 
    return (ret == sizeof(next_FM));
@@ -565,11 +564,11 @@ int vtape::fsr(int count)
    ASSERT(online);
    ASSERT(current_file >= 0);
    ASSERT(fd >= 0);
-   
+
    int i,nb, ret=0;
 // boffset_t where=0;
    uint32_t s;
-   Dmsg4(dbglevel, "fsr %i:%i EOF=%i c=%i\n", 
+   Dmsg4(dbglevel, "fsr %i:%i EOF=%i c=%i\n",
          current_file,current_block,atEOF,count);
 
    check_eof();
@@ -585,7 +584,7 @@ int vtape::fsr(int count)
       return -1;
    }
 
-   atBOT = atEOF = false;   
+   atBOT = atEOF = false;
 
    /* check all block record */
    for(i=0; (i < count) && !atEOF ; i++) {
@@ -636,7 +635,7 @@ int vtape::bsr(int count)
    int orig_f = current_file;
    int orig_b = current_block;
 
-   Dmsg4(dbglevel, "bsr(%i) cur_blk=%i orig=%lli cur_FM=%lli\n", 
+   Dmsg4(dbglevel, "bsr(%i) cur_blk=%i orig=%lli cur_FM=%lli\n",
          count, current_block, orig, cur_FM);
 
    /* begin of tape, do nothing */
@@ -675,7 +674,7 @@ int vtape::bsr(int count)
          last = lseek(fd, 0, SEEK_CUR);
          last_f = current_file;
          last_b = current_block;
-         Dmsg6(dbglevel, "EOF=%i last2=%lli last=%lli < orig=%lli %i:%i\n", 
+         Dmsg6(dbglevel, "EOF=%i last2=%lli last=%lli < orig=%lli %i:%i\n",
                atEOF, last2, last, orig, current_file, current_block);
       }
       ret = fsr(1);
@@ -685,14 +684,14 @@ int vtape::bsr(int count)
       lseek(fd, last2, SEEK_SET);
       current_file = last_f;
       current_block = last_b - 1;
-      Dmsg3(dbglevel, "1 set offset2=%lli %i:%i\n", 
+      Dmsg3(dbglevel, "1 set offset2=%lli %i:%i\n",
             last, current_file, current_block);
 
    } else if (last > 0) {
       lseek(fd, last, SEEK_SET);
       current_file = last_f;
       current_block = last_b;
-      Dmsg3(dbglevel, "2 set offset=%lli %i:%i\n", 
+      Dmsg3(dbglevel, "2 set offset=%lli %i:%i\n",
             last, current_file, current_block);
    } else {
       lseek(fd, orig, SEEK_SET);
@@ -713,11 +712,6 @@ int vtape::bsr(int count)
    return 0;
 }
 
-boffset_t vtape::lseek(int fd, off_t offset, int whence)
-{
-   return ::lseek(fd, offset, whence);
-}
-
 /* BSF => just before last EOF
  * EOF + BSF => just before EOF
  * file 0 + BSF => BOT + errno
@@ -733,7 +727,7 @@ int vtape::bsf()
 
    atBOT = atEOF = atEOT = atEOD = false;
 
-   if (current_file == 0) {/* BOT + errno */      
+   if (current_file == 0) {/* BOT + errno */
       lseek(fd, 0, SEEK_SET);
       read_fm(VT_READ_EOF);
       current_file = 0;
@@ -750,13 +744,15 @@ int vtape::bsf()
    return ret;
 }
 
-/* 
+/*
+ * DEVICE virtual that we redefine.
+ *
  * Put vtape in offline mode
  */
-int vtape::offline()
+bool vtape::offline()
 {
    close();
-   
+
    atEOF = false;               /* End of file */
    atEOT = false;               /* End of tape */
    atEOD = false;               /* End of data */
@@ -767,21 +763,41 @@ int vtape::offline()
    current_file = -1;
    current_block = -1;
    last_file = -1;
-   return 0;
+   return true;
 }
 
-/* A filemark is automatically written to tape if the last tape operation
+/*
+ * DEVICE virtual that we redefine.
+ *
+ * A filemark is automatically written to tape if the last tape operation
  * before close was a write.
  */
 int vtape::d_close(int)
 {
+   struct flock lock;
+
    check_eof();
+
+   if (lockfd >= 0) {
+      lock.l_type   = F_UNLCK;
+      lock.l_start = 0;
+      lock.l_whence = SEEK_SET;
+      lock.l_len = 0;
+      lock.l_pid = getpid();
+
+      ASSERT(fcntl(fd, F_SETLK, &lock) != -1);
+      ::close(lockfd);
+      free(lockfile);
+   }
+
    ::close(fd);
-   fd = -1;
+   lockfd = fd = -1;
    return 0;
 }
 
 /*
+ * DEVICE virtual that we redefine.
+ *
  * When a filemark is encountered while reading, the following happens.  If
  * there are data remaining in the buffer when the filemark is found, the
  * buffered data is returned.  The next read returns zero bytes.  The following
@@ -795,7 +811,7 @@ ssize_t vtape::d_read(int, void *buffer, size_t count)
    ASSERT(current_file >= 0);
    ssize_t nb;
    uint32_t s;
-   
+
    Dmsg2(dbglevel*2, "read %i:%i\n", current_file, current_block);
 
    if (atEOT || atEOD) {
@@ -857,29 +873,54 @@ ssize_t vtape::d_read(int, void *buffer, size_t count)
    return nb;
 }
 
+/* Redefine DEVICE virtual function */
 int vtape::d_open(const char *pathname, int uflags)
 {
    Dmsg2(dbglevel, "vtape::d_open(%s, %i)\n", pathname, uflags);
 
    online = true;               /* assume that drive contains a tape */
+   struct flock lock;
+   struct stat statp;
+
+   ASSERT(!m_shstore || (m_shstore_lock && m_shstore_register));
 
-   struct stat statp;   
    if (stat(pathname, &statp) != 0) {
       fd = -1;
       Dmsg1(dbglevel, "Can't stat on %s\n", pathname);
       if (uflags & O_NONBLOCK) {
          online = false;
-         fd = ::open("/dev/null", O_CREAT | O_RDWR | O_LARGEFILE, 0600);
+         fd = ::open("/dev/null", O_RDWR | O_LARGEFILE, 0600);
       }
    } else {
-      fd = ::open(pathname, O_CREAT | O_RDWR | O_LARGEFILE, 0600);
+      fd = ::open(pathname, O_RDWR | O_LARGEFILE, 0600);
    }
 
    if (fd < 0) {
+      berrno be;
+      Dmsg2(0, "Unable to open vtape device %s ERR=%s\n", pathname, be.bstrerror());
       errno = ENOMEDIUM;
       return -1;
    }
 
+   lockfile = (char *)malloc(strlen(pathname) + 3);
+   strcpy(lockfile, pathname);
+   strcat(lockfile, ".l");
+
+   lockfd = ::open(lockfile, O_CREAT | O_RDWR | O_LARGEFILE, 0600);
+   if (lockfd < 0) {
+      berrno be;
+      Dmsg2(0, "Unable to open vtape device lock %s ERR=%s\n", lockfile, be.bstrerror());
+
+   } else {
+      lock.l_type = F_WRLCK;
+      lock.l_start = 0;
+      lock.l_whence = SEEK_SET;
+      lock.l_len = 0;
+      lock.l_pid = getpid();
+
+      ASSERT(fcntl(lockfd, F_SETLK, &lock) != -1);
+   }
+
    file_block = 0;
    current_block = 0;
    current_file = 0;
@@ -906,7 +947,7 @@ void vtape::update_pos()
    struct stat statp;
    if (fstat(fd, &statp) == 0) {
       file_block = statp.st_blocks;
-   } 
+   }
 
    Dmsg1(dbglevel*2, "update_pos=%i\n", file_block);
 
@@ -922,9 +963,9 @@ void vtape::dump()
    Dmsg0(dbglevel+1, "===================\n");
    Dmsg2(dbglevel, "file:block = %i:%i\n", current_file, current_block);
    Dmsg1(dbglevel+1, "last_file=%i\n", last_file);
-   Dmsg1(dbglevel+1, "file_block=%i\n", file_block);  
-   Dmsg4(dbglevel+1, "EOF=%i EOT=%i EOD=%i BOT=%i\n", 
-         atEOF, atEOT, atEOD, atBOT);  
+   Dmsg1(dbglevel+1, "file_block=%i\n", file_block);
+   Dmsg4(dbglevel+1, "EOF=%i EOT=%i EOD=%i BOT=%i\n",
+         atEOF, atEOT, atEOD, atBOT);
 }
 
 #endif  /* ! USE_VTAPE */
diff --git a/src/stored/vtape.h b/src/stored/vtape_dev.h
similarity index 68%
rename from src/stored/vtape.h
rename to src/stored/vtape_dev.h
index 057ecda..98c0940 100644
--- a/src/stored/vtape.h
+++ b/src/stored/vtape_dev.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2008-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2008-2014 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, which is
-   listed in the file LICENSE.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * vtape.h - Emulate the Linux st (scsi tape) driver on file.
@@ -37,6 +25,7 @@
 #include <stdarg.h>
 #include <stddef.h>
 #include "bacula.h"
+#include "tape_dev.h"
 
 void vtape_debug(int level);
 
@@ -51,9 +40,10 @@ typedef enum {
    VT_SKIP_EOF                  /* Have already read the EOF byte */
 } VT_READ_FM_MODE;
 
-class vtape: public DEVICE {
+class vtape: public tape_dev {
 private:
    int         fd;              /* Our file descriptor */
+   int         lockfd;          /* File descriptor for the lock file */
 
    boffset_t   file_block;      /* size */
    boffset_t   max_block;
@@ -72,9 +62,9 @@ private:
    int32_t     last_file;       /* last file of the volume */
    int32_t     current_file;    /* current position */
    int32_t     current_block;   /* current position */
+   char *      lockfile;        /* Name of the lock file */
 
    void destroy();
-   int offline();
    int truncate_file();
    void check_eof() { if(needEOF) weof();};
    void update_pos();
@@ -92,19 +82,21 @@ public:
    int get_fd();
    void dump();
 
-   /* interface from DEVICE */
+   int tape_op(struct mtop *mt_com);
+   int tape_get(struct mtget *mt_com);
+   int tape_pos(struct mtpos *mt_com);
+
+   /* DEVICE virtual interfaces that we redefine */
    int d_close(int);
    int d_open(const char *pathname, int flags);
-   int d_ioctl(int fd, ioctl_req_t request, char *mt=NULL);
+   int d_ioctl(int fd, ioctl_req_t request, char *op=NULL);
    ssize_t d_read(int, void *buffer, size_t count);
    ssize_t d_write(int, const void *buffer, size_t count);
+   bool offline();
 
    boffset_t lseek(DCR *dcr, off_t offset, int whence) { return -1; }
-   boffset_t lseek(int fd, off_t offset, int whence);
-
-   int tape_op(struct mtop *mt_com);
-   int tape_get(struct mtget *mt_com);
-   int tape_pos(struct mtpos *mt_com);
+   boffset_t lseek(int fd, off_t offset, int whence)
+      { return ::lseek(fd, offset, whence); }
 };
 
 
diff --git a/src/stored/wait.c b/src/stored/wait.c
index 87f809f..e74c7bc 100644
--- a/src/stored/wait.c
+++ b/src/stored/wait.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Subroutines to handle waiting for operator intervention
@@ -44,7 +32,7 @@ const int dbglvl = 400;
 /*
  * Wait for SysOp to mount a tape on a specific device
  *
- *   Returns: W_ERROR, W_TIMEOUT, W_POLL, W_MOUNT, or W_WAKE 
+ *   Returns: W_ERROR, W_TIMEOUT, W_POLL, W_MOUNT, or W_WAKE
  */
 int wait_for_sysop(DCR *dcr)
 {
@@ -59,7 +47,7 @@ int wait_for_sysop(DCR *dcr)
    DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
 
-   dev->Lock();  
+   dev->Lock();
    Dmsg1(dbglvl, "Enter blocked=%s\n", dev->print_blocked());
 
    /*
@@ -100,12 +88,12 @@ int wait_for_sysop(DCR *dcr)
       timeout.tv_nsec = tv.tv_usec * 1000;
       timeout.tv_sec = tv.tv_sec + add_wait;
 
-      Dmsg4(dbglvl, "I'm going to sleep on device %s. HB=%d rem_wait=%d add_wait=%d\n", 
+      Dmsg4(dbglvl, "I'm going to sleep on device %s. HB=%d rem_wait=%d add_wait=%d\n",
          dev->print_name(), (int)me->heartbeat_interval, dev->rem_wait_sec, add_wait);
       start = time(NULL);
 
       /* Wait required time */
-      stat = pthread_cond_timedwait(&dev->wait_next_vol, &dev->m_mutex, &timeout);
+      stat = dev->next_vol_timedwait(&timeout);
 
       Dmsg2(dbglvl, "Wokeup from sleep on device stat=%d blocked=%s\n", stat,
          dev->print_blocked());
@@ -136,7 +124,7 @@ int wait_for_sysop(DCR *dcr)
       }
 
       /*
-       * Continue waiting if operator is labeling volumes 
+       * Continue waiting if operator is labeling volumes
        */
       if (dev->blocked() == BST_WRITING_LABEL) {
          continue;
@@ -171,7 +159,7 @@ int wait_for_sysop(DCR *dcr)
 
       /*
        * If we did not timeout, then some event happened, so
-       *   return to check if state changed.   
+       *   return to check if state changed.
        */
       if (stat != ETIMEDOUT) {
          berrno be;
@@ -180,7 +168,7 @@ int wait_for_sysop(DCR *dcr)
          break;
       }
 
-      /* 
+      /*
        * At this point, we know we woke up because of a timeout,
        *   that was due to a heartbeat, because any other reason would
        *   have caused us to return, so update the wait counters and continue.
@@ -192,7 +180,7 @@ int wait_for_sysop(DCR *dcr)
       /* If the user did not unmount the tape and we are polling, ensure
        *  that we poll at the correct interval.
        */
-      if (!unmounted && dev->vol_poll_interval && 
+      if (!unmounted && dev->vol_poll_interval &&
            add_wait > dev->vol_poll_interval - total_waited) {
          add_wait = dev->vol_poll_interval - total_waited;
       }
@@ -212,16 +200,16 @@ int wait_for_sysop(DCR *dcr)
 
 
 /*
- * Wait for any device to be released, then we return, so 
+ * Wait for any device to be released, then we return, so
  *  higher level code can rescan possible devices.  Since there
  *  could be a job waiting for a drive to free up, we wait a maximum
- *  of 1 minute then retry just in case a broadcast was lost, and 
+ *  of 1 minute then retry just in case a broadcast was lost, and
  *  we return to rescan the devices.
- * 
+ *
  * Returns: true  if a device has changed state
  *          false if the total wait time has expired.
  */
-bool wait_for_device(JCR *jcr, int &retries)
+bool wait_for_any_device(JCR *jcr, int &retries)
 {
    struct timeval tv;
    struct timezone tz;
@@ -231,12 +219,12 @@ bool wait_for_device(JCR *jcr, int &retries)
    const int max_wait_time = 1 * 60;       /* wait 1 minute */
    char ed1[50];
 
-   Dmsg0(dbglvl, "Enter wait_for_device\n");
+   Dmsg0(dbglvl, "Enter wait_for_any_device\n");
    P(device_release_mutex);
 
    if (++retries % 5 == 0) {
       /* Print message every 5 minutes */
-      Jmsg(jcr, M_MOUNT, 0, _("JobId=%s, Job %s waiting to reserve a device.\n"), 
+      Jmsg(jcr, M_MOUNT, 0, _("JobId=%s, Job %s waiting to reserve a device.\n"),
          edit_uint64(jcr->JobId, ed1), jcr->Job);
    }
 
@@ -255,6 +243,53 @@ bool wait_for_device(JCR *jcr, int &retries)
    return ok;
 }
 
+/*
+ * Wait for a specific device to be released
+ *  We wait a maximum of 1 minute then
+ *  retry just in case a broadcast was lost.
+ *
+ * Returns: true  if the device has changed state
+ *          false if the total wait time has expired.
+ */
+bool wait_for_device(DCR *dcr, int &retries)
+{
+   struct timeval tv;
+   struct timezone tz;
+   struct timespec timeout;
+   JCR *jcr = dcr->jcr;
+   DEVICE *dev = dcr->dev;
+   int stat = 0;
+   bool ok = true;
+   const int max_wait_time = 1 * 60;       /* wait 1 minute */
+   char ed1[50];
+
+   Dmsg3(40, "Enter wait_for_device. busy=%d dcrvol=%s devvol=%s\n",
+      dev->is_busy(), dcr->VolumeName, dev->getVolCatName());
+
+   P(device_release_mutex);
+
+   if (++retries % 5 == 0) {
+      /* Print message every 5 minutes */
+      Jmsg(jcr, M_MOUNT, 0, _("JobId=%s, Job %s waiting device %s.\n"),
+         edit_uint64(jcr->JobId, ed1), jcr->Job, dcr->dev->print_name());
+   }
+
+   gettimeofday(&tv, &tz);
+   timeout.tv_nsec = tv.tv_usec * 1000;
+   timeout.tv_sec = tv.tv_sec + max_wait_time;
+
+   Dmsg0(dbglvl, "Going to wait for a device.\n");
+
+   /* Wait required time */
+   stat = pthread_cond_timedwait(&wait_device_release, &device_release_mutex, &timeout);
+   Dmsg1(dbglvl, "Wokeup from sleep on device stat=%d\n", stat);
+
+   V(device_release_mutex);
+   Dmsg1(dbglvl, "Return from wait_device ok=%d\n", ok);
+   return ok;
+}
+
+
 #ifdef xxx
 /*
  * The jcr timers are used for waiting on any device *
diff --git a/src/streams.h b/src/streams.h
index 78b1e68..d85adf7 100644
--- a/src/streams.h
+++ b/src/streams.h
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /**
  * Stream definitions.  Split from baconfig.h Nov 2010
@@ -48,7 +36,7 @@
 #define STREAMBITS_TYPE               11         /* type bit size */
 #define STREAMMASK_TYPE               (~((~0)<< STREAMBITS_TYPE) << STREAMBASE_TYPE)
 /*
- * Note additional base, bits, and masks can be defined for new     
+ * Note additional base, bits, and masks can be defined for new
  *  ranges or subranges of stream attributes.
  */
 
diff --git a/src/tabs b/src/tabs
deleted file mode 100644
index 485ab85..0000000
--- a/src/tabs
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Configure vim and python to use the correct whitespace
- *   These *should* be the right settings for Bacula development
- * vim: set tabstop=8 shiftwidth=3:
- * -*- mode: c; tab-width: 3 -*-
- */
diff --git a/src/tools/Makefile.in b/src/tools/Makefile.in
index 3bdacc8..47a5128 100644
--- a/src/tools/Makefile.in
+++ b/src/tools/Makefile.in
@@ -3,8 +3,6 @@
 #
 @MCOMMON@
 
-PYTHON_INC = @PYTHON_INCDIR@
-
 srcdir =	.
 VPATH = 	.
 .PATH:		.
@@ -39,7 +37,7 @@ DIRTOOLS = bsmtp dbcheck drivetype fstype testfind testls bregex bwild bbatch br
 TOOLS = $(@DIR_TOOLS@)
 
 INSNODIRTOOLS = bsmtp
-INSDIRTOOLS = bsmtp dbcheck bwild bregex
+INSDIRTOOLS = bsmtp dbcheck bwild bregex bpluginfo
 INSTOOLS = $(INS at DIR_TOOLS@)
 
 .SUFFIXES:	.c .o
@@ -49,7 +47,7 @@ INSTOOLS = $(INS at DIR_TOOLS@)
 # inference rules
 .c.o:
 	@echo "Compiling $<"
-	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 #-------------------------------------------------------------------------
 all: Makefile $(TOOLS) gigaslam grow
 	@echo "==== Make of tools is good ===="
@@ -75,19 +73,19 @@ drivetype: Makefile drivetype.o ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) ../findlib/
 	  $(DLIB) $(LIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
 
 dird_conf.o: ../dird/dird_conf.c
-	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -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) $<
+	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -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) $<
+	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -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) $<
+	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
 timelimit: timelimit.o
-	${CC} ${DEFS} ${DEBUG} -pipe -DHAVE_ERRNO_H -DHAVE_SETITIMER -DHAVE_SIGACTION -c timelimit.c 
+	${CC} ${DEFS} ${DEBUG} -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) \
@@ -124,7 +122,7 @@ ing_test: Makefile ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(D
 
 cats_test.o: cats_test.c
 	echo "Compiling $<"
-	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
 cats_test: Makefile ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) ../cats/libbacsql$(DEFAULT_ARCHIVE_TYPE) cats_test.o
 	$(LIBTOOL_LINK) $(CXX) -g $(LDFLAGS) -L../cats -L. -L../lib -L../findlib -o $@ cats_test.o  \
@@ -143,7 +141,7 @@ 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)
+	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L../lib -o $@ bpluginfo.o -lbac $(DLIB) $(LIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
 
 Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
 	cd $(topdir) \
@@ -196,7 +194,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) $(PYTHON_INC) -I$(srcdir) -I$(basedir) *.c >> Makefile
+	@$(CXX) -S -M $(CPPFLAGS) -I$(srcdir) -I$(basedir) *.c >> Makefile
 	@if test -f Makefile ; then \
 	    $(RMF) Makefile.bak; \
 	else \
diff --git a/src/tools/assert_macro.h b/src/tools/assert_macro.h
index 477b912..2b4f302 100644
--- a/src/tools/assert_macro.h
+++ b/src/tools/assert_macro.h
@@ -1,33 +1,21 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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
- * 
+ *
  */
 
 
diff --git a/src/tools/bbatch.c b/src/tools/bbatch.c
index 00244f0..462547a 100644
--- a/src/tools/bbatch.c
+++ b/src/tools/bbatch.c
@@ -10,39 +10,27 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 
 /*
   to create datafile
- 
+
   for i in $(seq 10000 99999) ; do
      j=$((($i % 1000) + 555))
      echo "$i;/tmp/totabofds$j/fiddddle${j}$i;xxxLSTATxxxx;xxxxxxxMD5xxxxxx"
   done  > dat1
- 
+
   or
 
   j=0
@@ -57,7 +45,7 @@
 #include "findlib/find.h"
 #include "cats/cats.h"
 #include "cats/sql_glue.h"
- 
+
 /* Forward referenced functions */
 static void *do_batch(void *);
 
@@ -117,7 +105,7 @@ int main (int argc, char *argv[])
    textdomain("bacula");
    init_stack_dump();
    lmgr_init_thread();
-   
+
    char **files = (char **) malloc (10 * sizeof(char *));
    int i;
    my_name_is(argc, argv, "bbatch");
@@ -195,7 +183,7 @@ int main (int argc, char *argv[])
       uint64_t nb_file=0;
       btime_t start, end;
       /* To use the -r option, the catalog should already contains records */
-      
+
       if ((db = db_init_database(NULL, NULL, db_name, db_user, db_password,
                                  db_host, 0, NULL, false, disable_batch)) == NULL) {
          Emsg0(M_ERROR_TERM, 0, _("Could not init Bacula database\n"));
@@ -208,9 +196,9 @@ int main (int argc, char *argv[])
       db_get_file_list(NULL, db, restore_list, false, false, list_handler, &nb_file);
       end = get_current_btime();
 
-      Pmsg3(0, _("Computing file list for jobid=%s files=%lld secs=%d\n"), 
+      Pmsg3(0, _("Computing file list for jobid=%s files=%lld secs=%d\n"),
             restore_list, nb_file, (uint32_t)btime_to_unix(end-start));
-      
+
       free(restore_list);
       return 0;
    }
@@ -244,7 +232,7 @@ int main (int argc, char *argv[])
       pm_strcpy(bjcr->fileset_name, "Dummy.fileset.name");
       bjcr->fileset_md5 = get_pool_memory(PM_FNAME);
       pm_strcpy(bjcr->fileset_md5, "Dummy.fileset.md5");
-      
+
       if ((db = db_init_database(NULL, NULL, db_name, db_user, db_password,
                                  db_host, 0, NULL, false, false)) == NULL) {
          Emsg0(M_ERROR_TERM, 0, _("Could not init Bacula database\n"));
@@ -256,7 +244,7 @@ int main (int argc, char *argv[])
       if (verbose) {
          Pmsg2(000, _("Using Database: %s, User: %s\n"), db_name, db_user);
       }
-      
+
       bjcr->db = db;
 
       pthread_create(&thid, NULL, do_batch, bjcr);
@@ -328,12 +316,12 @@ static void *do_batch(void *jcr)
    fclose(fd);
    db_write_batch_file_records(bjcr);
    btime_t end = get_current_btime();
-   
+
    P(mutex);
    char ed1[200], ed2[200];
    printf("\rbegin = %s, end = %s\n", edit_int64(begin, ed1),edit_int64(end, ed2));
    printf("Insert time = %sms\n", edit_int64((end - begin) / 10000, ed1));
-   printf("Create %u files at %.2f/s\n", lineno, 
+   printf("Create %u files at %.2f/s\n", lineno,
           (lineno / ((float)((end - begin) / 1000000))));
    nb--;
    V(mutex);
diff --git a/src/tools/bpluginfo.c b/src/tools/bpluginfo.c
index faa2754..1655bd5 100644
--- a/src/tools/bpluginfo.c
+++ b/src/tools/bpluginfo.c
@@ -1,6 +1,6 @@
 /*
  * 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
@@ -12,29 +12,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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>
@@ -97,7 +85,7 @@ union _plugfuncs {
  */
 /*
  * TODO: change to union
- * 
+ *
 typedef union _baculafuncs baculafuncs;
 union _baculafuncs {
    bDirFuncs bdirfuncs;
@@ -120,7 +108,7 @@ struct _baculafuncs {
    void (*baculaFree) (void *ctx, const char *file, int line, void *mem);
 };
 
-/* 
+/*
  * bDirInfo
  * bInfo
  * bsdInfo
@@ -251,13 +239,13 @@ void freepdata(progdata * 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)
@@ -330,10 +318,10 @@ void parse_args(progdata * pdata, int argc, char *argv[])
              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);
@@ -352,7 +340,7 @@ void parse_args(progdata * pdata, int argc, char *argv[])
 
 /*
  * checks a plugin type based on a plugin magic string
- * 
+ *
  * input:
  *    pdata - program data with plugin info structure
  * output:
@@ -385,7 +373,7 @@ int getplugintype(progdata * pdata)
 
 /*
  * prints any available information about a plugin
- * 
+ *
  * input:
  *    pdata - program data with plugin info structure
  * output:
@@ -448,7 +436,7 @@ void dump_pluginfo(progdata * pdata)
 
 /*
  * prints any available information about plugin' functions
- * 
+ *
  * input:
  *    pdata - program data with plugin info structure
  * output:
@@ -555,7 +543,7 @@ void dump_plugfuncs(progdata * pdata)
 /*
  * input parameters:
  *    argv[0] [options] <plugin_filename.so>
- * 
+ *
  * exit codes:
  *    0 - success
  *    1 - cannot load a plugin
diff --git a/src/tools/bregex.c b/src/tools/bregex.c
index ac382a8..ceefa91 100644
--- a/src/tools/bregex.c
+++ b/src/tools/bregex.c
@@ -7,29 +7,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bacula.h"
@@ -86,7 +74,7 @@ int main(int argc, char *const *argv)
    bool match_only = true;
    int lineno;
    bool no_linenos = false;
-   
+
 
    setlocale(LC_ALL, "");
    bindtextdomain("bacula", LOCALEDIR);
diff --git a/src/tools/bregtest.c b/src/tools/bregtest.c
index f7dd9c6..4853d93 100644
--- a/src/tools/bregtest.c
+++ b/src/tools/bregtest.c
@@ -1,36 +1,24 @@
 /*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2006-2014 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.
+
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+*/
+/*
  * Test program for testing regular expressions.
  *
  *  Kern Sibbald, MMVI
  *
  */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2006-2008 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, which is 
-   listed 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 o fKern 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.
-*/
 
 /*
  *  If you define BACULA_REGEX, bregex will be built with the
@@ -124,7 +112,7 @@ int main(int argc, char *const *argv)
 
    alist *list;
    char *p;
-   
+
    list = get_bregexps(expr);
 
    if (!list) {
@@ -153,10 +141,10 @@ int main(int argc, char *const *argv)
    exit(0);
 }
 /*
-  TODO: 
+  TODO:
    - ajout /g
 
-   - tests 
+   - tests
    * test avec /i
    * test avec un sed et faire un diff
    * test avec une boucle pour voir les fuites
diff --git a/src/tools/bsmtp.c b/src/tools/bsmtp.c
index d502ead..8e6d4f5 100644
--- a/src/tools/bsmtp.c
+++ b/src/tools/bsmtp.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
    Derived from a SMTPclient:
 
-  ======== Original copyrights ==========  
+  ======== Original copyrights ==========
 
        SMTPclient -- simple SMTP client
 
@@ -72,13 +60,6 @@
 #include <lmcons.h>
 #endif
 
-/*
- * Dummy functions
- */
-int generate_daemon_event(JCR *jcr, const char *event) 
-{
-   return 1;
-}
 
 #ifndef MAXSTRING
 #define MAXSTRING 254
@@ -104,7 +85,7 @@ 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
  *  it down to the mail box address ... i.e. what is enclosed
  *  in < >.  Otherwise add < >.
@@ -126,7 +107,7 @@ static char *cleanup_addr(char *addr, char *buf, int buf_len)
       *q = 0;
   }
   Dmsg2(100, "cleanup in=%s out=%s\n", addr, buf);
-  return buf;    
+  return buf;
 }
 
 /*
@@ -293,7 +274,7 @@ int main (int argc, char *argv[])
 #else
    const char *options = "48ac:d:f:h:r:s:l:?";
 #endif
-    
+
    setlocale(LC_ALL, "en_US");
    bindtextdomain("bacula", LOCALEDIR);
    textdomain("bacula");
@@ -419,7 +400,7 @@ int main (int argc, char *argv[])
             my_hostname, gai_strerror(res));
       exit(1);
    }
-   strcpy(my_hostname, ai->ai_canonname);
+   bstrncpy(my_hostname, ai->ai_canonname, sizeof(my_hostname));
    freeaddrinfo(ai);
 #else
    if ((hp = gethostbyname(my_hostname)) == NULL) {
@@ -427,7 +408,7 @@ int main (int argc, char *argv[])
             my_hostname, strerror(errno));
       exit(1);
    }
-   strcpy(my_hostname, hp->h_name);
+   bstrncpy(my_hostname, hp->h_name, sizeof(my_hostname));
 #endif
    Dmsg1(20, "My hostname is: %s\n", my_hostname);
 
@@ -594,7 +575,7 @@ lookup_host:
    get_response(); /* banner */
    chat("HELO %s\r\n", my_hostname);
    chat("MAIL FROM:%s\r\n", cleanup_addr(from_addr, buf, sizeof(buf)));
-   
+
    for (i = 0; i < argc; i++) {
       Dmsg1(20, "rcpt to: %s\n", argv[i]);
       chat("RCPT TO:%s\r\n", cleanup_addr(argv[i], buf, sizeof(buf)));
diff --git a/src/tools/bvfs_test.c b/src/tools/bvfs_test.c
index 06ecbec..1f93e07 100644
--- a/src/tools/bvfs_test.c
+++ b/src/tools/bvfs_test.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -39,7 +27,7 @@
 #include "cats/sql_glue.h"
 #include "cats/bvfs.h"
 #include "findlib/find.h"
- 
+
 /* Local variables */
 static B_DB *db;
 static const char *file = "COPYRIGHT";
@@ -85,13 +73,13 @@ static int result_handler(void *ctx, int fields, char **row)
       /* display clean stuffs */
 
       if (bvfs_is_dir(row)) {
-         pm_strcpy(attr->ofname, bvfs_basename_dir(row[BVFS_Name]));   
+         pm_strcpy(attr->ofname, bvfs_basename_dir(row[BVFS_Name]));
       } else {
          /* if we see the requested file, note his filenameid */
          if (bstrcmp(row[BVFS_Name], file)) {
             fnid = str_to_int64(row[BVFS_FilenameId]);
          }
-         pm_strcpy(attr->ofname, row[BVFS_Name]);   
+         pm_strcpy(attr->ofname, row[BVFS_Name]);
       }
       print_ls_output(vfs->get_jcr(), attr);
 
@@ -122,7 +110,7 @@ int main (int argc, char *argv[])
    init_stack_dump();
 
    Dmsg0(0, "Starting bvfs_test tool\n");
-   
+
    my_name_is(argc, argv, "bvfs_test");
    init_msg(NULL, NULL);
 
@@ -209,7 +197,7 @@ int main (int argc, char *argv[])
    bjcr->client_name = get_pool_memory(PM_FNAME);
    pm_strcpy(bjcr->client_name, "Dummy.Client.Name");
    bstrncpy(bjcr->Job, "bvfs_test", sizeof(bjcr->Job));
-   
+
    if ((db = db_init_database(NULL, NULL, db_name, db_user, db_password,
                               db_host, 0, NULL, false, false)) == NULL) {
       Emsg0(M_ERROR_TERM, 0, _("Could not init Bacula database\n"));
@@ -223,7 +211,7 @@ int main (int argc, char *argv[])
    if (verbose) {
       Pmsg2(000, _("Using Database: %s, User: %s\n"), db_name, db_user);
    }
-   
+
    bjcr->db = db;
 
    if (clean) {
@@ -259,7 +247,7 @@ int main (int argc, char *argv[])
       exit (0);
    }
 
-   
+
    Pmsg0(0, "list /\n");
    fs.ch_dir("/");
    fs.ls_special_dirs();
diff --git a/src/tools/bwild.c b/src/tools/bwild.c
index 775b8c0..ca5dd66 100644
--- a/src/tools/bwild.c
+++ b/src/tools/bwild.c
@@ -1,35 +1,23 @@
 /*
  * Test program for testing wild card expressions
- * 
+ *
  *  Kern Sibbald, MMVI
  *
  */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2006 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.
+   Copyright (C) 2006-2014 Free Software Foundation Europe e.V.
 
-   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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
-   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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bacula.h"
@@ -61,7 +49,7 @@ int main(int argc, char *const *argv)
    int lineno;
    bool no_linenos = false;
    int ic = 0;
-   
+
 
    setlocale(LC_ALL, "");
    bindtextdomain("bacula", LOCALEDIR);
diff --git a/src/tools/cats_test.c b/src/tools/cats_test.c
index 76a09e0..9e35076 100644
--- a/src/tools/cats_test.c
+++ b/src/tools/cats_test.c
@@ -1,34 +1,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2011-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2011-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *  Program to test CATS DB routines
  *
- *  
+ *
  */
 #define _BDB_PRIV_INTERFACE_
 
@@ -38,7 +26,7 @@
 #include "cats/sql_glue.h"
 #include "cats/bvfs.h"
 #include "findlib/find.h"
- 
+
 /* Local variables */
 static B_DB *db;
 static const char *file = "COPYRIGHT";
@@ -163,7 +151,7 @@ static void cmp_client(CLIENT_DBR &cr, CLIENT_DBR &cr2)
    ok(!strcmp(cr2.Name, cr.Name),           "  Check Client Name");
    ok(!strcmp(cr2.Uname, cr.Uname),         "  Check Client Uname");
    ok(cr.AutoPrune == cr2.AutoPrune,        "  Check Client Autoprune");
-   ok(cr.JobRetention == cr2.JobRetention,  "  Check Client JobRetention");   
+   ok(cr.JobRetention == cr2.JobRetention,  "  Check Client JobRetention");
    ok(cr.FileRetention == cr2.FileRetention,"  Check Client FileRetention");
 }
 
@@ -239,7 +227,7 @@ int main (int argc, char *argv[])
    pid = getpid();
 
    Pmsg0(0, "Starting cats_test tool" PLINE);
-   
+
    my_name_is(argc, argv, "");
    init_msg(NULL, NULL);
 
@@ -346,7 +334,7 @@ int main (int argc, char *argv[])
    Pmsg1(0, PLINE "Test DB connection \"%s\"" PLINE, db_name);
 
    if (full_test) {
-      db = db_init_database(jcr /* JCR */, 
+      db = db_init_database(jcr /* JCR */,
                    NULL /* dbi driver */,
                    db_name, db_user, db_password, db_address, db_port + 100,
                    NULL /* db_socket */,
@@ -360,7 +348,7 @@ int main (int argc, char *argv[])
       db_close_database(jcr, db);
    }
 
-   db = db_init_database(jcr /* JCR */, 
+   db = db_init_database(jcr /* JCR */,
                 NULL /* dbi driver */,
                 db_name, db_user, db_password, db_address, db_port,
                 NULL /* db_socket */,
@@ -386,7 +374,7 @@ int main (int argc, char *argv[])
    /* Check if the SQL library is thread-safe */
    //db_check_backend_thread_safe();
    ok(check_tables_version(jcr, db), "Check table version");
-   ok(db_sql_query(db, "SELECT VersionId FROM Version", 
+   ok(db_sql_query(db, "SELECT VersionId FROM Version",
                    db_int_handler, &j), "SELECT VersionId");
 
    ok(UPDATE_DB(jcr, db, (char*)"UPDATE Version SET VersionId = 1"),
@@ -399,15 +387,15 @@ int main (int argc, char *argv[])
       ok(db_check_max_connections(jcr, db, 1), "Test min Max Connexion");
       nok(db_check_max_connections(jcr, db, 10000), "Test max Max Connexion");
    }
-   
+
    ok(db_open_batch_connexion(jcr, db), "Opening batch connection");
    db_close_database(jcr, jcr->db_batch);
    jcr->db_batch = NULL;
 
    /* ---------------------------------------------------------------- */
-   
+
    uint32_t storageid=0;
-   ok(db_sql_query(db, "SELECT MIN(StorageId) FROM Storage", 
+   ok(db_sql_query(db, "SELECT MIN(StorageId) FROM Storage",
                    db_int_handler, &storageid), "Get StorageId");
    ok(storageid > 0, "Check StorageId");
    if (!storageid) {
@@ -419,7 +407,7 @@ int main (int argc, char *argv[])
    Pmsg0(0, PLINE "Doing Basic SQL tests" PLINE);
    ok(db_sql_query(db, "SELECT 1,2,3,4,5", count_col, &j), "Count 5 rows");
    ok(j == 5, "Check number of columns");
-   ok(db_sql_query(db, "SELECT 1,2,3,4,5,'a','b','c','d','e'", 
+   ok(db_sql_query(db, "SELECT 1,2,3,4,5,'a','b','c','d','e'",
                    count_col, &j), "Count 10 rows");
    ok(j == 10, "Check number of columns");
 
@@ -427,7 +415,7 @@ int main (int argc, char *argv[])
    ok(db_sql_query(db, "SELECT 2", db_int_handler, &j), "Good SELECT query");
    ok(db_sql_query(db, "SELECT 1 FROM Media WHERE VolumeName='missing'",
                    db_int_handler, &j), "Good empty SELECT query");
-   
+
    db_int64_ctx i64;
    i64.value = 0; i64.count = 0;
    ok(db_sql_query(db, "SELECT 1",db_int64_handler, &i64),"db_int64_handler");
@@ -466,10 +454,10 @@ int main (int argc, char *argv[])
    Mmsg(buf, "DELETE FROM %s", temp);
    ok(DELETE_DB(jcr, db, buf), "DELETE query");
    nok(DELETE_DB(jcr, db, buf), "Empty DELETE query"); /* TODO bug ? */
-      
+
    Mmsg(buf, "DELETE FROM aaa%s", temp);
    ok(DELETE_DB(jcr, db, buf), "Bad DELETE query"); /* TODO bug ? */
-   
+
    Mmsg(buf, "DROP TABLE %s", temp);
    ok(QUERY_DB(jcr, db, buf), "DROP query");
    nok(QUERY_DB(jcr, db, buf), "Empty DROP query");
@@ -483,7 +471,7 @@ int main (int argc, char *argv[])
    ok(db_sql_query(db, buf, NULL, NULL), "Inserting quoted string");
 
    /* ---------------------------------------------------------------- */
-   Pmsg0(0, PLINE "Doing Job tests" PLINE);   
+   Pmsg0(0, PLINE "Doing Job tests" PLINE);
 
    JOB_DBR jr, jr2;
    memset(&jr, 0, sizeof(jr));
@@ -491,7 +479,7 @@ int main (int argc, char *argv[])
    jr.JobId = 1;
    ok(db_get_job_record(jcr, db, &jr), "Get Job record for JobId=1");
    ok(jr.JobFiles > 10, "Check number of files");
-   
+
    jr.JobId = (JobId_t)pid;
    Mmsg(buf, "%s-%lld", jr.Job, pid);
    strcpy(jr.Job, buf);
@@ -566,7 +554,7 @@ int main (int argc, char *argv[])
 
    ok(db_get_client_record(jcr, db, &cr2), "Search client by ClientId");
    cmp_client(cr, cr2);
-   
+
    Pmsg0(0, "Search client by Name\n");
    memset(&cr2, 0, sizeof(cr2));
    strcpy(cr2.Name, cr.Name);
@@ -603,7 +591,7 @@ int main (int argc, char *argv[])
    POOL_DBR pr, pr2;
    memset(&pr, 0, sizeof(pr));
    memset(&pr2, 0, sizeof(pr2));
-   
+
    bsnprintf(pr.Name, sizeof(pr.Name), "pool-%lld", pid);
    pr.MaxVols = 10;
    pr.UseOnce = 0;
@@ -622,10 +610,10 @@ int main (int argc, char *argv[])
    pr.RecyclePoolId = 0;
    pr.ScratchPoolId = 0;
    pr.ActionOnPurge = 1;
-   
+
    ok(db_create_pool_record(jcr, db, &pr), "db_create_pool_record()");
    ok(pr.PoolId > 0, "Check PoolId");
-   
+
    pr2.PoolId = pr.PoolId;
    pr.PoolId = 0;
 
@@ -661,11 +649,11 @@ int main (int argc, char *argv[])
 
    /* ---------------------------------------------------------------- */
    Pmsg0(0, PLINE "Doing Media tests" PLINE);
-   
+
    MEDIA_DBR mr, mr2;
    memset(&mr, 0, sizeof(mr));
    memset(&mr2, 0, sizeof(mr2));
-   
+
    bsnprintf(mr.VolumeName, sizeof(mr.VolumeName), "media-%lld", pid);
    bsnprintf(mr.MediaType, sizeof(mr.MediaType), "type-%lld", pid);
 
@@ -700,7 +688,7 @@ int main (int argc, char *argv[])
 
    /* ---------------------------------------------------------------- */
    Pmsg0(0, PLINE "Doing ... tests" PLINE);
-   
+
    db_close_database(jcr, db);
    report();
    free_pool_memory(buf);
diff --git a/src/tools/dbcheck.c b/src/tools/dbcheck.c
index 5598666..60f3301 100644
--- a/src/tools/dbcheck.c
+++ b/src/tools/dbcheck.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -42,12 +30,6 @@
 
 extern bool parse_dir_config(CONFIG *config, const char *configfile, int exit_code);
 
-/*
- * Dummy functions
- */
-int generate_daemon_event(JCR *jcr, const char *event)
-   { return 1; }
-
 typedef struct s_id_ctx {
    int64_t *Id;                       /* ids to be modified */
    int num_ids;                       /* ids stored */
@@ -884,9 +866,9 @@ static void eliminate_orphaned_path_records()
 {
    db_int64_ctx lctx;
    lctx.count=0;
-   db_sql_query(db, "SELECT 1 FROM Job WHERE HasCache=1 LIMIT 1", 
+   db_sql_query(db, "SELECT 1 FROM Job WHERE HasCache=1 LIMIT 1",
                 db_int64_handler, &lctx);
-   
+
    if (lctx.count == 1) {
       printf(_("Pruning orphaned Path entries isn't possible when using BVFS.\n"));
       return;
diff --git a/src/tools/drivetype.c b/src/tools/drivetype.c
index 0a63038..3112e37 100644
--- a/src/tools/drivetype.c
+++ b/src/tools/drivetype.c
@@ -9,38 +9,22 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bacula.h"
 #include "findlib/find.h"
 
-/* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) 
-   { return 1; }
-
 static void usage()
 {
    fprintf(stderr, _(
@@ -117,7 +101,7 @@ main (int argc, char *const *argv)
    argv += optind;
 
    OSDependentInit();
- 
+
    if (argc < 1 && display_all) {
       /* Try all letters */
       for (drive = 'A'; drive <= 'Z'; drive++) {
diff --git a/src/tools/fstype.c b/src/tools/fstype.c
index 8a8c31a..3e2e315 100644
--- a/src/tools/fstype.c
+++ b/src/tools/fstype.c
@@ -9,39 +9,23 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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 "bacula.h"
 #include "findlib/find.h"
 #include "lib/mntent_cache.h"
 
-/* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) 
-   { return 1; }
-
 static void usage()
 {
    fprintf(stderr, _(
diff --git a/src/tools/ing_test.c b/src/tools/ing_test.c
index 90ab1e6..b66d532 100644
--- a/src/tools/ing_test.c
+++ b/src/tools/ing_test.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2009-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2009-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  *
@@ -40,7 +28,7 @@
 #include "bacula.h"
 #include "cats/cats.h"
 #include "cats/sql_glue.h"
- 
+
 /* Local variables */
 static B_DB *db;
 static const char *file = "COPYRIGHT";
@@ -106,7 +94,7 @@ int main (int argc, char *argv[])
    init_stack_dump();
 
    Dmsg0(0, "Starting ing_test tool\n");
-   
+
    my_name_is(argc, argv, "ing_test");
    init_msg(NULL, NULL);
 
@@ -185,7 +173,7 @@ int main (int argc, char *argv[])
       Pmsg0(0, _("Wrong number of arguments: \n"));
       usage();
    }
-   
+
    if ((db = db_init_database(NULL, NULL, db_name, db_user, db_password,
                               db_host, 0, NULL, false, false)) == NULL) {
       Emsg0(M_ERROR_TERM, 0, _("Could not init Bacula database\n"));
@@ -304,7 +292,7 @@ int main (int argc, char *argv[])
    }
 
 
-   /* 
+   /*
     * datatypes test
     */
    Pmsg0(0, "\ndatatypes test... (TODO)\n\n");
diff --git a/src/tools/testfind.c b/src/tools/testfind.c
index 613a418..d19a82a 100644
--- a/src/tools/testfind.c
+++ b/src/tools/testfind.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Test program for find files
@@ -43,7 +31,6 @@
 #endif
 
 /* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) { return 1; }
 int generate_job_event(JCR *jcr, const char *event) { return 1; }
 void generate_plugin_event(JCR *jcr, bEventType eventType, void *value) { }
 extern bool parse_dir_config(CONFIG *config, const char *configfile, int exit_code);
@@ -157,7 +144,7 @@ main (int argc, char *const *argv)
       FILESET *var;
 
       fprintf(stderr, "Valid FileSets:\n");
-      
+
       foreach_res(var, R_FILESET) {
          fprintf(stderr, "    %s\n", var->hdr.name);
       }
@@ -166,7 +153,7 @@ main (int argc, char *const *argv)
    }
 
    ff = init_find_files();
-   
+
    copy_fileset(ff, jcr);
 
    find_files(jcr, ff, print_file, NULL);
@@ -177,7 +164,7 @@ main (int argc, char *const *argv)
       free(config);
       config = NULL;
    }
-   
+
    term_last_jobs_list();
 
    /* Clean up fileset */
@@ -252,7 +239,7 @@ main (int argc, char *const *argv)
    exit(0);
 }
 
-static int print_file(JCR *jcr, FF_PKT *ff, bool top_level) 
+static int print_file(JCR *jcr, FF_PKT *ff, bool top_level)
 {
 
    switch (ff->type) {
diff --git a/src/tools/testls.c b/src/tools/testls.c
index 0e5481a..ebf1bb3 100644
--- a/src/tools/testls.c
+++ b/src/tools/testls.c
@@ -1,29 +1,17 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2014 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.
+   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 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.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
    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.
 */
 /*
  * Test program for listing files during regression testing
@@ -38,7 +26,6 @@
 #include "findlib/find.h"
 
 /* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) { return 1; }
 int generate_job_event(JCR *jcr, const char *event) { return 1; }
 void generate_plugin_event(JCR *jcr, bEventType eventType, void *value) { }
 
@@ -197,7 +184,7 @@ static int count_files(JCR *jcr, FF_PKT *ff, bool top_level)
    return 1;
 }
 
-static int print_file(JCR *jcr, FF_PKT *ff, bool top_level) 
+static int print_file(JCR *jcr, FF_PKT *ff, bool top_level)
 {
 
    switch (ff->type) {
diff --git a/src/tray-monitor/Makefile.in b/src/tray-monitor/Makefile.in
deleted file mode 100644
index dfa0b3e..0000000
--- a/src/tray-monitor/Makefile.in
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-#  Version $Id$
-#
- at MCOMMON@
-
-srcdir =	.
-VPATH = 	.
-.PATH:		.
-
-# one up
-basedir = ..
-# top dir
-topdir = ../..
-# this dir relative to top dir
-thisdir = src/tray-monitor
-
-DEBUG=@DEBUG@
-
-first_rule: all
-dummy:
-
-#
-MONITORSRCS = tray-monitor.c tray_conf.c authenticate.c
-MONITOROBJS = tray-monitor.o tray_conf.o authenticate.o
-
-# these are the objects that are changed by the .configure process
-EXTRAOBJS = @OBJLIST@
-
-MONITOR_CPPFLAGS=@TRAY_MONITOR_CPPFLAGS@
-MONITOR_LDFLAGS=@TRAY_MONITOR_LDFLAGS@ @X_LIBS@ -lX11
-
-.SUFFIXES:	.c .o
-.PHONY:
-.DONTCARE:
-
-# inference rules
-.c.o:
-	@echo "Compiling $<"
-	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(MONITOR_CPPFLAGS) \
- -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
-#-------------------------------------------------------------------------
-all: Makefile bacula-tray-monitor
-	@echo "==== Make of bacula-tray-monitor is good ===="
-	@echo " "
-
-bacula-tray-monitor: Makefile $(MONITOROBJS) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
-	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) $(MONITOR_LDFLAGS) -L../lib -o $@ \
-	  $(MONITOROBJS) $(DLIB) -lbaccfg -lbac -lm $(LIBS) $(OPENSSL_LIBS)
-
-Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
-	cd $(topdir) \
-	  && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-libtool-clean:
-	$(RMF) -r .libs _libs
-
-clean: @LIBTOOL_CLEAN_TARGET@
-	@$(RMF) bacula-tray-monitor core core.* a.out *.o *.bak *~ *.intpro *.extpro 1 2 3
-
-realclean: clean
-	@$(RMF) tags tray-monitor.conf
-
-distclean: realclean
-	if test $(srcdir) = .; then $(MAKE) realclean; fi
-	(cd $(srcdir); $(RMF) Makefile)
-
-devclean: realclean
-	if test $(srcdir) = .; then $(MAKE) realclean; fi
-	(cd $(srcdir); $(RMF) Makefile)
-
-install: all
-	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) bacula-tray-monitor $(DESTDIR)$(sbindir)/bacula-tray-monitor
-	@srcconf=tray-monitor.conf; \
-	if  test -f ${DESTDIR}${sysconfdir}/$$srcconf; then \
-	   destconf=$$srcconf.new; \
-	   echo "  ==> Found existing $$srcconf, installing new conf file as $$destconf"; \
-	else \
-	   destconf=$$srcconf; \
-	fi; \
-	echo "${INSTALL_CONFIG} $$srcconf ${DESTDIR}${sysconfdir}/$$destconf"; \
-	${INSTALL_CONFIG} $$srcconf ${DESTDIR}${sysconfdir}/$$destconf
-
-uninstall:
-	(cd $(DESTDIR)$(sbindir); $(RMF) bacula-tray-monitor)
-	(cd $(DESTDIR)$(sysconfdir); $(RMF) tray-monitor.conf)
-
-
-
-# Semi-automatic generation of dependencies:
-# Use gcc -MM because X11 `makedepend' doesn't work on all systems
-# and it also includes system headers.
-# `semi'-automatic since dependencies are generated at distribution time.
-
-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) $(MONITOR_CPPFLAGS) -I$(srcdir) -I$(basedir) *.c >> Makefile
-	@if test -f Makefile ; then \
-	    $(RMF) Makefile.bak; \
-	else \
-	   $(MV) Makefile.bak Makefile; \
-	   echo -e "Something went wrong\n\a"; \
-	fi
-
-# -----------------------------------------------------------------------
-# DO NOT DELETE: nice dependency list follows
diff --git a/src/tray-monitor/TODO b/src/tray-monitor/TODO
deleted file mode 100644
index fb1ead1..0000000
--- a/src/tray-monitor/TODO
+++ /dev/null
@@ -1,3 +0,0 @@
- - Check status of the FD/SD in a separate thread.
- - Add a checkbox at the right of the daemon to ignore its status for the general icon
- - Add tooltip to the system tray icon
\ No newline at end of file
diff --git a/src/tray-monitor/authenticate.c b/src/tray-monitor/authenticate.c
deleted file mode 100644
index 9a3acc5..0000000
--- a/src/tray-monitor/authenticate.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
- *
- *   Bacula authentication. Provides authentication with
- *     File and Storage daemons.
- *
- *     Nicolas Boichat, August MMIV
- *
- *    This routine runs as a thread and must be thread reentrant.
- *
- *  Basic tasks done here:
- *
- */
-
-#include "bacula.h"
-#include "tray-monitor.h"
-#include "jcr.h"
-
-void senditf(const char *fmt, ...);
-void sendit(const char *buf);
-
-/* Commands sent to Director */
-static char DIRhello[]    = "Hello %s calling\n";
-
-/* Response from Director */
-static char DIROKhello[]   = "1000 OK:";
-
-/* Commands sent to Storage daemon and File daemon and received
- *  from the User Agent */
-static char SDFDhello[]    = "Hello Director %s calling\n";
-
-/* Response from SD */
-static char SDOKhello[]   = "3000 OK Hello\n";
-/* Response from FD */
-static char FDOKhello[] = "2000 OK Hello";
-
-/* Forward referenced functions */
-
-/*
- * Authenticate Director
- */
-int authenticate_director(JCR *jcr, MONITOR *mon, DIRRES *director)
-{
-   BSOCK *dir = jcr->dir_bsock;
-   int tls_local_need = BNET_TLS_NONE;
-   int tls_remote_need = BNET_TLS_NONE;
-   int compatible = true;
-   char bashed_name[MAX_NAME_LENGTH];
-   char *password;
-
-   bstrncpy(bashed_name, mon->hdr.name, sizeof(bashed_name));
-   bash_spaces(bashed_name);
-   password = mon->password;
-
-   /* Timeout Hello after 5 mins */
-   btimer_t *tid = start_bsock_timer(dir, 60 * 5);
-   dir->fsend(DIRhello, bashed_name);
-
-   if (!cram_md5_respond(dir, password, &tls_remote_need, &compatible) ||
-       !cram_md5_challenge(dir, password, tls_local_need, compatible)) {
-      stop_bsock_timer(tid);
-      Jmsg0(jcr, M_FATAL, 0, _("Director authorization problem.\n"
-            "Most likely the passwords do not agree.\n"
-       "Please see " MANUAL_AUTH_URL " for help.\n"));
-      return 0;
-   }
-
-   Dmsg1(6, ">dird: %s", dir->msg);
-   if (dir->recv() <= 0) {
-      stop_bsock_timer(tid);
-      Jmsg1(jcr, M_FATAL, 0, _("Bad response to Hello command: ERR=%s\n"),
-         dir->bstrerror());
-      return 0;
-   }
-   Dmsg1(10, "<dird: %s", dir->msg);
-   stop_bsock_timer(tid);
-   if (strncmp(dir->msg, DIROKhello, sizeof(DIROKhello)-1) != 0) {
-      Jmsg0(jcr, M_FATAL, 0, _("Director rejected Hello command\n"));
-      return 0;
-   } else {
-      Jmsg0(jcr, M_INFO, 0, dir->msg);
-   }
-   return 1;
-}
-
-/*
- * Authenticate Storage daemon connection
- */
-int authenticate_storage_daemon(JCR *jcr, MONITOR *monitor, STORE* store)
-{
-   BSOCK *sd = jcr->store_bsock;
-   char dirname[MAX_NAME_LENGTH];
-   int tls_local_need = BNET_TLS_NONE;
-   int tls_remote_need = BNET_TLS_NONE;
-   int compatible = true;
-
-   /*
-    * Send my name to the Storage daemon then do authentication
-    */
-   bstrncpy(dirname, monitor->hdr.name, sizeof(dirname));
-   bash_spaces(dirname);
-   /* Timeout Hello after 5 mins */
-   btimer_t *tid = start_bsock_timer(sd, 60 * 5);
-   if (!sd->fsend(SDFDhello, dirname)) {
-      stop_bsock_timer(tid);
-      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to Storage daemon. ERR=%s\n"), sd->bstrerror());
-      return 0;
-   }
-   if (!cram_md5_respond(sd, store->password, &tls_remote_need, &compatible) ||
-       !cram_md5_challenge(sd, store->password, tls_local_need, compatible)) {
-      stop_bsock_timer(tid);
-      Jmsg0(jcr, M_FATAL, 0, _("Director and Storage daemon passwords or names not the same.\n"
-       "Please see " MANUAL_AUTH_URL " for help.\n"));
-      return 0;
-   }
-   Dmsg1(116, ">stored: %s", sd->msg);
-   if (sd->recv() <= 0) {
-      stop_bsock_timer(tid);
-      Jmsg1(jcr, M_FATAL, 0, _("bdird<stored: bad response to Hello command: ERR=%s\n"),
-         sd->bstrerror());
-      return 0;
-   }
-   Dmsg1(110, "<stored: %s", sd->msg);
-   stop_bsock_timer(tid);
-   if (strncmp(sd->msg, SDOKhello, sizeof(SDOKhello)) != 0) {
-      Jmsg0(jcr, M_FATAL, 0, _("Storage daemon rejected Hello command\n"));
-      return 0;
-   }
-   return 1;
-}
-
-/*
- * Authenticate File daemon connection
- */
-int authenticate_file_daemon(JCR *jcr, MONITOR *monitor, CLIENT* client)
-{
-   BSOCK *fd = jcr->file_bsock;
-   char dirname[MAX_NAME_LENGTH];
-   int tls_local_need = BNET_TLS_NONE;
-   int tls_remote_need = BNET_TLS_NONE;
-   int compatible = true;
-
-   /*
-    * Send my name to the File daemon then do authentication
-    */
-   bstrncpy(dirname, monitor->hdr.name, sizeof(dirname));
-   bash_spaces(dirname);
-   /* Timeout Hello after 5 mins */
-   btimer_t *tid = start_bsock_timer(fd, 60 * 5);
-   if (!fd->fsend(SDFDhello, dirname)) {
-      stop_bsock_timer(tid);
-      Jmsg(jcr, M_FATAL, 0, _("Error sending Hello to File daemon. ERR=%s\n"), fd->bstrerror());
-      return 0;
-   }
-   if (!cram_md5_respond(fd, client->password, &tls_remote_need, &compatible) ||
-       !cram_md5_challenge(fd, client->password, tls_local_need, compatible)) {
-      stop_bsock_timer(tid);
-      Jmsg(jcr, M_FATAL, 0, _("Director and File daemon passwords or names not the same.\n"
-       "Please see " MANUAL_AUTH_URL " for help.\n"));
-      return 0;
-   }
-   Dmsg1(116, ">filed: %s", fd->msg);
-   if (fd->recv() <= 0) {
-      stop_bsock_timer(tid);
-      Jmsg(jcr, M_FATAL, 0, _("Bad response from File daemon to Hello command: ERR=%s\n"),
-         fd->bstrerror());
-      return 0;
-   }
-   Dmsg1(110, "<stored: %s", fd->msg);
-   stop_bsock_timer(tid);
-   if (strncmp(fd->msg, FDOKhello, sizeof(FDOKhello)-1) != 0) {
-      Jmsg(jcr, M_FATAL, 0, _("File daemon rejected Hello command\n"));
-      return 0;
-   }
-   return 1;
-}
diff --git a/src/tray-monitor/generic.xpm b/src/tray-monitor/generic.xpm
deleted file mode 100644
index 76e588d..0000000
--- a/src/tray-monitor/generic.xpm
+++ /dev/null
@@ -1,45 +0,0 @@
-/* XPM */
-static const int xpm_generic_first_color = 6;
-static const int xpm_generic_second_color = 7;
-static const int xpm_generic_column = 5;
-static const char* xpm_generic[]={
-"32 32 7 1",
-". c None",
-"# c #000000",
-"a c #c0c0c0",
-"b c #808080",
-"c c #808000",
-"d c #0000ff",
-"e c #0000ff",
-"................................",
-"................................",
-"................................",
-"................................",
-"................................",
-"................................",
-"................................",
-"....#########################...",
-"...#aaaaaaaaaaaaaaaaaaaaaaaa##..",
-"..#aaaaaaaaaaaaaaaaaaaaaaaaaa##.",
-"..##aaaaaaaaaaaaaaaaaaaaaaaaa##.",
-"..###########################b##",
-"..##........................bb##",
-"..##........................bb##",
-"..##..aaaaaaaaaaaaaaaaaaaaaabb##",
-"..##..aaabbbbbaaaaabbbbbaaaabb##",
-"..##..aac.....baaac.....baaabb##",
-"..##..ac..ddd..bac..eee..baabb##",
-"..##..ac.ddddd.bac.eeeee.baabb##",
-"..##..ac.ddddd.bac.eeeee.baabb##",
-"..##..ac.ddddd.bac.eeeee.baabb##",
-"..##..ac..ddd..bac..eee..baabb##",
-"..##..aac.....baaac.....baaabb##",
-"..##..aaacccccaaaaacccccaaaabb##",
-"..##..aaaaaaaaaaaaaaaaaaaaaabb##",
-"..##..aaaaaaaaaaaaaaaaaaaaaabb##",
-"..##bbbbbbbbbbbbbbbbbbbbbbbbbbb.",
-"....bbbbbbbbbbbbbbbbbbbbbbbbb#..",
-".....########################...",
-"......######################....",
-"................................",
-"................................"};
diff --git a/src/tray-monitor/tray-monitor.c b/src/tray-monitor/tray-monitor.c
deleted file mode 100644
index 131caac..0000000
--- a/src/tray-monitor/tray-monitor.c
+++ /dev/null
@@ -1,1187 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2009 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.
-*/
-/*
- *
- *   Bacula Gnome Tray Monitor
- *
- *     Nicolas Boichat, August MMIV
- *
- *     Version $Id$
- */
-
-
-#include "bacula.h"
-#include "tray-monitor.h"
-
-#include "generic.xpm"
-
-#define TRAY_DEBUG_MEMORY 0
-
-/* Imported functions */
-int authenticate_director(JCR *jcr, MONITOR *monitor, DIRRES *director);
-int authenticate_file_daemon(JCR *jcr, MONITOR *monitor, CLIENT* client);
-int authenticate_storage_daemon(JCR *jcr, MONITOR *monitor, STORE* store);
-extern bool parse_tmon_config(CONFIG *config, const char *configfile, int exit_code);
-
-/* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) { return 1; }
-
-/* Forward referenced functions */
-void writecmd(monitoritem* item, const char* command);
-int docmd(monitoritem* item, const char* command, GSList** list);
-void getstatus(monitoritem* item, int current, GString** str);
-
-/* Static variables */
-static char *configfile = NULL;
-static MONITOR *monitor;
-static JCR jcr;
-static int nitems = 0;
-static int fullitem = 0; //Item to be display in detailled status window
-static int lastupdated = -1; //Last item updated
-static monitoritem items[32];
-static CONFIG *config;
-
-/* Data received from DIR/FD/SD */
-static char OKqstatus[]   = "%c000 OK .status\n";
-static char DotStatusJob[] = "JobId=%d JobStatus=%c JobErrors=%d\n";
-
-/* UI variables and functions */
-
-extern "C" {
-static gboolean fd_read(gpointer data);
-static gboolean blink(gpointer data);
-}
-
-void trayMessage(const char *fmt,...);
-void updateStatusIcon(monitoritem* item);
-void changeStatusMessage(monitoritem* item, const char *fmt,...);
-static const char** generateXPM(stateenum newstate, stateenum oldstate);
-
-/* Callbacks */
-static void TrayIconActivate(GtkWidget *widget, gpointer data);
-static void TrayIconExit(unsigned int activateTime, unsigned int button);
-static void TrayIconPopupMenu(unsigned int button, unsigned int activateTime);
-static void MonitorAbout(GtkWidget *widget, gpointer data);
-static void MonitorRefresh(GtkWidget *widget, gpointer data);
-static void IntervalChanged(GtkWidget *widget, gpointer data);
-static void DaemonChanged(GtkWidget *widget, monitoritem* data);
-static gboolean delete_event(GtkWidget *widget, GdkEvent  *event, gpointer   data);
-
-static guint timerTag;
-static GtkStatusIcon *mTrayIcon;
-static GtkWidget *mTrayMenu;
-static GtkWidget *window;
-static GtkWidget *textview;
-static GtkTextBuffer *buffer;
-static GtkWidget *timeoutspinner;
-static GtkWidget *scrolledWindow;
-char** xpm_generic_var;
-static gboolean blinkstate = TRUE;
-
-PangoFontDescription *font_desc = NULL;
-
-#define CONFIG_FILE "./tray-monitor.conf"   /* default configuration file */
-
-static void usage()
-{
-   fprintf(stderr, _(
-PROG_COPYRIGHT
-"Written by Nicolas Boichat (2004)\n"
-"\nVersion: %s (%s) %s %s %s\n\n"
-"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
-"       -c <file>     set configuration file to file\n"
-"       -d <nn>       set debug level to <nn>\n"
-"       -dt           print timestamp in debug output\n"
-"       -t            test - read configuration and exit\n"
-"       -?            print this message.\n"
-"\n"), 2004, VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
-}
-
-static GtkWidget *new_image_button(const gchar *stock_id,
-                                   const gchar *label_text)
-{
-    GtkWidget *button;
-    GtkWidget *box;
-    GtkWidget *label;
-    GtkWidget *image;
-
-    button = gtk_button_new();
-
-    box = gtk_hbox_new(FALSE, 0);
-    gtk_container_set_border_width(GTK_CONTAINER(box), 2);
-    image = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_BUTTON);
-    label = gtk_label_new(label_text);
-
-    gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 3);
-    gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 3);
-
-    gtk_widget_show(image);
-    gtk_widget_show(label);
-
-    gtk_widget_show(box);
-
-    gtk_container_add(GTK_CONTAINER(button), box);
-
-    return button;
-}
-
-int sm_line = 0;
-
-#if TRAY_DEBUG_MEMORY
-gpointer smt_malloc(gsize    n_bytes) {
-   return sm_malloc("GLib", sm_line, n_bytes);
-}
-  
-gpointer smt_realloc(gpointer mem, gsize    n_bytes) {
-   return sm_realloc("GLib", sm_line, mem, n_bytes);
-}
-
-gpointer smt_calloc(gsize    n_blocks,
-                    gsize    n_block_bytes) {
-   return sm_calloc("GLib", sm_line, n_blocks, n_block_bytes);
-}
-
-void     smt_free(gpointer mem) {
-   sm_free("Glib", sm_line, mem);
-}
-#endif
-
-/*********************************************************************
- *
- *         Main Bacula Tray Monitor -- User Interface Program
- *
- */
-int main(int argc, char *argv[])
-{
-#if TRAY_DEBUG_MEMORY
-   GMemVTable smvtable;
-   smvtable.malloc = &smt_malloc;
-   smvtable.realloc = &smt_realloc;
-   smvtable.free = &smt_free;
-   smvtable.calloc = &smt_calloc;
-   smvtable.try_malloc = NULL;
-   smvtable.try_realloc = NULL;
-   g_mem_set_vtable(&smvtable);
-#endif
-   
-   int ch, i;
-   bool test_config = false;
-   DIRRES* dird;
-   CLIENT* filed;
-   STORE* stored;
-   CONFONTRES *con_font;
-
-   setlocale(LC_ALL, "");
-   bindtextdomain("bacula", LOCALEDIR);
-   textdomain("bacula");
-
-   init_stack_dump();
-   my_name_is(argc, argv, "tray-monitor");
-   init_msg(NULL, NULL);
-   working_directory = "/tmp";
-
-   struct sigaction sigignore;
-   sigignore.sa_flags = 0;
-   sigignore.sa_handler = SIG_IGN;
-   sigfillset(&sigignore.sa_mask);
-   sigaction(SIGPIPE, &sigignore, NULL);
-
-   gtk_init(&argc, &argv);
-
-   while ((ch = getopt(argc, argv, "bc:d:th?f:s:")) != -1) {
-      switch (ch) {
-      case 'c':                    /* configuration file */
-         if (configfile != NULL) {
-            free(configfile);
-         }
-         configfile = bstrdup(optarg);
-         break;
-
-      case 'd':
-         if (*optarg == 't') {
-            dbg_timestamp = true;
-         } else {
-            debug_level = atoi(optarg);
-            if (debug_level <= 0) {
-               debug_level = 1;
-            }
-         }
-         break;
-
-      case 't':
-         test_config = true;
-         break;
-
-      case 'h':
-      case '?':
-      default:
-         usage();
-         exit(1);
-      }
-   }
-   argc -= optind;
-   //argv += optind;
-
-   if (argc) {
-      usage();
-      exit(1);
-   }
-
-   if (configfile == NULL) {
-      configfile = bstrdup(CONFIG_FILE);
-   }
-
-   config = new_config_parser();
-   parse_tmon_config(config, configfile, M_ERROR_TERM);
-
-   LockRes();
-   nitems = 0;
-   foreach_res(monitor, R_MONITOR) {
-      nitems++;
-   }
-
-   if (nitems != 1) {
-      Emsg2(M_ERROR_TERM, 0,
-         _("Error: %d Monitor resources defined in %s. You must define one and only one Monitor resource.\n"), nitems, configfile);
-   }
-
-   nitems = 0;
-   foreach_res(dird, R_DIRECTOR) {
-      items[nitems].type = R_DIRECTOR;
-      items[nitems].resource = dird;
-      items[nitems].D_sock = NULL;
-      items[nitems].state = warn;
-      items[nitems].oldstate = warn;
-      nitems++;
-   }
-   foreach_res(filed, R_CLIENT) {
-      items[nitems].type = R_CLIENT;
-      items[nitems].resource = filed;
-      items[nitems].D_sock = NULL;
-      items[nitems].state = warn;
-      items[nitems].oldstate = warn;
-      nitems++;
-   }
-   foreach_res(stored, R_STORAGE) {
-      items[nitems].type = R_STORAGE;
-      items[nitems].resource = stored;
-      items[nitems].D_sock = NULL;
-      items[nitems].state = warn;
-      items[nitems].oldstate = warn;
-      nitems++;
-   }
-   UnlockRes();
-
-   if (nitems == 0) {
-      Emsg1(M_ERROR_TERM, 0, _("No Client, Storage or Director resource defined in %s\n"
-"Without that I don't how to get status from the File, Storage or Director Daemon :-(\n"), configfile);
-   }
-
-   if (test_config) {
-      exit(0);
-   }
-
-   //Copy the content of xpm_generic in xpm_generic_var to be able to modify it
-   g_assert((xpm_generic_var = (char**)g_malloc(sizeof(xpm_generic))));
-   for (i = 0; i < (int)(sizeof(xpm_generic)/sizeof(const char*)); i++) {
-      g_assert((xpm_generic_var[i] = (char*)g_malloc((strlen(xpm_generic[i])+1)*sizeof(char))));
-      strcpy(xpm_generic_var[i], xpm_generic[i]);
-   }
-
-   (void)WSA_Init();                /* Initialize Windows sockets */
-
-   LockRes();
-   monitor = (MONITOR*)GetNextRes(R_MONITOR, (RES *)NULL);
-   UnlockRes();
-
-   if ((monitor->RefreshInterval < 1) || (monitor->RefreshInterval > 600)) {
-      Emsg2(M_ERROR_TERM, 0, _("Invalid refresh interval defined in %s\n"
-"This value must be greater or equal to 1 second and less or equal to 10 minutes (read value: %d).\n"), configfile, monitor->RefreshInterval);
-   }
-
-   GdkPixbuf* pixbuf = gdk_pixbuf_new_from_xpm_data(generateXPM(warn, warn));
-
-   mTrayIcon = gtk_status_icon_new_from_pixbuf(pixbuf);
-   gtk_status_icon_set_tooltip(mTrayIcon, _("Bacula daemon status monitor"));
-   g_signal_connect(G_OBJECT(mTrayIcon), "activate", G_CALLBACK(TrayIconActivate), NULL);
-   g_signal_connect(G_OBJECT(mTrayIcon), "popup-menu", G_CALLBACK(TrayIconPopupMenu), NULL);
-   g_object_unref(G_OBJECT(pixbuf));
-
-   mTrayMenu = gtk_menu_new();
-
-   GtkWidget *entry;
-
-   entry = gtk_menu_item_new_with_label(_("Open status window..."));
-   g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(TrayIconActivate), NULL);
-   gtk_menu_shell_append(GTK_MENU_SHELL(mTrayMenu), entry);
-
-   gtk_menu_shell_append(GTK_MENU_SHELL(mTrayMenu), gtk_separator_menu_item_new());
-
-   entry = gtk_menu_item_new_with_label(_("Exit"));
-   g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(TrayIconExit), NULL);
-   gtk_menu_shell_append(GTK_MENU_SHELL(mTrayMenu), entry);
-
-   gtk_widget_show_all(mTrayMenu);
-
-   timerTag = g_timeout_add( 1000*monitor->RefreshInterval/nitems, fd_read, NULL );
-
-   g_timeout_add( 1000, blink, NULL);
-
-   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
-   gtk_window_set_title(GTK_WINDOW(window), _("Bacula tray monitor"));
-
-   g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event), NULL);
-   //g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL);
-
-   gtk_container_set_border_width(GTK_CONTAINER(window), 10);
-
-   GtkWidget* vbox = gtk_vbox_new(FALSE, 10);
-
-   GtkWidget* daemon_table = gtk_table_new((nitems*2)+2, 3, FALSE);
-
-   gtk_table_set_col_spacings(GTK_TABLE(daemon_table), 8);
-
-   GtkWidget* separator = gtk_hseparator_new();
-   gtk_table_attach_defaults(GTK_TABLE(daemon_table), separator, 0, 3, 0, 1);
-
-   GString *str;
-   GSList *group = NULL;
-   GtkWidget* radio;
-   GtkWidget* align;
-
-   for (int i = 0; i < nitems; i++) {
-      switch (items[i].type) {
-      case R_DIRECTOR:
-         str = g_string_new(((DIRRES*)(items[i].resource))->hdr.name);
-         g_string_append(str, _(" (DIR)"));
-         break;
-      case R_CLIENT:
-         str = g_string_new(((CLIENT*)(items[i].resource))->hdr.name);
-         g_string_append(str, _(" (FD)"));
-         break;
-      case R_STORAGE:
-         str = g_string_new(((STORE*)(items[i].resource))->hdr.name);
-         g_string_append(str, _(" (SD)"));
-         break;
-      default:
-         continue;
-      }
-
-      radio = gtk_radio_button_new_with_label(group, str->str);
-      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), i == 0);
-      g_signal_connect(G_OBJECT(radio), "toggled", G_CALLBACK(DaemonChanged), &(items[i]));
-
-      pixbuf = gdk_pixbuf_new_from_xpm_data(generateXPM(warn, warn));
-      items[i].image = gtk_image_new_from_pixbuf(pixbuf);
-
-      items[i].label =  gtk_label_new(_("Unknown status."));
-      align = gtk_alignment_new(0.0, 0.5, 0.0, 1.0);
-      gtk_container_add(GTK_CONTAINER(align), items[i].label);
-
-      gtk_table_attach(GTK_TABLE(daemon_table), radio, 0, 1, (i*2)+1, (i*2)+2,
-         GTK_FILL, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 0, 0);
-      gtk_table_attach(GTK_TABLE(daemon_table), items[i].image, 1, 2, (i*2)+1, (i*2)+2,
-         GTK_FILL, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 0, 0);
-      gtk_table_attach(GTK_TABLE(daemon_table), align, 2, 3, (i*2)+1, (i*2)+2,
-         (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 0, 0);
-
-      separator = gtk_hseparator_new();
-      gtk_table_attach_defaults(GTK_TABLE(daemon_table), separator, 0, 3, (i*2)+2, (i*2)+3);
-
-      group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio));
-   }
-
-   gtk_box_pack_start(GTK_BOX(vbox), daemon_table, FALSE, FALSE, 0);
-  
-   textview = gtk_text_view_new();
-
-   scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
-   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-   gtk_container_add(GTK_CONTAINER (scrolledWindow), textview);
-   
-   buffer = gtk_text_buffer_new(NULL);
-
-   gtk_text_buffer_set_text(buffer, "", -1);
-
-  /*
-   * Gtk2/pango have different font names. Gnome2 comes with "Monospace 10"
-   */
-
-   LockRes();
-   foreach_res(con_font, R_CONSOLE_FONT) {
-       if (!con_font->fontface) {
-          Dmsg1(400, "No fontface for %s\n", con_font->hdr.name);
-          continue;
-       }
-       Dmsg1(100, "Now loading: %s\n",con_font->fontface);
-       font_desc = pango_font_description_from_string(con_font->fontface);
-       if (font_desc == NULL) {
-           Dmsg2(400, "Load of requested ConsoleFont \"%s\" (%s) failed!\n",
-                  con_font->hdr.name, con_font->fontface);
-       } else {
-           Dmsg2(400, "ConsoleFont \"%s\" (%s) loaded.\n",
-                  con_font->hdr.name, con_font->fontface);
-           break;
-       }
-   }
-   UnlockRes();
-
-   if (!font_desc) {
-      font_desc = pango_font_description_from_string("Monospace 10");
-   }
-   if (!font_desc) {
-      font_desc = pango_font_description_from_string("monospace");
-   }
-
-   gtk_widget_modify_font(textview, font_desc);
-   pango_font_description_free(font_desc);
-
-   gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 20);
-   gtk_text_view_set_right_margin(GTK_TEXT_VIEW(textview), 20);
-
-   gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), FALSE);
-
-   gtk_text_view_set_buffer(GTK_TEXT_VIEW(textview), buffer);
-
-   gtk_box_pack_start(GTK_BOX(vbox), scrolledWindow, TRUE, TRUE, 0);
-
-   GtkWidget* hbox = gtk_hbox_new(FALSE, 10);
-
-   GtkWidget* hbox2 = gtk_hbox_new(FALSE, 0);
-   GtkWidget* label = gtk_label_new(_("Refresh interval in seconds: "));
-   gtk_box_pack_start(GTK_BOX(hbox2), label, TRUE, FALSE, 0);
-   GtkAdjustment *spinner_adj = (GtkAdjustment *) gtk_adjustment_new (monitor->RefreshInterval, 1.0, 600.0, 1.0, 5.0, 5.0);
-   timeoutspinner = gtk_spin_button_new (spinner_adj, 1.0, 0);
-   g_signal_connect(G_OBJECT(timeoutspinner), "value-changed", G_CALLBACK(IntervalChanged), NULL);
-   gtk_box_pack_start(GTK_BOX(hbox2), timeoutspinner, TRUE, FALSE, 0);
-   gtk_box_pack_start(GTK_BOX(hbox), hbox2, TRUE, FALSE, 0);
-
-   GtkWidget* button = new_image_button("gtk-refresh", _("Refresh now"));
-   g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(MonitorRefresh), NULL);
-   gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 0);
-
-   button = new_image_button("gtk-help", _("About"));
-   g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(MonitorAbout), NULL);
-   gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 0);
-
-   button = new_image_button("gtk-close", _("Close"));
-   g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_hide), G_OBJECT(window));
-   gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 0);
-
-   gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
-
-   gtk_container_add(GTK_CONTAINER (window), vbox);
-
-   gtk_widget_show_all(vbox);
-
-   gtk_main();
-   
-   g_source_remove(timerTag);
-   
-   sm_line = 0;
-
-   for (i = 0; i < nitems; i++) {
-      if (items[i].D_sock) {
-         switch (items[i].type) {
-         case R_DIRECTOR:
-            trayMessage(_("Disconnecting from Director %s:%d\n"), ((DIRRES*)items[i].resource)->address, ((DIRRES*)items[i].resource)->DIRport);
-            break;
-         case R_CLIENT:
-            trayMessage(_("Disconnecting from Client %s:%d\n"), ((CLIENT*)items[i].resource)->address, ((CLIENT*)items[i].resource)->FDport);
-            break;
-         case R_STORAGE:
-            trayMessage(_("Disconnecting from Storage %s:%d\n"), ((STORE*)items[i].resource)->address, ((STORE*)items[i].resource)->SDport);
-            break;          
-         default:
-            break;
-         }
-         //writecmd(&items[i], "quit");
-         items[i].D_sock->signal(BNET_TERMINATE); /* send EOF */
-         items[i].D_sock->close();
-      }
-   }
-
-   (void)WSACleanup();               /* Cleanup Windows sockets */
-
-   //Free xpm_generic_var
-   for (i = 0; i < (int)(sizeof(xpm_generic)/sizeof(const char*)); i++) {
-      g_free(xpm_generic_var[i]);
-   }
-   g_free(xpm_generic_var);
-   
-   gtk_object_destroy(GTK_OBJECT(window));
-   gtk_object_destroy(GTK_OBJECT(mTrayMenu));
-   config->free_resources();
-   free(config);
-   config = NULL;
-   term_msg();
-
-#if TRAY_DEBUG_MEMORY
-   sm_dump(false);
-#endif
-   
-   return 0;
-}
-
-static void MonitorAbout(GtkWidget *widget, gpointer data)
-{
-#if HAVE_GTK_2_4
-   GtkWidget* about = gtk_message_dialog_new_with_markup(GTK_WINDOW(window),GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,
-      "<span size='x-large' weight='bold'>%s</span>\n\n"
-      PROG_COPYRIGHT
-      "%s"
-      "\n<small>%s: %s (%s) %s %s %s</small>",
-      _("Bacula Tray Monitor"),
-        2004,
-      _("Written by Nicolas Boichat\n"),
-      _("Version"),
-      VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
-#else
-   GtkWidget* about = gtk_message_dialog_new(GTK_WINDOW(window),GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,   
-      "%s\n\n"
-      PROG_COPYRIGHT
-      "%s"
-      "\n%s: %s (%s) %s %s %s",
-      _("Bacula Tray Monitor"),
-        2004,
-      _("Written by Nicolas Boichat\n"),
-      _("Version"),
-      VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
-#endif
-   gtk_dialog_run(GTK_DIALOG(about));
-   gtk_widget_destroy(about);
-}
-
-static void MonitorRefresh(GtkWidget *widget, gpointer data)
-{
-   for (int i = 0; i < nitems; i++) {
-      fd_read(NULL);
-   }
-}
-
-static gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
-{
-   gtk_widget_hide(window);
-   return TRUE; /* do not destroy the window */
-}
-
-/*
- * Come here when the user right clicks on the icon.
- *   We display the icon menu.
- */
-static void TrayIconActivate(GtkWidget *widget, gpointer data)
-{
-   gtk_widget_show(window);
-}
-
-/*
- * Come here when the user left clicks on the icon. 
- *  We popup the status window.
- */
-static void TrayIconPopupMenu(unsigned int activateTime, unsigned int button) 
-{
-   gtk_menu_popup(GTK_MENU(mTrayMenu), NULL, NULL, NULL, NULL, button,
-                  gtk_get_current_event_time());
-   gtk_widget_show(mTrayMenu);
-}
-
-static void TrayIconExit(unsigned int activateTime, unsigned int button)
-{
-   gtk_main_quit();
-}
-
-static void IntervalChanged(GtkWidget *widget, gpointer data)
-{
-   g_source_remove(timerTag);
-   timerTag = g_timeout_add(
-      (guint)(
-         gtk_spin_button_get_value(GTK_SPIN_BUTTON(timeoutspinner))*1000/nitems
-      ), fd_read, NULL );
-}
-
-static void DaemonChanged(GtkWidget *widget, monitoritem* data) 
-{
-   if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
-      fullitem = -1;
-      for (int i = 0; i < nitems; i++) {
-         if (data == &(items[i])) {
-            fullitem = i;
-            break;
-         }
-      }
-      g_return_if_fail(fullitem != -1);
-
-      int oldlastupdated = lastupdated;
-      lastupdated = fullitem-1;
-      fd_read(NULL);
-      lastupdated = oldlastupdated;
-   }
-}
-
-static int authenticate_daemon(monitoritem* item, JCR *jcr) {
-   switch (item->type) {
-   case R_DIRECTOR:
-      return authenticate_director(jcr, monitor, (DIRRES*)item->resource);
-   case R_CLIENT:
-      return authenticate_file_daemon(jcr, monitor, (CLIENT*)item->resource);
-   case R_STORAGE:
-      return authenticate_storage_daemon(jcr, monitor, (STORE*)item->resource);
-   default:
-      printf(_("Error, currentitem is not a Client or a Storage..\n"));
-      gtk_main_quit();
-      return FALSE;
-   }
-   return false;
-}
-
-static gboolean blink(gpointer data) {
-   blinkstate = !blinkstate;
-   for (int i = 0; i < nitems; i++) {
-      updateStatusIcon(&items[i]);
-   }
-   updateStatusIcon(NULL);
-   return true;
-}
-
-static gboolean fd_read(gpointer data)
-{
-   sm_line++;
-#if TRAY_DEBUG_MEMORY
-   printf("sm_line=%d\n", sm_line);
-#endif
-   GtkTextBuffer *newbuffer;
-   GtkTextIter start, stop, nstart, nstop;
-
-   GSList *list, *it;
-
-   GString *strlast, *strcurrent;
-
-   lastupdated++;
-   if (lastupdated == nitems) {
-      lastupdated = 0;
-   }
-
-   if (lastupdated == fullitem) {
-      newbuffer = gtk_text_buffer_new(NULL);
-      
-      if (items[lastupdated].type == R_DIRECTOR)
-         docmd(&items[lastupdated], "status Director\n", &list);
-      else
-         docmd(&items[lastupdated], "status\n", &list);
-
-      it = list->next;
-      do {
-         gtk_text_buffer_get_end_iter(newbuffer, &stop);
-         gtk_text_buffer_insert (newbuffer, &stop, ((GString*)it->data)->str, -1);
-         if (it->data) g_string_free((GString*)it->data, TRUE);
-      } while ((it = it->next) != NULL);
-
-      g_slist_free(list);
-            
-      /* Keep the selection if necessary */
-      if (gtk_text_buffer_get_selection_bounds(buffer, &start, &stop)) {
-         gtk_text_buffer_get_iter_at_offset(newbuffer, &nstart, gtk_text_iter_get_offset(&start));
-         gtk_text_buffer_get_iter_at_offset(newbuffer, &nstop,  gtk_text_iter_get_offset(&stop ));
-
-   #if HAVE_GTK_2_4
-         gtk_text_buffer_select_range(newbuffer, &nstart, &nstop);
-   #else
-         gtk_text_buffer_move_mark(newbuffer, gtk_text_buffer_get_mark(newbuffer, "insert"), &nstart);
-         gtk_text_buffer_move_mark(newbuffer, gtk_text_buffer_get_mark(newbuffer, "selection_bound"), &nstop);
-   #endif
-      }
-
-      g_object_unref(buffer);
-
-      buffer = newbuffer;
-      gtk_text_view_set_buffer(GTK_TEXT_VIEW(textview), buffer);
-   }
-
-   getstatus(&items[lastupdated], 1, &strcurrent);
-   getstatus(&items[lastupdated], 0, &strlast);
-   updateStatusIcon(&items[lastupdated]);
-
-   changeStatusMessage(&items[lastupdated], _("Current job: %s\nLast job: %s"), strcurrent->str, strlast->str);
-
-   updateStatusIcon(NULL);
-
-   g_string_free(strcurrent, TRUE);
-   g_string_free(strlast, TRUE);
-
-   return 1;
-}
-
-void append_error_string(GString* str, int joberrors) {
-   if (joberrors > 1) {
-      g_string_append_printf(str, _(" (%d errors)"), joberrors);
-   }
-   else {
-      g_string_append_printf(str, _(" (%d error)"), joberrors);
-   }
-}
-
-void getstatus(monitoritem* item, int current, GString** str)
-{
-   GSList *list, *it;
-   stateenum ret = error;
-   int jobid = 0, joberrors = 0;
-   char jobstatus = JS_ErrorTerminated;
-   char num;
-   int k;
-
-   *str = g_string_sized_new(128);
-
-   if (current) {
-      if (item->type == R_DIRECTOR)
-         docmd(&items[lastupdated], ".status dir current\n", &list);
-      else
-         docmd(&items[lastupdated], ".status current\n", &list);
-   }
-   else {
-      if (item->type == R_DIRECTOR)
-         docmd(&items[lastupdated], ".status dir last\n", &list);
-      else
-         docmd(&items[lastupdated], ".status last\n", &list);
-   }
-
-   it = list->next;
-   if ((it == NULL) || (sscanf(((GString*)it->data)->str, OKqstatus, &num) != 1)) {
-      g_string_append_printf(*str, ".status error : %s", (it == NULL) ? "" : ((GString*)it->data)->str);
-      while (((*str)->str[(*str)->len-1] == '\n') || ((*str)->str[(*str)->len-1] == '\r')) {
-         g_string_set_size(*str, (*str)->len-1);
-      }
-      ret = error;
-   }
-   else if ((it = it->next) == NULL) {
-      if (current) {
-         g_string_append(*str, _("No current job."));
-      }
-      else {
-         g_string_append(*str, _("No last job."));
-      }
-      ret = idle;
-   }
-   else if ((k = sscanf(((GString*)it->data)->str, DotStatusJob, &jobid, &jobstatus, &joberrors)) == 3) {
-      switch (jobstatus) {
-      case JS_Created:
-         ret = (joberrors > 0) ? warn : running;
-         g_string_append_printf(*str, _("Job status: Created"));
-         append_error_string(*str, joberrors);
-         break;
-      case JS_Running:
-         ret = (joberrors > 0) ? warn : running;
-         g_string_append_printf(*str, _("Job status: Running"));
-         append_error_string(*str, joberrors);
-         break;
-      case JS_Blocked:
-         g_string_append_printf(*str, _("Job status: Blocked"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_Terminated:
-         g_string_append_printf(*str, _("Job status: Terminated"));
-         append_error_string(*str, joberrors);
-         ret = (joberrors > 0) ? warn : idle;
-         break;
-      case JS_ErrorTerminated:
-         g_string_append_printf(*str, _("Job status: Terminated in error"));
-         append_error_string(*str, joberrors);
-         ret = error;
-         break;
-      case JS_Error:
-         ret = (joberrors > 0) ? warn : running;
-         g_string_append_printf(*str, _("Job status: Error"));
-         append_error_string(*str, joberrors);
-         break;
-      case JS_FatalError:
-         g_string_append_printf(*str, _("Job status: Fatal error"));
-         append_error_string(*str, joberrors);
-         ret = error;
-         break;
-      case JS_Differences:
-         g_string_append_printf(*str, _("Job status: Verify differences"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_Canceled:
-         g_string_append_printf(*str, _("Job status: Canceled"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitFD:
-         g_string_append_printf(*str, _("Job status: Waiting on File daemon"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitSD:
-         g_string_append_printf(*str, _("Job status: Waiting on the Storage daemon"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitMedia:
-         g_string_append_printf(*str, _("Job status: Waiting for new media"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitMount:
-         g_string_append_printf(*str, _("Job status: Waiting for Mount"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitStoreRes:
-         g_string_append_printf(*str, _("Job status: Waiting for storage resource"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitJobRes:
-         g_string_append_printf(*str, _("Job status: Waiting for job resource"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitClientRes:
-         g_string_append_printf(*str, _("Job status: Waiting for Client resource"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitMaxJobs:
-         g_string_append_printf(*str, _("Job status: Waiting for maximum jobs"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitStartTime:
-         g_string_append_printf(*str, _("Job status: Waiting for start time"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      case JS_WaitPriority:
-         g_string_append_printf(*str, _("Job status: Waiting for higher priority jobs to finish"));
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      default:
-         g_warning(_("Unknown job status %c."), jobstatus);
-         g_string_append_printf(*str, _("Job status: Unknown(%c)"), jobstatus);
-         append_error_string(*str, joberrors);
-         ret = warn;
-         break;
-      }
-   }
-   else {
-      fprintf(stderr, _("Bad scan : '%s' %d\n"), (it == NULL) ? "" : ((GString*)it->data)->str, k);
-      ret = error;
-   }
-
-   it = list;
-   do {
-      if (it->data) {
-         g_string_free((GString*)it->data, TRUE);
-      }
-   } while ((it = it->next) != NULL);
-
-   g_slist_free(list);
-
-   if (current) {
-      item->state = ret;
-   }
-   else {
-      item->oldstate = ret;
-   }
-}
-
-int docmd(monitoritem* item, const char* command, GSList** list) 
-{
-   int stat;
-   GString* str = NULL;
-
-   *list = g_slist_alloc();
-
-   //str = g_string_sized_new(64);
-
-   if (!item->D_sock) {
-      memset(&jcr, 0, sizeof(jcr));
-
-      DIRRES* dird;
-      CLIENT* filed;
-      STORE* stored;
-
-      switch (item->type) {
-      case R_DIRECTOR:
-         dird = (DIRRES*)item->resource;
-         trayMessage(_("Connecting to Director %s:%d\n"), dird->address, dird->DIRport);
-         changeStatusMessage(item, _("Connecting to Director %s:%d"), dird->address, dird->DIRport);
-         item->D_sock = bnet_connect(NULL, 0, 0, 0, _("Director daemon"), dird->address, NULL, dird->DIRport, 0);
-         jcr.dir_bsock = item->D_sock;
-         break;
-      case R_CLIENT:
-         filed = (CLIENT*)item->resource;
-         trayMessage(_("Connecting to Client %s:%d\n"), filed->address, filed->FDport);
-         changeStatusMessage(item, _("Connecting to Client %s:%d"), filed->address, filed->FDport);
-         item->D_sock = bnet_connect(NULL, 0, 0, 0, _("File daemon"), filed->address, NULL, filed->FDport, 0);
-         jcr.file_bsock = item->D_sock;
-         break;
-      case R_STORAGE:
-         stored = (STORE*)item->resource;
-         trayMessage(_("Connecting to Storage %s:%d\n"), stored->address, stored->SDport);
-         changeStatusMessage(item, _("Connecting to Storage %s:%d"), stored->address, stored->SDport);
-         item->D_sock = bnet_connect(NULL, 0, 0, 0, _("Storage daemon"), stored->address, NULL, stored->SDport, 0);
-         jcr.store_bsock = item->D_sock;
-         break;
-      default:
-         printf(_("Error, currentitem is not a Client, a Storage or a Director..\n"));
-         gtk_main_quit();
-         return 0;
-      }
-
-      if (item->D_sock == NULL) {
-         *list = g_slist_append(*list, g_string_new(_("Cannot connect to daemon.\n")));
-         changeStatusMessage(item, _("Cannot connect to daemon."));
-         item->state = error;
-         item->oldstate = error;
-         return 0;
-      }
-
-      if (!authenticate_daemon(item, &jcr)) {
-         str = g_string_sized_new(64);
-         g_string_printf(str, "ERR=%s\n", item->D_sock->msg);
-         *list = g_slist_append(*list, str);
-         item->state = error;
-         item->oldstate = error;
-         changeStatusMessage(item, _("Authentication error : %s"), item->D_sock->msg);
-         item->D_sock = NULL;
-         return 0;
-      }
-
-      switch (item->type) {
-      case R_DIRECTOR:
-         trayMessage(_("Opened connection with Director daemon.\n"));
-         changeStatusMessage(item, _("Opened connection with Director daemon."));
-         break;
-      case R_CLIENT:
-         trayMessage(_("Opened connection with File daemon.\n"));
-         changeStatusMessage(item, _("Opened connection with File daemon."));
-         break;
-      case R_STORAGE:
-         trayMessage(_("Opened connection with Storage daemon.\n"));
-         changeStatusMessage(item, _("Opened connection with Storage daemon."));
-         break;
-      default:
-         printf(_("Error, currentitem is not a Client, a Storage or a Director..\n"));
-         gtk_main_quit();
-         return 0;
-         break;
-      }
-
-      if (item->type == R_DIRECTOR) { /* Read connection messages... */
-         GSList *tlist, *it;
-         docmd(item, "", &tlist); /* Usually invalid, but no matter */
-         it = tlist;
-         do {
-            if (it->data) {
-               g_string_free((GString*)it->data, TRUE);
-            }
-         } while ((it = it->next) != NULL);
-
-         g_slist_free(tlist);
-      }
-   }
-
-   if (command[0] != 0)
-      writecmd(item, command);
-
-   while(1) {
-      if ((stat = item->D_sock->recv()) >= 0) {
-         *list = g_slist_append(*list, g_string_new(item->D_sock->msg));
-      }
-      else if (stat == BNET_SIGNAL) {
-         if (item->D_sock->msglen == BNET_EOD) {
-            //fprintf(stderr, "<< EOD >>\n");
-            return 1;
-         }
-         else if (item->D_sock->msglen == BNET_SUB_PROMPT) {
-            //fprintf(stderr, "<< PROMPT >>\n");
-            *list = g_slist_append(*list, g_string_new(_("<< Error: BNET_SUB_PROMPT signal received. >>\n")));
-            return 0;
-         }
-         else if (item->D_sock->msglen == BNET_HEARTBEAT) {
-            item->D_sock->signal(BNET_HB_RESPONSE);
-            *list = g_slist_append(*list, g_string_new(_("<< Heartbeat signal received, answered. >>\n")));
-         }
-         else {
-            str = g_string_sized_new(64);
-            g_string_printf(str, _("<< Unexpected signal received : %s >>\n"), bnet_sig_to_ascii(item->D_sock));
-            *list = g_slist_append(*list, str);
-         }
-      }
-      else { /* BNET_HARDEOF || BNET_ERROR */
-         *list = g_slist_append(*list, g_string_new(_("<ERROR>\n")));
-         item->D_sock = NULL;
-         item->state = error;
-         item->oldstate = error;
-         changeStatusMessage(item, _("Error : BNET_HARDEOF or BNET_ERROR"));
-         //fprintf(stderr, _("<< ERROR >>\n"));
-         return 0;
-      }
-
-      if (item->D_sock->is_stop()) {
-         g_string_append_printf(str, _("<STOP>\n"));
-         item->D_sock = NULL;
-         item->state = error;
-         item->oldstate = error;
-         changeStatusMessage(item, _("Error : Connection closed."));
-         //fprintf(stderr, "<< STOP >>\n");
-         return 0;            /* error or term */
-      }
-   }
-}
-
-void writecmd(monitoritem* item, const char* command) {
-   if (item->D_sock) {
-      item->D_sock->msglen = strlen(command);
-      pm_strcpy(&item->D_sock->msg, command);
-      item->D_sock->send();
-   }
-}
-
-/* Note: Does not seem to work either on Gnome nor KDE... */
-void trayMessage(const char *fmt,...)
-{
-   char buf[512];
-   va_list arg_ptr;
-
-   va_start(arg_ptr, fmt);
-   bvsnprintf(buf, sizeof(buf), (char *)fmt, arg_ptr);
-   va_end(arg_ptr);
-
-   fprintf(stderr, "%s", buf);
-
-// gtk_tray_icon_send_message(gtk_status_icon_get_tray_icon(mTrayIcon), 5000, (const char*)&buf, -1);
-}
-
-void changeStatusMessage(monitoritem* item, const char *fmt,...) {
-   char buf[512];
-   va_list arg_ptr;
-
-   va_start(arg_ptr, fmt);
-   bvsnprintf(buf, sizeof(buf), (char *)fmt, arg_ptr);
-   va_end(arg_ptr);
-
-   gtk_label_set_text(GTK_LABEL(item->label), buf);
-}
-
-void updateStatusIcon(monitoritem* item) {
-   const char** xpm;
-
-   if (item == NULL) {
-      /* For the current status, select the two worse for blinking,
-         but never blink a D_Sock == NULL error with idle. */
-      stateenum state1, state2, oldstate;
-      gboolean onenull = FALSE;
-      state1 = idle;
-      state2 = idle;
-      oldstate = idle;
-      for (int i = 0; i < nitems; i++) {
-         if (items[i].D_sock == NULL) onenull = TRUE;
-         if (items[i].state >= state1) {
-            state2 = state1;
-            state1 = items[i].state;
-         }
-         else if (items[i].state > state2) {
-            state2 = items[i].state;
-         }
-         if (items[i].oldstate > oldstate) oldstate = items[i].oldstate;
-      }
-
-      if ((onenull == TRUE) && (state2 == idle)) {
-         state2 = error;
-      }
-
-      xpm = generateXPM(blinkstate ? state1 : state2, oldstate);
-   }
-   else {
-      if ((blinkstate) && (item->D_sock != NULL)) {
-         if (item->state > 1) { //Warning or error while running
-            xpm = generateXPM(running, item->oldstate);
-         }
-         else {
-            xpm = generateXPM(idle, item->oldstate);
-         }
-      }
-      else {
-         xpm = generateXPM(item->state, item->oldstate);
-      }
-   }
-
-   GdkPixbuf* pixbuf = gdk_pixbuf_new_from_xpm_data(xpm);
-   if (item == NULL) {
-      gtk_status_icon_set_from_pixbuf(mTrayIcon, pixbuf);
-      gtk_window_set_icon(GTK_WINDOW(window), pixbuf);
-   }
-   else {
-      gtk_image_set_from_pixbuf(GTK_IMAGE(item->image), pixbuf);
-   }
-   g_object_unref(G_OBJECT(pixbuf));
-}
-
-/* Note: result should not be stored, as it is a reference to xpm_generic_var */
-static const char** generateXPM(stateenum newstate, stateenum oldstate) 
-{
-   char* address = &xpm_generic_var[xpm_generic_first_color][xpm_generic_column];
-   switch (newstate) {
-   case error:
-      strcpy(address, "ff0000");
-      break;
-   case idle:
-      strcpy(address, "ffffff");
-      break;
-   case running:
-      strcpy(address, "00ff00");
-      break;
-   case warn:
-      strcpy(address, "ffff00");
-      break;
-   }
-
-   address = &xpm_generic_var[xpm_generic_second_color][xpm_generic_column];
-   switch (oldstate) {
-   case error:
-      strcpy(address, "ff0000");
-      break;
-   case idle:
-      strcpy(address, "ffffff");
-      break;
-   case running:
-      strcpy(address, "00ff00");
-      break;
-   case warn:
-      strcpy(address, "ffff00");
-      break;
-   }
-
-   return (const char**)xpm_generic_var;
-}
diff --git a/src/tray-monitor/tray-monitor.conf.in b/src/tray-monitor/tray-monitor.conf.in
deleted file mode 100644
index 71ece8d..0000000
--- a/src/tray-monitor/tray-monitor.conf.in
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Bacula Tray Monitor Configuration File
-#
-
-Monitor {
-  Name = @basename at -mon
-  Password = "@mon_dir_password@"         # password for the Directors   
-  RefreshInterval = 5 seconds
-}
-   
-Client {
-  Name = @basename at -fd
-  Address = @hostname@
-  FDPort = @fd_port@
-  Password = "@mon_fd_password@"          # password for FileDaemon
-}
-
-Storage {
-  Name = @basename at -sd
-  Address = @hostname@
-  SDPort = @sd_port@
-  Password = "@mon_sd_password@"          # password for StorageDaemon
-}
-
-Director {
-  Name = @basename at -dir
-  DIRport = @dir_port@
-  address = @hostname@
-}
diff --git a/src/tray-monitor/tray_conf.c b/src/tray-monitor/tray_conf.c
deleted file mode 100644
index 32d207c..0000000
--- a/src/tray-monitor/tray_conf.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
-*   Main configuration file parser for Bacula Tray Monitor.
-*
-*   Adapted from dird_conf.c
-*
-*   Note, the configuration file parser consists of three parts
-*
-*   1. The generic lexical scanner in lib/lex.c and lib/lex.h
-*
-*   2. The generic config  scanner in lib/parse_config.c and
-*       lib/parse_config.h.
-*       These files contain the parser code, some utility
-*       routines, and the common store routines (name, int,
-*       string).
-*
-*   3. The daemon specific file, which contains the Resource
-*       definitions as well as any specific store routines
-*       for the resource records.
-*
-*     Nicolas Boichat, August MMIV
-*
-*     Version $Id$
-*/
-
-#include "bacula.h"
-#include "tray_conf.h"
-
-/* Define the first and last resource ID record
-* types. Note, these should be unique for each
-* daemon though not a requirement.
-*/
-int32_t r_first = R_FIRST;
-int32_t r_last  = R_LAST;
-static RES *sres_head[R_LAST - R_FIRST + 1];
-RES **res_head = sres_head;
-
-/* We build the current resource here as we are
-* scanning the resource configuration definition,
-* then move it to allocated memory when the resource
-* scan is complete.
-*/
-URES res_all;
-int32_t res_all_size = sizeof(res_all);
-
-
-/* Definition of records permitted within each
-* resource with the routine to process the record
-* information.  NOTE! quoted names must be in lower case.
-*/
-/*
-*    Monitor Resource
-*
-*   name           handler     value                 code flags    default_value
-*/
-static RES_ITEM mon_items[] = {
-   {"name",        store_name,     ITEM(res_monitor.hdr.name), 0, ITEM_REQUIRED, 0},
-   {"description", store_str,      ITEM(res_monitor.hdr.desc), 0, 0, 0},
-   {"requiressl",  store_bool,     ITEM(res_monitor.require_ssl), 1, ITEM_DEFAULT, 0},
-   {"password",    store_password, ITEM(res_monitor.password), 0, ITEM_REQUIRED, 0},
-   {"refreshinterval",  store_time,ITEM(res_monitor.RefreshInterval),  0, ITEM_DEFAULT, 5},
-   {"fdconnecttimeout", store_time,ITEM(res_monitor.FDConnectTimeout), 0, ITEM_DEFAULT, 60 * 30},
-   {"sdconnecttimeout", store_time,ITEM(res_monitor.SDConnectTimeout), 0, ITEM_DEFAULT, 60 * 30},
-   {NULL, NULL, {0}, 0, 0, 0}
-};
-
-/*  Director's that we can contact */
-static RES_ITEM dir_items[] = {
-   {"name",        store_name,     ITEM(res_dir.hdr.name), 0, ITEM_REQUIRED, 0},
-   {"description", store_str,      ITEM(res_dir.hdr.desc), 0, 0, 0},
-   {"dirport",     store_pint32,   ITEM(res_dir.DIRport),  0, ITEM_DEFAULT, 9101},
-   {"address",     store_str,      ITEM(res_dir.address),  0, ITEM_REQUIRED, 0},
-   {"enablessl",   store_bool,     ITEM(res_dir.enable_ssl), 1, ITEM_DEFAULT, 0},
-   {NULL, NULL, {0}, 0, 0, 0}
-};
-
-/*
-*    Client or File daemon resource
-*
-*   name           handler     value                 code flags    default_value
-*/
-
-static RES_ITEM cli_items[] = {
-   {"name",     store_name,       ITEM(res_client.hdr.name), 0, ITEM_REQUIRED, 0},
-   {"description", store_str,     ITEM(res_client.hdr.desc), 0, 0, 0},
-   {"address",  store_str,        ITEM(res_client.address),  0, ITEM_REQUIRED, 0},
-   {"fdport",   store_pint32,     ITEM(res_client.FDport),   0, ITEM_DEFAULT, 9102},
-   {"password", store_password,   ITEM(res_client.password), 0, ITEM_REQUIRED, 0},
-   {"enablessl", store_bool,      ITEM(res_client.enable_ssl), 1, ITEM_DEFAULT, 0},
-   {NULL, NULL, {0}, 0, 0, 0}
-};
-
-/* Storage daemon resource
-*
-*   name           handler     value                 code flags    default_value
-*/
-static RES_ITEM store_items[] = {
-   {"name",        store_name,     ITEM(res_store.hdr.name),   0, ITEM_REQUIRED, 0},
-   {"description", store_str,      ITEM(res_store.hdr.desc),   0, 0, 0},
-   {"sdport",      store_pint32,   ITEM(res_store.SDport),     0, ITEM_DEFAULT, 9103},
-   {"address",     store_str,      ITEM(res_store.address),    0, ITEM_REQUIRED, 0},
-   {"sdaddress",   store_str,      ITEM(res_store.address),    0, 0, 0},
-   {"password",    store_password, ITEM(res_store.password),   0, ITEM_REQUIRED, 0},
-   {"sdpassword",  store_password, ITEM(res_store.password),   0, 0, 0},
-   {"enablessl",   store_bool,     ITEM(res_store.enable_ssl),  1, ITEM_DEFAULT, 0},
-   {NULL, NULL, {0}, 0, 0, 0}
-};
-
-static RES_ITEM con_font_items[] = {
-   {"name",        store_name,     ITEM(con_font.hdr.name), 0, ITEM_REQUIRED, 0},
-   {"description", store_str,      ITEM(con_font.hdr.desc), 0, 0, 0},
-   {"font",        store_str,      ITEM(con_font.fontface), 0, 0, 0},
-   {NULL, NULL, {0}, 0, 0, 0}
-};
-
-/*
-* This is the master resource definition.
-* It must have one item for each of the resources.
-*
-*  NOTE!!! keep it in the same order as the R_codes
-*    or eliminate all resources[rindex].name
-*
-*  name      items        rcode        res_head
-*/
-RES_TABLE resources[] = {
-   {"monitor",      mon_items,    R_MONITOR},
-   {"director",     dir_items,    R_DIRECTOR},
-   {"client",       cli_items,    R_CLIENT},
-   {"storage",      store_items,  R_STORAGE},
-   {"consolefont",   con_font_items, R_CONSOLE_FONT},
-   {NULL,           NULL,         0}
-};
-
-/* Dump contents of resource */
-void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fmt, ...), void *sock)
-{
-   URES *res = (URES *)reshdr;
-   bool recurse = true;
-   char ed1[100], ed2[100];
-
-   if (res == NULL) {
-      sendit(sock, _("No %s resource defined\n"), res_to_str(type));
-      return;
-   }
-   if (type < 0) {                    /* no recursion */
-      type = - type;
-      recurse = false;
-   }
-   switch (type) {
-   case R_MONITOR:
-      sendit(sock, _("Monitor: name=%s FDtimeout=%s SDtimeout=%s\n"), 
-             reshdr->name,
-             edit_uint64(res->res_monitor.FDConnectTimeout, ed1),
-             edit_uint64(res->res_monitor.SDConnectTimeout, ed2));
-      break;
-   case R_DIRECTOR:
-      sendit(sock, _("Director: name=%s address=%s FDport=%d\n"),
-             res->res_dir.hdr.name, res->res_dir.address, res->res_dir.DIRport);
-      break;
-   case R_CLIENT:
-      sendit(sock, _("Client: name=%s address=%s FDport=%d\n"),
-             res->res_client.hdr.name, res->res_client.address, res->res_client.FDport);
-      break;
-   case R_STORAGE:
-      sendit(sock, _("Storage: name=%s address=%s SDport=%d\n"),
-             res->res_store.hdr.name, res->res_store.address, res->res_store.SDport);
-      break;
-   case R_CONSOLE_FONT:
-      sendit(sock, _("ConsoleFont: name=%s font face=%s\n"),
-             reshdr->name, NPRT(res->con_font.fontface));
-      break;
-   default:
-      sendit(sock, _("Unknown resource type %d in dump_resource.\n"), type);
-      break;
-   }
-   if (recurse && res->res_monitor.hdr.next) {
-      dump_resource(type, res->res_monitor.hdr.next, sendit, sock);
-   }
-}
-
-
-/*
-* Free memory of resource -- called when daemon terminates.
-* NB, we don't need to worry about freeing any references
-* to other resources as they will be freed when that
-* resource chain is traversed.  Mainly we worry about freeing
-* allocated strings (names).
-*/
-void free_resource(RES *sres, int type)
-{
-   RES *nres;                         /* next resource if linked */
-   URES *res = (URES *)sres;
-
-   if (res == NULL)
-      return;
-
-   /* common stuff -- free the resource name and description */
-   nres = (RES *)res->res_monitor.hdr.next;
-   if (res->res_monitor.hdr.name) {
-      free(res->res_monitor.hdr.name);
-   }
-   if (res->res_monitor.hdr.desc) {
-      free(res->res_monitor.hdr.desc);
-   }
-
-   switch (type) {
-   case R_MONITOR:
-      break;
-   case R_CLIENT:
-      if (res->res_client.address) {
-         free(res->res_client.address);
-      }
-      if (res->res_client.password) {
-         free(res->res_client.password);
-      }
-      break;
-   case R_STORAGE:
-      if (res->res_store.address) {
-         free(res->res_store.address);
-      }
-      if (res->res_store.password) {
-         free(res->res_store.password);
-      }
-      break;
-   case R_CONSOLE_FONT:
-      if (res->con_font.fontface) {
-         free(res->con_font.fontface);
-      }
-      break;
-   default:
-      printf(_("Unknown resource type %d in free_resource.\n"), type);
-   }
-
-   /* Common stuff again -- free the resource, recurse to next one */
-   if (res) {
-      free(res);
-   }
-   if (nres) {
-      free_resource(nres, type);
-   }
-}
-
-/*
-* Save the new resource by chaining it into the head list for
-* the resource. If this is pass 2, we update any resource
-* pointers because they may not have been defined until
-* later in pass 1.
-*/
-void save_resource(int type, RES_ITEM *items, int pass)
-{
-   URES *res;
-   int rindex = type - r_first;
-   int i, size;
-   int error = 0;
-
-   /*
-   * Ensure that all required items are present
-   */
-   for (i=0; items[i].name; i++) {
-      if (items[i].flags & ITEM_REQUIRED) {
-         if (!bit_is_set(i, res_all.res_monitor.hdr.item_present)) {
-               Emsg2(M_ERROR_TERM, 0, _("%s item is required in %s resource, but not found.\n"),
-                  items[i].name, resources[rindex]);
-         }
-      }
-      /* If this triggers, take a look at lib/parse_conf.h */
-      if (i >= MAX_RES_ITEMS) {
-         Emsg1(M_ERROR_TERM, 0, _("Too many items in %s resource\n"), resources[rindex]);
-      }
-   }
-
-   /*
-   * During pass 2 in each "store" routine, we looked up pointers
-   * to all the resources referrenced in the current resource, now we
-   * must copy their addresses from the static record to the allocated
-   * record.
-   */
-   if (pass == 2) {
-      switch (type) {
-      /* Resources not containing a resource */
-      case R_MONITOR:
-      case R_CLIENT:
-      case R_STORAGE:
-      case R_DIRECTOR:
-      case R_CONSOLE_FONT:
-         break;
-      default:
-         Emsg1(M_ERROR, 0, _("Unknown resource type %d in save_resource.\n"), type);
-         error = 1;
-         break;
-      }
-      /* Note, the resource name was already saved during pass 1,
-      * so here, we can just release it.
-      */
-      if (res_all.res_monitor.hdr.name) {
-         free(res_all.res_monitor.hdr.name);
-         res_all.res_monitor.hdr.name = NULL;
-      }
-      if (res_all.res_monitor.hdr.desc) {
-         free(res_all.res_monitor.hdr.desc);
-         res_all.res_monitor.hdr.desc = NULL;
-      }
-      return;
-   }
-
-   /*
-   * The following code is only executed during pass 1
-   */
-   switch (type) {
-   case R_MONITOR:
-      size = sizeof(MONITOR);
-      break;
-   case R_DIRECTOR:
-      size = sizeof(DIRRES);
-      break;
-   case R_CLIENT:
-      size = sizeof(CLIENT);
-      break;
-   case R_STORAGE:
-      size = sizeof(STORE);
-      break;
-   case R_CONSOLE_FONT:
-      size = sizeof(CONFONTRES);
-      break;
-   default:
-      printf(_("Unknown resource type %d in save_resource.\n"), type);
-      error = 1;
-      size = 1;
-      break;
-   }
-   /* Common */
-   if (!error) {
-      res = (URES *)malloc(size);
-      memcpy(res, &res_all, size);
-      if (!res_head[rindex]) {
-        res_head[rindex] = (RES *)res; /* store first entry */
-         Dmsg3(900, "Inserting first %s res: %s index=%d\n", res_to_str(type),
-         res->res_monitor.hdr.name, rindex);
-      } else {
-         RES *next, *last;
-         /* Add new res to end of chain */
-         for (last=next=res_head[rindex]; next; next=next->next) {
-            last = next;
-            if (strcmp(next->name, res->res_monitor.hdr.name) == 0) {
-               Emsg2(M_ERROR_TERM, 0,
-                  _("Attempt to define second %s resource named \"%s\" is not permitted.\n"),
-               resources[rindex].name, res->res_monitor.hdr.name);
-            }
-         }
-         last->next = (RES *)res;
-         Dmsg4(900, "Inserting %s res: %s index=%d pass=%d\n", res_to_str(type),
-         res->res_monitor.hdr.name, rindex, pass);
-      }
-   }
-}
-
-bool parse_tmon_config(CONFIG *config, const char *configfile, int exit_code)
-{
-   config->init(configfile, NULL, exit_code, (void *)&res_all, res_all_size,
-      r_first, r_last, resources, res_head);
-   return config->parse_config();
-}
diff --git a/src/tray-monitor/tray_conf.h b/src/tray-monitor/tray_conf.h
deleted file mode 100644
index 5efcdc7..0000000
--- a/src/tray-monitor/tray_conf.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2007 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.
-*/
-/*
- * Tray Monitor specific configuration and defines
- *
- *   Adapted from dird_conf.c
- *
- *     Nicolas Boichat, August MMIV
- *
- *    Version $Id$
- */
-
-/* NOTE:  #includes at the end of this file */
-
-/*
- * Resource codes -- they must be sequential for indexing
- */
-enum rescode {
-   R_MONITOR = 1001,
-   R_DIRECTOR,
-   R_CLIENT,
-   R_STORAGE,
-   R_CONSOLE_FONT,
-   R_FIRST = R_MONITOR,
-   R_LAST  = R_CONSOLE_FONT                /* keep this updated */
-};
-
-
-/*
- * Some resource attributes
- */
-enum {
-   R_NAME = 1020,
-   R_ADDRESS,
-   R_PASSWORD,
-   R_TYPE,
-   R_BACKUP
-};
-
-/* Director */
-struct DIRRES {
-   RES   hdr;
-   uint32_t DIRport;                  /* UA server port */
-   char *address;                     /* UA server address */
-   bool enable_ssl;                   /* Use SSL */
-};
-
-/*
- *   Tray Monitor Resource
- *
- */
-struct MONITOR {
-   RES   hdr;
-   bool require_ssl;                  /* Require SSL for all connections */
-   MSGS *messages;                    /* Daemon message handler */
-   char *password;                    /* UA server password */
-   utime_t RefreshInterval;           /* Status refresh interval */
-   utime_t FDConnectTimeout;          /* timeout for connect in seconds */
-   utime_t SDConnectTimeout;          /* timeout in seconds */
-};
-
-
-/*
- *   Client Resource
- *
- */
-struct CLIENT {
-   RES   hdr;
-
-   uint32_t FDport;                   /* Where File daemon listens */
-   char *address;
-   char *password;
-   bool enable_ssl;                   /* Use SSL */
-};
-
-/*
- *   Store Resource
- *
- */
-struct STORE {
-   RES   hdr;
-
-   uint32_t SDport;                   /* port where Directors connect */
-   char *address;
-   char *password;
-   bool enable_ssl;                   /* Use SSL */
-};
-
-struct CONFONTRES {
-   RES   hdr;
-   char *fontface;                    /* Console Font specification */
-};
-
-/* Define the Union of all the above
- * resource structure definitions.
- */
-union URES {
-   MONITOR    res_monitor;
-   DIRRES     res_dir;
-   CLIENT     res_client;
-   STORE      res_store;
-   CONFONTRES con_font;
-   RES        hdr;
-};
diff --git a/src/version.h b/src/version.h
index 6f1d7e0..d0bae63 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,39 +1,34 @@
 
 #undef  VERSION
-#define VERSION "5.2.13"
-#define BDATE   "19 February 2013"
-#define LSMDATE "19Jan13"
+#define VERSION "7.0.5"
+#define BDATE   "28 July 2014"
+#define LSMDATE "28Jul14"
 
-#define PROG_COPYRIGHT "Copyright (C) %d-2012 Free Software Foundation Europe e.V.\n"
-#define BYEAR "2013"       /* year for copyright messages in progs */
+#define PROG_COPYRIGHT "Copyright (C) %d-2014 Free Software Foundation Europe e.V.\n"
+#define BYEAR "2014"       /* year for copyright messages in progs */
 
 /*
-   Bacula® - The Network Backup Solution
+ * Versions of packages needed to build Bacula components
+ */
+#define DEPKGS_QT_VERSION  "01Jan13"
+#define DEPKGS_VERSION     "29Feb12"
+#define BQT4_VERSION       "4.8.4"
 
-   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.
+/*
+   Bacula® - The Network Backup Solution
 
-   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.
+   Copyright (C) 2000-2014 Free Software Foundation Europe e.V.
 
-   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.
+   The main author of Bacula is Kern Sibbald, with contributions from many
+   others, a complete list can be found in the file AUTHORS.
 
-   Bacula® is a registered trademark of Kern Sibbald.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   Public License, v3.0 ("AGPLv3") and some additional permissions and
+   terms pursuant to its AGPLv3 Section 7.
 
-   The licensor of Bacula is the Free Software Foundation Europe
-   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
-   Switzerland, email:ftf at fsfeurope.org.
+   Bacula® is a registered trademark of Kern Sibbald.
 */
 
 /* Shared object library versions */
@@ -91,7 +86,7 @@
 #define USE_LOCKMGR_PRIORITY
 
 /*
- * Enable thread verification before kill 
+ * Enable thread verification before kill
  *
  * Note, this extra check have a high cost when using
  * dozens of thread, so turn this only for debugging.
@@ -115,7 +110,7 @@
  */
 // #define USE_FTP
 
-/* 
+/*
  * for fastest speed but you must have a UPS to avoid unwanted shutdowns
  */
 //#define SQLITE3_INIT_QUERY "PRAGMA synchronous = OFF"
@@ -126,14 +121,14 @@
 #define SQLITE3_INIT_QUERY "PRAGMA synchronous = NORMAL"
 
 /*
- * This should always be on. It enables data encryption code 
+ * This should always be on. It enables data encryption code
  *  providing it is configured.
  */
 #define DATA_ENCRYPTION 1
 
 /*
  * This uses a Bacula specific bsnprintf rather than the sys lib
- *  version because it is much more secure. It should always be 
+ *  version because it is much more secure. It should always be
  *  on.
  */
 #define USE_BSNPRINTF 1
@@ -167,7 +162,7 @@
 
 
 /* The following are turned on for performance testing */
-/*  
+/*
  * If you turn on the NO_ATTRIBUTES_TEST and rebuild, the SD
  *  will receive the attributes from the FD, will write them
  *  to disk, then when the data is written to tape, it will
@@ -178,11 +173,11 @@
  */
 /* #define NO_ATTRIBUTES_TEST 1 */
 
-/* 
+/*
 * If you turn on NO_TAPE_WRITE_TEST and rebuild, the SD
 *  will do all normal actions, but will not write to the
 *  Volume.  Note, this means a lot of functions such as
-*  labeling will not work, so you must use it only when 
+*  labeling will not work, so you must use it only when
 *  Bacula is going to append to a Volume. This will eliminate
 *  the time it takes to write to the Volume (not the time
 *  it takes to do any positioning).
diff --git a/src/win32/External-mingw-w64 b/src/win32/External-mingw-w64
deleted file mode 100644
index d016450..0000000
--- a/src/win32/External-mingw-w64
+++ /dev/null
@@ -1,72 +0,0 @@
-# 
-# This file provides information about the External dependencies required by
-# Bacula.
-#  
-# There are four fields delimited by |.  Only the first two fields are 
-# required.  The other two are used when the top level directory of the
-# archive is not the same as the file name with any suffixes removed.
-# 
-# Field 1 is the name of the dependency.  It is used to define the
-# name of the three variables which are assigned the values of fields 2 to 4.
-# 
-# Field 2 is the URL of the archive.  It is assigned to the variable
-# URL_[field1].
-#  
-# Field 3 is the top directory of the archive or the name of a directory that
-# must be created and the archive extracted into it.  It is assigned to the 
-# variable DIR_[field1].
-# 
-# Field 4 indicates if the directory specified in field 3 must be created 
-# first and the archive extracted into it.  It is assigned to the variable
-# MKD_[field1]
-# 
-#CMD_UTILS|http://www.bacula.org/depkgs-mingw32/cmd-utils-0.1.tar.gz
-#DVD_RW_TOOLS|http://www.bacula.org/depkgs-mingw32/dvd+rw-tools-7.0.tar.gz
-#MKISOFS|http://www.bacula.org/depkgs-mingw32/mkisofs.exe
-#MT|http://www.bacula.org/depkgs-mingw32/mt-st-0.9b.tar.gz
-#MTX|http://www.bacula.org/depkgs-mingw32/mtx-1.3.9.tar.gz
-#MYSQL|http://www.bacula.org/depkgs-mingw32/mysql-noinstall-5.0.27-win32.zip|mysql-5.0.27-win32
-#NSIS_BIN|http://www.bacula.org/depkgs-mingw32/nsis-2.17.zip
-#NSIS_SRC|http://www.bacula.org/depkgs-mingw32/nsis-2.17-src.tar.bz2
-OPENSSL|http://www.bacula.org/depkgs-mingw32/openssl-0.9.8j.tar.gz
-PCRE|http://www.bacula.org/depkgs-mingw32/pcre-6.3.tar.bz2
-#POSTGRESQL|http://www.bacula.org/depkgs-mingw32/postgresql-base-8.1.4.tar.bz2|postgresql-8.1.4
-PTHREADS|http://www.bacula.org/depkgs-mingw32/pthreads-snap-2004-06-22.tar.gz
-#Qt4|http://www.bacula.org/depkgs-mingw32/qt-win-opensource-src-4.3.4.zip
-#SCONS|http://www.bacula.org/depkgs-mingw32/scons-0.96.92.tar.gz
-#SED|http://www.bacula.org/depkgs-mingw32/sed-4.1.5.tar.gz
-#SQLITE|http://www.bacula.org/depkgs-mingw32/sqlite-3.3.17.tar.gz
-#STAB2CV|http://www.bacula.org/depkgs-mingw32/stab2cv-0.1.tar.bz2
-#WX|http://www.bacula.org/depkgs-mingw32/wxWidgets-2.8.7.tar.gz
-ZLIB|http://www.bacula.org/depkgs-mingw32/zlib-1.2.3.tar.gz
-RSYNC|http://www.bacula.org/depkgs-mingw32/librsync-0.9.7.tar.gz
-#DB|http://www.bacula.org/depkgs-mingw32/db-4.7.25.tar.gz
-LZO|http://www.bacula.org/depkgs-mingw32/lzo-2.05.tar.gz
-
-# 
-# 
-# Original file locations
-# 
-# CDRTOOLS|ftp://ftp.berlios.de/pub/cdrecord/alpha/cdrtools-2.01.01a22.tar.bz2
-# CMD_UTILS|http://superb-west.dl.sourceforge.net/sourceforge/cmd-utils/cmd-utils-0.1.tar.gz
-# DVD_RW_TOOLS|http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-7.0.tar.gz
-# MKISOFS|http://fy.chalmers.se/~appro/linux/DVD+RW/tools/win32/mkisofs.exe
-# MT|http://www.ibiblio.org/pub/linux/system/backup/mt-st-0.9b.tar.gz
-# MTX|http://superb-west.dl.sourceforge.net/sourceforge/mtx/mtx-1.3.9.tar.gz
-# MYSQL|http://mirror.x10.com/mirror/mysql/Downloads/MySQL-5.0/mysql-noinstall-5.0.27-win32.zip|mysql-5.0.27-win32
-# NSIS_BIN|http://superb-west.dl.sourceforge.net/sourceforge/nsis/nsis-2.17.zip
-# NSIS_SRC|http://superb-west.dl.sourceforge.net/sourceforge/nsis/nsis-2.17-src.tar.bz2
-# OPENSSL|http://www.openssl.org/source/openssl-0.9.8b.tar.gz
-# PCRE|http://superb-west.dl.sourceforge.net/sourceforge/pcre/pcre-6.3.tar.bz2
-# POSTGRESQL|ftp://ftp2.us.postgresql.org/postgresql/source/v8.1.4/postgresql-base-8.1.4.tar.bz2|postgresql-8.1.4
-# PTHREADS|ftp://sources.redhat.com/pub/pthreads-win32/pthreads-snap-2004-06-22.tar.gz
-# Qt4|ftp://ftp.trolltech.com/qt/source/qt-win-opensource-src-4.3.0.zip
-# SCONS|http://superb-west.dl.sourceforge.net/sourceforge/scons/scons-0.96.92.tar.gz
-# SED|ftp://mirrors.kernel.org/gnu/sed/sed-4.1.5.tar.gz
-# SQLITE|http://www.sqlite.org/sqlite-3.3.8.tar.gz
-# SQLITE|http://www.sqlite.org/sqlite-3.3.17.tar.gz
-# STAB2CV|http://superb-west.dl.sourceforge.net/sourceforge/stab2cv/stab2cv-0.1.tar.bz2
-# WX|http://superb-west.dl.sourceforge.net/sourceforge/wxwindows/wxWidgets-2.7.0.tar.gz
-# ZLIB|http://www.zlib.net/zlib-1.2.3.tar.gz
-# DB|http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz
-# LZO|http://www.oberhumer.com/opensource/lzo/download/lzo-2.05.tar.gz
\ No newline at end of file
diff --git a/src/win32/External-mingw32 b/src/win32/External-mingw32
deleted file mode 100644
index 64ba8f7..0000000
--- a/src/win32/External-mingw32
+++ /dev/null
@@ -1,71 +0,0 @@
-# 
-# This file provides information about the External dependencies required by
-# Bacula.
-#  
-# There are four fields delimited by |.  Only the first two fields are 
-# required.  The other two are used when the top level directory of the
-# archive is not the same as the file name with any suffixes removed.
-# 
-# Field 1 is the name of the dependency.  It is used to define the
-# name of the three variables which are assigned the values of fields 2 to 4.
-# 
-# Field 2 is the URL of the archive.  It is assigned to the variable
-# URL_[field1].
-#  
-# Field 3 is the top directory of the archive or the name of a directory that
-# must be created and the archive extracted into it.  It is assigned to the 
-# variable DIR_[field1].
-# 
-# Field 4 indicates if the directory specified in field 3 must be created 
-# first and the archive extracted into it.  It is assigned to the variable
-# MKD_[field1]
-# 
-CMD_UTILS|http://www.bacula.org/depkgs-mingw32/cmd-utils-0.1.tar.gz
-DVD_RW_TOOLS|http://www.bacula.org/depkgs-mingw32/dvd+rw-tools-7.0.tar.gz
-MKISOFS|http://www.bacula.org/depkgs-mingw32/mkisofs.exe
-MT|http://www.bacula.org/depkgs-mingw32/mt-st-0.9b.tar.gz
-MTX|http://www.bacula.org/depkgs-mingw32/mtx-1.3.9.tar.gz
-MYSQL|http://www.bacula.org/depkgs-mingw32/mysql-noinstall-5.0.27-win32.zip|mysql-5.0.27-win32
-NSIS_BIN|http://www.bacula.org/depkgs-mingw32/nsis-2.17.zip
-NSIS_SRC|http://www.bacula.org/depkgs-mingw32/nsis-2.17-src.tar.bz2
-OPENSSL|http://www.bacula.org/depkgs-mingw32/openssl-0.9.8b.tar.gz
-PCRE|http://www.bacula.org/depkgs-mingw32/pcre-6.3.tar.bz2
-POSTGRESQL|http://www.bacula.org/depkgs-mingw32/postgresql-base-8.1.4.tar.bz2|postgresql-8.1.4
-PTHREADS|http://www.bacula.org/depkgs-mingw32/pthreads-snap-2004-06-22.tar.gz
-Qt4|http://www.bacula.org/depkgs-mingw32/qt4.3.4-win32-bin.tar.gz|qt4.3.4-win32-bin
-SCONS|http://www.bacula.org/depkgs-mingw32/scons-0.96.92.tar.gz
-SED|http://www.bacula.org/depkgs-mingw32/sed-4.1.5.tar.gz
-SQLITE|http://www.bacula.org/depkgs-mingw32/sqlite-3.3.17.tar.gz
-STAB2CV|http://www.bacula.org/depkgs-mingw32/stab2cv-0.1.tar.bz2
-WX|http://www.bacula.org/depkgs-mingw32/wxWidgets-2.8.7.tar.gz
-ZLIB|http://www.bacula.org/depkgs-mingw32/zlib-1.2.3.tar.gz
-RSYNC|http://www.bacula.org/depkgs-mingw32/librsync-0.9.7.tar.gz
-DB|http://www.bacula.org/depkgs-mingw32/db-4.7.25.tar.gz
-LZO|http://www.bacula.org/depkgs-mingw32/lzo-2.05.tar.gz
-# 
-# 
-# Original file locations
-# 
-# CDRTOOLS|ftp://ftp.berlios.de/pub/cdrecord/alpha/cdrtools-2.01.01a22.tar.bz2
-# CMD_UTILS|http://superb-west.dl.sourceforge.net/sourceforge/cmd-utils/cmd-utils-0.1.tar.gz
-# DVD_RW_TOOLS|http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-7.0.tar.gz
-# MKISOFS|http://fy.chalmers.se/~appro/linux/DVD+RW/tools/win32/mkisofs.exe
-# MT|http://www.ibiblio.org/pub/linux/system/backup/mt-st-0.9b.tar.gz
-# MTX|http://superb-west.dl.sourceforge.net/sourceforge/mtx/mtx-1.3.9.tar.gz
-# MYSQL|http://mirror.x10.com/mirror/mysql/Downloads/MySQL-5.0/mysql-noinstall-5.0.27-win32.zip|mysql-5.0.27-win32
-# NSIS_BIN|http://superb-west.dl.sourceforge.net/sourceforge/nsis/nsis-2.17.zip
-# NSIS_SRC|http://superb-west.dl.sourceforge.net/sourceforge/nsis/nsis-2.17-src.tar.bz2
-# OPENSSL|http://www.openssl.org/source/openssl-0.9.8b.tar.gz
-# PCRE|http://superb-west.dl.sourceforge.net/sourceforge/pcre/pcre-6.3.tar.bz2
-# POSTGRESQL|ftp://ftp2.us.postgresql.org/postgresql/source/v8.1.4/postgresql-base-8.1.4.tar.bz2|postgresql-8.1.4
-# PTHREADS|ftp://sources.redhat.com/pub/pthreads-win32/pthreads-snap-2004-06-22.tar.gz
-# Qt4|ftp://ftp.trolltech.com/qt/source/qt-win-opensource-src-4.3.0.zip
-# SCONS|http://superb-west.dl.sourceforge.net/sourceforge/scons/scons-0.96.92.tar.gz
-# SED|ftp://mirrors.kernel.org/gnu/sed/sed-4.1.5.tar.gz
-# SQLITE|http://www.sqlite.org/sqlite-3.3.8.tar.gz
-# SQLITE|http://www.sqlite.org/sqlite-3.3.17.tar.gz
-# STAB2CV|http://superb-west.dl.sourceforge.net/sourceforge/stab2cv/stab2cv-0.1.tar.bz2
-# WX|http://superb-west.dl.sourceforge.net/sourceforge/wxwindows/wxWidgets-2.7.0.tar.gz
-# ZLIB|http://www.zlib.net/zlib-1.2.3.tar.gz
-# DB|http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz
-# LZO|http://www.oberhumer.com/opensource/lzo/download/lzo-2.05.tar.gz
\ No newline at end of file
diff --git a/src/win32/External-msvc b/src/win32/External-msvc
deleted file mode 100644
index 8808128..0000000
--- a/src/win32/External-msvc
+++ /dev/null
@@ -1,59 +0,0 @@
-# This file provides information about the External dependencies required by
-# Bacula.
-#
-# There are four fields delimited by |.  Only the first two fields are 
-# required.  The other two are used when the top level directory of the
-# archive is not the same as the file name with any suffixes removed.
-#
-# Field 1 is the name of the dependency.  It is used to define the
-# name of the three variables which are assigned the values of fields 2 to 4.
-#
-# Field 2 is the URL of the archive.  It is assigned to the variable
-# URL_[field1].
-#
-# Field 3 is the top directory of the archive or the name of a directory that
-# must be created and the archive extracted into it.  It is assigned to the 
-# variable DIR_[field1].
-#
-# Field 4 indicates if the directory specified in field 3 must be created 
-# first and the archive extracted into it.  It is assigned to the variable
-# MKD_[field1]
-#
-#
-CMD_UTILS|http://www.bacula.org/depkgs-mingw32/cmd-utils-0.1.tar.gz
-DVD_RW_TOOLS|http://www.bacula.org/depkgs-mingw32/dvd+rw-tools-7.0.tar.gz
-MKISOFS|http://www.bacula.org/depkgs-mingw32/mkisofs.exe
-MT|http://www.bacula.org/depkgs-mingw32/mt-st-0.9b.tar.gz
-MTX|http://www.bacula.org/depkgs-mingw32/mtx-1.3.9.tar.gz
-MYSQL|http://www.bacula.org/depkgs-mingw32/mysql-noinstall-5.0.27-win32.zip|mysql-5.0.27-win32
-NSIS_BIN|http://www.bacula.org/depkgs-mingw32/nsis-2.17.zip
-OPENSSL|http://www.bacula.org/depkgs-mingw32/openssl-0.9.8b.tar.gz
-PCRE|http://www.bacula.org/depkgs-mingw32/pcre-6.3.tar.bz2
-POSTGRESQL|http://www.bacula.org/depkgs-mingw32/postgresql-8.1.9-1-binaries-no-installer.zip|pgsql
-POSTGRESQL_SRC|http://www.bacula.org/depkgs-mingw32/postgresql-8.1.9.tar.bz2
-PTHREADS|http://www.bacula.org/depkgs-mingw32/pthreads-2004-06-22x.exe|pthreads-2004-06-22x|true
-SED|http://www.bacula.org/depkgs-mingw32/sed-4.1.5.tar.gz
-SQLITE|http://www.bacula.org/depkgs-mingw32/sqlite-3.3.17.tar.gz
-WX|http://www.bacula.org/depkgs-mingw32/wxWidgets-2.7.0.zip
-ZLIB|http://www.bacula.org/depkgs-mingw32/zlib123.zip|zlib123|true
-#
-#
-# Original locations
-#
-# ZLIB|http://www.zlib.net/zlib123.zip|zlib123|true
-# PCRE|http://superb-west.dl.sourceforge.net/sourceforge/pcre/pcre-6.3.tar.bz2
-# PTHREADS|ftp://sources.redhat.com/pub/pthreads-win32/pthreads-2004-06-22x.exe|pthreads-2004-06-22x|true
-# OPENSSL|http://www.openssl.org/source/openssl-0.9.8b.tar.gz
-# MYSQL|http://mirror.x10.com/mirror/mysql/Downloads/MySQL-5.0/mysql-noinstall-5.0.27-win32.zip|mysql-5.0.27-win32
-# POSTGRESQL|ftp://ftp2.us.postgresql.org/postgresql/binary/v8.1.6/win32/postgresql-8.1.6-1-binaries-no-installer.zip|pgsql
-# POSTGRESQL_SRC|ftp://ftp4.us.postgresql.org/pub/postgresql/source/v8.1.6/postgresql-8.1.6.tar.bz2
-# SQLITE|http://www.sqlite.org/sqlite-3.3.8.tar.gz
-# WX|http://superb-west.dl.sourceforge.net/sourceforge/wxwindows/wxWidgets-2.7.0.zip
-# NSIS_BIN|http://superb-west.dl.sourceforge.net/sourceforge/nsis/nsis-2.17.zip
-# MTX|http://superb-west.dl.sourceforge.net/sourceforge/mtx/mtx-1.3.9.tar.gz
-# MT|ftp://ftp.ibiblio.org/pub/linux/system/backup/mt-st-0.9b.tar.gz
-# SED|ftp://mirrors.kernel.org/gnu/sed/sed-4.1.5.tar.gz
-# CMD_UTILS|http://superb-west.dl.sourceforge.net/sourceforge/cmd-utils/cmd-utils-0.1.tar.gz
-# #CDRTOOLS|ftp://ftp.berlios.de/pub/cdrecord/alpha/cdrtools-2.01.01a22.tar.bz2
-# MKISOFS|http://fy.chalmers.se/~appro/linux/DVD+RW/tools/win32/mkisofs.exe
-# DVD_RW_TOOLS|http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-7.0.tar.gz
diff --git a/src/win32/Makefile b/src/win32/Makefile
deleted file mode 100644
index 01809c9..0000000
--- a/src/win32/Makefile
+++ /dev/null
@@ -1,127 +0,0 @@
-#
-#  Makefile for Win32/Win64 Bacula File daemon
-#
-#  If called make win64=yes the Win64 version will be built
-#     otherwise the Win32 version will be built.
-#
-#  If called with bat=no, bat will not be built, otherwise it will be
-#     built.
-#
-
-ECHO_CMD=@
-
-WIN32_DIRS=lib filed filed/plugins console scripts
-
-WIN64_DIRS=lib filed filed/plugins console scripts
-
-ifeq ($(win64),yes)
-	 DIRS=$(WIN64_DIRS)
-	 INSTALLER=win64_installer
-	 SPECIAL=bsmtp
-else
-	 DIRS=$(WIN32_DIRS)
-	 INSTALLER=win32_installer
-	 SPECIAL=bat bsmtp
-endif
-
-ifeq ($(bat),no)
-	 SPECIAL=bsmtp
-endif	     
-
-.PHONY: $(DIRS) clean all Makefile.inc win32_installer full_win32_installer \
-	 win64_installer bsmtp
-
-all: Makefile.inc $(DIRS) $(SPECIAL) $(INSTALLER)
-
-clean: $(DIRS) win32_installer win64_installer
-	$(MAKE) -C tools clean
-	$(ECHO_CMD)-rm -rf release32 release64 ../qt-console/obj32 ../cats/obj32 ../wx-console/obj32
-	$(ECHO_CMD)-rm -rf stored/obj32 dird/obj32 cats/obj32 wx-console/obj32
-	$(ECHO_CMD)-rm -f ../qt-console/release/bat.exe ../qt-console/debug/bat.exe
-	$(ECHO_CMD)-rm -f ../qt-console/tray-monitor/release/bacula-tray-monitor.exe ../qt-console/tray-monitor/debug/bacula-tray-monitor.exe
-
-bat:
-	(cd ../qt-console; ./make-win32)
-
-full_win32_installer:
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C $@ $(MAKECMDGOALS); then \
-		echo "\n===== Make of $@ succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of $@ failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-win32_installer:
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C $@ $(MAKECMDGOALS); then \
-		echo "\n===== Make of $@ succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of $@ failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-win64_installer:
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C $@ $(MAKECMDGOALS); then \
-		echo "\n===== Make of $@ succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of $@ failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-
-$(DIRS):
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C $@ $(MAKECMDGOALS); then \
-		echo "\n===== Make of $@ succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of $@ failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-bsmtp:
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C tools bsmtp $(MAKECMDGOALS); then \
-		echo "\n===== Make of tools/bsmtp succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of tools/bsmtp failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-
-
-Makefile.inc:
-	@echo Creating $@
-	$(ECHO_CMD)TOPDIR=`(cd ../../..;pwd)`; \
-	TOPDIR=$${DEPKGS:-$${TOPDIR}}; \
-	if test "$(win64)" = yes -a -e $${TOPDIR}/cross-tools/mingw-w64/bin/x86_64-pc-mingw32-gcc; then \
-		BINDIR=$${TOPDIR}/cross-tools/mingw-w64/bin; \
-		INCDIR=$${TOPDIR}/cross-tools/mingw-w64/x86_64-pc-mingw32/include; \
-		DLLDIR=$${TOPDIR}/cross-tools/mingw-w64/x86_64-pc-mingw32/bin; \
-		DEPKGSDIR=depkgs-mingw-w64; \
-		DEPKGSDIR32=depkgs-mingw32; \
-	elif test -e $${TOPDIR}/cross-tools/mingw32/bin/mingw32-gcc; then \
-		BINDIR=$${TOPDIR}/cross-tools/mingw32/bin; \
-		INCDIR=$${TOPDIR}/cross-tools/mingw32/mingw32/include; \
-		DLLDIR=$${TOPDIR}/cross-tools/mingw32/mingw32/bin; \
-		DEPKGSDIR=depkgs-mingw32; \
-		DEPKGSDIR32=depkgs-mingw32; \
-	else \
-		echo "\nThe GCC cross compiler isn't installed."; \
-		echo "You must run build-win32-cross-tools and build-dependencies first.\n"; \
-		exit 1; \
-	fi ; \
-	BUILDDIR=`(pwd)`; \
-	MAINDIR=`(cd ../..;pwd)`; \
-	sed \
-		-e "s^@WIN64@^$${win64}^" \
-		-e "s^@BAT@^$${bat}^" \
-		-e "s^@WIN32DEPKGS@^$${DEPKGSDIR}^" \
-		-e "s^@WIN32DEPKGS32@^$${DEPKGSDIR32}^" \
-		-e "s^@WIN32BUILDDIR@^$${BUILDDIR}^" \
-		-e "s^@WIN32MAINDIR@^$${MAINDIR}^" \
-		-e "s^@WIN32TOPDIR@^$${TOPDIR}^" \
-		-e "s^@WIN32BINDIR@^$${BINDIR}^" \
-		-e "s^@WIN32INCDIR@^$${INCDIR}^" \
-		-e "s^@WIN32DLLDIR@^$${DLLDIR}^" < Makefile.inc.in > $@
diff --git a/src/win32/Makefile.full b/src/win32/Makefile.full
deleted file mode 100644
index 3e9a3e3..0000000
--- a/src/win32/Makefile.full
+++ /dev/null
@@ -1,109 +0,0 @@
-ECHO_CMD=@
-
-WIN32_DIRS=lib cats filed filed/plugins dird stored \
-	 console wx-console tools scripts
-
-WIN64_DIRS=lib filed filed/plugins console scripts
-
-ifeq ($(WIN64),yes)
-	 DIRS=$(WIN64_DIRS)
-	 INSTALLER=win64_installer
-	 SPECIAL=bsmtp
-else
-	 DIRS=$(WIN32_DIRS)
-	 INSTALLER=win32_installer
-	 SPECIAL=bat
-endif
-
-.PHONY: $(DIRS) clean all Makefile.inc win32_installer full_win32_installer \
-	 win64_installer bsmtp
-
-all: Makefile.inc $(DIRS) $(SPECIAL) $(INSTALLER)
-
-clean: $(DIRS) win32_installer win64_installer
-	$(ECHO_CMD)-rm -rf release32 release64
-
-bat:
-	(cd ../qt-console; ./make-win32)
-
-full_win32_installer:
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C $@ $(MAKECMDGOALS); then \
-		echo "\n===== Make of $@ succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of $@ failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-win32_installer:
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C $@ $(MAKECMDGOALS); then \
-		echo "\n===== Make of $@ succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of $@ failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-win64_installer:
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C $@ $(MAKECMDGOALS); then \
-		echo "\n===== Make of $@ succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of $@ failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-
-$(DIRS):
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C $@ $(MAKECMDGOALS); then \
-		echo "\n===== Make of $@ succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of $@ failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-bsmtp:
-	@if test -f Makefile.inc; then \
-	   if $(MAKE) -C tools bsmtp $(MAKECMDGOALS); then \
-		echo "\n===== Make of tools/bsmtp succeeded =====\n\n" ; \
-	   else  \
-		echo "\n!!!!! Make of tools/bsmtp failed !!!!!\n\n" ; exit 1; \
-	   fi ; \
-	fi
-
-
-
-Makefile.inc:
-	@echo Creating $@
-	$(ECHO_CMD)TOPDIR=`(cd ../../..;pwd)`; \
-	TOPDIR=$${DEPKGS:-$${TOPDIR}}; \
-	if test "$(WIN64)" = yes -a -e $${TOPDIR}/cross-tools/mingw-w64/bin/x86_64-pc-mingw32-gcc; then \
-		BINDIR=$${TOPDIR}/cross-tools/mingw-w64/bin; \
-		INCDIR=$${TOPDIR}/cross-tools/mingw-w64/x86_64-pc-mingw32/include; \
-		DLLDIR=$${TOPDIR}/cross-tools/mingw-w64/x86_64-pc-mingw32/bin; \
-		DEPKGSDIR=depkgs-mingw-w64; \
-		DEPKGSDIR32=depkgs-mingw32; \
-	elif test -e $${TOPDIR}/cross-tools/mingw32/bin/mingw32-gcc; then \
-		BINDIR=$${TOPDIR}/cross-tools/mingw32/bin; \
-		INCDIR=$${TOPDIR}/cross-tools/mingw32/mingw32/include; \
-		DLLDIR=$${TOPDIR}/cross-tools/mingw32/mingw32/bin; \
-		DEPKGSDIR=depkgs-mingw32; \
-		DEPKGSDIR32=depkgs-mingw32; \
-	else \
-		echo "\nThe GCC cross compiler isn't installed."; \
-		echo "You must run build-win32-cross-tools and build-dependencies first.\n"; \
-		exit 1; \
-	fi ; \
-	BUILDDIR=`(pwd)`; \
-	MAINDIR=`(cd ../..;pwd)`; \
-	sed \
-		-e "s^@WIN64@^$${WIN64}^" \
-		-e "s^@WIN32DEPKGS@^$${DEPKGSDIR}^" \
-		-e "s^@WIN32DEPKGS32@^$${DEPKGSDIR32}^" \
-		-e "s^@WIN32BUILDDIR@^$${BUILDDIR}^" \
-		-e "s^@WIN32MAINDIR@^$${MAINDIR}^" \
-		-e "s^@WIN32TOPDIR@^$${TOPDIR}^" \
-		-e "s^@WIN32BINDIR@^$${BINDIR}^" \
-		-e "s^@WIN32INCDIR@^$${INCDIR}^" \
-		-e "s^@WIN32DLLDIR@^$${DLLDIR}^" < Makefile.inc.in > $@
diff --git a/src/win32/Makefile.inc.in b/src/win32/Makefile.inc.in
deleted file mode 100644
index c0e5f9b..0000000
--- a/src/win32/Makefile.inc.in
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-#  Absolute paths used in place of relative paths
-#      Kern Sibbald, October 2008
-#   Split Win32 and Win64 objects and binaries. However
-#     the clean is a significant kludge -- hard coded.
-#     The object directories are deleted during make clean,
-#     so don't point them to any source directory.
-#
-
-# Global Configuration
-
-ECHO_CMD = @
-
-# Main Bacula source dir
-MAINDIR := @WIN32MAINDIR@
-#
-# Build dir -- i.e. normally  src/win32
-BUILDDIR := @WIN32BUILDDIR@
-#
-# Dir above Bacula where we find depkgs
-TOPDIR := @WIN32TOPDIR@
-#
-# where we find depkgs
-DEPKGS := $(TOPDIR)/@WIN32DEPKGS@
-DEPKGS32 := $(TOPDIR)/@WIN32DEPKGS32@
-
-DOCDIR := $(TOPDIR)/docs
-
-MINGW_BIN := @WIN32BINDIR@
-MINGW_INCLUDE := @WIN32INCDIR@
-MINGW_DLLDIR := @WIN32DLLDIR@
-
-CC = $(MINGW_BIN)/mingw32-g++ $(DEFINES) $(INCLUDES)
-CXX = $(MINGW_BIN)/mingw32-g++ $(DEFINES) $(INCLUDES)
-AR := $(MINGW_BIN)/mingw32-ar
-RANLIB := $(MINGW_BIN)/mingw32-ranlib
-WINDRES := $(MINGW_BIN)/mingw32-windres
-DLLTOOL := $(MINGW_BIN)/mingw32-dlltool
-OBJCPY := $(MINGW_BIN)/mingw32-objcopy
-NSIS_DIR := $(DEPKGS32)/nsis
-STAB2CV := $(DEPKGS32)/tools/bin/stab2cv
-
-WIN64=@WIN64@
-
-ifeq ($(WIN64),yes)
-   CFLAGS := -g -Wall -mno-cygwin -mthreads -O3 -fno-strict-aliasing -DHAVE_VSS64 -Wno-unknown-pragmas
-   LIBS_NETWORK := -lws2_32
-   WIN_VERSION := 64
-   BINDIR := $(BUILDDIR)/release64
-   LIBDIR := $(BUILDDIR)/release64
-   OBJDIR := obj64
-else
-   CFLAGS := -g -Wall -mno-cygwin -m32 -mwin32 -mthreads -O3 -fno-strict-aliasing -Wno-unknown-pragmas
-   LIBS_NETWORK := -lwsock32
-   WIN_VERSION := 32
-   BINDIR := $(BUILDDIR)/release32
-   LIBDIR := $(BUILDDIR)/release32
-   OBJDIR := obj32
-endif
-
-bat=@BAT@
-
-ifeq ($(bat),no)
-   BUILD_BAT=no
-else
-   BUILD_BAT=yes
-endif
-
-OBJDIRS := obj32 obj64
-
-LDFLAGS := -g -Wall -mno-cygwin -Wl,--disable-auto-import
-
-INCLUDE_DDK := -I$(MINGW_INCLUDE)/ddk
-INCLUDE_BACULA := -I$(MAINDIR)/src -I$(BUILDDIR)/compat
-INCLUDE_PTHREADS := -I$(DEPKGS)/include/pthreads
-INCLUDE_ZLIB := -I$(DEPKGS)/include
-INCLUDE_VSS := -I$(DEPKGS)/vss
-INCLUDE_ICONS := -I../libwin32
-INCLUDE_OPENSSL := -I$(DEPKGS)/include
-INCLUDE_WX := -I$(DEPKGS)/lib/wx_dll/msw -I$(DEPKGS)/include
-INCLUDE_MYSQL := -I$(DEPKGS)/include/mysql
-
-LIBS_DB := \
-        $(DEPKGS)/lib/libdb.a
-
-LIBS_PTHREADS := \
-        $(DEPKGS)/lib/libpthreadGCE.a
-
-LIBS_ZLIB := \
-        $(DEPKGS)/lib/libz.a
-
-LIBS_MYSQL := \
-        $(DEPKGS)/lib/libmysql.a
-
-LIBS_POSTGRESQL := \
-        $(DEPKGS)/lib/libpq.a
-
-LIBS_SQLITE := \
-        $(DEPKGS)/lib/libsqlite3.a
-
-LIBS_SSL := \
-        $(DEPKGS)/lib/libssl.dll.a
-
-LIBS_CRYPTO := \
-        $(DEPKGS)/lib/libcrypto.dll.a
-
-LIBS_WX := \
-        $(DEPKGS)/lib/wx_dll/libwxmsw28_core.a \
-        $(DEPKGS)/lib/wx_dll/libwxbase28.a
-
-LIBS_CATS := \
-        $(LIBDIR)/libcats.a
-
-LIBS_BACULA := \
-        $(LIBDIR)/libbacula.a
-
-HAVES := \
-        -DHAVE_WIN32 \
-        -DHAVE_MINGW \
-        -DHAVE_ZLIB_H \
-        -DHAVE_LIBZ \
-        -DHAVE_CRYPTO \
-        -DHAVE_OPENSSL \
-        -DHAVE_TLS
diff --git a/src/win32/Makefile.rules b/src/win32/Makefile.rules
deleted file mode 100644
index 9e2adc7..0000000
--- a/src/win32/Makefile.rules
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-define clean_obj
-	$(ECHO_CMD)rm -f $(1) $(patsubst %.o,%.d,$(filter-out %.res,$(1)))
-	$(ECHO_CMD)rm -f $(1) $(addsuffix .d.*,$(basename $(1)))
-endef
-
-define clean_exe
-	$(ECHO_CMD)rm -f $(1) $(addsuffix .dbg,$(basename $(1)))
-endef
-
-define checkdir
-	@if [ ! -e $(dir $(1)) ]; then mkdir -p $(dir $(1)); fi
-endef
-
-define makedep
-	@echo "Generating dependencies for $<"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) -MM $(CPPFLAGS) $< > $@.$$$$; \
-	sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
-	rm -f $@.$$$$
-endef
-
-define link_conapp
-	@echo "Linking $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) $(CFLAGS) $(LDFLAGS) -mconsole $^ $(1) -o $@
-endef
-
-define link_winapp
-	@echo "Linking $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) $(CFLAGS) $(LDFLAGS) -mwindows $^ $(1) -o $@
-endef
-
-define makedbg
-	@echo "Stripping debug info from $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(OBJCPY) --only-keep-debug $@ $(addsuffix .dbg,$(basename $@)) ; \
-	$(OBJCPY) --strip-debug $@ ; \
-	$(OBJCPY) --add-gnu-debuglink=$(addsuffix .dbg,$(basename $@)) $@
-endef
-
-$(OBJDIR)/%.o: %.c
-	@echo "Compiling $<"
-	$(call checkdir, $@)
-	$(ECHO_CMD)$(CXX) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/%.o: %.cpp
-	@echo "Compiling $<"
-	$(call checkdir, $@)
-	$(ECHO_CMD)$(CXX) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/%.res: %.rc
-	@echo "Compiling $<"
-	$(call checkdir, $@)
-	$(ECHO_CMD)$(WINDRES) -O coff $< -o $@
-
-$(OBJDIR)/%.d: %.c
-	$(call checkdir, $@)
-	$(makedep)
-
-$(OBJDIR)/%.d: %.cpp
-	$(call checkdir, $@)
-	$(makedep)
-
-ifneq ($(ALL_OBJS),)
-ifneq ($(MAKECMDGOALS),clean)
-include $(patsubst %.o,%.d,$(filter-out %.res,$(ALL_OBJS)))
-endif
-endif
diff --git a/src/win32/Makefile.template b/src/win32/Makefile.template
deleted file mode 100644
index c542045..0000000
--- a/src/win32/Makefile.template
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-include ../Makefile.inc
-
-INCLUDES = \
-	$(INCLUDE_DDK) \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_ZLIB) \
-	$(INCLUDE_VSS) \
-	$(INCLUDE_ICONS) \
-	$(INCLUDE_OPENSSL)
-
-DEFINES = \
-	-DUSING_DLL \
-	$(HAVES)
-
-# Replace MODULE with the directory in the main Bacula tree containing the source
-VPATH = $(MAINDIR)
-
-##########################################################################
-
-MODULE1_OBJS = \
-	$(OBJDIR)/object1.o \
-	$(OBJDIR)/object2.o \
-	$(OBJDIR)/objectN.o
-
-MODULE1_LIBS = \
-	$(LIBS_PTHREADS) \
-	-lwsock32
-
-MODULE2_OBJS = \
-	$(OBJDIR)/object3.o \
-	$(OBJDIR)/object4.o \
-	$(OBJDIR)/objectN.o
-
-MODULE2_LIBS = \
-	$(LIBS_PTHREADS) \
-	-lwsock32
-
-ALL_OBJS = \
-	OBJS_MODULE1 \
-	OBJS_MODULE2
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all:	$(BINDIR)/MODULE1.exe $(BINDIR)/MODULE2.exe
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(call clean_obj,$(ALL_OBJS))
-	$(call clean_exe,$(BINDIR)/MODULE1.exe)
-	$(call clean_exe,$(BINDIR)/MODULE2.exe)
-
-#
-# Rules
-#
-
-$(BINDIR)/MODULE1.exe: $(SDOBJS) $(MODULE1_OBJS) $(LIBS_BACULA)
-	$(call link_winapp,$(MODULE1_LIBS))
-
-$(BINDIR)/MODULE2.exe: $(SDOBJS) $(MODULE2_OBJS) $(LIBS_BACULA)
-	$(call link_conapp,$(MODULE1_LIBS))
-
-include ../Makefile.rules
diff --git a/src/win32/README.mingw b/src/win32/README.mingw
deleted file mode 100644
index 3e39f2e..0000000
--- a/src/win32/README.mingw
+++ /dev/null
@@ -1,349 +0,0 @@
-
-Instructions for cross compiling the Win32/64 FD on Linux
-=======================================================
-
-This file documents the tools (scripts) we use for building Bacula for
-Microsoft Windows using the cross-compiler tools on a Linux system.  We
-use Ubuntu 8.04 so building on that system should definitely work.  But there
-shouldn't be any issues on other Linux distributions.
-
-We don't officially support this method, but it is what we use, and it should
-build on any Linux machine if you carefully follow the instructions and have
-all the prerequisite programs loaded on your machine.
-
-We expect that there may be problems on systems other than Linux where you
-are pretty much on your own.  However, we will try to provide responses to
-your questions on the bacula-devel list, but we can't guarantee anything.
-
-Note: the environment variable DEPKGS must point to a directory that
-contains: depkgs-mingw32 depkgs-mingw-w64 and cross-tools
-
-Directory Structure
-=====================
-The new directory structure is:
-
- xxx  (any directory)
-    bacula                   Top level Bacula source directory -- any name
-      src
-        win32                Main directory where Windows version is built.
-
-    docs                     Top level Bacula documentation directory
-
- yyy (any directory, but pointed to by the DEPKGS environment variable)
-    depkgs-mingw32 (MinGW32) 3rd Party Dependencies for MinGW32 build
-      bin              --    NOTE!  depkgs-msvc is no longer suppored
-      include            |
-      lib                |
-      man                |   Created by script
-      nsis               |-- .../bacula/src/win32/build-depkgs-mingw32
-      scons              |
-      share              |
-      src                |
-      ssl              --
-      vss
-        inc                  A copy of the Windows VSS/inc directory
-
-
-    depkgs-mingw-w64 (MinGW64) 3rd Party Dependencies for MinGW64 build
-      bin              --
-      include            |
-      lib                |
-      man                |
-      nsis               |
-      scons              |
-      share              |
-      src                |
-      ssl              --
-      vss
-        inc                  A copy of the Windows VSS/inc directory
-
-    cross-tools (MinGW64/32)  Cross compilation tools (gcc, g++, mingw32, ...)
-      binutils-mingw32 --
-      gcc-mingw32        |   Created by script
-      mingw32            |-- .../bacula/src/win32/build-win32-cross-tools
-      mingw-utils        |
-      source           --
-      mingw-w64/x86_64-pc-mingw32  \ Taken from http://sf.net/projects/mingw-w64
-      mingw-w64/bin/               / 
-
-
-
-One-time Setup
-==============
-
-If you're reading this file you've probably already cloned the GIT source tree or
-extracted the contents of the source tar. If not you need to do that first.
-
-You also need to download one of the doc tar balls and extract to your
-top level Bacula directory. For the moment, the 3.0.2 version of the 
-installer requires doc files in the old 2.4.4 format.
-
-The extracted doc directory name will be bacula-docs-version where version
-is the version number.  The directory must be renamed to docs (ie remove
-the leading bacula- and the -version portion of the name).
-
-An alternative to setting up the old documents that are needed by the Win32
-installer, you may comment out the following lines in 
-src/win32/win32_installer/Makefile:
-
-#DOC_FILES := \
-#       manual/bacula.pdf \
-#       manual/bacula/*.html \
-#       manual/bacula/*.png  \
-#       manual/bacula/*.css
-
-Note, a number of packages must be installed to build the cross-tools
-and the depkgs files.  Most are rather standard such as gcc, g++,
-make, ...  However a few that you may not have are:
-
-  wget
-  texinfo
-  flex
-  bison
-  patch (Debian)
-  m4
-  postgresql (at least client)
-  mysql (at least client)
-  SQLite3 (from depkgs or as package)
-  readline (readlineN-dev on Debian)
-  ...
-
-NB: On Debian, I had to remove /usr/bin/lorder for
-postresql to build correctly.
-
-Build the 32 bit cross-tools and mingw32:
-
-Once the source is on your system, change to the win32 directory
-        cd .../bacula/src/win32
-
-Download and build the cross compiler tools
-        ./build-win32-cross-tools
-
-Download and build the 3rd party dependencies
-        ./build-depkgs-mingw32
-
-Note, that during the build process you will see a moderate amount of
-output and some warnings.  If something more serious happens
-and the build fails, it is probably because you don't have one
-of the build dependencies (hopefully all mentioned above) loaded on your  
-system. To find out what is going wrong, do the following:
-
-  cd .../depkgs-mingw32/src/<package-name>
-   
-where <package-name> is where the package is unpacked and built. Normally
-it is relatively obvious when looking at the src directory.             
-
-In that directory, you should find a make.log, which has the full details
-of the compiles, links, and installs done for that package.
-
-===
-Building the 64 bit cross-tools and mingw64:
-
-When building the mingw64 environment and all dependencies
-(cross-tools, and depkgs-mingw64) should be compiled by hand with
-host=x86_64-pc-linux and target=x86_64-pc-mingw32.  
-
-For that, use this configure line :
-./configure --host=x86_64-pc-linux --target=x86_64-pc-mingw32 --prefix=$ROOT/cross-tools
-or
-./configure --host=x86_64-pc-linux --target=x86_64-pc-mingw32 --prefix=$ROOT/depkgs-mingw64
-
-(It can work with other setup). We are using binutils-2.19, gcc-4.3.2,
-gmp-4.2.4, mpfr-2.3.2. The mingw64 project delivers binaries that should do the
-work.
-
-The Win64 internal scripts and patches use the  mingw32-xxx binaries, so you need to
-make links in the gcc bin ($ROOT/cross-tools/mingw-w64/bin) directory.
-
----8<------8<-------8<--------
-
-for i in x86_64-pc-mingw32-*
-do
-    ln -s $i ${i##x86_64-pc-}
-done
-
----8<------8<-------8<--------
-
-They provide also a pthread lib but we aren't sure that they will work, you
-can compile it yourself using the pthreads-snap-2004-06-22.tar.gz (same as
-mingw32) + pthread-win64.patch.
-
-The openssl lib version is openssl-0.9.8j.tar.gz + openssl-win64.patch
-
-See External-mingw-w64 for download location (available on www.bacula.org).
-
-You need the header files from the Microsoft VSS SDK.  Unfortunately the SDK
-can only be downloaded and installed on a Windows system.  We do not have
-the right to distribute it, so you must download it yourself.
-You can find it on Microsoft's web-site at:
-
-http://www.microsoft.com/downloads/details.aspx?FamilyID=0b4f56e4-0ccc-4626-826a-ed2c4c95c871&DisplayLang=en
-
-If that link doesn't work then go to http://www.microsoft.com and search for
-
-        "download volume shadow copy service sdk"
-
-we are currently using version 7.2 released 8/3/2005 (a bit old, but it 
-works).
-
-Normally the files will be installed in:
-
-        c:\Program Files\Microsoft\VSSSDK72
-
-You only need to copy everything under the c:\Program Files\Microsoft\VSSSDK72\inc
-directory into .../depkgs-mingw32/vss/inc. and .../depkgs-mingw-w64/vss/inc 
-In doing so, please ensure that
-the case in maintained on the directory and filenames -- some contain uppercase 
-characters !!!
-
-The above only needs to be done once unless we change the cross-tools
-or the dependencies versions.  In general, you can run the script multiple
-times with no problem.  For it to work, you must have at a minimum the
-following:
-
-        gcc
-        g++
-        patch
-        wget
-        texinfo
-        bison
-        flex
-        python
-        unzip
-        tar
-
-and possibly other packages.
-
-
-Building
-========
-
-Finally, to build the Microsoft Windows version of Bacula, do the following:
-
-   cd .../bacula/src/win32
-   make clean
-   ./makeall
-
-or
-  cd .../bacula/src/win32
-  make clean
-  make
-  make WIN64=yes
-
-This builds both the 32 bit version and the 64 bit version.
-The binaries are in the release32 and release64 directories.
-
-
-
-Updating the 3rd party package patches
-======================================
-
-If one of the patches changes in .../bacula/src/win32/patches, you will
-need to update the corresponding dependency.
-
-Adding a new global function or global data
-===========================================
-
-bacula.dll
-----------
-
-The code from the following directories is built into bacula.dll:
-
-   .../bacula/src/lib
-   .../bacula/src/libfind
-   .../bacula/src/win32/compat
-
-A new function or data variable which must be accessed from outside
-of bacula.dll requires special treatment.  It must be specifically
-exported.
-
-New data variables are exported by adding the macro DLL_IMP_EXP to
-the variable declaration in the header file.  All exported variables
-must be declared in a header file and MUST NOT be declared in a
-source file referencing the variable. Example, src/lib/runscript.h:
-
-extern DLL_IMP_EXP bool (*console_command)(JCR *jcr, const char *cmd);
-
-or src/jcr.h
-
-extern int DLL_IMP_EXP num_jobs_run;
-extern DLL_IMP_EXP dlist * last_jobs;
-...
-
-
-Exporting functions is now more or less automated.  If you find that
-a function name has been added, changed, or an argument modified,    
-simply do the following:
-
-   cd .../bacula/src/win32/lib
-   make                  (to build the .o files, note the link will fail)
-   ./make_def >bacula64.def   or >bacula64.def
-
-This should rebuild the bacula.def file, but it uses relative paths
-and assumes you have the directory structure noted above. If you 
-are using something different, you can set the NM variable at the
-top of the make_def file to use an absolute path to the correct
-directory.
-
-===== manual changing of bacula32.def or bacula64.def no longer necessary =====
-If you want to do it manually, please see below:
-Exporting a function requires a bit more work.  You must determine the
-C++ mangled name of the new function.
-
-   strings .../bacula/src/win32/lib/<file>.o | grep <symbol>
-
-Note, strings often will not show the desired symbol. In that case,
-use:
-   
-   nm .../bacula/src/win32/lib/<file>.o
-
-Replace <file> with the base part of the name of the source code file
-which contains the new function.  Replace <symbol> with the name of
-the new function.  Remove the leading underscore and place the result
-in the file
-
-   .../bacula/src/win32/lib/bacula64.def
-=== end manual changing of bacula64.def ==========
-
-If you add a new file, you will need to specify its name in
-
-   .../bacula/src/win32/lib/Makefile
-and
-   .../bacula/src/win32/libbac/Makefile
-
-
-Running gdb on the Win32 files
-==================================================
-You can use the mingw64 gdb to debug Bacula on Win64 by downloading
-it from Source Forge:
-
-http://sourceforge.net/project/showfiles.php?group_id=202880&package_id=311650
-
-
-Download one of their .exe versions, which is an installer that you
-can run on Win32 to install gdb.  This gdb is built with mingw64 so will
-run independently of any cygwin installation.  Note, not all the releases
-come with an installer. I had to go back 3 or 4 versions to find it.  Otherwise
-you can download the source and build it.  Thanks to Eric Bollengier for
-this tip.
-
-
-Structure of the MinGW64/32 build environment
-==========================================
-
-The basic strategy is each Makefile in the various subdirectories includes
-Makefile.inc, defines variables and rules specific to what is being built,
-then includes Makefile.rules which defines all the rules.
-
-Makefile.inc defines the locations of all the dependencies and the compiler
-and linker flags.  It is automatically created from Makefile.inc.in.  Any
-changes must be made to Makefile.inc.in not Makefile.inc or they will be
-overwritten the next time Makefile.inc.in is updated.
-
-Makefile.rules defines a bunch of macros to simplify building.  It also
-includes all the basic rules for building objects, GUI and console
-executables, etc.
-
-Makefile.template is a template for creating new Makefiles, if you are
-creating a new directory, copy Makefile.template to Makefile in that
-directory and edit to suit.
diff --git a/src/win32/README.vc8 b/src/win32/README.vc8
deleted file mode 100644
index c810f9a..0000000
--- a/src/win32/README.vc8
+++ /dev/null
@@ -1,246 +0,0 @@
-Instructions to build Bacula with Microsoft Visual C++ 2005
-===========================================================
-
-NOTE: These instructions are probably quite accurate as several people
-have used them.  However, the project no longer maintains the files necessary
-to build using MSVC.  As a consequence, some of the file and scripts may
-be out of date, and you will almost surely need to manually update the 
-MSVC project files.  We do not supply any support on this.
-
-The project uses Mingw to cross-compile.  Those files are kept up to date though
-during development, they may sometimes be broken for a few days ...
-
-Using the Express Edition (free version)
-----------------------------------------
-  Download instructions:
-    - Visual C++ 2005 Express Edition (2MB + 66MB)
-      http://msdn.microsoft.com/vstudio/express/visualc/download/
-      NOTE: You may want to download the whole CD for offline usage
-      instead of the web installer, as Microsoft will
-      start to charge for VC++ one year after the product launch
-      (launch was in November 2005, see VC++ FAQ).
-      NOTE: last modifications in order to compile have been tested with 
-      Visual C++ Standard Edition, not with Express Edition, but this shouldn't change anything.
-
-       - Microsoft VSS SDK.  You can find it on Microsoft's web-site at:
-      http://www.microsoft.com/downloads/details.aspx?FamilyID=0b4f56e4-0ccc-4626-826a-ed2c4c95c871&DisplayLang=en
-      If that link doesn't work then go to http://www.microsoft.com and search for
-      "download volume shadow copy service sdk"
-
-    - Windows Server 2003 SP1 Platform SDK Full Download (385MB)
-      http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
-      NOTE: choose "Full Download" version on the bottom of that page.
-
-  Installation instructions:
-    - Visual C++ Express Edition Beta 2:
-      + Run vcsetup.exe.
-      + When asked for Installation Options, only check "Graphical IDE"
-        (MSDN Library is NOT needed).
-      + Remember where you install it (e.g. E:\Microsoft Visual Studio 8\)
-
-    - Windows Server 2003 SP1 Platform SDK Full Download
-      + Run psdk-full.exe, type the directory where you downloaded the cab
-        files.
-      + In a command prompt, run "PSDK-full.bat <temp directory>"
-        (e.g. "PSDK-full.bat E:\temp")
-      + Run <temp directory>\setup.exe
-      + When asked for the installation directory, choose
-        <vc++ install dir>\VC\PlatformSDK (e.g.
-        E:\Microsoft Visual Studio 8\VC\PlatformSDK\)
-      + When asked for components, you can safely remove documentation,
-        samples, and all 64-bit tools and libs if you want to save disk
-        space.
-      NOTE: Just after having installed "Windows� Server 2003 SP1 Platform SDK Full Download", 
-      my XP was no more considered as "genuine". You are warned.
-      That's why it is recommended to download "volume shadow copy service sdk" before installing SDK
-
-    - Microsoft VSS SDK
-      + Normally the files will be installed in:  C:\Program Files\Microsoft\VSSSDK72
-      + You only need to copy everything under the C:\Program Files\Microsoft\VSSSDK72\inc
-        directory into .../depkgs-msvc/vss/inc.
-
-    - Verify what you've got in your system variables :
-      + %INCLUDE% (echo %INCLUDE%) must contain 
-        <vc++ install dir>\VC\include;<vc++ install dir>\VC\PlatformSDK\Include;
-      + %LIB% (echo %LIB%) must contain 
-        <vc++ install dir>\VC\lib;<vc++ install dir>\VC\PlatformSDK\Lib
-
-One-time Setup
-==============
-
-If you're reading this file you've probably already enlisted in the CVS
-tree or extracted the contents of the source tar.  If not you need to do
-that first.
-
-You also need to download one of the doc tar balls and extract to your
-top level Bacula directory.  It is referred to as bacula-top in the
-diagram located in README.win32.  It will be signified in this file as ...
-
-The extracted doc directory name will be bacula-docs-version where
-version is the version number.  The directory must be renamed to docs
-(ie remove the leading bacula- and the trailing -version portion of the
-name).
-
-The script build-depkgs-msvc.cmd is used to download and build all the
-third party dependencies required by Bacula.  In order to build the
-dependencies you need the following utilities.  Only the binaries listed
-in parenthesis are required.  Perl must be listed in the PATH, the other
-utilities can either be on the PATH or copied to ...\depkgs-msvc\tools.
-
-  Perl (Normal Install, with binaries in the PATH)
-    http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.819-MSWin32-x86-267479.msi
-
-  7-Zip (7z.exe)
-    http://prdownloads.sourceforge.net/sevenzip/7za443.zip?download
-
-  NASM (nasmw.exe)
-    http://prdownloads.sourceforge.net/nasm/nasm-0.98.39-win32.zip?download
-
-  patch (patch.exe)
-    http://prdownloads.sourceforge.net/gnuwin32/patch-2.5.9-6-bin.zip?download
-
-  sed (sed.exe) Depends on libintl, libiconv
-    http://prdownloads.sourceforge.net/gnuwin32/sed-4.1.4-bin.zip?download
-
-  tee (tee.exe) Depends on libintl, libiconv
-    http://prdownloads.sourceforge.net/gnuwin32/coreutils-5.3.0-bin.zip?download
-
-  wget (wget.exe) Depends on libintl, libiconv, openssl
-    http://prdownloads.sourceforge.net/gnuwin32/wget-1.10.1-bin.zip?download
-
-  libintl (libintl3.dll) Dependency of sed, tee, wget
-    http://prdownloads.sourceforge.net/gnuwin32/libintl-0.14.4-bin.zip?download
-
-  libiconv (libiconv2.dll) Dependency of sed, tee, wget
-    http://prdownloads.sourceforge.net/gnuwin32/libiconv-1.9.2-1-bin.zip?download
-
-  openssl (libeay32.dll, ssleay32.dll) Dependency of wget
-    http://prdownloads.sourceforge.net/gnuwin32/openssl-0.9.7c-bin.zip?download
-
-Once the utilities are installed continue with the next steps.
-
-Start VC++ 2005 command prompt (in the start menu)
-
-   cd ...\bacula\src\win32 directory.
-
-Only if you are using Microsoft Visual C++ Express
-
-   "%VCINSTALLDIR%\PlatformSDK\SetEnv"
-
-The following step should only need to be done the first time and
-whenever the dependencies change.
-
-   build-depkgs-msvc
-
-At this point all of the dependencies should have been downloaded and
-built.  
-The above only needs to be done once unless we change the cross-tools or
-the dependencies versions.  In general, you can run the script multiple
-times with no problem.
-
-
-Building
-========
-
-Start VC++ 2005 command prompt (in the start menu)
-
-   cd ...\bacula\src\win32
-
-If you are using Microsoft Visual C++ Express
-
-   "%VCINSTALLDIR%\PlatformSDK\SetEnv"
-
-To build the debug version
-
-   build-msvc "Debug|Win32"
-
-To build the release version
-
-   build-msvc "Release|Win32"
-
-To cleanup all the built files
-
-   build-msvc /c
-
-To cleanup only the debug built files
-
-   build-msvc /c "Debug|Win32"
-
-To rebuild the debug version
-
-   build-msvc /r "Debug|Win32"
-
-
-Updating the 3rd party package patches
-======================================
-
-If one of the patches changes in ...\bacula\src\win32\patches, you will
-need to update the corresponding dependency.  You can install new patches
-by doing the following (we assume the patch in question is for openssl).
-
-   cd ...\bacula\src\win32
-   set CLOBBER_SOURCE=true
-   build-depkgs-msvc openssl
-   set CLOBBER_SOURCE=
-
-NOTE: Setting CLOBBER_SOURCE=true means that any local changes to the
-      source code in the .../depkgs-msvc/src directory will be lost.
-      The source will be reextracted from the archive and the current
-      patches will be applied.
-
-
-Adding a new global function or global data
-===========================================
-
-bacula.dll
-----------
-
-The code from the following directories is built into bacula.dll:
-
-   .../bacula/src/lib
-   .../bacula/src/libfind
-   .../bacula/src/win32/compat
-
-A new function or data variable which must be accessed from outside
-of bacula.dll requires special treatment.  It must be specifically
-exported.
-
-New data variables are exported by adding the macro DLL_IMP_EXP to
-the variable declaration in the header file.  All exported variables
-must be declared in a header file and MUST NOT be declared in a
-source file referencing the variable.
-
-Exporting a function requires a bit more work.  You must determine the
-C++ mangled name of the new function.  Fortunately it is displayed in
-parentheses in the linker error message.  Place it in the
-.../bacula/src/win32/libbac/bacula.def file.
-
-In .../bacula/src/win32/libbac/msvc there is a shell "make_def_msvc" that creates 
-a def file (not really clean way). 
-In cygwin,  one has to type ./make_def_msvc > bacula.def 
-
-bacula_cats.dll
----------------
-
-The code from the src/cats directory is built into database provider
-specific libraries of the form cats_<db>.dll.
-
-The database specific portion <db> is mysql for MySQL, pgsql for
-PostgreSQL, sqlite for SQLite, and bdb for the built-in Bacula database.
-
-During installation of the Director, one of the database libraries is
-copied to the system and renamed bacula_cats.dll.
-
-A new function or data variable which must be accessed from outside
-of bacula_cats.dll requires special treatment.  It must be specifically
-exported.
-
-New data variables and functions are exported by placing their mangled
-name in the file .../bacula/src/win32/cats/bacula_cats/bacula_cats.def.
-
-The mangled name is printed, surrounded by parentheses, in the Linker
-error message.
-
-In .../bacula/src/win32/bacula_cats/ there is a shell "make_def_msvc" that creates 
-a def file (not really clean way). 
-In cygwin,  one has to type ./make_def_msvc > bacula_cats.def 
diff --git a/src/win32/bacula.sln b/src/win32/bacula.sln
deleted file mode 100644
index a81b5ed..0000000
--- a/src/win32/bacula.sln
+++ /dev/null
@@ -1,403 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wx-console", "wx-console\wx-console.vcproj", "{9BA8E10D-0D82-4B25-8543-DE34641FBC10}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "console", "console\console.vcproj", "{A0F65E06-9F18-40AC-81F6-A080852F1104}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fstype", "tools\fstype\fstype.vcproj", "{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbac", "libbac\libbac.vcproj", "{374BF775-AF68-4A88-814A-48F692DFFE5A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "drivetype", "tools\drivetype\drivetype.vcproj", "{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfind", "tools\testfind\testfind.vcproj", "{558838F9-D792-4F56-AAB2-99C03687C5FF}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testls", "tools\testls\testls.vcproj", "{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "baculafd", "filed\baculafd.vcproj", "{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{825DFFD0-4747-43CA-8326-529655E31935}"
-	ProjectSection(SolutionItems) = preProject
-		build-depkgs-mingw32 = build-depkgs-mingw32
-		build-msvc.cmd = build-msvc.cmd
-		build-win32-cross-tools = build-win32-cross-tools
-		External-mingw32 = External-mingw32
-		README.mingw32 = README.mingw32
-		README.vc8 = README.vc8
-		README.win32 = README.win32
-		..\..\technotes-1.39 = ..\..\technotes-1.39
-	EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Header Files", "Header Files", "{C8301485-CFD1-43D4-827C-8EA050C8E256}"
-	ProjectSection(SolutionItems) = preProject
-		..\baconfig.h = ..\baconfig.h
-		..\bacula.h = ..\bacula.h
-		..\bc_types.h = ..\bc_types.h
-		..\jcr.h = ..\jcr.h
-		..\version.h = ..\version.h
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "baculadird", "dird\dird.vcproj", "{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413} = {8B79A2B5-8889-43D4-9B92-9AE8A6F00413}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "baculasd", "stored\baculasd\baculasd.vcproj", "{F5F063F8-11A1-475A-82E2-19759BB40B25}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D} = {CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bcopy", "stored\bcopy\bcopy.vcproj", "{614CE916-0972-4126-9392-CD9FC0ADD7DE}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D} = {CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bextract", "stored\bextract\bextract.vcproj", "{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D} = {CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bls", "stored\bls\bls.vcproj", "{F8AF7D74-2918-422B-A7B6-4D98566B7160}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D} = {CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bscan", "stored\bscan\bscan.vcproj", "{56EADEDB-FBED-4758-8B54-7B0B47ABDABF}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D} = {CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "btape", "stored\btape\btape.vcproj", "{496415E0-AF44-4AD8-8C99-91B837DDF469}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D} = {CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "storelib", "stored\storelib\storelib.vcproj", "{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413} = {8B79A2B5-8889-43D4-9B92-9AE8A6F00413}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "postest", "stored\postest\postest.vcproj", "{208D3989-794B-47A2-9D04-D7AEE1524078}"
-	ProjectSection(ProjectDependencies) = postProject
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D} = {CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{0377E151-3352-487B-A5CF-24BCDC9EC43F}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test Tools", "Test Tools", "{D6767108-F420-41C0-A834-2E6F487E1AB3}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Daemons", "Daemons", "{B9099DDA-18C9-4DE0-AECB-5D8139EA619F}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Utilities", "Utilities", "{37F903FE-3474-4C93-AD5B-987CB6A92E62}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Consoles", "Consoles", "{C66C8B3B-C156-4498-91E9-CA9A24CF9051}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bacula", "bacula\bacula.vcproj", "{2D729599-C008-4154-BCCB-53E6A260F220}"
-	ProjectSection(ProjectDependencies) = postProject
-		{374BF775-AF68-4A88-814A-48F692DFFE5A} = {374BF775-AF68-4A88-814A-48F692DFFE5A}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cats_mysql", "cats\cats_mysql\cats_mysql.vcproj", "{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413} = {8B79A2B5-8889-43D4-9B92-9AE8A6F00413}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bacula_cats", "cats\bacula_cats\bacula_cats.vcproj", "{8B79A2B5-8889-43D4-9B92-9AE8A6F00413}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbcheck", "tools\dbcheck\dbcheck.vcproj", "{85696E20-777A-41F6-BC00-2E7AB375B171}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413} = {8B79A2B5-8889-43D4-9B92-9AE8A6F00413}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cats_postgresql", "cats\cats_postgresql\cats_postgresql.vcproj", "{2FB961E5-213C-4475-8CB3-72F904D40752}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scsilist", "tools\scsilist\scsilist.vcproj", "{56D8C233-610E-4EE4-A73A-72CEF1C6A33A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "installer", "installer\installer.vcproj", "{6D1B0964-FB32-4916-A61C-49D7F715EAD8}"
-	ProjectSection(ProjectDependencies) = postProject
-		{A0F65E06-9F18-40AC-81F6-A080852F1104} = {A0F65E06-9F18-40AC-81F6-A080852F1104}
-		{9BA8E10D-0D82-4B25-8543-DE34641FBC10} = {9BA8E10D-0D82-4B25-8543-DE34641FBC10}
-		{614CE916-0972-4126-9392-CD9FC0ADD7DE} = {614CE916-0972-4126-9392-CD9FC0ADD7DE}
-		{85696E20-777A-41F6-BC00-2E7AB375B171} = {85696E20-777A-41F6-BC00-2E7AB375B171}
-		{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F} = {E5BC5B2E-976D-4DED-AA07-5DD52BF2163F}
-		{56D8C233-610E-4EE4-A73A-72CEF1C6A33A} = {56D8C233-610E-4EE4-A73A-72CEF1C6A33A}
-		{23BFE838-5682-4F39-969F-0B40366D4D98} = {23BFE838-5682-4F39-969F-0B40366D4D98}
-		{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC} = {B52BD53B-0E57-4E9A-A601-8E8171BA1CFC}
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D} = {CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}
-		{F8AF7D74-2918-422B-A7B6-4D98566B7160} = {F8AF7D74-2918-422B-A7B6-4D98566B7160}
-		{374BF775-AF68-4A88-814A-48F692DFFE5A} = {374BF775-AF68-4A88-814A-48F692DFFE5A}
-		{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA} = {6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA}
-		{AB67F297-8491-4515-8E52-BFF5340EC242} = {AB67F297-8491-4515-8E52-BFF5340EC242}
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-		{0F56AEB0-14DA-4A80-8962-1F85A17339D0} = {0F56AEB0-14DA-4A80-8962-1F85A17339D0}
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413} = {8B79A2B5-8889-43D4-9B92-9AE8A6F00413}
-		{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B} = {6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B}
-		{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF} = {28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF}
-		{56EADEDB-FBED-4758-8B54-7B0B47ABDABF} = {56EADEDB-FBED-4758-8B54-7B0B47ABDABF}
-		{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E} = {AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E}
-		{496415E0-AF44-4AD8-8C99-91B837DDF469} = {496415E0-AF44-4AD8-8C99-91B837DDF469}
-		{2FB961E5-213C-4475-8CB3-72F904D40752} = {2FB961E5-213C-4475-8CB3-72F904D40752}
-		{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA} = {D03415F7-654E-42F4-B0E9-CB8FBE3F22FA}
-		{F5F063F8-11A1-475A-82E2-19759BB40B25} = {F5F063F8-11A1-475A-82E2-19759BB40B25}
-		{558838F9-D792-4F56-AAB2-99C03687C5FF} = {558838F9-D792-4F56-AAB2-99C03687C5FF}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bsleep", "scripts\bsleep.vcproj", "{0F56AEB0-14DA-4A80-8962-1F85A17339D0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bsmtp", "tools\bsmtp\bsmtp.vcproj", "{AB67F297-8491-4515-8E52-BFF5340EC242}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scripts", "Scripts", "{40CADEE4-8D53-4157-AA36-B256F4934FC3}"
-	ProjectSection(SolutionItems) = preProject
-		build-depkgs-msvc.cmd = build-depkgs-msvc.cmd
-		scripts\disk-changer.cmd = scripts\disk-changer.cmd
-		scripts\dvd-handler.cmd = scripts\dvd-handler.cmd
-		scripts\mtx-changer.cmd = scripts\mtx-changer.cmd
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cats_sqlite3", "cats\cats_sqlite3\cats_sqlite3.vcproj", "{23BFE838-5682-4F39-969F-0B40366D4D98}"
-	ProjectSection(ProjectDependencies) = postProject
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {2D729599-C008-4154-BCCB-53E6A260F220}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Debug|Win32 = Debug|Win32
-		Release|Any CPU = Release|Any CPU
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{9BA8E10D-0D82-4B25-8543-DE34641FBC10}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{9BA8E10D-0D82-4B25-8543-DE34641FBC10}.Debug|Win32.ActiveCfg = Debug|Win32
-		{9BA8E10D-0D82-4B25-8543-DE34641FBC10}.Debug|Win32.Build.0 = Debug|Win32
-		{9BA8E10D-0D82-4B25-8543-DE34641FBC10}.Release|Any CPU.ActiveCfg = Release|Win32
-		{9BA8E10D-0D82-4B25-8543-DE34641FBC10}.Release|Win32.ActiveCfg = Release|Win32
-		{9BA8E10D-0D82-4B25-8543-DE34641FBC10}.Release|Win32.Build.0 = Release|Win32
-		{A0F65E06-9F18-40AC-81F6-A080852F1104}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{A0F65E06-9F18-40AC-81F6-A080852F1104}.Debug|Win32.ActiveCfg = Debug|Win32
-		{A0F65E06-9F18-40AC-81F6-A080852F1104}.Debug|Win32.Build.0 = Debug|Win32
-		{A0F65E06-9F18-40AC-81F6-A080852F1104}.Release|Any CPU.ActiveCfg = Release|Win32
-		{A0F65E06-9F18-40AC-81F6-A080852F1104}.Release|Win32.ActiveCfg = Release|Win32
-		{A0F65E06-9F18-40AC-81F6-A080852F1104}.Release|Win32.Build.0 = Release|Win32
-		{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E}.Debug|Win32.Build.0 = Debug|Win32
-		{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E}.Release|Any CPU.ActiveCfg = Release|Win32
-		{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E}.Release|Win32.ActiveCfg = Release|Win32
-		{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E}.Release|Win32.Build.0 = Release|Win32
-		{374BF775-AF68-4A88-814A-48F692DFFE5A}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{374BF775-AF68-4A88-814A-48F692DFFE5A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{374BF775-AF68-4A88-814A-48F692DFFE5A}.Debug|Win32.Build.0 = Debug|Win32
-		{374BF775-AF68-4A88-814A-48F692DFFE5A}.Release|Any CPU.ActiveCfg = Release|Win32
-		{374BF775-AF68-4A88-814A-48F692DFFE5A}.Release|Win32.ActiveCfg = Release|Win32
-		{374BF775-AF68-4A88-814A-48F692DFFE5A}.Release|Win32.Build.0 = Release|Win32
-		{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F}.Debug|Win32.Build.0 = Debug|Win32
-		{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F}.Release|Any CPU.ActiveCfg = Release|Win32
-		{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F}.Release|Win32.ActiveCfg = Release|Win32
-		{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F}.Release|Win32.Build.0 = Release|Win32
-		{558838F9-D792-4F56-AAB2-99C03687C5FF}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{558838F9-D792-4F56-AAB2-99C03687C5FF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{558838F9-D792-4F56-AAB2-99C03687C5FF}.Debug|Win32.Build.0 = Debug|Win32
-		{558838F9-D792-4F56-AAB2-99C03687C5FF}.Release|Any CPU.ActiveCfg = Release|Win32
-		{558838F9-D792-4F56-AAB2-99C03687C5FF}.Release|Win32.ActiveCfg = Release|Win32
-		{558838F9-D792-4F56-AAB2-99C03687C5FF}.Release|Win32.Build.0 = Release|Win32
-		{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF}.Debug|Win32.Build.0 = Debug|Win32
-		{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF}.Release|Any CPU.ActiveCfg = Release|Win32
-		{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF}.Release|Win32.ActiveCfg = Release|Win32
-		{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF}.Release|Win32.Build.0 = Release|Win32
-		{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B}.Debug|Win32.Build.0 = Debug|Win32
-		{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B}.Release|Any CPU.ActiveCfg = Release|Win32
-		{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B}.Release|Win32.ActiveCfg = Release|Win32
-		{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B}.Release|Win32.Build.0 = Release|Win32
-		{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA}.Debug|Win32.Build.0 = Debug|Win32
-		{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA}.Release|Any CPU.ActiveCfg = Release|Win32
-		{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA}.Release|Win32.ActiveCfg = Release|Win32
-		{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA}.Release|Win32.Build.0 = Release|Win32
-		{F5F063F8-11A1-475A-82E2-19759BB40B25}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{F5F063F8-11A1-475A-82E2-19759BB40B25}.Debug|Win32.ActiveCfg = Debug|Win32
-		{F5F063F8-11A1-475A-82E2-19759BB40B25}.Debug|Win32.Build.0 = Debug|Win32
-		{F5F063F8-11A1-475A-82E2-19759BB40B25}.Release|Any CPU.ActiveCfg = Release|Win32
-		{F5F063F8-11A1-475A-82E2-19759BB40B25}.Release|Win32.ActiveCfg = Release|Win32
-		{F5F063F8-11A1-475A-82E2-19759BB40B25}.Release|Win32.Build.0 = Release|Win32
-		{614CE916-0972-4126-9392-CD9FC0ADD7DE}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{614CE916-0972-4126-9392-CD9FC0ADD7DE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{614CE916-0972-4126-9392-CD9FC0ADD7DE}.Debug|Win32.Build.0 = Debug|Win32
-		{614CE916-0972-4126-9392-CD9FC0ADD7DE}.Release|Any CPU.ActiveCfg = Release|Win32
-		{614CE916-0972-4126-9392-CD9FC0ADD7DE}.Release|Win32.ActiveCfg = Release|Win32
-		{614CE916-0972-4126-9392-CD9FC0ADD7DE}.Release|Win32.Build.0 = Release|Win32
-		{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA}.Debug|Win32.Build.0 = Debug|Win32
-		{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA}.Release|Any CPU.ActiveCfg = Release|Win32
-		{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA}.Release|Win32.ActiveCfg = Release|Win32
-		{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA}.Release|Win32.Build.0 = Release|Win32
-		{F8AF7D74-2918-422B-A7B6-4D98566B7160}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{F8AF7D74-2918-422B-A7B6-4D98566B7160}.Debug|Win32.ActiveCfg = Debug|Win32
-		{F8AF7D74-2918-422B-A7B6-4D98566B7160}.Debug|Win32.Build.0 = Debug|Win32
-		{F8AF7D74-2918-422B-A7B6-4D98566B7160}.Release|Any CPU.ActiveCfg = Release|Win32
-		{F8AF7D74-2918-422B-A7B6-4D98566B7160}.Release|Win32.ActiveCfg = Release|Win32
-		{F8AF7D74-2918-422B-A7B6-4D98566B7160}.Release|Win32.Build.0 = Release|Win32
-		{56EADEDB-FBED-4758-8B54-7B0B47ABDABF}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{56EADEDB-FBED-4758-8B54-7B0B47ABDABF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{56EADEDB-FBED-4758-8B54-7B0B47ABDABF}.Debug|Win32.Build.0 = Debug|Win32
-		{56EADEDB-FBED-4758-8B54-7B0B47ABDABF}.Release|Any CPU.ActiveCfg = Release|Win32
-		{56EADEDB-FBED-4758-8B54-7B0B47ABDABF}.Release|Win32.ActiveCfg = Release|Win32
-		{56EADEDB-FBED-4758-8B54-7B0B47ABDABF}.Release|Win32.Build.0 = Release|Win32
-		{496415E0-AF44-4AD8-8C99-91B837DDF469}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{496415E0-AF44-4AD8-8C99-91B837DDF469}.Debug|Win32.ActiveCfg = Debug|Win32
-		{496415E0-AF44-4AD8-8C99-91B837DDF469}.Debug|Win32.Build.0 = Debug|Win32
-		{496415E0-AF44-4AD8-8C99-91B837DDF469}.Release|Any CPU.ActiveCfg = Release|Win32
-		{496415E0-AF44-4AD8-8C99-91B837DDF469}.Release|Win32.ActiveCfg = Release|Win32
-		{496415E0-AF44-4AD8-8C99-91B837DDF469}.Release|Win32.Build.0 = Release|Win32
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}.Debug|Win32.Build.0 = Debug|Win32
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}.Release|Any CPU.ActiveCfg = Release|Win32
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}.Release|Win32.ActiveCfg = Release|Win32
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}.Release|Win32.Build.0 = Release|Win32
-		{208D3989-794B-47A2-9D04-D7AEE1524078}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{208D3989-794B-47A2-9D04-D7AEE1524078}.Debug|Win32.ActiveCfg = Debug|Win32
-		{208D3989-794B-47A2-9D04-D7AEE1524078}.Release|Any CPU.ActiveCfg = Release|Win32
-		{208D3989-794B-47A2-9D04-D7AEE1524078}.Release|Win32.ActiveCfg = Release|Win32
-		{2D729599-C008-4154-BCCB-53E6A260F220}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{2D729599-C008-4154-BCCB-53E6A260F220}.Debug|Win32.ActiveCfg = Debug|Win32
-		{2D729599-C008-4154-BCCB-53E6A260F220}.Debug|Win32.Build.0 = Debug|Win32
-		{2D729599-C008-4154-BCCB-53E6A260F220}.Release|Any CPU.ActiveCfg = Release|Win32
-		{2D729599-C008-4154-BCCB-53E6A260F220}.Release|Win32.ActiveCfg = Release|Win32
-		{2D729599-C008-4154-BCCB-53E6A260F220}.Release|Win32.Build.0 = Release|Win32
-		{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC}.Debug|Win32.Build.0 = Debug|Win32
-		{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC}.Release|Any CPU.ActiveCfg = Release|Win32
-		{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC}.Release|Win32.ActiveCfg = Release|Win32
-		{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC}.Release|Win32.Build.0 = Release|Win32
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413}.Debug|Win32.Build.0 = Debug|Win32
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413}.Release|Any CPU.ActiveCfg = Release|Win32
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413}.Release|Win32.ActiveCfg = Release|Win32
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413}.Release|Win32.Build.0 = Release|Win32
-		{85696E20-777A-41F6-BC00-2E7AB375B171}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{85696E20-777A-41F6-BC00-2E7AB375B171}.Debug|Win32.ActiveCfg = Debug|Win32
-		{85696E20-777A-41F6-BC00-2E7AB375B171}.Debug|Win32.Build.0 = Debug|Win32
-		{85696E20-777A-41F6-BC00-2E7AB375B171}.Release|Any CPU.ActiveCfg = Release|Win32
-		{85696E20-777A-41F6-BC00-2E7AB375B171}.Release|Win32.ActiveCfg = Release|Win32
-		{85696E20-777A-41F6-BC00-2E7AB375B171}.Release|Win32.Build.0 = Release|Win32
-		{2FB961E5-213C-4475-8CB3-72F904D40752}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{2FB961E5-213C-4475-8CB3-72F904D40752}.Debug|Win32.ActiveCfg = Debug|Win32
-		{2FB961E5-213C-4475-8CB3-72F904D40752}.Debug|Win32.Build.0 = Debug|Win32
-		{2FB961E5-213C-4475-8CB3-72F904D40752}.Release|Any CPU.ActiveCfg = Release|Win32
-		{2FB961E5-213C-4475-8CB3-72F904D40752}.Release|Win32.ActiveCfg = Release|Win32
-		{2FB961E5-213C-4475-8CB3-72F904D40752}.Release|Win32.Build.0 = Release|Win32
-		{56D8C233-610E-4EE4-A73A-72CEF1C6A33A}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{56D8C233-610E-4EE4-A73A-72CEF1C6A33A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{56D8C233-610E-4EE4-A73A-72CEF1C6A33A}.Debug|Win32.Build.0 = Debug|Win32
-		{56D8C233-610E-4EE4-A73A-72CEF1C6A33A}.Release|Any CPU.ActiveCfg = Release|Win32
-		{56D8C233-610E-4EE4-A73A-72CEF1C6A33A}.Release|Win32.ActiveCfg = Release|Win32
-		{56D8C233-610E-4EE4-A73A-72CEF1C6A33A}.Release|Win32.Build.0 = Release|Win32
-		{6D1B0964-FB32-4916-A61C-49D7F715EAD8}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{6D1B0964-FB32-4916-A61C-49D7F715EAD8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6D1B0964-FB32-4916-A61C-49D7F715EAD8}.Debug|Win32.Build.0 = Debug|Win32
-		{6D1B0964-FB32-4916-A61C-49D7F715EAD8}.Release|Any CPU.ActiveCfg = Release|Win32
-		{6D1B0964-FB32-4916-A61C-49D7F715EAD8}.Release|Win32.ActiveCfg = Release|Win32
-		{6D1B0964-FB32-4916-A61C-49D7F715EAD8}.Release|Win32.Build.0 = Release|Win32
-		{0F56AEB0-14DA-4A80-8962-1F85A17339D0}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{0F56AEB0-14DA-4A80-8962-1F85A17339D0}.Debug|Win32.ActiveCfg = Debug|Win32
-		{0F56AEB0-14DA-4A80-8962-1F85A17339D0}.Debug|Win32.Build.0 = Debug|Win32
-		{0F56AEB0-14DA-4A80-8962-1F85A17339D0}.Release|Any CPU.ActiveCfg = Release|Win32
-		{0F56AEB0-14DA-4A80-8962-1F85A17339D0}.Release|Win32.ActiveCfg = Release|Win32
-		{0F56AEB0-14DA-4A80-8962-1F85A17339D0}.Release|Win32.Build.0 = Release|Win32
-		{AB67F297-8491-4515-8E52-BFF5340EC242}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{AB67F297-8491-4515-8E52-BFF5340EC242}.Debug|Win32.ActiveCfg = Debug|Win32
-		{AB67F297-8491-4515-8E52-BFF5340EC242}.Debug|Win32.Build.0 = Debug|Win32
-		{AB67F297-8491-4515-8E52-BFF5340EC242}.Release|Any CPU.ActiveCfg = Release|Win32
-		{AB67F297-8491-4515-8E52-BFF5340EC242}.Release|Win32.ActiveCfg = Release|Win32
-		{AB67F297-8491-4515-8E52-BFF5340EC242}.Release|Win32.Build.0 = Release|Win32
-		{23BFE838-5682-4F39-969F-0B40366D4D98}.Debug|Any CPU.ActiveCfg = Debug|Win32
-		{23BFE838-5682-4F39-969F-0B40366D4D98}.Debug|Win32.ActiveCfg = Debug|Win32
-		{23BFE838-5682-4F39-969F-0B40366D4D98}.Debug|Win32.Build.0 = Debug|Win32
-		{23BFE838-5682-4F39-969F-0B40366D4D98}.Release|Any CPU.ActiveCfg = Release|Win32
-		{23BFE838-5682-4F39-969F-0B40366D4D98}.Release|Win32.ActiveCfg = Release|Win32
-		{23BFE838-5682-4F39-969F-0B40366D4D98}.Release|Win32.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(NestedProjects) = preSolution
-		{A0F65E06-9F18-40AC-81F6-A080852F1104} = {C66C8B3B-C156-4498-91E9-CA9A24CF9051}
-		{9BA8E10D-0D82-4B25-8543-DE34641FBC10} = {C66C8B3B-C156-4498-91E9-CA9A24CF9051}
-		{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F} = {D6767108-F420-41C0-A834-2E6F487E1AB3}
-		{558838F9-D792-4F56-AAB2-99C03687C5FF} = {D6767108-F420-41C0-A834-2E6F487E1AB3}
-		{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF} = {D6767108-F420-41C0-A834-2E6F487E1AB3}
-		{208D3989-794B-47A2-9D04-D7AEE1524078} = {D6767108-F420-41C0-A834-2E6F487E1AB3}
-		{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E} = {D6767108-F420-41C0-A834-2E6F487E1AB3}
-		{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D} = {0377E151-3352-487B-A5CF-24BCDC9EC43F}
-		{374BF775-AF68-4A88-814A-48F692DFFE5A} = {0377E151-3352-487B-A5CF-24BCDC9EC43F}
-		{2D729599-C008-4154-BCCB-53E6A260F220} = {0377E151-3352-487B-A5CF-24BCDC9EC43F}
-		{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC} = {0377E151-3352-487B-A5CF-24BCDC9EC43F}
-		{8B79A2B5-8889-43D4-9B92-9AE8A6F00413} = {0377E151-3352-487B-A5CF-24BCDC9EC43F}
-		{2FB961E5-213C-4475-8CB3-72F904D40752} = {0377E151-3352-487B-A5CF-24BCDC9EC43F}
-		{23BFE838-5682-4F39-969F-0B40366D4D98} = {0377E151-3352-487B-A5CF-24BCDC9EC43F}
-		{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA} = {B9099DDA-18C9-4DE0-AECB-5D8139EA619F}
-		{F5F063F8-11A1-475A-82E2-19759BB40B25} = {B9099DDA-18C9-4DE0-AECB-5D8139EA619F}
-		{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B} = {B9099DDA-18C9-4DE0-AECB-5D8139EA619F}
-		{C8301485-CFD1-43D4-827C-8EA050C8E256} = {825DFFD0-4747-43CA-8326-529655E31935}
-		{40CADEE4-8D53-4157-AA36-B256F4934FC3} = {825DFFD0-4747-43CA-8326-529655E31935}
-		{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA} = {37F903FE-3474-4C93-AD5B-987CB6A92E62}
-		{F8AF7D74-2918-422B-A7B6-4D98566B7160} = {37F903FE-3474-4C93-AD5B-987CB6A92E62}
-		{56EADEDB-FBED-4758-8B54-7B0B47ABDABF} = {37F903FE-3474-4C93-AD5B-987CB6A92E62}
-		{496415E0-AF44-4AD8-8C99-91B837DDF469} = {37F903FE-3474-4C93-AD5B-987CB6A92E62}
-		{614CE916-0972-4126-9392-CD9FC0ADD7DE} = {37F903FE-3474-4C93-AD5B-987CB6A92E62}
-		{85696E20-777A-41F6-BC00-2E7AB375B171} = {37F903FE-3474-4C93-AD5B-987CB6A92E62}
-		{56D8C233-610E-4EE4-A73A-72CEF1C6A33A} = {37F903FE-3474-4C93-AD5B-987CB6A92E62}
-		{0F56AEB0-14DA-4A80-8962-1F85A17339D0} = {37F903FE-3474-4C93-AD5B-987CB6A92E62}
-		{AB67F297-8491-4515-8E52-BFF5340EC242} = {37F903FE-3474-4C93-AD5B-987CB6A92E62}
-	EndGlobalSection
-EndGlobal
diff --git a/src/win32/bacula/bacula.vcproj b/src/win32/bacula/bacula.vcproj
deleted file mode 100644
index ae9fe37..0000000
--- a/src/win32/bacula/bacula.vcproj
+++ /dev/null
@@ -1,225 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="bacula"
-	ProjectGUID="{2D729599-C008-4154-BCCB-53E6A260F220}"
-	RootNamespace="bacula"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../compat;"../../../../depkgs-msvc/include";../..;"../../../../depkgs-msvc/include/mysql";"../../../../depkgs-msvc/vss/inc""
-				PreprocessorDefinitions="_DEBUG;_LIB;HAVE_WIN32;WIN32_VSS;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalDependencies="$(TargetDir)libbac.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug/bacula.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../compat;"../../../../depkgs-msvc/include";../..;"../../../../depkgs-msvc/include/mysql";"../../../../depkgs-msvc/vss/inc""
-				PreprocessorDefinitions="NDEBUG;_LIB;HAVE_WIN32;WIN32_VSS;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalDependencies="$(TargetDir)libbac.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\compat\getopt.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\parse_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\res.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-		<File
-			RelativePath=".\ReadMe.txt"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/build-cross-mingw-w64 b/src/win32/build-cross-mingw-w64
deleted file mode 100755
index 4a20bdf..0000000
--- a/src/win32/build-cross-mingw-w64
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/bin/bash -e
-#
-# Script to help build the mingw cross compile tool chain for Win64
-#  This typically needs a lot of hand tweaking to get everything to
-#  work.  We build this only on Ubuntu Hardy, and it is unlikely
-#  to work on any other Linux version without significant changes
-#  to the patch files...  You are on your own here.
-#
-HST=x86_64-pc-linux
-TGT=x86_64-pc-mingw32
-RT=mingw-w64
-# Directory where cross-tools directory will be placed
-TOPDIR=../../..
-# Cross tools directory name under TOPDIR
-CROSSTOOLS=cross-tools
-cwd=`pwd`
-
-cd ${TOPDIR}
-# Make TOPDIR absolute
-TOPDIR=`pwd`
-TOPDIR=${DEPKGS:-${TOPDIR}}
-
-mkdir -p ${TOPDIR}/cross-tools
-cd ${TOPDIR}/cross-tools
-echo "Buiding in ${TOPDIR}/cross-tools"
-PF=`pwd`/$RT
-BD=`pwd`/build
-SRC=`pwd`/source
-cd -
-DIRS="$SRC $PF $PF/$TGT $BD $BD/binutils $BD/binutils/build-$HST $BD/gcc-svn $BD/gcc-svn/build-$HST $BD/mingw $BD/mingw/build-$HST"
-baseopts="--prefix=$PF --with-sysroot=$PF --target=$TGT"
-j="-j3"
-
-#Option defaults
-build="true"
-update="true"
-out=/dev/null
-
-binutilsver=binutils-2.19
-dlbinutils=http://ftp.gnu.org/gnu/binutils/$binutilsver.tar.bz2
-gccver=gcc-4.3.2
-dlgcc=http://ftp.gnu.org/gnu/gcc/$gccver/$gccver.tar.bz2
-mingwver=mingw-w64-snapshot-20081115
-dlmingw64=http://garr.dl.sourceforge.net/sourceforge/mingw-w64/$mingwver.tar.bz2
-#Third part packages
-gmpver=gmp-4.2.4
-gmp=ftp://ftp.gnu.org/gnu/gmp/${gmpver}.tar.bz2
-mpfrver=mpfr-2.3.2
-mpfr=http://www.mpfr.org/mpfr-current/${mpfrver}.tar.bz2
-url=http://www.bacula.org/cross-tools
-
-echo "Check sources"
-mkdir -p $SRC
-cd $SRC
-
-for i in $binutilsver $gccver $mpfrver $gmpver $mingwver
-do
-    if [ ! -f $i.tar.bz2 ]; then
-        echo "Download $i"
-        wget $url/$i.tar.bz2
-    fi
-done
-
-tar xf $mingwver.tar.bz2
-mv trunk/mingw-* .
-tar cfj mingw-w64-crt.tar.bz2 mingw-w64-crt
-tar cfj mingw-w64-headers.tar.bz2 mingw-w64-headers
-rm -rf mingw-w64-crt mingw-w64-headers trunk
-
-if [ $update = "true" ]; then
-  echo "Creating directory tree:"
-  echo "$PF -- sysroot directory tree"
-  echo "$BD -- build directory tree"
-  echo ""
-
-  for i in $DIRS; do
-    [ -d $i ] && echo "Warning: $i preexisting, skipping directory creation" || mkdir $i
-  done
-  [ -h $PF/mingw ] || ln -s $TGT $PF/mingw
-
-  echo "Downloading binutils.." && cd $BD/binutils
-  rm -rf binutils
-  tar xf $SRC/binutils-2.19.tar.bz2
-  mv binutils-* src
-
-  echo "Downloading gcc.." && cd $BD/gcc-svn
-#  svn -q checkout svn://gcc.gnu.org/svn/gcc/trunk gcc -r $gccrev
-  rm -rf gcc
-  tar xf $SRC/gcc-4.3.2.tar.bz2
-  mv gcc-* gcc
-
-  echo "Downloading additional required libraries for gcc.."
-  cd gcc
-  rm -rf gmp
-  tar xf $SRC/gmp-4.2.4.tar.bz2
-  mv gmp-* gmp
-
-  rm -rf mpfr
-  tar xf $SRC/mpfr-2.3.2.tar.bz2
-  mv mpfr-* mpfr
-  cd ..
-
-  echo "Downloading crt and headers.."
-  cd $BD/mingw
-  tar xf $SRC/mingw-w64-headers.tar.bz2
-  tar xf $SRC/mingw-w64-crt.tar.bz2
-  cp -prf mingw-w64-headers/include $PF/$TGT/include
-
-  echo "Root setup complete."
-fi
-
-if [ $build = "true" ]; then
-  echo "Compiling binutils.." && cd $BD/binutils/build-$HST
-  ../src/configure $baseopts > $out && make -s $j > $out && make install > $out || exit 1
-
-  echo "Compiling bootstrap gcc.." && cd $BD/gcc-svn/build-$HST
-  ../gcc/configure $baseopts > $out && make -s $j all-gcc > $out && make install-gcc > $out || exit 1
-  export PATH=$PF/bin:$PATH
-
-  echo "Compiling crt.." && cd $BD/mingw/build-$HST
-  ../mingw-w64-crt/configure --prefix=$PF --with-sysroot=$PF --host=$TGT > $out && make -s $j > $out && make install > $out || exit 1
-
-  echo "Compiling full gcc.." && cd $BD/gcc-svn/build-$HST
-  make -s $j > $out && make install > $out || exit 1
-
-  cd $PF
-  echo "Done building."
-fi
-
-cd $PF/bin
-for i in x86_64-pc-mingw32-*
-do
-    ln -s $i ${i##x86_64-pc-}
-done
diff --git a/src/win32/build-depkgs-mingw-w64 b/src/win32/build-depkgs-mingw-w64
deleted file mode 100755
index 2c965e4..0000000
--- a/src/win32/build-depkgs-mingw-w64
+++ /dev/null
@@ -1,298 +0,0 @@
-#!/bin/sh
-#
-#  This file may help you build the dependency packages that
-#  are needed to cross compile the Win64 bit version of the Bacula
-#  File daemon.  This file is provided as is, and we don't guarantee
-#  that it will work. We run it only on Ubuntu Hardy.  Trying to use
-#  it on any other GNU/Linux distro will probably require changes.
-#
-#  This file is driven by the parameters that are defined in
-#    the file External-mingw-w64
-#
-
-usage()
-{
-   echo "usage: $0 [-h] [-C] [<dependency 1>] [<dependency 2>] ..."
-   echo "       -h      Displays this usage"
-   echo "       -C      Clobbers (overwrites) the source code by "
-   echo "               reextracting the archive and reapplying the"
-   echo "               patches."
-   echo ""
-   echo "<dependency N> Optional dependency, If none are given then all"
-   echo "               of them will be built."
-   echo ""
-   echo "Valid dependencies are:"
-   grep -v '^#' < External-mingw-w64 | cut -d'|' -f1 | cut -d'_' -f1 | tr A-Z a-z | sort -u | awk '{ print "        " $1 }'
-}
-
-CLOBBER_SOURCE=
-
-while getopts "hHC" opt; do
-   case ${opt} in
-   H|h|\?) usage;exit 1;;
-   C)      CLOBBER_SOURCE=true;;
-   esac
-done
-
-[ ${OPTIND} -gt 1 ] && shift `expr ${OPTIND} - 1`
-
-cwd=`pwd`
-cd `dirname $0`
-SCRIPT_DIR=`pwd`
-
-cd ../../..
-TOP_DIR=`pwd`
-TOP_DIR=${DEPKGS:-${TOP_DIR}}
-
-if [ -e ${TOP_DIR}/cross-tools/mingw-w64/bin/x86_64-pc-mingw32-gcc ]
-then
-   cd ${TOP_DIR}/cross-tools/mingw-w64/bin
-   BIN_DIR=`pwd`
-else
-   echo "The GCC cross compiler is not installed."
-   echo "You must run build-win64-cross-tools first"
-   exit 1
-fi
-
-[ ! -e ${TOP_DIR}/depkgs-mingw-w64 ] && mkdir ${TOP_DIR}/depkgs-mingw-w64
-cd ${TOP_DIR}/depkgs-mingw-w64
-DEPPKG_DIR=`pwd`
-
-export PATH=${BIN_DIR}:${PATH}
-
-[ ! -e bin ] && mkdir bin
-[ ! -e src ] && mkdir src
-[ ! -e include ] && mkdir include
-[ ! -e lib ] && mkdir lib
-
-OLD_IFS=${IFS};IFS="|";
-while read package url dir mkd; do
-   echo "Got package ${package}"
-   case ${package} in
-   \#*) ;;
-   *) eval "URL_${package}=${url};DIR_${package}=${dir};MKD_${package}=${mkd}";;
-        esac
-done < ${SCRIPT_DIR}/External-mingw-w64
-IFS=${OLD_IFS};unset OLD_IFS
-
-get_source()
-{
-   URL=$1
-   SRC_DIR=$2
-   MAKE_DIR=$3
-   echo "Processing ${URL}"
-   ARCHIVE=`basename ${URL}`
-   
-   case ${ARCHIVE} in
-   *.tar.gz)       ARCHIVER="tar xzf";    [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.tar\.gz'`;;
-   *.tar.bz2)      ARCHIVER="tar xjf";    [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.tar\.bz2'`;;
-   *.zip)          ARCHIVER="unzip -q";   [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.zip'`;;
-   *.exe)          ARCHIVER="";           [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.zip'`;;
-   *)              echo Unsupported archive type - $ARCHIVE; exit 1;;
-   esac
-   
-   cd ${DEPPKG_DIR}/src
-   
-   if [ ! -e "${ARCHIVE}" ]
-   then 
-      echo Downloading "${URL}"
-      if wget --passive-ftp "${URL}"
-      then
-         :
-      else
-         echo Unable to download ${ARCHIVE}
-         exit 1
-      fi
-   fi
-
-   [ -z "${ARCHIVER}" ] && return 0
-
-   if [ ! -e "${SRC_DIR}" -o "${CLOBBER_SOURCE}" = "true" ]
-   then
-      rm -rf ${SRC_DIR}
-      echo Extracting ${ARCHIVE}
-      if [ "${MAKE_DIR}" = "true" ]
-      then
-         mkdir ${SRC_DIR}
-         cd ${SRC_DIR}
-         ${ARCHIVER} ../${ARCHIVE} > ../${ARCHIVE}.log 2>&1
-      else
-         ${ARCHIVER} ${ARCHIVE} > ${ARCHIVE}.log 2>&1
-         cd ${SRC_DIR}
-      fi
-      return 0
-   fi
-
-   cd ${SRC_DIR}
-   return 1
-}
-
-parse_output()
-{
-   sed -ne '/\\$/N' -e 's/\\\n//' -e 's/\t\+/ /g' -e 's/ \+/ /g' \
-       -e '/ error: /p' \
-       -e "s%.*Entering directory[ ]\\+.${DEPPKG_DIR}/\\([^ ]\+\).%Entering \\1%p" \
-       -e "s%.*Leaving directory[ ]\\+.${DEPPKG_DIR}/\\([^ ]\+.\).%Leaving \\1%p" \
-       -e '/gcc \|g\+\+ \|ar /!d' \
-       -e 's/ \(\.\.\/\)\+/ /g' \
-       -e 's/.* \([^ ]\+\(\.c\|\.cpp\|\.cc\|\.cxx\)\)\( .*\|\)$/Compiling \1/p' \
-       -e 's/.* \([^ ]\+\.s\)\( .*\|\)$/Assembling \1/p' \
-       -e 's/.*ar [^ ]\+ \([^ ]\+\)\(\( [^ ]\+\.o\)\+\)/Updating \1 -\2/p' \
-       -e 's/.* -o \([^ ]\+\)\( .*\|\)$/Linking \1/p'
-}
-
-do_patch()
-{
-   PATCH_FILE=${SCRIPT_DIR}/patches/$1; shift
-   
-   if patch -f -p0 "$@" >>patch.log < ${PATCH_FILE}
-   then
-      :
-   else
-      echo "Patch failed - Check `pwd`/patch.log" > /dev/tty
-      exit 1
-   fi
-}
-
-do_make()
-{
-   if make -f "$@" 2>&1
-   then
-      :
-   else
-      echo "Make failed - Check `pwd`/make.log" > /dev/tty
-      exit 1
-   fi | tee -a make.log | parse_output
-}
-
-process_rsync()
-{
-   get_source "${URL_RSYNC}" "${DIR_RSYNC}" "${MKD_RSYNC}"
-   ./configure --host=x86_64-pc-mingw32
-   make -k # rdiff.exe has a problem
-   cp .libs/librsync.a ${DEPPKG_DIR}/lib
-   cp librsync*h ${DEPPKG_DIR}/include
-}
-
-process_zlib()
-{
-   if get_source "${URL_ZLIB}" "${DIR_ZLIB}" "${MKD_ZLIB}"
-   then
-      echo "Patching zlib"
-      >patch.log
-      do_patch zlib.patch
-   fi
-   echo Building zlib
-   > make.log
-   do_make win32/Makefile.mingw32 PREFIX=${DEPPKG_DIR} all
-   echo Installing zlib
-   do_make win32/Makefile.mingw32 PREFIX=${DEPPKG_DIR} install
-}
-
-process_pcre()
-{
-   if get_source "${URL_PCRE}" "${DIR_PCRE}" "${MKD_PCRE}"
-   then
-           echo Patching PCRE
-           >patch.log
-           do_patch pcre.patch
-           echo Configuring PCRE
-           ./configure CC_FOR_BUILD=gcc \
-                       CXX_FOR_BUILD=g++ \
-                       --host=x86_64-pc-mingw32 \
-                       --prefix=${DEPPKG_DIR} \
-                       --enable-utf8 \
-                       --enable-unicode-properties >make.log 2>&1
-   fi
-   echo Building PCRE
-   do_make Makefile PREFIX=${DEPPKG_DIR} all
-   echo Installing PCRE
-   do_make Makefile PREFIX=${DEPPKG_DIR} install
-}
-
-process_db()
-{
-   if get_source "${URL_DB}" "${DIR_DB}" "${MKD_DB}"
-   then
-          echo No Patch
-   fi
-   cd build_unix
-   ../dist/configure --host=x86_64-pc-mingw32 --enable-mingw --prefix=${DEPPKG_DIR}
-   > make.log
-   echo Building DB
-   do_make Makefile
-   echo Installing DB
-   do_make Makefile install_setup install_include install_lib
-}
-
-process_pthreads()
-{
-   if get_source "${URL_PTHREADS}" "${DIR_PTHREADS}" "${MKD_PTHREADS}"
-   then
-           echo Patching pthreads
-           >patch.log
-           do_patch pthreads-w64.patch
-   fi
-   echo Building pthreads
-   > make.log
-   do_make GNUmakefile GCE
-   echo Installing pthreads
-   rm -rf ${DEPPKG_DIR}/include/pthreads
-   mkdir ${DEPPKG_DIR}/include/pthreads
-   cp -p *.h ${DEPPKG_DIR}/include/pthreads
-   cp -p *.dll ${DEPPKG_DIR}/bin
-   cp -p *.a ${DEPPKG_DIR}/lib
-}
-
-process_openssl()
-{
-   if get_source "${URL_OPENSSL}" "${DIR_OPENSSL}" "${MKD_OPENSSL}"
-   then
-           echo Patching openssl
-           >patch.log
-           do_patch openssl-w64.patch
-           echo Configuring openssl
-           echo ./Configure --prefix=${DEPPKG_DIR} \
-                       shared zlib-dynamic no-dso no-hw \
-                       threads \
-                       --with-zlib-include=${DEPPKG_DIR}/include \
-                       mingw64
-           ./Configure --prefix=${DEPPKG_DIR} \
-                       shared zlib-dynamic no-dso no-hw \
-                       threads \
-                       --with-zlib-include=${DEPPKG_DIR}/include \
-                       mingw64 > make.log 2>&1
-   fi
-   echo Building openssl
-   perl util/mkdef.pl 32 libeay no-static-engine >ms/libeay32.def
-   perl util/mkdef.pl 32 ssleay >ms/ssleay32.def
-   perl util/mkdef.pl crypto ssl NT update
-   sed -i 's/CC=/CC=mingw32-gcc #/' crypto/comp/Makefile
-   sed -i 's/AR=/AR=mingw32-ar r #/'  crypto/comp/Makefile
-   sed -i "s:^CFLAGS=:CFLAGS= -I${DEPPKG_DIR}/include:" crypto/comp/Makefile
-
-   do_make Makefile all
-   cd engines
-   touch lib4758cca.bad libaep.bad libatalla.bad libcswift.bad libchil.bad libgmp.bad libnuron.bad libsureware.bad libubsec.bad libcapi.bad
-   cd ..
-   do_make Makefile all
-   echo Installing openssl
-   do_make Makefile install_sw install
-   cp *.dll ${DEPPKG_DIR}/bin
-}
-
-if [ "$#" -eq 0 ]
-then
-   process_zlib
-   process_rsync
-   process_pcre
-   process_pthreads
-   process_openssl
-else
-   for dependency in "$@"
-   do
-      eval "process_${dependency}"
-   done
-fi
-#vss
-#Need to download from Microsoft
diff --git a/src/win32/build-depkgs-mingw32 b/src/win32/build-depkgs-mingw32
deleted file mode 100755
index 800396d..0000000
--- a/src/win32/build-depkgs-mingw32
+++ /dev/null
@@ -1,564 +0,0 @@
-#!/bin/sh
-#
-#  This file is driven by the parameters that are defined in
-#    the file External-mingw32
-#
-
-usage()
-{
-   echo "usage: $0 [-h] [-C] [<dependency 1>] [<dependency 2>] ..."
-   echo "       -h      Displays this usage"
-   echo "       -C      Clobbers (overwrites) the source code by "
-   echo "               reextracting the archive and reapplying the"
-   echo "               patches."
-   echo ""
-   echo "<dependency N> Optional dependency, If none are given then all"
-   echo "               of them will be built."
-   echo ""
-   echo "Valid dependencies are:"
-   grep -v '^#' < External-mingw32 | cut -d'|' -f1 | cut -d'_' -f1 | tr A-Z a-z | sort -u | awk '{ print "        " $1 }'
-}
-
-CLOBBER_SOURCE=
-
-while getopts "hHC" opt; do
-   case ${opt} in
-   H|h|\?) usage;exit 1;;
-   C)      CLOBBER_SOURCE=true;;
-   esac
-done
-
-[ ${OPTIND} -gt 1 ] && shift `expr ${OPTIND} - 1`
-
-cwd=`pwd`
-cd `dirname $0`
-SCRIPT_DIR=`pwd`
-
-cd ../../..
-TOP_DIR=`pwd`
-TOP_DIR=${DEPKGS:-${TOP_DIR}}
-
-if [ -e ${TOP_DIR}/cross-tools/mingw32/bin/mingw32-gcc ]
-then
-   cd ${TOP_DIR}/cross-tools/mingw32/bin
-   BIN_DIR=`pwd`
-elif [ -e /mingw/bin/mingw32-gcc ] 
-then
-   BIN_DIR=/mingw/bin
-else
-   echo "The GCC cross compiler is not installed."
-   echo "You must run build-win32-cross-tools first"
-   exit 1
-fi
-
-[ ! -e ${TOP_DIR}/depkgs-mingw32 ] && mkdir ${TOP_DIR}/depkgs-mingw32
-cd ${TOP_DIR}/depkgs-mingw32
-DEPPKG_DIR=`pwd`
-
-export PATH=${BIN_DIR}:${PATH}
-
-[ ! -e bin ] && mkdir bin
-[ ! -e src ] && mkdir src
-[ ! -e include ] && mkdir include
-[ ! -e lib ] && mkdir lib
-
-OLD_IFS=${IFS};IFS="|";
-while read package url dir mkd; do
-#  echo "Got package ${package}"
-   case ${package} in
-   \#*) ;;
-   *) eval "URL_${package}=${url};DIR_${package}=${dir};MKD_${package}=${mkd}";;
-        esac
-done < ${SCRIPT_DIR}/External-mingw32
-IFS=${OLD_IFS};unset OLD_IFS
-
-get_source()
-{
-   URL=$1
-   SRC_DIR=$2
-   MAKE_DIR=$3
-   echo "Processing ${URL}"
-   ARCHIVE=`basename ${URL}`
-   
-   case ${ARCHIVE} in
-   *.tar.gz)       ARCHIVER="tar xzf";    [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.tar\.gz'`;;
-   *.tar.bz2)      ARCHIVER="tar xjf";    [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.tar\.bz2'`;;
-   *.zip)          ARCHIVER="unzip -q";   [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.zip'`;;
-   *.exe)          ARCHIVER="";           [ -z "${SRC_DIR}" ] && SRC_DIR=`expr "${ARCHIVE}" : '\(.*\)\.zip'`;;
-   *)              echo Unsupported archive type - $ARCHIVE; exit 1;;
-   esac
-   
-   cd ${DEPPKG_DIR}/src
-   
-   if [ ! -e "${ARCHIVE}" ]
-   then 
-      echo Downloading "${URL}"
-      if wget --passive-ftp "${URL}"
-      then
-         :
-      else
-         echo Unable to download ${ARCHIVE}
-         exit 1
-      fi
-   fi
-
-   [ -z "${ARCHIVER}" ] && return 0
-
-   if [ ! -e "${SRC_DIR}" -o "${CLOBBER_SOURCE}" = "true" ]
-   then
-      rm -rf ${SRC_DIR}
-      echo Extracting ${ARCHIVE}
-      if [ "${MAKE_DIR}" = "true" ]
-      then
-         mkdir ${SRC_DIR}
-         cd ${SRC_DIR}
-         ${ARCHIVER} ../${ARCHIVE} > ../${ARCHIVE}.log 2>&1
-      else
-         ${ARCHIVER} ${ARCHIVE} > ${ARCHIVE}.log 2>&1
-         cd ${SRC_DIR}
-      fi
-      return 0
-   fi
-
-   cd ${SRC_DIR}
-   return 1
-}
-
-parse_output()
-{
-   sed -ne '/\\$/N' -e 's/\\\n//' -e 's/\t\+/ /g' -e 's/ \+/ /g' \
-       -e '/ error: /p' \
-       -e "s%.*Entering directory[ ]\\+.${DEPPKG_DIR}/\\([^ ]\+\).%Entering \\1%p" \
-       -e "s%.*Leaving directory[ ]\\+.${DEPPKG_DIR}/\\([^ ]\+.\).%Leaving \\1%p" \
-       -e '/gcc \|g\+\+ \|ar /!d' \
-       -e 's/ \(\.\.\/\)\+/ /g' \
-       -e 's/.* \([^ ]\+\(\.c\|\.cpp\|\.cc\|\.cxx\)\)\( .*\|\)$/Compiling \1/p' \
-       -e 's/.* \([^ ]\+\.s\)\( .*\|\)$/Assembling \1/p' \
-       -e 's/.*ar [^ ]\+ \([^ ]\+\)\(\( [^ ]\+\.o\)\+\)/Updating \1 -\2/p' \
-       -e 's/.* -o \([^ ]\+\)\( .*\|\)$/Linking \1/p'
-}
-
-do_patch()
-{
-   PATCH_FILE=${SCRIPT_DIR}/patches/$1; shift
-   
-   if patch -f -p0 "$@" >>patch.log < ${PATCH_FILE}
-   then
-      :
-   else
-      echo "Patch failed - Check `pwd`/patch.log" > /dev/tty
-      exit 1
-   fi
-}
-
-do_make()
-{
-   if make -f "$@" 2>&1
-   then
-      :
-   else
-      echo "Make failed - Check `pwd`/make.log" > /dev/tty
-      exit 1
-   fi | tee -a make.log | parse_output
-}
-
-process_zlib()
-{
-   if get_source "${URL_ZLIB}" "${DIR_ZLIB}" "${MKD_ZLIB}"
-   then
-      echo "Patching zlib"
-      >patch.log
-      do_patch zlib.patch
-   fi
-   echo Building zlib
-   > make.log
-   do_make win32/Makefile.mingw32 PREFIX=${DEPPKG_DIR} all
-   echo Installing zlib
-   do_make win32/Makefile.mingw32 PREFIX=${DEPPKG_DIR} install
-}
-
-process_rsync()
-{
-   get_source "${URL_RSYNC}" "${DIR_RSYNC}" "${MKD_RSYNC}"
-   ./configure --host=mingw32
-   echo Building librsync
-   do_make Makefile
-   echo Installing lib and headers
-   cp .libs/librsync.a ${DEPPKG_DIR}/lib
-   cp librsync*h ${DEPPKG_DIR}/include
-}
-
-process_pcre()
-{
-   if get_source "${URL_PCRE}" "${DIR_PCRE}" "${MKD_PCRE}"
-   then
-           echo Patching PCRE
-           >patch.log
-           do_patch pcre.patch
-           echo Configuring PCRE
-           ./configure CC_FOR_BUILD=gcc \
-                       CXX_FOR_BUILD=g++ \
-                       --host=mingw32 \
-                       --prefix=${DEPPKG_DIR} \
-                       --enable-utf8 \
-                       --enable-unicode-properties >make.log 2>&1
-   fi
-   echo Building PCRE
-   do_make Makefile PREFIX=${DEPPKG_DIR} all
-   echo Installing PCRE
-   do_make Makefile PREFIX=${DEPPKG_DIR} install
-}
-
-process_db()
-{
-   if get_source "${URL_DB}" "${DIR_DB}" "${MKD_DB}"
-   then
-          echo No Patch
-   fi
-   cd build_unix
-   ../dist/configure --host=mingw32 --enable-mingw --prefix=${DEPPKG_DIR}
-   > make.log
-   echo Building DB
-   do_make Makefile
-   echo Installing DB
-   do_make Makefile install_setup install_include install_lib
-}
-
-process_pthreads()
-{
-   if get_source "${URL_PTHREADS}" "${DIR_PTHREADS}" "${MKD_PTHREADS}"
-   then
-           echo Patching pthreads
-           >patch.log
-           do_patch pthreads.patch
-   fi
-   echo Building pthreads
-   > make.log
-   do_make GNUmakefile GCE
-   echo Installing pthreads
-   rm -rf ${DEPPKG_DIR}/include/pthreads
-   mkdir ${DEPPKG_DIR}/include/pthreads
-   cp -p *.h ${DEPPKG_DIR}/include/pthreads
-   cp -p *.dll ${DEPPKG_DIR}/bin
-   cp -p *.a ${DEPPKG_DIR}/lib
-}
-
-process_openssl()
-{
-   if get_source "${URL_OPENSSL}" "${DIR_OPENSSL}" "${MKD_OPENSSL}"
-   then
-           echo Patching openssl
-           >patch.log
-           do_patch openssl.patch
-           echo Configuring openssl
-           ./Configure --prefix=${DEPPKG_DIR} \
-                       shared zlib-dynamic \
-                       threads \
-                       --with-zlib-include=${DEPPKG_DIR}/include \
-                       mingw32 > make.log 2>&1
-   fi
-   echo Building openssl
-   perl util/mkdef.pl 32 libeay no-static-engine >ms/libeay32.def
-   perl util/mkdef.pl 32 ssleay >ms/ssleay32.def
-   do_make Makefile all
-   echo Installing openssl
-   do_make Makefile install_sw
-}
-
-process_mysql()
-{
-   get_source "${URL_MYSQL}" "${DIR_MYSQL}" "${DIR_MYSQL}" "${MKD_MYSQL}"
-   echo Converting mysql lib file
-   if [ -e ${BIN_DIR}/reimp ]
-   then
-           reimp --dlltool ${BIN_DIR}/mingw32-dlltool --as ${BIN_DIR}/mingw32-as lib/opt/libmysql.lib
-   else
-           ${BIN_DIR}/../mingw32/bin/reimp --dlltool ${BIN_DIR}/mingw32-dlltool --as ${BIN_DIR}/mingw32-as lib/opt/libmysql.lib
-   fi
-   echo Installing mysql
-   cp -p liblibmysql.a ../../lib/libmysql.a
-   rm -rf ../../include/mysql
-   mkdir ../../include/mysql
-   cp -p include/* ../../include/mysql 2>&1 | grep -v 'omitting directory'
-   cp -p lib/opt/libmysql.dll ../../bin
-}
-
-process_postgresql()
-{
-   if get_source "${URL_POSTGRESQL}" "${DIR_POSTGRESQL}" "${MKD_POSTGRESQL}"
-   then
-           echo Patching postgreSQL
-           >patch.log
-           do_patch postgresql.patch
-
-           # We need a native version of zic to build the timezone tables.
-           echo Configuring postgreSQL to build native zic
-           ./configure > make.log 2>&1
-
-           echo Building native zic
-           cd src/timezone
-           do_make Makefile >> make.log 2>&1
-           cp zic ../..
-           cd ../..
-           do_make GNUmakefile distclean >> make.log 2>&1
-
-           echo Configuring postgreSQL for MinGW32
-
-           ./configure --host=mingw32 \
-                       --enable-shared \
-                       --enable-thread-safety \
-                       --prefix=${DEPPKG_DIR} \
-                       --with-includes=${DEPPKG_DIR}/include:${DEPPKG_DIR}/include/pthreads \
-                       --with-libraries=${DEPPKG_DIR}/lib >> make.log 2>&1
-   fi
-   echo Building postgreSQL
-   ZIC=`pwd`/zic
-   do_make GNUmakefile AR=mingw32-ar DLLTOOL=mingw32-dlltool DLLWRAP=mingw32-dllwrap WINDRES=mingw32-windres PTHREAD_LIBS=-lpthreadGCE ZIC=${ZIC}
-   echo Installing postgreSQL
-   do_make GNUmakefile AR=mingw32-ar DLLTOOL=mingw32-dlltool DLLWRAP=mingw32-dllwrap WINDRES=mingw32-windres PTHREAD_LIBS=-lpthreadGCE ZIC=${ZIC} install
-}
-
-process_sqlite()
-{
-   if get_source "${URL_SQLITE}" "${DIR_SQLITE}" "${MKD_SQLITE}"
-   then
-           echo Patching SQLite
-           >patch.log
-           do_patch sqlite.patch
-   fi
-   echo Building SQLite
-   [ ! -e bld ] && mkdir bld
-   cd bld
-   > make.log
-   do_make ../Makefile.mingw32 CROSSTOOLS=${BIN_DIR} TLIBS="-L${DEPPKG_DIR}/lib" TCL_FLAGS="-I${DEPPKG_DIR}/include"
-   echo Installing SQLite
-   cp -p sqlite3.exe ${DEPPKG_DIR}/bin
-   cp -p libsqlite3.a ${DEPPKG_DIR}/lib
-   cp -p sqlite3.h ${DEPPKG_DIR}/include
-}
-
-process_wx()
-{
-   if get_source "${URL_WX}" "${DIR_WX}" "${MKD_WX}"
-   then
-      echo Patching wxWidgets
-      >patch.log
-      cp build/msw/config.gcc build/msw/config.mingw32
-      do_patch wxWidgets.patch
-      find . -name makefile.gcc -exec sh -c "sed -f ${SCRIPT_DIR}/patches/wx.sed {} > \`echo {} | sed -e 's/\.gcc$/\.mingw32/'\`" \;
-   fi
-   echo Building wxWidgets
-   cd build/msw
-   > make.log
-   do_make makefile.mingw32 SHARED=1 VENDOR=bacula DEBUG_INFO=1
-   echo Installing wxWidgets
-   cd ../..
-   rm -rf ../../include/wx
-   mkdir ../../include/wx
-   cp -p include/wx/* ../../include/wx 2>&1 | grep -v 'omitting directory'
-   mkdir ../../include/wx/generic
-   cp -p include/wx/generic/* ../../include/wx/generic 2>&1 | grep -v 'omitting directory'
-   mkdir ../../include/wx/msw
-   cp -p include/wx/msw/* ../../include/wx/msw 2>&1 | grep -v 'omitting directory'
-   mkdir ../../include/wx/msw/ole
-   cp -p include/wx/msw/ole/* ../../include/wx/msw/ole 2>&1 | grep -v 'omitting directory'
-   cp -p lib/gcc_dll/*.dll ../../bin
-   rm -rf ../../lib/wx_dll
-   mkdir ../../lib/wx_dll
-   cp -p lib/gcc_dll/*.a ../../lib/wx_dll
-   mkdir ../../lib/wx_dll/msw
-   cp -p lib/gcc_dll/msw/* ../../lib/wx_dll/msw 2>&1 | grep -v 'omitting directory'
-   mkdir ../../lib/wx_dll/msw/wx
-   cp -p lib/gcc_dll/msw/wx/* ../../lib/wx_dll/msw/wx 2>&1 | grep -v 'omitting directory'
-   mkdir ../../lib/wx_dll/msw/wx/msw
-   cp -p lib/gcc_dll/msw/wx/msw/* ../../lib/wx_dll/msw/wx/msw 2>&1 | grep -v 'omitting directory'
-}
-
-process_scons()
-{
-   get_source "${URL_SCONS}" "${DIR_SCONS}" "${MKD_SCONS}"
-   echo "Installing scons"
-   if python setup.py install --prefix=${DEPPKG_DIR}/scons > make.log 2>&1
-   then
-           :
-   else
-           echo "Make failed - Check `pwd`/make.log"
-           exit 1
-   fi
-}
-
-process_nsis()
-{
-   get_source "${URL_NSIS_BIN}" "${DIR_NSIS_BIN}" "${MKD_NSIS_BIN}"
-   cd ..
-   rm -rf ../nsis
-   mv nsis-2.17 ../nsis
-   if get_source "${URL_NSIS_SRC}" "${DIR_NSIS_SRC}" "${MKD_NSIS_SRC}"
-   then
-           echo "Patching nsis"
-           >patch.log
-           do_patch nsis.patch
-   fi
-   echo "Building nsis"
-   if ../../scons/bin/scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all \
-           PREFIX=${DEPPKG_DIR}/nsis PREFIX_BIN=${DEPPKG_DIR}/nsis/Bin \
-           PREFIX_CONF=${DEPPKG_DIR}/nsis PREFIX_DATA=${DEPPKG_DIR}/nsis \
-           PREFIX_DOC=${DEPPKG_DIR}/nsis/Docs 2>&1 | tee make.log | parse_output
-   then
-           :
-   else
-           echo "Scons failed - Check `pwd`/make.log"
-           exit 1
-   fi
-   echo "Installing nsis"
-   cp -p build/release/makensis/makensis ../../nsis
-}
-
-process_mtx()
-{
-   if get_source "${URL_MTX}" "${DIR_MTX}" "${MKD_MTX}"
-   then
-           echo Patching mtx
-           # We can't run configure in a cross-compile environment so we
-           # patch the files to the correct values
-           cp -f config.h.in config.h
-           cp -f Makefile.in Makefile
-           rm -f configure
-           >patch.log
-           do_patch mtx.patch
-   fi
-   echo Building mtx
-   do_make Makefile prefix=${DEPPKG_DIR} all
-   echo Installing mtx
-   do_make Makefile prefix=${DEPPKG_DIR} install
-}
-
-process_mt()
-{
-   if get_source "${URL_MT}" "${DIR_MT}" "${MKD_MT}"
-   then
-           echo "Patching mt"
-           >patch.log
-           do_patch mt.patch
-   fi
-   echo "Building mt"
-   do_make Makefile PREFIX=${DEPPKG_DIR} all
-   echo Installing mt
-   do_make Makefile PREFIX=${DEPPKG_DIR} install
-}
-
-process_sed()
-{
-   if get_source "${URL_SED}" "${DIR_SED}" "${MKD_SED}"
-   then
-           echo Patching sed
-           >patch.log
-           do_patch sed.patch
-           echo Configuring sed
-           ./configure --host=mingw32 \
-                       --prefix=${DEPPKG_DIR} \
-                       --disable-nls >make.log 2>&1
-   fi
-   echo Building sed
-   do_make Makefile all
-   echo Installing sed
-   do_make Makefile install
-}
-
-process_stab2cv()
-{
-   if get_source "${URL_STAB2CV}" "${DIR_STAB2CV}" "${MKD_STAB2CV}"
-   then
-           # echo Patching stab2cv
-           # >patch.log
-           # do_patch stab2cv.patch
-           echo Configuring stab2cv
-           ./configure --prefix=${DEPPKG_DIR}/tools \
-                       >make.log 2>&1
-   fi
-   echo Building stab2cv
-   do_make Makefile 
-   echo Installing stab2cv
-   do_make Makefile install
-}
-
-process_cmd_utils()
-{
-   if get_source "${URL_CMD_UTILS}" "${DIR_CMD_UTILS}" "${MKD_CMD_UTILS}"
-   then
-           # echo Patching cmd-utils
-           # >patch.log
-           # do_patch cmd-utils.patch
-           echo Configuring cmd-utils
-           ./configure --host=mingw32 \
-                       --prefix=${DEPPKG_DIR} \
-                       >make.log 2>&1
-   fi
-   echo Building cmd-utils
-   do_make Makefile 
-   echo Installing cmd-utils
-   do_make Makefile install
-}
-
-process_mkisofs()
-{
-   get_source "${URL_MKISOFS}" "${DIR_MKISOFS}" "${MKD_MKISOFS}"
-   echo Installing mkisofs
-   cp `basename ${URL_MKISOFS}` ${DEPPKG_DIR}/bin
-}
-
-process_dvd_rw_tools()
-{
-   if get_source "${URL_DVD_RW_TOOLS}" "${DIR_DVD_RW_TOOLS}" "${MKD_DVD_RW_TOOLS}"
-   then
-           echo Patching dvd+rw-tools
-           >patch.log
-           do_patch dvd+rw-tools.patch
-   fi
-   echo "Building dvd+rw-tools"
-   m4 -DOS=XMINGW32 Makefile.m4 | make -f - dvd+rw-tools >make.log 2>&1
-   echo "Installing dvd+rw-tools"
-   m4 -DOS=XMINGW32 Makefile.m4 | make -f - prefix=${DEPPKG_DIR} manprefix=${DEPPKG_DIR} install >>make.log 2>&1
-}
-
-process_qt4()
-{
-   get_source "${URL_Qt4}" "${DIR_Qt4}" "${MKD_Qt4}"
-   echo "Installing Qt4"
-   rm -rf ${DEPPKG_DIR}/include/qt ${DEPPKG_DIR}/include/src
-   cp -a include/* ${DEPPKG_DIR}/include/
-   rm -rf ${DEPPKG_DIR}/lib/qt
-#  cp -a ${DEPPKG_DIR}/src/${DIR_Qt4}/lib/* ${DEPPKG_DIR}/lib/
-   cp -a lib/* ${DEPPKG_DIR}/lib/
-   cp -p lib/qt/*.dll ${DEPPKG_DIR}/bin/
-}
-
-if [ "$#" -eq 0 ]
-then
-   process_zlib
-   process_rsync
-   process_pcre
-   process_pthreads
-   process_openssl
-   process_mysql
-   process_sqlite
-   process_postgresql
-   process_wx
-   process_scons
-   process_nsis
-   process_mtx
-   process_mt
-   process_sed
-   process_stab2cv
-   process_cmd_utils
-   process_mkisofs
-   process_dvd_rw_tools
-   process_qt4
-else
-   for dependency in "$@"
-   do
-      eval "process_${dependency}"
-   done
-fi
-#vss
-#Need to download from Microsoft
diff --git a/src/win32/build-depkgs-msvc.cmd b/src/win32/build-depkgs-msvc.cmd
deleted file mode 100644
index 3a7e8f4..0000000
--- a/src/win32/build-depkgs-msvc.cmd
+++ /dev/null
@@ -1,419 +0,0 @@
- at echo off
-SETLOCAL
-
-SET PERL_PATH=
-FOR /F "tokens=1" %%I in ( "perl.exe" ) DO SET PERL_PATH=%%~$PATH:I
-
-IF NOT "%PERL_PATH%"=="" GOTO :PERL_OK
-ECHO Perl must be in your PATH.  Please fix and rerun this script!
-EXIT /B 1
-
-:PERL_OK
-
-IF "%CLOBBER_SOURCE%"=="" SET CLOBBER_SOURCE=false
-
-FOR /F "eol=# delims=| tokens=1-4" %%I in ( External-msvc ) DO SET URL_%%I=%%J& SET DIR_%%I=%%K& SET MKD_%%I=%%L
-
-SET CWD=%CD%
-FOR %%I IN ( %0 ) DO CD %%~dpI
-SET SCRIPT_DIR=%CD%
-
-CD ..\..\..
-set TOP_DIR=%CD%
-
-IF NOT EXIST %TOP_DIR%\depkgs-msvc\nul MD %TOP_DIR%\depkgs-msvc
-
-cd %TOP_DIR%\depkgs-msvc
-set DEPPKG_DIR=%CD%
-
-cd %DEPPKG_DIR%
-
-IF /I "%CLOBBER_SOURCE:~0,1%"=="y" SET CLOBBER_SOURCE=true
-IF /I "%CLOBBER_SOURCE:~0,1%"=="t" SET CLOBBER_SOURCE=true
-IF /I "%CLOBBER_SOURCE:~0,1%"=="1" SET CLOBBER_SOURCE=true
-
-SET PATH=%DEPPKG_DIR%\tools;%PATH%
-SET INCLUDE=%INCLUDE%;%DEPPKG_DIR%\include
-SET LIB=%LIB%;%DEPPKG_DIR%\lib
-
-IF NOT EXIST bin\nul MKDIR bin
-IF NOT EXIST src\nul MKDIR src
-IF NOT EXIST include\nul MKDIR include
-IF NOT EXIST lib\nul MKDIR lib
-
-CD src
-
-COPY NUL parse_output.sed >nul 2>&1
-REM ECHO /\\$/N >>parse_output.sed
-REM ECHO s/\\\n// >>parse_output.sed
-ECHO s/\t\+/ /g >>parse_output.sed
-ECHO s/ \+/ /g >>parse_output.sed
-ECHO / [Ee]rror: /p >>parse_output.sed
-REM ECHO s;.*Entering directory[ ]\+.%DEPPKG_DIR%/\([^^ ]\+\).;Entering \1;p >>parse_output.sed
-REM ECHO s;.*Leaving directory[ ]\+.%DEPPKG_DIR%/\([^^ ]\+.\).;Leaving \1;p >>parse_output.sed
-ECHO /[Cc][Ll] \^|[Ll][Ii][Nn][Kk] \^|[Ll][Ii][Bb] /!d >>parse_output.sed
-ECHO s; \(\.\.\\\)\+; ;g >>parse_output.sed
-ECHO s; \.\\; ;g >>parse_output.sed
-ECHO s/.* \([^^ ]\+\(\.[Cc]\^|\.[Cc][Pp][Pp]\^|\.[Cc][Cc]\^|\.[Cc][Xx][Xx]\)\)\( .*\^|\)$/Compiling \1/p >>parse_output.sed
-ECHO s/.* \([^^ ]\+\.[Aa][Ss][Mm]\)\( .*\^|\)$/Assembling \1/p >>parse_output.sed
-ECHO s/.* \/[Oo][Uu][Tt]:\(\.\\\)*\(\.\.\\\)*\([^^ ]\+\)\( .*\^|\)$/Linking \3/p >>parse_output.sed
-REM ECHO s/.*[Ll][Ii][Bb] [^^ ]\+ \([^^ ]\+\)\(\( [^^ ]\+\.o\)\+\)/Updating \1 -\2/p >>parse_output.sed
-
-IF NOT "%1"=="" GOTO :ProcessArgs
-	CALL :process_zlib
-REM	CALL :process_pcre
-	CALL :process_pthreads
-	CALL :process_openssl
-	CALL :process_mysql
-	CALL :process_sqlite
-	CALL :process_postgreSQL
-	CALL :process_wx
-REM	CALL :process_scons
-	CALL :process_nsis
-	CALL :process_mtx
-	CALL :process_mt
-	CALL :process_sed
-	CALL :process_cmd_utils
-	CALL :process_mkisofs
-	CALL :process_dvd_rw_tools
-	GOTO :EOF
-
-:ProcessArgs
-	IF "%1"=="" GOTO :EOF
-	
-	CALL :process_%1
-	SHIFT
-	GOTO :ProcessArgs
-
-:get_source
-	SET URL=%1
-	SET SRC_DIR=%2
-	SET MAKE_SRC_ENABLE=%3
-	SET BASENAME=
-
-	IF NOT "%SRC_DIR%"=="" GOTO :get_source_make_src
-	FOR %%I IN ( %URL% ) DO (SET BASENAME=%%~nI& IF NOT "%%~xI"==".gz" IF NOT "%%~xI"==".bz2" SET SRC_DIR=%%~nI)
-	IF "%SRC_DIR%"=="" FOR %%I IN ( %BASENAME% ) DO SET SRC_DIR=%%~nI
-
-:get_source_make_src
-	SET MAKE_SRC_DIR=
-	IF /I "%MAKE_SRC_ENABLE:~0,1%"=="y" SET MAKE_SRC_DIR=true
-	IF /I "%MAKE_SRC_ENABLE:~0,1%"=="t" SET MAKE_SRC_DIR=true
-	IF /I "%MAKE_SRC_ENABLE:~0,1%"=="1" SET MAKE_SRC_DIR=true
-
-	FOR %%I IN ( %URL% ) DO ( SET ARCHIVE=%%~nxI& SET ARCHIVE_EXT=%%~xI)
-	
-	CD %DEPPKG_DIR%\src
-	
-	IF EXIST %ARCHIVE% GOTO :get_source_check_srcdir
-	ECHO Downloading %URL%
-	wget -nv --passive-ftp "%URL%"
-	IF NOT ERRORLEVEL 1 GOTO :get_source_extract
-	ECHO Unable to download %ARCHIVE%
-	EXIT /B 2
-
-:get_source_check_srcdir
-	IF /I "%ARCHIVE_EXT%"==".exe" EXIT /B 0
-	IF NOT EXIST %SRC_DIR%\nul GOTO :get_source_extract
-	IF NOT "%CLOBBER_SOURCE%"=="true" GOTO :get_source_skipped
-	IF EXIST %SRC_DIR%\nul RD /s /q "%SRC_DIR%"
-:get_source_extract
-	IF /I "%ARCHIVE_EXT%"==".exe" EXIT /B 0
-	SET TAR_ARCHIVE=
-	FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".gz" SET TAR_ARCHIVE=%%~nI
-	FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".bz2" SET TAR_ARCHIVE=%%~nI
-
-	SET TARGET_DIR=.
-	IF DEFINED MAKE_SRC_DIR IF NOT EXIST %SRC_DIR%\nul MKDIR %SRC_DIR%
-	IF DEFINED MAKE_SRC_DIR SET TARGET_DIR=%SRC_DIR%
-
-	ECHO Extracting %ARCHIVE%
-	7z x -bd -y -o"%TARGET_DIR%" "%ARCHIVE%" 2>&1 > "%ARCHIVE%.log"
-	IF ERRORLEVEL 1 EXIT /B 2
-	IF NOT DEFINED TAR_ARCHIVE GOTO :get_source_done
-	ECHO Extracting %TAR_ARCHIVE%
-	7z x -bd -y -o"%TARGET_DIR%" "%TARGET_DIR%\%TAR_ARCHIVE%" & del /q "%TAR_ARCHIVE%" 2>&1 >> "%ARCHIVE%.log"
-
-:get_source_done
-	CD "%SRC_DIR%"
-	EXIT /B 0
-
-:get_source_skipped
-	CD %SRC_DIR%
-	EXIT /B 1
-
-:process_zlib
-	CALL :get_source %URL_ZLIB% %DIR_ZLIB% %MKD_ZLIB%
-	ECHO Building zlib
-	COPY /Y nul make.log
-REM	XCOPY contrib\masmx86\gvmat32.asm . /Y
-REM	XCOPY contrib\masmx86\gvmat32c.c . /Y
-REM	XCOPY contrib\masmx86\inffas32.asm . /Y
-REM	CALL :do_nmake win32\Makefile.msc AS=nasmw ASFLAGS= LOC="-D_CRT_SECURE_NO_DEPRECATE -DASMV -DASMINF" OBJA="gvmat32c.obj gvmat32.obj inffas32.obj" all
-	CALL :do_nmake win32\Makefile.msc LOC="-D_CRT_SECURE_NO_DEPRECATE" all
-	ECHO Installing zlib
-	XCOPY zlib1.dll.manifest %DEPPKG_DIR%\bin\ /Y
-	XCOPY zlib1.dll %DEPPKG_DIR%\bin\ /Y
-	XCOPY zlib.lib %DEPPKG_DIR%\lib\ /Y
-	XCOPY zdll.lib %DEPPKG_DIR%\lib\ /Y
-	XCOPY zlib.h %DEPPKG_DIR%\include\ /Y
-	XCOPY zconf.h %DEPPKG_DIR%\include\ /Y
-	EXIT /B 0
-
-:process_pcre
-	CALL :get_source %URL_PCRE% %DIR_PCRE% %MKD_PCRE%
-REM	ECHO Patching PCRE
-REM	COPY /Y nul patch.log
-REM	do_patch pcre.patch
-	ECHO Configuring PCRE
-	./configure CC_FOR_BUILD=gcc CXX_FOR_BUILD=g++ --host=mingw32 --prefix=%DEPPKG_DIR% --enable-utf8 --enable-unicode-properties 2>&1 > make.log
-	ECHO Building PCRE
-	do_make Makefile PREFIX=%DEPPKG_DIR% all
-	ECHO Installing PCRE
-	do_make Makefile PREFIX=%DEPPKG_DIR% install
-	EXIT /B 0
-
-:process_pthreads
-	CALL :get_source %URL_PTHREADS% %DIR_PTHREADS% %MKD_PTHREADS%
-	FOR %%I IN ( %URL_PTHREADS% ) DO (SET ARCHIVE=%%~nxI)
-	IF EXIST %SRC_DIR%\nul GOTO :install_pthreads
-	ECHO Extracting %ARCHIVE%
-	7z x -bd -y -o"%DIR_PTHREADS%" "%ARCHIVE%" 2>&1 > "%ARCHIVE%.log"
-:install_pthreads
-	CD %DIR_PTHREADS%
-	ECHO Installing pthreads
-	XCOPY Pre-built\include\*.h %DEPPKG_DIR%\include\ /Y
-	XCOPY Pre-built\lib\pthreadVCE.lib %DEPPKG_DIR%\lib\ /Y
-	XCOPY Pre-built\lib\pthreadVCE.dll %DEPPKG_DIR%\bin\ /Y
-	EXIT /B 0
-
-:process_openssl
-	CALL :get_source %URL_OPENSSL% %DIR_OPENSSL% %MKD_OPENSSL%
-	IF ERRORLEVEL 2 GOTO :OpenSSLError
-	ECHO Configuring openssl
-	perl Configure VC-WIN32 --prefix=%DEPPKG_DIR:\=/% > make.log
-	ECHO Building openssl
-	CALL ms\do_nasm
-	@ECHO off
-	CALL :do_nmake ms\ntdll.mak 
-	@ECHO off
-	ECHO Installing openssl
-	CALL :do_nmake ms\ntdll.mak install
-	EXIT /B 0
-:OpenSSLError
-	ECHO Unable to download OpenSSL source from %URL_OPENSSL%
-	EXIT /B 1
-
-:process_mysql
-	CALL :get_source %URL_MYSQL% %DIR_MYSQL% %MKD_MYSQL%
-	ECHO Installing mysql
-	IF EXIST ..\..\include\mysql\nul RD /s /q ..\..\include\mysql
-	XCOPY include\* ..\..\include\mysql\ /e/h/k/y 2>&1
-	XCOPY lib\opt\libmysql.lib ..\..\lib\ /y
-	XCOPY lib\opt\libmysql.dll ..\..\bin\ /y
-	EXIT /B 0
-
-:process_postgreSQL
-	CALL :get_source %URL_POSTGRESQL% %DIR_POSTGRESQL% %MKD_POSTGRESQL%
-	IF ERRORLEVEL 2 GOTO :pstgreSQL_Error1
-	CALL :get_source %URL_POSTGRESQL_SRC% %DIR_POSTGRESQL_SRC% %MKD_POSTGRESQL_SRC%
-	IF ERRORLEVEL 2 GOTO :pstgreSQL_Error2
-REM	ECHO Patching postgreSQL
-REM	COPY /Y nul patch.log
-REM	do_patch postgresql.patch
-	ECHO Installing postgreSQL
-	XCOPY ..\pgsql\include\libpq-fe.h ..\..\include\ /Y 2>&1
-	XCOPY ..\pgsql\include\postgres_ext.h ..\..\include\ /Y 2>&1
-	LIB /def:src\interfaces\libpq\libpqdll.def /out:..\..\lib\libpqdll.lib /machine:x86 /subsystem:console
-	XCOPY ..\pgsql\bin\libpq.dll ..\..\bin\ /Y
-	XCOPY ..\pgsql\bin\comerr32.dll ..\..\bin\ /Y
-	XCOPY ..\pgsql\bin\krb5_32.dll ..\..\bin\ /Y
-	XCOPY ..\pgsql\bin\libintl-2.dll ..\..\bin\ /Y
-	XCOPY ..\pgsql\bin\libiconv-2.dll ..\..\bin\ /Y
-	EXIT /B 0
-:pstgreSQL_Error1
-	ECHO Unable to download postgreSQL binaries from %URL_POSTGRESQL%
-	EXIT /B 1
-:pstgreSQL_Error2
-	ECHO Unable to download postgreSQL source from %URL_POSTGRESQL_SRC%
-	EXIT /B 1
-
-:process_sqlite
-	CALL :get_source %URL_SQLITE% %DIR_SQLITE% %MKD_SQLITE%
-	IF ERRORLEVEL 2 GOTO :sqlite_error
-	IF ERRORLEVEL 1 GOTO :sqlite_skip_patch
-	ECHO Patching SQLite
-	COPY /Y nul patch.log
-	CALL :do_patch sqlite_msc.patch
-:sqlite_skip_patch
-	ECHO Configuring SQLite
-	IF NOT EXIST bld/nul MKDIR bld
-	CD bld
-	ECHO Building SQLite
-	COPY /Y nul make.log
-	CALL :do_nmake ../Makefile.msvc clean all
-	ECHO Installing SQLite
-	COPY sqlite3.exe %DEPPKG_DIR%\bin
-	COPY sqlite3.exe.manifest %DEPPKG_DIR%\bin
-	COPY sqlite3.lib %DEPPKG_DIR%\lib
-	COPY sqlite3.h %DEPPKG_DIR%\include
-	EXIT /B 0
-:sqlite_error
-	ECHO Unable to download sqlite source from %URL_SQLITE%
-	EXIT /B 1
-
-:process_wx
-	CALL :get_source %URL_WX% %DIR_WX% %MKD_WX%
-	IF ERRORLEVEL 2 GOTO :wx_error
-REM	IF ERRORLEVEL 1 GOTO :wx_skip_patch
-REM	ECHO Patching wxWidgets
-REM	COPY /Y nul patch.log
-REM	do_patch wx1.patch -o build/msw/config.mingw32
-REM	do_patch wx2.patch
-REM	find . -name makefile.gcc -exec sh -c "sed -f %SCRIPT_DIR%/patches/wx.sed {% > \`ECHO {% | sed s/\.gcc$/\.mingw32/\`" \;
-	ECHO Building wxWidgets
-	cd build\msw
-	COPY /Y nul make.log
-	CALL :do_nmake makefile.vc BUILD=release SHARED=1 VENDOR=bacula DEBUG_INFO=1 CPPFLAGS=-D_USE_32BIT_TIME_T
-	ECHO Installing wxWidgets
-	cd ..\..
-	IF EXIST ..\..\include\wx\nul RD /s /q ..\..\include\wx
-	XCOPY include\wx ..\..\include\wx\ 2>&1
-	XCOPY include\wx\generic ..\..\include\wx\generic\ /e 2>&1
-	XCOPY include\wx\msw ..\..\include\wx\msw\ /e 2>&1
-	XCOPY lib\vc_dll\*.dll ..\..\bin\ /y 
-	IF EXIST ..\..\lib\wx_dll\nul RD /s /q ..\..\lib\wx_dll
-	XCOPY lib\vc_dll\*.lib ..\..\lib\wx_dll\
-	XCOPY lib\vc_dll\msw ..\..\lib\wx_dll\msw\ /e 2>&1
-	EXIT /B 0
-:wx_error
-	ECHO Unable to download wxWidgets source from %URL_MTX%
-	EXIT /B 1
-
-:process_nsis
-	CALL :get_source %URL_NSIS_BIN% %DIR_NSIS_BIN% %MKD_NSIS_BIN%
-	CD ..
-	IF EXIST ..\nsis\nul RD /s /q ..\nsis
-	MOVE nsis-2.17 ..\nsis
-	EXIT /B 0
-
-:process_mtx
-	CALL :get_source %URL_MTX% %DIR_MTX% %MKD_MTX%
-	IF ERRORLEVEL 2 GOTO :mtx_error
-	IF ERRORLEVEL 1 GOTO :mtx_skip_patch
-	ECHO Patching mtx
-	COPY /Y config.h.in config.h
-	COPY /Y Makefile.in Makefile
-	COPY /Y nul patch.log
-	CALL :do_patch mtx.patch
-	CALL :do_patch mtx-msvc1.patch
-	CALL :do_patch mtx-msvc2.patch
-:mtx_skip_patch
-	ECHO Building mtx
-	CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
-	ECHO Installing mtx
-	CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
-	EXIT /B 0
-:mtx_error
-	ECHO Unable to download mtx source from %URL_MTX%
-	EXIT /B 1
-
-:process_mt
-	CALL :get_source %URL_MT% %DIR_MT% %MKD_MT%
-	IF ERRORLEVEL 2 GOTO :mt_error
-	IF ERRORLEVEL 1 GOTO :mt_skip_patch
-	ECHO Patching mt
-	COPY /Y nul patch.log
-	CALL :do_patch mt.patch
-:mt_skip_patch
-	ECHO Building mt
-	CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
-	ECHO Installing mt
-	CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
-	EXIT /B 0
-:mt_error
-	ECHO Unable to download mt source from %URL_MT%
-	EXIT /B 1
-
-:process_sed
-	CALL :get_source %URL_SED% %DIR_SED% %MKD_SED%
-	IF ERRORLEVEL 2 GOTO :sed_error
-	IF ERRORLEVEL 1 GOTO :sed_skip_patch
-	ECHO Patching sed
-	COPY /Y nul patch.log
-	CALL :do_patch sed_msc.patch
-:sed_skip_patch
-	ECHO Building sed
-	CALL :do_nmake Makefile.msc all
-	ECHO Installing sed
-	CALL :do_nmake Makefile.msc install
-	EXIT /B 0
-:sed_error
-	ECHO Unable to download sed source from %URL_MT%
-	EXIT /B 1
-
-:process_cmd_utils
-	CALL :get_source %URL_CMD_UTILS% %DIR_CMD_UTILS% %MKD_CMD_UTILS%
-	IF ERRORLEVEL 2 GOTO :cmd_utils_error
-	IF ERRORLEVEL 1 GOTO :cmd_utils_skip_patch
-REM	ECHO Patching cmd-utils
-REM	COPY /Y nul patch.log
-REM	CALL :do_patch cmd_utils_msc.patch
-:cmd_utils_skip_patch
-	ECHO Building cmd-utils
-	vcbuild /nologo cmd-utils.sln "Release|WIN32" 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
-	IF ERRORLEVEL 1 GOTO :cmd_utils_build_error
-	ECHO Installing cmd-utils
-	XCOPY Release\*.exe %DEPPKG_DIR%\bin
-	EXIT /B 0
-:cmd_utils_build_error
-	ECHO Make failed - Check %CD%\make.log > con
-	EXIT /B 1
-:cmd_utils_error
-	ECHO Unable to download cmd-utils source from %URL_MT%
-	EXIT /B 1
-
-:process_mkisofs
-	CALL :get_source %URL_MKISOFS% %DIR_MKISOFS% %MKD_MKISOFS%
-	IF ERRORLEVEL 2 GOTO :mkisofs_error
-	ECHO Installing mkisofs
-	FOR %%i IN ( %URL_MKISOFS% ) DO XCOPY %DEPPKG_DIR%\src\%%~nxi %DEPPKG_DIR%\bin /Y /Q >nul 2>&1
-	EXIT /B 0
-:mkisofs_error
-	ECHO Unable to download mkisofs source from %URL_MKISOFS%
-	EXIT /B 1
-
-:process_dvd_rw_tools
-	CALL :get_source %URL_DVD_RW_TOOLS% %DIR_DVD_RW_TOOLS% %MKD_DVD_RW_TOOLS%
-	IF ERRORLEVEL 2 GOTO :dvd_rw_tools_error
-	IF ERRORLEVEL 1 GOTO :dvd_rw_tools_skip_patch
-	ECHO Patching dvd+rw-tools
-	COPY /Y nul patch.log
-	CALL :do_patch dvd+rw-tools.patch
-:dvd_rw_tools_skip_patch
-	ECHO Building dvd+rw-tools
-	IF NOT EXIST Release\nul MKDIR Release
-	CALL :do_nmake Makefile.msc dvd+rw-tools
-	ECHO Installing dvd+rw-tools
-	CALL :do_nmake Makefile.msc prefix=%DEPPKG_DIR% install
-	EXIT /B 0
-:dvd_rw_tools_error
-	ECHO Unable to download dvd+rw-tools source from %URL_DVD_RW_TOOLS%
-	EXIT /B 1
-
-:do_patch
-	SET PATCH_FILE=%SCRIPT_DIR%\patches\%1
-	SHIFT
-	patch -f -p0 %2 %3 %4 %5 %6 %7 %8 %9 >>patch.log < %PATCH_FILE%
-	IF NOT ERRORLEVEL 1 EXIT/B 0
-	ECHO Patch failed - Check %CD%\patch.log > con
-	EXIT /B 1
-
-:do_nmake
-	nmake /nologo -f %* 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
-	IF NOT ERRORLEVEL 1 EXIT /B 0
-	ECHO Make failed - Check %CD%\make.log > con
-	EXIT /B 1
-
-#vss
-#Need to download from Microsoft
diff --git a/src/win32/build-msvc.cmd b/src/win32/build-msvc.cmd
deleted file mode 100644
index ae6434d..0000000
--- a/src/win32/build-msvc.cmd
+++ /dev/null
@@ -1,7 +0,0 @@
- at echo off
-setlocal
-PATH ..\..\..\depkgs-msvc\tools;%PATH%
-for /f %%i in ( 'sed -ne "s/.*[ \t]VERSION[ \t][ \t]*\x22\(.*\)\x22/\1/p" ^< ..\version.h' ) do @set VERSION=%%i 
-echo Building Bacula version %VERSION%
-vcbuild bacula.sln %*
-endlocal
diff --git a/src/win32/build-win32-cross-tools b/src/win32/build-win32-cross-tools
deleted file mode 100755
index 9d05f88..0000000
--- a/src/win32/build-win32-cross-tools
+++ /dev/null
@@ -1,554 +0,0 @@
-#!/bin/sh
-
-# This is my script for building a complete MinGW cross-compiler toolchain
-# that runs under Linux to produce executables that run under Windows.  It
-# probably works (or can easily be adapted to work) under any unix system.
-#
-# It is based in large part on Sam Lantinga's script, which in turn was
-# based partly on Ray Kelm's script, which in turn was built on
-# Mo Dejong's script for doing the same, but with some added fixes.
-#
-# My changes:
-#       1. Adapted the script to the new packaging of MinGW GCC, which is
-#          currently split into core and auxiliary components.
-#       2. The script now determines the GCC and BINUTILS directory name
-#          directly from the tar file contents.  This gets around common
-#          problems due to the directory names not always following the
-#          expected patterns.
-#       3. Grouped together and simplified the macros that users need to
-#          define.
-#       4. Made optional components truly optional -- leave the
-#          corresponding archive names blank and they will be ignored.
-#       5. Included an option to purge the installation directory before
-#          installing the current cross-compiler.
-#
-# NOTE: If you choose a destination directory for the installation (set
-# in the macro PREFIX) for which you do not have write access, you will
-# need to run this script with root (or equivalent) privileges.
-#
-#
-# Updated by Igor Mikolic-Torreira <igormt at alumni.caltech.edu>
-
-
-
-#-----------------------------------------------------
-#
-# BEGIN USER SETTINGS
-#
-# You need to review and adjust the macros that follow
-#
-#-----------------------------------------------------
-
-
-# Directory where cross-tools directory will be placed
-TOPDIR=../../..
-TOPDIR=${DEPKGS:-${TOPDIR}}
-# Cross tools directory name under TOPDIR
-CROSSTOOLS=cross-tools
-# What flavor of GCC cross-compiler are we building? under CROSSTOOLS
-TARGET=mingw32
-
-cwd=`pwd`
-
-cd ${TOPDIR}
-# Make TOPDIR absolute 
-TOPDIR=`pwd`
-TOPDIR=${DEPKGS:-${TOPDIR}}
-
-cd ${cwd}/`dirname $0`
-SCRIPTDIR=`pwd`
-
-cd ${cwd}
-
-BUILDDIR=${TOPDIR}/${CROSSTOOLS}
-
-# Where does the cross-compiler go?
-# This should be the directory into which your cross-compiler
-# will be installed.  Remember that if you set this to a directory
-# that only root has write access to, you will need to run this
-# script as root.
-
-PREFIX=${BUILDDIR}/${TARGET}
-mkdir -p ${BUILDDIR}
-mkdir -p ${BUILDDIR}/${TARGET}
-
-echo "Building cross tools in ${BUILDDIR} ..."
-echo " "
-
-# Purge anything and everything already in the $PREFIX
-#(also known as the destination or installation) directory?
-# Set to "Y" to purge, any other value omits the purge step.
-
-PURGE_DIR="Y"
-
-
-# Set the following to the files from the current MinGW release
-# (or whichever MinGW release you wish to build and install)
-# You need to set both the URL they will be downloaded from
-# and the exact name of the individual component files.
-
-#MINGW_URL="http://superb-west.dl.sourceforge.net/sourceforge/mingw"
-MINGW_URL="http://www.bacula.org/cross-tools"
-
-# GCC_CORE is required; the other components are optional.
-# Set any you don't want to "".  You need binutils,
-# mingw runtime and w32api; do not ever set those to "".
-
-GCC_CORE_ARCHIVE="gcc-core-3.4.5-20060117-1-src.tar.gz"
-GCC_GPP_ARCHIVE="gcc-g++-3.4.5-20060117-1-src.tar.gz"
-GCC_G77_ARCHIVE=""
-GCC_OBJC_ARCHIVE=""
-GCC_JAVA_ARCHIVE=""
-GCC_ADA_ARCHIVE=""
-GCC_PATCH=""
-
-# GCC_G77_ARCHIVE="gcc-g77-3.4.2-20040916-1-src.tar.gz"
-# GCC_OBJC_ARCHIVE="gcc-objc-3.4.2-20040916-1-src.tar.gz"
-# GCC_JAVA_ARCHIVE="gcc-java-3.4.2-20040916-1-src.tar.gz"
-
-BINUTILS_ARCHIVE="binutils-2.16.91-20060119-1-src.tar.gz"
-BINUTILS_PATCH="binutils_texinfo_version.patch"
-
-MINGW_ARCHIVE="mingw-runtime-3.9.tar.gz"
-
-W32API_ARCHIVE="w32api-3.7.tar.gz"
-
-MINGW_UTILS_ARCHIVE="mingw-utils-0.3-src.tar.gz"
-
-# These are the files from the SDL website
-# These are optional, set them to "" if you don't want them)
-
-#SDL_URL="http://www.libsdl.org/extras/win32/common"
-SDL_URL="http://www.bacula.org/cross-tools"
-
-OPENGL_ARCHIVE="opengl-devel.tar.gz"
-DIRECTX_ARCHIVE="directx-devel.tar.gz"
-
-
-
-#-----------------------------------------------------
-#
-# END USER SETTINGS
-#
-# The remainder of the script should not neet any edits
-#
-#-----------------------------------------------------
-
-
-
-# Make sure these are initialized as we want them
-
-GCC_CORE=""
-BINUTILS=""
-GCC_LANGS="c"
-
-
-# Set our build directory and where our sources will go
-
-if [ "x$BUILDDIR" = "x" ]; then
-        # Default to the current directory
-        BUILDDIR=$(pwd)
-fi
-SRCDIR="$BUILDDIR/source"
-
-
-# Need install directory first on the path so gcc can find binutils
-
-PATH="$PREFIX/bin:$PATH"
-
-
-
-#-----------------------------------------------------
-#
-# Functions that do most of the work
-#
-#-----------------------------------------------------
-
-
-download_files()
-{
-        # Download a file from a given url, only if it is not present
-        mkdir -p "$SRCDIR"
-
-        # Make sure wget is installed
-        if test "x`which wget`" = "x" ; then
-                echo "You need to install wget."
-                exit 1
-        fi
-        download_file "$GCC_CORE_ARCHIVE" "$MINGW_URL"
-        if [ "x$GCC_GPP_ARCHIVE" != "x" ]; then
-                download_file "$GCC_GPP_ARCHIVE" "$MINGW_URL"
-        fi
-        if [ "x$GCC_G77_ARCHIVE" != "x" ]; then
-                download_file "$GCC_G77_ARCHIVE" "$MINGW_URL"
-        fi
-        if [ "x$GCC_OBJC_ARCHIVE" != "x" ]; then
-                download_file "$GCC_OBJC_ARCHIVE" "$MINGW_URL"
-        fi
-        if [ "x$GCC_JAVA_ARCHIVE" != "x" ]; then
-                download_file "$GCC_JAVA_ARCHIVE" "$MINGW_URL"
-        fi
-        if [ "x$GCC_ADA_ARCHIVE" != "x" ]; then
-                download_file "$GCC_ADA_ARCHIVE" "$MINGW_URL"
-        fi
-
-        download_file "$BINUTILS_ARCHIVE" "$MINGW_URL"
-        download_file "$MINGW_ARCHIVE" "$MINGW_URL"
-        download_file "$W32API_ARCHIVE" "$MINGW_URL"
-
-        if [ "x$MINGW_UTILS_ARCHIVE" != "x" ]; then
-                download_file "$MINGW_UTILS_ARCHIVE" "$MINGW_URL"
-        fi
-
-        if [ "x$OPENGL_ARCHIVE" != "x" ]; then
-                download_file "$OPENGL_ARCHIVE" "$SDL_URL"
-        fi
-        if [ "x$DIRECTX_ARCHIVE" != "x" ]; then
-                download_file "$DIRECTX_ARCHIVE" "$SDL_URL"
-        fi
-}
-
-
-download_file()
-{
-        cd "$SRCDIR"
-        if test ! -f $1 ; then
-                echo "Downloading $1"
-                wget "$2/$1"
-                if test ! -f $1 ; then
-                        echo "Could not download $1"
-                        exit 1
-                fi
-        else
-                echo "Found $1 in the srcdir $SRCDIR"
-        fi
-        cd "$BUILDDIR"
-}
-
-
-purge_existing_install()
-{
-        echo "Purging the existing files in $PREFIX"
-        if cd "$PREFIX"; then
-                rm -rf *
-        fi
-        cd "$BUILDDIR"
-}
-
-
-install_libs()
-{
-        echo "Installing cross libs and includes"
-        mkdir -p "$PREFIX/$TARGET"
-        cd "$PREFIX/$TARGET"
-
-        tar -xzf "$SRCDIR/$MINGW_ARCHIVE"
-        tar -xzf "$SRCDIR/$W32API_ARCHIVE"
-
-        if [ "x$OPENGL_ARCHIVE" != "x" ]; then
-                tar -xzf "$SRCDIR/$OPENGL_ARCHIVE"
-        fi
-
-        if [ "x$DIRECTX_ARCHIVE" != "x" ]; then
-                tar -xzf "$SRCDIR/$DIRECTX_ARCHIVE"
-        fi
-
-        cd "$BUILDDIR"
-}
-
-
-extract_binutils()
-{
-        cd "$SRCDIR"
-        BINUTILS=`tar -tzf "$SRCDIR/$BINUTILS_ARCHIVE" | head -n 1`
-        if [ "x${BINUTILS}" != "x./" ]; then
-           rm -rf "$BINUTILS"
-        fi
-        echo "Extracting binutils"
-        tar -xzf "$SRCDIR/$BINUTILS_ARCHIVE"
-        cd "$BUILDDIR"
-}
-
-patch_binutils()
-{
-        if [ "$BINUTILS_PATCH" != "" ]; then
-                echo "Patching binutils"
-                cd "$SRCDIR/$BINUTILS"
-                patch -p1 < "${cwd}/patches/$BINUTILS_PATCH"
-                cd "$BUILDDIR"
-        fi
-}
-
-
-configure_binutils()
-{
-        cd "$BUILDDIR"
-        rm -rf "binutils-$TARGET"
-        mkdir "binutils-$TARGET"
-        cd "binutils-$TARGET"
-        echo "Configuring binutils"
-        "$SRCDIR/$BINUTILS/configure" --prefix="$PREFIX" --target=$TARGET --disable-nls \
-                --with-gcc --with-gnu-as --with-gnu-ld --disable-shared 2>&1 > configure.log
-        cd "$BUILDDIR"
-}
-
-
-build_binutils()
-{
-        cd "$BUILDDIR/binutils-$TARGET"
-        echo "Building binutils"
-        make CFLAGS="-O2 -fno-exceptions" LDFLAGS="-s" 2>&1 > make.log
-        if test $? -ne 0; then
-                echo "make of binutils failed - log available: binutils-$TARGET/make.log"
-                exit 1
-        fi
-        cd "$BUILDDIR"
-}
-
-
-install_binutils()
-{
-        cd "$BUILDDIR/binutils-$TARGET"
-        echo "Installing binutils"
-        make install 2>&1 > make-install.log
-        if test $? -ne 0; then
-                echo "install of binutils failed - log available: binutils-$TARGET/make-install.log"
-                exit 1
-        fi
-        cd "$BUILDDIR"
-}
-
-
-extract_gcc()
-{
-        cd "$SRCDIR"
-        GCC=`tar -tzf "$SRCDIR/$GCC_CORE_ARCHIVE" | head -n 1`
-#       rm -rf "$GCC"
-        echo "====== GCC ${GCC} ========="
-        echo "Extracting gcc"
-        tar -xzf "$SRCDIR/$GCC_CORE_ARCHIVE"
-        if [ "x$GCC_GPP_ARCHIVE" != "x" ]; then
-                GCC_LANGS=${GCC_LANGS}",c++"
-                tar -xzf "$SRCDIR/$GCC_GPP_ARCHIVE"
-        fi
-        if [ "x$GCC_G77_ARCHIVE" != "x" ]; then
-                GCC_LANGS=${GCC_LANGS}",f77"
-                tar -xzf "$SRCDIR/$GCC_G77_ARCHIVE"
-        fi
-        if [ "x$GCC_OBJC_ARCHIVE" != "x" ]; then
-                GCC_LANGS=${GCC_LANGS}",objc"
-                tar -xzf "$SRCDIR/$GCC_OBJC_ARCHIVE"
-        fi
-        if [ "x$GCC_JAVA_ARCHIVE" != "x" ]; then
-                GCC_LANGS=${GCC_LANGS}",java"
-                tar -xzf "$SRCDIR/$GCC_JAVA_ARCHIVE"
-        fi
-        if [ "x$GCC_ADA_ARCHIVE" != "x" ]; then
-                GCC_LANGS=${GCC_LANGS}",ada"
-                tar -xzf "$SRCDIR/$GCC_ADA_ARCHIVE"
-        fi
-        cd "$BUILDDIR"
-}
-
-
-patch_gcc()
-{
-        if [ "$GCC_PATCH" != "" ]; then
-                echo "Patching gcc"
-                cd "$SRCDIR/$GCC"
-                patch -p1 < "$SRCDIR/$GCC_PATCH"
-                cd "$BUILDDIR"
-        fi
-}
-
-
-configure_gcc()
-{
-        cd "$BUILDDIR"
-        rm -rf "gcc-$TARGET"
-        mkdir "gcc-$TARGET"
-        cd "gcc-$TARGET"
-        echo "Configuring gcc"
-        "$SRCDIR/$GCC/configure" -v \
-                --prefix="$PREFIX" --target=$TARGET \
-                --with-headers="$PREFIX/$TARGET/include" \
-                --with-gcc --with-gnu-ld --with-gnu-as \
-                --enable-threads --disable-nls --enable-languages=$GCC_LANGS \
-                --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj \
-                --disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug \
-                --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug \
-                2>&1 > configure.log
-        cd "$BUILDDIR"
-}
-
-
-build_gcc()
-{
-        cd "$BUILDDIR/gcc-$TARGET"
-        echo "Building gcc"
-        make CFLAGS="-O2" CXXFLAGS="-O2" GCJFLAGS="-O2" LDFLAGS="-s" DEBUG_FLAGS="-g0" 2>&1 > make.log
-        if test $? -ne 0; then
-                echo "make of gcc failed - log available: gcc-$TARGET/make.log"
-                exit 1
-        fi
-        if [ "x$GCC_ADA" != "x" ]; then
-                cd gcc
-                make "CFLAGS=-O2" "LDFLAGS=-s" gnatlib_and_tools 2>&1 > make-gnatlib.log
-                if test $? -ne 0; then
-                        echo "make of gnatlib and tools failed - log available: gcc-$TARGET/make-gnatlib.log"
-                        exit 1
-                fi
-        fi
-        cd "$BUILDDIR"
-}
-
-
-install_gcc()
-{
-        cd "$BUILDDIR/gcc-$TARGET"
-        echo "Installing gcc"
-        make install 2>&1 > make-install.log
-        if test $? -ne 0; then
-                echo "install of gcc failed - log available: gcc-$TARGET/make-install.log"
-                exit 1
-        fi
-        cd "$BUILDDIR"
-}
-
-
-extract_mingw_utils()
-{
-        cd "$SRCDIR"
-        MINGW_UTILS=`tar -tzf "$SRCDIR/$MINGW_UTILS_ARCHIVE" | head -n 1`
-        if [ "x${MINGW_UTILS}" != "x./" ]; then
-           rm -rf "$MINGW_UTILS"
-        fi
-        echo "Extracting mingw-utils"
-        tar -xzf "$SRCDIR/$MINGW_UTILS_ARCHIVE"
-        cd "$BUILDDIR"
-}
-
-
-patch_mingw_utils()
-{
-        MINGW_UTILS=`tar -tzf "$SRCDIR/$MINGW_UTILS_ARCHIVE" | head -n 1`
-        cd "${SRCDIR}/${MINGW_UTILS}"
-        echo "Patching mingw-utils"
-        patch -p0 < ${SCRIPTDIR}/patches/mingw-utils.patch 2>&1 > patch.log
-        cd "$BUILDDIR"
-}
-
-
-configure_mingw_utils()
-{
-        cd "$BUILDDIR"
-        rm -rf "mingw-utils"
-        mkdir "mingw-utils"
-        cd "mingw-utils"
-        echo "Configuring mingw-utils"
-        "$SRCDIR/$MINGW_UTILS/configure" --disable-nonportable --prefix="${PREFIX}/${TARGET}" 2>&1 > configure.log
-        cd "$BUILDDIR"
-}
-
-
-build_mingw_utils()
-{
-        cd "$BUILDDIR/mingw-utils"
-        echo "Building mingw-utils"
-        make CFLAGS="-O2 -fno-exceptions" LDFLAGS="-s" 2>&1 > make.log
-        if test $? -ne 0; then
-                echo "make of mingw-utils failed - log available: mingw-utils/make.log"
-                exit 1
-        fi
-        cd "$BUILDDIR"
-}
-
-
-install_mingw_utils()
-{
-        cd "$BUILDDIR/mingw-utils"
-        echo "Installing mingw-utils"
-        make install 2>&1 > make-install.log
-        if test $? -ne 0; then
-                echo "install of mingw-utils failed - log available: mingw-utils/make-install.log"
-                exit 1
-        fi
-        cd "$BUILDDIR"
-}
-
-
-final_tweaks()
-{
-        echo "Finalizing installation"
-
-        # remove gcc build headers
-        rm -rf "$PREFIX/$TARGET/sys-include"
-
-        # Add extra binary links
-        if [ ! -f "$PREFIX/$TARGET/bin/objdump" ]; then
-                ln "$PREFIX/bin/$TARGET-objdump" "$PREFIX/$TARGET/bin/objdump"
-        fi
-        if [ ! -f "$PREFIX/$TARGET/bin/dllwrap" ]; then
-                ln "$PREFIX/bin/$TARGET-dllwrap" "$PREFIX/$TARGET/bin/dllwrap"
-        fi
-
-        # make cc and c++ symlinks to gcc and g++
-        if [ ! -f "$PREFIX/$TARGET/bin/g++" ]; then
-                ln "$PREFIX/bin/$TARGET-g++" "$PREFIX/$TARGET/bin/g++"
-        fi
-        if [ ! -f "$PREFIX/$TARGET/bin/cc" ]; then
-                ln -s "gcc" "$PREFIX/$TARGET/bin/cc"
-        fi
-        if [ ! -f "$PREFIX/$TARGET/bin/c++" ]; then
-                ln -s "g++" "$PREFIX/$TARGET/bin/c++"
-        fi
-
-        # strip all the binaries
-        ls "$PREFIX"/bin/* "$PREFIX/$TARGET"/bin/* | egrep -v '.dll$' | egrep -v 'gccbug$' |
-        while read file; do
-                strip "$file"
-        done
-
-        echo "Installation complete!"
-}
-
-
-
-#
-# Main part of the script
-#
-
-download_files
-
-if [ "x$PURGE_DIR" = "xY" ]; then
-        purge_existing_install
-fi
-
-install_libs
-
-extract_binutils
-patch_binutils
-configure_binutils
-build_binutils
-install_binutils
-
-extract_gcc
-patch_gcc
-configure_gcc
-build_gcc
-install_gcc
-
-if test -n "${MINGW_UTILS_ARCHIVE}"; then
-        extract_mingw_utils
-        patch_mingw_utils
-        configure_mingw_utils
-        build_mingw_utils
-        install_mingw_utils
-fi
-
-final_tweaks
-
-
-#
-# End
-#
diff --git a/src/win32/cats/Makefile b/src/win32/cats/Makefile
deleted file mode 100644
index 1beac1a..0000000
--- a/src/win32/cats/Makefile
+++ /dev/null
@@ -1,104 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-include ../Makefile.inc
-
-INCLUDES = \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_ZLIB) \
-	$(INCLUDE_OPENSSL) \
-	$(INCLUDE_MYSQL)
-
-DEFINES = \
-	$(HAVES)
-
-vpath %.c $(MAINDIR)/src/cats
-vpath %.cpp $(MAINDIR)/src/cats
-
-######################################################################
-
-# Files files in src/lib
-
-SQL_OBJS = \
-	sql.o \
-	sql_cmds.o \
-	sql_create.o \
-	sql_delete.o \
-	sql_find.o \
-	sql_get.o \
-	sql_glue.o \
-	sql_list.o \
-	sql_update.o \
-	bvfs.o
-
-LIBS_DLL = \
-	$(LIBS_BACULA)
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all: $(LIBDIR)/libcats.a $(BINDIR)/cats_mysql.dll $(BINDIR)/cats_postgresql.dll $(BINDIR)/cats_sqlite3.dll
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(call clean_obj,$(addprefix $(OBJDIR)/cats_mysql/,mysql.o $(SQL_OBJS)))
-	$(call clean_obj,$(addprefix $(OBJDIR)/cats_postgresql/,postgresql.o $(SQL_OBJS)))
-	$(call clean_obj,$(addprefix $(OBJDIR)/cats_sqlite3/,sqlite.o $(SQL_OBJS)))
-	$(call clean_exe,$(BINDIR)/cats_mysql.dll)
-	$(call clean_exe,$(BINDIR)/cats_postgresql.dll)
-	$(call clean_exe,$(BINDIR)/cats_sqlite3.dll)
-	$(ECHO_CMD)rm -f $(OBJDIR)/libcats.exp $(LIBDIR)/libcats.a
-	$(ECHO_CMD)rm -rf $(OBJDIRS)
-
-$(LIBDIR)/libcats.a $(OBJDIR)/libcats.exp: bacula_cats.def
-	$(call checkdir,$@)
-	@mkdir -p $(OBJDIRS)
-	$(DLLTOOL) --dllname bacula_cats.dll --no-export-all-symbols --input-def bacula_cats.def --output-exp $(OBJDIR)/libcats.exp --output-lib $(LIBDIR)/libcats.a $^
-
-$(BINDIR)/cats_mysql.dll: $(addprefix $(OBJDIR)/cats_mysql/,mysql.o $(SQL_OBJS)) $(OBJDIR)/libcats.exp
-	@echo "Linking $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) $(LDFLAGS) -mdll -mwindows $^ $(LIBS_MYSQL) $(LIBS_DLL) -o $@
-
-$(BINDIR)/cats_postgresql.dll: $(addprefix $(OBJDIR)/cats_postgresql/,postgresql.o $(SQL_OBJS)) $(OBJDIR)/libcats.exp
-	@echo "Linking $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) $(LDFLAGS) -mdll -mwindows $^ $(LIBS_POSTGRESQL) $(LIBS_DLL) -o $@
-
-$(BINDIR)/cats_sqlite3.dll: $(addprefix $(OBJDIR)/cats_sqlite3/,sqlite.o $(SQL_OBJS)) $(OBJDIR)/libcats.exp
-	@echo "Linking $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) $(LDFLAGS) -mdll -mwindows $^ $(LIBS_SQLITE) $(LIBS_DLL) -o $@
-
-#
-# Rules for generating from ../cats
-#
-
-include ../Makefile.rules
-
-define Link_Dll
-$(OBJDIR)/$(1)/%.o: %.c
-	@echo "Compiling $$<"
-	$$(call checkdir,$$@)
-	$(ECHO_CMD)$(CXX) -DBUILDING_CATS -DUSING_DLL -DHAVE_$(2) $(CFLAGS) -c $$< -o $$@
-
-$(OBJDIR)/$(1)/%.o: %.cpp
-	@echo "Compiling $$<"
-	$$(call checkdir,$$@)
-	$(ECHO_CMD)$(CXX) -DBUILDING_CATS -DUSING_DLL -DHAVE_$(2) $(CFLAGS) -c $$< -o $$@
-
-endef
-
-$(eval $(call Link_Dll,cats_mysql,MYSQL))
-
-$(eval $(call Link_Dll,cats_postgresql,POSTGRESQL))
-
-$(eval $(call Link_Dll,cats_sqlite3,SQLITE3))
diff --git a/src/win32/cats/bacula_cats.def b/src/win32/cats/bacula_cats.def
deleted file mode 100644
index 150298e..0000000
--- a/src/win32/cats/bacula_cats.def
+++ /dev/null
@@ -1,184 +0,0 @@
-LIBRARY bacula_cats.dll
-EXPORTS
-
-; bvfs.o
-_Z15bvfs_parent_dirPc
-_Z17bvfs_basename_dirPc
-_Z17bvfs_update_cacheP3JCRP4B_DB
-_Z32bvfs_update_path_hierarchy_cacheP3JCRP4B_DBPc
-_ZN4Bvfs12_handle_pathEPviPPc
-_ZN4Bvfs12update_cacheEv
-_ZN4Bvfs15ls_special_dirsEv
-_ZN4Bvfs18get_dir_filenameidEv
-_ZN4Bvfs21get_all_file_versionsEjjPKc
-_ZN4Bvfs6ch_dirEPKc
-_ZN4Bvfs7ls_dirsEv
-_ZN4Bvfs8get_rootEv
-_ZN4Bvfs8ls_filesEv
-_ZN4BvfsC1EP3JCRP4B_DB
-_ZN4BvfsC2EP3JCRP4B_DB
-_ZN4BvfsD0Ev
-_ZN4BvfsD1Ev
-_ZN4BvfsD2Ev
-
- 
-; sql.o
-_Z10_db_unlockPKciP4B_DB
-_Z11db_strerrorP4B_DB
-_Z11list_dashesP4B_DBPFvPvPKcES1_
-_Z11list_resultP3JCRP4B_DBPFvPvPKcES3_11e_list_type
-_Z14db_debug_printP3JCRP6_iobuf
-_Z16db_int64_handlerPviPPc
-_Z15db_list_handlerPviPPc
-_Z18db_end_transactionP3JCRP4B_DB
-_Z18get_sql_record_maxP3JCRP4B_DB
-_Z19split_path_and_fileP3JCRP4B_DBPKc
-_Z20check_tables_versionP3JCRP4B_DB
-_Z20db_start_transactionP3JCRP4B_DB
-_Z23db_open_batch_connexionP3JCRP4B_DB
-_Z24db_check_max_connectionsP3JCRP4B_DBj
-_Z28db_check_backend_thread_safev
-_Z7QueryDBPKciP3JCRP4B_DBPc
-_Z8DeleteDBPKciP3JCRP4B_DBPc
-_Z8InsertDBPKciP3JCRP4B_DBPc
-_Z8UpdateDBPKciP3JCRP4B_DBPc
-_Z8_db_lockPKciP4B_DB
-_ZN9dbid_listC1Ev
-_ZN9dbid_listC2Ev
-_ZN9dbid_listD1Ev
-_ZN9dbid_listD2Ev
- 
-; sql_create.o
-_Z20db_create_job_recordP3JCRP4B_DBP7JOB_DBR
-_Z21db_create_pool_recordP3JCRP4B_DBP8POOL_DBR
-_Z22db_create_media_recordP3JCRP4B_DBP9MEDIA_DBR
-_Z23db_create_client_recordP3JCRP4B_DBP10CLIENT_DBR
-_Z23db_create_device_recordP3JCRP4B_DBP10DEVICE_DBR
-_Z24db_create_base_file_listP3JCRP4B_DBPc
-_Z24db_create_counter_recordP3JCRP4B_DBP11COUNTER_DBR
-_Z24db_create_fileset_recordP3JCRP4B_DBP11FILESET_DBR
-_Z24db_create_storage_recordP3JCRP4B_DBP11STORAGE_DBR
-_Z25db_create_jobmedia_recordP3JCRP4B_DBP12JOBMEDIA_DBR
-_Z26db_create_mediatype_recordP3JCRP4B_DBP13MEDIATYPE_DBR
-_Z27db_create_attributes_recordP3JCRP4B_DBP8ATTR_DBR
-_Z27db_write_batch_file_recordsP3JCR
-_Z32db_create_file_attributes_recordP3JCRP4B_DBP8ATTR_DBR
-_Z37db_commit_base_file_attributes_recordP3JCRP4B_DB
-_Z37db_create_base_file_attributes_recordP3JCRP4B_DBP8ATTR_DBR
- 
-; sql_delete.o
-_Z21db_delete_pool_recordP3JCRP4B_DBP8POOL_DBR
-_Z21db_purge_media_recordP3JCRP4B_DBP9MEDIA_DBR
-_Z22db_delete_media_recordP3JCRP4B_DBP9MEDIA_DBR
- 
-; sql_find.o
-_Z18db_find_last_jobidP3JCRP4B_DBPKcP7JOB_DBR
-_Z19db_find_next_volumeP3JCRP4B_DBibP9MEDIA_DBR
-_Z22db_find_job_start_timeP3JCRP4B_DBP7JOB_DBRPPc
-_Z24db_find_failed_job_sinceP3JCRP4B_DBP7JOB_DBRPcRi
-_Z27db_find_last_job_start_timeP3JCRP4B_DBP7JOB_DBRPPci
- 
-; sql_get.o
-_Z15db_get_pool_idsP3JCRP4B_DBPiPPj
-_Z16db_get_file_listP3JCRP4B_DBPcPFiPviPS3_ES4_
-_Z16db_get_media_idsP3JCRP4B_DBP9MEDIA_DBRPiPPj
-_Z17db_get_base_jobidP3JCRP4B_DBP7JOB_DBRPj
-_Z17db_get_client_idsP3JCRP4B_DBPiPPj
-_Z17db_get_job_recordP3JCRP4B_DBP7JOB_DBR
-_Z18db_get_pool_recordP3JCRP4B_DBP8POOL_DBR
-_Z18db_get_query_dbidsP3JCRP4B_DBR8POOL_MEMR9dbid_list
-_Z19db_get_media_recordP3JCRP4B_DBP9MEDIA_DBR
-_Z20db_get_client_recordP3JCRP4B_DBP10CLIENT_DBR
-_Z21db_get_base_file_listP3JCRP4B_DBPFiPviPPcES3_
-_Z21db_get_counter_recordP3JCRP4B_DBP11COUNTER_DBR
-_Z21db_get_fileset_recordP3JCRP4B_DBP11FILESET_DBR
-_Z22db_accurate_get_jobidsP3JCRP4B_DBP7JOB_DBRP11db_list_ctx
-_Z23db_get_job_volume_namesP3JCRP4B_DBjPPc
-_Z23db_get_num_pool_recordsP3JCRP4B_DB
-_Z23db_get_used_base_jobidsP3JCRP4B_DBPcP11db_list_ctx
-_Z24db_get_num_media_recordsP3JCRP4B_DB
-_Z28db_get_job_volume_parametersP3JCRP4B_DBjPP10VOL_PARAMS
-_Z29db_get_file_attributes_recordP3JCRP4B_DBPcP7JOB_DBRP8FILE_DBR
- 
-; sql_list.o
-_Z22db_list_copies_recordsP3JCRP4B_DBjPcPFvPvPKcES4_11e_list_type
-_Z17db_list_sql_queryP3JCRP4B_DBPKcPFvPvS4_ES5_i11e_list_type
-_Z18db_list_job_totalsP3JCRP4B_DBP7JOB_DBRPFvPvPKcES5_
-_Z19db_list_job_recordsP3JCRP4B_DBP7JOB_DBRPFvPvPKcES5_11e_list_type
-_Z20db_list_pool_recordsP3JCRP4B_DBP8POOL_DBRPFvPvPKcES5_11e_list_type
-_Z21db_list_files_for_jobP3JCRP4B_DBjPFvPvPKcES3_
-_Z21db_list_media_recordsP3JCRP4B_DBP9MEDIA_DBRPFvPvPKcES5_11e_list_type
-_Z22db_list_client_recordsP3JCRP4B_DBPFvPvPKcES3_11e_list_type
-_Z22db_list_joblog_recordsP3JCRP4B_DBjPFvPvPKcES3_11e_list_type
-_Z24db_list_jobmedia_recordsP3JCRP4B_DBjPFvPvPKcES3_11e_list_type
-_Z26db_list_base_files_for_jobP3JCRP4B_DBjPFvPvPKcES3_
- 
-; sql_update.o
-_Z15db_update_statsP3JCRP4B_DBx
-_Z19db_mark_file_recordP3JCRP4B_DByj
-_Z21db_update_pool_recordP3JCRP4B_DBP8POOL_DBR
-_Z22db_update_media_recordP3JCRP4B_DBP9MEDIA_DBR
-_Z23db_update_client_recordP3JCRP4B_DBP10CLIENT_DBR
-_Z24db_make_inchanger_uniqueP3JCRP4B_DBP9MEDIA_DBR
-_Z24db_update_counter_recordP3JCRP4B_DBP11COUNTER_DBR
-_Z24db_update_job_end_recordP3JCRP4B_DBP7JOB_DBR
-_Z24db_update_media_defaultsP3JCRP4B_DBP9MEDIA_DBR
-_Z24db_update_storage_recordP3JCRP4B_DBP11STORAGE_DBR
-_Z26db_update_job_start_recordP3JCRP4B_DBP7JOB_DBR
-_Z28db_add_digest_to_file_recordP3JCRP4B_DByPci
- 
-_Z11db_get_typev
-_Z12db_sql_queryP4B_DBPKcPFiPviPPcES3_
-_Z16db_escape_stringP3JCRP4B_DBPcS3_i
-_Z16db_init_databaseP3JCRPKcS2_S2_S2_iS2_i
-_Z16db_open_databaseP3JCRP4B_DB
-_Z17db_close_databaseP3JCRP4B_DB
-_Z17db_thread_cleanupv
-
-client_backups DATA
-list_pool DATA
-drop_deltabs DATA
-create_deltabs DATA
-create_delindex DATA
-insert_delcand DATA
-select_backup_del DATA
-select_verify_del DATA
-select_restore_del DATA
-select_admin_del DATA
-select_migrate_del DATA
-select_copy_del DATA
-select_job DATA
-count_select_job DATA
-del_File DATA
-cnt_DelCand DATA
-del_Job DATA
-del_JobMedia DATA
-cnt_JobMedia DATA
-sel_JobMedia DATA
-upd_Purged DATA
-uar_list_jobs DATA
-uar_print_jobs DATA
-uar_file DATA
-uar_count_files DATA
-uar_sel_files DATA
-uar_del_temp DATA
-uar_del_temp1 DATA
-uar_create_temp DATA
-uar_create_temp1 DATA
-uar_last_full DATA
-uar_full DATA
-uar_inc DATA
-uar_list_temp DATA
-uar_sel_all_temp1 DATA
-uar_sel_fileset DATA
-uar_mediatype DATA
-uar_jobid_fileindex DATA
-uar_dif DATA
-uar_sel_all_temp DATA
-uar_count_files DATA
-uar_jobids_fileindex DATA
-uar_jobid_fileindex_from_dir DATA
-uar_jobid_fileindex_from_table DATA
-uar_sel_jobid_temp DATA
-cleanup_created_job DATA
-cleanup_running_job DATA
diff --git a/src/win32/cats/bacula_cats/bacula_cats.vcproj b/src/win32/cats/bacula_cats/bacula_cats.vcproj
deleted file mode 100644
index 294b2fc..0000000
--- a/src/win32/cats/bacula_cats/bacula_cats.vcproj
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="bacula_cats"
-	ProjectGUID="{8B79A2B5-8889-43D4-9B92-9AE8A6F00413}"
-	RootNamespace="bacula_cats"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="0"
-			>
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="lib /nologo /machine:x86 /out:$(TargetPath) /def:bacula_cats.def"
-				ReBuildCommandLine="del $(TargetPath)&#x0D;&#x0A;lib /nologo /machine:x86 /out:$(TargetPath) /def:bacula_cats.def&#x0D;&#x0A;"
-				CleanCommandLine="del $(TargetPath)"
-				Output="$(OutDir)\$(ProjectName).lib"
-				PreprocessorDefinitions=""
-				IncludeSearchPath=""
-				ForcedIncludes=""
-				AssemblySearchPath=""
-				ForcedUsingAssemblies=""
-				CompileAsManaged=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="0"
-			>
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="lib /nologo /machine:x86 /out:$(TargetPath) /def:bacula_cats.def"
-				ReBuildCommandLine="del $(TargetPath)&#x0D;&#x0A;lib /nologo /machine:x86 /out:$(TargetPath) /def:bacula_cats.def&#x0D;&#x0A;"
-				CleanCommandLine="del $(TargetPath)"
-				Output="$(OutDir)\$(ProjectName).lib"
-				PreprocessorDefinitions=""
-				IncludeSearchPath=""
-				ForcedIncludes=""
-				AssemblySearchPath=""
-				ForcedUsingAssemblies=""
-				CompileAsManaged=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\bacula_cats.def"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-		<Filter
-			Name="Script Files"
-			>
-			<File
-				RelativePath="..\delete_catalog_backup.cmd"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/cats/cats_mysql/cats_mysql.vcproj b/src/win32/cats/cats_mysql/cats_mysql.vcproj
deleted file mode 100644
index c863fa5..0000000
--- a/src/win32/cats/cats_mysql/cats_mysql.vcproj
+++ /dev/null
@@ -1,428 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="cats_mysql"
-	ProjectGUID="{B52BD53B-0E57-4E9A-A601-8E8171BA1CFC}"
-	RootNamespace="cats_mysql"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../../../../depkgs-msvc/include;../../..;../../../../../depkgs-msvc/include/mysql"
-				PreprocessorDefinitions="_DEBUG;_LIB;HAVE_WIN32;HAVE_MYSQL;USING_DLL;BUILDING_CATS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libmysql.lib bacula_cats.exp"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib;../../$(ConfigurationName)"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../compat;../../../../../depkgs-msvc/include;../../..;../../../../../depkgs-msvc/include/mysql"
-				PreprocessorDefinitions="NDEBUG;_LIB;HAVE_WIN32;HAVE_MYSQL;USING_DLL;BUILDING_CATS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libmysql.lib bacula_cats.exp"
-				AdditionalLibraryDirectories=""../../../../../depkgs-msvc/lib";"../../$(ConfigurationName)""
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\cats\mysql.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_cmds.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_create.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_delete.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_find.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_get.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_list.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_update.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\..\cats\cats.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\protos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_cmds.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-		<Filter
-			Name="Script Files"
-			>
-			<File
-				RelativePath="..\create_mysql_database.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\drop_mysql_database.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\drop_mysql_tables.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\drop_mysql_tables.sql"
-				>
-			</File>
-			<File
-				RelativePath="..\grant_mysql_privileges.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\grant_mysql_privileges.sql"
-				>
-			</File>
-			<File
-				RelativePath="..\make_mysql_catalog_backup.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\make_mysql_tables.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\make_mysql_tables.sql"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/cats/cats_postgresql/cats_postgresql.vcproj b/src/win32/cats/cats_postgresql/cats_postgresql.vcproj
deleted file mode 100644
index 78b46d9..0000000
--- a/src/win32/cats/cats_postgresql/cats_postgresql.vcproj
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="cats_postgresql"
-	ProjectGUID="{2FB961E5-213C-4475-8CB3-72F904D40752}"
-	RootNamespace="cats_postgresql"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../../../../depkgs-msvc/include;../../.."
-				PreprocessorDefinitions="_DEBUG;_LIB;HAVE_WIN32;HAVE_POSTGRESQL;USING_DLL;BUILDING_CATS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libpqdll.lib bacula_cats.exp"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib;../../$(ConfigurationName)"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../compat;../../../../../depkgs-msvc/include;../../.."
-				PreprocessorDefinitions="NDEBUG;_LIB;HAVE_WIN32;HAVE_POSTGRESQL;USING_DLL;BUILDING_CATS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libpqdll.lib bacula_cats.exp"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib;../../$(ConfigurationName)"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\cats\postgresql.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_cmds.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_create.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_delete.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_find.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_get.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_list.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_update.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\..\cats\cats.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\protos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_cmds.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-		<Filter
-			Name="Script Files"
-			>
-			<File
-				RelativePath="..\create_postgresql_database.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\create_postgresql_database.sql"
-				>
-			</File>
-			<File
-				RelativePath="..\drop_postgresql_database.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\drop_postgresql_tables.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\drop_postgresql_tables.sql"
-				>
-			</File>
-			<File
-				RelativePath="..\grant_postgresql_privileges.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\grant_postgresql_privileges.sql"
-				>
-			</File>
-			<File
-				RelativePath="..\make_postgresql_catalog_backup.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\make_postgresql_tables.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\make_postgresql_tables.sql"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/cats/cats_sqlite3/cats_sqlite3.vcproj b/src/win32/cats/cats_sqlite3/cats_sqlite3.vcproj
deleted file mode 100644
index 7eb1bc5..0000000
--- a/src/win32/cats/cats_sqlite3/cats_sqlite3.vcproj
+++ /dev/null
@@ -1,421 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="cats_sqlite3"
-	ProjectGUID="{23BFE838-5682-4F39-969F-0B40366D4D98}"
-	RootNamespace="cats_sqlite3"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../../../../depkgs-msvc/include;../../.."
-				PreprocessorDefinitions="_DEBUG;_LIB;HAVE_WIN32;HAVE_SQLITE3;USING_DLL;BUILDING_CATS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="sqlite3.lib bacula_cats.exp"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib;../../$(ConfigurationName)"
-				IgnoreDefaultLibraryNames="msvcrt"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="../../compat;../../../../../depkgs-msvc/include;../../.."
-				PreprocessorDefinitions="NDEBUG;_LIB;HAVE_WIN32;HAVE_SQLITE3;USING_DLL;BUILDING_CATS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="sqlite3.lib bacula_cats.exp"
-				AdditionalLibraryDirectories=""../../../../../depkgs-msvc/lib";"../../$(ConfigurationName)""
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\cats\sql.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_cmds.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_create.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_delete.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_find.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_get.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_list.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_update.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sqlite.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\..\cats\cats.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\protos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\cats\sql_cmds.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-		<Filter
-			Name="Script Files"
-			>
-			<File
-				RelativePath="..\create_sqlite3_database.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\drop_sqlite3_database.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\drop_sqlite3_tables.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\grant_sqlite3_privileges.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\make_sqlite3_catalog_backup.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\make_sqlite3_tables.cmd"
-				>
-			</File>
-			<File
-				RelativePath="..\make_sqlite3_tables.sql"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/cats/create_mysql_database.cmd b/src/win32/cats/create_mysql_database.cmd
deleted file mode 100644
index 550c83b..0000000
--- a/src/win32/cats/create_mysql_database.cmd
+++ /dev/null
@@ -1,14 +0,0 @@
- at ECHO off
-REM
-REM Script to create Bacula database(s)
-REM
-
-"@SQL_BINDIR@\mysql" %* -e "CREATE DATABASE bacula;"
-SET RESULT=%ERRORLEVEL%
-IF %RESULT% GTR 0 GOTO :ERROR
-ECHO Creation of bacula database succeeded.
-EXIT /b 0
-
-:ERROR
-ECHO Creation of bacula database failed.
-EXIT /b %RESULT%
diff --git a/src/win32/cats/create_postgresql_database.cmd b/src/win32/cats/create_postgresql_database.cmd
deleted file mode 100644
index 90b029c..0000000
--- a/src/win32/cats/create_postgresql_database.cmd
+++ /dev/null
@@ -1,23 +0,0 @@
- at ECHO off
-REM
-REM  Script to create Bacula database(s)
-REM
-
-REM use SQL_ASCII to be able to put any filename into
-REM  the database even those created with unusual character sets
-SET ENCODING=ENCODING 'SQL_ASCII'
-
-REM use UTF8 if you are using standard Unix/Linux LANG specifications
-REM  that use UTF8 -- this is normally the default and *should* be
-REM  your standard.  Bacula consoles work correctly *only* with UTF8.
-REM SET ENCODING=ENCODING 'UTF8'
-
-"@SQL_BINDIR@\psql" -f "@bin_dir_cmd@\create_postgresql_database.sql" -d template1 %*
-IF ERRORLEVEL 1 GOTO :ERROR
-ECHO Creation of bacula database succeeded.
-EXIT /b 0
-GOTO :EOF
-
-:ERROR
-ECHO Creation of bacula database failed.
-EXIT /b 1
diff --git a/src/win32/cats/create_postgresql_database.sql b/src/win32/cats/create_postgresql_database.sql
deleted file mode 100644
index bebc251..0000000
--- a/src/win32/cats/create_postgresql_database.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-CREATE DATABASE bacula ENCODING 'SQL_ASCII';
-ALTER DATABASE bacula SET datestyle TO 'ISO, YMD';
diff --git a/src/win32/cats/create_sqlite3_database.cmd b/src/win32/cats/create_sqlite3_database.cmd
deleted file mode 100644
index a2f24d2..0000000
--- a/src/win32/cats/create_sqlite3_database.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
- at ECHO off
-REM
-REM Script to create Bacula SQLite tables
-
-ECHO .databases | "@bin_dir_cmd@\sqlite3" %* "@working_dir_cmd@\bacula.db"
-EXIT /b 0
diff --git a/src/win32/cats/delete_catalog_backup.cmd b/src/win32/cats/delete_catalog_backup.cmd
deleted file mode 100644
index 30c84a2..0000000
--- a/src/win32/cats/delete_catalog_backup.cmd
+++ /dev/null
@@ -1,5 +0,0 @@
-REM
-REM This script deletes a catalog dump
-REM
-DEL /f "@working_dir_cmd@\bacula.sql"
-EXIT /b 0
diff --git a/src/win32/cats/drop_mysql_database.cmd b/src/win32/cats/drop_mysql_database.cmd
deleted file mode 100644
index a6cd0a9..0000000
--- a/src/win32/cats/drop_mysql_database.cmd
+++ /dev/null
@@ -1,14 +0,0 @@
- at ECHO off
-REM
-REM Script to drop Bacula database(s)
-REM
-
-"@SQL_BINDIR@\mysql" %* -f -e "DROP DATABASE bacula;"
-SET RESULT=%ERRORLEVEL%
-IF %RESULT% GTR 0 GOTO :ERROR
-ECHO Drop of bacula database succeeded.
-EXIT /b 0
-
-:ERROR
-ECHO Drop of bacula database failed.
-EXIT /b %RESULT%
diff --git a/src/win32/cats/drop_mysql_tables.cmd b/src/win32/cats/drop_mysql_tables.cmd
deleted file mode 100644
index fd7cc33..0000000
--- a/src/win32/cats/drop_mysql_tables.cmd
+++ /dev/null
@@ -1,14 +0,0 @@
- at ECHO off
-REM
-REM Script to delete Bacula tables for MySQL
-REM
-
-"@SQL_BINDIR@\mysql" %* < "@bin_dir_cmd@\drop_mysql_tables.sql"
-SET RESULT=%ERRORLEVEL%
-IF %RESULT% GTR 0 goto :ERROR
-ECHO Deletion of Bacula MySQL tables succeeded.
-EXIT /b 0
-
-:ERROR
-ECHO Deletion of Bacula MySQL tables failed.
-EXIT /b %RESULT%
diff --git a/src/win32/cats/drop_mysql_tables.sql b/src/win32/cats/drop_mysql_tables.sql
deleted file mode 100644
index b57d7e5..0000000
--- a/src/win32/cats/drop_mysql_tables.sql
+++ /dev/null
@@ -1,26 +0,0 @@
-USE bacula;
-DROP TABLE IF EXISTS Filename;
-DROP TABLE IF EXISTS Path;
-DROP TABLE IF EXISTS LongName;
-DROP TABLE IF EXISTS Device;
-DROP TABLE IF EXISTS Storage;
-DROP TABLE IF EXISTS MediaType;
-DROP TABLE IF EXISTS File;
-DROP TABLE IF EXISTS Client;
-DROP TABLE IF EXISTS Job;
-DROP TABLE IF EXISTS Media;
-DROP TABLE IF EXISTS JobMedia;
-DROP TABLE IF EXISTS Pool;
-DROP TABLE IF EXISTS MultiVolume;
-DROP TABLE IF EXISTS FileSave;	 
-DROP TABLE IF EXISTS FileSet;	
-DROP TABLE IF EXISTS Version;
-DROP TABLE IF EXISTS Counters;
-DROP TABLE IF EXISTS BaseFiles;
-DROP TABLE IF EXISTS UnsavedFiles;
-DROP TABLE IF EXISTS CDImages;
-DROP TABLE IF EXISTS Status;
-DROP TABLE IF EXISTS MAC;
-DROP TABLE IF EXISTS Log;
-DROP TABLE IF EXISTS Location;
-DROP TABLE IF EXISTS LocationLog;
diff --git a/src/win32/cats/drop_postgresql_database.cmd b/src/win32/cats/drop_postgresql_database.cmd
deleted file mode 100644
index f5979a5..0000000
--- a/src/win32/cats/drop_postgresql_database.cmd
+++ /dev/null
@@ -1,14 +0,0 @@
- at ECHO off
-REM
-REM  Script to drop Bacula database(s)
-REM
-
-"@SQL_BINDIR@\dropdb" %* bacula
-IF ERRORLEVEL 1 GOTO :ERROR
-ECHO Drop of bacula database succeeded.
-EXIT /b 0
-GOTO :EOF
-
-:ERROR
-ECHO Drop of bacula database failed.
-EXIT /b 1
diff --git a/src/win32/cats/drop_postgresql_tables.cmd b/src/win32/cats/drop_postgresql_tables.cmd
deleted file mode 100644
index ae6215c..0000000
--- a/src/win32/cats/drop_postgresql_tables.cmd
+++ /dev/null
@@ -1,14 +0,0 @@
- at ECHO off
-REM
-REM  Script to delete Bacula tables for PostgreSQL
-REM
-
-"@SQL_BINDIR@\psql" -f "@bin_dir_cmd@\drop_postgresql_tables.sql" -d bacula %*
-IF ERRORLEVEL 1 GOTO :ERROR
-ECHO Deletion of Bacula PostgreSQL tables succeeded.
-EXIT /b 0
-GOTO :EOF
-
-:ERROR
-ECHO Deletion of Bacula PostgreSQL tables failed.
-EXIT /b 1
diff --git a/src/win32/cats/drop_postgresql_tables.sql b/src/win32/cats/drop_postgresql_tables.sql
deleted file mode 100644
index 4057b92..0000000
--- a/src/win32/cats/drop_postgresql_tables.sql
+++ /dev/null
@@ -1,22 +0,0 @@
-drop table unsavedfiles;
-drop table basefiles;
-drop table jobmedia;
-drop table file;
-drop table job;
-drop table media;
-drop table client;
-drop table pool;
-drop table fileset;
-drop table path;
-drop table filename;
-drop table counters;
-drop table version;
-drop table CDImages;
-drop table Device;
-drop table Storage;
-drop table MediaType;
-drop table Status;
-drop table MAC;
-drop table log;
-drop table Location;
-drop table locationlog;
diff --git a/src/win32/cats/drop_sqlite3_database.cmd b/src/win32/cats/drop_sqlite3_database.cmd
deleted file mode 100644
index 654ca6f..0000000
--- a/src/win32/cats/drop_sqlite3_database.cmd
+++ /dev/null
@@ -1,7 +0,0 @@
- at ECHO off
-REM
-REM Script to drop Bacula SQLite tables
-
-DEL "@working_dir_cmd@\bacula.db"
-ECHO SQLite database dropped.
-EXIT /b 0
diff --git a/src/win32/cats/drop_sqlite3_tables.cmd b/src/win32/cats/drop_sqlite3_tables.cmd
deleted file mode 100644
index ac5975f..0000000
--- a/src/win32/cats/drop_sqlite3_tables.cmd
+++ /dev/null
@@ -1,8 +0,0 @@
- at ECHO off
-REM
-REM Script to delete the SQLite Bacula database (same as deleting 
-REM the tables)
-REM
-
-DEL "@working_dir_cmd@\bacula.db"
-EXIT /b 0
diff --git a/src/win32/cats/grant_mysql_privileges.cmd b/src/win32/cats/grant_mysql_privileges.cmd
deleted file mode 100644
index c37c5d8..0000000
--- a/src/win32/cats/grant_mysql_privileges.cmd
+++ /dev/null
@@ -1,14 +0,0 @@
- at ECHO off
-REM
-REM Script to grant privileges to the bacula database
-REM
-
-"@SQL_BINDIR@\mysql" -u root -f %* < "@bin_dir_cmd@\grant_mysql_privileges.sql"
-SET RESULT=%ERRORLEVEL%
-IF %RESULT% GTR 0 GOTO :ERROR
-ECHO Privileges for bacula granted.
-EXIT /b 0
-
-:ERROR
-ECHO Error creating privileges.
-EXIT /b %RESULT%
diff --git a/src/win32/cats/grant_mysql_privileges.sql b/src/win32/cats/grant_mysql_privileges.sql
deleted file mode 100644
index 1b9d371..0000000
--- a/src/win32/cats/grant_mysql_privileges.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-use mysql
-grant all privileges on bacula.* to bacula at localhost;
-grant all privileges on bacula.* to bacula@"%";
-select * from user;
-flush privileges;
diff --git a/src/win32/cats/grant_postgresql_privileges.cmd b/src/win32/cats/grant_postgresql_privileges.cmd
deleted file mode 100644
index 69e8076..0000000
--- a/src/win32/cats/grant_postgresql_privileges.cmd
+++ /dev/null
@@ -1,15 +0,0 @@
- at ECHO off
-REM
-REM  Script to grant privileges to the bacula database
-REM
-USER=bacula
-
-"@SQL_BINDIR@\psql" -f "@bin_dir_cmd@\grant_postgresql_privileges.sql" -d bacula %*
-IF ERRORLEVEL 1 GOTO :ERROR
-ECHO Error creating privileges.
-EXIT /b 0
-GOTO :EOF
-
-:ERROR
-ECHO Drop of bacula database failed.
-EXIT /b 1
diff --git a/src/win32/cats/grant_postgresql_privileges.sql b/src/win32/cats/grant_postgresql_privileges.sql
deleted file mode 100644
index 3a73f6d..0000000
--- a/src/win32/cats/grant_postgresql_privileges.sql
+++ /dev/null
@@ -1,37 +0,0 @@
-create user bacula;
-
--- for tables
-grant all on unsavedfiles to bacula;
-grant all on basefiles	  to bacula;
-grant all on jobmedia	  to bacula;
-grant all on file	  to bacula;
-grant all on job	  to bacula;
-grant all on media	  to bacula;
-grant all on client	  to bacula;
-grant all on pool	  to bacula;
-grant all on fileset	  to bacula;
-grant all on path	  to bacula;
-grant all on filename	  to bacula;
-grant all on counters	  to bacula;
-grant all on version	  to bacula;
-grant all on cdimages	  to bacula;
-grant all on mediatype	  to bacula;
-grant all on storage	  to bacula;
-grant all on device	  to bacula;
-grant all on status	  to bacula;
-
--- for sequences on those tables
-
-grant select, update on filename_filenameid_seq    to bacula;
-grant select, update on path_pathid_seq 	   to bacula;
-grant select, update on fileset_filesetid_seq	   to bacula;
-grant select, update on pool_poolid_seq 	   to bacula;
-grant select, update on client_clientid_seq	   to bacula;
-grant select, update on media_mediaid_seq	   to bacula;
-grant select, update on job_jobid_seq		   to bacula;
-grant select, update on file_fileid_seq 	   to bacula;
-grant select, update on jobmedia_jobmediaid_seq    to bacula;
-grant select, update on basefiles_baseid_seq	   to bacula;
-grant select, update on storage_storageid_seq	   to bacula;
-grant select, update on mediatype_mediatypeid_seq  to bacula;
-grant select, update on device_deviceid_seq	   to bacula;
diff --git a/src/win32/cats/grant_sqlite3_privileges.cmd b/src/win32/cats/grant_sqlite3_privileges.cmd
deleted file mode 100644
index a824a34..0000000
--- a/src/win32/cats/grant_sqlite3_privileges.cmd
+++ /dev/null
@@ -1,7 +0,0 @@
- at ECHO off
-REM
-REM Script to grant privileges to the bacula database
-REM
-
-REM nothing to do here
-EXIT /b 0
diff --git a/src/win32/cats/make_def b/src/win32/cats/make_def
deleted file mode 100755
index a37bffd..0000000
--- a/src/win32/cats/make_def
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh
-#
-#  Make the stupid bacula.def file so that we don't have to do it
-#    manually
-#
-#   Kern Sibbald, June 2007
-#
- 
-echo "LIBRARY bacula_cats.dll"
-echo "EXPORTS"
-echo " "
-
-TOPDIR=`(cd ../../..;pwd)`
-TOPDIR=${DEPKGS:-${TOPDIR}}
-NM=${TOPDIR}/cross-tools/mingw32/mingw32/bin/nm
-
-OBJS="sql.o sql_create.o sql_delete.o sql_find.o sql_get.o \
-      sql_list.o sql_update.o bvfs.o"
-
-#
-# The data could be automated too        
-#
-DATA="\
-      client_backups \
-      list_pool \
-      drop_deltabs \
-      create_deltabs \
-      insert_delcand \
-      select_backup_del \
-      select_verify_del \
-      select_restore_del \
-      select_admin_del \
-      select_migrate_del \
-      select_job \
-      count_select_job \
-      del_File \
-      cnt_DelCand \
-      del_Job \
-      del_JobMedia \
-      cnt_JobMedia \
-      sel_JobMedia \
-      upd_Purged \
-      uar_list_jobs \
-      uar_file \
-      uar_count_files \
-      uar_sel_files \
-      uar_del_temp \
-      uar_del_temp1 \
-      uar_create_temp \
-      uar_create_temp1 \
-      uar_last_full \
-      uar_full \
-      uar_inc \
-      uar_list_temp \
-      uar_sel_all_temp1 \
-      uar_sel_fileset \
-      uar_mediatype \
-      uar_jobid_fileindex \
-      uar_dif \
-      uar_sel_all_temp \
-      uar_count_files \
-      uar_jobids_fileindex \
-      uar_jobid_fileindex_from_dir \
-      uar_jobid_fileindex_from_table \
-      uar_sel_jobid_temp" 
-
-
-cd obj32/cats_mysql
-for i in ${OBJS}; do \
-   echo "; $i"; \
-   ${NM} $i | grep "^[0-9a-f]* T _" | cut -c13-; \
-   echo " "; \
-done
-
-${NM} mysql.o | grep "^[0-9a-f]* T _" | cut -c13- | grep -v "my_mysql"
-
-for i in ${DATA}; do \
-   echo "$i DATA"; \
-done
diff --git a/src/win32/cats/make_mysql_catalog_backup.cmd b/src/win32/cats/make_mysql_catalog_backup.cmd
deleted file mode 100644
index abf55e1..0000000
--- a/src/win32/cats/make_mysql_catalog_backup.cmd
+++ /dev/null
@@ -1,41 +0,0 @@
- at ECHO off
-REM 
-REM  This script dumps your Bacula catalog in ASCII format
-REM  It works for MySQL, SQLite, and PostgreSQL
-REM 
-REM   %1 is the name of the database to be backed up and the name
-REM      of the output file (default = bacula
-REM   %2 is the user name with which to access the database
-REM      (default = bacula).
-REM   %3 is the password with which to access the database or "" if no password
-REM      (default "")
-REM 
-REM 
- at ECHO on
-
-DEL /f "@working_dir_cmd@\%1.sql" 2>nul
-
-set MYSQLPASSWORD=
-
-IF NOT "%3"=="" SET MYSQLPASSWORD=--password=%3
-"@SQL_BINDIR@\mysqldump" -u %2 %MYSQLPASSWORD% -f --opt %1 > "@working_dir_cmd@\%1.sql"
-
- at ECHO off
-REM 
-REM   To read back a MySQL database use: 
-REM      cd @working_dir_cmd@
-REM      rd /s /q @SQL_BINDIR@\..\data\bacula
-REM      mysql < bacula.sql
-REM 
-REM   To read back a SQLite database use:
-REM      cd @working_dir_cmd@
-REM      del /f bacula.db
-REM      sqlite bacula.db < bacula.sql
-REM 
-REM   To read back a PostgreSQL database use:
-REM      cd @working_dir_cmd@
-REM      dropdb bacula
-REM      createdb -T template0 -E SQL_ASCII  bacula
-REM      psql bacula < bacula.sql
-REM
-EXIT /b 0
diff --git a/src/win32/cats/make_mysql_tables.cmd b/src/win32/cats/make_mysql_tables.cmd
deleted file mode 100644
index bab38d8..0000000
--- a/src/win32/cats/make_mysql_tables.cmd
+++ /dev/null
@@ -1,14 +0,0 @@
- at ECHO off
-REM
-REM Script to create Bacula MySQL tables
-REM
-
-"@SQL_BINDIR@\mysql" -f %* < "@bin_dir_cmd@\make_mysql_tables.sql"
-SET RESULT=%ERRORLEVEL%
-IF %RESULT% GTR 0 GOTO :ERROR
-ECHO Creation of Bacula MySQL tables succeeded.
-EXIT /b 0
-
-:ERROR
-ECHO Creation of Bacula MySQL tables failed.
-EXIT /b %RESULT%
diff --git a/src/win32/cats/make_mysql_tables.sql b/src/win32/cats/make_mysql_tables.sql
deleted file mode 100644
index 86a3c8b..0000000
--- a/src/win32/cats/make_mysql_tables.sql
+++ /dev/null
@@ -1,357 +0,0 @@
-USE ${db_name};
---
--- Note, we use BLOB rather than TEXT because in MySQL,
---  BLOBs are identical to TEXT except that BLOB is case
---  sensitive in sorts, which is what we want, and TEXT
---  is case insensitive.
---
-CREATE TABLE Filename (
-  FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-  Name BLOB NOT NULL,
-  PRIMARY KEY(FilenameId),
-  INDEX (Name(255))
-  );
-
-CREATE TABLE Path (
-   PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Path BLOB NOT NULL,
-   PRIMARY KEY(PathId),
-   INDEX (Path(255))
-   );
-
-
-CREATE TABLE File (
-   FileId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
-   FileIndex INTEGER UNSIGNED DEFAULT 0,
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
-   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
-   MarkId INTEGER UNSIGNED DEFAULT 0,
-   LStat TINYBLOB NOT NULL,
-   MD5 TINYBLOB,
-   PRIMARY KEY(FileId),
-   INDEX (JobId),
-   INDEX (JobId, PathId, FilenameId)
-   );
-
---
--- Possibly add one or more of the following indexes
---  to the above File table if your Verifies are
---  too slow.
---
---  INDEX (PathId),
---  INDEX (FilenameId),
---  INDEX (FilenameId, PathId)
---  INDEX (JobId),
---
-
-CREATE TABLE MediaType (
-   MediaTypeId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   MediaType TINYBLOB NOT NULL,
-   ReadOnly TINYINT DEFAULT 0,
-   PRIMARY KEY(MediaTypeId)
-   );
-
-CREATE TABLE Storage (
-   StorageId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Name TINYBLOB NOT NULL,
-   AutoChanger TINYINT DEFAULT 0,
-   PRIMARY KEY(StorageId)
-   );
-
-CREATE TABLE Device (
-   DeviceId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Name TINYBLOB NOT NULL,
-   MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType,
-   StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage,
-   DevMounts INTEGER UNSIGNED DEFAULT 0,
-   DevReadBytes BIGINT UNSIGNED DEFAULT 0,
-   DevWriteBytes BIGINT UNSIGNED DEFAULT 0,
-   DevReadBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
-   DevWriteBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
-   DevReadTime BIGINT UNSIGNED DEFAULT 0,
-   DevWriteTime BIGINT UNSIGNED DEFAULT 0,
-   DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
-   DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
-   CleaningDate DATETIME DEFAULT 0,
-   CleaningPeriod BIGINT UNSIGNED DEFAULT 0,
-   PRIMARY KEY(DeviceId)
-   );
-
-
-CREATE TABLE Job (
-   JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Job TINYBLOB NOT NULL,
-   Name TINYBLOB NOT NULL,
-   Type BINARY(1) NOT NULL,
-   Level BINARY(1) NOT NULL,
-   ClientId INTEGER DEFAULT 0 REFERENCES Client,
-   JobStatus BINARY(1) NOT NULL,
-   SchedTime DATETIME DEFAULT 0,
-   StartTime DATETIME DEFAULT 0,
-   EndTime DATETIME DEFAULT 0,
-   RealEndTime DATETIME DEFAULT 0,
-   JobTDate BIGINT UNSIGNED DEFAULT 0,
-   VolSessionId INTEGER UNSIGNED DEFAULT 0,
-   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
-   JobFiles INTEGER UNSIGNED DEFAULT 0,
-   JobBytes BIGINT UNSIGNED DEFAULT 0,
-   ReadBytes BIGINT UNSIGNED DEFAULT 0,
-   JobErrors INTEGER UNSIGNED DEFAULT 0,
-   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
-   PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
-   FileSetId INTEGER UNSIGNED DEFAULT 0 REFERENCES FileSet,
-   PriorJobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,
-   PurgedFiles TINYINT DEFAULT 0,
-   HasBase TINYINT DEFAULT 0,
-   PRIMARY KEY(JobId),
-   INDEX (Name(128))
-   );
-
--- Create a table like Job for long term statistics 
-CREATE TABLE JobHisto (
-   JobId INTEGER UNSIGNED NOT NULL,
-   Job TINYBLOB NOT NULL,
-   Name TINYBLOB NOT NULL,
-   Type BINARY(1) NOT NULL,
-   Level BINARY(1) NOT NULL,
-   ClientId INTEGER DEFAULT 0,
-   JobStatus BINARY(1) NOT NULL,
-   SchedTime DATETIME DEFAULT 0,
-   StartTime DATETIME DEFAULT 0,
-   EndTime DATETIME DEFAULT 0,
-   RealEndTime DATETIME DEFAULT 0,
-   JobTDate BIGINT UNSIGNED DEFAULT 0,
-   VolSessionId INTEGER UNSIGNED DEFAULT 0,
-   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
-   JobFiles INTEGER UNSIGNED DEFAULT 0,
-   JobBytes BIGINT UNSIGNED DEFAULT 0,
-   ReadBytes BIGINT UNSIGNED DEFAULT 0,
-   JobErrors INTEGER UNSIGNED DEFAULT 0,
-   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
-   PoolId INTEGER UNSIGNED DEFAULT 0,
-   FileSetId INTEGER UNSIGNED DEFAULT 0,
-   PriorJobId INTEGER UNSIGNED DEFAULT 0,
-   PurgedFiles TINYINT DEFAULT 0,
-   HasBase TINYINT DEFAULT 0,
-   INDEX (StartTime)
-   );
-
-CREATE TABLE Location (
-   LocationId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Location TINYBLOB NOT NULL,
-   Cost INTEGER DEFAULT 0,
-   Enabled TINYINT,
-   PRIMARY KEY(LocationId)
-   );
-
-CREATE TABLE LocationLog (
-   LocLogId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Date DATETIME DEFAULT 0,
-   Comment BLOB NOT NULL,
-   MediaId INTEGER UNSIGNED DEFAULT 0 REFERENCES Media,
-   LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location,
-   NewVolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
-    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
-   NewEnabled TINYINT,
-   PRIMARY KEY(LocLogId)
-);
-
-
-CREATE TABLE FileSet (
-   FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   FileSet TINYBLOB NOT NULL,
-   MD5 TINYBLOB,
-   CreateTime DATETIME DEFAULT 0,
-   PRIMARY KEY(FileSetId)
-   );
-
-CREATE TABLE JobMedia (
-   JobMediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   MediaId INTEGER UNSIGNED NOT NULL REFERENCES Media,
-   FirstIndex INTEGER UNSIGNED DEFAULT 0,
-   LastIndex INTEGER UNSIGNED DEFAULT 0,
-   StartFile INTEGER UNSIGNED DEFAULT 0,
-   EndFile INTEGER UNSIGNED DEFAULT 0,
-   StartBlock INTEGER UNSIGNED DEFAULT 0,
-   EndBlock INTEGER UNSIGNED DEFAULT 0,
-   VolIndex INTEGER UNSIGNED DEFAULT 0,
-   Copy INTEGER UNSIGNED DEFAULT 0,
-   Stripe INTEGER UNSIGNED DEFAULT 0,
-   PRIMARY KEY(JobMediaId),
-   INDEX (JobId, MediaId)
-   );
-
-
-CREATE TABLE Media (
-   MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   VolumeName TINYBLOB NOT NULL,
-   Slot INTEGER DEFAULT 0,
-   PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
-   MediaType TINYBLOB NOT NULL,
-   MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType,
-   LabelType TINYINT DEFAULT 0,
-   FirstWritten DATETIME DEFAULT 0,
-   LastWritten DATETIME DEFAULT 0,
-   LabelDate DATETIME DEFAULT 0,
-   VolJobs INTEGER UNSIGNED DEFAULT 0,
-   VolFiles INTEGER UNSIGNED DEFAULT 0,
-   VolBlocks INTEGER UNSIGNED DEFAULT 0,
-   VolMounts INTEGER UNSIGNED DEFAULT 0,
-   VolBytes BIGINT UNSIGNED DEFAULT 0,
-   VolParts INTEGER UNSIGNED DEFAULT 0,
-   VolErrors INTEGER UNSIGNED DEFAULT 0,
-   VolWrites INTEGER UNSIGNED DEFAULT 0,
-   VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
-   VolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
-    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
-   Enabled TINYINT DEFAULT 1,
-   Recycle TINYINT DEFAULT 0,
-   ActionOnPurge     TINYINT    DEFAULT 0,
-   VolRetention BIGINT UNSIGNED DEFAULT 0,
-   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
-   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
-   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
-   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
-   InChanger TINYINT DEFAULT 0,
-   StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage,
-   DeviceId INTEGER UNSIGNED DEFAULT 0 REFERENCES Device,
-   MediaAddressing TINYINT DEFAULT 0,
-   VolReadTime BIGINT UNSIGNED DEFAULT 0,
-   VolWriteTime BIGINT UNSIGNED DEFAULT 0,
-   EndFile INTEGER UNSIGNED DEFAULT 0,
-   EndBlock INTEGER UNSIGNED DEFAULT 0,
-   LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location,
-   RecycleCount INTEGER UNSIGNED DEFAULT 0,
-   InitialWrite DATETIME DEFAULT 0,
-   ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
-   RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
-   Comment BLOB,
-   PRIMARY KEY(MediaId),
-   UNIQUE (VolumeName(128)),
-   INDEX (PoolId)
-   );
-
-CREATE TABLE Pool (
-   PoolId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Name TINYBLOB NOT NULL,
-   NumVols INTEGER UNSIGNED DEFAULT 0,
-   MaxVols INTEGER UNSIGNED DEFAULT 0,
-   UseOnce TINYINT DEFAULT 0,
-   UseCatalog TINYINT DEFAULT 0,
-   AcceptAnyVolume TINYINT DEFAULT 0,
-   VolRetention BIGINT UNSIGNED DEFAULT 0,
-   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
-   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
-   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
-   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
-   AutoPrune TINYINT DEFAULT 0,
-   Recycle TINYINT DEFAULT 0,
-   ActionOnPurge     TINYINT    DEFAULT 0,
-   PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL,
-   LabelType TINYINT DEFAULT 0,
-   LabelFormat TINYBLOB,
-   Enabled TINYINT DEFAULT 1,
-   ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
-   RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
-   NextPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
-   MigrationHighBytes BIGINT UNSIGNED DEFAULT 0,
-   MigrationLowBytes BIGINT UNSIGNED DEFAULT 0,
-   MigrationTime BIGINT UNSIGNED DEFAULT 0,
-   UNIQUE (Name(128)),
-   PRIMARY KEY (PoolId)
-   );
-
-
-CREATE TABLE Client (
-   ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Name TINYBLOB NOT NULL,
-   Uname TINYBLOB NOT NULL,       /* full uname -a of client */
-   AutoPrune TINYINT DEFAULT 0,
-   FileRetention BIGINT UNSIGNED DEFAULT 0,
-   JobRetention  BIGINT UNSIGNED DEFAULT 0,
-   UNIQUE (Name(128)),
-   PRIMARY KEY(ClientId)
-   );
-
-CREATE TABLE Log (
-   LogId INTEGER UNSIGNED AUTO_INCREMENT,
-   JobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,
-   Time DATETIME DEFAULT 0,
-   LogText BLOB NOT NULL,
-   PRIMARY KEY(LogId),
-   INDEX (JobId)
-   );
-
-
-CREATE TABLE BaseFiles (
-   BaseId INTEGER UNSIGNED AUTO_INCREMENT,
-   BaseJobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   FileId BIGINT UNSIGNED NOT NULL REFERENCES File,
-   FileIndex INTEGER UNSIGNED,
-   PRIMARY KEY(BaseId)
-   );
-
-CREATE TABLE UnsavedFiles (
-   UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-   PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
-   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
-   PRIMARY KEY (UnsavedId)
-   );
-
-
-
-CREATE TABLE Counters (
-   Counter TINYBLOB NOT NULL,
-   MinValue INTEGER DEFAULT 0,
-   MaxValue INTEGER DEFAULT 0,
-   CurrentValue INTEGER DEFAULT 0,
-   WrapCounter TINYBLOB NOT NULL,
-   PRIMARY KEY (Counter(128))
-   );
-
-CREATE TABLE CDImages (
-   MediaId INTEGER UNSIGNED NOT NULL,
-   LastBurn DATETIME NOT NULL,
-   PRIMARY KEY (MediaId)
-   );
-
-CREATE TABLE Status (
-   JobStatus CHAR(1) BINARY NOT NULL,
-   JobStatusLong BLOB, 
-   PRIMARY KEY (JobStatus)
-   );
-
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('C', 'Created, not yet running'),
-   ('R', 'Running'),
-   ('B', 'Blocked'),
-   ('T', 'Completed successfully'),
-   ('E', 'Terminated with errors'),
-   ('e', 'Non-fatal error'),
-   ('f', 'Fatal error'),
-   ('D', 'Verify found differences'),
-   ('A', 'Canceled by user'),
-   ('F', 'Waiting for Client'),
-   ('S', 'Waiting for Storage daemon'),
-   ('m', 'Waiting for new media'),
-   ('M', 'Waiting for media mount'),
-   ('s', 'Waiting for storage resource'),
-   ('j', 'Waiting for job resource'),
-   ('c', 'Waiting for client resource'),
-   ('d', 'Waiting on maximum jobs'),
-   ('t', 'Waiting on start time'),
-   ('p', 'Waiting on higher priority jobs'),
-   ('i', 'Doing batch insert file records'),
-   ('a', 'SD despooling attributes');
-
-CREATE TABLE Version (
-   VersionId INTEGER UNSIGNED NOT NULL 
-   );
-
--- Initialize Version            
-INSERT INTO Version (VersionId) VALUES (11);
-
diff --git a/src/win32/cats/make_postgresql_catalog_backup.cmd b/src/win32/cats/make_postgresql_catalog_backup.cmd
deleted file mode 100644
index 759a101..0000000
--- a/src/win32/cats/make_postgresql_catalog_backup.cmd
+++ /dev/null
@@ -1,41 +0,0 @@
- at ECHO off
-REM 
-REM  This script dumps your Bacula catalog in ASCII format
-REM  It works for MySQL, SQLite, and PostgreSQL
-REM 
-REM   %1 is the name of the database to be backed up and the name
-REM      of the output file (default = bacula
-REM   %2 is the user name with which to access the database
-REM      (default = bacula).
-REM   %3 is the password with which to access the database or "" if no password
-REM      (default "")
-REM 
-REM 
- at ECHO on
-
-DEL /f "@working_dir_cmd@\%1.sql" 2>nul
-
-SET PGPASSWORD=
-
-IF NOT "%3"=="" SET PGPASSWORD=--password=%3
-"@SQL_BINDIR@\pg_dump" -c -U %2 %1 >"@working_dir_cmd@\%1.sql"
-
- at ECHO off
-REM 
-REM   To read back a MySQL database use: 
-REM      cd @working_dir_cmd@
-REM      rd /s /q @SQL_BINDIR@\..\data\bacula
-REM      mysql < bacula.sql
-REM 
-REM   To read back a SQLite database use:
-REM      cd @working_dir_cmd@
-REM      del /f bacula.db
-REM      sqlite bacula.db < bacula.sql
-REM 
-REM   To read back a PostgreSQL database use:
-REM      cd @working_dir_cmd@
-REM      dropdb bacula
-REM      createdb -T template0 -E SQL_ASCII bacula
-REM      psql bacula < bacula.sql
-REM 
-EXIT /b 0
diff --git a/src/win32/cats/make_postgresql_tables.cmd b/src/win32/cats/make_postgresql_tables.cmd
deleted file mode 100644
index 0dae458..0000000
--- a/src/win32/cats/make_postgresql_tables.cmd
+++ /dev/null
@@ -1,14 +0,0 @@
- at ECHO off
-REM
-REM  Script to create Bacula PostgreSQL tables
-REM
-
-"@SQL_BINDIR@\psql" -f "@bin_dir_cmd@\make_postgresql_tables.sql" -d bacula %*
-IF ERRORLEVEL 1 GOTO :ERROR
-ECHO Creation of Bacula PostgreSQL tables succeeded.
-EXIT /b 0
-GOTO :EOF
-
-:ERROR
-ECHO Creation of Bacula PostgreSQL tables failed.
-EXIT /b 1
diff --git a/src/win32/cats/make_postgresql_tables.sql b/src/win32/cats/make_postgresql_tables.sql
deleted file mode 100644
index e7d0d86..0000000
--- a/src/win32/cats/make_postgresql_tables.sql
+++ /dev/null
@@ -1,380 +0,0 @@
-
-CREATE TABLE filename
-(
-    filenameid        serial      not null,
-    name              text        not null,
-    primary key (filenameid)
-);
-
-ALTER TABLE filename ALTER COLUMN name SET STATISTICS 1000;
-CREATE UNIQUE INDEX filename_name_idx on filename (name);
-
-CREATE TABLE path
-(
-    pathid            serial      not null,
-    path              text        not null,
-    primary key (pathid)
-);
-
-ALTER TABLE path ALTER COLUMN path SET STATISTICS 1000;
-CREATE UNIQUE INDEX path_name_idx on path (path);
-
-CREATE TABLE file
-(
-    fileid            bigserial   not null,
-    fileindex         integer     not null  default 0,
-    jobid             integer     not null,
-    pathid            integer     not null,
-    filenameid        integer     not null,
-    markid            integer     not null  default 0,
-    lstat             text        not null,
-    md5               text        not null,
-    primary key (fileid)
-);
-
-CREATE INDEX file_jobid_idx on file (jobid);
-CREATE INDEX file_fp_idx on file (filenameid, pathid);
-
---
--- Add this if you have a good number of job
--- that run at the same time
--- ALTER SEQUENCE file_fileid_seq CACHE 1000;
-
---
--- Possibly add one or more of the following indexes
---  if your Verifies are too slow.
---
--- CREATE INDEX file_pathid_idx on file(pathid);
--- CREATE INDEX file_filenameid_idx on file(filenameid);
--- CREATE INDEX file_jpfid_idx on file (jobid, pathid, filenameid);
-
-CREATE TABLE job
-(
-    jobid             serial      not null,
-    job               text        not null,
-    name              text        not null,
-    type              char(1)     not null,
-    level             char(1)     not null,
-    clientid          integer     default 0,
-    jobstatus         char(1)     not null,
-    schedtime         timestamp   without time zone,
-    starttime         timestamp   without time zone,
-    endtime           timestamp   without time zone,
-    realendtime       timestamp   without time zone,
-    jobtdate          bigint      default 0,
-    volsessionid      integer     default 0,
-    volsessiontime    integer     default 0,
-    jobfiles          integer     default 0,
-    jobbytes          bigint      default 0,
-    readbytes        bigint      default 0,
-    joberrors         integer     default 0,
-    jobmissingfiles   integer     default 0,
-    poolid            integer     default 0,
-    filesetid         integer     default 0,
-    purgedfiles       smallint    default 0,
-    hasbase           smallint    default 0,
-    priorjobid        integer     default 0,
-    primary key (jobid)
-);
-
-CREATE INDEX job_name_idx on job (name);
-
--- Create a table like Job for long term statistics 
-CREATE TABLE JobHisto (LIKE Job);
-CREATE INDEX jobhisto_idx ON jobhisto ( starttime );
-
-
-CREATE TABLE Location (
-   LocationId         serial      not null,
-   Location           text        not null,
-   Cost               integer     default 0,
-   Enabled            smallint,
-   primary key (LocationId)
-);
-
-
-CREATE TABLE fileset
-(
-    filesetid         serial      not null,
-    fileset           text        not null,
-    md5               text        not null,
-    createtime        timestamp without time zone not null,
-    primary key (filesetid)
-);
-
-CREATE INDEX fileset_name_idx on fileset (fileset);
-
-CREATE TABLE jobmedia
-(
-    jobmediaid        serial      not null,
-    jobid             integer     not null,
-    mediaid           integer     not null,
-    firstindex        integer     default 0,
-    lastindex         integer     default 0,
-    startfile         integer     default 0,
-    endfile           integer     default 0,
-    startblock        bigint      default 0,
-    endblock          bigint      default 0,
-    volindex          integer     default 0,
-    copy              integer     default 0,
-    primary key (jobmediaid)
-);
-
-CREATE INDEX job_media_job_id_media_id_idx on jobmedia (jobid, mediaid);
-
-CREATE TABLE media
-(
-    mediaid           serial      not null,
-    volumename        text        not null,
-    slot              integer     default 0,
-    poolid            integer     default 0,
-    mediatype         text        not null,
-    mediatypeid       integer     default 0,
-    labeltype         integer     default 0,
-    firstwritten      timestamp   without time zone,
-    lastwritten       timestamp   without time zone,
-    labeldate         timestamp   without time zone,
-    voljobs           integer     default 0,
-    volfiles          integer     default 0,
-    volblocks         integer     default 0,
-    volmounts         integer     default 0,
-    volbytes          bigint      default 0,
-    volparts          integer     default 0,
-    volerrors         integer     default 0,
-    volwrites         integer     default 0,
-    volcapacitybytes  bigint      default 0,
-    volstatus         text        not null
-        check (volstatus in ('Full','Archive','Append',
-              'Recycle','Purged','Read-Only','Disabled',
-              'Error','Busy','Used','Cleaning','Scratch')),
-    enabled           smallint    default 1,
-    recycle           smallint    default 0,
-    ActionOnPurge     smallint    default 0,
-    volretention      bigint      default 0,
-    voluseduration    bigint      default 0,
-    maxvoljobs        integer     default 0,
-    maxvolfiles       integer     default 0,
-    maxvolbytes       bigint      default 0,
-    inchanger         smallint    default 0,
-    StorageId         integer     default 0,
-    DeviceId          integer     default 0,
-    mediaaddressing   smallint    default 0,
-    volreadtime       bigint      default 0,
-    volwritetime      bigint      default 0,
-    endfile           integer     default 0,
-    endblock          bigint      default 0,
-    LocationId        integer     default 0,
-    recyclecount      integer     default 0,
-    initialwrite      timestamp   without time zone,
-    scratchpoolid     integer     default 0,
-    recyclepoolid     integer     default 0,
-    comment           text,
-    primary key (mediaid)
-);
-
-create unique index media_volumename_id on media (volumename);
-
- 
-CREATE TABLE MediaType (
-   MediaTypeId SERIAL,
-   MediaType TEXT NOT NULL,
-   ReadOnly INTEGER DEFAULT 0,
-   PRIMARY KEY(MediaTypeId)
-   );
-
-CREATE TABLE Storage (
-   StorageId SERIAL,
-   Name TEXT NOT NULL,
-   AutoChanger INTEGER DEFAULT 0,
-   PRIMARY KEY(StorageId)
-   );
-
-CREATE TABLE Device (
-   DeviceId SERIAL,
-   Name TEXT NOT NULL,
-   MediaTypeId INTEGER NOT NULL,
-   StorageId INTEGER NOT NULL,
-   DevMounts INTEGER NOT NULL DEFAULT 0,
-   DevReadBytes BIGINT NOT NULL DEFAULT 0,
-   DevWriteBytes BIGINT NOT NULL DEFAULT 0,
-   DevReadBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,
-   DevWriteBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,
-   DevReadTime BIGINT NOT NULL DEFAULT 0,
-   DevWriteTime BIGINT NOT NULL DEFAULT 0,
-   DevReadTimeSinceCleaning BIGINT NOT NULL DEFAULT 0,
-   DevWriteTimeSinceCleaning BIGINT NOT NULL DEFAULT 0,
-   CleaningDate timestamp without time zone,
-   CleaningPeriod BIGINT NOT NULL DEFAULT 0,
-   PRIMARY KEY(DeviceId)
-   );
-
-
-CREATE TABLE pool
-(
-    poolid            serial      not null,
-    name              text        not null,
-    numvols           integer     default 0,
-    maxvols           integer     default 0,
-    useonce           smallint    default 0,
-    usecatalog        smallint    default 0,
-    acceptanyvolume   smallint    default 0,
-    volretention      bigint      default 0,
-    voluseduration    bigint      default 0,
-    maxvoljobs        integer     default 0,
-    maxvolfiles       integer     default 0,
-    maxvolbytes       bigint      default 0,
-    autoprune         smallint    default 0,
-    recycle           smallint    default 0,
-    ActionOnPurge     smallint    default 0,
-    pooltype          text                          
-      check (pooltype in ('Backup','Copy','Cloned','Archive','Migration','Scratch')),
-    labeltype         integer     default 0,
-    labelformat       text        not null,
-    enabled           smallint    default 1,
-    scratchpoolid     integer     default 0,
-    recyclepoolid     integer     default 0,
-    NextPoolId        integer     default 0,
-    MigrationHighBytes BIGINT     DEFAULT 0,
-    MigrationLowBytes  BIGINT     DEFAULT 0,
-    MigrationTime      BIGINT     DEFAULT 0,
-    primary key (poolid)
-);
-
-CREATE INDEX pool_name_idx on pool (name);
-
-CREATE TABLE client
-(
-    clientid          serial      not null,
-    name              text        not null,
-    uname             text        not null,
-    autoprune         smallint    default 0,
-    fileretention     bigint      default 0,
-    jobretention      bigint      default 0,
-    primary key (clientid)
-);
-
-create unique index client_name_idx on client (name);
-
-CREATE TABLE Log
-(
-    LogId             serial      not null,
-    JobId             integer     not null,
-    Time              timestamp   without time zone,
-    LogText           text        not null,
-    primary key (LogId)
-);
-create index log_name_idx on Log (JobId);
-
-CREATE TABLE LocationLog (
-   LocLogId SERIAL NOT NULL,
-   Date timestamp   without time zone,
-   Comment TEXT NOT NULL,
-   MediaId INTEGER DEFAULT 0,
-   LocationId INTEGER DEFAULT 0,
-   newvolstatus text not null
-        check (newvolstatus in ('Full','Archive','Append',
-              'Recycle','Purged','Read-Only','Disabled',
-              'Error','Busy','Used','Cleaning','Scratch')),
-   newenabled smallint,
-   PRIMARY KEY(LocLogId)
-);
-
-
-
-CREATE TABLE counters
-(
-    counter           text        not null,
-    minvalue          integer     default 0,
-    maxvalue          integer     default 0,
-    currentvalue      integer     default 0,
-    wrapcounter       text        not null,
-    primary key (counter)
-);
-
-
-
-CREATE TABLE basefiles
-(
-    baseid            serial                not null,
-    jobid             integer               not null,
-    fileid            bigint                not null,
-    fileindex         integer                       ,
-    basejobid         integer                       ,
-    primary key (baseid)
-);
-
-CREATE TABLE unsavedfiles
-(
-    UnsavedId         integer               not null,
-    jobid             integer               not null,
-    pathid            integer               not null,
-    filenameid        integer               not null,
-    primary key (UnsavedId)
-);
-
-CREATE TABLE CDImages 
-(
-   MediaId integer not null,
-   LastBurn timestamp without time zone not null,
-   primary key (MediaId)
-);
-
-
-CREATE TABLE version
-(
-    versionid         integer               not null
-);
-
-CREATE TABLE Status (
-   JobStatus CHAR(1) NOT NULL,
-   JobStatusLong TEXT, 
-   PRIMARY KEY (JobStatus)
-   );
-
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('C', 'Created, not yet running');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('R', 'Running');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('B', 'Blocked');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('T', 'Completed successfully');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('E', 'Terminated with errors');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('e', 'Non-fatal error');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('f', 'Fatal error');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('D', 'Verify found differences');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('A', 'Canceled by user');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('F', 'Waiting for Client');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('S', 'Waiting for Storage daemon');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('m', 'Waiting for new media');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('M', 'Waiting for media mount');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('s', 'Waiting for storage resource');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('j', 'Waiting for job resource');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('c', 'Waiting for client resource');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('d', 'Waiting on maximum jobs');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('t', 'Waiting on start time');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('p', 'Waiting on higher priority jobs');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('a', 'SD despooling attributes');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('i', 'Doing batch insert file records');
-
-INSERT INTO Version (VersionId) VALUES (11);
-
--- Make sure we have appropriate permissions
-
diff --git a/src/win32/cats/make_sqlite3_catalog_backup.cmd b/src/win32/cats/make_sqlite3_catalog_backup.cmd
deleted file mode 100644
index 4c96861..0000000
--- a/src/win32/cats/make_sqlite3_catalog_backup.cmd
+++ /dev/null
@@ -1,38 +0,0 @@
- at ECHO off
-REM 
-REM  This script dumps your Bacula catalog in ASCII format
-REM  It works for MySQL, SQLite, and PostgreSQL
-REM 
-REM   %1 is the name of the database to be backed up and the name
-REM      of the output file (default = bacula
-REM   %2 is the user name with which to access the database
-REM      (default = bacula).
-REM   %3 is the password with which to access the database or "" if no password
-REM      (default "")
-REM 
-REM 
- at ECHO on
-
-DEL /f "@working_dir_cmd@\%1.sql" 2>nul
-
-ECHO .dump | "@bin_dir_cmd@\sqlite3" "@working_dir_cmd@\%1.db" > "@working_dir_cmd@\%1.sql"
-
- at ECHO off
-REM 
-REM   To read back a MySQL database use: 
-REM      cd @working_dir_cmd@
-REM      rd /s /q @SQL_BINDIR@\..\data\bacula
-REM      mysql < bacula.sql
-REM 
-REM   To read back a SQLite database use:
-REM      cd @working_dir_cmd@
-REM      del /f bacula.db
-REM      sqlite bacula.db < bacula.sql
-REM 
-REM   To read back a PostgreSQL database use:
-REM      cd @working_dir_cmd@
-REM      dropdb bacula
-REM      createdb -T template0 -E SQL_ASCII bacula
-REM      psql bacula < bacula.sql
-REM 
-EXIT /b 0
diff --git a/src/win32/cats/make_sqlite3_tables.cmd b/src/win32/cats/make_sqlite3_tables.cmd
deleted file mode 100644
index aa73980..0000000
--- a/src/win32/cats/make_sqlite3_tables.cmd
+++ /dev/null
@@ -1,7 +0,0 @@
- at ECHO off
-REM
-REM Script to create Bacula SQLite tables
-
-"@bin_dir_cmd@\sqlite3" %* "@working_dir_cmd@\bacula.db" < "@bin_dir_cmd@\make_sqlite3_tables.sql"
-
-EXIT /b 0
diff --git a/src/win32/cats/make_sqlite3_tables.sql b/src/win32/cats/make_sqlite3_tables.sql
deleted file mode 100644
index 83a4e4c..0000000
--- a/src/win32/cats/make_sqlite3_tables.sql
+++ /dev/null
@@ -1,384 +0,0 @@
-
-CREATE TABLE Filename (
-  FilenameId INTEGER,
-  Name TEXT DEFAULT '',
-  PRIMARY KEY(FilenameId) 
-  );
-
-CREATE INDEX inx1 ON Filename (Name);
-
-CREATE TABLE Path (
-   PathId INTEGER,
-   Path TEXT DEFAULT '',
-   PRIMARY KEY(PathId) 
-   );
-
-CREATE INDEX inx2 ON Path (Path);
-
-
-CREATE TABLE File (
-   FileId INTEGER,
-   FileIndex INTEGER UNSIGNED NOT NULL,
-   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
-   PathId INTEGER UNSIGNED REFERENCES Path NOT NULL,
-   FilenameId INTEGER UNSIGNED REFERENCES Filename NOT NULL,
-   MarkId INTEGER UNSIGNED DEFAULT 0,
-   LStat VARCHAR(255) NOT NULL,
-   MD5 VARCHAR(255) NOT NULL,
-   PRIMARY KEY(FileId) 
-   );
-
-CREATE INDEX inx3 ON File (JobId);
-CREATE INDEX inx4 ON File (FilenameId, PathId);
---
--- Possibly add one or more of the following indexes
---  if your Verifies are too slow.
---
--- CREATE INDEX inx4 ON File (PathId);
--- CREATE INDEX inx5 ON File (FileNameId);
--- CREATE INDEX inx9 ON File (JobId, PathId, FilenameId);
-
-CREATE TABLE Job (
-   JobId INTEGER,
-   Job VARCHAR(128) NOT NULL,
-   Name VARCHAR(128) NOT NULL,
-   Type CHAR(1) NOT NULL,
-   Level CHAR(1) NOT NULL,
-   ClientId INTEGER REFERENCES Client DEFAULT 0,
-   JobStatus CHAR(1) NOT NULL,
-   SchedTime DATETIME NOT NULL,
-   StartTime DATETIME DEFAULT 0,
-   EndTime DATETIME DEFAULT 0,
-   RealEndTime DATETIME DEFAULT 0,
-   JobTDate BIGINT UNSIGNED DEFAULT 0,
-   VolSessionId INTEGER UNSIGNED DEFAULT 0,
-   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
-   JobFiles INTEGER UNSIGNED DEFAULT 0,
-   JobBytes BIGINT UNSIGNED DEFAULT 0,
-   ReadBytes BIGINT UNSIGNED DEFAULT 0,
-   JobErrors INTEGER UNSIGNED DEFAULT 0,
-   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
-   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
-   PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
-   PurgedFiles TINYINT DEFAULT 0,
-   HasBase TINYINT DEFAULT 0,
-   PRIMARY KEY(JobId) 
-   );
-CREATE INDEX inx6 ON Job (Name);
-
--- Create a table like Job for long term statistics 
-CREATE TABLE JobHisto (
-   JobId INTEGER,
-   Job VARCHAR(128) NOT NULL,
-   Name VARCHAR(128) NOT NULL,
-   Type CHAR(1) NOT NULL,
-   Level CHAR(1) NOT NULL,
-   ClientId INTEGER DEFAULT 0,
-   JobStatus CHAR(1) NOT NULL,
-   SchedTime DATETIME NOT NULL,
-   StartTime DATETIME DEFAULT 0,
-   EndTime DATETIME DEFAULT 0,
-   RealEndTime DATETIME DEFAULT 0,
-   JobTDate BIGINT UNSIGNED DEFAULT 0,
-   VolSessionId INTEGER UNSIGNED DEFAULT 0,
-   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
-   JobFiles INTEGER UNSIGNED DEFAULT 0,
-   JobBytes BIGINT UNSIGNED DEFAULT 0,
-   ReadBytes BIGINT UNSIGNED DEFAULT 0,
-   JobErrors INTEGER UNSIGNED DEFAULT 0,
-   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
-   PoolId INTEGER UNSIGNED DEFAULT 0,
-   FileSetId INTEGER UNSIGNED DEFAULT 0,
-   PriorJobId INTEGER UNSIGNED DEFAULT 0,
-   PurgedFiles TINYINT DEFAULT 0,
-   HasBase TINYINT DEFAULT 0
-   );
-CREATE INDEX inx61 ON JobHisto (StartTime);
-
-CREATE TABLE Location (
-   LocationId INTEGER,
-   Location TEXT NOT NULL,
-   Cost INTEGER DEFAULT 0,
-   Enabled TINYINT,
-   PRIMARY KEY(LocationId)
-   );
-
-CREATE TABLE LocationLog (
-   LocLogId INTEGER,
-   Date DATETIME NOT NULL,
-   Comment TEXT NOT NULL,
-   MediaId INTEGER UNSIGNED REFERENCES Media DEFAULT 0,
-   LocationId INTEGER UNSIGNED REFERENCES LocationId DEFAULT 0,
-   NewVolStatus VARCHAR(20) NOT NULL,
-   NewEnabled TINYINT NOT NULL,
-   PRIMARY KEY(LocLogId)
-);
-
-
-CREATE TABLE Log (
-   LogId INTEGER,
-   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
-   Time DATETIME NOT NULL,
-   LogText TEXT NOT NULL,
-   PRIMARY KEY(LogId) 
-   );
-CREATE INDEX LogInx1 ON Log (JobId);
-
-
-CREATE TABLE FileSet (
-   FileSetId INTEGER,
-   FileSet VARCHAR(128) NOT NULL,
-   MD5 VARCHAR(25) NOT NULL,
-   CreateTime DATETIME DEFAULT 0,
-   PRIMARY KEY(FileSetId)
-   );
-
-CREATE TABLE JobMedia (
-   JobMediaId INTEGER,
-   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
-   MediaId INTEGER UNSIGNED REFERENCES Media NOT NULL,
-   FirstIndex INTEGER UNSIGNED NOT NULL,
-   LastIndex INTEGER UNSIGNED NOT NULL,
-   StartFile INTEGER UNSIGNED DEFAULT 0,
-   EndFile INTEGER UNSIGNED DEFAULT 0,
-   StartBlock INTEGER UNSIGNED DEFAULT 0,
-   EndBlock INTEGER UNSIGNED DEFAULT 0,
-   VolIndex INTEGER UNSIGNED DEFAULT 0,
-   Copy     INTEGER UNSIGNED DEFAULT 0,
-   PRIMARY KEY(JobMediaId) 
-   );
-
-CREATE INDEX inx7 ON JobMedia (JobId, MediaId);
-
-
-CREATE TABLE Media (
-   MediaId INTEGER,
-   VolumeName VARCHAR(128) NOT NULL,
-   Slot INTEGER DEFAULT 0,
-   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   MediaType VARCHAR(128) NOT NULL,
-   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
-   LabelType TINYINT DEFAULT 0,
-   FirstWritten DATETIME DEFAULT 0,
-   LastWritten DATETIME DEFAULT 0,
-   LabelDate DATETIME DEFAULT 0,
-   VolJobs INTEGER UNSIGNED DEFAULT 0,
-   VolFiles INTEGER UNSIGNED DEFAULT 0,
-   VolBlocks INTEGER UNSIGNED DEFAULT 0,
-   VolMounts INTEGER UNSIGNED DEFAULT 0,
-   VolBytes BIGINT UNSIGNED DEFAULT 0,
-   VolParts INTEGER UNSIGNED DEFAULT 0,
-   VolErrors INTEGER UNSIGNED DEFAULT 0,
-   VolWrites INTEGER UNSIGNED DEFAULT 0,
-   VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
-   VolStatus VARCHAR(20) NOT NULL,
-   Enabled TINYINT DEFAULT 1,
-   Recycle TINYINT DEFAULT 0,
-   ActionOnPurge     TINYINT    DEFAULT 0,
-   VolRetention BIGINT UNSIGNED DEFAULT 0,
-   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
-   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
-   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
-   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
-   InChanger TINYINT DEFAULT 0,
-   StorageId INTEGER UNSIGNED REFERENCES Storage DEFAULT 0,
-   DeviceId INTEGER UNSIGNED REFERENCES Device DEFAULT 0,
-   MediaAddressing TINYINT DEFAULT 0,
-   VolReadTime BIGINT UNSIGNED DEFAULT 0,
-   VolWriteTime BIGINT UNSIGNED DEFAULT 0,
-   EndFile INTEGER UNSIGNED DEFAULT 0,
-   EndBlock INTEGER UNSIGNED DEFAULT 0,
-   LocationId INTEGER UNSIGNED REFERENCES Location DEFAULT 0,
-   RecycleCount INTEGER UNSIGNED DEFAULT 0,
-   InitialWrite DATETIME DEFAULT 0,
-   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   Comment TEXT,
-   PRIMARY KEY(MediaId)
-   );
-
-CREATE INDEX inx8 ON Media (PoolId);
-
-CREATE TABLE MediaType (
-   MediaTypeId INTEGER,
-   MediaType VARCHAR(128) NOT NULL,
-   ReadOnly TINYINT DEFAULT 0,
-   PRIMARY KEY(MediaTypeId)
-   );
-
-CREATE TABLE Storage (
-   StorageId INTEGER,
-   Name VARCHAR(128) NOT NULL,
-   AutoChanger TINYINT DEFAULT 0,
-   PRIMARY KEY(StorageId)
-   );
-
-CREATE TABLE Device (
-   DeviceId INTEGER,
-   Name VARCHAR(128) NOT NULL,
-   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType NOT NULL,
-   StorageId INTEGER UNSIGNED REFERENCES Storage,
-   DevMounts INTEGER UNSIGNED DEFAULT 0,
-   DevReadBytes BIGINT UNSIGNED DEFAULT 0,
-   DevWriteBytes BIGINT UNSIGNED DEFAULT 0,
-   DevReadBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
-   DevWriteBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
-   DevReadTime BIGINT UNSIGNED DEFAULT 0,
-   DevWriteTime BIGINT UNSIGNED DEFAULT 0,
-   DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
-   DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
-   CleaningDate DATETIME DEFAULT 0,
-   CleaningPeriod BIGINT UNSIGNED DEFAULT 0,
-   PRIMARY KEY(DeviceId)
-   );
-
-
-CREATE TABLE Pool (
-   PoolId INTEGER,
-   Name VARCHAR(128) NOT NULL,
-   NumVols INTEGER UNSIGNED DEFAULT 0,
-   MaxVols INTEGER UNSIGNED DEFAULT 0,
-   UseOnce TINYINT DEFAULT 0,
-   UseCatalog TINYINT DEFAULT 1,
-   AcceptAnyVolume TINYINT DEFAULT 0,
-   VolRetention BIGINT UNSIGNED DEFAULT 0,
-   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
-   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
-   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
-   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
-   AutoPrune TINYINT DEFAULT 0,
-   Recycle TINYINT DEFAULT 0,
-   ActionOnPurge     TINYINT    DEFAULT 0,
-   PoolType VARCHAR(20) NOT NULL,
-   LabelType TINYINT DEFAULT 0,
-   LabelFormat VARCHAR(128) NOT NULL,
-   Enabled TINYINT DEFAULT 1,
-   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   NextPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   MigrationHighBytes BIGINT UNSIGNED DEFAULT 0,
-   MigrationLowBytes BIGINT UNSIGNED DEFAULT 0,
-   MigrationTime BIGINT UNSIGNED DEFAULT 0,
-   UNIQUE (Name),
-   PRIMARY KEY (PoolId)
-   );
-
-
-CREATE TABLE Client (
-   ClientId INTEGER,
-   Name VARCHAR(128) NOT NULL,
-   Uname VARCHAR(255) NOT NULL,   -- uname -a field
-   AutoPrune TINYINT DEFAULT 0,
-   FileRetention BIGINT UNSIGNED DEFAULT 0,
-   JobRetention  BIGINT UNSIGNED DEFAULT 0,
-   UNIQUE (Name),
-   PRIMARY KEY(ClientId)
-   );
-
-CREATE TABLE BaseFiles (
-   BaseId INTEGER,
-   BaseJobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
-   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
-   FileId INTEGER UNSIGNED REFERENCES File NOT NULL,
-   FileIndex INTEGER UNSIGNED,
-   PRIMARY KEY(BaseId)
-   );
-
-CREATE TABLE UnsavedFiles (
-   UnsavedId INTEGER,
-   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
-   PathId INTEGER UNSIGNED REFERENCES Path NOT NULL,
-   FilenameId INTEGER UNSIGNED REFERENCES Filename NOT NULL,
-   PRIMARY KEY (UnsavedId)
-   );
-
-
-CREATE TABLE NextId (
-   id INTEGER UNSIGNED DEFAULT 0,
-   TableName TEXT NOT NULL,
-   PRIMARY KEY (TableName)
-   );
-
-
-
--- Initialize JobId to start at 1
-INSERT INTO NextId (id, TableName) VALUES (1, 'Job');
-
-CREATE TABLE Version (
-   VersionId INTEGER UNSIGNED NOT NULL 
-   );
-
-
-CREATE TABLE Counters (
-   Counter TEXT NOT NULL,     
-   MinValue INTEGER DEFAULT 0, 
-   MaxValue INTEGER DEFAULT 0,
-   CurrentValue INTEGER DEFAULT 0,
-   WrapCounter TEXT NOT NULL,
-   PRIMARY KEY (Counter)
-   );
-
-CREATE TABLE CDImages (
-   MediaId INTEGER UNSIGNED NOT NULL,
-   LastBurn DATETIME NOT NULL,
-   PRIMARY KEY (MediaId)
-   );
-
-
-CREATE TABLE Status (
-   JobStatus CHAR(1) NOT NULL,
-   JobStatusLong BLOB, 
-   PRIMARY KEY (JobStatus)
-   );
-
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('C', 'Created, not yet running');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('R', 'Running');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('B', 'Blocked');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('T', 'Completed successfully');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('E', 'Terminated with errors');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('e', 'Non-fatal error');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('f', 'Fatal error');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('D', 'Verify found differences');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('A', 'Canceled by user');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('F', 'Waiting for Client');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('S', 'Waiting for Storage daemon');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('m', 'Waiting for new media');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('M', 'Waiting for media mount');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('s', 'Waiting for storage resource');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('j', 'Waiting for job resource');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('c', 'Waiting for client resource');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('d', 'Waiting on maximum jobs');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('t', 'Waiting on start time');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('p', 'Waiting on higher priority jobs');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('a', 'SD despooling attributes');
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES
-   ('i', 'Doing batch insert file records');
-
-
--- Initialize Version            
-INSERT INTO Version (VersionId) VALUES (11);
-
-
-PRAGMA default_cache_size = 100000;
-PRAGMA synchronous = NORMAL;
diff --git a/src/win32/compat/Makefile b/src/win32/compat/Makefile
deleted file mode 100644
index e42f55a..0000000
--- a/src/win32/compat/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#  
-#  Written for Bacula by Howard Thomson, April 2006
-# 
-
-include ../Makefile.inc
-
-INCLUDES = \
-	$(INCLUDE_GCC) \
-	$(INCLUDE_MINGW) \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_ZLIB) \
-	$(INCLUDE_VSS) \
-	$(INCLUDE_ICONS) \
-	$(INCLUDE_OPENSSL)
-
-DEFINES = \
-	-DWIN32 \
-	$(HAVES)
-
-######################################################################
-
-# Files files in src/win32/compat
-
-LIB_OBJS = \
-	$(OBJDIR)/compat.o \
-	$(OBJDIR)/getopt.o \
-	$(OBJDIR)/print.o \
-	$(OBJDIR)/vss.o \
-	$(OBJDIR)/vss_XP.o \
-	$(OBJDIR)/vss_W2K3.o \
-	$(OBJDIR)/vss_Vista.o
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all: $(LIBDIR)/libcompat.a
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(ECHO_CMD)rm -f $(OBJDIR)/*.[od] $(LIBDIR)/libcompat.a
-
-#
-# Rules
-# 
-
-$(LIBDIR)/libcompat.a: $(LIB_OBJS)
-	@echo "Updating archive $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(AR) rs $@ $^
-
-include ../Makefile.rules
-
-ifneq ($(MAKECMDGOALS),clean)
-include $(patsubst %.o,%.d,$(filter-out %.res,$(LIB_OBJS)))
-endif
diff --git a/src/win32/compat/alloca.h b/src/win32/compat/alloca.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/arpa/inet.h b/src/win32/compat/arpa/inet.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/compat.cpp b/src/win32/compat/compat.cpp
deleted file mode 100644
index 17e279b..0000000
--- a/src/win32/compat/compat.cpp
+++ /dev/null
@@ -1,2750 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-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.
-*/
-//                              -*- Mode: C++ -*-
-// compat.cpp -- compatibilty layer to make bacula-fd run
-//               natively under windows
-//
-// Copyright transferred from Raider Solutions, Inc to
-//   Kern Sibbald and John Walker by express permission.
-//
-// Author          : Christopher S. Hull
-// Created On      : Sat Jan 31 15:55:00 2004
-
-
-#include "bacula.h"
-#include "compat.h"
-#include "jcr.h"
-#include "findlib/find.h"
-
-/* Note, if you want to see what Windows variables and structures
- * are defined, bacula.h includes <windows.h>, which is found in:
- *
- *   cross-tools/mingw32/mingw32/include
- * or
- *   cross-tools/mingw-w64/x86_64-pc-mingw32/include
- * 
- * depending on whether we are building the 32 bit version or
- * the 64 bit version. 
- */
-
-static const int dbglvl = 500;
-
-#define b_errno_win32 (1<<29)
-
-#define MAX_PATHLENGTH  1024
-
-/**
-   UTF-8 to UCS2 path conversion is expensive,
-   so we cache the conversion. During backup the
-   conversion is called 3 times (lstat, attribs, open),
-   by using the cache this is reduced to 1 time
- */
-static POOLMEM *g_pWin32ConvUTF8Cache = NULL;
-static POOLMEM *g_pWin32ConvUCS2Cache = NULL;
-static DWORD g_dwWin32ConvUTF8strlen = 0;
-static pthread_mutex_t Win32Convmutex = PTHREAD_MUTEX_INITIALIZER;
-
-static t_pVSSPathConvert   g_pVSSPathConvert;
-static t_pVSSPathConvertW  g_pVSSPathConvertW;
-
-/* Forward referenced functions */
-static const char *errorString(void);
-
-
-void SetVSSPathConvert(t_pVSSPathConvert pPathConvert, t_pVSSPathConvertW pPathConvertW)
-{
-   g_pVSSPathConvert = pPathConvert;
-   g_pVSSPathConvertW = pPathConvertW;
-}
-
-static void Win32ConvInitCache()
-{
-   if (g_pWin32ConvUTF8Cache) {
-      return;
-   }
-   g_pWin32ConvUTF8Cache = get_pool_memory(PM_FNAME);
-   g_pWin32ConvUCS2Cache = get_pool_memory(PM_FNAME);
-}
-
-void Win32ConvCleanupCache()
-{
-   P(Win32Convmutex);
-   if (g_pWin32ConvUTF8Cache) {
-      free_pool_memory(g_pWin32ConvUTF8Cache);
-      g_pWin32ConvUTF8Cache = NULL;
-   }
-
-   if (g_pWin32ConvUCS2Cache) {
-      free_pool_memory(g_pWin32ConvUCS2Cache);   
-      g_pWin32ConvUCS2Cache = NULL;
-   }
-
-   g_dwWin32ConvUTF8strlen = 0;
-   V(Win32Convmutex);
-}
-
-
-/* to allow the usage of the original version in this file here */
-#undef fputs
-
-
-//#define USE_WIN32_COMPAT_IO 1
-#define USE_WIN32_32KPATHCONVERSION 1
-
-extern DWORD   g_platform_id;
-extern DWORD   g_MinorVersion;
-
-/* From Microsoft SDK (KES) is the diff between Jan 1 1601 and Jan 1 1970 */
-#ifdef HAVE_MINGW
-#define WIN32_FILETIME_ADJUST 0x19DB1DED53E8000ULL 
-#else
-#define WIN32_FILETIME_ADJUST 0x19DB1DED53E8000I64
-#endif
-
-#define WIN32_FILETIME_SCALE  10000000             // 100ns/second
-
-/**
- * Convert from UTF-8 to VSS Windows path/file 
- *  Used by compatibility layer for Unix system calls
- */
-static void conv_unix_to_vss_win32_path(const char *name, char *win32_name, DWORD dwSize)
-{
-    const char *fname = name;
-    char *tname = win32_name;
-
-    Dmsg0(dbglvl, "Enter convert_unix_to_win32_path\n");
-
-    if (IsPathSeparator(name[0]) &&
-        IsPathSeparator(name[1]) &&
-        name[2] == '.' &&
-        IsPathSeparator(name[3])) {
-
-        *win32_name++ = '\\';
-        *win32_name++ = '\\';
-        *win32_name++ = '.';
-        *win32_name++ = '\\';
-
-        name += 4;
-    } else if (g_platform_id != VER_PLATFORM_WIN32_WINDOWS &&
-               g_pVSSPathConvert == NULL) {
-        /* allow path to be 32767 bytes */
-        *win32_name++ = '\\';
-        *win32_name++ = '\\';
-        *win32_name++ = '?';
-        *win32_name++ = '\\';
-    }
-
-    while (*name) {
-        /** Check for Unix separator and convert to Win32 */
-        if (name[0] == '/' && name[1] == '/') {  /* double slash? */
-           name++;                               /* yes, skip first one */
-        }
-        if (*name == '/') {
-            *win32_name++ = '\\';     /* convert char */
-        /* If Win32 separator that is "quoted", remove quote */
-        } else if (*name == '\\' && name[1] == '\\') {
-            *win32_name++ = '\\';
-            name++;                   /* skip first \ */
-        } else {
-            *win32_name++ = *name;    /* copy character */
-        }
-        name++;
-    }
-    /** Strip any trailing slash, if we stored something
-     * but leave "c:\" with backslash (root directory case
-     */
-    if (*fname != 0 && win32_name[-1] == '\\' && strlen (fname) != 3) {
-        win32_name[-1] = 0;
-    } else {
-        *win32_name = 0;
-    }
-
-    /** here we convert to VSS specific file name which
-       can get longer because VSS will make something like
-       \\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy1\\bacula\\uninstall.exe
-       from c:\bacula\uninstall.exe
-    */
-    Dmsg1(dbglvl, "path=%s\n", tname);
-    if (g_pVSSPathConvert != NULL) {
-       POOLMEM *pszBuf = get_pool_memory (PM_FNAME);
-       pszBuf = check_pool_memory_size(pszBuf, dwSize);
-       bstrncpy(pszBuf, tname, strlen(tname)+1);
-       g_pVSSPathConvert(pszBuf, tname, dwSize);
-       free_pool_memory(pszBuf);
-    }
-
-    Dmsg1(dbglvl, "Leave cvt_u_to_win32_path path=%s\n", tname);
-}
-
-/** Conversion of a Unix filename to a Win32 filename */
-void unix_name_to_win32(POOLMEM **win32_name, char *name)
-{
-   /* One extra byte should suffice, but we double it */
-   /* add MAX_PATH bytes for VSS shadow copy name */
-   DWORD dwSize = 2*strlen(name)+MAX_PATH;
-   *win32_name = check_pool_memory_size(*win32_name, dwSize);
-   conv_unix_to_vss_win32_path(name, *win32_name, dwSize);
-}
-
-
-/**
- * This function expects an UCS-encoded standard wchar_t in pszUCSPath and
- * will complete the input path to an absolue path of the form \\?\c:\path\file
- * 
- * With this trick, it is possible to have 32K characters long paths.
- *
- * Optionally one can use pBIsRawPath to determine id pszUCSPath contains a path
- * to a raw windows partition.  
- *
- *        created 02/27/2006 Thorsten Engel
- */
-static POOLMEM* 
-make_wchar_win32_path(POOLMEM *pszUCSPath, BOOL *pBIsRawPath /*= NULL*/)
-{
-
-   Dmsg0(dbglvl, "Enter wchar_win32_path\n");
-   if (pBIsRawPath) {
-      *pBIsRawPath = FALSE;              /* Initialize, set later */
-   }
-
-   if (!p_GetCurrentDirectoryW) {
-      Dmsg0(dbglvl, "Leave wchar_win32_path no change \n");
-      return pszUCSPath;
-   }
-   
-   wchar_t *name = (wchar_t *)pszUCSPath;
-
-   /* if it has already the desired form, exit without changes */
-   if (wcslen(name) > 3 && wcsncmp(name, L"\\\\?\\", 4) == 0) {
-      Dmsg0(dbglvl, "Leave wchar_win32_path no change \n");
-      return pszUCSPath;
-   }
-
-   wchar_t *pwszBuf = (wchar_t *)get_pool_memory(PM_FNAME);
-   wchar_t *pwszCurDirBuf = (wchar_t *)get_pool_memory(PM_FNAME);
-   DWORD dwCurDirPathSize = 0;
-
-   /* get buffer with enough size (name+max 6. wchars+1 null terminator */
-   DWORD dwBufCharsNeeded = (wcslen(name)+7);
-   pwszBuf = (wchar_t *)check_pool_memory_size((POOLMEM *)pwszBuf, dwBufCharsNeeded*sizeof(wchar_t));
-      
-   /* add \\?\ to support 32K long filepaths 
-      it is important to make absolute paths, so we add drive and
-      current path if necessary */
-
-   BOOL bAddDrive = TRUE;
-   BOOL bAddCurrentPath = TRUE;
-   BOOL bAddPrefix = TRUE;
-
-   /* does path begin with drive? if yes, it is absolute */
-   if (iswalpha(name[0]) && name[1] == ':' && IsPathSeparator(name[2])) {
-      bAddDrive = FALSE;
-      bAddCurrentPath = FALSE;
-   }
-
-   /* is path absolute? */
-   if (IsPathSeparator(name[0]))
-      bAddCurrentPath = FALSE; 
-
-   /* is path relative to itself?, if yes, skip ./ */
-   if (name[0] == '.' && IsPathSeparator(name[1])) {
-      name += 2;
-   }
-
-   /* is path of form '//./'? */
-   if (IsPathSeparator(name[0]) && 
-       IsPathSeparator(name[1]) && 
-       name[2] == '.' && 
-       IsPathSeparator(name[3])) {
-      bAddDrive = FALSE;
-      bAddCurrentPath = FALSE;
-      bAddPrefix = FALSE;
-      if (pBIsRawPath) {
-         *pBIsRawPath = TRUE;
-      }
-   }
-
-   int nParseOffset = 0;
-   
-   /* add 4 bytes header */
-   if (bAddPrefix) {
-      nParseOffset = 4;
-      wcscpy(pwszBuf, L"\\\\?\\");
-   }
-
-   /* get current path if needed */
-   if (bAddDrive || bAddCurrentPath) {
-      dwCurDirPathSize = p_GetCurrentDirectoryW(0, NULL);
-      if (dwCurDirPathSize > 0) {
-         /* get directory into own buffer as it may either return c:\... or \\?\C:\.... */         
-         pwszCurDirBuf = (wchar_t *)check_pool_memory_size((POOLMEM *)pwszCurDirBuf, (dwCurDirPathSize+1)*sizeof(wchar_t));
-         p_GetCurrentDirectoryW(dwCurDirPathSize, pwszCurDirBuf);
-      } else {
-         /* we have no info for doing so */
-         bAddDrive = FALSE;
-         bAddCurrentPath = FALSE;
-      }
-   }
-      
-
-   /* add drive if needed */
-   if (bAddDrive && !bAddCurrentPath) {
-      wchar_t szDrive[3];
-
-      if (IsPathSeparator(pwszCurDirBuf[0]) && 
-          IsPathSeparator(pwszCurDirBuf[1]) && 
-          pwszCurDirBuf[2] == '?' && 
-          IsPathSeparator(pwszCurDirBuf[3])) {
-         /* copy drive character */
-         szDrive[0] = pwszCurDirBuf[4];
-      } else {
-         /* copy drive character */
-         szDrive[0] = pwszCurDirBuf[0];
-      }
-
-      szDrive[1] = ':';
-      szDrive[2] = 0;
-
-      wcscat(pwszBuf, szDrive);
-      nParseOffset +=2;
-   }
-
-   /* add path if needed */
-   if (bAddCurrentPath) {
-      /* the 1 add. character is for the eventually added backslash */
-      dwBufCharsNeeded += dwCurDirPathSize+1; 
-      pwszBuf = (wchar_t *)check_pool_memory_size((POOLMEM *)pwszBuf, dwBufCharsNeeded*sizeof(wchar_t));
-      /* get directory into own buffer as it may either return c:\... or \\?\C:\.... */
-      
-      if (IsPathSeparator(pwszCurDirBuf[0]) && 
-          IsPathSeparator(pwszCurDirBuf[1]) && 
-          pwszCurDirBuf[2] == '?' && 
-          IsPathSeparator(pwszCurDirBuf[3])) {
-         /* copy complete string */
-         wcscpy(pwszBuf, pwszCurDirBuf);
-      } else {
-         /* append path  */
-         wcscat(pwszBuf, pwszCurDirBuf);
-      }
-
-      nParseOffset = wcslen((LPCWSTR) pwszBuf);
-
-      /* check if path ends with backslash, if not, add one */
-      if (!IsPathSeparator(pwszBuf[nParseOffset-1])) {
-         wcscat(pwszBuf, L"\\");
-         nParseOffset++;
-      }
-   }
-
-   wchar_t *win32_name = &pwszBuf[nParseOffset];
-   wchar_t *name_start = name;
-
-   while (*name) {
-      /* Check for Unix separator and convert to Win32, eliminating 
-       * duplicate separators.
-       */
-      if (IsPathSeparator(*name)) {
-         *win32_name++ = '\\';     /* convert char */
-
-         /* Eliminate consecutive slashes, but not at the start so that 
-          * \\.\ still works.
-          */
-         if (name_start != name && IsPathSeparator(name[1])) {
-            name++;
-         }
-      } else {
-         *win32_name++ = *name;    /* copy character */
-      }
-      name++;
-   }
-
-   /* null terminate string */
-   *win32_name = 0;
-
-   /* here we convert to VSS specific file name which
-    * can get longer because VSS will make something like
-    * \\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy1\\bacula\\uninstall.exe
-    * from c:\bacula\uninstall.exe
-   */ 
-   if (g_pVSSPathConvertW != NULL) {
-      /* is output buffer large enough? */
-      pwszBuf = (wchar_t *)check_pool_memory_size((POOLMEM *)pwszBuf, 
-                                                  (dwBufCharsNeeded+MAX_PATH)*sizeof(wchar_t));
-      /* create temp. buffer */
-      wchar_t *pszBuf = (wchar_t *)get_pool_memory(PM_FNAME);
-      pszBuf = (wchar_t *)check_pool_memory_size((POOLMEM *)pszBuf, 
-                                                 (dwBufCharsNeeded+MAX_PATH)*sizeof(wchar_t));
-      if (bAddPrefix)
-         nParseOffset = 4;
-      else
-         nParseOffset = 0; 
-      wcsncpy(pszBuf, &pwszBuf[nParseOffset], wcslen(pwszBuf)+1-nParseOffset);
-      g_pVSSPathConvertW(pszBuf, pwszBuf, dwBufCharsNeeded+MAX_PATH);
-      free_pool_memory((POOLMEM *)pszBuf);
-   }   
-
-   free_pool_memory(pszUCSPath);
-   free_pool_memory((POOLMEM *)pwszCurDirBuf);
-
-   Dmsg1(dbglvl, "Leave wchar_win32_path=%s\n", pwszBuf);
-   return (POOLMEM *)pwszBuf;
-}
-
-/*
- * Convert from WCHAR (UCS) to UTF-8
- */
-int
-wchar_2_UTF8(POOLMEM **pszUTF, const wchar_t *pszUCS)
-{
-   /**
-    * The return value is the number of bytes written to the buffer.
-    * The number includes the byte for the null terminator.
-    */
-
-   if (p_WideCharToMultiByte) {
-      int nRet = p_WideCharToMultiByte(CP_UTF8,0,pszUCS,-1,NULL,0,NULL,NULL);
-      *pszUTF = check_pool_memory_size(*pszUTF, nRet);
-      return p_WideCharToMultiByte(CP_UTF8,0,pszUCS,-1,*pszUTF,nRet,NULL,NULL);
-
-   } else {
-      return 0;
-   }
-}
-
-/*
- * Convert from WCHAR (UCS) to UTF-8
- */
-int
-wchar_2_UTF8(char *pszUTF, const wchar_t *pszUCS, int cchChar)
-{
-   /**
-    * The return value is the number of bytes written to the buffer.
-    * The number includes the byte for the null terminator.
-    */
-
-   if (p_WideCharToMultiByte) {
-      int nRet = p_WideCharToMultiByte(CP_UTF8,0,pszUCS,-1,pszUTF,cchChar,NULL,NULL);
-      ASSERT (nRet > 0);
-      return nRet;
-   } else {
-      return 0;
-   }
-}
-
-int
-UTF8_2_wchar(POOLMEM **ppszUCS, const char *pszUTF)
-{
-   /* the return value is the number of wide characters written to the buffer. */
-   /* convert null terminated string from utf-8 to ucs2, enlarge buffer if necessary */
-
-   if (p_MultiByteToWideChar) {
-      /* strlen of UTF8 +1 is enough */
-      DWORD cchSize = (strlen(pszUTF)+1);
-      *ppszUCS = check_pool_memory_size(*ppszUCS, cchSize*sizeof (wchar_t));
-
-      int nRet = p_MultiByteToWideChar(CP_UTF8, 0, pszUTF, -1, (LPWSTR) *ppszUCS,cchSize);
-      ASSERT (nRet > 0);
-      return nRet;
-   } else {
-      return 0;
-   }
-}
-
-
-void
-wchar_win32_path(const char *name, wchar_t *win32_name)
-{
-    const char *fname = name;
-    while (*name) {
-        /* Check for Unix separator and convert to Win32 */
-        if (*name == '/') {
-            *win32_name++ = '\\';     /* convert char */
-        /* If Win32 separated that is "quoted", remove quote */
-        } else if (*name == '\\' && name[1] == '\\') {
-            *win32_name++ = '\\';
-            name++;                   /* skip first \ */
-        } else {
-            *win32_name++ = *name;    /* copy character */
-        }
-        name++;
-    }
-    /* Strip any trailing slash, if we stored something */
-    if (*fname != 0 && win32_name[-1] == '\\') {
-        win32_name[-1] = 0;
-    } else {
-        *win32_name = 0;
-    }
-}
-
-int 
-make_win32_path_UTF8_2_wchar(POOLMEM **pszUCS, const char *pszUTF, BOOL* pBIsRawPath /*= NULL*/)
-{
-   P(Win32Convmutex);
-   /* if we find the utf8 string in cache, we use the cached ucs2 version.
-      we compare the stringlength first (quick check) and then compare the content.            
-   */
-   if (!g_pWin32ConvUTF8Cache) {
-      Win32ConvInitCache();
-   } else if (g_dwWin32ConvUTF8strlen == strlen(pszUTF)) {
-      if (bstrcmp(pszUTF, g_pWin32ConvUTF8Cache)) {
-         /* Return cached value */
-         int32_t nBufSize = sizeof_pool_memory(g_pWin32ConvUCS2Cache);
-         *pszUCS = check_pool_memory_size(*pszUCS, nBufSize);      
-         wcscpy((LPWSTR) *pszUCS, (LPWSTR)g_pWin32ConvUCS2Cache);
-         V(Win32Convmutex);
-         return nBufSize / sizeof (WCHAR);
-      }
-   }
-
-   /* helper to convert from utf-8 to UCS-2 and to complete a path for 32K path syntax */
-   int nRet = UTF8_2_wchar(pszUCS, pszUTF);
-
-#ifdef USE_WIN32_32KPATHCONVERSION
-   /* add \\?\ to support 32K long filepaths */
-   *pszUCS = make_wchar_win32_path(*pszUCS, pBIsRawPath);
-#else
-   if (pBIsRawPath)
-      *pBIsRawPath = FALSE;
-#endif
-
-   /* populate cache */      
-   g_pWin32ConvUCS2Cache = check_pool_memory_size(g_pWin32ConvUCS2Cache, sizeof_pool_memory(*pszUCS));
-   wcscpy((LPWSTR) g_pWin32ConvUCS2Cache, (LPWSTR) *pszUCS);
-   
-   g_dwWin32ConvUTF8strlen = strlen(pszUTF);
-   g_pWin32ConvUTF8Cache = check_pool_memory_size(g_pWin32ConvUTF8Cache, g_dwWin32ConvUTF8strlen+2);
-   bstrncpy(g_pWin32ConvUTF8Cache, pszUTF, g_dwWin32ConvUTF8strlen+1);
-   V(Win32Convmutex);
-
-   return nRet;
-}
-
-#if !defined(_MSC_VER) || (_MSC_VER < 1400) // VC8+
-int umask(int)
-{
-   return 0;
-}
-#endif
-
-#ifndef LOAD_WITH_ALTERED_SEARCH_PATH
-#define LOAD_WITH_ALTERED_SEARCH_PATH 0x00000008
-#endif
-
-void *dlopen(const char *file, int mode)
-{
-   void *handle;
-
-   handle = LoadLibraryEx(file, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
-   return handle;
-}
-
-void *dlsym(void *handle, const char *name)
-{
-   void *symaddr;
-   symaddr = (void *)GetProcAddress((HMODULE)handle, name);
-   return symaddr;
-}
-
-int dlclose(void *handle) 
-{
-   if (handle && !FreeLibrary((HMODULE)handle)) {
-      errno = b_errno_win32;
-      return 1;        /* failed */
-   }
-   return 0;           /* OK */
-}
-
-char *dlerror(void) 
-{
-   static char buf[200];
-   const char *err = errorString();
-   bstrncpy(buf, (char *)err, sizeof(buf));
-   LocalFree((void *)err);
-   return buf;
-}
-
-int fcntl(int fd, int cmd)
-{
-   return 0;
-}
-
-int chown(const char *k, uid_t, gid_t)
-{
-   return 0;
-}
-
-int lchown(const char *k, uid_t, gid_t)
-{
-   return 0;
-}
-
-long int
-random(void)
-{
-    return rand();
-}
-
-void
-srandom(unsigned int seed)
-{
-   srand(seed);
-}
-// /////////////////////////////////////////////////////////////////
-// convert from Windows concept of time to Unix concept of time
-// /////////////////////////////////////////////////////////////////
-void
-cvt_utime_to_ftime(const time_t  &time, FILETIME &wintime)
-{
-   uint64_t mstime = time;
-   mstime *= WIN32_FILETIME_SCALE;
-   mstime += WIN32_FILETIME_ADJUST;
-
-#if defined(_MSC_VER)
-   wintime.dwLowDateTime = (DWORD)(mstime & 0xffffffffI64);
-#else
-   wintime.dwLowDateTime = (DWORD)(mstime & 0xffffffffUL);
-#endif
-   wintime.dwHighDateTime = (DWORD) ((mstime>>32)& 0xffffffffUL);
-}
-
-time_t
-cvt_ftime_to_utime(const FILETIME &time)
-{
-    uint64_t mstime = time.dwHighDateTime;
-    mstime <<= 32;
-    mstime |= time.dwLowDateTime;
-
-    mstime -= WIN32_FILETIME_ADJUST;
-    mstime /= WIN32_FILETIME_SCALE; // convert to seconds.
-
-    return (time_t) (mstime & 0xffffffff);
-}
-
-static const char *errorString(void)
-{
-   LPVOID lpMsgBuf;
-
-   FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
-                 FORMAT_MESSAGE_FROM_SYSTEM |
-                 FORMAT_MESSAGE_IGNORE_INSERTS,
-                 NULL,
-                 GetLastError(),
-                 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default lang
-                 (LPTSTR) &lpMsgBuf,
-                 0,
-                 NULL);
-
-   /* Strip any \r or \n */
-   char *rval = (char *) lpMsgBuf;
-   char *cp = strchr(rval, '\r');
-   if (cp != NULL) {
-      *cp = 0;
-   } else {
-      cp = strchr(rval, '\n');
-      if (cp != NULL)
-         *cp = 0;
-   }
-   return rval;
-}
-
-
-/*
- * This is only called for directories, and is used to get the directory
- *  attributes and find out if we have a junction point or a mount point
- *  or other kind of "funny" directory.
- */
-static int
-statDir(const char *file, struct stat *sb)
-{
-   WIN32_FIND_DATAW info_w;       // window's file info
-   WIN32_FIND_DATAA info_a;       // window's file info
-
-   // cache some common vars to make code more transparent
-   DWORD *pdwFileAttributes;
-   DWORD *pnFileSizeHigh;
-   DWORD *pnFileSizeLow;
-   DWORD *pdwReserved0;
-   FILETIME *pftLastAccessTime;
-   FILETIME *pftLastWriteTime;
-   FILETIME *pftCreationTime;
-   HANDLE h = INVALID_HANDLE_VALUE;
-
-   /* 
-    * Oh, cool, another exception: Microsoft doesn't let us do 
-    *  FindFile operations on a Drive, so simply fake root attibutes.
-    */
-   if (file[1] == ':' && file[2] == 0) {
-      time_t now = time(NULL);
-      Dmsg1(dbglvl, "faking ROOT attrs(%s).\n", file);
-      sb->st_mode = S_IFDIR;
-      sb->st_mode |= S_IREAD|S_IEXEC|S_IWRITE;
-      sb->st_ctime = now;
-      sb->st_mtime = now;
-      sb->st_atime = now;
-      sb->st_rdev = 0;
-      return 0;
-    }
-
-
-   // use unicode
-   if (p_FindFirstFileW) {
-      POOLMEM* pwszBuf = get_pool_memory (PM_FNAME);
-      make_win32_path_UTF8_2_wchar(&pwszBuf, file);
-
-      Dmsg1(dbglvl, "FindFirstFileW=%s\n", file);
-      h = p_FindFirstFileW((LPCWSTR)pwszBuf, &info_w);
-      free_pool_memory(pwszBuf);
-
-      pdwFileAttributes = &info_w.dwFileAttributes;
-      pdwReserved0      = &info_w.dwReserved0;
-      pnFileSizeHigh    = &info_w.nFileSizeHigh;
-      pnFileSizeLow     = &info_w.nFileSizeLow;
-      pftLastAccessTime = &info_w.ftLastAccessTime;
-      pftLastWriteTime  = &info_w.ftLastWriteTime;
-      pftCreationTime   = &info_w.ftCreationTime;
-
-   // use ASCII
-   } else if (p_FindFirstFileA) {
-      Dmsg1(dbglvl, "FindFirstFileA=%s\n", file);
-      h = p_FindFirstFileA(file, &info_a);
-
-      pdwFileAttributes = &info_a.dwFileAttributes;
-      pdwReserved0      = &info_a.dwReserved0;
-      pnFileSizeHigh    = &info_a.nFileSizeHigh;
-      pnFileSizeLow     = &info_a.nFileSizeLow;
-      pftLastAccessTime = &info_a.ftLastAccessTime;
-      pftLastWriteTime  = &info_a.ftLastWriteTime;
-      pftCreationTime   = &info_a.ftCreationTime;
-   } else {
-      Dmsg0(dbglvl, "No findFirstFile A or W found\n");
-   }
-
-   if (h == INVALID_HANDLE_VALUE) {
-      const char *err = errorString();
-      /*
-       * Note, in creating leading paths, it is normal that
-       * the file does not exist.
-       */
-      Dmsg2(2099, "FindFirstFile(%s):%s\n", file, err);
-      LocalFree((void *)err);
-      errno = b_errno_win32;
-      return -1;
-   } else {
-      FindClose(h);
-   }
-
-   sb->st_mode = 0777;               /* start with everything */
-   if (*pdwFileAttributes & FILE_ATTRIBUTE_READONLY)
-       sb->st_mode &= ~(S_IRUSR|S_IRGRP|S_IROTH);
-   if (*pdwFileAttributes & FILE_ATTRIBUTE_SYSTEM)
-       sb->st_mode &= ~S_IRWXO; /* remove everything for other */
-   if (*pdwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
-       sb->st_mode |= S_ISVTX; /* use sticky bit -> hidden */
-   sb->st_mode |= S_IFDIR;
-
-   /* 
-    * Store reparse/mount point info in st_rdev.  Note a
-    *  Win32 reparse point (junction point) is like a link
-    *  though it can have many properties (directory link,
-    *  soft link, hard link, HSM, ...
-    *  A mount point is a reparse point where another volume
-    *  is mounted, so it is like a Unix mount point (change of
-    *  filesystem).
-    */
-   if (*pdwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
-      sb->st_rdev = WIN32_MOUNT_POINT;
-   } else {
-      sb->st_rdev = 0;
-   }
-   if ((*pdwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) &&
-        (*pdwReserved0 & IO_REPARSE_TAG_MOUNT_POINT)) {
-      sb->st_rdev = WIN32_MOUNT_POINT;           /* mount point */
-      /* 
-       * Now to find out if the directory is a mount point or
-       * a reparse point, we must do a song and a dance.
-       * Explicitly open the file to read the reparse point, then
-       * call DeviceIoControl to find out if it points to a Volume
-       * or to a directory.
-       */
-      h = INVALID_HANDLE_VALUE;
-      if (p_GetFileAttributesW) {
-         POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
-         make_win32_path_UTF8_2_wchar(&pwszBuf, file);
-         if (p_CreateFileW) {
-            h = CreateFileW((LPCWSTR)pwszBuf, GENERIC_READ,
-                   FILE_SHARE_READ, NULL, OPEN_EXISTING, 
-                   FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT,
-                   NULL);
-         }
-         free_pool_memory(pwszBuf);
-      } else if (p_GetFileAttributesA) {
-         h = CreateFileA(file, GENERIC_READ,
-                FILE_SHARE_READ, NULL, OPEN_EXISTING, 
-                FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT,
-                NULL);         
-      }
-      if (h != INVALID_HANDLE_VALUE) {
-         char dummy[1000];
-         REPARSE_DATA_BUFFER *rdb = (REPARSE_DATA_BUFFER *)dummy;
-         rdb->ReparseTag = IO_REPARSE_TAG_MOUNT_POINT;
-         DWORD bytes;
-         bool ok;
-         ok = DeviceIoControl(h, FSCTL_GET_REPARSE_POINT, 
-                 NULL, 0,                           /* in buffer, bytes */
-                 (LPVOID)rdb, (DWORD)sizeof(dummy), /* out buffer, btyes */
-                 (LPDWORD)&bytes, (LPOVERLAPPED)0);
-         if (ok) {
-            POOLMEM *utf8 = get_pool_memory(PM_NAME);
-            wchar_2_UTF8(&utf8, (wchar_t *)rdb->SymbolicLinkReparseBuffer.PathBuffer);
-            Dmsg2(dbglvl, "Junction %s points to: %s\n", file, utf8);
-            if (strncasecmp(utf8, "\\??\\volume{", 11) == 0) {
-               sb->st_rdev = WIN32_MOUNT_POINT;
-            } else { 
-               /* It points to a directory so we ignore it. */
-               sb->st_rdev = WIN32_JUNCTION_POINT;
-            }
-            free_pool_memory(utf8);
-         }
-         CloseHandle(h);
-      } else {
-         Dmsg1(dbglvl, "Invalid handle from CreateFile(%s)\n", file);
-      }
-   }  
-   Dmsg2(dbglvl, "st_rdev=%d file=%s\n", sb->st_rdev, file);
-   sb->st_size = *pnFileSizeHigh;
-   sb->st_size <<= 32;
-   sb->st_size |= *pnFileSizeLow;
-   sb->st_blksize = 4096;
-   sb->st_blocks = (uint32_t)(sb->st_size + 4095)/4096;
-
-   sb->st_atime = cvt_ftime_to_utime(*pftLastAccessTime);
-   sb->st_mtime = cvt_ftime_to_utime(*pftLastWriteTime);
-   sb->st_ctime = cvt_ftime_to_utime(*pftCreationTime);
-
-   return 0;
-}
-
-int
-fstat(intptr_t fd, struct stat *sb)
-{
-   BY_HANDLE_FILE_INFORMATION info;
-
-   if (!GetFileInformationByHandle((HANDLE)_get_osfhandle(fd), &info)) {
-       const char *err = errorString();
-       Dmsg1(2099, "GetfileInformationByHandle: %s\n", err);
-       LocalFree((void *)err);
-       errno = b_errno_win32;
-       return -1;
-   }
-
-   sb->st_dev = info.dwVolumeSerialNumber;
-   sb->st_ino = info.nFileIndexHigh;
-   sb->st_ino <<= 32;
-   sb->st_ino |= info.nFileIndexLow;
-   sb->st_nlink = (short)info.nNumberOfLinks;
-   if (sb->st_nlink > 1) {
-      Dmsg1(dbglvl,  "st_nlink=%d\n", sb->st_nlink);
-   }
-
-   sb->st_mode = 0777;               /* start with everything */
-   if (info.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
-       sb->st_mode &= ~(S_IRUSR|S_IRGRP|S_IROTH);
-   if (info.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)
-       sb->st_mode &= ~S_IRWXO; /* remove everything for other */
-   if (info.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
-       sb->st_mode |= S_ISVTX; /* use sticky bit -> hidden */
-   sb->st_mode |= S_IFREG;
-
-   /* Use st_rdev to store reparse attribute */
-   if  (info.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
-      sb->st_rdev = WIN32_REPARSE_POINT;
-   }
-   Dmsg3(dbglvl, "st_rdev=%d sizino=%d ino=%lld\n", sb->st_rdev, sizeof(sb->st_ino),
-      (long long)sb->st_ino);
-
-   sb->st_size = info.nFileSizeHigh;
-   sb->st_size <<= 32;
-   sb->st_size |= info.nFileSizeLow;
-   sb->st_blksize = 4096;
-   sb->st_blocks = (uint32_t)(sb->st_size + 4095)/4096;
-   sb->st_atime = cvt_ftime_to_utime(info.ftLastAccessTime);
-   sb->st_mtime = cvt_ftime_to_utime(info.ftLastWriteTime);
-   sb->st_ctime = cvt_ftime_to_utime(info.ftCreationTime);
-
-   return 0;
-}
-
-static int
-stat2(const char *file, struct stat *sb)
-{
-   HANDLE h = INVALID_HANDLE_VALUE;
-   int rval = 0;
-   char tmpbuf[5000];
-   conv_unix_to_vss_win32_path(file, tmpbuf, 5000);
-
-   DWORD attr = (DWORD)-1;
-
-   if (p_GetFileAttributesW) {
-      POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
-      make_win32_path_UTF8_2_wchar(&pwszBuf, tmpbuf);
-
-      attr = p_GetFileAttributesW((LPCWSTR) pwszBuf);
-      if (p_CreateFileW) {
-         h = CreateFileW((LPCWSTR)pwszBuf, GENERIC_READ,
-                FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
-      }
-      free_pool_memory(pwszBuf);
-   } else if (p_GetFileAttributesA) {
-      attr = p_GetFileAttributesA(tmpbuf);
-      h = CreateFileA(tmpbuf, GENERIC_READ,
-               FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
-   }
-
-   if (attr == (DWORD)-1) {
-      const char *err = errorString();
-      Dmsg2(2099, "GetFileAttributes(%s): %s\n", tmpbuf, err);
-      LocalFree((void *)err);
-      if (h != INVALID_HANDLE_VALUE) {
-         CloseHandle(h);
-      }
-      errno = b_errno_win32;
-      return -1;
-   }
-
-   if (h == INVALID_HANDLE_VALUE) {
-      const char *err = errorString();
-      Dmsg2(2099, "Cannot open file for stat (%s):%s\n", tmpbuf, err);
-      LocalFree((void *)err);
-      errno = b_errno_win32;
-      return -1;
-   }
-
-   rval = fstat((intptr_t)h, sb);
-   CloseHandle(h);
-
-   if (attr & FILE_ATTRIBUTE_DIRECTORY &&
-        file[1] == ':' && file[2] != 0) {
-      rval = statDir(file, sb);
-   }
-   return rval;
-}
-
-int
-stat(const char *file, struct stat *sb)
-{
-   WIN32_FILE_ATTRIBUTE_DATA data;
-   errno = 0;
-
-   memset(sb, 0, sizeof(*sb));
-
-   if (p_GetFileAttributesExW) {
-      /* dynamically allocate enough space for UCS2 filename */
-      POOLMEM *pwszBuf = get_pool_memory(PM_FNAME);
-      make_win32_path_UTF8_2_wchar(&pwszBuf, file);
-
-      BOOL b = p_GetFileAttributesExW((LPCWSTR)pwszBuf, GetFileExInfoStandard, &data);
-      free_pool_memory(pwszBuf);
-
-      if (!b) {
-         return stat2(file, sb);
-      }
-
-   } else if (p_GetFileAttributesExA) {
-      if (!p_GetFileAttributesExA(file, GetFileExInfoStandard, &data)) {
-         return stat2(file, sb);
-       }
-   } else {
-      return stat2(file, sb);
-   }
-
-   sb->st_mode = 0777;               /* start with everything */
-   if (data.dwFileAttributes & FILE_ATTRIBUTE_READONLY) {
-      sb->st_mode &= ~(S_IRUSR|S_IRGRP|S_IROTH);
-   }
-   if (data.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM) {
-      sb->st_mode &= ~S_IRWXO; /* remove everything for other */
-   }
-   if (data.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) {
-      sb->st_mode |= S_ISVTX; /* use sticky bit -> hidden */
-   }
-   if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
-      sb->st_mode |= S_IFDIR;
-   } else {
-      sb->st_mode |= S_IFREG;
-   }
-
-   /* Use st_rdev to store reparse attribute */
-   sb->st_rdev = (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) ? 1 : 0; 
-
-   sb->st_nlink = 1;
-   sb->st_size = data.nFileSizeHigh;
-   sb->st_size <<= 32;
-   sb->st_size |= data.nFileSizeLow;
-   sb->st_blksize = 4096;
-   sb->st_blocks = (uint32_t)(sb->st_size + 4095)/4096;
-   sb->st_atime = cvt_ftime_to_utime(data.ftLastAccessTime);
-   sb->st_mtime = cvt_ftime_to_utime(data.ftLastWriteTime);
-   sb->st_ctime = cvt_ftime_to_utime(data.ftCreationTime);
-
-   /*
-    * If we are not at the root, then to distinguish a reparse 
-    *  point from a mount point, we must call FindFirstFile() to
-    *  get the WIN32_FIND_DATA, which has the bit that indicates
-    *  that this directory is a mount point -- aren't Win32 APIs
-    *  wonderful? (sarcasm).  The code exists in the statDir
-    *  subroutine.
-    */
-   if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY && 
-        file[1] == ':' && file[2] != 0) {
-      statDir(file, sb);
-   }
-   Dmsg3(dbglvl, "sizino=%d ino=%lld file=%s\n", sizeof(sb->st_ino),
-                       (long long)sb->st_ino, file);
-   return 0;
-}
-
-/*
- * We write our own ftruncate because the one in the
- *  Microsoft library mrcrt.dll does not truncate
- *  files greater than 2GB.
- *  KES - May 2007
- */
-int win32_ftruncate(int fd, int64_t length) 
-{
-   /* Set point we want to truncate file */
-   __int64 pos = _lseeki64(fd, (__int64)length, SEEK_SET);
-
-   if (pos != (__int64)length) {
-      errno = EACCES;         /* truncation failed, get out */
-      return -1;
-   }
-
-   /* Truncate file */
-   if (SetEndOfFile((HANDLE)_get_osfhandle(fd)) == 0) {
-      errno = b_errno_win32;
-      return -1;
-   }
-   errno = 0;
-   return 0;
-}
-
-int fcntl(int fd, int cmd, long arg)
-{
-   int rval = 0;
-
-   switch (cmd) {
-   case F_GETFL:
-      rval = O_NONBLOCK;
-      break;
-
-   case F_SETFL:
-      rval = 0;
-      break;
-
-   default:
-      errno = EINVAL;
-      rval = -1;
-      break;
-   }
-
-   return rval;
-}
-
-int
-lstat(const char *file, struct stat *sb)
-{
-   return stat(file, sb);
-}
-
-void
-sleep(int sec)
-{
-   Sleep(sec * 1000);
-}
-
-int
-geteuid(void)
-{
-   return 0;
-}
-
-int
-execvp(const char *, char *[]) {
-   errno = ENOSYS;
-   return -1;
-}
-
-
-int
-fork(void)
-{
-   errno = ENOSYS;
-   return -1;
-}
-
-int
-pipe(int[])
-{
-   errno = ENOSYS;
-   return -1;
-}
-
-int
-waitpid(int, int*, int)
-{
-   errno = ENOSYS;
-   return -1;
-}
-
-int
-readlink(const char *, char *, int)
-{
-   errno = ENOSYS;
-   return -1;
-}
-
-
-#ifndef HAVE_MINGW
-int
-strcasecmp(const char *s1, const char *s2)
-{
-   register int ch1, ch2;
-
-   if (s1==s2)
-      return 0;       /* strings are equal if same object. */
-   else if (!s1)
-      return -1;
-   else if (!s2)
-      return 1;
-   do {
-      ch1 = *s1;
-      ch2 = *s2;
-      s1++;
-      s2++;
-   } while (ch1 != 0 && tolower(ch1) == tolower(ch2));
-
-   return(ch1 - ch2);
-}
-#endif //HAVE_MINGW
-
-int
-strncasecmp(const char *s1, const char *s2, int len)
-{
-   register int ch1 = 0, ch2 = 0;
-
-   if (s1==s2)
-      return 0;       /* strings are equal if same object. */
-   else if (!s1)
-      return -1;
-   else if (!s2)
-      return 1;
-
-   while (len--) {
-      ch1 = *s1;
-      ch2 = *s2;
-      s1++;
-      s2++;
-      if (ch1 == 0 || tolower(ch1) != tolower(ch2)) break;
-   }
-
-   return (ch1 - ch2);
-}
-
-int
-gettimeofday(struct timeval *tv, struct timezone *)
-{
-    SYSTEMTIME now;
-    FILETIME tmp;
-
-    GetSystemTime(&now);
-
-    if (tv == NULL) {
-       errno = EINVAL;
-       return -1;
-    }
-    if (!SystemTimeToFileTime(&now, &tmp)) {
-       errno = b_errno_win32;
-       return -1;
-    }
-
-    int64_t _100nsec = tmp.dwHighDateTime;
-    _100nsec <<= 32;
-    _100nsec |= tmp.dwLowDateTime;
-    _100nsec -= WIN32_FILETIME_ADJUST;
-
-    tv->tv_sec = (long)(_100nsec / 10000000);
-    tv->tv_usec = (long)((_100nsec % 10000000)/10);
-    return 0;
-
-}
-
-/* 
- * Write in Windows System log 
- */
-extern "C" void syslog(int type, const char *fmt, ...) 
-{
-   va_list   arg_ptr;
-   int len, maxlen;
-   POOLMEM *msg;
-
-   msg = get_pool_memory(PM_EMSG);
-
-   for (;;) {
-      maxlen = sizeof_pool_memory(msg) - 1;
-      va_start(arg_ptr, fmt);
-      len = bvsnprintf(msg, maxlen, fmt, arg_ptr);
-      va_end(arg_ptr);
-      if (len < 0 || len >= (maxlen-5)) {
-         msg = realloc_pool_memory(msg, maxlen + maxlen/2);
-         continue;
-      }
-      break;
-   }
-   LogErrorMsg((const char *)msg);
-   free_memory(msg);
-}
-
-void
-closelog()
-{
-}
-
-struct passwd *
-getpwuid(uid_t)
-{
-    return NULL;
-}
-
-struct group *
-getgrgid(uid_t)
-{
-    return NULL;
-}
-
-// implement opendir/readdir/closedir on top of window's API
-
-typedef struct _dir
-{
-    WIN32_FIND_DATAA data_a;    // window's file info (ansii version)
-    WIN32_FIND_DATAW data_w;    // window's file info (wchar version)
-    const char *spec;           // the directory we're traversing
-    HANDLE      dirh;           // the search handle
-    BOOL        valid_a;        // the info in data_a field is valid
-    BOOL        valid_w;        // the info in data_w field is valid
-    UINT32      offset;         // pseudo offset for d_off
-} _dir;
-
-DIR *
-opendir(const char *path)
-{
-    /* enough space for VSS !*/
-    int max_len = strlen(path) + MAX_PATH;
-    char *tspec = NULL;
-    _dir *rval = NULL;
-    if (path == NULL) {
-       errno = ENOENT;
-       return NULL;
-    }
-
-    Dmsg1(dbglvl, "Opendir path=%s\n", path);
-    rval = (_dir *)malloc(sizeof(_dir));
-    if (!rval) {
-       goto err;
-    }
-    memset (rval, 0, sizeof (_dir));
-
-    tspec = (char *)malloc(max_len);
-    if (!tspec) { 
-       goto err;
-    }
-
-    conv_unix_to_vss_win32_path(path, tspec, max_len);
-    Dmsg1(dbglvl, "win32 path=%s\n", tspec);
-
-    // add backslash only if there is none yet (think of c:\)
-    if (tspec[strlen(tspec)-1] != '\\')
-      bstrncat(tspec, "\\*", max_len);
-    else
-      bstrncat(tspec, "*", max_len);
-
-    rval->spec = tspec;
-
-    // convert to wchar_t
-    if (p_FindFirstFileW) {
-      POOLMEM* pwcBuf = get_pool_memory(PM_FNAME);;
-      make_win32_path_UTF8_2_wchar(&pwcBuf, rval->spec);
-
-      rval->dirh = p_FindFirstFileW((LPCWSTR)pwcBuf, &rval->data_w);
-
-      free_pool_memory(pwcBuf);
-
-      if (rval->dirh != INVALID_HANDLE_VALUE)
-        rval->valid_w = 1;
-    } else if (p_FindFirstFileA) {
-      rval->dirh = p_FindFirstFileA(rval->spec, &rval->data_a);
-
-      if (rval->dirh != INVALID_HANDLE_VALUE)
-        rval->valid_a = 1;
-    } else goto err;
-
-
-    Dmsg3(dbglvl, "opendir(%s)\n\tspec=%s,\n\tFindFirstFile returns %d\n",
-          path, rval->spec, rval->dirh);
-
-    rval->offset = 0;
-    if (rval->dirh == INVALID_HANDLE_VALUE)
-        goto err;
-
-    if (rval->valid_w) {
-      Dmsg1(dbglvl, "\tFirstFile=%s\n", rval->data_w.cFileName);
-    }
-
-    if (rval->valid_a) {
-      Dmsg1(dbglvl, "\tFirstFile=%s\n", rval->data_a.cFileName);
-    }
-
-    return (DIR *)rval;
-
-err:
-    if (rval) {
-       free(rval);
-    }
-    if (tspec) {
-       free(tspec);
-    }
-    errno = b_errno_win32;
-    return NULL;
-}
-
-int
-closedir(DIR *dirp)
-{
-    _dir *dp = (_dir *)dirp;
-    FindClose(dp->dirh);
-    free((void *)dp->spec);
-    free((void *)dp);
-    return 0;
-}
-
-/*
-  typedef struct _WIN32_FIND_DATA {
-    DWORD dwFileAttributes;
-    FILETIME ftCreationTime;
-    FILETIME ftLastAccessTime;
-    FILETIME ftLastWriteTime;
-    DWORD nFileSizeHigh;
-    DWORD nFileSizeLow;
-    DWORD dwReserved0;
-    DWORD dwReserved1;
-    TCHAR cFileName[MAX_PATH];
-    TCHAR cAlternateFileName[14];
-} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
-*/
-
-static int
-copyin(struct dirent &dp, const char *fname)
-{
-    dp.d_ino = 0;
-    dp.d_reclen = 0;
-    char *cp = dp.d_name;
-    while (*fname) {
-        *cp++ = *fname++;
-        dp.d_reclen++;
-    }
-        *cp = 0;
-    return dp.d_reclen;
-}
-
-int
-readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result)
-{
-    _dir *dp = (_dir *)dirp;
-    if (dp->valid_w || dp->valid_a) {
-      entry->d_off = dp->offset;
-
-      // copy unicode
-      if (dp->valid_w) {
-         POOLMEM *szBuf = get_pool_memory(PM_NAME);
-         wchar_2_UTF8(&szBuf, dp->data_w.cFileName);
-         dp->offset += copyin(*entry, szBuf);
-         free_pool_memory(szBuf);
-      } else if (dp->valid_a) { // copy ansi (only 1 will be valid)
-         dp->offset += copyin(*entry, dp->data_a.cFileName);
-      }
-
-      *result = entry;              /* return entry address */
-      Dmsg4(dbglvl, "readdir_r(%p, { d_name=\"%s\", d_reclen=%d, d_off=%d\n",
-            dirp, entry->d_name, entry->d_reclen, entry->d_off);
-    } else {
-//      Dmsg0(dbglvl, "readdir_r !valid\n");
-        errno = b_errno_win32;
-        return -1;
-    }
-
-    // get next file, try unicode first
-    if (p_FindNextFileW)
-       dp->valid_w = p_FindNextFileW(dp->dirh, &dp->data_w);
-    else if (p_FindNextFileA)
-       dp->valid_a = p_FindNextFileA(dp->dirh, &dp->data_a);
-    else {
-       dp->valid_a = FALSE;
-       dp->valid_w = FALSE;
-    }
-
-    return 0;
-}
-
-/*
- * Dotted IP address to network address
- *
- * Returns 1 if  OK
- *         0 on error
- */
-int
-inet_aton(const char *a, struct in_addr *inp)
-{
-   const char *cp = a;
-   uint32_t acc = 0, tmp = 0;
-   int dotc = 0;
-
-   if (!isdigit(*cp)) {         /* first char must be digit */
-      return 0;                 /* error */
-   }
-   do {
-      if (isdigit(*cp)) {
-         tmp = (tmp * 10) + (*cp -'0');
-      } else if (*cp == '.' || *cp == 0) {
-         if (tmp > 255) {
-            return 0;           /* error */
-         }
-         acc = (acc << 8) + tmp;
-         dotc++;
-         tmp = 0;
-      } else {
-         return 0;              /* error */
-      }
-   } while (*cp++ != 0);
-   if (dotc != 4) {              /* want 3 .'s plus EOS */
-      return 0;                  /* error */
-   }
-   inp->s_addr = htonl(acc);     /* store addr in network format */
-   return 1;
-}
-
-int
-nanosleep(const struct timespec *req, struct timespec *rem)
-{
-    if (rem)
-        rem->tv_sec = rem->tv_nsec = 0;
-    Sleep((req->tv_sec * 1000) + (req->tv_nsec/1000000));
-    return 0;
-}
-
-void
-init_signals(void terminate(int sig))
-{
-
-}
-
-void
-init_stack_dump(void)
-{
-
-}
-
-
-long
-pathconf(const char *path, int name)
-{
-    switch(name) {
-    case _PC_PATH_MAX :
-        if (strncmp(path, "\\\\?\\", 4) == 0)
-            return 32767;
-    case _PC_NAME_MAX :
-        return 255;
-    }
-    errno = ENOSYS;
-    return -1;
-}
-
-int
-WSA_Init(void)
-{
-    WORD wVersionRequested = MAKEWORD( 1, 1);
-    WSADATA wsaData;
-
-    int err = WSAStartup(wVersionRequested, &wsaData);
-
-
-    if (err != 0) {
-        printf("Can not start Windows Sockets\n");
-        errno = ENOSYS;
-        return -1;
-    }
-
-    return 0;
-}
-
-static DWORD fill_attribute(DWORD attr, mode_t mode)
-{
-   Dmsg1(dbglvl, "  before attr=%lld\n", (uint64_t) attr);
-   /* Use Bacula mappings define in stat() above */
-   if (mode & (S_IRUSR|S_IRGRP|S_IROTH)) { // If file is readable
-      attr &= ~FILE_ATTRIBUTE_READONLY;    // then this is not READONLY
-   } else {
-      attr |= FILE_ATTRIBUTE_READONLY;
-   }
-   if (mode & S_ISVTX) {                   // The sticky bit <=> HIDDEN 
-      attr |= FILE_ATTRIBUTE_HIDDEN;
-   } else {
-      attr &= ~FILE_ATTRIBUTE_HIDDEN;
-   }
-   if (mode & S_IRWXO) {              // Other can read/write/execute ?
-      attr &= ~FILE_ATTRIBUTE_SYSTEM; // => Not system
-   } else {
-      attr |= FILE_ATTRIBUTE_SYSTEM;
-   }
-   Dmsg1(dbglvl, "  after attr=%lld\n", (uint64_t)attr);
-   return attr;
-}
-
-int win32_chmod(const char *path, mode_t mode)
-{
-   bool ret=false;
-   DWORD attr;
-
-   Dmsg2(dbglvl, "win32_chmod(path=%s mode=%lld)\n", path, (uint64_t)mode);
-   if (p_GetFileAttributesW) {
-      POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
-      make_win32_path_UTF8_2_wchar(&pwszBuf, path);
-
-      attr = p_GetFileAttributesW((LPCWSTR) pwszBuf);
-      if (attr != INVALID_FILE_ATTRIBUTES) {
-         /* Use Bacula mappings define in stat() above */
-         attr = fill_attribute(attr, mode);
-         ret = p_SetFileAttributesW((LPCWSTR)pwszBuf, attr);
-      }
-      free_pool_memory(pwszBuf);
-      Dmsg0(dbglvl, "Leave win32_chmod. AttributesW\n");
-   } else if (p_GetFileAttributesA) {
-      attr = p_GetFileAttributesA(path);
-      if (attr != INVALID_FILE_ATTRIBUTES) {
-         attr = fill_attribute(attr, mode);
-         ret = p_SetFileAttributesA(path, attr);
-      }
-      Dmsg0(dbglvl, "Leave win32_chmod did AttributesA\n");
-   } else {
-      Dmsg0(dbglvl, "Leave win32_chmod did nothing\n");
-   }
-    
-   if (!ret) {
-      const char *err = errorString();
-      Dmsg2(dbglvl, "Get/SetFileAttributes(%s): %s\n", path, err);
-      LocalFree((void *)err);
-      errno = b_errno_win32;
-      return -1;
-   }
-   return 0;
-}
-
-
-int
-win32_chdir(const char *dir)
-{
-   if (p_SetCurrentDirectoryW) {
-      POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
-      make_win32_path_UTF8_2_wchar(&pwszBuf, dir);
-
-      BOOL b=p_SetCurrentDirectoryW((LPCWSTR)pwszBuf);
-      
-      free_pool_memory(pwszBuf);
-
-      if (!b) {
-         errno = b_errno_win32;
-         return -1;
-      }
-   } else if (p_SetCurrentDirectoryA) {
-      if (0 == p_SetCurrentDirectoryA(dir)) {
-         errno = b_errno_win32;
-         return -1;
-      }
-   } else {
-      return -1;
-   }
-
-   return 0;
-}
-
-int
-win32_mkdir(const char *dir)
-{
-   Dmsg1(dbglvl, "enter win32_mkdir. dir=%s\n", dir);
-   if (p_wmkdir){
-      POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
-      make_win32_path_UTF8_2_wchar(&pwszBuf, dir);
-
-      int n = p_wmkdir((LPCWSTR)pwszBuf);
-      free_pool_memory(pwszBuf);
-      Dmsg0(dbglvl, "Leave win32_mkdir did wmkdir\n");
-      return n;
-   }
-
-   Dmsg0(dbglvl, "Leave win32_mkdir did _mkdir\n");
-   return _mkdir(dir);
-}
-
-
-char *
-win32_getcwd(char *buf, int maxlen)
-{
-   int n=0;
-
-   if (p_GetCurrentDirectoryW) {
-      POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
-      pwszBuf = check_pool_memory_size (pwszBuf, maxlen*sizeof(wchar_t));
-
-      n = p_GetCurrentDirectoryW(maxlen, (LPWSTR) pwszBuf);
-      if (n!=0)
-         n = wchar_2_UTF8 (buf, (wchar_t *)pwszBuf, maxlen)-1;
-      free_pool_memory(pwszBuf);
-
-   } else if (p_GetCurrentDirectoryA)
-      n = p_GetCurrentDirectoryA(maxlen, buf);
-
-   if (n <= 0 || n > maxlen) return NULL;
-
-   if (n+1 > maxlen) return NULL;
-   if (n != 3) {
-       buf[n] = '\\';
-       buf[n+1] = 0;
-   }
-   return buf;
-}
-
-int
-win32_fputs(const char *string, FILE *stream)
-{
-   /* we use WriteConsoleA / WriteConsoleA
-      so we can be sure that unicode support works on win32.
-      with fallback if something fails
-   */
-
-   HANDLE hOut = GetStdHandle (STD_OUTPUT_HANDLE);
-   if (hOut && (hOut != INVALID_HANDLE_VALUE) && p_WideCharToMultiByte &&
-       p_MultiByteToWideChar && (stream == stdout)) {
-
-      POOLMEM* pwszBuf = get_pool_memory(PM_MESSAGE);
-
-      DWORD dwCharsWritten;
-      DWORD dwChars;
-
-      dwChars = UTF8_2_wchar(&pwszBuf, string);
-
-      /* try WriteConsoleW */
-      if (WriteConsoleW (hOut, pwszBuf, dwChars-1, &dwCharsWritten, NULL)) {
-         free_pool_memory(pwszBuf);
-         return dwCharsWritten;
-      }
-
-      /* convert to local codepage and try WriteConsoleA */
-      POOLMEM* pszBuf = get_pool_memory(PM_MESSAGE);
-      pszBuf = check_pool_memory_size(pszBuf, dwChars+1);
-
-      dwChars = p_WideCharToMultiByte(GetConsoleOutputCP(),0,(LPCWSTR)pwszBuf,-1,pszBuf,dwChars,NULL,NULL);
-      free_pool_memory(pwszBuf);
-
-      if (WriteConsoleA (hOut, pszBuf, dwChars-1, &dwCharsWritten, NULL)) {
-         free_pool_memory(pszBuf);
-         return dwCharsWritten;
-      }
-      free_pool_memory(pszBuf);
-   }
-   /* Fall back */
-   return fputs(string, stream);
-}
-
-char*
-win32_cgets (char* buffer, int len)
-{
-   /* we use console ReadConsoleA / ReadConsoleW to be able to read unicode
-      from the win32 console and fallback if seomething fails */
-
-   HANDLE hIn = GetStdHandle (STD_INPUT_HANDLE);
-   if (hIn && (hIn != INVALID_HANDLE_VALUE) && p_WideCharToMultiByte && p_MultiByteToWideChar) {
-      DWORD dwRead;
-      wchar_t wszBuf[1024];
-      char  szBuf[1024];
-
-      /* nt and unicode conversion */
-      if (ReadConsoleW (hIn, wszBuf, 1024, &dwRead, NULL)) {
-
-         /* null terminate at end */
-         if (wszBuf[dwRead-1] == L'\n') {
-            wszBuf[dwRead-1] = L'\0';
-            dwRead --;
-         }
-
-         if (wszBuf[dwRead-1] == L'\r') {
-            wszBuf[dwRead-1] = L'\0';
-            dwRead --;
-         }
-
-         wchar_2_UTF8(buffer, wszBuf, len);
-         return buffer;
-      }
-
-      /* win 9x and unicode conversion */
-      if (ReadConsoleA (hIn, szBuf, 1024, &dwRead, NULL)) {
-
-         /* null terminate at end */
-         if (szBuf[dwRead-1] == L'\n') {
-            szBuf[dwRead-1] = L'\0';
-            dwRead --;
-         }
-
-         if (szBuf[dwRead-1] == L'\r') {
-            szBuf[dwRead-1] = L'\0';
-            dwRead --;
-         }
-
-         /* convert from ansii to wchar_t */
-         p_MultiByteToWideChar(GetConsoleCP(), 0, szBuf, -1, wszBuf,1024);
-         /* convert from wchar_t to UTF-8 */
-         if (wchar_2_UTF8(buffer, wszBuf, len))
-            return buffer;
-      }
-   }
-
-   /* fallback */
-   if (fgets(buffer, len, stdin))
-      return buffer;
-   else
-      return NULL;
-}
-
-int
-win32_unlink(const char *filename)
-{
-   int nRetCode;
-   if (p_wunlink) {
-      POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
-      make_win32_path_UTF8_2_wchar(&pwszBuf, filename);
-
-      nRetCode = _wunlink((LPCWSTR) pwszBuf);
-
-      /*
-       * special case if file is readonly,
-       * we retry but unset attribute before
-       */
-      if (nRetCode == -1 && errno == EACCES && p_SetFileAttributesW && p_GetFileAttributesW) {
-         DWORD dwAttr =  p_GetFileAttributesW((LPCWSTR)pwszBuf);
-         if (dwAttr != INVALID_FILE_ATTRIBUTES) {
-            if (p_SetFileAttributesW((LPCWSTR)pwszBuf, dwAttr & ~FILE_ATTRIBUTE_READONLY)) {
-               nRetCode = _wunlink((LPCWSTR) pwszBuf);
-               /* reset to original if it didn't help */
-               if (nRetCode == -1)
-                  p_SetFileAttributesW((LPCWSTR)pwszBuf, dwAttr);
-            }
-         }
-      }
-      free_pool_memory(pwszBuf);
-   } else {
-      nRetCode = _unlink(filename);
-
-      /* special case if file is readonly,
-      we retry but unset attribute before */
-      if (nRetCode == -1 && errno == EACCES && p_SetFileAttributesA && p_GetFileAttributesA) {
-         DWORD dwAttr =  p_GetFileAttributesA(filename);
-         if (dwAttr != INVALID_FILE_ATTRIBUTES) {
-            if (p_SetFileAttributesA(filename, dwAttr & ~FILE_ATTRIBUTE_READONLY)) {
-               nRetCode = _unlink(filename);
-               /* reset to original if it didn't help */
-               if (nRetCode == -1)
-                  p_SetFileAttributesA(filename, dwAttr);
-            }
-         }
-      }
-   }
-   return nRetCode;
-}
-
-
-#include "mswinver.h"
-
-char WIN_VERSION_LONG[64];
-char WIN_VERSION[32];
-char WIN_RAWVERSION[32];
-
-class winver {
-public:
-    winver(void);
-};
-
-static winver INIT;                     // cause constructor to be called before main()
-
-
-winver::winver(void)
-{
-    const char *version = "";
-    const char *platform = "";
-    OSVERSIONINFO osvinfo;
-    osvinfo.dwOSVersionInfoSize = sizeof(osvinfo);
-
-    // Get the current OS version
-    if (!GetVersionEx(&osvinfo)) {
-        version = "Unknown";
-        platform = "Unknown";
-    }
-        const int ver = _mkversion(osvinfo.dwPlatformId,
-                                   osvinfo.dwMajorVersion,
-                                   osvinfo.dwMinorVersion);
-        snprintf(WIN_RAWVERSION, sizeof(WIN_RAWVERSION), "Windows %#08x", ver);
-        switch (ver)
-        {
-        case MS_WINDOWS_95: (version =  "Windows 95"); break;
-        case MS_WINDOWS_98: (version =  "Windows 98"); break;
-        case MS_WINDOWS_ME: (version =  "Windows ME"); break;
-        case MS_WINDOWS_NT4:(version =  "Windows NT 4.0"); platform = "NT"; break;
-        case MS_WINDOWS_2K: (version =  "Windows 2000");platform = "NT"; break;
-        case MS_WINDOWS_XP: (version =  "Windows XP");platform = "NT"; break;
-        case MS_WINDOWS_S2003: (version =  "Windows Server 2003");platform = "NT"; break;
-        default: version = WIN_RAWVERSION; break;
-        }
-
-    bstrncpy(WIN_VERSION_LONG, version, sizeof(WIN_VERSION_LONG));
-    snprintf(WIN_VERSION, sizeof(WIN_VERSION), "%s %lu.%lu.%lu",
-             platform, osvinfo.dwMajorVersion, osvinfo.dwMinorVersion, osvinfo.dwBuildNumber);
-
-#if 0
-    HANDLE h = CreateFile("G:\\foobar", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
-    CloseHandle(h);
-#endif
-#if 0
-    BPIPE *b = open_bpipe("ls -l", 10, "r");
-    char buf[1024];
-    while (!feof(b->rfd)) {
-        fgets(buf, sizeof(buf), b->rfd);
-    }
-    close_bpipe(b);
-#endif
-}
-
-BOOL CreateChildProcess(VOID);
-VOID WriteToPipe(VOID);
-VOID ReadFromPipe(VOID);
-VOID ErrorExit(LPCSTR);
-VOID ErrMsg(LPTSTR, BOOL);
-
-/**
- * Check for a quoted path,  if an absolute path name is given and it contains
- * spaces it will need to be quoted.  i.e.  "c:/Program Files/foo/bar.exe"
- * CreateProcess() says the best way to ensure proper results with executables
- * with spaces in path or filename is to quote the string.
- */
-const char *
-getArgv0(const char *cmdline)
-{
-
-    int inquote = 0;
-    const char *cp;
-    for (cp = cmdline; *cp; cp++)
-    {
-        if (*cp == '"') {
-            inquote = !inquote;
-        }
-        if (!inquote && isspace(*cp))
-            break;
-    }
-
-
-    int len = cp - cmdline;
-    char *rval = (char *)malloc(len+1);
-
-    cp = cmdline;
-    char *rp = rval;
-
-    while (len--)
-        *rp++ = *cp++;
-
-    *rp = 0;
-    return rval;
-}
-
-/*
- * Extracts the executable or script name from the first string in 
- * cmdline.
- *
- * If the name contains blanks then it must be quoted with double quotes,
- * otherwise quotes are optional.  If the name contains blanks then it 
- * will be converted to a short name.
- *
- * The optional quotes will be removed.  The result is copied to a malloc'ed
- * buffer and returned through the pexe argument.  The pargs parameter is set
- * to the address of the character in cmdline located after the name.
- *
- * The malloc'ed buffer returned in *pexe must be freed by the caller.
- */
-bool
-GetApplicationName(const char *cmdline, char **pexe, const char **pargs)
-{
-   const char *pExeStart = NULL;    /* Start of executable name in cmdline */
-   const char *pExeEnd = NULL;      /* Character after executable name (separator) */
-
-   const char *pBasename = NULL;    /* Character after last path separator */
-   const char *pExtension = NULL;   /* Period at start of extension */
-
-   const char *current = cmdline;
-
-   bool bQuoted = false;
-
-   /* Skip initial whitespace */
-
-   while (*current == ' ' || *current == '\t')
-   {
-      current++;
-   }
-
-   /* Calculate start of name and determine if quoted */
-
-   if (*current == '"') {
-      pExeStart = ++current;
-      bQuoted = true;
-   } else {
-      pExeStart = current;
-      bQuoted = false;
-   }
-
-   *pargs = NULL;
-   *pexe = NULL;
-
-   /* 
-    * Scan command line looking for path separators (/ and \\) and the 
-    * terminator, either a quote or a blank.  The location of the 
-    * extension is also noted.
-    */
-
-   for ( ; *current != '\0'; current++)
-   {
-      if (*current == '.') {
-         pExtension = current;
-      } else if (IsPathSeparator(*current) && current[1] != '\0') {
-         pBasename = &current[1];
-         pExtension = NULL;
-      }
-
-      /* Check for terminator, either quote or blank */
-      if (bQuoted) {
-         if (*current != '"') {
-            continue;
-         }
-      } else {
-         if (*current != ' ') {
-            continue;
-         }
-      }
-
-      /*
-       * Hit terminator, remember end of name (address of terminator) and 
-       * start of arguments 
-       */
-      pExeEnd = current;
-
-      if (bQuoted && *current == '"') {
-         *pargs = &current[1];
-      } else {
-         *pargs = current;
-      }
-
-      break;
-   }
-
-   if (pBasename == NULL) {
-      pBasename = pExeStart;
-   }
-
-   if (pExeEnd == NULL) {
-      pExeEnd = current;
-   }
-
-   if (*pargs == NULL)
-   {
-      *pargs = current;
-   }
-
-   bool bHasPathSeparators = pExeStart != pBasename;
-
-   /* We have pointers to all the useful parts of the name */
-
-   /* Default extensions in the order cmd.exe uses to search */
-
-   static const char ExtensionList[][5] = { ".com", ".exe", ".bat", ".cmd" };
-   DWORD dwBasePathLength = pExeEnd - pExeStart;
-
-   DWORD dwAltNameLength = 0;
-   char *pPathname = (char *)alloca(MAX_PATHLENGTH + 1);
-   char *pAltPathname = (char *)alloca(MAX_PATHLENGTH + 1);
-
-   pPathname[MAX_PATHLENGTH] = '\0';
-   pAltPathname[MAX_PATHLENGTH] = '\0';
-
-   memcpy(pPathname, pExeStart, dwBasePathLength);
-   pPathname[dwBasePathLength] = '\0';
-
-   if (pExtension == NULL) {
-      /* Try appending extensions */
-      for (int index = 0; index < (int)(sizeof(ExtensionList) / sizeof(ExtensionList[0])); index++) {
-
-         if (!bHasPathSeparators) {
-            /* There are no path separators, search in the standard locations */
-            dwAltNameLength = SearchPath(NULL, pPathname, ExtensionList[index], MAX_PATHLENGTH, pAltPathname, NULL);
-            if (dwAltNameLength > 0 && dwAltNameLength <= MAX_PATHLENGTH) {
-               memcpy(pPathname, pAltPathname, dwAltNameLength);
-               pPathname[dwAltNameLength] = '\0';
-               break;
-            }
-         } else {
-            bstrncpy(&pPathname[dwBasePathLength], ExtensionList[index], MAX_PATHLENGTH - dwBasePathLength);
-            if (GetFileAttributes(pPathname) != INVALID_FILE_ATTRIBUTES) {
-               break;
-            }
-            pPathname[dwBasePathLength] = '\0';
-         }
-      }
-   } else if (!bHasPathSeparators) {
-      /* There are no path separators, search in the standard locations */
-      dwAltNameLength = SearchPath(NULL, pPathname, NULL, MAX_PATHLENGTH, pAltPathname, NULL);
-      if (dwAltNameLength > 0 && dwAltNameLength < MAX_PATHLENGTH) {
-         memcpy(pPathname, pAltPathname, dwAltNameLength);
-         pPathname[dwAltNameLength] = '\0';
-      }
-   }
-
-   if (strchr(pPathname, ' ') != NULL) {
-      dwAltNameLength = GetShortPathName(pPathname, pAltPathname, MAX_PATHLENGTH);
-
-      if (dwAltNameLength > 0 && dwAltNameLength <= MAX_PATHLENGTH) {
-         *pexe = (char *)malloc(dwAltNameLength + 1);
-         if (*pexe == NULL) {
-            return false;
-         }
-         memcpy(*pexe, pAltPathname, dwAltNameLength + 1);
-      }
-   }
-
-   if (*pexe == NULL) {
-      DWORD dwPathnameLength = strlen(pPathname);
-      *pexe = (char *)malloc(dwPathnameLength + 1);
-      if (*pexe == NULL) {
-         return false;
-      }
-      memcpy(*pexe, pPathname, dwPathnameLength + 1);
-   }
-
-   return true;
-}
-
-/**
- * Create the process with WCHAR API
- */
-static BOOL
-CreateChildProcessW(const char *comspec, const char *cmdLine,
-                    PROCESS_INFORMATION *hProcInfo,
-                    HANDLE in, HANDLE out, HANDLE err)
-{
-   STARTUPINFOW siStartInfo;
-   BOOL bFuncRetn = FALSE;
-
-   // Set up members of the STARTUPINFO structure.
-   ZeroMemory( &siStartInfo, sizeof(siStartInfo) );
-   siStartInfo.cb = sizeof(siStartInfo);
-   // setup new process to use supplied handles for stdin,stdout,stderr
-
-   siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
-   siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
-
-   siStartInfo.hStdInput = in;
-   siStartInfo.hStdOutput = out;
-   siStartInfo.hStdError = err;
-   
-   // Convert argument to WCHAR
-   POOLMEM *cmdLine_wchar = get_pool_memory(PM_FNAME);
-   POOLMEM *comspec_wchar = get_pool_memory(PM_FNAME);
-
-   UTF8_2_wchar(&cmdLine_wchar, cmdLine);
-   UTF8_2_wchar(&comspec_wchar, comspec);
-
-   // Create the child process.
-   Dmsg2(dbglvl, "Calling CreateProcess(%s, %s, ...)\n", comspec_wchar, cmdLine_wchar);
-
-   // try to execute program
-   bFuncRetn = p_CreateProcessW((WCHAR*)comspec_wchar,
-                                (WCHAR*)cmdLine_wchar,// command line
-                                NULL,      // process security attributes
-                                NULL,      // primary thread security attributes
-                                TRUE,      // handles are inherited
-                                0,         // creation flags
-                                NULL,      // use parent's environment
-                                NULL,      // use parent's current directory
-                                &siStartInfo,  // STARTUPINFO pointer
-                                hProcInfo);   // receives PROCESS_INFORMATION
-   free_pool_memory(cmdLine_wchar);
-   free_pool_memory(comspec_wchar);
-
-   return bFuncRetn;
-}
-
-
-/**
- * Create the process with ANSI API
- */
-static BOOL
-CreateChildProcessA(const char *comspec, char *cmdLine,
-                    PROCESS_INFORMATION *hProcInfo,
-                    HANDLE in, HANDLE out, HANDLE err)
-{
-   STARTUPINFOA siStartInfo;
-   BOOL bFuncRetn = FALSE;
-
-   // Set up members of the STARTUPINFO structure.
-   ZeroMemory( &siStartInfo, sizeof(siStartInfo) );
-   siStartInfo.cb = sizeof(siStartInfo);
-   // setup new process to use supplied handles for stdin,stdout,stderr
-   siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
-   siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
-
-   siStartInfo.hStdInput = in;
-   siStartInfo.hStdOutput = out;
-   siStartInfo.hStdError = err;
-
-   // Create the child process.
-   Dmsg2(dbglvl, "Calling CreateProcess(%s, %s, ...)\n", comspec, cmdLine);
-
-   // try to execute program
-   bFuncRetn = p_CreateProcessA(comspec,
-                                cmdLine,  // command line
-                                NULL,     // process security attributes
-                                NULL,     // primary thread security attributes
-                                TRUE,     // handles are inherited
-                                0,        // creation flags
-                                NULL,     // use parent's environment
-                                NULL,     // use parent's current directory
-                                &siStartInfo,// STARTUPINFO pointer
-                                hProcInfo);// receives PROCESS_INFORMATION
-   return bFuncRetn;
-}
-
-/**
- * OK, so it would seem CreateProcess only handles true executables:
- * .com or .exe files.  So grab $COMSPEC value and pass command line to it.
- */
-HANDLE
-CreateChildProcess(const char *cmdline, HANDLE in, HANDLE out, HANDLE err)
-{
-   static const char *comspec = NULL;
-   PROCESS_INFORMATION piProcInfo;
-   BOOL bFuncRetn = FALSE;
-
-   if (!p_CreateProcessA || !p_CreateProcessW)
-      return INVALID_HANDLE_VALUE;
-
-   if (comspec == NULL) 
-      comspec = getenv("COMSPEC");
-   if (comspec == NULL) // should never happen
-      return INVALID_HANDLE_VALUE;
-
-   // Set up members of the PROCESS_INFORMATION structure.
-   ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );
-
-   // if supplied handles are not used the send a copy of our STD_HANDLE
-   // as appropriate
-   if (in == INVALID_HANDLE_VALUE)
-      in = GetStdHandle(STD_INPUT_HANDLE);
-
-   if (out == INVALID_HANDLE_VALUE)
-      out = GetStdHandle(STD_OUTPUT_HANDLE);
-
-   if (err == INVALID_HANDLE_VALUE)
-      err = GetStdHandle(STD_ERROR_HANDLE);
-
-   char *exeFile;
-   const char *argStart;
-
-   if (!GetApplicationName(cmdline, &exeFile, &argStart)) {
-      return INVALID_HANDLE_VALUE;
-   }
-
-   POOL_MEM cmdLine(PM_FNAME);
-   Mmsg(cmdLine, "%s /c %s%s", comspec, exeFile, argStart);
-
-   free(exeFile);
-
-   // New function disabled
-   if (p_CreateProcessW && p_MultiByteToWideChar) {
-      bFuncRetn = CreateChildProcessW(comspec, cmdLine.c_str(), &piProcInfo,
-                                      in, out, err);
-   } else {
-      bFuncRetn = CreateChildProcessA(comspec, cmdLine.c_str(), &piProcInfo,
-                                      in, out, err);
-   }
-
-   if (bFuncRetn == 0) {
-      ErrorExit("CreateProcess failed\n");
-      const char *err = errorString();
-      Dmsg3(dbglvl, "CreateProcess(%s, %s, ...)=%s\n",comspec,cmdLine.c_str(),err);
-      LocalFree((void *)err);
-      return INVALID_HANDLE_VALUE;
-   }
-   // we don't need a handle on the process primary thread so we close
-   // this now.
-   CloseHandle(piProcInfo.hThread);
-   return piProcInfo.hProcess;
-}
-
-void
-ErrorExit (LPCSTR lpszMessage)
-{
-    Dmsg1(0, "%s", lpszMessage);
-}
-
-
-/*
-typedef struct s_bpipe {
-   pid_t worker_pid;
-   time_t worker_stime;
-   int wait;
-   btimer_t *timer_id;
-   FILE *rfd;
-   FILE *wfd;
-} BPIPE;
-*/
-
-static void
-CloseHandleIfValid(HANDLE handle)
-{
-    if (handle != INVALID_HANDLE_VALUE) {
-        CloseHandle(handle);
-    }
-}
-
-BPIPE *
-open_bpipe(char *prog, int wait, const char *mode)
-{
-    HANDLE hChildStdinRd, hChildStdinWr, hChildStdinWrDup,
-        hChildStdoutRd, hChildStdoutWr, hChildStdoutRdDup,
-        hInputFile;
-
-    SECURITY_ATTRIBUTES saAttr;
-
-    BOOL fSuccess;
-
-    hChildStdinRd = hChildStdinWr = hChildStdinWrDup =
-        hChildStdoutRd = hChildStdoutWr = hChildStdoutRdDup =
-        hInputFile = INVALID_HANDLE_VALUE;
-
-    BPIPE *bpipe = (BPIPE *)malloc(sizeof(BPIPE));
-    memset((void *)bpipe, 0, sizeof(BPIPE));
-
-    int mode_read = (mode[0] == 'r');
-    int mode_write = (mode[0] == 'w' || mode[1] == 'w');
-
-
-    // Set the bInheritHandle flag so pipe handles are inherited.
-
-    saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
-    saAttr.bInheritHandle = TRUE;
-    saAttr.lpSecurityDescriptor = NULL;
-
-    if (mode_read) {
-
-        // Create a pipe for the child process's STDOUT.
-        if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0)) {
-            ErrorExit("Stdout pipe creation failed\n");
-            goto cleanup;
-        }
-        // Create noninheritable read handle and close the inheritable read
-        // handle.
-
-        fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdoutRd,
-                                   GetCurrentProcess(), &hChildStdoutRdDup , 0,
-                                   FALSE,
-                                   DUPLICATE_SAME_ACCESS);
-        if ( !fSuccess ) {
-            ErrorExit("DuplicateHandle failed");
-            goto cleanup;
-        }
-
-        CloseHandle(hChildStdoutRd);
-        hChildStdoutRd = INVALID_HANDLE_VALUE;
-    }
-
-    if (mode_write) {
-
-        // Create a pipe for the child process's STDIN.
-
-        if (!CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0)) {
-            ErrorExit("Stdin pipe creation failed\n");
-            goto cleanup;
-        }
-
-        // Duplicate the write handle to the pipe so it is not inherited.
-        fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdinWr,
-                                   GetCurrentProcess(), &hChildStdinWrDup,
-                                   0,
-                                   FALSE,                  // not inherited
-                                   DUPLICATE_SAME_ACCESS);
-        if (!fSuccess) {
-            ErrorExit("DuplicateHandle failed");
-            goto cleanup;
-        }
-
-        CloseHandle(hChildStdinWr);
-        hChildStdinWr = INVALID_HANDLE_VALUE;
-    }
-    // spawn program with redirected handles as appropriate
-    bpipe->worker_pid = (pid_t)
-        CreateChildProcess(prog,             // commandline
-                           hChildStdinRd,    // stdin HANDLE
-                           hChildStdoutWr,   // stdout HANDLE
-                           hChildStdoutWr);  // stderr HANDLE
-
-    if ((HANDLE) bpipe->worker_pid == INVALID_HANDLE_VALUE)
-        goto cleanup;
-
-    bpipe->wait = wait;
-    bpipe->worker_stime = time(NULL);
-
-    if (mode_read) {
-        CloseHandle(hChildStdoutWr); // close our write side so when
-                                     // process terminates we can
-                                     // detect eof.
-        // ugly but convert WIN32 HANDLE to FILE*
-        int rfd = _open_osfhandle((intptr_t)hChildStdoutRdDup, O_RDONLY | O_BINARY);
-        if (rfd >= 0) {
-           bpipe->rfd = _fdopen(rfd, "rb");
-        }
-    }
-    if (mode_write) {
-        CloseHandle(hChildStdinRd); // close our read side so as not
-                                    // to interfre with child's copy
-        // ugly but convert WIN32 HANDLE to FILE*
-        int wfd = _open_osfhandle((intptr_t)hChildStdinWrDup, O_WRONLY | O_BINARY);
-        if (wfd >= 0) {
-           bpipe->wfd = _fdopen(wfd, "wb");
-        }
-    }
-
-    if (wait > 0) {
-        bpipe->timer_id = start_child_timer(NULL, bpipe->worker_pid, wait);
-    }
-
-    return bpipe;
-
-cleanup:
-
-    CloseHandleIfValid(hChildStdoutRd);
-    CloseHandleIfValid(hChildStdoutRdDup);
-    CloseHandleIfValid(hChildStdinWr);
-    CloseHandleIfValid(hChildStdinWrDup);
-
-    free((void *)bpipe);
-    errno = b_errno_win32;            /* do GetLastError() for error code */
-    return NULL;
-}
-
-
-int
-kill(int pid, int signal)
-{
-   int rval = 0;
-   if (!TerminateProcess((HANDLE)pid, (UINT) signal)) {
-      rval = -1;
-      errno = b_errno_win32;
-   }
-   CloseHandle((HANDLE)pid);
-   return rval;
-}
-
-
-int
-close_bpipe(BPIPE *bpipe)
-{
-   int rval = 0;
-   int32_t remaining_wait = bpipe->wait;
-
-   /* Close pipes */
-   if (bpipe->rfd) {
-      fclose(bpipe->rfd);
-      bpipe->rfd = NULL;
-   }
-   if (bpipe->wfd) {
-      fclose(bpipe->wfd);
-      bpipe->wfd = NULL;
-   }
-
-   if (remaining_wait == 0) {         /* wait indefinitely */
-      remaining_wait = INT32_MAX;
-   }
-   for ( ;; ) {
-      DWORD exitCode;
-      if (!GetExitCodeProcess((HANDLE)bpipe->worker_pid, &exitCode)) {
-         const char *err = errorString();
-         rval = b_errno_win32;
-         Dmsg1(dbglvl, "GetExitCode error %s\n", err);
-         LocalFree((void *)err);
-         break;
-      }
-      if (exitCode == STILL_ACTIVE) {
-         if (remaining_wait <= 0) {
-            rval = ETIME;             /* timed out */
-            break;
-         }
-         bmicrosleep(1, 0);           /* wait one second */
-         remaining_wait--;
-      } else if (exitCode != 0) {
-         /* Truncate exit code as it doesn't seem to be correct */
-         rval = (exitCode & 0xFF) | b_errno_exit;
-         break;
-      } else {
-         break;                       /* Shouldn't get here */
-      }
-   }
-
-   if (bpipe->timer_id) {
-       stop_child_timer(bpipe->timer_id);
-   }
-   if (bpipe->rfd) fclose(bpipe->rfd);
-   if (bpipe->wfd) fclose(bpipe->wfd);
-   free((void *)bpipe);
-   return rval;
-}
-
-int
-close_wpipe(BPIPE *bpipe)
-{
-    int result = 1;
-
-    if (bpipe->wfd) {
-        fflush(bpipe->wfd);
-        if (fclose(bpipe->wfd) != 0) {
-            result = 0;
-        }
-        bpipe->wfd = NULL;
-    }
-    return result;
-}
-
-#ifndef MINGW64
-int
-utime(const char *fname, struct utimbuf *times)
-{
-    FILETIME acc, mod;
-    char tmpbuf[5000];
-
-    conv_unix_to_vss_win32_path(fname, tmpbuf, 5000);
-
-    cvt_utime_to_ftime(times->actime, acc);
-    cvt_utime_to_ftime(times->modtime, mod);
-
-    HANDLE h = INVALID_HANDLE_VALUE;
-
-    if (p_CreateFileW) {
-       POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
-       make_win32_path_UTF8_2_wchar(&pwszBuf, tmpbuf);
-
-       h = p_CreateFileW((LPCWSTR)pwszBuf,
-                        FILE_WRITE_ATTRIBUTES,
-                        FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_SHARE_DELETE,
-                        NULL,
-                        OPEN_EXISTING,
-                        FILE_FLAG_BACKUP_SEMANTICS, // required for directories
-                        NULL);
-
-       free_pool_memory(pwszBuf);
-    } else if (p_CreateFileA) {
-       h = p_CreateFileA(tmpbuf,
-                        FILE_WRITE_ATTRIBUTES,
-                        FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_SHARE_DELETE,
-                        NULL,
-                        OPEN_EXISTING,
-                        FILE_FLAG_BACKUP_SEMANTICS, // required for directories
-                        NULL);
-    }
-
-    if (h == INVALID_HANDLE_VALUE) {
-       const char *err = errorString();
-       Dmsg2(dbglvl, "Cannot open file \"%s\" for utime(): ERR=%s", tmpbuf, err);
-       LocalFree((void *)err);
-       errno = b_errno_win32;
-       return -1;
-    }
-
-    int rval = SetFileTime(h, NULL, &acc, &mod) ? 0 : -1;
-    CloseHandle(h);
-    if (rval == -1) {
-       errno = b_errno_win32;
-    }
-    return rval;
-}
-#endif
-
-#if 0
-int
-file_open(const char *file, int flags, int mode)
-{
-   DWORD access = 0;
-   DWORD shareMode = 0;
-   DWORD create = 0;
-   DWORD msflags = 0;
-   HANDLE foo = INVALID_HANDLE_VALUE;
-   const char *remap = file;
-
-   if (flags & O_WRONLY) access = GENERIC_WRITE;
-   else if (flags & O_RDWR) access = GENERIC_READ|GENERIC_WRITE;
-   else access = GENERIC_READ;
-
-   if ((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))
-      create = CREATE_NEW;
-   else if ((flags & (O_CREAT | O_TRUNC)) == (O_CREAT | O_TRUNC))
-      create = CREATE_ALWAYS;
-   else if (flags & O_CREAT)
-      create = OPEN_ALWAYS;
-   else if (flags & O_TRUNC)
-      create = TRUNCATE_EXISTING;
-   else 
-      create = OPEN_EXISTING;
-
-   shareMode = 0;
-
-   if (flags & O_APPEND) {
-      printf("open...APPEND not implemented yet.");
-      exit(-1);
-   }
-
-   if (p_CreateFileW) {
-      POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
-      make_win32_path_UTF8_2_wchar(&pwszBuf, file);
-
-      foo = p_CreateFileW((LPCWSTR) pwszBuf, access, shareMode, NULL, create, msflags, NULL);
-      free_pool_memory(pwszBuf);
-   } else if (p_CreateFileA)
-      foo = CreateFile(file, access, shareMode, NULL, create, msflags, NULL);
-
-   if (INVALID_HANDLE_VALUE == foo) {
-      errno = b_errno_win32;
-      return (int)-1;
-   }
-   return (int)foo;
-
-}
-
-
-int
-file_close(int fd)
-{
-    if (!CloseHandle((HANDLE)fd)) {
-        errno = b_errno_win32;
-        return -1;
-    }
-
-    return 0;
-}
-
-ssize_t
-file_write(int fd, const void *data, ssize_t len)
-{
-    BOOL status;
-    DWORD bwrite;
-    status = WriteFile((HANDLE)fd, data, len, &bwrite, NULL);
-    if (status) return bwrite;
-    errno = b_errno_win32;
-    return -1;
-}
-
-
-ssize_t
-file_read(int fd, void *data, ssize_t len)
-{
-    BOOL status;
-    DWORD bread;
-
-    status = ReadFile((HANDLE)fd, data, len, &bread, NULL);
-    if (status) return bread;
-    errno = b_errno_win32;
-    return -1;
-}
-
-boffset_t
-file_seek(int fd, boffset_t offset, int whence)
-{
-    DWORD method = 0;
-    DWORD val;
-    LONG  offset_low = (LONG)offset;
-    LONG  offset_high = (LONG)(offset >> 32);
-
-    switch (whence) {
-    case SEEK_SET :
-        method = FILE_BEGIN;
-        break;
-    case SEEK_CUR:
-        method = FILE_CURRENT;
-        break;
-    case SEEK_END:
-        method = FILE_END;
-        break;
-    default:
-        errno = EINVAL;
-        return -1;
-    }
-
-
-    if ((val=SetFilePointer((HANDLE)fd, offset_low, &offset_high, method)) == INVALID_SET_FILE_POINTER) {
-       errno = b_errno_win32;
-       return -1;
-    }
-    /* ***FIXME*** I doubt this works right */
-    return val;
-}
-
-int
-file_dup2(int, int)
-{
-    errno = ENOSYS;
-    return -1;
-}
-#endif
-
-#ifdef xxx
-/* 
- * Emulation of mmap and unmmap for tokyo dbm
- */
-void *mmap(void *start, size_t length, int prot, int flags,
-           int fd, off_t offset)
-{
-   DWORD fm_access = 0;
-   DWORD mv_access = 0;
-   HANDLE h;
-   HANDLE mv;
-
-   if (length == 0) {
-      return MAP_FAILED;
-   }
-   if (!fd) {
-      return MAP_FAILED;
-   }
-
-   if (flags & PROT_WRITE) {
-      fm_access |= PAGE_READWRITE;
-   } else if (flags & PROT_READ) {
-      fm_access |= PAGE_READONLY;
-   }
-   
-   if (flags & PROT_READ) {
-      mv_access |= FILE_MAP_READ;
-   }
-   if (flags & PROT_WRITE) {
-      mv_access |= FILE_MAP_WRITE;
-   }
-
-   h = CreateFileMapping((HANDLE)_get_osfhandle (fd), 
-                         NULL /* security */, 
-                         fm_access, 
-                         0 /* MaximumSizeHigh */, 
-                         0 /* MaximumSizeLow */, 
-                         NULL /* name of the file mapping object */);
-
-   if (!h || h == INVALID_HANDLE_VALUE) {
-      return MAP_FAILED;
-   }
-
-   mv = MapViewOfFile(h, mv_access, 
-                      0 /* offset hi */, 
-                      0 /* offset lo */,
-                      length);
-   CloseHandle(h);
-
-   if (!mv || mv == INVALID_HANDLE_VALUE) {
-      return MAP_FAILED;
-   }
-
-   return (void *) mv;
-}
-
-int munmap(void *start, size_t length)
-{
-   if (!start) {
-      return -1;
-   }
-   UnmapViewOfFile(start);
-   return 0;
-}
-#endif
-
-#ifdef HAVE_MINGW
-/* syslog function, added by Nicolas Boichat */
-void openlog(const char *ident, int option, int facility) {}  
-#endif //HAVE_MINGW
-
-/* Log an error message */
-void LogErrorMsg(const char *message)
-{
-   HANDLE eventHandler;
-   const char *strings[2];
-
-   /* Use the OS event logging to log the error */
-   eventHandler = RegisterEventSource(NULL, "Bacula");
-
-   strings[0] = _("\n\nBacula ERROR: ");
-   strings[1] = message;
-
-   if (eventHandler) {
-      ReportEvent(eventHandler, EVENTLOG_ERROR_TYPE,
-              0,                      /* category */
-              0,                      /* ID */
-              NULL,                   /* SID */
-              2,                      /* Number of strings */
-              0,                      /* raw data size */
-              (const char **)strings, /* error strings */
-              NULL);                  /* raw data */
-      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/compat.h b/src/win32/compat/compat.h
deleted file mode 100644
index df78ec4..0000000
--- a/src/win32/compat/compat.h
+++ /dev/null
@@ -1,460 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2011 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.
-*/
-/*                               -*- Mode: C -*-
- * compat.h --
- */
-// Copyright transferred from Raider Solutions, Inc to
-//   Kern Sibbald and John Walker by express permission.
-//
-/*
- * Author          : Christopher S. Hull
- * Created On      : Fri Jan 30 13:00:51 2004
- */
-
-
-#if !defined(__COMPAT_H_)
-#define __COMPAT_H_
-#if !defined(_STAT_H)
-#define _STAT_H         /* don't pull in MinGW stat.h */
-#endif
-
-#ifndef _STAT_DEFINED
-#define _STAT_DEFINED 1 /* don't pull in MinGW struct stat from wchar.h */
-#endif
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC8+
-#pragma warning(disable : 4996) // Either disable all deprecation warnings,
-// #define _CRT_SECURE_NO_DEPRECATE // Or just turn off warnings about the newly deprecated CRT functions.
-#elif !defined(HAVE_MINGW) && !defined(HAVE_WXCONSOLE)
-#define __STDC__ 1
-#endif
-
-#include <malloc.h>
-
-#ifdef MINGW64
-#include <direct.h>
-#define _declspec __declspec
-
-/* Missing in 64 bit mingw */
-typedef struct _REPARSE_DATA_BUFFER {
-        DWORD  ReparseTag;
-        WORD   ReparseDataLength;
-        WORD   Reserved;
-        union {
-                struct {
-                        WORD   SubstituteNameOffset;
-                        WORD   SubstituteNameLength;
-                        WORD   PrintNameOffset;
-                        WORD   PrintNameLength;
-                        WCHAR PathBuffer[1];
-                } SymbolicLinkReparseBuffer;
-                struct {
-                        WORD   SubstituteNameOffset;
-                        WORD   SubstituteNameLength;
-                        WORD   PrintNameOffset;
-                        WORD   PrintNameLength;
-                        WCHAR PathBuffer[1];
-                } MountPointReparseBuffer;
-                struct {
-                        BYTE   DataBuffer[1];
-                } GenericReparseBuffer;
-        } DUMMYUNIONNAME;
-} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
-
-#endif
-
-#include <winioctl.h>
-
-#ifdef _WIN64
-# define GWL_USERDATA  GWLP_USERDATA
-#endif
-
-#ifndef INT64
-#define INT64 long long int
-#endif
-
-typedef UINT64 u_int64_t;
-typedef UINT64 uint64_t;
-typedef INT64 int64_t;
-typedef UINT32 uint32_t;
-typedef INT64 intmax_t;
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef signed short int16_t;
-typedef signed char int8_t;
-typedef int __daddr_t;
-
-#if !defined(HAVE_MINGW)
-typedef long int32_t;
-typedef float float32_t;
-typedef double float64_t;
-#endif
-
-#if !defined(_MSC_VER) || (_MSC_VER < 1400) // VC8+
-#ifndef _TIME_T_DEFINED
-#define _TIME_T_DEFINED
-typedef long time_t;
-#endif
-#endif
-
-#if __STDC__ && !defined(HAVE_MINGW)
-typedef _dev_t dev_t;
-#if !defined(HAVE_WXCONSOLE)
-typedef __int64 ino_t;
-#endif
-#endif
-
-typedef UINT32 u_int32_t;
-typedef unsigned char u_int8_t;
-typedef unsigned short u_int16_t;
-
-#if !defined(HAVE_MINGW)
-#undef uint32_t
-#endif
-
-void sleep(int);
-
-typedef UINT32 key_t;
-
-#if defined(HAVE_MINGW)
-#if !defined(uid_t)
-typedef UINT32 uid_t;
-typedef UINT32 gid_t;
-#endif
-#else
-typedef UINT32 uid_t;
-typedef UINT32 gid_t;
-typedef UINT32 mode_t;
-typedef INT32  ssize_t;
-typedef UINT32 size_t;
-#define HAVE_SSIZE_T 1
-
-#endif /* HAVE_MINGW */
-
-struct dirent {
-    uint64_t    d_ino;
-    uint32_t    d_off;
-    uint16_t    d_reclen;
-    char        d_name[256];
-};
-typedef void DIR;
-
-
-#if !defined(__cplusplus)
-#if !defined(true)
-#define true 1
-#endif
-#if !defined(false)
-#define false 0
-#endif
-#endif
-
-#ifndef _TIMEZONE_DEFINED /* also in sys/time.h */
-#define _TIMEZONE_DEFINED
-struct timezone {
-    int foo;
-};
-#endif
-
-int strcasecmp(const char*, const char *);
-int gettimeofday(struct timeval *, struct timezone *);
-
-#if !defined(EETXTBUSY)
-#define EETXTBUSY 26
-#endif
-
-#if !defined(ETIMEDOUT)
-#define ETIMEDOUT 55
-#endif
-
-#if !defined(ENOMEDIUM)
-#define ENOMEDIUM 123
-#endif
-
-#if !defined(ENODATA)
-#define ENODATA 61
-#endif
-
-struct stat
-{
-    _dev_t      st_dev;
-    uint64_t    st_ino;
-    uint16_t    st_mode;
-    int16_t     st_nlink;
-    uint32_t    st_uid;
-    uint32_t    st_gid;
-    _dev_t      st_rdev;
-    uint64_t    st_size;
-    time_t      st_atime;
-    time_t      st_mtime;
-    time_t      st_ctime;
-    uint32_t    st_blksize;
-    uint64_t    st_blocks;
-};
-
-#undef  S_IFMT
-#define S_IFMT         0170000         /* file type mask */
-#undef  S_IFDIR
-#define S_IFDIR        0040000         /* directory */
-#define S_IFCHR        0020000         /* character special */
-#define S_IFBLK        0060000         /* block special */
-#define S_IFIFO        0010000         /* pipe */
-#undef  S_IFREG
-#define S_IFREG        0100000         /* regular */
-#define S_IREAD        0000400         /* read permission, owner */
-#define S_IWRITE       0000200         /* write permission, owner */
-#define S_IEXEC        0000100         /* execute/search permission, owner */
-
-#define S_IRUSR         S_IREAD
-#define S_IWUSR         S_IWRITE
-#define S_IXUSR         S_IEXEC
-#define S_ISREG(x)  (((x) & S_IFMT) == S_IFREG)
-#define S_ISDIR(x)  (((x) & S_IFMT) == S_IFDIR)
-#define S_ISCHR(x) 0
-#define S_ISBLK(x)  (((x) & S_IFMT) == S_IFBLK)
-#define S_ISFIFO(x) 0
-
-#define S_IRGRP         000040
-#define S_IWGRP         000020
-#define S_IXGRP         000010
-
-#define S_IROTH         00004
-#define S_IWOTH         00002
-#define S_IXOTH         00001
-
-#define S_IRWXO         000007
-#define S_IRWXG         000070
-#define S_ISUID         004000
-#define S_ISGID         002000
-#define S_ISVTX         001000
-#define S_ISSOCK(x) 0
-#define S_ISLNK(x)      0
-
-#if __STDC__
-#define O_RDONLY _O_RDONLY
-#define O_WRONLY _O_WRONLY
-#define O_RDWR   _O_RDWR
-#define O_CREAT  _O_CREAT
-#define O_TRUNC  _O_TRUNC
-
-#define isascii __isascii
-#define toascii __toascii
-#define iscsymf __iscsymf
-#define iscsym  __iscsym
-#endif
-
-typedef  BOOL (*t_pVSSPathConvert)(const char *szFilePath, char *szShadowPath, int nBuflen);
-typedef  BOOL (*t_pVSSPathConvertW)(const wchar_t  *szFilePath, wchar_t  *szShadowPath, int nBuflen);
-
-void SetVSSPathConvert(t_pVSSPathConvert pPathConvert, t_pVSSPathConvertW pPathConvertW);
-
-int lchown(const char *, uid_t uid, gid_t gid);
-int chown(const char *, uid_t uid, gid_t gid);
-#if !defined(HAVE_MINGW)
-int chmod(const char *, mode_t mode);
-#endif
-#define O_NONBLOCK   04000
-#define F_GETFL      3
-#define F_SETFL      4
-
-int win32_tape_open(const char *file, int flags, ...);
-int win32_tape_ioctl(int fd, unsigned long int request, ...);
-int win32_tape_close(int fd);
-ssize_t win32_tape_read(int fd, void *buffer, size_t count);
-ssize_t win32_tape_write(int fd, const void *buffer, size_t count);
-
-ssize_t win32_read(int fd, void *buffer, size_t count);
-ssize_t win32_write(int fd, const void *buffer, size_t count);
-int win32_ioctl(int fd, unsigned long int req, ...);
-
-#ifndef MINGW64
-#define open   _open
-#endif
-
-int fcntl(int fd, int cmd, long arg);
-int fstat(intptr_t fd, struct stat *sb);
-
-int inet_aton(const char *cp, struct in_addr *inp);
-int kill(int pid, int signo);
-int pipe(int []);
-int fork();
-int waitpid(int, int *, int);
-
-#if !defined(HAVE_MINGW)
-#define strncasecmp strnicmp
-//int strncasecmp(const char*, const char *, int);
-int utime(const char *filename, struct utimbuf *buf);
-#define vsnprintf _vsnprintf
-#define snprintf _snprintf
-#endif //HAVE_MINGW
-
-
-#define WNOHANG 0
-#define WIFEXITED(x) 0
-#define WEXITSTATUS(x) x
-#define WIFSIGNALED(x) 0
-#define WTERMSIG(x) x
-#define SIGKILL 9
-#define SIGUSR2 9999
-
-#define HAVE_OLD_SOCKOPT
-
-struct timespec;
-int readdir(unsigned int fd, struct dirent *dirp, unsigned int count);
-int nanosleep(const struct timespec*, struct timespec *);
-long int random(void);
-void srandom(unsigned int seed);
-int lstat(const char *, struct stat *);
-int stat(const char *file, struct stat *sb);
-long pathconf(const char *, int);
-int readlink(const char *, char *, int);
-#define _PC_PATH_MAX 1
-#define _PC_NAME_MAX 2
-
-int geteuid();
-
-DIR *opendir(const char *name);
-int closedir(DIR *dir);
-
-struct passwd {
-    char *foo;
-};
-
-struct group {
-    char *foo;
-};
-
-struct passwd *getpwuid(uid_t);
-struct group *getgrgid(uid_t);
-
-struct sigaction {
-    int sa_flags;
-    void (*sa_handler)(int);
-};
-#define sigfillset(x)
-#define sigaction(a, b, c)
-
-#define mkdir(p, m) win32_mkdir(p)
-#define unlink win32_unlink
-#define chdir win32_chdir
-#define chmod win32_chmod
-extern "C" void syslog(int type, const char *fmt, ...);
-#if !defined(LOG_DAEMON)
-#define LOG_DAEMON 0
-#endif
-
-#if !defined(HAVE_MINGW)
-#define R_OK 04
-#define W_OK 02
-int stat(const char *, struct stat *);
-#if defined(__cplusplus)
-#define access _access
-extern "C" _CRTIMP int __cdecl _access(const char *, int);
-int execvp(const char *, char *[]);
-extern "C" void *  __cdecl _alloca(size_t);
-#endif
-#endif //HAVE_MINGW
-
-#define getpid _getpid
-
-#define getppid() 0
-#define gethostid() 0
-#define getuid() 0
-#define getgid() 0
-
-#define getcwd win32_getcwd
-#define chdir win32_chdir
-#define chmod win32_chmod
-#define fputs win32_fputs
-char *win32_getcwd(char *buf, int maxlen);
-int win32_chdir(const char *buf);
-int win32_mkdir(const char *buf);
-int win32_fputs(const char *string, FILE *stream);
-int win32_unlink(const char *filename);
-int win32_chmod(const char *, mode_t);
-
-
-char* win32_cgets (char* buffer, int len);
-
-int WSA_Init(void);
-void Win32ConvCleanupCache();
-
-#if defined(HAVE_MINGW)
-void closelog();
-void openlog(const char *ident, int option, int facility);
-#endif //HAVE_MINGW
-
-/* Don't let OS go to sleep (usually a Laptop) while we are backing up */
-void prevent_os_suspensions();
-void allow_os_suspensions();
-
-typedef DWORD EXECUTION_STATE;
-#ifndef ES_CONTINUOUS
-#define ES_CONTINUOUS            0x80000000
-#endif
-#ifndef ES_SYSTEM_REQUIRED
-#define ES_SYSTEM_REQUIRED       0x00000001
-#endif
-#ifndef ES_DISPLAY_REQUIRED
-#define ES_DISPLAY_REQUIRED      0x00000002
-#endif
-#ifndef ES_USER_PRESENT
-# define ES_USER_PRESENT          0x00000004
-#endif
-
-WINBASEAPI EXECUTION_STATE WINAPI SetThreadExecutionState(EXECUTION_STATE esFlags);
-
-
-extern void LogErrorMsg(const char *message);
-
-#if !defined(INVALID_FILE_ATTRIBUTES)
-#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
-#endif
-
-#if defined(_MSC_VER)
-inline unsigned long ffs(unsigned long word)
-{
-   unsigned long  index;
-   
-   if (_BitScanForward(&index, word) != 0)
-      return index + 1;
-   else
-      return 0;
-}
-
-#else
-#define  ffs   __builtin_ffs
-#endif
-
-
-int win32_ftruncate(int fd, int64_t length);
-
-#undef ftruncate
-#define ftruncate win32_ftruncate
-
-#endif /* __COMPAT_H_ */
diff --git a/src/win32/compat/dirent.h b/src/win32/compat/dirent.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/dlfcn.h b/src/win32/compat/dlfcn.h
deleted file mode 100644
index 87a1add..0000000
--- a/src/win32/compat/dlfcn.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-2008 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, which is 
-   listed 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.
-*/
-/*
- * Written by Kern Sibbald, February 2008
- */
-
-#ifndef __DLFCN_H_
-#define __DLFCN_H_
-
-#define RTDL_NOW 2
-
-void *dlopen(const char *file, int mode);
-void *dlsym(void *handle, const char *name);
-int dlclose(void *handle);
-char *dlerror(void);
-
-#endif /* __DLFCN_H_ */
diff --git a/src/win32/compat/getopt.c b/src/win32/compat/getopt.c
deleted file mode 100644
index ea293b1..0000000
--- a/src/win32/compat/getopt.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*****************************************************************************
- *
- *  MODULE NAME : GETOPT.C
- *
- *  COPYRIGHTS:
- *             This module contains code made available by IBM
- *             Corporation on an AS IS basis.  Any one receiving the
- *             module is considered to be licensed under IBM copyrights
- *             to use the IBM-provided source code in any way he or she
- *             deems fit, including copying it, compiling it, modifying
- *             it, and redistributing it, with or without
- *             modifications.  No license under any IBM patents or
- *             patent applications is to be implied from this copyright
- *             license.
- *
- *             A user of the module should understand that IBM cannot
- *             provide technical support for the module and will not be
- *             responsible for any consequences of use of the program.
- *
- *             Any notices, including this one, are not to be removed
- *             from the module without the prior written consent of
- *             IBM.
- *
- *  AUTHOR:   Original author:
- *                 G. R. Blair (BOBBLAIR at AUSVM1)
- *                 Internet: bobblair at bobblair.austin.ibm.com
- *
- *            Extensively revised by:
- *                 John Q. Walker II, Ph.D. (JOHHQ at RALVM6)
- *                 Internet: johnq at ralvm6.vnet.ibm.com
- *
- *            Tweaked by Kern Sibbald for use in Bacula September 2007
- *
- *****************************************************************************/
-
-/******************************************************************************
- * getopt()
- *
- * The getopt() function is a command line parser.  It returns the next
- * option character in argv that matches an option character in opstring.
- *
- * The argv argument points to an array of argc+1 elements containing argc
- * pointers to character strings followed by a null pointer.
- *
- * The opstring argument points to a string of option characters; if an
- * option character is followed by a colon, the option is expected to have
- * an argument that may or may not be separated from it by white space.
- * The external variable optarg is set to point to the start of the option
- * argument on return from getopt().
- *
- * The getopt() function places in optind the argv index of the next argument
- * to be processed.  The system initializes the external variable optind to
- * 1 before the first call to getopt().
- *
- * When all options have been processed (that is, up to the first nonoption
- * argument), getopt() returns EOF.  The special option "--" may be used to
- * delimit the end of the options; EOF will be returned, and "--" will be
- * skipped.
- *
- * The getopt() function returns a question mark (?) when it encounters an
- * option character not included in opstring.  This error message can be
- * disabled by setting opterr to zero.  Otherwise, it returns the option
- * character that was detected.
- *
- * If the special option "--" is detected, or all options have been
- * processed, EOF is returned.
- *
- * Options are marked by either a minus sign (-) or a slash (/) if
- * GETOPT_USE_SLASH is defined.
- *
- * No errors are defined.
- *****************************************************************************/
-
-#include <stdio.h>              /* for EOF */
-#include <string.h>             /* for strchr() */
-#include "getopt.h"
-
-
-/* static (global) variables that are specified as exported by getopt() */
-char *optarg = NULL;            /* pointer to the start of the option argument  */
-int optind = 1;                 /* number of the next argv[] to be evaluated    */
-int opterr = 1;                 /* non-zero if a question mark should be returned
-                                   when a non-valid option character is detected */
-int optopt = '?';               /* Not used */
-
-/* handle possible future character set concerns by putting this in a macro */
-#define _next_char(string)  (char)(*(string+1))
-
-int getopt(int argc, char *const argv[], const char *opstring)
-{
-   static char *pIndexPosition = NULL;  /* place inside current argv string */
-   char *pArgString = NULL;     /* where to start from next */
-   char *pOptString;            /* the string in our program */
-
-
-   if (pIndexPosition != NULL) {
-      /* we last left off inside an argv string */
-      if (*(++pIndexPosition)) {
-         /* there is more to come in the most recent argv */
-         pArgString = pIndexPosition;
-      }
-   }
-
-   if (pArgString == NULL) {
-      /* we didn't leave off in the middle of an argv string */
-      if (optind >= argc) {
-         /* more command-line arguments than the argument count */
-         pIndexPosition = NULL; /* not in the middle of anything */
-         return EOF;            /* used up all command-line arguments */
-      }
-
-      /*---------------------------------------------------------------------
-       * If the next argv[] is not an option, there can be no more options.
-       *-------------------------------------------------------------------*/
-      pArgString = argv[optind++];      /* set this to the next argument ptr */
-
-#ifdef GETOPT_USE_SLASH
-      if (('/' != *pArgString) &&       /* doesn't start with a slash or a dash? */
-          ('-' != *pArgString)) {
-         --optind;              /* point to current arg once we're done */
-         optarg = NULL;         /* no argument follows the option */
-         pIndexPosition = NULL; /* not in the middle of anything */
-         return EOF;            /* used up all the command-line flags */
-      }
-#else
-      if ('-' != *pArgString) { /* doesn't start with a dash? */
-         --optind;              /* point to current arg once we're done */
-         optarg = NULL;         /* no argument follows the option */
-         pIndexPosition = NULL; /* not in the middle of anything */
-         return EOF;            /* used up all the command-line flags */
-      }
-#endif
-
-      /* check for special end-of-flags markers */
-      if ((strcmp(pArgString, "-") == 0) ||
-          (strcmp(pArgString, "--") == 0)) {
-         optarg = NULL;         /* no argument follows the option */
-         pIndexPosition = NULL; /* not in the middle of anything */
-         return EOF;            /* encountered the special flag */
-      }
-
-      pArgString++;             /* look past the / or - */
-   }
-
-   if (':' == *pArgString) {    /* is it a colon? */
-      /*---------------------------------------------------------------------
-       * Rare case: if opterr is non-zero, return a question mark;
-       * otherwise, just return the colon we're on.
-       *-------------------------------------------------------------------*/
-      return (opterr ? (int) '?' : (int) ':');
-   } else if ((pOptString = strchr(opstring, *pArgString)) == 0) {
-      /*---------------------------------------------------------------------
-       * The letter on the command-line wasn't any good.
-       *-------------------------------------------------------------------*/
-      optarg = NULL;            /* no argument follows the option */
-      pIndexPosition = NULL;    /* not in the middle of anything */
-      return (opterr ? (int) '?' : (int) *pArgString);
-   } else {
-      /*---------------------------------------------------------------------
-       * The letter on the command-line matches one we expect to see
-       *-------------------------------------------------------------------*/
-      if (':' == _next_char(pOptString)) {      /* is the next letter a colon? */
-         /* It is a colon.  Look for an argument string. */
-         if ('\0' != _next_char(pArgString)) {  /* argument in this argv? */
-            optarg = &pArgString[1];    /* Yes, it is */
-         } else {
-        /*-------------------------------------------------------------
-         * The argument string must be in the next argv.
-         * But, what if there is none (bad input from the user)?
-         * In that case, return the letter, and optarg as NULL.
-         *-----------------------------------------------------------*/
-            if (optind < argc)
-               optarg = argv[optind++];
-            else {
-               optarg = NULL;
-               return (opterr ? (int) '?' : (int) *pArgString);
-            }
-         }
-         pIndexPosition = NULL; /* not in the middle of anything */
-      } else {
-         /* it's not a colon, so just return the letter */
-         optarg = NULL;         /* no argument follows the option */
-         pIndexPosition = pArgString;   /* point to the letter we're on */
-      }
-      return (int) *pArgString; /* return the letter that matched */
-   }
-}
diff --git a/src/win32/compat/getopt.h b/src/win32/compat/getopt.h
deleted file mode 100644
index ca88b60..0000000
--- a/src/win32/compat/getopt.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2000-2007 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, which is 
-   listed 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.
-*/
-/* 
- *  Kern Sibbald, September, MMVII
- *
- *   Written from man page definitions
- */
-
-#ifndef _GETOPT_H_
-#define _GETOPT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int getopt(int argc, char * const argv[], const char *optstring);
-
-extern char *optarg;
-extern int optind, opterr, optopt;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _GETOPT_H_ */
-
diff --git a/src/win32/compat/grp.h b/src/win32/compat/grp.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/mingwconfig.h b/src/win32/compat/mingwconfig.h
deleted file mode 100644
index 2b29c64..0000000
--- a/src/win32/compat/mingwconfig.h
+++ /dev/null
@@ -1,400 +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 build the Windows versions with this header
- *    file.  We use the Mingw environment.
- */
-/* ------------------------------------------------------------------------- */
-/* --                     CONFIGURE SPECIFIED FEATURES                    -- */
-/* ------------------------------------------------------------------------- */
-
-#ifndef __MINGWCONFIG_H
-#define __MINGWCONFIG_H
-
-
-/* Define if you want SmartAlloc debug code enabled */
-#define SMARTALLOC 1
-
-/* Define if you want to use Batch Mode */
-/* #define HAVE_BATCH_FILE_INSERT 1 */
-
-/* Define if you need function prototypes */
-#define PROTOTYPES 1
-
-/* Define if you have GCC */
-#define HAVE_GCC 1
-
-/* Define to 1 if utime.h exists and declares struct utimbuf.  */
-#define HAVE_UTIME_H 1
-
-/* 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_UINT64_T 1
-#define HAVE_INTMAX_T 1
-/* #undef HAVE_U_INTMAX_T */
-#define HAVE_UINTPTR_T 1
-#define HAVE_INTPTR_T 1
-
-/* Define if you want TCP Wrappers support */
-/* #undef HAVE_LIBWRAP */
-
-/* Define if you have sys/bitypes.h */
-/* #undef HAVE_SYS_BITYPES_H */
-
-/* Define if you have zlib */
-#define HAVE_LIBZ 1
-
-/* Define if you have lzo lib */
-/* #define HAVE_LZO 1 */
-
-/* Define to 1 if you have the <lzo/lzoconf.h> header file. */
-/* #define HAVE_LZO_LZOCONF_H 1  */
-
-
-/* File daemon specif libraries */
-#define FDLIBS 1
-
-
-/* What kind of signals we have */
-/*#define HAVE_POSIX_SIGNALS 1 */
-/* #undef HAVE_BSD_SIGNALS */
-/* #undef HAVE_USG_SIGHOLD */
-
-
-/* Set to correct scanf value for long long int */
-#define lld "lld"
-#define llu "llu"
-/* #define USE_BSNPRINTF */
-
-#define HAVE_STRTOLL 1
-
-/* 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 the <dirent.h> header file, and it defines `DIR'.
-   */
-#define HAVE_DIRENT_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the `getcwd' function. */
-#define HAVE_GETCWD 1
-
-/* 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 <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 <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 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 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_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
-
-/* 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 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 */
-
-/* Use long unsigned int for ioctl request */
-#define HAVE_IOCTL_ULINT_REQUEST
-
-/* For now, we only support Little endian on Win32 */
-#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 /* __MINGWNCONFIG_H */
diff --git a/src/win32/compat/ms_atl.h b/src/win32/compat/ms_atl.h
deleted file mode 100644
index 5c803ea..0000000
--- a/src/win32/compat/ms_atl.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Minimal replacement for class CComPtr and CComBSTR
- * Based on common public IUnknown interface only
- */
-
-template <class T> class CComPtr
-{
-
-public:
-
-/* Attribute(s) ... */
-        T* p;
-
-/* Creation ... */
-        CComPtr()
-        {
-           p = NULL;
-        }
-        
-/* Destructor ... */
-        ~CComPtr()
-        {
-           if (p)
-              p->Release();
-        }
-};
-
-class CComBSTR
-{
-
-public:
-
-        BSTR p;
-
-/* Creation ... */
-        CComBSTR()
-        {
-           p = NULL;
-        }
-
-/* Destructor ... */
-        ~CComBSTR()
-        {
-             ::SysFreeString(p);
-        }
-
-/* Address-of operator */
-        BSTR* operator&()
-        {
-           return &p;
-        }
-
-};
diff --git a/src/win32/compat/mswinver.h b/src/win32/compat/mswinver.h
deleted file mode 100644
index 730ac91..0000000
--- a/src/win32/compat/mswinver.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef __MSWINVER_H_
-#define __MSWINVER_H_
-
-#define MS_MAJOR_WINDOWS_3	3
-#define MS_MAJOR_WINDOWS_95	4
-#define MS_MAJOR_WINDOWS_98	4
-#define MS_MAJOR_WINDOWS_ME	4
-#define MS_MAJOR_WINDOWS_NT4	4
-#define MS_MAJOR_WINDOWS_2K	5
-#define MS_MAJOR_WINDOWS_XP	5
-#define MS_MAJOR_WINDOWS_S2003	5
-
-
-#define MS_MINOR_WINDOWS_3	51
-#define MS_MINOR_WINDOWS_95	0
-#define MS_MINOR_WINDOWS_98	10
-#define MS_MINOR_WINDOWS_ME	90
-#define MS_MINOR_WINDOWS_NT4	0
-#define MS_MINOR_WINDOWS_2K	0
-#define MS_MINOR_WINDOWS_XP	1
-#define MS_MINOR_WINDOWS_S2003	2
-
-
-#define _mkversion(p, m, r) (((p)<<24)|((m)<<8)|(r))
-
-#define MS_WINDOWS_95  _mkversion(VER_PLATFORM_WIN32_WINDOWS, MS_MAJOR_WINDOWS_95, MS_MINOR_WINDOWS_95)
-#define MS_WINDOWS_98  _mkversion(VER_PLATFORM_WIN32_WINDOWS, MS_MAJOR_WINDOWS_98, MS_MINOR_WINDOWS_98)
-#define MS_WINDOWS_ME  _mkversion(VER_PLATFORM_WIN32_WINDOWS, MS_MAJOR_WINDOWS_ME, MS_MINOR_WINDOWS_ME)
-#define MS_WINDOWS_NT4  _mkversion(VER_PLATFORM_WIN32_NT, MS_MAJOR_WINDOWS_NT4, MS_MINOR_WINDOWS_NT4)
-#define MS_WINDOWS_2K  _mkversion(VER_PLATFORM_WIN32_NT, MS_MAJOR_WINDOWS_2K, MS_MINOR_WINDOWS_2K)
-#define MS_WINDOWS_XP  _mkversion(VER_PLATFORM_WIN32_NT, MS_MAJOR_WINDOWS_XP, MS_MINOR_WINDOWS_XP)
-#define MS_WINDOWS_S2003  _mkversion(VER_PLATFORM_WIN32_NT, MS_MAJOR_WINDOWS_S2003, MS_MINOR_WINDOWS_S2003)
-
-
-#endif
diff --git a/src/win32/compat/netdb.h b/src/win32/compat/netdb.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/netinet/in.h b/src/win32/compat/netinet/in.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/netinet/tcp.h b/src/win32/compat/netinet/tcp.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/print.cpp b/src/win32/compat/print.cpp
deleted file mode 100644
index 4fa0053..0000000
--- a/src/win32/compat/print.cpp
+++ /dev/null
@@ -1,745 +0,0 @@
-/**************************************************************
- * Original:
- * Patrick Powell Tue Apr 11 09:48:21 PDT 1995
- * A bombproof version of doprnt(dopr) included.
- * Sigh.  This sort of thing is always nasty do deal with.  Note that
- * the version here does not include floating point...
- *
- * snprintf() is used instead of sprintf() as it does limit checks
- * for string length.  This covers a nasty loophole.
- *
- * The other functions are there to prevent NULL pointers from
- * causing nast effects.
- *
- * More Recently:
- *  Brandon Long <blong at fiction.net> 9/15/96 for mutt 0.43
- *  This was ugly.  It is still ugly.  I opted out of floating point
- *  numbers, but the formatter understands just about everything
- *  from the normal C string format, at least as far as I can tell from
- *  the Solaris 2.5 printf(3S) man page.
- *
- *  Brandon Long <blong at fiction.net> 10/22/97 for mutt 0.87.1
- *    Ok, added some minimal floating point support, which means this
- *    probably requires libm on most operating systems.  Don't yet
- *    support the exponent(e, E) and sigfig(g, G).  Also, fmtint()
- *    was pretty badly broken, it just wasn't being exercised in ways
- *    which showed it, so that's been fixed.  Also, formated the code
- *    to mutt conventions, and removed dead code left over from the
- *    original.  Also, there is now a builtin-test, just compile with:
- *           gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm
- *    and run snprintf for results.
- * 
- *  Thomas Roessler <roessler at guug.de> 01/27/98 for mutt 0.89i
- *    The PGP code was using unsigned hexadecimal formats. 
- *    Unfortunately, unsigned formats simply didn't work.
- *
- *  Michael Elkins <me at cs.hmc.edu> 03/05/98 for mutt 0.90.8
- *    The original code assumed that both snprintf() and vsnprintf() were
- *    missing.  Some systems only have snprintf() but not vsnprintf(), so
- *    the code is now broken down under HAVE_SNPRINTF and HAVE_VSNPRINTF.
- *
- *  Ben Lindstrom <mouring at eviladmin.org> 09/27/00 for OpenSSH
- *    Welcome to the world of %lld and %qd support.  With other
- *    long long support.  This is needed for sftp-server to work
- *    right.
- *
- *  Ben Lindstrom <mouring at eviladmin.org> 02/12/01 for OpenSSH
- *    Removed all hint of VARARGS stuff and banished it to the void, 
- *    and did a bit of KNF style work to make things a bit more
- *    acceptable.  Consider stealing from mutt or enlightenment.
- **************************************************************/
-
-#include "bacula.h"
-#include "compat.h"
-
-typedef void (prfun)(char *, size_t *, size_t, int);
-
-int 
-dopr(char *buffer, size_t maxlen, const char *format, va_list args, prfun);
-
-
-static void 
-fmtstr(char *buffer, size_t *currlen, size_t maxlen, char *value, int flags, 
-       int min, int max, prfun);
-
-static void 
-fmtint(char *buffer, size_t *currlen, size_t maxlen, INT64 value, int base, 
-       int min, int max, int flags, prfun);
-
-static void 
-fmtfp(char *buffer, size_t *currlen, size_t maxlen, long double fvalue, 
-      int min, int max, int flags, prfun);
-
-static void
-dopr_outch(char *buffer, size_t *currlen, size_t maxlen, int c);
-
-/*
- * dopr(): poor man's version of doprintf
- */
-
-#ifndef MAX
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#endif
-
-/* format read states */
-#define DP_S_DEFAULT 0
-#define DP_S_FLAGS   1
-#define DP_S_MIN     2
-#define DP_S_DOT     3
-#define DP_S_MAX     4
-#define DP_S_MOD     5
-#define DP_S_CONV    6
-#define DP_S_DONE    7
-
-/* format flags - Bits */
-#define DP_F_MINUS      (1 << 0)
-#define DP_F_PLUS       (1 << 1)
-#define DP_F_SPACE      (1 << 2)
-#define DP_F_NUM        (1 << 3)
-#define DP_F_ZERO       (1 << 4)
-#define DP_F_UP         (1 << 5)
-#define DP_F_UNSIGNED   (1 << 6)
-
-/* Conversion Flags */
-#define DP_C_SHORT     1
-#define DP_C_LONG      2
-#define DP_C_LDOUBLE   3
-#define DP_C_LONG_LONG 4
-
-#define char_to_int(p)  (p - '0')
-#define abs_val(p)      (p < 0 ? -p : p)
-
-static const char digitval[] = "0123456789abcdef0123456789ABCDEF";
-
-int
-dopr(char *buffer, size_t maxlen, const char *format, va_list args, prfun outch)
-{
-    char *strvalue;
-    char ch;
-    INT64 value;
-    long double fvalue;
-    int min = 0;
-    int max = -1;
-    int state = DP_S_DEFAULT;
-    int flags = 0;
-    int cflags = 0;
-    size_t currlen = 0;
-  
-    ch = *format++;
-
-    while (state != DP_S_DONE)
-    {
-        if ((ch == '\0') || (currlen >= maxlen)) 
-            state = DP_S_DONE;
-
-        switch (state)
-        {
-        case DP_S_DEFAULT:
-            if (ch == '%') 
-                state = DP_S_FLAGS;
-            else 
-                outch(buffer, &currlen, maxlen, ch);
-            ch = *format++;
-            break;
-        case DP_S_FLAGS:
-            switch (ch)
-            {
-            case '-':
-                flags |= DP_F_MINUS;
-                ch = *format++;
-                break;
-            case '+':
-                flags |= DP_F_PLUS;
-                ch = *format++;
-                break;
-            case ' ':
-                flags |= DP_F_SPACE;
-                ch = *format++;
-                break;
-            case '#':
-                flags |= DP_F_NUM;
-                ch = *format++;
-                break;
-            case '0':
-                flags |= DP_F_ZERO;
-                ch = *format++;
-                break;
-            default:
-                state = DP_S_MIN;
-                break;
-            }
-            break;
-        case DP_S_MIN:
-            if (isdigit((unsigned char)ch))
-            {
-                min = 10*min + char_to_int(ch);
-                ch = *format++;
-            }
-            else if (ch == '*')
-            {
-                min = va_arg(args, int);
-                ch = *format++;
-                state = DP_S_DOT;
-            }
-            else 
-                state = DP_S_DOT;
-            break;
-        case DP_S_DOT:
-            if (ch == '.')
-            {
-                state = DP_S_MAX;
-                ch = *format++;
-            }
-            else 
-                state = DP_S_MOD;
-            break;
-        case DP_S_MAX:
-            if (isdigit((unsigned char)ch))
-            {
-                if (max < 0)
-                    max = 0;
-                max = 10*max + char_to_int(ch);
-                ch = *format++;
-            }
-            else if (ch == '*')
-            {
-                max = va_arg(args, int);
-                ch = *format++;
-                state = DP_S_MOD;
-            }
-            else 
-                state = DP_S_MOD;
-            break;
-        case DP_S_MOD:
-            switch (ch)
-            {
-            case 'h':
-                cflags = DP_C_SHORT;
-                ch = *format++;
-                break;
-            case 'l':
-                cflags = DP_C_LONG;
-                ch = *format++;
-                if (ch == 'l')
-                {
-                    cflags = DP_C_LONG_LONG;
-                    ch = *format++;
-                }
-                break;
-            case 'q':
-                cflags = DP_C_LONG_LONG;
-                ch = *format++;
-                break;
-            case 'L':
-                cflags = DP_C_LDOUBLE;
-                ch = *format++;
-                break;
-            default:
-                break;
-            }
-            state = DP_S_CONV;
-            break;
-        case DP_S_CONV:
-            switch (ch)
-            {
-            case 'b':
-                flags |= DP_F_UNSIGNED;
-                if (cflags == DP_C_SHORT) 
-                    value = va_arg(args, unsigned int);
-                else if (cflags == DP_C_LONG)
-                    value = va_arg(args, unsigned long int);
-                else if (cflags == DP_C_LONG_LONG)
-                    value = va_arg(args, UINT64);
-                else
-                    value = va_arg(args, unsigned int);
-                fmtint(buffer, &currlen, maxlen, value, 2, min, max, flags, outch);
-                break;
-            case 'd':
-            case 'i':
-                if (cflags == DP_C_SHORT) 
-                    value = va_arg(args, int);
-                else if (cflags == DP_C_LONG)
-                    value = va_arg(args, long int);
-                else if (cflags == DP_C_LONG_LONG)
-                    value = va_arg(args, INT64);
-                else
-                    value = va_arg(args, int);
-                fmtint(buffer, &currlen, maxlen, value, 10, min, max, flags, outch);
-                break;
-            case 'o':
-                flags |= DP_F_UNSIGNED;
-                if (cflags == DP_C_SHORT)
-                    value = va_arg(args, unsigned int);
-                else if (cflags == DP_C_LONG)
-                    value = va_arg(args, unsigned long int);
-                else if (cflags == DP_C_LONG_LONG)
-                    value = va_arg(args, UINT64);
-                else
-                    value = va_arg(args, unsigned int);
-                fmtint(buffer, &currlen, maxlen, value, 8, min, max, flags, outch);
-                break;
-            case 'u':
-                flags |= DP_F_UNSIGNED;
-                if (cflags == DP_C_SHORT)
-                    value = va_arg(args, unsigned int);
-                else if (cflags == DP_C_LONG)
-                    value = va_arg(args, unsigned long int);
-                else if (cflags == DP_C_LONG_LONG)
-                    value = va_arg(args, UINT64);
-                else
-                    value = va_arg(args, unsigned int);
-                fmtint(buffer, &currlen, maxlen, value, 10, min, max, flags, outch);
-                break;
-            case 'X':
-                flags |= DP_F_UP;
-            case 'x':
-                flags |= DP_F_UNSIGNED;
-                if (cflags == DP_C_SHORT)
-                    value = va_arg(args, unsigned int);
-                else if (cflags == DP_C_LONG)
-                    value = va_arg(args, unsigned long int);
-                else if (cflags == DP_C_LONG_LONG)
-                    value = va_arg(args, UINT64);
-                else
-                    value = va_arg(args, unsigned int);
-                fmtint(buffer, &currlen, maxlen, value, 16, min, max, flags, outch);
-                break;
-            case 'f':
-                if (cflags == DP_C_LDOUBLE)
-                    fvalue = va_arg(args, long double);
-                else
-                    fvalue = va_arg(args, double);
-                /* um, floating point? */
-                fmtfp(buffer, &currlen, maxlen, fvalue, min, max, flags, outch);
-                break;
-            case 'E':
-                flags |= DP_F_UP;
-            case 'e':
-                if (cflags == DP_C_LDOUBLE)
-                    fvalue = va_arg(args, long double);
-                else
-                    fvalue = va_arg(args, double);
-                break;
-            case 'G':
-                flags |= DP_F_UP;
-            case 'g':
-                if (cflags == DP_C_LDOUBLE)
-                    fvalue = va_arg(args, long double);
-                else
-                    fvalue = va_arg(args, double);
-                break;
-            case 'c':
-                outch(buffer, &currlen, maxlen, va_arg(args, int));
-                break;
-            case 's':
-                strvalue = va_arg(args, char *);
-                if (max < 0) {
-                    max = maxlen; /* ie, no max */
-                }
-                fmtstr(buffer, &currlen, maxlen, strvalue, flags, min, max, outch);
-                break;
-            case 'p':
-                flags |= DP_F_UNSIGNED;
-                if (sizeof(char *) == 4) {
-                   value = va_arg(args, uint32_t);
-                } else if (sizeof(char *) == 8) {
-                   value = va_arg(args, uint64_t);
-                } else {
-                   value = 0;             /* we have a problem */
-                }
-                fmtint(buffer, &currlen, maxlen, value, 16, min, max,
-                       flags, outch);
-                break;
-            case 'n':
-                if (cflags == DP_C_SHORT)
-                {
-                    short int *num;
-                    num = va_arg(args, short int *);
-                    *num = currlen;
-                }
-                else if (cflags == DP_C_LONG)
-                {
-                    long int *num;
-                    num = va_arg(args, long int *);
-                    *num = currlen;
-                }
-                else if (cflags == DP_C_LONG_LONG)
-                {
-                    INT64 *num;
-                    num = va_arg(args, INT64 *);
-                    *num = currlen;
-                }
-                else
-                {
-                    int *num;
-                    num = va_arg(args, int *);
-                    *num = currlen;
-                }
-                break;
-            case '%':
-                outch(buffer, &currlen, maxlen, ch);
-                break;
-            case 'w': /* not supported yet, treat as next char */
-                ch = *format++;
-                break;
-            default: /* Unknown, skip */
-                break;
-            }
-            ch = *format++;
-            state = DP_S_DEFAULT;
-            flags = cflags = min = 0;
-            max = -1;
-            break;
-        case DP_S_DONE:
-            break;
-        default: /* hmm? */
-            break; /* some picky compilers need this */
-        }
-    }
-    outch(buffer, &currlen, maxlen, -1);
-    return currlen;
-}
-
-static void
-fmtstr(char *buffer, size_t *currlen, size_t maxlen, 
-       char *value, int flags, int min, int max, prfun outch)
-{
-    int padlen, strln;     /* amount to pad */
-    int cnt = 0;
-  
-    if (value == NULL) 
-        value = (char *)"<NULL>";
-
-    for (strln = 0; value[strln]; ++strln); /* strlen */
-    padlen = min - strln;
-    if (padlen < 0) 
-        padlen = 0;
-    if (flags & DP_F_MINUS) 
-        padlen = -padlen; /* Left Justify */
-
-    while ((padlen > 0) && (cnt < max))
-    {
-        outch(buffer, currlen, maxlen, ' ');
-        --padlen;
-        ++cnt;
-    }
-    while (*value && (cnt < max))
-    {
-        outch(buffer, currlen, maxlen, *value++);
-        ++cnt;
-    }
-    while ((padlen < 0) && (cnt < max))
-    {
-        outch(buffer, currlen, maxlen, ' ');
-        ++padlen;
-        ++cnt;
-    }
-}
-
-/* Have to handle DP_F_NUM(ie 0x and 0 alternates) */
-
-static void 
-fmtint(char *buffer, size_t *currlen, size_t maxlen, 
-       INT64 value, int base, int min, int max, int flags, prfun outch)
-{
-    UINT64 uvalue;
-    char convert[20];
-    int signvalue = 0;
-    int place = 0;
-    int spadlen = 0; /* amount to space pad */
-    int zpadlen = 0; /* amount to zero pad */
-    int caps = 0;
-    
-    if (max < 0)
-        max = 0;
-    
-    uvalue = value;
-
-    if (!(flags & DP_F_UNSIGNED))
-    {
-        if (value < 0)
-        {
-            signvalue = '-';
-            uvalue = -value;
-        }
-        else if (flags & DP_F_PLUS)  /* Do a sign(+/i) */
-            signvalue = '+';
-        else if (flags & DP_F_SPACE)
-            signvalue = ' ';
-    }
-  
-    if (flags & DP_F_UP) 
-        caps = 16; /* Should characters be upper case? */
-
-    do
-    {
-        convert[place++] = digitval[(uvalue%base)+caps];
-        uvalue = (uvalue / (unsigned)base);
-    } while (uvalue && (place < 20));
-
-    if (place == 20) 
-        place--;
-
-    convert[place] = 0;
-
-    zpadlen = max - place;
-    spadlen = min - MAX(max, place) - (signvalue ? 1 : 0);
-
-    if (zpadlen < 0)
-        zpadlen = 0;
-    if (spadlen < 0)
-        spadlen = 0;
-    if (flags & DP_F_ZERO)
-    {
-        zpadlen = MAX(zpadlen, spadlen);
-        spadlen = 0;
-    }
-    if (flags & DP_F_MINUS) 
-        spadlen = -spadlen; /* Left Justifty */
-
-
-    /* Spaces */
-    while (spadlen > 0)
-    {
-        outch(buffer, currlen, maxlen, ' ');
-        --spadlen;
-    }
-
-    /* Sign */
-    if (signvalue) 
-        outch(buffer, currlen, maxlen, signvalue);
-
-    /* Zeros */
-    if (zpadlen > 0)
-    {
-        while (zpadlen > 0)
-        {
-            outch(buffer, currlen, maxlen, '0');
-            --zpadlen;
-        }
-    }
-
-    /* Digits */
-    while (place > 0) 
-        outch(buffer, currlen, maxlen, convert[--place]);
-  
-    /* Left Justified spaces */
-    while (spadlen < 0)
-    {
-        outch(buffer, currlen, maxlen, ' ');
-        ++spadlen;
-    }
-}
-
-static long double 
-pow10(int exp)
-{
-    long double result = 1;
-
-    while (exp)
-    {
-        result *= 10;
-        exp--;
-    }
-  
-    return result;
-}
-
-static long 
-round(long double value)
-{
-    long intpart = (long)value;
-
-    value -= intpart;
-    if (value >= 0.5)
-        intpart++;
-
-    return intpart;
-}
-
-static void 
-fmtfp(char *buffer, size_t *currlen, size_t maxlen, long double fvalue, 
-      int min, int max, int flags, prfun outch)
-{
-    char iconvert[20];
-    char fconvert[20];
-    int signvalue = 0;
-    int iplace = 0;
-    int fplace = 0;
-    int padlen = 0; /* amount to pad */
-    int zpadlen = 0; 
-    long intpart;
-    long fracpart;
-    long double ufvalue;
-  
-    /* 
-     * AIX manpage says the default is 0, but Solaris says the default
-     * is 6, and sprintf on AIX defaults to 6
-     */
-    if (max < 0)
-        max = 6;
-
-    ufvalue = abs_val(fvalue);
-
-    if (fvalue < 0)
-        signvalue = '-';
-    else if (flags & DP_F_PLUS)  /* Do a sign(+/i) */
-        signvalue = '+';
-    else if (flags & DP_F_SPACE)
-        signvalue = ' ';
-
-    intpart = (long)ufvalue;
-
-    /* 
-     * Sorry, we only support 9 digits past the decimal because of our 
-     * conversion method
-     */
-    if (max > 9)
-        max = 9;
-
-    /* We "cheat" by converting the fractional part to integer by
-     * multiplying by a factor of 10
-     */
-    fracpart = round((pow10 (max)) * (ufvalue - intpart));
-
-    if (fracpart >= pow10 (max))
-    {
-        intpart++;
-        fracpart -= (long)pow10 (max);
-    }
-
-    /* Convert integer part */
-    do
-    {
-        iconvert[iplace++] = digitval[intpart % 10];
-        intpart = (intpart / 10);
-    } while (intpart && (iplace < 20));
-
-    if (iplace == 20) 
-        iplace--;
-
-    iconvert[iplace] = 0;
-
-    /* Convert fractional part */
-    do
-    {
-        fconvert[fplace++] = digitval[fracpart % 10];
-        fracpart = (fracpart / 10);
-    } while (fracpart && (fplace < 20));
-
-    if (fplace == 20) 
-        fplace--;
-
-    fconvert[fplace] = 0;
-
-    /* -1 for decimal point, another -1 if we are printing a sign */
-    padlen = min - iplace - max - 1 - ((signvalue) ? 1 : 0); 
-    zpadlen = max - fplace;
-    if (zpadlen < 0)
-        zpadlen = 0;
-    if (padlen < 0) 
-        padlen = 0;
-    if (flags & DP_F_MINUS) 
-        padlen = -padlen; /* Left Justifty */
-
-    if ((flags & DP_F_ZERO) && (padlen > 0))
-    {
-        if (signvalue)
-        {
-            outch(buffer, currlen, maxlen, signvalue);
-            --padlen;
-            signvalue = 0;
-        }
-        while (padlen > 0)
-        {
-            outch(buffer, currlen, maxlen, '0');
-            --padlen;
-        }
-    }
-
-    while (padlen > 0)
-    {
-        outch(buffer, currlen, maxlen, ' ');
-        --padlen;
-    }
-
-    if (signvalue) 
-        outch(buffer, currlen, maxlen, signvalue);
-
-    while (iplace > 0) 
-        outch(buffer, currlen, maxlen, iconvert[--iplace]);
-
-    /*
-     * Decimal point.  This should probably use locale to find the correct
-     * char to print out.
-     */
-    outch(buffer, currlen, maxlen, '.');
-
-    while (fplace > 0) 
-        outch(buffer, currlen, maxlen, fconvert[--fplace]);
-
-    while (zpadlen > 0)
-    {
-        outch(buffer, currlen, maxlen, '0');
-        --zpadlen;
-    }
-
-    while (padlen < 0)
-    {
-        outch(buffer, currlen, maxlen, ' ');
-        ++padlen;
-    }
-}
-
-static void 
-dopr_outch(char *buffer, size_t *currlen, size_t maxlen, int c)
-{
-    if (c == -1)
-    {
-        if (*currlen < maxlen - 1) 
-            buffer[*currlen] = '\0';
-        else 
-            buffer[maxlen - 1] = '\0';
-    }
-    else if (*currlen < maxlen)
-        buffer[(*currlen)++] = c;
-}
-
-int
-__sprintf(char *str, const char *fmt, ...) 
-{
-    int rval;
-    va_list ap;
-    va_start(ap, fmt);
-    rval = vsnprintf(str, 128*1024, fmt, ap);
-    va_end(ap);
-    return rval;
-}
-
-
-int 
-__snprintf(char *str, size_t count, const char *fmt, ...)
-{
-    int rval;
-    va_list ap;
-
-    va_start(ap, fmt);
-    rval = vsnprintf(str, count, fmt, ap);
-    va_end(ap);
-
-    return rval;
-}
-
-int
-__vsprintf(char *s, const char *format, va_list args)
-{
-    s[0] = 0;
-    return dopr(s, 0xfffff, format, args, dopr_outch);
-}
-
-int
-__vsnprintf(char *s, size_t count, const char *format, va_list args)
-{
-    s[0] = 0;
-    return dopr(s, count, format, args, dopr_outch);
-}
diff --git a/src/win32/compat/pwd.h b/src/win32/compat/pwd.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/stdint.h b/src/win32/compat/stdint.h
deleted file mode 100644
index 048a454..0000000
--- a/src/win32/compat/stdint.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#if defined(__GNUC__)
-#include_next <stdint.h>
-#endif
diff --git a/src/win32/compat/strings.h b/src/win32/compat/strings.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/sys/file.h b/src/win32/compat/sys/file.h
deleted file mode 100644
index 3650805..0000000
--- a/src/win32/compat/sys/file.h
+++ /dev/null
@@ -1,2 +0,0 @@
-
-#include "compat.h"
diff --git a/src/win32/compat/sys/ioctl.h b/src/win32/compat/sys/ioctl.h
deleted file mode 100644
index c09d6d9..0000000
--- a/src/win32/compat/sys/ioctl.h
+++ /dev/null
@@ -1 +0,0 @@
-extern int ioctl(int __fd, unsigned long int __request, ...);
diff --git a/src/win32/compat/sys/mtio.h b/src/win32/compat/sys/mtio.h
deleted file mode 100644
index 51fa550..0000000
--- a/src/win32/compat/sys/mtio.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/* Structures and definitions for magnetic tape I/O control commands.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-/* Written by H. Bergman <hennus at cybercomm.nl>.  */
-
-#ifndef _SYS_MTIO_H
-#define _SYS_MTIO_H	1
-
-/* Get necessary definitions from system and kernel headers.  */
-#include <sys/types.h>
-#include <sys/ioctl.h>
-
-
-/* Structure for MTIOCTOP - magnetic tape operation command.  */
-struct mtop
-  {
-    short int mt_op;		/* Operations defined below.  */
-    int mt_count;		/* How many of them.  */
-  };
-#define _IOT_mtop /* Hurd ioctl type field.  */ \
-  _IOT (_IOTS (short), 1, _IOTS (int), 1, 0, 0)
-
-/* Magnetic Tape operations [Not all operations supported by all drivers].  */
-#define MTRESET 0	/* +reset drive in case of problems.  */
-#define MTFSF	1	/* Forward space over FileMark,
-			 * position at first record of next file.  */
-#define MTBSF	2	/* Backward space FileMark (position before FM).  */
-#define MTFSR	3	/* Forward space record.  */
-#define MTBSR	4	/* Backward space record.  */
-#define MTWEOF	5	/* Write an end-of-file record (mark).  */
-#define MTREW	6	/* Rewind.  */
-#define MTOFFL	7	/* Rewind and put the drive offline (eject?).  */
-#define MTNOP	8	/* No op, set status only (read with MTIOCGET).  */
-#define MTRETEN 9	/* Retension tape.  */
-#define MTBSFM	10	/* +backward space FileMark, position at FM.  */
-#define MTFSFM  11	/* +forward space FileMark, position at FM.  */
-#define MTEOM	12	/* Goto end of recorded media (for appending files).
-			   MTEOM positions after the last FM, ready for
-			   appending another file.  */
-#define MTERASE 13	/* Erase tape -- be careful!  */
-
-#define MTRAS1  14	/* Run self test 1 (nondestructive).  */
-#define MTRAS2	15	/* Run self test 2 (destructive).  */
-#define MTRAS3  16	/* Reserved for self test 3.  */
-
-#define MTSETBLK 20	/* Set block length (SCSI).  */
-#define MTSETDENSITY 21	/* Set tape density (SCSI).  */
-#define MTSEEK	22	/* Seek to block (Tandberg, etc.).  */
-#define MTTELL	23	/* Tell block (Tandberg, etc.).  */
-#define MTSETDRVBUFFER 24 /* Set the drive buffering according to SCSI-2.
-			     Ordinary buffered operation with code 1.  */
-#define MTFSS	25	/* Space forward over setmarks.  */
-#define MTBSS	26	/* Space backward over setmarks.  */
-#define MTWSM	27	/* Write setmarks.  */
-
-#define MTLOCK  28	/* Lock the drive door.  */
-#define MTUNLOCK 29	/* Unlock the drive door.  */
-#define MTLOAD  30	/* Execute the SCSI load command.  */
-#define MTUNLOAD 31	/* Execute the SCSI unload command.  */
-#define MTCOMPRESSION 32/* Control compression with SCSI mode page 15.  */
-#define MTSETPART 33	/* Change the active tape partition.  */
-#define MTMKPART  34	/* Format the tape with one or two partitions.  */
-
-/* structure for MTIOCGET - mag tape get status command */
-
-struct mtget
-  {
-    long int mt_type;		/* Type of magtape device.  */
-    long int mt_resid;		/* Residual count: (not sure)
-				   number of bytes ignored, or
-				   number of files not skipped, or
-				   number of records not skipped.  */
-    /* The following registers are device dependent.  */
-    long int mt_dsreg;		/* Status register.  */
-    long int mt_gstat;		/* Generic (device independent) status.  */
-    long int mt_erreg;		/* Error register.  */
-    /* The next two fields are not always used.  */
-    __daddr_t mt_fileno;	/* Number of current file on tape.  */
-    __daddr_t mt_blkno;		/* Current block number.  */
-  };
-#define _IOT_mtget /* Hurd ioctl type field.  */ \
-  _IOT (_IOTS (long), 7, 0, 0, 0, 0)
-
-
-/* Constants for mt_type. Not all of these are supported, and
-   these are not all of the ones that are supported.  */
-#define MT_ISUNKNOWN		0x01
-#define MT_ISQIC02		0x02	/* Generic QIC-02 tape streamer.  */
-#define MT_ISWT5150		0x03	/* Wangtek 5150EQ, QIC-150, QIC-02.  */
-#define MT_ISARCHIVE_5945L2	0x04	/* Archive 5945L-2, QIC-24, QIC-02?. */
-#define MT_ISCMSJ500		0x05	/* CMS Jumbo 500 (QIC-02?).  */
-#define MT_ISTDC3610		0x06	/* Tandberg 6310, QIC-24.  */
-#define MT_ISARCHIVE_VP60I	0x07	/* Archive VP60i, QIC-02.  */
-#define MT_ISARCHIVE_2150L	0x08	/* Archive Viper 2150L.  */
-#define MT_ISARCHIVE_2060L	0x09	/* Archive Viper 2060L.  */
-#define MT_ISARCHIVESC499	0x0A	/* Archive SC-499 QIC-36 controller. */
-#define MT_ISQIC02_ALL_FEATURES	0x0F	/* Generic QIC-02 with all features. */
-#define MT_ISWT5099EEN24	0x11	/* Wangtek 5099-een24, 60MB, QIC-24. */
-#define MT_ISTEAC_MT2ST		0x12	/* Teac MT-2ST 155mb drive,
-					   Teac DC-1 card (Wangtek type).  */
-#define MT_ISEVEREX_FT40A	0x32	/* Everex FT40A (QIC-40).  */
-#define MT_ISDDS1		0x51	/* DDS device without partitions.  */
-#define MT_ISDDS2		0x52	/* DDS device with partitions.  */
-#define MT_ISSCSI1		0x71	/* Generic ANSI SCSI-1 tape unit.  */
-#define MT_ISSCSI2		0x72	/* Generic ANSI SCSI-2 tape unit.  */
-
-/* QIC-40/80/3010/3020 ftape supported drives.
-   20bit vendor ID + 0x800000 (see vendors.h in ftape distribution).  */
-#define MT_ISFTAPE_UNKNOWN	0x800000 /* obsolete */
-#define MT_ISFTAPE_FLAG		0x800000
-
-struct mt_tape_info
-  {
-    long int t_type;		/* Device type id (mt_type).  */
-    char *t_name;		/* Descriptive name.  */
-  };
-
-#define MT_TAPE_INFO \
-  {									      \
-	{MT_ISUNKNOWN,		"Unknown type of tape device"},		      \
-	{MT_ISQIC02,		"Generic QIC-02 tape streamer"},	      \
-	{MT_ISWT5150,		"Wangtek 5150, QIC-150"},		      \
-	{MT_ISARCHIVE_5945L2,	"Archive 5945L-2"},			      \
-	{MT_ISCMSJ500,		"CMS Jumbo 500"},			      \
-	{MT_ISTDC3610,		"Tandberg TDC 3610, QIC-24"},		      \
-	{MT_ISARCHIVE_VP60I,	"Archive VP60i, QIC-02"},		      \
-	{MT_ISARCHIVE_2150L,	"Archive Viper 2150L"},			      \
-	{MT_ISARCHIVE_2060L,	"Archive Viper 2060L"},			      \
-	{MT_ISARCHIVESC499,	"Archive SC-499 QIC-36 controller"},	      \
-	{MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"},	      \
-	{MT_ISWT5099EEN24,	"Wangtek 5099-een24, 60MB"},		      \
-	{MT_ISTEAC_MT2ST,	"Teac MT-2ST 155mb data cassette drive"},     \
-	{MT_ISEVEREX_FT40A,	"Everex FT40A, QIC-40"},		      \
-	{MT_ISSCSI1,		"Generic SCSI-1 tape"},			      \
-	{MT_ISSCSI2,		"Generic SCSI-2 tape"},			      \
-	{0, NULL}							      \
-  }
-
-
-/* Structure for MTIOCPOS - mag tape get position command.  */
-
-struct mtpos
-  {
-    long int mt_blkno;	/* Current block number.  */
-  };
-#define _IOT_mtpos /* Hurd ioctl type field.  */ \
-  _IOT_SIMPLE (long)
-
-
-/* Structure for MTIOCGETCONFIG/MTIOCSETCONFIG primarily intended
-   as an interim solution for QIC-02 until DDI is fully implemented.  */
-struct mtconfiginfo
-  {
-    long int mt_type;		/* Drive type.  */
-    long int ifc_type;		/* Interface card type.  */
-    unsigned short int irqnr;	/* IRQ number to use.  */
-    unsigned short int dmanr;	/* DMA channel to use.  */
-    unsigned short int port;	/* IO port base address.  */
-
-    unsigned long int debug;	/* Debugging flags.  */
-
-    unsigned have_dens:1;
-    unsigned have_bsf:1;
-    unsigned have_fsr:1;
-    unsigned have_bsr:1;
-    unsigned have_eod:1;
-    unsigned have_seek:1;
-    unsigned have_tell:1;
-    unsigned have_ras1:1;
-    unsigned have_ras2:1;
-    unsigned have_ras3:1;
-    unsigned have_qfa:1;
-
-    unsigned pad1:5;
-    char reserved[10];
-  };
-#define _IOT_mtconfiginfo /* Hurd ioctl type field.  */ \
-  _IOT (_IOTS (long), 2, _IOTS (short), 3, _IOTS (long), 1) /* XXX wrong */
-
-
-/* Magnetic tape I/O control commands.  */
-#define	MTIOCTOP	_IOW('m', 1, struct mtop)	/* Do a mag tape op. */
-#define	MTIOCGET	_IOR('m', 2, struct mtget)	/* Get tape status.  */
-#define	MTIOCPOS	_IOR('m', 3, struct mtpos)	/* Get tape position.*/
-
-/* The next two are used by the QIC-02 driver for runtime reconfiguration.
-   See tpqic02.h for struct mtconfiginfo.  */
-#define	MTIOCGETCONFIG	_IOR('m', 4, struct mtconfiginfo) /* Get tape config.*/
-#define	MTIOCSETCONFIG	_IOW('m', 5, struct mtconfiginfo) /* Set tape config.*/
-
-/* Generic Mag Tape (device independent) status macros for examining
-   mt_gstat -- HP-UX compatible.
-   There is room for more generic status bits here, but I don't
-   know which of them are reserved. At least three or so should
-   be added to make this really useful.  */
-#define GMT_EOF(x)              ((x) & 0x80000000)
-#define GMT_BOT(x)              ((x) & 0x40000000)
-#define GMT_EOT(x)              ((x) & 0x20000000)
-#define GMT_SM(x)               ((x) & 0x10000000)  /* DDS setmark */
-#define GMT_EOD(x)              ((x) & 0x08000000)  /* DDS EOD */
-#define GMT_WR_PROT(x)          ((x) & 0x04000000)
-/* #define GMT_ ? 		((x) & 0x02000000) */
-#define GMT_ONLINE(x)           ((x) & 0x01000000)
-#define GMT_D_6250(x)           ((x) & 0x00800000)
-#define GMT_D_1600(x)           ((x) & 0x00400000)
-#define GMT_D_800(x)            ((x) & 0x00200000)
-/* #define GMT_ ? 		((x) & 0x00100000) */
-/* #define GMT_ ? 		((x) & 0x00080000) */
-#define GMT_DR_OPEN(x)          ((x) & 0x00040000)  /* Door open (no tape).  */
-/* #define GMT_ ? 		((x) & 0x00020000) */
-#define GMT_IM_REP_EN(x)        ((x) & 0x00010000)  /* Immediate report mode.*/
-/* 16 generic status bits unused.  */
-
-
-/* SCSI-tape specific definitions.  Bitfield shifts in the status  */
-#define MT_ST_BLKSIZE_SHIFT	0
-#define MT_ST_BLKSIZE_MASK	0xffffff
-#define MT_ST_DENSITY_SHIFT	24
-#define MT_ST_DENSITY_MASK	0xff000000
-
-#define MT_ST_SOFTERR_SHIFT	0
-#define MT_ST_SOFTERR_MASK	0xffff
-
-/* Bitfields for the MTSETDRVBUFFER ioctl.  */
-#define MT_ST_OPTIONS		0xf0000000
-#define MT_ST_BOOLEANS		0x10000000
-#define MT_ST_SETBOOLEANS	0x30000000
-#define MT_ST_CLEARBOOLEANS	0x40000000
-#define MT_ST_WRITE_THRESHOLD	0x20000000
-#define MT_ST_DEF_BLKSIZE	0x50000000
-#define MT_ST_DEF_OPTIONS	0x60000000
-
-#define MT_ST_BUFFER_WRITES	0x1
-#define MT_ST_ASYNC_WRITES	0x2
-#define MT_ST_READ_AHEAD	0x4
-#define MT_ST_DEBUGGING		0x8
-#define MT_ST_TWO_FM		0x10
-#define MT_ST_FAST_MTEOM	0x20
-#define MT_ST_AUTO_LOCK		0x40
-#define MT_ST_DEF_WRITES	0x80
-#define MT_ST_CAN_BSR		0x100
-#define MT_ST_NO_BLKLIMS	0x200
-#define MT_ST_CAN_PARTITIONS    0x400
-#define MT_ST_SCSI2LOGICAL      0x800
-
-/* The mode parameters to be controlled. Parameter chosen with bits 20-28.  */
-#define MT_ST_CLEAR_DEFAULT	0xfffff
-#define MT_ST_DEF_DENSITY	(MT_ST_DEF_OPTIONS | 0x100000)
-#define MT_ST_DEF_COMPRESSION	(MT_ST_DEF_OPTIONS | 0x200000)
-#define MT_ST_DEF_DRVBUFFER	(MT_ST_DEF_OPTIONS | 0x300000)
-
-/* The offset for the arguments for the special HP changer load command.  */
-#define MT_ST_HPLOADER_OFFSET 10000
-
-
-/* Specify default tape device.  */
-#ifndef DEFTAPE
-# define DEFTAPE	"/dev/tape"
-#endif
-
-#endif /* mtio.h */
diff --git a/src/win32/compat/sys/socket.h b/src/win32/compat/sys/socket.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/sys/stat.h b/src/win32/compat/sys/stat.h
deleted file mode 100644
index 7273fef..0000000
--- a/src/win32/compat/sys/stat.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "compat.h"
diff --git a/src/win32/compat/sys/time.h b/src/win32/compat/sys/time.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/sys/wait.h b/src/win32/compat/sys/wait.h
deleted file mode 100644
index e69de29..0000000
diff --git a/src/win32/compat/syslog.h b/src/win32/compat/syslog.h
deleted file mode 100644
index 6e4cb32..0000000
--- a/src/win32/compat/syslog.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef _SYSLOG_H
-#define _SYSLOG_H
-
-#define LOG_DAEMON  0
-#define LOG_ERR     1
-#define LOG_CRIT    2
-#define LOG_ALERT   3
-#define LOG_WARNING 4
-#define LOG_NOTICE  5
-#define LOG_INFO    6
-#define LOG_LOCAL0  10
-#define LOG_LOCAL1  11
-#define LOG_LOCAL2  12
-#define LOG_LOCAL3  13
-#define LOG_LOCAL4  14
-#define LOG_LOCAL5  15
-#define LOG_LOCAL6  16
-#define LOG_LOCAL7  17
-#define LOG_LPR     20
-#define LOG_MAIL    21
-#define LOG_NEWS    22
-#define LOG_UUCP    23
-#define LOG_USER    24
-#define LOG_CONS    0
-#define LOG_PID     0
-
-
-extern "C" void syslog(int type, const char *fmt, ...);
-void openlog(const char *app, int, int);
-void closelog(void);
-
-#endif /* _SYSLOG_H */
diff --git a/src/win32/compat/unistd.h b/src/win32/compat/unistd.h
deleted file mode 100644
index beb9628..0000000
--- a/src/win32/compat/unistd.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#if defined(__GNUC__)
-#include_next<unistd.h>
-#endif
diff --git a/src/win32/compat/winapi.c b/src/win32/compat/winapi.c
deleted file mode 100644
index f664522..0000000
--- a/src/win32/compat/winapi.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2003-2008 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.
-*/
-/*
- * Windows APIs that are different for each system.
- *   We use pointers to the entry points so that a
- *   single binary will run on all Windows systems.
- *
- *     Kern Sibbald MMIII
- */
-
-#include "bacula.h"
-
-// init with win9x, but maybe set to NT in InitWinAPI
-DWORD g_platform_id = VER_PLATFORM_WIN32_WINDOWS;
-DWORD g_MinorVersion = 0;
-DWORD g_MajorVersion = 0;
-
-/* API Pointers */
-
-t_OpenProcessToken      p_OpenProcessToken = NULL;
-t_AdjustTokenPrivileges p_AdjustTokenPrivileges = NULL;
-t_LookupPrivilegeValue  p_LookupPrivilegeValue = NULL;
-
-t_SetProcessShutdownParameters p_SetProcessShutdownParameters = NULL;
-
-t_CreateFileA           p_CreateFileA = NULL;
-t_CreateFileW           p_CreateFileW = NULL;
-t_CreateDirectoryA      p_CreateDirectoryA;
-t_CreateDirectoryW      p_CreateDirectoryW;
-
-t_wunlink               p_wunlink = NULL;
-t_wmkdir                p_wmkdir = NULL;
-
-t_GetFileAttributesA    p_GetFileAttributesA = NULL;
-t_GetFileAttributesW    p_GetFileAttributesW = NULL;
-
-t_GetFileAttributesExA  p_GetFileAttributesExA = NULL;
-t_GetFileAttributesExW  p_GetFileAttributesExW = NULL;
-
-t_SetFileAttributesA    p_SetFileAttributesA = NULL;
-t_SetFileAttributesW    p_SetFileAttributesW = NULL;
-t_BackupRead            p_BackupRead = NULL;
-t_BackupWrite           p_BackupWrite = NULL;
-t_WideCharToMultiByte   p_WideCharToMultiByte = NULL;
-t_MultiByteToWideChar   p_MultiByteToWideChar = NULL;
-
-t_AttachConsole         p_AttachConsole = NULL;
-
-t_FindFirstFileA        p_FindFirstFileA = NULL;
-t_FindFirstFileW        p_FindFirstFileW = NULL;
-
-t_FindNextFileA         p_FindNextFileA = NULL;
-t_FindNextFileW         p_FindNextFileW = NULL;
-
-t_SetCurrentDirectoryA  p_SetCurrentDirectoryA = NULL;
-t_SetCurrentDirectoryW  p_SetCurrentDirectoryW = NULL;
-
-t_GetCurrentDirectoryA  p_GetCurrentDirectoryA = NULL;
-t_GetCurrentDirectoryW  p_GetCurrentDirectoryW = NULL;
-
-t_GetVolumePathNameW    p_GetVolumePathNameW = NULL;
-t_GetVolumeNameForVolumeMountPointW p_GetVolumeNameForVolumeMountPointW = NULL;
-
-t_SHGetFolderPath       p_SHGetFolderPath = NULL;
-
-t_CreateProcessA        p_CreateProcessA = NULL;
-t_CreateProcessW        p_CreateProcessW = NULL;
-
-void 
-InitWinAPIWrapper() 
-{
-   OSVERSIONINFO osversioninfo = { sizeof(OSVERSIONINFO) };
-
-   // Get the current OS version
-   if (!GetVersionEx(&osversioninfo)) {
-      g_platform_id = 0;
-   } else {
-      g_platform_id = osversioninfo.dwPlatformId;
-      g_MinorVersion = osversioninfo.dwMinorVersion;
-      g_MajorVersion = osversioninfo.dwMajorVersion;
-   }
-
-   HMODULE hLib = LoadLibraryA("KERNEL32.DLL");
-   if (hLib) {
-      /* create process calls */
-      p_CreateProcessA = (t_CreateProcessA)
-         GetProcAddress(hLib, "CreateProcessA");
-      p_CreateProcessW = (t_CreateProcessW)
-         GetProcAddress(hLib, "CreateProcessW");
-
-      /* create file calls */
-      p_CreateFileA = (t_CreateFileA)GetProcAddress(hLib, "CreateFileA");
-      p_CreateDirectoryA = (t_CreateDirectoryA)GetProcAddress(hLib, "CreateDirectoryA");
-
-      /* attribute calls */
-      p_GetFileAttributesA = (t_GetFileAttributesA)GetProcAddress(hLib, "GetFileAttributesA");
-      p_GetFileAttributesExA = (t_GetFileAttributesExA)GetProcAddress(hLib, "GetFileAttributesExA");
-      p_SetFileAttributesA = (t_SetFileAttributesA)GetProcAddress(hLib, "SetFileAttributesA");
-
-      /* process calls */
-      p_SetProcessShutdownParameters = (t_SetProcessShutdownParameters)
-          GetProcAddress(hLib, "SetProcessShutdownParameters");
-
-      /* char conversion calls */
-      p_WideCharToMultiByte = (t_WideCharToMultiByte)
-          GetProcAddress(hLib, "WideCharToMultiByte");
-      p_MultiByteToWideChar = (t_MultiByteToWideChar)
-          GetProcAddress(hLib, "MultiByteToWideChar");
-
-      /* find files */
-      p_FindFirstFileA = (t_FindFirstFileA)GetProcAddress(hLib, "FindFirstFileA"); 
-      p_FindNextFileA = (t_FindNextFileA)GetProcAddress(hLib, "FindNextFileA");
-
-      /* get and set directory */
-      p_GetCurrentDirectoryA = (t_GetCurrentDirectoryA)
-          GetProcAddress(hLib, "GetCurrentDirectoryA");
-      p_SetCurrentDirectoryA = (t_SetCurrentDirectoryA)
-          GetProcAddress(hLib, "SetCurrentDirectoryA");
-
-      if (g_platform_id != VER_PLATFORM_WIN32_WINDOWS) {
-         p_CreateFileW = (t_CreateFileW)
-             GetProcAddress(hLib, "CreateFileW");
-         p_CreateDirectoryW = (t_CreateDirectoryW)
-             GetProcAddress(hLib, "CreateDirectoryW");
-
-         /* backup calls */
-         p_BackupRead = (t_BackupRead)GetProcAddress(hLib, "BackupRead");
-         p_BackupWrite = (t_BackupWrite)GetProcAddress(hLib, "BackupWrite");
-
-         p_GetFileAttributesW = (t_GetFileAttributesW)
-             GetProcAddress(hLib, "GetFileAttributesW");
-         p_GetFileAttributesExW = (t_GetFileAttributesExW)
-             GetProcAddress(hLib, "GetFileAttributesExW");
-         p_SetFileAttributesW = (t_SetFileAttributesW)
-             GetProcAddress(hLib, "SetFileAttributesW");
-         p_FindFirstFileW = (t_FindFirstFileW)
-             GetProcAddress(hLib, "FindFirstFileW");
-         p_FindNextFileW = (t_FindNextFileW)
-             GetProcAddress(hLib, "FindNextFileW");
-         p_GetCurrentDirectoryW = (t_GetCurrentDirectoryW)
-             GetProcAddress(hLib, "GetCurrentDirectoryW");
-         p_SetCurrentDirectoryW = (t_SetCurrentDirectoryW)
-             GetProcAddress(hLib, "SetCurrentDirectoryW");
-
-         /* some special stuff we need for VSS
-            but static linkage doesn't work on Win 9x */
-         p_GetVolumePathNameW = (t_GetVolumePathNameW)
-             GetProcAddress(hLib, "GetVolumePathNameW");
-         p_GetVolumeNameForVolumeMountPointW = (t_GetVolumeNameForVolumeMountPointW)
-             GetProcAddress(hLib, "GetVolumeNameForVolumeMountPointW");
-
-         p_AttachConsole = (t_AttachConsole)
-             GetProcAddress(hLib, "AttachConsole");
-      }
-   }
-   
-   if (g_platform_id != VER_PLATFORM_WIN32_WINDOWS) {
-      hLib = LoadLibraryA("MSVCRT.DLL");
-      if (hLib) {
-         /* unlink */
-         p_wunlink = (t_wunlink)
-         GetProcAddress(hLib, "_wunlink");
-         /* wmkdir */
-         p_wmkdir = (t_wmkdir)
-         GetProcAddress(hLib, "_wmkdir");
-      }
-
-      hLib = LoadLibraryA("ADVAPI32.DLL");
-      if (hLib) {
-         p_OpenProcessToken = (t_OpenProcessToken)
-            GetProcAddress(hLib, "OpenProcessToken");
-         p_AdjustTokenPrivileges = (t_AdjustTokenPrivileges)
-            GetProcAddress(hLib, "AdjustTokenPrivileges");
-         p_LookupPrivilegeValue = (t_LookupPrivilegeValue)
-            GetProcAddress(hLib, "LookupPrivilegeValueA");
-      }
-   }
-
-   hLib = LoadLibraryA("SHELL32.DLL");
-   if (hLib) {
-      p_SHGetFolderPath = (t_SHGetFolderPath)
-         GetProcAddress(hLib, "SHGetFolderPathA");
-   } else {
-      /* If SHELL32 isn't found try SHFOLDER for older systems */
-      hLib = LoadLibraryA("SHFOLDER.DLL");
-      if (hLib) {
-         p_SHGetFolderPath = (t_SHGetFolderPath)
-            GetProcAddress(hLib, "SHGetFolderPathA");
-      }
-   }
-   atexit(Win32ConvCleanupCache);
-}
diff --git a/src/win32/compat/winhost.h b/src/win32/compat/winhost.h
deleted file mode 100644
index 9ca2ca2..0000000
--- a/src/win32/compat/winhost.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2000-2008 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.
-*/
-
-/*
- * Define Host machine
- */
-
-
-#include "host.h"
-#undef HOST_OS
-#undef DISTNAME
-#undef DISTVER
-
-#ifdef HAVE_MINGW
-extern char win_os[];
-#define HOST_OS  "Linux"
-#define DISTNAME "Cross-compile"
-#ifndef BACULA
-#define BACULA "Bacula"
-#endif
-#ifdef _WIN64
-# define DISTVER "Win64"
-#else
-# define DISTVER "Win32"
-#endif
-
-#else
-
-extern DLL_IMP_EXP char WIN_VERSION_LONG[];
-extern DLL_IMP_EXP char WIN_VERSION[];
-
-#define HOST_OS  WIN_VERSION_LONG
-#define DISTNAME "MVS"
-#define DISTVER  WIN_VERSION
-
-#endif
diff --git a/src/win32/compat/winsock.h b/src/win32/compat/winsock.h
deleted file mode 100644
index 8cb0067..0000000
--- a/src/win32/compat/winsock.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#include <winsock2.h>
-#ifdef HAVE_IPV6
-#include <ws2tcpip.h>
-#endif
diff --git a/src/win32/console/Makefile b/src/win32/console/Makefile
deleted file mode 100644
index 4dc0e2e..0000000
--- a/src/win32/console/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-include ../Makefile.inc
-
-INCLUDES = \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_OPENSSL)
-
-DEFINES = \
-	-DUSING_DLL \
-	$(HAVES)
-
-vpath %.c $(MAINDIR)/src/console
-vpath %.cpp $(MAINDIR)/src/console
-
-##########################################################################
-
-CONSOLE_OBJS = \
-	$(OBJDIR)/authenticate.o \
-	$(OBJDIR)/console.o \
-	$(OBJDIR)/console_conf.o
-
-ALL_OBJS = $(CONSOLE_OBJS)
-
-CONSOLE_LIBS = $(LIBS_NETWORK) 
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all: $(BINDIR)/bconsole.exe
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(call clean_obj,$(ALL_OBJS))
-	$(call clean_exe,$(BINDIR)/bconsole.exe)
-	$(ECHO_CMD)rm -rf $(OBJDIRS)
-
-#
-# Rules
-#
-
-$(BINDIR)/bconsole.exe: $(CONSOLE_OBJS) $(LIBS_BACULA)
-	$(call link_conapp,$(CONSOLE_LIBS))
-
-include ../Makefile.rules
diff --git a/src/win32/console/console.vcproj b/src/win32/console/console.vcproj
deleted file mode 100644
index 57bbea9..0000000
--- a/src/win32/console/console.vcproj
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="console"
-	ProjectGUID="{A0F65E06-9F18-40AC-81F6-A080852F1104}"
-	RootNamespace="console"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Debug/console.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../compat;../../../../depkgs-msvc/include;../.."
-				PreprocessorDefinitions="_DEBUG;HAVE_CONSOLE;_WINMAIN_;PTW32_BUILD;WIN32;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atlsd.lib"
-				OutputFile="$(OutDir)\bconsole.exe"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug/console.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Release/console.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../compat;../../../../depkgs-msvc/include;../.."
-				PreprocessorDefinitions="NDEBUG;HAVE_CONSOLE;_WINMAIN_;PTW32_BUILD;WIN32;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atls.lib"
-				OutputFile="$(OutDir)\bconsole.exe"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release/console.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\console\authenticate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\console\console.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\console\console_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/cygwin.NET.bashrc b/src/win32/cygwin.NET.bashrc
deleted file mode 100644
index 07f4c63..0000000
--- a/src/win32/cygwin.NET.bashrc
+++ /dev/null
@@ -1,63 +0,0 @@
-export ALLUSERSPROFILE='C:\Documents and Settings\All Users'
-export APPDATA='C:\Documents and Settings\Rick\Application Data'
-export BASEMAKE='C:\Program Files\Microsoft SDK\Include\BKOffice.Mak'
-export BASH=/usr/bin/bash
-export BKOFFICE='C:\Program Files\Microsoft SDK\.'
-export CLIENTNAME=Console
-export COLORFGBG='0;default;15'
-export COLORTERM=rxvt-xpm
-export COLUMNS=70
-export COMMONPROGRAMFILES='C:\Program Files\Common Files'
-export COMPUTERNAME=RICK_LPATOP
-export COMSPEC='C:\WINDOWS\system32\cmd.exe'
-export CYGWIN=notty
-export DIRSTACK=()
-export DISPLAY=:0
-export GROUPS=()
-export HISTFILE=/cygdrive/c/home/Rick/.bash_history
-export HISTFILESIZE=500
-export HISTSIZE=500
-export HOME=/cygdrive/c/home/Rick
-export HOMEDRIVE=C:
-export HOMEPATH='\Documents and Settings\Rick'
-export HOSTNAME=RICK-LPATOP
-export HOSTTYPE=i686
-export IFS=$' \t\n'
-export INCLUDE='C:\Program Files\Microsoft SDK\Include\.;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\atlmfc\include;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\include'
-export INETSDK='C:\Program Files\Microsoft SDK\.'
-export LIB='C:\Program Files\Microsoft SDK\Lib\.;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\atlmfc\lib;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\lib'
-export LINES=65
-export LOGONSERVER='\\RICK-LPATOP'
-export MACHTYPE=i686-pc-cygwin
-export MAILCHECK=60
-export MAKE_MODE=UNIX
-export MSSDK='C:\Program Files\Microsoft SDK\.'
-export MSTOOLS='C:\Program Files\Microsoft SDK\.'
-export NUMBER_OF_PROCESSORS=1
-export OLDPWD=/home/Rick/bacula
-export OPTERR=1
-export OPTIND=1
-export OS=Windows_NT
-export OSTYPE=cygwin
-export PATH='/cygdrive/c/Program Files/Microsoft Visual Studio .NET 2003/VC7/Bin:/cygdrive/c/Program Files/Microsoft Visual Studio .NET 2003/VC7:/cygdrive/c/Program Files/Microsoft Visual Studio .NET 2003/Common/Tools/Bin:/cygdrive/c/Program Files/Microsoft Visual Studio .NET 2003/Common/Tools:/cygdrive/c/Program Files/Microsoft Visual Studio .NET 2003/Common7/IDE:c:/cygwin/bin:/usr/bin:/home/sbarn/bin:/sbin:/usr/sbin:'
-export PATHEXT='.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH'
-export PROCESSOR_ARCHITECTURE=x86
-export PROCESSOR_IDENTIFIER='x86 Family 6 Model 8 Stepping 10, GenuineIntel'
-export PROGRAMFILES='C:\Program Files'
-export PROMPT='$P$G'
-export PWD=/home/Rick
-export SESSIONNAME=Console
-export SHELL=/usr/bin/bash
-export SHLVL=1
-export SYSTEMDRIVE=C:
-export SYSTEMROOT='C:\WINDOWS'
-export TEMP=/cygdrive/c/DOCUME~1/Rick/LOCALS~1/Temp
-export TERM=xterm
-export TMP=/cygdrive/c/DOCUME~1/Rick/LOCALS~1/Temp
-export USERDOMAIN=RICK-LPATOP
-export USERNAME=rick
-export USERPROFILE='C:\Documents and Settings\Rick'
-export WINDIR='C:\WINDOWS'
-export WINDOWID=168050736
-export WXWIN='c:\cygwin\home\Rick\bacula\depkgs-win32\wx'
-
diff --git a/src/win32/dird/Makefile b/src/win32/dird/Makefile
deleted file mode 100644
index de32b1d..0000000
--- a/src/win32/dird/Makefile
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-include ../Makefile.inc
-
-INCLUDES = \
-	-I. \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_ZLIB) \
-	$(INCLUDE_OPENSSL) \
-	$(INCLUDE_ICONS)
-
-DEFINES = \
-	-DUSING_DLL \
-	-DUSING_CATS \
-	-DWINVER=0x500 \
-	$(HAVES)
-
-vpath %.c $(MAINDIR)/src/dird $(BUILDDIR)/libwin32
-vpath %.cpp $(MAINDIR)/src/dird $(BUILDDIR)/libwin32
-
-##########################################################################
-
-DIRD_OBJS = \
-	$(OBJDIR)/admin.o \
-	$(OBJDIR)/authenticate.o \
-	$(OBJDIR)/autoprune.o \
-	$(OBJDIR)/backup.o \
-	$(OBJDIR)/bsr.o \
-	$(OBJDIR)/catreq.o \
-	$(OBJDIR)/dir_plugins.o \
-	$(OBJDIR)/dird.o \
-	$(OBJDIR)/dird_conf.o \
-	$(OBJDIR)/expand.o \
-	$(OBJDIR)/fd_cmds.o \
-	$(OBJDIR)/getmsg.o \
-	$(OBJDIR)/inc_conf.o \
-	$(OBJDIR)/job.o \
-	$(OBJDIR)/jobq.o \
-	$(OBJDIR)/migrate.o \
-	$(OBJDIR)/mountreq.o \
-	$(OBJDIR)/msgchan.o \
-	$(OBJDIR)/newvol.o \
-	$(OBJDIR)/next_vol.o \
-	$(OBJDIR)/pythondir.o \
-	$(OBJDIR)/recycle.o \
-	$(OBJDIR)/restore.o \
-	$(OBJDIR)/run_conf.o \
-	$(OBJDIR)/scheduler.o \
-	$(OBJDIR)/ua_acl.o \
-	$(OBJDIR)/ua_cmds.o \
-	$(OBJDIR)/ua_dotcmds.o \
-	$(OBJDIR)/ua_input.o \
-	$(OBJDIR)/ua_label.o \
-	$(OBJDIR)/ua_output.o \
-	$(OBJDIR)/ua_prune.o \
-	$(OBJDIR)/ua_purge.o \
-	$(OBJDIR)/ua_query.o \
-	$(OBJDIR)/ua_restore.o \
-	$(OBJDIR)/ua_run.o \
-	$(OBJDIR)/ua_select.o \
-	$(OBJDIR)/ua_server.o \
-	$(OBJDIR)/ua_status.o \
-	$(OBJDIR)/ua_tree.o \
-	$(OBJDIR)/ua_update.o \
-	$(OBJDIR)/vbackup.o \
-	$(OBJDIR)/verify.o \
-	$(OBJDIR)/service.o \
-	$(OBJDIR)/main.o \
-	$(OBJDIR)/bacula.res
-
-ALL_OBJS = $(DIRD_OBJS)
-
-
-DIRD_LIBS = \
-	$(LIBS_PTHREADS) \
-	$(LIBS_NETWORK) \
-	-lole32 \
-	-loleaut32 \
-	-luuid \
-	-lcomctl32
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all: $(BINDIR)/bacula-dir.exe
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(call clean_obj,$(ALL_OBJS))
-	$(call clean_exe,$(BINDIR)/bacula-dir.exe)
-	$(ECHO_CMD)rm -rf $(OBJDIRS)
-
-#
-# Rules
-#
-
-$(BINDIR)/bacula-dir.exe: $(DIRD_OBJS) $(LIBS_CATS) $(LIBS_BACULA)
-	$(call link_winapp,$(DIRD_LIBS))
-
-$(OBJDIR)/winres.res: winres.rc
-	$(WINDRES) $(INCLUDE_ICONS) -O coff $< -o $@
-
-include ../Makefile.rules
diff --git a/src/win32/dird/bacula.rc b/src/win32/dird/bacula.rc
deleted file mode 100644
index 92b889c..0000000
--- a/src/win32/dird/bacula.rc
+++ /dev/null
@@ -1 +0,0 @@
-#include "../libwin32/bacula.rc"
diff --git a/src/win32/dird/dird.vcproj b/src/win32/dird/dird.vcproj
deleted file mode 100644
index 4a11e26..0000000
--- a/src/win32/dird/dird.vcproj
+++ /dev/null
@@ -1,1118 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="baculadird"
-	ProjectGUID="{D03415F7-654E-42F4-B0E9-CB8FBE3F22FA}"
-	RootNamespace="baculadird"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Debug/baculadird.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../compat;"../../../../depkgs-msvc/include";../.."
-				PreprocessorDefinitions="_DEBUG;_WINMAIN_;PTW32_BUILD;WIN32;_CONSOLE;HAVE_WIN32;USING_DLL;USING_CATS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-				AdditionalIncludeDirectories="../libwin32"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="bacula_cats.lib pthreadVCE.lib zlib.lib wsock32.lib atlsd.lib"
-				OutputFile="$(OutDir)\bacula-dir.exe"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories=""../../../../depkgs-msvc/lib";"$(SolutionDir)$(ConfigurationName)""
-				IgnoreDefaultLibraryNames="msvcrt"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug/baculadird.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			UseOfATL="1"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Release/baculadird.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../compat;"../../../../depkgs-msvc/include";../.."
-				PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;HAVE_WIN32;USING_DLL;USING_CATS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-				AdditionalIncludeDirectories="../libwin32"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="bacula_cats.lib pthreadVCE.lib libmysql.lib zlib.lib wsock32.lib atls.lib"
-				OutputFile="$(OutDir)\bacula-dir.exe"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories=""../../../../depkgs-msvc/lib";"$(SolutionDir)$(ConfigurationName)""
-				IgnoreDefaultLibraryNames=""
-				DelayLoadDLLs="$(NOINHERIT)"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release/baculadird.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\dird\admin.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\authenticate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\autoprune.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\backup.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\bsr.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\catreq.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\dird.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\dird_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\expand.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\fd_cmds.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\getmsg.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\inc_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\job.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\jobq.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\migrate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\mountreq.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\msgchan.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\newvol.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\next_vol.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\pythondir.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\recycle.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\restore.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\run_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\scheduler.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_acl.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_cmds.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_dotcmds.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_input.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_label.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_output.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_prune.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_purge.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_query.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_restore.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_run.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_select.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_server.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_status.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_tree.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua_update.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\dird\verify.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\winmain.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\winservice.cpp"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\dird\bsr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\dird\dird.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\dird\dird_conf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\dird\jobq.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\dird\protos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\dird\ua.h"
-				>
-			</File>
-			<File
-				RelativePath=".\winbacula.h"
-				>
-			</File>
-			<File
-				RelativePath=".\winservice.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\libwin32\bacula.bmp"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\bacula.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\winres.rc"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/dird/main.cpp b/src/win32/dird/main.cpp
deleted file mode 100644
index a39c61b..0000000
--- a/src/win32/dird/main.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- */
-
-#include "who.h"
-#include "../libwin32/main.cpp"
diff --git a/src/win32/dird/service.cpp b/src/win32/dird/service.cpp
deleted file mode 100644
index e108c65..0000000
--- a/src/win32/dird/service.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- */
-
-#include "who.h"
-#include "../libwin32/service.cpp"
diff --git a/src/win32/dird/who.h b/src/win32/dird/who.h
deleted file mode 100644
index b5da126..0000000
--- a/src/win32/dird/who.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- * This file is pulled in by certain generic routines in libwin32
- *   to define the names of the daemon that is being built.
- */
-
-#define APP_NAME "Bacula-dir"
-#define LC_APP_NAME "bacula-dir"
-#define APP_DESC "Bacula Director Service"
-
-#define terminate_app(x) terminate_dird(x)
-extern void terminate_dird(int sig);
-
-#define VSSInit()
diff --git a/src/win32/filed/Makefile b/src/win32/filed/Makefile
deleted file mode 100644
index 2862fc8..0000000
--- a/src/win32/filed/Makefile
+++ /dev/null
@@ -1,105 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-#
-# Change the following depending on where this directory is located
-#  in the Bacula tree.	It should point to the src/win32 directory.
-BUILDDIR = ..
-
-
-include $(BUILDDIR)/Makefile.inc
-
-INCLUDES = \
-	-I. \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_ZLIB) \
-	$(INCLUDE_VSS) \
-	$(INCLUDE_OPENSSL) \
-	$(INCLUDE_ICONS)
-
-DEFINES = \
-	-DUSING_DLL \
-	-DWIN32_VSS \
-	-DWINVER=0x500 \
-	$(HAVES)
-
-#	-DHAVE_TRAY_MONITOR \
-
-
-vpath %.c $(MAINDIR)/src/filed $(BUILDDIR)/libwin32
-vpath %.cpp $(MAINDIR)/src/filed $(BUILDDIR)/libwin32
-
-##########################################################################
-
-FILED_OBJS = \
-	$(OBJDIR)/accurate.o \
-	$(OBJDIR)/acl.o \
-	$(OBJDIR)/authenticate.o \
-	$(OBJDIR)/backup.o \
-	$(OBJDIR)/estimate.o \
-	$(OBJDIR)/fd_plugins.o \
-	$(OBJDIR)/filed.o \
-	$(OBJDIR)/filed_conf.o \
-	$(OBJDIR)/heartbeat.o \
-	$(OBJDIR)/job.o \
-	$(OBJDIR)/restore.o \
-	$(OBJDIR)/status.o \
-	$(OBJDIR)/verify.o \
-	$(OBJDIR)/verify_vol.o \
-	$(OBJDIR)/vss.o \
-	$(OBJDIR)/vss_XP.o \
-	$(OBJDIR)/vss_W2K3.o \
-	$(OBJDIR)/vss_Vista.o \
-	$(OBJDIR)/service.o \
-	$(OBJDIR)/xattr.o \
-	$(OBJDIR)/main.o \
-	$(OBJDIR)/bacula.res
-
-#	$(OBJDIR)/trayMonitor.o \
-#	$(OBJDIR)/aboutDialog.o \
-#	$(OBJDIR)/statusDialog.o \
-
-
-ALL_OBJS = $(FILED_OBJS)
-
-FILED_LIBS = \
-	$(LIBS_PTHREADS) \
-	$(LIBS_ZLIB) \
-	$(LIBS_NETWORK) \
-	-lole32 \
-	-loleaut32 \
-	-luuid \
-	-lcomctl32
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all: $(BINDIR)/bacula-fd.exe
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(call clean_obj,$(ALL_OBJS))
-	$(call clean_exe,$(BINDIR)/bacula-fd.exe)
-	$(ECHO_CMD)rm -rf $(OBJDIRS)
-
-#
-# Rules
-#
-
-$(BINDIR)/bacula-fd.exe: $(FILED_OBJS) $(LIBS_BACULA)
-	$(call link_winapp,$(FILED_LIBS))
-
-$(OBJDIR)/winres.res: $(BUILDDIR)/libwin32/winres.rc
-	@echo "Compiling $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(WINDRES) $(INCLUDE_ICONS) -O coff $< -o $@
-
-include $(BUILDDIR)/Makefile.rules
diff --git a/src/win32/filed/bacula-fd.manifest b/src/win32/filed/bacula-fd.manifest
deleted file mode 100644
index bf1c674..0000000
--- a/src/win32/filed/bacula-fd.manifest
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
-  <assemblyIdentity 
-    version="1.0.0.0" 
-    processorArchitecture="X86" 
-    name="Bacula.Bacula-fd" 
-    type="win32" /> 
-  <description>Bacula File daemon for Win32</description> 
-  <dependency> 
-    <dependentAssembly> 
-      <assemblyIdentity 
-        type="win32" 
-        name="Microsoft.Windows.Common-Controls" 
-        version="6.0.0.0" 
-        processorArchitecture="X86" 
-        publicKeyToken="6595b64144ccf1df" 
-        language="*" /> 
-    </dependentAssembly> 
-  </dependency> 
-</assembly> 
-
diff --git a/src/win32/filed/bacula.rc b/src/win32/filed/bacula.rc
deleted file mode 100644
index 92b889c..0000000
--- a/src/win32/filed/bacula.rc
+++ /dev/null
@@ -1 +0,0 @@
-#include "../libwin32/bacula.rc"
diff --git a/src/win32/filed/baculafd.vcproj b/src/win32/filed/baculafd.vcproj
deleted file mode 100644
index 3a0aeca..0000000
--- a/src/win32/filed/baculafd.vcproj
+++ /dev/null
@@ -1,610 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="baculafd"
-	ProjectGUID="{6A435DBB-4D3D-4DAE-8CB3-E0AF169A240B}"
-	RootNamespace="baculafd"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Debug/baculafd.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=".;../compat;../../../../depkgs-msvc/include;../..;../../../../depkgs-msvc/vss;../libwin32"
-				PreprocessorDefinitions="_DEBUG;_WINMAIN_;PTW32_BUILD;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;WIN32_VSS;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE;__need_getopt"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVCE.lib zlib.lib comctl32.lib wsock32.lib atlsd.lib"
-				OutputFile="$(OutDir)\bacula-fd.exe"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../depkgs-msvc/lib"
-				IgnoreDefaultLibraryNames="msvcrt"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug/baculafd.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			UseOfATL="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Release/baculafd.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories=".;../compat;../../../../depkgs-msvc/include;../..;../../../../depkgs-msvc/vss;../libwin32"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;WIN32_VSS;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-				AdditionalIncludeDirectories=""
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVCE.lib zlib.lib wsock32.lib comctl32.lib atls.lib"
-				OutputFile="$(OutDir)\bacula-fd.exe"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../depkgs-msvc/lib"
-				DelayLoadDLLs="$(NOINHERIT)"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release/baculafd.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\filed\acl.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\authenticate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\backup.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\estimate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\filed.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\filed_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\heartbeat.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\job.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\pythonfd.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\restore.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\status.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\verify.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\filed\verify_vol.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\vss.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\vss_W2K3.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\vss_XP.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\winabout.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\winmain.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\winservice.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\winstat.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\wintray.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\filed\acl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\filed\filed.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\filed\filed_conf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\filed\protos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\resource.h"
-				>
-			</File>
-			<File
-				RelativePath=".\vss.h"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\winabout.h"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\winbacula.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\winconfig.h"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\winres.h"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\winservice.h"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\winstat.h"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\wintray.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\bacula-fd.manifest"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\bacula.bmp"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\bacula.ico"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\error.ico"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\idle.ico"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\running.ico"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\saving.ico"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\warn.ico"
-				>
-			</File>
-			<File
-				RelativePath="..\libwin32\winres.rc"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/filed/main.cpp b/src/win32/filed/main.cpp
deleted file mode 100644
index a39c61b..0000000
--- a/src/win32/filed/main.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- */
-
-#include "who.h"
-#include "../libwin32/main.cpp"
diff --git a/src/win32/filed/plugins/Makefile b/src/win32/filed/plugins/Makefile
deleted file mode 100644
index 4580592..0000000
--- a/src/win32/filed/plugins/Makefile
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by James Harper, October 2008
-#     Patterned after a Makefile by Robert Nelson, June 2006
-#
-
-#
-# Change the following depending on where this directory is located
-#  in the Bacula tree.	It should point to the src/win32 directory.
-BUILDDIR = ../..
-
-include $(BUILDDIR)/Makefile.inc
-
-INCLUDES = \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_ZLIB) \
-	$(INCLUDE_OPENSSL) \
-	$(INCLUDE_VSS) \
-	-I$(MAINDIR)/src \
-	-I$(MAINDIR)/src/filed \
-	-I$(MAINDIR)/src/win32/filed
-
-DEFINES = \
-	$(HAVES)
-
-#vpath %.c $(BUILDDIR)/compat $(MAINDIR)/src/findlib $(MAINDIR)/src/lib
-#vpath %.cpp $(BUILDDIR)/compat $(MAINDIR)/src/findlib $(MAINDIR)/src/lib
-
-######################################################################
-
-# Files files in src/win32/filed/plugins
-
-EXCHANGE_OBJS = \
-	$(OBJDIR)/exchange-fd.o \
-	$(OBJDIR)/api.o \
-	$(OBJDIR)/node.o \
-	$(OBJDIR)/root_node.o \
-	$(OBJDIR)/service_node.o \
-	$(OBJDIR)/storage_group_node.o \
-	$(OBJDIR)/store_node.o \
-	$(OBJDIR)/dbi_node.o \
-	$(OBJDIR)/file_node.o
-
-BPIPE_OBJS = \
-	$(OBJDIR)/bpipe-fd.o
-
-LIBS_DLL = \
-	$(LIBS_SSL) \
-	$(LIBS_CRYPTO) \
-	$(LIBS_PTHREADS) \
-	$(LIBS_ZLIB) \
-	$(LIBS_NETWORK) \
-	-lole32 \
-	-loleaut32 \
-	-luuid
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all: $(BINDIR)/exchange-fd.dll $(BINDIR)/bpipe-fd.dll
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(call clean_obj,$(EXCHANGE_OBJS))
-	$(call clean_exe,$(BINDIR)/exchange-fd.dll)
-	$(ECHO_CMD)rm -f $(OBJDIR)/exchange-fd.a $(LIBDIR)/libexchange-fd.a
-	$(ECHO_CMD)rm -rf $(OBJDIRS)
-
-#
-# Rules for generating from ../lib
-#
-
-#$(LIBDIR)/libexchange-fd.a: DLL_DEFINE=USING_DLL
-
-#$(LIBDIR)/libexchange-fd.a: $(BINDIR)/exchange-fd.dll $(STATIC_OBJS)
-#	@echo "Updating archive $@"
-#	$(call checkdir,$@)
-#	$(ECHO_CMD)cp $(OBJDIR)/exchange-fd.a $@
-#	$(ECHO_CMD)$(AR) rsv $@ $(filter %.o,$^)
-
-$(BINDIR)/exchange-fd.dll: DLL_DEFINE=BUILDING_DLL
-
-$(BINDIR)/exchange-fd.dll: $(EXCHANGE_OBJS) exchange-fd.def
-	@echo "Linking $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) $(LDFLAGS) -mdll -mwindows -Wl,--out-implib,$(OBJDIR)/exchange-fd.a $^ $(LIBS_DLL) -o $@
-
-$(BINDIR)/bpipe-fd.dll: DLL_DEFINE=BUILDING_DLL
-
-$(BINDIR)/bpipe-fd.dll: $(BPIPE_OBJS) bpipe-fd.def $(LIBS_BACULA)
-	@echo "Linking $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) $(CFLAGS) $(LDFLAGS) -mdll -mwindows -Wl,--out-implib,$(OBJDIR)/bpipe-fd.a $^ $(LIBS_DLL) -o $@
-
-
-include $(BUILDDIR)/Makefile.rules
-
-$(OBJDIR)/%.o: %.c
-	@echo "Compiling $<"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) -D$(DLL_DEFINE) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/%.o: %.cpp
-	@echo "Compiling $<"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) -D$(DLL_DEFINE) $(CFLAGS) -c $< -o $@
diff --git a/src/win32/filed/plugins/api.c b/src/win32/filed/plugins/api.c
deleted file mode 100644
index 1e65e5a..0000000
--- a/src/win32/filed/plugins/api.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#include "exchange-fd.h"
-
-HrESEBackupRestoreGetNodes_t HrESEBackupRestoreGetNodes;
-HrESEBackupPrepare_t HrESEBackupPrepare;
-HrESEBackupGetLogAndPatchFiles_t HrESEBackupGetLogAndPatchFiles;
-HrESEBackupTruncateLogs_t HrESEBackupTruncateLogs;
-HrESEBackupEnd_t HrESEBackupEnd;
-HrESEBackupSetup_t HrESEBackupSetup;
-HrESEBackupInstanceEnd_t HrESEBackupInstanceEnd;
-HrESEBackupOpenFile_t HrESEBackupOpenFile;
-HrESEBackupReadFile_t HrESEBackupReadFile;
-HrESEBackupCloseFile_t HrESEBackupCloseFile;
-
-HrESERestoreOpen_t HrESERestoreOpen;
-HrESERestoreReopen_t HrESERestoreReopen;
-HrESERestoreComplete_t HrESERestoreComplete;
-HrESERestoreClose_t HrESERestoreClose;
-HrESERestoreGetEnvironment_t HrESERestoreGetEnvironment;
-HrESERestoreSaveEnvironment_t HrESERestoreSaveEnvironment;
-HrESERestoreAddDatabase_t HrESERestoreAddDatabase;
-HrESERestoreOpenFile_t HrESERestoreOpenFile;
-
-bRC
-loadExchangeApi()
-{
-   HMODULE h;
-   LONG status;
-   HKEY key_handle;
-   WCHAR *buf;
-   DWORD buf_len;
-   DWORD type;
-
-   status = RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\BackupRestore\\DLLPaths", &key_handle);
-   if (status != ERROR_SUCCESS)
-   {
-      _JobMessageNull(M_FATAL, "Cannot get key for Exchange DLL path, result = %08x\n", status);
-      return bRC_Error;
-   }
-   
-   type = REG_EXPAND_SZ;
-   status = RegQueryValueExW(key_handle, L"esebcli2", NULL, &type, NULL, &buf_len);
-   if (status != ERROR_SUCCESS)
-   {
-      _JobMessageNull(M_FATAL, "Cannot get key for Exchange DLL path, result = %08x\n", status);
-      return bRC_Error;
-   }
-   buf_len += 2;
-   buf = new WCHAR[buf_len];
-
-   type = REG_EXPAND_SZ;
-   status = RegQueryValueExW(key_handle, L"esebcli2", NULL, &type, (LPBYTE)buf, &buf_len);
-   if (status != ERROR_SUCCESS)
-   {
-      _JobMessageNull(M_FATAL, "Cannot get key for Exchange DLL path, result = %08x\n", status);
-      delete buf;
-      return bRC_Error;
-   }
-
-printf("Got value %S\n", buf);
-
-   // strictly speaking, a REG_EXPAND_SZ should be run through ExpandEnvironmentStrings
-
-   h = LoadLibraryW(buf);
-   delete buf;
-   if (!h) {
-      _JobMessageNull(M_FATAL, "Cannot load Exchange DLL\n");
-      return bRC_Error;
-   }
-   HrESEBackupRestoreGetNodes = (HrESEBackupRestoreGetNodes_t)GetProcAddress(h, "HrESEBackupRestoreGetNodes");
-   HrESEBackupPrepare = (HrESEBackupPrepare_t)GetProcAddress(h, "HrESEBackupPrepare");
-   HrESEBackupEnd = (HrESEBackupEnd_t)GetProcAddress(h, "HrESEBackupEnd");
-   HrESEBackupSetup = (HrESEBackupSetup_t)GetProcAddress(h, "HrESEBackupSetup");
-   HrESEBackupGetLogAndPatchFiles = (HrESEBackupGetLogAndPatchFiles_t)GetProcAddress(h, "HrESEBackupGetLogAndPatchFiles");
-   HrESEBackupTruncateLogs = (HrESEBackupTruncateLogs_t)GetProcAddress(h, "HrESEBackupTruncateLogs");
-   HrESEBackupInstanceEnd = (HrESEBackupInstanceEnd_t)GetProcAddress(h, "HrESEBackupInstanceEnd");
-   HrESEBackupOpenFile = (HrESEBackupOpenFile_t)GetProcAddress(h, "HrESEBackupOpenFile");
-   HrESEBackupReadFile = (HrESEBackupReadFile_t)GetProcAddress(h, "HrESEBackupReadFile");
-   HrESEBackupCloseFile = (HrESEBackupCloseFile_t)GetProcAddress(h, "HrESEBackupCloseFile");
-   HrESERestoreOpen = (HrESERestoreOpen_t)GetProcAddress(h, "HrESERestoreOpen");
-   HrESERestoreReopen = (HrESERestoreReopen_t)GetProcAddress(h, "HrESERestoreReopen");
-   HrESERestoreComplete = (HrESERestoreComplete_t)GetProcAddress(h, "HrESERestoreComplete");
-   HrESERestoreClose = (HrESERestoreClose_t)GetProcAddress(h, "HrESERestoreClose");
-   HrESERestoreSaveEnvironment = (HrESERestoreSaveEnvironment_t)GetProcAddress(h, "HrESERestoreSaveEnvironment");
-   HrESERestoreGetEnvironment = (HrESERestoreGetEnvironment_t)GetProcAddress(h, "HrESERestoreGetEnvironment");
-   HrESERestoreAddDatabase = (HrESERestoreAddDatabase_t)GetProcAddress(h, "HrESERestoreAddDatabase");
-   HrESERestoreOpenFile = (HrESERestoreOpenFile_t)GetProcAddress(h, "HrESERestoreOpenFile");
-   return bRC_OK;
-}
-
-const char *
-ESEErrorMessage(HRESULT result)
-{
-   switch (result) {
-   case 0:
-      return "No error.";
-   case hrLogfileHasBadSignature:
-      return "Log file has bad signature. Check that no stale files are left in the Exchange data/log directories.";
-   case hrCBDatabaseInUse:
-      return "Database in use. Make sure database is dismounted.";
-   case hrRestoreAtFileLevel:
-      return "File must be restored using Windows file I/O calls.";
-   case hrMissingFullBackup:
-      return "Exchange reports that no previous full backup has been done.";
-   case hrBackupInProgress:
-      return "Exchange backup already in progress.";
-   case hrLogfileNotContiguous:
-      return "Existing log file is not contiguous. Check that no stale files are left in the Exchange data/log directories.";
-   case hrErrorFromESECall:
-      return "Error returned from ESE function call. Check the Windows Event Logs for more information.";
-   case hrCBDatabaseNotFound:
-      return "Database not found. Check that the Database you are trying to restore actually exists in the Storage Group you are restoring to.";
-   default:
-      return "Unknown error.";
-   }
-}
diff --git a/src/win32/filed/plugins/api.h b/src/win32/filed/plugins/api.h
deleted file mode 100644
index 08a01ba..0000000
--- a/src/win32/filed/plugins/api.h
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-2009 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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-extern "C" {
-
-#define BACKUP_NODE_TYPE_MACHINE                0x001
-#define BACKUP_NODE_TYPE_ANNOTATION             0x010
-#define BACKUP_NODE_TYPE_DISPLAY                0x100
-
-#define ESE_BACKUP_INSTANCE_END_ERROR   0x0
-#define ESE_BACKUP_INSTANCE_END_SUCCESS 0x1
-
-#define BACKUP_TYPE_FULL                        0x1
-#define BACKUP_TYPE_LOGS_ONLY                   0x2
-#define BACKUP_TYPE_FULL_WITH_ALL_LOGS          0x3
-
-#define RESTORE_CLOSE_ABORT                     0x1
-#define RESTORE_CLOSE_NORMAL                    0x0
-
-#define ESE_RESTORE_COMPLETE_NOWAIT             0x00010000
-#define ESE_RESTORE_COMPLETE_ATTACH_DBS         0x00000001
-#define ESE_RESTORE_KEEP_LOG_FILES              0x00020000
-
-//#include <windef.h>
-
-struct ESE_ICON_DESCRIPTION {
-   uint32_t ulSize;
-   char *pvData;
-};
-
-struct BACKUP_NODE_TREE {
-   WCHAR *wszName;
-   uint32_t fFlags;
-   ESE_ICON_DESCRIPTION iconDescription;
-   struct BACKUP_NODE_TREE *pNextNode;
-   struct BACKUP_NODE_TREE *pChildNode;
-};
-
-struct DATABASE_BACKUP_INFO {
-   WCHAR *wszDatabaseDisplayName;
-   uint32_t cwDatabaseStreams;
-   WCHAR *wszDatabaseStreams;
-   GUID rguidDatabase;
-   uint32_t *rgIconIndexDatabase;
-   uint32_t fDatabaseFlags;
-};
-
-struct INSTANCE_BACKUP_INFO {
-   uint64_t hInstanceId;
-   //RPC_STRING wszInstanceName;
-   WCHAR *wszInstanceName;
-   uint32_t ulIconIndexInstance;
-   uint32_t cDatabase;
-   DATABASE_BACKUP_INFO *rgDatabase;
-   uint32_t cIconDescription;
-   ESE_ICON_DESCRIPTION *rgIconDescription;
-};
-
-enum RECOVER_STATUS {
-   recoverInvalid          = 0,
-   recoverNotStarted       = 1,
-   recoverStarted          = 2,
-   recoverEnded            = 3,
-   recoverStatusMax
-};
-
-struct RESTORE_ENVIRONMENT      {
-   WCHAR *                 m_wszRestoreLogPath;
-   WCHAR *                 m_wszSrcInstanceName;
-   uint32_t                m_cDatabases;
-   WCHAR                   **m_wszDatabaseDisplayName;
-   GUID *                  m_rguidDatabase;
-   WCHAR *                 m_wszRestoreInstanceSystemPath;
-   WCHAR *                 m_wszRestoreInstanceLogPath;
-   WCHAR *                 m_wszTargetInstanceName;
-   WCHAR **                m_wszDatabaseStreamsS;
-   WCHAR **                m_wszDatabaseStreamsD;
-   uint32_t                m_ulGenLow;
-   uint32_t                m_ulGenHigh;
-   WCHAR *                 m_wszLogBaseName;
-   time_t                  m_timeLastRestore;
-   RECOVER_STATUS  m_statusLastRecover;
-   HRESULT                 m_hrLastRecover;
-   time_t                  m_timeLastRecover;
-   WCHAR *                 m_wszAnnotation;
-};
-
-typedef HANDLE HCCX;
-
-typedef HRESULT (WINAPI *HrESEBackupRestoreGetNodes_t)
-(
-   WCHAR* wszComputerName,
-   BACKUP_NODE_TREE* pBackupNodeTree
-);
-
-typedef HRESULT (WINAPI *HrESEBackupPrepare_t)
-(
-   WCHAR* wszBackupServer,
-   WCHAR* wszBackupAnnotation,
-   uint32_t *pcInstanceInfo,
-   INSTANCE_BACKUP_INFO **paInstanceInfo,
-   HCCX *phccxBackupContext
-);
-
-typedef HRESULT (WINAPI *HrESEBackupEnd_t)
-(
-   HCCX hccsBackupContext
-);
-
-typedef HRESULT (WINAPI *HrESEBackupSetup_t)
-(
-   HCCX hccsBackupContext,
-   uint64_t hInstanceID,
-   uint32_t btBackupType
-);
-
-typedef HRESULT (WINAPI *HrESEBackupGetLogAndPatchFiles_t)
-(
-   HCCX hccsBackupContext,
-   WCHAR** pwszFiles
-);
-
-typedef HRESULT (WINAPI *HrESEBackupInstanceEnd_t)
-(
-   HCCX hccsBackupContext,
-   uint32_t fFlags
-);
-
-typedef HRESULT (WINAPI *HrESEBackupOpenFile_t)
-(
-   HCCX hccsBackupContext,
-   WCHAR* wszFileName,
-   uint32_t cbReadHintSize,
-   uint32_t cSections,
-   void** rghFile,
-   uint64_t* rgliSectionSize
-);
-
-typedef HRESULT (WINAPI *HrESEBackupReadFile_t)
-(
-   HCCX hccsBackupContext,
-   void* hFile,
-   void* pvBuffer,
-   uint32_t cbBuffer,
-   uint32_t* pcbRead
-);
-
-typedef HRESULT (WINAPI *HrESEBackupCloseFile_t)
-(
-   HCCX hccsBackupContext,
-   void* hFile
-);
-
-typedef HRESULT (WINAPI *HrESEBackupTruncateLogs_t)
-(
-   HCCX hccsBackupContext
-);
-
-typedef HRESULT (WINAPI *HrESERestoreOpen_t)
-(
-   WCHAR* wszBackupServer,
-   WCHAR* wszBackupAnnotation,
-   WCHAR* wszSrcInstanceName,
-   WCHAR* wszRestoreLogPath,
-   HCCX* phccxRestoreContext
-);
-
-typedef HRESULT (WINAPI *HrESERestoreReopen_t)
-(
-   WCHAR* wszBackupServer,
-   WCHAR* wszBackupAnnotation,
-   WCHAR* wszRestoreLogPath,
-   HCCX* phccxRestoreContext
-);
-
-typedef HRESULT (WINAPI *HrESERestoreClose_t)
-(
-   HCCX phccxRestoreContext,
-   uint32_t fRestoreAbort
-);
-
-typedef HRESULT (WINAPI *HrESERestoreComplete_t)
-(
-   HCCX phccxRestoreContext,
-   WCHAR* wszCheckpointFilePath,
-   WCHAR* wszLogFilePath,
-   WCHAR* wszTargetInstanceName,
-   uint32_t fFlags
-);
-
-typedef HRESULT (WINAPI *HrESERestoreSaveEnvironment_t)
-(
-   HCCX phccxRestoreContext
-);
-
-typedef HRESULT (WINAPI *HrESERestoreGetEnvironment_t)
-(
-   HCCX phccxRestoreContext,
-   RESTORE_ENVIRONMENT **ppRestoreEnvironment
-);
-
-typedef HRESULT (WINAPI *HrESERestoreAddDatabase_t)
-(
-   HCCX phccxRestoreContext,
-   WCHAR* wszDatabaseDisplayName,
-   GUID guidDatabase,
-   WCHAR* wszDatabaseStreamsS,
-   WCHAR** wszDatabaseStreamsD
-);
-
-typedef HRESULT (WINAPI *HrESERestoreOpenFile_t)
-(
-   HCCX phccxRestoreContext,
-   WCHAR* wszFileName,
-   uint32_t cSections,
-   void* rghFile
-);
-
-bRC
-loadExchangeApi();
-
-const char *
-ESEErrorMessage(HRESULT result);
-
-#define hrLogfileHasBadSignature    (HRESULT)0xC8000262L
-#define hrLogfileNotContiguous      (HRESULT)0xC8000263L
-#define hrCBDatabaseInUse           (HRESULT)0xC7FE1F41L
-#define hrRestoreAtFileLevel        (HRESULT)0xC7FF0FA5L
-#define hrMissingFullBackup         (HRESULT)0xC8000230L
-#define hrBackupInProgress          (HRESULT)0xC80001F9L
-#define hrCBDatabaseNotFound        (HRESULT)0xC7FE1F42L
-#define hrErrorFromESECall          (HRESULT)0xC7FF1004L
-
-extern HrESEBackupRestoreGetNodes_t HrESEBackupRestoreGetNodes;
-extern HrESEBackupPrepare_t HrESEBackupPrepare;
-extern HrESEBackupGetLogAndPatchFiles_t HrESEBackupGetLogAndPatchFiles;
-extern HrESEBackupTruncateLogs_t HrESEBackupTruncateLogs;
-extern HrESEBackupEnd_t HrESEBackupEnd;
-extern HrESEBackupSetup_t HrESEBackupSetup;
-extern HrESEBackupInstanceEnd_t HrESEBackupInstanceEnd;
-extern HrESEBackupOpenFile_t HrESEBackupOpenFile;
-extern HrESEBackupReadFile_t HrESEBackupReadFile;
-extern HrESEBackupCloseFile_t HrESEBackupCloseFile;
-
-extern HrESERestoreOpen_t HrESERestoreOpen;
-extern HrESERestoreReopen_t HrESERestoreReopen;
-extern HrESERestoreComplete_t HrESERestoreComplete;
-extern HrESERestoreClose_t HrESERestoreClose;
-extern HrESERestoreGetEnvironment_t HrESERestoreGetEnvironment;
-extern HrESERestoreSaveEnvironment_t HrESERestoreSaveEnvironment;
-extern HrESERestoreAddDatabase_t HrESERestoreAddDatabase;
-extern HrESERestoreOpenFile_t HrESERestoreOpenFile;
-
-#if !defined(MINGW64)  && (_WIN32_WINNT < 0x0500)
-typedef enum _COMPUTER_NAME_FORMAT {
-   ComputerNameNetBIOS,
-   ComputerNameDnsHostname,
-   ComputerNameDnsDomain,
-   ComputerNameDnsFullyQualified,
-   ComputerNamePhysicalNetBIOS,
-   ComputerNamePhysicalDnsHostname,
-   ComputerNamePhysicalDnsDomain,
-   ComputerNamePhysicalDnsFullyQualified,
-   ComputerNameMax
-} COMPUTER_NAME_FORMAT;
-
-BOOL WINAPI GetComputerNameExW(
-   COMPUTER_NAME_FORMAT NameType,
-   LPWSTR lpBuffer,
-   LPDWORD lpnSize
-);
-#endif
-
-}
diff --git a/src/win32/filed/plugins/bpipe-fd.c b/src/win32/filed/plugins/bpipe-fd.c
deleted file mode 100644
index 8ddb5ca..0000000
--- a/src/win32/filed/plugins/bpipe-fd.c
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-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, which is 
-   listed 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.
-*/
-/*
- * A simple pipe plugin for the Bacula File Daemon
- *
- *  Kern Sibbald, October 2007
- *    Copied into Windows plugin environment March, 2010 (KES)
- *
- */
-#include "bacula.h"
-#include "fd_plugins.h"
-
-#undef malloc
-#undef free
-#undef strdup
-
-#define fi __FILE__
-#define li __LINE__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static const int dbglvl = 150;
-
-#define PLUGIN_LICENSE      "Bacula AGPLv3"
-#define PLUGIN_AUTHOR       "Kern Sibbald"
-#define PLUGIN_DATE         "January 2010"
-#define PLUGIN_VERSION      "1"
-#define PLUGIN_DESCRIPTION  "Bacula Pipe Windows File Daemon Plugin"
-
-/* Forward referenced functions */
-static bRC newPlugin(bpContext *ctx);
-static bRC freePlugin(bpContext *ctx);
-static bRC getPluginValue(bpContext *ctx, pVariable var, void *value);
-static bRC setPluginValue(bpContext *ctx, pVariable var, void *value);
-static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value);
-static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp);
-static bRC endBackupFile(bpContext *ctx);
-static bRC pluginIO(bpContext *ctx, struct io_pkt *io);
-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 char *apply_rp_codes(struct plugin_ctx * p_ctx);
-
-/* Pointers to Bacula functions */
-static bFuncs *bfuncs = NULL;
-static bInfo  *binfo = NULL;
-
-/* Plugin Information block */
-static pInfo pluginInfo = {
-   sizeof(pluginInfo),
-   FD_PLUGIN_INTERFACE_VERSION,
-   FD_PLUGIN_MAGIC,
-   PLUGIN_LICENSE,
-   PLUGIN_AUTHOR,
-   PLUGIN_DATE,
-   PLUGIN_VERSION,
-   PLUGIN_DESCRIPTION,
-};
-
-/* Plugin entry points for Bacula */
-static pFuncs pluginFuncs = {
-   sizeof(pluginFuncs),
-   FD_PLUGIN_INTERFACE_VERSION,
-
-   /* Entry points into plugin */
-   newPlugin,                         /* new plugin instance */
-   freePlugin,                        /* free plugin instance */
-   getPluginValue,
-   setPluginValue,
-   handlePluginEvent,
-   startBackupFile,
-   endBackupFile,
-   startRestoreFile,
-   endRestoreFile,
-   pluginIO,
-   createFile,
-   setFileAttributes
-};
-
-/*
- * Plugin private context
- */
-struct plugin_ctx {
-   boffset_t offset;
-   FILE *fd;                          /* pipe file descriptor */
-   bool backup;                       /* set for backup (not needed) */
-   char *cmd;                         /* plugin command line */
-   char *fname;                       /* filename to "backup/restore" */
-   char *reader;                      /* reader program for backup */
-   char *writer;                      /* writer program for backup */
-
-   char where[512];
-   int replace;
-};
-
-/*
- * loadPlugin() and unloadPlugin() are entry points that are
- *  exported, so Bacula can directly call these two entry points
- *  they are common to all Bacula plugins.
- */
-/*
- * External entry point called by Bacula to "load the plugin
- */
-bRC loadPlugin(bInfo *lbinfo, bFuncs *lbfuncs, pInfo **pinfo, pFuncs **pfuncs)
-{
-   bfuncs = lbfuncs;                  /* set Bacula funct pointers */
-   binfo  = lbinfo;
-   *pinfo  = &pluginInfo;             /* return pointer to our info */
-   *pfuncs = &pluginFuncs;            /* return pointer to our functions */
-
-   return bRC_OK;
-}
-
-/*
- * External entry point to unload the plugin 
- */
-bRC unloadPlugin() 
-{
-// printf("bpipe-fd: Unloaded\n");
-   return bRC_OK;
-}
-
-/*
- * The following entry points are accessed through the function 
- *   pointers we supplied to Bacula. Each plugin type (dir, fd, sd)
- *   has its own set of entry points that the plugin must define.
- */
-/*
- * Create a new instance of the plugin i.e. allocate our private storage
- */
-static bRC newPlugin(bpContext *ctx)
-{
-   struct plugin_ctx *p_ctx = (struct plugin_ctx *)malloc(sizeof(struct plugin_ctx));
-   if (!p_ctx) {
-      return bRC_Error;
-   }
-   memset(p_ctx, 0, sizeof(struct plugin_ctx));
-   ctx->pContext = (void *)p_ctx;        /* set our context pointer */
-   return bRC_OK;
-}
-
-/*
- * Free a plugin instance, i.e. release our private storage
- */
-static bRC freePlugin(bpContext *ctx)
-{
-   struct plugin_ctx *p_ctx = (struct plugin_ctx *)ctx->pContext;
-   if (!p_ctx) {
-      return bRC_Error;
-   }
-   if (p_ctx->cmd) {
-      free(p_ctx->cmd);                  /* free any allocated command string */
-   }
-   free(p_ctx);                          /* free our private context */
-   p_ctx = NULL;
-   return bRC_OK;
-}
-
-/*
- * Return some plugin value (none defined)
- */
-static bRC getPluginValue(bpContext *ctx, pVariable var, void *value) 
-{
-   return bRC_OK;
-}
-
-/*
- * Set a plugin value (none defined)
- */
-static bRC setPluginValue(bpContext *ctx, pVariable var, void *value) 
-{
-   return bRC_OK;
-}
-
-/*
- * Handle an event that was generated in Bacula
- */
-static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
-{
-   struct plugin_ctx *p_ctx = (struct plugin_ctx *)ctx->pContext;
-   if (!p_ctx) {
-      return bRC_Error;
-   }
-
-// char *name;
-
-   /*
-    * Most events don't interest us so we ignore them.
-    *   the printfs are so that plugin writers can enable them to see
-    *   what is really going on.
-    */
-   switch (event->eventType) {
-   case bEventJobStart:
-      bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: JobStart=%s\n", (char *)value);
-      break;
-   case bEventJobEnd:
-//    printf("bpipe-fd: JobEnd\n");
-      break;
-   case bEventStartBackupJob:
-//    printf("bpipe-fd: StartBackupJob\n");
-      break;
-   case bEventEndBackupJob:
-//    printf("bpipe-fd: EndBackupJob\n");
-      break;
-   case bEventLevel:
-//    printf("bpipe-fd: JobLevel=%c %d\n", (int)value, (int)value);
-      break;
-   case bEventSince:
-//    printf("bpipe-fd: since=%d\n", (int)value);
-      break;
-
-   case bEventStartRestoreJob:
-//    printf("bpipe-fd: StartRestoreJob\n");
-      break;
-
-   case bEventEndRestoreJob:
-//    printf("bpipe-fd: EndRestoreJob\n");
-      break;
-
-   /* Plugin command e.g. plugin = <plugin-name>:<name-space>:read command:write command */
-   case bEventRestoreCommand:
-//    printf("bpipe-fd: EventRestoreCommand cmd=%s\n", (char *)value);
-      /* Fall-through wanted */
-   case bEventBackupCommand:
-      char *p;
-      bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: pluginEvent cmd=%s\n", (char *)value);
-      p_ctx->cmd = strdup((char *)value);
-      p = strchr(p_ctx->cmd, ':');
-      if (!p) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, "Plugin terminator not found: %s\n", (char *)value);
-         return bRC_Error;
-      }
-      *p++ = 0;           /* terminate plugin */
-      p_ctx->fname = p;
-      p = strchr(p, ':');
-      if (!p) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, "File terminator not found: %s\n", (char *)value);
-         return bRC_Error;
-      }
-      *p++ = 0;           /* terminate file */
-      p_ctx->reader = p;
-      p = strchr(p, ':');
-      if (!p) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, "Reader terminator not found: %s\n", (char *)value);
-         return bRC_Error;
-      }
-      *p++ = 0;           /* terminate reader string */
-      p_ctx->writer = p;
-//    printf("bpipe-fd: plugin=%s fname=%s reader=%s writer=%s\n", 
-//         p_ctx->cmd, p_ctx->fname, p_ctx->reader, p_ctx->writer);
-      break;
-
-   default:
-//    printf("bpipe-fd: unknown event=%d\n", event->eventType);
-      break;
-   }
-   return bRC_OK;
-}
-
-/* 
- * Start the backup of a specific file
- */
-static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
-{
-   struct plugin_ctx *p_ctx = (struct plugin_ctx *)ctx->pContext;
-   if (!p_ctx) {
-      return bRC_Error;
-   }
-   time_t now = time(NULL);
-   sp->fname = p_ctx->fname;
-   sp->type = FT_REG;
-   sp->statp.st_mode = 0700 | S_IFREG;
-   sp->statp.st_ctime = now;
-   sp->statp.st_mtime = now;
-   sp->statp.st_atime = now;
-   sp->statp.st_size = 0;
-   sp->statp.st_blksize = 4096;
-   sp->statp.st_blocks = 1;
-   p_ctx->backup = true;
-// printf("bpipe-fd: startBackupFile\n");
-   return bRC_OK;
-}
-
-/*
- * Done with backup of this file
- */
-static bRC endBackupFile(bpContext *ctx)
-{
-   /*
-    * We would return bRC_More if we wanted startBackupFile to be
-    * called again to backup another file
-    */
-   return bRC_OK;
-}
-
-
-/*
- * Bacula is calling us to do the actual I/O
- */
-static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
-{
-   struct plugin_ctx *p_ctx = (struct plugin_ctx *)ctx->pContext;
-   if (!p_ctx) {
-      return bRC_Error;
-   }
-    
-   io->status = 0;
-   io->io_errno = 0;
-   switch(io->func) {
-   case IO_OPEN:
-      bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: IO_OPEN\n");
-      if (io->flags & (O_CREAT | O_WRONLY)) {
-         char *writer_codes = apply_rp_codes(p_ctx);
-
-         p_ctx->fd = popen(writer_codes, "w");
-         bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: IO_OPEN fd=%d writer=%s\n", 
-             p_ctx->fd, writer_codes);
-         if (!p_ctx->fd) {
-            io->io_errno = errno;
-            bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, 
-               "Open pipe writer=%s failed: ERR=%s\n", writer_codes, strerror(errno));
-            if (writer_codes) {
-               free(writer_codes);
-            }
-            return bRC_Error;
-         }
-         if (writer_codes) {
-            free(writer_codes);
-         }
-      } else {
-         p_ctx->fd = popen(p_ctx->reader, "r");
-         bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: IO_OPEN fd=%p reader=%s\n", 
-            p_ctx->fd, p_ctx->reader);
-         if (!p_ctx->fd) {
-            io->io_errno = errno;
-            bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, 
-               "Open pipe reader=%s failed: ERR=%s\n", p_ctx->reader, strerror(errno));
-            return bRC_Error;
-         }
-      }
-      bmicrosleep(1,0);         /* let pipe connect */
-      break;
-
-   case IO_READ:
-      if (!p_ctx->fd) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, "Logic error: NULL read FD\n");
-         return bRC_Error;
-      }
-      io->status = fread(io->buf, 1, io->count, p_ctx->fd);
-//    bfuncs->DebugMessage(ctx, fi, li, dbglvl, "bpipe-fd: IO_READ buf=%p len=%d\n", io->buf, io->status);
-      if (io->status == 0 && ferror(p_ctx->fd)) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, 
-            "Pipe read error: ERR=%s\n", strerror(errno));
-         bfuncs->DebugMessage(ctx, fi, li, dbglvl, 
-            "Pipe read error: ERR=%s\n", strerror(errno));
-         return bRC_Error;
-      }
-      break;
-
-   case IO_WRITE:
-      if (!p_ctx->fd) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, "Logic error: NULL write FD\n");
-         return bRC_Error;
-      }
-//    printf("bpipe-fd: IO_WRITE fd=%p buf=%p len=%d\n", p_ctx->fd, io->buf, io->count);
-      io->status = fwrite(io->buf, 1, io->count, p_ctx->fd);
-//    printf("bpipe-fd: IO_WRITE buf=%p len=%d\n", io->buf, io->status);
-      if (io->status == 0 && ferror(p_ctx->fd)) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, 
-            "Pipe write error\n");
-         bfuncs->DebugMessage(ctx, fi, li, dbglvl, 
-            "Pipe read error: ERR=%s\n", strerror(errno));
-         return bRC_Error;
-      }
-      break;
-
-   case IO_CLOSE:
-      if (!p_ctx->fd) {
-         bfuncs->JobMessage(ctx, fi, li, M_FATAL, 0, "Logic error: NULL FD on bpipe close\n");
-         return bRC_Error;
-      }
-      io->status = pclose(p_ctx->fd);
-      break;
-
-   case IO_SEEK:
-      io->offset = p_ctx->offset;
-      break;
-   }
-   return bRC_OK;
-}
-
-/*
- * Bacula is notifying us that a plugin name string was found, and
- *   passing us the plugin command, so we can prepare for a restore.
- */
-static bRC startRestoreFile(bpContext *ctx, const char *cmd)
-{
-// printf("bpipe-fd: startRestoreFile cmd=%s\n", cmd);
-   return bRC_OK;
-}
-
-/*
- * Bacula is notifying us that the plugin data has terminated, so
- *  the restore for this particular file is done.
- */
-static bRC endRestoreFile(bpContext *ctx)
-{
-// printf("bpipe-fd: endRestoreFile\n");
-   return bRC_OK;
-}
-
-/*
- * This is called during restore to create the file (if necessary)
- * We must return in rp->create_status:
- *   
- *  CF_ERROR    -- error
- *  CF_SKIP     -- skip processing this file
- *  CF_EXTRACT  -- extract the file (i.e.call i/o routines)
- *  CF_CREATED  -- created, but no content to extract (typically directories)
- *
- */
-static bRC createFile(bpContext *ctx, struct restore_pkt *rp)
-{
-// printf("bpipe-fd: createFile\n");
-   if (strlen(rp->where) > 512) {
-      printf("Restore target dir too long. Restricting to first 512 bytes.\n");
-   }
-   strncpy(((struct plugin_ctx *)ctx->pContext)->where, rp->where, 513);
-   ((struct plugin_ctx *)ctx->pContext)->replace = rp->replace;
-   rp->create_status = CF_EXTRACT;
-   return bRC_OK;
-}
-
-/*
- * We will get here if the File is a directory after everything
- * is written in the directory.
- */
-static bRC setFileAttributes(bpContext *ctx, struct restore_pkt *rp)
-{
-// printf("bpipe-fd: setFileAttributes\n");
-   return bRC_OK;
-}
-
-/*************************************************************************
- * Apply codes in writer command:
- * %w -> "where"
- * %r -> "replace"
- *
- * Replace:
- * 'always' => 'a', chr(97)
- * 'ifnewer' => 'w', chr(119)
- * 'ifolder' => 'o', chr(111)
- * 'never' => 'n', chr(110)
- *
- * This function will allocate the required amount of memory with malloc.
- * Need to be free()d manually.
- * Inspired by edit_job_codes in lib/util.c
- */
-
-static char *apply_rp_codes(struct plugin_ctx * p_ctx)
-{
-   char *p, *q;
-   const char *str;
-   char add[10];
-   int w_count = 0, r_count = 0;
-   char *omsg;
-
-   char *imsg = p_ctx->writer;
-
-   if (!imsg) {
-      return NULL;
-   }
-
-   if ((p = imsg)) {
-      while ((q = strstr(p, "%w"))) {
-         w_count++;
-         p=q+1;
-      }
-
-      p = imsg;
-      while ((q = strstr(p, "%r"))) {
-         r_count++;
-         p=q+1;
-      }
-   }
-
-   /* Required mem: 
-    * len(imsg) 
-    * + number of "where" codes * (len(where)-2) 
-    * - number of "replace" codes
-    */
-   omsg = (char*)malloc(strlen(imsg) + (w_count * (strlen(p_ctx->where)-2)) - r_count + 1);
-   if (!omsg) {
-      fprintf(stderr, "Out of memory.");
-      return NULL;
-   }
-
-   *omsg = 0;
-   //printf("apply_rp_codes: %s\n", imsg);
-   for (p=imsg; *p; p++) {
-      if (*p == '%') {
-         switch (*++p) {
-         case '%':
-            str = "%";
-            break;
-         case 'w':
-             str = p_ctx->where;
-             break;
-         case 'r':
-            snprintf(add, 2, "%c", p_ctx->replace);
-            str = add;
-            break;
-         default:
-            add[0] = '%';
-            add[1] = *p;
-            add[2] = 0;
-            str = add;
-            break;
-         }
-      } else {
-         add[0] = *p;
-         add[1] = 0;
-         str = add;
-      }
-      //printf("add_str %s\n", str);
-      strcat(omsg, str);
-      //printf("omsg=%s\n", omsg);
-   }
-   return omsg;
-}
-
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/src/win32/filed/plugins/bpipe-fd.def b/src/win32/filed/plugins/bpipe-fd.def
deleted file mode 100644
index 9f0ad91..0000000
--- a/src/win32/filed/plugins/bpipe-fd.def
+++ /dev/null
@@ -1,15 +0,0 @@
-LIBRARY bacula.dll
-EXPORTS
- 
-; compat.o
-;_Z10open_bpipePciPKc
-;_Z11close_bpipeP5BPIPE
-;_Z11close_wpipeP5BPIPE
-
-;console_command DATA
-;bplugin_list DATA
-;plugin_bopen DATA
-;plugin_bclose DATA
-;plugin_bwrite DATA
-;plugin_bread DATA
-;plugin_blseek DATA
diff --git a/src/win32/filed/plugins/comadmin.h b/src/win32/filed/plugins/comadmin.h
deleted file mode 100644
index 3794ca0..0000000
--- a/src/win32/filed/plugins/comadmin.h
+++ /dev/null
@@ -1,876 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within this package.
- */
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error This stub requires an updated version of <rpcndr.h>
-#endif
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif
-
-#ifndef __comadmin_h__
-#define __comadmin_h__
-
-#ifndef __ICOMAdminCatalog_FWD_DEFINED__
-#define __ICOMAdminCatalog_FWD_DEFINED__
-typedef struct ICOMAdminCatalog ICOMAdminCatalog;
-#endif
-
-#ifndef __ICOMAdminCatalog2_FWD_DEFINED__
-#define __ICOMAdminCatalog2_FWD_DEFINED__
-typedef struct ICOMAdminCatalog2 ICOMAdminCatalog2;
-#endif
-
-#ifndef __ICatalogObject_FWD_DEFINED__
-#define __ICatalogObject_FWD_DEFINED__
-typedef struct ICatalogObject ICatalogObject;
-#endif
-
-#ifndef __ICatalogCollection_FWD_DEFINED__
-#define __ICatalogCollection_FWD_DEFINED__
-typedef struct ICatalogCollection ICatalogCollection;
-#endif
-
-#ifndef __COMAdminCatalog_FWD_DEFINED__
-#define __COMAdminCatalog_FWD_DEFINED__
-#ifdef __cplusplus
-typedef class COMAdminCatalog COMAdminCatalog;
-#else
-typedef struct COMAdminCatalog COMAdminCatalog;
-#endif
-#endif
-
-#ifndef __COMAdminCatalogObject_FWD_DEFINED__
-#define __COMAdminCatalogObject_FWD_DEFINED__
-#ifdef __cplusplus
-typedef class COMAdminCatalogObject COMAdminCatalogObject;
-#else
-typedef struct COMAdminCatalogObject COMAdminCatalogObject;
-#endif
-#endif
-
-#ifndef __COMAdminCatalogCollection_FWD_DEFINED__
-#define __COMAdminCatalogCollection_FWD_DEFINED__
-#ifdef __cplusplus
-typedef class COMAdminCatalogCollection COMAdminCatalogCollection;
-#else
-typedef struct COMAdminCatalogCollection COMAdminCatalogCollection;
-#endif
-#endif
-
-#include "unknwn.h"
-#include "oaidl.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-  void *__RPC_API MIDL_user_allocate(size_t);
-  void __RPC_API MIDL_user_free(void *);
-
-#include <objbase.h>
-
-  extern RPC_IF_HANDLE __MIDL_itf_comadmin_0000_v0_0_c_ifspec;
-  extern RPC_IF_HANDLE __MIDL_itf_comadmin_0000_v0_0_s_ifspec;
-
-#ifndef __ICOMAdminCatalog_INTERFACE_DEFINED__
-#define __ICOMAdminCatalog_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_ICOMAdminCatalog;
-#if defined(__cplusplus) && !defined(CINTERFACE)
-  struct ICOMAdminCatalog : public IDispatch {
-  public:
-    virtual HRESULT WINAPI GetCollection(BSTR bstrCollName,IDispatch **ppCatalogCollection) = 0;
-    virtual HRESULT WINAPI Connect(BSTR bstrCatalogServerName,IDispatch **ppCatalogCollection) = 0;
-    virtual HRESULT WINAPI get_MajorVersion(long *plMajorVersion) = 0;
-    virtual HRESULT WINAPI get_MinorVersion(long *plMinorVersion) = 0;
-    virtual HRESULT WINAPI GetCollectionByQuery(BSTR bstrCollName,SAFEARRAY **ppsaVarQuery,IDispatch **ppCatalogCollection) = 0;
-    virtual HRESULT WINAPI ImportComponent(BSTR bstrApplIDOrName,BSTR bstrCLSIDOrProgID) = 0;
-    virtual HRESULT WINAPI InstallComponent(BSTR bstrApplIDOrName,BSTR bstrDLL,BSTR bstrTLB,BSTR bstrPSDLL) = 0;
-    virtual HRESULT WINAPI ShutdownApplication(BSTR bstrApplIDOrName) = 0;
-    virtual HRESULT WINAPI ExportApplication(BSTR bstrApplIDOrName,BSTR bstrApplicationFile,long lOptions) = 0;
-    virtual HRESULT WINAPI InstallApplication(BSTR bstrApplicationFile,BSTR bstrDestinationDirectory,long lOptions,BSTR bstrUserId,BSTR bstrPassword,BSTR bstrRSN) = 0;
-    virtual HRESULT WINAPI StopRouter(void) = 0;
-    virtual HRESULT WINAPI RefreshRouter(void) = 0;
-    virtual HRESULT WINAPI StartRouter(void) = 0;
-    virtual HRESULT WINAPI Reserved1(void) = 0;
-    virtual HRESULT WINAPI Reserved2(void) = 0;
-    virtual HRESULT WINAPI InstallMultipleComponents(BSTR bstrApplIDOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDs) = 0;
-    virtual HRESULT WINAPI GetMultipleComponentsInfo(BSTR bstrApplIdOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDs,SAFEARRAY **ppsaVarClassNames,SAFEARRAY **ppsaVarFileFlags,SAFEARRAY **ppsaVarComponentFlags) = 0;
-    virtual HRESULT WINAPI RefreshComponents(void) = 0;
-    virtual HRESULT WINAPI BackupREGDB(BSTR bstrBackupFilePath) = 0;
-    virtual HRESULT WINAPI RestoreREGDB(BSTR bstrBackupFilePath) = 0;
-    virtual HRESULT WINAPI QueryApplicationFile(BSTR bstrApplicationFile,BSTR *pbstrApplicationName,BSTR *pbstrApplicationDescription,VARIANT_BOOL *pbHasUsers,VARIANT_BOOL *pbIsProxy,SAFEARRAY **ppsaVarFileNames) = 0;
-    virtual HRESULT WINAPI StartApplication(BSTR bstrApplIdOrName) = 0;
-    virtual HRESULT WINAPI ServiceCheck(long lService,long *plStatus) = 0;
-    virtual HRESULT WINAPI InstallMultipleEventClasses(BSTR bstrApplIdOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDS) = 0;
-    virtual HRESULT WINAPI InstallEventClass(BSTR bstrApplIdOrName,BSTR bstrDLL,BSTR bstrTLB,BSTR bstrPSDLL) = 0;
-    virtual HRESULT WINAPI GetEventClassesForIID(BSTR bstrIID,SAFEARRAY **ppsaVarCLSIDs,SAFEARRAY **ppsaVarProgIDs,SAFEARRAY **ppsaVarDescriptions) = 0;
-  };
-#else
-  typedef struct ICOMAdminCatalogVtbl {
-    BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(ICOMAdminCatalog *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(ICOMAdminCatalog *This);
-      ULONG (WINAPI *Release)(ICOMAdminCatalog *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(ICOMAdminCatalog *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(ICOMAdminCatalog *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(ICOMAdminCatalog *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(ICOMAdminCatalog *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *GetCollection)(ICOMAdminCatalog *This,BSTR bstrCollName,IDispatch **ppCatalogCollection);
-      HRESULT (WINAPI *Connect)(ICOMAdminCatalog *This,BSTR bstrCatalogServerName,IDispatch **ppCatalogCollection);
-      HRESULT (WINAPI *get_MajorVersion)(ICOMAdminCatalog *This,long *plMajorVersion);
-      HRESULT (WINAPI *get_MinorVersion)(ICOMAdminCatalog *This,long *plMinorVersion);
-      HRESULT (WINAPI *GetCollectionByQuery)(ICOMAdminCatalog *This,BSTR bstrCollName,SAFEARRAY **ppsaVarQuery,IDispatch **ppCatalogCollection);
-      HRESULT (WINAPI *ImportComponent)(ICOMAdminCatalog *This,BSTR bstrApplIDOrName,BSTR bstrCLSIDOrProgID);
-      HRESULT (WINAPI *InstallComponent)(ICOMAdminCatalog *This,BSTR bstrApplIDOrName,BSTR bstrDLL,BSTR bstrTLB,BSTR bstrPSDLL);
-      HRESULT (WINAPI *ShutdownApplication)(ICOMAdminCatalog *This,BSTR bstrApplIDOrName);
-      HRESULT (WINAPI *ExportApplication)(ICOMAdminCatalog *This,BSTR bstrApplIDOrName,BSTR bstrApplicationFile,long lOptions);
-      HRESULT (WINAPI *InstallApplication)(ICOMAdminCatalog *This,BSTR bstrApplicationFile,BSTR bstrDestinationDirectory,long lOptions,BSTR bstrUserId,BSTR bstrPassword,BSTR bstrRSN);
-      HRESULT (WINAPI *StopRouter)(ICOMAdminCatalog *This);
-      HRESULT (WINAPI *RefreshRouter)(ICOMAdminCatalog *This);
-      HRESULT (WINAPI *StartRouter)(ICOMAdminCatalog *This);
-      HRESULT (WINAPI *Reserved1)(ICOMAdminCatalog *This);
-      HRESULT (WINAPI *Reserved2)(ICOMAdminCatalog *This);
-      HRESULT (WINAPI *InstallMultipleComponents)(ICOMAdminCatalog *This,BSTR bstrApplIDOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDs);
-      HRESULT (WINAPI *GetMultipleComponentsInfo)(ICOMAdminCatalog *This,BSTR bstrApplIdOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDs,SAFEARRAY **ppsaVarClassNames,SAFEARRAY **ppsaVarFileFlags,SAFEARRAY **ppsaVarComponentFlags);
-      HRESULT (WINAPI *RefreshComponents)(ICOMAdminCatalog *This);
-      HRESULT (WINAPI *BackupREGDB)(ICOMAdminCatalog *This,BSTR bstrBackupFilePath);
-      HRESULT (WINAPI *RestoreREGDB)(ICOMAdminCatalog *This,BSTR bstrBackupFilePath);
-      HRESULT (WINAPI *QueryApplicationFile)(ICOMAdminCatalog *This,BSTR bstrApplicationFile,BSTR *pbstrApplicationName,BSTR *pbstrApplicationDescription,VARIANT_BOOL *pbHasUsers,VARIANT_BOOL *pbIsProxy,SAFEARRAY **ppsaVarFileNames);
-      HRESULT (WINAPI *StartApplication)(ICOMAdminCatalog *This,BSTR bstrApplIdOrName);
-      HRESULT (WINAPI *ServiceCheck)(ICOMAdminCatalog *This,long lService,long *plStatus);
-      HRESULT (WINAPI *InstallMultipleEventClasses)(ICOMAdminCatalog *This,BSTR bstrApplIdOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDS);
-      HRESULT (WINAPI *InstallEventClass)(ICOMAdminCatalog *This,BSTR bstrApplIdOrName,BSTR bstrDLL,BSTR bstrTLB,BSTR bstrPSDLL);
-      HRESULT (WINAPI *GetEventClassesForIID)(ICOMAdminCatalog *This,BSTR bstrIID,SAFEARRAY **ppsaVarCLSIDs,SAFEARRAY **ppsaVarProgIDs,SAFEARRAY **ppsaVarDescriptions);
-    END_INTERFACE
-  } ICOMAdminCatalogVtbl;
-  struct ICOMAdminCatalog {
-    CONST_VTBL struct ICOMAdminCatalogVtbl *lpVtbl;
-  };
-#ifdef COBJMACROS
-#define ICOMAdminCatalog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ICOMAdminCatalog_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ICOMAdminCatalog_Release(This) (This)->lpVtbl->Release(This)
-#define ICOMAdminCatalog_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define ICOMAdminCatalog_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define ICOMAdminCatalog_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define ICOMAdminCatalog_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define ICOMAdminCatalog_GetCollection(This,bstrCollName,ppCatalogCollection) (This)->lpVtbl->GetCollection(This,bstrCollName,ppCatalogCollection)
-#define ICOMAdminCatalog_Connect(This,bstrCatalogServerName,ppCatalogCollection) (This)->lpVtbl->Connect(This,bstrCatalogServerName,ppCatalogCollection)
-#define ICOMAdminCatalog_get_MajorVersion(This,plMajorVersion) (This)->lpVtbl->get_MajorVersion(This,plMajorVersion)
-#define ICOMAdminCatalog_get_MinorVersion(This,plMinorVersion) (This)->lpVtbl->get_MinorVersion(This,plMinorVersion)
-#define ICOMAdminCatalog_GetCollectionByQuery(This,bstrCollName,ppsaVarQuery,ppCatalogCollection) (This)->lpVtbl->GetCollectionByQuery(This,bstrCollName,ppsaVarQuery,ppCatalogCollection)
-#define ICOMAdminCatalog_ImportComponent(This,bstrApplIDOrName,bstrCLSIDOrProgID) (This)->lpVtbl->ImportComponent(This,bstrApplIDOrName,bstrCLSIDOrProgID)
-#define ICOMAdminCatalog_InstallComponent(This,bstrApplIDOrName,bstrDLL,bstrTLB,bstrPSDLL) (This)->lpVtbl->InstallComponent(This,bstrApplIDOrName,bstrDLL,bstrTLB,bstrPSDLL)
-#define ICOMAdminCatalog_ShutdownApplication(This,bstrApplIDOrName) (This)->lpVtbl->ShutdownApplication(This,bstrApplIDOrName)
-#define ICOMAdminCatalog_ExportApplication(This,bstrApplIDOrName,bstrApplicationFile,lOptions) (This)->lpVtbl->ExportApplication(This,bstrApplIDOrName,bstrApplicationFile,lOptions)
-#define ICOMAdminCatalog_InstallApplication(This,bstrApplicationFile,bstrDestinationDirectory,lOptions,bstrUserId,bstrPassword,bstrRSN) (This)->lpVtbl->InstallApplication(This,bstrApplicationFile,bstrDestinationDirectory,lOptions,bstrUserId,bstrPassword,bstrRSN)
-#define ICOMAdminCatalog_StopRouter(This) (This)->lpVtbl->StopRouter(This)
-#define ICOMAdminCatalog_RefreshRouter(This) (This)->lpVtbl->RefreshRouter(This)
-#define ICOMAdminCatalog_StartRouter(This) (This)->lpVtbl->StartRouter(This)
-#define ICOMAdminCatalog_Reserved1(This) (This)->lpVtbl->Reserved1(This)
-#define ICOMAdminCatalog_Reserved2(This) (This)->lpVtbl->Reserved2(This)
-#define ICOMAdminCatalog_InstallMultipleComponents(This,bstrApplIDOrName,ppsaVarFileNames,ppsaVarCLSIDs) (This)->lpVtbl->InstallMultipleComponents(This,bstrApplIDOrName,ppsaVarFileNames,ppsaVarCLSIDs)
-#define ICOMAdminCatalog_GetMultipleComponentsInfo(This,bstrApplIdOrName,ppsaVarFileNames,ppsaVarCLSIDs,ppsaVarClassNames,ppsaVarFileFlags,ppsaVarComponentFlags) (This)->lpVtbl->GetMultipleComponentsInfo(This,bstrApplIdOrName,ppsaVarFileNames,ppsaVarCLSIDs,ppsaVarClassNames,ppsaVarFileFlags,ppsaVarComponentFlags)
-#define ICOMAdminCatalog_RefreshComponents(This) (This)->lpVtbl->RefreshComponents(This)
-#define ICOMAdminCatalog_BackupREGDB(This,bstrBackupFilePath) (This)->lpVtbl->BackupREGDB(This,bstrBackupFilePath)
-#define ICOMAdminCatalog_RestoreREGDB(This,bstrBackupFilePath) (This)->lpVtbl->RestoreREGDB(This,bstrBackupFilePath)
-#define ICOMAdminCatalog_QueryApplicationFile(This,bstrApplicationFile,pbstrApplicationName,pbstrApplicationDescription,pbHasUsers,pbIsProxy,ppsaVarFileNames) (This)->lpVtbl->QueryApplicationFile(This,bstrApplicationFile,pbstrApplicationName,pbstrApplicationDescription,pbHasUsers,pbIsProxy,ppsaVarFileNames)
-#define ICOMAdminCatalog_StartApplication(This,bstrApplIdOrName) (This)->lpVtbl->StartApplication(This,bstrApplIdOrName)
-#define ICOMAdminCatalog_ServiceCheck(This,lService,plStatus) (This)->lpVtbl->ServiceCheck(This,lService,plStatus)
-#define ICOMAdminCatalog_InstallMultipleEventClasses(This,bstrApplIdOrName,ppsaVarFileNames,ppsaVarCLSIDS) (This)->lpVtbl->InstallMultipleEventClasses(This,bstrApplIdOrName,ppsaVarFileNames,ppsaVarCLSIDS)
-#define ICOMAdminCatalog_InstallEventClass(This,bstrApplIdOrName,bstrDLL,bstrTLB,bstrPSDLL) (This)->lpVtbl->InstallEventClass(This,bstrApplIdOrName,bstrDLL,bstrTLB,bstrPSDLL)
-#define ICOMAdminCatalog_GetEventClassesForIID(This,bstrIID,ppsaVarCLSIDs,ppsaVarProgIDs,ppsaVarDescriptions) (This)->lpVtbl->GetEventClassesForIID(This,bstrIID,ppsaVarCLSIDs,ppsaVarProgIDs,ppsaVarDescriptions)
-#endif
-#endif
-  HRESULT WINAPI ICOMAdminCatalog_GetCollection_Proxy(ICOMAdminCatalog *This,BSTR bstrCollName,IDispatch **ppCatalogCollection);
-  void __RPC_STUB ICOMAdminCatalog_GetCollection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_Connect_Proxy(ICOMAdminCatalog *This,BSTR bstrCatalogServerName,IDispatch **ppCatalogCollection);
-  void __RPC_STUB ICOMAdminCatalog_Connect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_get_MajorVersion_Proxy(ICOMAdminCatalog *This,long *plMajorVersion);
-  void __RPC_STUB ICOMAdminCatalog_get_MajorVersion_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_get_MinorVersion_Proxy(ICOMAdminCatalog *This,long *plMinorVersion);
-  void __RPC_STUB ICOMAdminCatalog_get_MinorVersion_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_GetCollectionByQuery_Proxy(ICOMAdminCatalog *This,BSTR bstrCollName,SAFEARRAY **ppsaVarQuery,IDispatch **ppCatalogCollection);
-  void __RPC_STUB ICOMAdminCatalog_GetCollectionByQuery_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_ImportComponent_Proxy(ICOMAdminCatalog *This,BSTR bstrApplIDOrName,BSTR bstrCLSIDOrProgID);
-  void __RPC_STUB ICOMAdminCatalog_ImportComponent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_InstallComponent_Proxy(ICOMAdminCatalog *This,BSTR bstrApplIDOrName,BSTR bstrDLL,BSTR bstrTLB,BSTR bstrPSDLL);
-  void __RPC_STUB ICOMAdminCatalog_InstallComponent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_ShutdownApplication_Proxy(ICOMAdminCatalog *This,BSTR bstrApplIDOrName);
-  void __RPC_STUB ICOMAdminCatalog_ShutdownApplication_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_ExportApplication_Proxy(ICOMAdminCatalog *This,BSTR bstrApplIDOrName,BSTR bstrApplicationFile,long lOptions);
-  void __RPC_STUB ICOMAdminCatalog_ExportApplication_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_InstallApplication_Proxy(ICOMAdminCatalog *This,BSTR bstrApplicationFile,BSTR bstrDestinationDirectory,long lOptions,BSTR bstrUserId,BSTR bstrPassword,BSTR bstrRSN);
-  void __RPC_STUB ICOMAdminCatalog_InstallApplication_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_StopRouter_Proxy(ICOMAdminCatalog *This);
-  void __RPC_STUB ICOMAdminCatalog_StopRouter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_RefreshRouter_Proxy(ICOMAdminCatalog *This);
-  void __RPC_STUB ICOMAdminCatalog_RefreshRouter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_StartRouter_Proxy(ICOMAdminCatalog *This);
-  void __RPC_STUB ICOMAdminCatalog_StartRouter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_Reserved1_Proxy(ICOMAdminCatalog *This);
-  void __RPC_STUB ICOMAdminCatalog_Reserved1_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_Reserved2_Proxy(ICOMAdminCatalog *This);
-  void __RPC_STUB ICOMAdminCatalog_Reserved2_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_InstallMultipleComponents_Proxy(ICOMAdminCatalog *This,BSTR bstrApplIDOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDs);
-  void __RPC_STUB ICOMAdminCatalog_InstallMultipleComponents_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_GetMultipleComponentsInfo_Proxy(ICOMAdminCatalog *This,BSTR bstrApplIdOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDs,SAFEARRAY **ppsaVarClassNames,SAFEARRAY **ppsaVarFileFlags,SAFEARRAY **ppsaVarComponentFlags);
-  void __RPC_STUB ICOMAdminCatalog_GetMultipleComponentsInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_RefreshComponents_Proxy(ICOMAdminCatalog *This);
-  void __RPC_STUB ICOMAdminCatalog_RefreshComponents_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_BackupREGDB_Proxy(ICOMAdminCatalog *This,BSTR bstrBackupFilePath);
-  void __RPC_STUB ICOMAdminCatalog_BackupREGDB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_RestoreREGDB_Proxy(ICOMAdminCatalog *This,BSTR bstrBackupFilePath);
-  void __RPC_STUB ICOMAdminCatalog_RestoreREGDB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_QueryApplicationFile_Proxy(ICOMAdminCatalog *This,BSTR bstrApplicationFile,BSTR *pbstrApplicationName,BSTR *pbstrApplicationDescription,VARIANT_BOOL *pbHasUsers,VARIANT_BOOL *pbIsProxy,SAFEARRAY **ppsaVarFileNames);
-  void __RPC_STUB ICOMAdminCatalog_QueryApplicationFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_StartApplication_Proxy(ICOMAdminCatalog *This,BSTR bstrApplIdOrName);
-  void __RPC_STUB ICOMAdminCatalog_StartApplication_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_ServiceCheck_Proxy(ICOMAdminCatalog *This,long lService,long *plStatus);
-  void __RPC_STUB ICOMAdminCatalog_ServiceCheck_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_InstallMultipleEventClasses_Proxy(ICOMAdminCatalog *This,BSTR bstrApplIdOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDS);
-  void __RPC_STUB ICOMAdminCatalog_InstallMultipleEventClasses_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_InstallEventClass_Proxy(ICOMAdminCatalog *This,BSTR bstrApplIdOrName,BSTR bstrDLL,BSTR bstrTLB,BSTR bstrPSDLL);
-  void __RPC_STUB ICOMAdminCatalog_InstallEventClass_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog_GetEventClassesForIID_Proxy(ICOMAdminCatalog *This,BSTR bstrIID,SAFEARRAY **ppsaVarCLSIDs,SAFEARRAY **ppsaVarProgIDs,SAFEARRAY **ppsaVarDescriptions);
-  void __RPC_STUB ICOMAdminCatalog_GetEventClassesForIID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
-
-  typedef enum COMAdminInUse {
-    COMAdminNotInUse = 0,COMAdminInUseByCatalog = 0x1,COMAdminInUseByRegistryUnknown = 0x2,COMAdminInUseByRegistryProxyStub = 0x3,
-    COMAdminInUseByRegistryTypeLib = 0x4,COMAdminInUseByRegistryClsid = 0x5
-  } COMAdminInUse;
-
-  extern RPC_IF_HANDLE __MIDL_itf_comadmin_0116_v0_0_c_ifspec;
-  extern RPC_IF_HANDLE __MIDL_itf_comadmin_0116_v0_0_s_ifspec;
-
-#ifndef __ICOMAdminCatalog2_INTERFACE_DEFINED__
-#define __ICOMAdminCatalog2_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_ICOMAdminCatalog2;
-#if defined(__cplusplus) && !defined(CINTERFACE)
-  struct ICOMAdminCatalog2 : public ICOMAdminCatalog {
-  public:
-    virtual HRESULT WINAPI GetCollectionByQuery2(BSTR bstrCollectionName,VARIANT *pVarQueryStrings,IDispatch **ppCatalogCollection) = 0;
-    virtual HRESULT WINAPI GetApplicationInstanceIDFromProcessID(long lProcessID,BSTR *pbstrApplicationInstanceID) = 0;
-    virtual HRESULT WINAPI ShutdownApplicationInstances(VARIANT *pVarApplicationInstanceID) = 0;
-    virtual HRESULT WINAPI PauseApplicationInstances(VARIANT *pVarApplicationInstanceID) = 0;
-    virtual HRESULT WINAPI ResumeApplicationInstances(VARIANT *pVarApplicationInstanceID) = 0;
-    virtual HRESULT WINAPI RecycleApplicationInstances(VARIANT *pVarApplicationInstanceID,long lReasonCode) = 0;
-    virtual HRESULT WINAPI AreApplicationInstancesPaused(VARIANT *pVarApplicationInstanceID,VARIANT_BOOL *pVarBoolPaused) = 0;
-    virtual HRESULT WINAPI DumpApplicationInstance(BSTR bstrApplicationInstanceID,BSTR bstrDirectory,long lMaxImages,BSTR *pbstrDumpFile) = 0;
-    virtual HRESULT WINAPI get_IsApplicationInstanceDumpSupported(VARIANT_BOOL *pVarBoolDumpSupported) = 0;
-    virtual HRESULT WINAPI CreateServiceForApplication(BSTR bstrApplicationIDOrName,BSTR bstrServiceName,BSTR bstrStartType,BSTR bstrErrorControl,BSTR bstrDependencies,BSTR bstrRunAs,BSTR bstrPassword,VARIANT_BOOL bDesktopOk) = 0;
-    virtual HRESULT WINAPI DeleteServiceForApplication(BSTR bstrApplicationIDOrName) = 0;
-    virtual HRESULT WINAPI GetPartitionID(BSTR bstrApplicationIDOrName,BSTR *pbstrPartitionID) = 0;
-    virtual HRESULT WINAPI GetPartitionName(BSTR bstrApplicationIDOrName,BSTR *pbstrPartitionName) = 0;
-    virtual HRESULT WINAPI put_CurrentPartition(BSTR bstrPartitionIDOrName) = 0;
-    virtual HRESULT WINAPI get_CurrentPartitionID(BSTR *pbstrPartitionID) = 0;
-    virtual HRESULT WINAPI get_CurrentPartitionName(BSTR *pbstrPartitionName) = 0;
-    virtual HRESULT WINAPI get_GlobalPartitionID(BSTR *pbstrGlobalPartitionID) = 0;
-    virtual HRESULT WINAPI FlushPartitionCache(void) = 0;
-    virtual HRESULT WINAPI CopyApplications(BSTR bstrSourcePartitionIDOrName,VARIANT *pVarApplicationID,BSTR bstrDestinationPartitionIDOrName) = 0;
-    virtual HRESULT WINAPI CopyComponents(BSTR bstrSourceApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,BSTR bstrDestinationApplicationIDOrName) = 0;
-    virtual HRESULT WINAPI MoveComponents(BSTR bstrSourceApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,BSTR bstrDestinationApplicationIDOrName) = 0;
-    virtual HRESULT WINAPI AliasComponent(BSTR bstrSrcApplicationIDOrName,BSTR bstrCLSIDOrProgID,BSTR bstrDestApplicationIDOrName,BSTR bstrNewProgId,BSTR bstrNewClsid) = 0;
-    virtual HRESULT WINAPI IsSafeToDelete(BSTR bstrDllName,COMAdminInUse *pCOMAdminInUse) = 0;
-    virtual HRESULT WINAPI ImportUnconfiguredComponents(BSTR bstrApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,VARIANT *pVarComponentType) = 0;
-    virtual HRESULT WINAPI PromoteUnconfiguredComponents(BSTR bstrApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,VARIANT *pVarComponentType) = 0;
-    virtual HRESULT WINAPI ImportComponents(BSTR bstrApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,VARIANT *pVarComponentType) = 0;
-    virtual HRESULT WINAPI get_Is64BitCatalogServer(VARIANT_BOOL *pbIs64Bit) = 0;
-    virtual HRESULT WINAPI ExportPartition(BSTR bstrPartitionIDOrName,BSTR bstrPartitionFileName,long lOptions) = 0;
-    virtual HRESULT WINAPI InstallPartition(BSTR bstrFileName,BSTR bstrDestDirectory,long lOptions,BSTR bstrUserID,BSTR bstrPassword,BSTR bstrRSN) = 0;
-    virtual HRESULT WINAPI QueryApplicationFile2(BSTR bstrApplicationFile,IDispatch **ppFilesForImport) = 0;
-    virtual HRESULT WINAPI GetComponentVersionCount(BSTR bstrCLSIDOrProgID,long *plVersionCount) = 0;
-  };
-#else
-  typedef struct ICOMAdminCatalog2Vtbl {
-    BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(ICOMAdminCatalog2 *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(ICOMAdminCatalog2 *This);
-      ULONG (WINAPI *Release)(ICOMAdminCatalog2 *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(ICOMAdminCatalog2 *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(ICOMAdminCatalog2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(ICOMAdminCatalog2 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(ICOMAdminCatalog2 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *GetCollection)(ICOMAdminCatalog2 *This,BSTR bstrCollName,IDispatch **ppCatalogCollection);
-      HRESULT (WINAPI *Connect)(ICOMAdminCatalog2 *This,BSTR bstrCatalogServerName,IDispatch **ppCatalogCollection);
-      HRESULT (WINAPI *get_MajorVersion)(ICOMAdminCatalog2 *This,long *plMajorVersion);
-      HRESULT (WINAPI *get_MinorVersion)(ICOMAdminCatalog2 *This,long *plMinorVersion);
-      HRESULT (WINAPI *GetCollectionByQuery)(ICOMAdminCatalog2 *This,BSTR bstrCollName,SAFEARRAY **ppsaVarQuery,IDispatch **ppCatalogCollection);
-      HRESULT (WINAPI *ImportComponent)(ICOMAdminCatalog2 *This,BSTR bstrApplIDOrName,BSTR bstrCLSIDOrProgID);
-      HRESULT (WINAPI *InstallComponent)(ICOMAdminCatalog2 *This,BSTR bstrApplIDOrName,BSTR bstrDLL,BSTR bstrTLB,BSTR bstrPSDLL);
-      HRESULT (WINAPI *ShutdownApplication)(ICOMAdminCatalog2 *This,BSTR bstrApplIDOrName);
-      HRESULT (WINAPI *ExportApplication)(ICOMAdminCatalog2 *This,BSTR bstrApplIDOrName,BSTR bstrApplicationFile,long lOptions);
-      HRESULT (WINAPI *InstallApplication)(ICOMAdminCatalog2 *This,BSTR bstrApplicationFile,BSTR bstrDestinationDirectory,long lOptions,BSTR bstrUserId,BSTR bstrPassword,BSTR bstrRSN);
-      HRESULT (WINAPI *StopRouter)(ICOMAdminCatalog2 *This);
-      HRESULT (WINAPI *RefreshRouter)(ICOMAdminCatalog2 *This);
-      HRESULT (WINAPI *StartRouter)(ICOMAdminCatalog2 *This);
-      HRESULT (WINAPI *Reserved1)(ICOMAdminCatalog2 *This);
-      HRESULT (WINAPI *Reserved2)(ICOMAdminCatalog2 *This);
-      HRESULT (WINAPI *InstallMultipleComponents)(ICOMAdminCatalog2 *This,BSTR bstrApplIDOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDs);
-      HRESULT (WINAPI *GetMultipleComponentsInfo)(ICOMAdminCatalog2 *This,BSTR bstrApplIdOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDs,SAFEARRAY **ppsaVarClassNames,SAFEARRAY **ppsaVarFileFlags,SAFEARRAY **ppsaVarComponentFlags);
-      HRESULT (WINAPI *RefreshComponents)(ICOMAdminCatalog2 *This);
-      HRESULT (WINAPI *BackupREGDB)(ICOMAdminCatalog2 *This,BSTR bstrBackupFilePath);
-      HRESULT (WINAPI *RestoreREGDB)(ICOMAdminCatalog2 *This,BSTR bstrBackupFilePath);
-      HRESULT (WINAPI *QueryApplicationFile)(ICOMAdminCatalog2 *This,BSTR bstrApplicationFile,BSTR *pbstrApplicationName,BSTR *pbstrApplicationDescription,VARIANT_BOOL *pbHasUsers,VARIANT_BOOL *pbIsProxy,SAFEARRAY **ppsaVarFileNames);
-      HRESULT (WINAPI *StartApplication)(ICOMAdminCatalog2 *This,BSTR bstrApplIdOrName);
-      HRESULT (WINAPI *ServiceCheck)(ICOMAdminCatalog2 *This,long lService,long *plStatus);
-      HRESULT (WINAPI *InstallMultipleEventClasses)(ICOMAdminCatalog2 *This,BSTR bstrApplIdOrName,SAFEARRAY **ppsaVarFileNames,SAFEARRAY **ppsaVarCLSIDS);
-      HRESULT (WINAPI *InstallEventClass)(ICOMAdminCatalog2 *This,BSTR bstrApplIdOrName,BSTR bstrDLL,BSTR bstrTLB,BSTR bstrPSDLL);
-      HRESULT (WINAPI *GetEventClassesForIID)(ICOMAdminCatalog2 *This,BSTR bstrIID,SAFEARRAY **ppsaVarCLSIDs,SAFEARRAY **ppsaVarProgIDs,SAFEARRAY **ppsaVarDescriptions);
-      HRESULT (WINAPI *GetCollectionByQuery2)(ICOMAdminCatalog2 *This,BSTR bstrCollectionName,VARIANT *pVarQueryStrings,IDispatch **ppCatalogCollection);
-      HRESULT (WINAPI *GetApplicationInstanceIDFromProcessID)(ICOMAdminCatalog2 *This,long lProcessID,BSTR *pbstrApplicationInstanceID);
-      HRESULT (WINAPI *ShutdownApplicationInstances)(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID);
-      HRESULT (WINAPI *PauseApplicationInstances)(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID);
-      HRESULT (WINAPI *ResumeApplicationInstances)(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID);
-      HRESULT (WINAPI *RecycleApplicationInstances)(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID,long lReasonCode);
-      HRESULT (WINAPI *AreApplicationInstancesPaused)(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID,VARIANT_BOOL *pVarBoolPaused);
-      HRESULT (WINAPI *DumpApplicationInstance)(ICOMAdminCatalog2 *This,BSTR bstrApplicationInstanceID,BSTR bstrDirectory,long lMaxImages,BSTR *pbstrDumpFile);
-      HRESULT (WINAPI *get_IsApplicationInstanceDumpSupported)(ICOMAdminCatalog2 *This,VARIANT_BOOL *pVarBoolDumpSupported);
-      HRESULT (WINAPI *CreateServiceForApplication)(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,BSTR bstrServiceName,BSTR bstrStartType,BSTR bstrErrorControl,BSTR bstrDependencies,BSTR bstrRunAs,BSTR bstrPassword,VARIANT_BOOL bDesktopOk);
-      HRESULT (WINAPI *DeleteServiceForApplication)(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName);
-      HRESULT (WINAPI *GetPartitionID)(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,BSTR *pbstrPartitionID);
-      HRESULT (WINAPI *GetPartitionName)(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,BSTR *pbstrPartitionName);
-      HRESULT (WINAPI *put_CurrentPartition)(ICOMAdminCatalog2 *This,BSTR bstrPartitionIDOrName);
-      HRESULT (WINAPI *get_CurrentPartitionID)(ICOMAdminCatalog2 *This,BSTR *pbstrPartitionID);
-      HRESULT (WINAPI *get_CurrentPartitionName)(ICOMAdminCatalog2 *This,BSTR *pbstrPartitionName);
-      HRESULT (WINAPI *get_GlobalPartitionID)(ICOMAdminCatalog2 *This,BSTR *pbstrGlobalPartitionID);
-      HRESULT (WINAPI *FlushPartitionCache)(ICOMAdminCatalog2 *This);
-      HRESULT (WINAPI *CopyApplications)(ICOMAdminCatalog2 *This,BSTR bstrSourcePartitionIDOrName,VARIANT *pVarApplicationID,BSTR bstrDestinationPartitionIDOrName);
-      HRESULT (WINAPI *CopyComponents)(ICOMAdminCatalog2 *This,BSTR bstrSourceApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,BSTR bstrDestinationApplicationIDOrName);
-      HRESULT (WINAPI *MoveComponents)(ICOMAdminCatalog2 *This,BSTR bstrSourceApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,BSTR bstrDestinationApplicationIDOrName);
-      HRESULT (WINAPI *AliasComponent)(ICOMAdminCatalog2 *This,BSTR bstrSrcApplicationIDOrName,BSTR bstrCLSIDOrProgID,BSTR bstrDestApplicationIDOrName,BSTR bstrNewProgId,BSTR bstrNewClsid);
-      HRESULT (WINAPI *IsSafeToDelete)(ICOMAdminCatalog2 *This,BSTR bstrDllName,COMAdminInUse *pCOMAdminInUse);
-      HRESULT (WINAPI *ImportUnconfiguredComponents)(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,VARIANT *pVarComponentType);
-      HRESULT (WINAPI *PromoteUnconfiguredComponents)(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,VARIANT *pVarComponentType);
-      HRESULT (WINAPI *ImportComponents)(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,VARIANT *pVarComponentType);
-      HRESULT (WINAPI *get_Is64BitCatalogServer)(ICOMAdminCatalog2 *This,VARIANT_BOOL *pbIs64Bit);
-      HRESULT (WINAPI *ExportPartition)(ICOMAdminCatalog2 *This,BSTR bstrPartitionIDOrName,BSTR bstrPartitionFileName,long lOptions);
-      HRESULT (WINAPI *InstallPartition)(ICOMAdminCatalog2 *This,BSTR bstrFileName,BSTR bstrDestDirectory,long lOptions,BSTR bstrUserID,BSTR bstrPassword,BSTR bstrRSN);
-      HRESULT (WINAPI *QueryApplicationFile2)(ICOMAdminCatalog2 *This,BSTR bstrApplicationFile,IDispatch **ppFilesForImport);
-      HRESULT (WINAPI *GetComponentVersionCount)(ICOMAdminCatalog2 *This,BSTR bstrCLSIDOrProgID,long *plVersionCount);
-    END_INTERFACE
-  } ICOMAdminCatalog2Vtbl;
-  struct ICOMAdminCatalog2 {
-    CONST_VTBL struct ICOMAdminCatalog2Vtbl *lpVtbl;
-  };
-#ifdef COBJMACROS
-#define ICOMAdminCatalog2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ICOMAdminCatalog2_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ICOMAdminCatalog2_Release(This) (This)->lpVtbl->Release(This)
-#define ICOMAdminCatalog2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define ICOMAdminCatalog2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define ICOMAdminCatalog2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define ICOMAdminCatalog2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define ICOMAdminCatalog2_GetCollection(This,bstrCollName,ppCatalogCollection) (This)->lpVtbl->GetCollection(This,bstrCollName,ppCatalogCollection)
-#define ICOMAdminCatalog2_Connect(This,bstrCatalogServerName,ppCatalogCollection) (This)->lpVtbl->Connect(This,bstrCatalogServerName,ppCatalogCollection)
-#define ICOMAdminCatalog2_get_MajorVersion(This,plMajorVersion) (This)->lpVtbl->get_MajorVersion(This,plMajorVersion)
-#define ICOMAdminCatalog2_get_MinorVersion(This,plMinorVersion) (This)->lpVtbl->get_MinorVersion(This,plMinorVersion)
-#define ICOMAdminCatalog2_GetCollectionByQuery(This,bstrCollName,ppsaVarQuery,ppCatalogCollection) (This)->lpVtbl->GetCollectionByQuery(This,bstrCollName,ppsaVarQuery,ppCatalogCollection)
-#define ICOMAdminCatalog2_ImportComponent(This,bstrApplIDOrName,bstrCLSIDOrProgID) (This)->lpVtbl->ImportComponent(This,bstrApplIDOrName,bstrCLSIDOrProgID)
-#define ICOMAdminCatalog2_InstallComponent(This,bstrApplIDOrName,bstrDLL,bstrTLB,bstrPSDLL) (This)->lpVtbl->InstallComponent(This,bstrApplIDOrName,bstrDLL,bstrTLB,bstrPSDLL)
-#define ICOMAdminCatalog2_ShutdownApplication(This,bstrApplIDOrName) (This)->lpVtbl->ShutdownApplication(This,bstrApplIDOrName)
-#define ICOMAdminCatalog2_ExportApplication(This,bstrApplIDOrName,bstrApplicationFile,lOptions) (This)->lpVtbl->ExportApplication(This,bstrApplIDOrName,bstrApplicationFile,lOptions)
-#define ICOMAdminCatalog2_InstallApplication(This,bstrApplicationFile,bstrDestinationDirectory,lOptions,bstrUserId,bstrPassword,bstrRSN) (This)->lpVtbl->InstallApplication(This,bstrApplicationFile,bstrDestinationDirectory,lOptions,bstrUserId,bstrPassword,bstrRSN)
-#define ICOMAdminCatalog2_StopRouter(This) (This)->lpVtbl->StopRouter(This)
-#define ICOMAdminCatalog2_RefreshRouter(This) (This)->lpVtbl->RefreshRouter(This)
-#define ICOMAdminCatalog2_StartRouter(This) (This)->lpVtbl->StartRouter(This)
-#define ICOMAdminCatalog2_Reserved1(This) (This)->lpVtbl->Reserved1(This)
-#define ICOMAdminCatalog2_Reserved2(This) (This)->lpVtbl->Reserved2(This)
-#define ICOMAdminCatalog2_InstallMultipleComponents(This,bstrApplIDOrName,ppsaVarFileNames,ppsaVarCLSIDs) (This)->lpVtbl->InstallMultipleComponents(This,bstrApplIDOrName,ppsaVarFileNames,ppsaVarCLSIDs)
-#define ICOMAdminCatalog2_GetMultipleComponentsInfo(This,bstrApplIdOrName,ppsaVarFileNames,ppsaVarCLSIDs,ppsaVarClassNames,ppsaVarFileFlags,ppsaVarComponentFlags) (This)->lpVtbl->GetMultipleComponentsInfo(This,bstrApplIdOrName,ppsaVarFileNames,ppsaVarCLSIDs,ppsaVarClassNames,ppsaVarFileFlags,ppsaVarComponentFlags)
-#define ICOMAdminCatalog2_RefreshComponents(This) (This)->lpVtbl->RefreshComponents(This)
-#define ICOMAdminCatalog2_BackupREGDB(This,bstrBackupFilePath) (This)->lpVtbl->BackupREGDB(This,bstrBackupFilePath)
-#define ICOMAdminCatalog2_RestoreREGDB(This,bstrBackupFilePath) (This)->lpVtbl->RestoreREGDB(This,bstrBackupFilePath)
-#define ICOMAdminCatalog2_QueryApplicationFile(This,bstrApplicationFile,pbstrApplicationName,pbstrApplicationDescription,pbHasUsers,pbIsProxy,ppsaVarFileNames) (This)->lpVtbl->QueryApplicationFile(This,bstrApplicationFile,pbstrApplicationName,pbstrApplicationDescription,pbHasUsers,pbIsProxy,ppsaVarFileNames)
-#define ICOMAdminCatalog2_StartApplication(This,bstrApplIdOrName) (This)->lpVtbl->StartApplication(This,bstrApplIdOrName)
-#define ICOMAdminCatalog2_ServiceCheck(This,lService,plStatus) (This)->lpVtbl->ServiceCheck(This,lService,plStatus)
-#define ICOMAdminCatalog2_InstallMultipleEventClasses(This,bstrApplIdOrName,ppsaVarFileNames,ppsaVarCLSIDS) (This)->lpVtbl->InstallMultipleEventClasses(This,bstrApplIdOrName,ppsaVarFileNames,ppsaVarCLSIDS)
-#define ICOMAdminCatalog2_InstallEventClass(This,bstrApplIdOrName,bstrDLL,bstrTLB,bstrPSDLL) (This)->lpVtbl->InstallEventClass(This,bstrApplIdOrName,bstrDLL,bstrTLB,bstrPSDLL)
-#define ICOMAdminCatalog2_GetEventClassesForIID(This,bstrIID,ppsaVarCLSIDs,ppsaVarProgIDs,ppsaVarDescriptions) (This)->lpVtbl->GetEventClassesForIID(This,bstrIID,ppsaVarCLSIDs,ppsaVarProgIDs,ppsaVarDescriptions)
-#define ICOMAdminCatalog2_GetCollectionByQuery2(This,bstrCollectionName,pVarQueryStrings,ppCatalogCollection) (This)->lpVtbl->GetCollectionByQuery2(This,bstrCollectionName,pVarQueryStrings,ppCatalogCollection)
-#define ICOMAdminCatalog2_GetApplicationInstanceIDFromProcessID(This,lProcessID,pbstrApplicationInstanceID) (This)->lpVtbl->GetApplicationInstanceIDFromProcessID(This,lProcessID,pbstrApplicationInstanceID)
-#define ICOMAdminCatalog2_ShutdownApplicationInstances(This,pVarApplicationInstanceID) (This)->lpVtbl->ShutdownApplicationInstances(This,pVarApplicationInstanceID)
-#define ICOMAdminCatalog2_PauseApplicationInstances(This,pVarApplicationInstanceID) (This)->lpVtbl->PauseApplicationInstances(This,pVarApplicationInstanceID)
-#define ICOMAdminCatalog2_ResumeApplicationInstances(This,pVarApplicationInstanceID) (This)->lpVtbl->ResumeApplicationInstances(This,pVarApplicationInstanceID)
-#define ICOMAdminCatalog2_RecycleApplicationInstances(This,pVarApplicationInstanceID,lReasonCode) (This)->lpVtbl->RecycleApplicationInstances(This,pVarApplicationInstanceID,lReasonCode)
-#define ICOMAdminCatalog2_AreApplicationInstancesPaused(This,pVarApplicationInstanceID,pVarBoolPaused) (This)->lpVtbl->AreApplicationInstancesPaused(This,pVarApplicationInstanceID,pVarBoolPaused)
-#define ICOMAdminCatalog2_DumpApplicationInstance(This,bstrApplicationInstanceID,bstrDirectory,lMaxImages,pbstrDumpFile) (This)->lpVtbl->DumpApplicationInstance(This,bstrApplicationInstanceID,bstrDirectory,lMaxImages,pbstrDumpFile)
-#define ICOMAdminCatalog2_get_IsApplicationInstanceDumpSupported(This,pVarBoolDumpSupported) (This)->lpVtbl->get_IsApplicationInstanceDumpSupported(This,pVarBoolDumpSupported)
-#define ICOMAdminCatalog2_CreateServiceForApplication(This,bstrApplicationIDOrName,bstrServiceName,bstrStartType,bstrErrorControl,bstrDependencies,bstrRunAs,bstrPassword,bDesktopOk) (This)->lpVtbl->CreateServiceForApplication(This,bstrApplicationIDOrName,bstrServiceName,bstrStartType,bstrErrorControl,bstrDependencies,bstrRunAs,bstrPassword,bDesktopOk)
-#define ICOMAdminCatalog2_DeleteServiceForApplication(This,bstrApplicationIDOrName) (This)->lpVtbl->DeleteServiceForApplication(This,bstrApplicationIDOrName)
-#define ICOMAdminCatalog2_GetPartitionID(This,bstrApplicationIDOrName,pbstrPartitionID) (This)->lpVtbl->GetPartitionID(This,bstrApplicationIDOrName,pbstrPartitionID)
-#define ICOMAdminCatalog2_GetPartitionName(This,bstrApplicationIDOrName,pbstrPartitionName) (This)->lpVtbl->GetPartitionName(This,bstrApplicationIDOrName,pbstrPartitionName)
-#define ICOMAdminCatalog2_put_CurrentPartition(This,bstrPartitionIDOrName) (This)->lpVtbl->put_CurrentPartition(This,bstrPartitionIDOrName)
-#define ICOMAdminCatalog2_get_CurrentPartitionID(This,pbstrPartitionID) (This)->lpVtbl->get_CurrentPartitionID(This,pbstrPartitionID)
-#define ICOMAdminCatalog2_get_CurrentPartitionName(This,pbstrPartitionName) (This)->lpVtbl->get_CurrentPartitionName(This,pbstrPartitionName)
-#define ICOMAdminCatalog2_get_GlobalPartitionID(This,pbstrGlobalPartitionID) (This)->lpVtbl->get_GlobalPartitionID(This,pbstrGlobalPartitionID)
-#define ICOMAdminCatalog2_FlushPartitionCache(This) (This)->lpVtbl->FlushPartitionCache(This)
-#define ICOMAdminCatalog2_CopyApplications(This,bstrSourcePartitionIDOrName,pVarApplicationID,bstrDestinationPartitionIDOrName) (This)->lpVtbl->CopyApplications(This,bstrSourcePartitionIDOrName,pVarApplicationID,bstrDestinationPartitionIDOrName)
-#define ICOMAdminCatalog2_CopyComponents(This,bstrSourceApplicationIDOrName,pVarCLSIDOrProgID,bstrDestinationApplicationIDOrName) (This)->lpVtbl->CopyComponents(This,bstrSourceApplicationIDOrName,pVarCLSIDOrProgID,bstrDestinationApplicationIDOrName)
-#define ICOMAdminCatalog2_MoveComponents(This,bstrSourceApplicationIDOrName,pVarCLSIDOrProgID,bstrDestinationApplicationIDOrName) (This)->lpVtbl->MoveComponents(This,bstrSourceApplicationIDOrName,pVarCLSIDOrProgID,bstrDestinationApplicationIDOrName)
-#define ICOMAdminCatalog2_AliasComponent(This,bstrSrcApplicationIDOrName,bstrCLSIDOrProgID,bstrDestApplicationIDOrName,bstrNewProgId,bstrNewClsid) (This)->lpVtbl->AliasComponent(This,bstrSrcApplicationIDOrName,bstrCLSIDOrProgID,bstrDestApplicationIDOrName,bstrNewProgId,bstrNewClsid)
-#define ICOMAdminCatalog2_IsSafeToDelete(This,bstrDllName,pCOMAdminInUse) (This)->lpVtbl->IsSafeToDelete(This,bstrDllName,pCOMAdminInUse)
-#define ICOMAdminCatalog2_ImportUnconfiguredComponents(This,bstrApplicationIDOrName,pVarCLSIDOrProgID,pVarComponentType) (This)->lpVtbl->ImportUnconfiguredComponents(This,bstrApplicationIDOrName,pVarCLSIDOrProgID,pVarComponentType)
-#define ICOMAdminCatalog2_PromoteUnconfiguredComponents(This,bstrApplicationIDOrName,pVarCLSIDOrProgID,pVarComponentType) (This)->lpVtbl->PromoteUnconfiguredComponents(This,bstrApplicationIDOrName,pVarCLSIDOrProgID,pVarComponentType)
-#define ICOMAdminCatalog2_ImportComponents(This,bstrApplicationIDOrName,pVarCLSIDOrProgID,pVarComponentType) (This)->lpVtbl->ImportComponents(This,bstrApplicationIDOrName,pVarCLSIDOrProgID,pVarComponentType)
-#define ICOMAdminCatalog2_get_Is64BitCatalogServer(This,pbIs64Bit) (This)->lpVtbl->get_Is64BitCatalogServer(This,pbIs64Bit)
-#define ICOMAdminCatalog2_ExportPartition(This,bstrPartitionIDOrName,bstrPartitionFileName,lOptions) (This)->lpVtbl->ExportPartition(This,bstrPartitionIDOrName,bstrPartitionFileName,lOptions)
-#define ICOMAdminCatalog2_InstallPartition(This,bstrFileName,bstrDestDirectory,lOptions,bstrUserID,bstrPassword,bstrRSN) (This)->lpVtbl->InstallPartition(This,bstrFileName,bstrDestDirectory,lOptions,bstrUserID,bstrPassword,bstrRSN)
-#define ICOMAdminCatalog2_QueryApplicationFile2(This,bstrApplicationFile,ppFilesForImport) (This)->lpVtbl->QueryApplicationFile2(This,bstrApplicationFile,ppFilesForImport)
-#define ICOMAdminCatalog2_GetComponentVersionCount(This,bstrCLSIDOrProgID,plVersionCount) (This)->lpVtbl->GetComponentVersionCount(This,bstrCLSIDOrProgID,plVersionCount)
-#endif
-#endif
-  HRESULT WINAPI ICOMAdminCatalog2_GetCollectionByQuery2_Proxy(ICOMAdminCatalog2 *This,BSTR bstrCollectionName,VARIANT *pVarQueryStrings,IDispatch **ppCatalogCollection);
-  void __RPC_STUB ICOMAdminCatalog2_GetCollectionByQuery2_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_GetApplicationInstanceIDFromProcessID_Proxy(ICOMAdminCatalog2 *This,long lProcessID,BSTR *pbstrApplicationInstanceID);
-  void __RPC_STUB ICOMAdminCatalog2_GetApplicationInstanceIDFromProcessID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_ShutdownApplicationInstances_Proxy(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID);
-  void __RPC_STUB ICOMAdminCatalog2_ShutdownApplicationInstances_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_PauseApplicationInstances_Proxy(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID);
-  void __RPC_STUB ICOMAdminCatalog2_PauseApplicationInstances_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_ResumeApplicationInstances_Proxy(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID);
-  void __RPC_STUB ICOMAdminCatalog2_ResumeApplicationInstances_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_RecycleApplicationInstances_Proxy(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID,long lReasonCode);
-  void __RPC_STUB ICOMAdminCatalog2_RecycleApplicationInstances_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_AreApplicationInstancesPaused_Proxy(ICOMAdminCatalog2 *This,VARIANT *pVarApplicationInstanceID,VARIANT_BOOL *pVarBoolPaused);
-  void __RPC_STUB ICOMAdminCatalog2_AreApplicationInstancesPaused_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_DumpApplicationInstance_Proxy(ICOMAdminCatalog2 *This,BSTR bstrApplicationInstanceID,BSTR bstrDirectory,long lMaxImages,BSTR *pbstrDumpFile);
-  void __RPC_STUB ICOMAdminCatalog2_DumpApplicationInstance_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_get_IsApplicationInstanceDumpSupported_Proxy(ICOMAdminCatalog2 *This,VARIANT_BOOL *pVarBoolDumpSupported);
-  void __RPC_STUB ICOMAdminCatalog2_get_IsApplicationInstanceDumpSupported_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_CreateServiceForApplication_Proxy(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,BSTR bstrServiceName,BSTR bstrStartType,BSTR bstrErrorControl,BSTR bstrDependencies,BSTR bstrRunAs,BSTR bstrPassword,VARIANT_BOOL bDesktopOk);
-  void __RPC_STUB ICOMAdminCatalog2_CreateServiceForApplication_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_DeleteServiceForApplication_Proxy(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName);
-  void __RPC_STUB ICOMAdminCatalog2_DeleteServiceForApplication_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_GetPartitionID_Proxy(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,BSTR *pbstrPartitionID);
-  void __RPC_STUB ICOMAdminCatalog2_GetPartitionID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_GetPartitionName_Proxy(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,BSTR *pbstrPartitionName);
-  void __RPC_STUB ICOMAdminCatalog2_GetPartitionName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_put_CurrentPartition_Proxy(ICOMAdminCatalog2 *This,BSTR bstrPartitionIDOrName);
-  void __RPC_STUB ICOMAdminCatalog2_put_CurrentPartition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_get_CurrentPartitionID_Proxy(ICOMAdminCatalog2 *This,BSTR *pbstrPartitionID);
-  void __RPC_STUB ICOMAdminCatalog2_get_CurrentPartitionID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_get_CurrentPartitionName_Proxy(ICOMAdminCatalog2 *This,BSTR *pbstrPartitionName);
-  void __RPC_STUB ICOMAdminCatalog2_get_CurrentPartitionName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_get_GlobalPartitionID_Proxy(ICOMAdminCatalog2 *This,BSTR *pbstrGlobalPartitionID);
-  void __RPC_STUB ICOMAdminCatalog2_get_GlobalPartitionID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_FlushPartitionCache_Proxy(ICOMAdminCatalog2 *This);
-  void __RPC_STUB ICOMAdminCatalog2_FlushPartitionCache_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_CopyApplications_Proxy(ICOMAdminCatalog2 *This,BSTR bstrSourcePartitionIDOrName,VARIANT *pVarApplicationID,BSTR bstrDestinationPartitionIDOrName);
-  void __RPC_STUB ICOMAdminCatalog2_CopyApplications_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_CopyComponents_Proxy(ICOMAdminCatalog2 *This,BSTR bstrSourceApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,BSTR bstrDestinationApplicationIDOrName);
-  void __RPC_STUB ICOMAdminCatalog2_CopyComponents_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_MoveComponents_Proxy(ICOMAdminCatalog2 *This,BSTR bstrSourceApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,BSTR bstrDestinationApplicationIDOrName);
-  void __RPC_STUB ICOMAdminCatalog2_MoveComponents_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_AliasComponent_Proxy(ICOMAdminCatalog2 *This,BSTR bstrSrcApplicationIDOrName,BSTR bstrCLSIDOrProgID,BSTR bstrDestApplicationIDOrName,BSTR bstrNewProgId,BSTR bstrNewClsid);
-  void __RPC_STUB ICOMAdminCatalog2_AliasComponent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_IsSafeToDelete_Proxy(ICOMAdminCatalog2 *This,BSTR bstrDllName,COMAdminInUse *pCOMAdminInUse);
-  void __RPC_STUB ICOMAdminCatalog2_IsSafeToDelete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_ImportUnconfiguredComponents_Proxy(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,VARIANT *pVarComponentType);
-  void __RPC_STUB ICOMAdminCatalog2_ImportUnconfiguredComponents_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_PromoteUnconfiguredComponents_Proxy(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,VARIANT *pVarComponentType);
-  void __RPC_STUB ICOMAdminCatalog2_PromoteUnconfiguredComponents_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_ImportComponents_Proxy(ICOMAdminCatalog2 *This,BSTR bstrApplicationIDOrName,VARIANT *pVarCLSIDOrProgID,VARIANT *pVarComponentType);
-  void __RPC_STUB ICOMAdminCatalog2_ImportComponents_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_get_Is64BitCatalogServer_Proxy(ICOMAdminCatalog2 *This,VARIANT_BOOL *pbIs64Bit);
-  void __RPC_STUB ICOMAdminCatalog2_get_Is64BitCatalogServer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_ExportPartition_Proxy(ICOMAdminCatalog2 *This,BSTR bstrPartitionIDOrName,BSTR bstrPartitionFileName,long lOptions);
-  void __RPC_STUB ICOMAdminCatalog2_ExportPartition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_InstallPartition_Proxy(ICOMAdminCatalog2 *This,BSTR bstrFileName,BSTR bstrDestDirectory,long lOptions,BSTR bstrUserID,BSTR bstrPassword,BSTR bstrRSN);
-  void __RPC_STUB ICOMAdminCatalog2_InstallPartition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_QueryApplicationFile2_Proxy(ICOMAdminCatalog2 *This,BSTR bstrApplicationFile,IDispatch **ppFilesForImport);
-  void __RPC_STUB ICOMAdminCatalog2_QueryApplicationFile2_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICOMAdminCatalog2_GetComponentVersionCount_Proxy(ICOMAdminCatalog2 *This,BSTR bstrCLSIDOrProgID,long *plVersionCount);
-  void __RPC_STUB ICOMAdminCatalog2_GetComponentVersionCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
-
-#ifndef __ICatalogObject_INTERFACE_DEFINED__
-#define __ICatalogObject_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_ICatalogObject;
-#if defined(__cplusplus) && !defined(CINTERFACE)
-  struct ICatalogObject : public IDispatch {
-  public:
-    virtual HRESULT WINAPI get_Value(BSTR bstrPropName,VARIANT *pvarRetVal) = 0;
-    virtual HRESULT WINAPI put_Value(BSTR bstrPropName,VARIANT val) = 0;
-    virtual HRESULT WINAPI get_Key(VARIANT *pvarRetVal) = 0;
-    virtual HRESULT WINAPI get_Name(VARIANT *pvarRetVal) = 0;
-    virtual HRESULT WINAPI IsPropertyReadOnly(BSTR bstrPropName,VARIANT_BOOL *pbRetVal) = 0;
-    virtual HRESULT WINAPI get_Valid(VARIANT_BOOL *pbRetVal) = 0;
-    virtual HRESULT WINAPI IsPropertyWriteOnly(BSTR bstrPropName,VARIANT_BOOL *pbRetVal) = 0;
-  };
-#else
-  typedef struct ICatalogObjectVtbl {
-    BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(ICatalogObject *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(ICatalogObject *This);
-      ULONG (WINAPI *Release)(ICatalogObject *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(ICatalogObject *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(ICatalogObject *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(ICatalogObject *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(ICatalogObject *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *get_Value)(ICatalogObject *This,BSTR bstrPropName,VARIANT *pvarRetVal);
-      HRESULT (WINAPI *put_Value)(ICatalogObject *This,BSTR bstrPropName,VARIANT val);
-      HRESULT (WINAPI *get_Key)(ICatalogObject *This,VARIANT *pvarRetVal);
-      HRESULT (WINAPI *get_Name)(ICatalogObject *This,VARIANT *pvarRetVal);
-      HRESULT (WINAPI *IsPropertyReadOnly)(ICatalogObject *This,BSTR bstrPropName,VARIANT_BOOL *pbRetVal);
-      HRESULT (WINAPI *get_Valid)(ICatalogObject *This,VARIANT_BOOL *pbRetVal);
-      HRESULT (WINAPI *IsPropertyWriteOnly)(ICatalogObject *This,BSTR bstrPropName,VARIANT_BOOL *pbRetVal);
-    END_INTERFACE
-  } ICatalogObjectVtbl;
-  struct ICatalogObject {
-    CONST_VTBL struct ICatalogObjectVtbl *lpVtbl;
-  };
-#ifdef COBJMACROS
-#define ICatalogObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ICatalogObject_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ICatalogObject_Release(This) (This)->lpVtbl->Release(This)
-#define ICatalogObject_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define ICatalogObject_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define ICatalogObject_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define ICatalogObject_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define ICatalogObject_get_Value(This,bstrPropName,pvarRetVal) (This)->lpVtbl->get_Value(This,bstrPropName,pvarRetVal)
-#define ICatalogObject_put_Value(This,bstrPropName,val) (This)->lpVtbl->put_Value(This,bstrPropName,val)
-#define ICatalogObject_get_Key(This,pvarRetVal) (This)->lpVtbl->get_Key(This,pvarRetVal)
-#define ICatalogObject_get_Name(This,pvarRetVal) (This)->lpVtbl->get_Name(This,pvarRetVal)
-#define ICatalogObject_IsPropertyReadOnly(This,bstrPropName,pbRetVal) (This)->lpVtbl->IsPropertyReadOnly(This,bstrPropName,pbRetVal)
-#define ICatalogObject_get_Valid(This,pbRetVal) (This)->lpVtbl->get_Valid(This,pbRetVal)
-#define ICatalogObject_IsPropertyWriteOnly(This,bstrPropName,pbRetVal) (This)->lpVtbl->IsPropertyWriteOnly(This,bstrPropName,pbRetVal)
-#endif
-#endif
-  HRESULT WINAPI ICatalogObject_get_Value_Proxy(ICatalogObject *This,BSTR bstrPropName,VARIANT *pvarRetVal);
-  void __RPC_STUB ICatalogObject_get_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogObject_put_Value_Proxy(ICatalogObject *This,BSTR bstrPropName,VARIANT val);
-  void __RPC_STUB ICatalogObject_put_Value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogObject_get_Key_Proxy(ICatalogObject *This,VARIANT *pvarRetVal);
-  void __RPC_STUB ICatalogObject_get_Key_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogObject_get_Name_Proxy(ICatalogObject *This,VARIANT *pvarRetVal);
-  void __RPC_STUB ICatalogObject_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogObject_IsPropertyReadOnly_Proxy(ICatalogObject *This,BSTR bstrPropName,VARIANT_BOOL *pbRetVal);
-  void __RPC_STUB ICatalogObject_IsPropertyReadOnly_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogObject_get_Valid_Proxy(ICatalogObject *This,VARIANT_BOOL *pbRetVal);
-  void __RPC_STUB ICatalogObject_get_Valid_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogObject_IsPropertyWriteOnly_Proxy(ICatalogObject *This,BSTR bstrPropName,VARIANT_BOOL *pbRetVal);
-  void __RPC_STUB ICatalogObject_IsPropertyWriteOnly_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
-
-#ifndef __ICatalogCollection_INTERFACE_DEFINED__
-#define __ICatalogCollection_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_ICatalogCollection;
-#if defined(__cplusplus) && !defined(CINTERFACE)
-  struct ICatalogCollection : public IDispatch {
-  public:
-    virtual HRESULT WINAPI get__NewEnum(IUnknown **ppEnumVariant) = 0;
-    virtual HRESULT WINAPI get_Item(long lIndex,IDispatch **ppCatalogObject) = 0;
-    virtual HRESULT WINAPI get_Count(long *plObjectCount) = 0;
-    virtual HRESULT WINAPI Remove(long lIndex) = 0;
-    virtual HRESULT WINAPI Add(IDispatch **ppCatalogObject) = 0;
-    virtual HRESULT WINAPI Populate(void) = 0;
-    virtual HRESULT WINAPI SaveChanges(long *pcChanges) = 0;
-    virtual HRESULT WINAPI GetCollection(BSTR bstrCollName,VARIANT varObjectKey,IDispatch **ppCatalogCollection) = 0;
-    virtual HRESULT WINAPI get_Name(VARIANT *pVarNamel) = 0;
-    virtual HRESULT WINAPI get_AddEnabled(VARIANT_BOOL *pVarBool) = 0;
-    virtual HRESULT WINAPI get_RemoveEnabled(VARIANT_BOOL *pVarBool) = 0;
-    virtual HRESULT WINAPI GetUtilInterface(IDispatch **ppIDispatch) = 0;
-    virtual HRESULT WINAPI get_DataStoreMajorVersion(long *plMajorVersion) = 0;
-    virtual HRESULT WINAPI get_DataStoreMinorVersion(long *plMinorVersionl) = 0;
-    virtual HRESULT WINAPI PopulateByKey(SAFEARRAY *psaKeys) = 0;
-    virtual HRESULT WINAPI PopulateByQuery(BSTR bstrQueryString,long lQueryType) = 0;
-  };
-#else
-  typedef struct ICatalogCollectionVtbl {
-    BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(ICatalogCollection *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(ICatalogCollection *This);
-      ULONG (WINAPI *Release)(ICatalogCollection *This);
-      HRESULT (WINAPI *GetTypeInfoCount)(ICatalogCollection *This,UINT *pctinfo);
-      HRESULT (WINAPI *GetTypeInfo)(ICatalogCollection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
-      HRESULT (WINAPI *GetIDsOfNames)(ICatalogCollection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
-      HRESULT (WINAPI *Invoke)(ICatalogCollection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
-      HRESULT (WINAPI *get__NewEnum)(ICatalogCollection *This,IUnknown **ppEnumVariant);
-      HRESULT (WINAPI *get_Item)(ICatalogCollection *This,long lIndex,IDispatch **ppCatalogObject);
-      HRESULT (WINAPI *get_Count)(ICatalogCollection *This,long *plObjectCount);
-      HRESULT (WINAPI *Remove)(ICatalogCollection *This,long lIndex);
-      HRESULT (WINAPI *Add)(ICatalogCollection *This,IDispatch **ppCatalogObject);
-      HRESULT (WINAPI *Populate)(ICatalogCollection *This);
-      HRESULT (WINAPI *SaveChanges)(ICatalogCollection *This,long *pcChanges);
-      HRESULT (WINAPI *GetCollection)(ICatalogCollection *This,BSTR bstrCollName,VARIANT varObjectKey,IDispatch **ppCatalogCollection);
-      HRESULT (WINAPI *get_Name)(ICatalogCollection *This,VARIANT *pVarNamel);
-      HRESULT (WINAPI *get_AddEnabled)(ICatalogCollection *This,VARIANT_BOOL *pVarBool);
-      HRESULT (WINAPI *get_RemoveEnabled)(ICatalogCollection *This,VARIANT_BOOL *pVarBool);
-      HRESULT (WINAPI *GetUtilInterface)(ICatalogCollection *This,IDispatch **ppIDispatch);
-      HRESULT (WINAPI *get_DataStoreMajorVersion)(ICatalogCollection *This,long *plMajorVersion);
-      HRESULT (WINAPI *get_DataStoreMinorVersion)(ICatalogCollection *This,long *plMinorVersionl);
-      HRESULT (WINAPI *PopulateByKey)(ICatalogCollection *This,SAFEARRAY *psaKeys);
-      HRESULT (WINAPI *PopulateByQuery)(ICatalogCollection *This,BSTR bstrQueryString,long lQueryType);
-    END_INTERFACE
-  } ICatalogCollectionVtbl;
-  struct ICatalogCollection {
-    CONST_VTBL struct ICatalogCollectionVtbl *lpVtbl;
-  };
-#ifdef COBJMACROS
-#define ICatalogCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define ICatalogCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define ICatalogCollection_Release(This) (This)->lpVtbl->Release(This)
-#define ICatalogCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
-#define ICatalogCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
-#define ICatalogCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
-#define ICatalogCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
-#define ICatalogCollection_get__NewEnum(This,ppEnumVariant) (This)->lpVtbl->get__NewEnum(This,ppEnumVariant)
-#define ICatalogCollection_get_Item(This,lIndex,ppCatalogObject) (This)->lpVtbl->get_Item(This,lIndex,ppCatalogObject)
-#define ICatalogCollection_get_Count(This,plObjectCount) (This)->lpVtbl->get_Count(This,plObjectCount)
-#define ICatalogCollection_Remove(This,lIndex) (This)->lpVtbl->Remove(This,lIndex)
-#define ICatalogCollection_Add(This,ppCatalogObject) (This)->lpVtbl->Add(This,ppCatalogObject)
-#define ICatalogCollection_Populate(This) (This)->lpVtbl->Populate(This)
-#define ICatalogCollection_SaveChanges(This,pcChanges) (This)->lpVtbl->SaveChanges(This,pcChanges)
-#define ICatalogCollection_GetCollection(This,bstrCollName,varObjectKey,ppCatalogCollection) (This)->lpVtbl->GetCollection(This,bstrCollName,varObjectKey,ppCatalogCollection)
-#define ICatalogCollection_get_Name(This,pVarNamel) (This)->lpVtbl->get_Name(This,pVarNamel)
-#define ICatalogCollection_get_AddEnabled(This,pVarBool) (This)->lpVtbl->get_AddEnabled(This,pVarBool)
-#define ICatalogCollection_get_RemoveEnabled(This,pVarBool) (This)->lpVtbl->get_RemoveEnabled(This,pVarBool)
-#define ICatalogCollection_GetUtilInterface(This,ppIDispatch) (This)->lpVtbl->GetUtilInterface(This,ppIDispatch)
-#define ICatalogCollection_get_DataStoreMajorVersion(This,plMajorVersion) (This)->lpVtbl->get_DataStoreMajorVersion(This,plMajorVersion)
-#define ICatalogCollection_get_DataStoreMinorVersion(This,plMinorVersionl) (This)->lpVtbl->get_DataStoreMinorVersion(This,plMinorVersionl)
-#define ICatalogCollection_PopulateByKey(This,psaKeys) (This)->lpVtbl->PopulateByKey(This,psaKeys)
-#define ICatalogCollection_PopulateByQuery(This,bstrQueryString,lQueryType) (This)->lpVtbl->PopulateByQuery(This,bstrQueryString,lQueryType)
-#endif
-#endif
-  HRESULT WINAPI ICatalogCollection_get__NewEnum_Proxy(ICatalogCollection *This,IUnknown **ppEnumVariant);
-  void __RPC_STUB ICatalogCollection_get__NewEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_get_Item_Proxy(ICatalogCollection *This,long lIndex,IDispatch **ppCatalogObject);
-  void __RPC_STUB ICatalogCollection_get_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_get_Count_Proxy(ICatalogCollection *This,long *plObjectCount);
-  void __RPC_STUB ICatalogCollection_get_Count_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_Remove_Proxy(ICatalogCollection *This,long lIndex);
-  void __RPC_STUB ICatalogCollection_Remove_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_Add_Proxy(ICatalogCollection *This,IDispatch **ppCatalogObject);
-  void __RPC_STUB ICatalogCollection_Add_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_Populate_Proxy(ICatalogCollection *This);
-  void __RPC_STUB ICatalogCollection_Populate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_SaveChanges_Proxy(ICatalogCollection *This,long *pcChanges);
-  void __RPC_STUB ICatalogCollection_SaveChanges_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_GetCollection_Proxy(ICatalogCollection *This,BSTR bstrCollName,VARIANT varObjectKey,IDispatch **ppCatalogCollection);
-  void __RPC_STUB ICatalogCollection_GetCollection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_get_Name_Proxy(ICatalogCollection *This,VARIANT *pVarNamel);
-  void __RPC_STUB ICatalogCollection_get_Name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_get_AddEnabled_Proxy(ICatalogCollection *This,VARIANT_BOOL *pVarBool);
-  void __RPC_STUB ICatalogCollection_get_AddEnabled_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_get_RemoveEnabled_Proxy(ICatalogCollection *This,VARIANT_BOOL *pVarBool);
-  void __RPC_STUB ICatalogCollection_get_RemoveEnabled_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_GetUtilInterface_Proxy(ICatalogCollection *This,IDispatch **ppIDispatch);
-  void __RPC_STUB ICatalogCollection_GetUtilInterface_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_get_DataStoreMajorVersion_Proxy(ICatalogCollection *This,long *plMajorVersion);
-  void __RPC_STUB ICatalogCollection_get_DataStoreMajorVersion_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_get_DataStoreMinorVersion_Proxy(ICatalogCollection *This,long *plMinorVersionl);
-  void __RPC_STUB ICatalogCollection_get_DataStoreMinorVersion_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_PopulateByKey_Proxy(ICatalogCollection *This,SAFEARRAY *psaKeys);
-  void __RPC_STUB ICatalogCollection_PopulateByKey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI ICatalogCollection_PopulateByQuery_Proxy(ICatalogCollection *This,BSTR bstrQueryString,long lQueryType);
-  void __RPC_STUB ICatalogCollection_PopulateByQuery_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
-
-#ifndef __COMAdmin_LIBRARY_DEFINED__
-#define __COMAdmin_LIBRARY_DEFINED__
-  typedef enum COMAdminComponentType {
-    COMAdmin32BitComponent = 0x1,COMAdmin64BitComponent = 0x2
-  } COMAdminComponentType;
-
-  typedef enum COMAdminApplicationInstallOptions {
-    COMAdminInstallNoUsers = 0,COMAdminInstallUsers = 1,COMAdminInstallForceOverwriteOfFiles = 2
-  } COMAdminApplicationInstallOptions;
-
-  typedef enum COMAdminApplicationExportOptions {
-    COMAdminExportNoUsers = 0,COMAdminExportUsers = 1,COMAdminExportApplicationProxy = 2,COMAdminExportForceOverwriteOfFiles = 4,
-    COMAdminExportIn10Format = 16
-  } COMAdminApplicationExportOptions;
-
-  typedef enum COMAdminThreadingModels {
-    COMAdminThreadingModelApartment = 0,COMAdminThreadingModelFree = 1,COMAdminThreadingModelMain = 2,COMAdminThreadingModelBoth = 3,
-    COMAdminThreadingModelNeutral = 4,COMAdminThreadingModelNotSpecified = 5
-  } COMAdminThreadingModels;
-
-  typedef enum COMAdminTransactionOptions {
-    COMAdminTransactionIgnored = 0,COMAdminTransactionNone = 1,COMAdminTransactionSupported = 2,COMAdminTransactionRequired = 3,
-    COMAdminTransactionRequiresNew = 4
-  } COMAdminTransactionOptions;
-
-  typedef enum COMAdminTxIsolationLevelOptions {
-    COMAdminTxIsolationLevelAny = 0,COMAdminTxIsolationLevelReadUnCommitted = COMAdminTxIsolationLevelAny + 1,
-    COMAdminTxIsolationLevelReadCommitted = COMAdminTxIsolationLevelReadUnCommitted + 1,
-    COMAdminTxIsolationLevelRepeatableRead = COMAdminTxIsolationLevelReadCommitted + 1,
-    COMAdminTxIsolationLevelSerializable = COMAdminTxIsolationLevelRepeatableRead + 1
-  } COMAdminTxIsolationLevelOptions;
-
-  typedef enum COMAdminSynchronizationOptions {
-    COMAdminSynchronizationIgnored = 0,COMAdminSynchronizationNone = 1,COMAdminSynchronizationSupported = 2,COMAdminSynchronizationRequired = 3,
-    COMAdminSynchronizationRequiresNew = 4
-  } COMAdminSynchronizationOptions;
-
-  typedef enum COMAdminActivationOptions {
-    COMAdminActivationInproc = 0,COMAdminActivationLocal = 1
-  } COMAdminActivationOptions;
-
-  typedef enum COMAdminAccessChecksLevelOptions {
-    COMAdminAccessChecksApplicationLevel = 0,COMAdminAccessChecksApplicationComponentLevel = 1
-  } COMAdminAccessChecksLevelOptions;
-
-  typedef enum COMAdminAuthenticationLevelOptions {
-    COMAdminAuthenticationDefault = 0,COMAdminAuthenticationNone = 1,COMAdminAuthenticationConnect = 2,COMAdminAuthenticationCall = 3,
-    COMAdminAuthenticationPacket = 4,COMAdminAuthenticationIntegrity = 5,COMAdminAuthenticationPrivacy = 6
-  } COMAdminAuthenticationLevelOptions;
-
-  typedef enum COMAdminImpersonationLevelOptions {
-    COMAdminImpersonationAnonymous = 1,COMAdminImpersonationIdentify = 2,COMAdminImpersonationImpersonate = 3,COMAdminImpersonationDelegate = 4
-  } COMAdminImpersonationLevelOptions;
-
-  typedef enum COMAdminAuthenticationCapabilitiesOptions {
-    COMAdminAuthenticationCapabilitiesNone = 0,COMAdminAuthenticationCapabilitiesSecureReference = 0x2,
-    COMAdminAuthenticationCapabilitiesStaticCloaking = 0x20,COMAdminAuthenticationCapabilitiesDynamicCloaking = 0x40
-  } COMAdminAuthenticationCapabilitiesOptions;
-
-  typedef enum COMAdminOS {
-    COMAdminOSNotInitialized = 0,COMAdminOSWindows3_1 = 1,COMAdminOSWindows9x = 2,COMAdminOSWindows2000 = 3,
-    COMAdminOSWindows2000AdvancedServer = 4,COMAdminOSWindows2000Unknown = 5,COMAdminOSUnknown = 6,COMAdminOSWindowsXPPersonal = 11,
-    COMAdminOSWindowsXPProfessional = 12,COMAdminOSWindowsNETStandardServer = 13,COMAdminOSWindowsNETEnterpriseServer = 14,
-    COMAdminOSWindowsNETDatacenterServer = 15,COMAdminOSWindowsNETWebServer = 16,COMAdminOSWindowsLonghornPersonal = 17,
-    COMAdminOSWindowsLonghornProfessional = 18,COMAdminOSWindowsLonghornStandardServer = 19,COMAdminOSWindowsLonghornEnterpriseServer = 20,
-    COMAdminOSWindowsLonghornDatacenterServer = 21,COMAdminOSWindowsLonghornWebServer = 22
-  } COMAdminOS;
-
-  typedef enum COMAdminServiceOptions {
-    COMAdminServiceLoadBalanceRouter = 1
-  } COMAdminServiceOptions;
-
-  typedef enum COMAdminServiceStatusOptions {
-    COMAdminServiceStopped = 0,COMAdminServiceStartPending = COMAdminServiceStopped + 1,COMAdminServiceStopPending = COMAdminServiceStartPending + 1,
-    COMAdminServiceRunning = COMAdminServiceStopPending + 1,COMAdminServiceContinuePending = COMAdminServiceRunning + 1,
-    COMAdminServicePausePending = COMAdminServiceContinuePending + 1,COMAdminServicePaused = COMAdminServicePausePending + 1,
-    COMAdminServiceUnknownState = COMAdminServicePaused + 1
-  } COMAdminServiceStatusOptions;
-
-  typedef enum COMAdminQCMessageAuthenticateOptions {
-    COMAdminQCMessageAuthenticateSecureApps = 0,COMAdminQCMessageAuthenticateOff = 1,COMAdminQCMessageAuthenticateOn = 2
-  } COMAdminQCMessageAuthenticateOptions;
-
-  typedef enum COMAdminFileFlags {
-    COMAdminFileFlagLoadable = 0x1,COMAdminFileFlagCOM = 0x2,COMAdminFileFlagContainsPS = 0x4,COMAdminFileFlagContainsComp = 0x8,
-    COMAdminFileFlagContainsTLB = 0x10,COMAdminFileFlagSelfReg = 0x20,COMAdminFileFlagSelfUnReg = 0x40,COMAdminFileFlagUnloadableDLL = 0x80,
-    COMAdminFileFlagDoesNotExist = 0x100,COMAdminFileFlagAlreadyInstalled = 0x200,COMAdminFileFlagBadTLB = 0x400,
-    COMAdminFileFlagGetClassObjFailed = 0x800,COMAdminFileFlagClassNotAvailable = 0x1000,COMAdminFileFlagRegistrar = 0x2000,
-    COMAdminFileFlagNoRegistrar = 0x4000,COMAdminFileFlagDLLRegsvrFailed = 0x8000,COMAdminFileFlagRegTLBFailed = 0x10000,
-    COMAdminFileFlagRegistrarFailed = 0x20000,COMAdminFileFlagError = 0x40000
-  } COMAdminFileFlags;
-
-  typedef enum COMAdminComponentFlags {
-    COMAdminCompFlagTypeInfoFound = 0x1,COMAdminCompFlagCOMPlusPropertiesFound = 0x2,COMAdminCompFlagProxyFound = 0x4,
-    COMAdminCompFlagInterfacesFound = 0x8,COMAdminCompFlagAlreadyInstalled = 0x10,COMAdminCompFlagNotInApplication = 0x20
-  } COMAdminComponentFlags;
-
-#define COMAdminCollectionRoot ("Root")
-#define COMAdminCollectionApplications ("Applications")
-#define COMAdminCollectionComponents ("Components")
-#define COMAdminCollectionComputerList ("ComputerList")
-#define COMAdminCollectionApplicationCluster ("ApplicationCluster")
-#define COMAdminCollectionLocalComputer ("LocalComputer")
-#define COMAdminCollectionInprocServers ("InprocServers")
-#define COMAdminCollectionRelatedCollectionInfo ("RelatedCollectionInfo")
-#define COMAdminCollectionPropertyInfo ("PropertyInfo")
-#define COMAdminCollectionRoles ("Roles")
-#define COMAdminCollectionErrorInfo ("ErrorInfo")
-#define COMAdminCollectionInterfacesForComponent ("InterfacesForComponent")
-#define COMAdminCollectionRolesForComponent ("RolesForComponent")
-#define COMAdminCollectionMethodsForInterface ("MethodsForInterface")
-#define COMAdminCollectionRolesForInterface ("RolesForInterface")
-#define COMAdminCollectionRolesForMethod ("RolesForMethod")
-#define COMAdminCollectionUsersInRole ("UsersInRole")
-#define COMAdminCollectionDCOMProtocols ("DCOMProtocols")
-#define COMAdminCollectionPartitions ("Partitions")
-
-  typedef enum COMAdminErrorCodes {
-    COMAdminErrObjectErrors = (HRESULT)0x80110401L,COMAdminErrObjectInvalid = (HRESULT)0x80110402L,COMAdminErrKeyMissing = (HRESULT)0x80110403L,
-    COMAdminErrAlreadyInstalled = (HRESULT)0x80110404L,COMAdminErrAppFileWriteFail = (HRESULT)0x80110407L,
-    COMAdminErrAppFileReadFail = (HRESULT)0x80110408L,COMAdminErrAppFileVersion = (HRESULT)0x80110409L,COMAdminErrBadPath = (HRESULT)0x8011040aL,
-    COMAdminErrApplicationExists = (HRESULT)0x8011040bL,COMAdminErrRoleExists = (HRESULT)0x8011040cL,COMAdminErrCantCopyFile = (HRESULT)0x8011040dL,
-    COMAdminErrNoUser = (HRESULT)0x8011040fL,COMAdminErrInvalidUserids = (HRESULT)0x80110410L,COMAdminErrNoRegistryCLSID = (HRESULT)0x80110411L,
-    COMAdminErrBadRegistryProgID = (HRESULT)0x80110412L,COMAdminErrAuthenticationLevel = (HRESULT)0x80110413L,
-    COMAdminErrUserPasswdNotValid = (HRESULT)0x80110414L,COMAdminErrCLSIDOrIIDMismatch = (HRESULT)0x80110418L,
-    COMAdminErrRemoteInterface = (HRESULT)0x80110419L,COMAdminErrDllRegisterServer = (HRESULT)0x8011041aL,
-    COMAdminErrNoServerShare = (HRESULT)0x8011041bL,COMAdminErrDllLoadFailed = (HRESULT)0x8011041dL,COMAdminErrBadRegistryLibID = (HRESULT)0x8011041eL,
-    COMAdminErrAppDirNotFound = (HRESULT)0x8011041fL,COMAdminErrRegistrarFailed = (HRESULT)0x80110423L,
-    COMAdminErrCompFileDoesNotExist = (HRESULT)0x80110424L,COMAdminErrCompFileLoadDLLFail = (HRESULT)0x80110425L,
-    COMAdminErrCompFileGetClassObj = (HRESULT)0x80110426L,COMAdminErrCompFileClassNotAvail = (HRESULT)0x80110427L,
-    COMAdminErrCompFileBadTLB = (HRESULT)0x80110428L,COMAdminErrCompFileNotInstallable = (HRESULT)0x80110429L,
-    COMAdminErrNotChangeable = (HRESULT)0x8011042aL,COMAdminErrNotDeletable = (HRESULT)0x8011042bL,COMAdminErrSession = (HRESULT)0x8011042cL,
-    COMAdminErrCompMoveLocked = (HRESULT)0x8011042dL,COMAdminErrCompMoveBadDest = (HRESULT)0x8011042eL,COMAdminErrRegisterTLB = (HRESULT)0x80110430L,
-    COMAdminErrSystemApp = (HRESULT)0x80110433L,COMAdminErrCompFileNoRegistrar = (HRESULT)0x80110434L,
-    COMAdminErrCoReqCompInstalled = (HRESULT)0x80110435L,COMAdminErrServiceNotInstalled = (HRESULT)0x80110436L,
-    COMAdminErrPropertySaveFailed = (HRESULT)0x80110437L,COMAdminErrObjectExists = (HRESULT)0x80110438L,
-    COMAdminErrComponentExists = (HRESULT)0x80110439L,COMAdminErrRegFileCorrupt = (HRESULT)0x8011043bL,
-    COMAdminErrPropertyOverflow = (HRESULT)0x8011043cL,COMAdminErrNotInRegistry = (HRESULT)0x8011043eL,
-    COMAdminErrObjectNotPoolable = (HRESULT)0x8011043fL,COMAdminErrApplidMatchesClsid = (HRESULT)0x80110446L,
-    COMAdminErrRoleDoesNotExist = (HRESULT)0x80110447L,COMAdminErrStartAppNeedsComponents = (HRESULT)0x80110448L,
-    COMAdminErrRequiresDifferentPlatform = (HRESULT)0x80110449L,COMAdminErrQueuingServiceNotAvailable = (HRESULT)0x80110602L,
-    COMAdminErrObjectParentMissing = (HRESULT)0x80110808L,COMAdminErrObjectDoesNotExist = (HRESULT)0x80110809L,
-    COMAdminErrCanNotExportAppProxy = (HRESULT)0x8011044aL,COMAdminErrCanNotStartApp = (HRESULT)0x8011044bL,
-    COMAdminErrCanNotExportSystemApp = (HRESULT)0x8011044cL,COMAdminErrCanNotSubscribeToComponent = (HRESULT)0x8011044dL,
-    COMAdminErrAppNotRunning = (HRESULT)0x8011080aL,COMAdminErrEventClassCannotBeSubscriber = (HRESULT)0x8011044eL,
-    COMAdminErrLibAppProxyIncompatible = (HRESULT)0x8011044fL,COMAdminErrBasePartitionOnly = (HRESULT)0x80110450L,
-    COMAdminErrDuplicatePartitionName = (HRESULT)0x80110457L,COMAdminErrPartitionInUse = (HRESULT)0x80110459L,
-    COMAdminErrImportedComponentsNotAllowed = (HRESULT)0x8011045bL,COMAdminErrRegdbNotInitialized = (HRESULT)0x80110472L,
-    COMAdminErrRegdbNotOpen = (HRESULT)0x80110473L,COMAdminErrRegdbSystemErr = (HRESULT)0x80110474L,
-    COMAdminErrRegdbAlreadyRunning = (HRESULT)0x80110475L,COMAdminErrMigVersionNotSupported = (HRESULT)0x80110480L,
-    COMAdminErrMigSchemaNotFound = (HRESULT)0x80110481L,COMAdminErrCatBitnessMismatch = (HRESULT)0x80110482L,
-    COMAdminErrCatUnacceptableBitness = (HRESULT)0x80110483L,COMAdminErrCatWrongAppBitnessBitness = (HRESULT)0x80110484L,
-    COMAdminErrCatPauseResumeNotSupported = (HRESULT)0x80110485L,COMAdminErrCatServerFault = (HRESULT)0x80110486L,
-    COMAdminErrCantRecycleLibraryApps = (HRESULT)0x8011080fL,COMAdminErrCantRecycleServiceApps = (HRESULT)0x80110811L,
-    COMAdminErrProcessAlreadyRecycled = (HRESULT)0x80110812L,COMAdminErrPausedProcessMayNotBeRecycled = (HRESULT)0x80110813L,
-    COMAdminErrInvalidPartition = (HRESULT)0x8011080bL,COMAdminErrPartitionMsiOnly = (HRESULT)0x80110819L,
-    COMAdminErrStartAppDisabled = (HRESULT)0x80110451L,COMAdminErrCompMoveSource = (HRESULT)0x8011081cL,
-    COMAdminErrCompMoveDest = (HRESULT)0x8011081dL,COMAdminErrCompMovePrivate = (HRESULT)0x8011081eL,
-    COMAdminErrCannotCopyEventClass = (HRESULT)0x80110820L
-  };
-
-  EXTERN_C const IID LIBID_COMAdmin;
-  EXTERN_C const CLSID CLSID_COMAdminCatalog;
-#ifdef __cplusplus
-  class COMAdminCatalog;
-#endif
-  EXTERN_C const CLSID CLSID_COMAdminCatalogObject;
-#ifdef __cplusplus
-  class COMAdminCatalogObject;
-#endif
-  EXTERN_C const CLSID CLSID_COMAdminCatalogCollection;
-#ifdef __cplusplus
-  class COMAdminCatalogCollection;
-#endif
-#endif
-
-  unsigned long __RPC_API BSTR_UserSize(unsigned long *,unsigned long,BSTR *);
-  unsigned char *__RPC_API BSTR_UserMarshal(unsigned long *,unsigned char *,BSTR *);
-  unsigned char *__RPC_API BSTR_UserUnmarshal(unsigned long *,unsigned char *,BSTR *);
-  void __RPC_API BSTR_UserFree(unsigned long *,BSTR *);
-  unsigned long __RPC_API LPSAFEARRAY_UserSize(unsigned long *,unsigned long,LPSAFEARRAY *);
-  unsigned char *__RPC_API LPSAFEARRAY_UserMarshal(unsigned long *,unsigned char *,LPSAFEARRAY *);
-  unsigned char *__RPC_API LPSAFEARRAY_UserUnmarshal(unsigned long *,unsigned char *,LPSAFEARRAY *);
-  void __RPC_API LPSAFEARRAY_UserFree(unsigned long *,LPSAFEARRAY *);
-  unsigned long __RPC_API VARIANT_UserSize(unsigned long *,unsigned long,VARIANT *);
-  unsigned char *__RPC_API VARIANT_UserMarshal(unsigned long *,unsigned char *,VARIANT *);
-  unsigned char *__RPC_API VARIANT_UserUnmarshal(unsigned long *,unsigned char *,VARIANT *);
-  void __RPC_API VARIANT_UserFree(unsigned long *,VARIANT *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-
diff --git a/src/win32/filed/plugins/dbi_node.c b/src/win32/filed/plugins/dbi_node.c
deleted file mode 100644
index c02477f..0000000
--- a/src/win32/filed/plugins/dbi_node.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#include "exchange-fd.h"
-
-dbi_node_t::dbi_node_t(char *name, node_t *parent_node) : node_t(name, NODE_TYPE_DATABASE_INFO, parent_node)
-{
-   restore_display_name = NULL;
-   restore_input_streams = NULL;
-   buffer = NULL;
-}
-
-dbi_node_t::~dbi_node_t()
-{
-   if (buffer != NULL)
-      delete buffer;
-   if (restore_input_streams != NULL)
-      delete restore_input_streams;
-   if (restore_display_name != NULL)
-      delete restore_display_name;
-}
-
-bRC
-dbi_node_t::startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp)
-{
-   time_t now = time(NULL);
-
-   _DebugMessage(100, "startBackupNode_DBI state = %d\n", state);
-
-   if (context->job_level == 'F') {
-      sp->fname = full_path;
-      sp->link = full_path;
-      sp->statp.st_mode = 0700 | S_IFREG;
-      sp->statp.st_ctime = now;
-      sp->statp.st_mtime = now;
-      sp->statp.st_atime = now;
-      sp->statp.st_size = (uint64_t)-1;
-      sp->type = FT_REG;
-      return bRC_OK;
-   }
-   else
-   {
-      bfuncs->setBaculaValue(context->bpContext, bVarFileSeen, (void *)full_path);
-      return bRC_Seen;
-   }
-}
-
-bRC
-dbi_node_t::endBackupFile(exchange_fd_context_t *context)
-{
-   _DebugMessage(100, "endBackupNode_DBI state = %d\n", state);
-
-   context->current_node = parent;
-
-   return bRC_OK;
-}
-
-bRC
-dbi_node_t::createFile(exchange_fd_context_t *context, struct restore_pkt *rp)
-{
-   _DebugMessage(100, "createFile_DBI state = %d\n", state);
-
-   rp->create_status = CF_EXTRACT;
-
-   return bRC_OK;
-}
-
-bRC
-dbi_node_t::endRestoreFile(exchange_fd_context_t *context)
-{
-   _DebugMessage(100, "endRestoreFile_DBI state = %d\n", state);
-
-   context->current_node = parent;
-
-   return bRC_OK;
-}
-
-bRC
-dbi_node_t::pluginIoOpen(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   uint32_t len;
-   WCHAR *ptr;
-   WCHAR *stream;
-   //char tmp[512];
-
-   buffer_pos = 0;
-   buffer_size = 65536;
-   buffer = new char[buffer_size];
-
-   if (context->job_type == JOB_TYPE_BACKUP)
-   {
-      ptr = (WCHAR *)buffer;
-      len = snwprintf(ptr, (buffer_size - buffer_pos) / 2, L"DatabaseBackupInfo\n");
-      if (len < 0)
-         goto fail;
-      buffer_pos += len * 2;
-      ptr += len;
-
-      len = snwprintf(ptr, (buffer_size - buffer_pos) / 2, L"%d\n", EXCHANGE_PLUGIN_VERSION);
-      if (len < 0)
-         goto fail;
-      buffer_pos += len * 2;
-      ptr += len;
-
-      len = snwprintf(ptr, (buffer_size - buffer_pos) / 2, L"%s\n", dbi->wszDatabaseDisplayName);
-      if (len < 0)
-         goto fail;
-      buffer_pos += len * 2;
-      ptr += len;
-
-      len = snwprintf(ptr, (buffer_size - buffer_pos) / 2, L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n",
-         dbi->rguidDatabase.Data1, dbi->rguidDatabase.Data2, dbi->rguidDatabase.Data3,
-         dbi->rguidDatabase.Data4[0], dbi->rguidDatabase.Data4[1],
-         dbi->rguidDatabase.Data4[2], dbi->rguidDatabase.Data4[3],
-         dbi->rguidDatabase.Data4[4], dbi->rguidDatabase.Data4[5],
-         dbi->rguidDatabase.Data4[6], dbi->rguidDatabase.Data4[7]);
-      if (len < 0)
-         goto fail;
-      buffer_pos += len * 2;
-      ptr += len;
-      
-      stream = dbi->wszDatabaseStreams;
-      while (*stream)
-      {
-         len = snwprintf(ptr, (buffer_size - buffer_pos) / 2, L"%s\n", stream);
-         if (len < 0)
-            goto fail;
-         buffer_pos += len * 2;
-         ptr += len;
-         stream += wcslen(stream) + 1;
-      }
-
-      buffer_size = buffer_pos;
-      buffer_pos = 0;
-   }
-
-   io->status = 0;
-   io->io_errno = 0;
-   return bRC_OK;
-
-fail:
-   io->status = 0;
-   io->io_errno = 1;
-   return bRC_Error;
-}
-
-bRC
-dbi_node_t::pluginIoRead(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   io->status = 0;
-   io->io_errno = 0;
-
-   io->status = MIN(io->count, (int)(buffer_size - buffer_pos));
-   if (io->status == 0)
-      return bRC_OK;
-   memcpy(io->buf, buffer + buffer_pos, io->status);
-   buffer_pos += io->status;
-
-   return bRC_OK;
-}
-
-bRC 
-dbi_node_t::pluginIoWrite(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   memcpy(&buffer[buffer_pos], io->buf, io->count);
-   buffer_pos += io->count;
-   io->status = io->count;
-   io->io_errno = 0;
-   return bRC_OK;
-}
-
-bRC
-dbi_node_t::pluginIoClose(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   WCHAR tmp[128];
-   WCHAR *ptr;
-   WCHAR eol;
-   int wchars_read;
-   int version;
-   int stream_buf_count;
-   WCHAR *streams_start;
-
-   if (context->job_type == JOB_TYPE_RESTORE)
-   {
-      // need to think about making this buffer overflow proof...
-      _DebugMessage(100, "analyzing DatabaseBackupInfo\n");
-      ptr = (WCHAR *)buffer;
-
-      if (swscanf(ptr, L"%127[^\n]%c%n", tmp, &eol, &wchars_read) != 2)
-         goto restore_fail;
-      ptr += wchars_read;
-      _DebugMessage(150, "Header = %S\n", tmp);
-      // verify that header == "DatabaseBackupInfo"
-
-      if (swscanf(ptr, L"%127[^\n]%c%n", tmp, &eol, &wchars_read) != 2)
-         goto restore_fail;
-      if (swscanf(tmp, L"%d%c", &version, &eol) != 1)
-      {
-         version = 0;
-         _DebugMessage(150, "Version = 0 (inferred)\n");
-      }
-      else
-      {
-         ptr += wchars_read;
-         _DebugMessage(150, "Version = %d\n", version);
-         if (swscanf(ptr, L"%127[^\n]%c%n", tmp, &eol, &wchars_read) != 2)
-            goto restore_fail;
-      }
-      restore_display_name = new WCHAR[wchars_read];
-      swscanf(ptr, L"%127[^\n]", restore_display_name);
-      _DebugMessage(150, "Database Display Name = %S\n", restore_display_name);
-      ptr += wchars_read;
-
-      if (swscanf(ptr, L"%127[^\n]%c%n", tmp, &eol, &wchars_read) != 2)
-         goto restore_fail;
-      
-      if (swscanf(ptr, L"%8x-%4x-%4x-%2x%2x-%2x%2x%2x%2x%2x%2x",
-         &restore_guid.Data1, &restore_guid.Data2, &restore_guid.Data3,
-         &restore_guid.Data4[0], &restore_guid.Data4[1],
-         &restore_guid.Data4[2], &restore_guid.Data4[3],
-         &restore_guid.Data4[4], &restore_guid.Data4[5],
-         &restore_guid.Data4[6], &restore_guid.Data4[7]) != 11)
-      {
-         goto restore_fail;
-      }
-         _DebugMessage(150, "GUID = %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n",
-         restore_guid.Data1, restore_guid.Data2, restore_guid.Data3,
-         restore_guid.Data4[0], restore_guid.Data4[1],
-         restore_guid.Data4[2], restore_guid.Data4[3],
-         restore_guid.Data4[4], restore_guid.Data4[5],
-         restore_guid.Data4[6], restore_guid.Data4[7]);
-
-      ptr += wchars_read;
-
-      stream_buf_count = 1;
-      streams_start = ptr;
-      while (ptr < (WCHAR *)(buffer + buffer_pos) && swscanf(ptr, L"%127[^\n]%c%n", tmp, &eol, &wchars_read) == 2)
-      {
-         _DebugMessage(150, "File = %S\n", tmp);
-         ptr += wchars_read;
-         stream_buf_count += wchars_read;
-      }
-      restore_input_streams = new WCHAR[stream_buf_count];
-      ptr = streams_start;
-      stream_buf_count = 0;
-      while (ptr < (WCHAR *)(buffer + buffer_pos) && swscanf(ptr, L"%127[^\n]%c%n", tmp, &eol, &wchars_read) == 2)
-      {
-         snwprintf(&restore_input_streams[stream_buf_count], 65535, L"%s", tmp);
-         ptr += wchars_read;
-         stream_buf_count += wchars_read;
-      }
-      restore_input_streams[stream_buf_count] = 0;
-
-      _DebugMessage(100, "done analyzing DatabasePluginInfo\n");
-   }
-   delete buffer;
-   buffer = NULL;
-   return bRC_OK;
-restore_fail:
-   _JobMessage(M_FATAL, "Format of %s is incorrect", full_path);
-   delete buffer;
-   buffer = NULL;
-   return bRC_Error;
-}
diff --git a/src/win32/filed/plugins/exchange-fd.c b/src/win32/filed/plugins/exchange-fd.c
deleted file mode 100644
index dcc7044..0000000
--- a/src/win32/filed/plugins/exchange-fd.c
+++ /dev/null
@@ -1,522 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2010-2011 Bacula Systems(R) SA
-
-   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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#include "exchange-fd.h"
-
-/* Pointers to Bacula functions */
-bFuncs *bfuncs = NULL;
-bInfo  *binfo = NULL;
-
-#define PLUGIN_LICENSE      "Bacula AGPLv3"
-#define PLUGIN_AUTHOR       "James Harper"
-#define PLUGIN_DATE    "September 2008"
-#define PLUGIN_VERSION      "1"
-#define PLUGIN_DESCRIPTION  "Exchange Plugin"
-
-static pInfo pluginInfo = {
-   sizeof(pluginInfo),
-   FD_PLUGIN_INTERFACE_VERSION,
-   FD_PLUGIN_MAGIC,
-   PLUGIN_LICENSE,
-   PLUGIN_AUTHOR,
-   PLUGIN_DATE,
-   PLUGIN_VERSION,
-   PLUGIN_DESCRIPTION,
-};
-
-/* Forward referenced functions */
-static bRC newPlugin(bpContext *ctx);
-static bRC freePlugin(bpContext *ctx);
-static bRC getPluginValue(bpContext *ctx, pVariable var, void *value);
-static bRC setPluginValue(bpContext *ctx, pVariable var, void *value);
-static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value);
-static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp);
-static bRC endBackupFile(bpContext *ctx);
-static bRC pluginIO(bpContext *ctx, struct io_pkt *io);
-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 pFuncs pluginFuncs = {
-   sizeof(pluginFuncs),
-   FD_PLUGIN_INTERFACE_VERSION,
-
-   /* Entry points into plugin */
-   newPlugin,          /* new plugin instance */
-   freePlugin,         /* free plugin instance */
-   getPluginValue,
-   setPluginValue,
-   handlePluginEvent,
-   startBackupFile,
-   endBackupFile,
-   startRestoreFile,
-   endRestoreFile,
-   pluginIO,
-   createFile,
-   setFileAttributes,
-   checkFile,
-};
-
-extern "C" {
-
-static char **
-splitString(char *string, char split, int maxParts, int *count)
-{
-  char **RetVal;
-  char *first;
-  char *last;
-
-  //KdPrint((__DRIVER_NAME "     a\n"));
-
-  *count = 0;
-
-  RetVal = (char **)malloc((maxParts + 1) * sizeof(char *));
-  last = string;
-  do
-  {
-    if (*count == maxParts)
-      break;
-    first = last;
-    for (last = first; *last != '\0' && *last != split; last++);
-    RetVal[*count] = (char *)malloc(last - first + 1);
-    strncpy(RetVal[*count], first, last - first);
-    RetVal[*count][last - first] = 0;
-    (*count)++;
-    if (*last == split)
-      last++;
-  } while (*last != 0);
-  RetVal[*count] = NULL;
-  return RetVal;
-}
-
-bRC DLL_IMP_EXP
-loadPlugin(bInfo *lbinfo, bFuncs *lbfuncs, pInfo **pinfo, pFuncs **pfuncs)
-{
-   bRC retval;
-   bfuncs = lbfuncs;        /* set Bacula funct pointers */
-   binfo  = lbinfo;
-   *pinfo = &pluginInfo;
-   *pfuncs = &pluginFuncs;
-   retval = loadExchangeApi();
-   if (retval != bRC_OK) {
-      printf("Cannot load Exchange DLL\n");
-      return retval;
-   }
-   return retval;
-}
-
-bRC DLL_IMP_EXP
-unloadPlugin()
-{
-   return bRC_OK;
-}
-
-}
-/*
-void *
-b_malloc(const char *file, int lone, size_t size)
-{
-   return NULL;
-}
-
-void *
-sm_malloc(const char *file, int lone, size_t size)
-{
-   return NULL;
-}
-*/
-
-static bRC newPlugin(bpContext *ctx)
-{
-   exchange_fd_context_t *context;
-   bRC retval = bRC_OK;
-   DWORD size;
-
-   int JobId = 0;
-   ctx->pContext = new exchange_fd_context_t;
-   context = (exchange_fd_context_t *)ctx->pContext;
-   context->bpContext = ctx;
-   context->job_since = 0;
-   context->notrunconfull_option = false;
-   context->plugin_active = false;
-   bfuncs->getBaculaValue(ctx, bVarJobId, (void *)&JobId);
-   _DebugMessage(100, "newPlugin JobId=%d\n", JobId);
-   bfuncs->registerBaculaEvents(ctx, 1, 2, 0);
-   size = MAX_COMPUTERNAME_LENGTH + 1;
-   context->computer_name = new WCHAR[size];
-   /*
-   GetComputerNameW(context->computer_name, &size);
-   */
-   GetComputerNameExW(ComputerNameNetBIOS, context->computer_name, &size);
-   context->current_node = NULL;
-   context->root_node = NULL;
-   return retval;
-}
-
-static bRC freePlugin(bpContext *ctx)
-{
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   int JobId = 0;
-   bfuncs->getBaculaValue(ctx, bVarJobId, (void *)&JobId);
-   _DebugMessage(100, "freePlugin JobId=%d\n", JobId);
-   delete context;
-   return bRC_OK;
-}
-
-static bRC getPluginValue(bpContext *ctx, pVariable var, void *value) 
-{
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   _DebugMessage(100, "getPluginValue var=%d\n", var);
-   return bRC_OK;
-}
-
-static bRC setPluginValue(bpContext *ctx, pVariable var, void *value) 
-{
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   _DebugMessage(100, "setPluginValue var=%d\n", var);
-   return bRC_OK;
-}
-
-static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
-{
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   char *name;
-   int i, intval;
-   int accurate;
-   char *command;
-   char *plugin_name;
-
-   switch (event->eventType) {
-   case bEventJobStart:
-      _DebugMessage(100, "JobStart=%s\n", (char *)value);
-      context->plugin_active = false;
-      break;
-   case bEventJobEnd:
-      _DebugMessage(100, "JobEnd\n");
-      break;
-   case bEventPluginCommand:
-      _DebugMessage(100, "bEventPluginCommand %s\n", value);
-      command = bstrdup((char *)value);
-      /* this isn't really unused */
-      plugin_name = strtok((char *)command, ":");
-      if (strcmp(plugin_name, "exchange") != 0) {
-         context->plugin_active = false;
-      } else {
-         context->plugin_active = true;
-      }
-      free(command);
-      break;
-   case bEventStartBackupJob:
-      if (!context->plugin_active) {
-         break;
-      }
-      _DebugMessage(100, "BackupStart\n");
-      bfuncs->getBaculaValue(ctx, bVarAccurate, (void *)&accurate);
-      context->accurate = accurate;
-      context->job_type = JOB_TYPE_BACKUP;
-      // level should have been specified by now - check it
-      // if level is D or I, since should have been specified too
-      switch (context->job_level) {
-      case 'F':
-         if (context->notrunconfull_option) {
-            context->truncate_logs = false;
-         } else {
-            context->truncate_logs = true;
-         }
-         break;
-      case 'D':
-         context->truncate_logs = false;
-         break;
-      case 'I':
-         context->truncate_logs = false;
-         break;
-      default:
-         _DebugMessage(100, "Invalid job level %c\n", context->job_level);
-         return bRC_Error;
-      }
-      break;
-   case bEventEndBackupJob:
-      _DebugMessage(100, "BackupEnd\n");
-      if (!context->plugin_active) {
-         break;
-      }
-      break;
-   case bEventLevel:
-      /* 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:
-      /* 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;
-      break;
-   case bEventStartRestoreJob:
-      _DebugMessage(100, "StartRestoreJob\n");
-      context->job_type = JOB_TYPE_RESTORE;
-      context->plugin_active = true;
-      break;
-   case bEventEndRestoreJob:
-      if (!context->plugin_active) {
-         break;
-      }
-      _DebugMessage(100, "EndRestoreJob\n");
-      context->plugin_active = false;
-      break;
-   
-   /* Plugin command e.g. plugin = <plugin-name>:<name-space>:command */
-   case bEventRestoreCommand:
-      _DebugMessage(100, "restore\n"); // command=%s\n", (char *)value);
-      if (!context->plugin_active) {
-         break;
-      }
-      break;
-
-   case bEventBackupCommand:
-      if (!context->plugin_active) {
-         break;
-      }
-      {
-      _DebugMessage(100, "backup command=%s\n", (char *)value);    
-      char *command = new char[strlen((char *)value) + 1];
-      strcpy(command, (char *)value);
-      char *plugin_name = strtok((char *)command, ":");
-      char *path = strtok(NULL, ":");
-      char *option;
-      while ((option = strtok(NULL, ":")) != NULL) {
-         _DebugMessage(100, "option %s\n", option);
-         if (stricmp(option, "notrunconfull") == 0) {
-            context->notrunconfull_option = true;
-         } else {
-            _JobMessage(M_WARNING, "Unknown plugin option '%s'\n", option);
-         }
-      }
-      _DebugMessage(100, "name = %s\n", plugin_name);
-      _DebugMessage(100, "path = %s\n", path);
-      if (*path != '/') {
-         _JobMessage(M_FATAL, "Path does not begin with a '/'\n");
-         return bRC_Error;
-      }
-
-      for (i = 0; i < 6; i++) {
-         context->path_bits[i] = NULL;
-      }
-
-      char *path_bit = strtok(path, "/");
-      for (i = 0; path_bit != NULL && i < 6; i++) {
-         context->path_bits[i] = new char[strlen(path_bit) + 1];
-         strcpy(context->path_bits[i], path_bit);
-         path_bit = strtok(NULL, "/");
-      }
-
-      if (i < 2 || i > 4) {
-         _JobMessage(M_FATAL, "Invalid plugin backup path\n");
-         return bRC_Error;
-      }
-      context->root_node = new root_node_t(context->path_bits[0]);
-      context->current_node = context->root_node;
-
-      }
-      break;
-
-   default:
-      _DebugMessage(100, "Ignored event=%d\n", event->eventType);
-      break;
-   }
-   bfuncs->getBaculaValue(ctx, bVarFDName, (void *)&name);
-   return bRC_OK;
-}
-
-static bRC
-startBackupFile(bpContext *ctx, struct save_pkt *sp)
-{
-   bRC retval;
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   node_t *current_node;
-
-   _DebugMessage(100, "startBackupFile, cmd = %s\n", sp->cmd);
-   if (sp->pkt_size != sizeof(struct save_pkt) || sp->pkt_end != sizeof(struct save_pkt)) {
-      _JobMessage(M_FATAL, "save_pkt size mismatch - sizeof(struct save_pkt) = %d, pkt_size = %d, pkt_end = %d\n", sizeof(struct save_pkt), sp->pkt_size, sp->pkt_end);
-      return bRC_Error;
-   }
-
-   //context->root_node = new root_node_t(PLUGIN_PATH_PREFIX_BASE);
-   //context->current_node = context->root_node;
-   do {
-      current_node  = context->current_node;
-      retval = current_node->startBackupFile(context, sp);
-      if (retval == bRC_Seen)
-         endBackupFile(ctx);
-   } while (current_node != context->current_node);
-   _DebugMessage(100, "startBackupFile done - type = %d, fname = %s, retval = %d\n", sp->type, sp->fname, retval);
-   return retval;
-}
-
-static bRC endBackupFile(bpContext *ctx)
-{ 
-   bRC retval;
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   node_t *current_node;
-
-   _DebugMessage(100, "endBackupFile\n");
-
-   do {
-      current_node  = context->current_node;
-      retval = current_node->endBackupFile(context);
-   } while (current_node != context->current_node);
-   _DebugMessage(100, "endBackupFile done - retval = %d\n", retval);
-   return retval;
-}
-
-/*
- * Do actual I/O
- */
-static bRC pluginIO(bpContext *ctx, struct io_pkt *io)
-{
-   bRC retval = bRC_OK;
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-
-   if (io->pkt_size != sizeof(struct io_pkt) || io->pkt_end != sizeof(struct io_pkt))
-   {
-      _JobMessage(M_FATAL, "io_pkt size mismatch - sizeof(struct io_pkt) = %d, pkt_size = %d, pkt_end = %d\n", sizeof(struct io_pkt), io->pkt_size, io->pkt_end);
-   }
-
-   switch(io->func) {
-   case IO_OPEN:
-      _DebugMessage(100, "IO_OPEN\n");
-      retval = context->current_node->pluginIoOpen(context, io);
-      break;
-   case IO_READ:
-      //_DebugMessage(100, "IO_READ buf=%p len=%d\n", io->buf, io->count);
-      retval = context->current_node->pluginIoRead(context, io);
-      break;
-   case IO_WRITE:
-      //_DebugMessage(100, "IO_WRITE buf=%p len=%d\n", io->buf, io->count);
-      retval = context->current_node->pluginIoWrite(context, io);
-      break;
-   case IO_CLOSE:
-      _DebugMessage(100, "IO_CLOSE\n");
-      retval = context->current_node->pluginIoClose(context, io);
-      break;
-   }
-   return retval;
-}
-
-static bRC startRestoreFile(bpContext *ctx, const char *cmd)
-{
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   _DebugMessage(100, "startRestoreFile\n");
-
-   return bRC_OK;
-}
-
-static bRC endRestoreFile(bpContext *ctx)
-{
-   bRC retval;
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   node_t *current_node;
-
-   _DebugMessage(100, "endRestoreFile\n");
-
-   do {
-      current_node  = context->current_node;
-      retval = current_node->endRestoreFile(context);
-   } while (current_node != context->current_node);
-   _DebugMessage(100, "endRestoreFile done - retval = %d\n", retval);
-   return retval;
-}
-
-static bRC createFile(bpContext *ctx, struct restore_pkt *rp)
-{
-   bRC retval;
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   node_t *current_node;
-   char **path_bits;
-   int count;
-   int i;
-
-
-   _DebugMessage(100, "createFile - type = %d, ofname = %s\n", rp->type, rp->ofname);
-   if (rp->pkt_size != sizeof(struct restore_pkt) || rp->pkt_end != sizeof(struct restore_pkt))
-   {
-      _JobMessage(M_FATAL, "restore_pkt size mismatch - sizeof(struct restore_pkt) = %d, pkt_size = %d, pkt_end = %d\n", sizeof(struct restore_pkt), rp->pkt_size, rp->pkt_end);
-      return bRC_Error;
-   }
-
-   for (i = 0; i < 6; i++)
-   {
-      context->path_bits[i] = NULL;
-   }
-
-   path_bits = splitString((char *)rp->ofname, '/', 7, &count);
-
-   _DebugMessage(100, "count = %d\n", count);
-
-   for (i = 1; i < count; i++)
-   {
-      _DebugMessage(150, "%d = '%s'\n", i, path_bits[i]);
-      context->path_bits[i - 1] = path_bits[i];
-   }
-
-   if (context->current_node == NULL)
-   {
-      context->root_node = new root_node_t(context->path_bits[0]);
-      context->current_node = context->root_node;
-   }
-
-   do {
-      current_node  = context->current_node;
-      retval = current_node->createFile(context, rp);
-   } while (current_node != context->current_node);
-   _DebugMessage(100, "createFile done - retval = %d\n", retval);
-   return retval;
-}
-
-static bRC setFileAttributes(bpContext *ctx, struct restore_pkt *rp)
-{
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   _DebugMessage(100, "setFileAttributes\n");
-   return bRC_OK;
-}
-
-static bRC checkFile(bpContext *ctx, char *fname)
-{
-   exchange_fd_context_t *context = (exchange_fd_context_t *)ctx->pContext;
-   if (context->plugin_active) {
-      _DebugMessage(100, "marked as seen %s\n", fname);
-      return bRC_Seen;
-   }
-   return bRC_OK;
-}
diff --git a/src/win32/filed/plugins/exchange-fd.def b/src/win32/filed/plugins/exchange-fd.def
deleted file mode 100644
index 9f0ad91..0000000
--- a/src/win32/filed/plugins/exchange-fd.def
+++ /dev/null
@@ -1,15 +0,0 @@
-LIBRARY bacula.dll
-EXPORTS
- 
-; compat.o
-;_Z10open_bpipePciPKc
-;_Z11close_bpipeP5BPIPE
-;_Z11close_wpipeP5BPIPE
-
-;console_command DATA
-;bplugin_list DATA
-;plugin_bopen DATA
-;plugin_bclose DATA
-;plugin_bwrite DATA
-;plugin_bread DATA
-;plugin_blseek DATA
diff --git a/src/win32/filed/plugins/exchange-fd.h b/src/win32/filed/plugins/exchange-fd.h
deleted file mode 100644
index 67dcf61..0000000
--- a/src/win32/filed/plugins/exchange-fd.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2010-2011 Bacula Systems(R) SA
-
-   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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#ifndef _EXCHANGE_FD_H
-#define _EXCHANGE_FD_H
-
-#define BUILD_PLUGIN
-
-#if defined(BUILDING_DLL)
-#  define DLL_IMP_EXP   __declspec(dllexport)
-#elif defined(USING_DLL)
-#  define DLL_IMP_EXP   __declspec(dllimport)
-#else
-#  define DLL_IMP_EXP
-#endif
-
-#if defined(HAVE_WIN32)
-#if defined(HAVE_MINGW)
-#include "mingwconfig.h"
-#else
-#include "winconfig.h"
-#endif
-#else
-#include "config.h"
-#endif
-#define __CONFIG_H
-
-enum {
-   /* Keep M_ABORT=1 for dlist.h */
-   M_ABORT = 1,                       /* MUST abort immediately */
-   M_DEBUG,                           /* debug message */
-   M_FATAL,                           /* Fatal error, stopping job */
-   M_ERROR,                           /* Error, but recoverable */
-   M_WARNING,                         /* Warning message */
-   M_INFO,                            /* Informational message */
-   M_SAVED,                           /* Info on saved file */
-   M_NOTSAVED,                        /* Info on notsaved file */
-   M_SKIPPED,                         /* File skipped during backup by option setting */
-   M_MOUNT,                           /* Mount requests */
-   M_ERROR_TERM,                      /* Error termination request (no dump) */
-   M_TERM,                            /* Terminating daemon normally */
-   M_RESTORED,                        /* ls -l of restored files */
-   M_SECURITY,                        /* security violation */
-   M_ALERT,                           /* tape alert messages */
-   M_VOLMGMT                          /* Volume management messages */
-};
-
-#define FT_REG        3
-#define FT_DIREND     5
-
-#define _REENTRANT    1
-#define _THREAD_SAFE  1
-#define _POSIX_PTHREAD_SEMANTICS 1
-
-#include <stdint.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-
-//#include "bacula.h"
-#include <windows.h>
-#include "win32/compat/compat.h"
-#include "bc_types.h"
-
-typedef int64_t   boffset_t;
-//#define bstrdup(str) strcpy((char *)bmalloc(strlen((str))+1),(str))
-#define bstrdup(str) strdup(str)
-
-#include "fd_plugins.h"
-#include "api.h"
-
-#if defined(HAVE_WIN32)
-#include "win32/winapi.h"
-#include "winhost.h"
-#else
-#include "host.h"
-#endif
-
-#define EXCHANGE_PLUGIN_VERSION 1
-
-#define JOB_TYPE_BACKUP 1
-#define JOB_TYPE_RESTORE 2
-
-#define JOB_LEVEL_FULL ((int)'F')
-#define JOB_LEVEL_INCREMENTAL ((int)'I')
-#define JOB_LEVEL_DIFFERENTIAL ((int)'D')
-
-struct exchange_fd_context_t;
-
-#include "node.h"
-
-struct exchange_fd_context_t {
-   struct bpContext *bpContext;
-   WCHAR *computer_name;
-   char *path_bits[6];
-   root_node_t *root_node;
-   node_t *current_node;
-   int job_type;
-   int job_level;
-   time_t job_since;
-   bool notrunconfull_option;
-   bool truncate_logs;
-   bool accurate;
-   bool plugin_active;
-};
-
-static inline char *tocharstring(WCHAR *src)
-{
-   char *tmp = new char[wcslen(src) + 1];
-   wcstombs(tmp, src, wcslen(src) + 1);
-   return tmp;
-}
-
-static inline WCHAR *towcharstring(char *src)
-{
-   WCHAR *tmp = new WCHAR[strlen(src) + 1];
-   mbstowcs(tmp, src, strlen(src) + 1);
-   return tmp;
-}
-
-
-extern bFuncs *bfuncs;
-extern bInfo  *binfo;
-
-#define _DebugMessage(level, message, ...) bfuncs->DebugMessage(context->bpContext, __FILE__, __LINE__, level, message, ##__VA_ARGS__)
-#define _JobMessage(type, message, ...) bfuncs->JobMessage(context->bpContext, __FILE__, __LINE__, type, 0, message, ##__VA_ARGS__)
-#define _JobMessageNull(type, message, ...) bfuncs->JobMessage(NULL, __FILE__, __LINE__, type, 0, message, ##__VA_ARGS__)
-
-#define PLUGIN_PATH_PREFIX_BASE "@EXCHANGE"
-#define PLUGIN_PATH_PREFIX_SERVICE "Microsoft Information Store"
-#define PLUGIN_PATH_PREFIX_SERVICE_W L"Microsoft Information Store"
-
-#endif /* _EXCHANGE_FD_H */
diff --git a/src/win32/filed/plugins/file_node.c b/src/win32/filed/plugins/file_node.c
deleted file mode 100644
index 18ff399..0000000
--- a/src/win32/filed/plugins/file_node.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#include "exchange-fd.h"
-
-file_node_t::file_node_t(char *name, node_t *parent_node) : node_t(name, NODE_TYPE_FILE, parent_node)
-{
-   backup_file_handle = INVALID_HANDLE_VALUE;
-   restore_file_handle = INVALID_HANDLE_VALUE;
-   restore_at_file_level = FALSE;
-}
-
-file_node_t::~file_node_t()
-{
-   if (backup_file_handle != INVALID_HANDLE_VALUE)
-   {
-      //_DebugMessage(100, "closing file handle in destructor\n");
-      CloseHandle(backup_file_handle);
-   }
-   if (restore_file_handle != INVALID_HANDLE_VALUE)
-   {
-      //_DebugMessage(100, "closing file handle in destructor\n");
-      if (restore_at_file_level)
-      {
-         CloseHandle(restore_file_handle);
-      }
-      else
-      {
-         // maybe one day
-      }
-   }
-}
-
-bRC
-file_node_t::startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp)
-{
-   time_t now = time(NULL);
-   _DebugMessage(100, "startBackupNode_FILE state = %d\n", state);
-
-   if (context->job_level == 'F' || parent->type == NODE_TYPE_STORAGE_GROUP) {
-      sp->fname = full_path;
-      sp->link = full_path;
-      _DebugMessage(100, "fname = %s\n", sp->fname);
-      sp->statp.st_mode = 0700 | S_IFREG;
-      sp->statp.st_ctime = now;
-      sp->statp.st_mtime = now;
-      sp->statp.st_atime = now;
-      sp->statp.st_size = (uint64_t)-1;
-      sp->type = FT_REG;
-      return bRC_OK;
-   } else {
-      bfuncs->setBaculaValue(context->bpContext, bVarFileSeen, (void *)full_path);
-      return bRC_Seen;
-   }
-}
-
-bRC
-file_node_t::endBackupFile(exchange_fd_context_t *context)
-{
-   _DebugMessage(100, "endBackupNode_FILE state = %d\n", state);
-
-   context->current_node = parent;
-
-   return bRC_OK;
-}
-
-bRC
-file_node_t::createFile(exchange_fd_context_t *context, struct restore_pkt *rp)
-{
-   //HrESERestoreOpenFile with name of log file
-
-   _DebugMessage(100, "createFile_FILE state = %d\n", state);
-   rp->create_status = CF_EXTRACT;
-   return bRC_OK;
-}
-
-bRC
-file_node_t::endRestoreFile(exchange_fd_context_t *context)
-{
-   _DebugMessage(100, "endRestoreFile_FILE state = %d\n", state);
-   context->current_node = parent;
-   return bRC_OK;
-}
-
-bRC
-file_node_t::pluginIoOpen(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   HRESULT result;
-   HANDLE handle;
-   char *tmp = new char[wcslen(filename) + 1];
-   wcstombs(tmp, filename, wcslen(filename) + 1);
-
-   _DebugMessage(100, "pluginIoOpen_FILE - filename = %s\n", tmp);
-   io->status = 0;
-   io->io_errno = 0;
-   if (context->job_type == JOB_TYPE_BACKUP)
-   {
-      _DebugMessage(10, "Calling HrESEBackupOpenFile\n");
-      result = HrESEBackupOpenFile(hccx, filename, 65535, 1, &backup_file_handle, &section_size);
-      if (result)
-      {
-         _JobMessage(M_FATAL, "HrESEBackupOpenFile failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         backup_file_handle = INVALID_HANDLE_VALUE;
-         io->io_errno = 1;
-         return bRC_Error;
-      }
-   }
-   else
-   {
-      _DebugMessage(10, "Calling HrESERestoreOpenFile for '%s'\n", tmp);
-      result = HrESERestoreOpenFile(hccx, filename, 1, &restore_file_handle);
-      if (result == hrRestoreAtFileLevel)
-      {
-         restore_at_file_level = true;
-         _DebugMessage(100, "Calling CreateFileW for '%s'\n", tmp);
-         handle = CreateFileW(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-         if (handle == INVALID_HANDLE_VALUE)
-         {
-            _JobMessage(M_FATAL, "CreateFile failed");
-            return bRC_Error;
-         }
-         restore_file_handle = (void *)handle;
-         return bRC_OK;
-      }
-      else if (result == 0)
-      {
-         _JobMessage(M_FATAL, "Exchange File IO API not yet supported for restore\n");
-         restore_at_file_level = false;
-         return bRC_Error;
-      }
-      else
-      {
-         _JobMessage(M_FATAL, "HrESERestoreOpenFile failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         return bRC_Error;
-      }
-   }
-   return bRC_OK;
-}
-
-bRC
-file_node_t::pluginIoRead(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   HRESULT result;
-   uint32_t readLength;
-
-   io->status = 0;
-   io->io_errno = 0;
-   _DebugMessage(200, "Calling HrESEBackupReadFile\n");
-   result = HrESEBackupReadFile(hccx, backup_file_handle, io->buf, io->count, &readLength);
-   if (result)
-   {
-      io->io_errno = 1;
-      return bRC_Error;
-   }
-   io->status = readLength;
-   size += readLength;
-   return bRC_OK;
-}
-
-bRC
-file_node_t::pluginIoWrite(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   DWORD bytes_written;
-
-   io->io_errno = 0;
-   if (!restore_at_file_level)
-      return bRC_Error;
-
-   if (!WriteFile(restore_file_handle, io->buf, io->count, &bytes_written, NULL))
-   {
-      _JobMessage(M_FATAL, "Write Error");
-      return bRC_Error;
-   }
-
-   if (bytes_written != (DWORD)io->count)
-   {
-      _JobMessage(M_FATAL, "Short write");
-      return bRC_Error;
-   }
-   io->status = bytes_written;
-   
-   return bRC_OK;
-}
-
-bRC
-file_node_t::pluginIoClose(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   if (context->job_type == JOB_TYPE_BACKUP)
-   {
-      _DebugMessage(100, "Calling HrESEBackupCloseFile\n");
-      HrESEBackupCloseFile(hccx, backup_file_handle);
-      backup_file_handle = INVALID_HANDLE_VALUE;
-      return bRC_OK;
-   }
-   else
-   {
-      if (restore_at_file_level)
-      {
-         CloseHandle(restore_file_handle);
-         restore_file_handle = INVALID_HANDLE_VALUE;
-         return bRC_OK;
-      }
-      else
-      {
-         return bRC_OK;
-      }
-   }
-}
diff --git a/src/win32/filed/plugins/node.c b/src/win32/filed/plugins/node.c
deleted file mode 100644
index f26e317..0000000
--- a/src/win32/filed/plugins/node.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#include "exchange-fd.h"
-
-node_t::node_t(char *name, int type)
-{
-   this->type = type;
-   state = 0;
-   parent = NULL;
-   this->name = bstrdup(name);
-   full_path = make_full_path();
-   size = 0;
-   level = 0;
-}
-
-node_t::node_t(char *name, int type, node_t *parent_node)
-{
-   this->type = type;
-   state = 0;
-   parent = parent_node;
-   this->name = bstrdup(name);
-   full_path = make_full_path();
-   size = 0;
-   level = parent->level + 1;
-}
-
-node_t::~node_t()
-{
-   delete name;
-   delete full_path;
-}
-
-char *
-node_t::make_full_path()
-{
-   node_t *curr_node;
-   int len;
-   char *retval;
-
-   for (len = 0, curr_node = this; curr_node != NULL; curr_node = curr_node->parent)
-   {
-      len += strlen(curr_node->name) + 1;
-   }
-   if (type == NODE_TYPE_FILE || type == NODE_TYPE_DATABASE_INFO)
-   {
-      retval = new char[len + 1];
-      retval[len] = 0;
-   }
-   else
-   {
-      retval = new char[len + 2];
-      retval[len] = '/';
-      retval[len + 1] = 0;
-   }
-   for (curr_node = this; curr_node != NULL; curr_node = curr_node->parent)
-   {
-      len -= strlen(curr_node->name);
-      memcpy(retval + len, curr_node->name, strlen(curr_node->name));
-      retval[--len] = '/';
-   }
-   return retval;
-}
-
-bRC
-node_t::pluginIoOpen(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   _DebugMessage(100, "pluginIoOpen_Node\n");
-   io->status = 0;
-   io->io_errno = 0;
-   return bRC_OK;
-}
-
-bRC
-node_t::pluginIoRead(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   _DebugMessage(100, "pluginIoRead_Node\n");
-   io->status = 0;
-   io->io_errno = 0;
-   return bRC_OK;
-}
-
-bRC
-node_t::pluginIoWrite(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   _DebugMessage(100, "pluginIoWrite_Node\n");
-   io->status = 0;
-   io->io_errno = 1;
-   return bRC_Error;
-}
-
-bRC
-node_t::pluginIoClose(exchange_fd_context_t *context, struct io_pkt *io)
-{
-   _DebugMessage(100, "pluginIoClose_Node\n");
-   io->status = 0;
-   io->io_errno = 0;
-   return bRC_OK;
-}
diff --git a/src/win32/filed/plugins/node.h b/src/win32/filed/plugins/node.h
deleted file mode 100644
index dcaa43f..0000000
--- a/src/win32/filed/plugins/node.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-2008 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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#define NODE_TYPE_UNKNOWN          0
-#define NODE_TYPE_ROOT        1
-#define NODE_TYPE_SERVICE          2
-#define NODE_TYPE_STORAGE_GROUP    3
-#define NODE_TYPE_STORE       4
-#define NODE_TYPE_DATABASE_INFO    5
-#define NODE_TYPE_FILE        6
-
-class node_t {
-public:
-   int type;
-   int state;
-   node_t *parent;
-   char *name;
-   char *full_path;
-   size_t size;
-   int level;
-
-   node_t(char *name, int type);
-   node_t(char *name, int type, node_t *parent_node);
-   virtual ~node_t();
-
-   char *make_full_path();
-
-   virtual bRC startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp) = 0;
-   virtual bRC endBackupFile(exchange_fd_context_t *context) = 0;
-
-   virtual bRC createFile(exchange_fd_context_t *context, struct restore_pkt *rp) = 0;
-   virtual bRC endRestoreFile(exchange_fd_context_t *context) = 0;
-
-   virtual bRC pluginIoOpen(exchange_fd_context_t *context, struct io_pkt *io);
-   virtual bRC pluginIoRead(exchange_fd_context_t *context, struct io_pkt *io);
-   virtual bRC pluginIoWrite(exchange_fd_context_t *context, struct io_pkt *io);
-   virtual bRC pluginIoClose(exchange_fd_context_t *context, struct io_pkt *io);
-};
-
-class file_node_t : public node_t {
-public:
-   WCHAR *filename;
-   HCCX hccx;
-   VOID *backup_file_handle;
-   VOID *restore_file_handle;
-   uint64_t section_size;
-   bool restore_at_file_level;
-
-   file_node_t(char *name, node_t *parent_node);
-   virtual ~file_node_t();
-   bRC startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp);
-   bRC endBackupFile(exchange_fd_context_t *context);
-
-   bRC createFile(exchange_fd_context_t *context, struct restore_pkt *rp);
-   bRC endRestoreFile(exchange_fd_context_t *context);
-
-   bRC pluginIoOpen(exchange_fd_context_t *context, struct io_pkt *io);
-   bRC pluginIoRead(exchange_fd_context_t *context, struct io_pkt *io);
-   bRC pluginIoWrite(exchange_fd_context_t *context, struct io_pkt *io);
-   bRC pluginIoClose(exchange_fd_context_t *context, struct io_pkt *io);
-};
-
-class dbi_node_t : public node_t {
-public:
-   DATABASE_BACKUP_INFO *dbi;
-   char *buffer;
-   uint32_t buffer_size;
-   uint32_t buffer_pos;
-   WCHAR *restore_display_name;
-   GUID restore_guid;
-   WCHAR *restore_input_streams;
-   WCHAR *restore_output_streams;
-
-   dbi_node_t(char *name, node_t *parent_node);
-   virtual ~dbi_node_t();
-   bRC startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp);
-   bRC endBackupFile(exchange_fd_context_t *context);
-
-   bRC createFile(exchange_fd_context_t *context, struct restore_pkt *rp);
-   bRC endRestoreFile(exchange_fd_context_t *context);
-
-   bRC pluginIoOpen(exchange_fd_context_t *context, struct io_pkt *io);
-   bRC pluginIoRead(exchange_fd_context_t *context, struct io_pkt *io);
-   bRC pluginIoWrite(exchange_fd_context_t *context, struct io_pkt *io);
-   bRC pluginIoClose(exchange_fd_context_t *context, struct io_pkt *io);
-};
-
-class store_node_t : public node_t {
-public:
-   HCCX hccx;
-   DATABASE_BACKUP_INFO *dbi;
-   WCHAR *stream_ptr;
-   file_node_t *file_node;
-   dbi_node_t *dbi_node;
-   WCHAR *out_stream_ptr;
-
-   store_node_t(char *name, node_t *parent_node);
-   virtual ~store_node_t();
-   bRC startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp);
-   bRC endBackupFile(exchange_fd_context_t *context);
-
-   bRC createFile(exchange_fd_context_t *context, struct restore_pkt *rp);
-   bRC endRestoreFile(exchange_fd_context_t *context);
-};
-
-class storage_group_node_t : public node_t {
-public:
-   HCCX hccx;
-   INSTANCE_BACKUP_INFO *ibi;
-   store_node_t *store_node;
-   file_node_t *file_node;
-   uint32_t current_dbi;
-   WCHAR *logfiles;
-   WCHAR *logfile_ptr;
-   RESTORE_ENVIRONMENT *restore_environment;
-   WCHAR *service_name;
-   WCHAR *storage_group_name;
-   WCHAR *saved_log_path;
-   storage_group_node_t *next;
-
-   storage_group_node_t(char *name, node_t *parent_node);
-   virtual ~storage_group_node_t();
-   bRC startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp);
-   bRC endBackupFile(exchange_fd_context_t *context);
-
-   bRC createFile(exchange_fd_context_t *context, struct restore_pkt *rp);
-   bRC endRestoreFile(exchange_fd_context_t *context);
-};
-
-class service_node_t : public node_t {
-public:
-   uint32_t ibi_count;
-   INSTANCE_BACKUP_INFO *ibi;
-   HCCX hccx;
-   uint32_t current_ibi;
-   storage_group_node_t *first_storage_group_node;
-
-   service_node_t(char *name, node_t *parent_node);
-   virtual ~service_node_t();
-   bRC startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp);
-   bRC endBackupFile(exchange_fd_context_t *context);
-
-   bRC createFile(exchange_fd_context_t *context, struct restore_pkt *rp);
-   bRC endRestoreFile(exchange_fd_context_t *context);
-};
-
-class root_node_t : public node_t {
-public:
-   service_node_t *service_node;
-
-   root_node_t(char *name);
-   virtual ~root_node_t();
-   bRC startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp);
-   bRC endBackupFile(exchange_fd_context_t *context);
-
-   bRC createFile(exchange_fd_context_t *context, struct restore_pkt *rp);
-   bRC endRestoreFile(exchange_fd_context_t *context);
-};
diff --git a/src/win32/filed/plugins/root_node.c b/src/win32/filed/plugins/root_node.c
deleted file mode 100644
index dfddb74..0000000
--- a/src/win32/filed/plugins/root_node.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#include "exchange-fd.h"
-
-root_node_t::root_node_t(char *name) : node_t(name, NODE_TYPE_ROOT)
-{
-   service_node = NULL;
-}
-
-root_node_t::~root_node_t()
-{
-}
-
-bRC
-root_node_t::startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp)
-{
-   bRC retval = bRC_OK;
-   time_t now;
-
-   _DebugMessage(100, "startBackupNode_ROOT state = %d\n", state);
-   switch(state)
-   {
-   case 0:
-      if (strcmp(PLUGIN_PATH_PREFIX_BASE, name) != 0)
-      {
-         _JobMessage(M_FATAL, "Invalid backup path specified, must start with '/" PLUGIN_PATH_PREFIX_BASE "/'\n");
-         state = 999;
-         return bRC_Error;
-      }
-      // check that service_node == NULL
-      service_node = new service_node_t(bstrdup(context->path_bits[level + 1]), this);
-      state = 1;
-      // fall through
-   case 1:
-      context->current_node = service_node;
-      break;
-   case 2:
-      now = time(NULL);
-      sp->fname = full_path;
-      sp->link = full_path;
-      sp->statp.st_mode = 0700 | S_IFDIR;
-      sp->statp.st_ctime = now;
-      sp->statp.st_mtime = now;
-      sp->statp.st_atime = now;
-      sp->statp.st_size = 0;
-      sp->type = FT_DIREND;
-      break;
-   case 999:
-      return bRC_Error;
-   default:
-      _JobMessage(M_FATAL, "startBackupFile: invalid internal state %d", state);
-      state = 999;
-   }
-   return retval;
-}
-
-bRC
-root_node_t::endBackupFile(exchange_fd_context_t *context)
-{
-   bRC retval = bRC_OK;
-
-   _DebugMessage(100, "endBackupNode_ROOT state = %d\n", state);
-   switch(state)
-   {
-   case 1:
-      state = 2;
-      retval = bRC_More;
-      // free service_node here?
-      break;
-   case 2:
-      retval = bRC_OK;
-      break;
-   case 999:
-      retval = bRC_Error;
-   default:
-      _JobMessage(M_FATAL, "endBackupFile: invalid internal state %d", state);
-      state = 999;
-      return bRC_Error;
-   }
-   return retval;
-}
-
-bRC
-root_node_t::createFile(exchange_fd_context_t *context, struct restore_pkt *rp)
-{
-   _DebugMessage(100, "createFile_ROOT state = %d\n", state);
-   switch (state) {
-   case 0:
-      if (strcmp(name, PLUGIN_PATH_PREFIX_BASE) != 0) {
-         _JobMessage(M_FATAL, "Invalid restore path specified, must start with '/" PLUGIN_PATH_PREFIX_BASE "/'\n");
-         state = 999;
-         return bRC_Error;
-      }
-      service_node = new service_node_t(bstrdup(context->path_bits[level + 1]), this);
-      context->current_node = service_node;
-      return bRC_OK;
-   case 1:
-      rp->create_status = CF_CREATED;
-      return bRC_OK;
-
-   /* Skip this file */
-   case 900:
-      rp->create_status = CF_SKIP;
-      return bRC_OK;
-   /* Error */
-   case 999:
-      return bRC_Error;
-   default:
-      _JobMessage(M_FATAL, "createFile: invalid internal state %d", state);
-      state = 999;
-   }
-   return bRC_Error;
-}
-
-bRC
-root_node_t::endRestoreFile(exchange_fd_context_t *context)
-{
-   _DebugMessage(100, "endRestoreFile_ROOT state = %d\n", state);
-   switch (state) {
-   case 0:
-      delete service_node;
-      state = 1;
-      return bRC_OK;
-   case 1:
-      return bRC_OK;
-   case 900:
-      return bRC_OK;
-   default:
-      _JobMessage(M_FATAL, "endRestore: invalid internal state %d", state);
-      state = 999;
-   }
-   return bRC_Error;
-}
diff --git a/src/win32/filed/plugins/service_node.c b/src/win32/filed/plugins/service_node.c
deleted file mode 100644
index 0953200..0000000
--- a/src/win32/filed/plugins/service_node.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#include "exchange-fd.h"
-
-service_node_t::service_node_t(char *name, node_t *parent_node) : node_t(name, NODE_TYPE_SERVICE, parent_node)
-{
-   current_ibi = 0;
-   hccx = NULL;
-   ibi = NULL;
-   ibi_count = 0;
-   first_storage_group_node = NULL;
-}
-
-service_node_t::~service_node_t()
-{
-}
-
-bRC
-service_node_t::startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp)
-{
-   HRESULT result;
-   char aname[256];
-
-   _DebugMessage(100, "startBackupNode_SERVICE state = %d\n", state);
-   switch(state)
-   {
-   case 0:
-      if (strcmp(PLUGIN_PATH_PREFIX_SERVICE, name) != 0)
-      {
-         _JobMessage(M_FATAL, "Invalid restore path specified, must start with /" PLUGIN_PATH_PREFIX_BASE "/" PLUGIN_PATH_PREFIX_SERVICE "/\n");
-         return bRC_Error;
-      }
-      // convert name to a wide string
-
-      _DebugMessage(100, "Calling HrESEBackupPrepare\n");
-      wcstombs(aname, context->computer_name, 256);
-      _JobMessage(M_INFO, "Preparing Exchange Backup for %s\n", aname);
-      result = HrESEBackupPrepare(context->computer_name, PLUGIN_PATH_PREFIX_SERVICE_W, &ibi_count, &ibi, &hccx);
-      if (result != 0)
-      {
-         _JobMessage(M_FATAL, "HrESEBackupPrepare failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         return bRC_Error;
-      }
-      state = 1;
-      // fall through
-   case 1:
-      if (context->path_bits[level + 1] == NULL)
-      {
-         _DebugMessage(100, "No specific storage group specified - backing them all up\n");
-         char *tmp = new char[wcslen(ibi[current_ibi].wszInstanceName) + 1];
-         wcstombs(tmp, ibi[current_ibi].wszInstanceName, wcslen(ibi[current_ibi].wszInstanceName) + 1);
-         first_storage_group_node = new storage_group_node_t(tmp, this);
-         delete tmp;
-         _DebugMessage(100, "storage group name = %s\n", first_storage_group_node->name);
-         first_storage_group_node->ibi = &ibi[current_ibi];
-         first_storage_group_node->hccx = hccx;
-         context->current_node = first_storage_group_node;
-      }
-      else
-      {
-         char *tmp = NULL;
-         for (current_ibi = 0; current_ibi < ibi_count; current_ibi++)
-         {
-            tmp = new char[wcslen(ibi[current_ibi].wszInstanceName) + 1];
-            wcstombs(tmp, ibi[current_ibi].wszInstanceName, wcslen(ibi[current_ibi].wszInstanceName) + 1);
-            if (stricmp(tmp, context->path_bits[level + 1]) == 0)
-               break;
-         }
-         first_storage_group_node = new storage_group_node_t(tmp, this);
-         delete tmp;
-         if (current_ibi == ibi_count)
-         {
-            _JobMessage(M_FATAL, "Invalid Storage Group '%s'\n", context->path_bits[level + 1]);
-            return bRC_Error;
-         }
-         _DebugMessage(100, "storage group name = %s\n", first_storage_group_node->name);
-         first_storage_group_node->ibi = &ibi[current_ibi];
-         first_storage_group_node->hccx = hccx;
-         context->current_node = first_storage_group_node;
-      }
-      break;
-   case 2:
-      time_t now = time(NULL);
-      sp->fname = full_path;
-      sp->link = full_path;
-      sp->statp.st_mode = 0700 | S_IFDIR;
-      sp->statp.st_ctime = now;
-      sp->statp.st_mtime = now;
-      sp->statp.st_atime = now;
-      sp->statp.st_size = 0;
-      sp->statp.st_nlink = 1;
-      //sp->statp.st_blocks = 0;
-      sp->type = FT_DIREND;
-      break;
-   }
-   _DebugMessage(100, "ending startBackupNode_SERVICE state = %d\n", state);
-   return bRC_OK;
-}
-
-bRC
-service_node_t::endBackupFile(exchange_fd_context_t *context)
-{
-   HRESULT result;
-   bRC retval = bRC_OK;
-
-   _DebugMessage(100, "endBackupNode_SERVICE state = %d\n", state);
-   switch(state)
-   {
-   case 0:
-      // should never happen
-      break;
-   case 1:
-      // free node->storage_group_node
-      if (context->path_bits[level + 1] == NULL)
-      {
-         current_ibi++;
-         if (current_ibi == ibi_count)
-            state = 2;
-      }
-      else
-         state = 2;
-      retval = bRC_More;
-      break;
-   case 2:
-      _DebugMessage(100, "calling HrESEBackupEnd\n");
-      result = HrESEBackupEnd(hccx);
-      if (result != 0)
-      {
-         _JobMessage(M_FATAL, "HrESEBackupEnd failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         return bRC_Error;
-      }
-
-      context->current_node = parent;
-      retval = bRC_OK;
-      break;
-   }
-   return retval;
-}
-
-bRC
-service_node_t::createFile(exchange_fd_context_t *context, struct restore_pkt *rp)
-{
-   storage_group_node_t *curr_sg, *prev_sg;
-
-   _DebugMessage(100, "createFile_SERVICE state = %d\n", state);
-   if (strcmp(name, "Microsoft Information Store") != 0)
-   {
-      _JobMessage(M_FATAL, "Invalid restore path specified, must start with '/" PLUGIN_PATH_PREFIX_BASE "/" PLUGIN_PATH_PREFIX_SERVICE "/'\n", state);
-      return bRC_Error;
-   }
-   for(;;)
-   {
-      switch (state)
-      {
-      case 0:
-         if (context->path_bits[level + 1] == NULL)
-         {
-            state = 1;
-            break;
-         }
-         for (prev_sg = NULL, curr_sg = first_storage_group_node; curr_sg != NULL; prev_sg = curr_sg, curr_sg = curr_sg->next)
-         {
-            if (strcmp(curr_sg->name, context->path_bits[level + 1]) == 0)
-            {
-               break;
-            }
-         }
-         if (curr_sg == NULL)
-         {
-            curr_sg = new storage_group_node_t(bstrdup(context->path_bits[level + 1]), this);
-            if (prev_sg == NULL)
-               first_storage_group_node = curr_sg;
-            else
-               prev_sg->next = curr_sg;
-         }
-         context->current_node = curr_sg;
-         return bRC_OK;
-      case 1:
-         rp->create_status = CF_CREATED;
-         return bRC_OK;
-      }
-   }
-   return bRC_Error;
-}
-
-bRC
-service_node_t::endRestoreFile(exchange_fd_context_t *context)
-{
-   _DebugMessage(100, "endRestoreFile_SERVICE state = %d\n", state);
-   switch(state)
-   {
-   case 0:
-      return bRC_Error;
-   case 1:
-      context->current_node = parent;
-      return bRC_OK;
-   }
-
-   return bRC_Error;
-}
diff --git a/src/win32/filed/plugins/storage_group_node.c b/src/win32/filed/plugins/storage_group_node.c
deleted file mode 100644
index 4e6bf2e..0000000
--- a/src/win32/filed/plugins/storage_group_node.c
+++ /dev/null
@@ -1,511 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#include "exchange-fd.h"
-
-storage_group_node_t::storage_group_node_t(char *name, node_t *parent_node) : node_t(name, NODE_TYPE_STORAGE_GROUP, parent_node)
-{
-   ibi = NULL;
-   store_node = NULL;
-   current_dbi = 0;
-   restore_environment = NULL;
-   saved_log_path = NULL;
-   next = NULL;
-}
-
-storage_group_node_t::~storage_group_node_t()
-{
-/*
-   if (dbi_node != NULL)
-      delete dbi_node;
-
-   if (file_node != NULL)
-      delete file_node;
-*/
-}
-
-bRC
-storage_group_node_t::startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp)
-{
-   HRESULT result;
-   int len;
-   WCHAR *tmp_logfiles, *tmp_logfile_ptr;
-   char *tmp;
-
-   for(;;)
-   {
-      _DebugMessage(100, "startBackupNode_STORAGE_GROUP state = %d, name = %s\n", state, name);
-      switch(state)
-      {
-      case 0:
-         current_dbi = 0;
-         store_node = NULL;
-         logfile_ptr = NULL;
-         if (context->job_level == 'F')
-         {
-            _DebugMessage(100, "Calling HrESEBackupSetup (BACKUP_TYPE_FULL)\n");
-            result = HrESEBackupSetup(hccx, ibi->hInstanceId, BACKUP_TYPE_FULL);
-            state = 1;
-         }
-         else
-         {
-            _DebugMessage(100, "Calling HrESEBackupSetup (BACKUP_TYPE_LOGS_ONLY)\n");
-            result = HrESEBackupSetup(hccx, ibi->hInstanceId, BACKUP_TYPE_LOGS_ONLY);
-            if (context->accurate)
-               state = 1;
-            else
-               state = 2;
-         }
-         if (result != 0)
-         {
-            _JobMessage(M_FATAL, "HrESEBackupSetup failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-            state = 999;
-            return bRC_Error;
-         }
-         break;
-      case 1:
-         if (context->path_bits[level + 1] == NULL)
-         {
-            _DebugMessage(100, "No specific database specified - backing them all up\n");
-            DATABASE_BACKUP_INFO *dbi = &ibi->rgDatabase[current_dbi];
-            char *tmp = new char[wcslen(dbi->wszDatabaseDisplayName) + 1];
-            wcstombs(tmp, dbi->wszDatabaseDisplayName, wcslen(dbi->wszDatabaseDisplayName) + 1);
-            store_node = new store_node_t(tmp, this);
-            store_node->dbi = dbi;
-            store_node->hccx = hccx;
-            context->current_node = store_node;
-         }
-         else
-         {
-            DATABASE_BACKUP_INFO *dbi = NULL;
-            char *tmp = NULL;
-            for (current_dbi = 0; current_dbi < ibi->cDatabase; current_dbi++)
-            {
-               dbi = &ibi->rgDatabase[current_dbi];
-               char *tmp = new char[wcslen(dbi->wszDatabaseDisplayName) + 1];
-               wcstombs(tmp, dbi->wszDatabaseDisplayName, wcslen(dbi->wszDatabaseDisplayName) + 1);
-               if (stricmp(tmp, context->path_bits[level + 1]) == 0)
-                  break;
-               delete tmp;
-            }
-            if (current_dbi == ibi->cDatabase)
-            {
-               _JobMessage(M_FATAL, "Invalid Database '%s'\n", context->path_bits[level + 1]);
-               return bRC_Error;
-            }
-            store_node = new store_node_t(tmp, this);
-            _DebugMessage(100, "Database name = %s\n", store_node->name);
-            delete tmp;
-            store_node->hccx = hccx;
-            store_node->dbi = dbi;
-            context->current_node = store_node;
-         }
-         return bRC_OK;
-      case 2:
-         _DebugMessage(100, "Calling HrESEBackupGetLogAndPatchFiles\n");
-         result = HrESEBackupGetLogAndPatchFiles(hccx, &tmp_logfiles);
-         if (result != 0)
-         {
-            _JobMessage(M_FATAL, "HrESEBackupGetLogAndPatchFiles failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-            return bRC_Error;
-         }
-         for (len = 0, tmp_logfile_ptr = tmp_logfiles; *tmp_logfile_ptr != 0; tmp_logfile_ptr += wcslen(tmp_logfile_ptr) + 1)
-         {
-            len += wcslen(tmp_logfile_ptr) + 1;
-         }
-         logfiles = new WCHAR[len + 1];
-         logfile_ptr = logfiles;
-         for (tmp_logfile_ptr = tmp_logfiles; *tmp_logfile_ptr != 0; tmp_logfile_ptr += wcslen(tmp_logfile_ptr) + 1)
-         {
-            // check file modification date
-            HANDLE handle;
-            FILETIME modified_time;
-            //int64_t tmp_time;
-            __int64 tmp_time;
-            bool include_file;
-            include_file = false;
-            handle = INVALID_HANDLE_VALUE;
-            if (context->job_since == 0)
-               include_file = true;
-            if (!include_file)
-            {
-               handle = CreateFileW(tmp_logfile_ptr, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
-               if (handle == INVALID_HANDLE_VALUE)
-               {
-                  //_JobMessage(M_WARNING, "Could not open '%S' to check last modified date (0x%08x), including anyway\n", tmp_logfile_ptr, GetLastError());
-                  include_file = true;
-               }
-            }
-            if (!include_file)
-            {
-               if (GetFileTime(handle, NULL, NULL, &modified_time) == 0)
-               {
-                  //_JobMessage(M_WARNING, "Could not check last modified date for '%S' (0x%08x), including anyway\n", tmp_logfile_ptr, GetLastError());
-                  include_file = true;
-               }
-            }
-            if (!include_file)
-            {
-               tmp_time = (((int64_t)modified_time.dwHighDateTime) << 32) | modified_time.dwLowDateTime;
-               tmp_time -= 116444736000000000LL;
-               tmp_time /= 10000000;
-               if (tmp_time > context->job_since)
-               {
-                  include_file = true;
-               }
-            }
-            if (include_file)
-            {
-               memcpy(logfile_ptr, tmp_logfile_ptr, (wcslen(tmp_logfile_ptr) + 1) * 2);
-               logfile_ptr += wcslen(logfile_ptr) + 1;
-               //_DebugMessage(100, "Including file %S\n", logfile_ptr);
-            }
-#if 0
-/* this is handled via checkFile now */
-            else
-            {
-               if (context->accurate) {
-                  tmp = new char[strlen(full_path) + wcslen(tmp_logfile_ptr) + 1];
-                  strcpy(tmp, full_path);
-                  wcstombs(tmp + strlen(full_path), tmp_logfile_ptr, wcslen(tmp_logfile_ptr) + 1);
-                  bfuncs->setBaculaValue(context->bpContext, bVarFileSeen, (void *)tmp);
-                  delete tmp;
-               }
-            }
-#endif
-
-            if (handle != INVALID_HANDLE_VALUE)
-               CloseHandle(handle);
-
-         }
-         *logfile_ptr = 0;
-         logfile_ptr = logfiles;
-         state = 3;
-         break;
-      case 3:
-         tmp = new char[wcslen(logfile_ptr) + 1];
-         wcstombs(tmp, logfile_ptr, wcslen(logfile_ptr) + 1);
-         file_node = new file_node_t(tmp, this);
-         delete tmp;
-         file_node->hccx = hccx;
-         file_node->filename = logfile_ptr;
-         context->current_node = file_node;
-         return bRC_OK;
-      case 4:
-         time_t now = time(NULL);
-         sp->fname = full_path;
-         sp->link = full_path;
-         _DebugMessage(100, "fname = %s\n", sp->fname);
-         sp->statp.st_mode = 0700 | S_IFDIR;
-         sp->statp.st_ctime = now;
-         sp->statp.st_mtime = now;
-         sp->statp.st_atime = now;
-         sp->statp.st_size = 0;
-         //sp->statp.st_blocks = 0;
-         sp->type = FT_DIREND;
-         return bRC_OK;
-      }
-   }
-}
-
-bRC
-storage_group_node_t::endBackupFile(exchange_fd_context_t *context)
-{
-   HRESULT result;
-   bRC retval = bRC_Error;
-
-   _DebugMessage(100, "endBackupNode_STORAGE_GROUP state = %d\n", state);
-
-   switch(state)
-   {
-   case 0:
-      // should never happen
-      break;
-   case 1:
-      // free node->storage_group_node
-      if (context->path_bits[level + 1] == NULL)
-      {
-         current_dbi++;
-         if (current_dbi == ibi->cDatabase)
-            state = 2;
-      }
-      else
-         state = 2;
-      retval = bRC_More;
-      break;
-   case 2:
-      // should never happen
-      break;
-   case 3:
-      delete file_node;
-      logfile_ptr += wcslen(logfile_ptr) + 1;
-      if (*logfile_ptr == 0)
-         state = 4;
-      retval = bRC_More;
-      break;
-   case 4:
-      if (context->truncate_logs)
-      {
-         _DebugMessage(100, "Calling HrESEBackupTruncateLogs\n");
-         result = HrESEBackupTruncateLogs(hccx);
-         if (result != 0)
-         {
-            _JobMessage(M_FATAL, "HrESEBackupTruncateLogs failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         }
-         else
-         {
-            _JobMessage(M_INFO, "Truncated database logs for Storage Group %s\n", name);
-         }
-      }
-      else
-      {
-         _JobMessage(M_INFO, "Did NOT truncate database logs for Storage Group %s\n", name);
-      }
-      _DebugMessage(100, "Calling HrESEBackupInstanceEnd\n");
-      result = HrESEBackupInstanceEnd(hccx, ESE_BACKUP_INSTANCE_END_SUCCESS);
-      if (result != 0)
-      {
-         _JobMessage(M_FATAL, "HrESEBackupInstanceEnd failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         return bRC_Error;
-      }
-      retval = bRC_OK;
-      context->current_node = parent;
-      break;
-   }
-   return retval;
-}
-
-bRC
-storage_group_node_t::createFile(exchange_fd_context_t *context, struct restore_pkt *rp)
-{
-   HRESULT result;
-   int len;
-
-   _DebugMessage(100, "createFile_STORAGE_GROUP state = %d\n", state);
-
-   if (strcmp(context->path_bits[level], name) != 0)
-   {
-      _DebugMessage(100, "Different storage group - switching back to parent\n", state);
-      saved_log_path = new WCHAR[wcslen(restore_environment->m_wszRestoreLogPath) + 1];
-      wcscpy(saved_log_path, restore_environment->m_wszRestoreLogPath);
-      _DebugMessage(100, "Calling HrESERestoreSaveEnvironment\n");
-      result = HrESERestoreSaveEnvironment(hccx);
-      if (result != 0)
-      {
-         _JobMessage(M_FATAL, "HrESERestoreSaveEnvironment failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         state = 999;
-         rp->create_status = CF_CREATED;
-         return bRC_OK;
-      }
-      _DebugMessage(100, "Calling HrESERestoreClose\n");
-      result = HrESERestoreClose(hccx, RESTORE_CLOSE_NORMAL);
-      if (result != 0)
-      {
-         _JobMessage(M_FATAL, "HrESERestoreClose failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         state = 999;
-         rp->create_status = CF_CREATED;
-         return bRC_OK;
-      }
-      context->current_node = parent;
-      return bRC_OK;
-   }
-   if (saved_log_path != NULL)
-   {
-      _DebugMessage(100, "Calling HrESERestoreReopen\n");
-      result = HrESERestoreReopen(context->computer_name, service_name, saved_log_path, &hccx);
-      if (result != 0)
-      {
-         _JobMessage(M_FATAL, "HrESERestoreReopen failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         state = 999;
-         saved_log_path = NULL;
-         rp->create_status = CF_CREATED;
-         return bRC_OK;
-      }
-      _DebugMessage(100, "Calling HrESERestoreGetEnvironment\n");
-      result = HrESERestoreGetEnvironment(hccx, &restore_environment);
-      if (result != 0)
-      {
-         _JobMessage(M_FATAL, "HrESERestoreGetEnvironment failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-         state = 999;
-         saved_log_path = NULL;
-         rp->create_status = CF_CREATED;
-         return bRC_OK;
-      }
-      saved_log_path = NULL;
-   }
-
-   for (;;)
-   {
-      switch (state)
-      {
-      case 0:
-         if (context->path_bits[level + 2] == NULL)
-         {
-            _JobMessage(M_ERROR, "Unexpected log file '%s%s' - expecting database\n", full_path, context->path_bits[level + 1]);
-            state = 999;
-            break;
-         }
-         service_name = new WCHAR[strlen(parent->name) + 1];
-         storage_group_name = new WCHAR[strlen(name) + 1];
-         mbstowcs(service_name, parent->name, strlen(parent->name) + 1);
-         mbstowcs(storage_group_name, name, strlen(name) + 1);
-         _DebugMessage(100, "Calling HrESERestoreOpen\n");
-         result = HrESERestoreOpen(context->computer_name, service_name, storage_group_name, NULL, &hccx);
-         if (result != 0)
-         {
-            _JobMessage(M_FATAL, "HrESERestoreOpen failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-            state = 999;
-            break;
-         }
-         _DebugMessage(100, "Calling HrESERestoreGetEnvironment\n");
-         result = HrESERestoreGetEnvironment(hccx, &restore_environment);
-         if (result != 0)
-         {
-            _JobMessage(M_FATAL, "HrESERestoreGetEnvironment failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-            state = 999;
-            break;
-         }
-         state = 1;
-         break;
-      case 1:
-         if (context->path_bits[level + 2] == NULL)
-         {
-            state = 2;
-            break;
-         }
-         store_node = new store_node_t(bstrdup(context->path_bits[level + 1]), this);
-         store_node->hccx = hccx;
-         context->current_node = store_node;
-         return bRC_OK;
-      case 2:
-         if (context->path_bits[level + 2] != NULL)
-         {
-            _JobMessage(M_ERROR, "Unexpected file '%s'\n", full_path);
-            state = 999;
-            break;
-         }
-         if (context->path_bits[level + 1] == NULL)
-         {
-            state = 3;
-            break;
-         }
-         state = 2;
-         file_node = new file_node_t(bstrdup(context->path_bits[level + 1]), this);
-         file_node->hccx = hccx;
-         int i;
-         for (i = strlen(file_node->name) - 1; i >= 0; i--)
-         {
-            if (file_node->name[i] == '\\')
-            {
-               i++;
-               break;
-            }
-         }
-         len = wcslen(restore_environment->m_wszRestoreLogPath) + strlen(file_node->name + i) + 1 + 1;
-         file_node->filename = new WCHAR[len];
-         wcscpy(file_node->filename, restore_environment->m_wszRestoreLogPath);
-         wcscat(file_node->filename, L"\\");
-         mbstowcs(&file_node->filename[wcslen(file_node->filename)], file_node->name + i, strlen(file_node->name + i) + 1);
-         context->current_node = file_node;
-         return bRC_OK;
-      case 3:
-         if (rp->type != FT_DIREND)
-         {
-            _JobMessage(M_ERROR, "Unexpected file '%s'\n", full_path);
-            state = 999;
-            break;
-         }
-         // must be the storage group node
-         _DebugMessage(100, "Calling HrESERestoreSaveEnvironment\n");
-         result = HrESERestoreSaveEnvironment(hccx);
-         if (result != 0)
-         {
-            _JobMessage(M_FATAL, "HrESERestoreSaveEnvironment failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-            state = 999;
-            break;
-         }
-
-         _DebugMessage(100, "Calling HrESERestoreComplete\n");
-         result = HrESERestoreComplete(hccx, restore_environment->m_wszRestoreLogPath,
-            restore_environment->m_wszRestoreLogPath, storage_group_name, ESE_RESTORE_COMPLETE_ATTACH_DBS);
-         if (result != 0)
-         {
-            _JobMessage(M_FATAL, "HrESERestoreComplete failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-            _DebugMessage(100, "Calling HrESERestoreClose\n");
-            result = HrESERestoreClose(hccx, RESTORE_CLOSE_NORMAL);
-            state = 999;
-            break;
-         }
-         else
-         {
-            _JobMessage(M_INFO, "Storage Group '%s' restored successfully\n", name);
-         }
-
-         _DebugMessage(100, "Calling HrESERestoreClose\n");
-         result = HrESERestoreClose(hccx, RESTORE_CLOSE_NORMAL);
-         if (result != 0)
-         {
-            _JobMessage(M_FATAL, "HrESERestoreClose failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-            state = 999;
-            break;
-         }
-
-         rp->create_status = CF_CREATED;
-         return bRC_OK;
-      case 999:
-         rp->create_status = CF_CREATED;
-         return bRC_OK;
-      }
-   }
-}
-
-bRC
-storage_group_node_t::endRestoreFile(exchange_fd_context_t *context)
-{
-   _DebugMessage(100, "endRestoreFile_STORAGE_GROUP state = %d\n", state);
-   switch (state)
-   {
-   case 0:
-      return bRC_Error;
-   case 1:
-      return bRC_OK;
-   case 2:
-      return bRC_OK;
-   case 3:
-      context->current_node = parent;
-      return bRC_OK;
-   case 999:
-      context->current_node = parent;
-      return bRC_OK;
-   }
-
-   return bRC_Error;
-}
diff --git a/src/win32/filed/plugins/store_node.c b/src/win32/filed/plugins/store_node.c
deleted file mode 100644
index eea9431..0000000
--- a/src/win32/filed/plugins/store_node.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2008-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, which is 
-   listed 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.
-*/
-/* 
- *  Written by James Harper, October 2008
- */
-
-#include "exchange-fd.h"
-
-store_node_t::store_node_t(char *name, node_t *parent_node) : node_t(name, NODE_TYPE_STORE, parent_node)
-{
-   dbi = NULL;
-   hccx = NULL;
-   dbi_node = NULL;
-   file_node = NULL;
-}
-
-store_node_t::~store_node_t()
-{
-   if (dbi_node != NULL)
-      delete dbi_node;
-
-   if (file_node != NULL)
-      delete file_node;
-}
-
-bRC
-store_node_t::startBackupFile(exchange_fd_context_t *context, struct save_pkt *sp)
-{
-   char *tmp;
-
-   _DebugMessage(100, "startBackupNode_STORE state = %d\n", state);
-
-   switch(state)
-   {
-   case 0:
-      stream_ptr = dbi->wszDatabaseStreams;
-      state = 1;
-      // fall through
-   case 1:
-      dbi_node = new dbi_node_t("DatabaseBackupInfo", this);
-      dbi_node->dbi = dbi;
-      context->current_node = dbi_node;
-      break;
-   case 2:
-      tmp = new char[wcslen(stream_ptr) + 1];
-      wcstombs(tmp, stream_ptr, wcslen(stream_ptr) + 1);
-      file_node = new file_node_t(tmp, this);
-      file_node->hccx = hccx;
-      file_node->filename = stream_ptr;
-      context->current_node = file_node;
-      break;
-   case 3:
-      if (context->job_level == 'F')
-      {
-         time_t now = time(NULL);
-         sp->fname = full_path;
-         sp->link = full_path;
-         sp->statp.st_mode = 0700 | S_IFDIR;
-         sp->statp.st_ctime = now;
-         sp->statp.st_mtime = now;
-         sp->statp.st_atime = now;
-         sp->statp.st_size = 0;
-         sp->type = FT_DIREND;
-      }
-      else
-      {
-         bfuncs->setBaculaValue(context->bpContext, bVarFileSeen, (void *)full_path);
-         return bRC_Seen;
-      }
-      break;
-   }
-
-   return bRC_OK;
-}
-
-bRC
-store_node_t::endBackupFile(exchange_fd_context_t *context)
-{
-   _DebugMessage(100, "endBackupNode_STORE state = %d\n", state);
-   bRC retval = bRC_OK;
-
-   switch(state)
-   {
-   case 0:
-      // should never happen
-      break;
-   case 1:
-      state = 2;
-      retval = bRC_More;
-      break;
-   case 2:
-      delete file_node;
-      stream_ptr += wcslen(stream_ptr) + 1;
-      if (*stream_ptr == 0)
-         state = 3;
-      retval = bRC_More;
-      break;
-   case 3:
-      //delete dbi_node;
-      context->current_node = parent;
-      break;
-   }
-   return retval;
-}
-
-bRC
-store_node_t::createFile(exchange_fd_context_t *context, struct restore_pkt *rp)
-{
-   _DebugMessage(100, "createFile_STORE state = %d\n", state);
-
-   if (strcmp(context->path_bits[level - 1], parent->name) != 0)
-   {
-      _DebugMessage(100, "Different storage group - switching back to parent\n", state);
-      context->current_node = parent;
-      return bRC_OK;
-   }
-   for (;;)
-   {
-      switch (state)
-      {
-      case 0:
-         if (strcmp("DatabaseBackupInfo", context->path_bits[level + 1]) != 0)
-         {
-            _JobMessage(M_FATAL, "DatabaseBackupInfo file must exist and must be first in directory\n");
-            state = 999;
-            break;
-         }
-         dbi_node = new dbi_node_t(bstrdup(context->path_bits[level + 1]), this);
-         context->current_node = dbi_node;
-         return bRC_OK;
-      case 1:
-         if (strcmp(context->path_bits[level - 1], parent->name) != 0)
-         {
-            _JobMessage(M_ERROR, "Unexpected Storage Group Change\n");
-            state = 999;
-            break;
-         }
-
-         if (*stream_ptr != 0)
-         {
-            // verify that stream_ptr == context->path_bits[level + 1];
-            _DebugMessage(150, "stream_ptr = %S\n", stream_ptr);
-            _DebugMessage(150, "out_stream_ptr = %S\n", out_stream_ptr);
-            file_node = new file_node_t(bstrdup(context->path_bits[level + 1]), this);
-            file_node->hccx = hccx;
-            file_node->filename = out_stream_ptr;
-            context->current_node = file_node;
-            return bRC_OK;
-         }
-         else
-         {
-            _JobMessage(M_ERROR, "Extra file found '%s'\n", full_path);
-            state = 999;
-            break;
-         }
-      case 2:
-         if (rp->type != FT_DIREND)
-         {
-            _JobMessage(M_ERROR, "Unexpected file '%s'\n", full_path);
-            state = 999;
-            break;
-         }
-         rp->create_status = CF_CREATED;
-         return bRC_OK;
-      case 999:
-         if (strcmp(context->path_bits[level], name) != 0)
-         {
-            _DebugMessage(100, "End of Store when in error state - switching back to parent\n", state);
-            context->current_node = parent;
-            return bRC_OK;
-         }
-         rp->create_status = CF_CREATED;
-         return bRC_OK;
-      }
-   }
-}
-
-bRC
-store_node_t::endRestoreFile(exchange_fd_context_t *context)
-{
-   HRESULT result;
-
-   _DebugMessage(100, "endRestoreFile_STORE state = %d\n", state);
-   for (;;)
-   {
-      switch (state)
-      {
-      case 0:
-         state = 1;
-         _DebugMessage(100, "Calling HrESERestoreAddDatabase\n");
-         result = HrESERestoreAddDatabase(hccx, dbi_node->restore_display_name, dbi_node->restore_guid, dbi_node->restore_input_streams, &dbi_node->restore_output_streams);
-         if (result != 0)
-         {
-            _JobMessage(M_FATAL, "HrESERestoreAddDatabase failed with error 0x%08x - %s\n", result, ESEErrorMessage(result));
-            state = 999;
-            break;
-         }
-         stream_ptr = dbi_node->restore_input_streams;
-         out_stream_ptr = dbi_node->restore_output_streams;
-         return bRC_OK;
-      case 1:
-         if (*stream_ptr != 0)
-         {
-            delete file_node;
-            file_node = NULL;
-            stream_ptr += wcslen(stream_ptr) + 1;
-            out_stream_ptr += wcslen(out_stream_ptr) + 1;
-            if (*stream_ptr == 0)
-               state = 2;
-            return bRC_OK;
-         }
-         else
-         {
-            state = 999;
-            break;
-         }
-      case 2:
-         context->current_node = parent;
-         return bRC_OK;
-      case 999:
-         return bRC_OK;
-      }
-   }
-}
diff --git a/src/win32/filed/service.cpp b/src/win32/filed/service.cpp
deleted file mode 100644
index e108c65..0000000
--- a/src/win32/filed/service.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- */
-
-#include "who.h"
-#include "../libwin32/service.cpp"
diff --git a/src/win32/filed/trayMonitor.cpp b/src/win32/filed/trayMonitor.cpp
deleted file mode 100644
index 3ccdc1e..0000000
--- a/src/win32/filed/trayMonitor.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- */
-
-#include "who.h"
-#include "../libwin32/trayMonitor.cpp"
diff --git a/src/win32/filed/vss.cpp b/src/win32/filed/vss.cpp
deleted file mode 100644
index a923fb8..0000000
--- a/src/win32/filed/vss.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2005-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.
-*/
-// vss.cpp -- Interface to Volume Shadow Copies (VSS)
-//
-// Copyright transferred from MATRIX-Computer GmbH to
-//   Kern Sibbald by express permission.
-//
-// Author          : Thorsten Engel
-// Created On      : Fri May 06 21:44:00 2005
-
-
-#ifdef WIN32_VSS
-#include "bacula.h"
-#include "compat.h"
-
-#include "ms_atl.h"
-#include <objbase.h>
-
-#include "vss.h"
-
-VSSClient *g_pVSSClient;
-
-// {b5946137-7b9f-4925-af80-51abd60b20d5}
-
-static const GUID VSS_SWPRV_ProviderID =
-   { 0xb5946137, 0x7b9f, 0x4925, { 0xaf, 0x80, 0x51, 0xab, 0xd6, 0x0b, 0x20, 0xd5 } };
-
-void 
-VSSCleanup()
-{
-   if (g_pVSSClient) {
-      delete (g_pVSSClient);
-      g_pVSSClient = NULL;
-   }
-}
-
-/*
- * May be called multiple times 
- */
-void VSSInit()
-{
-   if (g_pVSSClient) {
-      return;                   /* already initialized */
-   }
-   /* decide which vss class to initialize */
-   if (g_MajorVersion == 5) {
-      switch (g_MinorVersion) {
-      case 1: 
-         g_pVSSClient = new VSSClientXP();
-         break;
-      case 2: 
-         g_pVSSClient = new VSSClient2003();
-         break;
-      }
-   /* Vista or Longhorn or later */
-   } else if (g_MajorVersion >= 6) {
-      g_pVSSClient = new VSSClientVista();
-   }
-   if (g_pVSSClient) {
-      atexit(VSSCleanup);
-   }
-}
-
-BOOL
-VSSPathConvert(const char *szFilePath, char *szShadowPath, int nBuflen)
-{
-   return g_pVSSClient->GetShadowPath(szFilePath, szShadowPath, nBuflen);
-}
-
-BOOL
-VSSPathConvertW(const wchar_t *szFilePath, wchar_t *szShadowPath, int nBuflen)
-{
-   return g_pVSSClient->GetShadowPathW(szFilePath, szShadowPath, nBuflen);
-}
-
-// Constructor
-VSSClient::VSSClient()
-{
-    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;
-}
-
-// Destructor
-VSSClient::~VSSClient()
-{
-   // Release the IVssBackupComponents interface 
-   // WARNING: this must be done BEFORE calling CoUninitialize()
-   if (m_pVssObject) {
-//      m_pVssObject->Release();
-      m_pVssObject = NULL;
-   }
-
-   DestroyWriterInfo();
-   delete m_pAlistWriterState;
-   delete m_pAlistWriterInfoText;
-
-   // Call CoUninitialize if the CoInitialize was performed successfully
-   if (m_bCoInitializeCalled) {
-      CoUninitialize();
-   }
-}
-
-bool VSSClient::InitializeForBackup(JCR *jcr)
-{
-    //return Initialize (VSS_CTX_BACKUP);
-   m_jcr = jcr;
-   return Initialize(0);
-}
-
-
-bool VSSClient::InitializeForRestore(JCR *jcr)
-{
-   m_metadata = NULL;
-   m_jcr = jcr;
-   return Initialize(0, true/*=>Restore*/);
-}
-
-bool VSSClient::GetShadowPath(const char *szFilePath, char *szShadowPath, int nBuflen)
-{
-   if (!m_bBackupIsInitialized)
-      return false;
-
-   /* check for valid pathname */
-   bool bIsValidName;
-   
-   bIsValidName = strlen(szFilePath) > 3;
-   if (bIsValidName)
-      bIsValidName &= isalpha (szFilePath[0]) &&
-                      szFilePath[1]==':' && 
-                      szFilePath[2] == '\\';
-
-   if (bIsValidName) {
-      int nDriveIndex = toupper(szFilePath[0])-'A';
-      if (m_szShadowCopyName[nDriveIndex][0] != 0) {
-
-         if (WideCharToMultiByte(CP_UTF8,0,m_szShadowCopyName[nDriveIndex],-1,szShadowPath,nBuflen-1,NULL,NULL)) {
-            nBuflen -= (int)strlen(szShadowPath);
-            bstrncat(szShadowPath, szFilePath+2, nBuflen);
-            return true;
-         }
-      }
-   }
-   
-   bstrncpy(szShadowPath, szFilePath, nBuflen);
-   errno = EINVAL;
-   return false;   
-}
-
-bool VSSClient::GetShadowPathW(const wchar_t *szFilePath, wchar_t *szShadowPath, int nBuflen)
-{
-   if (!m_bBackupIsInitialized)
-      return false;
-
-   /* check for valid pathname */
-   bool bIsValidName;
-   
-   bIsValidName = wcslen(szFilePath) > 3;
-   if (bIsValidName)
-      bIsValidName &= iswalpha (szFilePath[0]) &&
-                      szFilePath[1]==':' && 
-                      szFilePath[2] == '\\';
-
-   if (bIsValidName) {
-      int nDriveIndex = towupper(szFilePath[0])-'A';
-      if (m_szShadowCopyName[nDriveIndex][0] != 0) {
-         wcsncpy(szShadowPath, m_szShadowCopyName[nDriveIndex], nBuflen);
-         nBuflen -= (int)wcslen(m_szShadowCopyName[nDriveIndex]);
-         wcsncat(szShadowPath, szFilePath+2, nBuflen);
-         return true;
-      }
-   }
-   
-   wcsncpy(szShadowPath, szFilePath, nBuflen);
-   errno = EINVAL;
-   return false;   
-}
-
-
-const size_t VSSClient::GetWriterCount()
-{
-   return m_pAlistWriterInfoText->size();
-}
-
-const char* VSSClient::GetWriterInfo(int nIndex)
-{
-   return (char*)m_pAlistWriterInfoText->get(nIndex);
-}
-
-
-const int VSSClient::GetWriterState(int nIndex)
-{
-   void *item = m_pAlistWriterState->get(nIndex);
-
-/* Eliminate compiler warnings */
-#ifdef HAVE_VSS64
-   return (int64_t)(char *)item;
-#else
-   return (int)(char *)item;
-#endif
-}
-
-void VSSClient::AppendWriterInfo(int nState, const char* pszInfo)
-{
-   m_pAlistWriterInfoText->push(bstrdup(pszInfo));
-   m_pAlistWriterState->push((void*)nState);   
-}
-
-/*
- * Note, this is called at the end of every job, so release all
- *  the items in the alists, but do not delete the alist.
- */
-void VSSClient::DestroyWriterInfo()
-{
-   while (!m_pAlistWriterInfoText->empty()) {
-      free(m_pAlistWriterInfoText->pop());
-   }
-
-   while (!m_pAlistWriterState->empty()) {
-      m_pAlistWriterState->pop();      
-   }
-}
-
-#endif
diff --git a/src/win32/filed/vss.h b/src/win32/filed/vss.h
deleted file mode 100644
index 6416086..0000000
--- a/src/win32/filed/vss.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
-   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.
-*/
-/*                               -*- Mode: C -*-
- * vss.h --
- */
-//
-// Copyright transferred from MATRIX-Computer GmbH to
-//   Kern Sibbald by express permission.
-/*
- *
- * Author          : Thorsten Engel
- * Created On      : Fri May 06 21:44:00 2006 
- */
-
-#ifndef __VSS_H_
-#define __VSS_H_
-
-#ifndef b_errno_win32
-#define b_errno_win32 (1<<29)
-#endif
- 
-#ifdef WIN32_VSS
-
-#define VSS_INIT_RESTORE_AFTER_INIT   1
-#define VSS_INIT_RESTORE_AFTER_GATHER 2
-
-// some forward declarations
-struct IVssAsync;
-
-class VSSClient
-{
-public:
-    VSSClient();
-    virtual ~VSSClient();
-
-    // Backup Process
-    bool InitializeForBackup(JCR *jcr);
-    bool InitializeForRestore(JCR *jcr);
-    virtual bool CreateSnapshots(char* szDriveLetters) = 0;
-    virtual bool CloseBackup() = 0;
-    virtual bool CloseRestore() = 0;
-    virtual WCHAR *GetMetadata() = 0;
-    virtual const char* GetDriverName() = 0;
-    bool GetShadowPath  (const char* szFilePath, char* szShadowPath, int nBuflen);
-    bool GetShadowPathW (const wchar_t* szFilePath, wchar_t* szShadowPath, int nBuflen); /* nBuflen in characters */
-
-    const size_t GetWriterCount();
-    const char* GetWriterInfo(int nIndex);
-    const int   GetWriterState(int nIndex);
-    void DestroyWriterInfo();
-    void AppendWriterInfo(int nState, const char* pszInfo);
-    const bool  IsInitialized() { return m_bBackupIsInitialized; };
-    HMODULE GetVssDllHandle() { return m_hLib; };
-    IUnknown *GetVssObject() { return m_pVssObject; };
-         
-private:
-    virtual bool Initialize(DWORD dwContext, bool bDuringRestore = FALSE) = 0;
-    virtual bool WaitAndCheckForAsyncOperation(IVssAsync*  pAsync) = 0;
-    virtual void QuerySnapshotSet(GUID snapshotSetID) = 0;
-
-protected:
-    HMODULE    m_hLib;
-    JCR       *m_jcr;
-
-    DWORD      m_dwContext;
-
-    IUnknown*  m_pVssObject;
-    GUID       m_uidCurrentSnapshotSet;
-
-    // drive A will be stored on position 0,Z on pos. 25
-    wchar_t    m_wszUniqueVolumeName[26][MAX_PATH]; // approx. 7 KB
-    wchar_t    m_szShadowCopyName[26][MAX_PATH]; // approx. 7 KB
-    
-    alist     *m_pAlistWriterState;
-    alist     *m_pAlistWriterInfoText;
-
-    bool       m_bCoInitializeCalled;
-    bool       m_bCoInitializeSecurityCalled;
-    bool       m_bDuringRestore;  /* true if we are doing a restore */
-    bool       m_bBackupIsInitialized;
-    bool       m_bWriterStatusCurrent;
-
-    WCHAR     *m_metadata;
-};
-
-class VSSClientXP:public VSSClient
-{
-public:
-   VSSClientXP();
-   virtual ~VSSClientXP();
-   virtual bool CreateSnapshots(char* szDriveLetters);
-   virtual bool CloseBackup();
-   virtual bool CloseRestore();
-   virtual WCHAR *GetMetadata();
-#ifdef _WIN64
-   virtual const char* GetDriverName() { return "Win64 VSS"; };
-#else
-   virtual const char* GetDriverName() { return "Win32 VSS"; };
-#endif
-private:
-   virtual bool Initialize(DWORD dwContext, bool bDuringRestore);
-   virtual bool WaitAndCheckForAsyncOperation(IVssAsync* pAsync);
-   virtual void QuerySnapshotSet(GUID snapshotSetID);
-   bool CheckWriterStatus();   
-};
-
-class VSSClient2003:public VSSClient
-{
-public:
-   VSSClient2003();
-   virtual ~VSSClient2003();
-   virtual bool CreateSnapshots(char* szDriveLetters);
-   virtual bool CloseBackup();   
-   virtual bool CloseRestore();
-   virtual WCHAR *GetMetadata();
-#ifdef _WIN64
-   virtual const char* GetDriverName() { return "Win64 VSS"; };
-#else
-   virtual const char* GetDriverName() { return "Win32 VSS"; };
-#endif
-private:
-   virtual bool Initialize(DWORD dwContext, bool bDuringRestore);
-   virtual bool WaitAndCheckForAsyncOperation(IVssAsync*  pAsync);
-   virtual void QuerySnapshotSet(GUID snapshotSetID);
-   bool CheckWriterStatus();
-};
-
-class VSSClientVista:public VSSClient
-{
-public:
-   VSSClientVista();
-   virtual ~VSSClientVista();
-   virtual bool CreateSnapshots(char* szDriveLetters);
-   virtual bool CloseBackup();   
-   virtual bool CloseRestore();
-   virtual WCHAR *GetMetadata();
-#ifdef _WIN64
-   virtual const char* GetDriverName() { return "Win64 VSS"; };
-#else
-   virtual const char* GetDriverName() { return "Win32 VSS"; };
-#endif
-private:
-   virtual bool Initialize(DWORD dwContext, bool bDuringRestore);
-   virtual bool WaitAndCheckForAsyncOperation(IVssAsync*  pAsync);
-   virtual void QuerySnapshotSet(GUID snapshotSetID);
-   bool CheckWriterStatus();
-};
-
-
-extern VSSClient *g_pVSSClient;
-
-BOOL VSSPathConvert(const char *szFilePath, char *szShadowPath, int nBuflen);
-BOOL VSSPathConvertW(const wchar_t *szFilePath, wchar_t *szShadowPath, int nBuflen);
-
-#endif /* WIN32_VSS */
-
-#endif /* __VSS_H_ */
diff --git a/src/win32/filed/vss_Vista.cpp b/src/win32/filed/vss_Vista.cpp
deleted file mode 100644
index c9e8184..0000000
--- a/src/win32/filed/vss_Vista.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifdef WIN32_VSS
-#define B_VSS_VISTA
-#include "vss_generic.cpp"
-#endif
diff --git a/src/win32/filed/vss_W2K3.cpp b/src/win32/filed/vss_W2K3.cpp
deleted file mode 100644
index 1c397da..0000000
--- a/src/win32/filed/vss_W2K3.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-/* 
- * We need one class per OS as Microsofts API 
- * differs only by calling convention and some
- * function we don't use.
- *
- * vss_generic will handle all versions and
- * switch between different headers to include.
-*/
-
-#ifdef WIN32_VSS
-#define B_VSS_W2K3
-#include "vss_generic.cpp"
-#endif
diff --git a/src/win32/filed/vss_XP.cpp b/src/win32/filed/vss_XP.cpp
deleted file mode 100644
index 2087129..0000000
--- a/src/win32/filed/vss_XP.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifdef WIN32_VSS
-#define B_VSS_XP
-#include "vss_generic.cpp"
-#endif
diff --git a/src/win32/filed/vss_generic.cpp b/src/win32/filed/vss_generic.cpp
deleted file mode 100644
index d3fca1f..0000000
--- a/src/win32/filed/vss_generic.cpp
+++ /dev/null
@@ -1,898 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2005-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.
-*/
-//                              -*- Mode: C++ -*-
-// vss.cpp -- Interface to Volume Shadow Copies (VSS)
-//
-// Copyright transferred from MATRIX-Computer GmbH to
-//   Kern Sibbald by express permission.
-//
-// Author          : Thorsten Engel
-// Created On      : Fri May 06 21:44:00 2005
-
-
-#ifdef WIN32_VSS
-
-#include "bacula.h"
-#include "jcr.h"
-
-#undef setlocale
-
-// STL includes
-#include <vector>
-#include <algorithm>
-#include <string>
-#include <sstream>
-#include <fstream>
-using namespace std;
-
-#include "ms_atl.h"
-#include <objbase.h>
-
-/* 
- * Kludges to get Vista code to compile.             
- *  KES - June 2007
- */
-#define __in  IN
-#define __out OUT
-#define __RPC_unique_pointer
-#define __RPC_string
-#define __RPC__out_ecount_part(x, y)
-#define __RPC__deref_inout_opt
-#define __RPC__out
-
-#if !defined(ENABLE_NLS)
-#define setlocale(p, d)
-#endif
-
-#ifdef HAVE_STRSAFE_H
-// Used for safe string manipulation
-#include <strsafe.h>
-#endif
-
-BOOL VSSPathConvert(const char *szFilePath, char *szShadowPath, int nBuflen);
-BOOL VSSPathConvertW(const wchar_t *szFilePath, wchar_t *szShadowPath, int nBuflen);
-
-#ifdef HAVE_MINGW
-class IXMLDOMDocument;
-#endif
-
-/* Reduce compiler warnings from Windows vss code */
-#undef uuid
-#define uuid(x)
-
-#ifdef B_VSS_XP
-   #define VSSClientGeneric VSSClientXP
-   #include "inc/WinXP/vss.h"
-   #include "inc/WinXP/vswriter.h"
-   #include "inc/WinXP/vsbackup.h"
-
-#endif
-
-#ifdef B_VSS_W2K3
-   #define VSSClientGeneric VSSClient2003
-   #include "inc/Win2003/vss.h"
-   #include "inc/Win2003/vswriter.h"
-   #include "inc/Win2003/vsbackup.h"
-#endif
-
-#ifdef B_VSS_VISTA
-   #define VSSClientGeneric VSSClientVista
-   #include "inc/Win2003/vss.h"
-   #include "inc/Win2003/vswriter.h"
-   #include "inc/Win2003/vsbackup.h"
-#endif
-   
-/* In VSSAPI.DLL */
-typedef HRESULT (STDAPICALLTYPE* t_CreateVssBackupComponents)(OUT IVssBackupComponents **);
-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
-
-
-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);
-}
-
-
-/*  
- *
- * some helper functions 
- *
- *
- */
-
-// Append a backslash to the current string 
-inline wstring AppendBackslash(wstring str)
-{
-    if (str.length() == 0) {
-        return wstring(L"\\");
-    }
-    if (str[str.length() - 1] == L'\\') {
-        return str;
-    }
-    return str.append(L"\\");
-}
-
-// Get the unique volume name for the given path
-inline wstring GetUniqueVolumeNameForPath(wstring path)
-{
-    if (path.length() <= 0) {
-       return L"";
-    }
-
-    // Add the backslash termination, if needed
-    path = AppendBackslash(path);
-
-    // Get the root path of the volume
-    wchar_t volumeRootPath[MAX_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"";
-    }
-    
-    // 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)) {
-       return L"";
-    }
-    
-    // Get the unique volume name    
-    if (!p_GetVolumeNameForVolumeMountPointW(volumeName, volumeUniqueName, MAX_PATH)) {
-       return L"";
-    }
-    
-    return volumeUniqueName;
-}
-
-
-// Helper macro for quick treatment of case statements for error codes
-#define GEN_MERGE(A, B) A##B
-#define GEN_MAKE_W(A) GEN_MERGE(L, A)
-
-#define CHECK_CASE_FOR_CONSTANT(value)                      \
-    case value: return (GEN_MAKE_W(#value));
-
-
-// Convert a writer status into a string
-inline const wchar_t* GetStringFromWriterStatus(VSS_WRITER_STATE eWriterStatus)
-{
-    switch (eWriterStatus) {
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_STABLE);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_WAITING_FOR_FREEZE);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_WAITING_FOR_THAW);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_WAITING_FOR_POST_SNAPSHOT);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_WAITING_FOR_BACKUP_COMPLETE);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_FAILED_AT_IDENTIFY);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_FAILED_AT_PREPARE_BACKUP);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_FAILED_AT_PREPARE_SNAPSHOT);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_FAILED_AT_FREEZE);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_FAILED_AT_THAW);
-    CHECK_CASE_FOR_CONSTANT(VSS_WS_FAILED_AT_POST_SNAPSHOT);
-    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";
-    }
-}
-
-// Constructor
-
-#ifdef HAVE_VSS64
-/* 64 bit entrypoint name */
-#define VSSVBACK_ENTRY "?CreateVssBackupComponents@@YAJPEAPEAVIVssBackupComponents@@@Z"
-#else
-/* 32 bit entrypoint name */
-#define VSSVBACK_ENTRY "?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z"
-#endif
-
-VSSClientGeneric::VSSClientGeneric()
-{
-   m_hLib = LoadLibraryA("VSSAPI.DLL");
-   if (m_hLib) {      
-      p_CreateVssBackupComponents = (t_CreateVssBackupComponents)
-         GetProcAddress(m_hLib, VSSVBACK_ENTRY);
-      p_VssFreeSnapshotProperties = (t_VssFreeSnapshotProperties)
-          GetProcAddress(m_hLib, "VssFreeSnapshotProperties");      
-   } 
-}
-
-
-
-// Destructor
-VSSClientGeneric::~VSSClientGeneric()
-{
-   if (m_hLib) {
-      FreeLibrary(m_hLib);
-   }
-}
-
-// Initialize the COM infrastructure and the internal pointers
-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);
-      Jmsg(m_jcr, M_FATAL, 0, "Entry point CreateVssBackupComponents or VssFreeSnapshotProperties missing.\n");
-      return false;
-   }
-
-   HRESULT hr;
-   // Initialize COM
-   if (!m_bCoInitializeCalled) {
-      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;
-      }
-      m_bCoInitializeCalled = true;
-   }
-
-   // Initialize COM security
-   if (!m_bCoInitializeSecurityCalled) {
-      hr =
-         CoInitializeSecurity(
-         NULL,                           //  Allow *all* VSS writers to communicate back!
-         -1,                             //  Default COM authentication service
-         NULL,                           //  Default COM authorization service
-         NULL,                           //  reserved parameter
-         RPC_C_AUTHN_LEVEL_PKT_PRIVACY,  //  Strongest COM authentication level
-         RPC_C_IMP_LEVEL_IDENTIFY,       //  Minimal impersonation abilities 
-         NULL,                           //  Default COM authentication settings
-         EOAC_NONE,                      //  No special options
-         NULL                            //  Reserved parameter
-         );
-
-      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 any old IVssBackupComponents interface 
-   if (pVssObj) {
-      pVssObj->Release();
-      m_pVssObject = NULL;
-   }
-
-   // 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 = 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
-
-      // 1. 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()) {
-      case L_FULL:
-         backup_type = VSS_BT_FULL;
-         break;
-      case L_DIFFERENTIAL:
-         backup_type = VSS_BT_DIFFERENTIAL;
-         break;
-      case L_INCREMENTAL:
-         backup_type = VSS_BT_INCREMENTAL;
-         break;
-      default:
-         Dmsg1(0, "VSSClientGeneric::Initialize: unknown backup level %d\n", m_jcr->getJobLevel());
-         backup_type = VSS_BT_FULL;
-         break;
-      }
-      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 = 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
-      if (!WaitAndCheckForAsyncOperation(pAsync1.p)) {
-         /* Error message already printed */
-         errno = b_errno_win32;
-         return false;
-      }
-   }
-
-   // We are during restore now?
-   m_bDuringRestore = bDuringRestore;
-
-   // Keep the context
-   m_dwContext = dwContext;
-
-   return true;
-}
-
-bool VSSClientGeneric::WaitAndCheckForAsyncOperation(IVssAsync* pAsync)
-{
-   // Wait until the async operation finishes
-   // unfortunately we can't use a timeout here yet.
-   // the interface would allow it on W2k3,
-   // but it is not implemented yet....
-
-   HRESULT hr;
-
-   // Check the result of the asynchronous operation
-   HRESULT hrReturned = S_OK;
-
-   int timeout = 600; // 10 minutes....
-
-   int queryErrors = 0;
-   do {
-      if (hrReturned != S_OK) {
-         Sleep(1000);
-      }
-      hrReturned = S_OK;
-      hr = pAsync->QueryStatus(&hrReturned, NULL);
-      if (FAILED(hr)) { 
-         queryErrors++;
-      }
-   } while ((timeout-- > 0) && (hrReturned == VSS_S_ASYNC_PENDING));
-
-   if (hrReturned == VSS_S_ASYNC_FINISHED) {
-      return true;
-   }
-   
-   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;
-
-   pVssObj = (IVssBackupComponents*)m_pVssObject;
-
-   /* startSnapshotSet */
-   hr = pVssObj->StartSnapshotSet(&m_uidCurrentSnapshotSet);
-   if (FAILED(hr)) {
-      JmsgVssApiStatus(m_jcr, M_FATAL, hr, "StartSnapshotSet");
-      errno = ENOSYS;
-      return false;
-   }
-      
-
-   /* AddToSnapshotSet */
-
-   wchar_t szDrive[3];
-   szDrive[1] = ':';
-   szDrive[2] = 0;
-
-   wstring volume;
-
-   CComPtr<IVssAsync>  pAsync1;
-   CComPtr<IVssAsync>  pAsync2;   
-   VSS_ID pid;
-
-   for (size_t i=0; i < strlen (szDriveLetters); i++) {
-      szDrive[0] = szDriveLetters[i];
-      volume = GetUniqueVolumeNameForPath(szDrive);
-      // store uniquevolumname
-      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]);               
-      }
-   }
-
-   /* PrepareForBackup */
-   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
-   if (!WaitAndCheckForAsyncOperation(pAsync1.p)) {
-      errno = b_errno_win32;
-      return false;
-   }
-
-   /* get latest info about writer status */
-   if (!CheckWriterStatus()) {
-      errno = b_errno_win32;       /* Error already printed */
-      return false;
-   }
-
-   /* DoSnapShotSet */   
-   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
-   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);
-
-   SetVSSPathConvert(VSSPathConvert, VSSPathConvertW);
-
-   m_bBackupIsInitialized = true;
-
-   return true;
-}
-
-bool VSSClientGeneric::CloseBackup()
-{
-   bool bRet = false;
-   HRESULT hr;
-   BSTR xml;
-   IVssBackupComponents* pVssObj = (IVssBackupComponents*)m_pVssObject;
-
-   if (!m_pVssObject) {
-      Jmsg(m_jcr, M_FATAL, 0, "VssOject is NULL.\n");
-      errno = ENOSYS;
-      return bRet;
-   }
-   CComPtr<IVssAsync>  pAsync;
-
-   SetVSSPathConvert(NULL, NULL);
-
-   m_bBackupIsInitialized = false;
-
-   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();
-   }
-
-   /* get latest info about writer status */
-   CheckWriterStatus();
-
-   hr = pVssObj->SaveAsXML(&xml);
-   if (SUCCEEDED(hr)) {
-      m_metadata = xml;
-   } else {
-      m_metadata = NULL;
-   }
-
-   /* 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;
-
-      pVssObj->DeleteSnapshots(
-         m_uidCurrentSnapshotSet, 
-         VSS_OBJECT_SNAPSHOT_SET,
-         false,
-         &lSnapshots,
-         &idNonDeletedSnapshotID);
-
-      m_uidCurrentSnapshotSet = GUID_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();
-      m_bCoInitializeCalled = false;
-   }
-
-   return bRet;
-}
-
-WCHAR *VSSClientGeneric::GetMetadata()
-{
-   return m_metadata;
-}
-
-bool VSSClientGeneric::CloseRestore()
-{
-   //HRESULT hr;
-   IVssBackupComponents* pVssObj = (IVssBackupComponents*)m_pVssObject;
-   CComPtr<IVssAsync> pAsync;
-
-   if (!pVssObj) {
-      errno = ENOSYS;
-      return false;
-   }
-#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 */
-      if (!CheckWriterStatus()) {
-         errno = b_errno_win32;
-         return false;
-      }
-   } else {
-      errno = b_errno_win32;
-      return false;
-   }
-#endif
-   return true;
-}
-
-// Query all the shadow copies in the given set
-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));
-   
-   if (snapshotSetID == GUID_NULL || m_pVssObject == NULL) {
-      Jmsg(m_jcr, M_FATAL, 0, "snapshotSetID == NULL or VssObject is NULL.\n");
-      errno = ENOSYS;
-      return;
-   }
-
-   IVssBackupComponents* pVssObj = (IVssBackupComponents*) m_pVssObject;
-               
-   // Get list all shadow copies. 
-   CComPtr<IVssEnumObject> pIEnumSnapshots;
-   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;   
-   }
-
-   // Enumerate all shadow copies. 
-   VSS_OBJECT_PROP Prop;
-   VSS_SNAPSHOT_PROP& Snap = Prop.Obj.Snap;
-   
-   while (true) {
-      // Get the next element
-      ULONG ulFetched;
-      hr = (pIEnumSnapshots.p)->Next( 1, &Prop, &ulFetched );
-
-      // We reached the end of list
-      if (ulFetched == 0)
-         break;
-
-      // Print the shadow copy (if not filtered out)
-      if (Snap.m_SnapshotSetId == snapshotSetID)  {
-         for (int ch='A'-'A';ch<='Z'-'A';ch++) {
-            if (wcscmp(Snap.m_pwszOriginalVolumeName, m_wszUniqueVolumeName[ch]) == 0) {       
-               wcsncpy(m_szShadowCopyName[ch],Snap.m_pwszSnapshotDeviceObject, MAX_PATH-1);               
-               break;
-            }
-         }
-      }
-      p_VssFreeSnapshotProperties(&Snap);
-   }
-   errno = 0;
-}
-
-// Check the status for all selected writers
-bool VSSClientGeneric::CheckWriterStatus()
-{
-    /* 
-    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vss/base/ivssbackupcomponents_startsnapshotset.asp
-    */
-    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 = 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
-    if (!WaitAndCheckForAsyncOperation(pAsync.p)) {
-       errno = b_errno_win32;
-       return false;
-    }
-      
-    m_bWriterStatusCurrent = true;
-
-    unsigned cWriters = 0;
-
-    hr = pVssObj->GetWriterStatusCount(&cWriters);
-    if (FAILED(hr)) {
-       JmsgVssApiStatus(m_jcr, M_FATAL, hr, "GatherWriterStatusCount");
-       errno = b_errno_win32;
-       return false;
-    }
-    
-    int nState;
-    POOLMEM *szBuf = get_pool_memory(PM_FNAME);        
-    // Enumerate each writer
-    for (unsigned iWriter = 0; iWriter < cWriters; iWriter++) {
-        VSS_ID idInstance = GUID_NULL;
-        VSS_ID idWriter= GUID_NULL;
-        VSS_WRITER_STATE eWriterStatus = VSS_WS_UNKNOWN;
-        CComBSTR bstrWriterName;
-        HRESULT hrWriterFailure = S_OK;
-
-        // Get writer status
-        hr = pVssObj->GetWriterStatus(iWriter,
-                             &idInstance,
-                             &idWriter,
-                             &bstrWriterName,
-                             &eWriterStatus,
-                             &hrWriterFailure);
-        if (FAILED(hr)) {
-            /* 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:
-            case VSS_WS_FAILED_AT_PREPARE_SNAPSHOT:
-            case VSS_WS_FAILED_AT_FREEZE:
-            case VSS_WS_FAILED_AT_THAW:
-            case VSS_WS_FAILED_AT_POST_SNAPSHOT:
-            case VSS_WS_FAILED_AT_BACKUP_COMPLETE:
-            case VSS_WS_FAILED_AT_PRE_RESTORE:
-            case VSS_WS_FAILED_AT_POST_RESTORE:
-    #if  defined(B_VSS_W2K3) || defined(B_VSS_VISTA)
-            case VSS_WS_FAILED_AT_BACKUPSHUTDOWN:
-    #endif
-                /* 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;        /* Writer state OK */
-            }
-        }
-        /* store text info */
-        char str[1000];
-        bstrncpy(str, "\"", sizeof(str));
-        wchar_2_UTF8(&szBuf, bstrWriterName.p);
-        bstrncat(str, szBuf, sizeof(str));
-        bstrncat(str, "\", State: 0x", sizeof(str));
-        itoa(eWriterStatus, szBuf, sizeof_pool_memory(szBuf));
-        bstrncat(str, szBuf, sizeof(str));
-        bstrncat(str, " (", sizeof(str));
-        wchar_2_UTF8(&szBuf, GetStringFromWriterStatus(eWriterStatus));
-        bstrncat(str, szBuf, sizeof(str));
-        bstrncat(str, ")", sizeof(str));
-        AppendWriterInfo(nState, (const char *)str);
-    }
-    free_pool_memory(szBuf);
-    errno = 0;
-    return true;
-}
-
-#endif /* WIN32_VSS */
diff --git a/src/win32/filed/who.h b/src/win32/filed/who.h
deleted file mode 100644
index 6266800..0000000
--- a/src/win32/filed/who.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * This file is pulled in by certain generic routines in libwin32
- *   to define the names of the daemon that is being built.
- */
-
-#define APP_NAME "Bacula-fd" 
-#define LC_APP_NAME "bacula-fd"
-#define APP_DESC "Bacula File Backup Service"
-
-#define terminate_app(x) terminate_filed(x)
-extern void terminate_filed(int sig);
-extern void VSSInit();
diff --git a/src/win32/full_win32_installer/ConfigPage1.nsh b/src/win32/full_win32_installer/ConfigPage1.nsh
deleted file mode 100644
index 71965a2..0000000
--- a/src/win32/full_win32_installer/ConfigPage1.nsh
+++ /dev/null
@@ -1,294 +0,0 @@
-Function EnterConfigPage1
-  ${If} $AutomaticInstall = 1
-    Abort
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsFileAndStorage}
-
-  ${If} $R0 = 0
-    Abort
-  ${EndIf}
-
-  FileOpen $R5 "$PLUGINSDIR\ConfigPage1.ini" w
-
-  StrCpy $R6 1  ; Field Number
-  StrCpy $R7 0  ; Top
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    IntOp $R8 $R7 + 52
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Client"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 12
-
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigClientName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=158$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Port"$\r$\nLeft=172$\r$\nTop=$R7$\r$\nRight=188$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigClientPort$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=218$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Max Jobs"$\r$\nLeft=238$\r$\nTop=$R7$\r$\nRight=270$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigClientMaxJobs$\r$\nLeft=274$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigClientPassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 14
-
-    IntOp $R8 $R7 + 10
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigClientInstallService$\r$\nText="Install as service"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=118$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigClientStartService$\r$\nText="Start after install"$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=260$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-  ${Endif}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    IntOp $R8 $R7 + 52
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Storage"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 12
-    
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigStorageName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=158$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Port"$\r$\nLeft=172$\r$\nTop=$R7$\r$\nRight=188$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigStoragePort$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=218$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Max Jobs"$\r$\nLeft=238$\r$\nTop=$R7$\r$\nRight=270$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigStorageMaxJobs$\r$\nLeft=274$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigStoragePassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 14
-
-    IntOp $R8 $R7 + 10
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigStorageInstallService$\r$\nText="Install as service"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=118$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigStorageStartService$\r$\nText="Start after install"$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=260$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-  ${Endif}
-
-  IntOp $R6 $R6 - 1
-
-  FileWrite $R5 "[Settings]$\r$\nNumFields=$R6$\r$\n"
-
-  FileClose $R5
-
-  !insertmacro MUI_HEADER_TEXT "$(TITLE_ConfigPage1)" "$(SUBTITLE_ConfigPage1)"
-  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ConfigPage1.ini"
-  Pop $HDLG ;HWND of dialog
-
-  ; Initialize Controls
-
-  StrCpy $R6 1  ; Field Number
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 2
-
-    ; Client Name
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Client Port Number
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 5 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Max Jobs
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 3 0
-
-    IntOp $R6 $R6 + 5
-  ${Endif}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 2
-
-    ; Storage Name
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Storage Port Number
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 5 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Max Jobs
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 3 0
-
-    IntOp $R6 $R6 + 5
-  ${Endif}
-
-  !insertmacro MUI_INSTALLOPTIONS_SHOW
-
-  ; Process results
-
-  StrCpy $R6 3
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientName "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientPort "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientMaxJobs "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientPassword "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientInstallService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientStartService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 3
-  ${Endif}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageName "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStoragePort "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageMaxJobs "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStoragePassword "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageInstallService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageStartService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 3
-  ${Endif}
-FunctionEnd
-
-Function LeaveConfigPage1
-  StrCpy $R6 5
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1024
-    ${OrIf} $R0 > 65535
-      MessageBox MB_OK "Port must be between 1024 and 65535 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1
-    ${OrIf} $R0 > 99
-      MessageBox MB_OK "Max Jobs must be between 1 and 99 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 9
-  ${Endif}
-  
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1024
-    ${OrIf} $R0 > 65535
-      MessageBox MB_OK "Port must be between 1024 and 65535 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1
-    ${OrIf} $R0 > 99
-      MessageBox MB_OK "Max Jobs must be between 1 and 99 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 9
-  ${Endif}
-FunctionEnd
diff --git a/src/win32/full_win32_installer/ConfigPage2.nsh b/src/win32/full_win32_installer/ConfigPage2.nsh
deleted file mode 100644
index 532af9b..0000000
--- a/src/win32/full_win32_installer/ConfigPage2.nsh
+++ /dev/null
@@ -1,454 +0,0 @@
-Function EnterConfigPage2
-  IntOp $R0 $NewComponents & ${ComponentsRequiringUserConfig}
-
-  ${If} $R0 = 0
-    Abort
-  ${EndIf}
-
-  FileOpen $R5 "$PLUGINSDIR\ConfigPage2.ini" w
-
-  StrCpy $R6 1  ; Field Number
-  StrCpy $R7 0  ; Top
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    ${If} $AutomaticInstall = 1
-      IntOp $R8 $R7 + 54
-    ${Else}
-      IntOp $R8 $R7 + 92
-    ${EndIf}
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Director"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R8 $R7 + 54
-    ${Else}
-      IntOp $R8 $R7 + 26
-    ${EndIf}
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Enter data for Director allowed to access this Client"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-  ${EndIf}
-
-  IntOp $R6 $R6 + 1
-  IntOp $R7 $R7 + 12
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    ${If} "$ConfigDirectorName" == ""
-      StrCpy $ConfigDirectorName "$HostName-dir"
-    ${EndIf}
-    ${If} "$ConfigDirectorPassword" == ""
-      StrCpy $ConfigDirectorPassword "$LocalDirectorPassword"
-    ${EndIf}
-  ${Else}
-    ${If} "$ConfigDirectorName" == "$HostName-dir"
-      StrCpy $ConfigDirectorName ""
-    ${EndIf}
-    ${If} "$ConfigDirectorPassword" == "$LocalDirectorPassword"
-      StrCpy $ConfigDirectorPassword ""
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=158$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-      ${If} $R0 <> 0
-        IntOp $R7 $R7 + 2
-        IntOp $R8 $R8 - 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Port"$\r$\nLeft=172$\r$\nTop=$R7$\r$\nRight=188$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-        IntOp $R7 $R7 - 2
-
-        IntOp $R8 $R8 + 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigDirectorPort$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=218$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-
-      IntOp $R0 $NewComponents & ${ComponentDirector}
-      ${If} $R0 <> 0
-        IntOp $R7 $R7 + 2
-        IntOp $R8 $R8 - 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Max Jobs"$\r$\nLeft=238$\r$\nTop=$R7$\r$\nRight=270$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-        IntOp $R7 $R7 - 2
-
-        IntOp $R8 $R8 + 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigDirectorMaxJobs$\r$\nLeft=274$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-    ${EndIf}
-
-    IntOp $R7 $R7 + 14
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-  ${If} $R0 <> 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R7 $R7 + 2
-      IntOp $R8 $R7 + 8
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-      IntOp $R8 $R8 + 2
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorPassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 14
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    IntOp $R7 $R7 + 2
-    IntOp $R8 $R7 + 8
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Mail Server"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=48$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-    IntOp $R8 $R8 + 2
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorMailServer$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-    IntOp $R8 $R7 + 8
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Mail Address"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=48$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-    IntOp $R8 $R8 + 2
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorMailAddress$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-    IntOp $R8 $R7 + 8
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Database"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-    IntOp $R8 $R8 + 2
-
-    ${If} $ConfigDirectorDB = 0
-      ${If} $MySQLPath != ""
-        StrCpy $ConfigDirectorDB 1
-      ${ElseIf} $PostgreSQLPath != ""
-        StrCpy $ConfigDirectorDB 2
-      ${Else}
-        StrCpy $ConfigDirectorDB 3
-      ${EndIf}
-    ${EndIf}
-
-    ${If} $ConfigDirectorDB = 1
-      StrCpy $R9 1
-    ${Else}
-      StrCpy $R9 0
-    ${EndIf}
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="RadioButton"$\r$\nState=$R9$\r$\nText="MySQL"$\r$\nFlags="GROUP"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=90$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-
-    ${If} $ConfigDirectorDB = 2
-      StrCpy $R9 1
-    ${Else}
-      StrCpy $R9 0
-    ${EndIf}
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="RadioButton"$\r$\nState=$R9$\r$\nText="PostgreSQL"$\r$\nFlags="NOTABSTOP"$\r$\nLeft=94$\r$\nTop=$R7$\r$\nRight=146$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-
-    ${If} $ConfigDirectorDB = 3
-      StrCpy $R9 1
-    ${Else}
-      StrCpy $R9 0
-    ${EndIf}
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="RadioButton"$\r$\nState=$R9$\r$\nText="Sqlite"$\r$\nFlags="NOTABSTOP"$\r$\nLeft=150$\r$\nTop=$R7$\r$\nRight=182$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 12
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R8 $R7 + 10
-      FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigDirectorInstallService$\r$\nText="Install as service"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=118$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigDirectorStartService$\r$\nText="Start after install"$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=260$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 12
-    ${EndIf}
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R7 $R7 + 2
-      IntOp $R8 $R7 + 8
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Address"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=48$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-      IntOp $R8 $R8 + 2
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorAddress$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 14
-      IntOp $R8 $R7 + 8
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R7 $R7 + 4
-
-  ${If} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsFileAndStorageAndDirector}
-    ${If} $R0 <> 0
-      IntOp $R8 $R7 + 42
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Monitor"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 12
-
-      IntOp $R8 $R7 + 8
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-
-      IntOp $R8 $R8 + 2
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigMonitorName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=150$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 16
-      IntOp $R8 $R7 + 8
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-      IntOp $R8 $R8 + 2
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigMonitorPassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 20
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R6 $R6 - 1
-  FileWrite $R5 "[Settings]$\r$\nNumFields=$R6$\r$\n"
-
-  FileClose $R5
-
-  IntOp $R0 $NewComponents & ${ComponentsFileAndStorage}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 1
-    !insertmacro MUI_HEADER_TEXT "$(TITLE_ConfigPage1)" "$(SUBTITLE_ConfigPage1)"
-  ${Else}
-    !insertmacro MUI_HEADER_TEXT "$(TITLE_ConfigPage2)" "$(SUBTITLE_ConfigPage2)"
-  ${EndIf}
-
-  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ConfigPage2.ini"
-  Pop $HDLG ;HWND of dialog
-
-  ; Initialize Controls
-  StrCpy $R6 2  ; Field Number
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 0
-    ; Name
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        ; Port Number
-        !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-        SendMessage $HCTL ${EM_LIMITTEXT} 5 0
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-
-      IntOp $R0 $NewComponents & ${ComponentDirector}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        ; Max Jobs
-        !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-        SendMessage $HCTL ${EM_LIMITTEXT} 3 0
-
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-  ${If} $R0 <> 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 9
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${EndIf}
-
-  ${If} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsFileAndStorageAndDirector}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-      !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-      SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${EndIf}
-
-  !insertmacro MUI_INSTALLOPTIONS_SHOW
-
-  ; Process results
-
-  StrCpy $R6 2
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorName "ConfigPage2.ini" "Field $R6" "State"
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorPort "ConfigPage2.ini" "Field $R6" "State"
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-
-      IntOp $R0 $NewComponents & ${ComponentDirector}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorMaxJobs "ConfigPage2.ini" "Field $R6" "State"
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-  ${If} $R0 <> 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorPassword "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorMailServer "ConfigPage2.ini" "Field $R6" "State"
-    IntOp $R6 $R6 + 2
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorMailAddress "ConfigPage2.ini" "Field $R6" "State"
-    IntOp $R6 $R6 + 2
-    !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ConfigPage2.ini" "Field $R6" "State"
-    ${If} $R5 = 1
-      StrCpy $ConfigDirectorDB 1
-    ${Endif}
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ConfigPage2.ini" "Field $R6" "State"
-    ${If} $R5 = 1
-      StrCpy $ConfigDirectorDB 2
-    ${Endif}
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ConfigPage2.ini" "Field $R6" "State"
-    ${If} $R5 = 1
-      StrCpy $ConfigDirectorDB 3
-    ${Endif}
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorInstallService "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorStartService "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorAddress "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${EndIf}
-
-  ${If} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsFileAndStorageAndDirector}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigMonitorName "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 2
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigMonitorPassword "ConfigPage2.ini" "Field $R6" "State"
-    ${EndIf}
-  ${EndIf}
-FunctionEnd
-
-Function LeaveConfigPage2
-  ${If} $AutomaticInstall = 0
-    StrCpy $R6 4
-
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage2.ini" "Field $R6" "State"
-      ${If} $R0 < 1024
-      ${OrIf} $R0 > 65535
-        MessageBox MB_OK "Port must be between 1024 and 65535 inclusive."
-        Abort
-      ${EndIf}
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-
-    IntOp $R0 $NewComponents & ${ComponentDirector}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage2.ini" "Field $R6" "State"
-      ${If} $R0 < 1
-      ${OrIf} $R0 > 99
-        MessageBox MB_OK "Max Jobs must be between 1 and 99 inclusive."
-        Abort
-      ${EndIf}
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${EndIf}
-FunctionEnd
diff --git a/src/win32/full_win32_installer/DumpLog.nsh b/src/win32/full_win32_installer/DumpLog.nsh
deleted file mode 100644
index c450044..0000000
--- a/src/win32/full_win32_installer/DumpLog.nsh
+++ /dev/null
@@ -1,46 +0,0 @@
-!define LVM_GETITEMCOUNT 0x1004
-!define LVM_GETITEMTEXT 0x102D
-
-Function DumpLog
-  Exch $5
-  Push $0
-  Push $1
-  Push $2
-  Push $3
-  Push $4
-  Push $6
-
-  FindWindow $0 "#32770" "" $HWNDPARENT
-  GetDlgItem $0 $0 1016
-  StrCmp $0 0 error
-  FileOpen $5 $5 "w"
-  StrCmp $5 0 error
-    SendMessage $0 ${LVM_GETITEMCOUNT} 0 0 $6
-    System::Alloc ${NSIS_MAX_STRLEN}
-    Pop $3
-    StrCpy $2 0
-    System::Call "*(i, i, i, i, i, i, i, i, i) i \
-      (0, 0, 0, 0, 0, r3, ${NSIS_MAX_STRLEN}) .r1"
-    loop: StrCmp $2 $6 done
-      System::Call "User32::SendMessageA(i, i, i, i) i \
-        ($0, ${LVM_GETITEMTEXT}, $2, r1)"
-      System::Call "*$3(&t${NSIS_MAX_STRLEN} .r4)"
-      FileWrite $5 "$4$\r$\n"
-      IntOp $2 $2 + 1
-      Goto loop
-    done:
-      FileClose $5
-      System::Free $1
-      System::Free $3
-      Goto exit
-  error:
-    MessageBox MB_OK error
-  exit:
-    Pop $6
-    Pop $4
-    Pop $3
-    Pop $2
-    Pop $1
-    Pop $0
-    Exch $5
-FunctionEnd
diff --git a/src/win32/full_win32_installer/InstallType.ini b/src/win32/full_win32_installer/InstallType.ini
deleted file mode 100644
index 73fb8d9..0000000
--- a/src/win32/full_win32_installer/InstallType.ini
+++ /dev/null
@@ -1,56 +0,0 @@
-;
-; Note: certain text in this file is overwritten by the code in
-;   InstallType.nsh
-;
-
-[Settings]
-NumFields=6
-
-[Field 1]
-Type=Label
-Text=This is a new installation.  Please choose the installation type.
-Left=0
-Right=300
-Top=0
-Bottom=28
-
-[Field 2]
-Type=GroupBox
-Text=Installation Type
-Left=0
-Right=300
-Top=32
-Bottom=136
-
-[Field 3]
-Type=RadioButton
-Text=Automatic
-State=1
-Left=6
-Right=52
-Top=44
-Bottom=54
-
-[Field 4]
-Type=RadioButton
-Text=Custom (not recommended)
-Left=6
-Right=252
-Top=90
-Bottom=100
-
-[Field 5]
-Type=Label
-Text=The software will be installed in the default directory "Program Files\\Bacula".  The configuration files will be generated using defaults applicable to most installations.
-Left=17
-Right=295
-Top=58
-Bottom=86
-
-[Field 6]
-Type=Label
-Text=You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work.
-Left=17
-Right=295
-Top=104
-Bottom=132
diff --git a/src/win32/full_win32_installer/InstallType.nsh b/src/win32/full_win32_installer/InstallType.nsh
deleted file mode 100644
index 373f68c..0000000
--- a/src/win32/full_win32_installer/InstallType.nsh
+++ /dev/null
@@ -1,102 +0,0 @@
-Function EnterInstallType
-  Push $R0
-  Push $R1
-  Push $R2
-
-  ; Check if this is an upgrade by looking for an uninstaller configured 
-  ; in the registry.
-  ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString"
-
-  ${If} "$R0" != ""
-    ; Check registry for new installer
-    ReadRegStr $R1 HKLM "Software\Bacula" "InstallLocation"
-    ${If} "$R1" != ""
-      ; New Installer 
-      StrCpy $OldInstallDir $R1
-      StrCpy $InstallType ${UpgradeInstall}
-
-      SetShellVarContext all
-
-      StrCpy $R1 "$APPDATA\Bacula"
-      StrCpy $R2 "$INSTDIR\Doc"
-
-      ReadRegDWORD $PreviousComponents HKLM "Software\Bacula" "Components"
-
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 1" "Text" "A previous installation has been found in $OldInstallDir.  Please choose the installation type for any additional components you select."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The configuration files for additional components will be generated using defaults applicable to most installations."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
-
-      ReadRegDWORD $ConfigDirectorDB HKLM Software\Bacula Database
-
-      ${If} $ConfigDirectorDB = 0
-        IntOp $R0 $PreviousComponents & ${ComponentDirector}
-        ${If} $R0 <> 0
-          StrCpy $ConfigDirectorDB 1
-        ${EndIf}
-      ${EndIf}
-    ${Else}
-      ; Processing Upgrade - Get Install Directory
-      ${StrRep} $R0 $R0 '"' ''
-      ${GetParent} $R0 $OldInstallDir
-
-      ; Old Installer 
-      StrCpy $InstallType ${MigrateInstall}
-      StrCpy $R1 "$OldInstallDir\bin"
-      StrCpy $R2 "$OldInstallDir\Doc"
-
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 1" "Text" "An old installation has been found in $OldInstallDir.  The Configuration will be migrated.  Please choose the installation type for any additional components you select."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The software will be installed in the default directory $\"$PROGRAMFILES\Bacula$\".  The configuration files for additional components will be generated using defaults applicable to most installations."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
-    ${EndIf}
-  ${Else}
-    ; New Install
-    StrCpy $InstallType ${NewInstall}
-    WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The software will be installed in the default directory $\"$PROGRAMFILES\Bacula$\".  The configuration files will be generated using defaults applicable to most installations."
-    WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
-  ${EndIf}
-
-  ${If} $InstallType <> ${NewInstall}
-  ${AndIf} $PreviousComponents = 0
-    ${If} ${FileExists} "$R1\bacula-fd.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentFile}
-    ${EndIf}
-    ${If} ${FileExists} "$R1\bconsole.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentTextConsole}
-    ${EndIf}
-    ${If} ${FileExists} "$R1\bat.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentBatConsole}
-    ${EndIf}
-    ${If} ${FileExists} "$R1\wx-console.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentGUIConsole}
-    ${EndIf}
-    ${If} ${FileExists} "$R2\bacula.pdf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentPDFDocs}
-    ${EndIf}
-    ${If} ${FileExists} "$R2\bacula\bacula.html"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentHTMLDocs}
-    ${EndIf}
-    ${If} ${FileExists} "$R2\bacula.html"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentHTMLDocs}
-    ${EndIf}
-  ${EndIf}
-
-  !InsertMacro MUI_HEADER_TEXT "$(TITLE_InstallType)" "$(SUBTITLE_InstallType)"
-  !InsertMacro MUI_INSTALLOPTIONS_INITDIALOG "InstallType.ini"
-  Pop $HDLG ;HWND of dialog
-
-  !insertmacro MUI_INSTALLOPTIONS_SHOW
-
-  ; Process Results
-
-  !insertmacro MUI_INSTALLOPTIONS_READ $R0 "InstallType.ini" "Field 3" "State"
-
-  ${If} $R0 = 1
-    StrCpy $AutomaticInstall 1
-  ${Else}
-    StrCpy $AutomaticInstall 0
-  ${EndIf}
-
-  Pop $R2
-  Pop $R1
-  Pop $R0
-FunctionEnd
diff --git a/src/win32/full_win32_installer/Start.bat b/src/win32/full_win32_installer/Start.bat
deleted file mode 100644
index 0b61f7e..0000000
--- a/src/win32/full_win32_installer/Start.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-rem
-rem Bacula start file for Win95/98/Me
-rem
-cd c:\bacula\bin
-c:\bacula\bin\bacula-fd.exe /service -c c:\bacula\bin\bacula-fd.conf
diff --git a/src/win32/full_win32_installer/Stop.bat b/src/win32/full_win32_installer/Stop.bat
deleted file mode 100644
index 3b1d0e5..0000000
--- a/src/win32/full_win32_installer/Stop.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-rem
-rem Bacula stop file for Win95/98/Me
-rem
-cd c:\bacula\bin
-c:\bacula\bin\bacula-fd.exe /kill
diff --git a/src/win32/full_win32_installer/WriteTemplates.ini b/src/win32/full_win32_installer/WriteTemplates.ini
deleted file mode 100644
index e4fb1de..0000000
--- a/src/win32/full_win32_installer/WriteTemplates.ini
+++ /dev/null
@@ -1,48 +0,0 @@
-[Settings]
-NumFields=5
-CancelEnabled=0
-BackEnabled=0
-
-[Field 1]
-Type="Label"
-Text="Templates of the Client and Storage resources can be generated that are customized with the information about this system.  These templates can then be copied to the Director computer and included in the Director's configuration file."
-Left=7
-Right=293
-Top=6
-Bottom=32
-
-[Field 2]
-Type="CheckBox"
-Text="Save Client template in:"
-Left=6
-Right=240
-Top=38
-Bottom=48
-
-[Field 3]
-Type="FileRequest"
-State="Client.conf"
-Flags=
-Filter=Configuration Files|*.conf|All Files|*.*
-Left=16
-Right=288
-Top=50
-Bottom=62
-
-[Field 4]
-Type="CheckBox"
-Text="Save Storage template in:"
-Left=6
-Right=248
-Top=70
-Bottom=80
-
-[Field 5]
-Type="FileRequest"
-State="Storage.conf"
-Flags=REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST
-Filter=Configuration Files|*.conf|All Files|*.*
-Left=16
-Right=288
-Top=82
-Bottom=94
diff --git a/src/win32/full_win32_installer/bacula-dir.conf.in b/src/win32/full_win32_installer/bacula-dir.conf.in
deleted file mode 100644
index 6b3fe43..0000000
--- a/src/win32/full_win32_installer/bacula-dir.conf.in
+++ /dev/null
@@ -1,380 +0,0 @@
-#
-# Default Bacula Director Configuration file
-#
-#  The only thing that MUST be changed is to add one or more
-#   file or directory names in the Include directive of the
-#   FileSet resource.
-#
-#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@ @DISTVER@
-#
-#  You might also want to change the default email address
-#   from root to your address.  See the "mail" and "operator"
-#   directives in the Messages resource.
-#
-
-Director {                            # define myself
-  Name = @director_name@
-  DIRport = @director_port@                # where we listen for UA connections
-  QueryFile = "@bin_dir@\\query.sql"
-  WorkingDirectory = "@working_dir@"
-  PidDirectory = "@working_dir@"
-  Maximum Concurrent Jobs = @director_maxjobs@
-  Password = "@director_password@"         # Console password
-  Messages = Daemon
-}
-
-JobDefs {
-  Name = "DefaultJob"
-  Type = Backup
-  Level = Incremental
-  Client = @client_name@
-  FileSet = "Test Set"
-  Schedule = "WeeklyCycle"
-  Storage = File
-  Messages = Standard
-  Pool = Default
-  Priority = 10
-}
-
-
-#
-# Define the main nightly save backup job
-#   By default, this job will back up to disk in C:/tmp
-Job {
-  Name = "Client1"
-  JobDefs = "DefaultJob"
-  Write Bootstrap = "@working_dir@\\Client1.bsr"
-}
-
-#Job {
-#  Name = "Client2"
-#  Client = @client_name at 2
-#  JobDefs = "DefaultJob"
-#  Write Bootstrap = "@working_dir@\\Client2.bsr"
-#}
-
-# Backup the catalog database (after the nightly save)
-Job {
-  Name = "BackupCatalog"
-  JobDefs = "DefaultJob"
-  Level = Full
-  FileSet="Catalog"
-  Schedule = "WeeklyCycleAfterBackup"
-  # This creates an ASCII copy of the catalog
-  RunBeforeJob = "\"@bin_dir@\\make_catalog_backup\" bacula bacula"
-  # This deletes the copy of the catalog
-  RunAfterJob  = "\"@bin_dir@\\delete_catalog_backup\""
-  Write Bootstrap = "@working_dir@\\BackupCatalog.bsr"
-  Priority = 11                   # run after main backup
-}
-
-#
-# Standard Restore template, to be changed by Console program
-#  Only one such job is needed for all Jobs/Clients/Storage ...
-#
-Job {
-  Name = "RestoreFiles"
-  Type = Restore
-  Client=@client_name@
-  FileSet="Test Set"
-  Storage = File
-  Pool = Default
-  Messages = Standard
-  Where = "C:\\tmp\\bacula-restores"
-}
-
-#
-# Note: Windows path separators do NOT work correctly in FileSets.
-#
-# List of files to be backed up
-FileSet {
-  Name = "Test Set"
-  Include {
-    Options {
-      signature = MD5
-      ignore case = yes
-    }
-#    
-#  Put your list of files here, preceded by 'File =', one per line
-#    or include an external list with:
-#
-#    File = <file-name
-#
-#  Note: C:/ backs up everything on drive C.
-#    if you have other drives such as D:/
-#    you will probably want to add them too.
-#
-#  By default this is defined to point to the Bacula 
-#    directory to give a reasonable FileSet to backup to
-#    disk storage during initial testing.
-#
-    File = "@BUILD_DIR@"
-  }
-
-#
-# If you backup the root directory, the following excluded
-#   files can be useful
-#
-  Exclude {
-    File = C:/Temp
-    File = C:/tmp
-  }
-}
-
-#
-# This is an example which will backup all the hard drives of a Windows System.
-#
-FileSet {
-  Name = "Windows Full Set"
-  Enable VSS = yes
-  Include {
-    Options {
-      Signature = MD5
-      Exclude = yes
-      IgnoreCase = yes
-      EnhancedWild = yes
-      DriveType = fixed
-
-      # Exclude directories full of lots and lots of useless little files
-      WildDir = "[A-Z]:/Documents and Settings/*/Cookies"
-      WildDir = "[A-Z]:/Documents and Settings/*/Recent"
-      WildDir = "[A-Z]:/Documents and Settings/*/{Local Settings,LOCALS~1}/History"
-      WildDir = "[A-Z]:/Documents and Settings/*/{Local Settings,LOCALS~1}/Temp"
-      WildDir = "[A-Z]:/Documents and Settings/*/{Local Settings,LOCALS~1}/Temporary Internet Files"
-
-      # Exclude directories full of lots and lots of useless little files
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/Cookies"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/Recent"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/{Local Settings,LOCALS~1}/History"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/{Local Settings,LOCALS~1}/Temp"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/{Local Settings,LOCALS~1}/Temporary Internet Files"
-
-      # Exclude directories full of lots and lots of useless little files
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/Cookies"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/Recent"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/{Local Settings,LOCALS~1}/History"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/{Local Settings,LOCALS~1}/Temp"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/{Local Settings,LOCALS~1}/Temporary Internet Files"
-
-      # Some random bits of Windows we want to ignore
-      WildDir = "[A-Z]:/{WINNT,Windows}/Prefetch"
-      WildDir = "[A-Z]:/{WINNT,Windows}/msdownld.tmp"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Internet Logs"
-      WildDir = "[A-Z]:/{WINNT,Windows}/$Nt*Uninstall*"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Downloaded Installations"
-
-      # Temporary directories & files
-      WildDir = "[A-Z]:/{WINNT,Windows}/Temp"
-      WildDir = "[A-Z]:/Temp"
-      WildFile = "*.tmp"
-      WildDir = "[A-Z]:/tmp"
-
-      # Fast Find
-      WildFile = "[A-Z]:/ffastun*"
-
-      # System Restore
-      WildDir = "[A-Z]:/System Volume Information"
-
-      # Windows Update
-      WildDir = "[A-Z]:/WUTemp"
-
-      # Recycle bins
-      WildDir = "[A-Z]:/RECYCLE[DR]"
-
-      # Swap files
-      WildFile = "[A-Z]:/pagefile.sys"
-      WildFile = "[A-Z]:/hiberfil.sys"
-
-      # These are programs and are easier to reinstall than restore from
-      # backup
-      WildDir = "[A-Z]:/cygwin"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/Java"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/Java Web Start"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/JavaSoft"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/Microsoft Office"
-    }
-
-    File = "C:/"
-    File = "D:/"
-    File = "E:/"
-    File = "F:/"
-    File = "G:/"
-    File = "H:/"
-    File = "I:/"
-    File = "J:/"
-    File = "K:/"
-    File = "L:/"
-    File = "M:/"
-    File = "N:/"
-    File = "O:/"
-    File = "P:/"
-    File = "Q:/"
-    File = "R:/"
-    File = "S:/"
-    File = "T:/"
-    File = "U:/"
-    File = "V:/"
-    File = "W:/"
-    File = "X:/"
-    File = "Y:/"
-    File = "Z:/"
-  }
-}
-
-#
-# When to do the backups, full backup on first sunday of the month,
-#  differential (i.e. incremental since full) every other sunday,
-#  and incremental backups other days
-Schedule {
-  Name = "WeeklyCycle"
-  Run = Full 1st sun at 23:05
-  Run = Differential 2nd-5th sun at 23:05
-  Run = Incremental mon-sat at 23:05
-}
-
-# This schedule does the catalog. It starts after the WeeklyCycle
-Schedule {
-  Name = "WeeklyCycleAfterBackup"
-  Run = Full sun-sat at 23:10
-}
-
-# This is the backup of the catalog
-FileSet {
-  Name = "Catalog"
-  Include {
-    Options {
-      signature = MD5
-    }
-    File = "@working_dir@\\bacula.sql"
-  }
-}
-
-# Client (File Services) to backup
-Client {
-  Name = @client_name@
-  Address = @client_address@
-  FDPort = @client_port@
-  Catalog = MyCatalog
-  Password = "@client_password@"      # password for FileDaemon
-  File Retention = 30 days            # 30 days
-  Job Retention = 6 months            # six months
-  AutoPrune = yes                     # Prune expired Jobs/Files
-}
-
-#
-# Second Client (File Services) to backup
-#  You should change Name, Address, and Password before using
-#
-#Client {
-#  Name = @client_name at 2
-#  Address = @client_address at 2
-#  FDPort = @client_port@
-#  Catalog = MyCatalog
-#  Password = "@client_password at 2"     # password for FileDaemon 2
-#  File Retention = 30 days            # 30 days
-#  Job Retention = 6 months            # six months
-#  AutoPrune = yes                     # Prune expired Jobs/Files
-#}
-
-
-# Definition of file storage device
-Storage {
-  Name = File
-# Do not use "localhost" here
-  Address = @storage_address@                # N.B. Use a fully qualified name here
-  SDPort = @storage_port@
-  Password = "@storage_password@"
-  Device = FileStorage
-  Media Type = File
-}
-
-
-
-# Definition of DDS tape storage device
-#Storage {
-#  Name = DDS-4    
-#  Do not use "localhost" here
-#  Address = @storage_address@                # N.B. Use a fully qualified name here
-#  SDPort = @storage_port@
-#  Password = "@storage_password@"          # password for Storage daemon
-#  Device = DDS-4                      # must be same as Device in Storage daemon
-#  Media Type = DDS-4                  # must be same as MediaType in Storage daemon
-#  Autochanger = yes                   # enable for autochanger device
-#}
-
-# Definition of 8mm tape storage device
-#Storage {
-#  Name = "8mmDrive"
-#  Do not use "localhost" here
-#  Address = @storage_address@                # N.B. Use a fully qualified name here
-#  SDPort = @storage_port@
-#  Password = "@storage_password@"
-#  Device = "Exabyte 8mm"
-#  MediaType = "8mm"
-#}
-
-
-# Generic catalog service
-Catalog {
-  Name = MyCatalog
-  dbname = bacula; user = bacula; password = ""
-}
-
-# Reasonable message delivery -- send most everything to email address
-#  and to the console
-Messages {
-  Name = Standard
-#
-# NOTE! If you send to two email or more email addresses, you will need
-#  to replace the %r in the from field (-f part) with a single valid
-#  email address in both the mailcommand and the operatorcommand.
-#
-  mailcommand = "\"@bin_dir@\\bsmtp\" -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
-  operatorcommand = "\"@bin_dir@\\bsmtp\" -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed for %j\" %r"
-  mail = @job_email@ = all, !skipped            
-  operator = @job_email@ = mount
-  console = all, !skipped, !saved
-#
-# WARNING! the following will create a file that you must cycle from
-#          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
-}
-
-
-#
-# Message delivery for daemon messages (no job).
-Messages {
-  Name = Daemon
-  mailcommand = "\"@bin_dir@\\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
-}
-
-
-
-# Default pool definition
-Pool {
-  Name = Default
-  Pool Type = Backup
-  Recycle = yes                       # Bacula can automatically recycle Volumes
-  AutoPrune = yes                     # Prune expired volumes
-  Volume Retention = 365 days         # one year
-}
-
-# Scratch pool definition
-Pool {
-  Name = Scratch
-  Pool Type = Backup
-}
-
-#
-# Restricted console used by tray-monitor to get the status of the director
-#
-Console {
-  Name = @monitor_name@
-  Password = "@monitor_password@"
-  CommandACL = status, .status
-}
diff --git a/src/win32/full_win32_installer/bacula-fd.conf.in b/src/win32/full_win32_installer/bacula-fd.conf.in
deleted file mode 100644
index ad63e3d..0000000
--- a/src/win32/full_win32_installer/bacula-fd.conf.in
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Default  Bacula File Daemon Configuration file
-#
-#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@ @DISTVER@
-#
-# There is not much to change here except perhaps the
-# File daemon Name
-#
-
-#
-# "Global" File daemon configuration specifications
-#
-FileDaemon {                            # this is me
-  Name = @client_name@
-  FDport = @client_port@                # where we listen for the director
-  WorkingDirectory = "@working_dir@"
-  Pid Directory = "@working_dir@"
-  #Plugin Directory = "@fdplugins_dir@"
-  Maximum Concurrent Jobs = @client_maxjobs@
-}
-
-#
-# List Directors who are permitted to contact this File daemon
-#
-Director {
-  Name = @director_name@
-  Password = "@client_password@"
-}
-
-#
-# Restricted Director, used by tray-monitor to get the
-#   status of the file daemon
-#
-Director {
-  Name = @monitor_name@
-  Password = "@monitor_password@"
-  Monitor = yes
-}
-
-# Send all messages except skipped files back to Director
-Messages {
-  Name = Standard
-  director = @director_name@ = all, !skipped, !restored
-}
diff --git a/src/win32/full_win32_installer/bacula-logo.bmp b/src/win32/full_win32_installer/bacula-logo.bmp
deleted file mode 100644
index 9a9cf97..0000000
Binary files a/src/win32/full_win32_installer/bacula-logo.bmp and /dev/null differ
diff --git a/src/win32/full_win32_installer/bacula-sd.conf.in b/src/win32/full_win32_installer/bacula-sd.conf.in
deleted file mode 100644
index 9e66212..0000000
--- a/src/win32/full_win32_installer/bacula-sd.conf.in
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# Default Bacula Storage Daemon Configuration file
-#
-#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@ @DISTVER@
-#
-# You may need to change the name of your tape drive
-#   on the "Archive Device" directive in the Device
-#   resource.  If you change the Name and/or the 
-#   "Media Type" in the Device resource, please ensure
-#   that bacula-dir.conf has corresponding changes.
-#
-
-Storage {                             # definition of myself
-  Name = @storage_name@
-  SDPort = @storage_port@                  # Director's port      
-  WorkingDirectory = "@working_dir@"
-  Pid Directory = "@working_dir@"
-  Maximum Concurrent Jobs = @storage_maxjobs@
-}
-
-#
-# List Directors who are permitted to contact Storage daemon
-#
-Director {
-  Name = @director_name@
-  Password = "@storage_password@"
-}
-
-#
-# Restricted Director, used by tray-monitor to get the
-#   status of the storage daemon
-#
-Director {
-  Name = @monitor_name@
-  Password = "@monitor_password@"
-  Monitor = yes
-}
-
-#
-# Devices supported by this Storage daemon
-# To connect, the Director's bacula-dir.conf must have the
-#  same Name and MediaType. 
-#
-
-Device {
-  Name = FileStorage
-  Media Type = File
-  Archive Device = "C:\\Tmp"
-  LabelMedia = yes                   # lets Bacula label unlabeled media
-  Random Access = Yes
-  AutomaticMount = yes               # when device opened, read it
-  RemovableMedia = no
-  AlwaysOpen = no
-}
-
-#
-# An autochanger device with two drives
-#
-#Autochanger {
-#  Name = Autochanger
-#  Device = Drive-1
-#  Device = Drive-2
-#  Changer Command = "mtx-changer %c %o %S %a %d"
-#  Changer Device = Changer0
-#}
-
-#Device {
-#  Name = Drive-1                      #
-#  Drive Index = 0
-#  Media Type = DLT-8000
-#  Device Type = Tape
-#  Archive Device = Tape0
-#  AutomaticMount = yes               # when device opened, read it
-#  AlwaysOpen = yes
-#  RemovableMedia = yes
-#  RandomAccess = no
-#  AutoChanger = yes
-#  Alert Command = "tapeinfo -f %c | findstr TapeAlert"
-#}
-
-#Device {
-#  Name = Drive-2                      #
-#  Drive Index = 1
-#  Media Type = DLT-8000
-#  Device Type = Tape
-#  Archive Device = Tape1
-#  AutomaticMount = yes               # when device opened, read it
-#  AlwaysOpen = yes
-#  RemovableMedia = yes
-#  RandomAccess = no
-#  AutoChanger = yes
-#  Alert Command = "tapeinfo -f %c | findstr TapeAlert"
-#}
-
-#
-#Device {
-#  Name = DDS-4                        # 
-#  Media Type = DDS-4
-#  Device Type = Tape
-#  Archive Device = Tape0
-#  AutomaticMount = yes               # when device opened, read it
-#  AlwaysOpen = yes
-#  RemovableMedia = yes
-#  RandomAccess = no
-#  Alert Command = "tapeinfo -f %c | findstr TapeAlert"
-#}
-
-# 
-# Send all messages to the Director, 
-# mount messages also are sent to the email address
-#
-Messages {
-  Name = Standard
-  director = @director_name@ = all
-}
diff --git a/src/win32/full_win32_installer/bat.conf.in b/src/win32/full_win32_installer/bat.conf.in
deleted file mode 100644
index 7f0b5f1..0000000
--- a/src/win32/full_win32_installer/bat.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula Administration Tool (bat) Configuration File
-#
-
-Director {
-  Name = @director_name@
-  DIRport = @director_port@
-  address = @director_address@
-  Password = "@director_password@"
-}
diff --git a/src/win32/full_win32_installer/bconsole.conf.in b/src/win32/full_win32_installer/bconsole.conf.in
deleted file mode 100644
index 4f60389..0000000
--- a/src/win32/full_win32_installer/bconsole.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula User Agent (or Console) Configuration File
-#
-
-Director {
-  Name = @director_name@
-  DIRport = @director_port@
-  address = @director_address@
-  Password = "@director_password@"
-}
diff --git a/src/win32/full_win32_installer/build-installer.cmd b/src/win32/full_win32_installer/build-installer.cmd
deleted file mode 100644
index 5d77a9f..0000000
--- a/src/win32/full_win32_installer/build-installer.cmd
+++ /dev/null
@@ -1,70 +0,0 @@
- at ECHO OFF
-SETLOCAL
-
-SET CWD=%CD%
-CD %1..\..\..
-SET TOP_DIR=%CD%
-CD %CWD%
-SET DEPKG_DIR=%TOP_DIR%\depkgs-msvc
-SET DOCS_DIR=%TOP_DIR%\docs\manual
-
-SET BACULA_DLLS=bacula.dll cats_mysql.dll cats_postgresql.dll cats_sqlite3.dll
-SET BACULA_EXES=bacula-dir.exe bacula-fd.exe bacula-sd.exe bconsole.exe wx-console.exe
-SET BACULA_TOOLS=bcopy.exe bextract.exe bls.exe bscan.exe bsleep.exe bsmtp.exe btape.exe dbcheck.exe scsilist.exe
-
-SET DEP_DLLS=libeay32.dll pthreadVCE.dll ssleay32.dll zlib1.dll zlib1.dll.manifest wxbase28_vc_bacula.dll wxmsw28_core_vc_bacula.dll libmysql.dll libpq.dll comerr32.dll libintl-2.dll libiconv-2.dll krb5_32.dll
-SET DEP_EXES=openssl.exe loaderinfo.exe mt.exe mtx.exe scsitape.exe sed.exe tapeinfo.exe sqlite3.exe sqlite3.exe.manifest expr64.exe snooze.exe mkisofs.exe growisofs.exe dvd-ram-control.exe dvd+rw-booktype.exe dvd+rw-format.exe dvd+rw-mediainfo.exe
-
-SET SCRIPTS=mtx-changer.cmd disk-changer.cmd dvd-handler.cmd
-
-SET CATS_MYSQL_CMD=create_mysql_database.cmd drop_mysql_database.cmd make_mysql_tables.cmd drop_mysql_tables.cmd grant_mysql_privileges.cmd
-SET CATS_MYSQL_SQL=make_mysql_tables.sql drop_mysql_tables.sql grant_mysql_privileges.sql
-SET CATS_PGSQL_CMD=create_postgresql_database.cmd drop_postgresql_database.cmd make_postgresql_tables.cmd drop_postgresql_tables.cmd grant_postgresql_privileges.cmd
-SET CATS_PGSQL_SQL=create_postgresql_database.sql make_postgresql_tables.sql drop_postgresql_tables.sql grant_postgresql_privileges.sql
-SET CATS_SQLITE_CMD=create_sqlite3_database.cmd drop_sqlite3_database.cmd make_sqlite3_tables.cmd drop_sqlite3_tables.cmd grant_sqlite3_privileges.cmd
-SET CATS_SQLITE_SQL=make_sqlite3_tables.sql
-SET CATS_CATALOG=make_mysql_catalog_backup.cmd make_postgresql_catalog_backup.cmd make_sqlite3_catalog_backup.cmd delete_catalog_backup.cmd
-SET DIRD_FILES=query.sql
-SET SSL_FILES=openssl.cnf
-
-SET DOC_PDF_FILES=%DOCS_DIR%\bacula.pdf %DOCS_DIR%\bacula\*.html %DOCS_DIR%\bacula\*.png %DOCS_DIR%\bacula\*.css
-SET DOC_HTML_FILES=%DOCS_DIR%\bacula\*.html %DOCS_DIR%\bacula\*.png %DOCS_DIR%\bacula\*.css
-
-FOR %%i in ( %BACULA_DLLS% )     DO XCOPY %1%2\%%i %1installer\%2\ /y
-FOR %%i in ( %BACULA_EXES% )     DO XCOPY %1%2\%%i %1installer\%2\ /y
-FOR %%i in ( %BACULA_TOOLS% )    DO XCOPY %1%2\%%i %1installer\%2\ /y
-
-FOR %%i in ( %DEP_DLLS% )        DO XCOPY %DEPKG_DIR%\bin\%%i %1installer\%2\ /y
-FOR %%i in ( %DEP_EXES% )        DO XCOPY %DEPKG_DIR%\bin\%%i %1installer\%2\ /y
-
-FOR %%i in ( %SCRIPTS% )         DO XCOPY %1scripts\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_MYSQL_CMD% )  DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_MYSQL_SQL% )  DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_PGSQL_CMD% )  DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_PGSQL_SQL% )  DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_SQLITE_CMD% ) DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_SQLITE_SQL% ) DO XCOPY %1cats\%%i %1installer\%2\ /y
-
-FOR %%i in ( %CATS_CATALOG% )    DO XCOPY %1cats\%%i %1installer\%2\ /y
-
-FOR %%i in ( %DIRD_FILES% )      DO XCOPY %1..\dird\%%i %1installer\%2\ /y
-FOR %%i in ( %SSL_FILES% )       DO XCOPY %DEPKG_DIR%\%%i %1installer\%2\ /y
-
-FOR %%i in ( %DOC_PDF_FILES% )   DO XCOPY %%i %1installer\%2\manual\ /y
-
-FOR %%i in ( %DOC_HTML_FILES% )  DO XCOPY %%i %1installer\%2\manual\bacula\ /y
-
-XCOPY %4\x86\Microsoft.VC80.CRT\msvcm80.dll %1installer\%2\ /y
-XCOPY %4\x86\Microsoft.VC80.CRT\msvcp80.dll %1installer\%2\ /y
-XCOPY %4\x86\Microsoft.VC80.CRT\msvcr80.dll %1installer\%2\ /y
-XCOPY %4\x86\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest %1installer\%2\ /y
-XCOPY %4\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT\msvcm80d.dll %1installer\%2\ /y
-XCOPY %4\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT\msvcp80d.dll %1installer\%2\ /y
-XCOPY %4\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT\msvcr80d.dll %1installer\%2\ /y
-XCOPY %4\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT\Microsoft.VC80.DebugCRT.manifest %1installer\%2\ /y
-
-PATH %DEPKG_DIR%\nsis;%DEPKG_DIR%\tools;%PATH%
-
-FOR /F %%i IN ( 'sed -ne "s/.*[ \t]VERSION[ \t][ \t]*\x22\(.*\)\x22/\1/p" ^< ..\..\version.h' ) DO @SET VERSION=%%i 
-makensis /V3 /DVERSION=%VERSION% /DSRC_DIR=%1installer\%2 /DOUT_DIR=%1%2 /DBUILD_TOOLS=%3 winbacula.nsi
-EXIT /B %ERRORLEVEL%
diff --git a/src/win32/full_win32_installer/bwx-console.conf.in b/src/win32/full_win32_installer/bwx-console.conf.in
deleted file mode 100644
index 4f60389..0000000
--- a/src/win32/full_win32_installer/bwx-console.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula User Agent (or Console) Configuration File
-#
-
-Director {
-  Name = @director_name@
-  DIRport = @director_port@
-  address = @director_address@
-  Password = "@director_password@"
-}
diff --git a/src/win32/full_win32_installer/client.conf.in b/src/win32/full_win32_installer/client.conf.in
deleted file mode 100644
index 5f2abe4..0000000
--- a/src/win32/full_win32_installer/client.conf.in
+++ /dev/null
@@ -1,11 +0,0 @@
-# Client (File Services) to backup
-Client {
-  Name = @client_name@
-  Address = @client_address@
-  FDPort = @client_port@
-  Catalog = MyCatalog
-  Password = "@client_password@"      # password for FileDaemon
-  File Retention = 30 days            # 30 days
-  Job Retention = 6 months            # six months
-  AutoPrune = yes                     # Prune expired Jobs/Files
-}
diff --git a/src/win32/full_win32_installer/installer.vcproj b/src/win32/full_win32_installer/installer.vcproj
deleted file mode 100644
index 18ddc6e..0000000
--- a/src/win32/full_win32_installer/installer.vcproj
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="installer"
-	ProjectGUID="{6D1B0964-FB32-4916-A61C-49D7F715EAD8}"
-	RootNamespace="installer"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="0"
-			>
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="build-installer $(SolutionDir) $(ConfigurationName) VC8_DEBUG "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				ReBuildCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe&#x0D;&#x0A;build-installer $(SolutionDir) $(ConfigurationName) VC8_DEBUG "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				CleanCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe"
-				Output=""
-				PreprocessorDefinitions="VERSION=$(VERSION);DOC_DIR=..\..\..\..\docs;BUILD_TOOLS=VC8_DEBUG;VC_REDIST_DIR=$(VCInstallDir)redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT;DEPKGS_BIN=..\..\..\..\depkgs-msvc\bin;BACULA_BIN=..\$(ConfigurationName);CATS_DIR=..\cats;SCRIPT_DIR=..\scripts"
-				IncludeSearchPath=""
-				ForcedIncludes=""
-				AssemblySearchPath=""
-				ForcedUsingAssemblies=""
-				CompileAsManaged=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="0"
-			>
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="build-installer $(SolutionDir) $(ConfigurationName) VC8 "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				ReBuildCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe&#x0D;&#x0A;build-installer $(SolutionDir) $(ConfigurationName) VC8 "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				CleanCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe"
-				Output=""
-				PreprocessorDefinitions=""
-				IncludeSearchPath=""
-				ForcedIncludes=""
-				AssemblySearchPath=""
-				ForcedUsingAssemblies=""
-				CompileAsManaged=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath=".\resource.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\Dialogs.rc"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath=".\bacula-dir.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\bacula-fd.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\bacula-sd.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\bconsole.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\build-installer.cmd"
-			>
-		</File>
-		<File
-			RelativePath=".\client.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\ConfigPage1.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\ConfigPage2.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\DumpLog.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\InstallType.ini"
-			>
-		</File>
-		<File
-			RelativePath=".\InstallType.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\Readme.txt"
-			>
-		</File>
-		<File
-			RelativePath=".\storage.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\winbacula.nsi"
-			>
-		</File>
-		<File
-			RelativePath=".\WriteTemplates.ini"
-			>
-		</File>
-		<File
-			RelativePath=".\wx-console.conf.in"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/full_win32_installer/storage.conf.in b/src/win32/full_win32_installer/storage.conf.in
deleted file mode 100644
index 5928815..0000000
--- a/src/win32/full_win32_installer/storage.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-# Definition of file storage device
-Storage {
-  Name = File
-# Do not use "localhost" here    
-  Address = @storage_address@                # N.B. Use a fully qualified name here
-  SDPort = @storage_port@
-  Password = "@storage_password@"
-  Device = FileStorage
-  Media Type = File
-}
diff --git a/src/win32/full_win32_installer/winbacula.nsi b/src/win32/full_win32_installer/winbacula.nsi
deleted file mode 100644
index 700dff6..0000000
--- a/src/win32/full_win32_installer/winbacula.nsi
+++ /dev/null
@@ -1,1466 +0,0 @@
-; winbacula.nsi
-;
-; Began as a version written by Michel Meyers (michel at tcnnet.dyndns.org)
-;
-; Adapted by Kern Sibbald for native Win32 Bacula
-;    added a number of elements from Christopher Hull's installer
-;
-; D. Scott Barninger Nov 13 2004
-; added configuration editing for bconsole.conf and bwx-console.conf
-; better explanation in dialog boxes for editing config files
-; added Start Menu items
-; fix uninstall of config files to do all not just bacula-fd.conf
-;
-; D. Scott Barninger Dec 05 2004
-; added specification of default permissions for bacula-fd.conf
-;   - thanks to Jamie Ffolliott for pointing me at cacls
-; added removal of working-dir files if user selects to remove config
-; uninstall is now 100% clean
-;
-; D. Scott Barninger Apr 17 2005
-; 1.36.3 release docs update
-; add pdf manual and menu shortcut
-;
-; Robert Nelson May 15 2006
-; Added server installs and implemented Microsoft install locations
-; Use LogicLib.nsh
-; Added Bacula-SD and Bacula-DIR
-; Replaced ParameterGiven with standard GetOptions
-;
-; Command line options:
-;
-; /service    - 
-; /start
-;
-; netsh firewall add portopening protocol=tcp port=9102 name="Bacula-FD"
-
-
-!define PRODUCT "Bacula"
-
-;
-; Include the Modern UI
-;
-
-!include "MUI.nsh"
-!include "LogicLib.nsh"
-!include "FileFunc.nsh"
-!include "Sections.nsh"
-!include "StrFunc.nsh"
-!include "WinMessages.nsh"
-;
-; Basics
-;
-Name "Bacula"
-OutFile "${OUT_DIR}\winbacula-${VERSION}.exe"
-SetCompressor lzma
-InstallDir "$PROGRAMFILES\Bacula"
-InstallDirRegKey HKLM "Software\Bacula" "InstallLocation"
-
-InstType "Client"
-InstType "Server"
-InstType "Full"
-
-!insertmacro GetParent
-
-${StrCase}
-${StrRep}
-${StrTok}
-${StrTrimNewLines}
-
-;
-; Pull in pages
-;
-
-!define      MUI_COMPONENTSPAGE_SMALLDESC
-
-!define      MUI_HEADERIMAGE
-!define      MUI_BGCOLOR                739AB9
-!define      MUI_HEADERIMAGE_BITMAP     "bacula-logo.bmp"
-
-!InsertMacro MUI_PAGE_WELCOME
-!InsertMacro MUI_PAGE_LICENSE "..\..\..\LICENSE"
-Page custom EnterInstallType
-!define      MUI_PAGE_CUSTOMFUNCTION_SHOW PageComponentsShow
-!InsertMacro MUI_PAGE_COMPONENTS
-!define      MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
-!InsertMacro MUI_PAGE_DIRECTORY
-Page custom EnterConfigPage1 LeaveConfigPage1
-Page custom EnterConfigPage2 LeaveConfigPage2
-!Define      MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveInstallPage
-!InsertMacro MUI_PAGE_INSTFILES
-Page custom EnterWriteTemplates
-!Define      MUI_FINISHPAGE_SHOWREADME $INSTDIR\Readme.txt
-!InsertMacro MUI_PAGE_FINISH
-
-!InsertMacro MUI_UNPAGE_WELCOME
-!InsertMacro MUI_UNPAGE_CONFIRM
-!InsertMacro MUI_UNPAGE_INSTFILES
-!InsertMacro MUI_UNPAGE_FINISH
-
-!define      MUI_ABORTWARNING
-
-!InsertMacro MUI_LANGUAGE "English"
-
-!InsertMacro GetParameters
-!InsertMacro GetOptions
-
-DirText "Setup will install Bacula ${VERSION} to the directory specified below. To install in a different folder, click Browse and select another folder."
-
-!InsertMacro MUI_RESERVEFILE_INSTALLOPTIONS
-;
-; Global Variables
-;
-Var OptService
-Var OptStart
-Var OptSilent
-
-Var CommonFilesDone
-
-Var OsIsNT
-
-Var HostName
-
-Var ConfigClientName
-Var ConfigClientPort
-Var ConfigClientMaxJobs
-Var ConfigClientPassword
-Var ConfigClientInstallService
-Var ConfigClientStartService
-
-Var ConfigStorageName
-Var ConfigStoragePort
-Var ConfigStorageMaxJobs
-Var ConfigStoragePassword
-Var ConfigStorageInstallService
-Var ConfigStorageStartService
-
-Var ConfigDirectorName
-Var ConfigDirectorPort
-Var ConfigDirectorMaxJobs
-Var ConfigDirectorPassword
-Var ConfigDirectorAddress
-Var ConfigDirectorMailServer
-Var ConfigDirectorMailAddress
-Var ConfigDirectorDB
-Var ConfigDirectorInstallService
-Var ConfigDirectorStartService
-
-Var ConfigMonitorName
-Var ConfigMonitorPassword
-
-Var LocalDirectorPassword
-Var LocalHostAddress
-
-Var MySQLPath
-Var MySQLVersion
-Var PostgreSQLPath
-Var PostgreSQLVersion
-
-Var AutomaticInstall
-Var InstallType
-!define NewInstall      0
-!define UpgradeInstall  1
-!define MigrateInstall  2
-
-Var OldInstallDir
-Var PreviousComponents
-Var NewComponents
-
-; Bit 0 = File Service
-;     1 = Storage Service
-;     2 = Director Service
-;     3 = Command Console
-;     4 = Bat Console
-;     5 = wxWidgets Console
-;     7 = Documentation (PDF)
-;     7 = Documentation (HTML)
-
-!define ComponentFile                   1
-!define ComponentStorage                2
-!define ComponentDirector               4
-!define ComponentTextConsole            8
-!define ComponentBatConsole             16
-!define ComponentGUIConsole             32
-!define ComponentPDFDocs                64
-!define ComponentHTMLDocs               128
-
-!define ComponentsRequiringUserConfig           63
-!define ComponentsFileAndStorage                3
-!define ComponentsFileAndStorageAndDirector     7
-!define ComponentsDirectorAndTextGuiConsoles    60
-!define ComponentsTextAndGuiConsoles            56
-
-Var HDLG
-Var HCTL
-
-Function .onInit
-  Push $R0
-  Push $R1
-
-  ; Process Command Line Options
-  StrCpy $OptService 1
-  StrCpy $OptStart 1
-  StrCpy $OptSilent 0
-  StrCpy $CommonFilesDone 0
-  StrCpy $OsIsNT 0
-  StrCpy $AutomaticInstall 0
-  StrCpy $InstallType ${NewInstall}
-  StrCpy $OldInstallDir ""
-  StrCpy $PreviousComponents 0
-  StrCpy $NewComponents 0
-  StrCpy $MySQLPath ""
-  StrCpy $MySQLVersion ""
-  StrCpy $PostgreSQLPath ""
-  StrCpy $PostgreSQLVersion ""
-
-  ${GetParameters} $R0
-
-  ClearErrors
-  ${GetOptions} $R0 "/noservice" $R1
-  IfErrors +2
-    StrCpy $OptService 0
-
-  ClearErrors
-  ${GetOptions} $R0 "/nostart" $R1
-  IfErrors +2
-    StrCpy $OptStart 0
-
-  IfSilent 0 +2
-    StrCpy $OptSilent 1
-
-  ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  ${If} $R0 != ""
-    StrCpy $OsIsNT 1
-  ${EndIf}
-
-  Call GetComputerName
-  Pop $HostName
-
-  Call GetHostName
-  Pop $LocalHostAddress
-
-  Call GetUserName
-  Pop $ConfigDirectorMailAddress
-
-  Call FindDatabaseApps
-
-  ; Configuration Defaults
-
-  StrCpy $ConfigClientName               "$HostName-fd"
-  StrCpy $ConfigClientPort               9102
-  StrCpy $ConfigClientMaxJobs            5
-  ;StrCpy $ConfigClientPassword
-  StrCpy $ConfigClientInstallService     "$OptService"
-  StrCpy $ConfigClientStartService       "$OptStart"
-
-  StrCpy $ConfigStorageName              "$HostName-sd"
-  StrCpy $ConfigStoragePort              9103
-  StrCpy $ConfigStorageMaxJobs           10
-  ;StrCpy $ConfigStoragePassword
-  StrCpy $ConfigStorageInstallService    "$OptService"
-  StrCpy $ConfigStorageStartService      "$OptStart"
-
-  ;StrCpy $ConfigDirectorName            "$HostName-dir"
-  StrCpy $ConfigDirectorPort             9101
-  StrCpy $ConfigDirectorMaxJobs          1
-  ;StrCpy $ConfigDirectorPassword
-  StrCpy $ConfigDirectorDB               0
-  StrCpy $ConfigDirectorInstallService   "$OptService"
-  StrCpy $ConfigDirectorStartService     "$OptStart"
-
-  StrCpy $ConfigMonitorName              "$HostName-mon"
-  ;StrCpy $ConfigMonitorPassword
-
-  InitPluginsDir
-  File "/oname=$PLUGINSDIR\openssl.exe"  "${SRC_DIR}\openssl.exe"
-  File "/oname=$PLUGINSDIR\libeay32.dll" "${SRC_DIR}\libeay32.dll"
-  File "/oname=$PLUGINSDIR\ssleay32.dll" "${SRC_DIR}\ssleay32.dll"
-  File "/oname=$PLUGINSDIR\sed.exe"      "${SRC_DIR}\sed.exe"
-
-  !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"
-  !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "WriteTemplates.ini"
-
-  SetPluginUnload alwaysoff
-
-  nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
-  pop $R0
-  ${If} $R0 = 0
-   FileOpen $R1 "$PLUGINSDIR\pw.txt" r
-   IfErrors +4
-     FileRead $R1 $R0
-     ${StrTrimNewLines} $ConfigClientPassword $R0
-     FileClose $R1
-  ${EndIf}
-
-  nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
-  pop $R0
-  ${If} $R0 = 0
-   FileOpen $R1 "$PLUGINSDIR\pw.txt" r
-   IfErrors +4
-     FileRead $R1 $R0
-     ${StrTrimNewLines} $ConfigStoragePassword $R0
-     FileClose $R1
-  ${EndIf}
-
-  nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
-  pop $R0
-  ${If} $R0 = 0
-   FileOpen $R1 "$PLUGINSDIR\pw.txt" r
-   IfErrors +4
-     FileRead $R1 $R0
-     ${StrTrimNewLines} $LocalDirectorPassword $R0
-     FileClose $R1
-  ${EndIf}
-
-  SetPluginUnload manual
-
-  nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
-  pop $R0
-  ${If} $R0 = 0
-   FileOpen $R1 "$PLUGINSDIR\pw.txt" r
-   IfErrors +4
-     FileRead $R1 $R0
-     ${StrTrimNewLines} $ConfigMonitorPassword $R0
-     FileClose $R1
-  ${EndIf}
-
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-Function .onSelChange
-  Call UpdateComponentUI
-FunctionEnd
-
-Function InstallCommonFiles
-  ${If} $CommonFilesDone = 0
-    SetOutPath "$INSTDIR"
-    File "Readme.txt"
-
-    SetOutPath "$INSTDIR\bin"
-!if "${BUILD_TOOLS}" == "VC8"
-    File "${SRC_DIR}\msvcm80.dll"
-    File "${SRC_DIR}\msvcp80.dll"
-    File "${SRC_DIR}\msvcr80.dll"
-    File "${SRC_DIR}\Microsoft.VC80.CRT.manifest"
-    File "${SRC_DIR}\pthreadVCE.dll"
-!endif
-!if "${BUILD_TOOLS}" == "VC8_DEBUG"
-    File "${SRC_DIR}\msvcm80.dll"
-    File "${SRC_DIR}\msvcp80.dll"
-    File "${SRC_DIR}\msvcr80.dll"
-    File "${SRC_DIR}\Microsoft.VC80.CRT.manifest"
-    File "${SRC_DIR}\msvcm80d.dll"
-    File "${SRC_DIR}\msvcp80d.dll"
-    File "${SRC_DIR}\msvcr80d.dll"
-    File "${SRC_DIR}\Microsoft.VC80.DebugCRT.manifest"
-    File "${SRC_DIR}\pthreadVCE.dll"
-!endif
-!if "${BUILD_TOOLS}" == "MinGW"
-    File "${SRC_DIR}\mingwm10.dll"
-    File "${SRC_DIR}\pthreadGCE.dll"
-!endif
-    File "${SRC_DIR}\libeay32.dll"
-    File "${SRC_DIR}\ssleay32.dll"
-    File "${SRC_DIR}\zlib1.dll"
-!if "${BUILD_TOOLS}" == "VC8"
-    File "${SRC_DIR}\zlib1.dll.manifest"
-!endif
-!If "${BUILD_TOOLS}" == "VC8_DEBUG"
-    File "${SRC_DIR}\zlib1.dll.manifest"
-!endif
-    File "/oname=$INSTDIR\openssl.cnf" "${SRC_DIR}\openssl.cnf"
-    File "${SRC_DIR}\openssl.exe"
-    File "${SRC_DIR}\bsleep.exe"
-    File "${SRC_DIR}\bsmtp.exe"
-    File "${SRC_DIR}\bacula.dll"
-    File "${SRC_DIR}\expr64.exe"
-    File "${SRC_DIR}\snooze.exe"
-
-    CreateShortCut "$SMPROGRAMS\Bacula\Documentation\View Readme.lnk" "write.exe" '"$INSTDIR\Readme.txt"'
-
-    StrCpy $CommonFilesDone 1
-  ${EndIf}
-FunctionEnd
-
-Section "-Initialize"
-  ${If} $MySQLPath != ""
-    DetailPrint "Found MySQL (version $MySQLVersion)"
-  ${EndIf}
-  ${If} $PostgreSQLPath != ""
-    DetailPrint "Found PostgreSQL (version $PostgreSQLVersion)"
-  ${EndIf}
-
-  WriteRegStr   HKLM Software\Bacula InstallLocation "$INSTDIR"
-
-  Call GetSelectedComponents
-  Pop $R2
-  WriteRegDWORD HKLM Software\Bacula Components $R2
-
-  WriteRegDWORD HKLM Software\Bacula Database $ConfigDirectorDB
-
-  ; remove start menu items
-  SetShellVarContext all
-
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\Configuration\*"
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\Documentation\*"
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
-  RMDir "$SMPROGRAMS\Bacula\Configuration"
-  RMDir "$SMPROGRAMS\Bacula\Documentation"
-  RMDir "$SMPROGRAMS\Bacula"
-  CreateDirectory "$SMPROGRAMS\Bacula"
-  CreateDirectory "$SMPROGRAMS\Bacula\Configuration"
-  CreateDirectory "$SMPROGRAMS\Bacula\Documentation"
-
-  CreateDirectory "$INSTDIR"
-  CreateDirectory "$INSTDIR\bin"
-  CreateDirectory "$APPDATA\Bacula"
-  CreateDirectory "$APPDATA\Bacula\Work"
-  CreateDirectory "$APPDATA\Bacula\Spool"
-
-  SetOutPath "$INSTDIR"
-  File "..\..\..\LICENSE"
-  Delete /REBOOTOK "$INSTDIR\bin\License.txt"
-
-  FileOpen $R1 $PLUGINSDIR\config.sed w
-  FileWrite $R1 "s;@VERSION@;${VERSION};g$\r$\n"
-  FileWrite $R1 "s;@DATE@;${__DATE__};g$\r$\n"
-  FileWrite $R1 "s;@DISTNAME@;Windows;g$\r$\n"
-
-!If "$BUILD_TOOLS" == "MinGW"
-  StrCpy $R2 "MinGW32"
-!Else
-  StrCpy $R2 "MVS"
-!EndIf
-
-  Call GetHostName
-  Exch $R3
-  Pop $R3
-
-  FileWrite $R1 "s;@DISTVER@;$R2;g$\r$\n"
-
-  ${StrRep} $R2 "$APPDATA\Bacula\Work" "\" "\\\\"
-  FileWrite $R1 's;@working_dir@;$R2;g$\r$\n'
-  ${StrRep} $R2 "$APPDATA\Bacula\Work" "\" "\\"
-  FileWrite $R1 's;@working_dir_cmd@;$R2;g$\r$\n'
-
-  ${StrRep} $R2 "$INSTDIR\bin" "\" "\\\\"
-  FileWrite $R1 's;@bin_dir@;$R2;g$\r$\n'
-  ${StrRep} $R2 "$INSTDIR\bin" "\" "\\"
-  FileWrite $R1 's;@bin_dir_cmd@;$R2;g$\r$\n'
-
-  ${StrRep} $R2 "$INSTDIR\bin\fdplugins" "\" "\\\\"
-  FileWrite $R1 's;@fdplugins_dir@;$R2;g$\r$\n'
-
-  ${StrRep} $R2 "$INSTDIR" "\" "/"
-  FileWrite $R1 "s;@BUILD_DIR@;$R2;g$\r$\n"
-
-  Call IsDirectorSelected
-  Pop $R2
-  ${If} $R2 = 1
-    FileWrite $R1 "s;@director_address@;$LocalHostAddress;g$\r$\n"
-  ${Else}
-    ${If} "$ConfigDirectorAddress" != ""
-      FileWrite $R1 "s;@director_address@;$ConfigDirectorAddress;g$\r$\n"
-    ${EndIf}
-  ${EndIf}
-
-  FileWrite $R1 "s;@client_address@;$LocalHostAddress;g$\r$\n"
-  FileWrite $R1 "s;@storage_address@;$LocalHostAddress;g$\r$\n"
-
-  ${If} "$ConfigClientName" != ""
-    FileWrite $R1 "s;@client_name@;$ConfigClientName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigClientPort" != ""
-    FileWrite $R1 "s;@client_port@;$ConfigClientPort;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigClientMaxJobs" != ""
-    FileWrite $R1 "s;@client_maxjobs@;$ConfigClientMaxJobs;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigClientPassword" != ""
-    FileWrite $R1 "s;@client_password@;$ConfigClientPassword;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigStorageName" != ""
-    FileWrite $R1 "s;@storage_name@;$ConfigStorageName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigStoragePort" != ""
-    FileWrite $R1 "s;@storage_port@;$ConfigStoragePort;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigStorageMaxJobs" != ""
-    FileWrite $R1 "s;@storage_maxjobs@;$ConfigStorageMaxJobs;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigStoragePassword" != ""
-    FileWrite $R1 "s;@storage_password@;$ConfigStoragePassword;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorName" != ""
-    FileWrite $R1 "s;@director_name@;$ConfigDirectorName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorPort" != ""
-    FileWrite $R1 "s;@director_port@;$ConfigDirectorPort;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorMaxJobs" != ""
-    FileWrite $R1 "s;@director_maxjobs@;$ConfigDirectorMaxJobs;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorPassword" != ""
-    FileWrite $R1 "s;@director_password@;$ConfigDirectorPassword;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorMailServer" != ""
-    FileWrite $R1 "s;@smtp_host@;$ConfigDirectorMailServer;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorMailAddress" != ""
-    FileWrite $R1 "s;@job_email@;$ConfigDirectorMailAddress;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigMonitorName" != ""
-    FileWrite $R1 "s;@monitor_name@;$ConfigMonitorName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigMonitorPassword" != ""
-    FileWrite $R1 "s;@monitor_password@;$ConfigMonitorPassword;g$\r$\n"
-  ${EndIf}
-
-  ${If} $ConfigDirectorDB = 1
-    ${If} $MySQLPath != ""
-      ${StrRep} $R2 "$MySQLPath\bin" "\" "\\"
-      FileWrite $R1 "s;@SQL_BINDIR@;$R2;g$\r$\n"
-    ${EndIf}
-  ${ElseIf} $ConfigDirectorDB = 2
-    ${If} $PostgreSQLPath != ""
-      ${StrRep} $R2 "$PostgreSQLPath\bin" "\" "\\"
-      FileWrite $R1 "s;@SQL_BINDIR@;$R2;g$\r$\n"
-    ${EndIf}
-  ${EndIf}
-
-  FileClose $R1
-
-  ${If} $InstallType = ${MigrateInstall}
-    FileOpen $R1 $PLUGINSDIR\migrate.sed w
-    ${StrRep} $R2 "$APPDATA\Bacula\Work" "\" "\\\\"
-    FileWrite $R1 's;\(Working *Directory *= *\)[^ ][^ ]*.*$$;\1"$R2";$\r$\n'
-    FileWrite $R1 's;\(Pid *Directory *= *\)[^ ][^ ]*.*$$;\1"$R2";$\r$\n'
-    FileClose $R1
-  ${EndIf}
-
-  ${If} ${FileExists} "$OldInstallDir\bin\bacula-fd.exe"
-    nsExec::ExecToLog '"$OldInstallDir\bin\bacula-fd.exe" /kill'     ; Shutdown any bacula that could be running
-    Sleep 3000
-    nsExec::ExecToLog '"$OldInstallDir\bin\bacula-fd.exe" /remove'   ; Remove existing service
-  ${EndIf}
-
-  ${If} ${FileExists} "$OldInstallDir\bin\bacula-sd.exe"
-    nsExec::ExecToLog '"$OldInstallDir\bin\bacula-sd.exe" /kill'     ; Shutdown any bacula that could be running
-    Sleep 3000
-    nsExec::ExecToLog '"$OldInstallDir\bin\bacula-sd.exe" /remove'   ; Remove existing service
-  ${EndIf}
-
-  ${If} ${FileExists} "$OldInstallDir\bin\bacula-dir.exe"
-    nsExec::ExecToLog '"$OldInstallDir\bin\bacula-dir.exe" /kill'     ; Shutdown any bacula that could be running
-    Sleep 3000
-    nsExec::ExecToLog '"$OldInstallDir\bin\bacula-dir.exe" /remove'   ; Remove existing service
-  ${EndIf}
-
-SectionEnd
-
-SectionGroup "Client" SecGroupClient
-
-Section "File Service" SecFileDaemon
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR\bin\fdplugins"
-  File "${SRC_DIR}\exchange-fd.dll"
-
-  SetOutPath "$INSTDIR\bin"
-
-  File "${SRC_DIR}\bacula-fd.exe"
-
-  ${If} $InstallType = ${MigrateInstall}
-  ${AndIf} ${FileExists} "$OldInstallDir\bin\bacula-fd.conf"
-    CopyFiles "$OldInstallDir\bin\bacula-fd.conf" "$APPDATA\Bacula"
-    nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\migrate.sed" -i.bak "$APPDATA\Bacula\bacula-fd.conf"'
-  ${Else}
-    File "/oname=$PLUGINSDIR\bacula-fd.conf" "bacula-fd.conf.in"
-
-    StrCpy $0 "$APPDATA\Bacula"
-    StrCpy $1 bacula-fd.conf
-    Call ConfigEditAndCopy
-  ${EndIf}
-
-  StrCpy $0 bacula-fd
-  StrCpy $1 "File Service"
-  StrCpy $2 $ConfigClientInstallService
-  StrCpy $3 $ConfigClientStartService
-
-  Call InstallDaemon
-
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Client Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-fd.conf"'
-SectionEnd
-
-SectionGroupEnd
-
-SectionGroup "Server" SecGroupServer
-
-Section "Storage Service" SecStorageDaemon
-  SectionIn 2 3
-
-  SetOutPath "$INSTDIR\bin"
-
-  File "${SRC_DIR}\loaderinfo.exe"
-  File "${SRC_DIR}\mt.exe"
-  File "${SRC_DIR}\mtx.exe"
-  File "${SRC_DIR}\scsitape.exe"
-  File "${SRC_DIR}\tapeinfo.exe"
-  File "${SRC_DIR}\bacula-sd.exe"
-  File "${SRC_DIR}\bcopy.exe"
-  File "${SRC_DIR}\bextract.exe"
-  File "${SRC_DIR}\bls.exe"
-  File "${SRC_DIR}\bscan.exe"
-  File "${SRC_DIR}\btape.exe"
-  File "${SRC_DIR}\scsilist.exe"
-  File "${SRC_DIR}\mkisofs.exe"
-  File "${SRC_DIR}\growisofs.exe"
-  File "${SRC_DIR}\dvd-ram-control.exe"
-  File "${SRC_DIR}\dvd+rw-booktype.exe"
-  File "${SRC_DIR}\dvd+rw-format.exe"
-  File "${SRC_DIR}\dvd+rw-mediainfo.exe"
-
-  File "/oname=$PLUGINSDIR\mtx-changer.cmd" "${SRC_DIR}\mtx-changer.cmd"
-
-  StrCpy $0 "$INSTDIR\bin"
-  StrCpy $1 mtx-changer.cmd
-  Call ConfigEditAndCopy
-
-  File "/oname=$PLUGINSDIR\disk-changer.cmd" "${SRC_DIR}\disk-changer.cmd"
-
-  StrCpy $0 "$INSTDIR\bin"
-  StrCpy $1 disk-changer.cmd
-  Call ConfigEditAndCopy
-
-  File "/oname=$PLUGINSDIR\dvd-handler.cmd" "${SRC_DIR}\dvd-handler.cmd"
-
-  StrCpy $0 "$INSTDIR\bin"
-  StrCpy $1 dvd-handler.cmd
-  Call ConfigEditAndCopy
-
-  File "/oname=$PLUGINSDIR\bacula-sd.conf" "bacula-sd.conf.in"
-
-  StrCpy $0 "$APPDATA\Bacula"
-  StrCpy $1 bacula-sd.conf
-  Call ConfigEditAndCopy
-
-  StrCpy $0 bacula-sd
-  StrCpy $1 "Storage Service"
-  StrCpy $2 $ConfigStorageInstallService
-  StrCpy $3 $ConfigStorageStartService
-  Call InstallDaemon
-
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\List Devices.lnk" "$INSTDIR\bin\scsilist.exe" "/pause"
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Storage Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-sd.conf"'
-SectionEnd
-
-Section "Director Service" SecDirectorDaemon
-  SectionIn 2 3
-
-  SetOutPath "$INSTDIR\bin"
-
-  ${If} $ConfigDirectorDB = 1
-    File /oname=bacula_cats.dll "${SRC_DIR}\cats_mysql.dll"
-    File "${SRC_DIR}\libmysql.dll"
-    File /oname=$PLUGINSDIR\create_database.cmd ${SRC_DIR}\create_mysql_database.cmd
-    File /oname=$PLUGINSDIR\drop_database.cmd ${SRC_DIR}\drop_mysql_database.cmd
-    File /oname=$PLUGINSDIR\make_tables.cmd ${SRC_DIR}\make_mysql_tables.cmd
-    File ${SRC_DIR}\make_mysql_tables.sql
-    File /oname=$PLUGINSDIR\drop_tables.cmd ${SRC_DIR}\drop_mysql_tables.cmd
-    File ${SRC_DIR}\drop_mysql_tables.sql
-    File /oname=$PLUGINSDIR\grant_privileges.cmd ${SRC_DIR}\grant_mysql_privileges.cmd
-    File ${SRC_DIR}\grant_mysql_privileges.sql
-    File /oname=$PLUGINSDIR\make_catalog_backup.cmd ${SRC_DIR}\make_mysql_catalog_backup.cmd
-  ${ElseIf} $ConfigDirectorDB = 2
-    File /oname=bacula_cats.dll "${SRC_DIR}\cats_postgresql.dll"
-    File "${SRC_DIR}\libpq.dll"
-!if "${BUILD_TOOLS}" == "VC8"
-    File "${SRC_DIR}\comerr32.dll"
-    File "${SRC_DIR}\libintl-2.dll"
-    File "${SRC_DIR}\libiconv-2.dll"
-    File "${SRC_DIR}\krb5_32.dll"
-!endif
-!If "${BUILD_TOOLS}" == "VC8_DEBUG"
-    File "${SRC_DIR}\comerr32.dll"
-    File "${SRC_DIR}\libintl-2.dll"
-    File "${SRC_DIR}\libiconv-2.dll"
-    File "${SRC_DIR}\krb5_32.dll"
-!endif
-    File /oname=$PLUGINSDIR\create_database.cmd ${SRC_DIR}\create_postgresql_database.cmd
-    File /oname=$PLUGINSDIR\drop_database.cmd ${SRC_DIR}\drop_postgresql_database.cmd
-    File /oname=$PLUGINSDIR\make_tables.cmd ${SRC_DIR}\make_postgresql_tables.cmd
-    File ${SRC_DIR}\create_postgresql_database.sql
-    File ${SRC_DIR}\make_postgresql_tables.sql
-    File /oname=$PLUGINSDIR\drop_tables.cmd ${SRC_DIR}\drop_postgresql_tables.cmd
-    File ${SRC_DIR}\drop_postgresql_tables.sql
-    File /oname=$PLUGINSDIR\grant_privileges.cmd ${SRC_DIR}\grant_postgresql_privileges.cmd
-    File ${SRC_DIR}\grant_postgresql_privileges.sql
-    File /oname=$PLUGINSDIR\make_catalog_backup.cmd ${SRC_DIR}\make_postgresql_catalog_backup.cmd
-  ${ElseIf} $ConfigDirectorDB = 3
-    File "${SRC_DIR}\sqlite3.exe"
-!if "${BUILD_TOOLS}" == "VC8"
-    File "${SRC_DIR}\sqlite3.exe.manifest"
-!endif
-!If "${BUILD_TOOLS}" == "VC8_DEBUG"
-    File "${SRC_DIR}\sqlite3.exe.manifest"
-!endif
-    File /oname=bacula_cats.dll "${SRC_DIR}\cats_sqlite3.dll"
-    File /oname=$PLUGINSDIR\create_database.cmd ${SRC_DIR}\create_sqlite3_database.cmd
-    File /oname=$PLUGINSDIR\drop_database.cmd ${SRC_DIR}\drop_sqlite3_database.cmd
-    File /oname=$PLUGINSDIR\make_tables.cmd ${SRC_DIR}\make_sqlite3_tables.cmd
-    File ${SRC_DIR}\make_sqlite3_tables.sql
-    File /oname=$PLUGINSDIR\drop_tables.cmd ${SRC_DIR}\drop_sqlite3_tables.cmd
-    File /oname=$PLUGINSDIR\grant_privileges.cmd ${SRC_DIR}\grant_sqlite3_privileges.cmd
-    File /oname=$PLUGINSDIR\make_catalog_backup.cmd ${SRC_DIR}\make_sqlite3_catalog_backup.cmd
-  ${EndIf}
-
-  File "${SRC_DIR}\bacula-dir.exe"
-  File "${SRC_DIR}\dbcheck.exe"
-
-  File "/oname=$PLUGINSDIR\delete_catalog_backup.cmd" "${SRC_DIR}\delete_catalog_backup.cmd"
-
-  StrCpy $0 "$INSTDIR\bin"
-  
-  StrCpy $1 create_database.cmd
-  Call ConfigEditAndCopy
-
-  StrCpy $1 drop_database.cmd
-  Call ConfigEditAndCopy
-
-  StrCpy $1 make_tables.cmd
-  Call ConfigEditAndCopy
-
-  StrCpy $1 drop_tables.cmd
-  Call ConfigEditAndCopy
-
-  StrCpy $1 grant_privileges.cmd
-  Call ConfigEditAndCopy
-
-  StrCpy $1 make_catalog_backup.cmd
-  Call ConfigEditAndCopy
-
-  StrCpy $1 delete_catalog_backup.cmd
-  Call ConfigEditAndCopy
-
-  File "${SRC_DIR}\query.sql"
-
-  File "/oname=$PLUGINSDIR\bacula-dir.conf" "bacula-dir.conf.in"
-
-  StrCpy $0 "$APPDATA\Bacula"
-  StrCpy $1 bacula-dir.conf
-  Call ConfigEditAndCopy
-
-  StrCpy $0 bacula-dir
-  StrCpy $1 "Director Service"
-  StrCpy $2 $ConfigDirectorInstallService
-  StrCpy $3 $ConfigDirectorStartService
-  Call InstallDaemon
-
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Director Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bacula-dir.conf"'
-SectionEnd
-
-SectionGroupEnd
-
-SectionGroup "Consoles" SecGroupConsoles
-
-Section "Command Console" SecConsole
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR\bin"
-
-  File "${SRC_DIR}\bconsole.exe"
-  Call InstallCommonFiles
-
-  ${If} $InstallType = ${MigrateInstall}
-  ${AndIf} ${FileExists} "$OldInstallDir\bin\bconsole.conf"
-    CopyFiles "$OldInstallDir\bin\bconsole.conf" "$APPDATA\Bacula"
-  ${Else}
-    File "/oname=$PLUGINSDIR\bconsole.conf" "bconsole.conf.in"
-    StrCpy $0 "$APPDATA\Bacula"
-    StrCpy $1 bconsole.conf
-    Call ConfigEditAndCopy
-  ${EndIf}
-
-  CreateShortCut "$SMPROGRAMS\Bacula\bconsole.lnk" "$INSTDIR\bin\bconsole.exe" '-c "$APPDATA\Bacula\bconsole.conf"' "$INSTDIR\bin\bconsole.exe" 0
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Command Console Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bconsole.conf"'
-
-SectionEnd
-
-Section "Bat Console" SecBatConsole
-  SectionIn 1 2 3
-  
-  SetOutPath "$INSTDIR\bin"
-
-  Call InstallCommonFiles
-  File "${SRC_DIR}\QtCore4.dll"
-  File "${SRC_DIR}\QtGui4.dll"
-
-  File "${SRC_DIR}\bat.exe"
-
-  ${If} $InstallType = ${MigrateInstall}
-  ${AndIf} ${FileExists} "$OldInstallDir\bin\bat.conf"
-    CopyFiles "$OldInstallDir\bin\bat.conf" "$APPDATA\Bacula"
-  ${Else}
-    File "/oname=$PLUGINSDIR\bat.conf" "bat.conf.in"
-    StrCpy $0 "$APPDATA\Bacula"
-    StrCpy $1 bat.conf
-    Call ConfigEditAndCopy
-  ${EndIf}
-
-  ; Create Start Menu entry
-  CreateShortCut "$SMPROGRAMS\Bacula\Bat.lnk" "$INSTDIR\bin\bat.exe" '-c "$APPDATA\Bacula\bat.conf"' "$INSTDIR\bin\bat.exe" 0
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Bat Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bat.conf"'
-SectionEnd
-
-
-Section "Graphical Console" SecWxConsole
-  SectionIn 1 2 3
-  
-  SetOutPath "$INSTDIR\bin"
-
-  Call InstallCommonFiles
-!if "${BUILD_TOOLS}" == "VC8"
-  File "${SRC_DIR}\wxbase28_vc_bacula.dll"
-  File "${SRC_DIR}\wxmsw28_core_vc_bacula.dll"
-!endif
-!If "${BUILD_TOOLS}" == "VC8_DEBUG"
-  File "${SRC_DIR}\wxbase28_vc_bacula.dll"
-  File "${SRC_DIR}\wxmsw28_core_vc_bacula.dll"
-!endif
-!if "${BUILD_TOOLS}" == "MinGW"
-  File "${SRC_DIR}\wxbase28_gcc_bacula.dll"
-  File "${SRC_DIR}\wxmsw28_core_gcc_bacula.dll"
-!endif
-
-  File "${SRC_DIR}\bwx-console.exe"
-
-  ${If} $InstallType = ${MigrateInstall}
-  ${AndIf} ${FileExists} "$OldInstallDir\bin\bwx-console.conf"
-    CopyFiles "$OldInstallDir\bin\bwx-console.conf" "$APPDATA\Bacula"
-  ${Else}
-    File "/oname=$PLUGINSDIR\bwx-console.conf" "bwx-console.conf.in"
-    StrCpy $0 "$APPDATA\Bacula"
-    StrCpy $1 bwx-console.conf
-    Call ConfigEditAndCopy
-  ${EndIf}
-
-  ; Create Start Menu entry
-  CreateShortCut "$SMPROGRAMS\Bacula\bwx-console.lnk" "$INSTDIR\bin\bwx-console.exe" '-c "$APPDATA\Bacula\bwx-console.conf"' "$INSTDIR\bin\bwx-console.exe" 0
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Graphical Console Configuration.lnk" "write.exe" '"$APPDATA\Bacula\bwx-console.conf"'
-SectionEnd
-
-SectionGroupEnd
-
-SectionGroup "Documentation" SecGroupDocumentation
-
-Section "Documentation (Acrobat Format)" SecDocPdf
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR\doc"
-  CreateDirectory "$INSTDIR\doc"
-
-  File "${SRC_DIR}\docs\manuals\en\console\console.pdf"
-  File "${SRC_DIR}\docs\manuals\en\misc\misc.pdf"
-  File "${SRC_DIR}\docs\manuals\en\main\main.pdf"
-  File "${SRC_DIR}\docs\manuals\en\utility\utility.pdf"
-  File "${SRC_DIR}\docs\manuals\en\problems\problems.pdf"
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Console.lnk" '"$INSTDIR\doc\console.pdf"'
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Main.lnk" '"$INSTDIR\doc\main.pdf"'
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Misc.lnk" '"$INSTDIR\doc\misc.pdf"'
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Utility.lnk" '"$INSTDIR\doc\utility.pdf"'
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Problems.lnk" '"$INSTDIR\doc\problems.pdf"'
-SectionEnd
-
-Section "Documentation (HTML Format)" SecDocHtml
-  SectionIn 3
-
-  SetOutPath "$INSTDIR\doc"
-  CreateDirectory "$INSTDIR\doc"
-
-; File "${SRC_DIR}\manual\bacula\*.html"
-; File "${SRC_DIR}\manual\bacula\*.png"
-; File "${SRC_DIR}\manual\bacula\*.css"
-; CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Manual (HTML).lnk" '"$INSTDIR\doc\index.html"'
-SectionEnd
-
-SectionGroupEnd
-
-Section "-Finish"
-  Push $R0
-
-  ${If} $OsIsNT = 1
-    nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'
-    nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$APPDATA\Bacula" /T /G SYSTEM:F Administrators:F'
-  ${EndIf}
-
-  ; Write the uninstall keys for Windows & create Start Menu entry
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "InstallLocation" "$INSTDIR"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayVersion" "${VERSION}"
-  ${StrTok} $R0 "${VERSION}" "." 0 0
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMajor" $R0
-  ${StrTok} $R0 "${VERSION}" "." 1 0
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMinor" $R0
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoModify" 1
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoRepair" 1
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLUpdateInfo" "http://sourceforge.net/project/showfiles.php?group_id=50727"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLInfoAbout" "http://www.bacula.org"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "HelpLink" "http://www.bacula.org/?page=support"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
-  WriteUninstaller "$INSTDIR\Uninstall.exe"
-  CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
-  Pop $R0
-SectionEnd
-
-; Extra Page descriptions
-
-LangString DESC_SecFileDaemon ${LANG_ENGLISH} "Install Bacula File Daemon on this system."
-LangString DESC_SecStorageDaemon ${LANG_ENGLISH} "Install Bacula Storage Daemon on this system."
-LangString DESC_SecDirectorDaemon ${LANG_ENGLISH} "Install Bacula Director Daemon on this system."
-LangString DESC_SecConsole ${LANG_ENGLISH} "Install command console program on this system."
-LangString DESC_SecBatConsole ${LANG_ENGLISH} "Install Bat graphical console program on this system."
-LangString DESC_SecWxConsole ${LANG_ENGLISH} "Install wxWidgets graphical console program on this system."
-LangString DESC_SecDocPdf ${LANG_ENGLISH} "Install documentation in Acrobat format on this system."
-LangString DESC_SecDocHtml ${LANG_ENGLISH} "Install documentation in HTML format on this system."
-
-LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"
-LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."
-
-LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"
-LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."
-
-LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"
-LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."
-
-LangString TITLE_WriteTemplates ${LANG_ENGLISH} "Create Templates"
-LangString SUBTITLE_WriteTemplates ${LANG_ENGLISH} "Create resource templates for inclusion in the Director's configuration file."
-
-!InsertMacro MUI_FUNCTION_DESCRIPTION_BEGIN
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecFileDaemon} $(DESC_SecFileDaemon)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecStorageDaemon} $(DESC_SecStorageDaemon)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecDirectorDaemon} $(DESC_SecDirectorDaemon)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecBatConsole} $(DESC_SecBatConsole)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecWxConsole} $(DESC_SecWxConsole)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecDocPdf} $(DESC_SecDocPdf)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecDocHtml} $(DESC_SecDocHtml)
-!InsertMacro MUI_FUNCTION_DESCRIPTION_END
-
-; Uninstall section
-
-UninstallText "This will uninstall Bacula. Hit next to continue."
-
-Section "Uninstall"
-  ; Shutdown any baculum that could be running
-  nsExec::ExecToLog '"$INSTDIR\bin\bacula-fd.exe" /kill'
-  nsExec::ExecToLog '"$INSTDIR\bin\bacula-sd.exe" /kill'
-  nsExec::ExecToLog '"$INSTDIR\bin\bacula-dir.exe" /kill'
-  Sleep 3000
-
-  ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"
-  ${If} $R0 = 1
-    ; Remove bacula service
-    nsExec::ExecToLog '"$INSTDIR\bin\bacula-fd.exe" /remove'
-    nsExec::ExecToLog '"$INSTDIR\bin\exchange-fd.dll" /remove'
-  ${EndIf}
-  
-  ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-sd"
-  ${If} $R0 = 1
-    ; Remove bacula service
-    nsExec::ExecToLog '"$INSTDIR\bin\bacula-sd.exe" /remove'
-  ${EndIf}
-  
-  ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-dir"
-  ${If} $R0 = 1
-    ; Remove bacula service
-    nsExec::ExecToLog '"$INSTDIR\bin\bacula-dir.exe" /remove'
-  ${EndIf}
-  
-  ; remove registry keys
-  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
-  DeleteRegKey HKLM "Software\Bacula"
-
-  ; remove start menu items
-  SetShellVarContext all
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
-  RMDir "$SMPROGRAMS\Bacula"
-
-  ; remove files and uninstaller (preserving config for now)
-  Delete /REBOOTOK "$INSTDIR\bin\*"
-  Delete /REBOOTOK "$INSTDIR\doc\*"
-  Delete /REBOOTOK "$INSTDIR\*"
-
-  ; Check for existing installation
-  MessageBox MB_YESNO|MB_ICONQUESTION \
-  "Would you like to delete the current configuration files and the working state file?" IDNO NoDel
-    Delete /REBOOTOK "$APPDATA\Bacula\*"
-    Delete /REBOOTOK "$APPDATA\Bacula\Work\*"
-    Delete /REBOOTOK "$APPDATA\Bacula\Spool\*"
-    Delete /REBOOTOK "$PLUGINSDIR\bacula-*.conf"
-    Delete /REBOOTOK "$PLUGINSDIR\*console.conf"
-    Delete /REBOOTOK "$PLUGINSDIR\*conf.in"
-    Delete /REBOOTOK "$PLUGINSDIR\openssl.exe"
-    Delete /REBOOTOK "$PLUGINSDIR\libeay32.dll"
-    Delete /REBOOTOK "$PLUGINSDIR\ssleay32.dll"
-    Delete /REBOOTOK "$PLUGINSDIR\sed.exe"    
-    Delete /REBOOTOK "$PLUGINSDIR\pw.txt"     
-    Delete /REBOOTOK "$PLUGINSDIR\*.sed" 
-    Delete /REBOOTOK "$PLUGINSDIR\*.cmd"    
-    Delete /REBOOTOK "$PLUGINSDIR\*.sql"    
-    RMDir "$APPDATA\Bacula\Work"
-    RMDir "$APPDATA\Bacula\Spool"
-    RMDir "$APPDATA\Bacula"
-NoDel:
-
-  ; remove directories used
-  RMDir "$INSTDIR\bin"
-  RMDir "$INSTDIR\doc"
-  RMDir "$INSTDIR"
-SectionEnd
-
-;
-; $0 - Service Name (ie Bacula-FD)
-; $1 - Service Description (ie Bacula File Daemon)
-; $2 - Install as Service
-; $3 - Start Service now
-;
-Function InstallDaemon
-  Call InstallCommonFiles
-
-  WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2
-  
-  ${If} $2 = 1
-    nsExec::ExecToLog '"$INSTDIR\bin\$0.exe" /install -c "$APPDATA\Bacula\$0.conf"'
-
-    ${If} $OsIsNT <> 1
-      File "Start.bat"
-      File "Stop.bat"
-    ${EndIf}
-
-    ; Start the service?
-
-    ${If} $3 = 1  
-      ${If} $OsIsNT = 1
-        nsExec::ExecToLog 'net start $0'
-      ${Else}
-        Exec '"$INSTDIR\bin\$0.exe" -c "$APPDATA\Bacula\$0.conf"'
-      ${EndIf}
-    ${EndIf}
-  ${Else}
-    CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\bin\$0.exe" '-c "$APPDATA\Bacula\$0.conf"' "$INSTDIR\bin\$0.exe" 0
-  ${EndIf}
-FunctionEnd
-
-Function GetComputerName
-  Push $R0
-  Push $R1
-  Push $R2
-
-  System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"
-
-  ${StrCase} $R0 $R0 "L"
-
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-!define ComputerNameDnsFullyQualified   3
-
-Function GetHostName
-  Push $R0
-  Push $R1
-  Push $R2
-
-  ${If} $OsIsNT = 1
-    System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
-    ${If} $R2 = 0
-      Pop $R2
-      DetailPrint "GetComputerNameExA failed - LastError = $R2"
-      Call GetComputerName
-      Pop $R0
-    ${Else}
-      Pop $R2
-    ${EndIf}
-  ${Else}
-    Call GetComputerName
-    Pop $R0
-  ${EndIf}
-
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-!define NameUserPrincipal 8
-
-Function GetUserName
-  Push $R0
-  Push $R1
-  Push $R2
-
-  ${If} $OsIsNT = 1
-    System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
-    ${If} $R2 = 0
-      Pop $R2
-      DetailPrint "GetUserNameExA failed - LastError = $R2"
-      Pop $R0
-      StrCpy $R0 ""
-    ${Else}
-      Pop $R2
-    ${EndIf}
-  ${Else}
-      StrCpy $R0 ""
-  ${EndIf}
-
-  ${If} $R0 == ""
-    System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
-    ${If} $R2 = 0
-      Pop $R2
-      DetailPrint "GetUserNameA failed - LastError = $R2"
-      StrCpy $R0 ""
-    ${Else}
-      Pop $R2
-    ${EndIf}
-  ${EndIf}
-
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-Function ConfigEditAndCopy
-  Push $R1
-
-  ${If} ${FileExists} "$0\$1"
-    StrCpy $R1 ".new"
-  ${Else}
-    StrCpy $R1 ""
-  ${EndIf}
-
-  nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'
-  CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"
-
-  Pop $R1
-FunctionEnd
-
-Function FindDatabaseApps
-  Push $R1
-
-  ReadRegStr $0 HKLM "Software\MySQL AB\MySQL Server 5.0" "Location"
-
-  ${If} $0 != ""
-    Call RemoveTrailingSlash
-    StrCpy $MySQLPath $0
-    ReadRegStr $0 HKLM "Software\MySQL AB\MySQL Server 5.0" "Version"
-    StrCpy $MySQLVersion $0
-  ${EndIf}
-
-  EnumRegKey $R1 HKLM "Software\PostgreSQL\Installations" 0
-  ${If} $R1 != ""
-    ReadRegStr $0 HKLM "Software\PostgreSQL\Installations\$R1" "Base Directory"
-    Call RemoveTrailingSlash
-    StrCpy $PostgreSQLPath $0
-    ReadRegStr $0 HKLM "Software\PostgreSQL\Installations\$R1" "Version"
-    StrCpy $PostgreSQLVersion $0
-  ${EndIf}
-
-  Pop $R1
-FunctionEnd
-
-Function RemoveTrailingSlash
-  Push $R1
-  StrCpy $R1 $0 "" -1
-  ${If} $R1 == "\"
-    StrCpy $0 $0 -1
-  ${EndIf}
-  Pop $R1
-FunctionEnd
-
-Function IsDirectorSelected
-  Push $R0
-  SectionGetFlags ${SecDirectorDaemon} $R0
-  IntOp $R0 $R0 & ${SF_SELECTED}
-  Exch $R0
-FunctionEnd
-
-Function GetSelectedComponents
-  Push $R0
-  StrCpy $R0 0
-  ${If} ${SectionIsSelected} ${SecFileDaemon}
-    IntOp $R0 $R0 | ${ComponentFile}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecStorageDaemon}
-    IntOp $R0 $R0 | ${ComponentStorage}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecDirectorDaemon}
-    IntOp $R0 $R0 | ${ComponentDirector}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecConsole}
-    IntOp $R0 $R0 | ${ComponentTextConsole}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecBatConsole}
-    IntOp $R0 $R0 | ${ComponentBatConsole}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecWxConsole}
-    IntOp $R0 $R0 | ${ComponentGUIConsole}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecDocPdf}
-    IntOp $R0 $R0 | ${ComponentPDFDocs}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecDocHtml}
-    IntOp $R0 $R0 | ${ComponentHTMLDocs}
-  ${EndIf}
-  Exch $R0
-FunctionEnd
-
-Function PageComponentsShow
-  ${If} $OsIsNT <> 1
-    Call DisableServerSections
-  ${EndIf}
-
-  Call SelectPreviousComponents
-  Call UpdateComponentUI
-FunctionEnd
-
-Function PageDirectoryPre
-  ${If} $AutomaticInstall = 1
-  ${OrIf} $InstallType = ${UpgradeInstall}
-    Abort
-  ${EndIf}
-FunctionEnd
-
-Function LeaveInstallPage
-  Push "$INSTDIR\install.log"
-  Call DumpLog
-FunctionEnd
-
-Function EnterWriteTemplates
-  Push $R0
-  Push $R1
-
-  Call GetSelectedComponents
-  Pop $R0
-
-  IntOp $R0 $R0 & ${ComponentDirector}
-  IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}
-
-  ${If} $R0 <> 0
-  ${OrIf} $R1 = 0
-    Pop $R1
-    Pop $R0
-    Abort
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 = 0
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 0
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags DISABLED
-    DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
-  ${Else}
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 1
-    DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State "C:\$ConfigClientName.conf"
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 = 0
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" State 0
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" Flags DISABLED
-    DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" State
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
-  ${Else}
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" State 1
-    DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 4" Flags
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" State "C:\$ConfigStorageName.conf"
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 5" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST
-  ${EndIf}
-
-  !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"
-  !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"
-
-  !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State
-  ${If} $R0 <> 0
-    File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"
-
-    nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\client.conf.in"'
-    !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 3" State
-    ${If} $R0 != ""
-      CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"
-    ${EndIf}
-  ${EndIf}
-
-  !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 4" State
-  ${If} $R0 <> 0
-    File "/oname=$PLUGINSDIR\storage.conf.in" "storage.conf.in"
-
-    nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\storage.conf.in"'
-    !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 5" State
-    ${If} $R0 != ""
-      CopyFiles "$PLUGINSDIR\storage.conf.in" "$R0"
-    ${EndIf}
-  ${EndIf}
-
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-Function SelectPreviousComponents
-  ${If} $InstallType <> ${NewInstall}
-    IntOp $R1 $PreviousComponents & ${ComponentFile}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecFileDaemon}
-      !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecFileDaemon}
-      !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentStorage}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecStorageDaemon}
-      !InsertMacro SetSectionFlag ${SecStorageDaemon} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecStorageDaemon}
-      !InsertMacro ClearSectionFlag ${SecStorageDaemon} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentDirector}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecDirectorDaemon}
-      !InsertMacro SetSectionFlag ${SecDirectorDaemon} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecDirectorDaemon}
-      !InsertMacro ClearSectionFlag ${SecDirectorDaemon} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentTextConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecConsole}
-      !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecConsole}
-      !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentBatConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecBatConsole}
-      !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecBatConsole}
-      !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentGUIConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecWxConsole}
-      !InsertMacro SetSectionFlag ${SecWxConsole} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecWxConsole}
-      !InsertMacro ClearSectionFlag ${SecWxConsole} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentPDFDocs}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecDocPdf}
-      !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecDocPdf}
-      !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentHTMLDocs}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecDocHtml}
-      !InsertMacro SetSectionFlag ${SecDocHtml} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecDocHtml}
-      !InsertMacro ClearSectionFlag ${SecDocHtml} ${SF_RO}
-    ${EndIf}
-  ${EndIf}
-FunctionEnd
-
-Function DisableServerSections
-  !InsertMacro UnselectSection ${SecGroupServer}
-  !InsertMacro SetSectionFlag  ${SecGroupServer} ${SF_RO}
-  !InsertMacro UnselectSection ${SecStorageDaemon}
-  !InsertMacro SetSectionFlag  ${SecStorageDaemon} ${SF_RO}
-  !InsertMacro UnselectSection ${SecDirectorDaemon}
-  !InsertMacro SetSectionFlag  ${SecDirectorDaemon} ${SF_RO}
-FunctionEnd
-
-Function UpdateComponentUI
-  Push $R0
-  Push $R1
-
-  Call GetSelectedComponents
-  Pop $R0
-
-  IntOp $R1 $R0 ^ $PreviousComponents
-  IntOp $NewComponents $R0 & $R1
-
-  ${If} $InstallType <> ${NewInstall}
-    IntOp $R1 $NewComponents & ${ComponentFile}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentStorage}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecStorageDaemon} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecStorageDaemon} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentDirector}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecDirectorDaemon} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecDirectorDaemon} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentTextConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentBatConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentGUIConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecWxConsole} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecWxConsole} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentPDFDocs}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentHTMLDocs}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecDocHtml} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecDocHtml} ${SF_BOLD}
-    ${EndIf}
-  ${EndIf}
-
-  GetDlgItem $R0 $HWNDPARENT 1
-
-  IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}
-  ${If} $R1 = 0
-    SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"
-  ${Else}
-    SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"
-  ${EndIf}
-
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-!include "InstallType.nsh"
-!include "ConfigPage1.nsh"
-!include "ConfigPage2.nsh"
-!include "DumpLog.nsh"
diff --git a/src/win32/lib/Makefile b/src/win32/lib/Makefile
deleted file mode 100644
index fb0236d..0000000
--- a/src/win32/lib/Makefile
+++ /dev/null
@@ -1,169 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-include ../Makefile.inc
-
-INCLUDES = \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_ZLIB) \
-	$(INCLUDE_OPENSSL)
-
-DEFINES = \
-	$(HAVES)
-
-vpath %.c $(BUILDDIR)/compat $(MAINDIR)/src/findlib $(MAINDIR)/src/lib
-vpath %.cpp $(BUILDDIR)/compat $(MAINDIR)/src/findlib $(MAINDIR)/src/lib
-
-######################################################################
-
-# Files files in src/lib
-
-COMPAT_OBJS = \
-	$(OBJDIR)/compat.o \
-	$(OBJDIR)/print.o \
-	$(OBJDIR)/winapi.o
-
-#	$(OBJDIR)/getopt.o \
-
-FIND_OBJS = \
-	$(OBJDIR)/attribs.o \
-	$(OBJDIR)/bfile.o \
-	$(OBJDIR)/create_file.o \
-	$(OBJDIR)/drivetype.o \
-	$(OBJDIR)/enable_priv.o \
-	$(OBJDIR)/find.o \
-	$(OBJDIR)/find_one.o \
-	$(OBJDIR)/fstype.o \
-	$(OBJDIR)/mkpath.o \
-	$(OBJDIR)/match.o
-
-LIB_OBJS = \
-	$(OBJDIR)/address_conf.o \
-	$(OBJDIR)/alist.o \
-	$(OBJDIR)/attr.o \
-	$(OBJDIR)/base64.o \
-	$(OBJDIR)/berrno.o \
-	$(OBJDIR)/bget_msg.o \
-	$(OBJDIR)/bnet.o \
-	$(OBJDIR)/bnet_server.o \
-	$(OBJDIR)/bpipe.o \
-	$(OBJDIR)/breg.o \
-	$(OBJDIR)/bregex.o \
-	$(OBJDIR)/bsock.o \
-	$(OBJDIR)/bsnprintf.o \
-	$(OBJDIR)/bsys.o \
-	$(OBJDIR)/btime.o \
-	$(OBJDIR)/btimers.o \
-	$(OBJDIR)/cram-md5.o \
-	$(OBJDIR)/crc32.o \
-	$(OBJDIR)/crypto.o \
-	$(OBJDIR)/daemon.o \
-	$(OBJDIR)/dlist.o \
-	$(OBJDIR)/edit.o \
-	$(OBJDIR)/fnmatch.o \
-	$(OBJDIR)/guid_to_name.o \
-	$(OBJDIR)/hmac.o \
-	$(OBJDIR)/htable.o \
-	$(OBJDIR)/jcr.o \
-	$(OBJDIR)/lex.o \
-	$(OBJDIR)/md5.o \
-	$(OBJDIR)/mem_pool.o \
-	$(OBJDIR)/message.o \
-	$(OBJDIR)/mntent_cache.o \
-	$(OBJDIR)/openssl.o \
-	$(OBJDIR)/plugins.o \
-	$(OBJDIR)/priv.o \
-	$(OBJDIR)/pythonlib.o \
-	$(OBJDIR)/queue.o \
-	$(OBJDIR)/rblist.o \
-	$(OBJDIR)/runscript.o \
-	$(OBJDIR)/rwlock.o \
-	$(OBJDIR)/scan.o \
-	$(OBJDIR)/serial.o \
-	$(OBJDIR)/sha1.o \
-	$(OBJDIR)/signal.o \
-	$(OBJDIR)/smartall.o \
-	$(OBJDIR)/tls.o \
-	$(OBJDIR)/tree.o \
-	$(OBJDIR)/util.o \
-	$(OBJDIR)/var.o \
-	$(OBJDIR)/watchdog.o \
-	$(OBJDIR)/workq.o \
-	$(OBJDIR)/binflate.o \
-	$(OBJDIR)/lockmgr.o
-
-DLL_OBJS = \
-	$(COMPAT_OBJS) $(FIND_OBJS) $(LIB_OBJS)
-
-STATIC_OBJS = \
-	$(OBJDIR)/parse_conf.o \
-	$(OBJDIR)/res.o
-
-ALL_OBJS = \
-	$(DLL_OBJS) $(STATIC_OBJS)
-
-LIBS_DLL = \
-	$(LIBS_SSL) \
-	$(LIBS_CRYPTO) \
-	$(LIBS_PTHREADS) \
-	$(LIBS_ZLIB) \
-	$(LIBS_NETWORK) \
-	-lole32 \
-	-loleaut32 \
-	-luuid
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all: $(BINDIR)/bacula.dll $(LIBDIR)/libbacula.a
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(call clean_obj,$(ALL_OBJS))
-	$(call clean_exe,$(BINDIR)/bacula.dll)
-	$(ECHO_CMD)rm -f $(OBJDIR)/bacula.a $(LIBDIR)/libbacula.a
-	$(ECHO_CMD)rm -rf $(OBJDIRS)
-
-#
-# Rules for generating from ../lib
-#
-
-$(LIBDIR)/libbacula.a: DLL_DEFINE=USING_DLL
-
-$(LIBDIR)/libbacula.a: $(BINDIR)/bacula.dll $(STATIC_OBJS)
-	@echo "Updating archive $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)cp $(OBJDIR)/bacula.a $@
-	$(ECHO_CMD)$(AR) rsv $@ $(filter %.o,$^)
-
-$(BINDIR)/bacula.dll: DLL_DEFINE=BUILDING_DLL
-
-$(BINDIR)/bacula.dll: $(DLL_OBJS) bacula$(WIN_VERSION).def
-	@echo "Linking $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) $(LDFLAGS) -mdll -mwindows -Wl,--out-implib,$(OBJDIR)/bacula.a $^ $(LIBS_DLL) -o $@
-
-#bacula$(WIN_VERSION).def: $(DLL_OBJS)
-#	 ./make_def $(DLL_OBJS) >bacula$(WIN_VERSION).def.new && \
-#	 mv bacula$(WIN_VERSION).def.new bacula$(WIN_VERSION).def
-
-
-include ../Makefile.rules
-
-$(OBJDIR)/%.o: %.c
-	@echo "Compiling $<"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) -D$(DLL_DEFINE) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/%.o: %.cpp
-	@echo "Compiling $<"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(CXX) -D$(DLL_DEFINE) $(CFLAGS) -c $< -o $@
diff --git a/src/win32/lib/bacula32.def b/src/win32/lib/bacula32.def
deleted file mode 100644
index 07ef9fc..0000000
--- a/src/win32/lib/bacula32.def
+++ /dev/null
@@ -1,795 +0,0 @@
-LIBRARY bacula.dll
-EXPORTS
- 
-; compat.o
-_Z10open_bpipePciPKc
-_Z11close_bpipeP5BPIPE
-_Z11close_wpipeP5BPIPE
-_Z11strncasecmpPKcS0_i
-_Z11win32_cgetsPci
-_Z11win32_chdirPKc
-_Z11win32_chmodPKct
-_Z11win32_fputsPKcP6_iobuf
-_Z11win32_mkdirPKc
-_Z12UTF8_2_wcharPPcPKc
-_Z12gettimeofdayP7timevalP8timezone
-_Z12init_signalsPFviE
-_Z12wchar_2_UTF8PcPKwi
-_Z12wchar_2_UTF8PPcPKw
-_Z12win32_getcwdPci
-_Z12win32_unlinkPKc
-_Z15init_stack_dumpv
-_Z15win32_ftruncateix
-_Z16wchar_win32_pathPKcPw
-_Z17SetVSSPathConvertPFiPKcPciEPFiPKwPwiE
-_Z18CreateChildProcessPKcPvS1_S1_
-_Z18GetApplicationNamePKcPPcPS0_
-_Z18cvt_ftime_to_utimeRK9_FILETIME
-_Z18cvt_utime_to_ftimeRKlR9_FILETIME
-_Z18unix_name_to_win32PPcS_
-_Z21Win32ConvCleanupCachev
-_Z28make_win32_path_UTF8_2_wcharPPcPKcPi
-_Z4forkv
-_Z4killii
-_Z4pipePi
-_Z4statPKcP4stat
-_Z5chownPKcjj
-_Z5fcntlii
-_Z5fcntliil
-_Z5fstatiP4stat
-_Z5lstatPKcP4stat
-_Z5sleepi
-_Z6execvpPKcPPc
-_Z6lchownPKcjj
-_Z6randomv
-_Z7geteuidv
-_Z7opendirPKc
-_Z7openlogPKcii
-_Z7srandomj
-_Z7waitpidiPii
-_Z8WSA_Initv
-_Z8closedirPv
-_Z8closelogv
-_Z8getArgv0PKc
-_Z8getgrgidj
-_Z8getpwuidj
-_Z8pathconfPKci
-_Z8readlinkPKcPci
-_Z9ErrorExitPKc
-_Z9inet_atonPKcP7in_addr
-_Z9nanosleepPK8timespecPS_
-_Z9readdir_rPvP6direntPS1_
-_ZN6winverC1Ev
-_ZN6winverC2Ev
-syslog
-umask
-utime
- 
-; plugins.o
-_Z10new_pluginv
-_Z12load_pluginsPvS_PKcS1_PFbP6PluginE
-_Z14unload_pluginsv
-_Z19dbg_plugin_add_hookPFvP6PluginP6_iobufE
-
-; print.o
-_Z10__snprintfPcjPKcz
-_Z10__vsprintfPcPKcS_
-_Z11__vsnprintfPcjPKcS_
-_Z4doprPcjPKcS_PFvS_PjjiE
-_Z9__sprintfPcPKcz
- 
-; winapi.o
-_Z17InitWinAPIWrapperv
- 
-; attribs.o
-_Z11decode_statPcP4statiPi
-_Z11encode_statPcP4statiii
-_Z13decode_LinkFIPcP4stati
-_Z14set_attributesP3JCRP4ATTRP5BFILE
-_Z16encode_attribsExP3JCRPcP6FF_PKT
-_Z18select_data_streamP6FF_PKT
-_Z4plugIjEvRT_y
-_Z4plugIlEvRT_y
-_Z4plugImEvRT_y
-_Z4plugIsEvRT_y
-_Z4plugItEvRT_y
-_Z4plugIyEvRT_y
-_Z9win_errorP3JCRPKcm
-_Z9win_errorP3JCRPKcPc
- 
-; bfile.o
-_Z11bget_handleP5BFILE
-_Z11int32_LE2BEPii
-_Z11int64_LE2BEPxx
-_Z14have_win32_apiv
-_Z15is_win32_streami
-_Z15stream_to_asciii
-_Z16set_win32_backupP5BFILE
-_Z18is_portable_backupP5BFILE
-_Z19set_portable_backupP5BFILE
-_Z14set_cmd_pluginP5BFILEP3JCR
-_Z26processWin32BackupAPIBlockP5BFILEPvl
-_Z27is_restore_stream_supportedi
-_Z5binitP5BFILE
-_Z5bopenP5BFILEPKcit
-_Z5breadP5BFILEPvj
-_Z6bcloseP5BFILE
-_Z6blseekP5BFILExi
-_Z6bwriteP5BFILEPvj
-_Z8is_bopenP5BFILE
- 
-; create_file.o
-_Z11create_fileP3JCRP4ATTRP5BFILEi
- 
-; drivetype.o
-_Z9drivetypePKcPci
- 
-; enable_priv.o
-_Z24enable_backup_privilegesP3JCRi
- 
-; find.o
-_Z10find_filesP3JCRP6FF_PKTPFiS0_S2_bES4_
-_Z13is_in_filesetP6FF_PKT
-_Z15init_find_filesv
-_Z15term_find_filesP6FF_PKT
-_Z16set_find_optionsP6FF_PKTil
-_Z22get_win32_drivelettersP6FF_PKTPc
-_Z25set_find_changed_functionP6FF_PKTPFbP3JCRS0_E
- 
-; find_one.o
-_Z13check_changesP3JCRP6FF_PKT
-_Z13find_one_fileP3JCRP6FF_PKTPFiS0_S2_bEPcjb
-_Z13term_find_oneP6FF_PKT
-_Z16has_file_changedP3JCRP6FF_PKT
-_Z22ff_pkt_set_link_digestP6FF_PKTiPKcj
- 
-; fstype.o
-_Z6fstypePKcPci
- 
-; match.o
-_Z11match_filesP3JCRP6FF_PKTPFiS0_S2_bE
-_Z16file_is_excludedP6FF_PKTPKc
-_Z16file_is_includedP6FF_PKTPKc
-_Z22get_next_included_fileP6FF_PKTP15s_included_file
-_Z25add_fname_to_exclude_listP6FF_PKTPKc
-_Z25add_fname_to_include_listP6FF_PKTiPKc
-_Z26term_include_exclude_filesP6FF_PKT
- 
-; address_conf.o
-_Z14free_addressesP5dlist
-_Z15store_addressesP13s_lex_contextP8RES_ITEMii
-_Z17get_first_addressP5dlistPci
-_Z17sockaddr_get_portPK8sockaddr
-_Z17sockaddr_to_asciiPK8sockaddrPci
-_Z19build_addresses_strP5dlistPci
-_Z20store_addresses_portP13s_lex_contextP8RES_ITEMii
-_Z22init_default_addressesPP5dlisti
-_Z23store_addresses_addressP13s_lex_contextP8RES_ITEMii
-_Z24get_first_port_net_orderP5dlist
-_Z25get_first_port_host_orderP5dlist
-_Z27sockaddr_get_port_net_orderPK8sockaddr
-_ZN6IPADDR11get_addressEPci
-_ZN6IPADDR12get_sockaddrEv
-_ZN6IPADDR12set_addr_anyEv
-_ZN6IPADDR12set_port_netEt
-_ZN6IPADDR16get_sockaddr_lenEv
-_ZN6IPADDR17build_address_strEPci
-_ZN6IPADDR8set_typeENS_6i_typeE
-_ZN6IPADDR9copy_addrEPS_
-_ZN6IPADDR9set_addr4EP7in_addr
-_ZN6IPADDRC1ERKS_
-_ZN6IPADDRC1Ei
-_ZN6IPADDRC2ERKS_
-_ZN6IPADDRC2Ei
-_ZNK6IPADDR10get_familyEv
-_ZNK6IPADDR18get_port_net_orderEv
-_ZNK6IPADDR8get_typeEv
- 
-; alist.o
-_ZN5alist3getEi
-_ZN5alist4lastEv
-_ZN5alist4nextEv
-_ZN5alist4prevEv
-_ZN5alist5firstEv
-_ZN5alist6appendEPv
-_ZN5alist6removeEi
-_ZN5alist7destroyEv
-_ZN5alist7prependEPv
-_ZN5alist9grow_listEv
- 
-; attr.o
-_Z15print_ls_outputP3JCRP4ATTR
-_Z24build_attr_output_fnamesP3JCRP4ATTR
-_Z24unpack_attributes_recordP3JCRiPciP4ATTR
-_Z8new_attrP3JCR
-_Z9free_attrP4ATTR
- 
-; base64.o
-_Z11base64_initv
-_Z11from_base64PxPc
-_Z13bin_to_base64PciS_ii
-_Z9to_base64xPc
- 
-; berrno.o
-_ZN6berrno20format_win32_messageEv
-_ZN6berrno9bstrerrorEv
- 
-; bget_msg.o
-_Z8bget_msgP5BSOCK
- 
-; bnet.o
-_Z10bnet_closeP5BSOCK
-_Z10bnet_fsendP5BSOCKPKcz
-_Z10init_bsockP3JCRiPKcS2_iP8sockaddr
-_Z10term_bsockP5BSOCK
-_Z11read_nbytesP5BSOCKPci
-_Z12bnet_connectP3JCRixxPKcPcS3_ii
-_Z12is_bnet_stopP5BSOCK
-_Z12write_nbytesP5BSOCKPci
-_Z13bnet_get_peerP5BSOCKPci
-_Z13bnet_strerrorP5BSOCK
-_Z13is_bnet_errorP5BSOCK
-_Z14bnet_wait_dataP5BSOCKi
-_Z15bnet_tls_clientP11TLS_ContextP5BSOCKP5alist
-_Z15bnet_tls_serverP11TLS_ContextP5BSOCKP5alist
-_Z17bnet_host2ipaddrsPKciPS0_
-_Z17bnet_set_blockingP5BSOCK
-_Z17bnet_sig_to_asciiP5BSOCK
-_Z19bnet_wait_data_intrP5BSOCKi
-_Z20bnet_set_buffer_sizeP5BSOCKji
-_Z20bnet_set_nonblockingP5BSOCK
-_Z21bnet_restore_blockingP5BSOCKi
-_Z28bnet_suppress_error_messagesP5BSOCKb
-_Z8bnet_sigP5BSOCKi
-_Z9bnet_recvP5BSOCK
-_Z9bnet_sendP5BSOCK
-_Z9dup_bsockP5BSOCK
- 
-; bnet_server.o
-_Z18bnet_thread_serverP5dlistiP9workq_tagPFPvS3_E
-_Z23bnet_stop_thread_serverP10pthread_t_
- 
-; bpipe.o
-_Z11run_programPciRS_
-_Z23run_program_full_outputPciRS_
- 
-; breg.o
-_Z11new_bregexpPKc
-_Z12free_bregexpP7BREGEXP
-_Z12get_bregexpsPKc
-_Z13free_bregexpsP5alist
-_Z14apply_bregexpsPKcP5alistPPc
-_Z19bregexp_build_wherePciS_S_S_
-_Z21bregexp_escape_stringPcPKcc
-_Z28bregexp_get_build_where_sizePcS_S_
-_ZN7BREGEXP10edit_substEPKcP12b_regmatch_t
-_ZN7BREGEXP12return_fnameEPKci
-_ZN7BREGEXP14extract_regexpEPKc
-_ZN7BREGEXP16compute_dest_lenEPKcP12b_regmatch_t
-_ZN7BREGEXP5debugEv
-_ZN7BREGEXP7replaceEPKc
- 
-; bregex.o
-_Z24re_registers_to_regmatchP12re_registersP12b_regmatch_tj
-b_re_compile_fastmap
-b_re_compile_initialize
-b_re_compile_pattern
-b_re_match
-b_re_search
-b_re_set_syntax
-b_regcomp
-b_regerror
-b_regexec
-b_regfree
- 
-; bsnprintf.o
-_Z10bvsnprintfPciPKcS_
-_Z9bsnprintfPciPKcz
- 
-; bsock.o
-_ZN5BSOCK11set_lockingEv
-_Z9new_bsockv
-_ZN5BSOCK10free_bsockEv
-_ZN5BSOCK12set_blockingEv
-_ZN5BSOCK14wait_data_intrEii
-_ZN5BSOCK15set_buffer_sizeEji
-_ZN5BSOCK15set_nonblockingEv
-_ZN5BSOCK16restore_blockingEi
-_ZN5BSOCK21authenticate_directorEPKcS1_P11TLS_ContextPci
-_ZN5BSOCK4initEv
-_ZN5BSOCK4recvEv
-_ZN5BSOCK4sendEv
-_ZN5BSOCK5_openEP3JCRPKcPcS4_ixPi
-_ZN5BSOCK5closeEv
-_ZN5BSOCK5fsendEPKcz
-_ZN5BSOCK6signalEi
-_ZN5BSOCK7connectEP3JCRixxPKcPcS4_ii
-_ZN5BSOCK7despoolEPFvlEl
-_ZN5BSOCK7destroyEv
-_ZN5BSOCK8fin_initEP3JCRiPKcS3_iP8sockaddr
-_ZN5BSOCK8get_peerEPci
-_ZN5BSOCK9bstrerrorEv
-_ZN5BSOCK9wait_dataEii
-_ZN5BSOCK18set_source_addressEP5dlist
- 
-; bsys.o
-_Z10b_strerroriPcj
-_Z11bmicrosleepii
-_Z15create_pid_filePcPKci
-_Z15delete_pid_filePcPKci
-_Z15escape_filenamePKc
-_Z15read_state_filePcPKci
-_Z16write_state_filePcPKci
-_Z20make_unique_filenamePPciS_
-_Z5bfreePv
-_Z6bfgetsPciP6_iobuf
-_Z7bcallocjj
-_Z7bstrcmpPKcS0_
-_Z7cstrlenPKc
-_Z8b_mallocPKcij
-_Z8breallocPvj
-_Z8bstrncatPcPKci
-_Z8bstrncatPcR8POOL_MEMi
-_Z8bstrncpyPcPKci
-_Z8bstrncpyPcR8POOL_MEMi
-
-; binflate.o
-_Z8ZdeflatePciS_Ri
-_Z8ZinflatePciS_Ri
- 
-; btime.o
-_Z10bstrftimesPcix
-_Z11date_decodedPjPhS0_
-_Z11date_encodejhh
-_Z11time_decodedPhS_S_Pf
-_Z11time_encodehhhf
-_Z12bstrftime_ncPcix
-_Z12bstrftime_nyPcix
-_Z12str_to_utimePc
-_Z13btime_to_unixx
-_Z14btime_to_utimex
-_Z16date_time_decodeP9date_timePjPhS2_S2_S2_S2_Pf
-_Z16date_time_encodeP9date_timejhhhhhf
-_Z16get_current_timeP9date_time
-_Z17date_time_compareP9date_timeS0_
-_Z17get_current_btimev
-_Z6tm_womii
-_Z6tm_woyl
-_Z9bstrftimePcix
-_Z9bstrutimePcix
-_Z9tm_decodeP9date_timeP2tm
-_Z9tm_encodeP9date_timeP2tm
- 
-; btimers.o
-_Z16stop_bsock_timerP8btimer_t
-_Z16stop_child_timerP8btimer_t
-_Z17start_bsock_timerP5BSOCKj
-_Z17start_child_timerP3JCRij
-_Z17stop_thread_timerP8btimer_t
-_Z18start_thread_timerP3JCRP10pthread_t_j
-
-; cram-md5.o
-_Z16cram_md5_respondP5BSOCKPKcPiS3_
-_Z18cram_md5_challengeP5BSOCKPKcii
- 
-; crc32.o
-_Z6bcrc32Phi
- 
-; crypto.o
-_Z11init_cryptov
-_Z13CryptoData_itv
-_Z13SignerInfo_itv
-_Z14CryptoData_newv
-_Z14SignerInfo_newv
-_Z14cleanup_cryptov
-_Z14d2i_CryptoDataPP10CryptoDataPPKhl
-_Z14d2i_SignerInfoPP10SignerInfoPPKhl
-_Z14i2d_CryptoDataP10CryptoDataPPh
-_Z14i2d_SignerInfoP10SignerInfoPPh
-_Z15CryptoData_freeP10CryptoData
-_Z15SignerInfo_freeP10SignerInfo
-_Z15crypto_sign_newP3JCR
-_Z15crypto_strerror14crypto_error_t
-_Z16RecipientInfo_itv
-_Z16SignatureData_itv
-_Z16crypto_sign_freeP9Signature
-_Z17RecipientInfo_newv
-_Z17SignatureData_newv
-_Z17crypto_cipher_newP14Crypto_SessionbPj
-_Z17crypto_digest_newP3JCR15crypto_digest_t
-_Z17d2i_RecipientInfoPP13RecipientInfoPPKhl
-_Z17d2i_SignatureDataPP13SignatureDataPPKhl
-_Z17i2d_RecipientInfoP13RecipientInfoPPh
-_Z17i2d_SignatureDataP13SignatureDataPPh
-_Z18RecipientInfo_freeP13RecipientInfo
-_Z18SignatureData_freeP13SignatureData
-_Z18crypto_cipher_freeP14Cipher_Context
-_Z18crypto_digest_freeP6Digest
-_Z18crypto_digest_nameP6Digest
-_Z18crypto_keypair_dupP12X509_Keypair
-_Z18crypto_keypair_newv
-_Z18crypto_session_new15crypto_cipher_tP5alist
-_Z18crypto_sign_decodeP3JCRPKhj
-_Z18crypto_sign_encodeP9SignaturePhPj
-_Z18crypto_sign_verifyP9SignatureP12X509_KeypairP6Digest
-_Z19crypto_keypair_freeP12X509_Keypair
-_Z19crypto_session_freeP14Crypto_Session
-_Z20crypto_cipher_updateP14Cipher_ContextPKhjS2_Pj
-_Z20crypto_digest_updateP6DigestPKhj
-_Z21crypto_session_decodePKhjP5alistPP14Crypto_Session
-_Z21crypto_session_encodeP14Crypto_SessionPhPj
-_Z22crypto_cipher_finalizeP14Cipher_ContextPhPj
-_Z22crypto_digest_finalizeP6DigestPhPj
-_Z22crypto_keypair_has_keyPKc
-_Z22crypto_sign_add_signerP9SignatureP6DigestP12X509_Keypair
-_Z22crypto_sign_get_digestP9SignatureP12X509_KeypairR15crypto_digest_tPP6Digest
-_Z23crypto_keypair_load_keyP12X509_KeypairPKcPFiPciPKvES5_
-_Z24crypto_keypair_load_certP12X509_KeypairPKc
-_Z25crypto_digest_stream_typei
-_Z27crypto_default_pem_callbackPciPKv
- 
-; daemon.o
-_Z12daemon_startv
- 
-; dlist.o
-_Z15new_dlistStringPKc
-_Z15new_dlistStringPKci
-_ZN5dlist12insert_afterEPvS0_
-_ZN5dlist13binary_insertEPvPFiS0_S0_E
-_ZN5dlist13binary_searchEPvPFiS0_S0_E
-_ZN5dlist13insert_beforeEPvS0_
-_ZN5dlist22binary_insert_multipleEPvPFiS0_S0_E
-_ZN5dlist4nextEPv
-_ZN5dlist4prevEPv
-_ZN5dlist6appendEPv
-_ZN5dlist6removeEPv
-_ZN5dlist7destroyEv
-_ZN5dlist7prependEPv
- 
-; edit.o
-_Z16is_a_number_listPKc
-_Z10add_commasPcS_
-_Z10edit_int64xPc
-_Z10edit_utimexPci
-_Z11edit_uint64yPc
-_Z11is_a_numberPKc
-_Z12str_to_int64Pc
-_Z13is_an_integerPKc
-_Z13is_name_validPKcPPc
-_Z13str_to_uint64Pc
-_Z14size_to_uint64PciPy
-_Z15speed_to_uint64PciPy
-_Z17duration_to_utimePcPx
-_Z22edit_int64_with_commasxPc
-_Z23edit_uint64_with_commasyPc
-_Z23edit_uint64_with_suffixyPc
- 
-; fnmatch.o
-fnmatch
-
-; guid_to_name.o
-_ZN9guid_list11uid_to_nameEjPci
-_ZN9guid_list11gid_to_nameEjPci
-_Z14free_guid_listP9guid_list
-_Z13new_guid_listv
-
-; hmac.o
-_Z8hmac_md5PhiS_iS_
- 
-; htable.o
-_ZN6htable11hash_mallocEi
-_ZN6htable10grow_tableEv
-_ZN6htable10hash_indexEPc
-_ZN6htable4initEPvS0_ii
-_ZN6htable4nextEv
-_ZN6htable4sizeEv
-_ZN6htable5firstEv
-_ZN6htable5statsEv
-_ZN6htable6insertEPcPv
-_ZN6htable6lookupEPc
-_ZN6htable7destroyEv
-_ZN6htableC1EPvS0_ii
-_ZN6htableC2EPvS0_ii
-    
- 
-; jcr.o
-_Z10b_free_jcrPKciP3JCR
-_Z11unlock_jobsv
-_Z12jcr_walk_endP3JCR
-_Z12job_end_pushP3JCRPFvS0_PvES1_
-_Z13get_jcr_by_idj
-_Z13jcr_walk_nextP3JCR
-_Z14jcr_walk_startv
-_Z9job_countv
-_Z14set_jcr_in_tsdP3JCR
-_Z16get_jcr_from_tsdv
-_Z18get_jobid_from_tsdv
-_Z18get_jcr_by_sessionjj
-_Z18init_jcr_subsystemv
-_ZN3JCR12setJobStatusEi
-_Z19init_last_jobs_listv
-_Z19lock_last_jobs_listv
-_Z19read_last_jobs_listiy
-_Z19term_last_jobs_listv
-_Z20get_jcr_by_full_namePc
-_Z20write_last_jobs_listiy
-_Z21unlock_last_jobs_listv
-_Z23get_jcr_by_partial_namePc
-_Z24get_next_jobid_from_listPPcPj
-_Z7new_jcriPFvP3JCRE
-_Z9lock_jobsv
-_ZN3JCR14get_ActionNameEb
-_ZN3JCR17get_OperationNameEv
-_ZN3JCR21my_thread_send_signalEi
-_ZN3JCR8JobReadsEv
-_Z16dbg_jcr_add_hookPFvP3JCRP6_iobufE
-timeout_handler
-
-
- 
-; lex.o
-_Z11scan_to_eolP13s_lex_context
-_Z12lex_get_charP13s_lex_context
-_Z13lex_get_tokenP13s_lex_contexti
-_Z13lex_open_fileP13s_lex_contextPKcPFvS2_iS0_S2_zE
-_Z14lex_close_fileP13s_lex_context
-_Z14lex_tok_to_stri
-_Z14lex_unget_charP13s_lex_context
-_Z20scan_to_next_not_eolP13s_lex_context
-_Z29lex_set_default_error_handlerP13s_lex_context
-_Z32lex_set_error_handler_error_typeP13s_lex_contexti
- 
-; md5.o
-_Z12MD5TransformPjS_
-_Z7MD5InitP10MD5Context
-_Z8MD5FinalPhP10MD5Context
-_Z9MD5UpdateP10MD5ContextPhj
- 
-; mem_pool.o
-_Z13sm_get_memoryPKcii
-_Z17close_memory_poolv
-_Z18sm_get_pool_memoryPKcii
-_Z19sm_free_pool_memoryPKciPc
-_Z21sm_sizeof_pool_memoryPKciPc
-_Z22sm_realloc_pool_memoryPKciPci
-_Z23print_memory_pool_statsv
-_Z25sm_check_pool_memory_sizePKciPci
-_Z27garbage_collect_memory_poolv
-_Z9pm_strcatPPcPKc
-_Z9pm_strcatR8POOL_MEMPKc
-_Z9pm_strcatRPcPKc
-_Z9pm_strcatRPcR8POOL_MEM
-_Z9pm_strcpyPPcPKc
-_Z9pm_strcpyR8POOL_MEMPKc
-_Z9pm_strcpyRPcPKc
-_Z9pm_strcpyRPcR8POOL_MEM
-_Z9pm_memcpyPPcPKci
-_Z9pm_memcpyR8POOL_MEMPKci
-_Z9pm_memcpyRPcPKci
-_Z9pm_memcpyRPcR8POOL_MEMi
-_ZN8POOL_MEM10realloc_pmEi
-_ZN8POOL_MEM6strcatEPKc
-_ZN8POOL_MEM6strcpyEPKc
-_ZN8POOL_MEM8max_sizeEv
- 
-; message.o
-_Z10get_hangupv
-_Z10set_hangupi
-_Z10my_name_isiPPcPKc
-_Z12add_msg_destP4MSGSiiPcS1_
-_Z12rem_msg_destP4MSGSiiPc
-_Z13free_msgs_resP4MSGS
-_Z16dequeue_messagesP3JCR
-_Z16dispatch_messageP3JCRixPc
-_Z16init_console_msgPKc
-_Z25register_message_callbackPFviPcE
-_Z4JmsgP3JCRixPKcz
-_Z4MmsgPPcPKcz
-_Z4MmsgR8POOL_MEMPKcz
-_Z4MmsgRPcPKcz
-_Z4QmsgP3JCRixPKcz
-_Z5d_msgPKciiS0_z
-_Z5e_msgPKciiiS0_z
-_Z5j_msgPKciP3JCRixS0_z
-_Z5m_msgPKciPPcS0_z
-_Z5m_msgPKciRPcS0_z
-_Z5p_msgPKciiS0_z
-_Z5q_msgPKciP3JCRixS0_z
-_Z5t_msgPKciiS0_z
-_Z8init_msgP3JCRP4MSGS
-_Z8term_msgv
-_Z9close_msgP3JCR
-_Z9get_tracev
-_Z9set_tracei
-
-; mkpath.o
-_Z13path_list_addP3JCRjPc
-_Z14free_path_listP3JCR
-_Z16path_list_lookupP3JCRPc
-_Z8makepathP4ATTRPKcttjji
-
-; mntent_cache.o
-_Z18flush_mntent_cachev
-_Z19find_mntent_mappingj
-
-; priv.o
-_Z4dropPcS_b
-
-; pythonlib.o
-_Z21generate_daemon_eventP3JCRPKc
- 
-; queue.o
-_Z5qnextP7b_queueS0_
-_Z7qdchainP7b_queue
-_Z7qinsertP7b_queueS0_
-_Z7qremoveP7b_queue
- 
-; rblist.o
-_ZN6rblist11left_rotateEPv
-_ZN6rblist12right_rotateEPv
-_ZN6rblist3anyEPv
-_ZN6rblist4nextEPv
-_ZN6rblist5firstEv
-_ZN6rblist6insertEPvPFiS0_S0_E
-_ZN6rblist6removeEPv
-_ZN6rblist6searchEPvPFiS0_S0_E
-_ZN6rblist7destroyEv
- 
-; runscript.o
-_Z11run_scriptsP3JCRP5alistPKc
-_Z13new_runscriptv
-_Z14copy_runscriptP9RUNSCRIPT
-_Z14free_runscriptP9RUNSCRIPT
-_Z15free_runscriptsP5alist
-_ZN9RUNSCRIPT10set_targetEPKc
-_ZN9RUNSCRIPT11set_commandEPKci
-_ZN9RUNSCRIPT13reset_defaultEb
-_ZN9RUNSCRIPT21set_job_code_callbackEPFPcP3JCRPKcE
-_ZN9RUNSCRIPT3runEP3JCRPKc
-_ZN9RUNSCRIPT5debugEv
-_ZN9RUNSCRIPT8is_localEv
-
- 
-; rwlock.o
-_Z11rwl_destroyP12s_rwlock_tag
-_Z12rwl_readlockP12s_rwlock_tag
-_Z15rwl_writelock_pP12s_rwlock_tagPKci
-_Z14rwl_readunlockP12s_rwlock_tag
-_Z15rwl_readtrylockP12s_rwlock_tag
-_Z15rwl_writeunlockP12s_rwlock_tag
-_Z16rwl_writetrylockP12s_rwlock_tag
-_Z8rwl_initP12s_rwlock_tagi
- 
-; scan.o
-_Z10parse_argsPcPS_PiS0_S0_i
-_Z11skip_spacesPPc
-_Z14skip_nonspacesPPc
-_Z15parse_args_onlyPcPS_PiS0_S0_i
-_Z19strip_leading_spacePc
-_Z19strip_trailing_junkPc
-_Z22strip_trailing_newlinePc
-_Z22strip_trailing_slashesPc
-_Z23split_path_and_filenamePKcPPcPiS2_S3_
-_Z7bsscanfPKcS0_z
-_Z7fstrschPKcS0_
-_Z8next_argPPc
- 
-; serial.o
-_Z12serial_btimePPhx
-_Z12serial_int16PPhs
-_Z12serial_int32PPhi
-_Z12serial_int64PPhx
-_Z13serial_stringPPhPKc
-_Z13serial_uint16PPht
-_Z13serial_uint32PPhj
-_Z13serial_uint64PPhy
-_Z14serial_float64PPhd
-_Z14unserial_btimePPh
-_Z14unserial_int16PPh
-_Z14unserial_int32PPh
-_Z15unserial_uint16PPh
-_Z15unserial_uint32PPh
-_Z15unserial_uint64PPh
-_Z16unserial_float64PPh
-_Z15unserial_stringPPhPci
- 
-; smartall.o
-_Z10sm_reallocPKciPvj
-_Z12actuallyfreePv
-_Z12sm_check_rtnPKcib
-_Z12sm_new_ownerPKciPc
-_Z14actuallycallocjj
-_Z14actuallymallocj
-_Z15actuallyreallocPvj
-_Z7sm_dumpbb
-_Z7sm_freePKciPv
-_Z8sm_checkPKcib
-_Z9sm_callocPKcijj
-_Z9sm_mallocPKcij
-_Z9sm_staticb
- 
-; tls.o
-_ZN5BSOCK8free_tlsEv
-_Z14get_tls_enableP11TLS_Context
-_Z15get_tls_requireP11TLS_Context
-_Z15new_tls_contextPKcS0_S0_S0_PFiPciPKvES3_S0_b
-_Z15tls_bsock_readnP5BSOCKPci
-_Z16free_tls_contextP11TLS_Context
-_Z16tls_bsock_acceptP5BSOCK
-_Z16tls_bsock_writenP5BSOCKPci
-_Z17tls_bsock_connectP5BSOCK
-_Z18new_tls_connectionP11TLS_Contexti
-_Z18tls_bsock_shutdownP5BSOCK
-_Z19free_tls_connectionP14TLS_Connection
-_Z25tls_postconnect_verify_cnP3JCRP14TLS_ConnectionP5alist
-_Z27tls_postconnect_verify_hostP3JCRP14TLS_ConnectionPKc
- 
-; tree.o
-_Z11tree_relcwdPcP11s_tree_rootP11s_tree_node
-_Z12tree_getpathP11s_tree_nodePci
-_Z14make_tree_pathPcP11s_tree_root
-_Z16insert_tree_nodePcS_iP11s_tree_rootP11s_tree_node
-_Z8new_treei
-_Z8tree_cwdPcP11s_tree_rootP11s_tree_node
-_Z9free_treeP11s_tree_root
- 
-; util.o
-_Z11bash_spacesPc
-_Z11bash_spacesR8POOL_MEM
-_Z11encode_modetPc
-_Z11encode_timexPc
-_Z11is_buf_zeroPci
-_Z13unbash_spacesPc
-_Z13unbash_spacesR8POOL_MEM
-_Z14edit_job_codesP3JCRPcS1_PKcPFS1_S0_S3_E
-_Z15job_type_to_stri
-_Z16job_level_to_stri
-_Z16make_session_keyPcS_i
-_Z17job_status_to_stri
-_Z18do_shell_expansionPci
-_Z18jobstatus_to_asciiiPci
-_Z19last_path_separatorPKc
-_Z21set_working_directoryPc
-_Z5lcasePc
-_Z20volume_status_to_strPKc 
-_Z22jobstatus_to_ascii_guiiPci
-
-; var.o
-_Z10var_configP6var_st12var_config_tz
-_Z10var_createPP6var_st
-_Z10var_expandP6var_stPKciPPcPii
-_Z10var_formatP6var_stPPciPKcz
-_Z11var_destroyP6var_st
-_Z11var_formatvP6var_stPPciPKcS1_
-_Z12var_strerrorP6var_st8var_rc_t
-_Z12var_unescapeP6var_stPKciPcii
- 
-; watchdog.o
-_Z12new_watchdogv
-_Z13stop_watchdogv
-_Z14start_watchdogv
-_Z17register_watchdogP12s_watchdog_t
-_Z19unregister_watchdogP12s_watchdog_t
-watchdog_thread
-
-; lockmgr.o
-_Z6lmgr_pPP16pthread_mutex_t_
-_Z6lmgr_vPP16pthread_mutex_t_
-
-;_Z15lmgr_mutex_lockPP16pthread_mutex_t_PKci
-;_Z17lmgr_mutex_unlockPP16pthread_mutex_t_PKci
-;_Z14lmgr_cond_waitPP15pthread_cond_t_PP16pthread_mutex_t_
-;_Z18lmgr_thread_createPP10pthread_t_PKP15pthread_attr_t_PFPvS6_ES6_
-;_Z17lmgr_cleanup_mainv
-
-console_command DATA
-bplugin_list DATA
-plugin_bopen DATA
-plugin_bclose DATA
-plugin_bwrite DATA
-plugin_bread DATA
-plugin_blseek DATA
-exepath DATA
-beef DATA
-version DATA
-dist_name DATA
diff --git a/src/win32/lib/bacula64.def b/src/win32/lib/bacula64.def
deleted file mode 100644
index 7becd6d..0000000
--- a/src/win32/lib/bacula64.def
+++ /dev/null
@@ -1,782 +0,0 @@
-LIBRARY bacula.dll
-EXPORTS
- 
-; compat.o
-_Z10open_bpipePciPKc
-_Z11close_bpipeP5BPIPE
-_Z11close_wpipeP5BPIPE
-_Z11strncasecmpPKcS0_i
-_Z11win32_cgetsPci
-_Z11win32_chdirPKc
-_Z11win32_chmodPKct
-_Z11win32_fputsPKcP6_iobuf
-_Z11win32_mkdirPKc
-_Z12UTF8_2_wcharPPcPKc
-_Z12gettimeofdayP7timevalP8timezone
-_Z12init_signalsPFviE
-_Z12wchar_2_UTF8PcPKwi
-_Z12wchar_2_UTF8PPcPKw
-_Z12win32_getcwdPci
-_Z12win32_unlinkPKc
-_Z15init_stack_dumpv
-_Z15win32_ftruncateix
-_Z16wchar_win32_pathPKcPw
-_Z17SetVSSPathConvertPFiPKcPciEPFiPKwPwiE
-_Z18CreateChildProcessPKcPvS1_S1_
-_Z18GetApplicationNamePKcPPcPS0_
-_Z18cvt_utime_to_ftimeRKxR9_FILETIME
-_Z18cvt_ftime_to_utimeRK9_FILETIME
-_Z18unix_name_to_win32PPcS_
-_Z21Win32ConvCleanupCachev
-_Z28make_win32_path_UTF8_2_wcharPPcPKcPi
-_Z4forkv
-_Z4killii
-_Z4pipePi
-_Z4statPKcP4stat
-_Z5chownPKcjj
-_Z5fcntlii
-_Z5fcntliil
-_Z5fstatxP4stat
-_Z5lstatPKcP4stat
-_Z5sleepi
-_Z6execvpPKcPPc
-_Z6lchownPKcjj
-_Z6randomv
-_Z7geteuidv
-_Z7opendirPKc
-_Z7openlogPKcii
-_Z7srandomj
-_Z7waitpidiPii
-_Z8WSA_Initv
-_Z8closedirPv
-_Z8closelogv
-_Z8getArgv0PKc
-_Z8getgrgidj
-_Z8getpwuidj
-_Z8pathconfPKci
-_Z8readlinkPKcPci
-_Z9ErrorExitPKc
-_Z9inet_atonPKcP7in_addr
-_Z9nanosleepPK8timespecPS_
-_Z9readdir_rPvP6direntPS1_
-_ZN6winverC1Ev
-_ZN6winverC2Ev
-syslog
-umask
-utime
- 
-; plugins.o
-_Z10new_pluginv
-_Z12load_pluginsPvS_PKcS1_PFbP6PluginE
-_Z14unload_pluginsv
-_Z19dbg_plugin_add_hookPFvP6PluginP6_iobufE
-
-; print.o
-_Z10__vsprintfPcPKcS_
-_Z11__vsnprintfPcyPKcS_
-_Z10__snprintfPcyPKcz
-_Z9__sprintfPcPKcz
-_Z4doprPcyPKcS_PFvS_PyyiE
- 
-; winapi.o
-_Z17InitWinAPIWrapperv
- 
-; attribs.o
-_Z11decode_statPcP4statiPi
-_Z11encode_statPcP4statiii
-_Z13decode_LinkFIPcP4stati
-_Z14set_attributesP3JCRP4ATTRP5BFILE
-_Z16encode_attribsExP3JCRPcP6FF_PKT
-_Z18select_data_streamP6FF_PKT
-_Z9win_errorP3JCRPKcm
-_Z9win_errorP3JCRPKcPc
- 
-; bfile.o
-_Z11bget_handleP5BFILE
-_Z11int32_LE2BEPii
-_Z11int64_LE2BEPxx
-_Z14have_win32_apiv
-_Z15is_win32_streami
-_Z15stream_to_asciii
-_Z16set_win32_backupP5BFILE
-_Z18is_portable_backupP5BFILE
-_Z19set_portable_backupP5BFILE
-_Z14set_cmd_pluginP5BFILEP3JCR
-_Z26processWin32BackupAPIBlockP5BFILEPvx
-_Z27is_restore_stream_supportedi
-_Z5binitP5BFILE
-_Z5bopenP5BFILEPKcit
-_Z5breadP5BFILEPvy
-_Z6bcloseP5BFILE
-_Z6blseekP5BFILExi
-_Z8is_bopenP5BFILE
-_Z6bwriteP5BFILEPvy
- 
-; create_file.o
-_Z11create_fileP3JCRP4ATTRP5BFILEi
- 
-; drivetype.o
-_Z9drivetypePKcPci
- 
-; enable_priv.o
-_Z24enable_backup_privilegesP3JCRi
- 
-; find.o
-_Z10find_filesP3JCRP6FF_PKTPFiS0_S2_bES4_
-_Z13is_in_filesetP6FF_PKT
-_Z15init_find_filesv
-_Z15term_find_filesP6FF_PKT
-_Z16set_find_optionsP6FF_PKTix
-_Z22get_win32_drivelettersP6FF_PKTPc
-_Z25set_find_changed_functionP6FF_PKTPFbP3JCRS0_E
- 
-; find_one.o
-_Z13find_one_fileP3JCRP6FF_PKTPFiS0_S2_bEPcjb
-_Z13term_find_oneP6FF_PKT
-_Z16has_file_changedP3JCRP6FF_PKT
-_Z13check_changesP3JCRP6FF_PKT
-_Z22ff_pkt_set_link_digestP6FF_PKTiPKcj
- 
-; fstype.o
-_Z6fstypePKcPci
- 
-; match.o
-_Z11match_filesP3JCRP6FF_PKTPFiS0_S2_bE
-_Z16file_is_excludedP6FF_PKTPKc
-_Z16file_is_includedP6FF_PKTPKc
-_Z22get_next_included_fileP6FF_PKTP15s_included_file
-_Z25add_fname_to_exclude_listP6FF_PKTPKc
-_Z25add_fname_to_include_listP6FF_PKTiPKc
-_Z26term_include_exclude_filesP6FF_PKT
- 
-; address_conf.o
-_Z14free_addressesP5dlist
-_Z15store_addressesP13s_lex_contextP8RES_ITEMii
-_Z17get_first_addressP5dlistPci
-_Z17sockaddr_get_portPK8sockaddr
-_Z17sockaddr_to_asciiPK8sockaddrPci
-_Z19build_addresses_strP5dlistPci
-_Z20store_addresses_portP13s_lex_contextP8RES_ITEMii
-_Z22init_default_addressesPP5dlisti
-_Z23store_addresses_addressP13s_lex_contextP8RES_ITEMii
-_Z24get_first_port_net_orderP5dlist
-_Z25get_first_port_host_orderP5dlist
-_Z27sockaddr_get_port_net_orderPK8sockaddr
-_ZN6IPADDR11get_addressEPci
-_ZN6IPADDR12get_sockaddrEv
-_ZN6IPADDR12set_addr_anyEv
-_ZN6IPADDR12set_port_netEt
-_ZN6IPADDR16get_sockaddr_lenEv
-_ZN6IPADDR17build_address_strEPci
-_ZN6IPADDR8set_typeENS_6i_typeE
-_ZN6IPADDR9copy_addrEPS_
-_ZN6IPADDR9set_addr4EP7in_addr
-_ZN6IPADDRC1ERKS_
-_ZN6IPADDRC1Ei
-_ZN6IPADDRC2ERKS_
-_ZN6IPADDRC2Ei
-_ZNK6IPADDR10get_familyEv
-_ZNK6IPADDR18get_port_net_orderEv
-_ZNK6IPADDR8get_typeEv
- 
-; alist.o
-_ZN5alist3getEi
-_ZN5alist4lastEv
-_ZN5alist4nextEv
-_ZN5alist4prevEv
-_ZN5alist5firstEv
-_ZN5alist6appendEPv
-_ZN5alist6removeEi
-_ZN5alist7destroyEv
-_ZN5alist7prependEPv
-_ZN5alist9grow_listEv
- 
-; attr.o
-_Z15print_ls_outputP3JCRP4ATTR
-_Z24build_attr_output_fnamesP3JCRP4ATTR
-_Z24unpack_attributes_recordP3JCRiPciP4ATTR
-_Z8new_attrP3JCR
-_Z9free_attrP4ATTR
- 
-; base64.o
-_Z11base64_initv
-_Z11from_base64PxPc
-_Z13bin_to_base64PciS_ii
-_Z9to_base64xPc
- 
-; berrno.o
-_ZN6berrno20format_win32_messageEv
-_ZN6berrno9bstrerrorEv
- 
-; bget_msg.o
-_Z8bget_msgP5BSOCK
- 
-; bnet.o
-_Z10bnet_closeP5BSOCK
-_Z10bnet_fsendP5BSOCKPKcz
-_Z10init_bsockP3JCRiPKcS2_iP8sockaddr
-_Z10term_bsockP5BSOCK
-_Z11read_nbytesP5BSOCKPci
-_Z12bnet_connectP3JCRixxPKcPcS3_ii
-_Z12is_bnet_stopP5BSOCK
-_Z12write_nbytesP5BSOCKPci
-_Z13bnet_get_peerP5BSOCKPci
-_Z13bnet_strerrorP5BSOCK
-_Z13is_bnet_errorP5BSOCK
-_Z14bnet_wait_dataP5BSOCKi
-_Z15bnet_tls_clientP11TLS_ContextP5BSOCKP5alist
-_Z15bnet_tls_serverP11TLS_ContextP5BSOCKP5alist
-_Z17bnet_host2ipaddrsPKciPS0_
-_Z17bnet_set_blockingP5BSOCK
-_Z17bnet_sig_to_asciiP5BSOCK
-_Z19bnet_wait_data_intrP5BSOCKi
-_Z20bnet_set_buffer_sizeP5BSOCKji
-_Z20bnet_set_nonblockingP5BSOCK
-_Z21bnet_restore_blockingP5BSOCKi
-_Z28bnet_suppress_error_messagesP5BSOCKb
-_Z8bnet_sigP5BSOCKi
-_Z9bnet_recvP5BSOCK
-_Z9bnet_sendP5BSOCK
-_Z9dup_bsockP5BSOCK
- 
-; bnet_server.o
-_Z18bnet_thread_serverP5dlistiP9workq_tagPFPvS3_E
-_Z23bnet_stop_thread_serverP10pthread_t_
- 
-; bpipe.o
-_Z11run_programPciRS_
-_Z23run_program_full_outputPciRS_
- 
-; breg.o
-_Z11new_bregexpPKc
-_Z12free_bregexpP7BREGEXP
-_Z12get_bregexpsPKc
-_Z13free_bregexpsP5alist
-_Z14apply_bregexpsPKcP5alistPPc
-_Z19bregexp_build_wherePciS_S_S_
-_Z21bregexp_escape_stringPcPKcc
-_Z28bregexp_get_build_where_sizePcS_S_
-_ZN7BREGEXP10edit_substEPKcP12b_regmatch_t
-_ZN7BREGEXP12return_fnameEPKci
-_ZN7BREGEXP14extract_regexpEPKc
-_ZN7BREGEXP16compute_dest_lenEPKcP12b_regmatch_t
-_ZN7BREGEXP5debugEv
-_ZN7BREGEXP7replaceEPKc
- 
-; bregex.o
-_Z24re_registers_to_regmatchP12re_registersP12b_regmatch_ty
-b_re_compile_fastmap
-b_re_compile_initialize
-b_re_compile_pattern
-b_re_match
-b_re_search
-b_re_set_syntax
-b_regcomp
-b_regerror
-b_regexec
-b_regfree
- 
-; bsnprintf.o
-_Z10bvsnprintfPciPKcS_
-_Z9bsnprintfPciPKcz
- 
-; bsock.o
-_ZN5BSOCK11set_lockingEv
-_Z9new_bsockv
-_ZN5BSOCK10free_bsockEv
-_ZN5BSOCK12set_blockingEv
-_ZN5BSOCK14wait_data_intrEii
-_ZN5BSOCK15set_buffer_sizeEji
-_ZN5BSOCK15set_nonblockingEv
-_ZN5BSOCK16restore_blockingEi
-_ZN5BSOCK21authenticate_directorEPKcS1_P11TLS_ContextPci
-_ZN5BSOCK4initEv
-_ZN5BSOCK4recvEv
-_ZN5BSOCK4sendEv
-_ZN5BSOCK4openEP3JCRPKcPcS4_ixPi
-_ZN5BSOCK7despoolEPFvxEx
-_ZN5BSOCK5closeEv
-_ZN5BSOCK5fsendEPKcz
-_ZN5BSOCK6signalEi
-_ZN5BSOCK7connectEP3JCRixxPKcPcS4_ii
-_ZN5BSOCK7destroyEv
-_ZN5BSOCK8fin_initEP3JCRiPKcS3_iP8sockaddr
-_ZN5BSOCK8get_peerEPci
-_ZN5BSOCK9bstrerrorEv
-_ZN5BSOCK9wait_dataEii
-_ZN5BSOCK18set_source_addressEP5dlist
- 
-; bsys.o
-_Z10b_strerroriPcy
-_Z11bmicrosleepii
-_Z15create_pid_filePcPKci
-_Z15delete_pid_filePcPKci
-_Z15escape_filenamePKc
-_Z15read_state_filePcPKci
-_Z16write_state_filePcPKci
-_Z20make_unique_filenamePPciS_
-_Z5bfreePv
-_Z6bfgetsPciP6_iobuf
-_Z7bcallocyy
-_Z7bstrcmpPKcS0_
-_Z7cstrlenPKc
-_Z8b_mallocPKciy
-_Z8breallocPvy
-_Z8bstrncatPcPKci
-_Z8bstrncatPcR8POOL_MEMi
-_Z8bstrncpyPcPKci
-_Z8bstrncpyPcR8POOL_MEMi
-
-; binflate.o
-_Z8ZdeflatePciS_Ri
-_Z8ZinflatePciS_Ri
- 
-; btime.o
-_Z10bstrftimesPcix
-_Z11date_decodedPjPhS0_
-_Z11date_encodejhh
-_Z11time_decodedPhS_S_Pf
-_Z11time_encodehhhf
-_Z12bstrftime_ncPcix
-_Z12bstrftime_nyPcix
-_Z12str_to_utimePc
-_Z13btime_to_unixx
-_Z14btime_to_utimex
-_Z16date_time_decodeP9date_timePjPhS2_S2_S2_S2_Pf
-_Z16date_time_encodeP9date_timejhhhhhf
-_Z16get_current_timeP9date_time
-_Z17date_time_compareP9date_timeS0_
-_Z17get_current_btimev
-_Z6tm_womii
-_Z9bstrftimePcix
-_Z9bstrutimePcix
-_Z9tm_decodeP9date_timeP2tm
-_Z9tm_encodeP9date_timeP2tm
- 
-; btimers.o
-_Z16stop_bsock_timerP8btimer_t
-_Z16stop_child_timerP8btimer_t
-_Z17start_bsock_timerP5BSOCKj
-_Z17start_child_timerP3JCRxj
-_Z17stop_thread_timerP8btimer_t
-_Z18start_thread_timerP3JCRP10pthread_t_j
-
-; cram-md5.o
-_Z16cram_md5_respondP5BSOCKPKcPiS3_
-_Z18cram_md5_challengeP5BSOCKPKcii
- 
-; crc32.o
-_Z6bcrc32Phi
- 
-; crypto.o
-_Z11init_cryptov
-_Z13CryptoData_itv
-_Z13SignerInfo_itv
-_Z14CryptoData_newv
-_Z14SignerInfo_newv
-_Z14cleanup_cryptov
-_Z14d2i_CryptoDataPP10CryptoDataPPKhl
-_Z14d2i_SignerInfoPP10SignerInfoPPKhl
-_Z14i2d_CryptoDataP10CryptoDataPPh
-_Z14i2d_SignerInfoP10SignerInfoPPh
-_Z15CryptoData_freeP10CryptoData
-_Z15SignerInfo_freeP10SignerInfo
-_Z15crypto_sign_newP3JCR
-_Z15crypto_strerror14crypto_error_t
-_Z16RecipientInfo_itv
-_Z16SignatureData_itv
-_Z16crypto_sign_freeP9Signature
-_Z17RecipientInfo_newv
-_Z17SignatureData_newv
-_Z17crypto_cipher_newP14Crypto_SessionbPj
-_Z17crypto_digest_newP3JCR15crypto_digest_t
-_Z17d2i_RecipientInfoPP13RecipientInfoPPKhl
-_Z17d2i_SignatureDataPP13SignatureDataPPKhl
-_Z17i2d_RecipientInfoP13RecipientInfoPPh
-_Z17i2d_SignatureDataP13SignatureDataPPh
-_Z18RecipientInfo_freeP13RecipientInfo
-_Z18SignatureData_freeP13SignatureData
-_Z18crypto_cipher_freeP14Cipher_Context
-_Z18crypto_digest_freeP6Digest
-_Z18crypto_digest_nameP6Digest
-_Z18crypto_keypair_dupP12X509_Keypair
-_Z18crypto_keypair_newv
-_Z18crypto_session_new15crypto_cipher_tP5alist
-_Z18crypto_sign_decodeP3JCRPKhj
-_Z18crypto_sign_encodeP9SignaturePhPj
-_Z18crypto_sign_verifyP9SignatureP12X509_KeypairP6Digest
-_Z19crypto_keypair_freeP12X509_Keypair
-_Z19crypto_session_freeP14Crypto_Session
-_Z20crypto_cipher_updateP14Cipher_ContextPKhjS2_Pj
-_Z20crypto_digest_updateP6DigestPKhj
-_Z21crypto_session_decodePKhjP5alistPP14Crypto_Session
-_Z21crypto_session_encodeP14Crypto_SessionPhPj
-_Z22crypto_cipher_finalizeP14Cipher_ContextPhPj
-_Z22crypto_digest_finalizeP6DigestPhPj
-_Z22crypto_keypair_has_keyPKc
-_Z22crypto_sign_add_signerP9SignatureP6DigestP12X509_Keypair
-_Z22crypto_sign_get_digestP9SignatureP12X509_KeypairR15crypto_digest_tPP6Digest
-_Z23crypto_keypair_load_keyP12X509_KeypairPKcPFiPciPKvES5_
-_Z24crypto_keypair_load_certP12X509_KeypairPKc
-_Z25crypto_digest_stream_typei
-_Z27crypto_default_pem_callbackPciPKv
- 
-; daemon.o
-_Z12daemon_startv
- 
-; dlist.o
-_Z15new_dlistStringPKc
-_Z15new_dlistStringPKci
-_ZN5dlist12insert_afterEPvS0_
-_ZN5dlist13binary_insertEPvPFiS0_S0_E
-_ZN5dlist13binary_searchEPvPFiS0_S0_E
-_ZN5dlist13insert_beforeEPvS0_
-_ZN5dlist22binary_insert_multipleEPvPFiS0_S0_E
-_ZN5dlist4nextEPv
-_ZN5dlist4prevEPv
-_ZN5dlist6appendEPv
-_ZN5dlist6removeEPv
-_ZN5dlist7destroyEv
-_ZN5dlist7prependEPv
- 
-; edit.o
-_Z16is_a_number_listPKc
-_Z10add_commasPcS_
-_Z10edit_int64xPc
-_Z10edit_utimexPci
-_Z11edit_uint64yPc
-_Z11is_a_numberPKc
-_Z12str_to_int64Pc
-_Z13is_an_integerPKc
-_Z13is_name_validPKcPPc
-_Z13str_to_uint64Pc
-_Z14size_to_uint64PciPy
-_Z15speed_to_uint64PciPy
-_Z17duration_to_utimePcPx
-_Z22edit_int64_with_commasxPc
-_Z23edit_uint64_with_commasyPc
-_Z23edit_uint64_with_suffixyPc
- 
-; fnmatch.o
-fnmatch
-
-; guid_to_name.o
-_ZN9guid_list11uid_to_nameEjPci
-_ZN9guid_list11gid_to_nameEjPci
-_Z14free_guid_listP9guid_list
-_Z13new_guid_listv
-
-; hmac.o
-_Z8hmac_md5PhiS_iS_
- 
-; htable.o
-_ZN6htable11hash_mallocEi
-_ZN6htable10grow_tableEv
-_ZN6htable10hash_indexEPc
-_ZN6htable4initEPvS0_ii
-_ZN6htable4nextEv
-_ZN6htable4sizeEv
-_ZN6htable5firstEv
-_ZN6htable5statsEv
-_ZN6htable6insertEPcPv
-_ZN6htable6lookupEPc
-_ZN6htable7destroyEv
-_ZN6htableC1EPvS0_ii
-_ZN6htableC2EPvS0_ii
-    
- 
-; jcr.o
-_Z10b_free_jcrPKciP3JCR
-_Z11unlock_jobsv
-_Z12jcr_walk_endP3JCR
-_Z9job_countv
-_Z12job_end_pushP3JCRPFvS0_PvES1_
-_Z13get_jcr_by_idj
-_Z13jcr_walk_nextP3JCR
-_Z14jcr_walk_startv
-_Z14set_jcr_in_tsdP3JCR
-_Z16get_jcr_from_tsdv
-_Z18get_jobid_from_tsdv
-_Z18get_jcr_by_sessionjj
-_Z18init_jcr_subsystemv
-_ZN3JCR12setJobStatusEi
-_Z19init_last_jobs_listv
-_Z19lock_last_jobs_listv
-_Z19read_last_jobs_listiy
-_Z19term_last_jobs_listv
-_Z20get_jcr_by_full_namePc
-_Z20write_last_jobs_listiy
-_Z21unlock_last_jobs_listv
-_Z23get_jcr_by_partial_namePc
-_Z24get_next_jobid_from_listPPcPj
-_Z7new_jcriPFvP3JCRE
-_Z9lock_jobsv
-_ZN3JCR14get_ActionNameEb
-_ZN3JCR17get_OperationNameEv
-_ZN3JCR21my_thread_send_signalEi
-_ZN3JCR8JobReadsEv
-_Z16dbg_jcr_add_hookPFvP3JCRP6_iobufE
-timeout_handler
-
-
- 
-; lex.o
-_Z11scan_to_eolP13s_lex_context
-_Z12lex_get_charP13s_lex_context
-_Z13lex_get_tokenP13s_lex_contexti
-_Z13lex_open_fileP13s_lex_contextPKcPFvS2_iS0_S2_zE
-_Z14lex_close_fileP13s_lex_context
-_Z14lex_tok_to_stri
-_Z14lex_unget_charP13s_lex_context
-_Z20scan_to_next_not_eolP13s_lex_context
-_Z29lex_set_default_error_handlerP13s_lex_context
-_Z32lex_set_error_handler_error_typeP13s_lex_contexti
- 
-; md5.o
-_Z12MD5TransformPjS_
-_Z7MD5InitP10MD5Context
-_Z8MD5FinalPhP10MD5Context
-_Z9MD5UpdateP10MD5ContextPhj
- 
-; mem_pool.o
-_Z13sm_get_memoryPKcii
-_Z17close_memory_poolv
-_Z18sm_get_pool_memoryPKcii
-_Z19sm_free_pool_memoryPKciPc
-_Z21sm_sizeof_pool_memoryPKciPc
-_Z22sm_realloc_pool_memoryPKciPci
-_Z23print_memory_pool_statsv
-_Z25sm_check_pool_memory_sizePKciPci
-_Z27garbage_collect_memory_poolv
-_Z9pm_strcatPPcPKc
-_Z9pm_strcatR8POOL_MEMPKc
-_Z9pm_strcatRPcPKc
-_Z9pm_strcatRPcR8POOL_MEM
-_Z9pm_strcpyPPcPKc
-_Z9pm_strcpyR8POOL_MEMPKc
-_Z9pm_strcpyRPcPKc
-_Z9pm_strcpyRPcR8POOL_MEM
-_Z9pm_memcpyPPcPKci
-_Z9pm_memcpyR8POOL_MEMPKci
-_Z9pm_memcpyRPcPKci
-_Z9pm_memcpyRPcR8POOL_MEMi
-_ZN8POOL_MEM10realloc_pmEi
-_ZN8POOL_MEM6strcatEPKc
-_ZN8POOL_MEM6strcpyEPKc
-_ZN8POOL_MEM8max_sizeEv
- 
-; message.o
-_Z10get_hangupv
-_Z10set_hangupi
-_Z10my_name_isiPPcPKc
-_Z12add_msg_destP4MSGSiiPcS1_
-_Z12rem_msg_destP4MSGSiiPc
-_Z13free_msgs_resP4MSGS
-_Z16dequeue_messagesP3JCR
-_Z16dispatch_messageP3JCRixPc
-_Z16init_console_msgPKc
-_Z25register_message_callbackPFviPcE
-_Z4JmsgP3JCRixPKcz
-_Z4MmsgPPcPKcz
-_Z4MmsgR8POOL_MEMPKcz
-_Z4MmsgRPcPKcz
-_Z4QmsgP3JCRixPKcz
-_Z5d_msgPKciiS0_z
-_Z5e_msgPKciiiS0_z
-_Z5j_msgPKciP3JCRixS0_z
-_Z5m_msgPKciPPcS0_z
-_Z5m_msgPKciRPcS0_z
-_Z5p_msgPKciiS0_z
-_Z5q_msgPKciP3JCRixS0_z
-_Z5t_msgPKciiS0_z
-_Z8init_msgP3JCRP4MSGS
-_Z8term_msgv
-_Z9close_msgP3JCR
-_Z9get_tracev
-_Z9set_tracei
-
-; mkpath.o
-_Z13path_list_addP3JCRjPc
-_Z14free_path_listP3JCR
-_Z16path_list_lookupP3JCRPc
-_Z8makepathP4ATTRPKcttjji
-
-; mntent_cache.o
-_Z18flush_mntent_cachev
-_Z19find_mntent_mappingj
-
-; priv.o
-_Z4dropPcS_b
-
-; pythonlib.o
-_Z21generate_daemon_eventP3JCRPKc
- 
-; queue.o
-_Z5qnextP7b_queueS0_
-_Z7qdchainP7b_queue
-_Z7qinsertP7b_queueS0_
-_Z7qremoveP7b_queue
- 
-; rblist.o
-_ZN6rblist11left_rotateEPv
-_ZN6rblist12right_rotateEPv
-_ZN6rblist3anyEPv
-_ZN6rblist4nextEPv
-_ZN6rblist5firstEv
-_ZN6rblist6insertEPvPFiS0_S0_E
-_ZN6rblist6removeEPv
-_ZN6rblist6searchEPvPFiS0_S0_E
-_ZN6rblist7destroyEv
- 
-; runscript.o
-_Z11run_scriptsP3JCRP5alistPKc
-_Z13new_runscriptv
-_Z14copy_runscriptP9RUNSCRIPT
-_Z14free_runscriptP9RUNSCRIPT
-_Z15free_runscriptsP5alist
-_ZN9RUNSCRIPT10set_targetEPKc
-_ZN9RUNSCRIPT11set_commandEPKci
-_ZN9RUNSCRIPT13reset_defaultEb
-_ZN9RUNSCRIPT21set_job_code_callbackEPFPcP3JCRPKcE
-_ZN9RUNSCRIPT3runEP3JCRPKc
-_ZN9RUNSCRIPT5debugEv
-_ZN9RUNSCRIPT8is_localEv
-
- 
-; rwlock.o
-_Z11rwl_destroyP12s_rwlock_tag
-_Z12rwl_readlockP12s_rwlock_tag
-_Z15rwl_writelock_pP12s_rwlock_tagPKci
-_Z14rwl_readunlockP12s_rwlock_tag
-_Z15rwl_readtrylockP12s_rwlock_tag
-_Z15rwl_writeunlockP12s_rwlock_tag
-_Z16rwl_writetrylockP12s_rwlock_tag
-_Z8rwl_initP12s_rwlock_tagi
- 
-; scan.o
-_Z10parse_argsPcPS_PiS0_S0_i
-_Z11skip_spacesPPc
-_Z14skip_nonspacesPPc
-_Z15parse_args_onlyPcPS_PiS0_S0_i
-_Z19strip_leading_spacePc
-_Z19strip_trailing_junkPc
-_Z22strip_trailing_newlinePc
-_Z22strip_trailing_slashesPc
-_Z23split_path_and_filenamePKcPPcPiS2_S3_
-_Z7bsscanfPKcS0_z
-_Z7fstrschPKcS0_
-_Z8next_argPPc
- 
-; serial.o
-_Z12serial_btimePPhx
-_Z12serial_int16PPhs
-_Z12serial_int32PPhi
-_Z12serial_int64PPhx
-_Z13serial_stringPPhPKc
-_Z13serial_uint16PPht
-_Z13serial_uint32PPhj
-_Z13serial_uint64PPhy
-_Z14serial_float64PPhd
-_Z14unserial_btimePPh
-_Z14unserial_int16PPh
-_Z14unserial_int32PPh
-_Z15unserial_uint16PPh
-_Z15unserial_uint32PPh
-_Z15unserial_uint64PPh
-_Z16unserial_float64PPh
-_Z15unserial_stringPPhPci
- 
-; smartall.o
-_Z10sm_reallocPKciPvj
-_Z12actuallyfreePv
-_Z12sm_check_rtnPKcib
-_Z12sm_new_ownerPKciPc
-_Z14actuallycallocjj
-_Z14actuallymallocj
-_Z15actuallyreallocPvj
-_Z7sm_dumpbb
-_Z7sm_freePKciPv
-_Z8sm_checkPKcib
-_Z9sm_callocPKcijj
-_Z9sm_mallocPKcij
-_Z9sm_staticb
- 
-; tls.o
-_ZN5BSOCK8free_tlsEv
-_Z14get_tls_enableP11TLS_Context
-_Z15get_tls_requireP11TLS_Context
-_Z15new_tls_contextPKcS0_S0_S0_PFiPciPKvES3_S0_b
-_Z15tls_bsock_readnP5BSOCKPci
-_Z16free_tls_contextP11TLS_Context
-_Z16tls_bsock_acceptP5BSOCK
-_Z16tls_bsock_writenP5BSOCKPci
-_Z17tls_bsock_connectP5BSOCK
-_Z18new_tls_connectionP11TLS_Contexti
-_Z18tls_bsock_shutdownP5BSOCK
-_Z19free_tls_connectionP14TLS_Connection
-_Z25tls_postconnect_verify_cnP3JCRP14TLS_ConnectionP5alist
-_Z27tls_postconnect_verify_hostP3JCRP14TLS_ConnectionPKc
- 
-; tree.o
-_Z11tree_relcwdPcP11s_tree_rootP11s_tree_node
-_Z12tree_getpathP11s_tree_nodePci
-_Z14make_tree_pathPcP11s_tree_root
-_Z16insert_tree_nodePcS_iP11s_tree_rootP11s_tree_node
-_Z8new_treei
-_Z8tree_cwdPcP11s_tree_rootP11s_tree_node
-_Z9free_treeP11s_tree_root
- 
-; util.o
-_Z11bash_spacesPc
-_Z11bash_spacesR8POOL_MEM
-_Z11encode_modetPc
-_Z11encode_timexPc
-_Z11is_buf_zeroPci
-_Z13unbash_spacesPc
-_Z13unbash_spacesR8POOL_MEM
-_Z14edit_job_codesP3JCRPcS1_PKcPFS1_S0_S3_E
-_Z15job_type_to_stri
-_Z16job_level_to_stri
-_Z16make_session_keyPcS_i
-_Z17job_status_to_stri
-_Z18do_shell_expansionPci
-_Z18jobstatus_to_asciiiPci
-_Z19last_path_separatorPKc
-_Z21set_working_directoryPc
-_Z5lcasePc
-_Z20volume_status_to_strPKc 
-_Z22jobstatus_to_ascii_guiiPci
-
-; var.o
-_Z10var_configP6var_st12var_config_tz
-_Z10var_createPP6var_st
-_Z10var_expandP6var_stPKciPPcPii
-_Z10var_formatP6var_stPPciPKcz
-_Z11var_destroyP6var_st
-_Z11var_formatvP6var_stPPciPKcS1_
-_Z12var_strerrorP6var_st8var_rc_t
-_Z12var_unescapeP6var_stPKciPcii
- 
-; watchdog.o
-_Z12new_watchdogv
-_Z13stop_watchdogv
-_Z14start_watchdogv
-_Z17register_watchdogP12s_watchdog_t
-_Z19unregister_watchdogP12s_watchdog_t
-watchdog_thread
-
-; lockmgr.o
-_Z6lmgr_pPP16pthread_mutex_t_
-_Z6lmgr_vPP16pthread_mutex_t_
-
-console_command DATA
-bplugin_list DATA
-plugin_bopen DATA
-plugin_bclose DATA
-plugin_bwrite DATA
-plugin_bread DATA
-plugin_blseek DATA
-exepath DATA
-beef DATA
-version DATA
-dist_name DATA
diff --git a/src/win32/lib/make_def b/src/win32/lib/make_def
deleted file mode 100755
index e5939b1..0000000
--- a/src/win32/lib/make_def
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-#
-#  Make the stupid bacula.def file so that we don't have to do it
-#    manually
-#
-#  Kern Sibbald, June 2007
-#
-
-TOPDIR=`(cd ../../..;pwd)`
-TOPDIR=${DEPKGS:-${TOPDIR}}
-NM=${TOPDIR}/cross-tools/mingw32/mingw32/bin/nm
- 
-echo "LIBRARY bacula.dll"
-echo "EXPORTS"
-echo " "
-
-cd obj32
-for i in *.o ; do \
-   echo "; $i"; \
-   ${NM} $i | grep "^[0-9a-f]* T _" | cut -c13- ; \
-   echo " "; \
-done
-
-DATA="\
-   console_command \
-   bplugin_list"
-
-for i in ${DATA}; do \
-   echo "$i DATA"; \
-done
diff --git a/src/win32/lib/make_def64 b/src/win32/lib/make_def64
deleted file mode 100755
index 87921ca..0000000
--- a/src/win32/lib/make_def64
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-#
-#  Make the stupid bacula.def file so that we don't have to do it
-#    manually
-#
-#  Kern Sibbald, June 2007
-#
-
-TOPDIR=`(cd ../../..;pwd)`
-TOPDIR=${DEPKGS:-${TOPDIR}}
-NM=${TOPDIR}/cross-tools/mingw-w64/bin/x86_64-pc-mingw32-nm
- 
-echo "LIBRARY bacula.dll"
-echo "EXPORTS"
-echo " "
-
-cd obj64
-for i in *.o ; do \
-   echo "; $i"; \
-   ${NM} $i | grep "^[0-9a-f]* T _" | cut -c13- ; \
-   echo " "; \
-done
-
-DATA="\
-   console_command \
-   bplugin_list"
-
-for i in ${DATA}; do \
-   echo "$i DATA"; \
-done
diff --git a/src/win32/libbac/Makefile b/src/win32/libbac/Makefile
deleted file mode 100644
index d19adc3..0000000
--- a/src/win32/libbac/Makefile
+++ /dev/null
@@ -1,111 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#  
-#  Written for Bacula by Howard Thomson, April 2006
-#    for building using cross-complilation.
-# 
-
-include ../Makefile.inc
-
-INCLUDES = \
-	$(INCLUDE_GCC) \
-	$(INCLUDE_MINGW) \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_ZLIB) \
-	$(INCLUDE_VSS) \
-	$(INCLUDE_ICONS) \
-	$(INCLUDE_OPENSSL)
-
-DEFINES = \
-	-DWIN32 \
-	$(HAVES)
-
-######################################################################
-
-# Files files in src/lib
-
-LIB_OBJS = \
-	$(OBJDIR)/address_conf.o \
-	$(OBJDIR)/alist.o \
-	$(OBJDIR)/attr.o \
-	$(OBJDIR)/base64.o \
-	$(OBJDIR)/berrno.o \
-	$(OBJDIR)/bget_msg.o \
-	$(OBJDIR)/bnet.o \
-	$(OBJDIR)/bnet_server.o \
-	$(OBJDIR)/bpipe.o \
-	$(OBJDIR)/bregex.o \
-	$(OBJDIR)/bshm.o \
-	$(OBJDIR)/bsnprintf.o \
-	$(OBJDIR)/bsock.o \
-	$(OBJDIR)/bsys.o \
-	$(OBJDIR)/btime.o \
-	$(OBJDIR)/btimers.o \
-	$(OBJDIR)/cram-md5.o \
-	$(OBJDIR)/crc32.o \
-	$(OBJDIR)/crypto.o \
-	$(OBJDIR)/daemon.o \
-	$(OBJDIR)/dlist.o \
-	$(OBJDIR)/edit.o \
-	$(OBJDIR)/enh_fnmatch.o \
-	$(OBJDIR)/fnmatch.o \
-	$(OBJDIR)/hmac.o \
-	$(OBJDIR)/htable.o \
-	$(OBJDIR)/idcache.o \
-	$(OBJDIR)/jcr.o \
-	$(OBJDIR)/lex.o \
-	$(OBJDIR)/md5.o \
-	$(OBJDIR)/mem_pool.o \
-	$(OBJDIR)/message.o \
-	$(OBJDIR)/openssl.o \
-	$(OBJDIR)/parse_conf.o \
-	$(OBJDIR)/pythonlib.o \
-	$(OBJDIR)/queue.o \
-	$(OBJDIR)/rblist.o \
-	$(OBJDIR)/res.o \
-	$(OBJDIR)/runscript.o \
-	$(OBJDIR)/rwlock.o \
-	$(OBJDIR)/scan.o \
-	$(OBJDIR)/serial.o \
-	$(OBJDIR)/sha1.o \
-	$(OBJDIR)/signal.o \
-	$(OBJDIR)/smartall.o \
-	$(OBJDIR)/tls.o \
-	$(OBJDIR)/tree.o \
-	$(OBJDIR)/util.o \
-	$(OBJDIR)/var.o \
-	$(OBJDIR)/watchdog.o \
-	$(OBJDIR)/winapi.o \
-	$(OBJDIR)/workq.o \
-	$(OBJDIR)/lockmgr.o
-
-#	$(LIBDIR)/events.o
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all: $(LIBDIR)/libbac.a
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(ECHO_CMD)rm -f $(OBJDIR)/*.[od] $(LIBDIR)/libbac.a
-
-#
-# Rules
-# 
-
-$(LIBDIR)/libbac.a: $(LIB_OBJS)
-	@echo "Updating archive $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(AR) rs $@ $^
-
-include ../Makefile.rules
-
-ifneq ($(MAKECMDGOALS),clean)
-include $(patsubst %.o,%.d,$(filter-out %.res,$(LIB_OBJS)))
-endif
diff --git a/src/win32/libbac/libbac.vcproj b/src/win32/libbac/libbac.vcproj
deleted file mode 100644
index d8e1c6c..0000000
--- a/src/win32/libbac/libbac.vcproj
+++ /dev/null
@@ -1,1733 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="libbac"
-	ProjectGUID="{374BF775-AF68-4A88-814A-48F692DFFE5A}"
-	RootNamespace="libbac"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../compat;"../../../../depkgs-msvc/include";../.."
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_WIN32;BUILDING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib ssleay32.lib libeay32.lib "
-				OutputFile="$(OutDir)\bacula.dll"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="..\..\..\..\depkgs-msvc\lib"
-				ModuleDefinitionFile="msvc\bacula.def"
-				GenerateDebugInformation="true"
-				ImportLibrary="$(TargetDir)libbac.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../compat;"../../../../depkgs-msvc/include";../.."
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_WIN32;WIN32_VSS;BUILDING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib ssleay32.lib libeay32.lib "
-				OutputFile="$(OutDir)\bacula.dll"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="..\..\..\..\depkgs-msvc\lib"
-				ModuleDefinitionFile="msvc\bacula.def"
-				GenerateDebugInformation="true"
-				ImportLibrary="$(TargetDir)libbac.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\lib\address_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\alist.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\attr.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\attribs.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\msvc\bacula.def"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\base64.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\berrno.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\bfile.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\bget_msg.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\bnet.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\bnet_server.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\bpipe.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\bregex.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\bsnprintf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\bsock.c"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\bsys.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\btime.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\btimers.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\compat\compat.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\cram-md5.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\crc32.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\create_file.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\crypto.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\daemon.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\dlist.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\drivetype.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\edit.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\enable_priv.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\enh_fnmatch.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\find.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\find_one.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\fnmatch.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\fstype.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\hmac.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\htable.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\idcache.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\jcr.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\lex.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\makepath.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\match.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\md5.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\mem_pool.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\message.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\openssl.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\compat\print.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\pythonlib.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\queue.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\rblist.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\runscript.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\rwlock.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\findlib\save-cwd.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\scan.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\serial.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\sha1.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\signal.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\smartall.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\tls.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\tree.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\util.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\var.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\watchdog.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\compat\winapi.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\lib\workq.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\lib\address_conf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\alist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\alloca.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\attr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\base64.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\berrno.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\findlib\bfile.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\bits.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\bpipe.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\bregex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\bsd_queue.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\bsock.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\btime.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\btimers.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\btree.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\compat.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\crypto.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\dirent.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\dlist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\enh_fnmatch.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\sys\file.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\findlib\find.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\fnmatch.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\grp.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\htable.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\netinet\in.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\arpa\inet.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\sys\ioctl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\lex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\lib.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\md5.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\mem_pool.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\message.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\mingwconfig.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\ms_atl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\mswinver.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\sys\mtio.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\netdb.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\openssl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\parse_conf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\findlib\protos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\protos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\pwd.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\queue.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\rblist.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\runscript.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\rwlock.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\findlib\save-cwd.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\sched.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\serial.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\sha1.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\smartall.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\sys\socket.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\sys\stat.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\stdint.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\strings.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\syslog.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\tcpd.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\sys\time.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\tls.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\tree.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\unistd.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\var.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\sys\wait.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\waitq.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\watchdog.h"
-				>
-			</File>
-			<File
-				RelativePath="..\winapi.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\winconfig.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\winhost.h"
-				>
-			</File>
-			<File
-				RelativePath="..\compat\winsock.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\lib\workq.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/libbac/msvc/bacula.def b/src/win32/libbac/msvc/bacula.def
deleted file mode 100644
index 86830d1..0000000
--- a/src/win32/libbac/msvc/bacula.def
+++ /dev/null
@@ -1,510 +0,0 @@
-LIBRARY bacula.dll
-EXPORTS
-
-; address_conf.obj 
-?get_port_net_order at IPADDR@@QBEGXZ
-?get_address at IPADDR@@QAEPBDPADH at Z
-?get_first_address@@YAPBDPAVdlist@@PADH at Z
-?get_first_port_host_order@@YAHPAVdlist@@@Z
-?init_default_addresses@@YAXPAPAVdlist@@H at Z
-?store_addresses@@YAXPAUs_lex_context@@PAURES_ITEM@@HH at Z
-?store_addresses_address@@YAXPAUs_lex_context@@PAURES_ITEM@@HH at Z
-?store_addresses_port@@YAXPAUs_lex_context@@PAURES_ITEM@@HH at Z
-?free_addresses@@YAXPAVdlist@@@Z
-?sockaddr_get_port_net_order@@YAHPBUsockaddr@@@Z
-?sockaddr_to_ascii@@YAPADPBUsockaddr@@PADH at Z
- 
-; alist.obj 
-?first at alist@@QAEPAXXZ
-?next at alist@@QAEPAXXZ
-?prepend at alist@@QAEXPAX at Z
-?append at alist@@QAEXPAX at Z
-?remove at alist@@QAEPAXH at Z
-?get at alist@@QAEPAXH at Z
-?destroy at alist@@QAEXXZ
- 
-; attr.obj 
-?new_attr@@YAPAUATTR@@XZ
-?free_attr@@YAXPAUATTR@@@Z
-?unpack_attributes_record@@YAHPAVJCR@@JPADPAUATTR@@@Z
-?build_attr_output_fnames@@YAXPAVJCR@@PAUATTR@@@Z
-?print_ls_output@@YAXPAVJCR@@PAUATTR@@@Z
- 
-; attribs.obj 
-?select_data_stream@@YAHPAUFF_PKT@@@Z
-?encode_stat@@YAXPADPAUFF_PKT@@H at Z
-?decode_stat@@YAHPADPAUstat@@PAJ at Z
-?decode_LinkFI@@YAJPADPAUstat@@@Z
-?set_attributes@@YA_NPAVJCR@@PAUATTR@@PAUBFILE@@@Z
-?encode_attribsEx@@YAHPAVJCR@@PADPAUFF_PKT@@@Z
- 
-; base64.obj 
-?bin_to_base64@@YAHPADH0HH at Z
- 
-; berrno.obj 
-?strerror at berrno@@QAEPBDXZ
-?format_win32_message at berrno@@AAEXXZ
- 
-; bfile.obj 
-?is_win32_stream@@YA_NH at Z
-?stream_to_ascii@@YAPBDH at Z
-?processWin32BackupAPIBlock@@YA_NPAUBFILE@@PAXH at Z
-?binit@@YAXPAUBFILE@@@Z
-?set_portable_backup@@YA_NPAUBFILE@@@Z
-?set_prog@@YA_NPAUBFILE@@PADPAVJCR@@@Z
-?is_portable_backup@@YA_NPAUBFILE@@@Z
-?have_win32_api@@YA_NXZ
-?is_restore_stream_supported@@YA_NH at Z
-?bopen@@YAHPAUBFILE@@PBDHI at Z
-?bclose@@YAHPAUBFILE@@@Z
-?bread@@YAHPAUBFILE@@PAXI at Z
-?bwrite@@YAHPAUBFILE@@PAXI at Z
-?is_bopen@@YA_NPAUBFILE@@@Z
-?blseek@@YA_JPAUBFILE@@_JH at Z
- 
-; bget_msg.obj 
-?bget_msg@@YAHPAVBSOCK@@@Z
- 
-; bnet.obj 
-?bnet_recv@@YAJPAVBSOCK@@@Z
-?is_bnet_stop@@YA_NPAVBSOCK@@@Z
-?is_bnet_error@@YAHPAVBSOCK@@@Z
-?bnet_suppress_error_messages@@YAXPAVBSOCK@@_N at Z
-?bnet_despool_to_bsock@@YAHPAVBSOCK@@P6AXH at ZH@Z
-?bnet_send@@YA_NPAVBSOCK@@@Z
-?bnet_tls_server@@YA_NPAUTLS_Context@@PAVBSOCK@@PAValist@@@Z
-?bnet_tls_client@@YA_NPAUTLS_Context@@PAVBSOCK@@@Z
-?bnet_wait_data@@YAHPAVBSOCK@@H at Z
-?bnet_wait_data_intr@@YAHPAVBSOCK@@H at Z
-?bnet_connect@@YAPAVBSOCK@@PAVJCR@@HHPBDPAD2HH at Z
-?bnet_strerror@@YAPBDPAVBSOCK@@@Z
-?bnet_fsend@@YA_NPAVBSOCK@@PBDZZ
-?bnet_get_peer@@YAHPAVBSOCK@@PADH at Z
-?bnet_set_buffer_size@@YA_NPAVBSOCK@@IH at Z
-?bnet_sig@@YA_NPAVBSOCK@@H at Z
-?bnet_sig_to_ascii@@YAPBDPAVBSOCK@@@Z
-?bnet_close@@YAXPAVBSOCK@@@Z
-?term_bsock@@YAXPAVBSOCK@@@Z
-
-; bnet_server.obj
-?bnet_stop_thread_server@@YAXPAUpthread_t_@@@Z
-?bnet_thread_server@@YAXPAVdlist@@HPAUworkq_tag@@P6APAXPAX at Z@Z
-
-; bpipe.obj
-?run_program@@YAHPADH0 at Z
-?run_program_full_output@@YAHPADH0 at Z
-
-; bregex.obj
-b_regcomp
-b_regexec
-b_regerror
-b_regfree
-
-; bsnprintf.obj
-?bsnprintf@@YAHPADJPBDZZ
-?bvsnprintf@@YAHPADJPBD0 at Z
-
-; bsock.obj
-?close at BSOCK@@QAEXXZ
-?dup_bsock@@YAPAVBSOCK@@PAV1@@Z
-?fsend at BSOCK@@QAA_NPBDZZ
-?init_bsock@@YAPAVBSOCK@@PAVJCR@@HPBD1HPAUsockaddr@@@Z
-?recv at BSOCK@@QAEJXZ
-?send at BSOCK@@QAE_NXZ
-?signal at BSOCK@@QAE_NH at Z
-
-; bsys.obj
-?bmicrosleep@@YAHJJ at Z
-?bstrncpy@@YAPADPADPBDH at Z
-?bstrncpy@@YAPADPADAAVPOOL_MEM@@H at Z
-?bstrncat@@YAPADPADPBDH at Z
-?bstrcmp@@YA_NPBD0 at Z
-?cstrlen@@YAHPBD at Z
-?bfree@@YAXPAX at Z
-?b_malloc@@YAPAXPBDHI at Z
-?brealloc@@YAPAXPAXI at Z
-?_p@@YAXPAPAUpthread_mutex_t_@@@Z
-?_v@@YAXPAPAUpthread_mutex_t_@@@Z
-?create_pid_file@@YAXPADPBDH at Z
-?delete_pid_file@@YAHPADPBDH at Z
-?read_state_file@@YAXPADPBDH at Z
-?write_state_file@@YAXPADPBDH at Z
-?drop@@YAXPAD0 at Z
-?bfgets@@YAPADPADHPAU_iobuf@@@Z
-?escape_filename@@YAPADPBD at Z
- 
-; btime.obj 
-?bstrftime@@YAPADPADH_J at Z
-?bstrftimes@@YAPADPADH_J at Z
-?bstrftime_nc@@YAPADPADH_J at Z
-?bstrutime@@YAPADPADH_J at Z
-?str_to_utime@@YA_JPAD at Z
-?get_current_btime@@YA_JXZ
-?btime_to_unix@@YAJ_J at Z
-?btime_to_utime@@YA_J_J at Z
-?tm_woy@@YAHJ at Z
-?get_current_time@@YAXPAUdate_time@@@Z
-?tm_decode@@YAXPAUdate_time@@PAUtm@@@Z
- 
-; btimers.obj 
-?start_thread_timer@@YAPAUs_btimer_t@@PAUpthread_t_@@I at Z
-?start_bsock_timer@@YAPAUs_btimer_t@@PAVBSOCK@@I at Z
-?stop_bsock_timer@@YAXPAUs_btimer_t@@@Z
-?stop_thread_timer@@YAXPAUs_btimer_t@@@Z
- 
-; compat.obj 
-?SetVSSPathConvert@@YAXP6AHPBDPADH at ZP6AHPB_WPA_WH@Z at Z
-?wchar_2_UTF8@@YAHPADPB_WH at Z
-?random@@YAJXZ
-?srandom@@YAXI at Z
-?fstat@@YAHHPAUstat@@@Z
-?stat@@YAHPBDPAU0@@Z
-?fcntl@@YAHHHJ at Z
-?lstat@@YAHPBDPAUstat@@@Z
-?sleep@@YAXH at Z
-?strcasecmp@@YAHPBD0 at Z
-?gettimeofday@@YAHPAUtimeval@@PAUtimezone@@@Z
-?opendir@@YAPAXPBD at Z
-?closedir@@YAHPAX at Z
-?readdir_r@@YAHPAXPAUdirent@@PAPAU1@@Z
-?init_signals@@YAXP6AXH at Z@Z
-?init_stack_dump@@YAXXZ
-?pathconf@@YAJPBDH at Z
-?WSA_Init@@YAHXZ
-?win32_fputs@@YAHPBDPAU_iobuf@@@Z
-?win32_cgets@@YAPADPADH at Z
-?win32_unlink@@YAHPBD at Z
-?open_bpipe@@YAPAVBPIPE@@PADHPBD at Z
-?kill@@YAHHH at Z
-?close_bpipe@@YAHPAVBPIPE@@@Z
-?utime@@YAHPBDPAUutimbuf@@@Z
- 
-; cram-md5.obj 
-?cram_md5_challenge@@YA_NPAVBSOCK@@PADHH at Z
-?cram_md5_respond@@YA_NPAVBSOCK@@PADPAH2 at Z
- 
-; crc32.obj 
-?bcrc32@@YAIPAEH at Z
- 
-;create_file.obj 
-?create_file@@YAHPAVJCR@@PAUATTR@@PAUBFILE@@H at Z
- 
-; crypto.obj 
-?crypto_digest_new@@YAPAUDigest@@W4crypto_digest_t@@@Z
-?crypto_digest_update@@YA_NPAUDigest@@PBEI at Z
-?crypto_digest_finalize@@YA_NPAUDigest@@PAEPAI at Z
-?crypto_digest_free@@YAXPAUDigest@@@Z
-?init_crypto@@YAHXZ
-?cleanup_crypto@@YAHXZ
-?crypto_sign_new@@YAPAUSignature@@XZ
-?crypto_sign_get_digest@@YA?AW4crypto_error_t@@PAUSignature@@PAUX509_Keypair@@PAPAUDigest@@@Z
-?crypto_sign_verify@@YA?AW4crypto_error_t@@PAUSignature@@PAUX509_Keypair@@PAUDigest@@@Z
-?crypto_sign_add_signer@@YAHPAUSignature@@PAUDigest@@PAUX509_Keypair@@@Z
-?crypto_sign_encode@@YAHPAUSignature@@PAEPAI at Z
-?crypto_sign_decode@@YAPAUSignature@@PBEI at Z
-?crypto_sign_free@@YAXPAUSignature@@@Z
-?crypto_keypair_new@@YAPAUX509_Keypair@@XZ
-?crypto_keypair_dup@@YAPAUX509_Keypair@@PAU1@@Z
-?crypto_keypair_load_cert@@YAHPAUX509_Keypair@@PBD at Z
-?crypto_keypair_has_key@@YA_NPBD at Z
-?crypto_keypair_load_key@@YAHPAUX509_Keypair@@PBDP6AHPADHPBX at Z3@Z
-?crypto_keypair_free@@YAXPAUX509_Keypair@@@Z
-?crypto_session_new@@YAPAUCrypto_Session@@W4crypto_cipher_t@@PAValist@@@Z
-?crypto_session_free@@YAXPAUCrypto_Session@@@Z
-?crypto_session_encode@@YA_NPAUCrypto_Session@@PAEPAI at Z
-?crypto_session_decode@@YA?AW4crypto_error_t@@PBEIPAValist@@PAPAUCrypto_Session@@@Z
-?crypto_cipher_new@@YAPAUCipher_Context@@PAUCrypto_Session@@_NPAI at Z
-?crypto_cipher_update@@YA_NPAUCipher_Context@@PBEI1PAI at Z
-?crypto_cipher_finalize@@YA_NPAUCipher_Context@@PAEPAI at Z
-?crypto_cipher_free@@YAXPAUCipher_Context@@@Z
-?crypto_default_pem_callback@@YAHPADHPBX at Z
-?crypto_digest_name@@YAPBDPAUDigest@@@Z
-?crypto_digest_stream_type@@YA?AW4crypto_digest_t@@H at Z
-?crypto_strerror@@YAPBDW4crypto_error_t@@@Z
- 
-; daemon.obj 
-?daemon_start@@YAXXZ
- 
-; dlist.obj 
-?append at dlist@@QAEXPAX at Z
-?prepend at dlist@@QAEXPAX at Z
-?insert_before at dlist@@QAEXPAX0 at Z
-?binary_insert at dlist@@QAEPAXPAXP6AH00 at Z@Z
-?first at dlist@@QBEPAXXZ
-?last at dlist@@QBEPAXXZ
-?binary_insert_multiple at dlist@@QAEXPAXP6AH00 at Z@Z
-?binary_search at dlist@@QAEPAXPAXP6AH00 at Z@Z
-?remove at dlist@@QAEXPAX at Z
-?next at dlist@@QAEPAXPAX at Z
-?destroy at dlist@@QAEXXZ
-?new_dlistString@@YAPAVdlistString@@PBD at Z
-
-; drivetype.obj
-?drivetype@@YA_NPBDPADH at Z
-
-; edit.obj
-?str_to_uint64@@YA_KPAD at Z
-?str_to_int64@@YA_JPAD at Z
-?edit_uint64_with_commas@@YAPAD_KPAD at Z
-?edit_uint64_with_suffix@@YAPAD_KPAD at Z
-?edit_uint64@@YAPAD_KPAD at Z
-?edit_int64@@YAPAD_JPAD at Z
-?duration_to_utime@@YA_NPADPA_J at Z
-?edit_utime@@YAPAD_JPADH at Z
-?size_to_uint64@@YA_NPADHPA_K at Z
-?is_a_number@@YA_NPBD at Z
-?is_an_integer@@YA_NPBD at Z
-?is_name_valid@@YA_NPADPAPAD at Z
-?add_commas@@YAPADPAD0 at Z
- 
-; enable_priv.obj 
-?enable_backup_privileges@@YAHPAVJCR@@H at Z
- 
-; enh_fnmatch.obj 
- 
-; find.obj 
-?init_find_files@@YAPAUFF_PKT@@XZ
-?set_find_options@@YAXPAUFF_PKT@@HJ at Z
-?get_win32_driveletters@@YAHPAUFF_PKT@@PAD at Z
-?find_files@@YAHPAVJCR@@PAUFF_PKT@@P6AH1PAX_N at Z2@Z
-?term_find_files@@YAHPAUFF_PKT@@@Z
- 
-; find_one.obj 
-?find_one_file@@YAHPAVJCR@@PAUFF_PKT@@P6AH1PAX_N at Z2PADI3@Z
- 
-; fnmatch.obj 
-fnmatch
- 
-; fstype.obj 
-?fstype@@YA_NPBDPADH at Z
- 
-; hmac.obj 
-?hmac_md5@@YAXPAEH0H0 at Z
- 
-; htable.obj 
- 
-; idcache.obj 
-?getuser@@YAPADIPADH at Z
-?getgroup@@YAPADIPADH at Z
- 
-; jcr.obj 
-?lock_jobs@@YAXXZ
-?unlock_jobs@@YAXXZ
-?term_last_jobs_list@@YAXXZ
-?lock_last_jobs_list@@YAXXZ
-?unlock_last_jobs_list@@YAXXZ
-?job_end_push@@YAXPAVJCR@@P6AX0PAX at Z1@Z
-?new_jcr@@YAPAVJCR@@HP6AXPAV1@@Z at Z
-?inc_use_count at JCR@@QAEXXZ
-?lock at JCR@@QAEXXZ
-?unlock at JCR@@QAEXXZ
-?init_mutex at JCR@@QAEXXZ
-?b_free_jcr@@YAXPBDHPAVJCR@@@Z
-?dec_use_count at JCR@@QAEXXZ
-?use_count at JCR@@QAEHXZ
-?destroy_mutex at JCR@@QAEXXZ
-?get_jcr_by_id@@YAPAVJCR@@I at Z
-?get_jcr_by_session@@YAPAVJCR@@II at Z
-?get_jcr_by_partial_name@@YAPAVJCR@@PAD at Z
-?get_jcr_by_full_name@@YAPAVJCR@@PAD at Z
-?set_jcr_job_status@@YAXPAVJCR@@H at Z
-?jcr_walk_start@@YAPAVJCR@@XZ
-?jcr_walk_next@@YAPAVJCR@@PAV1@@Z
-?jcr_walk_end@@YAXPAVJCR@@@Z
-?init_jcr_subsystem@@YA_NXZ
- 
-; lex.obj 
-?scan_to_eol@@YAXPAUs_lex_context@@@Z
-?lex_set_default_error_handler@@YAXPAUs_lex_context@@@Z
-?lex_set_error_handler_error_type@@YAHPAUs_lex_context@@H at Z
-?lex_close_file@@YAPAUs_lex_context@@PAU1@@Z
-?lex_open_file@@YAPAUs_lex_context@@PAU1 at PBDP6AX1H01ZZ@Z
-?lex_tok_to_str@@YAPBDH at Z
-?lex_get_token@@YAHPAUs_lex_context@@H at Z
- 
-; makepath.obj 
- 
-; match.obj 
-?match_files@@YAHPAVJCR@@PAUFF_PKT@@P6AH1PAX_N at Z2@Z
-?term_include_exclude_files@@YAXPAUFF_PKT@@@Z
-?add_fname_to_include_list@@YAXPAUFF_PKT@@HPBD at Z
-?add_fname_to_exclude_list@@YAXPAUFF_PKT@@PBD at Z
-?file_is_included@@YAHPAUFF_PKT@@PBD at Z
-?file_is_excluded@@YAHPAUFF_PKT@@PBD at Z
- 
-; md5.obj 
-?MD5Init@@YAXPAUMD5Context@@@Z
-?MD5Update@@YAXPAUMD5Context@@PAEI at Z
-?MD5Final@@YAXQAEPAUMD5Context@@@Z
- 
-; mem_pool.obj 
-?sm_get_pool_memory@@YAPADPBDHH at Z
-?sm_get_memory@@YAPADPBDHJ at Z
-?sm_sizeof_pool_memory@@YAJPBDHPAD at Z
-?sm_realloc_pool_memory@@YAPADPBDHPADJ at Z
-?sm_check_pool_memory_size@@YAPADPBDHPADJ at Z
-?sm_free_pool_memory@@YAXPBDHPAD at Z
-?close_memory_pool@@YAXXZ
-?print_memory_pool_stats@@YAXXZ
-?pm_strcat@@YAHPAPADPBD at Z
-?pm_strcat@@YAHAAPADPBD at Z
-?c_str at POOL_MEM@@QBEPADXZ
-?pm_strcat@@YAHAAVPOOL_MEM@@PBD at Z
-?check_size at POOL_MEM@@QAEPADJ at Z
-?pm_strcpy@@YAHPAPADPBD at Z
-?pm_strcpy@@YAHAAPADPBD at Z
-?pm_strcpy@@YAHAAPADAAVPOOL_MEM@@@Z
-?pm_strcpy@@YAHAAVPOOL_MEM@@PBD at Z
-?max_size at POOL_MEM@@QAEJXZ
- 
-; message.obj 
-?my_name_is@@YAXHQAPADPBD at Z
-?init_msg@@YAXPAVJCR@@PAVMSGS@@@Z
-?init_console_msg@@YAXPBD at Z
-?add_msg_dest@@YAXPAVMSGS@@HHPAD1 at Z
-?rem_msg_dest@@YAXPAVMSGS@@HHPAD at Z
-?close_msg@@YAXPAVJCR@@@Z
-?set_errno at berrno@@QAEXH at Z
-?free_msgs_res@@YAXPAVMSGS@@@Z
-?term_msg@@YAXXZ
-?dispatch_message@@YAXPAVJCR@@HJPAD at Z
-?c_str at POOL_MEM@@QBEPADXZ
-?d_msg@@YAXPBDHH0ZZ
-?get_basename@@YAPBDPBD at Z
-?set_trace@@YAXH at Z
-?get_trace@@YA_NXZ
-?p_msg@@YAXPBDHH0ZZ
-?e_msg@@YAXPBDHHH0ZZ
-?Jmsg@@YAXPAVJCR@@HJPBDZZ
-?j_msg@@YAXPBDHPAVJCR@@HJ0ZZ
-?m_msg@@YAHPBDHPAPAD0ZZ
-?m_msg@@YAHPBDHAAPAD0ZZ
-?Mmsg@@YAHPAPADPBDZZ
-?Mmsg@@YAHAAPADPBDZZ
-?Mmsg@@YAHAAVPOOL_MEM@@PBDZZ
-?Qmsg@@YAXPAVJCR@@HJPBDZZ
-?dequeue_messages@@YAXPAVJCR@@@Z
-?q_msg@@YAXPBDHPAVJCR@@HJ0ZZ
- 
-; print.obj 
- 
-; pythonlib.obj 
-?generate_daemon_event@@YAHPAVJCR@@PBD at Z
-?init_python_interpreter@@YAXPBD00 at Z
-?term_python_interpreter@@YAXXZ
- 
-; queue.obj 
-?qinsert@@YAXPAUb_queue@@0 at Z
-?qnext@@YAPAUb_queue@@PAU1 at 0@Z
-?qdchain@@YAPAUb_queue@@PAU1@@Z
-
-; runscript.obj 
-?new_runscript@@YAPAVRUNSCRIPT@@XZ
-?reset_default at RUNSCRIPT@@QAEX_N at Z
-?copy_runscript@@YAPAVRUNSCRIPT@@PAV1@@Z
-?free_runscript@@YAXPAVRUNSCRIPT@@@Z
-?run_scripts@@YAHPAVJCR@@PAValist@@PBD at Z
-?set_command at RUNSCRIPT@@QAEXPBD at Z
-?set_target at RUNSCRIPT@@QAEXPBD at Z
-?run at RUNSCRIPT@@QAEHPAVJCR@@PBD at Z
-?free_runscripts@@YAXPAValist@@@Z
-?debug at RUNSCRIPT@@QAEXXZ
- 
-; rwlock.obj 
-?rwl_init@@YAHPAUs_rwlock_tag@@@Z
-?rwl_destroy@@YAHPAUs_rwlock_tag@@@Z
-?rwl_writelock@@YAHPAUs_rwlock_tag@@@Z
-?rwl_writeunlock@@YAHPAUs_rwlock_tag@@@Z
- 
-; save-cwd.obj 
- 
-; scan.obj 
-?strip_leading_space@@YAXPAD at Z
-?strip_trailing_junk@@YAXPAD at Z
-?strip_trailing_newline@@YAXPAD at Z
-?skip_spaces@@YA_NPAPAD at Z
-?skip_nonspaces@@YA_NPAPAD at Z
-?fstrsch@@YAHPBD0 at Z
-?next_arg@@YAPADPAPAD at Z
-?parse_args@@YAHPADPAPADPAH11H at Z
-?parse_args_only@@YAHPADPAPADPAH11H at Z
-?bsscanf@@YAHPBD0ZZ
- 
-; serial.obj 
-?serial_int32@@YAXQAPAEJ at Z
-?serial_uint32@@YAXQAPAEI at Z
-?serial_uint64@@YAXQAPAE_K at Z
-?serial_btime@@YAXQAPAE_J at Z
-?serial_float64@@YAXQAPAEN at Z
-?serial_string@@YAXQAPAEQBD at Z
-?unserial_int32@@YAJQAPAE at Z
-?unserial_uint32@@YAIQAPAE at Z
-?unserial_uint64@@YA_KQAPAE at Z
-?unserial_btime@@YA_JQAPAE at Z
-?unserial_float64@@YANQAPAE at Z
-?unserial_string@@YAXQAPAEQAD at Z
- 
-; sha1.obj 
- 
-; signal.obj 
- 
-; smartall.obj 
-?sm_free@@YAXPBDHPAX at Z
-?sm_malloc@@YAPAXPBDHI at Z
-?sm_calloc@@YAPAXPBDHII at Z
-?sm_realloc@@YAPAXPBDHPAXI at Z
-?sm_dump@@YAX_N at Z
-?sm_check@@YAXPBDH_N at Z
-?sm_static@@YAXH at Z
-
-; tls.obj
-?new_tls_context@@YAPAUTLS_Context@@PBD000P6AHPADHPBX at Z20_N@Z
-?free_tls_context@@YAXPAUTLS_Context@@@Z
-
-; tree.obj
-?new_tree@@YAPAUs_tree_root@@H at Z
-?free_tree@@YAXPAUs_tree_root@@@Z
-?insert_tree_node@@YAPAUs_tree_node@@PAD0HPAUs_tree_root@@PAU1@@Z
-?strrchr@@YAPADPADH at Z
-?tree_getpath@@YAHPAUs_tree_node@@PADH at Z
-?tree_cwd@@YAPAUs_tree_node@@PADPAUs_tree_root@@PAU1@@Z
-; rblist
-?insert at rblist@@QAEPAXPAXP6AH00 at Z@Z
-?next at rblist@@QAEPAXPAX at Z
-
-; util.obj 
-?is_buf_zero@@YA_NPADH at Z
-?lcase@@YAXPAD at Z
-?bash_spaces@@YAXPAD at Z
-?bash_spaces@@YAXAAVPOOL_MEM@@@Z
-?unbash_spaces@@YAXPAD at Z
-?unbash_spaces@@YAXAAVPOOL_MEM@@@Z
-?encode_time@@YAPADJPAD at Z
-?jobstatus_to_ascii@@YAXHPADH at Z
-?job_status_to_str@@YAPBDH at Z
-?job_type_to_str@@YAPBDH at Z
-?job_level_to_str@@YAPBDH at Z
-?encode_mode@@YAPADIPAD at Z
-?do_shell_expansion@@YAHPADH at Z
-?make_session_key@@YAXPAD0H at Z
-?edit_job_codes@@YAPADPAVJCR@@PAD1PBD at Z
-?set_working_directory@@YAXPAD at Z
- 
-; var.obj 
-?var_create@@YA?AW4var_rc_t@@PAPAUvar_st@@@Z
-?var_destroy@@YA?AW4var_rc_t@@PAUvar_st@@@Z
-?var_config@@YA?AW4var_rc_t@@PAUvar_st@@W4var_config_t@@ZZ
-?var_unescape@@YA?AW4var_rc_t@@PAUvar_st@@PBDHPADHH at Z
-?var_expand@@YA?AW4var_rc_t@@PAUvar_st@@PBDHPAPADPAHH at Z
-?var_strerror@@YAPBDPAUvar_st@@W4var_rc_t@@@Z
- 
-; watchdog.obj 
-?start_watchdog@@YAHXZ
-?stop_watchdog@@YAHXZ
-?new_watchdog@@YAPAUs_watchdog_t@@XZ
-?register_watchdog@@YA_NPAUs_watchdog_t@@@Z
- 
-; winapi.obj 
-?InitWinAPIWrapper@@YAXXZ
- 
-; workq.obj 
diff --git a/src/win32/libwin32/aboutDialog.cpp b/src/win32/libwin32/aboutDialog.cpp
deleted file mode 100644
index 26d1fd6..0000000
--- a/src/win32/libwin32/aboutDialog.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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.
-*/
-/*
- *
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
-*/
-
-#include "bacula.h"
-#include "win32.h"
-
-static BOOL CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
-   /* Get the dialog class pointer from USERDATA */
-   aboutDialog *about;
-
-   switch (uMsg) {
-   case WM_INITDIALOG:
-      /* save the dialog class pointer */
-      SetWindowLong(hwnd, GWL_USERDATA, lParam);
-      about = (aboutDialog *)lParam;
-
-      /* Show the dialog */
-      SetForegroundWindow(hwnd);
-      about->m_visible = true;
-      return true;
-
-   case WM_COMMAND:
-      switch (LOWORD(wParam)) {
-      case IDCANCEL:
-      case IDOK:
-         EndDialog(hwnd, true);
-         about = (aboutDialog *)GetWindowLong(hwnd, GWL_USERDATA);
-         about->m_visible = false;
-         return true;
-      }
-      break;
-
-   case WM_DESTROY:
-      EndDialog(hwnd, false);
-      about = (aboutDialog *)GetWindowLong(hwnd, GWL_USERDATA);
-      about->m_visible = false;
-      return true;
-   }
-   return false;
-}
-
-void aboutDialog::show(bool show)
-{
-   if (show && !m_visible) {
-      DialogBoxParam(appInstance, MAKEINTRESOURCE(IDD_ABOUT), NULL,
-         (DLGPROC)DialogProc, (LPARAM)this);
-   }
-}
diff --git a/src/win32/libwin32/aboutDialog.h b/src/win32/libwin32/aboutDialog.h
deleted file mode 100644
index e8371b9..0000000
--- a/src/win32/libwin32/aboutDialog.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- *   Version $Id$
- */
-
-#ifndef __ABOUT_DIALOG_H_
-#define __ABOUT_DIALOG_H_ 1
-
-/* Define the aboutDialog class */
-class aboutDialog
-{
-public:
-   aboutDialog() { m_visible =false; };
-  ~aboutDialog() { };
-
-   void show(bool show);
-
-   bool m_visible;
-};
-
-#endif /* __ABOUT_H_ */
diff --git a/src/win32/libwin32/bacula.bmp b/src/win32/libwin32/bacula.bmp
deleted file mode 100644
index a31eb16..0000000
Binary files a/src/win32/libwin32/bacula.bmp and /dev/null differ
diff --git a/src/win32/libwin32/bacula.ico b/src/win32/libwin32/bacula.ico
deleted file mode 100644
index f6d50bf..0000000
Binary files a/src/win32/libwin32/bacula.ico and /dev/null differ
diff --git a/src/win32/libwin32/bacula.rc b/src/win32/libwin32/bacula.rc
deleted file mode 100644
index ca4cb3c..0000000
--- a/src/win32/libwin32/bacula.rc
+++ /dev/null
@@ -1,149 +0,0 @@
-
-/*
- * Generic version of Bacula resource 
- * 
- */
-
-#include <winuser.h>
-#include <winver.h>
-#include "res.h"
-#include "../../version.h"
-
-/********************************************************************
- *
- * Icons
- *
- * Icon with lowest ID value placed first to ensure application icon
- * remains consistent on all systems.
- */
-IDI_BACULA          ICON    "../libwin32/bacula.ico"
-IDI_IDLE            ICON    "../libwin32/idle.ico"
-IDI_RUNNING         ICON    "../libwin32/running.ico"
-IDI_JOB_ERROR       ICON    "../libwin32/error.ico"
-IDI_JOB_WARNING     ICON    "../libwin32/warn.ico"
-
-/********************************************************************        
- *
- * Menu
- *
- */
-IDR_TRAYMENU MENU
-BEGIN
-    POPUP "tray"
-    BEGIN
-        MENUITEM "&Status",            ID_STATUS
-        MENUITEM SEPARATOR
-        MENUITEM "&About Bacula",      ID_ABOUT
-//      MENUITEM SEPARATOR
-//      MENUITEM "&Close Bacula",      ID_CLOSE
-    END
-END
-
-
-/********************************************************************
- *
- * Version
- *
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,1,0,0
- PRODUCTVERSION 1,1,0,0
- FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0
-#endif
- FILEOS VOS_NT_WINDOWS32
- FILETYPE VFT_APP
- FILESUBTYPE 0
-BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-        BLOCK "040904E0" // Lang=US English, CharSet=Windows Multiligual
-        BEGIN
-            VALUE "Comments", "by Kern Sibbald\0"
-            VALUE "CompanyName", "Bacula Project\0"
-            VALUE "FileDescription", "Bacula File daemon for Win32\0"
-            VALUE "FileVersion", VERSION "\0"
-            VALUE "InternalName", "Bacula\0"
-            VALUE "LegalCopyright", "Copyright 2012 Free Software Foundation Europe e.V., 1999-2009\0"
-            VALUE "LegalTrademarks", "Licensed under GNU AGPLv3\0"
-            VALUE "OriginalFilename", "bacula-fd.exe\0"
-            VALUE "PrivateBuild", "\0"
-            VALUE "ProductName", "Bacula - Windows Version\0"
-            VALUE "ProductVersion", VERSION
-            VALUE "SpecialBuild", "\0"
-        END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-        VALUE "Translation", 0x409, 1252 // US English, Multilingual
-    END
-END
-
-
-/***********************************************************************
- *
- * Bitmap
- *
- */
-IDB_BACULABMP           BITMAP  DISCARDABLE     "../libwin32/bacula.bmp"
-
-/***********************************************************************
- *
- * String Table
- */
-STRINGTABLE 
-BEGIN
-    IDI_BACULA              "Bacula"
-END
-
-/***********************************************************************
- *
- * About Dialog
- */
-IDD_ABOUT DIALOG  0, 0, 250, 145
-#ifndef MINGW64
-STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
-#endif
-CAPTION "About Bacula"
-FONT 8, "MS Sans Serif"
-BEGIN
-#ifndef MINGW64
-    DEFPUSHBUTTON   "OK",IDOK,190,120,50,15
-#endif
-//  CONTROL         "\3", IDC_BACULABMP,"Static",SS_ICON | SS_CENTERIMAGE |
-//                  SS_SUNKEN,7,5,73,65
-#if !defined(HAVE_MINGW) && !defined(MINGW64)
-    CONTROL         IDB_BACULABMP,IDB_BACULABMP,"Static",SS_BITMAP|SS_SUNKEN,7,5,32,32
-#endif
-
-    LTEXT           "      by Kern Sibbald",-1,134,38,78,10
-    LTEXT           "For more information, see:",-1,115,60,100,10
-    LTEXT           "         www.bacula.org",-1,115,70,100,10
-    LTEXT           "Copyright (C) 1999-2012, Free Software Foundation Europe e.V.",-1,7,120,175,10
-    LTEXT           "Licensed under GNU AGPLv3",-1,7,130,175,10
-    RTEXT           "Build Date:",-1,108,24,42,8
-    RTEXT           "Bacula Version:",-1,100,9,50,8
-    LTEXT           VERSION,-1,159,10,65,8
-    LTEXT           BDATE,-1,159,24,65,10
-
-END
-
-/************************************************************************
- *
- * Status Dialog
- */
-IDD_STATUS DIALOGEX 0, 0, 411, 244
-#ifndef MINGW64
-STYLE DS_SETFONT | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
-#endif
-CAPTION "Bacula Status"
-FONT 8, "Courier New"
-BEGIN
-#ifndef MINGW64
-    DEFPUSHBUTTON   "&OK",IDOK,355,5,51,15
-    EDITTEXT        IDC_TEXTDISPLAY, 2, 2, 350, 240, WS_VSCROLL | WS_HSCROLL | WS_BORDER | ES_READONLY | ES_MULTILINE
-#endif
-END
diff --git a/src/win32/libwin32/error.ico b/src/win32/libwin32/error.ico
deleted file mode 100644
index a8f85f1..0000000
Binary files a/src/win32/libwin32/error.ico and /dev/null differ
diff --git a/src/win32/libwin32/idle.ico b/src/win32/libwin32/idle.ico
deleted file mode 100644
index ce5315f..0000000
Binary files a/src/win32/libwin32/idle.ico and /dev/null differ
diff --git a/src/win32/libwin32/main.cpp b/src/win32/libwin32/main.cpp
deleted file mode 100644
index f744a6b..0000000
--- a/src/win32/libwin32/main.cpp
+++ /dev/null
@@ -1,687 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2011 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.
- */
-
-/* 
- * 
- *  Kern Sibbald, August 2007
- *
- * Note, some of the original Bacula Windows startup and service handling code
- *  was derived from VNC code that was used in apcupsd then ported to 
- *  Bacula.  However, since then the code has been significantly enhanced 
- *  and largely rewritten.  
- *
- * Evidently due to the nature of Windows startup code and service
- *  handling code, certain similarities remain. Thanks to the original
- *  VNC authors.
- *
- * This is a generic main routine, which is used by all three
- *  of the daemons. Each one compiles it with slightly different
- *  #defines.
- *
- */
-
-#include "bacula.h"
-#include "win32.h"
-#include <signal.h>
-#include <pthread.h>
-
-#undef  _WIN32_IE
-#ifdef MINGW64
-# define _WIN32_IE 0x0501
-#else
-# define _WIN32_IE 0x0401
-#endif  // MINGW64
-#undef  _WIN32_WINNT
-#define _WIN32_WINNT 0x0501
-#include <commctrl.h>
-
-
-/* Globals */
-HINSTANCE appInstance;
-DWORD mainthreadId;
-bool opt_debug = false;
-bool have_service_api;
-DWORD service_thread_id = 0;
-char win_os[300];
-
-bool GetWindowsVersionString(LPTSTR osbuf, int maxsiz);
-
-
-#define MAX_COMMAND_ARGS 100
-static char *command_args[MAX_COMMAND_ARGS] = {LC_APP_NAME, NULL};
-static int num_command_args = 1;
-static pid_t main_pid;
-static pthread_t main_tid;
-
-const char usage[] = APP_NAME "[/debug] [/service] [/run] [/kill] [/install] [/remove] [/help]\n";
-
-/*
- *
- * Main Windows entry point.
- *
- * We parse the command line and either calls the main App
- *   or starts up the service.
- */
-int WINAPI WinMain(HINSTANCE Instance, HINSTANCE /*PrevInstance*/, PSTR CmdLine, 
-                   int /*show*/)
-{
-   char *cmdLine = CmdLine;
-   char *wordPtr, *tempPtr;
-   int i, quote;
-   OSVERSIONINFO osversioninfo;
-   osversioninfo.dwOSVersionInfoSize = sizeof(osversioninfo);
-
-
-   /* Save the application instance and main thread id */
-   appInstance = Instance;
-   mainthreadId = GetCurrentThreadId();
-
-   if (GetVersionEx(&osversioninfo) && 
-       osversioninfo.dwPlatformId == VER_PLATFORM_WIN32_NT) {
-      have_service_api = true;
-   }
-
-   GetWindowsVersionString(win_os, sizeof(win_os));
-
-   main_pid = getpid();
-   main_tid = pthread_self();
-
-   INITCOMMONCONTROLSEX initCC = {
-      sizeof(INITCOMMONCONTROLSEX), 
-      ICC_STANDARD_CLASSES
-   };
-
-   InitCommonControlsEx(&initCC);
-
-   /*
-    * Funny things happen with the command line if the
-    * execution comes from c:/Program Files/bacula/bacula.exe
-    * We get a command line like: Files/bacula/bacula.exe" options
-    * I.e. someone stops scanning command line on a space, not
-    * realizing that the filename is quoted!!!!!!!!!!
-    * So if first character is not a double quote and
-    * the last character before first space is a double
-    * quote, we throw away the junk.
-    */
-
-   wordPtr = cmdLine;
-   while (*wordPtr && *wordPtr != ' ')
-      wordPtr++;
-   if (wordPtr > cmdLine)      /* backup to char before space */
-      wordPtr--;
-   /* if first character is not a quote and last is, junk it */
-   if (*cmdLine != '"' && *wordPtr == '"') {
-      cmdLine = wordPtr + 1;
-   }
-
-   /*
-    * Build Unix style argc *argv[] for the main "Unix" code
-    *  stripping out any Windows options 
-    */
-
-   /* Don't NULL command_args[0] !!! */
-   for (i=1;i<MAX_COMMAND_ARGS;i++) {
-      command_args[i] = NULL;
-   }
-
-   char *pszArgs = bstrdup(cmdLine);
-   wordPtr = pszArgs;
-   quote = 0;
-   while  (*wordPtr && (*wordPtr == ' ' || *wordPtr == '\t'))
-      wordPtr++;
-   if (*wordPtr == '\"') {
-      quote = 1;
-      wordPtr++;
-   } else if (*wordPtr == '/') {
-      /* Skip Windows options */
-      while (*wordPtr && (*wordPtr != ' ' && *wordPtr != '\t'))
-         wordPtr++;
-      while  (*wordPtr && (*wordPtr == ' ' || *wordPtr == '\t'))
-         wordPtr++;
-   }
-   if (*wordPtr) {
-      while (*wordPtr && num_command_args < MAX_COMMAND_ARGS) {
-         tempPtr = wordPtr;
-         if (quote) {
-            while (*tempPtr && *tempPtr != '\"')
-               tempPtr++;
-            quote = 0;
-         } else {
-            while (*tempPtr && *tempPtr != ' ')
-            tempPtr++;
-         }
-         if (*tempPtr)
-            *(tempPtr++) = '\0';
-         command_args[num_command_args++] = wordPtr;
-         wordPtr = tempPtr;
-         while (*wordPtr && (*wordPtr == ' ' || *wordPtr == '\t'))
-            wordPtr++;
-         if (*wordPtr == '\"') {
-            quote = 1;
-            wordPtr++;
-         }
-      }
-   }
-
-   /*
-    * Now process Windows command line options. Most of these options
-    *  are single shot -- i.e. we accept one option, do something and
-    *  terminate.
-    */
-   for (i = 0; i < (int)strlen(cmdLine); i++) {
-      char *p = &cmdLine[i];
-
-      if (*p <= ' ') {
-         continue;                    /* toss junk */
-      }
-
-      if (*p != '/') {
-         break;                       /* syntax error */
-      }
-
-      /* Start as a service? */
-      if (strncasecmp(p, "/service", 8) == 0) {
-         return baculaServiceMain();      /* yes, run as a service */
-      }
-
-      /* Stop any running copy? */
-      if (strncasecmp(p, "/kill", 5) == 0) {
-         return stopRunningBacula();
-      }
-
-      /* Run app as user program? */
-      if (strncasecmp(p, "/run", 4) == 0) {
-         return BaculaAppMain();         /* yes, run as a user program */
-      }
-
-      /* Install Bacula in registry? */
-      if (strncasecmp(p, "/install", 8) == 0) {
-         return installService(p+8);    /* Pass command options */
-      }
-
-      /* Remove Bacula registry entry? */
-      if (strncasecmp(p, "/remove", 7) == 0) {
-         return removeService();
-      }
-
-      /* Set debug mode? -- causes more dialogs to be displayed */
-      if (strncasecmp(p, "/debug", 6) == 0) {
-         opt_debug = true;
-         i += 6;                /* skip /debug */
-         continue;
-      }
-
-      /* Display help? -- displays usage */
-      if (strncasecmp(p, "/help", 5) == 0) {
-         MessageBox(NULL, usage, APP_DESC, MB_OK|MB_ICONINFORMATION);
-         return 0;
-      }
-      
-      MessageBox(NULL, cmdLine, _("Bad Command Line Option"), MB_OK);
-
-      /* Show the usage dialog */
-      MessageBox(NULL, usage, APP_DESC, MB_OK | MB_ICONINFORMATION);
-
-      return 1;
-   }
-   return BaculaAppMain();
-}
-
-#ifndef HAVE_TRAY_MONITOR
-/* Minimalist winproc when don't have tray monitor */
-LRESULT CALLBACK bacWinProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
-{
-   switch (iMsg) {
-   case WM_DESTROY:
-      PostQuitMessage(0);
-      return 0;
-   }
-   return DefWindowProc(hwnd, iMsg, wParam, lParam);
-}
-#endif
-
-
-/*
- * Called as a thread from BaculaAppMain()
- * Here we handle the Windows messages
- */
-void *Main_Msg_Loop(LPVOID lpwThreadParam) 
-{
-   MSG msg;
-
-   pthread_detach(pthread_self());
-
-   /*
-    * Since we are the only thread with a message loop
-    * mark ourselves as the service thread so that
-    * we can receive all the window events.
-    */
-   service_thread_id = GetCurrentThreadId();
-
-#ifdef HAVE_TRAY_MONITOR
-   /* Create tray icon & menu if we're running as an app */
-   trayMonitor *monitor = new trayMonitor();
-   if (monitor == NULL) {
-      PostQuitMessage(0);
-   }
-
-#else
-   /* Create a window to handle Windows messages */
-   WNDCLASSEX baclass;
-
-   baclass.cbSize         = sizeof(baclass);
-   baclass.style          = 0;
-   baclass.lpfnWndProc    = bacWinProc;
-   baclass.cbClsExtra     = 0;
-   baclass.cbWndExtra     = 0;
-   baclass.hInstance      = appInstance;
-   baclass.hIcon          = NULL;
-   baclass.hCursor        = NULL;
-   baclass.hbrBackground  = NULL;
-   baclass.lpszMenuName   = NULL;
-   baclass.lpszClassName  = APP_NAME;
-   baclass.hIconSm        = NULL;
-
-   RegisterClassEx(&baclass);
-
-   if (CreateWindow(APP_NAME, APP_NAME, WS_OVERLAPPEDWINDOW,
-                CW_USEDEFAULT, CW_USEDEFAULT, 0, 0,
-                NULL, NULL, appInstance, NULL) == NULL) {
-      PostQuitMessage(0);
-   }
-#endif
-
-   /* Now enter the Windows message handling loop until told to quit! */
-   while (GetMessage(&msg, NULL, 0,0) ) {
-      TranslateMessage(&msg);
-      DispatchMessage(&msg);
-   }
-
-   /* If we get here, we are shutting down */
-
-#ifdef HAVE_TRAY_MONITOR
-   if (monitor != NULL) {
-      delete monitor;
-   }
-#endif
-
-   if (have_service_api) {
-      /* Mark that we're no longer running */
-      service_thread_id = 0;
-      /* Tell the service manager that we've stopped. */
-      ReportStatus(SERVICE_STOPPED, service_error, 0);
-   }  
-   /* Tell main "Unix" program to go away */
-   terminate_app(0);
-
-   /* Should not get here */
-   pthread_kill(main_tid, SIGTERM);   /* ask main thread to terminate */
-   sleep(1);
-   kill(main_pid, SIGTERM);           /* kill main thread */
-   _exit(0);
-}
- 
-
-/*
- * This is the main routine for Bacula when running as an application,
- *  or after the service has started up.
- */
-int BaculaAppMain()
-{
-   pthread_t tid;
-   DWORD dwCharsWritten;
-
-   OSDependentInit();
-
-   /* If no arguments were given then just run */
-   if (p_AttachConsole == NULL || !p_AttachConsole(ATTACH_PARENT_PROCESS)) {
-      if (opt_debug) {
-         AllocConsole();
-      }
-   }
-   WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), "\r\n", 2, &dwCharsWritten, NULL);
-
-   /* Start up Volume Shadow Copy (only on FD) */
-   VSSInit();
-
-   /* Startup networking */
-   WSA_Init();
-
-   /* Set this process to be the last application to be shut down. */
-   if (p_SetProcessShutdownParameters) {
-      p_SetProcessShutdownParameters(0x100, 0);
-   }
-
-   /* Create a thread to handle the Windows messages */
-   pthread_create(&tid, NULL,  Main_Msg_Loop, (void *)0);
-
-   /* Call the Unix Bacula daemon */
-   BaculaMain(num_command_args, command_args);
-   PostQuitMessage(0);                /* terminate our main message loop */
-
-   WSACleanup();
-   _exit(0);
-}
-
-
-void pause_msg(const char *file, const char *func, int line, const char *msg)
-{
-   char buf[1000];
-   if (msg) {
-      bsnprintf(buf, sizeof(buf), "%s:%s:%d %s", file, func, line, msg);
-   } else {
-      bsnprintf(buf, sizeof(buf), "%s:%s:%d", file, func, line);
-   }
-   MessageBox(NULL, buf, "Pause", MB_OK);
-}
-
-#include <windows.h>
-#include <tchar.h>
-#include <stdio.h>
-
-#ifndef PRODUCT_UNLICENSED
-#define PRODUCT_UNLICENSED 0xABCDABCD
-#define PRODUCT_BUSINESS 0x00000006
-#define PRODUCT_BUSINESS_N 0x00000010
-#define PRODUCT_CLUSTER_SERVER 0x00000012
-#define PRODUCT_DATACENTER_SERVER 0x00000008
-#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C
-#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027
-#define PRODUCT_DATACENTER_SERVER_V 0x00000025
-#define PRODUCT_ENTERPRISE 0x00000004
-#define PRODUCT_ENTERPRISE_E 0x00000046
-#define PRODUCT_ENTERPRISE_N 0x0000001B
-#define PRODUCT_ENTERPRISE_SERVER 0x0000000A
-#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E
-#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029
-#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F
-#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026
-#define PRODUCT_HOME_BASIC 0x00000002
-#define PRODUCT_HOME_BASIC_E 0x00000043
-#define PRODUCT_HOME_BASIC_N 0x00000005
-#define PRODUCT_HOME_PREMIUM 0x00000003
-#define PRODUCT_HOME_PREMIUM_E 0x00000044
-#define PRODUCT_HOME_PREMIUM_N 0x0000001A
-#define PRODUCT_HYPERV 0x0000002A
-#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E
-#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020
-#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F
-#define PRODUCT_PROFESSIONAL 0x00000030
-#define PRODUCT_PROFESSIONAL_E 0x00000045
-#define PRODUCT_PROFESSIONAL_N 0x00000031
-#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018
-#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023
-#define PRODUCT_SERVER_FOUNDATION 0x00000021
-#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009
-#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x00000038
-#define PRODUCT_STANDARD_SERVER 0x00000007
-#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D
-#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028
-#define PRODUCT_STANDARD_SERVER_V 0x00000024
-#define PRODUCT_STARTER 0x0000000B
-#define PRODUCT_STARTER_E 0x00000042
-#define PRODUCT_STARTER_N 0x0000002F
-#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017
-#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014
-#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015
-#define PRODUCT_STORAGE_WORKGROUP_SERVER  0x00000016
-#define PRODUCT_UNDEFINED 0x00000000
-#define PRODUCT_ULTIMATE 0x00000001
-#define PRODUCT_ULTIMATE_E 0x00000047
-#define PRODUCT_ULTIMATE_N 0x0000001C
-#define PRODUCT_WEB_SERVER 0x00000011
-#define PRODUCT_WEB_SERVER_CORE 0x0000001D
-
-#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x19
-#define SM_SERVERR2 89
-#define VER_SERVER_NT 0x80000000
-
-#endif
-
-#ifndef PRODUCT_PROFESSIONAL
-#define PRODUCT_PROFESSIONAL 0x00000030
-#endif
-#ifndef VER_SUITE_STORAGE_SERVER
-#define VER_SUITE_STORAGE_SERVER 0x00002000
-#endif
-#ifndef VER_SUITE_COMPUTE_SERVER
-#define VER_SUITE_COMPUTE_SERVER 0x00004000
-#endif
-
-/* Unknown value */
-#define VER_SUITE_WH_SERVER -1
-
-
-typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
-typedef BOOL (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD);
-
-/*
- * Get Windows version display string
- */
-bool GetWindowsVersionString(LPTSTR osbuf, int maxsiz)
-{
-   OSVERSIONINFOEX osvi;
-   SYSTEM_INFO si;
-   PGNSI pGNSI;
-   PGPI pGPI;
-   BOOL bOsVersionInfoEx;
-   DWORD dwType;
-
-   memset(&si, 0, sizeof(SYSTEM_INFO));
-   memset(&osvi, 0, sizeof(OSVERSIONINFOEX));
-
-   osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
-
-   if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
-      return 1;
-
-   // Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
-
-   pGNSI = (PGNSI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), 
-           "GetNativeSystemInfo");
-   if (pGNSI) {
-      pGNSI(&si);
-   } else {
-      GetSystemInfo(&si);
-   }
-
-   if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT && osvi.dwMajorVersion > 4) { 
-      bstrncpy(osbuf, TEXT("Microsoft "), maxsiz);
-
-      // Test for the specific product.
-
-      if (osvi.dwMajorVersion == 6) {
-         if (osvi.dwMinorVersion == 0) {
-            if (osvi.wProductType == VER_NT_WORKSTATION)
-                bstrncat(osbuf, TEXT("Windows Vista "), maxsiz);
-            else 
-                bstrncat(osbuf, TEXT("Windows Server 2008 " ), maxsiz);
-         }
-
-         if (osvi.dwMinorVersion == 1) {
-            if (osvi.wProductType == VER_NT_WORKSTATION )
-                bstrncat(osbuf, TEXT("Windows 7 "), maxsiz);
-            else 
-                bstrncat(osbuf, TEXT("Windows Server 2008 R2 " ), maxsiz);
-         }
-         
-         pGPI = (PGPI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), 
-            "GetProductInfo");
-
-         if (pGPI) {
-            pGPI(osvi.dwMajorVersion, osvi.dwMinorVersion, 0, 0, &dwType);
-         } else {
-            dwType = PRODUCT_HOME_BASIC;
-         }
-
-         switch (dwType) {
-            case PRODUCT_ULTIMATE:
-               bstrncat(osbuf, TEXT("Ultimate Edition" ), maxsiz);
-               break;
-            case PRODUCT_PROFESSIONAL:
-               bstrncat(osbuf, TEXT("Professional" ), maxsiz);
-               break;
-            case PRODUCT_HOME_PREMIUM:
-               bstrncat(osbuf, TEXT("Home Premium Edition" ), maxsiz);
-               break;
-            case PRODUCT_HOME_BASIC:
-               bstrncat(osbuf, TEXT("Home Basic Edition" ), maxsiz);
-               break;
-            case PRODUCT_ENTERPRISE:
-               bstrncat(osbuf, TEXT("Enterprise Edition" ), maxsiz);
-               break;
-            case PRODUCT_BUSINESS:
-               bstrncat(osbuf, TEXT("Business Edition" ), maxsiz);
-               break;
-            case PRODUCT_STARTER:
-               bstrncat(osbuf, TEXT("Starter Edition" ), maxsiz);
-               break;
-            case PRODUCT_CLUSTER_SERVER:
-               bstrncat(osbuf, TEXT("Cluster Server Edition" ), maxsiz);
-               break;
-            case PRODUCT_DATACENTER_SERVER:
-               bstrncat(osbuf, TEXT("Datacenter Edition" ), maxsiz);
-               break;
-            case PRODUCT_DATACENTER_SERVER_CORE:
-               bstrncat(osbuf, TEXT("Datacenter Edition (core installation)" ), maxsiz);
-               break;
-            case PRODUCT_ENTERPRISE_SERVER:
-               bstrncat(osbuf, TEXT("Enterprise Edition" ), maxsiz);
-               break;
-            case PRODUCT_ENTERPRISE_SERVER_CORE:
-               bstrncat(osbuf, TEXT("Enterprise Edition (core installation)" ), maxsiz);
-               break;
-            case PRODUCT_ENTERPRISE_SERVER_IA64:
-               bstrncat(osbuf, TEXT("Enterprise Edition for Itanium-based Systems" ), maxsiz);
-               break;
-            case PRODUCT_SMALLBUSINESS_SERVER:
-               bstrncat(osbuf, TEXT("Small Business Server" ), maxsiz);
-               break;
-            case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:
-               bstrncat(osbuf, TEXT("Small Business Server Premium Edition" ), maxsiz);
-               break;
-            case PRODUCT_STANDARD_SERVER:
-               bstrncat(osbuf, TEXT("Standard Edition" ), maxsiz);
-               break;
-            case PRODUCT_STANDARD_SERVER_CORE:
-               bstrncat(osbuf, TEXT("Standard Edition (core installation)" ), maxsiz);
-               break;
-            case PRODUCT_WEB_SERVER:
-               bstrncat(osbuf, TEXT("Web Server Edition" ), maxsiz);
-               break;
-         }
-      }
-
-      if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2) {
-         if( GetSystemMetrics(SM_SERVERR2) )
-            bstrncat(osbuf, TEXT( "Windows Server 2003 R2 "), maxsiz);
-         else if (osvi.wSuiteMask & VER_SUITE_STORAGE_SERVER)
-            bstrncat(osbuf, TEXT( "Windows Storage Server 2003"), maxsiz);
-         else if (osvi.wSuiteMask & VER_SUITE_WH_SERVER )
-            bstrncat(osbuf, TEXT( "Windows Home Server"), maxsiz);
-         else if (osvi.wProductType == VER_NT_WORKSTATION &&
-                  si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
-            bstrncat(osbuf, TEXT( "Windows XP Professional x64 Edition"), maxsiz);
-         else 
-            bstrncat(osbuf, TEXT("Windows Server 2003 "), maxsiz);
-
-         // Test for the server type.
-         if (osvi.wProductType != VER_NT_WORKSTATION) {
-            if (si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_IA64) {
-                if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
-                   bstrncat(osbuf, TEXT( "Datacenter Edition for Itanium-based Systems" ), maxsiz);
-                else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
-                   bstrncat(osbuf, TEXT( "Enterprise Edition for Itanium-based Systems" ), maxsiz);
-            }
-
-            else if (si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64) {
-                if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
-                   bstrncat(osbuf, TEXT( "Datacenter x64 Edition" ), maxsiz);
-                else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
-                   bstrncat(osbuf, TEXT( "Enterprise x64 Edition" ), maxsiz);
-                else bstrncat(osbuf, TEXT( "Standard x64 Edition" ), maxsiz);
-            } else {
-                if ( osvi.wSuiteMask & VER_SUITE_COMPUTE_SERVER )
-                   bstrncat(osbuf, TEXT( "Compute Cluster Edition" ), maxsiz);
-                else if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
-                   bstrncat(osbuf, TEXT( "Datacenter Edition" ), maxsiz);
-                else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
-                   bstrncat(osbuf, TEXT( "Enterprise Edition" ), maxsiz);
-                else if ( osvi.wSuiteMask & VER_SUITE_BLADE )
-                   bstrncat(osbuf, TEXT( "Web Edition" ), maxsiz);
-                else bstrncat(osbuf, TEXT( "Standard Edition" ), maxsiz);
-            }
-         }
-      }
-
-      if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1) {
-         bstrncat(osbuf, TEXT("Windows XP "), maxsiz);
-         if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
-            bstrncat(osbuf, TEXT( "Home Edition" ), maxsiz);
-         else 
-            bstrncat(osbuf, TEXT( "Professional" ), maxsiz);
-      }
-
-      if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0) {
-         bstrncat(osbuf, TEXT("Windows 2000 "), maxsiz);
-         if ( osvi.wProductType == VER_NT_WORKSTATION ) {
-            bstrncat(osbuf, TEXT( "Professional" ), maxsiz);
-         } else {
-            if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
-               bstrncat(osbuf, TEXT( "Datacenter Server" ), maxsiz);
-            else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
-               bstrncat(osbuf, TEXT( "Advanced Server" ), maxsiz);
-            else bstrncat(osbuf, TEXT( "Server" ), maxsiz);
-         }
-      }
-
-       // Include service pack (if any) and build number.
-
-      if (_tcslen(osvi.szCSDVersion) > 0) {
-          bstrncat(osbuf, TEXT(" ") , maxsiz);
-          bstrncat(osbuf, osvi.szCSDVersion, maxsiz);
-      }
-
-      char buf[80];
-
-      snprintf(buf, 80, " (build %d)", (int)osvi.dwBuildNumber);
-      bstrncat(osbuf, buf, maxsiz);
-
-      if (osvi.dwMajorVersion >= 6) {
-         if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 )
-            bstrncat(osbuf, TEXT( ", 64-bit" ), maxsiz);
-         else if (si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_INTEL )
-            bstrncat(osbuf, TEXT(", 32-bit"), maxsiz);
-      }
-      
-      return true; 
-   } else {
-      bstrncpy(osbuf, "Unknown Windows version.", maxsiz);
-      return true;
-   }
-}
diff --git a/src/win32/libwin32/protos.h b/src/win32/libwin32/protos.h
deleted file mode 100644
index ffd9911..0000000
--- a/src/win32/libwin32/protos.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2009 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- *   Version $Id$
- */
-
-#define log_error_message(msg) LogLastErrorMsg((msg), __FILE__, __LINE__)
-
-extern int BaculaAppMain();
-extern void LogLastErrorMsg(const char *msg, const char *fname, int lineno);
-
-extern int BaculaMain(int argc, char *argv[]);
-extern BOOL ReportStatus(DWORD state, DWORD exitcode, DWORD waithint);
-extern void d_msg(const char *, int, int, const char *, ...);
-extern char *bac_status(char *buf, int buf_len);
-
-
-/* service.cpp */
-bool postToBacula(UINT message, WPARAM wParam, LPARAM lParam);
-bool isAService();
-int installService(const char *svc);
-int removeService();
-int stopRunningBacula();
-int baculaServiceMain();
-
-
-/* Globals */
-extern DWORD service_thread_id;
-extern DWORD service_error;
-extern bool opt_debug;
-extern bool have_service_api;
-extern HINSTANCE appInstance;
-extern int bacstat;
diff --git a/src/win32/libwin32/res.h b/src/win32/libwin32/res.h
deleted file mode 100644
index 5be9bb0..0000000
--- a/src/win32/libwin32/res.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- *   Version $Id$
- */
-
-/* Icon definitions */
-#define IDI_BACULA             100
-#define IDI_IDLE               101
-#define IDI_RUNNING            102
-#define IDI_JOB_ERROR          103
-#define IDI_JOB_WARNING        104
-#define IDR_TRAYMENU           105
-#define IDB_BACULABMP          106
-
-#define IDC_TEXTDISPLAY       1000
-
-#define ID_ABOUT             40000
-#define ID_STATUS            40001
-#define ID_CLOSE             40002
-
-/* Dialog definitions */
-#define IDD_ABOUT              201
-#define IDD_STATUS             202
diff --git a/src/win32/libwin32/running.ico b/src/win32/libwin32/running.ico
deleted file mode 100644
index 32dc42c..0000000
Binary files a/src/win32/libwin32/running.ico and /dev/null differ
diff --git a/src/win32/libwin32/saving.ico b/src/win32/libwin32/saving.ico
deleted file mode 100644
index f6d50bf..0000000
Binary files a/src/win32/libwin32/saving.ico and /dev/null differ
diff --git a/src/win32/libwin32/service.cpp b/src/win32/libwin32/service.cpp
deleted file mode 100644
index 630abef..0000000
--- a/src/win32/libwin32/service.cpp
+++ /dev/null
@@ -1,601 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-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.
- */
-/* 
- * 
- *  Kern Sibbald, August 2007
- *
- * This is a generic service routine, which is used by all three
- *  of the daemons. Each one compiles it with slightly different
- *  #defines.
- *
- */
-
-#include "bacula.h"
-#include "win32.h"
-
-/* Forward reference */
-static void set_service_description(SC_HANDLE hSCManager, 
-                                    SC_HANDLE hService, LPSTR lpDesc);
-  
-/* Other Window component dependencies */
-#define BAC_DEPENDENCIES __TEXT("tcpip\0afd\0") 
-
-/* Service globals */
-SERVICE_STATUS_HANDLE  service_handle;
-SERVICE_STATUS service_status;
-DWORD service_error = 0;
-static bool is_service = false;
-
-/* Forward references */
-void WINAPI serviceControlCallback(DWORD ctrlcode);
-BOOL ReportStatus(DWORD state, DWORD exitcode, DWORD waithint);
-DWORD WINAPI baculaWorkerThread(LPVOID lpwThreadParam);
-
-
-/*
- * Post a message to a running instance of the app
- */
-bool postToBacula(UINT message, WPARAM wParam, LPARAM lParam)
-{
-   /* Locate the Bacula menu window */
-   HWND hservwnd = FindWindow(APP_NAME, NULL);
-   if (hservwnd == NULL) {
-      return false;
-   }
-
-   /* Post the message to Bacula */
-   PostMessage(hservwnd, message, wParam, lParam);
-   return true;
-}
-
-
-/*
- * Running as a service?
- */
-bool isAService()
-{
-   return is_service;
-}
-
-/* 
- * terminate any running Bacula
- */
-int stopRunningBacula()
-{
-   postToBacula(WM_CLOSE, 0, 0);
-   sleep(5);
-   return 0;
-}
-
-/*
- * New style service start callback handler for the OS.
- *   the OS returns control here immediately after starting
- *   the service.
- */
-void WINAPI serviceStartCallback(DWORD argc, char **argv)
-{
-   DWORD dwThreadID;
-  
-   /* Register our service */
-   service_handle = RegisterServiceCtrlHandler(APP_NAME, serviceControlCallback);
-   if (!service_handle) {
-      log_error_message(_("RegisterServiceCtlHandler failed")); 
-      MessageBox(NULL, _("Failure contacting the Service Handler"),
-         APP_DESC, MB_OK);
-      return;
-   }
-
-   service_status.dwServiceType = SERVICE_WIN32;
-   service_status.dwServiceSpecificExitCode = 0;
-
-   /* Report status */
-   if (!ReportStatus(SERVICE_START_PENDING, NO_ERROR, 45000)) {
-       ReportStatus(SERVICE_STOPPED, service_error,  0);
-       log_error_message(_("Service start report failed")); 
-       return;
-   }
-
-   /* Now create the Bacula worker thread */
-   (void)CreateThread(NULL, 0, baculaWorkerThread, NULL, 0, &dwThreadID);
-   return;
-}
-
-/*
- *  Stop our service 
- */
-static void serviceStop()
-{
-   /* Post a quit message our service thread */
-   if (service_thread_id != 0) {
-      PostThreadMessage(service_thread_id, WM_QUIT, 0, 0);
-   }
-}
-
-/*
- * Service Control callback handler.  The OS can call us here
- *   at any time, most often to stop the service.
- */
-void WINAPI serviceControlCallback(DWORD ctrlcode)
-{
-   switch(ctrlcode) {
-   case SERVICE_CONTROL_STOP:
-      service_status.dwCurrentState = SERVICE_STOP_PENDING;
-      serviceStop();  /* our stop service routine */
-      break;
-   }
-
-   /* Report our status */
-   ReportStatus(service_status.dwCurrentState, NO_ERROR, 0);
-}
-
-
-/*
- * Run Bacula as a service 
- */
-int baculaServiceMain()
-{
-   is_service = true;                 /* indicate we are running as a service */
-
-   if (have_service_api) {            /* New style service API */
-      /* Tell OS where to dispatch service calls to us */
-      SERVICE_TABLE_ENTRY dispatchTable[] = {
-         {APP_NAME, (LPSERVICE_MAIN_FUNCTION)serviceStartCallback},
-         {NULL, NULL}};
-
-      /* Start the service control dispatcher */
-      if (!StartServiceCtrlDispatcher(dispatchTable)) {
-         log_error_message(_("StartServiceCtrlDispatcher failed."));
-      }
-      /* Note, this thread continues in the ServiceCallback routine */
-
-   } else {                           /* old style Win95/98/Me */
-      HINSTANCE kerneldll = LoadLibrary("KERNEL32.DLL");
-      if (kerneldll == NULL) {
-         MessageBox(NULL, _("KERNEL32.DLL not found: Bacula service not started"), 
-             APP_DESC, MB_OK);
-         return 1;
-      }
-
-      /* Get entry point for RegisterServiceProcess function */
-      DWORD (WINAPI *RegisterService)(DWORD, DWORD);
-      RegisterService = (DWORD (WINAPI *)(DWORD, DWORD))
-              GetProcAddress(kerneldll, "RegisterServiceProcess");
-      if (RegisterService == NULL) {
-         MessageBox(NULL, _("Registry service not found: Bacula service not started"),
-            APP_DESC, MB_OK);
-         log_error_message(_("Registry service entry point not found")); 
-         return 1;
-      }
-      
-      RegisterService(0, 1);             /* register us as a service */
-      BaculaAppMain();                   /* call the main Bacula code */
-      RegisterService(0, 0);             /* terminate the service */
-      FreeLibrary(kerneldll);            /* free up kernel dll */
-   } 
-   return 0;
-}
-
-
-/* 
- * New style service bacula worker thread
- */
-DWORD WINAPI baculaWorkerThread(LPVOID lpwThreadParam)
-{
-   service_thread_id = GetCurrentThreadId();
-
-   if (!ReportStatus(SERVICE_RUNNING, NO_ERROR, 0)) {
-      MessageBox(NULL, _("Report Service failure"), APP_DESC, MB_OK);
-      log_error_message("ReportStatus RUNNING failed"); 
-      return 0;
-   }
-
-   /* Call Bacula main code */
-   BaculaAppMain();
-
-   /* Mark that we're no longer running */
-   service_thread_id = 0;
-
-   /* Tell the service manager that we've stopped */
-   ReportStatus(SERVICE_STOPPED, service_error, 0);
-   return 0;
-}
-
-
-
-/*
- * Install the Bacula service on the OS -- very complicated
- */
-int installService(const char *cmdOpts)
-{
-   const int maxlen = 2048;
-   char path[maxlen];
-   char svcmd[maxlen];
-
-   bsnprintf(svcmd, sizeof(svcmd), "service: install: %s", cmdOpts, APP_DESC, MB_OK);
-
-   /* Get our filename */
-   if (GetModuleFileName(NULL, path, maxlen-11) == 0) {
-      MessageBox(NULL, _("Unable to install the service"), APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-      return 0;
-   }
-
-   /* Create a valid command for starting the service */
-   if ((int)strlen(path) + (int)strlen(cmdOpts) + 30  < maxlen) {
-      bsnprintf(svcmd, sizeof(svcmd), "\"%s\" /service %s", path, cmdOpts);
-   } else {
-      log_error_message(_("Service command length too long")); 
-      MessageBox(NULL, _("Service command length too long. Service not registered."),
-          APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-      return 0;
-   }
-
-   if (have_service_api) {
-      SC_HANDLE baculaService, serviceManager;
-
-      /* Open the service control manager */
-      serviceManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
-      if (!serviceManager) {
-         log_error_message("Open Service Manager failed"); 
-         MessageBox(NULL,
-            _("The Service Control Manager could not be contacted - the service was not installed"),
-            APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-         return 0;
-      }
-
-      /* Now actually create the Bacula service entry */
-      baculaService = CreateService(
-              serviceManager, 
-              APP_NAME,                       /* Our service name */
-              APP_DESC,                       /* Display name */
-              SERVICE_ALL_ACCESS,
-              SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS,
-              SERVICE_AUTO_START,
-              SERVICE_ERROR_NORMAL,
-              svcmd,                          /* Command string to start the service */
-              NULL,
-              NULL,
-              BAC_DEPENDENCIES,               /* Services to start before us */
-              NULL,                           /* Use default SYSTEM account */
-              NULL);
-      if (!baculaService) {
-         CloseServiceHandle(serviceManager);
-         log_error_message("CreateService failed for " APP_DESC); 
-         MessageBox(NULL, _("The Bacula service: " APP_NAME " could not be installed"),
-              APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-         return 0;
-      }
-
-      /* Set a text description in the service manager's control panel */
-      set_service_description(serviceManager, baculaService,
-(char *)_("Provides file backup and restore services. Bacula -- the network backup solution."));
-
-      CloseServiceHandle(serviceManager);
-      CloseServiceHandle(baculaService);
-
-   } else {
-      /* Old style service -- create appropriate registry key path */
-      HKEY runservices;
-      if (RegCreateKey(HKEY_LOCAL_MACHINE, 
-              "Software\\Microsoft\\Windows\\CurrentVersion\\RunServices",
-              &runservices) != ERROR_SUCCESS) {
-         log_error_message(_("Cannot write System Registry for " APP_DESC)); 
-         MessageBox(NULL, _("The System Registry could not be updated - the Bacula service was not installed"), 
-             APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-         return 0;
-      }
-
-      /* Add the Bacula values */
-      if (RegSetValueEx(runservices, APP_NAME, 0, REG_SZ, 
-                        (unsigned char *)svcmd, strlen(svcmd)+1) != ERROR_SUCCESS) {
-         RegCloseKey(runservices);
-         log_error_message(_("Cannot add Bacula key to System Registry")); 
-         MessageBox(NULL, _("The Bacula service: " APP_NAME " could not be installed"), 
-             APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-         return 0;
-      }
-      RegCloseKey(runservices);
-   }
-
-   /* At this point the service is installed */
-   if (opt_debug) {
-      MessageBox(NULL,
-           _("The " APP_DESC "was successfully installed.\n"
-             "The service may be started by double clicking on the\n"
-             "Bacula \"Start\" icon and will be automatically\n"
-             "be run the next time this machine is rebooted. "),
-         APP_DESC, MB_ICONINFORMATION | MB_OK);
-   }
-   return 0;
-}
-
-
-/*
- * Remove a service from the OS (normally done when we are installing
- *   a new version).
- */
-int removeService()
-{
-   if (have_service_api) {      /* Newer Windows platform (NT, Win2K, ...) */
-      SC_HANDLE serviceManager, baculaService;
-      int stat = 0;
-
-      serviceManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
-      if (serviceManager) {
-         /* Now get the Bacula service entry */
-         baculaService = OpenService(serviceManager, APP_NAME, SERVICE_ALL_ACCESS);
-         if (baculaService) {
-            SERVICE_STATUS status;
-
-            /* If the service is running, stop it */
-            if (ControlService(baculaService, SERVICE_CONTROL_STOP, &status)) {
-               while(QueryServiceStatus(baculaService, &status)) {
-                  if (status.dwCurrentState == SERVICE_STOP_PENDING) {
-                     sleep(1);
-                  } else {
-                     break;
-                  }
-               }
-               if (status.dwCurrentState != SERVICE_STOPPED) {
-                  if (opt_debug) {
-                     MessageBox(NULL, _("The Bacula service: " APP_NAME " could not be stopped"), 
-                        APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-                  }
-               }
-            }
-
-            if (DeleteService(baculaService)) {
-               if (opt_debug) {
-                  MessageBox(NULL, _("The Bacula service: " APP_NAME " has been removed"), 
-                     APP_DESC, MB_ICONINFORMATION | MB_OK);
-               }
-            } else {
-               MessageBox(NULL, _("The Bacula service: " APP_NAME " could not be removed"), 
-                  APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-               stat = 1; /* error */
-            }
-            CloseServiceHandle(baculaService);
-
-         } else {
-            if (opt_debug) {
-               MessageBox(NULL, _("An existing Bacula service: " APP_NAME " could not be found for "
-                   "removal. This is not normally an error."),
-                   APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-            }
-         }
-         CloseServiceHandle(serviceManager);
-         return stat;
-
-      } else {
-         MessageBox(NULL, _("The service Manager could not be contacted - the Bacula service was not removed"), 
-            APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-         return 1; /* error */
-      }
-
-   } else {                     /* Old Win95/98/Me OS */
-      /* Open the registry path key */
-      HKEY runservices;
-      if (RegOpenKey(HKEY_LOCAL_MACHINE, 
-            "Software\\Microsoft\\Windows\\CurrentVersion\\RunServices",
-            &runservices) != ERROR_SUCCESS) {
-         if (opt_debug) {
-            MessageBox(NULL, 
-               _("Could not find registry entry.\nService probably not registerd - the Bacula service was not removed"), 
-                  APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-         }
-      } else {
-         /* Now delete the Bacula entry */
-         if (RegDeleteValue(runservices, APP_NAME) != ERROR_SUCCESS) {
-            RegCloseKey(runservices);
-            MessageBox(NULL, _("Could not delete Registry key for " APP_NAME ".\n"
-               "The Bacula service could not be removed"), APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-         }
-         RegCloseKey(runservices);
-         return 1;
-      }
-
-      /* Stop any running Bacula */
-      if (!stopRunningBacula()) {
-         if (opt_debug) {
-            MessageBox(NULL,
-                _("Bacula could not be contacted, probably not running"),
-                APP_DESC, MB_ICONEXCLAMATION | MB_OK);
-         }
-         return 0;   /* not really an error */
-      }
-
-      /* At this point, the service has been removed */
-      if (opt_debug) {
-         MessageBox(NULL, _("The Bacula service has been removed"), APP_DESC, MB_ICONINFORMATION | MB_OK);
-      }
-   }
-   return 0;
-}
-
-
-/*
- * This subroutine is called to report our current status to the
- *  new style service manager
- */
-BOOL ReportStatus(DWORD state, DWORD exitcode, DWORD waithint)
-{
-   static DWORD checkpoint = 1;
-   BOOL result = TRUE;
-
-   /* No callbacks until we are started */
-   if (state == SERVICE_START_PENDING) {
-      service_status.dwControlsAccepted = 0;
-   } else {
-      service_status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
-   }
-
-   /* Save global service_status state */
-   service_status.dwCurrentState = state;
-   service_status.dwWin32ExitCode = exitcode;
-   service_status.dwWaitHint = waithint;
-
-   /*
-    * Update the checkpoint variable so the service manager knows
-    *   we are alive.
-    */
-   if (state == SERVICE_RUNNING || state == SERVICE_STOPPED) {
-      service_status.dwCheckPoint = 0;
-   } else {
-      service_status.dwCheckPoint = checkpoint++;
-   }
-
-   /* Send our new status */
-   result = SetServiceStatus(service_handle, &service_status);
-   if (!result) {
-      log_error_message(_("SetServiceStatus failed"));
-   }
-   return result;
-}
-
-/* Log an error message for the last Windows error */
-void LogLastErrorMsg(const char *message, const char *fname, int lineno)
-{
-   char msgbuf[500];
-   HANDLE eventHandler;
-   const char *strings[3];
-   LPTSTR msg;
-
-   service_error = GetLastError();
-   FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
-                 FORMAT_MESSAGE_FROM_SYSTEM,
-                 NULL,
-                 service_error,
-                 0,
-                 (LPTSTR)&msg,
-                 0,
-                 NULL);
-
-   /* Use the OS event logging to log the error */
-   eventHandler = RegisterEventSource(NULL, APP_NAME);
-
-   bsnprintf(msgbuf, sizeof(msgbuf), _("\n\n%s error: %ld at %s:%d"), 
-      APP_NAME, service_error, fname, lineno);
-
-   strings[0] = msgbuf;
-   strings[1] = message;
-   strings[2] = msg;
-
-   if (eventHandler) {
-      ReportEvent(eventHandler, EVENTLOG_ERROR_TYPE,
-              0,                      /* category */
-              0,                      /* ID */
-              NULL,                   /* SID */
-              3,                      /* Number of strings */
-              0,                      /* raw data size */
-              (const char **)strings, /* error strings */
-              NULL);                  /* raw data */
-      DeregisterEventSource(eventHandler);
-   }
-   LocalFree(msg);
-}
-
-typedef BOOL  (WINAPI * WinAPI)(SC_HANDLE, DWORD, LPVOID);
-
-/*
- * This is amazingly complicated just to get a bit of English explanation
- *  in the service manager's dialog box.
- */
-static void set_service_description(SC_HANDLE hSCManager, SC_HANDLE hService,
-                             LPSTR lpDesc) 
-{ 
-    SC_LOCK sclLock; 
-    LPQUERY_SERVICE_LOCK_STATUS lpqslsBuf; 
-    SERVICE_DESCRIPTION sdBuf;
-    DWORD dwBytesNeeded;
-    WinAPI ChangeServiceDescription;
- 
-    HINSTANCE hLib = LoadLibrary("ADVAPI32.DLL");
-    if (!hLib) {
-       return;
-    }
-    ChangeServiceDescription = (WinAPI)GetProcAddress(hLib,
-       "ChangeServiceConfig2A");
-    FreeLibrary(hLib);
-    if (!ChangeServiceDescription) {
-       return;
-    }
-    
-    // Need to acquire database lock before reconfiguring. 
-    sclLock = LockServiceDatabase(hSCManager); 
- 
-    // If the database cannot be locked, report the details. 
-    if (sclLock == NULL) {
-       // Exit if the database is not locked by another process. 
-       if (GetLastError() != ERROR_SERVICE_DATABASE_LOCKED) {
-          log_error_message("LockServiceDatabase"); 
-          return;
-       }
- 
-       // Allocate a buffer to get details about the lock. 
-       lpqslsBuf = (LPQUERY_SERVICE_LOCK_STATUS)LocalAlloc( 
-            LPTR, sizeof(QUERY_SERVICE_LOCK_STATUS)+256); 
-       if (lpqslsBuf == NULL) {
-          log_error_message("LocalAlloc"); 
-          return;
-       }
- 
-       // Get and print the lock status information. 
-       if (!QueryServiceLockStatus( 
-              hSCManager, 
-              lpqslsBuf, 
-              sizeof(QUERY_SERVICE_LOCK_STATUS)+256, 
-              &dwBytesNeeded)) {
-          log_error_message("QueryServiceLockStatus"); 
-       }
- 
-       if (lpqslsBuf->fIsLocked) {
-          printf(_("Locked by: %s, duration: %ld seconds\n"), 
-                lpqslsBuf->lpLockOwner, 
-                lpqslsBuf->dwLockDuration); 
-       } else {
-          printf(_("No longer locked\n")); 
-       }
- 
-       LocalFree(lpqslsBuf); 
-       log_error_message(_("Could not lock database")); 
-       return;
-    } 
- 
-    // The database is locked, so it is safe to make changes. 
- 
-    sdBuf.lpDescription = lpDesc;
-
-    if (!ChangeServiceDescription(
-         hService,                   // handle to service
-         SERVICE_CONFIG_DESCRIPTION, // change: description
-         &sdBuf) ) {                 // value: new description
-       log_error_message("ChangeServiceConfig2");
-    }
-
-    // Release the database lock. 
-    UnlockServiceDatabase(sclLock); 
-}
diff --git a/src/win32/libwin32/statusDialog.cpp b/src/win32/libwin32/statusDialog.cpp
deleted file mode 100644
index 713f330..0000000
--- a/src/win32/libwin32/statusDialog.cpp
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2008 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.
-*/
-/*
- * Bacula File daemon Status Dialog box
- *
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- */
-
-#include "bacula.h"
-#include "win32.h"
-#include "statusDialog.h"
-#include "lib/status.h"
-
-static BOOL CALLBACK dialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
-   /* Get class pointer from user data */
-   statusDialog *statDlg = (statusDialog *)GetWindowLong(hDlg, GWL_USERDATA);
-
-   switch (uMsg) {
-   case WM_INITDIALOG:
-      /* Set class pointer in user data */
-      SetWindowLong(hDlg, GWL_USERDATA, lParam);
-      statDlg = (statusDialog *)lParam;
-      statDlg->m_textWin = GetDlgItem(hDlg, IDC_TEXTDISPLAY);
-
-      /* show the dialog */
-      SetForegroundWindow(hDlg);
-
-      /* Update every 5 seconds */
-      SetTimer(hDlg, 1, 5000, NULL); 
-      statDlg->m_visible = true;
-      statDlg->display();
-      return true;
-
-   case WM_TIMER:
-      statDlg->display();
-      return true;
-
-   case WM_SIZE:
-      statDlg->resize(hDlg, LOWORD(lParam), HIWORD(lParam));
-      return true;
-
-   case WM_COMMAND:
-      switch (LOWORD(wParam)) {
-      case IDCANCEL:
-      case IDOK:
-         statDlg->m_visible = false;
-         KillTimer(hDlg, 1);
-         EndDialog(hDlg, true);
-         return true;
-      }
-      break;
-
-   case WM_DESTROY:
-      statDlg->m_textWin = NULL;
-      statDlg->m_visible = false;
-      KillTimer(hDlg, 1);
-      EndDialog(hDlg, false);
-      return true;
-   }
-   return false;
-}
-
-
-static void displayString(const char *msg, int len, void *context)
-{
-   /* Get class pointer from user data */
-   statusDialog *statDlg = (statusDialog *)context;
-   const char *start = msg;
-   const char *p;
-   char *str;
-
-   for (p=start; *p; p++) {
-      if (*p == '\n') {
-         int len = p - start;
-         if (len > 0) {
-            str = (char *)alloca(len + 1);
-            bstrncpy(str, start, len + 1);
-
-            SendMessage(statDlg->m_textWin, EM_SETSEL, (WPARAM)-1, (LPARAM)-1);
-            SendMessage(statDlg->m_textWin, EM_REPLACESEL, 0, (LPARAM)str);
-         }
-         
-         if (*p == '\n') {
-            SendMessage(statDlg->m_textWin, EM_SETSEL, (WPARAM)-1, (LPARAM)-1);
-            SendMessage(statDlg->m_textWin, EM_REPLACESEL, 0, (LPARAM)"\r\n");
-         }
-
-         if (*p == '\0'){
-            break;
-         }
-         start = p + 1;
-      }
-   }
-}
-
-void statusDialog::display()
-{
-   if (m_textWin != NULL) {
-      STATUS_PKT sp;
-      long hPos = GetScrollPos(m_textWin, SB_HORZ);
-      long vPos = GetScrollPos(m_textWin, SB_VERT);
-      long selStart;
-      long selEnd;
-
-      SendMessage(m_textWin, EM_GETSEL, (WPARAM)&selStart, (LPARAM)&selEnd);
-
-      SetWindowText(m_textWin, "");
-      sp.bs = NULL;
-      sp.context = this;
-      sp.callback = displayString;
-      output_status(&sp);
-
-      SendMessage(m_textWin, EM_SETSEL, selStart, selEnd);
-      SendMessage(m_textWin, WM_HSCROLL, MAKEWPARAM(SB_THUMBPOSITION, hPos), 0);
-      SendMessage(m_textWin, WM_VSCROLL, MAKEWPARAM(SB_THUMBPOSITION, vPos), 0);
-   }
-}
-
-/* Dialog box handling functions */
-void statusDialog::show(bool show)
-{
-   if (show && !m_visible) {
-      DialogBoxParam(appInstance, MAKEINTRESOURCE(IDD_STATUS), NULL,
-          (DLGPROC)dialogProc, (LPARAM)this);
-   }
-}
-
-/*
- * Make sure OK button is positioned in the right place
- */
-void statusDialog::resize(HWND dWin, int dWidth, int dHeight)
-{
-   int bWidth, bHeight;   
-   RECT bRect;
-   HWND bWin;
-
-   if (m_textWin != NULL) {
-      bWin = GetDlgItem(dWin, IDOK);  /* get size of OK button */
-
-      GetWindowRect(bWin, &bRect);
-      bWidth = bRect.right - bRect.left;
-      bHeight = bRect.bottom - bRect.top;
-
-      MoveWindow(m_textWin, 8, 8, dWidth-bWidth-24, dHeight-16, true);
-      MoveWindow(bWin, dWidth - bWidth-8, 8, bWidth, bHeight, true);
-   }
-}
diff --git a/src/win32/libwin32/statusDialog.h b/src/win32/libwin32/statusDialog.h
deleted file mode 100644
index 701e61d..0000000
--- a/src/win32/libwin32/statusDialog.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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.
-*/
-/*
- * Bacula Status Dialog header file
- *
- *  Kern Sibbald, August 2007
- *
- *  Version $Id$
- *
- */
-
-#ifndef __STATUS_DIALOG_H_
-#define __STATUS_DIALOG_H_
-
-class statusDialog
-{
-public:
-   statusDialog() { m_visible = false; m_textWin = NULL; };
-   ~statusDialog() { };
-
-   void display();
-
-   void show(bool show);
-
-   void resize(HWND win, int width, int height);
-
-   bool m_visible;
-   HWND m_textWin;
-};
-
-#endif
diff --git a/src/win32/libwin32/trayMonitor.cpp b/src/win32/libwin32/trayMonitor.cpp
deleted file mode 100644
index 3cc072e..0000000
--- a/src/win32/libwin32/trayMonitor.cpp
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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.
- */
-/* 
- * 
- *  Kern Sibbald, August 2007
- *
- *  Version $Id$
- *
- * This is a generic tray monitor routine, which is used by all three
- *  of the daemons. Each one compiles it with slightly different
- *  #defines.
- *
- */
-
-#include "bacula.h"
-#include "jcr.h"
-#include "win32.h"
-
-trayMonitor::trayMonitor()
-{
-
-// m_tbcreated_msg = RegisterWindowMessage("TaskbarCreated");
-   
-   /* Create a window to handle tray icon messages */
-   WNDCLASSEX trayclass;
-
-   trayclass.cbSize         = sizeof(trayclass);
-   trayclass.style          = 0;
-   trayclass.lpfnWndProc    = trayMonitor::trayWinProc;
-   trayclass.cbClsExtra     = 0;
-   trayclass.cbWndExtra     = 0;
-   trayclass.hInstance      = appInstance;
-   trayclass.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
-   trayclass.hCursor        = LoadCursor(NULL, IDC_ARROW);
-   trayclass.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
-   trayclass.lpszMenuName   = NULL;
-   trayclass.lpszClassName  = APP_NAME;
-   trayclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
-
-   RegisterClassEx(&trayclass);
-
-   m_hwnd = CreateWindow(APP_NAME, APP_NAME, WS_OVERLAPPEDWINDOW,
-                CW_USEDEFAULT, CW_USEDEFAULT, 200, 200,
-                NULL, NULL, appInstance, NULL);
-   if (!m_hwnd) {
-      PostQuitMessage(0);
-      return;
-   }
-
-   /* Save our class pointer */
-   SetWindowLong(m_hwnd, GWL_USERDATA, (LPARAM)this);
-
-
-   // Load the icons for the tray
-   m_idle_icon    = LoadIcon(appInstance, MAKEINTRESOURCE(IDI_IDLE));
-   m_running_icon = LoadIcon(appInstance, MAKEINTRESOURCE(IDI_RUNNING));
-   m_error_icon   = LoadIcon(appInstance, MAKEINTRESOURCE(IDI_JOB_ERROR));
-   m_warn_icon    = LoadIcon(appInstance, MAKEINTRESOURCE(IDI_JOB_WARNING));
-
-   /* Load the menu */
-   m_hmenu = LoadMenu(appInstance, MAKEINTRESOURCE(IDR_TRAYMENU));
-   m_visible = false;
-   m_installed = false;
-
-   /* Install the icon in the tray */
-   install();
-
-   /* Timer to trigger icon updating */
-   SetTimer(m_hwnd, 1, 5000, NULL);
-}
-
-trayMonitor::~trayMonitor()
-{
-   /* Remove the icon from the tray */
-   sendMessage(NIM_DELETE, 0);
-        
-   if (m_hmenu) {
-      DestroyMenu(m_hmenu);
-      m_hmenu = NULL;
-   }
-}
-
-void trayMonitor::install()
-{
-   m_installed = true;
-   sendMessage(NIM_ADD, bacstat);
-}
-
-void trayMonitor::update(int bacstat)
-{
-   if (!m_installed) {
-      install();
-   }
-   (void)bac_status(NULL, 0);
-   sendMessage(NIM_MODIFY, bacstat);
-}
-
-void trayMonitor::sendMessage(DWORD msg, int bacstat)
-{
-   struct s_last_job *job;
-   
-   // Create the tray icon message
-   m_nid.hWnd = m_hwnd;
-   m_nid.cbSize = sizeof(m_nid);
-   m_nid.uID = IDI_BACULA;                  // never changes after construction
-   switch (bacstat) {
-   case 0:
-      m_nid.hIcon = m_idle_icon;
-      break;
-   case JS_Running:
-      m_nid.hIcon = m_running_icon;
-      break;
-   case JS_ErrorTerminated:
-      m_nid.hIcon = m_error_icon;
-      break;
-   default:
-      if (last_jobs->size() > 0) {
-         job = (struct s_last_job *)last_jobs->last();
-         if (job->Errors) {
-            m_nid.hIcon = m_warn_icon;
-         } else {
-            m_nid.hIcon = m_idle_icon;
-         }
-      } else {
-         m_nid.hIcon = m_idle_icon;
-      }
-      break;
-   }
-
-   m_nid.uFlags = NIF_ICON | NIF_MESSAGE;
-   m_nid.uCallbackMessage = WM_TRAYNOTIFY;
-
-
-   /* Use the resource string as tip */
-   if (LoadString(appInstance, IDI_BACULA, m_nid.szTip, sizeof(m_nid.szTip))) {
-       m_nid.uFlags |= NIF_TIP;
-   }
-
-   /* Add the Bacula status to the tip string */
-   if (m_nid.uFlags & NIF_TIP) {
-       bac_status(m_nid.szTip, sizeof(m_nid.szTip));
-   }
-
-   if (Shell_NotifyIcon(msg, &m_nid)) {
-      EnableMenuItem(m_hmenu, ID_CLOSE, MF_ENABLED);
-   }
-}
-
-/*
- * This is the windows call back for our tray window
- */
-LRESULT CALLBACK trayMonitor::trayWinProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
-{
-   HMENU menu;
-   trayMonitor *mon = (trayMonitor *)GetWindowLong(hwnd, GWL_USERDATA);
-
-   switch (iMsg) {
-
-   /* Every five seconds, a timer message causes the icon to update */
-   case WM_TIMER:
-      if (isAService()) {
-         mon->install();
-      }
-      mon->update(bacstat);
-      break;
-
-   case WM_CREATE:
-      return 0;
-
-   case WM_COMMAND:
-      /* User has clicked an item on the tray monitor menu */
-      switch (LOWORD(wParam)) {
-      case ID_STATUS:
-         /* show the dialog box */
-         mon->m_status.show(true);
-         mon->update(bacstat);
-         break;
-
-      case ID_ABOUT:
-         /* Show the About box */
-         mon->m_about.show(true);
-         break;
-
-      /* This is turned off now */
-#ifdef xxx
-      case ID_CLOSE:
-         /* User selected Close from the tray menu */
-         PostMessage(hwnd, WM_CLOSE, 0, 0);
-         break;
-#endif
-
-      }
-      return 0;
-
-   /* Our special command to check for mouse events */
-   case WM_TRAYNOTIFY:
-      /* Right button click pops up the menu */
-      if (lParam == WM_RBUTTONUP) {
-         POINT mouse;
-         /* Get the menu and pop it up */
-         menu = GetSubMenu(mon->m_hmenu, 0);
-         if (!menu) {
-             return 0;
-         }
-
-         /* The first menu item (Status) is the default */
-         SetMenuDefaultItem(menu, 0, TRUE);
-         GetCursorPos(&mouse);
-         SetForegroundWindow(mon->m_nid.hWnd);  /* display the menu */
-
-         /* Open the menu at the mouse position */
-         TrackPopupMenu(menu, 0, mouse.x, mouse.y, 0, mon->m_nid.hWnd, NULL);
-
-      /* Left double click brings up status dialog directly */
-      } else if (lParam == WM_LBUTTONDBLCLK) {
-         mon->m_status.show(true);
-         mon->update(bacstat);
-      }
-      return 0;
-
-   case WM_CLOSE:
-      if (isAService()) {
-          mon->sendMessage(NIM_DELETE, 0);
-      }
-      terminate_app(0);
-      break;
-
-   case WM_DESTROY:
-      /* zap everything */
-      PostQuitMessage(0);
-      return 0;
-
-   case WM_QUERYENDSESSION:
-      if (!isAService() || lParam == 0) {
-         PostQuitMessage(0);
-         return TRUE;
-      }
-      return TRUE;
-
-    default:
-       /* Need to redraw tray icon */
-//     if (iMsg == mon->m_tbcreated_msg) {
-//        mon->install();    
-//     }
-       break;
-   }
-
-   return DefWindowProc(hwnd, iMsg, wParam, lParam);
-}
diff --git a/src/win32/libwin32/trayMonitor.h b/src/win32/libwin32/trayMonitor.h
deleted file mode 100644
index 58340fe..0000000
--- a/src/win32/libwin32/trayMonitor.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- *   Version $Id$
- */
-
-#ifndef __TRAY_MONITOR_H_
-#define __TRAY_MONITOR_H_ 1
-
-#define WM_TRAYNOTIFY WM_USER+1
-
-/* Define the trayMonitor class */
-class trayMonitor
-{
-public:
-   trayMonitor();
-  ~trayMonitor();
-
-   void show(bool show);
-   void install();
-   void update(int bacstat);
-   void sendMessage(DWORD msg, int bacstat);
-
-   static LRESULT CALLBACK trayWinProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
-
-   bool m_visible;
-   bool m_installed;
-   UINT m_tbcreated_msg;
-
-   aboutDialog m_about;
-   statusDialog m_status;
-
-   HWND  m_hwnd;
-   HMENU m_hmenu;
-   NOTIFYICONDATA m_nid;
-   HICON m_idle_icon;
-   HICON m_running_icon;
-   HICON m_error_icon;
-   HICON m_warn_icon;
-};
-
-#endif /* __TRAY_MONITOR_H_ */
diff --git a/src/win32/libwin32/warn.ico b/src/win32/libwin32/warn.ico
deleted file mode 100644
index 26e1d39..0000000
Binary files a/src/win32/libwin32/warn.ico and /dev/null differ
diff --git a/src/win32/libwin32/win32.h b/src/win32/libwin32/win32.h
deleted file mode 100644
index 95b5188..0000000
--- a/src/win32/libwin32/win32.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- *   Version $Id$
- */
-
-#include "protos.h"
-#include "res.h"   
-
-#ifdef HAVE_TRAY_MONITOR
-#include "aboutDialog.h"
-#include "statusDialog.h"
-#include "trayMonitor.h"
-#endif
diff --git a/src/win32/makeall b/src/win32/makeall
deleted file mode 100755
index c23d887..0000000
--- a/src/win32/makeall
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-make clean
-# Build win32 Bacula
-make
-#
-# Build win64 Bacula
-make win64=yes
diff --git a/src/win32/patches/binutils_texinfo_version.patch b/src/win32/patches/binutils_texinfo_version.patch
deleted file mode 100644
index 01100e9..0000000
--- a/src/win32/patches/binutils_texinfo_version.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff -Nur binutils-2.16.91-20060119-1.orig/configure binutils-2.16.91-20060119-1.patched/configure
---- binutils-2.16.91-20060119-1.orig/configure	2006-01-19 04:57:59.000000000 +0000
-+++ binutils-2.16.91-20060119-1.patched/configure	2008-10-04 02:43:58.768687939 +0000
-@@ -3549,7 +3549,7 @@
-     # For an installed makeinfo, we require it to be from texinfo 4.2 or
-     # higher, else we use the "missing" dummy.
-     if ${MAKEINFO} --version \
--       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then
-+       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|4\.1[0-9]|[5-9])' >/dev/null 2>&1; then
-       :
-     else
-       MAKEINFO="$MISSING makeinfo"
-diff -Nur binutils-2.16.91-20060119-1.orig/gas/Makefile.in binutils-2.16.91-20060119-1.patched/gas/Makefile.in
---- binutils-2.16.91-20060119-1.orig/gas/Makefile.in	2006-01-19 04:59:26.000000000 +0000
-+++ binutils-2.16.91-20060119-1.patched/gas/Makefile.in	2008-10-04 03:13:51.380719189 +0000
-@@ -3266,6 +3266,7 @@
- .PHONY: dep dep-in dep-am
- #MKDEP    DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.
- app.o: app.c $(INCDIR)/symcat.h
-+	$(COMPILE) -c $< $(NO_WERROR)
- as.o: as.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \
-   output-file.h sb.h macro.h dwarf2dbg.h dw2gencfi.h \
-   $(INCDIR)/elf/dwarf2.h $(BFDVER_H)
-@@ -3302,6 +3303,7 @@
- read.o: read.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \
-   subsegs.h $(INCDIR)/obstack.h sb.h macro.h ecoff.h \
-   dw2gencfi.h $(INCDIR)/elf/dwarf2.h
-+	$(COMPILE) -c $< $(NO_WERROR)
- sb.o: sb.c sb.h $(INCDIR)/symcat.h
- stabs.o: stabs.c $(INCDIR)/symcat.h $(INCDIR)/obstack.h \
-   subsegs.h ecoff.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
diff --git a/src/win32/patches/dvd+rw-tools.patch b/src/win32/patches/dvd+rw-tools.patch
deleted file mode 100644
index 3f73d35..0000000
--- a/src/win32/patches/dvd+rw-tools.patch
+++ /dev/null
@@ -1,264 +0,0 @@
---- ../orig/dvd+rw-tools-7.0/growisofs.c	2006-09-24 10:28:53.000000000 -0700
-+++ ./growisofs.c	2006-12-07 01:56:17.000000000 -0800
-@@ -370,12 +370,17 @@
-  *   upon Layer Break command, therefore longer timeout is required;
-  * - Linux: deploy BLKFLSBUF to avoid media reloads when possible;
-  * - add unit buffer utilization indicator [by request from K3b];
-+ * 7.0.1: (by Nicolas Boichat, Bacula project)
-+ * - Allow session to cross 4GB boundary regardless of medium type
-+ *   (don't need to have a DL media)
-+ * - Add a -F option (used instead of -M or -Z), which displays next_session
-+ *   offset and capacity (free space = next_session - capacity).
-  */
- #define PRINT_VERSION(cmd)	do {			\
-     char *s=strrchr((cmd),'/');				\
-     s ? s++ : (s=(cmd));				\
-     printf ("* %.*sgrowisofs by <appro at fy.chalmers.se>,"\
--	    " version 7.0,\n",(int)(s-(cmd)),(cmd));	\
-+	    " version 7.0.1,\n",(int)(s-(cmd)),(cmd));	\
- } while (0)
- 

- #define _LARGEFILE_SOURCE 
-@@ -2576,7 +2581,8 @@
- 	else					arg = mkisofs_argv[0];
- 
- 	cmdsz--;
--	assert ((len0=strlen (arg)) < cmdsz);
-+	len0 = strlen (arg);
-+	assert (len0 < cmdsz);
- 
- 	strcpy (cmd,arg), cmd[len0++] = ' ', cmdsz -= len0;
- 
-@@ -2773,6 +2779,18 @@
- 		else          in_device = argv[++i];
- 		dev_found = 'Z';
- 	    }
-+	    else if (argv[i][1] == 'F')
-+	    {	if (len > 2) in_device = argv[i]+2;
-+		else	     in_device = argv[++i];
-+		dev_found = 'F';
-+		dry_run = 1; /* NEVER write anything with -F */
-+	    }
-+	    else if (!strncmp(opt,"-free-space",11))
-+	    {	if (len > 11) in_device = opt+11;
-+		else          in_device = argv[++i];
-+		dev_found = 'F';
-+		dry_run = 1; /* NEVER write anything with -F */
-+	    }
- 	    else if (!strcmp(opt,"-poor-man"))
- 	    {	if (poor_man<0) poor_man = 1;
- 		continue;
-@@ -2898,7 +2916,7 @@
- 	    else if (argv[i][1] == '?' || !strcmp(opt,"-help"))
- 	    {	PRINT_VERSION (argv[0]);
- 		printf ("- usage: %s [-dvd-compat] [-overburn] [-speed=1] \\\n"
--			"         -[ZM] /dev/dvd <mkisofs options>\n",argv[0]);
-+			"         -[ZMF] /dev/dvd <mkisofs options>\n",argv[0]);
- 		printf ("  for <mkisofs options> see 'mkisofs %s'\n",opt);
- 		exit (FATAL_START(EINVAL));
- 	    }
-@@ -2993,7 +3011,13 @@
- 		fprintf (stderr,"    you most likely want to use -Z option.\n"), 
- 		exit (FATAL_START(errno));
- 
--	    if (dev_found == 'M')
-+	    if ((dev_found == 'M') || 
-+		((dev_found == 'F') && !(mmc_profile&0x10000)) &&
-+		 (saved_descriptors[0].type[0] ||
-+		  saved_descriptors[0].type[1] ||
-+		  saved_descriptors[0].type[2]))
-+		/* -F : The medium is not blank, there is a fs on it (the_buffer[0,1 or 2] != 0),
-+			so compute next_session. */
- 	    {	if (memcmp (saved_descriptors[0].type,"\1CD001",6))
- 	            fprintf (stderr,":-( %s doesn't look like isofs...\n",
- 		    		in_device), exit(FATAL_START(EMEDIUMTYPE));
-@@ -3016,8 +3040,7 @@
- 			exit(FATAL_START(EINVAL));
- 		}
- 		else if (next_session > (0x200000-0x5000)) /* 4GB/2K-40MB/2K */
--		    if ((mmc_profile&0xFFFF)<0x20 ||
--			((mmc_profile&0xFFFF)<0x40 && !no_4gb_check))
-+		    if ((mmc_profile&0xFFFF)<0x40 && !no_4gb_check)
- 			fprintf (stderr,":-( next session would cross 4GB "
- 					"boundary, aborting...\n"),
- 			exit (FATAL_START(ENOSPC));
-@@ -3060,7 +3083,7 @@
- 	exit (FATAL_START(EINVAL));
- 
-     if (imgfd<0)
--    {	if (mkisofs_argc==1)
-+    {	if ((mkisofs_argc==1) && (dev_found != 'F'))
- 	    fprintf (stderr,"%s: no mkisofs options specified, "
- 			    "aborting...\n",argv[0]),
- 	    exit (FATAL_START(EINVAL));
-@@ -3244,6 +3267,15 @@
- 	}
-     }
- 
-+    if (dev_found == 'F') {
-+	off64_t capacity = 0;
-+	printf("next_session=%d\n", next_session * CD_BLOCK);
-+	if (ioctl_handle!=INVALID_HANDLE)
-+	    capacity = get_capacity (ioctl_handle);
-+	printf("capacity=%lld\n", capacity);
-+	exit(0);
-+    }
-+
-     if (imgfd>=0)
-     {	quiet--;
- 	if (builtin_dd (imgfd,out_fd,next_session*CD_BLOCK) < 0)
---- ../orig/dvd+rw-tools-7.0/Makefile	2006-08-27 13:07:37.000000000 -0700
-+++ ./Makefile	2006-12-07 01:56:17.000000000 -0800
-@@ -9,7 +9,7 @@
- 
- CHAIN=growisofs dvd+rw-format dvd+rw-booktype dvd+rw-mediainfo dvd-ram-control
- clean:
--	-(rm *.o $(CHAIN) rpl8 btcflash; exit 0) < /dev/null > /dev/null 2>&1
-+	-(rm *.o $(CHAIN) $(CHAIN:=.exe) rpl8 btcflash; exit 0) < /dev/null > /dev/null 2>&1
- 
- VER=7.0
- DIST=dvd+rw-tools-$(VER)
---- ../orig/dvd+rw-tools-7.0/Makefile.m4	2006-09-24 10:55:19.000000000 -0700
-+++ ./Makefile.m4	2006-12-07 01:59:30.000000000 -0800
-@@ -1,12 +1,5 @@
- # OBS! M4 processed!
- changequote([, ])
--[
--CHAIN=growisofs dvd+rw-format dvd+rw-booktype dvd+rw-mediainfo dvd-ram-control
--
--dvd+rw-tools:	$(CHAIN)
--
--WARN=#-Wall	# developers are welcomed to build with `make WARN=-Wall'
--]
- 
- # fix-up OS macro
- ifelse(substr(OS,0,7),[CYGWIN_],[define([OS],[MINGW32])])
-@@ -38,11 +31,36 @@
- #
- # MINGW section
- #
-+SUFFIXES+=.exe
- CC	=gcc
- CFLAGS	+=$(WARN) -mno-cygwin -O2
- CXX	=g++
- CXXFLAGS+=$(WARN) -mno-cygwin -O2 -fno-exceptions
- LINK.o	=$(LINK.cc)
-+EXE	=.exe
-+])
-+
-+ifelse(OS,XMINGW32,[
-+#
-+# MINGW cross-compile section
-+#
-+SUFFIXES+=.exe
-+CC	=mingw32-gcc
-+CFLAGS	+=$(WARN) -mno-cygwin -O2
-+CXX	=mingw32-g++
-+CXXFLAGS+=$(WARN) -mno-cygwin -O2 -fno-exceptions
-+LINK.o	=$(LINK.cc)
-+EXE	=.exe
-+%.exe:%.o
-+	$(CXX) $(CXXFLAGS) -o $@ $> $^ $(LDFLAGS) $(LDLIBS)
-+
-+install:	dvd+rw-tools
-+	[[ -d $(prefix)/bin ]] || mkdir -p $(prefix)/bin
-+	install -m 0755 $(CHAIN) $(prefix)/bin
-+	[[ -d $(manprefix)/man1 ]] || mkdir -p $(manprefix)/man1
-+	install -m 0644 growisofs.1 $(manprefix)/man1
-+	-[[ -f rpl8 ]] && install -m 0755 rpl8 $(prefix)/bin; :
-+	-[[ -f btcflash ]] && install -m 0755 btcflash $(prefix)/bin; :
- ])
- 
- ifelse(OS,BSD,[
-@@ -207,27 +225,33 @@
- 
- # common section
- [
--growisofs:		growisofs_mmc.o growisofs.o
-+CHAIN=growisofs$(EXE) dvd+rw-format$(EXE) dvd+rw-booktype$(EXE) dvd+rw-mediainfo$(EXE) dvd-ram-control$(EXE)
-+
-+dvd+rw-tools:	$(CHAIN)
-+
-+WARN=#-Wall	# developers are welcomed to build with `make WARN=-Wall'
-+
-+growisofs$(EXE):	growisofs_mmc.o growisofs.o
- growisofs.o:		growisofs.c mp.h
- growisofs_mmc.o:	growisofs_mmc.cpp transport.hxx
- 
--dvd+rw-format:		dvd+rw-format.o
-+dvd+rw-format$(EXE):	dvd+rw-format.o
- dvd+rw-format.o:	dvd+rw-format.cpp transport.hxx
- 
--dvd+rw-mediainfo:	dvd+rw-mediainfo.o
-+dvd+rw-mediainfo$(EXE):	dvd+rw-mediainfo.o
- dvd+rw-mediainfo.o:	dvd+rw-mediainfo.cpp transport.hxx
- 
--dvd+rw-booktype:	dvd+rw-booktype.o
-+dvd+rw-booktype$(EXE):	dvd+rw-booktype.o
- dvd+rw-booktype.o:	dvd+rw-booktype.cpp transport.hxx
- 
--dvd-ram-control:	dvd-ram-control.o
-+dvd-ram-control$(EXE):	dvd-ram-control.o
- dvd-ram-control.o:	dvd-ram-control.cpp transport.hxx
- 
--rpl8:			rpl8.o
-+rpl8$(EXE):		rpl8.o
- rpl8.o:			rpl8.cpp transport.hxx
- +rpl8:			rpl8
- #so that I can invoke `make +rpl8' to build rpl8...
--btcflash:		btcflash.o
-+btcflash$(EXE):		btcflash.o
- btcflash.o:		btcflash.cpp transport.hxx
- +btcflash:		btcflash
- #so that I can invoke `make +btcflash' to build btcflash...
---- ../orig/dvd+rw-tools-7.0/Makefile.msc	1969-12-31 16:00:00.000000000 -0800
-+++ ./Makefile.msc	2006-12-07 01:56:17.000000000 -0800
-@@ -0,0 +1,48 @@
-+CHAIN=growisofs.exe dvd+rw-format.exe dvd+rw-booktype.exe dvd+rw-mediainfo.exe dvd-ram-control.exe
-+
-+DEFINES=/D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_MBCS" 
-+CFLAGS=$(DEFINES) /O2 /FD /EHsc /MD /W3 /nologo /c /Wp64 /Zi
-+CPPFLAGS=$(DEFINES) /O2 /FD /EHsc /MD /W3 /nologo /c /Wp64 /Zi
-+LDFLAGS=/NOLOGO /SUBSYSTEM:CONSOLE /MANIFEST
-+
-+all:
-+
-+clean:
-+	-del *.obj *.manifest *.pdb *.idb $(CHAIN) > nul 2>&1
-+
-+install: $(CHAIN)
-+	!xcopy $** $(prefix)\bin\ /y
-+
-+dvd+rw-tools:	$(CHAIN)
-+
-+growisofs.exe:		growisofs_mmc.obj growisofs.obj
-+	link $(LDFLAGS) /MANIFESTFILE:$@.manifest /out:$@ $** 
-+	mt /nologo /outputresource:"$@;#1" -manifest $@.manifest
-+
-+growisofs.obj:		growisofs.c mp.h
-+
-+growisofs_mmc.obj:	growisofs_mmc.cpp transport.hxx
-+
-+dvd+rw-format.exe:	dvd+rw-format.obj
-+	link $(LDFLAGS) /MANIFESTFILE:$@.manifest /out:$@ $** 
-+	mt /nologo /outputresource:"$@;#1" -manifest $@.manifest
-+
-+dvd+rw-format.obj:	dvd+rw-format.cpp transport.hxx
-+
-+dvd+rw-mediainfo.exe:	dvd+rw-mediainfo.obj
-+	link $(LDFLAGS) /MANIFESTFILE:$@.manifest /out:$@ $** 
-+	mt /nologo /outputresource:"$@;#1" -manifest $@.manifest
-+
-+dvd+rw-mediainfo.obj:	dvd+rw-mediainfo.cpp transport.hxx
-+
-+dvd+rw-booktype.exe:	dvd+rw-booktype.obj
-+	link $(LDFLAGS) /MANIFESTFILE:$@.manifest /out:$@ $** 
-+	mt /nologo /outputresource:"$@;#1" -manifest $@.manifest
-+
-+dvd+rw-booktype.obj:	dvd+rw-booktype.cpp transport.hxx
-+
-+dvd-ram-control.exe:	dvd-ram-control.obj
-+	link $(LDFLAGS) /MANIFESTFILE:$@.manifest /out:$@ $** 
-+	mt /nologo /outputresource:"$@;#1" -manifest $@.manifest
-+
-+dvd-ram-control.obj:	dvd-ram-control.cpp transport.hxx
diff --git a/src/win32/patches/mingw-utils.patch b/src/win32/patches/mingw-utils.patch
deleted file mode 100644
index e2d225f..0000000
--- a/src/win32/patches/mingw-utils.patch
+++ /dev/null
@@ -1,6670 +0,0 @@
-diff -ru ../release/mingw-utils-0.3/configure ./configure
---- ../release/mingw-utils-0.3/configure	2003-11-25 08:31:12.000000000 -0800
-+++ ./configure	2006-08-11 05:25:25.000000000 -0700
-@@ -1,6 +1,6 @@
- #! /bin/sh
- # Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.58 for mingw-utils 0.3.
-+# Generated by GNU Autoconf 2.59 for mingw-utils 0.3.
- #
- # Copyright (C) 2003 Free Software Foundation, Inc.
- # This configure script is free software; the Free Software Foundation
-@@ -309,7 +309,7 @@
- # include <unistd.h>
- #endif"
- 
--ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_ST [...]
-+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP IN [...]
- ac_subst_files=''
- 
- # Initialize some variables set by options.
-@@ -859,10 +859,15 @@
- Optional Features:
-   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
--  --enable-maintainer-mode enable make rules and dependencies not useful
--                          (and sometimes confusing) to the casual installer
--  --disable-dependency-tracking Speeds up one-time builds
--  --enable-dependency-tracking  Do not reject slow dependency extractors
-+  --enable-maintainer-mode  enable make rules and dependencies not useful
-+			  (and sometimes confusing) to the casual installer
-+  --disable-drmingw       Don't build drmingw (default is build)
-+  --disable-redir         Don't build redir (default is build)
-+  --disable-res2coff      Don't build res2coff (default is build)
-+  --disable-nonportable   shortcut for --disable-drmingw, --disable-redir and
-+                          --disable-res2coff
-+  --disable-dependency-tracking  speeds up one-time build
-+  --enable-dependency-tracking   do not reject slow dependency extractors
- 
- Some influential environment variables:
-   CC          C compiler command
-@@ -967,7 +972,7 @@
-     else
-       echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-     fi
--    cd "$ac_popdir"
-+    cd $ac_popdir
-   done
- fi
- 
-@@ -975,7 +980,7 @@
- if $ac_init_version; then
-   cat <<\_ACEOF
- mingw-utils configure 0.3
--generated by GNU Autoconf 2.58
-+generated by GNU Autoconf 2.59
- 
- Copyright (C) 2003 Free Software Foundation, Inc.
- This configure script is free software; the Free Software Foundation
-@@ -989,7 +994,7 @@
- running configure, to aid debugging if configure makes a mistake.
- 
- It was created by mingw-utils $as_me 0.3, which was
--generated by GNU Autoconf 2.58.  Invocation command line was
-+generated by GNU Autoconf 2.59.  Invocation command line was
- 
-   $ $0 $@
- 
-@@ -1325,7 +1330,7 @@
- 
- 
- 
--am__api_version="1.7"
-+am__api_version="1.9"
- ac_aux_dir=
- for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-   if test -f $ac_dir/install-sh; then
-@@ -1488,7 +1493,6 @@
- program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
- rm conftest.sed
- 
--
- # expand $ac_aux_dir to an absolute path
- am_aux_dir=`cd $ac_aux_dir && pwd`
- 
-@@ -1502,6 +1506,39 @@
- echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
- fi
- 
-+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-+  # We used to keeping the `.' as first argument, in order to
-+  # allow $(mkdir_p) to be used without argument.  As in
-+  #   $(mkdir_p) $(somedir)
-+  # where $(somedir) is conditionally defined.  However this is wrong
-+  # for two reasons:
-+  #  1. if the package is installed by a user who cannot write `.'
-+  #     make install will fail,
-+  #  2. the above comment should most certainly read
-+  #     $(mkdir_p) $(DESTDIR)$(somedir)
-+  #     so it does not work when $(somedir) is undefined and
-+  #     $(DESTDIR) is not.
-+  #  To support the latter case, we have to write
-+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
-+  #  so the `.' trick is pointless.
-+  mkdir_p='mkdir -p --'
-+else
-+  # On NextStep and OpenStep, the `mkdir' command does not
-+  # recognize any option.  It will interpret all options as
-+  # directories to create, and then abort because `.' already
-+  # exists.
-+  for d in ./-p ./--version;
-+  do
-+    test -d $d && rmdir $d
-+  done
-+  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
-+  if test -f "$ac_aux_dir/mkinstalldirs"; then
-+    mkdir_p='$(mkinstalldirs)'
-+  else
-+    mkdir_p='$(install_sh) -d'
-+  fi
-+fi
-+
- for ac_prog in gawk mawk nawk awk
- do
-   # Extract the first word of "$ac_prog", so it can be a program name with args.
-@@ -1580,7 +1617,7 @@
- fi
- rmdir .tst 2>/dev/null
- 
-- # test to see if srcdir already configured
-+# test to see if srcdir already configured
- if test "`cd $srcdir && pwd`" != "`pwd`" &&
-    test -f $srcdir/config.status; then
-   { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-@@ -1619,9 +1656,6 @@
- 
- MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
- 
--
--AMTAR=${AMTAR-"${am_missing_run}tar"}
--
- install_sh=${install_sh-"$am_aux_dir/install-sh"}
- 
- # Installed binaries are usually stripped using `strip' when the user
-@@ -1714,6 +1748,13 @@
- 
- # We need awk for the "check" target.  The system "awk" is bad on
- # some platforms.
-+# Always define AMTAR for backward compatibility.
-+
-+AMTAR=${AMTAR-"${am_missing_run}tar"}
-+
-+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-+
-+
- 
- 
- 
-@@ -1745,6 +1786,99 @@
- 
- 
- 
-+# Check whether --enable-drmingw or --disable-drmingw was given.
-+if test "${enable_drmingw+set}" = set; then
-+  enableval="$enable_drmingw"
-+  case "${enableval}" in
-+	  yes) build_drmingw=true ;;
-+	  no)  build_drmingw=false ;;
-+	  *)   { { echo "$as_me:$LINENO: error: --enable-drmingw argument must be yes or no, not \"${enableval}\"" >&5
-+echo "$as_me: error: --enable-drmingw argument must be yes or no, not \"${enableval}\"" >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+	 esac
-+else
-+  build_drmingw=true
-+fi;
-+
-+# Check whether --enable-redir or --disable-redir was given.
-+if test "${enable_redir+set}" = set; then
-+  enableval="$enable_redir"
-+  case "${enableval}" in
-+	  yes) build_redir=true ;;
-+	  no)  build_redir=false ;;
-+	  *)   { { echo "$as_me:$LINENO: error: --enable-redir argument must be yes or no, not \"${enableval}\"" >&5
-+echo "$as_me: error: --enable-redir argument must be yes or no, not \"${enableval}\"" >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+	 esac
-+else
-+  build_redir=true
-+fi;
-+
-+# Check whether --enable-res2coff or --disable-res2coff was given.
-+if test "${enable_res2coff+set}" = set; then
-+  enableval="$enable_res2coff"
-+  case "${enableval}" in
-+	  yes) build_res2coff=true ;;
-+	  no)  build_res2coff=false ;;
-+	  *)   { { echo "$as_me:$LINENO: error: --enable-res2coff argument must be yes or no, not \"${enableval}\"" >&5
-+echo "$as_me: error: --enable-res2coff argument must be yes or no, not \"${enableval}\"" >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+	 esac
-+else
-+  build_res2coff=true
-+fi;
-+
-+# Check whether --enable-nonportable or --disable-nonportable was given.
-+if test "${enable_nonportable+set}" = set; then
-+  enableval="$enable_nonportable"
-+  case "${enableval}" in
-+	  yes) build_drmingw=true
-+	       build_redir=true
-+	       build_res2coff=true
-+	       ;;
-+	  no)  build_res2coff=false
-+	       build_redir=false
-+	       build_res2coff=false
-+	       ;;
-+	  *)   { { echo "$as_me:$LINENO: error: --enable-nonportable argument must be yes or no, not \"${enableval}\"" >&5
-+echo "$as_me: error: --enable-nonportable argument must be yes or no, not \"${enableval}\"" >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+	 esac
-+else
-+  build_res2coff=true
-+fi;
-+
-+
-+
-+if test "${build_drmingw}" = "true"; then
-+  BUILD_DRMINGW_TRUE=
-+  BUILD_DRMINGW_FALSE='#'
-+else
-+  BUILD_DRMINGW_TRUE='#'
-+  BUILD_DRMINGW_FALSE=
-+fi
-+
-+
-+
-+if test "${build_redir}" = "true"; then
-+  BUILD_REDIR_TRUE=
-+  BUILD_REDIR_FALSE='#'
-+else
-+  BUILD_REDIR_TRUE='#'
-+  BUILD_REDIR_FALSE=
-+fi
-+
-+
-+
-+if test "${build_res2coff}" = "true"; then
-+  BUILD_RES2COFF_TRUE=
-+  BUILD_RES2COFF_FALSE='#'
-+else
-+  BUILD_RES2COFF_TRUE='#'
-+  BUILD_RES2COFF_FALSE=
-+fi
-+
-+
- # Checks for programs.
- ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
-@@ -2314,7 +2448,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -2372,7 +2507,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -2488,7 +2624,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -2542,7 +2679,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -2587,7 +2725,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -2631,7 +2770,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -2776,7 +2916,9 @@
-     : > sub/conftest.c
-     for i in 1 2 3 4 5 6; do
-       echo '#include "conftst'$i'.h"' >> sub/conftest.c
--      : > sub/conftst$i.h
-+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-+      # Solaris 8's {/usr,}/bin/sh.
-+      touch sub/conftst$i.h
-     done
-     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- 
-@@ -2804,9 +2946,14 @@
-        grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-       # icc doesn't choke on unknown options, it will just issue warnings
--      # (even with -Werror).  So we grep stderr for any message
--      # that says an option was ignored.
--      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
-+      # or remarks (even with -Werror).  So we grep stderr for any message
-+      # that says an option was ignored or not supported.
-+      # When given -MP, icc 7.0 and 7.1 complain thusly:
-+      #   icc: Command line warning: ignoring option '-M'; no argument required
-+      # The diagnosis changed in icc 8.0:
-+      #   icc: Command line remark: option '-MP' not supported
-+      if (grep 'ignoring option' conftest.err ||
-+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-         am_cv_CC_dependencies_compiler_type=$depmode
-         break
-       fi
-@@ -2982,7 +3129,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_cxx_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -3040,7 +3188,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_cxx_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -3111,7 +3260,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_cxx_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -3155,7 +3305,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_cxx_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -3229,7 +3380,9 @@
-     : > sub/conftest.c
-     for i in 1 2 3 4 5 6; do
-       echo '#include "conftst'$i'.h"' >> sub/conftest.c
--      : > sub/conftst$i.h
-+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-+      # Solaris 8's {/usr,}/bin/sh.
-+      touch sub/conftst$i.h
-     done
-     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- 
-@@ -3257,9 +3410,14 @@
-        grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-       # icc doesn't choke on unknown options, it will just issue warnings
--      # (even with -Werror).  So we grep stderr for any message
--      # that says an option was ignored.
--      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
-+      # or remarks (even with -Werror).  So we grep stderr for any message
-+      # that says an option was ignored or not supported.
-+      # When given -MP, icc 7.0 and 7.1 complain thusly:
-+      #   icc: Command line warning: ignoring option '-M'; no argument required
-+      # The diagnosis changed in icc 8.0:
-+      #   icc: Command line remark: option '-MP' not supported
-+      if (grep 'ignoring option' conftest.err ||
-+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-         am_cv_CXX_dependencies_compiler_type=$depmode
-         break
-       fi
-@@ -3601,7 +3759,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -3667,7 +3826,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -3756,7 +3916,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -3903,9 +4064,6 @@
- done
- done
- 
--  test -z "$ac_cv_path_ac_pt_WINDRES" && ac_cv_path_ac_pt_WINDRES="{ echo "$as_me:$LINENO: WARNING: Could not find a windres tool in your PATH. Will not be able to compile drmingw." >&5
--echo "$as_me: WARNING: Could not find a windres tool in your PATH. Will not be able to compile drmingw." >&2;}
--"
-   ;;
- esac
- fi
-@@ -3925,6 +4083,22 @@
- fi
- 
- 
-+if test -z "${WINDRES}"; then
-+	{ echo "$as_me:$LINENO: WARNING: windres tool isn't in your PATH, drmingw can't be built!!" >&5
-+echo "$as_me: WARNING: windres tool isn't in your PATH, drmingw can't be built!!" >&2;}
-+
-+
-+if false; then
-+  BUILD_DRMINGW_TRUE=
-+  BUILD_DRMINGW_FALSE='#'
-+else
-+  BUILD_DRMINGW_TRUE='#'
-+  BUILD_DRMINGW_FALSE=
-+fi
-+
-+fi
-+
-+
- 
- # Checks for header files.
- ac_ext=c
-@@ -4210,7 +4384,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -4342,9 +4517,7 @@
- 
- fi
- 
--where_toGet_utime_h='not found!'
--# this part is scrambled by autoconf. phooey. so we just cannot tell the user what we are doing.
--# AC_MSG_CHECKING([for whether utime.h is found as "utime.h" or "sys/utime.h"])
-+
- # On IRIX 5.3, sys/types and inttypes.h are conflicting.
- 
- 
-@@ -4383,7 +4556,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -4416,6 +4590,160 @@
- done
- 
- 
-+
-+for ac_header in windows.h
-+do
-+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+  echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+else
-+  # Is the header compilable?
-+echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+#include <$ac_header>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_header_compiler=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+# Is the header present?
-+echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+#include <$ac_header>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } >/dev/null; then
-+  if test -s conftest.err; then
-+    ac_cpp_err=$ac_c_preproc_warn_flag
-+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+  else
-+    ac_cpp_err=
-+  fi
-+else
-+  ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+  ac_header_preproc=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+  ac_header_preproc=no
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6
-+
-+# So?  What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+  yes:no: )
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-+    ac_header_preproc=yes
-+    ;;
-+  no:yes:* )
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-+    (
-+      cat <<\_ASBOX
-+## -------------------------------------- ##
-+## Report this to the mingw-utils lists.  ##
-+## -------------------------------------- ##
-+_ASBOX
-+    ) |
-+      sed "s/^/$as_me: WARNING:     /" >&2
-+    ;;
-+esac
-+echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  eval "$as_ac_Header=\$ac_header_preproc"
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+
-+fi
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+  cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+
-+where_toGet_utime_h='not found!'
-+# this part is scrambled by autoconf. phooey. so we just cannot tell the user what we are doing.
-+# AC_MSG_CHECKING([for whether utime.h is found as "utime.h" or "sys/utime.h"])
- if test "${ac_cv_header_utime_h+set}" = set; then
-   echo "$as_me:$LINENO: checking for utime.h" >&5
- echo $ECHO_N "checking for utime.h... $ECHO_C" >&6
-@@ -4446,7 +4774,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -4590,7 +4919,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -4787,7 +5117,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -4888,7 +5219,8 @@
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } &&
--	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-   (eval $ac_try) 2>&5
-   ac_status=$?
-@@ -4921,24 +5253,1681 @@
- done
- 
- 
--                                                                                                              ac_config_files="$ac_config_files Makefile dos2unix/Makefile drmingw/Makefile pexports/Makefile redir/Makefile reimp/Makefile res2coff/Makefile scripts/Makefile scripts/a2dll scripts/dsw2mak unix2dos/Makefile"
-+echo "$as_me:$LINENO: checking for _int64" >&5
-+echo $ECHO_N "checking for _int64... $ECHO_C" >&6
-+if test "${ac_cv_type__int64+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+if ((_int64 *) 0)
-+  return 0;
-+if (sizeof (_int64))
-+  return 0;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_cv_type__int64=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
- 
--cat >confcache <<\_ACEOF
--# This file is a shell script that caches the results of configure
--# tests run on this system so they can be shared between configure
--# scripts and configure runs, see configure's option --config-cache.
--# It is not useful on other systems.  If it contains results you don't
--# want to keep, you may remove or edit it.
--#
--# config.status only pays attention to the cache file if you give it
--# the --recheck option to rerun configure.
--#
--# `ac_cv_env_foo' variables (set or unset) will be overridden when
--# loading this file, other *unset* `ac_cv_foo' will be assigned the
--# following values.
-+ac_cv_type__int64=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_type__int64" >&5
-+echo "${ECHO_T}$ac_cv_type__int64" >&6
- 
-+echo "$as_me:$LINENO: checking size of _int64" >&5
-+echo $ECHO_N "checking size of _int64... $ECHO_C" >&6
-+if test "${ac_cv_sizeof__int64+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test "$ac_cv_type__int64" = yes; then
-+  # The cast to unsigned long works around a bug in the HP C Compiler
-+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-+  # This bug is HP SR number 8606223364.
-+  if test "$cross_compiling" = yes; then
-+  # Depending upon the size, compute the lo and hi bounds.
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
- _ACEOF
--
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (_int64))) >= 0)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_lo=0 ac_mid=0
-+  while :; do
-+    cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (_int64))) <= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=$ac_mid; break
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr $ac_mid + 1`
-+		    if test $ac_lo -le $ac_mid; then
-+		      ac_lo= ac_hi=
-+		      break
-+		    fi
-+		    ac_mid=`expr 2 '*' $ac_mid + 1`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (_int64))) < 0)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=-1 ac_mid=-1
-+  while :; do
-+    cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (_int64))) >= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_lo=$ac_mid; break
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_hi=`expr '(' $ac_mid ')' - 1`
-+		       if test $ac_mid -le $ac_hi; then
-+			 ac_lo= ac_hi=
-+			 break
-+		       fi
-+		       ac_mid=`expr 2 '*' $ac_mid`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo= ac_hi=
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+# Binary search between lo and hi bounds.
-+while test "x$ac_lo" != "x$ac_hi"; do
-+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (_int64))) <= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=$ac_mid
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr '(' $ac_mid ')' + 1`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+done
-+case $ac_lo in
-+?*) ac_cv_sizeof__int64=$ac_lo;;
-+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (_int64), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (_int64), 77
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+esac
-+else
-+  if test "$cross_compiling" = yes; then
-+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; }
-+else
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+long longval () { return (long) (sizeof (_int64)); }
-+unsigned long ulongval () { return (long) (sizeof (_int64)); }
-+#include <stdio.h>
-+#include <stdlib.h>
-+int
-+main ()
-+{
-+
-+  FILE *f = fopen ("conftest.val", "w");
-+  if (! f)
-+    exit (1);
-+  if (((long) (sizeof (_int64))) < 0)
-+    {
-+      long i = longval ();
-+      if (i != ((long) (sizeof (_int64))))
-+	exit (1);
-+      fprintf (f, "%ld\n", i);
-+    }
-+  else
-+    {
-+      unsigned long i = ulongval ();
-+      if (i != ((long) (sizeof (_int64))))
-+	exit (1);
-+      fprintf (f, "%lu\n", i);
-+    }
-+  exit (ferror (f) || fclose (f) != 0);
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_cv_sizeof__int64=`cat conftest.val`
-+else
-+  echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+( exit $ac_status )
-+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (_int64), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (_int64), 77
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+fi
-+fi
-+rm -f conftest.val
-+else
-+  ac_cv_sizeof__int64=0
-+fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sizeof__int64" >&5
-+echo "${ECHO_T}$ac_cv_sizeof__int64" >&6
-+cat >>confdefs.h <<_ACEOF
-+#define SIZEOF__INT64 $ac_cv_sizeof__int64
-+_ACEOF
-+
-+
-+echo "$as_me:$LINENO: checking for long long" >&5
-+echo $ECHO_N "checking for long long... $ECHO_C" >&6
-+if test "${ac_cv_type_long_long+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+if ((long long *) 0)
-+  return 0;
-+if (sizeof (long long))
-+  return 0;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_cv_type_long_long=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_type_long_long=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
-+echo "${ECHO_T}$ac_cv_type_long_long" >&6
-+
-+echo "$as_me:$LINENO: checking size of long long" >&5
-+echo $ECHO_N "checking size of long long... $ECHO_C" >&6
-+if test "${ac_cv_sizeof_long_long+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test "$ac_cv_type_long_long" = yes; then
-+  # The cast to unsigned long works around a bug in the HP C Compiler
-+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-+  # This bug is HP SR number 8606223364.
-+  if test "$cross_compiling" = yes; then
-+  # Depending upon the size, compute the lo and hi bounds.
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_lo=0 ac_mid=0
-+  while :; do
-+    cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=$ac_mid; break
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr $ac_mid + 1`
-+		    if test $ac_lo -le $ac_mid; then
-+		      ac_lo= ac_hi=
-+		      break
-+		    fi
-+		    ac_mid=`expr 2 '*' $ac_mid + 1`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=-1 ac_mid=-1
-+  while :; do
-+    cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_lo=$ac_mid; break
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_hi=`expr '(' $ac_mid ')' - 1`
-+		       if test $ac_mid -le $ac_hi; then
-+			 ac_lo= ac_hi=
-+			 break
-+		       fi
-+		       ac_mid=`expr 2 '*' $ac_mid`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo= ac_hi=
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+# Binary search between lo and hi bounds.
-+while test "x$ac_lo" != "x$ac_hi"; do
-+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=$ac_mid
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr '(' $ac_mid ')' + 1`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+done
-+case $ac_lo in
-+?*) ac_cv_sizeof_long_long=$ac_lo;;
-+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (long long), 77
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+esac
-+else
-+  if test "$cross_compiling" = yes; then
-+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; }
-+else
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+long longval () { return (long) (sizeof (long long)); }
-+unsigned long ulongval () { return (long) (sizeof (long long)); }
-+#include <stdio.h>
-+#include <stdlib.h>
-+int
-+main ()
-+{
-+
-+  FILE *f = fopen ("conftest.val", "w");
-+  if (! f)
-+    exit (1);
-+  if (((long) (sizeof (long long))) < 0)
-+    {
-+      long i = longval ();
-+      if (i != ((long) (sizeof (long long))))
-+	exit (1);
-+      fprintf (f, "%ld\n", i);
-+    }
-+  else
-+    {
-+      unsigned long i = ulongval ();
-+      if (i != ((long) (sizeof (long long))))
-+	exit (1);
-+      fprintf (f, "%lu\n", i);
-+    }
-+  exit (ferror (f) || fclose (f) != 0);
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_cv_sizeof_long_long=`cat conftest.val`
-+else
-+  echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+( exit $ac_status )
-+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (long long), 77
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+fi
-+fi
-+rm -f conftest.val
-+else
-+  ac_cv_sizeof_long_long=0
-+fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
-+echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6
-+cat >>confdefs.h <<_ACEOF
-+#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
-+_ACEOF
-+
-+
-+echo "$as_me:$LINENO: checking for long" >&5
-+echo $ECHO_N "checking for long... $ECHO_C" >&6
-+if test "${ac_cv_type_long+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+if ((long *) 0)
-+  return 0;
-+if (sizeof (long))
-+  return 0;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_cv_type_long=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_type_long=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
-+echo "${ECHO_T}$ac_cv_type_long" >&6
-+
-+echo "$as_me:$LINENO: checking size of long" >&5
-+echo $ECHO_N "checking size of long... $ECHO_C" >&6
-+if test "${ac_cv_sizeof_long+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test "$ac_cv_type_long" = yes; then
-+  # The cast to unsigned long works around a bug in the HP C Compiler
-+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-+  # This bug is HP SR number 8606223364.
-+  if test "$cross_compiling" = yes; then
-+  # Depending upon the size, compute the lo and hi bounds.
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_lo=0 ac_mid=0
-+  while :; do
-+    cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=$ac_mid; break
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr $ac_mid + 1`
-+		    if test $ac_lo -le $ac_mid; then
-+		      ac_lo= ac_hi=
-+		      break
-+		    fi
-+		    ac_mid=`expr 2 '*' $ac_mid + 1`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=-1 ac_mid=-1
-+  while :; do
-+    cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_lo=$ac_mid; break
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_hi=`expr '(' $ac_mid ')' - 1`
-+		       if test $ac_mid -le $ac_hi; then
-+			 ac_lo= ac_hi=
-+			 break
-+		       fi
-+		       ac_mid=`expr 2 '*' $ac_mid`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo= ac_hi=
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+# Binary search between lo and hi bounds.
-+while test "x$ac_lo" != "x$ac_hi"; do
-+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=$ac_mid
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr '(' $ac_mid ')' + 1`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+done
-+case $ac_lo in
-+?*) ac_cv_sizeof_long=$ac_lo;;
-+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (long), 77
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+esac
-+else
-+  if test "$cross_compiling" = yes; then
-+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; }
-+else
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+long longval () { return (long) (sizeof (long)); }
-+unsigned long ulongval () { return (long) (sizeof (long)); }
-+#include <stdio.h>
-+#include <stdlib.h>
-+int
-+main ()
-+{
-+
-+  FILE *f = fopen ("conftest.val", "w");
-+  if (! f)
-+    exit (1);
-+  if (((long) (sizeof (long))) < 0)
-+    {
-+      long i = longval ();
-+      if (i != ((long) (sizeof (long))))
-+	exit (1);
-+      fprintf (f, "%ld\n", i);
-+    }
-+  else
-+    {
-+      unsigned long i = ulongval ();
-+      if (i != ((long) (sizeof (long))))
-+	exit (1);
-+      fprintf (f, "%lu\n", i);
-+    }
-+  exit (ferror (f) || fclose (f) != 0);
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_cv_sizeof_long=`cat conftest.val`
-+else
-+  echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+( exit $ac_status )
-+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (long), 77
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+fi
-+fi
-+rm -f conftest.val
-+else
-+  ac_cv_sizeof_long=0
-+fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
-+echo "${ECHO_T}$ac_cv_sizeof_long" >&6
-+cat >>confdefs.h <<_ACEOF
-+#define SIZEOF_LONG $ac_cv_sizeof_long
-+_ACEOF
-+
-+
-+echo "$as_me:$LINENO: checking for void *" >&5
-+echo $ECHO_N "checking for void *... $ECHO_C" >&6
-+if test "${ac_cv_type_void_p+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+if ((void * *) 0)
-+  return 0;
-+if (sizeof (void *))
-+  return 0;
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_cv_type_void_p=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_type_void_p=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_type_void_p" >&5
-+echo "${ECHO_T}$ac_cv_type_void_p" >&6
-+
-+echo "$as_me:$LINENO: checking size of void *" >&5
-+echo $ECHO_N "checking size of void *... $ECHO_C" >&6
-+if test "${ac_cv_sizeof_void_p+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test "$ac_cv_type_void_p" = yes; then
-+  # The cast to unsigned long works around a bug in the HP C Compiler
-+  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-+  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-+  # This bug is HP SR number 8606223364.
-+  if test "$cross_compiling" = yes; then
-+  # Depending upon the size, compute the lo and hi bounds.
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (void *))) >= 0)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_lo=0 ac_mid=0
-+  while :; do
-+    cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (void *))) <= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=$ac_mid; break
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr $ac_mid + 1`
-+		    if test $ac_lo -le $ac_mid; then
-+		      ac_lo= ac_hi=
-+		      break
-+		    fi
-+		    ac_mid=`expr 2 '*' $ac_mid + 1`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (void *))) < 0)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=-1 ac_mid=-1
-+  while :; do
-+    cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (void *))) >= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_lo=$ac_mid; break
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_hi=`expr '(' $ac_mid ')' - 1`
-+		       if test $ac_mid -le $ac_hi; then
-+			 ac_lo= ac_hi=
-+			 break
-+		       fi
-+		       ac_mid=`expr 2 '*' $ac_mid`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+  done
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo= ac_hi=
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+# Binary search between lo and hi bounds.
-+while test "x$ac_lo" != "x$ac_hi"; do
-+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+int
-+main ()
-+{
-+static int test_array [1 - 2 * !(((long) (sizeof (void *))) <= $ac_mid)];
-+test_array [0] = 0
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>conftest.er1
-+  ac_status=$?
-+  grep -v '^ *+' conftest.er1 >conftest.err
-+  rm -f conftest.er1
-+  cat conftest.err >&5
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+	 { ac_try='test -z "$ac_c_werror_flag"
-+			 || test ! -s conftest.err'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; } &&
-+	 { ac_try='test -s conftest.$ac_objext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_hi=$ac_mid
-+else
-+  echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_lo=`expr '(' $ac_mid ')' + 1`
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+done
-+case $ac_lo in
-+?*) ac_cv_sizeof_void_p=$ac_lo;;
-+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (void *), 77
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+esac
-+else
-+  if test "$cross_compiling" = yes; then
-+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot run test program while cross compiling
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; }
-+else
-+  cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h.  */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h.  */
-+$ac_includes_default
-+long longval () { return (long) (sizeof (void *)); }
-+unsigned long ulongval () { return (long) (sizeof (void *)); }
-+#include <stdio.h>
-+#include <stdlib.h>
-+int
-+main ()
-+{
-+
-+  FILE *f = fopen ("conftest.val", "w");
-+  if (! f)
-+    exit (1);
-+  if (((long) (sizeof (void *))) < 0)
-+    {
-+      long i = longval ();
-+      if (i != ((long) (sizeof (void *))))
-+	exit (1);
-+      fprintf (f, "%ld\n", i);
-+    }
-+  else
-+    {
-+      unsigned long i = ulongval ();
-+      if (i != ((long) (sizeof (void *))))
-+	exit (1);
-+      fprintf (f, "%lu\n", i);
-+    }
-+  exit (ferror (f) || fclose (f) != 0);
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  ac_cv_sizeof_void_p=`cat conftest.val`
-+else
-+  echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+( exit $ac_status )
-+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute sizeof (void *), 77
-+See \`config.log' for more details." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+fi
-+fi
-+rm -f conftest.val
-+else
-+  ac_cv_sizeof_void_p=0
-+fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sizeof_void_p" >&5
-+echo "${ECHO_T}$ac_cv_sizeof_void_p" >&6
-+cat >>confdefs.h <<_ACEOF
-+#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
-+_ACEOF
-+
-+
-+
-+                                                                                                              ac_config_files="$ac_config_files Makefile dos2unix/Makefile drmingw/Makefile pexports/Makefile redir/Makefile reimp/Makefile res2coff/Makefile scripts/Makefile scripts/a2dll scripts/dsw2mak unix2dos/Makefile"
-+
-+cat >confcache <<\_ACEOF
-+# This file is a shell script that caches the results of configure
-+# tests run on this system so they can be shared between configure
-+# scripts and configure runs, see configure's option --config-cache.
-+# It is not useful on other systems.  If it contains results you don't
-+# want to keep, you may remove or edit it.
-+#
-+# config.status only pays attention to the cache file if you give it
-+# the --recheck option to rerun configure.
-+#
-+# `ac_cv_env_foo' variables (set or unset) will be overridden when
-+# loading this file, other *unset* `ac_cv_foo' will be assigned the
-+# following values.
-+
-+_ACEOF
-+
- # The following way of writing the cache mishandles newlines in values,
- # but we know of no workaround that is simple, portable, and efficient.
- # So, don't put newlines in cache variables' values.
-@@ -5021,6 +7010,27 @@
- Usually this means the macro was only invoked conditionally." >&2;}
-    { (exit 1); exit 1; }; }
- fi
-+if test -z "${BUILD_DRMINGW_TRUE}" && test -z "${BUILD_DRMINGW_FALSE}"; then
-+  { { echo "$as_me:$LINENO: error: conditional \"BUILD_DRMINGW\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"BUILD_DRMINGW\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+if test -z "${BUILD_REDIR_TRUE}" && test -z "${BUILD_REDIR_FALSE}"; then
-+  { { echo "$as_me:$LINENO: error: conditional \"BUILD_REDIR\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"BUILD_REDIR\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
-+if test -z "${BUILD_RES2COFF_TRUE}" && test -z "${BUILD_RES2COFF_FALSE}"; then
-+  { { echo "$as_me:$LINENO: error: conditional \"BUILD_RES2COFF\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"BUILD_RES2COFF\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
- if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-   { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
- Usually this means the macro was only invoked conditionally." >&5
-@@ -5042,6 +7052,13 @@
- Usually this means the macro was only invoked conditionally." >&2;}
-    { (exit 1); exit 1; }; }
- fi
-+if test -z "${BUILD_DRMINGW_TRUE}" && test -z "${BUILD_DRMINGW_FALSE}"; then
-+  { { echo "$as_me:$LINENO: error: conditional \"BUILD_DRMINGW\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&5
-+echo "$as_me: error: conditional \"BUILD_DRMINGW\" was never defined.
-+Usually this means the macro was only invoked conditionally." >&2;}
-+   { (exit 1); exit 1; }; }
-+fi
- 
- : ${CONFIG_STATUS=./config.status}
- ac_clean_files_save=$ac_clean_files
-@@ -5314,7 +7331,7 @@
- cat >&5 <<_CSEOF
- 
- This file was extended by mingw-utils $as_me 0.3, which was
--generated by GNU Autoconf 2.58.  Invocation command line was
-+generated by GNU Autoconf 2.59.  Invocation command line was
- 
-   CONFIG_FILES    = $CONFIG_FILES
-   CONFIG_HEADERS  = $CONFIG_HEADERS
-@@ -5377,7 +7394,7 @@
- cat >>$CONFIG_STATUS <<_ACEOF
- ac_cs_version="\\
- mingw-utils config.status 0.3
--configured by $0, generated by GNU Autoconf 2.58,
-+configured by $0, generated by GNU Autoconf 2.59,
-   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
- 
- Copyright (C) 2003 Free Software Foundation, Inc.
-@@ -5595,17 +7612,26 @@
- s, at AUTOMAKE@,$AUTOMAKE,;t t
- s, at AUTOHEADER@,$AUTOHEADER,;t t
- s, at MAKEINFO@,$MAKEINFO,;t t
--s, at AMTAR@,$AMTAR,;t t
- s, at install_sh@,$install_sh,;t t
- s, at STRIP@,$STRIP,;t t
- s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
- s, at INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
-+s, at mkdir_p@,$mkdir_p,;t t
- s, at AWK@,$AWK,;t t
- s, at SET_MAKE@,$SET_MAKE,;t t
- s, at am__leading_dot@,$am__leading_dot,;t t
-+s, at AMTAR@,$AMTAR,;t t
-+s, at am__tar@,$am__tar,;t t
-+s, at am__untar@,$am__untar,;t t
- s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
- s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
- s, at MAINT@,$MAINT,;t t
-+s, at BUILD_DRMINGW_TRUE@,$BUILD_DRMINGW_TRUE,;t t
-+s, at BUILD_DRMINGW_FALSE@,$BUILD_DRMINGW_FALSE,;t t
-+s, at BUILD_REDIR_TRUE@,$BUILD_REDIR_TRUE,;t t
-+s, at BUILD_REDIR_FALSE@,$BUILD_REDIR_FALSE,;t t
-+s, at BUILD_RES2COFF_TRUE@,$BUILD_RES2COFF_TRUE,;t t
-+s, at BUILD_RES2COFF_FALSE@,$BUILD_RES2COFF_FALSE,;t t
- s, at CC@,$CC,;t t
- s, at CFLAGS@,$CFLAGS,;t t
- s, at LDFLAGS@,$LDFLAGS,;t t
-@@ -6262,27 +8288,21 @@
-   else
-     continue
-   fi
--  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
--  # Extract the definition of DEP_FILES from the Makefile without
--  # running `make'.
--  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
-+  # Extract the definition of DEPDIR, am__include, and am__quote
-+  # from the Makefile without running `make'.
-+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-   test -z "$DEPDIR" && continue
-+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-+  test -z "am__include" && continue
-+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-   # When using ansi2knr, U may be empty or an underscore; expand it
--  U=`sed -n -e '/^U = / s///p' < "$mf"`
--  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
--  # We invoke sed twice because it is the simplest approach to
--  # changing $(DEPDIR) to its actual value in the expansion.
--  for file in `sed -n -e '
--    /^DEP_FILES = .*\\\\$/ {
--      s/^DEP_FILES = //
--      :loop
--	s/\\\\$//
--	p
--	n
--	/\\\\$/ b loop
--      p
--    }
--    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
-+  U=`sed -n 's/^U = //p' < "$mf"`
-+  # Find all dependency output files, they are included files with
-+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
-+  # simplest approach to changing $(DEPDIR) to its actual value in the
-+  # expansion.
-+  for file in `sed -n "
-+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-     # Make sure the directory exists.
-     test -f "$dirpart/$file" && continue
-diff -ru ../release/mingw-utils-0.3/configure.ac ./configure.ac
---- ../release/mingw-utils-0.3/configure.ac	2003-11-25 08:24:13.000000000 -0800
-+++ ./configure.ac	2006-08-11 05:25:25.000000000 -0700
-@@ -7,6 +7,52 @@
- AM_CONFIG_HEADER(config.h)
- AM_MAINTAINER_MODE
- 
-+AC_ARG_ENABLE(drmingw, 
-+	AS_HELP_STRING([--disable-drmingw],[Don't build drmingw (default is build)]), 
-+	[case "${enableval}" in
-+	  yes) build_drmingw=true ;;
-+	  no)  build_drmingw=false ;;
-+	  *)   AC_MSG_ERROR([--enable-drmingw argument must be yes or no, not "${enableval}"]) ;;
-+	 esac],
-+	 [build_drmingw=true])
-+
-+AC_ARG_ENABLE(redir, 
-+	AS_HELP_STRING([--disable-redir],[Don't build redir (default is build)]), 
-+	[case "${enableval}" in
-+	  yes) build_redir=true ;;
-+	  no)  build_redir=false ;;
-+	  *)   AC_MSG_ERROR([--enable-redir argument must be yes or no, not "${enableval}"]) ;;
-+	 esac],
-+	 [build_redir=true])
-+
-+AC_ARG_ENABLE(res2coff, 
-+	AS_HELP_STRING([--disable-res2coff],[Don't build res2coff (default is build)]), 
-+	[case "${enableval}" in
-+	  yes) build_res2coff=true ;;
-+	  no)  build_res2coff=false ;;
-+	  *)   AC_MSG_ERROR([--enable-res2coff argument must be yes or no, not "${enableval}"]) ;;
-+	 esac],
-+	 [build_res2coff=true])
-+
-+AC_ARG_ENABLE(nonportable, 
-+	AS_HELP_STRING([--disable-nonportable],[shortcut for --disable-drmingw, --disable-redir and --disable-res2coff]), 
-+	[case "${enableval}" in
-+	  yes) build_drmingw=true
-+	       build_redir=true
-+	       build_res2coff=true
-+	       ;;
-+	  no)  build_res2coff=false
-+	       build_redir=false
-+	       build_res2coff=false
-+	       ;;
-+	  *)   AC_MSG_ERROR([--enable-nonportable argument must be yes or no, not "${enableval}"]) ;;
-+	 esac],
-+	 [build_res2coff=true])
-+
-+AM_CONDITIONAL(BUILD_DRMINGW, [test "${build_drmingw}" = "true"])
-+AM_CONDITIONAL(BUILD_REDIR, [test "${build_redir}" = "true"])
-+AM_CONDITIONAL(BUILD_RES2COFF, [test "${build_res2coff}" = "true"])
-+
- # Checks for programs.
- AC_PROG_CC
- AC_PROG_CXX
-@@ -19,13 +65,20 @@
- AC_PROG_YACC
- 
- AC_ARG_VAR(WINDRES, [Windows Resource compiler tool path])
--AC_PATH_TOOL(WINDRES,windres,
--	[AC_MSG_WARN(Could not find a windres tool in your PATH. Will not be able to compile drmingw.)]
--)
-+AC_PATH_TOOL(WINDRES,windres)
-+
-+if test -z "${WINDRES}"; then
-+	AC_MSG_WARN([windres tool isn't in your PATH, drmingw can't be built!!])
-+	AM_CONDITIONAL(BUILD_DRMINGW, false)
-+fi
-+
- AC_SUBST(WINDRES)
- 
- # Checks for header files.
- AC_HEADER_STDC
-+
-+AC_CHECK_HEADERS([windows.h])
-+
- where_toGet_utime_h='not found!'
- # this part is scrambled by autoconf. phooey. so we just cannot tell the user what we are doing.
- # AC_MSG_CHECKING([for whether utime.h is found as "utime.h" or "sys/utime.h"])
-@@ -44,6 +97,11 @@
- AC_CHECK_FUNCS(mkstemp mktemp, break)
- AC_CHECK_FUNCS(utime)
- 
-+AC_CHECK_SIZEOF(_int64)
-+AC_CHECK_SIZEOF(long long)
-+AC_CHECK_SIZEOF(long)
-+AC_CHECK_SIZEOF(void *)
-+
- AC_CONFIG_FILES([
- Makefile
- dos2unix/Makefile
-diff -ru ../release/mingw-utils-0.3/dos2unix/Makefile.am ./dos2unix/Makefile.am
---- ../release/mingw-utils-0.3/dos2unix/Makefile.am	2002-12-04 04:07:55.000000000 -0800
-+++ ./dos2unix/Makefile.am	2006-09-25 20:06:24.000000000 -0700
-@@ -6,7 +6,8 @@
- 
- docdir = $(prefix)/doc/dos2unix
- 
--doc_DATA = COPYING dos2unix.html
-+#doc_DATA = COPYING dos2unix.html
-+doc_DATA = COPYING
- 
- dos2unix.html: dos2unix.1
- 	man2html $< > $@
-diff -ru ../release/mingw-utils-0.3/dos2unix/Makefile.in ./dos2unix/Makefile.in
---- ../release/mingw-utils-0.3/dos2unix/Makefile.in	2003-11-25 08:31:11.000000000 -0800
-+++ ./dos2unix/Makefile.in	2006-09-25 20:08:13.000000000 -0700
-@@ -1,8 +1,8 @@
--# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- 
--# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
--# Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005  Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -14,6 +14,7 @@
- 
- @SET_MAKE@
- 
-+
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -21,7 +22,6 @@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- top_builddir = ..
--
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
- install_sh_DATA = $(install_sh) -c -m 644
-@@ -35,6 +35,42 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+bin_PROGRAMS = dos2unix$(EXEEXT)
-+subdir = dos2unix
-+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in COPYING
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+	$(ACLOCAL_M4)
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"
-+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+PROGRAMS = $(bin_PROGRAMS)
-+am_dos2unix_OBJECTS = dos2unix.$(OBJEXT)
-+dos2unix_OBJECTS = $(am_dos2unix_OBJECTS)
-+dos2unix_LDADD = $(LDADD)
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+SOURCES = $(dos2unix_SOURCES)
-+DIST_SOURCES = $(dos2unix_SOURCES)
-+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-+am__vpath_adj = case $$p in \
-+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-+    *) f=$$p;; \
-+  esac;
-+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-+docDATA_INSTALL = $(INSTALL_DATA)
-+DATA = $(doc_DATA)
-+ETAGS = etags
-+CTAGS = ctags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- AMDEP_FALSE = @AMDEP_FALSE@
- AMDEP_TRUE = @AMDEP_TRUE@
-@@ -43,6 +79,12 @@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BUILD_DRMINGW_FALSE = @BUILD_DRMINGW_FALSE@
-+BUILD_DRMINGW_TRUE = @BUILD_DRMINGW_TRUE@
-+BUILD_REDIR_FALSE = @BUILD_REDIR_FALSE@
-+BUILD_REDIR_TRUE = @BUILD_REDIR_TRUE@
-+BUILD_RES2COFF_FALSE = @BUILD_RES2COFF_FALSE@
-+BUILD_RES2COFF_TRUE = @BUILD_RES2COFF_TRUE@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-@@ -101,6 +143,8 @@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
- bindir = @bindir@
- build_alias = @build_alias@
- datadir = @datadir@
-@@ -113,6 +157,7 @@
- libexecdir = @libexecdir@
- localstatedir = @localstatedir@
- mandir = @mandir@
-+mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
-@@ -120,63 +165,55 @@
- sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
--bin_PROGRAMS = dos2unix
--
- dos2unix_SOURCES = dos2unix.c dos2unix.h
--
- noinst_man_MANS = dos2unix.1
--
- docdir = $(prefix)/doc/dos2unix
- 
--doc_DATA = COPYING dos2unix.html
--subdir = dos2unix
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = $(top_builddir)/config.h
--CONFIG_CLEAN_FILES =
--bin_PROGRAMS = dos2unix$(EXEEXT)
--PROGRAMS = $(bin_PROGRAMS)
--
--am_dos2unix_OBJECTS = dos2unix.$(OBJEXT)
--dos2unix_OBJECTS = $(am_dos2unix_OBJECTS)
--dos2unix_LDADD = $(LDADD)
--dos2unix_DEPENDENCIES =
--dos2unix_LDFLAGS =
--
--DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
--depcomp = $(SHELL) $(top_srcdir)/depcomp
--am__depfiles_maybe = depfiles
-- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/dos2unix.Po
--COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
--	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--CCLD = $(CC)
--LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--DIST_SOURCES = $(dos2unix_SOURCES)
--DATA = $(doc_DATA)
--
--DIST_COMMON = $(srcdir)/Makefile.in COPYING Makefile.am
--SOURCES = $(dos2unix_SOURCES)
--
-+#doc_DATA = COPYING dos2unix.html
-+doc_DATA = COPYING
- all: all-am
- 
- .SUFFIXES:
- .SUFFIXES: .c .o .obj
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-+	@for dep in $?; do \
-+	  case '$(am__configure_deps)' in \
-+	    *$$dep*) \
-+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-+		&& exit 0; \
-+	      exit 1;; \
-+	  esac; \
-+	done; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  dos2unix/Makefile'; \
- 	cd $(top_srcdir) && \
- 	  $(AUTOMAKE) --gnu  dos2unix/Makefile
--Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
--	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
--binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+	@case '$?' in \
-+	  *config.status*) \
-+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-+	  *) \
-+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-+	esac;
-+
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- install-binPROGRAMS: $(bin_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(bindir)
-+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- 	  if test -f $$p \
- 	  ; then \
- 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
--	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
--	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
-+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- 	  else :; fi; \
- 	done
- 
-@@ -184,8 +221,8 @@
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
--	  echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
--	  rm -f $(DESTDIR)$(bindir)/$$f; \
-+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
- 	done
- 
- clean-binPROGRAMS:
-@@ -195,7 +232,7 @@
- 	$(LINK) $(dos2unix_LDFLAGS) $(dos2unix_OBJECTS) $(dos2unix_LDADD) $(LIBS)
- 
- mostlyclean-compile:
--	-rm -f *.$(OBJEXT) core *.core
-+	-rm -f *.$(OBJEXT)
- 
- distclean-compile:
- 	-rm -f *.tab.c
-@@ -203,54 +240,37 @@
- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dos2unix.Po at am__quote@
- 
- .c.o:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
- 
- .c.obj:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
- uninstall-info-am:
--docDATA_INSTALL = $(INSTALL_DATA)
- install-docDATA: $(doc_DATA)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(docdir)
-+	test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- 	@list='$(doc_DATA)'; for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
--	  $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
- uninstall-docDATA:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(doc_DATA)'; for p in $$list; do \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
--	  rm -f $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
--ETAGS = etags
--ETAGSFLAGS =
--
--CTAGS = ctags
--CTAGSFLAGS =
--
--tags: TAGS
--
- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- 	unique=`for i in $$list; do \
-@@ -259,6 +279,7 @@
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
- 	mkid -fID $$unique
-+tags: TAGS
- 
- TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -270,10 +291,11 @@
- 	  done | \
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
--	test -z "$(ETAGS_ARGS)$$tags$$unique" \
--	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	     $$tags $$unique
--
-+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-+	  test -n "$$unique" || unique=$$empty_fix; \
-+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+	    $$tags $$unique; \
-+	fi
- ctags: CTAGS
- CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -296,10 +318,6 @@
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--
--top_distdir = ..
--distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
- 
- distdir: $(DISTFILES)
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-@@ -313,7 +331,7 @@
- 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- 	    dir="/$$dir"; \
--	    $(mkinstalldirs) "$(distdir)$$dir"; \
-+	    $(mkdir_p) "$(distdir)$$dir"; \
- 	  else \
- 	    dir=''; \
- 	  fi; \
-@@ -331,9 +349,10 @@
- check-am: all-am
- check: check-am
- all-am: Makefile $(PROGRAMS) $(DATA)
--
- installdirs:
--	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(docdir)
-+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \
-+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-+	done
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
-@@ -353,7 +372,7 @@
- clean-generic:
- 
- distclean-generic:
--	-rm -f $(CONFIG_CLEAN_FILES)
-+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
-@@ -372,6 +391,8 @@
- 
- dvi-am:
- 
-+html: html-am
-+
- info: info-am
- 
- info-am:
-@@ -403,19 +424,20 @@
- 
- ps-am:
- 
--uninstall-am: uninstall-binPROGRAMS uninstall-docDATA uninstall-info-am
-+uninstall-am: uninstall-binPROGRAMS uninstall-docDATA \
-+	uninstall-info-am
- 
- .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- 	clean-generic ctags distclean distclean-compile \
--	distclean-generic distclean-tags distdir dvi dvi-am info \
--	info-am install install-am install-binPROGRAMS install-data \
--	install-data-am install-docDATA install-exec install-exec-am \
--	install-info install-info-am install-man install-strip \
--	installcheck installcheck-am installdirs maintainer-clean \
--	maintainer-clean-generic mostlyclean mostlyclean-compile \
--	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
--	uninstall-am uninstall-binPROGRAMS uninstall-docDATA \
--	uninstall-info-am
-+	distclean-generic distclean-tags distdir dvi dvi-am html \
-+	html-am info info-am install install-am install-binPROGRAMS \
-+	install-data install-data-am install-docDATA install-exec \
-+	install-exec-am install-info install-info-am install-man \
-+	install-strip installcheck installcheck-am installdirs \
-+	maintainer-clean maintainer-clean-generic mostlyclean \
-+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-+	tags uninstall uninstall-am uninstall-binPROGRAMS \
-+	uninstall-docDATA uninstall-info-am
- 
- 
- dos2unix.html: dos2unix.1
-diff -ru ../release/mingw-utils-0.3/drmingw/Makefile.in ./drmingw/Makefile.in
---- ../release/mingw-utils-0.3/drmingw/Makefile.in	2003-11-25 09:56:14.000000000 -0800
-+++ ./drmingw/Makefile.in	2006-09-25 20:08:13.000000000 -0700
-@@ -1,8 +1,8 @@
--# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- 
--# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
--# Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005  Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -14,6 +14,8 @@
- 
- @SET_MAKE@
- 
-+
-+
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -21,7 +23,6 @@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- top_builddir = ..
--
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
- install_sh_DATA = $(install_sh) -c -m 644
-@@ -35,6 +36,73 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+bin_PROGRAMS = drmingw$(EXEEXT)
-+samples_PROGRAMS = test$(EXEEXT) testcpp$(EXEEXT)
-+subdir = drmingw
-+DIST_COMMON = $(dist_doc_DATA) $(srcdir)/Makefile.am \
-+	$(srcdir)/Makefile.in COPYING COPYING.LIB
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+	$(ACLOCAL_M4)
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+LIBRARIES = $(noinst_LIBRARIES)
-+AR = ar
-+ARFLAGS = cru
-+libexchndl2_a_AR = $(AR) $(ARFLAGS)
-+libexchndl2_a_LIBADD =
-+am_libexchndl2_a_OBJECTS = exchndl2.$(OBJEXT)
-+libexchndl2_a_OBJECTS = $(am_libexchndl2_a_OBJECTS)
-+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(samplesdir)" \
-+	"$(DESTDIR)$(docdir)" "$(DESTDIR)$(samplesdir)"
-+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+samplesPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+PROGRAMS = $(bin_PROGRAMS) $(samples_PROGRAMS)
-+am_drmingw_OBJECTS = debugger.$(OBJEXT) debugx.$(OBJEXT) \
-+	dialog.$(OBJEXT) log.$(OBJEXT) main.$(OBJEXT) misc.$(OBJEXT) \
-+	module.$(OBJEXT) prdbg.$(OBJEXT) symbols.$(OBJEXT) \
-+	ieee.$(OBJEXT) rdcoff.$(OBJEXT) rddbg.$(OBJEXT) \
-+	stabs.$(OBJEXT) debug.$(OBJEXT)
-+drmingw_OBJECTS = $(am_drmingw_OBJECTS)
-+drmingw_DEPENDENCIES = resource.o
-+am_test_OBJECTS = test-test.$(OBJEXT)
-+test_OBJECTS = $(am_test_OBJECTS)
-+test_DEPENDENCIES = exchndl2.o
-+am_testcpp_OBJECTS = testcpp-testcpp.$(OBJEXT)
-+testcpp_OBJECTS = $(am_testcpp_OBJECTS)
-+testcpp_DEPENDENCIES = exchndl2.o
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-+CXXLD = $(CXX)
-+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-+	-o $@
-+SOURCES = $(libexchndl2_a_SOURCES) $(drmingw_SOURCES) \
-+	$(dist_EXTRA_drmingw_SOURCES) $(test_SOURCES) \
-+	$(testcpp_SOURCES)
-+DIST_SOURCES = $(libexchndl2_a_SOURCES) $(drmingw_SOURCES) \
-+	$(dist_EXTRA_drmingw_SOURCES) $(test_SOURCES) \
-+	$(testcpp_SOURCES)
-+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-+am__vpath_adj = case $$p in \
-+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-+    *) f=$$p;; \
-+  esac;
-+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-+dist_docDATA_INSTALL = $(INSTALL_DATA)
-+samplesDATA_INSTALL = $(INSTALL_DATA)
-+DATA = $(dist_doc_DATA) $(samples_DATA)
-+ETAGS = etags
-+CTAGS = ctags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- AMDEP_FALSE = @AMDEP_FALSE@
- AMDEP_TRUE = @AMDEP_TRUE@
-@@ -43,6 +111,12 @@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BUILD_DRMINGW_FALSE = @BUILD_DRMINGW_FALSE@
-+BUILD_DRMINGW_TRUE = @BUILD_DRMINGW_TRUE@
-+BUILD_REDIR_FALSE = @BUILD_REDIR_FALSE@
-+BUILD_REDIR_TRUE = @BUILD_REDIR_TRUE@
-+BUILD_RES2COFF_FALSE = @BUILD_RES2COFF_FALSE@
-+BUILD_RES2COFF_TRUE = @BUILD_RES2COFF_TRUE@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-@@ -101,6 +175,8 @@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
- bindir = @bindir@
- build_alias = @build_alias@
- datadir = @datadir@
-@@ -113,6 +189,7 @@
- libexecdir = @libexecdir@
- localstatedir = @localstatedir@
- mandir = @mandir@
-+mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
-@@ -120,9 +197,6 @@
- sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
--
--bin_PROGRAMS = drmingw
--
- drmingw_SOURCES = \
- 	debugger.c \
- 	debugger.h \
-@@ -158,116 +232,62 @@
- 	include/libcoff.h \
- 	include/libiberty.h
- 
--
- dist_EXTRA_drmingw_SOURCES = \
- 	resource.rc \
- 	icon.ico
- 
--
- INCLUDES = -I$(srcdir)/include
--
- drmingw_LDFLAGS = -mwindows
- drmingw_LDADD = resource.o -lbfd -liberty
--
- RC = @WINDRES@
- RCFLAGS = --use-temp-file --verbose -O COFF
--
- EXTRA_DIST = exchndl.c
--
- CLEANFILES = exchndl.dll
--
- docdir = $(prefix)/doc/drmingw
--
- dist_doc_DATA = COPYING COPYING.LIB doc/drmingw.html doc/drmingw.reg doc/exception-nt.gif doc/install.gif doc/sample.gif
--
- noinst_LIBRARIES = libexchndl2.a
--
- libexchndl2_a_SOURCES = samples/exchndl2.cxx
--
- samplesdir = $(docdir)/samples
--
--samples_PROGRAMS = test testcpp
- samples_DATA = samples/exchndl2.cxx samples/test.c samples/testcpp.cxx
--
- test_SOURCES = samples/test.c
- test_LDADD = exchndl2.o -lstdc++
- test_CFLAGS = -ggdb $(AM_CFLAGS)
--
- testcpp_SOURCES = samples/testcpp.cxx
- testcpp_LDADD = exchndl2.o -lstdc++
- testcpp_CXXFLAGS = -ggdb $(AM_CXXFLAGS)
--subdir = drmingw
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = $(top_builddir)/config.h
--CONFIG_CLEAN_FILES =
--LIBRARIES = $(noinst_LIBRARIES)
--
--libexchndl2_a_AR = $(AR) cru
--libexchndl2_a_LIBADD =
--am_libexchndl2_a_OBJECTS = exchndl2.$(OBJEXT)
--libexchndl2_a_OBJECTS = $(am_libexchndl2_a_OBJECTS)
--bin_PROGRAMS = drmingw$(EXEEXT)
--samples_PROGRAMS = test$(EXEEXT) testcpp$(EXEEXT)
--PROGRAMS = $(bin_PROGRAMS) $(samples_PROGRAMS)
--
--am_drmingw_OBJECTS = debugger.$(OBJEXT) debugx.$(OBJEXT) \
--	dialog.$(OBJEXT) log.$(OBJEXT) main.$(OBJEXT) misc.$(OBJEXT) \
--	module.$(OBJEXT) prdbg.$(OBJEXT) symbols.$(OBJEXT) \
--	ieee.$(OBJEXT) rdcoff.$(OBJEXT) rddbg.$(OBJEXT) stabs.$(OBJEXT) \
--	debug.$(OBJEXT)
--drmingw_OBJECTS = $(am_drmingw_OBJECTS)
--drmingw_DEPENDENCIES = resource.o
--am_test_OBJECTS = test-test.$(OBJEXT)
--test_OBJECTS = $(am_test_OBJECTS)
--test_DEPENDENCIES = exchndl2.o
--test_LDFLAGS =
--am_testcpp_OBJECTS = testcpp-testcpp.$(OBJEXT)
--testcpp_OBJECTS = $(am_testcpp_OBJECTS)
--testcpp_DEPENDENCIES = exchndl2.o
--testcpp_LDFLAGS =
--
--DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
--depcomp = $(SHELL) $(top_srcdir)/depcomp
--am__depfiles_maybe = depfiles
-- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/debug.Po ./$(DEPDIR)/debugger.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/debugx.Po ./$(DEPDIR)/dialog.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/exchndl2.Po ./$(DEPDIR)/ieee.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/log.Po ./$(DEPDIR)/main.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/misc.Po ./$(DEPDIR)/module.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/prdbg.Po ./$(DEPDIR)/rdcoff.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/rddbg.Po ./$(DEPDIR)/stabs.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/symbols.Po ./$(DEPDIR)/test-test.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/testcpp-testcpp.Po
--COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
--	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--CCLD = $(CC)
--LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
--	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
--CXXLD = $(CXX)
--CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
--	-o $@
--DIST_SOURCES = $(libexchndl2_a_SOURCES) $(drmingw_SOURCES) \
--	$(dist_EXTRA_drmingw_SOURCES) $(test_SOURCES) \
--	$(testcpp_SOURCES)
--DATA = $(dist_doc_DATA) $(samples_DATA)
--
--DIST_COMMON = $(dist_doc_DATA) $(srcdir)/Makefile.in COPYING \
--	COPYING.LIB Makefile.am
--SOURCES = $(libexchndl2_a_SOURCES) $(drmingw_SOURCES) $(dist_EXTRA_drmingw_SOURCES) $(test_SOURCES) $(testcpp_SOURCES)
--
- all: all-am
- 
- .SUFFIXES:
- .SUFFIXES: .c .cxx .o .obj
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-+	@for dep in $?; do \
-+	  case '$(am__configure_deps)' in \
-+	    *$$dep*) \
-+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-+		&& exit 0; \
-+	      exit 1;; \
-+	  esac; \
-+	done; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  drmingw/Makefile'; \
- 	cd $(top_srcdir) && \
- 	  $(AUTOMAKE) --gnu  drmingw/Makefile
--Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
--	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
--
--AR = ar
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+	@case '$?' in \
-+	  *config.status*) \
-+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-+	  *) \
-+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-+	esac;
-+
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- 
- clean-noinstLIBRARIES:
- 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-@@ -275,17 +295,16 @@
- 	-rm -f libexchndl2.a
- 	$(libexchndl2_a_AR) libexchndl2.a $(libexchndl2_a_OBJECTS) $(libexchndl2_a_LIBADD)
- 	$(RANLIB) libexchndl2.a
--binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
- install-binPROGRAMS: $(bin_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(bindir)
-+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- 	  if test -f $$p \
- 	  ; then \
- 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
--	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
--	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
-+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- 	  else :; fi; \
- 	done
- 
-@@ -293,23 +312,22 @@
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
--	  echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
--	  rm -f $(DESTDIR)$(bindir)/$$f; \
-+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
- 	done
- 
- clean-binPROGRAMS:
- 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
--samplesPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
- install-samplesPROGRAMS: $(samples_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(samplesdir)
-+	test -z "$(samplesdir)" || $(mkdir_p) "$(DESTDIR)$(samplesdir)"
- 	@list='$(samples_PROGRAMS)'; for p in $$list; do \
- 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- 	  if test -f $$p \
- 	  ; then \
- 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
--	   echo " $(INSTALL_PROGRAM_ENV) $(samplesPROGRAMS_INSTALL) $$p $(DESTDIR)$(samplesdir)/$$f"; \
--	   $(INSTALL_PROGRAM_ENV) $(samplesPROGRAMS_INSTALL) $$p $(DESTDIR)$(samplesdir)/$$f || exit 1; \
-+	   echo " $(INSTALL_PROGRAM_ENV) $(samplesPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(samplesdir)/$$f'"; \
-+	   $(INSTALL_PROGRAM_ENV) $(samplesPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(samplesdir)/$$f" || exit 1; \
- 	  else :; fi; \
- 	done
- 
-@@ -317,8 +335,8 @@
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(samples_PROGRAMS)'; for p in $$list; do \
- 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
--	  echo " rm -f $(DESTDIR)$(samplesdir)/$$f"; \
--	  rm -f $(DESTDIR)$(samplesdir)/$$f; \
-+	  echo " rm -f '$(DESTDIR)$(samplesdir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(samplesdir)/$$f"; \
- 	done
- 
- clean-samplesPROGRAMS:
-@@ -334,7 +352,7 @@
- 	$(CXXLINK) $(testcpp_LDFLAGS) $(testcpp_OBJECTS) $(testcpp_LDADD) $(LIBS)
- 
- mostlyclean-compile:
--	-rm -f *.$(OBJEXT) core *.core
-+	-rm -f *.$(OBJEXT)
- 
- distclean-compile:
- 	-rm -f *.tab.c
-@@ -358,160 +376,110 @@
- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testcpp-testcpp.Po at am__quote@
- 
- .c.o:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
- 
- .c.obj:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
- 
- test-test.o: samples/test.c
-- at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-test.o -MD -MP -MF "$(DEPDIR)/test-test.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o test-test.o `test -f 'samples/test.c' || echo '$(srcdir)/'`samples/test.c; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test-test.Tpo" "$(DEPDIR)/test-test.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test-test.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-test.o -MD -MP -MF "$(DEPDIR)/test-test.Tpo" -c -o test-test.o `test -f 'samples/test.c' || echo '$(srcdir)/'`samples/test.c; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test-test.Tpo" "$(DEPDIR)/test-test.Po"; else rm -f "$(DEPDIR)/test-test.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samples/test.c' object='test-test.o' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test-test.Po' tmpdepfile='$(DEPDIR)/test-test.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-test.o `test -f 'samples/test.c' || echo '$(srcdir)/'`samples/test.c
- 
- test-test.obj: samples/test.c
-- at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-test.obj -MD -MP -MF "$(DEPDIR)/test-test.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o test-test.obj `if test -f 'samples/test.c'; then $(CYGPATH_W) 'samples/test.c'; else $(CYGPATH_W) '$(srcdir)/samples/test.c'; fi`; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test-test.Tpo" "$(DEPDIR)/test-test.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/test-test.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -MT test-test.obj -MD -MP -MF "$(DEPDIR)/test-test.Tpo" -c -o test-test.obj `if test -f 'samples/test.c'; then $(CYGPATH_W) 'samples/test.c'; else $(CYGPATH_W) '$(srcdir)/samples/test.c'; fi`; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/test-test.Tpo" "$(DEPDIR)/test-test.Po"; else rm -f "$(DEPDIR)/test-test.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='samples/test.c' object='test-test.obj' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/test-test.Po' tmpdepfile='$(DEPDIR)/test-test.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_CFLAGS) $(CFLAGS) -c -o test-test.obj `if test -f 'samples/test.c'; then $(CYGPATH_W) 'samples/test.c'; else $(CYGPATH_W) '$(srcdir)/samples/test.c'; fi`
- 
- .cxx.o:
-- at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCXX_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCXX_TRUE@	fi
-+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
-+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
- 
- .cxx.obj:
-- at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCXX_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCXX_TRUE@	fi
-+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
- 
- exchndl2.o: samples/exchndl2.cxx
-- at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT exchndl2.o -MD -MP -MF "$(DEPDIR)/exchndl2.Tpo" \
-- at am__fastdepCXX_TRUE@	  -c -o exchndl2.o `test -f 'samples/exchndl2.cxx' || echo '$(srcdir)/'`samples/exchndl2.cxx; \
-- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/exchndl2.Tpo" "$(DEPDIR)/exchndl2.Po"; \
-- at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/exchndl2.Tpo"; exit 1; \
-- at am__fastdepCXX_TRUE@	fi
-+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT exchndl2.o -MD -MP -MF "$(DEPDIR)/exchndl2.Tpo" -c -o exchndl2.o `test -f 'samples/exchndl2.cxx' || echo '$(srcdir)/'`samples/exchndl2.cxx; \
-+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/exchndl2.Tpo" "$(DEPDIR)/exchndl2.Po"; else rm -f "$(DEPDIR)/exchndl2.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='samples/exchndl2.cxx' object='exchndl2.o' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/exchndl2.Po' tmpdepfile='$(DEPDIR)/exchndl2.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o exchndl2.o `test -f 'samples/exchndl2.cxx' || echo '$(srcdir)/'`samples/exchndl2.cxx
- 
- exchndl2.obj: samples/exchndl2.cxx
-- at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT exchndl2.obj -MD -MP -MF "$(DEPDIR)/exchndl2.Tpo" \
-- at am__fastdepCXX_TRUE@	  -c -o exchndl2.obj `if test -f 'samples/exchndl2.cxx'; then $(CYGPATH_W) 'samples/exchndl2.cxx'; else $(CYGPATH_W) '$(srcdir)/samples/exchndl2.cxx'; fi`; \
-- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/exchndl2.Tpo" "$(DEPDIR)/exchndl2.Po"; \
-- at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/exchndl2.Tpo"; exit 1; \
-- at am__fastdepCXX_TRUE@	fi
-+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT exchndl2.obj -MD -MP -MF "$(DEPDIR)/exchndl2.Tpo" -c -o exchndl2.obj `if test -f 'samples/exchndl2.cxx'; then $(CYGPATH_W) 'samples/exchndl2.cxx'; else $(CYGPATH_W) '$(srcdir)/samples/exchndl2.cxx'; fi`; \
-+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/exchndl2.Tpo" "$(DEPDIR)/exchndl2.Po"; else rm -f "$(DEPDIR)/exchndl2.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='samples/exchndl2.cxx' object='exchndl2.obj' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/exchndl2.Po' tmpdepfile='$(DEPDIR)/exchndl2.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o exchndl2.obj `if test -f 'samples/exchndl2.cxx'; then $(CYGPATH_W) 'samples/exchndl2.cxx'; else $(CYGPATH_W) '$(srcdir)/samples/exchndl2.cxx'; fi`
- 
- testcpp-testcpp.o: samples/testcpp.cxx
-- at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcpp_CXXFLAGS) $(CXXFLAGS) -MT testcpp-testcpp.o -MD -MP -MF "$(DEPDIR)/testcpp-testcpp.Tpo" \
-- at am__fastdepCXX_TRUE@	  -c -o testcpp-testcpp.o `test -f 'samples/testcpp.cxx' || echo '$(srcdir)/'`samples/testcpp.cxx; \
-- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/testcpp-testcpp.Tpo" "$(DEPDIR)/testcpp-testcpp.Po"; \
-- at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/testcpp-testcpp.Tpo"; exit 1; \
-- at am__fastdepCXX_TRUE@	fi
-+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcpp_CXXFLAGS) $(CXXFLAGS) -MT testcpp-testcpp.o -MD -MP -MF "$(DEPDIR)/testcpp-testcpp.Tpo" -c -o testcpp-testcpp.o `test -f 'samples/testcpp.cxx' || echo '$(srcdir)/'`samples/testcpp.cxx; \
-+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/testcpp-testcpp.Tpo" "$(DEPDIR)/testcpp-testcpp.Po"; else rm -f "$(DEPDIR)/testcpp-testcpp.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='samples/testcpp.cxx' object='testcpp-testcpp.o' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/testcpp-testcpp.Po' tmpdepfile='$(DEPDIR)/testcpp-testcpp.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcpp_CXXFLAGS) $(CXXFLAGS) -c -o testcpp-testcpp.o `test -f 'samples/testcpp.cxx' || echo '$(srcdir)/'`samples/testcpp.cxx
- 
- testcpp-testcpp.obj: samples/testcpp.cxx
-- at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcpp_CXXFLAGS) $(CXXFLAGS) -MT testcpp-testcpp.obj -MD -MP -MF "$(DEPDIR)/testcpp-testcpp.Tpo" \
-- at am__fastdepCXX_TRUE@	  -c -o testcpp-testcpp.obj `if test -f 'samples/testcpp.cxx'; then $(CYGPATH_W) 'samples/testcpp.cxx'; else $(CYGPATH_W) '$(srcdir)/samples/testcpp.cxx'; fi`; \
-- at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/testcpp-testcpp.Tpo" "$(DEPDIR)/testcpp-testcpp.Po"; \
-- at am__fastdepCXX_TRUE@	else rm -f "$(DEPDIR)/testcpp-testcpp.Tpo"; exit 1; \
-- at am__fastdepCXX_TRUE@	fi
-+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcpp_CXXFLAGS) $(CXXFLAGS) -MT testcpp-testcpp.obj -MD -MP -MF "$(DEPDIR)/testcpp-testcpp.Tpo" -c -o testcpp-testcpp.obj `if test -f 'samples/testcpp.cxx'; then $(CYGPATH_W) 'samples/testcpp.cxx'; else $(CYGPATH_W) '$(srcdir)/samples/testcpp.cxx'; fi`; \
-+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/testcpp-testcpp.Tpo" "$(DEPDIR)/testcpp-testcpp.Po"; else rm -f "$(DEPDIR)/testcpp-testcpp.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='samples/testcpp.cxx' object='testcpp-testcpp.obj' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/testcpp-testcpp.Po' tmpdepfile='$(DEPDIR)/testcpp-testcpp.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testcpp_CXXFLAGS) $(CXXFLAGS) -c -o testcpp-testcpp.obj `if test -f 'samples/testcpp.cxx'; then $(CYGPATH_W) 'samples/testcpp.cxx'; else $(CYGPATH_W) '$(srcdir)/samples/testcpp.cxx'; fi`
- uninstall-info-am:
--dist_docDATA_INSTALL = $(INSTALL_DATA)
- install-dist_docDATA: $(dist_doc_DATA)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(docdir)
-+	test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- 	@list='$(dist_doc_DATA)'; for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " $(dist_docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
--	  $(dist_docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " $(dist_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-+	  $(dist_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
- uninstall-dist_docDATA:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(dist_doc_DATA)'; for p in $$list; do \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
--	  rm -f $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
- 	done
--samplesDATA_INSTALL = $(INSTALL_DATA)
- install-samplesDATA: $(samples_DATA)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(samplesdir)
-+	test -z "$(samplesdir)" || $(mkdir_p) "$(DESTDIR)$(samplesdir)"
- 	@list='$(samples_DATA)'; for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " $(samplesDATA_INSTALL) $$d$$p $(DESTDIR)$(samplesdir)/$$f"; \
--	  $(samplesDATA_INSTALL) $$d$$p $(DESTDIR)$(samplesdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " $(samplesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(samplesdir)/$$f'"; \
-+	  $(samplesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(samplesdir)/$$f"; \
- 	done
- 
- uninstall-samplesDATA:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(samples_DATA)'; for p in $$list; do \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " rm -f $(DESTDIR)$(samplesdir)/$$f"; \
--	  rm -f $(DESTDIR)$(samplesdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " rm -f '$(DESTDIR)$(samplesdir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(samplesdir)/$$f"; \
- 	done
- 
--ETAGS = etags
--ETAGSFLAGS =
--
--CTAGS = ctags
--CTAGSFLAGS =
--
--tags: TAGS
--
- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- 	unique=`for i in $$list; do \
-@@ -520,6 +488,7 @@
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
- 	mkid -fID $$unique
-+tags: TAGS
- 
- TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -531,10 +500,11 @@
- 	  done | \
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
--	test -z "$(ETAGS_ARGS)$$tags$$unique" \
--	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	     $$tags $$unique
--
-+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-+	  test -n "$$unique" || unique=$$empty_fix; \
-+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+	    $$tags $$unique; \
-+	fi
- ctags: CTAGS
- CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -557,13 +527,9 @@
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--
--top_distdir = ..
--distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
- 
- distdir: $(DISTFILES)
--	$(mkinstalldirs) $(distdir)/doc
-+	$(mkdir_p) $(distdir)/doc
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- 	list='$(DISTFILES)'; for file in $$list; do \
-@@ -575,7 +541,7 @@
- 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- 	    dir="/$$dir"; \
--	    $(mkinstalldirs) "$(distdir)$$dir"; \
-+	    $(mkdir_p) "$(distdir)$$dir"; \
- 	  else \
- 	    dir=''; \
- 	  fi; \
-@@ -593,9 +559,10 @@
- check-am: all-am
- check: check-am
- all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA)
--
- installdirs:
--	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(samplesdir) $(DESTDIR)$(docdir) $(DESTDIR)$(samplesdir)
-+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(samplesdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(samplesdir)"; do \
-+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-+	done
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
-@@ -616,7 +583,7 @@
- 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
- 
- distclean-generic:
--	-rm -f $(CONFIG_CLEAN_FILES)
-+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
-@@ -636,6 +603,8 @@
- 
- dvi-am:
- 
-+html: html-am
-+
- info: info-am
- 
- info-am:
-@@ -673,14 +642,15 @@
- 	uninstall-samplesPROGRAMS
- 
- .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
--	clean-generic clean-noinstLIBRARIES clean-samplesPROGRAMS ctags \
--	distclean distclean-compile distclean-generic distclean-tags \
--	distdir dvi dvi-am info info-am install install-am \
--	install-binPROGRAMS install-data install-data-am \
--	install-dist_docDATA install-exec install-exec-am \
--	install-exec-local install-info install-info-am install-man \
--	install-samplesDATA install-samplesPROGRAMS install-strip \
--	installcheck installcheck-am installdirs maintainer-clean \
-+	clean-generic clean-noinstLIBRARIES clean-samplesPROGRAMS \
-+	ctags distclean distclean-compile distclean-generic \
-+	distclean-tags distdir dvi dvi-am html html-am info info-am \
-+	install install-am install-binPROGRAMS install-data \
-+	install-data-am install-dist_docDATA install-exec \
-+	install-exec-am install-exec-local install-info \
-+	install-info-am install-man install-samplesDATA \
-+	install-samplesPROGRAMS install-strip installcheck \
-+	installcheck-am installdirs maintainer-clean \
- 	maintainer-clean-generic mostlyclean mostlyclean-compile \
- 	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
- 	uninstall-am uninstall-binPROGRAMS uninstall-dist_docDATA \
-diff -ru ../release/mingw-utils-0.3/Makefile.am ./Makefile.am
---- ../release/mingw-utils-0.3/Makefile.am	2002-12-04 04:06:21.000000000 -0800
-+++ ./Makefile.am	2006-08-11 05:25:25.000000000 -0700
-@@ -1,4 +1,18 @@
--SUBDIRS = dos2unix drmingw pexports redir reimp res2coff scripts unix2dos
-+if BUILD_DRMINGW
-+  DRMINGW = drmingw
-+endif
-+
-+if BUILD_REDIR
-+  REDIR = redir
-+endif
-+
-+if BUILD_RES2COFF
-+  RES2COFF = res2coff
-+endif
-+
-+SUBDIRS = dos2unix $(DRMINGW) pexports ${REDIR} reimp ${RES2COFF} scripts unix2dos
-+
-+EXTRA_DIST = dos2unix/dos2unix.1 unix2dos/unix2dos.1
- 
- instdir = /tmp/$(PACKAGE)-$(VERSION)
- 
-diff -ru ../release/mingw-utils-0.3/Makefile.in ./Makefile.in
---- ../release/mingw-utils-0.3/Makefile.in	2003-11-25 08:31:11.000000000 -0800
-+++ ./Makefile.in	2006-09-25 20:08:14.000000000 -0700
-@@ -1,8 +1,8 @@
--# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- 
--# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
--# Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005  Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -13,7 +13,6 @@
- # PARTICULAR PURPOSE.
- 
- @SET_MAKE@
--
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -21,7 +20,6 @@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- top_builddir = .
--
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
- install_sh_DATA = $(install_sh) -c -m 644
-@@ -35,6 +33,43 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+subdir = .
-+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-+	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
-+	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
-+	compile depcomp install-sh missing mkinstalldirs
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+	$(ACLOCAL_M4)
-+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
-+ configure.lineno configure.status.lineno
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = config.h
-+CONFIG_CLEAN_FILES =
-+SOURCES =
-+DIST_SOURCES =
-+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-+	html-recursive info-recursive install-data-recursive \
-+	install-exec-recursive install-info-recursive \
-+	install-recursive installcheck-recursive installdirs-recursive \
-+	pdf-recursive ps-recursive uninstall-info-recursive \
-+	uninstall-recursive
-+ETAGS = etags
-+CTAGS = ctags
-+DIST_SUBDIRS = dos2unix drmingw pexports redir reimp res2coff scripts \
-+	unix2dos
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-+distdir = $(PACKAGE)-$(VERSION)
-+top_distdir = $(distdir)
-+am__remove_distdir = \
-+  { test ! -d $(distdir) \
-+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
-+         && rm -fr $(distdir); }; }
-+DIST_ARCHIVES = $(distdir).tar.gz
-+GZIP_ENV = --best
-+distuninstallcheck_listfiles = find . -type f -print
-+distcleancheck_listfiles = find . -type f -print
- ACLOCAL = @ACLOCAL@
- AMDEP_FALSE = @AMDEP_FALSE@
- AMDEP_TRUE = @AMDEP_TRUE@
-@@ -43,6 +78,12 @@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BUILD_DRMINGW_FALSE = @BUILD_DRMINGW_FALSE@
-+BUILD_DRMINGW_TRUE = @BUILD_DRMINGW_TRUE@
-+BUILD_REDIR_FALSE = @BUILD_REDIR_FALSE@
-+BUILD_REDIR_TRUE = @BUILD_REDIR_TRUE@
-+BUILD_RES2COFF_FALSE = @BUILD_RES2COFF_FALSE@
-+BUILD_RES2COFF_TRUE = @BUILD_RES2COFF_TRUE@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-@@ -101,6 +142,8 @@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
- bindir = @bindir@
- build_alias = @build_alias@
- datadir = @datadir@
-@@ -113,6 +156,7 @@
- libexecdir = @libexecdir@
- localstatedir = @localstatedir@
- mandir = @mandir@
-+mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
-@@ -120,45 +164,48 @@
- sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
--SUBDIRS = dos2unix drmingw pexports redir reimp res2coff scripts unix2dos
--
-+ at BUILD_DRMINGW_TRUE@DRMINGW = drmingw
-+ at BUILD_REDIR_TRUE@REDIR = redir
-+ at BUILD_RES2COFF_TRUE@RES2COFF = res2coff
-+SUBDIRS = dos2unix $(DRMINGW) pexports ${REDIR} reimp ${RES2COFF} scripts unix2dos
-+EXTRA_DIST = dos2unix/dos2unix.1 unix2dos/unix2dos.1
- instdir = /tmp/$(PACKAGE)-$(VERSION)
--subdir = .
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = config.h
--CONFIG_CLEAN_FILES =
--DIST_SOURCES =
--
--RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
--	ps-recursive install-info-recursive uninstall-info-recursive \
--	all-recursive install-data-recursive install-exec-recursive \
--	installdirs-recursive install-recursive uninstall-recursive \
--	check-recursive installcheck-recursive
--DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure AUTHORS \
--	COPYING ChangeLog INSTALL Makefile.am NEWS aclocal.m4 compile \
--	config.h.in configure configure.ac depcomp install-sh missing \
--	mkinstalldirs
--DIST_SUBDIRS = $(SUBDIRS)
- all: config.h
- 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
- 
- .SUFFIXES:
--
--am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
-- configure.lineno
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
-+am--refresh:
-+	@:
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-+	@for dep in $?; do \
-+	  case '$(am__configure_deps)' in \
-+	    *$$dep*) \
-+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
-+	      cd $(srcdir) && $(AUTOMAKE) --gnu  \
-+		&& exit 0; \
-+	      exit 1;; \
-+	  esac; \
-+	done; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
- 	cd $(top_srcdir) && \
- 	  $(AUTOMAKE) --gnu  Makefile
--Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
--	cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+	@case '$?' in \
-+	  *config.status*) \
-+	    echo ' $(SHELL) ./config.status'; \
-+	    $(SHELL) ./config.status;; \
-+	  *) \
-+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-+	esac;
- 
--$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- 	$(SHELL) ./config.status --recheck
--$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
--	cd $(srcdir) && $(AUTOCONF)
- 
--$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.ac 
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+	cd $(srcdir) && $(AUTOCONF)
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- 	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
- 
- config.h: stamp-h1
-@@ -170,10 +217,10 @@
- stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
- 	@rm -f stamp-h1
- 	cd $(top_builddir) && $(SHELL) ./config.status config.h
--
--$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.ac $(ACLOCAL_M4) 
-+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
- 	cd $(top_srcdir) && $(AUTOHEADER)
--	touch $(srcdir)/config.h.in
-+	rm -f stamp-h1
-+	touch $@
- 
- distclean-hdr:
- 	-rm -f config.h stamp-h1
-@@ -186,7 +233,13 @@
- #     (which will cause the Makefiles to be regenerated when you run `make');
- # (2) otherwise, pass the desired values on the `make' command line.
- $(RECURSIVE_TARGETS):
--	@set fnord $$MAKEFLAGS; amf=$$2; \
-+	@failcom='exit 1'; \
-+	for f in x $$MAKEFLAGS; do \
-+	  case $$f in \
-+	    *=* | --[!k]*);; \
-+	    *k*) failcom='fail=yes';; \
-+	  esac; \
-+	done; \
- 	dot_seen=no; \
- 	target=`echo $@ | sed s/-recursive//`; \
- 	list='$(SUBDIRS)'; for subdir in $$list; do \
-@@ -198,7 +251,7 @@
- 	    local_target="$$target"; \
- 	  fi; \
- 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
--	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
-+	  || eval $$failcom; \
- 	done; \
- 	if test "$$dot_seen" = "no"; then \
- 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-@@ -206,7 +259,13 @@
- 
- mostlyclean-recursive clean-recursive distclean-recursive \
- maintainer-clean-recursive:
--	@set fnord $$MAKEFLAGS; amf=$$2; \
-+	@failcom='exit 1'; \
-+	for f in x $$MAKEFLAGS; do \
-+	  case $$f in \
-+	    *=* | --[!k]*);; \
-+	    *k*) failcom='fail=yes';; \
-+	  esac; \
-+	done; \
- 	dot_seen=no; \
- 	case "$@" in \
- 	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-@@ -227,7 +286,7 @@
- 	    local_target="$$target"; \
- 	  fi; \
- 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
--	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
-+	  || eval $$failcom; \
- 	done && test -z "$$fail"
- tags-recursive:
- 	list='$(SUBDIRS)'; for subdir in $$list; do \
-@@ -238,14 +297,6 @@
- 	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- 	done
- 
--ETAGS = etags
--ETAGSFLAGS =
--
--CTAGS = ctags
--CTAGSFLAGS =
--
--tags: TAGS
--
- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- 	unique=`for i in $$list; do \
-@@ -254,19 +305,22 @@
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
- 	mkid -fID $$unique
-+tags: TAGS
- 
- TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
- 	tags=; \
- 	here=`pwd`; \
--	if (etags --etags-include --version) >/dev/null 2>&1; then \
-+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- 	  include_option=--etags-include; \
-+	  empty_fix=.; \
- 	else \
- 	  include_option=--include; \
-+	  empty_fix=; \
- 	fi; \
- 	list='$(SUBDIRS)'; for subdir in $$list; do \
- 	  if test "$$subdir" = .; then :; else \
--	    test -f $$subdir/TAGS && \
-+	    test ! -f $$subdir/TAGS || \
- 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
- 	  fi; \
- 	done; \
-@@ -276,10 +330,11 @@
- 	  done | \
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
--	test -z "$(ETAGS_ARGS)$$tags$$unique" \
--	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	     $$tags $$unique
--
-+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-+	  test -n "$$unique" || unique=$$empty_fix; \
-+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+	    $$tags $$unique; \
-+	fi
- ctags: CTAGS
- CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -302,24 +357,11 @@
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--
--top_distdir = .
--distdir = $(PACKAGE)-$(VERSION)
--
--am__remove_distdir = \
--  { test ! -d $(distdir) \
--    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
--         && rm -fr $(distdir); }; }
--
--GZIP_ENV = --best
--distuninstallcheck_listfiles = find . -type f -print
--distcleancheck_listfiles = find . -type f -print
- 
- distdir: $(DISTFILES)
- 	$(am__remove_distdir)
- 	mkdir $(distdir)
--	$(mkinstalldirs) $(distdir)/scripts
-+	$(mkdir_p) $(distdir)/dos2unix $(distdir)/scripts $(distdir)/unix2dos
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- 	list='$(DISTFILES)'; for file in $$list; do \
-@@ -331,7 +373,7 @@
- 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- 	    dir="/$$dir"; \
--	    $(mkinstalldirs) "$(distdir)$$dir"; \
-+	    $(mkdir_p) "$(distdir)$$dir"; \
- 	  else \
- 	    dir=''; \
- 	  fi; \
-@@ -346,15 +388,17 @@
- 	    || exit 1; \
- 	  fi; \
- 	done
--	list='$(SUBDIRS)'; for subdir in $$list; do \
-+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- 	  if test "$$subdir" = .; then :; else \
--	    test -d $(distdir)/$$subdir \
--	    || mkdir $(distdir)/$$subdir \
-+	    test -d "$(distdir)/$$subdir" \
-+	    || $(mkdir_p) "$(distdir)/$$subdir" \
- 	    || exit 1; \
-+	    distdir=`$(am__cd) $(distdir) && pwd`; \
-+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
- 	    (cd $$subdir && \
- 	      $(MAKE) $(AM_MAKEFLAGS) \
--	        top_distdir="$(top_distdir)" \
--	        distdir=../$(distdir)/$$subdir \
-+	        top_distdir="$$top_distdir" \
-+	        distdir="$$distdir/$$subdir" \
- 	        distdir) \
- 	      || exit 1; \
- 	  fi; \
-@@ -365,19 +409,46 @@
- 	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
- 	|| chmod -R a+r $(distdir)
- dist-gzip: distdir
--	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-+	$(am__remove_distdir)
-+
-+dist-bzip2: distdir
-+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-+	$(am__remove_distdir)
-+
-+dist-tarZ: distdir
-+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-+	$(am__remove_distdir)
-+
-+dist-shar: distdir
-+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-+	$(am__remove_distdir)
-+
-+dist-zip: distdir
-+	-rm -f $(distdir).zip
-+	zip -rq $(distdir).zip $(distdir)
- 	$(am__remove_distdir)
- 
- dist dist-all: distdir
--	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- 	$(am__remove_distdir)
- 
- # This target untars the dist file and tries a VPATH configuration.  Then
- # it guarantees that the distribution is self-contained by making another
- # tarfile.
- distcheck: dist
--	$(am__remove_distdir)
--	GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
-+	case '$(DIST_ARCHIVES)' in \
-+	*.tar.gz*) \
-+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
-+	*.tar.bz2*) \
-+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
-+	*.tar.Z*) \
-+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-+	*.shar.gz*) \
-+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
-+	*.zip*) \
-+	  unzip $(distdir).zip ;;\
-+	esac
- 	chmod -R a-w $(distdir); chmod a+w $(distdir)
- 	mkdir $(distdir)/_build
- 	mkdir $(distdir)/_inst
-@@ -397,19 +468,20 @@
- 	        distuninstallcheck \
- 	  && chmod -R a-w "$$dc_install_base" \
- 	  && ({ \
--	       (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
-+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
- 	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
- 	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
- 	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
- 	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
- 	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
- 	  && rm -rf "$$dc_destdir" \
--	  && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
--	  && rm -f $(distdir).tar.gz \
-+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-+	  && rm -rf $(DIST_ARCHIVES) \
- 	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
- 	$(am__remove_distdir)
--	@echo "$(distdir).tar.gz is ready for distribution" | \
--	  sed 'h;s/./=/g;p;x;p;x'
-+	@(echo "$(distdir) archives ready for distribution: "; \
-+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-+	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
- distuninstallcheck:
- 	@cd $(distuninstallcheck_dir) \
- 	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
-@@ -433,7 +505,6 @@
- all-am: Makefile config.h
- installdirs: installdirs-recursive
- installdirs-am:
--
- install: install-recursive
- install-exec: install-exec-recursive
- install-data: install-data-recursive
-@@ -453,7 +524,7 @@
- clean-generic:
- 
- distclean-generic:
--	-rm -f $(CONFIG_CLEAN_FILES)
-+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
-@@ -471,6 +542,8 @@
- 
- dvi-am:
- 
-+html: html-recursive
-+
- info: info-recursive
- 
- info-am:
-@@ -507,22 +580,20 @@
- 
- uninstall-info: uninstall-info-recursive
- 
--.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
--	clean-generic clean-recursive ctags ctags-recursive dist \
--	dist-all dist-gzip distcheck distclean distclean-generic \
--	distclean-hdr distclean-recursive distclean-tags distcleancheck \
--	distdir distuninstallcheck dvi dvi-am dvi-recursive info \
--	info-am info-recursive install install-am install-data \
--	install-data-am install-data-recursive install-exec \
--	install-exec-am install-exec-recursive install-info \
--	install-info-am install-info-recursive install-man \
--	install-recursive install-strip installcheck installcheck-am \
--	installdirs installdirs-am installdirs-recursive \
--	maintainer-clean maintainer-clean-generic \
--	maintainer-clean-recursive mostlyclean mostlyclean-generic \
--	mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
--	ps-recursive tags tags-recursive uninstall uninstall-am \
--	uninstall-info-am uninstall-info-recursive uninstall-recursive
-+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
-+	check-am clean clean-generic clean-recursive ctags \
-+	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
-+	dist-tarZ dist-zip distcheck distclean distclean-generic \
-+	distclean-hdr distclean-recursive distclean-tags \
-+	distcleancheck distdir distuninstallcheck dvi dvi-am html \
-+	html-am info info-am install install-am install-data \
-+	install-data-am install-exec install-exec-am install-info \
-+	install-info-am install-man install-strip installcheck \
-+	installcheck-am installdirs installdirs-am maintainer-clean \
-+	maintainer-clean-generic maintainer-clean-recursive \
-+	mostlyclean mostlyclean-generic mostlyclean-recursive pdf \
-+	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
-+	uninstall-info-am
- 
- 
- sdist: dist
-diff -ru ../release/mingw-utils-0.3/pexports/Makefile.in ./pexports/Makefile.in
---- ../release/mingw-utils-0.3/pexports/Makefile.in	2003-11-25 08:31:11.000000000 -0800
-+++ ./pexports/Makefile.in	2006-09-25 20:08:14.000000000 -0700
-@@ -1,8 +1,8 @@
--# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- 
--# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
--# Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005  Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -14,6 +14,7 @@
- 
- @SET_MAKE@
- 
-+
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -21,7 +22,6 @@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- top_builddir = ..
--
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
- install_sh_DATA = $(install_sh) -c -m 644
-@@ -35,6 +35,46 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+bin_PROGRAMS = pexports$(EXEEXT)
-+subdir = pexports
-+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-+	AUTHORS COPYING ChangeLog hlex.c hparse.c
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+	$(ACLOCAL_M4)
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"
-+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+PROGRAMS = $(bin_PROGRAMS)
-+am_pexports_OBJECTS = hlex.$(OBJEXT) hparse.$(OBJEXT) \
-+	pexports.$(OBJEXT) str_tree.$(OBJEXT)
-+pexports_OBJECTS = $(am_pexports_OBJECTS)
-+pexports_LDADD = $(LDADD)
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS)
-+YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
-+SOURCES = $(pexports_SOURCES)
-+DIST_SOURCES = $(pexports_SOURCES)
-+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-+am__vpath_adj = case $$p in \
-+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-+    *) f=$$p;; \
-+  esac;
-+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-+docDATA_INSTALL = $(INSTALL_DATA)
-+DATA = $(doc_DATA)
-+ETAGS = etags
-+CTAGS = ctags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- AMDEP_FALSE = @AMDEP_FALSE@
- AMDEP_TRUE = @AMDEP_TRUE@
-@@ -43,6 +83,12 @@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BUILD_DRMINGW_FALSE = @BUILD_DRMINGW_FALSE@
-+BUILD_DRMINGW_TRUE = @BUILD_DRMINGW_TRUE@
-+BUILD_REDIR_FALSE = @BUILD_REDIR_FALSE@
-+BUILD_REDIR_TRUE = @BUILD_REDIR_TRUE@
-+BUILD_RES2COFF_FALSE = @BUILD_RES2COFF_FALSE@
-+BUILD_RES2COFF_TRUE = @BUILD_RES2COFF_TRUE@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-@@ -101,6 +147,8 @@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
- bindir = @bindir@
- build_alias = @build_alias@
- datadir = @datadir@
-@@ -113,6 +161,7 @@
- libexecdir = @libexecdir@
- localstatedir = @localstatedir@
- mandir = @mandir@
-+mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
-@@ -120,66 +169,52 @@
- sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
--bin_PROGRAMS = pexports
--
- pexports_SOURCES = hlex.l hparse.h hparse.y pe.h pexports.c pexports.h str_tree.c str_tree.h
--
- docdir = $(prefix)/doc/pexports
--
- doc_DATA = AUTHORS COPYING README
--subdir = pexports
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = $(top_builddir)/config.h
--CONFIG_CLEAN_FILES =
--bin_PROGRAMS = pexports$(EXEEXT)
--PROGRAMS = $(bin_PROGRAMS)
--
--am_pexports_OBJECTS = hlex.$(OBJEXT) hparse.$(OBJEXT) pexports.$(OBJEXT) \
--	str_tree.$(OBJEXT)
--pexports_OBJECTS = $(am_pexports_OBJECTS)
--pexports_LDADD = $(LDADD)
--pexports_DEPENDENCIES =
--pexports_LDFLAGS =
--
--DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
--depcomp = $(SHELL) $(top_srcdir)/depcomp
--am__depfiles_maybe = depfiles
-- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/hlex.Po ./$(DEPDIR)/hparse.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/pexports.Po ./$(DEPDIR)/str_tree.Po
--COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
--	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--CCLD = $(CC)
--LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS)
--YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
--DIST_SOURCES = $(pexports_SOURCES)
--DATA = $(doc_DATA)
--
--DIST_COMMON = README $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \
--	Makefile.am hlex.c hparse.c
--SOURCES = $(pexports_SOURCES)
--
- all: all-am
- 
- .SUFFIXES:
- .SUFFIXES: .c .l .o .obj .y
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-+	@for dep in $?; do \
-+	  case '$(am__configure_deps)' in \
-+	    *$$dep*) \
-+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-+		&& exit 0; \
-+	      exit 1;; \
-+	  esac; \
-+	done; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  pexports/Makefile'; \
- 	cd $(top_srcdir) && \
- 	  $(AUTOMAKE) --gnu  pexports/Makefile
--Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
--	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
--binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+	@case '$?' in \
-+	  *config.status*) \
-+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-+	  *) \
-+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-+	esac;
-+
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- install-binPROGRAMS: $(bin_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(bindir)
-+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- 	  if test -f $$p \
- 	  ; then \
- 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
--	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
--	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
-+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- 	  else :; fi; \
- 	done
- 
-@@ -187,8 +222,8 @@
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
--	  echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
--	  rm -f $(DESTDIR)$(bindir)/$$f; \
-+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
- 	done
- 
- clean-binPROGRAMS:
-@@ -198,7 +233,7 @@
- 	$(LINK) $(pexports_LDFLAGS) $(pexports_OBJECTS) $(pexports_LDADD) $(LIBS)
- 
- mostlyclean-compile:
--	-rm -f *.$(OBJEXT) core *.core
-+	-rm -f *.$(OBJEXT)
- 
- distclean-compile:
- 	-rm -f *.tab.c
-@@ -209,39 +244,32 @@
- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/str_tree.Po at am__quote@
- 
- .c.o:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
- 
- .c.obj:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
- 
- .l.c:
--	$(LEXCOMPILE) `test -f $< || echo '$(srcdir)/'`$<
-+	$(LEXCOMPILE) $<
- 	sed '/^#/ s|$(LEX_OUTPUT_ROOT)\.c|$@|' $(LEX_OUTPUT_ROOT).c >$@
- 	rm -f $(LEX_OUTPUT_ROOT).c
- 
- .y.c:
--	$(YACCCOMPILE) `test -f '$<' || echo '$(srcdir)/'`$<
-+	$(YACCCOMPILE) $<
- 	if test -f y.tab.h; then \
- 	  to=`echo "$*_H" | sed \
-                 -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
-                 -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \
--	  sed "/^#/ s/Y_TAB_H/$$to/g" y.tab.h >$*.ht; \
-+	  sed -e "/^#/!b" -e "s/Y_TAB_H/$$to/g" -e "s|y\.tab\.h|$*.h|" \
-+            y.tab.h >$*.ht; \
- 	  rm -f y.tab.h; \
- 	  if cmp -s $*.ht $*.h; then \
- 	    rm -f $*.ht ;\
-@@ -255,33 +283,24 @@
- 	sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@t && mv $@t $@
- 	rm -f y.tab.c
- uninstall-info-am:
--docDATA_INSTALL = $(INSTALL_DATA)
- install-docDATA: $(doc_DATA)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(docdir)
-+	test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- 	@list='$(doc_DATA)'; for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
--	  $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
- uninstall-docDATA:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(doc_DATA)'; for p in $$list; do \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
--	  rm -f $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
--ETAGS = etags
--ETAGSFLAGS =
--
--CTAGS = ctags
--CTAGSFLAGS =
--
--tags: TAGS
--
- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- 	unique=`for i in $$list; do \
-@@ -290,6 +309,7 @@
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
- 	mkid -fID $$unique
-+tags: TAGS
- 
- TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -301,10 +321,11 @@
- 	  done | \
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
--	test -z "$(ETAGS_ARGS)$$tags$$unique" \
--	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	     $$tags $$unique
--
-+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-+	  test -n "$$unique" || unique=$$empty_fix; \
-+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+	    $$tags $$unique; \
-+	fi
- ctags: CTAGS
- CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -327,10 +348,6 @@
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--
--top_distdir = ..
--distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
- 
- distdir: $(DISTFILES)
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-@@ -344,7 +361,7 @@
- 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- 	    dir="/$$dir"; \
--	    $(mkinstalldirs) "$(distdir)$$dir"; \
-+	    $(mkdir_p) "$(distdir)$$dir"; \
- 	  else \
- 	    dir=''; \
- 	  fi; \
-@@ -362,9 +379,10 @@
- check-am: all-am
- check: check-am
- all-am: Makefile $(PROGRAMS) $(DATA)
--
- installdirs:
--	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(docdir)
-+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \
-+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-+	done
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
-@@ -384,7 +402,7 @@
- clean-generic:
- 
- distclean-generic:
--	-rm -f $(CONFIG_CLEAN_FILES)
-+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
-@@ -405,6 +423,8 @@
- 
- dvi-am:
- 
-+html: html-am
-+
- info: info-am
- 
- info-am:
-@@ -436,19 +456,20 @@
- 
- ps-am:
- 
--uninstall-am: uninstall-binPROGRAMS uninstall-docDATA uninstall-info-am
-+uninstall-am: uninstall-binPROGRAMS uninstall-docDATA \
-+	uninstall-info-am
- 
- .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- 	clean-generic ctags distclean distclean-compile \
--	distclean-generic distclean-tags distdir dvi dvi-am info \
--	info-am install install-am install-binPROGRAMS install-data \
--	install-data-am install-docDATA install-exec install-exec-am \
--	install-info install-info-am install-man install-strip \
--	installcheck installcheck-am installdirs maintainer-clean \
--	maintainer-clean-generic mostlyclean mostlyclean-compile \
--	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
--	uninstall-am uninstall-binPROGRAMS uninstall-docDATA \
--	uninstall-info-am
-+	distclean-generic distclean-tags distdir dvi dvi-am html \
-+	html-am info info-am install install-am install-binPROGRAMS \
-+	install-data install-data-am install-docDATA install-exec \
-+	install-exec-am install-info install-info-am install-man \
-+	install-strip installcheck installcheck-am installdirs \
-+	maintainer-clean maintainer-clean-generic mostlyclean \
-+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-+	tags uninstall uninstall-am uninstall-binPROGRAMS \
-+	uninstall-docDATA uninstall-info-am
- 
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
-diff -ru ../release/mingw-utils-0.3/pexports/pexports.c ./pexports/pexports.c
---- ../release/mingw-utils-0.3/pexports/pexports.c	2003-11-25 07:23:09.000000000 -0800
-+++ ./pexports/pexports.c	2006-08-11 05:25:25.000000000 -0700
-@@ -19,7 +19,7 @@
- #endif
- 
- /* get pointer to section header n */
--#define IMAGE_SECTION_HDR(n) ((PIMAGE_SECTION_HEADER) ((DWORD) nt_hdr + \
-+#define IMAGE_SECTION_HDR(n) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR) nt_hdr + \
-                                     4 + sizeof(IMAGE_FILE_HEADER) + \
-                                     nt_hdr->FileHeader.SizeOfOptionalHeader + \
-                                     n * sizeof(IMAGE_SECTION_HEADER)))
-@@ -146,7 +146,7 @@
-       return 1;
-     }
- 
--  nt_hdr = (PIMAGE_NT_HEADERS) ((DWORD) dos_hdr + dos_hdr->e_lfanew);
-+  nt_hdr = (PIMAGE_NT_HEADERS) ((ULONG_PTR) dos_hdr + dos_hdr->e_lfanew);
-   
-   exp_rva = nt_hdr->OptionalHeader.DataDirectory[0].VirtualAddress;
- 
-@@ -181,7 +181,7 @@
-   PIMAGE_EXPORT_DIRECTORY exports;
-   char *export_name;
-   PWORD ordinal_table;
--  char **name_table;
-+  DWORD *name_table;
-   DWORD *function_table;
-   int i;
-   static int first = 1;
-@@ -203,7 +203,7 @@
-   /* set up various pointers */
-   export_name = RVA_TO_PTR(exports->Name,char*);
-   ordinal_table = RVA_TO_PTR(exports->AddressOfNameOrdinals,PWORD);
--  name_table = RVA_TO_PTR(exports->AddressOfNames,char**);
-+  name_table = RVA_TO_PTR(exports->AddressOfNames,DWORD*);
-   function_table = RVA_TO_PTR(exports->AddressOfFunctions,void*);
- 
-   if (verbose)
-@@ -297,14 +297,14 @@
- }
- 
- /* convert rva to pointer into loaded file */
--DWORD
-+ULONG_PTR
- rva_to_ptr(DWORD rva)
- {
-   PIMAGE_SECTION_HEADER section = find_section(rva);
-   if (section->PointerToRawData == 0)
-     return 0;
-   else
--    return ((DWORD) dos_hdr + (DWORD) rva - (section->VirtualAddress - section->PointerToRawData));
-+    return ((ULONG_PTR) dos_hdr + (DWORD) rva - (section->VirtualAddress - section->PointerToRawData));
- }
- 
- /* Load a portable executable into memory */
-diff -ru ../release/mingw-utils-0.3/pexports/pexports.h ./pexports/pexports.h
---- ../release/mingw-utils-0.3/pexports/pexports.h	2002-05-26 03:13:58.000000000 -0700
-+++ ./pexports/pexports.h	2006-08-11 05:25:25.000000000 -0700
-@@ -21,12 +21,26 @@
- #define VER_MINOR 43
- 
- /* These are needed */
--typedef unsigned short WORD;
--typedef unsigned int DWORD;
--typedef unsigned char BYTE;
--typedef long LONG;
--typedef WORD *PWORD;
--typedef DWORD *PDWORD;
-+typedef unsigned short WORD, *PWORD;
-+typedef unsigned char BYTE, *PBYTE;
-+
-+#if SIZEOF_LONG == 4
-+typedef unsigned long DWORD, *PDWORD;
-+typedef long LONG, *PLONG;
-+#else
-+typedef unsigned int DWORD, *PDWORD;
-+typedef int LONG, *PLONG;
-+#endif
-+
-+#if SIZEOF_LONG == SIZEOF_VOID_P
-+typedef unsigned long ULONG_PTR;
-+#elif SIZEOF_LONG_LONG == SIZEOF_VOID_P
-+typedef unsigned long long ULONG_PTR;
-+#elif SIZEOF__INT64 == SIZEOF_VOID_P
-+typedef unsigned _int64 ULONG_PTR;
-+#else
-+typedef unsigned int ULONG_PTR;
-+#endif
- 
- /* PE structures */
- typedef struct _IMAGE_DATA_DIRECTORY {
-@@ -111,9 +125,9 @@
-   DWORD   Base;
-   DWORD   NumberOfFunctions;
-   DWORD   NumberOfNames;
--  PDWORD  *AddressOfFunctions;
--  PDWORD  *AddressOfNames;
--  PWORD   *AddressOfNameOrdinals;
-+  DWORD   AddressOfFunctions;
-+  DWORD   AddressOfNames;
-+  DWORD   AddressOfNameOrdinals;
- } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
- 
- typedef struct _IMAGE_DOS_HEADER {
-@@ -144,7 +158,7 @@
- PIMAGE_DOS_HEADER
- load_pe_image(const char *filename);
- 
--DWORD
-+ULONG_PTR
- rva_to_ptr(DWORD rva);
- 
- void
-diff -ru ../release/mingw-utils-0.3/redir/Makefile.in ./redir/Makefile.in
---- ../release/mingw-utils-0.3/redir/Makefile.in	2003-11-25 08:31:12.000000000 -0800
-+++ ./redir/Makefile.in	2006-09-25 20:08:14.000000000 -0700
-@@ -1,8 +1,8 @@
--# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- 
--# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
--# Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005  Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -14,6 +14,7 @@
- 
- @SET_MAKE@
- 
-+
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -21,7 +22,6 @@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- top_builddir = ..
--
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
- install_sh_DATA = $(install_sh) -c -m 644
-@@ -35,6 +35,42 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+bin_PROGRAMS = redir$(EXEEXT)
-+subdir = redir
-+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+	$(ACLOCAL_M4)
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"
-+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+PROGRAMS = $(bin_PROGRAMS)
-+am_redir_OBJECTS = redir.$(OBJEXT)
-+redir_OBJECTS = $(am_redir_OBJECTS)
-+redir_LDADD = $(LDADD)
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+SOURCES = $(redir_SOURCES)
-+DIST_SOURCES = $(redir_SOURCES)
-+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-+am__vpath_adj = case $$p in \
-+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-+    *) f=$$p;; \
-+  esac;
-+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-+docDATA_INSTALL = $(INSTALL_DATA)
-+DATA = $(doc_DATA)
-+ETAGS = etags
-+CTAGS = ctags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- AMDEP_FALSE = @AMDEP_FALSE@
- AMDEP_TRUE = @AMDEP_TRUE@
-@@ -43,6 +79,12 @@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BUILD_DRMINGW_FALSE = @BUILD_DRMINGW_FALSE@
-+BUILD_DRMINGW_TRUE = @BUILD_DRMINGW_TRUE@
-+BUILD_REDIR_FALSE = @BUILD_REDIR_FALSE@
-+BUILD_REDIR_TRUE = @BUILD_REDIR_TRUE@
-+BUILD_RES2COFF_FALSE = @BUILD_RES2COFF_FALSE@
-+BUILD_RES2COFF_TRUE = @BUILD_RES2COFF_TRUE@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-@@ -101,6 +143,8 @@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
- bindir = @bindir@
- build_alias = @build_alias@
- datadir = @datadir@
-@@ -113,6 +157,7 @@
- libexecdir = @libexecdir@
- localstatedir = @localstatedir@
- mandir = @mandir@
-+mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
-@@ -120,61 +165,52 @@
- sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
--bin_PROGRAMS = redir
--
- redir_SOURCES = redir.c
--
- docdir = $(prefix)/doc/redir
--
- doc_DATA = README
--subdir = redir
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = $(top_builddir)/config.h
--CONFIG_CLEAN_FILES =
--bin_PROGRAMS = redir$(EXEEXT)
--PROGRAMS = $(bin_PROGRAMS)
--
--am_redir_OBJECTS = redir.$(OBJEXT)
--redir_OBJECTS = $(am_redir_OBJECTS)
--redir_LDADD = $(LDADD)
--redir_DEPENDENCIES =
--redir_LDFLAGS =
--
--DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
--depcomp = $(SHELL) $(top_srcdir)/depcomp
--am__depfiles_maybe = depfiles
-- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/redir.Po
--COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
--	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--CCLD = $(CC)
--LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--DIST_SOURCES = $(redir_SOURCES)
--DATA = $(doc_DATA)
--
--DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am
--SOURCES = $(redir_SOURCES)
--
- all: all-am
- 
- .SUFFIXES:
- .SUFFIXES: .c .o .obj
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-+	@for dep in $?; do \
-+	  case '$(am__configure_deps)' in \
-+	    *$$dep*) \
-+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-+		&& exit 0; \
-+	      exit 1;; \
-+	  esac; \
-+	done; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  redir/Makefile'; \
- 	cd $(top_srcdir) && \
- 	  $(AUTOMAKE) --gnu  redir/Makefile
--Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
--	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
--binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+	@case '$?' in \
-+	  *config.status*) \
-+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-+	  *) \
-+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-+	esac;
-+
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- install-binPROGRAMS: $(bin_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(bindir)
-+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- 	  if test -f $$p \
- 	  ; then \
- 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
--	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
--	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
-+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- 	  else :; fi; \
- 	done
- 
-@@ -182,8 +218,8 @@
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
--	  echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
--	  rm -f $(DESTDIR)$(bindir)/$$f; \
-+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
- 	done
- 
- clean-binPROGRAMS:
-@@ -193,7 +229,7 @@
- 	$(LINK) $(redir_LDFLAGS) $(redir_OBJECTS) $(redir_LDADD) $(LIBS)
- 
- mostlyclean-compile:
--	-rm -f *.$(OBJEXT) core *.core
-+	-rm -f *.$(OBJEXT)
- 
- distclean-compile:
- 	-rm -f *.tab.c
-@@ -201,54 +237,37 @@
- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/redir.Po at am__quote@
- 
- .c.o:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
- 
- .c.obj:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
- uninstall-info-am:
--docDATA_INSTALL = $(INSTALL_DATA)
- install-docDATA: $(doc_DATA)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(docdir)
-+	test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- 	@list='$(doc_DATA)'; for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
--	  $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
- uninstall-docDATA:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(doc_DATA)'; for p in $$list; do \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
--	  rm -f $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
--ETAGS = etags
--ETAGSFLAGS =
--
--CTAGS = ctags
--CTAGSFLAGS =
--
--tags: TAGS
--
- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- 	unique=`for i in $$list; do \
-@@ -257,6 +276,7 @@
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
- 	mkid -fID $$unique
-+tags: TAGS
- 
- TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -268,10 +288,11 @@
- 	  done | \
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
--	test -z "$(ETAGS_ARGS)$$tags$$unique" \
--	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	     $$tags $$unique
--
-+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-+	  test -n "$$unique" || unique=$$empty_fix; \
-+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+	    $$tags $$unique; \
-+	fi
- ctags: CTAGS
- CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -294,10 +315,6 @@
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--
--top_distdir = ..
--distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
- 
- distdir: $(DISTFILES)
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-@@ -311,7 +328,7 @@
- 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- 	    dir="/$$dir"; \
--	    $(mkinstalldirs) "$(distdir)$$dir"; \
-+	    $(mkdir_p) "$(distdir)$$dir"; \
- 	  else \
- 	    dir=''; \
- 	  fi; \
-@@ -329,9 +346,10 @@
- check-am: all-am
- check: check-am
- all-am: Makefile $(PROGRAMS) $(DATA)
--
- installdirs:
--	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(docdir)
-+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \
-+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-+	done
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
-@@ -351,7 +369,7 @@
- clean-generic:
- 
- distclean-generic:
--	-rm -f $(CONFIG_CLEAN_FILES)
-+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
-@@ -370,6 +388,8 @@
- 
- dvi-am:
- 
-+html: html-am
-+
- info: info-am
- 
- info-am:
-@@ -401,19 +421,20 @@
- 
- ps-am:
- 
--uninstall-am: uninstall-binPROGRAMS uninstall-docDATA uninstall-info-am
-+uninstall-am: uninstall-binPROGRAMS uninstall-docDATA \
-+	uninstall-info-am
- 
- .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- 	clean-generic ctags distclean distclean-compile \
--	distclean-generic distclean-tags distdir dvi dvi-am info \
--	info-am install install-am install-binPROGRAMS install-data \
--	install-data-am install-docDATA install-exec install-exec-am \
--	install-info install-info-am install-man install-strip \
--	installcheck installcheck-am installdirs maintainer-clean \
--	maintainer-clean-generic mostlyclean mostlyclean-compile \
--	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
--	uninstall-am uninstall-binPROGRAMS uninstall-docDATA \
--	uninstall-info-am
-+	distclean-generic distclean-tags distdir dvi dvi-am html \
-+	html-am info info-am install install-am install-binPROGRAMS \
-+	install-data install-data-am install-docDATA install-exec \
-+	install-exec-am install-info install-info-am install-man \
-+	install-strip installcheck installcheck-am installdirs \
-+	maintainer-clean maintainer-clean-generic mostlyclean \
-+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-+	tags uninstall uninstall-am uninstall-binPROGRAMS \
-+	uninstall-docDATA uninstall-info-am
- 
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
-diff -ru ../release/mingw-utils-0.3/reimp/ar.c ./reimp/ar.c
---- ../release/mingw-utils-0.3/reimp/ar.c	2002-04-10 06:39:07.000000000 -0700
-+++ ./reimp/ar.c	2006-08-11 05:25:25.000000000 -0700
-@@ -21,6 +21,7 @@
-           if (fread (long_names, size, 1, f) != 1)
-             error (0, "unexpected end-of-file\n");
-         }
-+      return 1;
-     }
-   else
-     return 0;
-diff -ru ../release/mingw-utils-0.3/reimp/Makefile.in ./reimp/Makefile.in
---- ../release/mingw-utils-0.3/reimp/Makefile.in	2003-11-25 08:31:12.000000000 -0800
-+++ ./reimp/Makefile.in	2006-09-25 20:08:14.000000000 -0700
-@@ -1,8 +1,8 @@
--# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- 
--# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
--# Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005  Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -14,6 +14,7 @@
- 
- @SET_MAKE@
- 
-+
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -21,7 +22,6 @@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- top_builddir = ..
--
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
- install_sh_DATA = $(install_sh) -c -m 644
-@@ -35,6 +35,42 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+bin_PROGRAMS = reimp$(EXEEXT)
-+subdir = reimp
-+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+	$(ACLOCAL_M4)
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"
-+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+PROGRAMS = $(bin_PROGRAMS)
-+am_reimp_OBJECTS = ar.$(OBJEXT) reimp.$(OBJEXT) util.$(OBJEXT)
-+reimp_OBJECTS = $(am_reimp_OBJECTS)
-+reimp_LDADD = $(LDADD)
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+SOURCES = $(reimp_SOURCES)
-+DIST_SOURCES = $(reimp_SOURCES)
-+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-+am__vpath_adj = case $$p in \
-+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-+    *) f=$$p;; \
-+  esac;
-+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-+docDATA_INSTALL = $(INSTALL_DATA)
-+DATA = $(doc_DATA)
-+ETAGS = etags
-+CTAGS = ctags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- AMDEP_FALSE = @AMDEP_FALSE@
- AMDEP_TRUE = @AMDEP_TRUE@
-@@ -43,6 +79,12 @@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BUILD_DRMINGW_FALSE = @BUILD_DRMINGW_FALSE@
-+BUILD_DRMINGW_TRUE = @BUILD_DRMINGW_TRUE@
-+BUILD_REDIR_FALSE = @BUILD_REDIR_FALSE@
-+BUILD_REDIR_TRUE = @BUILD_REDIR_TRUE@
-+BUILD_RES2COFF_FALSE = @BUILD_RES2COFF_FALSE@
-+BUILD_RES2COFF_TRUE = @BUILD_RES2COFF_TRUE@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-@@ -101,6 +143,8 @@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
- bindir = @bindir@
- build_alias = @build_alias@
- datadir = @datadir@
-@@ -113,6 +157,7 @@
- libexecdir = @libexecdir@
- localstatedir = @localstatedir@
- mandir = @mandir@
-+mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
-@@ -120,62 +165,52 @@
- sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
--bin_PROGRAMS = reimp
--
- reimp_SOURCES = ar.c reimp.c reimp.h util.c
--
- docdir = $(prefix)/doc/reimp
--
- doc_DATA = README
--subdir = reimp
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = $(top_builddir)/config.h
--CONFIG_CLEAN_FILES =
--bin_PROGRAMS = reimp$(EXEEXT)
--PROGRAMS = $(bin_PROGRAMS)
--
--am_reimp_OBJECTS = ar.$(OBJEXT) reimp.$(OBJEXT) util.$(OBJEXT)
--reimp_OBJECTS = $(am_reimp_OBJECTS)
--reimp_LDADD = $(LDADD)
--reimp_DEPENDENCIES =
--reimp_LDFLAGS =
--
--DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
--depcomp = $(SHELL) $(top_srcdir)/depcomp
--am__depfiles_maybe = depfiles
-- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ar.Po ./$(DEPDIR)/reimp.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/util.Po
--COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
--	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--CCLD = $(CC)
--LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--DIST_SOURCES = $(reimp_SOURCES)
--DATA = $(doc_DATA)
--
--DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am
--SOURCES = $(reimp_SOURCES)
--
- all: all-am
- 
- .SUFFIXES:
- .SUFFIXES: .c .o .obj
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-+	@for dep in $?; do \
-+	  case '$(am__configure_deps)' in \
-+	    *$$dep*) \
-+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-+		&& exit 0; \
-+	      exit 1;; \
-+	  esac; \
-+	done; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  reimp/Makefile'; \
- 	cd $(top_srcdir) && \
- 	  $(AUTOMAKE) --gnu  reimp/Makefile
--Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
--	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
--binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+	@case '$?' in \
-+	  *config.status*) \
-+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-+	  *) \
-+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-+	esac;
-+
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- install-binPROGRAMS: $(bin_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(bindir)
-+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- 	  if test -f $$p \
- 	  ; then \
- 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
--	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
--	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
-+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- 	  else :; fi; \
- 	done
- 
-@@ -183,8 +218,8 @@
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
--	  echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
--	  rm -f $(DESTDIR)$(bindir)/$$f; \
-+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
- 	done
- 
- clean-binPROGRAMS:
-@@ -194,7 +229,7 @@
- 	$(LINK) $(reimp_LDFLAGS) $(reimp_OBJECTS) $(reimp_LDADD) $(LIBS)
- 
- mostlyclean-compile:
--	-rm -f *.$(OBJEXT) core *.core
-+	-rm -f *.$(OBJEXT)
- 
- distclean-compile:
- 	-rm -f *.tab.c
-@@ -204,54 +239,37 @@
- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/util.Po at am__quote@
- 
- .c.o:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
- 
- .c.obj:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
- uninstall-info-am:
--docDATA_INSTALL = $(INSTALL_DATA)
- install-docDATA: $(doc_DATA)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(docdir)
-+	test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- 	@list='$(doc_DATA)'; for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
--	  $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
- uninstall-docDATA:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(doc_DATA)'; for p in $$list; do \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
--	  rm -f $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
--ETAGS = etags
--ETAGSFLAGS =
--
--CTAGS = ctags
--CTAGSFLAGS =
--
--tags: TAGS
--
- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- 	unique=`for i in $$list; do \
-@@ -260,6 +278,7 @@
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
- 	mkid -fID $$unique
-+tags: TAGS
- 
- TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -271,10 +290,11 @@
- 	  done | \
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
--	test -z "$(ETAGS_ARGS)$$tags$$unique" \
--	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	     $$tags $$unique
--
-+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-+	  test -n "$$unique" || unique=$$empty_fix; \
-+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+	    $$tags $$unique; \
-+	fi
- ctags: CTAGS
- CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -297,10 +317,6 @@
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--
--top_distdir = ..
--distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
- 
- distdir: $(DISTFILES)
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-@@ -314,7 +330,7 @@
- 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- 	    dir="/$$dir"; \
--	    $(mkinstalldirs) "$(distdir)$$dir"; \
-+	    $(mkdir_p) "$(distdir)$$dir"; \
- 	  else \
- 	    dir=''; \
- 	  fi; \
-@@ -332,9 +348,10 @@
- check-am: all-am
- check: check-am
- all-am: Makefile $(PROGRAMS) $(DATA)
--
- installdirs:
--	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(docdir)
-+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \
-+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-+	done
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
-@@ -354,7 +371,7 @@
- clean-generic:
- 
- distclean-generic:
--	-rm -f $(CONFIG_CLEAN_FILES)
-+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
-@@ -373,6 +390,8 @@
- 
- dvi-am:
- 
-+html: html-am
-+
- info: info-am
- 
- info-am:
-@@ -404,19 +423,20 @@
- 
- ps-am:
- 
--uninstall-am: uninstall-binPROGRAMS uninstall-docDATA uninstall-info-am
-+uninstall-am: uninstall-binPROGRAMS uninstall-docDATA \
-+	uninstall-info-am
- 
- .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- 	clean-generic ctags distclean distclean-compile \
--	distclean-generic distclean-tags distdir dvi dvi-am info \
--	info-am install install-am install-binPROGRAMS install-data \
--	install-data-am install-docDATA install-exec install-exec-am \
--	install-info install-info-am install-man install-strip \
--	installcheck installcheck-am installdirs maintainer-clean \
--	maintainer-clean-generic mostlyclean mostlyclean-compile \
--	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
--	uninstall-am uninstall-binPROGRAMS uninstall-docDATA \
--	uninstall-info-am
-+	distclean-generic distclean-tags distdir dvi dvi-am html \
-+	html-am info info-am install install-am install-binPROGRAMS \
-+	install-data install-data-am install-docDATA install-exec \
-+	install-exec-am install-info install-info-am install-man \
-+	install-strip installcheck installcheck-am installdirs \
-+	maintainer-clean maintainer-clean-generic mostlyclean \
-+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-+	tags uninstall uninstall-am uninstall-binPROGRAMS \
-+	uninstall-docDATA uninstall-info-am
- 
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
-diff -ru ../release/mingw-utils-0.3/reimp/reimp.h ./reimp/reimp.h
---- ../release/mingw-utils-0.3/reimp/reimp.h	2002-04-10 06:39:07.000000000 -0700
-+++ ./reimp/reimp.h	2006-08-11 05:25:25.000000000 -0700
-@@ -3,7 +3,7 @@
- 
- /* we need integers of specific sizes */
- #ifndef uint32
--#define uint32 unsigned long
-+#define uint32 unsigned int
- #endif
- 
- #ifndef uint16
-diff -ru ../release/mingw-utils-0.3/res2coff/Makefile.in ./res2coff/Makefile.in
---- ../release/mingw-utils-0.3/res2coff/Makefile.in	2003-11-25 08:31:12.000000000 -0800
-+++ ./res2coff/Makefile.in	2006-09-25 20:08:14.000000000 -0700
-@@ -1,8 +1,8 @@
--# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- 
--# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
--# Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005  Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -14,6 +14,7 @@
- 
- @SET_MAKE@
- 
-+
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -21,7 +22,6 @@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- top_builddir = ..
--
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
- install_sh_DATA = $(install_sh) -c -m 644
-@@ -35,6 +35,43 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+bin_PROGRAMS = res2coff$(EXEEXT)
-+subdir = res2coff
-+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+	$(ACLOCAL_M4)
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"
-+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+PROGRAMS = $(bin_PROGRAMS)
-+am_res2coff_OBJECTS = objimage.$(OBJEXT) res2coff.$(OBJEXT) \
-+	resimage.$(OBJEXT)
-+res2coff_OBJECTS = $(am_res2coff_OBJECTS)
-+res2coff_LDADD = $(LDADD)
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+SOURCES = $(res2coff_SOURCES)
-+DIST_SOURCES = $(res2coff_SOURCES)
-+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-+am__vpath_adj = case $$p in \
-+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-+    *) f=$$p;; \
-+  esac;
-+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-+docDATA_INSTALL = $(INSTALL_DATA)
-+DATA = $(doc_DATA)
-+ETAGS = etags
-+CTAGS = ctags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- AMDEP_FALSE = @AMDEP_FALSE@
- AMDEP_TRUE = @AMDEP_TRUE@
-@@ -43,6 +80,12 @@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BUILD_DRMINGW_FALSE = @BUILD_DRMINGW_FALSE@
-+BUILD_DRMINGW_TRUE = @BUILD_DRMINGW_TRUE@
-+BUILD_REDIR_FALSE = @BUILD_REDIR_FALSE@
-+BUILD_REDIR_TRUE = @BUILD_REDIR_TRUE@
-+BUILD_RES2COFF_FALSE = @BUILD_RES2COFF_FALSE@
-+BUILD_RES2COFF_TRUE = @BUILD_RES2COFF_TRUE@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-@@ -101,6 +144,8 @@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
- bindir = @bindir@
- build_alias = @build_alias@
- datadir = @datadir@
-@@ -113,6 +158,7 @@
- libexecdir = @libexecdir@
- localstatedir = @localstatedir@
- mandir = @mandir@
-+mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
-@@ -120,63 +166,52 @@
- sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
--bin_PROGRAMS = res2coff
--
- res2coff_SOURCES = objimage.c protos.h res2coff.c res2coff.h resimage.c
--
- docdir = $(prefix)/doc/res2coff
--
- doc_DATA = README
--subdir = res2coff
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = $(top_builddir)/config.h
--CONFIG_CLEAN_FILES =
--bin_PROGRAMS = res2coff$(EXEEXT)
--PROGRAMS = $(bin_PROGRAMS)
--
--am_res2coff_OBJECTS = objimage.$(OBJEXT) res2coff.$(OBJEXT) \
--	resimage.$(OBJEXT)
--res2coff_OBJECTS = $(am_res2coff_OBJECTS)
--res2coff_LDADD = $(LDADD)
--res2coff_DEPENDENCIES =
--res2coff_LDFLAGS =
--
--DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
--depcomp = $(SHELL) $(top_srcdir)/depcomp
--am__depfiles_maybe = depfiles
-- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/objimage.Po ./$(DEPDIR)/res2coff.Po \
-- at AMDEP_TRUE@	./$(DEPDIR)/resimage.Po
--COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
--	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--CCLD = $(CC)
--LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--DIST_SOURCES = $(res2coff_SOURCES)
--DATA = $(doc_DATA)
--
--DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am
--SOURCES = $(res2coff_SOURCES)
--
- all: all-am
- 
- .SUFFIXES:
- .SUFFIXES: .c .o .obj
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-+	@for dep in $?; do \
-+	  case '$(am__configure_deps)' in \
-+	    *$$dep*) \
-+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-+		&& exit 0; \
-+	      exit 1;; \
-+	  esac; \
-+	done; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  res2coff/Makefile'; \
- 	cd $(top_srcdir) && \
- 	  $(AUTOMAKE) --gnu  res2coff/Makefile
--Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
--	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
--binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+	@case '$?' in \
-+	  *config.status*) \
-+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-+	  *) \
-+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-+	esac;
-+
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- install-binPROGRAMS: $(bin_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(bindir)
-+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- 	  if test -f $$p \
- 	  ; then \
- 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
--	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
--	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
-+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- 	  else :; fi; \
- 	done
- 
-@@ -184,8 +219,8 @@
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
--	  echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
--	  rm -f $(DESTDIR)$(bindir)/$$f; \
-+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
- 	done
- 
- clean-binPROGRAMS:
-@@ -195,7 +230,7 @@
- 	$(LINK) $(res2coff_LDFLAGS) $(res2coff_OBJECTS) $(res2coff_LDADD) $(LIBS)
- 
- mostlyclean-compile:
--	-rm -f *.$(OBJEXT) core *.core
-+	-rm -f *.$(OBJEXT)
- 
- distclean-compile:
- 	-rm -f *.tab.c
-@@ -205,54 +240,37 @@
- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resimage.Po at am__quote@
- 
- .c.o:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
- 
- .c.obj:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
- uninstall-info-am:
--docDATA_INSTALL = $(INSTALL_DATA)
- install-docDATA: $(doc_DATA)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(docdir)
-+	test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- 	@list='$(doc_DATA)'; for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
--	  $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
- uninstall-docDATA:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(doc_DATA)'; for p in $$list; do \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
--	  rm -f $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
--ETAGS = etags
--ETAGSFLAGS =
--
--CTAGS = ctags
--CTAGSFLAGS =
--
--tags: TAGS
--
- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- 	unique=`for i in $$list; do \
-@@ -261,6 +279,7 @@
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
- 	mkid -fID $$unique
-+tags: TAGS
- 
- TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -272,10 +291,11 @@
- 	  done | \
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
--	test -z "$(ETAGS_ARGS)$$tags$$unique" \
--	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	     $$tags $$unique
--
-+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-+	  test -n "$$unique" || unique=$$empty_fix; \
-+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+	    $$tags $$unique; \
-+	fi
- ctags: CTAGS
- CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -298,10 +318,6 @@
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--
--top_distdir = ..
--distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
- 
- distdir: $(DISTFILES)
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-@@ -315,7 +331,7 @@
- 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- 	    dir="/$$dir"; \
--	    $(mkinstalldirs) "$(distdir)$$dir"; \
-+	    $(mkdir_p) "$(distdir)$$dir"; \
- 	  else \
- 	    dir=''; \
- 	  fi; \
-@@ -333,9 +349,10 @@
- check-am: all-am
- check: check-am
- all-am: Makefile $(PROGRAMS) $(DATA)
--
- installdirs:
--	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(docdir)
-+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \
-+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-+	done
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
-@@ -355,7 +372,7 @@
- clean-generic:
- 
- distclean-generic:
--	-rm -f $(CONFIG_CLEAN_FILES)
-+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
-@@ -374,6 +391,8 @@
- 
- dvi-am:
- 
-+html: html-am
-+
- info: info-am
- 
- info-am:
-@@ -405,19 +424,20 @@
- 
- ps-am:
- 
--uninstall-am: uninstall-binPROGRAMS uninstall-docDATA uninstall-info-am
-+uninstall-am: uninstall-binPROGRAMS uninstall-docDATA \
-+	uninstall-info-am
- 
- .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- 	clean-generic ctags distclean distclean-compile \
--	distclean-generic distclean-tags distdir dvi dvi-am info \
--	info-am install install-am install-binPROGRAMS install-data \
--	install-data-am install-docDATA install-exec install-exec-am \
--	install-info install-info-am install-man install-strip \
--	installcheck installcheck-am installdirs maintainer-clean \
--	maintainer-clean-generic mostlyclean mostlyclean-compile \
--	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
--	uninstall-am uninstall-binPROGRAMS uninstall-docDATA \
--	uninstall-info-am
-+	distclean-generic distclean-tags distdir dvi dvi-am html \
-+	html-am info info-am install install-am install-binPROGRAMS \
-+	install-data install-data-am install-docDATA install-exec \
-+	install-exec-am install-info install-info-am install-man \
-+	install-strip installcheck installcheck-am installdirs \
-+	maintainer-clean maintainer-clean-generic mostlyclean \
-+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-+	tags uninstall uninstall-am uninstall-binPROGRAMS \
-+	uninstall-docDATA uninstall-info-am
- 
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
-diff -ru ../release/mingw-utils-0.3/scripts/a2dll.in ./scripts/a2dll.in
---- ../release/mingw-utils-0.3/scripts/a2dll.in	2002-05-26 03:13:58.000000000 -0700
-+++ ./scripts/a2dll.in	2006-08-11 05:25:25.000000000 -0700
-@@ -12,6 +12,13 @@
- 	exit 0
- }
- 
-+# Figure out where the script is located and then use that path as the location
-+# for the tools
-+
-+cwd=`pwd`
-+cd `dirname $0`
-+SCRIPTDIR=`pwd`
-+cd $cwd
- 
- cmdline=$@
- 
-@@ -43,14 +50,14 @@
- 	rm -f .dll/*
- 	/usr/bin/mkdir -p .dll
- 	cd .dll
--	ar x ../$in
-+	${SCRIPTDIR}/ar x ../$in
- else
- 	cd .dll
- fi
- 
- echo Creating shared library \'$out\'
- 
--dllwrap --export-all -o ../$out `ls` $libs >../ld.err 2>&1
-+${SCRIPTDIR}/dllwrap --export-all -o ../$out `ls` $libs >../ld.err 2>&1
- 
- cd ..
- if [ `wc ld.err|awk ' {print $1}' ` -gt 2 ]
-@@ -72,17 +79,17 @@
- # 2. I just saw that dlltool lies about assembly-sourced files, it
- #    lists their symbols as data 
- 
--        pexports $out >$base.def
-+        ${SCRIPTDIR}/pexports $out >$base.def
- 
- # create import library
- 
- 	mv $in $in.static
--        dlltool --dllname $out --def $base.def --output-lib $in
-+        ${SCRIPTDIR}/dlltool --dllname $out --def $base.def --output-lib $in
- 
- # finally, we check whether dll exports data symbols
- # if yes, we suggest user on steps to perform
- 
--        pexports $out | awk '/DATA/ { print $1}' >$out.data
-+        ${SCRIPTDIR}/pexports $out | awk '/DATA/ { print $1}' >$out.data
- 	if test -s $out.data
-         then
-                 echo
-diff -ru ../release/mingw-utils-0.3/scripts/Makefile.in ./scripts/Makefile.in
---- ../release/mingw-utils-0.3/scripts/Makefile.in	2003-11-25 08:31:12.000000000 -0800
-+++ ./scripts/Makefile.in	2006-09-25 20:08:14.000000000 -0700
-@@ -1,8 +1,8 @@
--# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- 
--# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
--# Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005  Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -21,7 +21,6 @@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- top_builddir = ..
--
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
- install_sh_DATA = $(install_sh) -c -m 644
-@@ -35,6 +34,22 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+subdir = scripts
-+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-+	$(srcdir)/a2dll.in $(srcdir)/dsw2mak.in ChangeLog
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+	$(ACLOCAL_M4)
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES = a2dll dsw2mak
-+am__installdirs = "$(DESTDIR)$(bindir)"
-+binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-+SCRIPTS = $(bin_SCRIPTS)
-+SOURCES =
-+DIST_SOURCES =
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- AMDEP_FALSE = @AMDEP_FALSE@
- AMDEP_TRUE = @AMDEP_TRUE@
-@@ -43,6 +58,12 @@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BUILD_DRMINGW_FALSE = @BUILD_DRMINGW_FALSE@
-+BUILD_DRMINGW_TRUE = @BUILD_DRMINGW_TRUE@
-+BUILD_REDIR_FALSE = @BUILD_REDIR_FALSE@
-+BUILD_REDIR_TRUE = @BUILD_REDIR_TRUE@
-+BUILD_RES2COFF_FALSE = @BUILD_RES2COFF_FALSE@
-+BUILD_RES2COFF_TRUE = @BUILD_RES2COFF_TRUE@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-@@ -101,6 +122,8 @@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
- bindir = @bindir@
- build_alias = @build_alias@
- datadir = @datadir@
-@@ -113,6 +136,7 @@
- libexecdir = @libexecdir@
- localstatedir = @localstatedir@
- mandir = @mandir@
-+mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
-@@ -121,40 +145,52 @@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
- bin_SCRIPTS = a2dll dsw2mak
--
- EXTRA_DIST = a2dll.html static2dll_howto.txt
--subdir = scripts
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = $(top_builddir)/config.h
--CONFIG_CLEAN_FILES = a2dll dsw2mak
--SCRIPTS = $(bin_SCRIPTS)
--
--DIST_SOURCES =
--DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am a2dll.in \
--	dsw2mak.in
- all: all-am
- 
- .SUFFIXES:
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-+	@for dep in $?; do \
-+	  case '$(am__configure_deps)' in \
-+	    *$$dep*) \
-+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-+		&& exit 0; \
-+	      exit 1;; \
-+	  esac; \
-+	done; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  scripts/Makefile'; \
- 	cd $(top_srcdir) && \
- 	  $(AUTOMAKE) --gnu  scripts/Makefile
--Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
--	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
--a2dll: $(top_builddir)/config.status a2dll.in
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+	@case '$?' in \
-+	  *config.status*) \
-+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-+	  *) \
-+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-+	esac;
-+
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+a2dll: $(top_builddir)/config.status $(srcdir)/a2dll.in
- 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
--dsw2mak: $(top_builddir)/config.status dsw2mak.in
-+dsw2mak: $(top_builddir)/config.status $(srcdir)/dsw2mak.in
- 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
--binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
- install-binSCRIPTS: $(bin_SCRIPTS)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(bindir)
-+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- 	@list='$(bin_SCRIPTS)'; for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- 	  if test -f $$d$$p; then \
- 	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
--	    echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \
--	    $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \
-+	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-+	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
- 	  else :; fi; \
- 	done
- 
-@@ -162,8 +198,8 @@
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(bin_SCRIPTS)'; for p in $$list; do \
- 	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
--	  echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
--	  rm -f $(DESTDIR)$(bindir)/$$f; \
-+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
- 	done
- uninstall-info-am:
- tags: TAGS
-@@ -172,10 +208,6 @@
- ctags: CTAGS
- CTAGS:
- 
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--
--top_distdir = ..
--distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
- 
- distdir: $(DISTFILES)
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-@@ -189,7 +221,7 @@
- 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- 	    dir="/$$dir"; \
--	    $(mkinstalldirs) "$(distdir)$$dir"; \
-+	    $(mkdir_p) "$(distdir)$$dir"; \
- 	  else \
- 	    dir=''; \
- 	  fi; \
-@@ -207,9 +239,10 @@
- check-am: all-am
- check: check-am
- all-am: Makefile $(SCRIPTS)
--
- installdirs:
--	$(mkinstalldirs) $(DESTDIR)$(bindir)
-+	for dir in "$(DESTDIR)$(bindir)"; do \
-+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-+	done
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
-@@ -229,7 +262,7 @@
- clean-generic:
- 
- distclean-generic:
--	-rm -f $(CONFIG_CLEAN_FILES)
-+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
-@@ -246,6 +279,8 @@
- 
- dvi-am:
- 
-+html: html-am
-+
- info: info-am
- 
- info-am:
-@@ -279,14 +314,14 @@
- uninstall-am: uninstall-binSCRIPTS uninstall-info-am
- 
- .PHONY: all all-am check check-am clean clean-generic distclean \
--	distclean-generic distdir dvi dvi-am info info-am install \
--	install-am install-binSCRIPTS install-data install-data-am \
--	install-exec install-exec-am install-exec-local install-info \
--	install-info-am install-man install-strip installcheck \
--	installcheck-am installdirs maintainer-clean \
--	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
--	pdf-am ps ps-am uninstall uninstall-am uninstall-binSCRIPTS \
--	uninstall-info-am
-+	distclean-generic distdir dvi dvi-am html html-am info info-am \
-+	install install-am install-binSCRIPTS install-data \
-+	install-data-am install-exec install-exec-am \
-+	install-exec-local install-info install-info-am install-man \
-+	install-strip installcheck installcheck-am installdirs \
-+	maintainer-clean maintainer-clean-generic mostlyclean \
-+	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
-+	uninstall-binSCRIPTS uninstall-info-am
- 
- 
- install-exec-local:
-diff -ru ../release/mingw-utils-0.3/unix2dos/Makefile.am ./unix2dos/Makefile.am
---- ../release/mingw-utils-0.3/unix2dos/Makefile.am	2002-12-04 04:08:07.000000000 -0800
-+++ ./unix2dos/Makefile.am	2006-09-25 20:07:20.000000000 -0700
-@@ -6,7 +6,8 @@
- 
- docdir = $(prefix)/doc/unix2dos
- 
--doc_DATA = COPYING unix2dos.html
-+#doc_DATA = COPYING unix2dos.html
-+doc_DATA = COPYING
- 
- unix2dos.html: unix2dos.1
- 	man2html $< > $@
-diff -ru ../release/mingw-utils-0.3/unix2dos/Makefile.in ./unix2dos/Makefile.in
---- ../release/mingw-utils-0.3/unix2dos/Makefile.in	2003-11-25 08:31:12.000000000 -0800
-+++ ./unix2dos/Makefile.in	2006-09-25 20:08:14.000000000 -0700
-@@ -1,8 +1,8 @@
--# Makefile.in generated by automake 1.7.9 from Makefile.am.
-+# Makefile.in generated by automake 1.9.6 from Makefile.am.
- # @configure_input@
- 
--# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
--# Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-+# 2003, 2004, 2005  Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -14,6 +14,7 @@
- 
- @SET_MAKE@
- 
-+
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
- VPATH = @srcdir@
-@@ -21,7 +22,6 @@
- pkglibdir = $(libdir)/@PACKAGE@
- pkgincludedir = $(includedir)/@PACKAGE@
- top_builddir = ..
--
- am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
- INSTALL = @INSTALL@
- install_sh_DATA = $(install_sh) -c -m 644
-@@ -35,6 +35,42 @@
- NORMAL_UNINSTALL = :
- PRE_UNINSTALL = :
- POST_UNINSTALL = :
-+bin_PROGRAMS = unix2dos$(EXEEXT)
-+subdir = unix2dos
-+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in COPYING
-+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-+	$(ACLOCAL_M4)
-+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-+CONFIG_HEADER = $(top_builddir)/config.h
-+CONFIG_CLEAN_FILES =
-+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"
-+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+PROGRAMS = $(bin_PROGRAMS)
-+am_unix2dos_OBJECTS = unix2dos.$(OBJEXT)
-+unix2dos_OBJECTS = $(am_unix2dos_OBJECTS)
-+unix2dos_LDADD = $(LDADD)
-+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-+depcomp = $(SHELL) $(top_srcdir)/depcomp
-+am__depfiles_maybe = depfiles
-+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-+SOURCES = $(unix2dos_SOURCES)
-+DIST_SOURCES = $(unix2dos_SOURCES)
-+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-+am__vpath_adj = case $$p in \
-+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-+    *) f=$$p;; \
-+  esac;
-+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-+docDATA_INSTALL = $(INSTALL_DATA)
-+DATA = $(doc_DATA)
-+ETAGS = etags
-+CTAGS = ctags
-+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
- AMDEP_FALSE = @AMDEP_FALSE@
- AMDEP_TRUE = @AMDEP_TRUE@
-@@ -43,6 +79,12 @@
- AUTOHEADER = @AUTOHEADER@
- AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
-+BUILD_DRMINGW_FALSE = @BUILD_DRMINGW_FALSE@
-+BUILD_DRMINGW_TRUE = @BUILD_DRMINGW_TRUE@
-+BUILD_REDIR_FALSE = @BUILD_REDIR_FALSE@
-+BUILD_REDIR_TRUE = @BUILD_REDIR_TRUE@
-+BUILD_RES2COFF_FALSE = @BUILD_RES2COFF_FALSE@
-+BUILD_RES2COFF_TRUE = @BUILD_RES2COFF_TRUE@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
- CFLAGS = @CFLAGS@
-@@ -101,6 +143,8 @@
- am__include = @am__include@
- am__leading_dot = @am__leading_dot@
- am__quote = @am__quote@
-+am__tar = @am__tar@
-+am__untar = @am__untar@
- bindir = @bindir@
- build_alias = @build_alias@
- datadir = @datadir@
-@@ -113,6 +157,7 @@
- libexecdir = @libexecdir@
- localstatedir = @localstatedir@
- mandir = @mandir@
-+mkdir_p = @mkdir_p@
- oldincludedir = @oldincludedir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
-@@ -120,63 +165,55 @@
- sharedstatedir = @sharedstatedir@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
--bin_PROGRAMS = unix2dos
--
- unix2dos_SOURCES = unix2dos.c unix2dos.h
--
- noinst_man_MANS = unix2dos.1
--
- docdir = $(prefix)/doc/unix2dos
- 
--doc_DATA = COPYING unix2dos.html
--subdir = unix2dos
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = $(top_builddir)/config.h
--CONFIG_CLEAN_FILES =
--bin_PROGRAMS = unix2dos$(EXEEXT)
--PROGRAMS = $(bin_PROGRAMS)
--
--am_unix2dos_OBJECTS = unix2dos.$(OBJEXT)
--unix2dos_OBJECTS = $(am_unix2dos_OBJECTS)
--unix2dos_LDADD = $(LDADD)
--unix2dos_DEPENDENCIES =
--unix2dos_LDFLAGS =
--
--DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
--depcomp = $(SHELL) $(top_srcdir)/depcomp
--am__depfiles_maybe = depfiles
-- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/unix2dos.Po
--COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
--	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--CCLD = $(CC)
--LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--DIST_SOURCES = $(unix2dos_SOURCES)
--DATA = $(doc_DATA)
--
--DIST_COMMON = $(srcdir)/Makefile.in COPYING Makefile.am
--SOURCES = $(unix2dos_SOURCES)
--
-+#doc_DATA = COPYING unix2dos.html
-+doc_DATA = COPYING
- all: all-am
- 
- .SUFFIXES:
- .SUFFIXES: .c .o .obj
--$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
-+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-+	@for dep in $?; do \
-+	  case '$(am__configure_deps)' in \
-+	    *$$dep*) \
-+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-+		&& exit 0; \
-+	      exit 1;; \
-+	  esac; \
-+	done; \
-+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  unix2dos/Makefile'; \
- 	cd $(top_srcdir) && \
- 	  $(AUTOMAKE) --gnu  unix2dos/Makefile
--Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
--	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
--binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-+.PRECIOUS: Makefile
-+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-+	@case '$?' in \
-+	  *config.status*) \
-+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-+	  *) \
-+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-+	esac;
-+
-+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+
-+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- install-binPROGRAMS: $(bin_PROGRAMS)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(bindir)
-+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- 	  if test -f $$p \
- 	  ; then \
- 	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
--	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
--	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
-+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- 	  else :; fi; \
- 	done
- 
-@@ -184,8 +221,8 @@
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
- 	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
--	  echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
--	  rm -f $(DESTDIR)$(bindir)/$$f; \
-+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
- 	done
- 
- clean-binPROGRAMS:
-@@ -195,7 +232,7 @@
- 	$(LINK) $(unix2dos_LDFLAGS) $(unix2dos_OBJECTS) $(unix2dos_LDADD) $(LIBS)
- 
- mostlyclean-compile:
--	-rm -f *.$(OBJEXT) core *.core
-+	-rm -f *.$(OBJEXT)
- 
- distclean-compile:
- 	-rm -f *.tab.c
-@@ -203,54 +240,37 @@
- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/unix2dos.Po at am__quote@
- 
- .c.o:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
- 
- .c.obj:
-- at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-- at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-- at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-- at am__fastdepCC_TRUE@	fi
-+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-- at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
- uninstall-info-am:
--docDATA_INSTALL = $(INSTALL_DATA)
- install-docDATA: $(doc_DATA)
- 	@$(NORMAL_INSTALL)
--	$(mkinstalldirs) $(DESTDIR)$(docdir)
-+	test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- 	@list='$(doc_DATA)'; for p in $$list; do \
- 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
--	  $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
- uninstall-docDATA:
- 	@$(NORMAL_UNINSTALL)
- 	@list='$(doc_DATA)'; for p in $$list; do \
--	  f="`echo $$p | sed -e 's|^.*/||'`"; \
--	  echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
--	  rm -f $(DESTDIR)$(docdir)/$$f; \
-+	  f=$(am__strip_dir) \
-+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
- 	done
- 
--ETAGS = etags
--ETAGSFLAGS =
--
--CTAGS = ctags
--CTAGSFLAGS =
--
--tags: TAGS
--
- ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- 	unique=`for i in $$list; do \
-@@ -259,6 +279,7 @@
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
- 	mkid -fID $$unique
-+tags: TAGS
- 
- TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -270,10 +291,11 @@
- 	  done | \
- 	  $(AWK) '    { files[$$0] = 1; } \
- 	       END { for (i in files) print i; }'`; \
--	test -z "$(ETAGS_ARGS)$$tags$$unique" \
--	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	     $$tags $$unique
--
-+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-+	  test -n "$$unique" || unique=$$empty_fix; \
-+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-+	    $$tags $$unique; \
-+	fi
- ctags: CTAGS
- CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
- 		$(TAGS_FILES) $(LISP)
-@@ -296,10 +318,6 @@
- 
- distclean-tags:
- 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--
--top_distdir = ..
--distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
- 
- distdir: $(DISTFILES)
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-@@ -313,7 +331,7 @@
- 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- 	    dir="/$$dir"; \
--	    $(mkinstalldirs) "$(distdir)$$dir"; \
-+	    $(mkdir_p) "$(distdir)$$dir"; \
- 	  else \
- 	    dir=''; \
- 	  fi; \
-@@ -331,9 +349,10 @@
- check-am: all-am
- check: check-am
- all-am: Makefile $(PROGRAMS) $(DATA)
--
- installdirs:
--	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(docdir)
-+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \
-+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-+	done
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
-@@ -353,7 +372,7 @@
- clean-generic:
- 
- distclean-generic:
--	-rm -f $(CONFIG_CLEAN_FILES)
-+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- 
- maintainer-clean-generic:
- 	@echo "This command is intended for maintainers to use"
-@@ -372,6 +391,8 @@
- 
- dvi-am:
- 
-+html: html-am
-+
- info: info-am
- 
- info-am:
-@@ -403,19 +424,20 @@
- 
- ps-am:
- 
--uninstall-am: uninstall-binPROGRAMS uninstall-docDATA uninstall-info-am
-+uninstall-am: uninstall-binPROGRAMS uninstall-docDATA \
-+	uninstall-info-am
- 
- .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- 	clean-generic ctags distclean distclean-compile \
--	distclean-generic distclean-tags distdir dvi dvi-am info \
--	info-am install install-am install-binPROGRAMS install-data \
--	install-data-am install-docDATA install-exec install-exec-am \
--	install-info install-info-am install-man install-strip \
--	installcheck installcheck-am installdirs maintainer-clean \
--	maintainer-clean-generic mostlyclean mostlyclean-compile \
--	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
--	uninstall-am uninstall-binPROGRAMS uninstall-docDATA \
--	uninstall-info-am
-+	distclean-generic distclean-tags distdir dvi dvi-am html \
-+	html-am info info-am install install-am install-binPROGRAMS \
-+	install-data install-data-am install-docDATA install-exec \
-+	install-exec-am install-info install-info-am install-man \
-+	install-strip installcheck installcheck-am installdirs \
-+	maintainer-clean maintainer-clean-generic mostlyclean \
-+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-+	tags uninstall uninstall-am uninstall-binPROGRAMS \
-+	uninstall-docDATA uninstall-info-am
- 
- 
- unix2dos.html: unix2dos.1
diff --git a/src/win32/patches/mt.patch b/src/win32/patches/mt.patch
deleted file mode 100644
index 7b0914b..0000000
--- a/src/win32/patches/mt.patch
+++ /dev/null
@@ -1,1689 +0,0 @@
-diff -ru ..\release\mt-st-0.9b/Makefile ./Makefile
---- ..\release\mt-st-0.9b/Makefile	2005-08-16 12:16:28.000000000 -0700
-+++ ./Makefile	2006-08-09 03:26:58.292856500 -0700
-@@ -1,29 +1,27 @@
-+CC=	mingw32-gcc
- CFLAGS=  -Wall -O2
--SBINDIR= /sbin
--BINDIR=  /bin
--MANDIR= /usr/share/man
-+PREFIX=
-+SBINDIR= $(PREFIX)/sbin
-+BINDIR=  $(PREFIX)/bin
-+MANDIR= $(PREFIX)/man
- 
--all:	mt stinit
-+all:	mt.exe
- 
--mt:	mt.c
--	$(CC) $(CFLAGS) -o mt mt.c
-+mt.exe:	mt.c
-+	$(CC) $(CFLAGS) -o mt.exe mt.c mtops.c
- 
--stinit:	stinit.c
-+stinit.exe:	stinit.c
- 	$(CC) $(CFLAGS) -o stinit stinit.c
- 
--install: mt stinit
--	install -s mt $(BINDIR)
-+install: mt.exe
-+	install mt.exe $(BINDIR)
- 	install -c -m 444 mt.1 $(MANDIR)/man1
- 	(if [ -f $(MANDIR)/man1/mt.1.gz ] ; then \
- 	  rm -f $(MANDIR)/man1/mt.1.gz; gzip $(MANDIR)/man1/mt.1; fi)
--	install -s stinit $(SBINDIR)
--	install -c -m 444 stinit.8 $(MANDIR)/man8
--	(if [ -f $(MANDIR)/man8/stinit.8.gz ] ; then \
--	  rm -f $(MANDIR)/man8/stinit.8.gz; gzip $(MANDIR)/man8/stinit.8; fi)
- 
- dist:	clean
- 	(mydir=`basename \`pwd\``;\
- 	cd .. && tar cvvf - $$mydir | gzip -9 > $${mydir}.tar.gz)
- 
- clean:
--	rm -f *~ \#*\# *.o mt stinit
-+	rm -f *~ \#*\# *.o mt.exe stinit.exe
-diff -ru ..\release\mt-st-0.9b/mt.1 ./mt.1
---- ..\release\mt-st-0.9b/mt.1	2005-08-21 11:53:50.000000000 -0700
-+++ ./mt.1	2006-08-09 03:26:58.302871100 -0700
-@@ -48,20 +48,22 @@
- files.
- The tape is positioned on the first block of the next file.
- .IP fsfm
--Forward space
-+Forward space past
- .I count
--files.
--The tape is positioned on the last block of the previous file.
-+file marks, then backward space one file record.
-+This leaves the tape positioned on the last block of the file that is count-1
-+files past the current file.
- .IP bsf
- Backward space
- .I count
- files.
- The tape is positioned on the last block of the previous file.
- .IP bsfm
--Backward space
-+Backward space past
- .I count
--files.
--The tape is positioned on the first block of the next file.
-+file marks, then forward space one file record.
-+This leaves the tape positioned on the first block of the file that is count-1
-+files before the current file.
- .IP asf
- The tape is positioned at the beginning of the
- .I count
-diff -ru ..\release\mt-st-0.9b/mt.c ./mt.c
---- ..\release\mt-st-0.9b/mt.c	2005-08-21 11:48:06.000000000 -0700
-+++ ./mt.c	2006-08-09 04:00:01.093525100 -0700
-@@ -11,25 +11,35 @@
- 	Last Modified: Sun Aug 21 21:48:06 2005 by kai.makisara
- */
- 
-+#include <windows.h>
-+#include <winioctl.h>
-+#include <winsock.h>
-+
-+#define O_NONBLOCK   0
-+
- #include <stdio.h>
-+#if !defined(_MSC_VER)
- #include <unistd.h>
-+#endif
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <errno.h>
- #include <fcntl.h>
- #include <sys/types.h>
--#include <sys/ioctl.h>
- 
-+#include "mtops.h"
- #include "mtio.h"
- 
-+#define ioctl	tape_ioctl
-+
- #ifndef DEFTAPE
--#define DEFTAPE "/dev/tape"     /* default tape device */
-+#define DEFTAPE "Tape0"     /* default tape device */
- #endif /* DEFTAPE */
- 
--#define VERSION "0.9b"
-+#define VERSION "0.9b-bacula"
- 
--typedef int (* cmdfunc)(/* int, struct cmdef_tr *, int, char ** */);
-+typedef int (* cmdfunc)(int, struct cmdef_tr *, int, char **);
- 
- typedef struct cmdef_tr {
-     char *cmd_name;
-@@ -143,12 +153,14 @@
-       FD_RDONLY, ONE_ARG, 0},
-     { "defcompression", MTSETDRVBUFFER, do_drvbuffer, MT_ST_DEF_COMPRESSION,
-       FD_RDONLY, ONE_ARG, 0},
-+#if 0
-     { "stsetcln",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_SET_CLN,
-       FD_RDONLY, ONE_ARG, 0},
-     { "sttimeout",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_SET_TIMEOUT,
-       FD_RDONLY, ONE_ARG, 0},
-     { "stlongtimeout",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_SET_LONG_TIMEOUT,
-       FD_RDONLY, ONE_ARG, 0},
-+#endif
-     { "densities",	0, print_densities,     0, NO_FD,     NO_ARGS,
-     0 },
-     { "setpartition",	MTSETPART, do_standard, 0, FD_RDONLY, ONE_ARG,
-@@ -211,13 +223,19 @@
-     {0x30, "AIT-1 or MLR3"},
-     {0x31, "AIT-2"},
-     {0x32, "AIT-3"},
--    {0x33, "SLR6"},
-+    {0x33, "AIT-4 or SLR6"},
-     {0x34, "SLR100"},
-+    {0x38, "AIT-E Turbo"},
-+    {0x39, "AIT-1 Turbo"},
-+    {0x3A, "AIT-2 Turbo"},
-+    {0x3B, "AIT-3Ex"},
-     {0x40, "DLT1 40 GB, or Ultrium"},
-     {0x41, "DLT 40GB, or Ultrium2"},
-     {0x42, "LTO-2"},
-     {0x45, "QIC-3095-MC (TR-4)"},
-     {0x47, "TR-5"},
-+    {0x48, "Quantum SDLT220"},
-+    {0x49, "Quantum SDLT320"},
-     {0x80, "DLT 15GB uncomp. or Ecrix"},
-     {0x81, "DLT 15GB compressed"},
-     {0x82, "DLT 20GB uncompressed"},
-@@ -254,20 +272,25 @@
-     {"no-blklimits",  MT_ST_NO_BLKLIMS,    "drive doesn't support read block limits"},
-     {"can-partitions",MT_ST_CAN_PARTITIONS,"drive can handle partitioned tapes"},
-     {"scsi2logical",  MT_ST_SCSI2LOGICAL,  "logical block addresses used with SCSI-2"},
-+#if 0
-     {"no-wait",       MT_ST_NOWAIT,        "immediate mode for rewind, etc."},
-+#endif
- #ifdef MT_ST_SYSV
-     {"sysv",	      MT_ST_SYSV,	   "enable the SystemV semantics"},
- #endif
-+#if 0
-     {"cleaning",      MT_ST_SET_CLN,	   "set the cleaning bit location and mask"},
-+#endif
-     {NULL, 0}};
- 
- static char *tape_name;   /* The tape name for messages */
- 
- 
--
	int
-+int
- main(int argc, char **argv)
- {
--    int mtfd, cmd_code, i, argn, len, oflags;
-+    int mtfd, cmd_code, i, argn, oflags;
-+    unsigned int len;
-     char *cmdstr;
-     cmdef_tr *comp, *comp2;
- 
-@@ -344,7 +367,7 @@
- 	oflags = comp->cmd_fdtype == FD_RDONLY ? O_RDONLY : O_RDWR;
- 	if ((comp->error_tests & ET_ONLINE) == 0)
- 	    oflags |= O_NONBLOCK;
--	if ((mtfd = open(tape_name, oflags)) < 0) {
-+	if ((mtfd = tape_open(tape_name, oflags, 0)) < 0) {
- 	    perror(tape_name);
- 	    exit(1);
- 	}
-@@ -368,7 +391,7 @@
-     }
- 
-     if (mtfd >= 0)
--	close(mtfd);
-+	tape_close(mtfd);
-     return i;
- }
- 
-@@ -409,9 +432,9 @@
- do_standard(int mtfd, cmdef_tr *cmd, int argc, char **argv)
- {
-     struct mtop mt_com;
--    char *endp;
-+    char *endp = NULL;
- 
--    mt_com.mt_op = cmd->cmd_code;
-+    mt_com.mt_op = (short)cmd->cmd_code;
-     mt_com.mt_count = (argc > 0 ? strtol(*argv, &endp, 0) : 1);
-     if (argc > 0 && endp != *argv) {
- 	if (*endp == 'k')
-@@ -464,7 +487,8 @@
- 	static int
- do_options(int mtfd, cmdef_tr *cmd, int argc, char **argv)
- {
--    int i, an, len;
-+    int i, an;
-+    unsigned int len;
-     struct mtop mt_com;
- 
-     mt_com.mt_op = MTSETDRVBUFFER;
-@@ -596,8 +620,10 @@
- 	type = "SCSI 1";
-     else if (status.mt_type == MT_ISSCSI2)
- 	type = "SCSI 2";
-+#if 0
-     else if (status.mt_type == MT_ISONSTREAM_SC)
- 	type = "OnStream SC-, DI-, DP-, or USB";
-+#endif
-     else
- 	type = NULL;
-     if (type == NULL) {
-@@ -607,7 +633,7 @@
- 	    printf("IDE-Tape (type code 0) ?\n");
- 	else
- 	    printf("Unknown tape drive type (type code %ld)\n", status.mt_type);
--	printf("File number=%d, block number=%d.\n",
-+	printf("File number=%ld, block number=%ld.\n",
- 	       status.mt_fileno, status.mt_blkno);
- 	printf("mt_resid: %ld, mt_erreg: 0x%lx\n",
- 	       status.mt_resid, status.mt_erreg);
-@@ -617,14 +643,17 @@
-     else {
- 	printf("%s tape drive:\n", type);
- 	if (status.mt_type == MT_ISSCSI2)
--	    printf("File number=%d, block number=%d, partition=%ld.\n",
-+	    printf("File number=%ld, block number=%ld, partition=%ld.\n",
- 		   status.mt_fileno, status.mt_blkno, (status.mt_resid & 0xff));
- 	else
--	    printf("File number=%d, block number=%d.\n",
-+	    printf("File number=%ld, block number=%ld.\n",
- 		   status.mt_fileno, status.mt_blkno);
--	if (status.mt_type == MT_ISSCSI1 ||
--	    status.mt_type == MT_ISSCSI2 ||
--	    status.mt_type == MT_ISONSTREAM_SC) {
-+	if (status.mt_type == MT_ISSCSI1
-+	    || status.mt_type == MT_ISSCSI2
-+#if 0
-+            || status.mt_type == MT_ISONSTREAM_SC
-+#endif
-+            ) {
- 	    dens = (status.mt_dsreg & MT_ST_DENSITY_MASK) >> MT_ST_DENSITY_SHIFT;
- 	    density = "no translation";
- 	    for (i=0; i < NBR_DENSITIES; i++)
-@@ -666,8 +695,10 @@
- 	printf(" DR_OPEN");	  
-     if (GMT_IM_REP_EN(status.mt_gstat))
- 	printf(" IM_REP_EN");
-+#if 0
-     if (GMT_CLN(status.mt_gstat))
- 	printf(" CLN");
-+#endif
-     printf("\n");
-     return 0;
- }
-diff -ru ..\release\mt-st-0.9b/mtio.h ./mtio.h
---- ..\release\mt-st-0.9b/mtio.h	2005-08-16 12:16:28.000000000 -0700
-+++ ./mtio.h	2006-08-09 03:26:58.352944100 -0700
-@@ -8,9 +8,7 @@
- #ifndef _LINUX_MTIO_H
- #define _LINUX_MTIO_H
- 
--#include <linux/types.h>
--#include <linux/ioctl.h>
--#include <linux/qic117.h>
-+#include <sys/types.h>
- 
- /*
-  * Structures and definitions for mag tape io control commands
-@@ -150,6 +148,7 @@
- };
- 
- 
-+#ifdef USE_QIC02
- /* structure for MTIOCGETCONFIG/MTIOCSETCONFIG primarily intended
-  * as an interim solution for QIC-02 until DDI is fully implemented.
-  */
-@@ -281,6 +280,7 @@
- 				      * command
- 				      */
- };
-+#endif
- 
- /* mag tape io control commands */
- #define	MTIOCTOP	_IOW('m', 1, struct mtop)	/* do a mag tape op */
-diff -ru ..\release\mt-st-0.9b/stinit.def.examples ./stinit.def.examples
---- ..\release\mt-st-0.9b/stinit.def.examples	2005-08-16 12:16:28.000000000 -0700
-+++ ./stinit.def.examples	2006-08-09 03:26:58.362958700 -0700
-@@ -56,3 +56,169 @@
- mode3 blocksize=0 density=1   #  800 bpi
- }
- 
-+# DLT2000 / 2000XT
-+manufacturer="QUANTUM" model = "DLT2000" {
-+scsi2logical=1
-+can-bsr
-+auto-lock=0
-+two-fms=0
-+drive-buffering=1
-+buffer-writes
-+read-ahead=1
-+async-writes=1
-+can-partitions=0
-+fast-mteom=1
-+#
-+# If your stinit supports the timeouts:
-+timeout=3600 # 1 hour
-+long-timeout=14400 # 4 hours
-+#
-+mode1 blocksize=0 density=0x81	# 10GB + compression on DLTtape III, 15+ with DLTtape IIIXT in 2000XT
-+mode2 blocksize=0 density=0x80	# 10GB, no compression  on DLTtape III, 15 with DLTtape IIIXT in 2000XT
-+mode3 blocksize=0 density=0x18  #  6GB, compression not available, on DLTtape III
-+mode4 blocksize=0 density=0x17  #2.6GB, compression not available, on DLTtape III
-+}
-+
-+# DLT4000
-+manufacturer="QUANTUM" model = "DLT4000" {
-+scsi2logical=1
-+can-bsr
-+auto-lock=0
-+two-fms=0
-+drive-buffering=1
-+buffer-writes
-+read-ahead=1
-+async-writes=1
-+can-partitions=0
-+fast-mteom=1
-+#
-+# If your stinit supports the timeouts:
-+timeout=3600 # 1 hour
-+long-timeout=14400 # 4 hours
-+#
-+# Drive is backwards compatible, use older modes (e.g. from above) as required
-+mode1 blocksize=0 density=0x83  # 20GB + compression
-+mode2 blocksize=0 density=0x82  # 20GB, no compression
-+mode3 blocksize=0 density=0x81	# 10GB + compression (DLT2000 mode) with DLTtape III, 15+ with DLTtape IIIXT in 2000XT
-+mode4 blocksize=0 density=0x80	# 10GB, no compression  (DLT2000 mode) with DLTtape III, 15 with DLTtape IIIXT in 2000XT
-+}
-+
-+# DLT7000
-+manufacturer="QUANTUM" model = "DLT7000" {
-+scsi2logical=1
-+can-bsr
-+auto-lock=0
-+two-fms=0
-+drive-buffering=1
-+buffer-writes
-+read-ahead=1
-+async-writes=1
-+can-partitions=0
-+fast-mteom=1
-+#
-+# If your stinit supports the timeouts:
-+timeout=3600 # 1 hour
-+long-timeout=14400 # 4 hours
-+#
-+# Drive is backwards compatible, use older modes (e.g. from above) as required.
-+mode1 blocksize=0 density=0x85  # 35GB + compression
-+mode2 blocksize=0 density=0x84  # 35GB, no compression
-+mode3 blocksize=0 density=0x83	# 20GB + compression (DLT4000 mode)
-+mode4 blocksize=0 density=0x82	# 20GB, no compression (DLT4000 mode)
-+}
-+
-+# DLT8000
-+manufacturer="QUANTUM" model = "DLT8000" {
-+scsi2logical=1
-+can-bsr=1
-+auto-lock=0
-+two-fms=0
-+drive-buffering=1
-+buffer-writes
-+read-ahead=1
-+async-writes=1
-+can-partitions=0
-+fast-mteom=1
-+#
-+# If your stinit supports the timeouts:
-+timeout=3600 # 1 hour
-+long-timeout=14400 # 4 hours
-+#
-+# Drive is backwards compatible to DLT7000, use older modes (e.g. from above) as required. Modes <10GB (<0x19) not supported!
-+mode1 blocksize=0 density=0x89	# 40GB + compression
-+mode2 blocksize=0 density=0x88	# 40GB, no compression
-+mode3 blocksize=0 density=0x85  # 35GB + compression (DLT7000 mode)
-+mode4 blocksize=0 density=0x84  # 35GB, no compression (DLT7000 mode)
-+}
-+
-+
-+# SDLT220
-+manufacturer="QUANTUM" model = "SuperDLT1" {
-+scsi2logical=1
-+can-bsr=1
-+auto-lock=0
-+two-fms=0
-+drive-buffering=1
-+buffer-writes
-+read-ahead=1
-+async-writes=1
-+can-partitions=0
-+fast-mteom=1
-+#
-+# If your stinit supports the timeouts:
-+timeout=3600 # 1 hour
-+long-timeout=14400 # 4 hours
-+#
-+# Drive is backwards read compatible to DLT4000/7000/8000. Mode settings are only required for writing, so no need to define any other modes here.
-+mode1 blocksize=0 density=0x48 compression=1	# 110 GB + compression
-+mode2 blocksize=0 density=0x48 compression=0	# 110 GB, no ompression
-+}
-+
-+# SDLT320
-+manufacturer="QUANTUM" model = "SDLT320" {
-+scsi2logical=1
-+can-bsr=1
-+auto-lock=0
-+two-fms=0
-+drive-buffering=1
-+buffer-writes
-+read-ahead=1
-+async-writes=1
-+can-partitions=0
-+fast-mteom=1
-+#
-+# If your stinit supports the timeouts:
-+timeout=3600 # 1 hour
-+long-timeout=14400 # 4 hours
-+#
-+# Drive is backwards write compatible to SDLT220 and read compatible to DLT4000/7000/8000. Mode settings are only required for writing, so we need only the SDL220/320 modes here
-+mode1 blocksize=0 density=0x49 compression=1	# 160 GB + compression
-+mode2 blocksize=0 density=0x49 compression=0	# 160 GB, no ompression
-+mode3 blocksize=0 density=0x48 compression=1	# 110 GB + compression
-+mode4 blocksize=0 density=0x48 compression=0	# 110 GB, no ompression
-+}
-+
-+# SDLT600
-+manufacturer="QUANTUM" model = "SDLT600" {
-+scsi2logical=1
-+can-bsr=1
-+auto-lock=0
-+two-fms=0
-+drive-buffering=1
-+buffer-writes
-+read-ahead=1
-+async-writes=1
-+can-partitions=0
-+fast-mteom=1
-+#
-+# If your stinit supports the timeouts:
-+timeout=3600 # 1 hour
-+long-timeout=14400 # 4 hours
-+#
-+# Drive is backwards read compatible to SDLT220/320 and VS160. Mode settings are only required for writing, so we need only the native SDLT600 mode here.
-+mode1 blocksize=0 density=0x4a compression=1	# 300 GB + compression
-+mode2 blocksize=0 density=0x4a compression=0	# 300 GB, no ompression
-+mode3 blocksize=0 density=0x4a compression=1	# 300 GB + compression
-+mode4 blocksize=0 density=0x4a compression=0	# 300 GB, no ompression
-+}
-+
-
---- /dev/null	1969-12-31 16:00:00.000000000 -0800
-+++ mtops.c	2006-08-09 04:03:09.307917500 -0700
-@@ -0,0 +1,1163 @@
-+/*
-+ * mtops.cpp - Emulate the Linux st (scsi tape) driver on Microsoft Windows.
-+ *
-+ * Author: Robert Nelson, May, 2006 <robertn at the-nelsons.org>
-+ *
-+ * Version $Id: mt.patch 3802 2006-12-14 11:41:02Z kerns $
-+ *
-+ * Copyright (C) 2006 Free Software Foundation Europe e.V.
-+ *
-+ * This file was contributed to the Bacula project by Robert Nelson.
-+ *
-+ * Robert Nelson has been granted a perpetual, worldwide,
-+ * non-exclusive, no-charge, royalty-free, irrevocable copyright
-+ * license to reproduce, prepare derivative works of, publicly
-+ * display, publicly perform, sublicense, and distribute the original
-+ * work contributed by Robert Nelson to the Bacula project in source 
-+ * or object form.
-+ *
-+ * If you wish to license contributions from Robert Nelson
-+ * under an alternate open source license please contact
-+ * Robert Nelson <robertn at the-nelsons.org>.
-+ */
-+/*
-+   Copyright (C) 2006 Free Software Foundation Europe e.V.
-+
-+   This program is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU General Public License
-+   version 2 as amended with additional clauses defined in the
-+   file LICENSE in the main source directory.
-+
-+   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 
-+   the file LICENSE for additional details.
-+
-+ */
-+
-+#include <stdarg.h>
-+#include <stddef.h>
-+
-+#include <windows.h>
-+#include <errno.h>
-+
-+#include "mtops.h"
-+#include "mtio.h"
-+#if defined(_MSC_VER)
-+#include <winioctl.h>
-+#include <ntddscsi.h>
-+#else
-+#include <ddk/ntddstor.h>
-+#include <ddk/ntddscsi.h>
-+#endif
-+
-+#ifndef __cplusplus
-+typedef char bool;
-+#define true 1
-+#define false 0
-+#endif
-+
-+//
-+// SCSI bus status codes.
-+//
-+
-+#define SCSISTAT_GOOD                  0x00
-+#define SCSISTAT_CHECK_CONDITION       0x02
-+#define SCSISTAT_CONDITION_MET         0x04
-+#define SCSISTAT_BUSY                  0x08
-+#define SCSISTAT_INTERMEDIATE          0x10
-+#define SCSISTAT_INTERMEDIATE_COND_MET 0x14
-+#define SCSISTAT_RESERVATION_CONFLICT  0x18
-+#define SCSISTAT_COMMAND_TERMINATED    0x22
-+#define SCSISTAT_QUEUE_FULL            0x28
-+
-+/* Forward referenced functions */
-+
-+extern char my_name[];
-+extern int debug_level;
-+
-+inline   SHORT  Read16BitSigned(const unsigned char *pValue)
-+{
-+   return (SHORT)(((USHORT)pValue[0] << 8) | (USHORT)pValue[1]);
-+}
-+
-+inline   USHORT  Read16BitUnsigned(const unsigned char *pValue)
-+{
-+   return (((USHORT)pValue[0] << 8) | (USHORT)pValue[1]);
-+}
-+
-+inline   LONG  Read24BitSigned(const unsigned char *pValue)
-+{
-+   return ((LONG)(((ULONG)pValue[0] << 16) | ((ULONG)pValue[1] << 8) |
-+                   (ULONG)pValue[2])) << 8 >> 8;
-+}
-+
-+inline   ULONG  Read24BitUnsigned(const unsigned char *pValue)
-+{
-+   return ((ULONG)pValue[0] << 16) | ((ULONG)pValue[1] << 8) | (ULONG)pValue[2];
-+}
-+
-+inline   LONG  Read32BitSigned(const unsigned char *pValue)
-+{
-+   return (LONG)(((ULONG)pValue[0] << 24) | ((ULONG)pValue[1] << 16) |
-+                 ((ULONG)pValue[2] << 8) |   (ULONG)pValue[3]);
-+}
-+
-+inline   ULONG  Read32BitUnsigned(const unsigned char *pValue)
-+{
-+   return (((ULONG)pValue[0] << 24) | ((ULONG)pValue[1] << 16) |
-+           ((ULONG)pValue[2] << 8) | (ULONG)pValue[3]);
-+}
-+
-+inline   LONGLONG  Read64BitSigned(const unsigned char *pValue)
-+{
-+   return (LONGLONG)(((ULONGLONG)pValue[0] << 56) | ((ULONGLONG)pValue[1] << 48) |
-+                     ((ULONGLONG)pValue[2] << 40) | ((ULONGLONG)pValue[3] << 32) |
-+                     ((ULONGLONG)pValue[4] << 24) | ((ULONGLONG)pValue[5] << 16) |
-+                     ((ULONGLONG)pValue[6] <<  8) |  (ULONGLONG)pValue[7]);
-+}
-+
-+inline   ULONGLONG  Read64BitUnsigned(const unsigned char *pValue)
-+{
-+   return (LONGLONG)(((ULONGLONG)pValue[0] << 56) | ((ULONGLONG)pValue[1] << 48) |
-+                     ((ULONGLONG)pValue[2] << 40) | ((ULONGLONG)pValue[3] << 32) |
-+                     ((ULONGLONG)pValue[4] << 24) | ((ULONGLONG)pValue[5] << 16) |
-+                     ((ULONGLONG)pValue[6] <<  8) | (ULONGLONG)pValue[7]);
-+}
-+
-+typedef  struct   _TAPE_POSITION_INFO
-+{
-+   UCHAR       AtPartitionStart:1;
-+   UCHAR       AtPartitionEnd:1;
-+   UCHAR       PartitionBlockValid:1;
-+   UCHAR       FileSetValid:1;
-+   UCHAR       :4;
-+   UCHAR       Reserved1[3];
-+   ULONG       Partition;
-+   ULONGLONG   BlockNumber;
-+   ULONGLONG   FileNumber;
-+   ULONGLONG   SetNumber;
-+}  TAPE_POSITION_INFO, *PTAPE_POSITION_INFO;
-+
-+typedef  struct   _TAPE_HANDLE_INFO
-+{
-+   HANDLE      OSHandle;
-+   bool        bEOD;
-+   bool        bEOF;
-+   bool        bEOT;
-+   bool        bBlockValid;
-+   ULONG       FeaturesLow;
-+   ULONG       FeaturesHigh;
-+   ULONG       ulFile;
-+   ULONGLONG   ullFileStart;
-+
-+}  TAPE_HANDLE_INFO, *PTAPE_HANDLE_INFO;
-+
-+TAPE_HANDLE_INFO TapeHandleTable[] =
-+{
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE },
-+   { INVALID_HANDLE_VALUE }
-+};
-+
-+#define  NUMBER_HANDLE_ENTRIES      (sizeof(TapeHandleTable) / sizeof(TapeHandleTable[0]))
-+
-+DWORD GetTapePositionInfo(HANDLE hDevice, PTAPE_POSITION_INFO TapePositionInfo);
-+DWORD GetDensityBlockSize(HANDLE hDevice, DWORD *pdwDensity, DWORD *pdwBlockSize);
-+
-+int tape_get(int fd, struct mtget *mt_get);
-+int tape_op(int fd, struct mtop *mt_com);
-+int tape_pos(int fd, struct mtpos *mt_pos);
-+
-+int
-+tape_open(const char *file, int flags, int mode)
-+{
-+   HANDLE hDevice = INVALID_HANDLE_VALUE;
-+   char szDeviceName[256] = "\\\\.\\";
-+   int  idxFile;
-+   DWORD dwResult;
-+
-+   for (idxFile = 0; idxFile < (int)NUMBER_HANDLE_ENTRIES; idxFile++) {
-+      if (TapeHandleTable[idxFile].OSHandle == INVALID_HANDLE_VALUE) {
-+         break;
-+      }
-+   }
-+
-+   if (idxFile >= (int)NUMBER_HANDLE_ENTRIES) {
-+      return EMFILE;
-+   }
-+
-+   memset(&TapeHandleTable[idxFile], 0, sizeof(TapeHandleTable[idxFile]));
-+
-+   if (file[0] != '\\' && file[0] != '/') {
-+       strncpy(&szDeviceName[4], file, sizeof(szDeviceName) - 4);
-+   } else {
-+       strncpy(&szDeviceName[0], file, sizeof(szDeviceName));
-+   }
-+
-+   szDeviceName[sizeof(szDeviceName) - 1] = '\0';
-+
-+   hDevice = CreateFile(szDeviceName, FILE_ALL_ACCESS, 0, NULL, OPEN_EXISTING, 0, NULL);
-+
-+   if (hDevice != INVALID_HANDLE_VALUE) {
-+      PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[idxFile];
-+
-+      memset(pHandleInfo, 0, sizeof(*pHandleInfo));
-+
-+      pHandleInfo->OSHandle = hDevice;
-+
-+      TAPE_GET_DRIVE_PARAMETERS  TapeDriveParameters;
-+      DWORD    dwSize = sizeof(TapeDriveParameters);
-+
-+      dwResult = GetTapeParameters(pHandleInfo->OSHandle, GET_TAPE_DRIVE_INFORMATION, &dwSize, &TapeDriveParameters);
-+      if (dwResult == NO_ERROR) {
-+         pHandleInfo->FeaturesLow = TapeDriveParameters.FeaturesLow;
-+         pHandleInfo->FeaturesHigh = TapeDriveParameters.FeaturesHigh;
-+      }
-+
-+      TAPE_POSITION_INFO TapePositionInfo;
-+
-+      dwResult =  GetTapePositionInfo(pHandleInfo->OSHandle, &TapePositionInfo);
-+
-+      if (dwResult == NO_ERROR) {
-+         if (TapePositionInfo.AtPartitionStart || TapePositionInfo.AtPartitionEnd ||
-+             (TapePositionInfo.PartitionBlockValid && TapePositionInfo.BlockNumber == 0)) {
-+            pHandleInfo->ulFile = 0;
-+            pHandleInfo->bBlockValid = true;
-+            pHandleInfo->ullFileStart = 0;
-+         } else if (TapePositionInfo.FileSetValid) {
-+            pHandleInfo->ulFile = (ULONG)TapePositionInfo.FileNumber;
-+         }
-+      }
-+   } else {
-+      DWORD dwError = GetLastError();
-+
-+      switch (dwError) {
-+      case ERROR_FILE_NOT_FOUND:
-+      case ERROR_PATH_NOT_FOUND:
-+         errno = ENOENT;
-+         break;
-+
-+      case ERROR_TOO_MANY_OPEN_FILES:
-+         errno = EMFILE;
-+         break;
-+
-+      default:
-+      case ERROR_ACCESS_DENIED:
-+      case ERROR_SHARING_VIOLATION:
-+      case ERROR_LOCK_VIOLATION:
-+      case ERROR_INVALID_NAME:
-+         errno = EACCES;
-+         break;
-+
-+      case ERROR_FILE_EXISTS:
-+         errno = EEXIST;
-+         break;
-+
-+      case ERROR_INVALID_PARAMETER:
-+         errno = EINVAL;
-+         break;
-+      }
-+
-+      return(int) -1;
-+   }
-+
-+   return (int)idxFile + 3;
-+}
-+
-+int
-+tape_read(int fd, void *buffer, unsigned int count)
-+{
-+   if (buffer == NULL) {
-+      errno = EINVAL;
-+      return -1;
-+   }
-+
-+   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-+       TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE)
-+   {
-+      errno = EBADF;
-+      return -1;
-+   }
-+
-+   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-+
-+   DWORD bytes_read;
-+   BOOL bResult;
-+
-+   bResult = ReadFile(pHandleInfo->OSHandle, buffer, count, &bytes_read, NULL);
-+
-+   if (bResult) {
-+      pHandleInfo->bEOF = false;
-+      pHandleInfo->bEOT = false;
-+      pHandleInfo->bEOD = false;
-+      return bytes_read;
-+   } else {
-+      int iReturnValue = 0;
-+      DWORD last_error = GetLastError();
-+
-+      switch (last_error) {
-+
-+      case ERROR_FILEMARK_DETECTED:
-+         pHandleInfo->bEOF = true;
-+         break;
-+
-+      case ERROR_END_OF_MEDIA:
-+         pHandleInfo->bEOT = true;
-+         break;
-+
-+      case ERROR_NO_MEDIA_IN_DRIVE:
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+         pHandleInfo->bEOD = false;
-+         errno = ENOMEDIUM;
-+         iReturnValue = -1;
-+         break;
-+
-+      case ERROR_NO_DATA_DETECTED:
-+         pHandleInfo->bEOD = true;
-+         break;
-+
-+      case ERROR_INVALID_HANDLE:
-+      case ERROR_ACCESS_DENIED:
-+      case ERROR_LOCK_VIOLATION:
-+         errno = EBADF;
-+         iReturnValue = -1;
-+         break;
-+
-+      default:
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+         pHandleInfo->bEOD = false;
-+         errno = EIO;
-+         iReturnValue = -1;
-+      }
-+
-+      return iReturnValue;
-+   }
-+}
-+
-+int
-+tape_write(int fd, const void *buffer, unsigned int count)
-+{
-+   if (buffer == NULL) {
-+      errno = EINVAL;
-+      return -1;
-+   }
-+
-+   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE)
-+   {
-+      errno = EBADF;
-+      return -1;
-+   }
-+
-+   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-+
-+   DWORD bytes_written;
-+   BOOL bResult;
-+
-+   bResult = WriteFile(pHandleInfo->OSHandle, buffer, count, &bytes_written, NULL);
-+
-+   if (bResult) {
-+      pHandleInfo->bEOF = false;
-+      pHandleInfo->bEOT = false;
-+      return bytes_written;
-+   } else {
-+      DWORD last_error = GetLastError();
-+
-+      switch (last_error) {
-+      case ERROR_END_OF_MEDIA:
-+      case ERROR_DISK_FULL:
-+         pHandleInfo->bEOT = true;
-+         errno = ENOSPC;
-+         break;
-+
-+      case ERROR_NO_MEDIA_IN_DRIVE:
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+         pHandleInfo->bEOD = false;
-+         errno = ENOMEDIUM;
-+         break;
-+
-+      case ERROR_INVALID_HANDLE:
-+      case ERROR_ACCESS_DENIED:
-+         errno = EBADF;
-+         break;
-+
-+      default:
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+         pHandleInfo->bEOD = false;
-+         errno = EIO;
-+         break;
-+      }
-+      return -1;
-+   }
-+}
-+
-+int
-+tape_close(int fd)
-+{
-+   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-+      TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE) {
-+      errno = EBADF;
-+      return -1;
-+   }
-+
-+   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-+
-+   if (!CloseHandle(pHandleInfo->OSHandle)) {
-+      pHandleInfo->OSHandle = INVALID_HANDLE_VALUE;
-+      errno = EBADF;
-+      return -1;
-+   }
-+
-+   pHandleInfo->OSHandle = INVALID_HANDLE_VALUE;
-+
-+   return 0;
-+}
-+
-+int
-+tape_ioctl(int fd, unsigned long int request, ...)
-+{
-+   va_list argp;
-+   int result;
-+
-+   va_start(argp, request);
-+
-+   switch (request) {
-+   case MTIOCTOP:
-+      result = tape_op(fd, va_arg(argp, struct mtop *));
-+      break;
-+
-+   case MTIOCGET:
-+      result = tape_get(fd, va_arg(argp, struct mtget *));
-+      break;
-+
-+   case MTIOCPOS:
-+      result = tape_pos(fd, va_arg(argp, struct mtpos *));
-+      break;
-+
-+   default:
-+      errno = ENOTTY;
-+      result = -1;
-+      break;
-+   }
-+
-+   va_end(argp);
-+
-+   return result;
-+}
-+
-+int tape_op(int fd, struct mtop *mt_com)
-+{
-+   DWORD result = NO_ERROR;
-+   int   index;
-+
-+   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-+       TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE)
-+   {
-+      errno = EBADF;
-+      return -1;
-+   }
-+
-+   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-+
-+   switch (mt_com->mt_op)
-+   {
-+   case MTRESET:
-+   case MTNOP:
-+   case MTSETDRVBUFFER:
-+      break;
-+
-+   default:
-+   case MTRAS1:
-+   case MTRAS2:
-+   case MTRAS3:
-+   case MTSETDENSITY:
-+      errno = ENOTTY;
-+      result = (DWORD)-1;
-+      break;
-+
-+   case MTFSF:
-+      for (index = 0; index < mt_com->mt_count; index++) {
-+         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, 1, 0, FALSE);
-+         if (result == NO_ERROR) {
-+            pHandleInfo->ulFile++;
-+            pHandleInfo->bEOF = true;
-+            pHandleInfo->bEOT = false;
-+         }
-+      }
-+      break;
-+
-+   case MTBSF:
-+      for (index = 0; index < mt_com->mt_count; index++) {
-+         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, (DWORD)-1, ~0, FALSE);
-+         if (result == NO_ERROR) {
-+            pHandleInfo->ulFile--;
-+            pHandleInfo->bBlockValid = false;
-+            pHandleInfo->bEOD = false;
-+            pHandleInfo->bEOF = false;
-+            pHandleInfo->bEOT = false;
-+         }
-+      }
-+      break;
-+
-+   case MTFSR:
-+      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_RELATIVE_BLOCKS, 0, mt_com->mt_count, 0, FALSE);
-+      if (result == NO_ERROR) {
-+         pHandleInfo->bEOD = false;
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+      } else if (result == ERROR_FILEMARK_DETECTED) {
-+         pHandleInfo->bEOF = true;
-+      }
-+      break;
-+
-+   case MTBSR:
-+      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_RELATIVE_BLOCKS, 0, -mt_com->mt_count, ~0, FALSE);
-+      if (result == NO_ERROR) {
-+         pHandleInfo->bEOD = false;
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+      } else if (result == ERROR_FILEMARK_DETECTED) {
-+         pHandleInfo->ulFile--;
-+         pHandleInfo->bBlockValid = false;
-+         pHandleInfo->bEOD = false;
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+      }
-+      break;
-+
-+   case MTWEOF:
-+      result = WriteTapemark(pHandleInfo->OSHandle, TAPE_FILEMARKS, mt_com->mt_count, FALSE);
-+      if (result == NO_ERROR) {
-+         pHandleInfo->bEOF = true;
-+         pHandleInfo->bEOT = false;
-+         pHandleInfo->ulFile += mt_com->mt_count;
-+         pHandleInfo->bBlockValid = true;
-+         pHandleInfo->ullFileStart = 0;
-+      }
-+      break;
-+
-+   case MTREW:
-+      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_REWIND, 0, 0, 0, FALSE);
-+      if (result == NO_ERROR) {
-+         pHandleInfo->bEOD = false;
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+         pHandleInfo->ulFile = 0;
-+         pHandleInfo->bBlockValid = true;
-+         pHandleInfo->ullFileStart = 0;
-+      }
-+      break;
-+
-+   case MTOFFL:
-+      result = PrepareTape(pHandleInfo->OSHandle, TAPE_UNLOAD, FALSE);
-+      if (result == NO_ERROR) {
-+         pHandleInfo->bEOD = false;
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+         pHandleInfo->ulFile = 0;
-+         pHandleInfo->ullFileStart = 0;
-+      }
-+      break;
-+
-+   case MTRETEN:
-+      result = PrepareTape(pHandleInfo->OSHandle, TAPE_TENSION, FALSE);
-+      if (result == NO_ERROR) {
-+         pHandleInfo->bEOD = false;
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+         pHandleInfo->ulFile = 0;
-+         pHandleInfo->bBlockValid = true;
-+         pHandleInfo->ullFileStart = 0;
-+      }
-+      break;
-+
-+   case MTBSFM:
-+      for (index = 0; index < mt_com->mt_count; index++) {
-+         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, (DWORD)-1, ~0, FALSE);
-+         if (result == NO_ERROR) {
-+            result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, 1, 0, FALSE);
-+            pHandleInfo->bEOD = false;
-+            pHandleInfo->bEOF = false;
-+            pHandleInfo->bEOT = false;
-+         }
-+      }
-+      break;
-+
-+   case MTFSFM:
-+      for (index = 0; index < mt_com->mt_count; index++) {
-+         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, mt_com->mt_count, 0, FALSE);
-+         if (result == NO_ERROR) {
-+            result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, (DWORD)-1, ~0, FALSE);
-+            pHandleInfo->bEOD = false;
-+            pHandleInfo->bEOF = false;
-+            pHandleInfo->bEOT = false;
-+         }
-+      }
-+      break;
-+
-+   case MTEOM:
-+      for ( ; ; ) {
-+         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, 1, 0, FALSE);
-+         if (result != NO_ERROR) {
-+            pHandleInfo->bEOF = false;
-+
-+            if (result == ERROR_END_OF_MEDIA) {
-+               pHandleInfo->bEOD = true;
-+               pHandleInfo->bEOT = true;
-+               return 0;
-+            }
-+            if (result == ERROR_NO_DATA_DETECTED) {
-+               pHandleInfo->bEOD = true;
-+               pHandleInfo->bEOT = false;
-+               return 0;
-+            }
-+            break;
-+         } else {
-+            pHandleInfo->bEOF = true;
-+            pHandleInfo->ulFile++;
-+         }
-+      }
-+      break;
-+
-+   case MTERASE:
-+      result = EraseTape(pHandleInfo->OSHandle, TAPE_ERASE_LONG, FALSE);
-+      if (result == NO_ERROR) {
-+         pHandleInfo->bEOD = true;
-+         pHandleInfo->bEOF = false;
-+         pHandleInfo->bEOT = false;
-+         pHandleInfo->ulFile = 0;
-+         pHandleInfo->bBlockValid = true;
-+         pHandleInfo->ullFileStart = 0;
-+      }
-+      break;
-+
-+   case MTSETBLK:
-+      {
-+         TAPE_SET_MEDIA_PARAMETERS  SetMediaParameters;
-+
-+         SetMediaParameters.BlockSize = mt_com->mt_count;
-+         result = SetTapeParameters(pHandleInfo->OSHandle, SET_TAPE_MEDIA_INFORMATION, &SetMediaParameters);
-+      }
-+      break;
-+
-+   case MTSEEK:
-+      {
-+         TAPE_POSITION_INFO   TapePositionInfo;
-+
-+         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_ABSOLUTE_BLOCK, 0, mt_com->mt_count, 0, FALSE);
-+
-+         memset(&TapePositionInfo, 0, sizeof(TapePositionInfo));
-+         DWORD dwPosResult = GetTapePositionInfo(pHandleInfo->OSHandle, &TapePositionInfo);
-+         if (dwPosResult == NO_ERROR && TapePositionInfo.FileSetValid) {
-+            pHandleInfo->ulFile = (ULONG)TapePositionInfo.FileNumber;
-+         } else {
-+            pHandleInfo->ulFile = ~0U;
-+         }
-+      }
-+      break;
-+
-+   case MTTELL:
-+      {
-+         DWORD partition;
-+         DWORD offset;
-+         DWORD offsetHi;
-+
-+         result = GetTapePosition(pHandleInfo->OSHandle, TAPE_ABSOLUTE_BLOCK, &partition, &offset, &offsetHi);
-+         if (result == NO_ERROR) {
-+            return offset;
-+         }
-+      }
-+      break;
-+
-+   case MTFSS:
-+      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_SETMARKS, 0, mt_com->mt_count, 0, FALSE);
-+      break;
-+
-+   case MTBSS:
-+      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_SETMARKS, 0, -mt_com->mt_count, ~0, FALSE);
-+      break;
-+
-+   case MTWSM:
-+      result = WriteTapemark(pHandleInfo->OSHandle, TAPE_SETMARKS, mt_com->mt_count, FALSE);
-+      break;
-+
-+   case MTLOCK:
-+      result = PrepareTape(pHandleInfo->OSHandle, TAPE_LOCK, FALSE);
-+      break;
-+
-+   case MTUNLOCK:
-+      result = PrepareTape(pHandleInfo->OSHandle, TAPE_UNLOCK, FALSE);
-+      break;
-+
-+   case MTLOAD:
-+      result = PrepareTape(pHandleInfo->OSHandle, TAPE_LOAD, FALSE);
-+      break;
-+
-+   case MTUNLOAD:
-+      result = PrepareTape(pHandleInfo->OSHandle, TAPE_UNLOAD, FALSE);
-+      break;
-+
-+   case MTCOMPRESSION:
-+      {
-+         TAPE_GET_DRIVE_PARAMETERS  GetDriveParameters;
-+         TAPE_SET_DRIVE_PARAMETERS  SetDriveParameters;
-+         DWORD                      size;
-+
-+         size = sizeof(GetDriveParameters);
-+
-+         result = GetTapeParameters(pHandleInfo->OSHandle, GET_TAPE_DRIVE_INFORMATION, &size, &GetDriveParameters);
-+
-+         if (result == NO_ERROR)
-+         {
-+            SetDriveParameters.ECC = GetDriveParameters.ECC;
-+            SetDriveParameters.Compression = (BOOLEAN)mt_com->mt_count;
-+            SetDriveParameters.DataPadding = GetDriveParameters.DataPadding;
-+            SetDriveParameters.ReportSetmarks = GetDriveParameters.ReportSetmarks;
-+            SetDriveParameters.EOTWarningZoneSize = GetDriveParameters.EOTWarningZoneSize;
-+
-+            result = SetTapeParameters(pHandleInfo->OSHandle, SET_TAPE_DRIVE_INFORMATION, &SetDriveParameters);
-+         }
-+      }
-+      break;
-+
-+   case MTSETPART:
-+      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_LOGICAL_BLOCK, mt_com->mt_count, 0, 0, FALSE);
-+      break;
-+
-+   case MTMKPART:
-+      if (mt_com->mt_count == 0)
-+      {
-+         result = CreateTapePartition(pHandleInfo->OSHandle, TAPE_INITIATOR_PARTITIONS, 1, 0);
-+      }
-+      else
-+      {
-+         result = CreateTapePartition(pHandleInfo->OSHandle, TAPE_INITIATOR_PARTITIONS, 2, mt_com->mt_count);
-+      }
-+      break;
-+   }
-+
-+   if ((result == NO_ERROR && pHandleInfo->bEOF) || 
-+       (result == ERROR_FILEMARK_DETECTED && mt_com->mt_op == MTFSR)) {
-+
-+      TAPE_POSITION_INFO TapePositionInfo;
-+
-+      if (GetTapePositionInfo(pHandleInfo->OSHandle, &TapePositionInfo) == NO_ERROR) {
-+         pHandleInfo->bBlockValid = true;
-+         pHandleInfo->ullFileStart = TapePositionInfo.BlockNumber;
-+      }
-+   }
-+
-+   switch (result) {
-+   case NO_ERROR:
-+   case (DWORD)-1:   /* Error has already been translated into errno */
-+      break;
-+
-+   default:
-+   case ERROR_FILEMARK_DETECTED:
-+      errno = EIO;
-+      break;
-+
-+   case ERROR_END_OF_MEDIA:
-+      pHandleInfo->bEOT = true;
-+      errno = EIO;
-+      break;
-+
-+   case ERROR_NO_DATA_DETECTED:
-+      pHandleInfo->bEOD = true;
-+      errno = EIO;
-+      break;
-+
-+   case ERROR_NO_MEDIA_IN_DRIVE:
-+      pHandleInfo->bEOF = false;
-+      pHandleInfo->bEOT = false;
-+      pHandleInfo->bEOD = false;
-+      errno = ENOMEDIUM;
-+      break;
-+
-+   case ERROR_INVALID_HANDLE:
-+   case ERROR_ACCESS_DENIED:
-+   case ERROR_LOCK_VIOLATION:
-+      errno = EBADF;
-+      break;
-+   }
-+
-+   return result == NO_ERROR ? 0 : -1;
-+}
-+
-+int tape_get(int fd, struct mtget *mt_get)
-+{
-+   TAPE_POSITION_INFO pos_info;
-+   BOOL result;
-+
-+   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-+       TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE) {
-+      errno = EBADF;
-+      return -1;
-+   }
-+
-+   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-+
-+   if (GetTapePositionInfo(pHandleInfo->OSHandle, &pos_info) != NO_ERROR) {
-+      return -1;
-+   }
-+
-+   DWORD density = 0;
-+   DWORD blocksize = 0;
-+
-+   result = GetDensityBlockSize(pHandleInfo->OSHandle, &density, &blocksize);
-+
-+   if (result != NO_ERROR) {
-+      TAPE_GET_DRIVE_PARAMETERS drive_params;
-+      DWORD size;
-+
-+      size = sizeof(drive_params);
-+
-+      result = GetTapeParameters(pHandleInfo->OSHandle, GET_TAPE_DRIVE_INFORMATION, &size, &drive_params);
-+
-+      if (result == NO_ERROR) {
-+         blocksize = drive_params.DefaultBlockSize;
-+      }
-+   }
-+
-+   mt_get->mt_type = MT_ISSCSI2;
-+
-+   // Partition #
-+   mt_get->mt_resid = pos_info.PartitionBlockValid ? pos_info.Partition : (ULONG)-1;
-+
-+   // Density / Block Size
-+   mt_get->mt_dsreg = ((density << MT_ST_DENSITY_SHIFT) & MT_ST_DENSITY_MASK) |
-+                      ((blocksize << MT_ST_BLKSIZE_SHIFT) & MT_ST_BLKSIZE_MASK);
-+
-+   mt_get->mt_gstat = 0x00010000;  /* Immediate report mode.*/
-+
-+   if (pHandleInfo->bEOF) {
-+      mt_get->mt_gstat |= 0x80000000;     // GMT_EOF
-+   }
-+
-+   if (pos_info.PartitionBlockValid && pos_info.BlockNumber == 0) {
-+      mt_get->mt_gstat |= 0x40000000;     // GMT_BOT
-+   }
-+
-+   if (pHandleInfo->bEOT) {
-+      mt_get->mt_gstat |= 0x20000000;     // GMT_EOT
-+   }
-+
-+   if (pHandleInfo->bEOD) {
-+      mt_get->mt_gstat |= 0x08000000;     // GMT_EOD
-+   }
-+
-+   TAPE_GET_MEDIA_PARAMETERS  media_params;
-+   DWORD size = sizeof(media_params);
-+   
-+   result = GetTapeParameters(pHandleInfo->OSHandle, GET_TAPE_MEDIA_INFORMATION, &size, &media_params);
-+
-+   if (result == NO_ERROR && media_params.WriteProtected) {
-+      mt_get->mt_gstat |= 0x04000000;     // GMT_WR_PROT
-+   }
-+
-+   result = GetTapeStatus(pHandleInfo->OSHandle);
-+
-+   if (result != NO_ERROR) {
-+      if (result == ERROR_NO_MEDIA_IN_DRIVE) {
-+         mt_get->mt_gstat |= 0x00040000;  // GMT_DR_OPEN
-+      }
-+   } else {
-+      mt_get->mt_gstat |= 0x01000000;     // GMT_ONLINE
-+   }
-+
-+   // Recovered Error Count
-+   mt_get->mt_erreg = 0;
-+
-+   // File Number
-+   mt_get->mt_fileno = (__kernel_daddr_t)pHandleInfo->ulFile;
-+
-+   // Block Number
-+   mt_get->mt_blkno = (__kernel_daddr_t)(pHandleInfo->bBlockValid ? pos_info.BlockNumber - pHandleInfo->ullFileStart : (ULONGLONG)-1);
-+
-+   return 0;
-+}
-+
-+#define  SERVICEACTION_SHORT_FORM_BLOCKID             0
-+#define  SERVICEACTION_SHORT_FORM_VENDOR_SPECIFIC     1
-+#define  SERVICEACTION_LONG_FORM                      6
-+#define  SERVICEACTION_EXTENDED_FORM                  8
-+
-+
-+typedef  struct   _SCSI_READ_POSITION_SHORT_BUFFER
-+{
-+   UCHAR    :1;
-+   UCHAR    PERR:1;
-+   UCHAR    BPU:1;
-+   UCHAR    :1;
-+   UCHAR    BYCU:1;
-+   UCHAR    BCU:1;
-+   UCHAR    EOP:1;
-+   UCHAR    BOP:1;
-+   UCHAR    Partition;
-+   UCHAR    Reserved1[2];
-+   UCHAR    FirstBlock[4];
-+   UCHAR    LastBlock[4];
-+   UCHAR    Reserved2;
-+   UCHAR    NumberBufferBlocks[3];
-+   UCHAR    NumberBufferBytes[4];
-+}  SCSI_READ_POSITION_SHORT_BUFFER, *PSCSI_READ_POSITION_SHORT_BUFFER;
-+
-+typedef  struct   _SCSI_READ_POSITION_LONG_BUFFER
-+{
-+   UCHAR    :2;
-+   UCHAR    BPU:1;
-+   UCHAR    MPU:1;
-+   UCHAR    :2;
-+   UCHAR    EOP:1;
-+   UCHAR    BOP:1;
-+   UCHAR    Reserved3[3];
-+   UCHAR    Partition[4];
-+   UCHAR    BlockNumber[8];
-+   UCHAR    FileNumber[8];
-+   UCHAR    SetNumber[8];
-+}  SCSI_READ_POSITION_LONG_BUFFER, *PSCSI_READ_POSITION_LONG_BUFFER;
-+
-+typedef  struct   _SCSI_READ_POSITION_EXTENDED_BUFFER
-+{
-+   UCHAR    :1;
-+   UCHAR    PERR:1;
-+   UCHAR    LOPU:1;
-+   UCHAR    :1;
-+   UCHAR    BYCU:1;
-+   UCHAR    LOCU:1;
-+   UCHAR    EOP:1;
-+   UCHAR    BOP:1;
-+   UCHAR    Partition;
-+   UCHAR    AdditionalLength[2];
-+   UCHAR    Reserved1;
-+   UCHAR    NumberBufferObjects[3];
-+   UCHAR    FirstLogicalObject[8];
-+   UCHAR    LastLogicalObject[8];
-+   UCHAR    NumberBufferObjectBytes[8];
-+}  SCSI_READ_POSITION_EXTENDED_BUFFER, *PSCSI_READ_POSITION_EXTENDED_BUFFER;
-+
-+typedef union _READ_POSITION_RESULT {
-+   SCSI_READ_POSITION_SHORT_BUFFER     ShortBuffer;
-+   SCSI_READ_POSITION_LONG_BUFFER      LongBuffer;
-+   SCSI_READ_POSITION_EXTENDED_BUFFER  ExtendedBuffer;
-+}  READ_POSITION_RESULT, *PREAD_POSITION_RESULT;
-+
-+DWORD GetTapePositionInfo(HANDLE hDevice, PTAPE_POSITION_INFO TapePositionInfo)
-+{
-+   PSCSI_PASS_THROUGH   ScsiPassThrough;
-+   BOOL                 bResult;
-+   DWORD                dwBytesReturned;
-+   int			pass;
-+
-+   const DWORD dwBufferSize = sizeof(SCSI_PASS_THROUGH) + sizeof(READ_POSITION_RESULT) + 28;
-+
-+   memset(TapePositionInfo, 0, sizeof(*TapePositionInfo));
-+
-+   ScsiPassThrough = (PSCSI_PASS_THROUGH)malloc(dwBufferSize);
-+
-+   for (pass = 0; pass < 2; pass++)
-+   {
-+      memset(ScsiPassThrough, 0, dwBufferSize);
-+
-+      ScsiPassThrough->Length = sizeof(SCSI_PASS_THROUGH);
-+
-+      ScsiPassThrough->CdbLength = 10;
-+      ScsiPassThrough->SenseInfoLength = 28;
-+      ScsiPassThrough->DataIn = 1;
-+      ScsiPassThrough->DataTransferLength = sizeof(SCSI_READ_POSITION_LONG_BUFFER);
-+      ScsiPassThrough->TimeOutValue = 1000;
-+      ScsiPassThrough->DataBufferOffset = sizeof(SCSI_PASS_THROUGH) + 28;
-+      ScsiPassThrough->SenseInfoOffset = sizeof(SCSI_PASS_THROUGH);
-+
-+      ScsiPassThrough->Cdb[0] = 0x34;  // READ POSITION
-+
-+      switch (pass)
-+      {
-+      case 0:
-+         ScsiPassThrough->Cdb[1] = SERVICEACTION_LONG_FORM;
-+         break;
-+
-+      case 1:
-+         ScsiPassThrough->Cdb[1] = SERVICEACTION_SHORT_FORM_BLOCKID;
-+         break;
-+      }
-+
-+      bResult = DeviceIoControl( hDevice, 
-+                                 IOCTL_SCSI_PASS_THROUGH, 
-+                                 ScsiPassThrough, sizeof(SCSI_PASS_THROUGH), 
-+                                 ScsiPassThrough, dwBufferSize, 
-+                                 &dwBytesReturned, 
-+                                 NULL);
-+
-+      if (bResult && dwBytesReturned >= (offsetof(SCSI_PASS_THROUGH, ScsiStatus) + sizeof(ScsiPassThrough->ScsiStatus))) {
-+         if (ScsiPassThrough->ScsiStatus == SCSISTAT_GOOD) {
-+            PREAD_POSITION_RESULT   pPosResult = (PREAD_POSITION_RESULT)((PUCHAR)ScsiPassThrough + ScsiPassThrough->DataBufferOffset);
-+
-+            switch (pass)
-+            {
-+            case 0:     // SERVICEACTION_LONG_FORM
-+               {
-+                  TapePositionInfo->AtPartitionStart = pPosResult->LongBuffer.BOP;
-+                  TapePositionInfo->AtPartitionEnd = pPosResult->LongBuffer.EOP;
-+
-+                  if (!TapePositionInfo->PartitionBlockValid) {
-+                     TapePositionInfo->PartitionBlockValid = !pPosResult->LongBuffer.BPU;
-+
-+                     if (TapePositionInfo->PartitionBlockValid) {
-+                        TapePositionInfo->Partition =   Read32BitUnsigned(pPosResult->LongBuffer.Partition);
-+                        TapePositionInfo->BlockNumber = Read64BitUnsigned(pPosResult->LongBuffer.BlockNumber);
-+                     }
-+                  }
-+
-+                  TapePositionInfo->FileSetValid = !pPosResult->LongBuffer.MPU;
-+                  if (TapePositionInfo->FileSetValid) {
-+                     TapePositionInfo->FileNumber =  Read64BitUnsigned(pPosResult->LongBuffer.FileNumber);
-+                     TapePositionInfo->SetNumber =   Read64BitUnsigned(pPosResult->LongBuffer.SetNumber);
-+                  }
-+               }
-+               break;
-+
-+            case 1:     // SERVICEACTION_SHORT_FORM_BLOCKID
-+               {
-+                  // pPosResult->ShortBuffer.PERR;
-+                  // pPosResult->ShortBuffer.BYCU;
-+                  // pPosResult->ShortBuffer.BCU;
-+                  TapePositionInfo->AtPartitionStart = pPosResult->ShortBuffer.BOP;
-+                  TapePositionInfo->AtPartitionEnd = pPosResult->ShortBuffer.EOP;
-+
-+                  if (!TapePositionInfo->PartitionBlockValid) {
-+                     TapePositionInfo->PartitionBlockValid = !pPosResult->ShortBuffer.BPU;
-+
-+                     if (TapePositionInfo->PartitionBlockValid) {
-+                        TapePositionInfo->Partition =   pPosResult->ShortBuffer.Partition;
-+                        TapePositionInfo->BlockNumber = Read32BitUnsigned(pPosResult->ShortBuffer.FirstBlock);
-+                     }
-+                  }
-+                  // Read32BitsUnsigned(pPosResult->ShortBuffer.LastBlock);
-+                  // Read24BitsUnsigned(pPosResult->ShortBuffer.NumberBufferBlocks);
-+                  // Read32BitsUnsigned(pPosResult->ShortBuffer.NumberBufferBytes);
-+               }
-+               break;
-+            }
-+         }
-+      }
-+   }
-+   free(ScsiPassThrough);
-+
-+   return NO_ERROR;
-+}
-+
-+DWORD GetDensityBlockSize(HANDLE hDevice, DWORD *pdwDensity, DWORD *pdwBlockSize)
-+{
-+   DWORD             dwBufferSize = sizeof(GET_MEDIA_TYPES) + 5 * sizeof(DEVICE_MEDIA_INFO);
-+   GET_MEDIA_TYPES * pGetMediaTypes = (GET_MEDIA_TYPES *)malloc(dwBufferSize);
-+   BOOL              bResult;
-+   DWORD             dwResult;
-+   DWORD             idxMedia;
-+
-+   if (pGetMediaTypes == NULL) {
-+      return ERROR_OUTOFMEMORY;
-+   }
-+
-+   do {
-+      DWORD          dwBytesReturned;
-+      
-+      bResult = DeviceIoControl( hDevice, 
-+                                 IOCTL_STORAGE_GET_MEDIA_TYPES_EX, 
-+                                 NULL, 0, 
-+                                 (LPVOID)pGetMediaTypes, dwBufferSize, 
-+                                 &dwBytesReturned, 
-+                                 NULL);
-+
-+      if (!bResult) {
-+         dwResult = GetLastError();
-+
-+         if (dwResult != ERROR_INSUFFICIENT_BUFFER) {
-+            free(pGetMediaTypes);
-+            return dwResult;
-+         }
-+
-+         dwBufferSize += 6 * sizeof(DEVICE_MEDIA_INFO);
-+
-+         GET_MEDIA_TYPES * pNewBuffer = (GET_MEDIA_TYPES *)realloc(pGetMediaTypes, dwBufferSize);
-+
-+         if (pNewBuffer != pGetMediaTypes) {
-+            free(pGetMediaTypes);
-+
-+            if (pNewBuffer == NULL) {
-+               return ERROR_OUTOFMEMORY;
-+            }
-+
-+            pGetMediaTypes = pNewBuffer;
-+         }
-+      }
-+   } while (!bResult);
-+
-+   if (pGetMediaTypes->DeviceType != FILE_DEVICE_TAPE) {
-+      free(pGetMediaTypes);
-+      return ERROR_BAD_DEVICE;
-+   }
-+
-+   for (idxMedia = 0; idxMedia < pGetMediaTypes->MediaInfoCount; idxMedia++) {
-+
-+      if (pGetMediaTypes->MediaInfo[idxMedia].DeviceSpecific.TapeInfo.MediaCharacteristics & MEDIA_CURRENTLY_MOUNTED) {
-+
-+         if (pGetMediaTypes->MediaInfo[idxMedia].DeviceSpecific.TapeInfo.BusType == BusTypeScsi) {
-+            *pdwDensity = pGetMediaTypes->MediaInfo[idxMedia].DeviceSpecific.TapeInfo.BusSpecificData.ScsiInformation.DensityCode;
-+         } else {
-+            *pdwDensity = 0;
-+         }
-+
-+         *pdwBlockSize = pGetMediaTypes->MediaInfo[idxMedia].DeviceSpecific.TapeInfo.CurrentBlockSize;
-+
-+         free(pGetMediaTypes);
-+
-+         return NO_ERROR;
-+      }
-+   }
-+
-+   free(pGetMediaTypes);
-+
-+   return ERROR_NO_MEDIA_IN_DRIVE;
-+}
-+
-+int tape_pos(int fd, struct mtpos *mt_pos)
-+{
-+   DWORD partition;
-+   DWORD offset;
-+   DWORD offsetHi;
-+   BOOL result;
-+
-+   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-+       TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE) {
-+      errno = EBADF;
-+      return -1;
-+   }
-+
-+   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-+
-+   result = GetTapePosition(pHandleInfo->OSHandle, TAPE_ABSOLUTE_BLOCK, &partition, &offset, &offsetHi);
-+   if (result == NO_ERROR) {
-+      mt_pos->mt_blkno = offset;
-+      return 0;
-+   }
-+
-+   return -1;
-+}
---- /dev/null	1969-12-31 16:00:00.000000000 -0800
-+++ mtops.h	2006-08-09 03:26:58.372973300 -0700
-@@ -0,0 +1,15 @@
-+int tape_open(const char *file, int flags, int mode);
-+int tape_read(int fd, void *buffer, unsigned int count);
-+int tape_write(int fd, const void *buffer, unsigned int count);
-+int tape_ioctl(int fd, unsigned long int request, ...);
-+int tape_close(int fd);
-+
-+typedef unsigned long	__kernel_daddr_t;
-+
-+#ifndef ENOMEDIUM
-+#define ENOMEDIUM	123
-+#endif
-+
-+#ifndef PATH_MAX
-+#define PATH_MAX	1024
-+#endif
---- /dev/null	1969-12-31 16:00:00.000000000 -0800
-+++ Makefile.msc	2006-08-09 04:00:53.970613100 -0700
-@@ -0,0 +1,20 @@
-+CC=	cl
-+CFLAGS=  /nologo /Ox /Gy /Zi /W3 /TP \
-+	/D_CRT_SECURE_NO_DEPRECATE
-+LDFLAGS= /link /DEBUG /INCREMENTAL:NO /OPT:NOREF /PDB:$*.pdb /OUT:$@
-+PREFIX= C:\
-+
-+all:	mt.exe
-+
-+mt.exe:	mt.c
-+	$(CC) $(CFLAGS) mt.c mtops.c $(LDFLAGS)
-+
-+stinit.exe:	stinit.c
-+	$(CC) $(CFLAGS) stinit.c $(LDFLAGS)
-+
-+install: mt.exe
-+	if not exist $(PREFIX)\bin\nul mkdir $(PREFIX)\bin
-+	!copy /y $** $(PREFIX)\bin
-+
-+clean:
-+	del /f *~ *.obj mt.exe stinit.exe
diff --git a/src/win32/patches/mtx-msvc1.patch b/src/win32/patches/mtx-msvc1.patch
deleted file mode 100644
index c4712c9..0000000
--- a/src/win32/patches/mtx-msvc1.patch
+++ /dev/null
@@ -1,75 +0,0 @@
---- /dev/null	1969-12-31 16:00:00.000000000 -0800
-+++ Makefile.msc	2006-08-09 02:52:26.191999700 -0700
-@@ -0,0 +1,72 @@
-+# WARNING -- THIS HAS BEEN RE-WRITTEN TO USE MICROSOFT NMAKE.
-+#
-+# Valid targets:
-+#  Microsoft Visual Studio
-+#
-+# Makefile changes by Lars Kellogg-Stedman for better integration with
-+# GNU Autoconf. 
-+
-+# Version # for 'make dist'...
-+VERSION=1.3.9
-+PREFIX=C:\
-+
-+BINS = mtx.exe tapeinfo.exe loaderinfo.exe scsitape.exe nsmhack.exe
-+
-+CC	= cl
-+
-+CFLAGS	= /nologo /Ox /Gy /Zi /W3 \
-+	-D_CRT_SECURE_NO_DEPRECATE \
-+	-DVERSION="\"$(VERSION)\"" \
-+	-DLONG_PRINT_REQUEST_SENSE=1
-+
-+LINK	= link
-+LDFLAGS	= /nologo /DEBUG /INCREMENTAL:NO /OPT:NOREF /PDB:$*.pdb /OUT:$@
-+LIBS	= 
-+
-+all:	$(BINS)
-+
-+install: $(BINS)
-+	-mkdir $(PREFIX)\bin
-+	!copy /y $** $(PREFIX)\bin
-+
-+clean:
-+	-del /f  *.obj *~
-+	-del /f $(BINS)
-+	-del /f mam2debug.exe mam2debug2.exe
-+
-+loaderinfo.exe: loaderinfo.obj mtxl.obj mtxl.h mtx.h
-+	$(LINK) $(LDFLAGS) loaderinfo.obj mtxl.obj $(LIBS)
-+
-+nsmhack.exe: nsmhack.obj mtxl.obj
-+	$(LINK) $(LDFLAGS) nsmhack.obj mtxl.obj $(LIBS)
-+
-+mtx.exe: mtx.obj mtxl.obj mtxl.h mtx.h
-+	$(LINK) $(LDFLAGS) mtx.obj mtxl.obj $(LIBS)
-+
-+mam2debug.exe: mtxl.obj mam2debug.obj mtx.h
-+	$(LINK) $(LDFLAGS) mtxl.obj mam2debug.obj $(LIBS)
-+
-+tapeinfo.exe: tapeinfo.obj mtxl.obj mtx.h mtxl.h
-+	$(LINK) $(LDFLAGS) tapeinfo.obj mtxl.obj $(LIBS)
-+
-+mam2debug2.exe: mtxl.obj mam2debug2.obj mtx.h
-+	$(LINK) $(LDFLAGS) mtxl.obj mam2debug2.obj $(LIBS)
-+
-+scsitape.exe: scsitape.obj mtxl.obj mtxl.h mtx.h
-+	$(LINK) $(LDFLAGS) scsitape.obj mtxl.obj $(LIBS)
-+
-+scsitape.obj: scsitape.c mtx.h mtxl.h
-+
-+loaderinfo.obj: loaderinfo.c mtx.h mtxl.h
-+
-+tapeinfo.obj: tapeinfo.c mtx.h mtxl.h
-+
-+mam2debug.obj: mam2debug.c mtx.h mtxl.h
-+
-+mam2debug2.obj: mam2debug2.c mtx.h mtxl.h
-+
-+mtx.obj: mtx.c mtx.h mtxl.h
-+
-+mtxl.obj: mtxl.c mtx.h mtxl.h scsi_linux.c scsi_win32.c
-+
-+nsmhack.obj: nsmhack.c mtxl.h mtx.h
diff --git a/src/win32/patches/mtx-msvc2.patch b/src/win32/patches/mtx-msvc2.patch
deleted file mode 100644
index e8261e2..0000000
--- a/src/win32/patches/mtx-msvc2.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- /dev/null	1969-12-31 16:00:00.000000000 -0800
-+++ msvc/config.h	2006-05-26 15:10:34.558337600 -0700
-@@ -0,0 +1,37 @@
-+/* config.h.  Generated by configure.  */
-+/* Copyright 2001 Enhanced Software Technologies Inc.
-+ * Released under GNU General Public License V2 or Above
-+ * See http://www.gnu.org for more information about the terms of
-+ * the GNU General Public License.
-+ * $Date: 2006-08-12 16:18:24 -0700 (Sat, 12 Aug 2006) $
-+ * $Revision: 3282 $
-+ */
-+
-+#ifndef CONFIG_H
-+#define CONFIG_H 1
-+
-+/* autoconf changes these. */
-+#define HAVE_STRING_H 1
-+#define HAVE_UNISTD_H 0
-+#define HAVE_STDLIB_H 1
-+#define HAVE_STDARG_H 1
-+#define HAVE_SCSI_SCSI_H 0
-+#define HAVE_SCSI_SCSI_IOCTL_H 0
-+#define HAVE_SCSI_SG_H 0
-+#define HAVE_SYS_GSCDDS_H 0
-+#define HAVE_CAMLIB_H 0
-+#define HAVE_SYS_SCSI_IMPL_USCSI_H 0
-+#define HAVE_SYS_SCSI_CTL_H 0
-+#define HAVE_DSLIB_H 0
-+#define HAVE_DU_DEFS_H 0
-+#define HAVE_SYS_STAT_H 1
-+#define HAVE_SYS_TYPES_H 1
-+#define HAVE_FCNTL_H 1
-+#define HAVE_SYS_IOCTL_H 0
-+#define HAVE_SYS_MTIO_H 0
-+#define HAVE_DDK_NTDDSCSI_H 0
-+
-+#define WORDS_BIGENDIAN 0
-+
-+#endif
-+
diff --git a/src/win32/patches/mtx.patch b/src/win32/patches/mtx.patch
deleted file mode 100644
index d22e261..0000000
--- a/src/win32/patches/mtx.patch
+++ /dev/null
@@ -1,1576 +0,0 @@
-Index: README.win32
-===================================================================
---- /dev/null	Sat Jul 29 14:54:52 2006
-+++ README.win32	Sat Jul 29 14:46:45 2006
-@@ -0,0 +1,22 @@
-+CHANGES FROM UNIX
-+=================
-+
-+The only difference is in the naming of devices.  On Linux the changer is 
-+accessed using /dev/sg<N>, on Windows you use Changer<N>.
-+
-+On Linux the tape drive is referenced using /dev/nst<N>, on Windows you use
-+Tape<N>.
-+
-+There is one exception in the case where there isn't a driver loaded for the
-+device.  This is usually only the case on Windows 2000 or if the Windows XP or
-+Windows Server 2003 system supplied driver has been disabled.
-+
-+In the case where there is no driver loaded you can access the device directly 
-+through the SCSI driver using the following notation:
-+
-+	<port>:<bus>:<target>:<lun>
-+	
-+		Port is the adapter number
-+		Bus is the SCSI bus number relative to the adapter
-+		Target is the SCSI device's target ID
-+		LUN is the SCSI device's logical unit number
-Index: scsi_win32.c
-===================================================================
---- /dev/null	Sat Jul 29 14:55:00 2006
-+++ scsi_win32.c	Sat Jul 29 14:54:08 2006
-@@ -0,0 +1,353 @@
-+/* Copyright 2006 Robert Nelson <robertn at the-nelsons.org>
-+
-+$Date: 2006-07-30 06:32:36 -0700 (Sun, 30 Jul 2006) $
-+$Revision: 3200 $
-+
-+  This program is free software; you may redistribute and/or modify it under
-+  the terms of the GNU General Public License Version 2 as published by the
-+  Free Software Foundation.
-+
-+  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 complete details.
-+
-+*/
-+
-+/* These are the SCSI commands for Microsoft Windows.  This is derived from
-+ * the file scsi_linux.c substituting Windows specific emulation of the Linux
-+ * behaviour.
-+ */
-+
-+#include <stdio.h>
-+#include <windows.h>
-+
-+#ifdef _MSC_VER
-+#include <ntddscsi.h>
-+#else
-+#include <ddk/ntddscsi.h>
-+#endif
-+
-+#ifndef HZ
-+#define HZ 1000
-+#endif
-+
-+/* These are copied out of BRU 16.1, with all the boolean masks changed
-+ * to our bitmasks.
-+*/
-+#define S_NO_SENSE(s) ((s)->SenseKey == 0x0)
-+#define S_RECOVERED_ERROR(s) ((s)->SenseKey == 0x1)
-+
-+#define S_NOT_READY(s) ((s)->SenseKey == 0x2)
-+#define S_MEDIUM_ERROR(s) ((s)->SenseKey == 0x3)
-+#define S_HARDWARE_ERROR(s) ((s)->SenseKey == 0x4)
-+#define S_UNIT_ATTENTION(s) ((s)->SenseKey == 0x6)
-+#define S_BLANK_CHECK(s) ((s)->SenseKey == 0x8)
-+#define S_VOLUME_OVERFLOW(s) ((s)->SenseKey == 0xd)
-+
-+#define DEFAULT_TIMEOUT 3 * 60  /* 3 minutes here */
-+
-+/* Sigh, the T-10 SSC spec says all of the following is needed to
-+ * detect a short read while in variable block mode, and that even
-+ * though we got a BLANK_CHECK or MEDIUM_ERROR, it's still a valid read.
-+ */
-+
-+#define HIT_FILEMARK(s) (S_NO_SENSE((s)) && (s)->Filemark && (s)->Valid)
-+#define SHORT_READ(s) (S_NO_SENSE((s)) && (s)->ILI && (s)->Valid &&  (s)->AdditionalSenseCode==0  && (s)->AdditionalSenseCodeQualifier==0)
-+#define HIT_EOD(s) (S_BLANK_CHECK((s)) && (s)->Valid)
-+#define HIT_EOP(s) (S_MEDIUM_ERROR((s)) && (s)->EOM && (s)->Valid)
-+#define HIT_EOM(s) ((s)->EOM && (s)->Valid)
-+
-+#define STILL_A_VALID_READ(s) (HIT_FILEMARK(s) || SHORT_READ(s) || HIT_EOD(s) || HIT_EOP(s) || HIT_EOM(s))
-+
-+#define SCSI_DEFAULT_TIMEOUT  60    /* 1 minute */
-+#define SCSI_MAX_TIMEOUT      108   /* 1 minute 48 seconds */
-+
-+typedef	struct	_HANDLE_ENTRY {
-+  HANDLE  hDevice;
-+  UCHAR   PortId;
-+  UCHAR   PathId;
-+  UCHAR   TargetId;
-+  UCHAR   Lun;
-+} HANDLE_ENTRY, *PHANDLE_ENTRY;
-+
-+PHANDLE_ENTRY HandleTable = NULL;
-+int           nEntries = 0;
-+
-+DEVICE_TYPE SCSI_OpenDevice(char *DeviceName)
-+{
-+  int   DeviceIndex;
-+  TCHAR szDevicePath[256];
-+
-+  int   nColons = 0;
-+  int   index;
-+
-+  int   port, path, target, lun;
-+
-+  for (DeviceIndex = 0; DeviceIndex < nEntries; DeviceIndex++)
-+  {
-+    if (HandleTable[DeviceIndex].hDevice == INVALID_HANDLE_VALUE)
-+      break;
-+  }
-+
-+  if (DeviceIndex >= nEntries)
-+  {
-+    PHANDLE_ENTRY pNewTable;
-+
-+    nEntries += 4;
-+
-+    if (HandleTable == NULL)
-+    {
-+      pNewTable = (PHANDLE_ENTRY)malloc(nEntries * sizeof(HANDLE_ENTRY));
-+    }
-+    else
-+    {
-+      pNewTable = (PHANDLE_ENTRY)realloc(HandleTable, nEntries * sizeof(HANDLE_ENTRY));
-+    }
-+
-+    if (pNewTable == NULL)
-+    {
-+      FatalError("cannot open SCSI device '%s' - %m\n", DeviceName);
-+    }
-+
-+    HandleTable = pNewTable;
-+  }
-+
-+  for (index = 0; DeviceName[index] != '\0'; index++)
-+  {
-+    if (DeviceName[index] == ':')
-+      nColons++;
-+    else if (DeviceName[index] < '0' || DeviceName[index] > '9')
-+      break;
-+  }
-+
-+  if (DeviceName[index] == '\0' && nColons == 3 && 
-+      sscanf(DeviceName, "%d:%d:%d:%d", &port, &path, &target, &lun) == 4) {
-+
-+    HandleTable[DeviceIndex].PortId = (UCHAR)port;
-+    HandleTable[DeviceIndex].PathId = (UCHAR)path;
-+    HandleTable[DeviceIndex].TargetId = (UCHAR)target;
-+    HandleTable[DeviceIndex].Lun = (UCHAR)lun;
-+
-+    sprintf(szDevicePath, "\\\\.\\scsi%d:", port);
-+  }
-+  else 
-+  {
-+    int nPrefixLength = 0;
-+
-+    if (DeviceName[0] != '\\') {
-+      memcpy(szDevicePath, "\\\\.\\", 4 * sizeof(TCHAR));
-+      nPrefixLength = 4;
-+    }
-+
-+    HandleTable[DeviceIndex].PortId = 0;
-+    HandleTable[DeviceIndex].PathId = 0;
-+    HandleTable[DeviceIndex].TargetId = 0;
-+    HandleTable[DeviceIndex].Lun = 0;
-+
-+    strncpy( &szDevicePath[nPrefixLength], 
-+              DeviceName, 
-+              sizeof(szDevicePath) / sizeof(TCHAR) - nPrefixLength - 1);
-+    
-+    szDevicePath[sizeof(szDevicePath) / sizeof(TCHAR) - 1] = '\0';
-+  }
-+
-+  HandleTable[DeviceIndex].hDevice = CreateFile(szDevicePath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
-+
-+  if (HandleTable[DeviceIndex].hDevice == INVALID_HANDLE_VALUE)
-+  {
-+    DWORD dwError = GetLastError();
-+
-+#if DEBUG
-+    LPSTR lpszMessage;
-+
-+    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, 0, (LPSTR)&lpszMessage, 0, NULL);
-+    fputs(lpszMessage, stderr);
-+#endif
-+
-+    switch (dwError) {
-+    case ERROR_FILE_NOT_FOUND:
-+    case ERROR_PATH_NOT_FOUND:
-+      errno = ENOENT;
-+      break;
-+
-+    case ERROR_TOO_MANY_OPEN_FILES:
-+      errno =  EMFILE;
-+      break;
-+
-+    default:
-+    case ERROR_ACCESS_DENIED:
-+    case ERROR_SHARING_VIOLATION:
-+    case ERROR_LOCK_VIOLATION:
-+    case ERROR_INVALID_NAME:
-+      errno = EACCES;
-+      break;
-+
-+    case ERROR_FILE_EXISTS:
-+      errno = EEXIST;
-+      break;
-+
-+    case ERROR_INVALID_PARAMETER:
-+      errno = EINVAL;
-+      break;
-+    }
-+
-+    FatalError("cannot open SCSI device '%s' - %m\n", DeviceName);
-+  }
-+
-+  return DeviceIndex;
-+}
-+
-+static int scsi_timeout = SCSI_DEFAULT_TIMEOUT;
-+
-+void SCSI_Set_Timeout(int secs)
-+{
-+  if (secs > SCSI_MAX_TIMEOUT) {
-+    secs = SCSI_MAX_TIMEOUT;
-+  }
-+  scsi_timeout = secs * HZ;
-+}
-+ 
-+void SCSI_Default_Timeout(void)
-+{
-+  scsi_timeout = SCSI_DEFAULT_TIMEOUT * HZ;
-+}
-+
-+void SCSI_CloseDevice(char *DeviceName, DEVICE_TYPE DeviceFD)
-+{
-+  if (DeviceFD < nEntries)
-+  {
-+    CloseHandle(HandleTable[DeviceFD].hDevice);
-+    HandleTable[DeviceFD].hDevice = INVALID_HANDLE_VALUE;
-+  }
-+  else
-+  {
-+    errno = EBADF;
-+    FatalError("cannot close SCSI device '%s' - %m\n", DeviceName);
-+  }
-+}
-+
-+
-+/* Added by Eric Green <eric at estinc.com> to deal with burping
-+ * Seagate autoloader (hopefully!). 
-+ */
-+/* Get the SCSI ID and LUN... */
-+scsi_id_t *SCSI_GetIDLun(DEVICE_TYPE fd) {
-+  scsi_id_t *          retval;
-+
-+  SCSI_ADDRESS         ScsiAddress;
-+  BOOL                 bResult;
-+  DWORD                dwBytesReturned;
-+
-+  if (fd < nEntries) {
-+    retval = (scsi_id_t *)xmalloc(sizeof(scsi_id_t));
-+    retval->id = HandleTable[fd].TargetId;
-+    retval->lun = HandleTable[fd].Lun;
-+
-+#ifdef DEBUG
-+    fprintf(stderr,"SCSI:ID=%d LUN=%d\n", retval->id, retval->lun);
-+#endif
-+    return retval;
-+  } else {
-+    errno = EBADF;
-+    FatalError("cannot close SCSI device - %m\n");
-+  }
-+
-+  memset(&ScsiAddress, 0, sizeof(ScsiAddress));
-+
-+  ScsiAddress.Length = sizeof(ScsiAddress);
-+
-+  bResult = DeviceIoControl(HandleTable[fd].hDevice, 
-+                            IOCTL_SCSI_GET_ADDRESS, 
-+                            &ScsiAddress, sizeof(ScsiAddress), 
-+                            &ScsiAddress, sizeof(ScsiAddress), 
-+                            &dwBytesReturned, 
-+                            NULL);
-+   
-+  if (!bResult) {
-+    return NULL;
-+  }
-+
-+  retval = (scsi_id_t *)xmalloc(sizeof(scsi_id_t));
-+  retval->id = ScsiAddress.TargetId;
-+  retval->lun = ScsiAddress.Lun;
-+
-+#ifdef DEBUG
-+  fprintf(stderr,"SCSI:ID=%d LUN=%d\n",retval->id,retval->lun);
-+#endif
-+  return retval;
-+}
-+  
-+int SCSI_ExecuteCommand(DEVICE_TYPE DeviceFD,
-+                        Direction_T Direction,
-+                        CDB_T *CDB,
-+                        int CDB_Length,
-+                        void *DataBuffer,
-+                        int DataBufferLength,
-+                        RequestSense_T *RequestSense)
-+{
-+  PSCSI_PASS_THROUGH_DIRECT ScsiPassThrough;
-+
-+  const DWORD dwBufferSize = sizeof(SCSI_PASS_THROUGH_DIRECT) + sizeof(RequestSense_T);
-+  BOOL        bResult;
-+  DWORD       dwBytesReturned;
-+
-+  if (DeviceFD >= nEntries || HandleTable[DeviceFD].hDevice == INVALID_HANDLE_VALUE)
-+  {
-+    errno = EBADF;
-+    return -1;
-+  }
-+
-+  ScsiPassThrough = (PSCSI_PASS_THROUGH_DIRECT)malloc(dwBufferSize);
-+
-+  memset(ScsiPassThrough, 0, dwBufferSize);
-+
-+  ScsiPassThrough->Length = sizeof(SCSI_PASS_THROUGH_DIRECT);
-+
-+  ScsiPassThrough->PathId = HandleTable[DeviceFD].PathId;
-+  ScsiPassThrough->TargetId = HandleTable[DeviceFD].TargetId;
-+  ScsiPassThrough->Lun = HandleTable[DeviceFD].Lun;
-+  ScsiPassThrough->CdbLength = (UCHAR)CDB_Length;
-+  ScsiPassThrough->SenseInfoLength = sizeof(RequestSense_T);
-+  ScsiPassThrough->DataIn = Direction == Input;
-+  ScsiPassThrough->DataTransferLength = DataBufferLength;
-+  ScsiPassThrough->TimeOutValue = scsi_timeout;
-+  ScsiPassThrough->DataBuffer = DataBuffer;
-+  ScsiPassThrough->SenseInfoOffset = sizeof(SCSI_PASS_THROUGH_DIRECT);
-+
-+  memcpy(ScsiPassThrough->Cdb, CDB, CDB_Length);
-+  dwBytesReturned = 0;
-+
-+  bResult = DeviceIoControl(HandleTable[DeviceFD].hDevice, 
-+                            IOCTL_SCSI_PASS_THROUGH_DIRECT, 
-+                            ScsiPassThrough, sizeof(SCSI_PASS_THROUGH_DIRECT), 
-+                            ScsiPassThrough, dwBufferSize, 
-+                            &dwBytesReturned, 
-+                            NULL);
-+  if (bResult) {
-+    if (ScsiPassThrough->ScsiStatus != 0) {
-+      memcpy(RequestSense, &ScsiPassThrough[1], sizeof(RequestSense_T));
-+#if DEBUG
-+      fprintf(stderr, "Command failed - ScsiStatus = %d\n", ScsiPassThrough->ScsiStatus);
-+      PrintRequestSense(RequestSense);
-+#endif
-+      bResult = false;
-+    }
-+  }
-+  else
-+  {
-+#if DEBUG
-+    DWORD   dwError = GetLastError();
-+    LPSTR   lpszMessage;
-+
-+    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, 0, (LPSTR)&lpszMessage, 0, NULL);
-+    fputs(lpszMessage, stderr);
-+#endif
-+
-+    memset(RequestSense, 0, sizeof(RequestSense_T));
-+  }
-+
-+  free(ScsiPassThrough);
-+
-+  return bResult ? 0 : -1;
-+}
-Index: tapeinfo.c
-===================================================================
---- tapeinfo.c	(revision 139)
-+++ tapeinfo.c	(revision 147)
-@@ -211,25 +211,18 @@
-   unsigned int partition1_size;
- } TapeCapacity;
- 
-+#if defined(DEBUG)
- /* DEBUG */
- static void dump_data(unsigned char *data, int len) {
--  int i;
-   if (!len) {
-     fprintf(stderr,"**NO DATA**\n");
-     return;
-   }
- 
--  for (i=0;i<len;i++) {
--    if ((i % 10) == 0) {
--      if (i) {
--	fprintf(stderr,"\n");
--      }
--      fprintf(stderr,"DATA:");
--    }
--    fprintf(stderr,"%02x ",(unsigned int)*data++);
--  }
--  fprintf(stderr,"\n");
-+  fprintf(stderr,"DATA:");
-+  PrintHex(1, data, len);
- }
-+#endif
- 
- 
- 
-@@ -243,7 +236,7 @@
-   
-   unsigned char buffer[TAPEALERT_SIZE]; /* Overkill, but ... */
- 
--  slow_bzero(buffer,TAPEALERT_SIZE); /*zero it... */
-+  slow_bzero((char *)buffer,TAPEALERT_SIZE); /*zero it... */
- 
-   /* now to create the CDB block: */
-   CDB[0]=0x4d;   /* Log Sense */
-@@ -325,7 +318,7 @@
-   unsigned char buffer[TAPEALERT_SIZE];
-   unsigned char *walkptr;
- 
--  slow_bzero(buffer,TAPEALERT_SIZE); /*zero it... */
-+  slow_bzero((char *)buffer,TAPEALERT_SIZE); /*zero it... */
- 
-   /* now to create the CDB block: */
-   CDB[0]=0x4d;   /* Log Sense */
-@@ -676,7 +669,7 @@
-      the sernum field, and bytes 4 onward are the serial #. */
-   
-   lim=(int)buffer[3];
--  bufptr= &(buffer[4]);
-+  bufptr=(char *)&(buffer[4]);
-   
-   printf("SerialNumber: '");
-   for (i=0;i<lim;i++) {
-@@ -702,7 +695,7 @@
-   CDB[4]=0;
-   CDB[5]=0; 
- 
--  slow_bzero((unsigned char *)&sense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&sense,sizeof(RequestSense_T));
-   if (SCSI_ExecuteCommand(fd,Input,&CDB,6,buffer,6,&sense)!=0){
-     return;
-   }
-@@ -735,7 +728,7 @@
-   CDB[8]=0;
-   CDB[9]=0;
- 
--  slow_bzero((unsigned char *)&sense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&sense,sizeof(RequestSense_T));
- 
-   /* set the timeout: */
-   SCSI_Set_Timeout(2); /* set timeout to 2 seconds! */
-@@ -789,7 +782,7 @@
-   CDB[4]=0;
-   CDB[5]=0; 
- 
--  slow_bzero((unsigned char *)&sense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&sense,sizeof(RequestSense_T));
-   if (SCSI_ExecuteCommand(fd,Input,&CDB,6,buffer,0,&sense)!=0){
-     printf("Ready: no\n");
-     return 0;
-@@ -817,7 +810,7 @@
-   CDB[5]=0; 
- 
-   /* we really don't care if this command works or not, sigh.  */
--  slow_bzero((unsigned char *)&sense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&sense,sizeof(RequestSense_T));
-   if (SCSI_ExecuteCommand(fd,Input,&CDB,6,buffer,0,&sense)!=0){
-     return 1;
-   }
-Index: mtx.c
-===================================================================
---- mtx.c	(revision 139)
-+++ mtx.c	(revision 147)
-@@ -623,7 +623,7 @@
- 	       "illegal <drive-number> argument '%d' to 'unload' command\n",
- 	       arg2);
-   }
--  if (ElementStatus->DataTransferElementFull[arg2] < 0 ) {
-+  if (!ElementStatus->DataTransferElementFull[arg2]) {
-     FatalError("Data Transfer Element %d is Empty\n", arg2);
-   }    
-   /* Now see if something already lives where  we wanna go... */
-@@ -715,7 +715,7 @@
-     }
-     ElementStatus = ReadElementStatus(MediumChangerFD,&RequestSense,inquiry_info,&SCSI_Flags);
-     if (!ElementStatus) {
--      PrintRequestSense(&RequestSense);                   
-+      PrintRequestSense(&RequestSense);
-       FatalError("READ ELEMENT STATUS Command Failed\n"); 
-     }
-   }
-@@ -813,9 +813,6 @@
- 
-   argv0=argv[0];
- 
--   
--
--
-   parse_args();  /* also executes them as it sees them, sigh. */
- 
- #ifndef VMS
-Index: scsitape.c
-===================================================================
---- scsitape.c	(revision 139)
-+++ scsitape.c	(revision 147)
-@@ -41,11 +41,26 @@
- #include "mtx.h"
- #include "mtxl.h"
- 
-+#if HAVE_UNISTD_H
- #include <unistd.h>
-+#endif
-+
-+#if HAVE_SYS_TYPES_H
- #include <sys/types.h>
-+#endif
-+
-+#if HAVE_SYS_IOCTL_H
- #include <sys/ioctl.h>
-+#endif
-+
-+#if HAVE_SYS_MTIO_H
- #include <sys/mtio.h> /* will try issuing some ioctls for Solaris, sigh. */
-+#endif
- 
-+#ifdef _MSC_VER
-+#include <io.h>
-+#endif
-+
- void Usage(void) {
-   FatalError("Usage: scsitape -f <generic-device> <command> where <command> is:\n setblk <n> | fsf <n> | bsf <n> | eod | rewind | eject | mark <n> |\n  seek <n> | read [<blksize> [<numblocks]] | write [<blocksize>] \n");
- }
-@@ -54,7 +69,7 @@
- static int arg[4];  /* the argument for the command, sigh. */
- 
- /* the device handle we're operating upon, sigh. */
--static unsigned char *device;  /* the text of the device thingy. */
-+static char *device;  /* the text of the device thingy. */
- static DEVICE_TYPE MediumChangerFD = (DEVICE_TYPE) 0;
- 
- 
-@@ -96,43 +111,7 @@
- 
- char *argv0;
- 
--/* A table for printing out the peripheral device type as ASCII. */ 
--static char *PeripheralDeviceType[32] = {
--  "Disk Drive",
--  "Tape Drive",
--  "Printer",
--  "Processor",
--  "Write-once",
--  "CD-ROM",
--  "Scanner",
--  "Optical",
--  "Medium Changer",
--  "Communications",
--  "ASC IT8",
--  "ASC IT8",
--  "RAID Array",
--  "Enclosure Services",
--  "OCR/W",
--  "Bridging Expander", /* 0x10 */
--  "Reserved",  /* 0x11 */
--  "Reserved", /* 0x12 */
--  "Reserved",  /* 0x13 */
--  "Reserved",  /* 0x14 */
--  "Reserved",  /* 0x15 */
--  "Reserved",  /* 0x16 */
--  "Reserved",  /* 0x17 */
--  "Reserved",  /* 0x18 */
--  "Reserved",  /* 0x19 */
--  "Reserved",  /* 0x1a */
--  "Reserved",  /* 0x1b */
--  "Reserved",  /* 0x1c */
--  "Reserved",  /* 0x1d */
--  "Reserved",  /* 0x1e */
--  "Unknown"    /* 0x1f */
--};
- 
--
--
- /* open_device() -- set the 'fh' variable.... */
- void open_device(void) {
- 
-@@ -301,7 +280,7 @@
-   CDB[5]=0; 
- 
-   /* we really don't care if this command works or not, sigh.  */
--  slow_bzero((unsigned char *)&RequestSense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&RequestSense,sizeof(RequestSense_T));
-   if (SCSI_ExecuteCommand(MediumChangerFD,Input,&CDB,6,buffer,0,&RequestSense)!=0){
-     PrintRequestSense(&RequestSense);
-     return 1;
-@@ -324,7 +303,7 @@
-   CDB[5]=0; 
- 
-   /* we really don't care if this command works or not, sigh.  */
--  slow_bzero((unsigned char *)&sense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&sense,sizeof(RequestSense_T));
-   if (SCSI_ExecuteCommand(MediumChangerFD,Input,&CDB,6,buffer,0,&sense)!=0){
-     PrintRequestSense(&sense);
-     return 1;
-@@ -349,7 +328,7 @@
-   CDB[5]=0; 
- 
-   /* we really don't care if this command works or not, sigh.  */
--  slow_bzero((unsigned char *)&sense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&sense,sizeof(RequestSense_T));
-   if (SCSI_ExecuteCommand(MediumChangerFD,Input,&CDB,6,buffer,0,&sense)!=0){
-     PrintRequestSense(&sense);
-     return 1;
-@@ -392,7 +371,7 @@
-   CDB[5]=0; 
- 
-   /* we really don't care if this command works or not, sigh.  */
--  slow_bzero((unsigned char *)&sense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&sense,sizeof(RequestSense_T));
-   if (SCSI_ExecuteCommand(MediumChangerFD,Input,&CDB,6,buffer,0,&sense)!=0){
-     PrintRequestSense(&sense);
-     return 1;
-@@ -422,7 +401,7 @@
-   CDB[9]=0; 
- 
-   /* we really don't care if this command works or not, sigh.  */
--  slow_bzero((unsigned char *)&sense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&sense,sizeof(RequestSense_T));
-   if (SCSI_ExecuteCommand(MediumChangerFD,Input,&CDB,10,buffer,0,&sense)!=0){
-     PrintRequestSense(&sense);
-     return 1;
-@@ -462,7 +441,7 @@
- static int S_setblk(void) {
-   RequestSense_T sense;
-   CDB_T CDB;
--  unsigned char buffer[12];
-+  char buffer[12];
-   unsigned int count = (unsigned int) arg1;
- 
-   
-@@ -473,7 +452,7 @@
-   CDB[4]=12; /* length of data */
-   CDB[5]=0;
- 
--  slow_bzero((unsigned char *)&sense,sizeof(RequestSense_T));
-+  slow_bzero((char *)&sense,sizeof(RequestSense_T));
-   slow_bzero(buffer,12);
- 
-   /* Now to set the mode page header: */
-@@ -679,9 +658,9 @@
- 
- /* S_write is not implemented yet! */
- static int S_write(void) {
--  unsigned char *buffer; /* the buffer we're gonna read/write out of. */
-+  char *buffer; /* the buffer we're gonna read/write out of. */
-   int buffersize;
--  int len; /* the length of the data in the buffer */
-+  unsigned int len; /* the length of the data in the buffer */
-   int blocksize=arg[0];
-   int numblocks=arg[1];
-   int varsize=0; /* variable size block flag */
-@@ -755,9 +734,9 @@
- 
- 
- static int S_read(void) {
--  unsigned char *buffer; /* the buffer we're going to be reading out of */
-+  char *buffer; /* the buffer we're going to be reading out of */
-   int buffersize;
--  int len; /* the length of the data in the buffer */
-+  unsigned int len; /* the length of the data in the buffer */
-   int blocksize=arg[0];
-   int numblocks=arg[1];
-   int varsize=0; /* variable size block flag. */
-Index: mtx.h
-===================================================================
---- mtx.h	(revision 139)
-+++ mtx.h	(working copy)
-@@ -18,7 +18,11 @@
- #include "[.vms]defs.h"
- #else /* all the Unix stuff:  */
- 
-+#ifdef _MSC_VER
-+#include "msvc/config.h"  /* all the autoconf stuff. */
-+#else
- #include "config.h"  /* all the autoconf stuff. */
-+#endif
- 
- /* all the general Unix includes: */
- 
-@@ -59,7 +63,7 @@
- #  include <sys/ioctl.h>
- #endif
- 
--/* Now greately modified to use GNU Autoconf stuff: */
-+/* Now greatly modified to use GNU Autoconf stuff: */
- /* If we use the 'sg' interface, like Linux, do this: */
- #if HAVE_SCSI_SG_H
- #  include <scsi/scsi.h>
-@@ -69,6 +73,27 @@
- #  define HAVE_GET_ID_LUN 1  /* signal that we have it... */
- #endif
- 
-+/* Windows Native programs built using MinGW */
-+#if HAVE_DDK_NTDDSCSI_H
-+#  include <windows.h>
-+#  include <ddk/ntddscsi.h>
-+#  undef DEVICE_TYPE
-+
-+typedef int DEVICE_TYPE;
-+#  define HAVE_GET_ID_LUN 1  /* signal that we have it... */
-+#endif
-+
-+/* Windows Native programs built using Microsoft Visual C */
-+#ifdef _MSC_VER
-+#  include <windows.h>
-+#  include <winioctl.h>
-+#  include <ntddscsi.h>
-+#  undef DEVICE_TYPE
-+
-+typedef int DEVICE_TYPE;
-+#  define HAVE_GET_ID_LUN 1  /* signal that we have it... */
-+#endif
-+
- /* The 'cam' interface, like FreeBSD: */
- #if HAVE_CAMLIB_H
- #  include <camlib.h> /* easy (?) access to the CAM user library. */
-@@ -176,10 +201,23 @@
-   unsigned char invert2; /* used for EXCHANGE command, sigh. */
- } SCSI_Flags_T;
- 
-+#ifdef _MSC_VER
-+typedef unsigned char boolean;
-+
-+#define false   0
-+#define true    1
-+
-+
-+typedef unsigned char Direction_T;
-+
-+#define Input   0
-+#define Output  1
-+#else
- typedef enum { false, true } boolean;
- 
- 
- typedef enum { Input, Output } Direction_T;
-+#endif
- 
- 
- typedef unsigned char CDB_T[12];
-@@ -354,6 +392,15 @@
- } ElementModeSense_T;
- 
- 
-+#ifdef _MSC_VER
-+typedef char ElementTypeCode_T;
-+
-+#define AllElementTypes	        0
-+#define MediumTransportElement  1
-+#define StorageElement	        2
-+#define ImportExportElement     3
-+#define DataTransferElement     4
-+#else
- typedef enum ElementTypeCode
- {
-   AllElementTypes =		0,
-@@ -363,6 +410,7 @@
-   DataTransferElement =		4
- }
- ElementTypeCode_T;
-+#endif
- 
- 
- typedef struct ElementStatusDataHeader
-Index: nsmhack.c
-===================================================================
---- nsmhack.c	(revision 139)
-+++ nsmhack.c	(revision 147)
-@@ -33,13 +33,13 @@
- 
- #include "mtxl.h"  /* get the SCSI routines out of the main file */
- 
--/*****************************************************************
-+/****************************************************************/
- /* Variables:  */
- /****************************************************************/   
- 
- /* the device handle we're operating upon, sigh. */
--static unsigned char *device;  /* the text of the device thingy. */
--static DEVICE_TYPE MediumChangerFD = (DEVICE_TYPE) 0;
-+static char *device;  /* the text of the device thingy. */
-+static DEVICE_TYPE MediumChangerFD = (DEVICE_TYPE) -1;
- char *argv0;
- int arg[4]; /* arguments for the command. */
- #define arg1 (arg[0])  /* for backward compatibility, sigh */
-@@ -74,7 +74,7 @@
- /* open_device() -- set the 'fh' variable.... */
- void open_device(void) {
- 
--  if (MediumChangerFD) {
-+  if (MediumChangerFD != -1) {
-     SCSI_CloseDevice("Unknown",MediumChangerFD);  /* close it, sigh...  new device now! */
-   }
- 
-@@ -101,7 +101,7 @@
-   /* if the device is not already open, then open it from the 
-    * environment.
-    */
--  if (!MediumChangerFD) {
-+  if (MediumChangerFD == -1) {
-     /* try to get it from STAPE or TAPE environment variable... */
-     device=getenv("STAPE");
-     if (device==NULL) {
-@@ -302,7 +302,7 @@
- }
- 
- static int S_tongue_in(void) {
--
-+  return 0;
- }
- 
- /* okay, stick our tongue out. We need a slot ID to grab a caddy from. */
-@@ -326,6 +326,7 @@
-   }
-   
-   /* Okay, we have element status, so now let's assume that */
-+  return 0;
- }
- 
- /* See parse_args for the scoop. parse_args does all. */
-Index: mtxl.h
-===================================================================
---- mtxl.h	(revision 139)
-+++ mtxl.h	(revision 147)
-@@ -27,6 +27,9 @@
- 
- #include "mtx.h"
- 
-+#undef min
-+#undef max
-+
- void FatalError(char *ErrorMessage, ...);
- void *xmalloc(size_t Size);
- void *xzmalloc(size_t Size);
-Index: config.h
-===================================================================
---- ../release/mtx-1.3.9/config.h.in	2003-09-29 19:43:20.000000000 -0700
-+++ config.h	2006-07-30 00:42:37.000000000 -0700
-@@ -1,3 +1,4 @@
-+/* config.h.  Generated by configure.  */
- /* Copyright 2001 Enhanced Software Technologies Inc.
-  * Released under GNU General Public License V2 or Above
-  * See http://www.gnu.org for more information about the terms of
-@@ -10,10 +11,10 @@
- #define CONFIG_H 1
- 
- /* autoconf changes these. */
--#define HAVE_STRING_H 0
--#define HAVE_UNISTD_H 0
--#define HAVE_STDLIB_H 0
--#define HAVE_STDARG_H 0
-+#define HAVE_STRING_H 1
-+#define HAVE_UNISTD_H 1
-+#define HAVE_STDLIB_H 1
-+#define HAVE_STDARG_H 1
- #define HAVE_SCSI_SCSI_H 0
- #define HAVE_SCSI_SCSI_IOCTL_H 0
- #define HAVE_SCSI_SG_H 0
-@@ -23,10 +24,12 @@
- #define HAVE_SYS_SCSI_CTL_H 0
- #define HAVE_DSLIB_H 0
- #define HAVE_DU_DEFS_H 0
--#define HAVE_SYS_STAT_H 0
--#define HAVE_SYS_TYPES_H 0
--#define HAVE_FCNTL_H 0
-+#define HAVE_SYS_STAT_H 1
-+#define HAVE_SYS_TYPES_H 1
-+#define HAVE_FCNTL_H 1
- #define HAVE_SYS_IOCTL_H 0
-+#define HAVE_SYS_MTIO_H 0
-+#define HAVE_DDK_NTDDSCSI_H 1
- 
- #define WORDS_BIGENDIAN 0
- 
-Index: mtxl.c
-===================================================================
---- ../release/mtx-1.3.9/mtxl.c	2003-10-02 23:03:20.000000000 -0700
-+++ mtxl.c	2006-07-30 00:49:31.000000000 -0700
-@@ -53,6 +53,11 @@
- #  include "scsi_linux.c"
- #endif
- 
-+/* the IOCTL_SCSI_PASSTHROUGH interface is used on Windows. */
-+#if HAVE_DDK_NTDDSCSI_H || defined(_MSC_VER)
-+#  include "scsi_win32.c"
-+#endif
-+
- /* The 'uscsi' interface is used on Solaris. */
- #if HAVE_SYS_SCSI_IMPL_USCSI_H
- #  include "scsi_sun.c"
-@@ -78,6 +83,7 @@
- #include "[.vms]scsi.c"
- #endif
- 
-+void PrintHex(int Indent, unsigned char *Buffer, int Length);
- extern char *argv0; /* something to let us do good error messages. */
- 
- /* create a global RequestSenseT value. */
-@@ -104,6 +110,9 @@
-   if (SCSI_ExecuteCommand(fd, Input, &CDB, 6,
- 			  Inquiry, sizeof(Inquiry_T), RequestSense) != 0)
-     {
-+#ifdef DEBUG
-+      fprintf(stderr, "SCSI Inquiry Command failed\n");
-+#endif
-       free(Inquiry);
-       return NULL;  /* sorry! */
-     }
-@@ -111,36 +120,27 @@
- }
- 
- 
-+#if defined(DEBUG_NSM) || defined(DEBUG_EXCHANGE)
- /* DEBUG */
- static void dump_cdb(unsigned char *CDB, int len) {
--  int i;
-   fprintf(stderr,"CDB:");
--  for (i=0;i<len;i++) {
--    fprintf(stderr,"%02x ",CDB[i]);
--  }
--  fprintf(stderr,"\n");
-+  PrintHex(1, CDB, len);
- }
-+#endif
- 
- 
-+#if defined(DEBUG_NSM) || defined(DEBUG_ADIC)
- /* DEBUG */
- static void dump_data(unsigned char *data, int len) {
--  int i;
-   if (!len) {
-     fprintf(stderr,"**NO DATA**\n");
-     return;
-   }
- 
--  for (i=0;i<len;i++) {
--    if ((i % 10) == 0) {
--      if (i) {
--	fprintf(stderr,"\n");
--      }
--      fprintf(stderr,"DATA:");
--    }
--    fprintf(stderr,"%02x ",(unsigned int)*data++);
--  }
--  fprintf(stderr,"\n");
-+  fprintf(stderr,"DATA:");
-+  PrintHex(1, data, len);
- }
-+#endif
- 
- 
- int BigEndian16(unsigned char *BigEndianData)
-@@ -255,7 +255,7 @@
- 
- 
- /* Okay, this is a hack for the NSM modular jukebox series, which
-- * uses the "SEND DIAGNOSTIC" command do to shit. 
-+ * uses the "SEND DIAGNOSTIC" command to do shit. 
-  */
- 
- int SendNSMHack(DEVICE_TYPE MediumChangerFD, NSM_Param_T *nsm_command, 
-@@ -346,6 +346,10 @@
-   SCSI_Set_Timeout(30*60); /* 30 minutes, sigh! */
-   
-   if (SCSI_ExecuteCommand(MediumChangerFD,Input,&CDB,6,NULL,0,&scsi_error_sense) != 0) {
-+#ifdef DEBUG
-+    PrintRequestSense(&scsi_error_sense);
-+    fprintf(stderr, "Initialize Element Status (0x07) failed\n");
-+#endif
-     return -1;  /* could not do! */
-   }
-   return 0; /* did do! */
-@@ -364,6 +368,10 @@
-   CDB[1]=CDB[2]=CDB[3]=CDB[4]=CDB[5]=0;
-   
-   if (SCSI_ExecuteCommand(fd,Input,&CDB,6,NULL,0,&scsi_error_sense) != 0) {
-+#ifdef DEBUG_MODE_SENSE
-+    PrintRequestSense(&scsi_error_sense);
-+    fprintf(stderr, "Eject (0x1B) failed\n");
-+#endif
-     return -1;  /* could not do! */
-   }
-   return 0; /* did do! */
-@@ -396,7 +404,8 @@
-   if (SCSI_ExecuteCommand(MediumChangerFD,Input,&CDB,6,
- 			  &input_buffer,sizeof(input_buffer),&scsi_error_sense) != 0) {
- #ifdef DEBUG_MODE_SENSE
--    fprintf(stderr,"Could not execute mode sense...\n");
-+    PrintRequestSense(&scsi_error_sense);
-+    fprintf(stderr,"Mode sense (0x1A) for Page 0x1D failed\n");
-     fflush(stderr);
- #endif
-     return NULL; /* sorry, couldn't do it. */
-@@ -405,18 +414,7 @@
-   /* Could do it, now build return value: */
- 
- #ifdef DEBUG_MODE_SENSE
--  {
--    int i;
--    for (i=0;i<30;i+=3) {
--      fprintf(stderr,"ib[%d]=%d ib[%d]=%d ib[%d]=%d\n",
--	      i,input_buffer[i],i+1,input_buffer[i+1],
--	      i+2,input_buffer[i+2]);
--      /*  fprintf(stderr,"input_buffer[0]=%d input_buffer[3]=%d\n",
--       *	  input_buffer[0], input_buffer[3]);
--       */
--    }
--    fflush(stderr);
--  }
-+  PrintHex(0, input_buffer, 30);
- #endif
-   /* first, skip past: mode data header, and block descriptor header if any */
-   sense_page=(ElementModeSensePage_T *)(input_buffer+4+input_buffer[3]);
-@@ -444,11 +442,11 @@
- 
- #ifdef DEBUG_MODE_SENSE
-   fprintf(stderr,"rawNumStorage= %d %d    rawNumImportExport= %d %d\n",
--	  sense_page->NumStorageHi,sense_page->NumStorageLo,
--	  sense_page->NumImportExportHi, sense_page->NumImportExportLo);
-+          sense_page->NumStorageHi,sense_page->NumStorageLo,
-+          sense_page->NumImportExportHi, sense_page->NumImportExportLo);
-   fprintf(stderr,"rawNumTransport=%d %d  rawNumDataTransfer=%d %d\n",
--	  sense_page->NumMediumTransportHi,sense_page->NumMediumTransportLo,
--	  sense_page->NumDataTransferHi,sense_page->NumDataTransferLo);
-+          sense_page->NumMediumTransportHi,sense_page->NumMediumTransportLo,
-+          sense_page->NumDataTransferHi,sense_page->NumDataTransferLo);
-   fflush(stderr);
- #endif
- 
-@@ -620,19 +618,16 @@
-   CDB[11] = 0;			/* Control */
- 
- #ifdef DEBUG_BARCODE
--  {
--    int i;
--    fprintf(stderr,"CDB= ");
--    for (i=0;i<12;i++) {
--      fprintf(stderr,"%x ",CDB[i]);
--    }
--    fprintf(stderr,"\n");
--    fflush(stderr);
--  }
-+  fprintf(stderr,"CDB:\n");
-+  PrintHex(2, CDB, 12);
- #endif
- 
-   if (SCSI_ExecuteCommand(MediumChangerFD, Input, &CDB, 12,
- 			  DataBuffer,NumBytes, RequestSense) != 0){
-+
-+#ifdef DEBUG
-+    fprintf(stderr, "Read Element Status (0x%02X) failed\n", CDB[0]);
-+#endif
-     /* okay, first see if we have sense key of 'illegal request',
-        additional sense code of '24', additional sense qualfier of 
-        '0', and field in error of '4'. This means that we issued a request
-@@ -654,15 +649,8 @@
-       CDB[1] &= ~0x10; /* clear bar code flag! */
- 
- #ifdef DEBUG_BARCODE
--      {
--	int i;
--	fprintf(stderr,"CDB= ");
--	for (i=0;i<12;i++) {
--	  fprintf(stderr,"%x ",CDB[i]);
--	}
--	fprintf(stderr,"\n");
--	fflush(stderr);
--      }
-+      fprintf(stderr,"CDB:\n");
-+      PrintHex(2, CDB, 12);
- #endif
-       
-       if (SCSI_ExecuteCommand(MediumChangerFD, Input, &CDB, 12,
-@@ -679,14 +667,8 @@
- #ifdef DEBUG_BARCODE
-   /* print a bunch of extra debug data :-(.  */
-   PrintRequestSense(RequestSense); /* see what it sez :-(. */
--  {
--    int i;
--    fprintf(stderr,"Data:");
--    for (i=0;i<40;i++) {
--      fprintf(stderr,"%02x ",DataBuffer[i]);
--    }
--    fprintf(stderr,"\n");
--  }
-+  fprintf(stderr,"Data:\n");
-+  PrintHex(2, DataBuffer, 40);
- #endif  
-   return DataBuffer; /* we succeeded! */
- }
-@@ -703,7 +685,7 @@
- 					) {
- 
-   unsigned char *DataBuffer; /* size of data... */
--  unsigned int real_numbytes;
-+  int real_numbytes;
- 
-   
-   DataBuffer=SendElementStatusRequestActual(MediumChangerFD,
-@@ -950,34 +932,42 @@
- 		BigEndian16(TransportElementDescriptor
- 			    ->SourceStorageElementAddress);
- 
--	      if (ElementStatus->DataTransferElementCount >= mode_sense->NumDataTransfer) {
--		FatalError("Too many Data Transfer Elements Reported\n");
--	      }
--	      if (ElementStatusPage->VolBits & E2_PVOLTAG) {
--		copy_barcode(TransportElementDescriptor->PrimaryVolumeTag,
--			     ElementStatus->DataTransferPrimaryVolumeTag[ElementStatus->DataTransferElementCount]);
--	      } else {
--		ElementStatus->DataTransferPrimaryVolumeTag[ElementStatus->DataTransferElementCount][0]=0; /* null string */
--	      }
--	      if (ElementStatusPage->VolBits & E2_AVOLTAG) {
--		copy_barcode(TransportElementDescriptor->AlternateVolumeTag,
--			     ElementStatus->DataTransferAlternateVolumeTag[ElementStatus->DataTransferElementCount]);
--	      } else {
--		ElementStatus->DataTransferAlternateVolumeTag[ElementStatus->DataTransferElementCount][0]=0; /* null string */
--	      }
--	      ElementStatus->DataTransferElementCount++;
--	      /* 0 actually is a usable element address */
--	      /* if (DataTransferElementAddress == 0) */
--	      /*	FatalError( */
--	      /*  "illegal Data Transfer Element Address %d reported\n", */
--	      /* DataTransferElementAddress); */
--	      break;
--	    default:
--	      FatalError("illegal Element Type Code %d reported\n",
--			 ElementStatusPage->ElementTypeCode);
--	    }
--	}
-+#if DEBUG
-+        fprintf(stderr, "%d: ElementAddress = %d, Full = %d, SourceElement = %d\n", 
-+                ElementStatus->DataTransferElementCount,
-+                ElementStatus->DataTransferElementAddress[ElementStatus->DataTransferElementCount],
-+                ElementStatus->DataTransferElementFull[ElementStatus->DataTransferElementCount],
-+                ElementStatus->DataTransferElementSourceStorageElementNumber[ElementStatus->DataTransferElementCount]);
-+#endif
-+        if (ElementStatus->DataTransferElementCount >= mode_sense->NumDataTransfer) {
-+          FatalError("Too many Data Transfer Elements Reported\n");
-+        }
-+        if (ElementStatusPage->VolBits & E2_PVOLTAG) {
-+          copy_barcode(TransportElementDescriptor->PrimaryVolumeTag,
-+                       ElementStatus->DataTransferPrimaryVolumeTag[ElementStatus->DataTransferElementCount]);
-+        } else {
-+          ElementStatus->DataTransferPrimaryVolumeTag[ElementStatus->DataTransferElementCount][0]=0; /* null string */
-+        }
-+        if (ElementStatusPage->VolBits & E2_AVOLTAG) {
-+          copy_barcode(TransportElementDescriptor->AlternateVolumeTag,
-+                       ElementStatus->DataTransferAlternateVolumeTag[ElementStatus->DataTransferElementCount]);
-+        } else {
-+          ElementStatus->DataTransferAlternateVolumeTag[ElementStatus->DataTransferElementCount][0]=0; /* null string */
-+        }
-+        ElementStatus->DataTransferElementCount++;
-+
-+        /* 0 actually is a usable element address */
-+        /* if (DataTransferElementAddress == 0) */
-+        /*	FatalError( */
-+        /*  "illegal Data Transfer Element Address %d reported\n", */
-+        /* DataTransferElementAddress); */
-+        break;
-+      default:
-+        FatalError("illegal Element Type Code %d reported\n",
-+          ElementStatusPage->ElementTypeCode);
-+      }
-     }
-+  }
- }
- 
- /********************* Real ReadElementStatus ********************* */
-@@ -1008,7 +998,6 @@
-   int *EmptyStorageElementAddress; /* [MAX_STORAGE_ELEMENTS]; */
-   
-   int empty_idx=0;
--  int invalid_sources=0;
-   boolean is_attached = false;
-   int i,j;
-   
-@@ -1049,7 +1038,7 @@
-   
-   EmptyStorageElementAddress=(int *)xzmalloc((mode_sense->NumStorage+1)*sizeof(int));
-   for (i=0;i<mode_sense->NumStorage;i++) {
--    EmptyStorageElementAddress[i]=-1;
-+    EmptyStorageElementAddress[i] = -1;
-   }
-   
-   /* Okay, now to send some requests for the various types of stuff: */
-@@ -1076,6 +1065,9 @@
- #endif
-     /* darn. Free up stuff and return. */
-     /****FIXME**** do a free on element data! */
-+#ifdef DEBUG_MODE_SENSE
-+      PrintRequestSense(RequestSense);
-+#endif
-     FreeElementData(ElementStatus);
-     return NULL; 
-   } 
-@@ -1107,6 +1099,9 @@
- #endif
-       /* darn. Free up stuff and return. */
-       /****FIXME**** do a free on element data! */
-+#ifdef DEBUG_MODE_SENSE
-+      PrintRequestSense(RequestSense);
-+#endif
-       FreeElementData(ElementStatus);
-       return NULL; 
-     } 
-@@ -1138,6 +1133,9 @@
- #endif
-     /* darn. Free up stuff and return. */
-     /****FIXME**** do a free on element data! */
-+#ifdef DEBUG_MODE_SENSE
-+    PrintRequestSense(RequestSense);
-+#endif
-     FreeElementData(ElementStatus);
-     return NULL; 
-   } 
-@@ -1172,6 +1170,9 @@
- #endif
-        /* darn. Free up stuff and return. */
-        /****FIXME**** do a free on element data! */
-+#ifdef DEBUG_MODE_SENSE
-+      PrintRequestSense(RequestSense);
-+#endif
-        FreeElementData(ElementStatus);
-        return NULL; 
-      } 
-@@ -1223,34 +1224,24 @@
-    * is obviously defective: 
-    */
-   /* pass one: */
--  invalid_sources=0; /* no invalid sources yet! */
-   for (i=0;i<ElementStatus->DataTransferElementCount;i++) {
-     int elnum;
--    int translated_elnum = -1;
-     /* if we have an element, then ... */
-     if (ElementStatus->DataTransferElementFull[i]) {
-       elnum=ElementStatus->DataTransferElementSourceStorageElementNumber[i];
-       /* if we have an element number, then ... */
-       if (elnum >= 0) {
--         /* Now to translate the elnum: */
--	 for (j=0; j<ElementStatus->StorageElementCount; j++) {
--	     if (elnum == ElementStatus->StorageElementAddress[j]) {
--		 translated_elnum=j; 
--	     }
--	 }
--      /* now see if the element # is already occupied: */
--	if (ElementStatus->StorageElementFull[translated_elnum]) {
--	  invalid_sources=1;
--	  break; /* break out of the loop! */
--	} else {
--	   /* properly set the source... */
--	ElementStatus->DataTransferElementSourceStorageElementNumber[i]=
--		translated_elnum;
--	}
--		 
--      } else {
--	/* if element # was not >=0, then we had an invalid source anyhow! */
--	invalid_sources=1;
-+        /* Now to translate the elnum: */
-+        ElementStatus->DataTransferElementSourceStorageElementNumber[i] = -1;
-+        for (j=0; j<ElementStatus->StorageElementCount; j++) {
-+          if (elnum == ElementStatus->StorageElementAddress[j]) {
-+            /* now see if the element # is already occupied:*/
-+            if (!ElementStatus->StorageElementFull[j]) {
-+              /* properly set the source... */
-+              ElementStatus->DataTransferElementSourceStorageElementNumber[i]= j;
-+            }
-+          }
-+        }
-       }
-     }
-   }
-@@ -1267,21 +1258,19 @@
-    * by the user interface. This is an invalid value, but more useful for us
-    * to have than just crapping out here :-(. 
-    */ 
--  if (invalid_sources) {
--    empty_idx=0;
--    for (i=0;i<ElementStatus->DataTransferElementCount;i++) {
--      if (ElementStatus->DataTransferElementFull[i]) {
-+  empty_idx=0;
-+  for (i = 0; i < ElementStatus->DataTransferElementCount; i++) {
-+    if (ElementStatus->DataTransferElementFull[i] && 
-+      ElementStatus->DataTransferElementSourceStorageElementNumber[i] < 0) {
- #ifdef DEBUG_TAPELIST
--        fprintf(stderr,"for drive %d, changing source %d to %d (empty slot #%d)\n",
--	     i,
--	     ElementStatus->DataTransferElementSourceStorageElementNumber[i],
--             EmptyStorageElementAddress[empty_idx],
--             empty_idx);
-+      fprintf(stderr,"for drive %d, changing to %d (empty slot #%d)\n",
-+              i,
-+              EmptyStorageElementAddress[empty_idx],
-+              empty_idx);
- #endif
-               
- 	ElementStatus->DataTransferElementSourceStorageElementNumber[i]=
- 	  EmptyStorageElementAddress[empty_idx++];
--      }
-     }
-   }
- 
-@@ -1337,9 +1326,9 @@
-   CDB[2] = (ElementStatus->TransportElementAddress >> 8) & 0xFF;  /* Transport Element Address MSB */
-   CDB[3] = (ElementStatus->TransportElementAddress) & 0xff;   /* Transport Element Address LSB */
-   CDB[4] = (SourceAddress >> 8) & 0xFF;	/* Source Address MSB */
--  CDB[5] = SourceAddress & 0xFF; /* Source Address MSB */
-+  CDB[5] = SourceAddress & 0xFF; /* Source Address LSB */
-   CDB[6] = (DestinationAddress >> 8) & 0xFF; /* Destination Address MSB */
--  CDB[7] = DestinationAddress & 0xFF; /* Destination Address MSB */
-+  CDB[7] = DestinationAddress & 0xFF; /* Destination Address LSB */
-   CDB[8] = 0;			/* Reserved */
-   CDB[9] = 0;			/* Reserved */
-   if (flags->invert) {
-@@ -1351,7 +1340,11 @@
-   CDB[11] = 0 | (flags->eepos <<6);			/* Control */
-   
-   if (SCSI_ExecuteCommand(MediumChangerFD, Output, &CDB, 12,
--			  NULL, 0, RequestSense) != 0) {
-+                          NULL, 0, RequestSense) != 0) {
-+
-+#ifdef DEBUG
-+    fprintf(stderr, "Move Medium (0x%02X) failed\n", CDB[0]);
-+#endif
-     return RequestSense;
-   }
-   free(RequestSense);
-@@ -1372,9 +1365,9 @@
-   CDB[2] = (ElementStatus->TransportElementAddress >> 8) & 0xFF;  /* Transport Element Address MSB */
-   CDB[3] = (ElementStatus->TransportElementAddress) & 0xff;   /* Transport Element Address LSB */
-   CDB[4] = (SourceAddress >> 8) & 0xFF;	/* Source Address MSB */
--  CDB[5] = SourceAddress & 0xFF; /* Source Address MSB */
-+  CDB[5] = SourceAddress & 0xFF; /* Source Address LSB */
-   CDB[6] = (DestinationAddress >> 8) & 0xFF; /* Destination Address MSB */
--  CDB[7] = DestinationAddress & 0xFF; /* Destination Address MSB */
-+  CDB[7] = DestinationAddress & 0xFF; /* Destination Address LSB */
-   CDB[8] = (Dest2Address>>8) & 0xFF; /* move destination back to source? */
-   CDB[9] = Dest2Address & 0xFF; /* move destination back to source? */
-   CDB[10]=0;
-@@ -1418,12 +1411,53 @@
- 
-   if (SCSI_ExecuteCommand(MediumChangerFD, Output, &CDB, 6,
- 			  NULL, 0, RequestSense) != 0) {
-+#ifdef DEBUG
-+    fprintf(stderr, "Erase (0x19) failed\n");
-+#endif
-     return RequestSense;
-   }
-   free(RequestSense);
-   return NULL;  /* Success! */
- }  
- 
-+static char Spaces[] = "                                                            ";
-+
-+void PrintHex(int Indent, unsigned char *Buffer, int Length)
-+{
-+  int	idxBuffer;
-+  int	idxAscii;
-+  int	PadLength;
-+  char	cAscii;
-+
-+  for (idxBuffer = 0; idxBuffer < Length; idxBuffer++) {
-+    if ((idxBuffer % 16) == 0) {
-+      if (idxBuffer > 0) {
-+        fputc('\'', stderr);
-+
-+        for (idxAscii = idxBuffer - 16; idxAscii < idxBuffer; idxAscii++) {
-+          cAscii = Buffer[idxAscii] >= 0x20 && Buffer[idxAscii] < 0x7F ? Buffer[idxAscii] : '.';
-+          fputc(cAscii, stderr);
-+        }
-+        fputs("'\n", stderr);
-+      }
-+      fprintf(stderr, "%.*s%04X: ", Indent, Spaces, idxBuffer);
-+    }
-+    fprintf(stderr, "%02X ", (unsigned char)Buffer[idxBuffer]);
-+  }
-+
-+  PadLength = 16 - (Length % 16);
-+
-+  if (PadLength > 0) {
-+    fprintf(stderr, "%.*s'", 3 * PadLength, Spaces);
-+
-+    for (idxAscii = idxBuffer - (16 - PadLength); idxAscii < idxBuffer; idxAscii++) {
-+      cAscii = Buffer[idxAscii] >= 0x20 && Buffer[idxAscii] < 0x80 ? Buffer[idxAscii] : '.';
-+      fputc(cAscii, stderr);
-+    }
-+    fputs("'\n", stderr);
-+  }
-+  fflush(stderr);
-+}
- 
- #ifdef LONG_PRINT_REQUEST_SENSE
- 
-@@ -1488,12 +1522,9 @@
- #else
- void PrintRequestSense(RequestSense_T *RequestSense)
- {
--  int i;
--  fprintf(stderr, "mtx: Request Sense: %02X",
--	  ((unsigned char *) RequestSense)[0]);
--  for (i = 1; i < sizeof(RequestSense_T); i++)
--    fprintf(stderr, " %02X", ((unsigned char *) RequestSense)[i]);
--  fprintf(stderr, "\n");
-+  fprintf(stderr, "mtx: Request Sense: %02X\n",
-+          ((unsigned char *) RequestSense)[0]);
-+  PrintHex(2, (char *)RequestSense, sizeof(RequestSense_T));
- }
- 
- #endif
-Index: Makefile
-===================================================================
---- ../release/mtx-1.3.9/Makefile.in	2006-02-20 13:42:10.000000000 -0800
-+++ Makefile	2006-07-30 01:22:00.000000000 -0700
-@@ -11,26 +11,28 @@
- # Version # for 'make dist'...
- VERSION=1.3.9
- 
--BINS = mtx tapeinfo loaderinfo scsitape nsmhack
-+BINS = mtx.exe tapeinfo.exe loaderinfo.exe scsitape.exe nsmhack.exe
-+DBGS := $(BINS:%.exe=%.dbg)
- 
--TARGET	= @TARGET@
--CPU	= @CPU@
--CC	= @CC@
--INSTALL	= @INSTALL@
--
--CFLAGS		= @CFLAGS@
--CPPFLAGS	= @CPPFLAGS@ -DVERSION="\"$(VERSION)\""
--LDFLAGS		= @LDFLAGS@
--LIBS		= @LIBS@
-+TARGET	= mingw
-+CPU	= 386
-+CC	= mingw32-gcc
-+INSTALL	= install -c
-+
-+CFLAGS		= -g -O2
-+CPPFLAGS	=  -DVERSION="\"$(VERSION)\""
-+LDFLAGS		= 
-+LIBS		= 
-+USE_OBJCOPY	= yes
- 
- INSTALL_DOC = $(INSTALL) -m 644
- INSTALL_BIN = $(INSTALL) -m 755
- INSTALL_DIR = $(INSTALL) -m 755 -d
- 
--prefix		= @prefix@
--exec_prefix	= @exec_prefix@
--sbindir		= @sbindir@
--mandir		= @mandir@
-+prefix		= dummy
-+exec_prefix	= ${prefix}
-+sbindir	= ${exec_prefix}/bin
-+mandir		= ${prefix}/man
- 
- #
- # Linux on x86...
-@@ -40,6 +42,11 @@
- CPPFLAGS	+= -I/usr/src/linux/include -DLONG_PRINT_REQUEST_SENSE=1
- endif
- 
-+ifeq ($(TARGET),mingw)
-+CFLAGS += -Wall
-+CPPFLAGS	+= -DLONG_PRINT_REQUEST_SENSE=1
-+endif
-+
- #
- # FreeBSD on x86...
- #
-@@ -82,12 +89,22 @@
- See vms/000readme for information.
- endif
- 
-+%.dbg : %.exe
-+ifeq ($(USE_OBJCOPY),yes)
-+	mingw32-objcopy --only-keep-debug $< $@
-+	mingw32-objcopy --strip-debug $<
-+	mingw32-objcopy --add-gnu-debuglink=$@ $<
-+else
-+	strip $< -o $@
-+endif
-+
- all:	$(BINS)
- 
--install: $(BINS)
-+dbgs: $(DBGS)
-+
-+install: $(BINS) $(DBGS)
- 	$(INSTALL_DIR) $(sbindir)
- 	for file in $(BINS); do \
--	strip "$$file" ;	\
- 	$(INSTALL_BIN) "$$file" $(sbindir) ; \
- 	done	
- 	$(INSTALL_DIR) $(mandir) $(mandir)/man1
-@@ -98,7 +115,9 @@
- clean:
- 	rm -f *.o *~
- 	rm -f $(BINS)
--	rm -f mam2debug mam2debug2
-+	rm -f $(DBGS)
-+	rm -f mam2debug.exe mam2debug2.exe
-+	rm -rf autom4te.cache
- 
- distclean: clean
- 	rm -f Makefile config.log config.cache config.status
-@@ -106,27 +125,26 @@
- dist: distclean
- 	./makedist $(VERSION)	
- 
--loaderinfo: loaderinfo.o mtxl.o mtxl.h mtx.h $(EXTRA)
--	$(CC) $(LDFLAGS) -o loaderinfo loaderinfo.o mtxl.o $(EXTRA) $(LIBS)
--
-+loaderinfo.exe: loaderinfo.o mtxl.o mtxl.h mtx.h $(EXTRA)
-+	$(CC) $(LDFLAGS) -o $@ loaderinfo.o mtxl.o $(EXTRA) $(LIBS)
- 
--nsmhack: nsmhack.o mtxl.o $(EXTRA)
--	$(CC) $(LDFLAGS) -o nsmhack nsmhack.o mtxl.o $(EXTRA) $(LIBS)
-+nsmhack.exe: nsmhack.o mtxl.o $(EXTRA)
-+	$(CC) $(LDFLAGS) -o $@ nsmhack.o mtxl.o $(EXTRA) $(LIBS)
- 
--mtx: mtx.o mtxl.o mtxl.h mtx.h $(EXTRA)
--	$(CC) $(LDFLAGS) -o mtx mtx.o mtxl.o $(EXTRA) $(LIBS)
-+mtx.exe: mtx.o mtxl.o mtxl.h mtx.h $(EXTRA)
-+	$(CC) $(LDFLAGS) -o $@ mtx.o mtxl.o $(EXTRA) $(LIBS)
- 
--mam2debug: mtxl.o mam2debug.o mtx.h $(EXTRA)	
--	$(CC) $(LDFLAGS) -o mam2debug mtxl.o mam2debug.o $(EXTRA) $(LIBS)
-+mam2debug.exe: mtxl.o mam2debug.o mtx.h $(EXTRA)	
-+	$(CC) $(LDFLAGS) -o $@ mtxl.o mam2debug.o $(EXTRA) $(LIBS)
- 
--tapeinfo: tapeinfo.o mtxl.o mtx.h mtxl.h $(EXTRA)
--	$(CC) $(LDFLAGS) -o tapeinfo tapeinfo.o mtxl.o $(EXTRA) $(LIBS)
-+tapeinfo.exe: tapeinfo.o mtxl.o mtx.h mtxl.h $(EXTRA)
-+	$(CC) $(LDFLAGS) -o $@ tapeinfo.o mtxl.o $(EXTRA) $(LIBS)
- 
--mam2debug2: mtxl.o mam2debug2.o mtx.h $(EXTRA)
--	$(CC) $(LDFLAGS) -o mam2debug2 mtxl.o mam2debug2.o $(EXTRA) $(LIBS)
-+mam2debug2.exe: mtxl.o mam2debug2.o mtx.h $(EXTRA)
-+	$(CC) $(LDFLAGS) -o $@ mtxl.o mam2debug2.o $(EXTRA) $(LIBS)
- 
--scsitape: scsitape.o mtxl.o mtxl.h mtx.h $(EXTRA)
--	$(CC) $(LDFLAGS) -o scsitape scsitape.o mtxl.o $(EXTRA) $(LIBS)
-+scsitape.exe: scsitape.o mtxl.o mtxl.h mtx.h $(EXTRA)
-+	$(CC) $(LDFLAGS) -o $@ scsitape.o mtxl.o $(EXTRA) $(LIBS)
- 
- scsitape.o: scsitape.c mtx.h mtxl.h
- 
-@@ -140,6 +158,6 @@
- 
- mtx.o: mtx.c mtx.h mtxl.h
- 
--mtxl.o: mtxl.c mtx.h mtxl.h scsi_linux.c 
-+mtxl.o: mtxl.c mtx.h mtxl.h scsi_linux.c scsi_win32.c
- 
- nsmhack.o: nsmhack.c mtxl.h mtx.h
diff --git a/src/win32/patches/nsis.patch b/src/win32/patches/nsis.patch
deleted file mode 100644
index 0a37cd7..0000000
--- a/src/win32/patches/nsis.patch
+++ /dev/null
@@ -1,428 +0,0 @@
-Index: SCons/Config/gnu
---- ../release/nsis-2.17-src/SCons/Config/gnu	2006-04-28 08:54:41.000000000 -0700
-+++ SCons/Config/gnu	2006-08-07 18:49:47.000000000 -0700
-@@ -65,7 +65,7 @@
- cross_env(stub_env)
- 
- if not defenv['DEBUG']:
--	stub_env.Append(CCFLAGS = '-Os')                # optimize for size
-+	stub_env.Append(CCFLAGS = '-Os -fno-strict-aliasing')                # optimize for size
- stub_env.Append(CCFLAGS = '-Wall')                # all warnings
- stub_env.Append(CCFLAGS = '-x c')                 # force compile as c
- 
-@@ -82,8 +82,8 @@
- makensis_env = defenv.Copy()
- 
- if not defenv['DEBUG']:
--	makensis_env.Append(CCFLAGS = '-O2')            # optimize
-+	makensis_env.Append(CCFLAGS = '-O2 -fno-strict-aliasing')            # optimize
- makensis_env.Append(CCFLAGS = '-Wall')            # all warnings
- 
- conf = FlagsConfigure(makensis_env)
- conf.CheckLinkFlag('$MAP_FLAG')                   # generate map file
-@@ -97,7 +97,7 @@
- cross_env(plugin_env)
- 
- if not defenv['DEBUG']:
--	plugin_env.Append(CCFLAGS = '-Os')              # optimize for size
-+	plugin_env.Append(CCFLAGS = '-Os -fno-strict-aliasing')              # optimize for size
- plugin_env.Append(CCFLAGS = '-Wall')              # level 3 warnings
- 
- if not defenv['DEBUG']:
-@@ -111,7 +111,7 @@
- cp_util_env = defenv.Copy()
- 
- if not defenv['DEBUG']:
--	cp_util_env.Append(CCFLAGS = '-O2')             # optimize
-+	cp_util_env.Append(CCFLAGS = '-O2 -fno-strict-aliasing')             # optimize
- cp_util_env.Append(CCFLAGS = '-Wall')             # all warnings
- 
- conf = FlagsConfigure(cp_util_env)
-Index: Source/build.cpp
---- ../release/nsis-2.17-src/Source/build.cpp	2006-04-14 03:05:01.000000000 -0700
-+++ ./Source/build.cpp	2006-07-31 13:26:38.000000000 -0700
-@@ -2384,7 +2384,7 @@
-         return PS_ERROR;
-       }
- #ifdef NSIS_CONFIG_CRC_SUPPORT
--      crc_writer_sink crc_sink((unsigned long *) &crc);
-+      crc_writer_sink crc_sink((unsigned int *) &crc);
-       firstheader_writer w(&crc_sink);
-       w.write(&fh);
- 
-Index: Source/build.h
---- ../release/nsis-2.17-src/Source/build.h	2005-04-02 04:04:06.000000000 -0800
-+++ ./Source/build.h	2006-07-31 13:28:44.000000000 -0700
-@@ -38,7 +38,7 @@
- #ifdef NSIS_CONFIG_CRC_SUPPORT
- extern "C"
- {
--  unsigned long NSISCALL CRC32(unsigned long crc, const unsigned char *buf, unsigned int len);
-+  unsigned int NSISCALL CRC32(unsigned int crc, const unsigned char *buf, unsigned int len);
- };
- #endif
- 
-Index: Source/crc32.c
---- ../release/nsis-2.17-src/Source/crc32.c	2004-03-12 12:43:54.000000000 -0800
-+++ ./Source/crc32.c	2006-07-31 13:27:12.000000000 -0700
-@@ -3,18 +3,18 @@
- #ifdef NSIS_CONFIG_CRC_SUPPORT
- 
- // this is based on the (slow,small) CRC32 implementation from zlib.
--unsigned long NSISCALL CRC32(unsigned long crc, const unsigned char *buf, unsigned int len)
-+unsigned int NSISCALL CRC32(unsigned int crc, const unsigned char *buf, unsigned int len)
- {
--    static unsigned long crc_table[256];
-+    static unsigned int crc_table[256];
- 
-     if (!crc_table[1])
-     {
--      unsigned long c;
-+      unsigned int c;
-       int n, k;
- 
-       for (n = 0; n < 256; n++)
-       {
--        c = (unsigned long)n;
-+        c = (unsigned int)n;
-         for (k = 0; k < 8; k++) c = (c >> 1) ^ (c & 1 ? 0xedb88320L : 0);
-         crc_table[n] = c;
-       }
-Index: Source/DialogTemplate.cpp
---- ../release/nsis-2.17-src/Source/DialogTemplate.cpp	2006-03-24 10:36:24.000000000 -0800
-+++ ./Source/DialogTemplate.cpp	2006-07-31 05:48:44.000000000 -0700
-@@ -93,7 +93,7 @@
-     if (IS_INTRESOURCE(x)) { \
-       *(WORD*)seeker = 0xFFFF; \
-       seeker += sizeof(WORD); \
--      *(WORD*)seeker = ConvertEndianness(WORD(DWORD(x))); \
-+      *(WORD*)seeker = ConvertEndianness(WORD(ULONG_PTR(x))); \
-       seeker += sizeof(WORD); \
-     } \
-     else { \
-@@ -629,7 +629,7 @@
-     }
-   }
- 
--  assert((DWORD) seeker - (DWORD) pbDlg == dwSize);
-+  assert((ULONG_PTR) seeker - (ULONG_PTR) pbDlg == dwSize);
- 
-   // DONE!
-   return pbDlg;
-Index: Source/exehead/fileform.c
---- ../release/nsis-2.17-src/Source/exehead/fileform.c	2005-09-09 09:08:44.000000000 -0700
-+++ ./Source/exehead/fileform.c	2006-07-31 13:26:08.000000000 -0700
-@@ -95,7 +95,7 @@
- static z_stream g_inflate_stream;
- #endif
- 
--extern unsigned long NSISCALL CRC32(unsigned long crc, const unsigned char *buf, unsigned int len);
-+extern unsigned int NSISCALL CRC32(unsigned int crc, const unsigned char *buf, unsigned int len);
- 
- const char * NSISCALL loadHeaders(int cl_flags)
- {
-Index: Source/Platform.h
---- ../release/nsis-2.17-src/Source/Platform.h	2006-05-03 08:43:54.000000000 -0700
-+++ ./Source/Platform.h	2006-07-31 05:48:44.000000000 -0700
-@@ -16,15 +16,15 @@
- // basic types
- typedef unsigned char BYTE, *PBYTE, *LPBYTE;
- typedef unsigned short WORD, *LPWORD;
--typedef unsigned long DWORD, *LPDWORD;
-+typedef unsigned int DWORD, *LPDWORD;
- typedef short SHORT;
- typedef unsigned short USHORT;
- typedef unsigned int UINT;
- typedef unsigned int UINT32;
- typedef int INT;
- typedef int INT32;
--typedef long LONG;
--typedef unsigned long ULONG;
-+typedef int LONG;
-+typedef unsigned int ULONG;
- typedef long long INT64, LARGE_INTEGER;
- typedef unsigned long long UINT64, ULARGE_INTEGER;
- typedef int BOOL, *LPBOOL;
-@@ -35,13 +35,14 @@
- typedef const char *LPCCH, *PCSTR, *LPCSTR;
- typedef unsigned short WCHAR, *PWCHAR, *LPWCH, *PWCH, *NWPSTR, *LPWSTR, *PWSTR;
- typedef const unsigned short *LPCWCH, *PCWCH, *LPCWSTR, *PCWSTR;
--typedef unsigned int UINT_PTR;
-+typedef unsigned long UINT_PTR;
-+typedef unsigned long ULONG_PTR;
- // basic stuff
- typedef void * HANDLE;
--typedef unsigned long HKEY;
-+typedef unsigned int HKEY;
- // some gdi
--typedef unsigned long COLORREF;
--typedef unsigned long HBRUSH;
-+typedef unsigned int COLORREF;
-+typedef unsigned int HBRUSH;
- // bool
- #  define FALSE 0
- #  define TRUE 1
-@@ -129,13 +130,13 @@
- 
- #ifndef _WIN32
- #  ifndef FIELD_OFFSET
--#    define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f))
-+#    define FIELD_OFFSET(t,f) ((ULONG_PTR)&(((t*)0)->f))
- #  endif
- #  ifndef MAKEINTRESOURCE
- #    define MAKEINTRESOURCE(i) (LPSTR)((DWORD)((WORD)(i)))
- #  endif
- #  ifndef IMAGE_FIRST_SECTION
--#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (DWORD) h + \
-+#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (ULONG_PTR) h + \
-                                      FIELD_OFFSET(IMAGE_NT_HEADERS, OptionalHeader) + \
-                                      FIX_ENDIAN_INT16(PIMAGE_NT_HEADERS(h)->FileHeader.SizeOfOptionalHeader) ) )
- #  endif
-@@ -166,9 +167,9 @@
- #  define FOF_NOERRORUI 0x0400
- #endif
- 
--#ifndef ULONG_PTR
--#  define ULONG_PTR DWORD
--#endif
-+//#ifndef ULONG_PTR
-+//#  define ULONG_PTR ULONG
-+//#endif
- 
- #ifndef IDC_HAND
- #  define IDC_HAND MAKEINTRESOURCE(32649)
-Index: Source/Plugins.cpp
---- ../release/nsis-2.17-src/Source/Plugins.cpp	2006-04-05 11:42:12.000000000 -0700
-+++ ./Source/Plugins.cpp	2006-07-31 06:50:08.000000000 -0700
-@@ -120,8 +120,8 @@
-         DWORD prd = FIX_ENDIAN_INT32(sections[i].PointerToRawData);
-         PIMAGE_EXPORT_DIRECTORY exports = PIMAGE_EXPORT_DIRECTORY(&dlldata[0] + prd + ExportDirVA - va);
-         DWORD na = FIX_ENDIAN_INT32(exports->AddressOfNames);
--        unsigned long *names = (unsigned long*)((unsigned long) exports + (char *) na - ExportDirVA);
--        for (unsigned long j = 0; j < FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
-+        unsigned int *names = (unsigned int*)((unsigned long) exports + (char *) na - ExportDirVA);
-+        for (unsigned int j = 0; j < FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
-         {
-           const string name = string((char*)exports + FIX_ENDIAN_INT32(names[j]) - ExportDirVA);
-           const string signature = dllName + "::" + name;
-Index: Source/ResourceEditor.cpp
---- ../release/nsis-2.17-src/Source/ResourceEditor.cpp	2006-04-05 11:40:09.000000000 -0700
-+++ ./Source/ResourceEditor.cpp	2006-07-31 05:48:44.000000000 -0700
-@@ -545,7 +545,7 @@
-     rdDir.NumberOfIdEntries = ConvertEndianness(rdDir.NumberOfIdEntries);
- 
-     CopyMemory(seeker, &rdDir, sizeof(IMAGE_RESOURCE_DIRECTORY));
--    crd->m_dwWrittenAt = DWORD(seeker);
-+    crd->m_dwWrittenAt = ULONG_PTR(seeker);
-     seeker += sizeof(IMAGE_RESOURCE_DIRECTORY);
- 
-     for (int i = 0; i < crd->CountEntries(); i++) {
-@@ -566,7 +566,7 @@
-       rDirE.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 : 0;
- 
-       CopyMemory(seeker, &rDirE, sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY));
--      crd->GetEntry(i)->m_dwWrittenAt = DWORD(seeker);
-+      crd->GetEntry(i)->m_dwWrittenAt = ULONG_PTR(seeker);
-       seeker += sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY);
-     }
-     qDirs.pop();
-@@ -582,7 +582,7 @@
-     rDataE.Size = ConvertEndianness(cRDataE->GetSize());
- 
-     CopyMemory(seeker, &rDataE, sizeof(IMAGE_RESOURCE_DATA_ENTRY));
--    cRDataE->m_dwWrittenAt = DWORD(seeker);
-+    cRDataE->m_dwWrittenAt = ULONG_PTR(seeker);
-     seeker += sizeof(IMAGE_RESOURCE_DATA_ENTRY);
- 
-     qDataEntries.pop();
-@@ -594,7 +594,7 @@
-   while (!qStrings.empty()) {
-     CResourceDirectoryEntry* cRDirE = qStrings.front();
- 
--    PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->NameString.NameOffset = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec));
-+    PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->NameString.NameOffset = ConvertEndianness(DWORD(ULONG_PTR(seeker) - ULONG_PTR(pbRsrcSec)));
- 
-     char* szName = cRDirE->GetName();
-     WORD iLen = strlen(szName) + 1;
-@@ -626,7 +626,7 @@
-   while (!qDataEntries2.empty()) {
-     CResourceDataEntry* cRDataE = qDataEntries2.front();
-     CopyMemory(seeker, cRDataE->GetData(), cRDataE->GetSize());
--    PIMAGE_RESOURCE_DATA_ENTRY(cRDataE->m_dwWrittenAt)->OffsetToData = ConvertEndianness(seeker - pbRsrcSec + m_dwResourceSectionVA);
-+    PIMAGE_RESOURCE_DATA_ENTRY(cRDataE->m_dwWrittenAt)->OffsetToData = ConvertEndianness(DWORD(seeker - pbRsrcSec + m_dwResourceSectionVA));
- 
-     seeker += RALIGN(cRDataE->GetSize(), 8);
- 
-@@ -636,7 +636,7 @@
-   /*
-    * Set all of the directory entries offsets.
-    */
--  SetOffsets(m_cResDir, DWORD(pbRsrcSec));
-+  SetOffsets(m_cResDir, ULONG_PTR(pbRsrcSec));
- }
- 
- // Sets the offsets in directory entries
-@@ -650,7 +650,7 @@
-       SetOffsets(resDir->GetEntry(i)->GetSubDirectory(), newResDirAt);
-     }
-     else {
--      rde->OffsetToData = ConvertEndianness(resDir->GetEntry(i)->GetDataEntry()->m_dwWrittenAt - newResDirAt);
-+      rde->OffsetToData = ConvertEndianness(DWORD(resDir->GetEntry(i)->GetDataEntry()->m_dwWrittenAt - newResDirAt));
-     }
-   }
- }
-@@ -758,7 +758,7 @@
- // Returns -1 if can not be found
- int CResourceDirectory::Find(char* szName) {
-   if (IS_INTRESOURCE(szName))
--    return Find((WORD) (DWORD) szName);
-+    return Find((WORD) (ULONG_PTR) szName);
-   else
-     if (szName[0] == '#')
-       return Find(WORD(atoi(szName + 1)));
-@@ -836,7 +836,7 @@
-   if (IS_INTRESOURCE(szName)) {
-     m_bHasName = false;
-     m_szName = 0;
--    m_wId = (WORD) (DWORD) szName;
-+    m_wId = (WORD) (ULONG_PTR) szName;
-   }
-   else {
-     m_bHasName = true;
-@@ -851,7 +851,7 @@
-   if (IS_INTRESOURCE(szName)) {
-     m_bHasName = false;
-     m_szName = 0;
--    m_wId = (WORD) (DWORD) szName;
-+    m_wId = (WORD) (ULONG_PTR) szName;
-   }
-   else {
-     m_bHasName = true;
-Index: Source/ResourceEditor.h
---- ../release/nsis-2.17-src/Source/ResourceEditor.h	2006-04-28 08:54:42.000000000 -0700
-+++ ./Source/ResourceEditor.h	2006-07-31 05:48:44.000000000 -0700
-@@ -173,7 +173,7 @@
- 
-   void Destroy();
- 
--  DWORD m_dwWrittenAt;
-+  ULONG_PTR m_dwWrittenAt;
- 
- private:
-   IMAGE_RESOURCE_DIRECTORY m_rdDir;
-@@ -197,7 +197,7 @@
- 
-   CResourceDataEntry* GetDataEntry();
- 
--  DWORD m_dwWrittenAt;
-+  ULONG_PTR m_dwWrittenAt;
- 
- private:
-   bool m_bHasName;
-@@ -226,7 +226,7 @@
-   DWORD GetSize();
-   DWORD GetCodePage();
- 
--  DWORD m_dwWrittenAt;
-+  ULONG_PTR m_dwWrittenAt;
- 
- private:
-   BYTE* m_pbData;
-Index: Source/script.cpp
---- ../release/nsis-2.17-src/Source/script.cpp	2006-03-28 10:22:34.000000000 -0800
-+++ ./Source/script.cpp	2006-07-31 20:56:03.000000000 -0700
-@@ -4748,8 +4748,8 @@
-           {
-             struct
-             {
--              long l;
--              long h;
-+              int l;
-+              int h;
-             } words;
-             long long ll;
-           };
-@@ -6075,8 +6075,8 @@
-         {
-           struct
-           {
--            long l;
--            long h;
-+            int l;
-+            int h;
-           } words;
-           long long ll;
-         };
-Index: Source/util.cpp
---- ../release/nsis-2.17-src/Source/util.cpp	2006-04-28 08:54:42.000000000 -0700
-+++ ./Source/util.cpp	2006-07-31 05:48:44.000000000 -0700
-@@ -312,7 +312,7 @@
-   FIX_ENDIAN_INT32_INPLACE(rdEntry.OffsetToData);
-   MY_ASSERT(!rdEntry.DirectoryOffset.DataIsDirectory, "bad resource directory");
- 
--  PRESOURCE_DIRECTORY rdIcons = PRESOURCE_DIRECTORY(rdEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot));
-+  PRESOURCE_DIRECTORY rdIcons = PRESOURCE_DIRECTORY(rdEntry.DirectoryOffset.OffsetToDirectory + ULONG_PTR(rdRoot));
- 
-   MY_ASSERT((size_t)rdIcons - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer");
- 
-@@ -325,7 +325,7 @@
-     FIX_ENDIAN_INT32_INPLACE(icoEntry.OffsetToData);
- 
-     MY_ASSERT(!icoEntry.DirectoryOffset.DataIsDirectory, "bad resource directory");
--    PRESOURCE_DIRECTORY rd = PRESOURCE_DIRECTORY(icoEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot));
-+    PRESOURCE_DIRECTORY rd = PRESOURCE_DIRECTORY(icoEntry.DirectoryOffset.OffsetToDirectory + ULONG_PTR(rdRoot));
-     
-     MY_ASSERT((size_t)rd - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer");
- 
-@@ -334,7 +334,7 @@
- 
-     MY_ASSERT(datEntry.DirectoryOffset.DataIsDirectory, "bad resource directory");
-     
--    PIMAGE_RESOURCE_DATA_ENTRY rde = PIMAGE_RESOURCE_DATA_ENTRY(datEntry.OffsetToData + DWORD(rdRoot));
-+    PIMAGE_RESOURCE_DATA_ENTRY rde = PIMAGE_RESOURCE_DATA_ENTRY(datEntry.OffsetToData + ULONG_PTR(rdRoot));
- 
-     MY_ASSERT((size_t)rde - (size_t)exeHeader > exeHeaderSize, "corrupted EXE - invalid pointer");
- 
-@@ -355,10 +355,10 @@
-     }
- 
-     // Set offset
--    DWORD dwOffset = FIX_ENDIAN_INT32(rde->OffsetToData) + DWORD(rdRoot) - dwResourceSectionVA - DWORD(exeHeader);
-+    DWORD dwOffset = FIX_ENDIAN_INT32(rde->OffsetToData) + ULONG_PTR(rdRoot) - dwResourceSectionVA - ULONG_PTR(exeHeader);
-     *(LPDWORD) seeker = FIX_ENDIAN_INT32(dwOffset);
- 
--    MY_ASSERT(dwOffset > exeHeaderSize || dwOffset < (DWORD)rdRoot - (DWORD)exeHeader, "invalid data offset - icon resource probably compressed");
-+    MY_ASSERT(dwOffset > exeHeaderSize || dwOffset < (ULONG_PTR)rdRoot - (ULONG_PTR)exeHeader, "invalid data offset - icon resource probably compressed");
-   }
- 
-   LPBYTE seeker = uninstIconData;
-Index: Source/writer.cpp
---- ../release/nsis-2.17-src/Source/writer.cpp	2006-03-11 03:13:07.000000000 -0800
-+++ ./Source/writer.cpp	2006-07-31 13:27:37.000000000 -0700
-@@ -64,7 +64,7 @@
- }
- 
- #ifdef NSIS_CONFIG_CRC_SUPPORT
--extern "C" unsigned long NSISCALL CRC32(unsigned long crc, const unsigned char *buf, unsigned int len);
-+extern "C" unsigned int NSISCALL CRC32(unsigned int crc, const unsigned char *buf, unsigned int len);
- 
- void crc_writer_sink::write_data(const void *data, const size_t size)
- {
-Index: Source/writer.h
---- ../release/nsis-2.17-src/Source/writer.h	2006-03-11 03:13:07.000000000 -0800
-+++ ./Source/writer.h	2006-07-31 13:27:58.000000000 -0700
-@@ -57,12 +57,12 @@
- #ifdef NSIS_CONFIG_CRC_SUPPORT
- class crc_writer_sink : public writer_sink {
- public:
--  crc_writer_sink(unsigned long *crc) : m_crc(crc) {}
-+  crc_writer_sink(unsigned int *crc) : m_crc(crc) {}
- 
-   virtual void write_data(const void *data, const size_t size);
- 
- private:
--  unsigned long *m_crc;
-+  unsigned int *m_crc;
- 
- };
- #endif
diff --git a/src/win32/patches/openssl-w64.patch b/src/win32/patches/openssl-w64.patch
deleted file mode 100644
index 2c75428..0000000
--- a/src/win32/patches/openssl-w64.patch
+++ /dev/null
@@ -1,2663 +0,0 @@
-diff -Naur ../openssl-0.9.8j/Configure ./Configure
---- ../openssl-0.9.8j/Configure	2008-12-29 01:18:23.000000000 +0100
-+++ ./Configure	2009-01-08 10:24:35.000000000 +0100
-@@ -477,6 +477,8 @@
- # MinGW
- "mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -shared:.dll.a",
- 
-+"mingw64", "mingw32-gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -Wall -D_WIN32_WINNT=0x333:::MINGW64:-lws2_32 -lgdi32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${no_asm}:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a",
-+
- # UWIN 
- "UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
- 
-@@ -1055,7 +1057,7 @@
- 
- $no_shared = 0 if ($fipsdso && !$IsMK1MF);
- 
--$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
-+$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/);
- $exe_ext=".nlm" if ($target =~ /netware/);
- $exe_ext=".pm"  if ($target =~ /vos/);
- if ($openssldir eq "" and $prefix eq "")
-@@ -1501,6 +1503,7 @@
- 	s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
- 	s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
- 	s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_FIPS) \$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
-+        s/^DIRS=   crypto ssl engines apps test tools/DIRS=   crypto ssl apps test tools/ if ($disabled{'hw'});
- 	if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
- 		{
- 		my $sotmp = $1;
-diff -Naur ../openssl-0.9.8j/Configure.orig ./Configure.orig
---- ../openssl-0.9.8j/Configure.orig	1970-01-01 01:00:00.000000000 +0100
-+++ ./Configure.orig	2008-12-29 01:18:23.000000000 +0100
-@@ -0,0 +1,2030 @@
-+:
-+eval 'exec perl -S $0 ${1+"$@"}'
-+    if $running_under_some_shell;
-+##
-+##  Configure -- OpenSSL source tree configuration script
-+##
-+
-+require 5.000;
-+eval 'use strict;';
-+
-+print STDERR "Warning: perl module strict not found.\n" if ($@);
-+
-+# see INSTALL for instructions.
-+
-+my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [enable-montasm] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n";
-+
-+# Options:
-+#
-+# --openssldir  install OpenSSL in OPENSSLDIR (Default: DIR/ssl if the
-+#               --prefix option is given; /usr/local/ssl otherwise)
-+# --prefix      prefix for the OpenSSL include, lib and bin directories
-+#               (Default: the OPENSSLDIR directory)
-+#
-+# --install_prefix  Additional prefix for package builders (empty by
-+#               default).  This needn't be set in advance, you can
-+#               just as well use "make INSTALL_PREFIX=/whatever install".
-+#
-+# --with-krb5-dir  Declare where Kerberos 5 lives.  The libraries are expected
-+#		to live in the subdirectory lib/ and the header files in
-+#		include/.  A value is required.
-+# --with-krb5-lib  Declare where the Kerberos 5 libraries live.  A value is
-+#		required.
-+#		(Default: KRB5_DIR/lib)
-+# --with-krb5-include  Declare where the Kerberos 5 header files live.  A
-+#		value is required.
-+#		(Default: KRB5_DIR/include)
-+# --with-krb5-flavor  Declare what flavor of Kerberos 5 is used.  Currently
-+#		supported values are "MIT" and "Heimdal".  A value is required.
-+#
-+# --test-sanity Make a number of sanity checks on the data in this file.
-+#               This is a debugging tool for OpenSSL developers.
-+#
-+# no-hw-xxx     do not compile support for specific crypto hardware.
-+#               Generic OpenSSL-style methods relating to this support
-+#               are always compiled but return NULL if the hardware
-+#               support isn't compiled.
-+# no-hw         do not compile support for any crypto hardware.
-+# [no-]threads  [don't] try to create a library that is suitable for
-+#               multithreaded applications (default is "threads" if we
-+#               know how to do it)
-+# [no-]shared	[don't] try to create shared libraries when supported.
-+# no-asm        do not use assembler
-+# no-dso        do not compile in any native shared-library methods. This
-+#               will ensure that all methods just return NULL.
-+# no-krb5       do not compile in any KRB5 library or code.
-+# [no-]zlib     [don't] compile support for zlib compression.
-+# zlib-dynamic	Like "zlib", but the zlib library is expected to be a shared
-+#		library and will be loaded in run-time by the OpenSSL library.
-+# enable-montasm 0.9.8 branch only: enable Montgomery x86 assembler backport
-+#               from 0.9.9
-+# 386           generate 80386 code
-+# no-sse2	disables IA-32 SSE2 code, above option implies no-sse2
-+# no-<cipher>   build without specified algorithm (rsa, idea, rc5, ...)
-+# -<xxx> +<xxx> compiler options are passed through 
-+#
-+# DEBUG_SAFESTACK use type-safe stacks to enforce type-safety on stack items
-+#		provided to stack calls. Generates unique stack functions for
-+#		each possible stack type.
-+# DES_PTR	use pointer lookup vs arrays in the DES in crypto/des/des_locl.h
-+# DES_RISC1	use different DES_ENCRYPT macro that helps reduce register
-+#		dependancies but needs to more registers, good for RISC CPU's
-+# DES_RISC2	A different RISC variant.
-+# DES_UNROLL	unroll the inner DES loop, sometimes helps, somtimes hinders.
-+# DES_INT	use 'int' instead of 'long' for DES_LONG in crypto/des/des.h
-+#		This is used on the DEC Alpha where long is 8 bytes
-+#		and int is 4
-+# BN_LLONG	use the type 'long long' in crypto/bn/bn.h
-+# MD2_CHAR	use 'char' instead of 'int' for MD2_INT in crypto/md2/md2.h
-+# MD2_LONG	use 'long' instead of 'int' for MD2_INT in crypto/md2/md2.h
-+# IDEA_SHORT	use 'short' instead of 'int' for IDEA_INT in crypto/idea/idea.h
-+# IDEA_LONG	use 'long' instead of 'int' for IDEA_INT in crypto/idea/idea.h
-+# RC2_SHORT	use 'short' instead of 'int' for RC2_INT in crypto/rc2/rc2.h
-+# RC2_LONG	use 'long' instead of 'int' for RC2_INT in crypto/rc2/rc2.h
-+# RC4_CHAR	use 'char' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
-+# RC4_LONG	use 'long' instead of 'int' for RC4_INT in crypto/rc4/rc4.h
-+# RC4_INDEX	define RC4_INDEX in crypto/rc4/rc4_locl.h.  This turns on
-+#		array lookups instead of pointer use.
-+# RC4_CHUNK	enables code that handles data aligned at long (natural CPU
-+#		word) boundary.
-+# RC4_CHUNK_LL	enables code that handles data aligned at long long boundary
-+#		(intended for 64-bit CPUs running 32-bit OS).
-+# BF_PTR	use 'pointer arithmatic' for Blowfish (unsafe on Alpha).
-+# BF_PTR2	intel specific version (generic version is more efficient).
-+#
-+# Following are set automatically by this script
-+#
-+# MD5_ASM	use some extra md5 assember,
-+# SHA1_ASM	use some extra sha1 assember, must define L_ENDIAN for x86
-+# RMD160_ASM	use some extra ripemd160 assember,
-+# SHA256_ASM	sha256_block is implemented in assembler
-+# SHA512_ASM	sha512_block is implemented in assembler
-+# AES_ASM	ASE_[en|de]crypt is implemented in assembler
-+
-+my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
-+
-+# MD2_CHAR slags pentium pros
-+my $x86_gcc_opts="RC4_INDEX MD2_INT";
-+
-+# MODIFY THESE PARAMETERS IF YOU ARE GOING TO USE THE 'util/speed.sh SCRIPT
-+# Don't worry about these normally
-+
-+my $tcc="cc";
-+my $tflags="-fast -Xa";
-+my $tbn_mul="";
-+my $tlib="-lnsl -lsocket";
-+#$bits1="SIXTEEN_BIT ";
-+#$bits2="THIRTY_TWO_BIT ";
-+my $bits1="THIRTY_TWO_BIT ";
-+my $bits2="SIXTY_FOUR_BIT ";
-+
-+my $x86_elf_asm="x86cpuid-elf.o:bn86-elf.o co86-elf.o MAYBE-MO86-elf.o:dx86-elf.o yx86-elf.o:ax86-elf.o:bx86-elf.o:mx86-elf.o:sx86-elf.o s512sse2-elf.o:cx86-elf.o:rx86-elf.o rc4_skey.o:rm86-elf.o:r586-elf.o";
-+my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o MAYBE-MO86-cof.o:dx86-cof.o yx86-cof.o:ax86-cof.o:bx86-cof.o:mx86-cof.o:sx86-cof.o s512sse2-cof.o:cx86-cof.o:rx86-cof.o rc4_skey.o:rm86-cof.o:r586-cof.o";
-+my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o MAYBE-MO86-out.o:dx86-out.o yx86-out.o:ax86-out.o:bx86-out.o:mx86-out.o:sx86-out.o s512sse2-out.o:cx86-out.o:rx86-out.o rc4_skey.o:rm86-out.o:r586-out.o";
-+
-+my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o::";
-+my $ia64_asm=":bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o:::sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o::";
-+
-+my $no_asm="::::::::::";
-+
-+# As for $BSDthreads. Idea is to maintain "collective" set of flags,
-+# which would cover all BSD flavors. -pthread applies to them all, 
-+# but is treated differently. OpenBSD expands is as -D_POSIX_THREAD
-+# -lc_r, which is sufficient. FreeBSD 4.x expands it as -lc_r,
-+# which has to be accompanied by explicit -D_THREAD_SAFE and
-+# sometimes -D_REENTRANT. FreeBSD 5.x expands it as -lc_r, which
-+# seems to be sufficient?
-+my $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT";
-+
-+#config-string	$cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags
-+
-+my %table=(
-+# File 'TABLE' (created by 'make TABLE') contains the data from this list,
-+# formatted for better readability.
-+
-+
-+#"b",		"${tcc}:${tflags}::${tlib}:${bits1}:${tbn_mul}::",
-+#"bl-4c-2c",	"${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR MD2_CHAR:${tbn_mul}::",
-+#"bl-4c-ri",	"${tcc}:${tflags}::${tlib}:${bits1}BN_LLONG RC4_CHAR RC4_INDEX:${tbn_mul}::",
-+#"b2-is-ri-dp",	"${tcc}:${tflags}::${tlib}:${bits2}IDEA_SHORT RC4_INDEX DES_PTR:${tbn_mul}::",
-+
-+# Our development configs
-+"purify",	"purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::",
-+"debug",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror::(unknown)::-lefence::::",
-+"debug-ben",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown):::::bn86-elf.o co86-elf.o",
-+"debug-ben-openbsd","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
-+"debug-ben-openbsd-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
-+"debug-ben-debug",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::::",
-+"debug-ben-strict",	"gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown)::::::",
-+"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
-+"debug-bodo",	"gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
-+"debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll",
-+"debug-steve64", "gcc:-m64 -DL_ENDIAN -DTERMIO -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -DOPENSSL_NO_DEPRECATED -g -pedantic -Wall -Werror -Wno-long-long -Wsign-compare -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-steve32", "gcc:-m32 -DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -DOPENSSL_NO_DEPRECATED -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-steve",	"gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
-+"debug-steve-opt",	"gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -O3 -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
-+"debug-steve-linux-pseudo64",	"gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DOPENSSL_NO_ASM -g -mcpu=i486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:SIXTY_FOUR_BIT:${no_asm}:dlfcn:linux-shared",
-+"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLI [...]
-+"debug-geoff","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
-+"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
-+"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"dist",		"cc:-O::(unknown)::::::",
-+
-+# Basic configs that should work on any (32 and less bit) box
-+"gcc",		"gcc:-O3::(unknown):::BN_LLONG:::",
-+"cc",		"cc:-O::(unknown)::::::",
-+
-+####VOS Configurations
-+"vos-gcc","gcc:-O3 -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
-+"debug-vos-gcc","gcc:-O0 -g -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
-+
-+#### Solaris x86 with GNU C setups
-+# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it
-+# here because whenever GNU C instantiates an assembler template it
-+# surrounds it with #APP #NO_APP comment pair which (at least Solaris
-+# 7_x86) /usr/ccs/bin/as fails to assemble with "Illegal mnemonic"
-+# error message.
-+"solaris-x86-gcc","gcc:-O3 -fomit-frame-pointer -march=pentium -Wall -DL_ENDIAN -DOPENSSL_NO_INLINE_ASM::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+# -shared -static-libgcc might appear controversial, but modules taken
-+# from static libgcc do not have relocations and linking them into our
-+# shared objects doesn't have any negative side-effects. On the contrary,
-+# doing so makes it possible to use gcc shared build with Sun C. Given
-+# that gcc generates faster code [thanks to inline assembler], I would
-+# actually recommend to consider using gcc shared build even with vendor
-+# compiler:-)
-+#						<appro at fy.chalmers.se>
-+"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN -DMD32_REG_T=int::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+ 
-+#### Solaris x86 with Sun C setups
-+"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+#### SPARC Solaris with GNU C setups
-+"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
-+"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+####
-+"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+#### SPARC Solaris with Sun C setups
-+# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
-+# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
-+# SC5.0 note: Compiler common patch 107357-01 or later is required!
-+"solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs",
-+####
-+"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 
-+
-+#### SunOS configs, assuming sparc for the gcc one.
-+#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
-+"sunos-gcc","gcc:-O3 -mv8 -Dssize_t=int::(unknown):SUNOS::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL DES_PTR DES_RISC1:${no_asm}::",
-+
-+#### IRIX 5.x configs
-+# -mips2 flag is added by ./config when appropriate.
-+"irix-gcc","gcc:-O3 -DTERMIOS -DB_ENDIAN::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK DES_UNROLL DES_RISC2 DES_PTR BF_PTR:${no_asm}:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"irix-cc", "cc:-O2 -use_readonly_const -DTERMIOS -DB_ENDIAN::(unknown):::BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC2 DES_UNROLL BF_PTR:${no_asm}:dlfcn:irix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+#### IRIX 6.x configs
-+# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
-+# './Configure irix-cc -o32' manually.
-+"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+# N64 ABI builds.
-+"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+#### Unified HP-UX ANSI C configs.
-+# Special notes:
-+# - Originally we were optimizing at +O4 level. It should be noted
-+#   that the only difference between +O3 and +O4 is global inter-
-+#   procedural analysis. As it has to be performed during the link
-+#   stage the compiler leaves behind certain pseudo-code in lib*.a
-+#   which might be release or even patch level specific. Generating
-+#   the machine code for and analyzing the *whole* program appears
-+#   to be *extremely* memory demanding while the performance gain is
-+#   actually questionable. The situation is intensified by the default
-+#   HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
-+#   which is way too low for +O4. In other words, doesn't +O3 make
-+#   more sense?
-+# - Keep in mind that the HP compiler by default generates code
-+#   suitable for execution on the host you're currently compiling at.
-+#   If the toolkit is ment to be used on various PA-RISC processors
-+#   consider './config +DAportable'.
-+# - +DD64 is chosen in favour of +DA2.0W because it's meant to be
-+#   compatible with *future* releases.
-+# - If you run ./Configure hpux-parisc-[g]cc manually don't forget to
-+#   pass -D_REENTRANT on HP-UX 10 and later.
-+# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
-+#   32-bit message digests. (For the moment of this writing) HP C
-+#   doesn't seem to "digest" too many local variables (they make "him"
-+#   chew forever:-). For more details look-up MD32_XARRAY comment in
-+#   crypto/sha/sha_lcl.h.
-+#					<appro at fy.chalmers.se>
-+#
-+# Since there is mention of this in shlib/hpux10-cc.sh
-+"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1::pa-risc2.o::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+# More attempts at unified 10.X and 11.X targets for HP C compiler.
-+#
-+# Chris Ruemmler <ruemmler at cup.hp.com>
-+# Kevin Steves <ks at hp.se>
-+"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"hpux-parisc1_0-cc","cc:+DAportable +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2.o::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+# HP/UX IA-64 targets
-+"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+# Frank Geurts <frank.geurts at nl.abnamro.com> has patiently assisted with
-+# with debugging of the following config.
-+"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+# GCC builds...
-+"hpux-ia64-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"hpux64-ia64-gcc","gcc:-mlp64 -O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-mlp64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 
-+
-+# Legacy HPUX 9.X configs...
-+"hpux-cc",	"cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O2 -z::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"hpux-gcc",	"gcc:-DB_ENDIAN -DBN_DIV2W -O3::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
-+"MPE/iX-gcc",	"gcc:-D_ENDIAN -DBN_DIV2W -O3 -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB::(unknown):MPE:-L/SYSLOG/PUB -lsyslog -lsocket -lcurses:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:::",
-+
-+# DEC Alpha OSF/1/Tru64 targets.
-+#
-+#	"What's in a name? That which we call a rose
-+#	 By any other word would smell as sweet."
-+#
-+# - William Shakespeare, "Romeo & Juliet", Act II, scene II.
-+#
-+# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
-+#
-+"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${no_asm}:dlfcn:alpha-osf1-shared:::.so",
-+"osf1-alpha-cc",  "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${no_asm}:dlfcn:alpha-osf1-shared:::.so",
-+"tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${no_asm}:dlfcn:alpha-osf1-shared::-msym:.so",
-+
-+####
-+#### Variety of LINUX:-)
-+####
-+# *-generic* is endian-neutral target, but ./config is free to
-+# throw in -D[BL]_ENDIAN, whichever appropriate...
-+"linux-generic32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-ppc",	"gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc32.o::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+#### IA-32 targets...
-+"linux-ia32-icc",	"icc:-DL_ENDIAN -DTERMIO -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-elf",	"gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-aout",	"gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}",
-+####
-+"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-ppc64",	"gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc64.o::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-ia64",	"gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-x86_64",	"gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+#### SPARC Linux setups
-+# Ray Miller <ray.miller at computing-services.oxford.ac.uk> has patiently
-+# assisted with debugging of following two configs.
-+"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+# it's a real mess with -mcpu=ultrasparc option under Linux, but
-+# -Wa,-Av8plus should do the trick no matter what.
-+"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+# GCC 3.1 is a requirement
-+"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+#### Alpha Linux with GNU C and Compaq C setups
-+# Special notes:
-+# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
-+#   ought to run './Configure linux-alpha+bwx-gcc' manually, do
-+#   complement the command line with -mcpu=ev56, -mcpu=ev6 or whatever
-+#   which is appropriate.
-+# - If you use ccc keep in mind that -fast implies -arch host and the
-+#   compiler is free to issue instructions which gonna make elder CPU
-+#   choke. If you wish to build "blended" toolkit, add -arch generic
-+#   *after* -fast and invoke './Configure linux-alpha-ccc' manually.
-+#
-+#					<appro at fy.chalmers.se>
-+#
-+"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
-+"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
-+
-+#### *BSD [do see comment about ${BSDthreads} above!]
-+"BSD-generic32","gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"BSD-x86",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"BSD-x86-elf",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debug-BSD-x86-elf",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"BSD-sparcv8",	"gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+"BSD-generic64","gcc:-DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
-+# simply *happens* to work around a compiler bug in gcc 3.3.3,
-+# triggered by RIPEMD160 code.
-+"BSD-sparc64",	"gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"BSD-ia64",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"BSD-x86_64",	"gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+"bsdi-elf-gcc",     "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall::(unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+"nextstep",	"cc:-O -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
-+"nextstep3.3",	"cc:-O3 -Wall:<libc.h>:(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:::",
-+
-+# NCR MP-RAS UNIX ver 02.03.01
-+"ncr-scde","cc:-O6 -Xa -Hoff=BEHAVED -686 -Hwide -Hiw::(unknown)::-lsocket -lnsl -lc89:${x86_gcc_des} ${x86_gcc_opts}:::",
-+
-+# QNX
-+"qnx4",	"cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
-+"qnx6",	"cc:-DL_ENDIAN -DTERMIOS::(unknown)::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:",
-+
-+#### SCO/Caldera targets.
-+#
-+# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
-+# Now we only have blended unixware-* as it's the only one used by ./config.
-+# If you want to optimize for particular microarchitecture, bypass ./config
-+# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
-+# Note that not all targets include assembler support. Mostly because of
-+# lack of motivation to support out-of-date platforms with out-of-date
-+# compiler drivers and assemblers. Tim Rice <tim at multitalents.net> has
-+# patiently assisted to debug most of it.
-+#
-+# UnixWare 2.0x fails destest with -O.
-+"unixware-2.0","cc:-DFILIO_H -DNO_STRINGS_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
-+"unixware-2.1","cc:-O -DFILIO_H::-Kthread::-lsocket -lnsl -lresolv -lx:${x86_gcc_des} ${x86_gcc_opts}:::",
-+"unixware-7","cc:-O -DFILIO_H -Kalloca::-Kthread::-lsocket -lnsl:BN_LLONG MD2_CHAR RC4_INDEX ${x86_gcc_des}:${x86_elf_asm}:dlfcn:svr5-shared:-Kpic::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"unixware-7-gcc","gcc:-DL_ENDIAN -DFILIO_H -O3 -fomit-frame-pointer -march=pentium -Wall::-D_REENTRANT::-lsocket -lnsl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:gnu-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+# SCO 5 - Ben Laurie <ben at algroup.co.uk> says the -O breaks the SCO cc.
-+"sco5-cc",  "cc:-belf::(unknown)::-lsocket -lnsl:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:svr3-shared:-Kpic::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"sco5-gcc",  "gcc:-O3 -fomit-frame-pointer::(unknown)::-lsocket -lnsl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:svr3-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+
-+#### IBM's AIX.
-+"aix3-cc",  "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
-+"aix-gcc",  "gcc:-O -DB_ENDIAN::-pthread:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
-+"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-pthread:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-maix64 -shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
-+# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
-+# at build time. $OBJECT_MODE is respected at ./config stage!
-+"aix-cc",   "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
-+"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
-+
-+#
-+# Cray T90 and similar (SDSC)
-+# It's Big-endian, but the algorithms work properly when B_ENDIAN is NOT
-+# defined.  The T90 ints and longs are 8 bytes long, and apparently the
-+# B_ENDIAN code assumes 4 byte ints.  Fortunately, the non-B_ENDIAN and
-+# non L_ENDIAN code aligns the bytes in each word correctly.
-+#
-+# The BIT_FIELD_LIMITS define is to avoid two fatal compiler errors:
-+#'Taking the address of a bit field is not allowed. '
-+#'An expression with bit field exists as the operand of "sizeof" '
-+# (written by Wayne Schroeder <schroede at SDSC.EDU>)
-+#
-+# j90 is considered the base machine type for unicos machines,
-+# so this configuration is now called "cray-j90" ...
-+"cray-j90", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG DES_INT:::",
-+
-+#
-+# Cray T3E (Research Center Juelich, beckman at acl.lanl.gov)
-+#
-+# The BIT_FIELD_LIMITS define was written for the C90 (it seems).  I added
-+# another use.  Basically, the problem is that the T3E uses some bit fields
-+# for some st_addr stuff, and then sizeof and address-of fails
-+# I could not use the ams/alpha.o option because the Cray assembler, 'cam'
-+# did not like it.
-+"cray-t3e", "cc: -DBIT_FIELD_LIMITS -DTERMIOS::(unknown):CRAY::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:::",
-+
-+# DGUX, 88100.
-+"dgux-R3-gcc",	"gcc:-O3 -fomit-frame-pointer::(unknown):::RC4_INDEX DES_UNROLL:::",
-+"dgux-R4-gcc",	"gcc:-O3 -fomit-frame-pointer::(unknown)::-lnsl -lsocket:RC4_INDEX DES_UNROLL:::",
-+"dgux-R4-x86-gcc",	"gcc:-O3 -fomit-frame-pointer -DL_ENDIAN::(unknown)::-lnsl -lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
-+
-+# Sinix/ReliantUNIX RM400
-+# NOTE: The CDS++ Compiler up to V2.0Bsomething has the IRIX_CC_BUG optimizer problem. Better use -g  */
-+"ReliantUNIX","cc:-KPIC -g -DTERMIOS -DB_ENDIAN::-Kthread:SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:BN_LLONG DES_PTR DES_RISC2 DES_UNROLL BF_PTR:${no_asm}:dlfcn:reliantunix-shared:::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"SINIX","cc:-O::(unknown):SNI:-lsocket -lnsl -lc -L/usr/ucblib -lucb:RC4_INDEX RC4_CHAR:::",
-+"SINIX-N","/usr/ucb/cc:-O2 -misaligned::(unknown)::-lucb:RC4_INDEX RC4_CHAR:::",
-+
-+# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
-+"BS2000-OSD","c89:-O -XLLML -XLLMK -XL -DB_ENDIAN -DTERMIOS -DCHARSET_EBCDIC::(unknown)::-lsocket -lnsl:THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::",
-+
-+# OS/390 Unix an EBCDIC-based Unix system on IBM mainframe
-+# You need to compile using the c89.sh wrapper in the tools directory, because the
-+# IBM compiler does not like the -L switch after any object modules.
-+#
-+"OS390-Unix","c89.sh:-O -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H  -D_ALL_SOURCE::(unknown):::THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::",
-+
-+# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
-+"VC-WIN64I","cl::::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${no_asm}:win32",
-+"VC-WIN64A","cl::::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${no_asm}:win32",
-+
-+# Visual C targets
-+"VC-NT","cl::::WINNT::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
-+"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
-+"VC-WIN32","cl::::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
-+
-+# Borland C++ 4.5
-+"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
-+
-+# MinGW
-+"mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -shared:.dll.a",
-+
-+# UWIN 
-+"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
-+
-+# Cygwin
-+"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
-+"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_coff_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
-+"debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
-+
-+# NetWare from David Ward (dsward at novell.com)
-+# requires either MetroWerks NLM development tools, or gcc / nlmconv
-+# NetWare defaults socket bio to WinSock sockets. However,
-+# the builds can be configured to use BSD sockets instead.
-+# netware-clib => legacy CLib c-runtime support
-+"netware-clib", "mwccnlm::::::${x86_gcc_opts}::",
-+"netware-clib-bsdsock", "mwccnlm::::::${x86_gcc_opts}::",
-+"netware-clib-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -I/ndk/ws295sdk/include -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYSNAME_NETWARE -O2 -Wall:::::${x86_gcc_opts}::",
-+"netware-clib-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/nwsdk/include/nlm -DNETWARE_BSDSOCK -DNETDB_USE_INTERNET -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYSNAME_NETWARE -O2 -Wall:::::${x86_gcc_opts}::",
-+# netware-libc => LibC/NKS support
-+"netware-libc", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
-+"netware-libc-bsdsock", "mwccnlm::::::BN_LLONG ${x86_gcc_opts}::",
-+"netware-libc-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
-+"netware-libc-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
-+
-+# DJGPP
-+"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:",
-+
-+# Ultrix from Bernhard Simon <simon at zid.tuwien.ac.at>
-+"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
-+"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::BN_LLONG::::",
-+# K&R C is no longer supported; you need gcc on old Ultrix installations
-+##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::",
-+
-+##### MacOS X (a.k.a. Rhapsody or Darwin) setup
-+"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::",
-+"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-+"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc64.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-+"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-+"debug-darwin-i386-cc","cc:-arch i386 -g3 -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-+"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -fomit-frame-pointer -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-+"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-+
-+##### A/UX
-+"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
-+
-+##### Sony NEWS-OS 4.x
-+"newsos4-gcc","gcc:-O -DB_ENDIAN::(unknown):NEWS4:-lmld -liberty:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::::",
-+
-+##### GNU Hurd
-+"hurd-x86",  "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC",
-+
-+##### OS/2 EMX
-+"OS2-EMX", "gcc::::::::",
-+
-+##### VxWorks for various targets
-+"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
-+"vxworks-ppc750","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG):::VXWORKS:-r:::::",
-+"vxworks-ppc750-debug","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::",
-+"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
-+"vxworks-mipsle","ccmips:-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -DL_ENDIAN -EL -Wl,-EL -mips2 -mno-branch-likely -G 0 -fno-builtin -msoft-float -DCPU=MIPS32 -DMIPSEL -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r::${no_asm}::::::ranlibmips:",
-+
-+##### Compaq Non-Stop Kernel (Tandem)
-+"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::",
-+
-+);
-+
-+my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
-+		    VC-NT VC-CE VC-WIN32
-+		    BC-32 OS2-EMX
-+		    netware-clib netware-clib-bsdsock
-+		    netware-libc netware-libc-bsdsock);
-+
-+my $idx = 0;
-+my $idx_cc = $idx++;
-+my $idx_cflags = $idx++;
-+my $idx_unistd = $idx++;
-+my $idx_thread_cflag = $idx++;
-+my $idx_sys_id = $idx++;
-+my $idx_lflags = $idx++;
-+my $idx_bn_ops = $idx++;
-+my $idx_cpuid_obj = $idx++;
-+my $idx_bn_obj = $idx++;
-+my $idx_des_obj = $idx++;
-+my $idx_aes_obj = $idx++;
-+my $idx_bf_obj = $idx++;
-+my $idx_md5_obj = $idx++;
-+my $idx_sha1_obj = $idx++;
-+my $idx_cast_obj = $idx++;
-+my $idx_rc4_obj = $idx++;
-+my $idx_rmd160_obj = $idx++;
-+my $idx_rc5_obj = $idx++;
-+my $idx_dso_scheme = $idx++;
-+my $idx_shared_target = $idx++;
-+my $idx_shared_cflag = $idx++;
-+my $idx_shared_ldflag = $idx++;
-+my $idx_shared_extension = $idx++;
-+my $idx_ranlib = $idx++;
-+my $idx_arflags = $idx++;
-+
-+my $prefix="";
-+my $openssldir="";
-+my $exe_ext="";
-+my $install_prefix="";
-+my $fipslibdir="/usr/local/ssl/fips-1.0/lib/";
-+my $nofipscanistercheck=0;
-+my $fipsdso=0;
-+my $fipscanisterinternal="n";
-+my $baseaddr="0xFB00000";
-+my $no_threads=0;
-+my $threads=0;
-+my $no_shared=0; # but "no-shared" is default
-+my $zlib=1;      # but "no-zlib" is default
-+my $no_krb5=0;   # but "no-krb5" is implied unless "--with-krb5-..." is used
-+my $no_rfc3779=1; # but "no-rfc3779" is default
-+my $montasm=1;   # but "no-montasm" is default
-+my $no_asm=0;
-+my $no_dso=0;
-+my $no_gmp=0;
-+my @skip=();
-+my $Makefile="Makefile";
-+my $des_locl="crypto/des/des_locl.h";
-+my $des	="crypto/des/des.h";
-+my $bn	="crypto/bn/bn.h";
-+my $md2	="crypto/md2/md2.h";
-+my $rc4	="crypto/rc4/rc4.h";
-+my $rc4_locl="crypto/rc4/rc4_locl.h";
-+my $idea	="crypto/idea/idea.h";
-+my $rc2	="crypto/rc2/rc2.h";
-+my $bf	="crypto/bf/bf_locl.h";
-+my $bn_asm	="bn_asm.o";
-+my $des_enc="des_enc.o fcrypt_b.o";
-+my $fips_des_enc="fips_des_enc.o";
-+my $aes_enc="aes_core.o aes_cbc.o";
-+my $bf_enc	="bf_enc.o";
-+my $cast_enc="c_enc.o";
-+my $rc4_enc="rc4_enc.o rc4_skey.o";
-+my $rc5_enc="rc5_enc.o";
-+my $md5_obj="";
-+my $sha1_obj="";
-+my $rmd160_obj="";
-+my $processor="";
-+my $default_ranlib;
-+my $perl;
-+my $fips=0;
-+
-+
-+# All of the following is disabled by default (RC5 was enabled before 0.9.8):
-+
-+my %disabled = ( # "what"         => "comment" [or special keyword "experimental"]
-+                 "camellia"       => "default",
-+                 "capieng"        => "default",
-+                 "cms"            => "default",
-+                 "gmp"            => "default",
-+                 "jpake"          => "experimental",
-+                 "mdc2"           => "default",
-+                 "montasm"        => "default", # explicit option in 0.9.8 only (implicitly enabled in 0.9.9)
-+                 "rc5"            => "default",
-+                 "rfc3779"        => "default",
-+                 "seed"           => "default",
-+                 "shared"         => "default",
-+                 "zlib"           => "default",
-+                 "zlib-dynamic"   => "default"
-+               );
-+my @experimental = ();
-+
-+# This is what $depflags will look like with the above defaults
-+# (we need this to see if we should advise the user to run "make depend"):
-+my $default_depflags = " -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_CMS -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED";
-+
-+
-+# Explicit "no-..." options will be collected in %disabled along with the defaults.
-+# To remove something from %disabled, use "enable-foo" (unless it's experimental).
-+# For symmetry, "disable-foo" is a synonym for "no-foo".
-+
-+# For features called "experimental" here, a more explicit "experimental-foo" is needed to enable.
-+# We will collect such requests in @experimental.
-+# To avoid accidental use of experimental features, applications will have to use -DOPENSSL_EXPERIMENTAL_FOO.
-+
-+
-+my $no_sse2=0;
-+
-+&usage if ($#ARGV < 0);
-+
-+my $flags;
-+my $depflags;
-+my $openssl_experimental_defines;
-+my $openssl_algorithm_defines;
-+my $openssl_thread_defines;
-+my $openssl_sys_defines="";
-+my $openssl_other_defines;
-+my $libs;
-+my $libkrb5="";
-+my $target;
-+my $options;
-+my $symlink;
-+my $make_depend=0;
-+my %withargs=();
-+
-+my @argvcopy=@ARGV;
-+my $argvstring="";
-+my $argv_unprocessed=1;
-+
-+while($argv_unprocessed)
-+	{
-+	$flags="";
-+	$depflags="";
-+	$openssl_experimental_defines="";
-+	$openssl_algorithm_defines="";
-+	$openssl_thread_defines="";
-+	$openssl_sys_defines="";
-+	$openssl_other_defines="";
-+	$libs="";
-+	$target="";
-+	$options="";
-+	$symlink=1;
-+
-+	$argv_unprocessed=0;
-+	$argvstring=join(' ', at argvcopy);
-+
-+PROCESS_ARGS:
-+	foreach (@argvcopy)
-+		{
-+		s /^-no-/no-/; # some people just can't read the instructions
-+
-+		# rewrite some options in "enable-..." form
-+		s /^-?-?shared$/enable-shared/;
-+		s /^threads$/enable-threads/;
-+		s /^zlib$/enable-zlib/;
-+		s /^zlib-dynamic$/enable-zlib-dynamic/;
-+
-+		if (/^no-(.+)$/ || /^disable-(.+)$/)
-+			{
-+			if (!($disabled{$1} eq "experimental"))
-+				{
-+				if ($1 eq "ssl")
-+					{
-+					$disabled{"ssl2"} = "option(ssl)";
-+					$disabled{"ssl3"} = "option(ssl)";
-+					}
-+				elsif ($1 eq "tls")
-+					{
-+					$disabled{"tls1"} = "option(tls)"
-+					}
-+				else
-+					{
-+					$disabled{$1} = "option";
-+					}
-+				}
-+			}			
-+		elsif (/^enable-(.+)$/ || /^experimental-(.+)$/)
-+			{
-+			my $algo = $1;
-+			if ($disabled{$algo} eq "experimental")
-+				{
-+				die "You are requesting an experimental feature; please say 'experimental-$algo' if you are sure\n"
-+					unless (/^experimental-/);
-+				push @experimental, $algo;
-+				}
-+			delete $disabled{$algo};
-+
-+			$threads = 1 if ($algo eq "threads");
-+			}
-+		elsif (/^--test-sanity$/)
-+			{
-+			exit(&test_sanity());
-+			}
-+		elsif (/^reconfigure/ || /^reconf/)
-+			{
-+			if (open(IN,"<$Makefile"))
-+				{
-+				while (<IN>)
-+					{
-+					chomp;
-+					if (/^CONFIGURE_ARGS=(.*)/)
-+						{
-+						$argvstring=$1;
-+						@argvcopy=split(' ',$argvstring);
-+						die "Incorrect data to reconfigure, please do a normal configuration\n"
-+							if (grep(/^reconf/, at argvcopy));
-+						print "Reconfiguring with: $argvstring\n";
-+						$argv_unprocessed=1;
-+						close(IN);
-+						last PROCESS_ARGS;
-+						}
-+					}
-+				close(IN);
-+				}
-+			die "Insufficient data to reconfigure, please do a normal configuration\n";
-+			}
-+		elsif (/^386$/)
-+			{ $processor=386; }
-+		elsif (/^fips$/)
-+			{
-+			$fips=1;
-+		        }
-+		elsif (/^rsaref$/)
-+			{
-+			# No RSAref support any more since it's not needed.
-+			# The check for the option is there so scripts aren't
-+			# broken
-+			}
-+		elsif (/^nofipscanistercheck$/)
-+			{
-+			$fips = 1;
-+			$nofipscanistercheck = 1;
-+			}
-+		elsif (/^fipscanisterbuild$/)
-+			{
-+			$fips = 1;
-+			$nofipscanistercheck = 1;
-+			$fipslibdir="";
-+			$fipscanisterinternal="y";
-+			}
-+		elsif (/^fipsdso$/)
-+			{
-+			$fips = 1;
-+			$nofipscanistercheck = 1;
-+			$fipslibdir="";
-+			$fipscanisterinternal="y";
-+			$fipsdso = 1;
-+			}
-+		elsif (/^[-+]/)
-+			{
-+			if (/^-[lL](.*)$/)
-+				{
-+				$libs.=$_." ";
-+				}
-+			elsif (/^-[^-]/ or /^\+/)
-+				{
-+				$flags.=$_." ";
-+				}
-+			elsif (/^--prefix=(.*)$/)
-+				{
-+				$prefix=$1;
-+				}
-+			elsif (/^--openssldir=(.*)$/)
-+				{
-+				$openssldir=$1;
-+				}
-+			elsif (/^--install.prefix=(.*)$/)
-+				{
-+				$install_prefix=$1;
-+				}
-+			elsif (/^--with-krb5-(dir|lib|include|flavor)=(.*)$/)
-+				{
-+				$withargs{"krb5-".$1}=$2;
-+				}
-+			elsif (/^--with-zlib-lib=(.*)$/)
-+				{
-+				$withargs{"zlib-lib"}=$1;
-+				}
-+			elsif (/^--with-zlib-include=(.*)$/)
-+				{
-+				$withargs{"zlib-include"}="-I$1";
-+				}
-+			elsif (/^--with-fipslibdir=(.*)$/)
-+				{
-+				$fipslibdir="$1/";
-+				}
-+			elsif (/^--with-baseaddr=(.*)$/)
-+				{
-+				$baseaddr="$1";
-+				}
-+			else
-+				{
-+				print STDERR $usage;
-+				exit(1);
-+				}
-+			}
-+		elsif ($_ =~ /^([^:]+):(.+)$/)
-+			{
-+			eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string
-+			$target=$1;
-+			}
-+		else
-+			{
-+			die "target already defined - $target (offending arg: $_)\n" if ($target ne "");
-+			$target=$_;
-+			}
-+
-+		unless ($_ eq $target || /^no-/ || /^disable-/)
-+			{
-+			# "no-..." follows later after implied disactivations
-+			# have been derived.  (Don't take this too seroiusly,
-+			# we really only write OPTIONS to the Makefile out of
-+			# nostalgia.)
-+
-+			if ($options eq "")
-+				{ $options = $_; }
-+			else
-+				{ $options .= " ".$_; }
-+			}
-+		}
-+	}
-+
-+
-+
-+if ($processor eq "386")
-+	{
-+	$disabled{"sse2"} = "forced";
-+	}
-+
-+if (!defined($withargs{"krb5-flavor"}) || $withargs{"krb5-flavor"} eq "")
-+	{
-+	$disabled{"krb5"} = "krb5-flavor not specified";
-+	}
-+
-+if (!defined($disabled{"zlib-dynamic"}))
-+	{
-+	# "zlib-dynamic" was specifically enabled, so enable "zlib"
-+	delete $disabled{"zlib"};
-+	}
-+
-+if (defined($disabled{"rijndael"}))
-+	{
-+	$disabled{"aes"} = "forced";
-+	}
-+if (defined($disabled{"des"}))
-+	{
-+	$disabled{"mdc2"} = "forced";
-+	}
-+if (defined($disabled{"ec"}))
-+	{
-+	$disabled{"ecdsa"} = "forced";
-+	$disabled{"ecdh"} = "forced";
-+	}
-+
-+# SSL 2.0 requires MD5 and RSA
-+if (defined($disabled{"md5"}) || defined($disabled{"rsa"}))
-+	{
-+	$disabled{"ssl2"} = "forced";
-+	}
-+
-+# SSL 3.0 and TLS requires MD5 and SHA and either RSA or DSA+DH
-+if (defined($disabled{"md5"}) || defined($disabled{"sha"})
-+    || (defined($disabled{"rsa"})
-+        && (defined($disabled{"dsa"}) || defined($disabled{"dh"}))))
-+	{
-+	$disabled{"ssl3"} = "forced";
-+	$disabled{"tls1"} = "forced";
-+	}
-+
-+if (defined($disabled{"tls1"}))
-+	{
-+	$disabled{"tlsext"} = "forced";
-+	}
-+
-+if ($target eq "TABLE") {
-+	foreach $target (sort keys %table) {
-+		print_table_entry($target);
-+	}
-+	exit 0;
-+}
-+
-+if ($target eq "LIST") {
-+	foreach (sort keys %table) {
-+		print;
-+		print "\n";
-+	}
-+	exit 0;
-+}
-+
-+if ($target =~ m/^CygWin32(-.*)$/) {
-+	$target = "Cygwin".$1;
-+}
-+
-+print "Configuring for $target\n";
-+
-+&usage if (!defined($table{$target}));
-+
-+my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
-+my $cc = $fields[$idx_cc];
-+my $cflags = $fields[$idx_cflags];
-+my $unistd = $fields[$idx_unistd];
-+my $thread_cflag = $fields[$idx_thread_cflag];
-+my $sys_id = $fields[$idx_sys_id];
-+my $lflags = $fields[$idx_lflags];
-+my $bn_ops = $fields[$idx_bn_ops];
-+my $cpuid_obj = $fields[$idx_cpuid_obj];
-+my $bn_obj = $fields[$idx_bn_obj];
-+my $des_obj = $fields[$idx_des_obj];
-+my $aes_obj = $fields[$idx_aes_obj];
-+my $bf_obj = $fields[$idx_bf_obj];
-+my $md5_obj = $fields[$idx_md5_obj];
-+my $sha1_obj = $fields[$idx_sha1_obj];
-+my $cast_obj = $fields[$idx_cast_obj];
-+my $rc4_obj = $fields[$idx_rc4_obj];
-+my $rmd160_obj = $fields[$idx_rmd160_obj];
-+my $rc5_obj = $fields[$idx_rc5_obj];
-+my $dso_scheme = $fields[$idx_dso_scheme];
-+my $shared_target = $fields[$idx_shared_target];
-+my $shared_cflag = $fields[$idx_shared_cflag];
-+my $shared_ldflag = $fields[$idx_shared_ldflag];
-+my $shared_extension = $fields[$idx_shared_extension];
-+my $ranlib = $fields[$idx_ranlib];
-+my $arflags = $fields[$idx_arflags];
-+
-+if ($fips)
-+	{
-+	delete $disabled{"shared"} if ($disabled{"shared"} eq "default");
-+	$disabled{"asm"}="forced"
-+		if ($target !~ "VC\-.*" &&
-+		    "$cpuid_obj:$bn_obj:$aes_obj:$des_obj:$sha1_obj" eq "::::");
-+	}
-+
-+foreach (sort @experimental)
-+	{
-+	my $ALGO;
-+	($ALGO = $_) =~ tr/[a-z]/[A-Z]/;
-+
-+	# opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined
-+	$openssl_experimental_defines .= "#define OPENSSL_NO_$ALGO\n";
-+	$cflags .= " -DOPENSSL_EXPERIMENTAL_$ALGO";
-+	}
-+
-+foreach (sort (keys %disabled))
-+	{
-+	$options .= " no-$_";
-+
-+	printf "    no-%-12s %-10s", $_, "[$disabled{$_}]";
-+
-+	if (/^dso$/)
-+		{ $no_dso = 1; }
-+	elsif (/^threads$/)
-+		{ $no_threads = 1; }
-+	elsif (/^shared$/)
-+		{ $no_shared = 1; }
-+	elsif (/^zlib$/)
-+		{ $zlib = 0; }
-+	elsif (/^montasm$/)
-+		{ $montasm = 0; }
-+	elsif (/^static-engine$/)
-+		{ }
-+	elsif (/^zlib-dynamic$/)
-+		{ }
-+	elsif (/^symlinks$/)
-+		{ $symlink = 0; }
-+	elsif (/^sse2$/)
-+		{ $no_sse2 = 1; }
-+	else
-+		{
-+		my ($ALGO, $algo);
-+		($ALGO = $algo = $_) =~ tr/[a-z]/[A-Z]/;
-+
-+		if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/)
-+			{
-+			$openssl_other_defines .= "#define OPENSSL_NO_$ALGO\n";
-+			print " OPENSSL_NO_$ALGO";
-+		
-+			if (/^err$/)	{ $flags .= "-DOPENSSL_NO_ERR "; }
-+			elsif (/^asm$/)	{ $no_asm = 1; }
-+			}
-+		else
-+			{
-+			$openssl_algorithm_defines .= "#define OPENSSL_NO_$ALGO\n";
-+			print " OPENSSL_NO_$ALGO";
-+
-+			if (/^krb5$/)
-+				{ $no_krb5 = 1; }
-+			else
-+				{
-+				push @skip, $algo;
-+				print " (skip dir)";
-+
-+				$depflags .= " -DOPENSSL_NO_$ALGO";
-+				}
-+			}
-+		}
-+
-+	print "\n";
-+	}
-+
-+
-+my $IsMK1MF=scalar grep /^$target$/, at MK1MF_Builds;
-+
-+$IsMK1MF=1 if ($target eq "mingw" && $^O ne "cygwin" && !is_msys());
-+
-+$no_shared = 0 if ($fipsdso && !$IsMK1MF);
-+
-+$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
-+$exe_ext=".nlm" if ($target =~ /netware/);
-+$exe_ext=".pm"  if ($target =~ /vos/);
-+if ($openssldir eq "" and $prefix eq "")
-+	{
-+	if ($fips)
-+		{
-+		$openssldir="/usr/local/ssl/fips";
-+		}
-+	else
-+		{
-+		$openssldir="/usr/local/ssl";
-+		}
-+	}
-+$prefix=$openssldir if $prefix eq "";
-+
-+$default_ranlib= &which("ranlib") or $default_ranlib="true";
-+$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
-+  or $perl="perl";
-+
-+chop $openssldir if $openssldir =~ /\/$/;
-+chop $prefix if $prefix =~ /.\/$/;
-+
-+$openssldir=$prefix . "/ssl" if $openssldir eq "";
-+$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
-+
-+
-+print "IsMK1MF=$IsMK1MF\n";
-+
-+# '%' in $lflags is used to split flags to "pre-" and post-flags
-+my ($prelflags,$postlflags)=split('%',$lflags);
-+if (defined($postlflags))	{ $lflags=$postlflags;  }
-+else				{ $lflags=$prelflags; undef $prelflags; }
-+
-+my $no_shared_warn=0;
-+my $no_user_cflags=0;
-+
-+if ($flags ne "")	{ $cflags="$flags$cflags"; }
-+else			{ $no_user_cflags=1;       }
-+
-+# Kerberos settings.  The flavor must be provided from outside, either through
-+# the script "config" or manually.
-+if (!$no_krb5)
-+	{
-+	my ($lresolv, $lpath, $lext);
-+	if ($withargs{"krb5-flavor"} =~ /^[Hh]eimdal$/)
-+		{
-+		die "Sorry, Heimdal is currently not supported\n";
-+		}
-+	##### HACK to force use of Heimdal.
-+	##### WARNING: Since we don't really have adequate support for Heimdal,
-+	#####          using this will break the build.  You'll have to make
-+	#####          changes to the source, and if you do, please send
-+	#####          patches to openssl-dev at openssl.org
-+	if ($withargs{"krb5-flavor"} =~ /^force-[Hh]eimdal$/)
-+		{
-+		warn "Heimdal isn't really supported.  Your build WILL break\n";
-+		warn "If you fix the problems, please send a patch to openssl-dev\@openssl.org\n";
-+		$withargs{"krb5-dir"} = "/usr/heimdal"
-+			if $withargs{"krb5-dir"} eq "";
-+		$withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
-+			"/lib -lgssapi -lkrb5 -lcom_err"
-+			if $withargs{"krb5-lib"} eq "" && !$IsMK1MF;
-+		$cflags="-DKRB5_HEIMDAL $cflags";
-+		}
-+	if ($withargs{"krb5-flavor"} =~ /^[Mm][Ii][Tt]/)
-+		{
-+		$withargs{"krb5-dir"} = "/usr/kerberos"
-+			if $withargs{"krb5-dir"} eq "";
-+		$withargs{"krb5-lib"} = "-L".$withargs{"krb5-dir"}.
-+			"/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto"
-+			if $withargs{"krb5-lib"} eq "" && !$IsMK1MF;
-+		$cflags="-DKRB5_MIT $cflags";
-+		$withargs{"krb5-flavor"} =~ s/^[Mm][Ii][Tt][._-]*//;
-+		if ($withargs{"krb5-flavor"} =~ /^1[._-]*[01]/)
-+			{
-+			$cflags="-DKRB5_MIT_OLD11 $cflags";
-+			}
-+		}
-+	LRESOLV:
-+	foreach $lpath ("/lib", "/usr/lib")
-+		{
-+		foreach $lext ("a", "so")
-+			{
-+			$lresolv = "$lpath/libresolv.$lext";
-+			last LRESOLV	if (-r "$lresolv");
-+			$lresolv = "";
-+			}
-+		}
-+	$withargs{"krb5-lib"} .= " -lresolv"
-+		if ("$lresolv" ne "");
-+	$withargs{"krb5-include"} = "-I".$withargs{"krb5-dir"}."/include"
-+		if $withargs{"krb5-include"} eq "" &&
-+		   $withargs{"krb5-dir"} ne "";
-+	}
-+
-+# The DSO code currently always implements all functions so that no
-+# applications will have to worry about that from a compilation point
-+# of view. However, the "method"s may return zero unless that platform
-+# has support compiled in for them. Currently each method is enabled
-+# by a define "DSO_<name>" ... we translate the "dso_scheme" config
-+# string entry into using the following logic;
-+my $dso_cflags;
-+if (!$no_dso && $dso_scheme ne "")
-+	{
-+	$dso_scheme =~ tr/[a-z]/[A-Z]/;
-+	if ($dso_scheme eq "DLFCN")
-+		{
-+		$dso_cflags = "-DDSO_DLFCN -DHAVE_DLFCN_H";
-+		}
-+	elsif ($dso_scheme eq "DLFCN_NO_H")
-+		{
-+		$dso_cflags = "-DDSO_DLFCN";
-+		}
-+	else
-+		{
-+		$dso_cflags = "-DDSO_$dso_scheme";
-+		}
-+	$cflags = "$dso_cflags $cflags";
-+	}
-+
-+my $thread_cflags;
-+my $thread_defines;
-+if ($thread_cflag ne "(unknown)" && !$no_threads)
-+	{
-+	# If we know how to do it, support threads by default.
-+	$threads = 1;
-+	}
-+if ($thread_cflag eq "(unknown)" && $threads)
-+	{
-+	# If the user asked for "threads", [s]he is also expected to
-+	# provide any system-dependent compiler options that are
-+	# necessary.
-+	if ($no_user_cflags)
-+		{
-+		print "You asked for multi-threading support, but didn't\n";
-+		print "provide any system-specific compiler options\n";
-+		exit(1);
-+		}
-+	$thread_cflags="-DOPENSSL_THREADS $cflags" ;
-+	$thread_defines .= "#define OPENSSL_THREADS\n";
-+	}
-+else
-+	{
-+	$thread_cflags="-DOPENSSL_THREADS $thread_cflag $cflags";
-+	$thread_defines .= "#define OPENSSL_THREADS\n";
-+#	my $def;
-+#	foreach $def (split ' ',$thread_cflag)
-+#		{
-+#		if ($def =~ s/^-D// && $def !~ /^_/)
-+#			{
-+#			$thread_defines .= "#define $def\n";
-+#			}
-+#		}
-+	}	
-+
-+$lflags="$libs$lflags" if ($libs ne "");
-+
-+if ($no_asm)
-+	{
-+	$cpuid_obj=$bn_obj=$des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj="";
-+	$sha1_obj=$md5_obj=$rmd160_obj="";
-+	$cflags=~s/\-D[BL]_ENDIAN//		if ($fips);
-+	$thread_cflags=~s/\-D[BL]_ENDIAN//	if ($fips);
-+	}
-+if ($montasm)
-+	{
-+	$bn_obj =~ s/MAYBE-MO86-/mo86-/;
-+	}
-+else
-+	{
-+	$bn_obj =~ s/MAYBE-MO86-[a-z.]*//;
-+	}
-+
-+if (!$no_shared)
-+	{
-+	$cast_obj="";	# CAST assembler is not PIC
-+	}
-+
-+if ($threads)
-+	{
-+	$cflags=$thread_cflags;
-+	$openssl_thread_defines .= $thread_defines;
-+	}
-+
-+if ($zlib)
-+	{
-+	$cflags = "-DZLIB $cflags";
-+	if (defined($disabled{"zlib-dynamic"}))
-+		{
-+		$lflags = "$lflags -lz";
-+		}
-+	else
-+		{
-+		$cflags = "-DZLIB_SHARED $cflags";
-+		}
-+	}
-+
-+# You will find shlib_mark1 and shlib_mark2 explained in Makefile.org
-+my $shared_mark = "";
-+if ($shared_target eq "")
-+	{
-+	$no_shared_warn = 1 if !$no_shared && !$fips;
-+	$no_shared = 1;
-+	}
-+if (!$no_shared)
-+	{
-+	if ($shared_cflag ne "")
-+		{
-+		$cflags = "$shared_cflag -DOPENSSL_PIC $cflags";
-+		}
-+	}
-+
-+if (!$IsMK1MF)
-+	{
-+	if ($no_shared)
-+		{
-+		$openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n";
-+		}
-+	else
-+		{
-+		$openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n";
-+		}
-+	}
-+
-+$cpuid_obj.=" uplink.o uplink-cof.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/);
-+
-+#
-+# Platform fix-ups
-+#
-+if ($target =~ /\-icc$/)	# Intel C compiler
-+	{
-+	my $iccver=0;
-+	if (open(FD,"$cc -V 2>&1 |"))
-+		{
-+		while(<FD>) { $iccver=$1 if (/Version ([0-9]+)\./); }
-+		close(FD);
-+		}
-+	if ($iccver>=8)
-+		{
-+		# Eliminate unnecessary dependency from libirc.a. This is
-+		# essential for shared library support, as otherwise
-+		# apps/openssl can end up in endless loop upon startup...
-+		$cflags.=" -Dmemcpy=__builtin_memcpy -Dmemset=__builtin_memset";
-+		}
-+	if ($iccver>=9)
-+		{
-+		$cflags.=" -i-static";
-+		$cflags=~s/\-no_cpprt/-no-cpprt/;
-+		}
-+	if ($iccver>=10)
-+		{
-+		$cflags=~s/\-i\-static/-static-intel/;
-+		}
-+	}
-+
-+# Unlike other OSes (like Solaris, Linux, Tru64, IRIX) BSD run-time
-+# linkers (tested OpenBSD, NetBSD and FreeBSD) "demand" RPATH set on
-+# .so objects. Apparently application RPATH is not global and does
-+# not apply to .so linked with other .so. Problem manifests itself
-+# when libssl.so fails to load libcrypto.so. One can argue that we
-+# should engrave this into Makefile.shared rules or into BSD-* config
-+# lines above. Meanwhile let's try to be cautious and pass -rpath to
-+# linker only when --prefix is not /usr.
-+if ($target =~ /^BSD\-/)
-+	{
-+	$shared_ldflag.=" -Wl,-rpath,\$(LIBRPATH)" if ($prefix !~ m|^/usr[/]*$|);
-+	}
-+
-+if ($sys_id ne "")
-+	{
-+	#$cflags="-DOPENSSL_SYSNAME_$sys_id $cflags";
-+	$openssl_sys_defines="#define OPENSSL_SYSNAME_$sys_id\n";
-+	}
-+
-+if ($ranlib eq "")
-+	{
-+	$ranlib = $default_ranlib;
-+	}
-+
-+#my ($bn1)=split(/\s+/,$bn_obj);
-+#$bn1 = "" unless defined $bn1;
-+#$bn1=$bn_asm unless ($bn1 =~ /\.o$/);
-+#$bn_obj="$bn1";
-+
-+$cpuid_obj="" if ($processor eq "386");
-+
-+$bn_obj = $bn_asm unless $bn_obj ne "";
-+# bn86* is the only one implementing bn_*_part_words
-+$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn86/);
-+$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /bn86/);
-+
-+$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /\-mont|mo86\-/);
-+
-+if ($fips)
-+	{
-+	$openssl_other_defines.="#define OPENSSL_FIPS\n";
-+	}
-+
-+$des_obj=$des_enc	unless ($des_obj =~ /\.o$/);
-+$bf_obj=$bf_enc		unless ($bf_obj =~ /\.o$/);
-+$cast_obj=$cast_enc	unless ($cast_obj =~ /\.o$/);
-+$rc4_obj=$rc4_enc	unless ($rc4_obj =~ /\.o$/);
-+$rc5_obj=$rc5_enc	unless ($rc5_obj =~ /\.o$/);
-+if ($sha1_obj =~ /\.o$/)
-+	{
-+#	$sha1_obj=$sha1_enc;
-+	$cflags.=" -DSHA1_ASM"   if ($sha1_obj =~ /sx86/ || $sha1_obj =~ /sha1/);
-+	$cflags.=" -DSHA256_ASM" if ($sha1_obj =~ /sha256/);
-+	$cflags.=" -DSHA512_ASM" if ($sha1_obj =~ /sha512/);
-+	if ($sha1_obj =~ /sse2/)
-+	    {	if ($no_sse2)
-+		{   $sha1_obj =~ s/\S*sse2\S+//;        }
-+		elsif ($cflags !~ /OPENSSL_IA32_SSE2/)
-+		{   $cflags.=" -DOPENSSL_IA32_SSE2";    }
-+	    }
-+	}
-+if ($md5_obj =~ /\.o$/)
-+	{
-+#	$md5_obj=$md5_enc;
-+	$cflags.=" -DMD5_ASM";
-+	}
-+if ($rmd160_obj =~ /\.o$/)
-+	{
-+#	$rmd160_obj=$rmd160_enc;
-+	$cflags.=" -DRMD160_ASM";
-+	}
-+if ($aes_obj =~ /\.o$/)
-+	{
-+	$cflags.=" -DAES_ASM";
-+	}
-+else	{
-+	$aes_obj=$aes_enc;
-+	}
-+
-+# "Stringify" the C flags string.  This permits it to be made part of a string
-+# and works as well on command lines.
-+$cflags =~ s/([\\\"])/\\\1/g;
-+
-+my $version = "unknown";
-+my $version_num = "unknown";
-+my $major = "unknown";
-+my $minor = "unknown";
-+my $shlib_version_number = "unknown";
-+my $shlib_version_history = "unknown";
-+my $shlib_major = "unknown";
-+my $shlib_minor = "unknown";
-+
-+open(IN,'<crypto/opensslv.h') || die "unable to read opensslv.h:$!\n";
-+while (<IN>)
-+	{
-+	$version=$1 if /OPENSSL.VERSION.TEXT.*OpenSSL (\S+) /;
-+	$version_num=$1 if /OPENSSL.VERSION.NUMBER.*0x(\S+)/;
-+	$shlib_version_number=$1 if /SHLIB_VERSION_NUMBER *"([^"]+)"/;
-+	$shlib_version_history=$1 if /SHLIB_VERSION_HISTORY *"([^"]*)"/;
-+	}
-+close(IN);
-+if ($shlib_version_history ne "") { $shlib_version_history .= ":"; }
-+
-+if ($version =~ /(^[0-9]*)\.([0-9\.]*)/)
-+	{
-+	$major=$1;
-+	$minor=$2;
-+	}
-+
-+if ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/)
-+	{
-+	$shlib_major=$1;
-+	$shlib_minor=$2;
-+	}
-+
-+open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
-+unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
-+open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
-+print OUT "### Generated automatically from Makefile.org by Configure.\n\n";
-+my $sdirs=0;
-+while (<IN>)
-+	{
-+	chomp;
-+	$sdirs = 1 if /^SDIRS=/;
-+	if ($sdirs) {
-+		my $dir;
-+		foreach $dir (@skip) {
-+			s/(\s)$dir\s/$1/;
-+			s/\s$dir$//;
-+			}
-+		}
-+	$sdirs = 0 unless /\\$/;
-+	s/^VERSION=.*/VERSION=$version/;
-+	s/^MAJOR=.*/MAJOR=$major/;
-+	s/^MINOR=.*/MINOR=$minor/;
-+	s/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=$shlib_version_number/;
-+	s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/;
-+	s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/;
-+	s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/;
-+	s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/;
-+	s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
-+	s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
-+	s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
-+	s/^PLATFORM=.*$/PLATFORM=$target/;
-+	s/^OPTIONS=.*$/OPTIONS=$options/;
-+	s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
-+	s/^CC=.*$/CC= $cc/;
-+	s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
-+	s/^CFLAG=.*$/CFLAG= $cflags/;
-+	s/^DEPFLAG=.*$/DEPFLAG=$depflags/;
-+	s/^PEX_LIBS=.*$/PEX_LIBS= $prelflags/;
-+	s/^EX_LIBS=.*$/EX_LIBS= $lflags/;
-+	s/^EXE_EXT=.*$/EXE_EXT= $exe_ext/;
-+	s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/;
-+	s/^BN_ASM=.*$/BN_ASM= $bn_obj/;
-+	s/^DES_ENC=.*$/DES_ENC= $des_obj/;
-+	s/^AES_ASM_OBJ=.*$/AES_ASM_OBJ= $aes_obj/;
-+	s/^BF_ENC=.*$/BF_ENC= $bf_obj/;
-+	s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/;
-+	s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/;
-+	s/^RC5_ENC=.*$/RC5_ENC= $rc5_obj/;
-+	s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/;
-+	s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/;
-+	s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/;
-+	s/^PROCESSOR=.*/PROCESSOR= $processor/;
-+	s/^RANLIB=.*/RANLIB= $ranlib/;
-+	s/^ARFLAGS=.*/ARFLAGS= $arflags/;
-+	s/^PERL=.*/PERL= $perl/;
-+	s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
-+	s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
-+	s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
-+	s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
-+	s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/;
-+	if ($fipsdso)
-+		{
-+		s/^FIPSCANLIB=.*/FIPSCANLIB=libfips/;
-+		s/^SHARED_FIPS=.*/SHARED_FIPS=libfips\$(SHLIB_EXT)/;
-+		s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl fips/;
-+		}
-+	else
-+		{
-+		s/^FIPSCANLIB=.*/FIPSCANLIB=libcrypto/ if $fips;
-+		s/^SHARED_FIPS=.*/SHARED_FIPS=/;
-+		s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl/;
-+		}
-+	s/^FIPSCANISTERINTERNAL=.*/FIPSCANISTERINTERNAL=$fipscanisterinternal/;
-+	s/^BASEADDR=.*/BASEADDR=$baseaddr/;
-+	s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
-+	s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
-+	s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_FIPS) \$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
-+	if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
-+		{
-+		my $sotmp = $1;
-+		s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/;
-+		}
-+	elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.dylib$/)
-+		{
-+		s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.dylib/;
-+		}
-+	elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
-+		{
-+		my $sotmp = $1;
-+		s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
-+		}
-+	elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
-+		{
-+		s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.\$(SHLIB_MAJOR).dylib .dylib/;
-+		}
-+	s/^SHARED_LDFLAGS=.*/SHARED_LDFLAGS=$shared_ldflag/;
-+	print OUT $_."\n";
-+	}
-+close(IN);
-+close(OUT);
-+rename($Makefile,"$Makefile.bak") || die "unable to rename $Makefile\n" if -e $Makefile;
-+rename("$Makefile.new",$Makefile) || die "unable to rename $Makefile.new\n";
-+
-+print "CC            =$cc\n";
-+print "CFLAG         =$cflags\n";
-+print "EX_LIBS       =$lflags\n";
-+print "CPUID_OBJ     =$cpuid_obj\n";
-+print "BN_ASM        =$bn_obj\n";
-+print "DES_ENC       =$des_obj\n";
-+print "AES_ASM_OBJ   =$aes_obj\n";
-+print "BF_ENC        =$bf_obj\n";
-+print "CAST_ENC      =$cast_obj\n";
-+print "RC4_ENC       =$rc4_obj\n";
-+print "RC5_ENC       =$rc5_obj\n";
-+print "MD5_OBJ_ASM   =$md5_obj\n";
-+print "SHA1_OBJ_ASM  =$sha1_obj\n";
-+print "RMD160_OBJ_ASM=$rmd160_obj\n";
-+print "PROCESSOR     =$processor\n";
-+print "RANLIB        =$ranlib\n";
-+print "ARFLAGS       =$arflags\n";
-+print "PERL          =$perl\n";
-+print "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n"
-+	if $withargs{"krb5-include"} ne "";
-+
-+my $des_ptr=0;
-+my $des_risc1=0;
-+my $des_risc2=0;
-+my $des_unroll=0;
-+my $bn_ll=0;
-+my $def_int=2;
-+my $rc4_int=$def_int;
-+my $md2_int=$def_int;
-+my $idea_int=$def_int;
-+my $rc2_int=$def_int;
-+my $rc4_idx=0;
-+my $rc4_chunk=0;
-+my $bf_ptr=0;
-+my @type=("char","short","int","long");
-+my ($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0);
-+my $export_var_as_fn=0;
-+
-+my $des_int;
-+
-+foreach (sort split(/\s+/,$bn_ops))
-+	{
-+	$des_ptr=1 if /DES_PTR/;
-+	$des_risc1=1 if /DES_RISC1/;
-+	$des_risc2=1 if /DES_RISC2/;
-+	$des_unroll=1 if /DES_UNROLL/;
-+	$des_int=1 if /DES_INT/;
-+	$bn_ll=1 if /BN_LLONG/;
-+	$rc4_int=0 if /RC4_CHAR/;
-+	$rc4_int=3 if /RC4_LONG/;
-+	$rc4_idx=1 if /RC4_INDEX/;
-+	$rc4_chunk=1 if /RC4_CHUNK/;
-+	$rc4_chunk=2 if /RC4_CHUNK_LL/;
-+	$md2_int=0 if /MD2_CHAR/;
-+	$md2_int=3 if /MD2_LONG/;
-+	$idea_int=1 if /IDEA_SHORT/;
-+	$idea_int=3 if /IDEA_LONG/;
-+	$rc2_int=1 if /RC2_SHORT/;
-+	$rc2_int=3 if /RC2_LONG/;
-+	$bf_ptr=1 if $_ eq "BF_PTR";
-+	$bf_ptr=2 if $_ eq "BF_PTR2";
-+	($b64l,$b64,$b32,$b16,$b8)=(0,1,0,0,0) if /SIXTY_FOUR_BIT/;
-+	($b64l,$b64,$b32,$b16,$b8)=(1,0,0,0,0) if /SIXTY_FOUR_BIT_LONG/;
-+	($b64l,$b64,$b32,$b16,$b8)=(0,0,1,0,0) if /THIRTY_TWO_BIT/;
-+	($b64l,$b64,$b32,$b16,$b8)=(0,0,0,1,0) if /SIXTEEN_BIT/;
-+	($b64l,$b64,$b32,$b16,$b8)=(0,0,0,0,1) if /EIGHT_BIT/;
-+	$export_var_as_fn=1 if /EXPORT_VAR_AS_FN/;
-+	}
-+
-+open(IN,'<crypto/opensslconf.h.in') || die "unable to read crypto/opensslconf.h.in:$!\n";
-+unlink("crypto/opensslconf.h.new") || die "unable to remove old crypto/opensslconf.h.new:$!\n" if -e "crypto/opensslconf.h.new";
-+open(OUT,'>crypto/opensslconf.h.new') || die "unable to create crypto/opensslconf.h.new:$!\n";
-+print OUT "/* opensslconf.h */\n";
-+print OUT "/* WARNING: Generated automatically from opensslconf.h.in by Configure. */\n\n";
-+
-+print OUT "/* OpenSSL was configured with the following options: */\n";
-+my $openssl_algorithm_defines_trans = $openssl_algorithm_defines;
-+$openssl_experimental_defines =~ s/^\s*#\s*define\s+OPENSSL_NO_(.*)/#ifndef OPENSSL_EXPERIMENTAL_$1\n# ifndef OPENSSL_NO_$1\n#  define OPENSSL_NO_$1\n# endif\n#endif/mg;
-+$openssl_algorithm_defines_trans =~ s/^\s*#\s*define\s+OPENSSL_(.*)/# if defined(OPENSSL_$1) \&\& !defined($1)\n#  define $1\n# endif/mg;
-+$openssl_algorithm_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
-+$openssl_algorithm_defines = "   /* no ciphers excluded */\n" if $openssl_algorithm_defines eq "";
-+$openssl_thread_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
-+$openssl_sys_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
-+$openssl_other_defines =~ s/^\s*#\s*define\s+(.*)/#ifndef $1\n# define $1\n#endif/mg;
-+print OUT $openssl_sys_defines;
-+print OUT "#ifndef OPENSSL_DOING_MAKEDEPEND\n\n";
-+print OUT $openssl_experimental_defines;
-+print OUT "\n";
-+print OUT $openssl_algorithm_defines;
-+print OUT "\n#endif /* OPENSSL_DOING_MAKEDEPEND */\n\n";
-+print OUT $openssl_thread_defines;
-+print OUT $openssl_other_defines,"\n";
-+
-+print OUT "/* The OPENSSL_NO_* macros are also defined as NO_* if the application\n";
-+print OUT "   asks for it.  This is a transient feature that is provided for those\n";
-+print OUT "   who haven't had the time to do the appropriate changes in their\n";
-+print OUT "   applications.  */\n";
-+print OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n";
-+print OUT $openssl_algorithm_defines_trans;
-+print OUT "#endif\n\n";
-+
-+print OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj);
-+
-+while (<IN>)
-+	{
-+	if	(/^#define\s+OPENSSLDIR/)
-+		{ print OUT "#define OPENSSLDIR \"$openssldir\"\n"; }
-+	elsif	(/^#define\s+ENGINESDIR/)
-+		{ print OUT "#define ENGINESDIR \"$prefix/lib/engines\"\n"; }
-+	elsif	(/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/)
-+		{ printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n"
-+			if $export_var_as_fn;
-+		  printf OUT "#%s OPENSSL_EXPORT_VAR_AS_FUNCTION\n",
-+			($export_var_as_fn)?"define":"undef"; }
-+	elsif	(/^#define\s+OPENSSL_UNISTD/)
-+		{
-+		$unistd = "<unistd.h>" if $unistd eq "";
-+		print OUT "#define OPENSSL_UNISTD $unistd\n";
-+		}
-+	elsif	(/^#((define)|(undef))\s+SIXTY_FOUR_BIT_LONG/)
-+		{ printf OUT "#%s SIXTY_FOUR_BIT_LONG\n",($b64l)?"define":"undef"; }
-+	elsif	(/^#((define)|(undef))\s+SIXTY_FOUR_BIT/)
-+		{ printf OUT "#%s SIXTY_FOUR_BIT\n",($b64)?"define":"undef"; }
-+	elsif	(/^#((define)|(undef))\s+THIRTY_TWO_BIT/)
-+		{ printf OUT "#%s THIRTY_TWO_BIT\n",($b32)?"define":"undef"; }
-+	elsif	(/^#((define)|(undef))\s+SIXTEEN_BIT/)
-+		{ printf OUT "#%s SIXTEEN_BIT\n",($b16)?"define":"undef"; }
-+	elsif	(/^#((define)|(undef))\s+EIGHT_BIT/)
-+		{ printf OUT "#%s EIGHT_BIT\n",($b8)?"define":"undef"; }
-+	elsif	(/^#((define)|(undef))\s+BN_LLONG\s*$/)
-+		{ printf OUT "#%s BN_LLONG\n",($bn_ll)?"define":"undef"; }
-+	elsif	(/^\#define\s+DES_LONG\s+.*/)
-+		{ printf OUT "#define DES_LONG unsigned %s\n",
-+			($des_int)?'int':'long'; }
-+	elsif	(/^\#(define|undef)\s+DES_PTR/)
-+		{ printf OUT "#%s DES_PTR\n",($des_ptr)?'define':'undef'; }
-+	elsif	(/^\#(define|undef)\s+DES_RISC1/)
-+		{ printf OUT "#%s DES_RISC1\n",($des_risc1)?'define':'undef'; }
-+	elsif	(/^\#(define|undef)\s+DES_RISC2/)
-+		{ printf OUT "#%s DES_RISC2\n",($des_risc2)?'define':'undef'; }
-+	elsif	(/^\#(define|undef)\s+DES_UNROLL/)
-+		{ printf OUT "#%s DES_UNROLL\n",($des_unroll)?'define':'undef'; }
-+	elsif	(/^#define\s+RC4_INT\s/)
-+		{ printf OUT "#define RC4_INT unsigned %s\n",$type[$rc4_int]; }
-+	elsif	(/^#undef\s+RC4_CHUNK/)
-+		{
-+		printf OUT "#undef RC4_CHUNK\n" if $rc4_chunk==0;
-+		printf OUT "#define RC4_CHUNK unsigned long\n" if $rc4_chunk==1;
-+		printf OUT "#define RC4_CHUNK unsigned long long\n" if $rc4_chunk==2;
-+		}
-+	elsif	(/^#((define)|(undef))\s+RC4_INDEX/)
-+		{ printf OUT "#%s RC4_INDEX\n",($rc4_idx)?"define":"undef"; }
-+	elsif (/^#(define|undef)\s+I386_ONLY/)
-+		{ printf OUT "#%s I386_ONLY\n", ($processor eq "386")?
-+			"define":"undef"; }
-+	elsif	(/^#define\s+MD2_INT\s/)
-+		{ printf OUT "#define MD2_INT unsigned %s\n",$type[$md2_int]; }
-+	elsif	(/^#define\s+IDEA_INT\s/)
-+		{printf OUT "#define IDEA_INT unsigned %s\n",$type[$idea_int];}
-+	elsif	(/^#define\s+RC2_INT\s/)
-+		{printf OUT "#define RC2_INT unsigned %s\n",$type[$rc2_int];}
-+	elsif (/^#(define|undef)\s+BF_PTR/)
-+		{
-+		printf OUT "#undef BF_PTR\n" if $bf_ptr == 0;
-+		printf OUT "#define BF_PTR\n" if $bf_ptr == 1;
-+		printf OUT "#define BF_PTR2\n" if $bf_ptr == 2;
-+	        }
-+	else
-+		{ print OUT $_; }
-+	}
-+close(IN);
-+close(OUT);
-+rename("crypto/opensslconf.h","crypto/opensslconf.h.bak") || die "unable to rename crypto/opensslconf.h\n" if -e "crypto/opensslconf.h";
-+rename("crypto/opensslconf.h.new","crypto/opensslconf.h") || die "unable to rename crypto/opensslconf.h.new\n";
-+
-+
-+# Fix the date
-+
-+print "SIXTY_FOUR_BIT_LONG mode\n" if $b64l;
-+print "SIXTY_FOUR_BIT mode\n" if $b64;
-+print "THIRTY_TWO_BIT mode\n" if $b32;
-+print "SIXTEEN_BIT mode\n" if $b16;
-+print "EIGHT_BIT mode\n" if $b8;
-+print "DES_PTR used\n" if $des_ptr;
-+print "DES_RISC1 used\n" if $des_risc1;
-+print "DES_RISC2 used\n" if $des_risc2;
-+print "DES_UNROLL used\n" if $des_unroll;
-+print "DES_INT used\n" if $des_int;
-+print "BN_LLONG mode\n" if $bn_ll;
-+print "RC4 uses u$type[$rc4_int]\n" if $rc4_int != $def_int;
-+print "RC4_INDEX mode\n" if $rc4_idx;
-+print "RC4_CHUNK is undefined\n" if $rc4_chunk==0;
-+print "RC4_CHUNK is unsigned long\n" if $rc4_chunk==1;
-+print "RC4_CHUNK is unsigned long long\n" if $rc4_chunk==2;
-+print "MD2 uses u$type[$md2_int]\n" if $md2_int != $def_int;
-+print "IDEA uses u$type[$idea_int]\n" if $idea_int != $def_int;
-+print "RC2 uses u$type[$rc2_int]\n" if $rc2_int != $def_int;
-+print "BF_PTR used\n" if $bf_ptr == 1; 
-+print "BF_PTR2 used\n" if $bf_ptr == 2; 
-+
-+if($IsMK1MF) {
-+	open (OUT,">crypto/buildinf.h") || die "Can't open buildinf.h";
-+	printf OUT <<EOF;
-+#ifndef MK1MF_BUILD
-+  /* auto-generated by Configure for crypto/cversion.c:
-+   * for Unix builds, crypto/Makefile.ssl generates functional definitions;
-+   * Windows builds (and other mk1mf builds) compile cversion.c with
-+   * -DMK1MF_BUILD and use definitions added to this file by util/mk1mf.pl. */
-+  #error "Windows builds (PLATFORM=$target) use mk1mf.pl-created Makefiles"
-+#endif
-+EOF
-+	close(OUT);
-+} else {
-+	my $make_command = "make PERL=\'$perl\'";
-+	my $make_targets = "";
-+	$make_targets .= " links" if $symlink;
-+	$make_targets .= " depend" if $depflags ne $default_depflags && $make_depend;
-+	$make_targets .= " gentests" if $symlink;
-+	(system $make_command.$make_targets) == 0 or exit $?
-+		if $make_targets ne "";
-+	if ( $perl =~ m@^/@) {
-+	    &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
-+	    &dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
-+	} else {
-+	    # No path for Perl known ...
-+	    &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
-+	    &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
-+	}
-+	if ($depflags ne $default_depflags && !$make_depend) {
-+		print <<EOF;
-+
-+Since you've disabled or enabled at least one algorithm, you need to do
-+the following before building:
-+
-+	make depend
-+EOF
-+	}
-+}
-+
-+# create the ms/version32.rc file if needed
-+if ($IsMK1MF && ($target !~ /^netware/)) {
-+	my ($v1, $v2, $v3, $v4);
-+	if ($version_num =~ /(^[0-9a-f]{1})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i) {
-+		$v1=hex $1;
-+		$v2=hex $2;
-+		$v3=hex $3;
-+		$v4=hex $4;
-+	}
-+	open (OUT,">ms/version32.rc") || die "Can't open ms/version32.rc";
-+	print OUT <<EOF;
-+#include <winver.h>
-+
-+LANGUAGE 0x09,0x01
-+
-+1 VERSIONINFO
-+  FILEVERSION $v1,$v2,$v3,$v4
-+  PRODUCTVERSION $v1,$v2,$v3,$v4
-+  FILEFLAGSMASK 0x3fL
-+#ifdef _DEBUG
-+  FILEFLAGS 0x01L
-+#else
-+  FILEFLAGS 0x00L
-+#endif
-+  FILEOS VOS__WINDOWS32
-+  FILETYPE VFT_DLL
-+  FILESUBTYPE 0x0L
-+BEGIN
-+    BLOCK "StringFileInfo"
-+    BEGIN
-+	BLOCK "040904b0"
-+	BEGIN
-+#if defined(FIPS)
-+	    VALUE "Comments", "WARNING: TEST VERSION ONLY ***NOT*** FIPS 140-2 VALIDATED.\\0"
-+#endif
-+	    // Required:	    
-+	    VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
-+#if defined(FIPS)
-+	    VALUE "FileDescription", "TEST UNVALIDATED FIPS140-2 DLL\\0"
-+#else
-+	    VALUE "FileDescription", "OpenSSL Shared Library\\0"
-+#endif
-+	    VALUE "FileVersion", "$version\\0"
-+#if defined(CRYPTO)
-+	    VALUE "InternalName", "libeay32\\0"
-+	    VALUE "OriginalFilename", "libeay32.dll\\0"
-+#elif defined(SSL)
-+	    VALUE "InternalName", "ssleay32\\0"
-+	    VALUE "OriginalFilename", "ssleay32.dll\\0"
-+#elif defined(FIPS)
-+	    VALUE "InternalName", "libosslfips\\0"
-+	    VALUE "OriginalFilename", "libosslfips.dll\\0"
-+#endif
-+	    VALUE "ProductName", "The OpenSSL Toolkit\\0"
-+	    VALUE "ProductVersion", "$version\\0"
-+	    // Optional:
-+	    //VALUE "Comments", "\\0"
-+	    VALUE "LegalCopyright", "Copyright � 1998-2007 The OpenSSL Project. Copyright � 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
-+	    //VALUE "LegalTrademarks", "\\0"
-+	    //VALUE "PrivateBuild", "\\0"
-+	    //VALUE "SpecialBuild", "\\0"
-+	END
-+    END
-+    BLOCK "VarFileInfo"
-+    BEGIN
-+        VALUE "Translation", 0x409, 0x4b0
-+    END
-+END
-+EOF
-+	close(OUT);
-+  }
-+  
-+print <<EOF;
-+
-+Configured for $target.
-+EOF
-+
-+print <<\EOF if (!$no_threads && !$threads);
-+
-+The library could not be configured for supporting multi-threaded
-+applications as the compiler options required on this system are not known.
-+See file INSTALL for details if you need multi-threading.
-+EOF
-+
-+print <<\EOF if ($no_shared_warn);
-+
-+You gave the option 'shared'.  Normally, that would give you shared libraries.
-+Unfortunately, the OpenSSL configuration doesn't include shared library support
-+for this platform yet, so it will pretend you gave the option 'no-shared'.  If
-+you can inform the developpers (openssl-dev\@openssl.org) how to support shared
-+libraries on this platform, they will at least look at it and try their best
-+(but please first make sure you have tried with a current version of OpenSSL).
-+EOF
-+
-+print <<\EOF if ($fipscanisterinternal eq "y");
-+
-+WARNING: OpenSSL has been configured using unsupported option(s) to internally
-+generate a fipscanister.o object module for TESTING PURPOSES ONLY; that
-+compiled module is NOT FIPS 140-2 validated and CANNOT be used to replace the
-+OpenSSL FIPS Object Module as identified by the CMVP
-+(http://csrc.nist.gov/cryptval/) in any application requiring the use of FIPS
-+140-2 validated software. 
-+
-+This is an OpenSSL 0.9.8 test version.
-+
-+See the file README.FIPS for details of how to build a test library.
-+
-+EOF
-+
-+exit(0);
-+
-+sub usage
-+	{
-+	print STDERR $usage;
-+	print STDERR "\npick os/compiler from:\n";
-+	my $j=0;
-+	my $i;
-+        my $k=0;
-+	foreach $i (sort keys %table)
-+		{
-+		next if $i =~ /^debug/;
-+		$k += length($i) + 1;
-+		if ($k > 78)
-+			{
-+			print STDERR "\n";
-+			$k=length($i);
-+			}
-+		print STDERR $i . " ";
-+		}
-+	foreach $i (sort keys %table)
-+		{
-+		next if $i !~ /^debug/;
-+		$k += length($i) + 1;
-+		if ($k > 78)
-+			{
-+			print STDERR "\n";
-+			$k=length($i);
-+			}
-+		print STDERR $i . " ";
-+		}
-+	print STDERR "\n\nNOTE: If in doubt, on Unix-ish systems use './config'.\n";
-+	exit(1);
-+	}
-+
-+sub which
-+	{
-+	my($name)=@_;
-+	my $path;
-+	foreach $path (split /:/, $ENV{PATH})
-+		{
-+		if (-f "$path/$name$exe_ext" and -x _)
-+			{
-+			return "$path/$name$exe_ext" unless ($name eq "perl" and
-+			 system("$path/$name$exe_ext -e " . '\'exit($]<5.0);\''));
-+			}
-+		}
-+	}
-+
-+sub dofile
-+	{
-+	my $f; my $p; my %m; my @a; my $k; my $ff;
-+	($f,$p,%m)=@_;
-+
-+	open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n";
-+	@a=<IN>;
-+	close(IN);
-+	foreach $k (keys %m)
-+		{
-+		grep(/$k/ && ($_=sprintf($m{$k}."\n",$p)), at a);
-+		}
-+	open(OUT,">$f.new") || die "unable to open $f.new:$!\n";
-+	print OUT @a;
-+	close(OUT);
-+	rename($f,"$f.bak") || die "unable to rename $f\n" if -e $f;
-+	rename("$f.new",$f) || die "unable to rename $f.new\n";
-+	}
-+
-+sub print_table_entry
-+	{
-+	my $target = shift;
-+
-+	(my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags,
-+	my $bn_ops,my $cpuid_obj,my $bn_obj,my $des_obj,my $aes_obj, my $bf_obj,
-+	my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj,
-+	my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag,
-+	my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)=
-+	split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
-+			
-+	print <<EOF
-+
-+*** $target
-+\$cc           = $cc
-+\$cflags       = $cflags
-+\$unistd       = $unistd
-+\$thread_cflag = $thread_cflag
-+\$sys_id       = $sys_id
-+\$lflags       = $lflags
-+\$bn_ops       = $bn_ops
-+\$cpuid_obj    = $cpuid_obj
-+\$bn_obj       = $bn_obj
-+\$des_obj      = $des_obj
-+\$aes_obj      = $aes_obj
-+\$bf_obj       = $bf_obj
-+\$md5_obj      = $md5_obj
-+\$sha1_obj     = $sha1_obj
-+\$cast_obj     = $cast_obj
-+\$rc4_obj      = $rc4_obj
-+\$rmd160_obj   = $rmd160_obj
-+\$rc5_obj      = $rc5_obj
-+\$dso_scheme   = $dso_scheme
-+\$shared_target= $shared_target
-+\$shared_cflag = $shared_cflag
-+\$shared_ldflag = $shared_ldflag
-+\$shared_extension = $shared_extension
-+\$ranlib       = $ranlib
-+\$arflags      = $arflags
-+EOF
-+	}
-+
-+sub test_sanity
-+	{
-+	my $errorcnt = 0;
-+
-+	print STDERR "=" x 70, "\n";
-+	print STDERR "=== SANITY TESTING!\n";
-+	print STDERR "=== No configuration will be done, all other arguments will be ignored!\n";
-+	print STDERR "=" x 70, "\n";
-+
-+	foreach $target (sort keys %table)
-+		{
-+		@fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
-+
-+		if ($fields[$idx_dso_scheme-1] =~ /^(dl|dlfcn|win32|vms)$/)
-+			{
-+			$errorcnt++;
-+			print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
-+			print STDERR "              in the previous field\n";
-+			}
-+		elsif ($fields[$idx_dso_scheme+1] =~ /^(dl|dlfcn|win32|vms)$/)
-+			{
-+			$errorcnt++;
-+			print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
-+			print STDERR "              in the following field\n";
-+			}
-+		elsif ($fields[$idx_dso_scheme] !~ /^(dl|dlfcn|win32|vms|)$/)
-+			{
-+			$errorcnt++;
-+			print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
-+			print STDERR "              valid values are 'dl', 'dlfcn', 'win32' and 'vms'\n";
-+			}
-+		}
-+	print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
-+	return $errorcnt;
-+	}
-+
-+# Attempt to detect MSYS environment
-+
-+sub is_msys
-+	{
-+	return 1 if (exists $ENV{"TERM"} && $ENV{"TERM"} eq "msys");
-+	return 0;
-+	}
-diff -Naur ../openssl-0.9.8j/crypto/jpake/jpake.c ./crypto/jpake/jpake.c
---- ../openssl-0.9.8j/crypto/jpake/jpake.c	2008-10-27 13:30:31.000000000 +0100
-+++ ./crypto/jpake/jpake.c	2009-01-08 10:24:35.000000000 +0100
-@@ -5,6 +5,7 @@
- #include <openssl/err.h>
- #include <memory.h>
- #include <assert.h>
-+#include <string.h>
- 
- /*
-  * In the definition, (xa, xb, xc, xd) are Alice's (x1, x2, x3, x4) or
-diff -Naur ../openssl-0.9.8j/crypto/sha/sha512.c ./crypto/sha/sha512.c
---- ../openssl-0.9.8j/crypto/sha/sha512.c	2008-09-16 12:47:28.000000000 +0200
-+++ ./crypto/sha/sha512.c	2009-01-08 10:24:35.000000000 +0100
-@@ -314,7 +314,7 @@
- #ifndef PEDANTIC
- # if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
- #  if defined(__x86_64) || defined(__x86_64__)
--#   define ROTR(a,n)	({ unsigned long ret;		\
-+#   define ROTR(a,n)	({ SHA_LONG64 ret;	\
- 				asm ("rorq %1,%0"	\
- 				: "=r"(ret)		\
- 				: "J"(n),"0"(a)		\
-diff -Naur ../openssl-0.9.8j/crypto/sha/sha512.c.orig ./crypto/sha/sha512.c.orig
---- ../openssl-0.9.8j/crypto/sha/sha512.c.orig	1970-01-01 01:00:00.000000000 +0100
-+++ ./crypto/sha/sha512.c.orig	2009-01-08 10:24:35.000000000 +0100
-@@ -0,0 +1,547 @@
-+/* crypto/sha/sha512.c */
-+/* ====================================================================
-+ * Copyright (c) 2004 The OpenSSL Project.  All rights reserved
-+ * according to the OpenSSL license [found in ../../LICENSE].
-+ * ====================================================================
-+ */
-+#include <openssl/opensslconf.h>
-+#ifdef OPENSSL_FIPS
-+#include <openssl/fips.h>
-+#endif
-+
-+#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA512)
-+/*
-+ * IMPLEMENTATION NOTES.
-+ *
-+ * As you might have noticed 32-bit hash algorithms:
-+ *
-+ * - permit SHA_LONG to be wider than 32-bit (case on CRAY);
-+ * - optimized versions implement two transform functions: one operating
-+ *   on [aligned] data in host byte order and one - on data in input
-+ *   stream byte order;
-+ * - share common byte-order neutral collector and padding function
-+ *   implementations, ../md32_common.h;
-+ *
-+ * Neither of the above applies to this SHA-512 implementations. Reasons
-+ * [in reverse order] are:
-+ *
-+ * - it's the only 64-bit hash algorithm for the moment of this writing,
-+ *   there is no need for common collector/padding implementation [yet];
-+ * - by supporting only one transform function [which operates on
-+ *   *aligned* data in input stream byte order, big-endian in this case]
-+ *   we minimize burden of maintenance in two ways: a) collector/padding
-+ *   function is simpler; b) only one transform function to stare at;
-+ * - SHA_LONG64 is required to be exactly 64-bit in order to be able to
-+ *   apply a number of optimizations to mitigate potential performance
-+ *   penalties caused by previous design decision;
-+ *
-+ * Caveat lector.
-+ *
-+ * Implementation relies on the fact that "long long" is 64-bit on
-+ * both 32- and 64-bit platforms. If some compiler vendor comes up
-+ * with 128-bit long long, adjustment to sha.h would be required.
-+ * As this implementation relies on 64-bit integer type, it's totally
-+ * inappropriate for platforms which don't support it, most notably
-+ * 16-bit platforms.
-+ *					<appro at fy.chalmers.se>
-+ */
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include <openssl/crypto.h>
-+#include <openssl/sha.h>
-+#include <openssl/opensslv.h>
-+
-+#include "cryptlib.h"
-+
-+const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT;
-+
-+#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
-+    defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) || \
-+    defined(__s390__) || defined(__s390x__) || \
-+    defined(SHA512_ASM)
-+#define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
-+#endif
-+
-+int SHA384_Init (SHA512_CTX *c)
-+	{
-+#ifdef OPENSSL_FIPS
-+	FIPS_selftest_check();
-+#endif
-+	c->h[0]=U64(0xcbbb9d5dc1059ed8);
-+	c->h[1]=U64(0x629a292a367cd507);
-+	c->h[2]=U64(0x9159015a3070dd17);
-+	c->h[3]=U64(0x152fecd8f70e5939);
-+	c->h[4]=U64(0x67332667ffc00b31);
-+	c->h[5]=U64(0x8eb44a8768581511);
-+	c->h[6]=U64(0xdb0c2e0d64f98fa7);
-+	c->h[7]=U64(0x47b5481dbefa4fa4);
-+        c->Nl=0;        c->Nh=0;
-+        c->num=0;       c->md_len=SHA384_DIGEST_LENGTH;
-+        return 1;
-+	}
-+
-+int SHA512_Init (SHA512_CTX *c)
-+	{
-+#ifdef OPENSSL_FIPS
-+	FIPS_selftest_check();
-+#endif
-+	c->h[0]=U64(0x6a09e667f3bcc908);
-+	c->h[1]=U64(0xbb67ae8584caa73b);
-+	c->h[2]=U64(0x3c6ef372fe94f82b);
-+	c->h[3]=U64(0xa54ff53a5f1d36f1);
-+	c->h[4]=U64(0x510e527fade682d1);
-+	c->h[5]=U64(0x9b05688c2b3e6c1f);
-+	c->h[6]=U64(0x1f83d9abfb41bd6b);
-+	c->h[7]=U64(0x5be0cd19137e2179);
-+        c->Nl=0;        c->Nh=0;
-+        c->num=0;       c->md_len=SHA512_DIGEST_LENGTH;
-+        return 1;
-+	}
-+
-+#ifndef SHA512_ASM
-+static
-+#endif
-+void sha512_block_data_order (SHA512_CTX *ctx, const void *in, size_t num);
-+
-+int SHA512_Final (unsigned char *md, SHA512_CTX *c)
-+	{
-+	unsigned char *p=(unsigned char *)c->u.p;
-+	size_t n=c->num;
-+
-+	p[n]=0x80;	/* There always is a room for one */
-+	n++;
-+	if (n > (sizeof(c->u)-16))
-+		memset (p+n,0,sizeof(c->u)-n), n=0,
-+		sha512_block_data_order (c,p,1);
-+
-+	memset (p+n,0,sizeof(c->u)-16-n);
-+#ifdef	B_ENDIAN
-+	c->u.d[SHA_LBLOCK-2] = c->Nh;
-+	c->u.d[SHA_LBLOCK-1] = c->Nl;
-+#else
-+	p[sizeof(c->u)-1]  = (unsigned char)(c->Nl);
-+	p[sizeof(c->u)-2]  = (unsigned char)(c->Nl>>8);
-+	p[sizeof(c->u)-3]  = (unsigned char)(c->Nl>>16);
-+	p[sizeof(c->u)-4]  = (unsigned char)(c->Nl>>24);
-+	p[sizeof(c->u)-5]  = (unsigned char)(c->Nl>>32);
-+	p[sizeof(c->u)-6]  = (unsigned char)(c->Nl>>40);
-+	p[sizeof(c->u)-7]  = (unsigned char)(c->Nl>>48);
-+	p[sizeof(c->u)-8]  = (unsigned char)(c->Nl>>56);
-+	p[sizeof(c->u)-9]  = (unsigned char)(c->Nh);
-+	p[sizeof(c->u)-10] = (unsigned char)(c->Nh>>8);
-+	p[sizeof(c->u)-11] = (unsigned char)(c->Nh>>16);
-+	p[sizeof(c->u)-12] = (unsigned char)(c->Nh>>24);
-+	p[sizeof(c->u)-13] = (unsigned char)(c->Nh>>32);
-+	p[sizeof(c->u)-14] = (unsigned char)(c->Nh>>40);
-+	p[sizeof(c->u)-15] = (unsigned char)(c->Nh>>48);
-+	p[sizeof(c->u)-16] = (unsigned char)(c->Nh>>56);
-+#endif
-+
-+	sha512_block_data_order (c,p,1);
-+
-+	if (md==0) return 0;
-+
-+	switch (c->md_len)
-+		{
-+		/* Let compiler decide if it's appropriate to unroll... */
-+		case SHA384_DIGEST_LENGTH:
-+			for (n=0;n<SHA384_DIGEST_LENGTH/8;n++)
-+				{
-+				SHA_LONG64 t = c->h[n];
-+
-+				*(md++)	= (unsigned char)(t>>56);
-+				*(md++)	= (unsigned char)(t>>48);
-+				*(md++)	= (unsigned char)(t>>40);
-+				*(md++)	= (unsigned char)(t>>32);
-+				*(md++)	= (unsigned char)(t>>24);
-+				*(md++)	= (unsigned char)(t>>16);
-+				*(md++)	= (unsigned char)(t>>8);
-+				*(md++)	= (unsigned char)(t);
-+				}
-+			break;
-+		case SHA512_DIGEST_LENGTH:
-+			for (n=0;n<SHA512_DIGEST_LENGTH/8;n++)
-+				{
-+				SHA_LONG64 t = c->h[n];
-+
-+				*(md++)	= (unsigned char)(t>>56);
-+				*(md++)	= (unsigned char)(t>>48);
-+				*(md++)	= (unsigned char)(t>>40);
-+				*(md++)	= (unsigned char)(t>>32);
-+				*(md++)	= (unsigned char)(t>>24);
-+				*(md++)	= (unsigned char)(t>>16);
-+				*(md++)	= (unsigned char)(t>>8);
-+				*(md++)	= (unsigned char)(t);
-+				}
-+			break;
-+		/* ... as well as make sure md_len is not abused. */
-+		default:	return 0;
-+		}
-+
-+	return 1;
-+	}
-+
-+int SHA384_Final (unsigned char *md,SHA512_CTX *c)
-+{   return SHA512_Final (md,c);   }
-+
-+int SHA512_Update (SHA512_CTX *c, const void *_data, size_t len)
-+	{
-+	SHA_LONG64	l;
-+	unsigned char  *p=c->u.p;
-+	const unsigned char *data=(const unsigned char *)_data;
-+
-+	if (len==0) return  1;
-+
-+	l = (c->Nl+(((SHA_LONG64)len)<<3))&U64(0xffffffffffffffff);
-+	if (l < c->Nl)		c->Nh++;
-+	if (sizeof(len)>=8)	c->Nh+=(((SHA_LONG64)len)>>61);
-+	c->Nl=l;
-+
-+	if (c->num != 0)
-+		{
-+		size_t n = sizeof(c->u) - c->num;
-+
-+		if (len < n)
-+			{
-+			memcpy (p+c->num,data,len), c->num += len;
-+			return 1;
-+			}
-+		else	{
-+			memcpy (p+c->num,data,n), c->num = 0;
-+			len-=n, data+=n;
-+			sha512_block_data_order (c,p,1);
-+			}
-+		}
-+
-+	if (len >= sizeof(c->u))
-+		{
-+#ifndef SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
-+		if ((size_t)data%sizeof(c->u.d[0]) != 0)
-+			while (len >= sizeof(c->u))
-+				memcpy (p,data,sizeof(c->u)),
-+				sha512_block_data_order (c,p,1),
-+				len  -= sizeof(c->u),
-+				data += sizeof(c->u);
-+		else
-+#endif
-+			sha512_block_data_order (c,data,len/sizeof(c->u)),
-+			data += len,
-+			len  %= sizeof(c->u),
-+			data -= len;
-+		}
-+
-+	if (len != 0)	memcpy (p,data,len), c->num = (int)len;
-+
-+	return 1;
-+	}
-+
-+int SHA384_Update (SHA512_CTX *c, const void *data, size_t len)
-+{   return SHA512_Update (c,data,len);   }
-+
-+void SHA512_Transform (SHA512_CTX *c, const unsigned char *data)
-+{   sha512_block_data_order (c,data,1);  }
-+
-+unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md)
-+	{
-+	SHA512_CTX c;
-+	static unsigned char m[SHA384_DIGEST_LENGTH];
-+
-+	if (md == NULL) md=m;
-+	SHA384_Init(&c);
-+	SHA512_Update(&c,d,n);
-+	SHA512_Final(md,&c);
-+	OPENSSL_cleanse(&c,sizeof(c));
-+	return(md);
-+	}
-+
-+unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md)
-+	{
-+	SHA512_CTX c;
-+	static unsigned char m[SHA512_DIGEST_LENGTH];
-+
-+	if (md == NULL) md=m;
-+	SHA512_Init(&c);
-+	SHA512_Update(&c,d,n);
-+	SHA512_Final(md,&c);
-+	OPENSSL_cleanse(&c,sizeof(c));
-+	return(md);
-+	}
-+
-+#ifndef SHA512_ASM
-+static const SHA_LONG64 K512[80] = {
-+        U64(0x428a2f98d728ae22),U64(0x7137449123ef65cd),
-+        U64(0xb5c0fbcfec4d3b2f),U64(0xe9b5dba58189dbbc),
-+        U64(0x3956c25bf348b538),U64(0x59f111f1b605d019),
-+        U64(0x923f82a4af194f9b),U64(0xab1c5ed5da6d8118),
-+        U64(0xd807aa98a3030242),U64(0x12835b0145706fbe),
-+        U64(0x243185be4ee4b28c),U64(0x550c7dc3d5ffb4e2),
-+        U64(0x72be5d74f27b896f),U64(0x80deb1fe3b1696b1),
-+        U64(0x9bdc06a725c71235),U64(0xc19bf174cf692694),
-+        U64(0xe49b69c19ef14ad2),U64(0xefbe4786384f25e3),
-+        U64(0x0fc19dc68b8cd5b5),U64(0x240ca1cc77ac9c65),
-+        U64(0x2de92c6f592b0275),U64(0x4a7484aa6ea6e483),
-+        U64(0x5cb0a9dcbd41fbd4),U64(0x76f988da831153b5),
-+        U64(0x983e5152ee66dfab),U64(0xa831c66d2db43210),
-+        U64(0xb00327c898fb213f),U64(0xbf597fc7beef0ee4),
-+        U64(0xc6e00bf33da88fc2),U64(0xd5a79147930aa725),
-+        U64(0x06ca6351e003826f),U64(0x142929670a0e6e70),
-+        U64(0x27b70a8546d22ffc),U64(0x2e1b21385c26c926),
-+        U64(0x4d2c6dfc5ac42aed),U64(0x53380d139d95b3df),
-+        U64(0x650a73548baf63de),U64(0x766a0abb3c77b2a8),
-+        U64(0x81c2c92e47edaee6),U64(0x92722c851482353b),
-+        U64(0xa2bfe8a14cf10364),U64(0xa81a664bbc423001),
-+        U64(0xc24b8b70d0f89791),U64(0xc76c51a30654be30),
-+        U64(0xd192e819d6ef5218),U64(0xd69906245565a910),
-+        U64(0xf40e35855771202a),U64(0x106aa07032bbd1b8),
-+        U64(0x19a4c116b8d2d0c8),U64(0x1e376c085141ab53),
-+        U64(0x2748774cdf8eeb99),U64(0x34b0bcb5e19b48a8),
-+        U64(0x391c0cb3c5c95a63),U64(0x4ed8aa4ae3418acb),
-+        U64(0x5b9cca4f7763e373),U64(0x682e6ff3d6b2b8a3),
-+        U64(0x748f82ee5defb2fc),U64(0x78a5636f43172f60),
-+        U64(0x84c87814a1f0ab72),U64(0x8cc702081a6439ec),
-+        U64(0x90befffa23631e28),U64(0xa4506cebde82bde9),
-+        U64(0xbef9a3f7b2c67915),U64(0xc67178f2e372532b),
-+        U64(0xca273eceea26619c),U64(0xd186b8c721c0c207),
-+        U64(0xeada7dd6cde0eb1e),U64(0xf57d4f7fee6ed178),
-+        U64(0x06f067aa72176fba),U64(0x0a637dc5a2c898a6),
-+        U64(0x113f9804bef90dae),U64(0x1b710b35131c471b),
-+        U64(0x28db77f523047d84),U64(0x32caab7b40c72493),
-+        U64(0x3c9ebe0a15c9bebc),U64(0x431d67c49c100d4c),
-+        U64(0x4cc5d4becb3e42b6),U64(0x597f299cfc657e2a),
-+        U64(0x5fcb6fab3ad6faec),U64(0x6c44198c4a475817) };
-+
-+#ifndef PEDANTIC
-+# if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
-+#  if defined(__x86_64) || defined(__x86_64__)
-+#   define ROTR(a,n)	({ unsigned long ret;		\
-+				asm ("rorq %1,%0"	\
-+				: "=r"(ret)		\
-+				: "J"(n),"0"(a)		\
-+				: "cc"); ret;		})
-+#   if !defined(B_ENDIAN)
-+#    define PULL64(x) ({ SHA_LONG64 ret=*((const SHA_LONG64 *)(&(x)));	\
-+				asm ("bswapq	%0"		\
-+				: "=r"(ret)			\
-+				: "0"(ret)); ret;		})
-+#   endif
-+#  elif (defined(__i386) || defined(__i386__)) && !defined(B_ENDIAN)
-+#   if defined(I386_ONLY)
-+#    define PULL64(x) ({ const unsigned int *p=(const unsigned int *)(&(x));\
-+			 unsigned int hi=p[0],lo=p[1];		\
-+				asm("xchgb %%ah,%%al;xchgb %%dh,%%dl;"\
-+				    "roll $16,%%eax; roll $16,%%edx; "\
-+				    "xchgb %%ah,%%al;xchgb %%dh,%%dl;" \
-+				: "=a"(lo),"=d"(hi)		\
-+				: "0"(lo),"1"(hi) : "cc");	\
-+				((SHA_LONG64)hi)<<32|lo;	})
-+#   else
-+#    define PULL64(x) ({ const unsigned int *p=(const unsigned int *)(&(x));\
-+			 unsigned int hi=p[0],lo=p[1];			\
-+				asm ("bswapl %0; bswapl %1;"	\
-+				: "=r"(lo),"=r"(hi)		\
-+				: "0"(lo),"1"(hi));		\
-+				((SHA_LONG64)hi)<<32|lo;	})
-+#   endif
-+#  elif (defined(_ARCH_PPC) && defined(__64BIT__)) || defined(_ARCH_PPC64)
-+#   define ROTR(a,n)	({ unsigned long ret;		\
-+				asm ("rotrdi %0,%1,%2"	\
-+				: "=r"(ret)		\
-+				: "r"(a),"K"(n)); ret;	})
-+#  endif
-+# elif defined(_MSC_VER)
-+#  if defined(_WIN64)	/* applies to both IA-64 and AMD64 */
-+#   define ROTR(a,n)	_rotr64((a),n)
-+#  endif
-+#  if defined(_M_IX86) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
-+#   if defined(I386_ONLY)
-+    static SHA_LONG64 __fastcall __pull64be(const void *x)
-+    {	_asm	mov	edx, [ecx + 0]
-+	_asm	mov	eax, [ecx + 4]
-+	_asm	xchg	dh,dl
-+	_asm	xchg	ah,al
-+	_asm	rol	edx,16
-+	_asm	rol	eax,16
-+	_asm	xchg	dh,dl
-+	_asm	xchg	ah,al
-+    }
-+#   else
-+    static SHA_LONG64 __fastcall __pull64be(const void *x)
-+    {	_asm	mov	edx, [ecx + 0]
-+	_asm	mov	eax, [ecx + 4]
-+	_asm	bswap	edx
-+	_asm	bswap	eax
-+    }
-+#   endif
-+#   define PULL64(x) __pull64be(&(x))
-+#   if _MSC_VER<=1200
-+#    pragma inline_depth(0)
-+#   endif
-+#  endif
-+# endif
-+#endif
-+
-+#ifndef PULL64
-+#define B(x,j)    (((SHA_LONG64)(*(((const unsigned char *)(&x))+j)))<<((7-j)*8))
-+#define PULL64(x) (B(x,0)|B(x,1)|B(x,2)|B(x,3)|B(x,4)|B(x,5)|B(x,6)|B(x,7))
-+#endif
-+
-+#ifndef ROTR
-+#define ROTR(x,s)	(((x)>>s) | (x)<<(64-s))
-+#endif
-+
-+#define Sigma0(x)	(ROTR((x),28) ^ ROTR((x),34) ^ ROTR((x),39))
-+#define Sigma1(x)	(ROTR((x),14) ^ ROTR((x),18) ^ ROTR((x),41))
-+#define sigma0(x)	(ROTR((x),1)  ^ ROTR((x),8)  ^ ((x)>>7))
-+#define sigma1(x)	(ROTR((x),19) ^ ROTR((x),61) ^ ((x)>>6))
-+
-+#define Ch(x,y,z)	(((x) & (y)) ^ ((~(x)) & (z)))
-+#define Maj(x,y,z)	(((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
-+
-+#if defined(OPENSSL_IA32_SSE2) && !defined(OPENSSL_NO_ASM) && !defined(I386_ONLY)
-+#define	GO_FOR_SSE2(ctx,in,num)		do {		\
-+	void	sha512_block_sse2(void *,const void *,size_t);	\
-+	if (!(OPENSSL_ia32cap_P & (1<<26))) break;	\
-+	sha512_block_sse2(ctx->h,in,num); return;	\
-+					} while (0)
-+#endif
-+
-+#ifdef OPENSSL_SMALL_FOOTPRINT
-+
-+static void sha512_block_data_order (SHA512_CTX *ctx, const void *in, size_t num)
-+	{
-+	const SHA_LONG64 *W=in;
-+	SHA_LONG64	a,b,c,d,e,f,g,h,s0,s1,T1,T2;
-+	SHA_LONG64	X[16];
-+	int i;
-+
-+#ifdef GO_FOR_SSE2
-+	GO_FOR_SSE2(ctx,in,num);
-+#endif
-+
-+			while (num--) {
-+
-+	a = ctx->h[0];	b = ctx->h[1];	c = ctx->h[2];	d = ctx->h[3];
-+	e = ctx->h[4];	f = ctx->h[5];	g = ctx->h[6];	h = ctx->h[7];
-+
-+	for (i=0;i<16;i++)
-+		{
-+#ifdef B_ENDIAN
-+		T1 = X[i] = W[i];
-+#else
-+		T1 = X[i] = PULL64(W[i]);
-+#endif
-+		T1 += h + Sigma1(e) + Ch(e,f,g) + K512[i];
-+		T2 = Sigma0(a) + Maj(a,b,c);
-+		h = g;	g = f;	f = e;	e = d + T1;
-+		d = c;	c = b;	b = a;	a = T1 + T2;
-+		}
-+
-+	for (;i<80;i++)
-+		{
-+		s0 = X[(i+1)&0x0f];	s0 = sigma0(s0);
-+		s1 = X[(i+14)&0x0f];	s1 = sigma1(s1);
-+
-+		T1 = X[i&0xf] += s0 + s1 + X[(i+9)&0xf];
-+		T1 += h + Sigma1(e) + Ch(e,f,g) + K512[i];
-+		T2 = Sigma0(a) + Maj(a,b,c);
-+		h = g;	g = f;	f = e;	e = d + T1;
-+		d = c;	c = b;	b = a;	a = T1 + T2;
-+		}
-+
-+	ctx->h[0] += a;	ctx->h[1] += b;	ctx->h[2] += c;	ctx->h[3] += d;
-+	ctx->h[4] += e;	ctx->h[5] += f;	ctx->h[6] += g;	ctx->h[7] += h;
-+
-+			W+=SHA_LBLOCK;
-+			}
-+	}
-+
-+#else
-+
-+#define	ROUND_00_15(i,a,b,c,d,e,f,g,h)		do {	\
-+	T1 += h + Sigma1(e) + Ch(e,f,g) + K512[i];	\
-+	h = Sigma0(a) + Maj(a,b,c);			\
-+	d += T1;	h += T1;		} while (0)
-+
-+#define	ROUND_16_80(i,a,b,c,d,e,f,g,h,X)	do {	\
-+	s0 = X[(i+1)&0x0f];	s0 = sigma0(s0);	\
-+	s1 = X[(i+14)&0x0f];	s1 = sigma1(s1);	\
-+	T1 = X[(i)&0x0f] += s0 + s1 + X[(i+9)&0x0f];	\
-+	ROUND_00_15(i,a,b,c,d,e,f,g,h);		} while (0)
-+
-+static void sha512_block_data_order (SHA512_CTX *ctx, const void *in, size_t num)
-+	{
-+	const SHA_LONG64 *W=in;
-+	SHA_LONG64	a,b,c,d,e,f,g,h,s0,s1,T1;
-+	SHA_LONG64	X[16];
-+	int i;
-+
-+#ifdef GO_FOR_SSE2
-+	GO_FOR_SSE2(ctx,in,num);
-+#endif
-+
-+			while (num--) {
-+
-+	a = ctx->h[0];	b = ctx->h[1];	c = ctx->h[2];	d = ctx->h[3];
-+	e = ctx->h[4];	f = ctx->h[5];	g = ctx->h[6];	h = ctx->h[7];
-+
-+#ifdef B_ENDIAN
-+	T1 = X[0] = W[0];	ROUND_00_15(0,a,b,c,d,e,f,g,h);
-+	T1 = X[1] = W[1];	ROUND_00_15(1,h,a,b,c,d,e,f,g);
-+	T1 = X[2] = W[2];	ROUND_00_15(2,g,h,a,b,c,d,e,f);
-+	T1 = X[3] = W[3];	ROUND_00_15(3,f,g,h,a,b,c,d,e);
-+	T1 = X[4] = W[4];	ROUND_00_15(4,e,f,g,h,a,b,c,d);
-+	T1 = X[5] = W[5];	ROUND_00_15(5,d,e,f,g,h,a,b,c);
-+	T1 = X[6] = W[6];	ROUND_00_15(6,c,d,e,f,g,h,a,b);
-+	T1 = X[7] = W[7];	ROUND_00_15(7,b,c,d,e,f,g,h,a);
-+	T1 = X[8] = W[8];	ROUND_00_15(8,a,b,c,d,e,f,g,h);
-+	T1 = X[9] = W[9];	ROUND_00_15(9,h,a,b,c,d,e,f,g);
-+	T1 = X[10] = W[10];	ROUND_00_15(10,g,h,a,b,c,d,e,f);
-+	T1 = X[11] = W[11];	ROUND_00_15(11,f,g,h,a,b,c,d,e);
-+	T1 = X[12] = W[12];	ROUND_00_15(12,e,f,g,h,a,b,c,d);
-+	T1 = X[13] = W[13];	ROUND_00_15(13,d,e,f,g,h,a,b,c);
-+	T1 = X[14] = W[14];	ROUND_00_15(14,c,d,e,f,g,h,a,b);
-+	T1 = X[15] = W[15];	ROUND_00_15(15,b,c,d,e,f,g,h,a);
-+#else
-+	T1 = X[0]  = PULL64(W[0]);	ROUND_00_15(0,a,b,c,d,e,f,g,h);
-+	T1 = X[1]  = PULL64(W[1]);	ROUND_00_15(1,h,a,b,c,d,e,f,g);
-+	T1 = X[2]  = PULL64(W[2]);	ROUND_00_15(2,g,h,a,b,c,d,e,f);
-+	T1 = X[3]  = PULL64(W[3]);	ROUND_00_15(3,f,g,h,a,b,c,d,e);
-+	T1 = X[4]  = PULL64(W[4]);	ROUND_00_15(4,e,f,g,h,a,b,c,d);
-+	T1 = X[5]  = PULL64(W[5]);	ROUND_00_15(5,d,e,f,g,h,a,b,c);
-+	T1 = X[6]  = PULL64(W[6]);	ROUND_00_15(6,c,d,e,f,g,h,a,b);
-+	T1 = X[7]  = PULL64(W[7]);	ROUND_00_15(7,b,c,d,e,f,g,h,a);
-+	T1 = X[8]  = PULL64(W[8]);	ROUND_00_15(8,a,b,c,d,e,f,g,h);
-+	T1 = X[9]  = PULL64(W[9]);	ROUND_00_15(9,h,a,b,c,d,e,f,g);
-+	T1 = X[10] = PULL64(W[10]);	ROUND_00_15(10,g,h,a,b,c,d,e,f);
-+	T1 = X[11] = PULL64(W[11]);	ROUND_00_15(11,f,g,h,a,b,c,d,e);
-+	T1 = X[12] = PULL64(W[12]);	ROUND_00_15(12,e,f,g,h,a,b,c,d);
-+	T1 = X[13] = PULL64(W[13]);	ROUND_00_15(13,d,e,f,g,h,a,b,c);
-+	T1 = X[14] = PULL64(W[14]);	ROUND_00_15(14,c,d,e,f,g,h,a,b);
-+	T1 = X[15] = PULL64(W[15]);	ROUND_00_15(15,b,c,d,e,f,g,h,a);
-+#endif
-+
-+	for (i=16;i<80;i+=8)
-+		{
-+		ROUND_16_80(i+0,a,b,c,d,e,f,g,h,X);
-+		ROUND_16_80(i+1,h,a,b,c,d,e,f,g,X);
-+		ROUND_16_80(i+2,g,h,a,b,c,d,e,f,X);
-+		ROUND_16_80(i+3,f,g,h,a,b,c,d,e,X);
-+		ROUND_16_80(i+4,e,f,g,h,a,b,c,d,X);
-+		ROUND_16_80(i+5,d,e,f,g,h,a,b,c,X);
-+		ROUND_16_80(i+6,c,d,e,f,g,h,a,b,X);
-+		ROUND_16_80(i+7,b,c,d,e,f,g,h,a,X);
-+		}
-+
-+	ctx->h[0] += a;	ctx->h[1] += b;	ctx->h[2] += c;	ctx->h[3] += d;
-+	ctx->h[4] += e;	ctx->h[5] += f;	ctx->h[6] += g;	ctx->h[7] += h;
-+
-+			W+=SHA_LBLOCK;
-+			}
-+	}
-+
-+#endif
-+
-+#endif /* SHA512_ASM */
-+
-+#endif /* OPENSSL_NO_SHA512 */
-diff -Naur ../openssl-0.9.8j/engines/e_aep.c ./engines/e_aep.c
---- ../openssl-0.9.8j/engines/e_aep.c	2008-12-30 14:30:57.000000000 +0100
-+++ ./engines/e_aep.c	2009-01-08 10:24:35.000000000 +0100
-@@ -62,8 +62,10 @@
- #include <unistd.h>
- #else
- #include <process.h>
-+#ifndef _PID_T_
- typedef int pid_t;
- #endif
-+#endif
- 
- #if defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB)
- #define getpid GetThreadID
-diff -Naur ../openssl-0.9.8j/e_os2.h ./e_os2.h
---- ../openssl-0.9.8j/e_os2.h	2005-12-18 19:57:07.000000000 +0100
-+++ ./e_os2.h	2009-01-08 10:24:35.000000000 +0100
-@@ -264,7 +264,7 @@
- # define OPENSSL_IMPLEMENT_GLOBAL(type,name)			     \
- 	extern type _hide_##name;				     \
- 	type *_shadow_##name(void) { return &_hide_##name; }	     \
--	static type _hide_##name
-+	type _hide_##name
- # define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void)
- # define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name()))
- #else
diff --git a/src/win32/patches/openssl.patch b/src/win32/patches/openssl.patch
deleted file mode 100644
index 626f379..0000000
--- a/src/win32/patches/openssl.patch
+++ /dev/null
@@ -1,309 +0,0 @@
-Index: Configure
---- ../tmp/openssl-0.9.8b/Configure	2006-04-03 02:15:40.000000000 -0700
-+++ ./Configure	2006-06-27 02:39:02.000000000 -0700
-@@ -132,7 +132,7 @@
- # seems to be sufficient?
- my $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT";
- 
--#config-string	$cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags
-+#config-string	$cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags : $ar : $nm
- 
- my %table=(
- # File 'TABLE' (created by 'make TABLE') contains the data from this list,
-@@ -468,6 +468,9 @@
- # Borland C++ 4.5
- "BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
- 
-+# MinGW32
-+"mingw32", "mingw32-gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -shared:.dll.a:mingw32-ranlib::mingw32-ar:mingw32-nm",
-+
- # MinGW
- "mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -shared:.dll.a",
- 
-@@ -558,6 +561,8 @@
- my $idx_shared_extension = $idx++;
- my $idx_ranlib = $idx++;
- my $idx_arflags = $idx++;
-+my $idx_ar= $idx++;
-+my $idx_nm= $idx++;
- 
- my $prefix="";
- my $openssldir="";
-@@ -920,7 +925,7 @@
- 
- $IsMK1MF=1 if ($target eq "mingw" && $^O ne "cygwin");
- 
--$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
-+$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw" || $target eq "mingw32");
- $exe_ext=".pm"  if ($target =~ /vos/);
- $openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
- $prefix=$openssldir if $prefix eq "";
-@@ -964,6 +969,8 @@
- my $shared_extension = $fields[$idx_shared_extension];
- my $ranlib = $fields[$idx_ranlib];
- my $arflags = $fields[$idx_arflags];
-+my $ar = $fields[$idx_ar];
-+my $nm = $fields[$idx_nm];
- 
- my $no_shared_warn=0;
- my $no_user_cflags=0;
-@@ -1172,6 +1179,18 @@
- 	{
- 	$ranlib = $default_ranlib;
- 	}
-+if ($arflags eq "")
-+	{
-+	$arflags = "r";
-+	}
-+if ($ar eq "")
-+	{
-+	$ar = "ar";
-+	}
-+if ($nm eq "")
-+	{
-+	$nm = "nm";
-+	}
- 
- #my ($bn1)=split(/\s+/,$bn_obj);
- #$bn1 = "" unless defined $bn1;
-@@ -1307,6 +1326,8 @@
- 	s/^PROCESSOR=.*/PROCESSOR= $processor/;
- 	s/^RANLIB=.*/RANLIB= $ranlib/;
- 	s/^ARFLAGS=.*/ARFLAGS= $arflags/;
-+	s/^AR=.*/AR= $ar/;
-+	s/^NM=.*/NM= $nm/;
- 	s/^PERL=.*/PERL= $perl/;
- 	s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
- 	s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
-@@ -1358,6 +1379,8 @@
- print "PROCESSOR     =$processor\n";
- print "RANLIB        =$ranlib\n";
- print "ARFLAGS       =$arflags\n";
-+print "AR            =$ar\n";
-+print "NM            =$nm\n";
- print "PERL          =$perl\n";
- print "KRB5_INCLUDES =",$withargs{"krb5-include"},"\n"
- 	if $withargs{"krb5-include"} ne "";
-@@ -1737,7 +1760,7 @@
- 	my $bn_ops,my $cpuid_obj,my $bn_obj,my $des_obj,my $aes_obj, my $bf_obj,
- 	my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj,
- 	my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag,
--	my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)=
-+	my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags, my $ar, my $nm)=
- 	split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
- 			
- 	print <<EOF
-@@ -1768,6 +1791,8 @@
- \$shared_extension = $shared_extension
- \$ranlib       = $ranlib
- \$arflags      = $arflags
-+\$ar           = $ar
-+\$nm           = $nm
- EOF
- 	}
- 
-Index: crypto/comp/Makefile
---- ../tmp/openssl-0.9.8b/crypto/comp/Makefile	2006-02-03 17:48:54.000000000 -0800
-+++ ./crypto/comp/Makefile	2006-06-27 01:45:24.000000000 -0700
-@@ -5,7 +5,7 @@
- DIR=	comp
- TOP=	../..
- CC=	cc
--INCLUDES= -I.. -I$(TOP) -I../../include
-+INCLUDES= -I.. -I$(TOP) -I../../include $(ZLIB_INCLUDE)
- CFLAG=-g
- MAKEFILE=	Makefile
- AR=		ar r
-Index: crypto/Makefile
---- ../tmp/openssl-0.9.8b/crypto/Makefile	2006-02-03 17:48:41.000000000 -0800
-+++ ./crypto/Makefile	2006-06-27 01:53:25.000000000 -0700
-@@ -7,7 +7,7 @@
- CC=		cc
- INCLUDE=	-I. -I$(TOP) -I../include
- # INCLUDES targets sudbirs!
--INCLUDES=	-I.. -I../.. -I../../include
-+INCLUDES=	-I.. -I../.. -I../../include $(ZLIB_INCLUDE)
- CFLAG=		-g
- MAKEDEPPROG=	makedepend
- MAKEDEPEND=	$(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
-Index: engines/Makefile
---- ../tmp/openssl-0.9.8b/engines/Makefile	2006-02-03 17:49:34.000000000 -0800
-+++ ./engines/Makefile	2006-06-27 01:21:53.000000000 -0700
-@@ -91,19 +91,23 @@
- 		set -e; \
- 		for l in $(LIBNAMES); do \
- 			( echo installing $$l; \
--			  if [ "$(PLATFORM)" != "Cygwin" ]; then \
--				case "$(CFLAGS)" in \
--				*DSO_DLFCN*)	sfx="so";;	\
--				*DSO_DL*)	sfx="sl";;	\
--				*)		sfx="bad";;	\
--				esac; \
--				cp lib$$l.$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
-+			  if [ "$(PLATFORM)" = "mingw32" ]; then \
-+				cp $${l}eay32.dll $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/$${l}eay32.dll; \
- 			  else \
--			  	sfx="so"; \
--				cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
--			  fi; \
--			  chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
--			  mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx ); \
-+				if [ "$(PLATFORM)" = "Cygwin" ]; then \
-+					sfx="so"; \
-+					cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
-+				else \
-+					case "$(CFLAGS)" in \
-+					*DSO_DLFCN*)	sfx="so";;	\
-+					*DSO_DL*)	sfx="sl";;	\
-+					*)		sfx="bad";;	\
-+					esac; \
-+					cp lib$$l.$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
-+				fi; \
-+				chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
-+				mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx; \
-+			fi ); \
- 		done; \
- 	fi
- 
-Index: Makefile.org
---- ../tmp/openssl-0.9.8b/Makefile.org	2006-02-10 00:52:56.000000000 -0800
-+++ ./Makefile.org	2006-06-27 02:14:13.000000000 -0700
-@@ -65,6 +65,7 @@
- EXE_EXT= 
- ARFLAGS=
- AR=ar $(ARFLAGS) r
-+NM=nm
- RANLIB= ranlib
- PERL= perl
- TAR= tar
-@@ -171,7 +172,9 @@
- BUILDENV=	PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
- 		CC='${CC}' CFLAG='${CFLAG}' 			\
- 		AS='${CC}' ASFLAG='${CFLAG} -c'			\
--		AR='${AR}' PERL='${PERL}' RANLIB='${RANLIB}'	\
-+		AR='${AR} ${ARFLAGS}' PERL='${PERL}'		\
-+		NM='${NM}' RANLIB='${RANLIB}'			\
-+		ZLIB_INCLUDE='${ZLIB_INCLUDE}' LIBZLIB='${LIBZLIB}' \
- 		SDIRS='${SDIRS}' LIBRPATH='${INSTALLTOP}/lib'	\
- 		INSTALL_PREFIX='${INSTALL_PREFIX}'		\
- 		INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}'	\
-@@ -290,6 +293,12 @@
- 		if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
- 			libs="$(LIBKRB5) $$libs"; \
- 		fi; \
-+		if [ "${SHLIBDIRS}" = "crypto" -a "$(SHLIB_TARGET)" = "cygwin-shared" ]; then \
-+			libs="ms/libeay32.def $$libs"; \
-+		fi; \
-+		if [ "${SHLIBDIRS}" = "ssl" -a "$(SHLIB_TARGET)" = "cygwin-shared" ]; then \
-+			libs="ms/ssleay32.def $$libs"; \
-+		fi; \
- 		$(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
- 			LIBNAME=$$i LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \
- 			LIBCOMPATVERSIONS=";${SHLIB_VERSION_HISTORY}" \
-@@ -506,18 +515,27 @@
- 		do \
- 			if [ -f "$$i" -o -f "$$i.a" ]; then \
- 			(       echo installing $$i; \
--				if [ "$(PLATFORM)" != "Cygwin" ]; then \
-+				if [ "$(PLATFORM)" = "Cygwin" ]; then \
-+					c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
-+					cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
-+					chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
-+					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
- 					cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
--					chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-+					chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- 					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
--				else \
--					c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
-+				elif [ "$(PLATFORM)" = "mingw32" ]; then \
-+					c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/\1eay32.dll/'`; \
-+					[ "$$i" = "libcrypto.dll.a" ] && c=libeay32.dll; \
- 					cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
- 					chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
- 					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
- 					cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- 					chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- 					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
-+				else \
-+					cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-+					chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-+					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
- 				fi ); \
- 			fi; \
- 		done; \
-Index: Makefile.shared
---- ../tmp/openssl-0.9.8b/Makefile.shared	2005-12-16 12:52:38.000000000 -0800
-+++ ./Makefile.shared	2006-06-27 01:56:39.000000000 -0700
-@@ -8,6 +8,7 @@
- # CC contains the current compiler.  This one MUST be defined
- CC=cc
- CFLAGS=$(CFLAG)
-+NM=nm
- # LDFLAGS contains flags to be used when temporary object files (when building
- # shared libraries) are created, or when an application is linked.
- # SHARED_LDFLAGS contains flags to be used when the shared library is created.
-@@ -101,7 +102,7 @@
-     LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
-     SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \
-     SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
--    nm -Pg $$SHOBJECTS | grep ' [BDT] ' | cut -f1 -d' ' > lib$(LIBNAME).exp; \
-+    ${NM} -Pg $$SHOBJECTS | grep ' [BDT] ' | cut -f1 -d' ' > lib$(LIBNAME).exp; \
-     LIBPATH=`for x in $$LIBDEPS; do if echo $$x | grep '^ *-L' > /dev/null 2>&1; then echo $$x | sed -e 's/^ *-L//'; fi; done | uniq`; \
-     LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
-     LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
-@@ -112,7 +113,20 @@
-   ( $(SET_X); rm -f lib$(LIBNAME).exp )
- 
- SYMLINK_SO=	\
--	if [ -n "$$INHIBIT_SYMLINKS" ]; then :; else \
-+	if [ -n "$$INHIBIT_SYMLINKS" ]; then \
-+		prev=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
-+		if [ -n "$$SHLIB_COMPAT" ]; then \
-+			for x in $$SHLIB_COMPAT; do \
-+				( $(SET_X); rm -f $$SHLIB$$x$$SHLIB_SUFFIX; \
-+				  ln -s $$prev $$SHLIB$$x$$SHLIB_SUFFIX ); \
-+				prev=$$SHLIB$$x$$SHLIB_SUFFIX; \
-+			done; \
-+		fi; \
-+		if [ -n "$$SHLIB_SOVER" ]; then \
-+			( $(SET_X); rm -f $$SHLIB$$SHLIB_SUFFIX; \
-+			  cp -p $$prev $$SHLIB$$SHLIB_SUFFIX ); \
-+		fi; \
-+	else \
- 		prev=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
- 		if [ -n "$$SHLIB_COMPAT" ]; then \
- 			for x in $$SHLIB_COMPAT; do \
-@@ -249,6 +263,9 @@
- 	INHIBIT_SYMLINKS=yes; \
- 	SHLIB=cyg$(LIBNAME); \
- 	expr $(PLATFORM) : 'mingw' > /dev/null && SHLIB=$(LIBNAME)eay32; \
-+	if [ "$(PLATFORM)" = "mingw32" -a "$(LIBNAME)" = "crypto" ]; then \
-+		SHLIB=libeay32; \
-+	fi; \
- 	SHLIB_SUFFIX=.dll; \
- 	SHLIB_SOVER=-$(LIBVERSION); \
- 	ALLSYMSFLAGS='-Wl,--whole-archive'; \
-@@ -258,8 +275,8 @@
- 	[ -f apps/$$SHLIB$$SHLIB_SUFFIX ] && rm apps/$$SHLIB$$SHLIB_SUFFIX; \
- 	[ -f test/$$SHLIB$$SHLIB_SUFFIX ] && rm test/$$SHLIB$$SHLIB_SUFFIX; \
- 	$(LINK_SO_A) || exit 1; \
--	cp -p $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX apps/; \
--	cp -p $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX test/
-+	cp -p $$SHLIB$$SHLIB_SUFFIX apps/; \
-+	cp -p $$SHLIB$$SHLIB_SUFFIX test/
- link_app.cygwin:
- 	$(LINK_APP)
- 
-Index: util/mkdef.pl
---- ../tmp/openssl-0.9.8b/util/mkdef.pl	2006-01-02 06:08:22.000000000 -0800
-+++ ./util/mkdef.pl	2006-07-26 23:21:46.000000000 -0700
-@@ -1204,7 +1204,7 @@
- ; Definition file for the DLL version of the $name library from OpenSSL
- ;
- 
--LIBRARY         $libname	$liboptions
-+LIBRARY         $libname.DLL	$liboptions
- 
- DESCRIPTION     '$description'
- 
diff --git a/src/win32/patches/pcre.patch b/src/win32/patches/pcre.patch
deleted file mode 100644
index 189ac45..0000000
--- a/src/win32/patches/pcre.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-Index: /Makefile.in
---- ../orig/pcre-6.3/Makefile.in	2005-08-18 06:08:28.000000000 -0700
-+++ ./Makefile.in	2006-06-30 09:11:02.000000000 -0700
-@@ -103,12 +103,10 @@
- LIBTOOL = @LIBTOOL@
- LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) -I. -I$(top_srcdir) $(NEWLINE) $(LINK_SIZE) $(MATCH_LIMIT) $(NO_RECURSE) $(EBCDIC)
- LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) -c $(CXXFLAGS) -I. -I$(top_srcdir) $(NEWLINE) $(LINK_SIZE) $(MATCH_LIMIT) $(NO_RECURSE) $(EBCDIC)
-- at ON_WINDOWS@LINK = $(CC) $(LDFLAGS) -I. -I$(top_srcdir) -L.libs
-- at NOT_ON_WINDOWS@LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -I. -I$(top_srcdir)
-+LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -I. -I$(top_srcdir)
- LINKLIB = $(LIBTOOL) --mode=link $(CC) -export-symbols-regex '^[^_]|__?pcre_.*utf8|__?pcre_printint' $(LDFLAGS) -I. -I$(top_srcdir)
- LINK_FOR_BUILD = $(LIBTOOL) --mode=link $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -I. -I$(top_srcdir)
-- at ON_WINDOWS@CXXLINK = $(CXX) $(LDFLAGS) -I. -I$(top_srcdir) -L.libs
-- at NOT_ON_WINDOWS@CXXLINK = $(LIBTOOL) --mode=link $(CXX) $(LDFLAGS) -I. -I$(top_srcdir)
-+CXXLINK = $(LIBTOOL) --mode=link $(CXX) $(LDFLAGS) -I. -I$(top_srcdir)
- CXXLINKLIB = $(LIBTOOL) --mode=link $(CXX) $(LDFLAGS) -I. -I$(top_srcdir)
- 
- # These are the version numbers for the shared libraries
-@@ -355,54 +353,54 @@
- 
- # Some Windows-specific targets for MinGW. Do not use for Cygwin.
- 
--winshared : .libs/@WIN_PREFIX at pcre.dll .libs/@WIN_PREFIX at pcreposix.dll \
--		.libs/@WIN_PREFIX at pcrecpp.dll
-+winshared : .libs/pcre.dll .libs/pcreposix.dll \
-+		.libs/pcrecpp.dll
- 
--.libs/@WIN_PREFIX at pcre.dll : libpcre.la
-+.libs/pcre.dll : libpcre.la
- 	$(CC) $(CFLAGS) -shared -o $@ \
- 	-Wl,--whole-archive .libs/libpcre.a \
- 	-Wl,--out-implib,.libs/libpcre.dll.a \
--	-Wl,--output-def,.libs/@WIN_PREFIX at pcre.dll-def \
-+	-Wl,--output-def,.libs/pcre.dll-def \
- 	-Wl,--export-all-symbols \
- 	-Wl,--no-whole-archive
--	sed -e "s#dlname=''#dlname='../bin/@WIN_PREFIX at pcre.dll'#" \
-+	sed -e "s#dlname=''#dlname='../bin/pcre.dll'#" \
- 	-e "s#library_names=''#library_names='libpcre.dll.a'#" \
- 	< .libs/libpcre.lai > .libs/libpcre.lai.tmp && \
- 	mv -f .libs/libpcre.lai.tmp .libs/libpcre.lai
--	sed -e "s#dlname=''#dlname='../bin/@WIN_PREFIX at pcre.dll'#" \
-+	sed -e "s#dlname=''#dlname='../bin/pcre.dll'#" \
- 	-e "s#library_names=''#library_names='libpcre.dll.a'#" \
- 	< libpcre.la > libpcre.la.tmp && \
- 	mv -f libpcre.la.tmp libpcre.la
- 
- 
--.libs/@WIN_PREFIX at pcreposix.dll: libpcreposix.la libpcre.la
-+.libs/pcreposix.dll: libpcreposix.la libpcre.la
- 	$(CC) $(CFLAGS) -shared -o $@ \
- 	-Wl,--whole-archive .libs/libpcreposix.a \
--	-Wl,--out-implib,.libs/@WIN_PREFIX at pcreposix.dll.a \
--	-Wl,--output-def,.libs/@WIN_PREFIX at libpcreposix.dll-def \
-+	-Wl,--out-implib,.libs/libpcreposix.dll.a \
-+	-Wl,--output-def,.libs/libpcreposix.dll-def \
- 	-Wl,--export-all-symbols \
- 	-Wl,--no-whole-archive .libs/libpcre.a
--	sed -e "s#dlname=''#dlname='../bin/@WIN_PREFIX at pcreposix.dll'#" \
-+	sed -e "s#dlname=''#dlname='../bin/pcreposix.dll'#" \
- 	-e "s#library_names=''#library_names='libpcreposix.dll.a'#"\
- 	< .libs/libpcreposix.lai > .libs/libpcreposix.lai.tmp && \
- 	mv -f .libs/libpcreposix.lai.tmp .libs/libpcreposix.lai
--	sed -e "s#dlname=''#dlname='../bin/@WIN_PREFIX at pcreposix.dll'#" \
-+	sed -e "s#dlname=''#dlname='../bin/pcreposix.dll'#" \
- 	-e "s#library_names=''#library_names='libpcreposix.dll.a'#"\
- 	< libpcreposix.la > libpcreposix.la.tmp && \
- 	mv -f libpcreposix.la.tmp libpcreposix.la
- 
--.libs/@WIN_PREFIX at pcrecpp.dll: libpcrecpp.la libpcre.la
-+.libs/pcrecpp.dll: libpcrecpp.la libpcre.la
- 	$(CXX) $(CXXFLAGS) -shared -o $@ \
- 	-Wl,--whole-archive .libs/libpcrecpp.a \
--	-Wl,--out-implib,.libs/@WIN_PREFIX at pcrecpp.dll.a \
--	-Wl,--output-def,.libs/@WIN_PREFIX at libpcrecpp.dll-def \
-+	-Wl,--out-implib,.libs/libpcrecpp.dll.a \
-+	-Wl,--output-def,.libs/libpcrecpp.dll-def \
- 	-Wl,--export-all-symbols \
- 	-Wl,--no-whole-archive .libs/libpcre.a
--	sed -e "s#dlname=''#dlname='../bin/@WIN_PREFIX at pcrecpp.dll'#" \
-+	sed -e "s#dlname=''#dlname='../bin/pcrecpp.dll'#" \
- 	-e "s#library_names=''#library_names='libpcrecpp.dll.a'#"\
- 	< .libs/libpcrecpp.lai > .libs/libpcrecpp.lai.tmp && \
- 	mv -f .libs/libpcrecpp.lai.tmp .libs/libpcrecpp.lai
--	sed -e "s#dlname=''#dlname='../bin/@WIN_PREFIX at pcrecpp.dll'#" \
-+	sed -e "s#dlname=''#dlname='../bin/pcrecpp.dll'#" \
- 	-e "s#library_names=''#library_names='libpcrecpp.dll.a'#"\
- 	< libpcrecpp.la > libpcrecpp.la.tmp && \
- 	mv -f libpcrecpp.la.tmp libpcrecpp.la
-@@ -411,15 +409,15 @@
- wininstall : winshared
- 	$(mkinstalldirs) $(DESTDIR)$(LIBDIR)
- 	$(mkinstalldirs) $(DESTDIR)$(BINDIR)
--	$(INSTALL) .libs/@WIN_PREFIX at pcre.dll $(DESTDIR)$(BINDIR)/@WIN_PREFIX at pcre.dll
--	$(INSTALL) .libs/@WIN_PREFIX at pcreposix.dll $(DESTDIR)$(BINDIR)/@WIN_PREFIX at pcreposix.dll
--	$(INSTALL) .libs/@WIN_PREFIX at libpcreposix.dll.a $(DESTDIR)$(LIBDIR)/@WIN_PREFIX at libpcreposix.dll.a
--	$(INSTALL) .libs/@WIN_PREFIX at libpcre.dll.a $(DESTDIR)$(LIBDIR)/@WIN_PREFIX at libpcre.dll.a
-- at HAVE_CPP@	 $(INSTALL) .libs/@WIN_PREFIX at pcrecpp.dll $(DESTDIR)$(BINDIR)/@WIN_PREFIX at pcrecpp.dll
-- at HAVE_CPP@	 $(INSTALL) .libs/@WIN_PREFIX at libpcrecpp.dll.a $(DESTDIR)$(LIBDIR)/@WIN_PREFIX at libpcrecpp.dll.a
--	-strip -g $(DESTDIR)$(BINDIR)/@WIN_PREFIX at pcre.dll
--	-strip -g $(DESTDIR)$(BINDIR)/@WIN_PREFIX at pcreposix.dll
-- at HAVE_CPP@	 -strip -g $(DESTDIR)$(BINDIR)/@WIN_PREFIX at pcrecpp.dll
-+	$(INSTALL) .libs/pcre.dll $(DESTDIR)$(BINDIR)/pcre.dll
-+	$(INSTALL) .libs/pcreposix.dll $(DESTDIR)$(BINDIR)/pcreposix.dll
-+	$(INSTALL) .libs/libpcreposix.dll.a $(DESTDIR)$(LIBDIR)/libpcreposix.dll.a
-+	$(INSTALL) .libs/libpcre.dll.a $(DESTDIR)$(LIBDIR)/libpcre.dll.a
-+ at HAVE_CPP@	 $(INSTALL) .libs/pcrecpp.dll $(DESTDIR)$(BINDIR)/pcrecpp.dll
-+ at HAVE_CPP@	 $(INSTALL) .libs/libpcrecpp.dll.a $(DESTDIR)$(LIBDIR)/libpcrecpp.dll.a
-+	-strip -g $(DESTDIR)$(BINDIR)/pcre.dll
-+	-strip -g $(DESTDIR)$(BINDIR)/pcreposix.dll
-+ at HAVE_CPP@	 -strip -g $(DESTDIR)$(BINDIR)/pcrecpp.dll
- 	-strip $(DESTDIR)$(BINDIR)/pcregrep at EXEEXT@
- 	-strip $(DESTDIR)$(BINDIR)/pcretest at EXEEXT@
- 
-@@ -555,12 +553,12 @@
- 
- check:          runtest
- 
-- at WIN_PREFIX@pcre.dll : winshared
--	cp .libs/@WIN_PREFIX at pcre.dll .
-+pcre.dll : winshared
-+	cp .libs/pcre.dll .
- 
- test:           runtest
- 
--runtest:        all @ON_WINDOWS@ @WIN_PREFIX at pcre.dll
-+runtest:        all @ON_WINDOWS@ pcre.dll
- 		@./RunTest
- 		@./RunGrepTest
- @HAVE_CPP@		 @echo ""
diff --git a/src/win32/patches/postgresql.patch b/src/win32/patches/postgresql.patch
deleted file mode 100644
index d270d2c..0000000
--- a/src/win32/patches/postgresql.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-Index: doc/Makefile
---- ../original/postgresql-8.1.4/doc/Makefile	2003-11-29 11:51:36.000000000 -0800
-+++ ./doc/Makefile	2006-06-29 03:44:10.000000000 -0700
-@@ -101,4 +101,4 @@
- 
- clean distclean maintainer-clean:
- 	rm -rf man1/ man$(sqlmansectnum)/ man$(sqlmansect_dummy)/
--	$(MAKE) -C src $@
-+	-$(MAKE) -C src $@
-Index: src/bin/pgevent/Makefile
---- ../original/postgresql-8.1.4/src/bin/pgevent/Makefile	2004-12-31 14:03:14.000000000 -0800
-+++ ./src/bin/pgevent/Makefile	2006-06-29 01:19:18.000000000 -0700
-@@ -14,16 +14,18 @@
- 
- OBJS=pgevent.o pgmsgevent.o
- NAME=pgevent.dll
-+DLLWRAP=dllwrap
-+WINDRES=windres
- 
- all: $(NAME)
- 
- install: all install-lib
- 
- pgevent.dll: $(OBJS) pgevent.def
--	dllwrap --def pgevent.def -o $(NAME) $(OBJS)
-+	$(DLLWRAP) --def pgevent.def -o $(NAME) $(OBJS)
- 	
- pgmsgevent.o: pgmsgevent.rc win32ver.rc
--	windres pgmsgevent.rc -o pgmsgevent.o --include-dir=$(top_builddir)/src/include
-+	$(WINDRES) pgmsgevent.rc -o pgmsgevent.o --include-dir=$(top_builddir)/src/include
- 
- all-lib: $(NAME)
- 
-Index: src/interfaces/libpq/Makefile
---- ../original/postgresql-8.1.4/src/interfaces/libpq/Makefile	2005-08-28 17:47:35.000000000 -0700
-+++ ./src/interfaces/libpq/Makefile	2006-06-29 01:15:35.000000000 -0700
-@@ -13,6 +13,7 @@
- top_builddir = ../../..
- include $(top_builddir)/src/Makefile.global
- 
-+WINDRES=windres
- 
- # shared library parameters
- NAME= pq
-@@ -42,7 +43,7 @@
- DLL_DEFFILE=libpqdll.def
- 
- libpqrc.o: libpq.rc
--	windres -i libpq.rc -o libpqrc.o
-+	$(WINDRES) -i libpq.rc -o libpqrc.o
- 
- ifeq ($(enable_thread_safety), yes)
- OBJS += pthread-win32.o
-Index: src/Makefile
---- ../original/postgresql-8.1.4/src/Makefile	2005-01-13 10:23:21.000000000 -0800
-+++ ./src/Makefile	2006-06-29 04:07:54.000000000 -0700
-@@ -52,10 +52,10 @@
- 	$(MAKE) -C bin $@
- 	$(MAKE) -C pl $@
- 	$(MAKE) -C makefiles $@
--	$(MAKE) -C test $@
--	$(MAKE) -C tutorial NO_PGXS=1 $@
-+	-$(MAKE) -C test $@
-+	-$(MAKE) -C tutorial NO_PGXS=1 $@
- 	$(MAKE) -C utils $@
--	$(MAKE) -C tools/thread $@
-+	-$(MAKE) -C tools/thread $@
- 
- distclean maintainer-clean:
- 	-$(MAKE) -C port $@
-Index: src/Makefile.global.in
---- ../original/postgresql-8.1.4/src/Makefile.global.in	2005-09-27 10:39:32.000000000 -0700
-+++ ./src/Makefile.global.in	2006-06-29 01:11:44.000000000 -0700
-@@ -31,6 +31,7 @@
- # PostgreSQL version number
- VERSION = @PACKAGE_VERSION@
- 
-+WINDRES=windres
- # Support for VPATH builds
- vpath_build = @vpath_build@
- abs_top_srcdir = @abs_top_srcdir@
-@@ -456,7 +457,7 @@
- 	sed -e 's;FILEDESC;$(PGFILEDESC);' -e 's;VFT_APP;$(PGFTYPE);' -e 's;_ICO_;$(PGICOSTR);' -e 's;\(VERSION.*\),0 *$$;\1,'`date '+%y%j' | sed 's/^0*//'`';' $(top_builddir)/src/port/win32ver.rc > win32ver.rc
- win32ver.o: $(top_builddir)/src/port/win32ver.rc
- 	sed -e 's;FILEDESC;$(PGFILEDESC);' -e 's;VFT_APP;$(PGFTYPE);' -e 's;_ICO_;$(PGICOSTR);' -e 's;\(VERSION.*\),0 *$$;\1,'`date '+%y%j' | sed 's/^0*//'`';' $(top_builddir)/src/port/win32ver.rc > win32ver.rc
--	windres -i win32ver.rc -o win32ver.o --include-dir=$(top_builddir)/src/include
-+	$(WINDRES) -i win32ver.rc -o win32ver.o --include-dir=$(top_builddir)/src/include
- 	rm -f win32ver.rc
- endif
- 
-Index: src/timezone/Makefile
---- ../original/postgresql-8.1.4/src/timezone/Makefile	2005-07-06 14:40:09.000000000 -0700
-+++ ./src/timezone/Makefile	2006-06-29 03:22:26.000000000 -0700
-@@ -12,6 +12,8 @@
- top_builddir = ../..
- include $(top_builddir)/src/Makefile.global
- 
-+ZIC=./zic
-+
- override CPPFLAGS := $(CPPFLAGS)
- 
- # files to build into backend
-@@ -25,16 +27,16 @@
- 	pacificnew etcetera factory backward systemv solar87 solar88 solar89
- TZDATAFILES := $(TZDATA:%=$(srcdir)/data/%)
- 
--all: SUBSYS.o submake-libpgport zic
-+all: SUBSYS.o submake-libpgport zic$(X)
- 
- SUBSYS.o: $(OBJS)
- 	$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
- 
--zic: $(ZICOBJS)
--	$(CC) $(CFLAGS) $(ZICOBJS) $(LDFLAGS) $(LIBS) -o $@$(X)
-+zic$(X): $(ZICOBJS)
-+	$(CC) $(CFLAGS) $(ZICOBJS) $(LDFLAGS) $(LIBS) -o $@
- 
- install: all installdirs
--	./zic -d $(DESTDIR)$(datadir)/timezone $(TZDATAFILES)
-+	$(ZIC) -d $(DESTDIR)$(datadir)/timezone $(TZDATAFILES)
- 
- installdirs:
- 	$(mkinstalldirs) $(DESTDIR)$(datadir)
diff --git a/src/win32/patches/pthreads-w64.patch b/src/win32/patches/pthreads-w64.patch
deleted file mode 100644
index 209ff6d..0000000
--- a/src/win32/patches/pthreads-w64.patch
+++ /dev/null
@@ -1,970 +0,0 @@
-diff -Naur ../pthreads-snap-2004-06-22/GNUmakefile ./GNUmakefile
---- ../pthreads-snap-2004-06-22/GNUmakefile	2004-05-20 02:56:52.000000000 +0200
-+++ ./GNUmakefile	2009-01-07 15:57:36.000000000 +0100
-@@ -48,9 +48,9 @@
- 
- #OPT	= -g
- #OPT	= -O3 -DTEST_ICE
--OPT	= -O3 -finline-functions
-+OPT	= $(CLEANUP) -O3  -DHAVE_STRUCT_TIMESPEC -D__MINGW32__ -finline-functions
- 
--LFLAGS		= -lwsock32
-+LFLAGS		= -lws2_32
- 
- GC_CFLAGS	= -D__CLEANUP_C
- GCE_CFLAGS	= -D__CLEANUP_CXX -mthreads
-@@ -408,16 +408,16 @@
- 	@ $(MAKE) clean GC
- 
- GC:
--		$(MAKE) CC=gcc CLEANUP_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_DLL)
-+		$(MAKE) CC=mingw32-gcc CLEANUP_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_DLL)
- 
- GCE:
--		$(MAKE) CC=g++ CLEANUP_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_DLL)
-+		$(MAKE) CC=mingw32-g++ CLEANUP_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_DLL)
- 
- GC-inlined:
--		$(MAKE) CC=gcc CLEANUP_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_INLINED_STAMP)
-+		$(MAKE) CC=mingw32-gcc CLEANUP_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_INLINED_STAMP)
- 
- GCE-inlined:
--		$(MAKE) CC=g++ CLEANUP_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP)
-+		$(MAKE) CC=mingw32-g++ CLEANUP_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP)
- 
- tests:
- 	@ cd tests
-@@ -436,24 +436,24 @@
- 
- $(GC_DLL): $(DLL_OBJS)
- 	$(CC) $(OPT) -shared -o $(GC_DLL) $(DLL_OBJS) $(LFLAGS)
--	dlltool -z pthread.def $(DLL_OBJS)
--	dlltool -k --dllname $@ --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
-+	mingw32-dlltool -z pthread.def $(DLL_OBJS)
-+	mingw32-dlltool -k --dllname $@ --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
- 
- $(GCE_DLL): $(DLL_OBJS)
- 	$(CC) $(OPT) -mthreads -shared -o $(GCE_DLL) $(DLL_OBJS) $(LFLAGS)
--	dlltool -z pthread.def $(DLL_OBJS)
--	dlltool -k --dllname $@ --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
-+	mingw32-dlltool -z pthread.def $(DLL_OBJS)
-+	mingw32-dlltool -k --dllname $@ --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
- 
- $(GC_INLINED_STAMP): $(DLL_INLINED_OBJS)
- 	$(CC) $(OPT) -shared -o $(GC_DLL) $(DLL_INLINED_OBJS) $(LFLAGS)
--	dlltool -z pthread.def $(DLL_INLINED_OBJS)
--	dlltool -k --dllname $(GC_DLL) --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
-+	mingw32-dlltool -z pthread.def $(DLL_INLINED_OBJS)
-+	mingw32-dlltool -k --dllname $(GC_DLL) --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
- 	echo touched > $(GC_INLINED_STAMP)
- 
- $(GCE_INLINED_STAMP): $(DLL_INLINED_OBJS)
- 	$(CC) $(OPT) -mthreads -shared -o $(GCE_DLL) $(DLL_INLINED_OBJS)  $(LFLAGS)
--	dlltool -z pthread.def $(DLL_INLINED_OBJS)
--	dlltool -k --dllname $(GCE_DLL) --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
-+	mingw32-dlltool -z pthread.def $(DLL_INLINED_OBJS)
-+	mingw32-dlltool -k --dllname $(GCE_DLL) --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
- 	echo touched > $(GCE_INLINED_STAMP)
- 
- clean:
-diff -Naur ../pthreads-snap-2004-06-22/implement.h ./implement.h
---- ../pthreads-snap-2004-06-22/implement.h	2004-06-22 08:12:54.000000000 +0200
-+++ ./implement.h	2009-01-07 15:57:36.000000000 +0100
-@@ -38,7 +38,9 @@
- #ifndef _IMPLEMENT_H
- #define _IMPLEMENT_H
- 
-+#ifndef _WIN32_WINNT
- #define _WIN32_WINNT 0x400
-+#endif
- 
- #include <windows.h>
- 
-diff -Naur ../pthreads-snap-2004-06-22/pthread_cancel.c ./pthread_cancel.c
---- ../pthreads-snap-2004-06-22/pthread_cancel.c	2004-05-17 03:38:02.000000000 +0200
-+++ ./pthread_cancel.c	2009-01-07 15:57:36.000000000 +0100
-@@ -70,7 +70,7 @@
- }
- 
- static void CALLBACK
--ptw32_cancel_callback (DWORD unused)
-+ptw32_cancel_callback (ULONG_PTR unused)
- {
-   ptw32_throw (PTW32_EPS_CANCEL);
- 
-diff -Naur ../pthreads-snap-2004-06-22/pthread_exit.c ./pthread_exit.c
---- ../pthreads-snap-2004-06-22/pthread_exit.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./pthread_exit.c	2009-01-07 15:57:36.000000000 +0100
-@@ -89,7 +89,7 @@
-        */
- 
- #if ! defined (__MINGW32__) || defined (__MSVCRT__)
--      _endthreadex ((unsigned) value_ptr);
-+      _endthreadex ((unsigned) ((ULONG_PTR)value_ptr));
- #else
-       _endthread ();
- #endif
-diff -Naur ../pthreads-snap-2004-06-22/pthread_getspecific.c ./pthread_getspecific.c
---- ../pthreads-snap-2004-06-22/pthread_getspecific.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./pthread_getspecific.c	2009-01-07 15:57:36.000000000 +0100
-@@ -63,13 +63,18 @@
-       * ------------------------------------------------------
-       */
- {
--  int lasterror = GetLastError ();
--  int lastWSAerror = WSAGetLastError ();
-+  void *ptr;
- 
--  void *ptr = TlsGetValue (key->key);
-+  if (key == NULL) {
-+     ptr = NULL;
-+  } else {
-+     int lasterror = GetLastError ();
-+     int lastWSAerror = WSAGetLastError ();
- 
--  SetLastError (lasterror);
--  WSASetLastError (lastWSAerror);
-+     ptr = TlsGetValue(key->key);
- 
-+     SetLastError(lasterror);
-+     WSASetLastError(lastWSAerror);
-+  }
-   return ptr;
- }
-diff -Naur ../pthreads-snap-2004-06-22/pthread.h ./pthread.h
---- ../pthreads-snap-2004-06-22/pthread.h	2004-06-22 08:12:54.000000000 +0200
-+++ ./pthread.h	2009-01-07 15:57:36.000000000 +0100
-@@ -274,10 +274,6 @@
- #endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
- 
- #ifndef HAVE_STRUCT_TIMESPEC
--struct timespec {
--        long tv_sec;
--        long tv_nsec;
--};
- #endif /* HAVE_STRUCT_TIMESPEC */
- 
- #ifndef SIG_BLOCK
-diff -Naur ../pthreads-snap-2004-06-22/ptw32_InterlockedCompareExchange.c ./ptw32_InterlockedCompareExchange.c
---- ../pthreads-snap-2004-06-22/ptw32_InterlockedCompareExchange.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./ptw32_InterlockedCompareExchange.c	2009-01-07 15:57:36.000000000 +0100
-@@ -101,6 +101,19 @@
- #endif
- 
- #else
-+#if defined(_WIN64)
-+   /*
-+    * Microsoft Visual C++ 7.1 and newer have _Interlocked intrinsics
-+    */
-+       {
-+               result = InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand);
-+       }
-+       else
-+       {
-+               result = InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand);
-+       }
-+ #else
-+
- 
-   /*
-    * If execution gets to here then we should be running on a Win95 system
-@@ -110,7 +123,8 @@
-    */
- 
-   result = 0;
--
-+#error Unsupported platform or compiler!
-+#endif
- #endif
- 
- /* *INDENT-ON* */
-diff -Naur ../pthreads-snap-2004-06-22/ptw32_semwait.c ./ptw32_semwait.c
---- ../pthreads-snap-2004-06-22/ptw32_semwait.c	2004-05-17 09:59:47.000000000 +0200
-+++ ./ptw32_semwait.c	2009-01-07 15:57:36.000000000 +0100
-@@ -41,7 +41,7 @@
- #include "implement.h"
- 
- 
--INLINE int
-+int
- ptw32_semwait (sem_t * sem)
-      /*
-       * ------------------------------------------------------
-diff -Naur ../pthreads-snap-2004-06-22/ptw32_threadStart.c ./ptw32_threadStart.c
---- ../pthreads-snap-2004-06-22/ptw32_threadStart.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./ptw32_threadStart.c	2009-01-07 15:57:36.000000000 +0100
-@@ -356,7 +356,7 @@
-     }
- 
- #if ! defined (__MINGW32__) || defined (__MSVCRT__)
--  _endthreadex ((unsigned) status);
-+  _endthreadex ((unsigned) ((ULONG_PTR)status));
- #else
-   _endthread ();
- #endif
-@@ -366,7 +366,7 @@
-    */
- 
- #if ! defined (__MINGW32__) || defined (__MSVCRT__)
--  return (unsigned) status;
-+  return (unsigned) ((ULONG_PTR)status);
- #endif
- 
- }				/* ptw32_threadStart */
-diff -Naur ../pthreads-snap-2004-06-22/ptw32_throw.c ./ptw32_throw.c
---- ../pthreads-snap-2004-06-22/ptw32_throw.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./ptw32_throw.c	2009-01-07 15:57:36.000000000 +0100
-@@ -78,10 +78,10 @@
-       switch (exception)
- 	{
- 	case PTW32_EPS_CANCEL:
--	  exitCode = (unsigned) PTHREAD_CANCELED;
-+	  exitCode = (unsigned) ((ULONG_PTR)PTHREAD_CANCELED);
- 	  break;
- 	case PTW32_EPS_EXIT:
--	  exitCode = (unsigned) self->exitStatus;;
-+	  exitCode = (unsigned) ((ULONG_PTR)self->exitStatus);;
- 	  break;
- 	}
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/barrier3.c ./tests/barrier3.c
---- ../pthreads-snap-2004-06-22/tests/barrier3.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/barrier3.c	2009-01-07 15:57:36.000000000 +0100
-@@ -41,7 +41,7 @@
- #include "test.h"
-  
- pthread_barrier_t barrier = NULL;
--static int result = 1;
-+static DWORD_PTR result = 1;
- 
- void * func(void * arg)
- {
-diff -Naur ../pthreads-snap-2004-06-22/tests/barrier5.c ./tests/barrier5.c
---- ../pthreads-snap-2004-06-22/tests/barrier5.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/barrier5.c	2009-01-07 15:57:36.000000000 +0100
-@@ -90,7 +90,7 @@
- main()
- {
-   int i, j;
--  int result;
-+  DWORD_PTR result;
-   int serialThreadsTotal;
-   pthread_t t[NUMTHREADS + 1];
- 
-@@ -112,7 +112,7 @@
-       for (i = 1; i <= j; i++)
-         {
-           assert(pthread_join(t[i], (void **) &result) == 0);
--          serialThreadsTotal += result;
-+           serialThreadsTotal += (int)result;
-         }
- 
-       assert(serialThreadsTotal == BARRIERS - 1);
-diff -Naur ../pthreads-snap-2004-06-22/tests/cancel2.c ./tests/cancel2.c
---- ../pthreads-snap-2004-06-22/tests/cancel2.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/cancel2.c	2009-01-07 15:57:36.000000000 +0100
-@@ -217,7 +217,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       assert(pthread_join(t[i], (void **) &result) == 0);
-       fail = (result != (int) PTHREAD_CANCELED);
-diff -Naur ../pthreads-snap-2004-06-22/tests/cancel3.c ./tests/cancel3.c
---- ../pthreads-snap-2004-06-22/tests/cancel3.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./tests/cancel3.c	2009-01-07 15:57:36.000000000 +0100
-@@ -173,7 +173,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       /*
-        * The thread does not contain any cancelation points, so
-diff -Naur ../pthreads-snap-2004-06-22/tests/cancel4.c ./tests/cancel4.c
---- ../pthreads-snap-2004-06-22/tests/cancel4.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./tests/cancel4.c	2009-01-07 15:57:36.000000000 +0100
-@@ -173,7 +173,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       /*
-        * The thread does not contain any cancelation points, so
-diff -Naur ../pthreads-snap-2004-06-22/tests/cancel5.c ./tests/cancel5.c
---- ../pthreads-snap-2004-06-22/tests/cancel5.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./tests/cancel5.c	2009-01-07 15:57:36.000000000 +0100
-@@ -171,7 +171,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       /*
-        * The thread does not contain any cancelation points, so
-diff -Naur ../pthreads-snap-2004-06-22/tests/cancel6a.c ./tests/cancel6a.c
---- ../pthreads-snap-2004-06-22/tests/cancel6a.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./tests/cancel6a.c	2009-01-07 15:57:36.000000000 +0100
-@@ -161,7 +161,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       /*
-        * The thread does not contain any cancelation points, so
-diff -Naur ../pthreads-snap-2004-06-22/tests/cancel6d.c ./tests/cancel6d.c
---- ../pthreads-snap-2004-06-22/tests/cancel6d.c	2004-05-17 03:38:03.000000000 +0200
-+++ ./tests/cancel6d.c	2009-01-07 15:57:36.000000000 +0100
-@@ -165,7 +165,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       /*
-        * The thread does not contain any cancelation points, so
-diff -Naur ../pthreads-snap-2004-06-22/tests/cleanup0.c ./tests/cleanup0.c
---- ../pthreads-snap-2004-06-22/tests/cleanup0.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/cleanup0.c	2009-01-07 15:57:36.000000000 +0100
-@@ -180,7 +180,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       assert(pthread_join(t[i], (void **) &result) == 0);
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/cleanup1.c ./tests/cleanup1.c
---- ../pthreads-snap-2004-06-22/tests/cleanup1.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/cleanup1.c	2009-01-07 15:57:36.000000000 +0100
-@@ -195,7 +195,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       assert(pthread_join(t[i], (void **) &result) == 0);
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/cleanup2.c ./tests/cleanup2.c
---- ../pthreads-snap-2004-06-22/tests/cleanup2.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/cleanup2.c	2009-01-07 15:57:36.000000000 +0100
-@@ -169,7 +169,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       assert(pthread_join(t[i], (void **) &result) == 0);
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/cleanup3.c ./tests/cleanup3.c
---- ../pthreads-snap-2004-06-22/tests/cleanup3.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/cleanup3.c	2009-01-07 15:57:36.000000000 +0100
-@@ -172,7 +172,7 @@
-   for (i = 1; i <= NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
-       assert(pthread_join(t[i], (void **) &result) == 0);
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar1_2.c ./tests/condvar1_2.c
---- ../pthreads-snap-2004-06-22/tests/condvar1_2.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/condvar1_2.c	2009-01-07 15:57:36.000000000 +0100
-@@ -89,7 +89,7 @@
- main()
- {
-   int i, j, k;
--  int result = -1;
-+  DWORD_PTR result = -1;
-   pthread_t t;
- 
-   for (k = 0; k < NUM_LOOPS; k++)
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar2_1.c ./tests/condvar2_1.c
---- ../pthreads-snap-2004-06-22/tests/condvar2_1.c	2004-05-20 02:56:52.000000000 +0200
-+++ ./tests/condvar2_1.c	2009-01-07 15:57:36.000000000 +0100
-@@ -105,7 +105,7 @@
- {
-   int i;
-   pthread_t t[NUMTHREADS + 1];
--  int result = 0;
-+  DWORD_PTR result = 0;
-   struct _timeb currSysTime;
-   const DWORD NANOSEC_PER_MILLISEC = 1000000;
- 
-@@ -116,7 +116,7 @@
-   /* get current system time */
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 5;
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar2.c ./tests/condvar2.c
---- ../pthreads-snap-2004-06-22/tests/condvar2.c	2004-05-20 02:56:52.000000000 +0200
-+++ ./tests/condvar2.c	2009-01-07 15:57:36.000000000 +0100
-@@ -99,7 +99,7 @@
-   /* get current system time */
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 5;
-@@ -109,7 +109,7 @@
-   assert(pthread_mutex_unlock(&mutex) == 0);
- 
-   {
--  int result = pthread_cond_destroy(&cv);
-+  DWORD_PTR result = pthread_cond_destroy(&cv);
-   if (result != 0)
-     {
-       fprintf(stderr, "Result = %s\n", error_string[result]);
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar3_1.c ./tests/condvar3_1.c
---- ../pthreads-snap-2004-06-22/tests/condvar3_1.c	2004-05-20 02:56:52.000000000 +0200
-+++ ./tests/condvar3_1.c	2009-01-07 15:57:36.000000000 +0100
-@@ -125,7 +125,7 @@
- {
-   int i;
-   pthread_t t[NUMTHREADS + 1];
--  int result = 0;
-+  DWORD_PTR result = 0;
-   struct _timeb currSysTime;
-   const DWORD NANOSEC_PER_MILLISEC = 1000000;
- 
-@@ -137,7 +137,7 @@
-   /* get current system time */
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 5;
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar3_2.c ./tests/condvar3_2.c
---- ../pthreads-snap-2004-06-22/tests/condvar3_2.c	2004-05-20 02:56:52.000000000 +0200
-+++ ./tests/condvar3_2.c	2009-01-07 15:57:36.000000000 +0100
-@@ -127,7 +127,7 @@
- {
-   int i;
-   pthread_t t[NUMTHREADS + 1];
--  int result = 0;
-+  DWORD_PTR result = 0;
-   struct _timeb currSysTime;
-   const DWORD NANOSEC_PER_MILLISEC = 1000000;
- 
-@@ -138,7 +138,7 @@
-   /* get current system time */
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = abstime.tv_sec = currSysTime.time + 5;
-+  abstime.tv_sec = abstime.tv_sec = (long)currSysTime.time + 5;
-   abstime.tv_nsec = abstime2.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   assert(pthread_mutex_lock(&mutex) == 0);
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar3_3.c ./tests/condvar3_3.c
---- ../pthreads-snap-2004-06-22/tests/condvar3_3.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/condvar3_3.c	2009-01-07 15:57:36.000000000 +0100
-@@ -96,7 +96,7 @@
-    /* get current system time */
-    _ftime(&currSysTime);
- 
--   abstime.tv_sec = currSysTime.time;
-+   abstime.tv_sec = (long)currSysTime.time;
-    abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
-    abstime.tv_sec += 1;
- 
-@@ -120,7 +120,7 @@
- 
-    assert(pthread_mutex_lock(&mtx) == 0);
- 
--   abstime.tv_sec = currSysTime.time;
-+   abstime.tv_sec = (long)currSysTime.time;
-    abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
-    abstime.tv_sec += 1;
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar3.c ./tests/condvar3.c
---- ../pthreads-snap-2004-06-22/tests/condvar3.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/condvar3.c	2009-01-07 15:57:36.000000000 +0100
-@@ -127,7 +127,7 @@
-   /* get current system time */
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   assert(pthread_create(&t[1], NULL, mythread, (void *) 1) == 0);
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar4.c ./tests/condvar4.c
---- ../pthreads-snap-2004-06-22/tests/condvar4.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/condvar4.c	2009-01-07 15:57:36.000000000 +0100
-@@ -132,7 +132,7 @@
-   /* get current system time */
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 5;
-@@ -145,7 +145,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 5;
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar5.c ./tests/condvar5.c
---- ../pthreads-snap-2004-06-22/tests/condvar5.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/condvar5.c	2009-01-07 15:57:36.000000000 +0100
-@@ -131,7 +131,7 @@
-   /* get current system time */
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 5;
-@@ -144,7 +144,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 5;
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar6.c ./tests/condvar6.c
---- ../pthreads-snap-2004-06-22/tests/condvar6.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/condvar6.c	2009-01-07 15:57:36.000000000 +0100
-@@ -159,7 +159,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 5;
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar7.c ./tests/condvar7.c
---- ../pthreads-snap-2004-06-22/tests/condvar7.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/condvar7.c	2009-01-07 15:57:36.000000000 +0100
-@@ -169,7 +169,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 10;
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar8.c ./tests/condvar8.c
---- ../pthreads-snap-2004-06-22/tests/condvar8.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/condvar8.c	2009-01-07 15:57:36.000000000 +0100
-@@ -166,7 +166,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 10;
-diff -Naur ../pthreads-snap-2004-06-22/tests/condvar9.c ./tests/condvar9.c
---- ../pthreads-snap-2004-06-22/tests/condvar9.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/condvar9.c	2009-01-07 15:57:36.000000000 +0100
-@@ -172,7 +172,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 5;
-diff -Naur ../pthreads-snap-2004-06-22/tests/context1.c ./tests/context1.c
---- ../pthreads-snap-2004-06-22/tests/context1.c	2004-05-20 02:56:52.000000000 +0200
-+++ ./tests/context1.c	2009-01-07 15:57:36.000000000 +0100
-@@ -125,7 +125,11 @@
-       /*
-        *_x86 only!!!
-        */
-+#if defined(_M_IX86)
-       context.Eip = (DWORD) anotherEnding;
-+#else
-+      context.Rip = (DWORD64) anotherEnding;
-+#endif
-       SetThreadContext(hThread, &context);
-       ResumeThread(hThread);
-     }
-diff -Naur ../pthreads-snap-2004-06-22/tests/delay2.c ./tests/delay2.c
---- ../pthreads-snap-2004-06-22/tests/delay2.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/delay2.c	2009-01-07 15:57:36.000000000 +0100
-@@ -65,7 +65,7 @@
- main(int argc, char * argv[])
- {
-   pthread_t t;
--  int result = 0;
-+  DWORD_PTR result = 0;
- 
-   assert(pthread_mutex_lock(&mx) == 0);
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/exception1.c ./tests/exception1.c
---- ../pthreads-snap-2004-06-22/tests/exception1.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/exception1.c	2009-01-07 15:57:36.000000000 +0100
-@@ -226,7 +226,7 @@
-   for (i = 0; i < NUMTHREADS; i++)
-     {
-       int fail = 0;
--      int result = 0;
-+      DWORD_PTR result = 0;
- 
- 	/* Canceled thread */
-       assert(pthread_join(ct[i], (void **) &result) == 0);
-diff -Naur ../pthreads-snap-2004-06-22/tests/GNUmakefile ./tests/GNUmakefile
---- ../pthreads-snap-2004-06-22/tests/GNUmakefile	2004-06-22 08:12:55.000000000 +0200
-+++ ./tests/GNUmakefile	2009-01-07 15:57:36.000000000 +0100
-@@ -64,7 +64,7 @@
- DLL	= pthread$(GCX).dll
- QAPC	= ../QueueUserAPCEx/User/quserex.dll
- 
--COPYFILES	= $(HDR) $(LIB) $(DLL) $(QAPC)
-+COPYFILES	= $(HDR) $(LIB) $(DLL)
- 
- # If a test case returns a non-zero exit code to the shell, make will
- # stop.
-diff -Naur ../pthreads-snap-2004-06-22/tests/join0.c ./tests/join0.c
---- ../pthreads-snap-2004-06-22/tests/join0.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/join0.c	2009-01-07 15:57:36.000000000 +0100
-@@ -53,7 +53,7 @@
- main(int argc, char * argv[])
- {
-   pthread_t id;
--  int result;
-+  DWORD_PTR result;
- 
-   /* Create a single thread and wait for it to exit. */
-   assert(pthread_create(&id, NULL, func, (void *) 123) == 0);
-diff -Naur ../pthreads-snap-2004-06-22/tests/join1.c ./tests/join1.c
---- ../pthreads-snap-2004-06-22/tests/join1.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/join1.c	2009-01-07 15:57:36.000000000 +0100
-@@ -56,7 +56,7 @@
- {
- 	pthread_t id[4];
- 	int i;
--	int result;
-+	DWORD_PTR result;
- 
- 	/* Create a few threads and then exit. */
- 	for (i = 0; i < 4; i++)
-diff -Naur ../pthreads-snap-2004-06-22/tests/join2.c ./tests/join2.c
---- ../pthreads-snap-2004-06-22/tests/join2.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/join2.c	2009-01-07 15:57:36.000000000 +0100
-@@ -50,7 +50,7 @@
- {
- 	pthread_t id[4];
- 	int i;
--	int result;
-+	DWORD_PTR result;
- 
- 	/* Create a few threads and then exit. */
- 	for (i = 0; i < 4; i++)
-diff -Naur ../pthreads-snap-2004-06-22/tests/join3.c ./tests/join3.c
---- ../pthreads-snap-2004-06-22/tests/join3.c	2004-05-22 03:17:58.000000000 +0200
-+++ ./tests/join3.c	2009-01-07 15:57:36.000000000 +0100
-@@ -50,7 +50,7 @@
- {
- 	pthread_t id[4];
- 	int i;
--	int result;
-+	DWORD_PTR result;
- 
- 	/* Create a few threads and then exit. */
- 	for (i = 0; i < 4; i++)
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex6e.c ./tests/mutex6e.c
---- ../pthreads-snap-2004-06-22/tests/mutex6e.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/mutex6e.c	2009-01-07 15:57:36.000000000 +0100
-@@ -74,7 +74,7 @@
- main()
- {
-   pthread_t t;
--  int result = 0;
-+  DWORD_PTR result = 0;
-   int mxType = -1;
- 
-   assert(pthread_mutexattr_init(&mxAttr) == 0);
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex6es.c ./tests/mutex6es.c
---- ../pthreads-snap-2004-06-22/tests/mutex6es.c	2004-06-22 08:12:55.000000000 +0200
-+++ ./tests/mutex6es.c	2009-01-07 15:57:36.000000000 +0100
-@@ -73,7 +73,7 @@
- main()
- {
-   pthread_t t;
--  int result = 0;
-+  DWORD_PTR result = 0;
- 
-   assert(mutex == PTHREAD_ERRORCHECK_MUTEX_INITIALIZER);
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex6r.c ./tests/mutex6r.c
---- ../pthreads-snap-2004-06-22/tests/mutex6r.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/mutex6r.c	2009-01-07 15:57:36.000000000 +0100
-@@ -73,7 +73,7 @@
- main()
- {
-   pthread_t t;
--  int result = 0;
-+  DWORD_PTR result = 0;
-   int mxType = -1;
- 
-   assert(pthread_mutexattr_init(&mxAttr) == 0);
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex6rs.c ./tests/mutex6rs.c
---- ../pthreads-snap-2004-06-22/tests/mutex6rs.c	2004-06-22 08:12:55.000000000 +0200
-+++ ./tests/mutex6rs.c	2009-01-07 15:57:36.000000000 +0100
-@@ -72,7 +72,7 @@
- main()
- {
-   pthread_t t;
--  int result = 0;
-+  DWORD_PTR result = 0;
- 
-   assert(mutex == PTHREAD_RECURSIVE_MUTEX_INITIALIZER);
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex7e.c ./tests/mutex7e.c
---- ../pthreads-snap-2004-06-22/tests/mutex7e.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/mutex7e.c	2009-01-07 15:57:36.000000000 +0100
-@@ -74,7 +74,7 @@
- main()
- {
-   pthread_t t;
--  int result = 0;
-+  DWORD_PTR result = 0;
-   int mxType = -1;
- 
-   assert(pthread_mutexattr_init(&mxAttr) == 0);
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex7r.c ./tests/mutex7r.c
---- ../pthreads-snap-2004-06-22/tests/mutex7r.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/mutex7r.c	2009-01-07 15:57:36.000000000 +0100
-@@ -73,7 +73,7 @@
- main()
- {
-   pthread_t t;
--  int result = 0;
-+  DWORD_PTR result = 0;
-   int mxType = -1;
- 
-   assert(pthread_mutexattr_init(&mxAttr) == 0);
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex8.c ./tests/mutex8.c
---- ../pthreads-snap-2004-06-22/tests/mutex8.c	2002-02-20 05:39:56.000000000 +0100
-+++ ./tests/mutex8.c	2009-01-07 15:57:36.000000000 +0100
-@@ -49,7 +49,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 1;
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex8e.c ./tests/mutex8e.c
---- ../pthreads-snap-2004-06-22/tests/mutex8e.c	2002-02-20 05:39:56.000000000 +0100
-+++ ./tests/mutex8e.c	2009-01-07 15:57:36.000000000 +0100
-@@ -57,7 +57,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 1;
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex8n.c ./tests/mutex8n.c
---- ../pthreads-snap-2004-06-22/tests/mutex8n.c	2002-02-20 05:39:56.000000000 +0100
-+++ ./tests/mutex8n.c	2009-01-07 15:57:36.000000000 +0100
-@@ -57,7 +57,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 1;
-diff -Naur ../pthreads-snap-2004-06-22/tests/mutex8r.c ./tests/mutex8r.c
---- ../pthreads-snap-2004-06-22/tests/mutex8r.c	2002-02-20 05:39:56.000000000 +0100
-+++ ./tests/mutex8r.c	2009-01-07 15:57:36.000000000 +0100
-@@ -57,7 +57,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 1;
-diff -Naur ../pthreads-snap-2004-06-22/tests/rwlock2_t.c ./tests/rwlock2_t.c
---- ../pthreads-snap-2004-06-22/tests/rwlock2_t.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/rwlock2_t.c	2009-01-07 15:57:36.000000000 +0100
-@@ -55,7 +55,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 1;
-diff -Naur ../pthreads-snap-2004-06-22/tests/rwlock3_t.c ./tests/rwlock3_t.c
---- ../pthreads-snap-2004-06-22/tests/rwlock3_t.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/rwlock3_t.c	2009-01-07 15:57:36.000000000 +0100
-@@ -68,7 +68,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 1;
-diff -Naur ../pthreads-snap-2004-06-22/tests/rwlock4_t.c ./tests/rwlock4_t.c
---- ../pthreads-snap-2004-06-22/tests/rwlock4_t.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/rwlock4_t.c	2009-01-07 15:57:36.000000000 +0100
-@@ -68,7 +68,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 1;
-diff -Naur ../pthreads-snap-2004-06-22/tests/rwlock5_t.c ./tests/rwlock5_t.c
---- ../pthreads-snap-2004-06-22/tests/rwlock5_t.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/rwlock5_t.c	2009-01-07 15:57:36.000000000 +0100
-@@ -70,7 +70,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 1;
-diff -Naur ../pthreads-snap-2004-06-22/tests/rwlock6.c ./tests/rwlock6.c
---- ../pthreads-snap-2004-06-22/tests/rwlock6.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/rwlock6.c	2009-01-07 15:57:36.000000000 +0100
-@@ -77,9 +77,9 @@
-   pthread_t wrt1;
-   pthread_t wrt2;
-   pthread_t rdt;
--  int wr1Result = 0;
--  int wr2Result = 0;
--  int rdResult = 0;
-+  DWORD_PTR wr1Result = 0;
-+  DWORD_PTR wr2Result = 0;
-+  DWORD_PTR rdResult = 0;
- 
-   bankAccount = 0;
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/rwlock6_t2.c ./tests/rwlock6_t2.c
---- ../pthreads-snap-2004-06-22/tests/rwlock6_t2.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/rwlock6_t2.c	2009-01-07 15:57:36.000000000 +0100
-@@ -86,15 +86,15 @@
-   pthread_t wrt1;
-   pthread_t wrt2;
-   pthread_t rdt;
--  int wr1Result = 0;
--  int wr2Result = 0;
--  int rdResult = 0;
-+  DWORD_PTR wr1Result = 0;
-+  DWORD_PTR wr2Result = 0;
-+  DWORD_PTR rdResult = 0;
-   struct _timeb currSysTime;
-   const DWORD NANOSEC_PER_MILLISEC = 1000000;
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
-   abstime.tv_sec += 1;
-diff -Naur ../pthreads-snap-2004-06-22/tests/rwlock6_t.c ./tests/rwlock6_t.c
---- ../pthreads-snap-2004-06-22/tests/rwlock6_t.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/rwlock6_t.c	2009-01-07 15:57:36.000000000 +0100
-@@ -67,7 +67,7 @@
- 
-   _ftime(&currSysTime);
- 
--  abstime.tv_sec = currSysTime.time;
-+  abstime.tv_sec = (long)currSysTime.time;
-   abstime.tv_nsec = NANOSEC_PER_MILLISEC * currSysTime.millitm;
- 
- 
-@@ -95,10 +95,10 @@
-   pthread_t wrt2;
-   pthread_t rdt1;
-   pthread_t rdt2;
--  int wr1Result = 0;
--  int wr2Result = 0;
--  int rd1Result = 0;
--  int rd2Result = 0;
-+  DWORD_PTR wr1Result = 0;
-+  DWORD_PTR wr2Result = 0;
-+  DWORD_PTR rd1Result = 0;
-+  DWORD_PTR rd2Result = 0;
- 
-   bankAccount = 0;
- 
-diff -Naur ../pthreads-snap-2004-06-22/tests/semaphore1.c ./tests/semaphore1.c
---- ../pthreads-snap-2004-06-22/tests/semaphore1.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/semaphore1.c	2009-01-07 15:57:36.000000000 +0100
-@@ -117,7 +117,7 @@
- {
-   pthread_t t;
-   sem_t s;
--  int result;
-+  DWORD_PTR result;
- 
-   assert(pthread_create(&t, NULL, thr, NULL) == 0);
-   assert(pthread_join(t, (void **)&result) == 0);
-diff -Naur ../pthreads-snap-2004-06-22/tests/spin4.c ./tests/spin4.c
---- ../pthreads-snap-2004-06-22/tests/spin4.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/spin4.c	2009-01-07 15:57:36.000000000 +0100
-@@ -63,7 +63,7 @@
- int
- main()
- {
--  long result = 0;
-+  DWORD_PTR result = 0;
-   pthread_t t;
-   int CPUs;
-   struct _timeb sysTime;
-diff -Naur ../pthreads-snap-2004-06-22/tests/tsd1.c ./tests/tsd1.c
---- ../pthreads-snap-2004-06-22/tests/tsd1.c	2003-08-19 05:31:51.000000000 +0200
-+++ ./tests/tsd1.c	2009-01-07 15:57:36.000000000 +0100
-@@ -171,7 +171,7 @@
-    */
-   for (i = 1; i < 10; i++)
-     {
--	int result = 0;
-+	DWORD_PTR result = 0;
- 
- 	assert(pthread_join(thread[i], (void **) &result) == 0);
-     }
diff --git a/src/win32/patches/pthreads.patch b/src/win32/patches/pthreads.patch
deleted file mode 100644
index 3f61137..0000000
--- a/src/win32/patches/pthreads.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-Index: GNUmakefile
---- ../tmp/pthreads-snap-2004-06-22/GNUmakefile	2004-05-19 17:56:52.000000000 -0700
-+++ ./GNUmakefile	2006-06-27 05:48:10.000000000 -0700
-@@ -408,16 +408,16 @@
- 	@ $(MAKE) clean GC
- 
- GC:
--		$(MAKE) CC=gcc CLEANUP_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_DLL)
-+		$(MAKE) CC=mingw32-gcc CLEANUP_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_OBJS)" $(GC_DLL)
- 
- GCE:
--		$(MAKE) CC=g++ CLEANUP_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_DLL)
-+		$(MAKE) CC=mingw32-g++ CLEANUP_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_OBJS)" $(GCE_DLL)
- 
- GC-inlined:
--		$(MAKE) CC=gcc CLEANUP_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_INLINED_STAMP)
-+		$(MAKE) CC=mingw32-gcc CLEANUP_FLAGS="$(GC_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GC_INLINED_STAMP)
- 
- GCE-inlined:
--		$(MAKE) CC=g++ CLEANUP_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP)
-+		$(MAKE) CC=mingw32-g++ CLEANUP_FLAGS="$(GCE_CFLAGS)" OBJ="$(DLL_INLINED_OBJS)" $(GCE_INLINED_STAMP)
- 
- tests:
- 	@ cd tests
-@@ -436,24 +436,24 @@
- 
- $(GC_DLL): $(DLL_OBJS)
- 	$(CC) $(OPT) -shared -o $(GC_DLL) $(DLL_OBJS) $(LFLAGS)
--	dlltool -z pthread.def $(DLL_OBJS)
--	dlltool -k --dllname $@ --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
-+	mingw32-dlltool -z pthread.def $(DLL_OBJS)
-+	mingw32-dlltool -k --dllname $@ --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
- 
- $(GCE_DLL): $(DLL_OBJS)
- 	$(CC) $(OPT) -mthreads -shared -o $(GCE_DLL) $(DLL_OBJS) $(LFLAGS)
--	dlltool -z pthread.def $(DLL_OBJS)
--	dlltool -k --dllname $@ --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
-+	mingw32-dlltool -z pthread.def $(DLL_OBJS)
-+	mingw32-dlltool -k --dllname $@ --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
- 
- $(GC_INLINED_STAMP): $(DLL_INLINED_OBJS)
- 	$(CC) $(OPT) -shared -o $(GC_DLL) $(DLL_INLINED_OBJS) $(LFLAGS)
--	dlltool -z pthread.def $(DLL_INLINED_OBJS)
--	dlltool -k --dllname $(GC_DLL) --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
-+	mingw32-dlltool -z pthread.def $(DLL_INLINED_OBJS)
-+	mingw32-dlltool -k --dllname $(GC_DLL) --output-lib $(GC_LIB) --def $(PTHREAD_DEF)
- 	echo touched > $(GC_INLINED_STAMP)
- 
- $(GCE_INLINED_STAMP): $(DLL_INLINED_OBJS)
- 	$(CC) $(OPT) -mthreads -shared -o $(GCE_DLL) $(DLL_INLINED_OBJS)  $(LFLAGS)
--	dlltool -z pthread.def $(DLL_INLINED_OBJS)
--	dlltool -k --dllname $(GCE_DLL) --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
-+	mingw32-dlltool -z pthread.def $(DLL_INLINED_OBJS)
-+	mingw32-dlltool -k --dllname $(GCE_DLL) --output-lib $(GCE_LIB) --def $(PTHREAD_DEF)
- 	echo touched > $(GCE_INLINED_STAMP)
- 
- clean:
-Index: ptw32_semwait.c
---- ../tmp/pthreads-snap-2004-06-22/ptw32_semwait.c	2004-05-17 00:59:47.000000000 -0700
-+++ ./ptw32_semwait.c	2006-06-27 05:52:59.000000000 -0700
-@@ -41,7 +41,7 @@
- #include "implement.h"
- 
- 
--INLINE int
-+int
- ptw32_semwait (sem_t * sem)
-      /*
-       * ------------------------------------------------------
---- /tmp/pthread_getspecific.c.bak	2008-07-12 17:26:03.000000000 +0200
-+++ pthread_getspecific.c	2008-07-12 17:26:03.000000000 +0200
-@@ -63,13 +63,18 @@
-       * ------------------------------------------------------
-       */
- {
--  int lasterror = GetLastError ();
--  int lastWSAerror = WSAGetLastError ();
-+  void *ptr;
- 
--  void *ptr = TlsGetValue (key->key);
-+  if (key == NULL) {
-+     ptr = NULL;
-+  } else {
-+     int lasterror = GetLastError ();
-+     int lastWSAerror = WSAGetLastError ();
- 
--  SetLastError (lasterror);
--  WSASetLastError (lastWSAerror);
-+     ptr = TlsGetValue(key->key);
- 
-+     SetLastError(lasterror);
-+     WSASetLastError(lastWSAerror);
-+  }
-   return ptr;
- }
diff --git a/src/win32/patches/sed.patch b/src/win32/patches/sed.patch
deleted file mode 100644
index a599cb3..0000000
--- a/src/win32/patches/sed.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: regex_internal.h
---- ../released/sed-4.1.5/lib/regex_internal.h	2005-12-06 00:50:56.000000000 -0800
-+++ ./lib/regex_internal.h	2006-08-31 02:24:05.000000000 -0700
-@@ -410,7 +410,11 @@
- #define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx))
- #define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx))
- 
-+#if defined(WIN32)
-+#include <malloc.h>
-+#else
- #include <alloca.h>
-+#endif
- 
- #ifndef _LIBC
- # if HAVE_ALLOCA
diff --git a/src/win32/patches/sed_msc.patch b/src/win32/patches/sed_msc.patch
deleted file mode 100644
index b347e25..0000000
--- a/src/win32/patches/sed_msc.patch
+++ /dev/null
@@ -1,927 +0,0 @@
-diff -Nru ../release/sed-4.1.5/config_h.msc ./config_h.msc
---- ../release/sed-4.1.5/config_h.msc	1969-12-31 16:00:00.000000000 -0800
-+++ ./config_h.msc	2006-09-28 19:34:18.620414300 -0700
-@@ -0,0 +1,387 @@
-+/* config_h.in.  Generated from configure.ac by autoheader. */
-+/* config_h.msc.  Modified for Microsoft Visual Studio. */
-+
-+#define O_CREAT _O_CREAT
-+#define O_EXCL _O_EXCL
-+#define O_RDWR _O_RDWR
-+
-+#define popen _popen
-+#define pclose _pclose
-+#define alloca _alloca
-+#define strcasecmp stricmp
-+
-+#define S_ISREG(x) (((x) & _S_IFMT) == _S_IFREG)
-+
-+#define HAVE_FCNTL_H 1
-+
-+/* 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 translation of program messages to the user's native
-+   language is requested. */
-+#undef ENABLE_NLS
-+
-+/* Define to 1 if you have `alloca', as a function or macro. */
-+#define HAVE_ALLOCA 1
-+
-+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-+   */
-+#undef HAVE_ALLOCA_H
-+
-+/* Define to 1 if you have the <argz.h> header file. */
-+#undef HAVE_ARGZ_H
-+
-+/* Define to 1 if you have the `bcopy' function. */
-+#undef HAVE_BCOPY
-+
-+/* Define to 1 if you have the `btowc' function. */
-+#undef HAVE_BTOWC
-+
-+/* Define to 1 if you have the `bzero' function. */
-+#undef HAVE_BZERO
-+
-+/* Define if the GNU dcgettext() function is already present or preinstalled.
-+   */
-+#undef HAVE_DCGETTEXT
-+
-+/* 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 <errno.h> header file. */
-+#define HAVE_ERRNO_H 1
-+
-+/* Define to 1 if you have the `fchmod' function. */
-+#undef HAVE_FCHMOD
-+
-+/* Define to 1 if you have the `fchown' function. */
-+#undef HAVE_FCHOWN
-+
-+/* Define to 1 if you have the `feof_unlocked' function. */
-+#undef HAVE_FEOF_UNLOCKED
-+
-+/* Define to 1 if you have the `fgets_unlocked' function. */
-+#undef HAVE_FGETS_UNLOCKED
-+
-+/* Define to 1 if you have the `getcwd' function. */
-+#define HAVE_GETCWD 1
-+
-+/* Define to 1 if you have the `getc_unlocked' function. */
-+#undef HAVE_GETC_UNLOCKED
-+
-+/* Define to 1 if you have the `getegid' function. */
-+#undef HAVE_GETEGID
-+
-+/* Define to 1 if you have the `geteuid' function. */
-+#undef HAVE_GETEUID
-+
-+/* Define to 1 if you have the `getgid' function. */
-+#undef HAVE_GETGID
-+
-+/* Define to 1 if you have the `getpagesize' function. */
-+#undef HAVE_GETPAGESIZE
-+
-+/* Define if the GNU gettext() function is already present or preinstalled. */
-+#undef HAVE_GETTEXT
-+
-+/* Define to 1 if you have the `getuid' function. */
-+#undef HAVE_GETUID
-+
-+/* Define if you have the iconv() function. */
-+#undef HAVE_ICONV
-+
-+/* Define to 1 if you have the <inttypes.h> header file. */
-+#undef HAVE_INTTYPES_H
-+
-+/* Define to 1 if you have the <io.h> header file. */
-+#define HAVE_IO_H 1
-+
-+/* Define to 1 if you have the `isascii' function. */
-+#define HAVE_ISASCII 1
-+
-+/* Define to 1 if you have the `isatty' function. */
-+#undef HAVE_ISATTY
-+
-+/* Define to 1 if you have the `isblank' function. */
-+#undef HAVE_ISBLANK
-+
-+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-+#undef HAVE_LANGINFO_CODESET
-+
-+/* Define if your <locale.h> file defines LC_MESSAGES. */
-+#define HAVE_LC_MESSAGES 1
-+
-+/* Define to 1 if you have the `regex' library (-lregex). */
-+#undef HAVE_LIBREGEX
-+
-+/* Define to 1 if you have the <limits.h> header file. */
-+#define HAVE_LIMITS_H 1
-+
-+/* Define to 1 if you have the <locale.h> header file. */
-+#undef HAVE_LOCALE_H
-+
-+/* Define to 1 if you support file names longer than 14 characters. */
-+#define HAVE_LONG_FILE_NAMES 1
-+
-+/* Define to 1 if you have the <malloc.h> header file. */
-+#define HAVE_MALLOC_H 1
-+
-+/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
-+#undef HAVE_MBRTOWC
-+
-+/* Define to 1 if <wchar.h> declares mbstate_t. */
-+#undef HAVE_MBSTATE_T
-+
-+/* Define to 1 if you have the <mcheck.h> header file. */
-+#undef HAVE_MCHECK_H
-+
-+/* Define to 1 if you have the `memchr' function. */
-+#define HAVE_MEMCHR 1
-+
-+/* Define to 1 if you have the `memcmp' function. */
-+#define HAVE_MEMCMP 1
-+
-+/* Define to 1 if you have the `memcpy' function. */
-+#define HAVE_MEMCPY 1
-+
-+/* Define to 1 if you have the `memmove' function. */
-+#define HAVE_MEMMOVE 1
-+
-+/* Define to 1 if you have the <memory.h> header file. */
-+#define HAVE_MEMORY_H 1
-+
-+/* Define to 1 if you have the `mempcpy' function. */
-+#undef HAVE_MEMPCPY
-+
-+/* Define to 1 if you have the `memset' function. */
-+#define HAVE_MEMSET 1
-+
-+/* Define to 1 if you have the `mkstemp' function. */
-+#undef HAVE_MKSTEMP
-+
-+/* Define to 1 if you have a working `mmap' system call. */
-+#undef HAVE_MMAP
-+
-+/* Define to 1 if you have the `munmap' function. */
-+#undef HAVE_MUNMAP
-+
-+/* 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 <nl_types.h> header file. */
-+#undef HAVE_NL_TYPES_H
-+
-+/* Define to 1 if libc includes obstacks. */
-+#undef HAVE_OBSTACK
-+
-+/* Define to 1 if you have the `pathconf' function. */
-+#undef HAVE_PATHCONF
-+
-+/* Define to 1 if you have the `popen' function. */
-+#define HAVE_POPEN 1
-+
-+/* Define to 1 if you have the `putenv' function. */
-+#define HAVE_PUTENV 1
-+
-+/* Define to 1 if you have the <regex.h> header file. */
-+#undef HAVE_REGEX_H
-+
-+/* 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 you have the <stdarg.h> header file. */
-+#define HAVE_STDARG_H 1
-+
-+/* Define to 1 if stdbool.h conforms to C99. */
-+#undef HAVE_STDBOOL_H
-+
-+/* Define to 1 if you have the <stddef.h> header file. */
-+#define HAVE_STDDEF_H 1
-+
-+/* Define to 1 if you have the <stdint.h> header file. */
-+#undef HAVE_STDINT_H
-+
-+/* Define to 1 if you have the <stdlib.h> header file. */
-+#define HAVE_STDLIB_H 1
-+
-+/* Define to 1 if you have the `stpcpy' function. */
-+#undef HAVE_STPCPY
-+
-+/* Define to 1 if you have the `strcasecmp' function. */
-+#undef HAVE_STRCASECMP
-+
-+/* Define to 1 if you have the `strchr' function. */
-+#define HAVE_STRCHR 1
-+
-+/* Define to 1 if you have the `strdup' function. */
-+#define HAVE_STRDUP 1
-+
-+/* Define to 1 if you have the `strerror' function. */
-+#define HAVE_STRERROR 1
-+
-+/* Define to 1 if you have the <strings.h> header file. */
-+#undef HAVE_STRINGS_H
-+
-+/* Define to 1 if you have the <string.h> header file. */
-+#define HAVE_STRING_H 1
-+
-+/* Define to 1 if you have the `strtoul' function. */
-+#define HAVE_STRTOUL 1
-+
-+/* Define to 1 if you have the `strverscmp' function. */
-+#undef HAVE_STRVERSCMP
-+
-+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
-+   */
-+#define HAVE_SYS_DIR_H 1
-+
-+/* Define to 1 if you have the <sys/file.h> header file. */
-+#undef HAVE_SYS_FILE_H
-+
-+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
-+   */
-+#define HAVE_SYS_NDIR_H 1
-+
-+/* Define to 1 if you have the <sys/param.h> header file. */
-+#define HAVE_SYS_PARAM_H 1
-+
-+/* 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/types.h> header file. */
-+#define HAVE_SYS_TYPES_H 1
-+
-+/* Define to 1 if you have the `tsearch' function. */
-+#define HAVE_TSEARCH 1
-+
-+/* Define to 1 if you have the <unistd.h> header file. */
-+#undef HAVE_UNISTD_H
-+
-+/* Define to 1 if you have the `vprintf' function. */
-+#define HAVE_VPRINTF 1
-+
-+/* Define to 1 if you have the <wchar.h> header file. */
-+#undef HAVE_WCHAR_H
-+
-+/* Define to 1 if you have the `wcrtomb' function. */
-+#undef HAVE_WCRTOMB
-+
-+/* Define to 1 if you have the `wcscoll' function. */
-+#undef HAVE_WCSCOLL
-+
-+/* Define to 1 if you have the <wctype.h> header file. */
-+#undef HAVE_WCTYPE_H
-+
-+/* Define to 1 if the system has the type `_Bool'. */
-+#undef HAVE__BOOL
-+
-+/* Define to 1 if you have the `__argz_count' function. */
-+#undef HAVE___ARGZ_COUNT
-+
-+/* Define to 1 if you have the `__argz_next' function. */
-+#undef HAVE___ARGZ_NEXT
-+
-+/* Define to 1 if you have the `__argz_stringify' function. */
-+#undef HAVE___ARGZ_STRINGIFY
-+
-+/* Define as const if the declaration of iconv() needs const. */
-+#undef ICONV_CONST
-+
-+/* Name of package */
-+#define PACKAGE "sed"
-+
-+/* Define to the address where bug reports for this package should be sent. */
-+#undef PACKAGE_BUGREPORT
-+
-+/* Define to the full name of this package. */
-+#undef PACKAGE_NAME
-+
-+/* Define to the full name and version of this package. */
-+#undef PACKAGE_STRING
-+
-+/* Define to the one symbol short name of this package. */
-+#undef PACKAGE_TARNAME
-+
-+/* Define to the version of this package. */
-+#undef PACKAGE_VERSION
-+
-+/* Define to the version of GNU sed whose features are supported by this sed.
-+   */
-+#define SED_FEATURE_VERSION "5.1"
-+
-+/* 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 you have the ANSI C header files. */
-+#define STDC_HEADERS 1
-+
-+/* Version number of package */
-+#define VERSION "4.1.5"
-+
-+/* Define to 1 if on AIX 3.
-+   System headers sometimes define this.
-+   We just want to avoid a redefinition error message.  */
-+#ifndef _ALL_SOURCE
-+# undef _ALL_SOURCE
-+#endif
-+
-+/* Number of bits in a file offset, on hosts where this is settable. */
-+#undef _FILE_OFFSET_BITS
-+
-+/* Enable GNU extensions on systems that have them.  */
-+#ifndef _GNU_SOURCE
-+# undef _GNU_SOURCE
-+#endif
-+
-+/* Define for large files, on AIX-style hosts. */
-+#undef _LARGE_FILES
-+
-+/* Define to 1 if on MINIX. */
-+#undef _MINIX
-+
-+/* Define to 2 if the system does not provide POSIX.1 features except with
-+   this defined. */
-+#undef _POSIX_1_SOURCE
-+
-+/* Define to 1 if you need to in order for `stat' and other things to work. */
-+#undef _POSIX_SOURCE
-+
-+/* Include BSD functions in regex, used by the testsuite */
-+#undef _REGEX_RE_COMP
-+
-+/* Define to empty if `const' does not conform to ANSI C. */
-+#undef const
-+
-+/* Define to `__inline__' or `__inline' if that's what the C compiler
-+   calls it, or to nothing if 'inline' is not supported under any name.  */
-+#ifndef __cplusplus
-+#define inline __inline
-+#endif
-+
-+/* Define to a type if <wchar.h> does not define. */
-+#define mbstate_t int
-+
-+/* Define to `long' if <sys/types.h> does not define. */
-+#undef off_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
-diff -Nru ../release/sed-4.1.5/config_h.msc~ ./config_h.msc~
---- ../release/sed-4.1.5/config_h.msc~	1969-12-31 16:00:00.000000000 -0800
-+++ ./config_h.msc~	2006-09-28 13:56:59.922178500 -0700
-@@ -0,0 +1,386 @@
-+/* config_h.in.  Generated from configure.ac by autoheader.  */
-+
-+#define O_CREAT _O_CREAT
-+#define O_EXCL _O_EXCL
-+#define O_RDWR _O_RDWR
-+
-+#define popen _popen
-+#define pclose _pclose
-+#define alloca _alloca
-+#define strcasecmp stricmp
-+
-+#define S_ISREG(x) (((x) & _S_IFMT) == _S_IFREG)
-+
-+#define HAVE_FCNTL_H 1
-+
-+/* 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 translation of program messages to the user's native
-+   language is requested. */
-+#undef ENABLE_NLS
-+
-+/* Define to 1 if you have `alloca', as a function or macro. */
-+#define HAVE_ALLOCA 1
-+
-+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-+   */
-+#undef HAVE_ALLOCA_H
-+
-+/* Define to 1 if you have the <argz.h> header file. */
-+#undef HAVE_ARGZ_H
-+
-+/* Define to 1 if you have the `bcopy' function. */
-+#undef HAVE_BCOPY
-+
-+/* Define to 1 if you have the `btowc' function. */
-+#undef HAVE_BTOWC
-+
-+/* Define to 1 if you have the `bzero' function. */
-+#undef HAVE_BZERO
-+
-+/* Define if the GNU dcgettext() function is already present or preinstalled.
-+   */
-+#undef HAVE_DCGETTEXT
-+
-+/* 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 <errno.h> header file. */
-+#define HAVE_ERRNO_H 1
-+
-+/* Define to 1 if you have the `fchmod' function. */
-+#undef HAVE_FCHMOD
-+
-+/* Define to 1 if you have the `fchown' function. */
-+#undef HAVE_FCHOWN
-+
-+/* Define to 1 if you have the `feof_unlocked' function. */
-+#undef HAVE_FEOF_UNLOCKED
-+
-+/* Define to 1 if you have the `fgets_unlocked' function. */
-+#undef HAVE_FGETS_UNLOCKED
-+
-+/* Define to 1 if you have the `getcwd' function. */
-+#define HAVE_GETCWD 1
-+
-+/* Define to 1 if you have the `getc_unlocked' function. */
-+#undef HAVE_GETC_UNLOCKED
-+
-+/* Define to 1 if you have the `getegid' function. */
-+#undef HAVE_GETEGID
-+
-+/* Define to 1 if you have the `geteuid' function. */
-+#undef HAVE_GETEUID
-+
-+/* Define to 1 if you have the `getgid' function. */
-+#undef HAVE_GETGID
-+
-+/* Define to 1 if you have the `getpagesize' function. */
-+#undef HAVE_GETPAGESIZE
-+
-+/* Define if the GNU gettext() function is already present or preinstalled. */
-+#undef HAVE_GETTEXT
-+
-+/* Define to 1 if you have the `getuid' function. */
-+#undef HAVE_GETUID
-+
-+/* Define if you have the iconv() function. */
-+#undef HAVE_ICONV
-+
-+/* Define to 1 if you have the <inttypes.h> header file. */
-+#undef HAVE_INTTYPES_H
-+
-+/* Define to 1 if you have the <io.h> header file. */
-+#define HAVE_IO_H 1
-+
-+/* Define to 1 if you have the `isascii' function. */
-+#define HAVE_ISASCII 1
-+
-+/* Define to 1 if you have the `isatty' function. */
-+#undef HAVE_ISATTY
-+
-+/* Define to 1 if you have the `isblank' function. */
-+#undef HAVE_ISBLANK
-+
-+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-+#undef HAVE_LANGINFO_CODESET
-+
-+/* Define if your <locale.h> file defines LC_MESSAGES. */
-+#define HAVE_LC_MESSAGES 1
-+
-+/* Define to 1 if you have the `regex' library (-lregex). */
-+#undef HAVE_LIBREGEX
-+
-+/* Define to 1 if you have the <limits.h> header file. */
-+#define HAVE_LIMITS_H 1
-+
-+/* Define to 1 if you have the <locale.h> header file. */
-+#undef HAVE_LOCALE_H
-+
-+/* Define to 1 if you support file names longer than 14 characters. */
-+#define HAVE_LONG_FILE_NAMES 1
-+
-+/* Define to 1 if you have the <malloc.h> header file. */
-+#define HAVE_MALLOC_H 1
-+
-+/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
-+#undef HAVE_MBRTOWC
-+
-+/* Define to 1 if <wchar.h> declares mbstate_t. */
-+#undef HAVE_MBSTATE_T
-+
-+/* Define to 1 if you have the <mcheck.h> header file. */
-+#undef HAVE_MCHECK_H
-+
-+/* Define to 1 if you have the `memchr' function. */
-+#define HAVE_MEMCHR 1
-+
-+/* Define to 1 if you have the `memcmp' function. */
-+#define HAVE_MEMCMP 1
-+
-+/* Define to 1 if you have the `memcpy' function. */
-+#define HAVE_MEMCPY 1
-+
-+/* Define to 1 if you have the `memmove' function. */
-+#define HAVE_MEMMOVE 1
-+
-+/* Define to 1 if you have the <memory.h> header file. */
-+#define HAVE_MEMORY_H 1
-+
-+/* Define to 1 if you have the `mempcpy' function. */
-+#undef HAVE_MEMPCPY
-+
-+/* Define to 1 if you have the `memset' function. */
-+#define HAVE_MEMSET 1
-+
-+/* Define to 1 if you have the `mkstemp' function. */
-+#undef HAVE_MKSTEMP
-+
-+/* Define to 1 if you have a working `mmap' system call. */
-+#undef HAVE_MMAP
-+
-+/* Define to 1 if you have the `munmap' function. */
-+#undef HAVE_MUNMAP
-+
-+/* 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 <nl_types.h> header file. */
-+#undef HAVE_NL_TYPES_H
-+
-+/* Define to 1 if libc includes obstacks. */
-+#undef HAVE_OBSTACK
-+
-+/* Define to 1 if you have the `pathconf' function. */
-+#undef HAVE_PATHCONF
-+
-+/* Define to 1 if you have the `popen' function. */
-+#define HAVE_POPEN 1
-+
-+/* Define to 1 if you have the `putenv' function. */
-+#define HAVE_PUTENV 1
-+
-+/* Define to 1 if you have the <regex.h> header file. */
-+#undef HAVE_REGEX_H
-+
-+/* 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 you have the <stdarg.h> header file. */
-+#define HAVE_STDARG_H 1
-+
-+/* Define to 1 if stdbool.h conforms to C99. */
-+#undef HAVE_STDBOOL_H
-+
-+/* Define to 1 if you have the <stddef.h> header file. */
-+#define HAVE_STDDEF_H 1
-+
-+/* Define to 1 if you have the <stdint.h> header file. */
-+#undef HAVE_STDINT_H
-+
-+/* Define to 1 if you have the <stdlib.h> header file. */
-+#define HAVE_STDLIB_H 1
-+
-+/* Define to 1 if you have the `stpcpy' function. */
-+#undef HAVE_STPCPY
-+
-+/* Define to 1 if you have the `strcasecmp' function. */
-+#undef HAVE_STRCASECMP
-+
-+/* Define to 1 if you have the `strchr' function. */
-+#define HAVE_STRCHR 1
-+
-+/* Define to 1 if you have the `strdup' function. */
-+#define HAVE_STRDUP 1
-+
-+/* Define to 1 if you have the `strerror' function. */
-+#define HAVE_STRERROR 1
-+
-+/* Define to 1 if you have the <strings.h> header file. */
-+#undef HAVE_STRINGS_H
-+
-+/* Define to 1 if you have the <string.h> header file. */
-+#define HAVE_STRING_H 1
-+
-+/* Define to 1 if you have the `strtoul' function. */
-+#define HAVE_STRTOUL 1
-+
-+/* Define to 1 if you have the `strverscmp' function. */
-+#undef HAVE_STRVERSCMP
-+
-+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
-+   */
-+#define HAVE_SYS_DIR_H 1
-+
-+/* Define to 1 if you have the <sys/file.h> header file. */
-+#undef HAVE_SYS_FILE_H
-+
-+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
-+   */
-+#define HAVE_SYS_NDIR_H 1
-+
-+/* Define to 1 if you have the <sys/param.h> header file. */
-+#define HAVE_SYS_PARAM_H 1
-+
-+/* 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/types.h> header file. */
-+#define HAVE_SYS_TYPES_H 1
-+
-+/* Define to 1 if you have the `tsearch' function. */
-+#define HAVE_TSEARCH 1
-+
-+/* Define to 1 if you have the <unistd.h> header file. */
-+#undef HAVE_UNISTD_H
-+
-+/* Define to 1 if you have the `vprintf' function. */
-+#define HAVE_VPRINTF 1
-+
-+/* Define to 1 if you have the <wchar.h> header file. */
-+#undef HAVE_WCHAR_H
-+
-+/* Define to 1 if you have the `wcrtomb' function. */
-+#undef HAVE_WCRTOMB
-+
-+/* Define to 1 if you have the `wcscoll' function. */
-+#undef HAVE_WCSCOLL
-+
-+/* Define to 1 if you have the <wctype.h> header file. */
-+#undef HAVE_WCTYPE_H
-+
-+/* Define to 1 if the system has the type `_Bool'. */
-+#undef HAVE__BOOL
-+
-+/* Define to 1 if you have the `__argz_count' function. */
-+#undef HAVE___ARGZ_COUNT
-+
-+/* Define to 1 if you have the `__argz_next' function. */
-+#undef HAVE___ARGZ_NEXT
-+
-+/* Define to 1 if you have the `__argz_stringify' function. */
-+#undef HAVE___ARGZ_STRINGIFY
-+
-+/* Define as const if the declaration of iconv() needs const. */
-+#undef ICONV_CONST
-+
-+/* Name of package */
-+#define PACKAGE "sed"
-+
-+/* Define to the address where bug reports for this package should be sent. */
-+#undef PACKAGE_BUGREPORT
-+
-+/* Define to the full name of this package. */
-+#undef PACKAGE_NAME
-+
-+/* Define to the full name and version of this package. */
-+#undef PACKAGE_STRING
-+
-+/* Define to the one symbol short name of this package. */
-+#undef PACKAGE_TARNAME
-+
-+/* Define to the version of this package. */
-+#undef PACKAGE_VERSION
-+
-+/* Define to the version of GNU sed whose features are supported by this sed.
-+   */
-+#define SED_FEATURE_VERSION "5.1"
-+
-+/* 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 you have the ANSI C header files. */
-+#define STDC_HEADERS 1
-+
-+/* Version number of package */
-+#define VERSION "4.1.5"
-+
-+/* Define to 1 if on AIX 3.
-+   System headers sometimes define this.
-+   We just want to avoid a redefinition error message.  */
-+#ifndef _ALL_SOURCE
-+# undef _ALL_SOURCE
-+#endif
-+
-+/* Number of bits in a file offset, on hosts where this is settable. */
-+#undef _FILE_OFFSET_BITS
-+
-+/* Enable GNU extensions on systems that have them.  */
-+#ifndef _GNU_SOURCE
-+# undef _GNU_SOURCE
-+#endif
-+
-+/* Define for large files, on AIX-style hosts. */
-+#undef _LARGE_FILES
-+
-+/* Define to 1 if on MINIX. */
-+#undef _MINIX
-+
-+/* Define to 2 if the system does not provide POSIX.1 features except with
-+   this defined. */
-+#undef _POSIX_1_SOURCE
-+
-+/* Define to 1 if you need to in order for `stat' and other things to work. */
-+#undef _POSIX_SOURCE
-+
-+/* Include BSD functions in regex, used by the testsuite */
-+#undef _REGEX_RE_COMP
-+
-+/* Define to empty if `const' does not conform to ANSI C. */
-+#undef const
-+
-+/* Define to `__inline__' or `__inline' if that's what the C compiler
-+   calls it, or to nothing if 'inline' is not supported under any name.  */
-+#ifndef __cplusplus
-+#define inline __inline
-+#endif
-+
-+/* Define to a type if <wchar.h> does not define. */
-+#define mbstate_t int
-+
-+/* Define to `long' if <sys/types.h> does not define. */
-+#undef off_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
-diff -Nru ../release/sed-4.1.5/lib/Makefile.msc ./lib/Makefile.msc
---- ../release/sed-4.1.5/lib/Makefile.msc	1969-12-31 16:00:00.000000000 -0800
-+++ ./lib/Makefile.msc	2006-09-28 19:10:18.880835600 -0700
-@@ -0,0 +1,20 @@
-+SOURCES=getline.c getopt.c getopt1.c mkstemp.c obstack.c regex.c strverscmp.c utils.c
-+
-+OBJECTS=$(SOURCES:.c=.obj)
-+
-+CFLAGS=-I.. -I. -DBOOTSTRAP -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_CONFIG_H 
-+
-+all : libsed.lib
-+
-+install :
-+
-+clean :
-+	del $(OBJECTS) regex.h libsed.lib *~ 2>nul
-+
-+regex.h : regex_.h
-+	copy /b $**+nul $@
-+
-+$(OBJECTS) : ..\config.h
-+
-+libsed.lib : regex.h $(OBJECTS)
-+	lib /out:$@ $(OBJECTS)
-diff -Nru ../release/sed-4.1.5/lib/regcomp.c ./lib/regcomp.c
---- ../release/sed-4.1.5/lib/regcomp.c	2005-12-06 00:46:51.000000000 -0800
-+++ ./lib/regcomp.c	2006-09-28 04:36:14.084476200 -0700
-@@ -506,11 +506,7 @@
-    from either regcomp or regexec.   We don't use PREG here.  */
- 
- size_t
--regerror (errcode, preg, errbuf, errbuf_size)
--    int errcode;
--    const regex_t *__restrict preg;
--    char *__restrict errbuf;
--    size_t errbuf_size;
-+regerror (int errcode, const regex_t *__restrict preg, char *__restrict errbuf, size_t errbuf_size)
- {
-   const char *msg;
-   size_t msg_size;
-diff -Nru ../release/sed-4.1.5/lib/regex_internal.h ./lib/regex_internal.h
---- ../release/sed-4.1.5/lib/regex_internal.h	2005-12-06 00:50:56.000000000 -0800
-+++ ./lib/regex_internal.h	2006-09-28 04:33:10.987210800 -0700
-@@ -410,7 +410,9 @@
- #define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx))
- #define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx))
- 
-+#ifdef HAVE_ALLOCA_H
- #include <alloca.h>
-+#endif
- 
- #ifndef _LIBC
- # if HAVE_ALLOCA
-diff -Nru ../release/sed-4.1.5/lib/regexec.c ./lib/regexec.c
---- ../release/sed-4.1.5/lib/regexec.c	2005-12-06 00:46:56.000000000 -0800
-+++ ./lib/regexec.c	2006-09-28 04:50:51.101314600 -0700
-@@ -18,6 +18,12 @@
-    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-    02111-1307 USA.  */
- 
-+#ifdef BOOTSTRAP
-+#define bool int
-+#define true 1
-+#define false 0
-+#endif
-+
- static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
- 				     int n) internal_function;
- static void match_ctx_clean (re_match_context_t *mctx) internal_function;
-@@ -2894,7 +2900,7 @@
- 	      sizeof (re_dfastate_t *) * (path->alloc - old_alloc));
-     }
- 
--  str_idx = path->next_idx ?: top_str;
-+  str_idx = path->next_idx ? path->next_idx : top_str;
- 
-   /* Temporary modify MCTX.  */
-   backup_state_log = mctx->state_log;
-diff -Nru ../release/sed-4.1.5/Makefile.msc ./Makefile.msc
---- ../release/sed-4.1.5/Makefile.msc	1969-12-31 16:00:00.000000000 -0800
-+++ ./Makefile.msc	2006-09-28 19:10:18.552737900 -0700
-@@ -0,0 +1,17 @@
-+DIRS=lib sed
-+
-+all : config.h
-+
-+dummy_target :
-+
-+install : dummy_target
-+
-+all install :
-+	@for %%i in ( $(DIRS) ) do @( cd %%i & nmake /nologo -f Makefile.msc $@ & cd .. )
-+
-+clean :
-+	del config.h *~ 2>nul
-+	@for %%i in ( $(DIRS) ) do @( cd %%i & nmake /nologo -f Makefile.msc $@ & cd .. )
-+
-+config.h : config_h.msc
-+	copy /b $**+nul $@
-diff -Nru ../release/sed-4.1.5/sed/compile.c ./sed/compile.c
---- ../release/sed-4.1.5/sed/compile.c	2006-02-03 01:06:26.000000000 -0800
-+++ ./sed/compile.c	2006-09-28 05:48:12.636140800 -0700
-@@ -451,9 +451,7 @@
- 
- static int snarf_char_class P_((struct buffer *b, mbstate_t *cur_stat));
- static int
--snarf_char_class(b, cur_stat)
--  struct buffer *b;
--  mbstate_t *cur_stat;
-+snarf_char_class(struct buffer *b, mbstate_t *cur_stat)
- {
-   int ch;
-   int state = 0;
-@@ -531,9 +529,7 @@
- 
- static struct buffer *match_slash P_((int slash, bool regex));
- static struct buffer *
--match_slash(slash, regex)
--  int slash;
--  bool regex;
-+match_slash(int slash, bool regex)
- {
-   struct buffer *b;
-   int ch;
-diff -Nru ../release/sed-4.1.5/sed/Makefile.msc ./sed/Makefile.msc
---- ../release/sed-4.1.5/sed/Makefile.msc	1969-12-31 16:00:00.000000000 -0800
-+++ ./sed/Makefile.msc	2006-09-28 19:10:19.193309600 -0700
-@@ -0,0 +1,18 @@
-+SOURCES=sed.c compile.c execute.c regexp.c fmt.c mbcs.c
-+
-+OBJECTS=$(SOURCES:.c=.obj)
-+
-+CFLAGS=-I.. -I. -I../lib -DBOOTSTRAP -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DHAVE_CONFIG_H 
-+
-+all : sed.exe
-+
-+install :
-+	copy sed.exe ..\..\..\bin
-+
-+clean :
-+	del $(OBJECTS) sed.exe *~ 2>nul
-+
-+$(OBJECTS) : ..\config.h
-+
-+sed.exe : $(OBJECTS)
-+	link /out:sed.exe /subsystem:console /opt:ref $(OBJECTS) ..\lib\libsed.lib
diff --git a/src/win32/patches/sqlite.patch b/src/win32/patches/sqlite.patch
deleted file mode 100644
index 4898bbb..0000000
--- a/src/win32/patches/sqlite.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-Index: main.mk
---- ../orig/sqlite-3.3.6/main.mk	2006-06-06 03:52:26.000000000 -0700
-+++ ./main.mk	2006-06-30 15:16:28.000000000 -0700
-@@ -60,7 +60,7 @@
-          expr.o func.o hash.o insert.o \
-          main.o opcodes.o os.o os_os2.o os_unix.o os_win.o \
-          pager.o parse.o pragma.o prepare.o printf.o random.o \
--         select.o table.o tclsqlite.o tokenize.o trigger.o \
-+         select.o table.o tokenize.o trigger.o \
-          update.o util.o vacuum.o \
-          vdbe.o vdbeapi.o vdbeaux.o vdbefifo.o vdbemem.o \
-          where.o utf.o legacy.o
-@@ -394,8 +394,8 @@
- 
- # Rules for building test programs and for running tests
- #
--tclsqlite3:	$(TOP)/src/tclsqlite.c libsqlite3.a
--	$(TCCX) $(TCL_FLAGS) -DTCLSH=1 -o tclsqlite3 \
-+tclsqlite3$(EXE):	$(TOP)/src/tclsqlite.c libsqlite3.a
-+	$(TCCX) $(TCL_FLAGS) -DTCLSH=1 -o tclsqlite3$(EXE) \
- 		$(TOP)/src/tclsqlite.c libsqlite3.a $(LIBTCL) $(THREADLIB)
- 
- testfixture$(EXE):	$(TOP)/src/tclsqlite.c libsqlite3.a $(TESTSRC)
-@@ -604,8 +604,8 @@
- 
- # Standard install and cleanup targets
- #
--install:	sqlite3 libsqlite3.a sqlite3.h
--	mv sqlite3 /usr/bin
-+install:	sqlite3$(EXE) libsqlite3.a sqlite3.h
-+	mv sqlite3$(EXE) /usr/bin
- 	mv libsqlite3.a /usr/lib
- 	mv sqlite3.h /usr/include
- 
-Index: Makefile.mingw32
---- ../orig/sqlite-3.3.6/Makefile.mingw32	1969-12-31 16:00:00.000000000 -0800
-+++ ./Makefile.mingw32	2006-06-30 15:14:29.000000000 -0700
-@@ -0,0 +1,124 @@
-+#!/usr/make
-+#
-+# Makefile for SQLITE
-+#
-+# This is a template makefile for SQLite.  Most people prefer to
-+# use the autoconf generated "configure" script to generate the
-+# makefile automatically.  But that does not work for everybody
-+# and in every situation.  If you are having problems with the
-+# "configure" script, you might want to try this makefile as an
-+# alternative.  Create a copy of this file, edit the parameters
-+# below and type "make".
-+#
-+
-+#### The toplevel directory of the source tree.  This is the directory
-+#    that contains this "Makefile.in" and the "configure.in" script.
-+#
-+TOP = ..
-+
-+#### C Compiler and options for use in building executables that
-+#    will run on the platform that is doing the build.
-+#
-+BCC = gcc -g -O2
-+#BCC = /opt/ancic/bin/c89 -0
-+
-+#### If the target operating system supports the "usleep()" system
-+#    call, then define the HAVE_USLEEP macro for all C modules.
-+#
-+#USLEEP = 
-+USLEEP = -DHAVE_USLEEP=1
-+
-+#### If you want the SQLite library to be safe for use within a 
-+#    multi-threaded program, then define the following macro
-+#    appropriately:
-+#
-+THREADSAFE = -DTHREADSAFE=1
-+#THREADSAFE = -DTHREADSAFE=0
-+
-+#### Specify any extra linker options needed to make the library
-+#    thread safe
-+#
-+THREADLIB = -lpthreadGCE
-+#THREADLIB = 
-+
-+#### Specify any extra libraries needed to access required functions.
-+#
-+#TLIBS = -lrt    # fdatasync on Solaris 8
-+TLIBS = 
-+
-+#### Leave SQLITE_DEBUG undefined for maximum speed.  Use SQLITE_DEBUG=1
-+#    to check for memory leaks.  Use SQLITE_DEBUG=2 to print a log of all
-+#    malloc()s and free()s in order to track down memory leaks.
-+#    
-+#    SQLite uses some expensive assert() statements in the inner loop.
-+#    You can make the library go almost twice as fast if you compile
-+#    with -DNDEBUG=1
-+#
-+#OPTS = -DSQLITE_DEBUG=2
-+#OPTS = -DSQLITE_DEBUG=1
-+#OPTS = 
-+OPTS = -DNDEBUG=1
-+OPTS += -DHAVE_FDATASYNC=1
-+
-+#### The suffix to add to executable files.  ".exe" for windows.
-+#    Nothing for unix.
-+#
-+EXE = .exe
-+#EXE =
-+
-+#### C Compile and options for use in building executables that 
-+#    will run on the target platform.  This is usually the same
-+#    as BCC, unless you are cross-compiling.
-+#
-+#TCC = gcc -O6
-+#TCC = gcc -g -O0 -Wall
-+#TCC = gcc -g -O0 -Wall -fprofile-arcs -ftest-coverage
-+TCC = $(CROSSTOOLS)/mingw32-gcc -O6
-+#TCC = /opt/ansic/bin/c89 -O +z -Wl,-a,archive
-+
-+#### Tools used to build a static library.
-+#
-+#AR = ar cr
-+AR = $(CROSSTOOLS)/mingw32-ar cr
-+#RANLIB = ranlib
-+RANLIB = $(CROSSTOOLS)/mingw32-ranlib
-+
-+#### Extra compiler options needed for programs that use the TCL library.
-+#
-+#TCL_FLAGS =
-+#TCL_FLAGS = -DSTATIC_BUILD=1
-+#TCL_FLAGS = -I/home/drh/tcltk/8.4linux
-+#TCL_FLAGS = -I/home/drh/tcltk/8.4win -DSTATIC_BUILD=1
-+#TCL_FLAGS = -I/home/drh/tcltk/8.3hpux
-+
-+#### Linker options needed to link against the TCL library.
-+#
-+#LIBTCL = -ltcl84
-+#LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
-+#LIBTCL = /home/drh/tcltk/8.4win/libtcl84s.a -lmsvcrt
-+#LIBTCL = /home/drh/tcltk/8.3hpux/libtcl8.3.a -ldld -lm -lc
-+
-+#### Compiler options needed for programs that use the readline() library.
-+#
-+READLINE_FLAGS =
-+#READLINE_FLAGS = -DHAVE_READLINE=1 -I/usr/include/readline
-+
-+#### Linker options needed by programs using readline() must link against.
-+#
-+LIBREADLINE =
-+#LIBREADLINE = -static -lreadline -ltermcap
-+
-+#### Should the database engine assume text is coded as UTF-8 or iso8859?
-+#
-+# ENCODING  = UTF8
-+ENCODING = ISO8859
-+
-+
-+#### Which "awk" program provides nawk compatibilty
-+#
-+# NAWK = nawk
-+NAWK = awk
-+
-+# You should not have to change anything below this line
-+###############################################################################
-+include $(TOP)/main.mk
diff --git a/src/win32/patches/sqlite_msc.patch b/src/win32/patches/sqlite_msc.patch
deleted file mode 100644
index 5f8161d..0000000
--- a/src/win32/patches/sqlite_msc.patch
+++ /dev/null
@@ -1,768 +0,0 @@
---- /dev/null	1969-12-31 16:00:00.000000000 -0800
-+++ Makefile.msvc	2006-11-23 12:38:22.724805900 -0800
-@@ -0,0 +1,136 @@
-+#!/usr/make
-+#
-+# Makefile for SQLITE
-+#
-+# This is a template makefile for SQLite.  Most people prefer to
-+# use the autoconf generated "configure" script to generate the
-+# makefile automatically.  But that does not work for everybody
-+# and in every situation.  If you are having problems with the
-+# "configure" script, you might want to try this makefile as an
-+# alternative.  Create a copy of this file, edit the parameters
-+# below and type "make".
-+#
-+
-+#### The toplevel directory of the source tree.  This is the directory
-+#    that contains this "Makefile.in" and the "configure.in" script.
-+#
-+TOP = ..
-+
-+#### C Compiler and options for use in building executables that
-+#    will run on the platform that is doing the build.
-+#
-+BCC = cl /Zi /Ox /Gy /MD
-+#BCC = /opt/ancic/bin/c89 -0
-+
-+#### If the target operating system supports the "usleep()" system
-+#    call, then define the HAVE_USLEEP macro for all C modules.
-+#
-+USLEEP = 
-+#USLEEP = -DHAVE_USLEEP=1
-+
-+#### If you want the SQLite library to be safe for use within a 
-+#    multi-threaded program, then define the following macro
-+#    appropriately:
-+#
-+THREADSAFE = -DTHREADSAFE=1
-+#THREADSAFE = -DTHREADSAFE=0
-+
-+#### Specify any extra linker options needed to make the library
-+#    thread safe
-+#
-+#THREADLIB = -lpthread
-+THREADLIB = 
-+
-+#### Specify any extra libraries needed to access required functions.
-+#
-+#TLIBS = -lrt    # fdatasync on Solaris 8
-+TLIBS = 
-+
-+#### Leave SQLITE_DEBUG undefined for maximum speed.  Use SQLITE_DEBUG=1
-+#    to check for memory leaks.  Use SQLITE_DEBUG=2 to print a log of all
-+#    malloc()s and free()s in order to track down memory leaks.
-+#    
-+#    SQLite uses some expensive assert() statements in the inner loop.
-+#    You can make the library go almost twice as fast if you compile
-+#    with -DNDEBUG=1
-+#
-+#OPTS = -DSQLITE_DEBUG=2
-+#OPTS = -DSQLITE_DEBUG=1
-+#OPTS = 
-+OPTS = -DNDEBUG=1 -D_CRT_SECURE_NO_DEPRECATE
-+#OPTS += -DHAVE_FDATASYNC=1
-+
-+#### The suffix to add to executable files.  ".exe" for windows.
-+#    Nothing for unix.
-+#
-+EXE = .exe
-+#EXE =
-+
-+#### C Compile and options for use in building executables that 
-+#    will run on the target platform.  This is usually the same
-+#    as BCC, unless you are cross-compiling.
-+#
-+#TCC = gcc -O6
-+#TCC = gcc -g -O0 -Wall
-+#TCC = gcc -g -O0 -Wall -fprofile-arcs -ftest-coverage
-+#TCC = /opt/mingw/bin/i386-mingw32-gcc -O6
-+#TCC = /opt/ansic/bin/c89 -O +z -Wl,-a,archive
-+TCC = cl /Zi /Ox /Gy /MD
-+
-+#### Tools used to build a static library.
-+#
-+AR = lib
-+#AR = /opt/mingw/bin/i386-mingw32-ar cr
-+#RANLIB = ranlib
-+#RANLIB = /opt/mingw/bin/i386-mingw32-ranlib
-+
-+#MKSHLIB = gcc -shared
-+#SO = so
-+#SHPREFIX = lib
-+SO = dll
-+SHPREFIX =
-+
-+#### Extra compiler options needed for programs that use the TCL library.
-+#
-+#TCL_FLAGS =
-+#TCL_FLAGS = -DSTATIC_BUILD=1
-+#TCL_FLAGS = -I/home/drh/tcltk/8.4linux
-+#TCL_FLAGS = -I/home/drh/tcltk/8.4win -DSTATIC_BUILD=1
-+#TCL_FLAGS = -I/home/drh/tcltk/8.3hpux
-+
-+#### Linker options needed to link against the TCL library.
-+#
-+#LIBTCL = -ltcl -lm -ldl
-+#LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
-+#LIBTCL = /home/drh/tcltk/8.4win/libtcl84s.a -lmsvcrt
-+#LIBTCL = /home/drh/tcltk/8.3hpux/libtcl8.3.a -ldld -lm -lc
-+
-+#### Compiler options needed for programs that use the readline() library.
-+#
-+READLINE_FLAGS =
-+#READLINE_FLAGS = -DHAVE_READLINE=1 -I/usr/include/readline
-+
-+#### Linker options needed by programs using readline() must link against.
-+#
-+LIBREADLINE =
-+#LIBREADLINE = -static -lreadline -ltermcap
-+
-+#### Should the database engine assume text is coded as UTF-8 or iso8859?
-+#
-+ENCODING  = UTF8
-+#ENCODING = ISO8859
-+
-+
-+#### Which "awk" program provides nawk compatibilty
-+#
-+NAWK = nawk
-+# NAWK = awk
-+
-+#### Where to install
-+BINDIR = /usr/bin
-+LIBDIR = /usr/lib
-+INCDIR = /usr/include
-+
-+# You should not have to change anything below this line
-+###############################################################################
-+include ../main.mk.msvc
---- /dev/null	1969-12-31 16:00:00.000000000 -0800
-+++ main.mk.msvc	2006-11-23 12:38:22.709180800 -0800
-@@ -0,0 +1,619 @@
-+###############################################################################
-+# The following macros should be defined before this script is
-+# invoked:
-+#
-+# TOP              The toplevel directory of the source tree.  This is the
-+#                  directory that contains this "Makefile.in" and the
-+#                  "configure.in" script.
-+#
-+# BCC              C Compiler and options for use in building executables that
-+#                  will run on the platform that is doing the build.
-+#
-+# USLEEP           If the target operating system supports the "usleep()" system
-+#                  call, then define the HAVE_USLEEP macro for all C modules.
-+#
-+# THREADSAFE       If you want the SQLite library to be safe for use within a 
-+#                  multi-threaded program, then define the following macro
-+#                  appropriately:
-+#
-+# THREADLIB        Specify any extra linker options needed to make the library
-+#                  thread safe
-+#
-+# OPTS             Extra compiler command-line options.
-+#
-+# EXE              The suffix to add to executable files.  ".exe" for windows
-+#                  and "" for Unix.
-+#
-+# TCC              C Compiler and options for use in building executables that 
-+#                  will run on the target platform.  This is usually the same
-+#                  as BCC, unless you are cross-compiling.
-+#
-+# AR               Tools used to build a static library.
-+# RANLIB
-+#
-+# TCL_FLAGS        Extra compiler options needed for programs that use the
-+#                  TCL library.
-+#
-+# LIBTCL           Linker options needed to link against the TCL library.
-+#
-+# READLINE_FLAGS   Compiler options needed for programs that use the
-+#                  readline() library.
-+#
-+# LIBREADLINE      Linker options needed by programs using readline() must
-+#                  link against.
-+#
-+# NAWK             Nawk compatible awk program.  Older (obsolete?) solaris
-+#                  systems need this to avoid using the original AT&T AWK.
-+#
-+# Once the macros above are defined, the rest of this make script will
-+# build the SQLite library and testing tools.
-+################################################################################
-+
-+# This is how we compile
-+#
-+TCCX = $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src
-+
-+# Object files for the SQLite library.
-+#
-+LIBOBJ = alter.obj analyze.obj attach.obj auth.obj btree.obj build.obj \
-+         callback.obj complete.obj date.obj delete.obj \
-+         expr.obj func.obj hash.obj insert.obj loadext.obj \
-+         main.obj opcodes.obj os.obj os_os2.obj os_unix.obj os_win.obj \
-+         pager.obj parse.obj pragma.obj prepare.obj printf.obj random.obj \
-+         select.obj table.obj tokenize.obj trigger.obj \
-+         update.obj util.obj vacuum.obj \
-+         vdbe.obj vdbeapi.obj vdbeaux.obj vdbefifo.obj vdbemem.obj \
-+         where.obj utf.obj legacy.obj vtab.obj
-+#        tclsqlite.obj 
-+
-+#
-+# All of the source code files.
-+#
-+SRC = \
-+  $(TOP)/src/alter.c \
-+  $(TOP)/src/analyze.c \
-+  $(TOP)/src/attach.c \
-+  $(TOP)/src/auth.c \
-+  $(TOP)/src/btree.c \
-+  $(TOP)/src/btree.h \
-+  $(TOP)/src/build.c \
-+  $(TOP)/src/callback.c \
-+  $(TOP)/src/complete.c \
-+  $(TOP)/src/date.c \
-+  $(TOP)/src/delete.c \
-+  $(TOP)/src/expr.c \
-+  $(TOP)/src/func.c \
-+  $(TOP)/src/hash.c \
-+  $(TOP)/src/hash.h \
-+  $(TOP)/src/insert.c \
-+  $(TOP)/src/legacy.c \
-+  $(TOP)/src/loadext.c \
-+  $(TOP)/src/main.c \
-+  $(TOP)/src/os.c \
-+  $(TOP)/src/os_os2.c \
-+  $(TOP)/src/os_unix.c \
-+  $(TOP)/src/os_win.c \
-+  $(TOP)/src/pager.c \
-+  $(TOP)/src/pager.h \
-+  $(TOP)/src/parse.y \
-+  $(TOP)/src/pragma.c \
-+  $(TOP)/src/prepare.c \
-+  $(TOP)/src/printf.c \
-+  $(TOP)/src/random.c \
-+  $(TOP)/src/select.c \
-+  $(TOP)/src/shell.c \
-+  $(TOP)/src/sqlite.h.in \
-+  $(TOP)/src/sqliteInt.h \
-+  $(TOP)/src/table.c \
-+  $(TOP)/src/tclsqlite.c \
-+  $(TOP)/src/tokenize.c \
-+  $(TOP)/src/trigger.c \
-+  $(TOP)/src/utf.c \
-+  $(TOP)/src/update.c \
-+  $(TOP)/src/util.c \
-+  $(TOP)/src/vacuum.c \
-+  $(TOP)/src/vdbe.c \
-+  $(TOP)/src/vdbe.h \
-+  $(TOP)/src/vdbeapi.c \
-+  $(TOP)/src/vdbeaux.c \
-+  $(TOP)/src/vdbefifo.c \
-+  $(TOP)/src/vdbemem.c \
-+  $(TOP)/src/vdbeInt.h \
-+  $(TOP)/src/vtab.c \
-+  $(TOP)/src/where.c
-+
-+# Source code for extensions
-+#
-+SRC = \
-+  $(TOP)/ext/fts1/fts1.c \
-+  $(TOP)/ext/fts1/fts1.h \
-+  $(TOP)/ext/fts1/fts1_hash.c \
-+  $(TOP)/ext/fts1/fts1_hash.h \
-+  $(TOP)/ext/fts1/fts1_porter.c \
-+  $(TOP)/ext/fts1/fts1_tokenizer.h \
-+  $(TOP)/ext/fts1/fts1_tokenizer1.c
-+
-+
-+# Source code to the test files.
-+#
-+TESTSRC = \
-+  $(TOP)/src/btree.c \
-+  $(TOP)/src/date.c \
-+  $(TOP)/src/func.c \
-+  $(TOP)/src/main.c \
-+  $(TOP)/src/os.c \
-+  $(TOP)/src/os_os2.c \
-+  $(TOP)/src/os_unix.c \
-+  $(TOP)/src/os_win.c \
-+  $(TOP)/src/pager.c \
-+  $(TOP)/src/pragma.c \
-+  $(TOP)/src/printf.c \
-+  $(TOP)/src/test1.c \
-+  $(TOP)/src/test2.c \
-+  $(TOP)/src/test3.c \
-+  $(TOP)/src/test4.c \
-+  $(TOP)/src/test5.c \
-+  $(TOP)/src/test6.c \
-+  $(TOP)/src/test7.c \
-+  $(TOP)/src/test8.c \
-+  $(TOP)/src/test_autoext.c \
-+  $(TOP)/src/test_async.c \
-+  $(TOP)/src/test_md5.c \
-+  $(TOP)/src/test_schema.c \
-+  $(TOP)/src/test_server.c \
-+  $(TOP)/src/test_tclvar.c \
-+  $(TOP)/src/utf.c \
-+  $(TOP)/src/util.c \
-+  $(TOP)/src/vdbe.c \
-+  $(TOP)/src/vdbeaux.c \
-+  $(TOP)/src/where.c
-+
-+# Header files used by all library source files.
-+#
-+HDR = \
-+   sqlite3.h  \
-+   $(TOP)/src/btree.h \
-+   $(TOP)/src/hash.h \
-+   opcodes.h \
-+   $(TOP)/src/os.h \
-+   $(TOP)/src/os_common.h \
-+   $(TOP)/src/sqlite3ext.h \
-+   $(TOP)/src/sqliteInt.h  \
-+   $(TOP)/src/vdbe.h \
-+   parse.h
-+
-+# Header files used by extensions
-+#
-+HDR = \
-+  $(TOP)/ext/fts1/fts1.h \
-+  $(TOP)/ext/fts1/fts1_hash.h \
-+  $(TOP)/ext/fts1/fts1_tokenizer.h
-+
-+
-+# Header files used by the VDBE submodule
-+#
-+VDBEHDR = \
-+   $(HDR) \
-+   $(TOP)/src/vdbeInt.h
-+
-+# This is the default Makefile target.  The objects listed here
-+# are what get build when you type just "make" with no arguments.
-+#
-+all:	sqlite3.h parse.h opcodes.h sqlite3.lib sqlite3$(EXE)
-+
-+# Generate the file "last_change" which contains the date of change
-+# of the most recently modified source code file
-+#
-+last_change:	$(SRC)
-+	cat $(SRC) | grep '$Id: ' | sort -k 5 | tail -1 \
-+          | $(NAWK) '{print $5,$6}' >last_change
-+
-+sqlite3.lib:	$(LIBOBJ)
-+	$(AR) /out:sqlite3.lib $(LIBOBJ)
-+
-+sqlite3$(EXE):	$(TOP)/src/shell.c sqlite3.lib sqlite3.h
-+	$(TCCX) $(READLINE_FLAGS) /Fesqlite3$(EXE) $(TOP)/src/shell.c \
-+		sqlite3.lib $(LIBREADLINE) $(TLIBS) $(THREADLIB)
-+
-+objects: $(LIBOBJ_ORIG)
-+
-+# This target creates a directory named "tsrc" and fills it with
-+# copies of all of the C source code and header files needed to
-+# build on the target system.  Some of the C source code and header
-+# files are automatically generated.  This target takes care of
-+# all that automatic generation.
-+#
-+target_source:	$(SRC) $(VDBEHDR) opcodes.c keywordhash.h
-+	rd /s /q tsrc
-+	mkdir tsrc
-+	copy $(SRC) $(VDBEHDR) tsrc
-+	del tsrc\sqlite.h.in tsrc\parse.y
-+	copy parse.c opcodes.c keywordhash.h tsrc
-+
-+# Rules to build the LEMON compiler generator
-+#
-+lemon:	$(TOP)/tool/lemon.c $(TOP)/tool/lempar.c
-+	$(BCC) /Felemon $(OPTS) $(TOP)/tool/lemon.c
-+	copy $(TOP)\tool\lempar.c .
-+
-+# Rules to build individual files
-+#
-+alter.obj:	$(TOP)/src/alter.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/alter.c
-+
-+analyze.obj:	$(TOP)/src/analyze.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/analyze.c
-+
-+attach.obj:	$(TOP)/src/attach.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/attach.c
-+
-+auth.obj:	$(TOP)/src/auth.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/auth.c
-+
-+btree.obj:	$(TOP)/src/btree.c $(HDR) $(TOP)/src/pager.h
-+	$(TCCX) -c $(TOP)/src/btree.c
-+
-+build.obj:	$(TOP)/src/build.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/build.c
-+
-+callback.obj:	$(TOP)/src/callback.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/callback.c
-+
-+complete.obj:	$(TOP)/src/complete.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/complete.c
-+
-+date.obj:	$(TOP)/src/date.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/date.c
-+
-+delete.obj:	$(TOP)/src/delete.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/delete.c
-+
-+expr.obj:	$(TOP)/src/expr.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/expr.c
-+
-+func.obj:	$(TOP)/src/func.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/func.c
-+
-+hash.obj:	$(TOP)/src/hash.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/hash.c
-+
-+insert.obj:	$(TOP)/src/insert.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/insert.c
-+
-+legacy.obj:	$(TOP)/src/legacy.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/legacy.c
-+
-+loadext.obj:	$(TOP)/src/loadext.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/loadext.c
-+
-+main.obj:	$(TOP)/src/main.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/main.c
-+
-+pager.obj:	$(TOP)/src/pager.c $(HDR) $(TOP)/src/pager.h
-+	$(TCCX) -c $(TOP)/src/pager.c
-+
-+opcodes.obj:	opcodes.c
-+	$(TCCX) -c opcodes.c
-+
-+opcodes.c:	opcodes.h $(TOP)/mkopcodec.awk
-+	sort -n -b -k 3 opcodes.h | $(NAWK) -f $(TOP)/mkopcodec.awk >opcodes.c
-+
-+opcodes.h:	parse.h $(TOP)/src/vdbe.c $(TOP)/mkopcodeh.awk
-+	copy parse.h+$(TOP)\src\vdbe.c input.tmp
-+	$(NAWK) -f $(TOP)/mkopcodeh.awk <input.tmp >opcodes.h
-+	del input.tmp
-+
-+os.obj:	$(TOP)/src/os.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/os.c
-+
-+os_os2.obj:	$(TOP)/src/os_os2.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/os_os2.c
-+
-+os_unix.obj:	$(TOP)/src/os_unix.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/os_unix.c
-+
-+os_win.obj:	$(TOP)/src/os_win.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/os_win.c
-+
-+parse.obj:	parse.c $(HDR)
-+	$(TCCX) -c parse.c
-+
-+#parse.h:	parse.c
-+
-+parse.c parse.h:	$(TOP)/src/parse.y lemon $(TOP)/addopcodes.awk
-+	copy $(TOP)\src\parse.y .
-+	lemon $(OPTS) parse.y
-+	ren parse.h parse.h.temp
-+	nawk -f $(TOP)/addopcodes.awk parse.h.temp >parse.h
-+	del parse.h.temp
-+
-+pragma.obj:	$(TOP)/src/pragma.c $(HDR)
-+	$(TCCX) $(TCL_FLAGS) -c $(TOP)/src/pragma.c
-+
-+prepare.obj:	$(TOP)/src/prepare.c $(HDR)
-+	$(TCCX) $(TCL_FLAGS) -c $(TOP)/src/prepare.c
-+
-+printf.obj:	$(TOP)/src/printf.c $(HDR)
-+	$(TCCX) $(TCL_FLAGS) -c $(TOP)/src/printf.c
-+
-+random.obj:	$(TOP)/src/random.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/random.c
-+
-+select.obj:	$(TOP)/src/select.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/select.c
-+
-+sqlite3.h:	$(TOP)/src/sqlite.h.in 
-+	..\update_ver $(TOP)\src\sqlite.h.in >sqlite3.h
-+
-+table.obj:	$(TOP)/src/table.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/table.c
-+
-+tclsqlite.obj:	$(TOP)/src/tclsqlite.c $(HDR)
-+	$(TCCX) $(TCL_FLAGS) -c $(TOP)/src/tclsqlite.c
-+
-+tokenize.obj:	$(TOP)/src/tokenize.c keywordhash.h $(HDR)
-+	$(TCCX) -c $(TOP)/src/tokenize.c
-+
-+keywordhash.h:	$(TOP)/tool/mkkeywordhash.c
-+	$(BCC) /Femkkeywordhash $(OPTS) $(TOP)/tool/mkkeywordhash.c
-+	mkkeywordhash >keywordhash.h
-+
-+trigger.obj:	$(TOP)/src/trigger.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/trigger.c
-+
-+update.obj:	$(TOP)/src/update.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/update.c
-+
-+utf.obj:	$(TOP)/src/utf.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/utf.c
-+
-+util.obj:	$(TOP)/src/util.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/util.c
-+
-+vacuum.obj:	$(TOP)/src/vacuum.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/vacuum.c
-+
-+vdbe.obj:	$(TOP)/src/vdbe.c $(VDBEHDR)
-+	$(TCCX) -c $(TOP)/src/vdbe.c
-+
-+vdbeapi.obj:	$(TOP)/src/vdbeapi.c $(VDBEHDR)
-+	$(TCCX) -c $(TOP)/src/vdbeapi.c
-+
-+vdbeaux.obj:	$(TOP)/src/vdbeaux.c $(VDBEHDR)
-+	$(TCCX) -c $(TOP)/src/vdbeaux.c
-+
-+vdbefifo.obj:	$(TOP)/src/vdbefifo.c $(VDBEHDR)
-+	$(TCCX) -c $(TOP)/src/vdbefifo.c
-+
-+vdbemem.obj:	$(TOP)/src/vdbemem.c $(VDBEHDR)
-+	$(TCCX) -c $(TOP)/src/vdbemem.c
-+
-+vtab.obj:	$(TOP)/src/vtab.c $(VDBEHDR)
-+	$(TCCX) -c $(TOP)/src/vtab.c
-+
-+where.obj:	$(TOP)/src/where.c $(HDR)
-+	$(TCCX) -c $(TOP)/src/where.c
-+
-+# Rules for building test programs and for running tests
-+#
-+tclsqlite3:	$(TOP)/src/tclsqlite.c sqlite3.lib
-+	$(TCCX) $(TCL_FLAGS) -DTCLSH=1 /Fetclsqlite3 \
-+		$(TOP)/src/tclsqlite.c sqlite3.lib $(LIBTCL) $(THREADLIB)
-+
-+testfixture$(EXE):	$(TOP)/src/tclsqlite.c sqlite3.lib $(TESTSRC)
-+	$(TCCX) $(TCL_FLAGS) -DTCLSH=1 -DSQLITE_TEST=1 -DSQLITE_CRASH_TEST=1 \
-+		-DSQLITE_SERVER=1 /Fetestfixture$(EXE) \
-+		$(TESTSRC) $(TOP)/src/tclsqlite.c \
-+		sqlite3.lib $(LIBTCL) $(THREADLIB)
-+
-+fulltest:	testfixture$(EXE) sqlite3$(EXE)
-+	testfixture$(EXE) $(TOP)/test/all.test
-+
-+test:	testfixture$(EXE) sqlite3$(EXE)
-+	testfixture$(EXE) $(TOP)/test/quick.test
-+
-+sqlite3_analyzer$(EXE):	$(TOP)/src/tclsqlite.c sqlite3.lib $(TESTSRC) \
-+			$(TOP)/tool/spaceanal.tcl
-+	sed \
-+	  -e '/^#/d' \
-+	  -e 's,\\,\\\\,g' \
-+	  -e 's,",\\",g' \
-+	  -e 's,^,",' \
-+	  -e 's,$$,\\n",' \
-+	  $(TOP)/tool/spaceanal.tcl >spaceanal_tcl.h
-+	$(TCCX) $(TCL_FLAGS) -DTCLSH=2 -DSQLITE_TEST=1 -DSQLITE_DEBUG=1 \
-+		/Fesqlite3_analyzer$(EXE) $(TESTSRC) $(TOP)/src/tclsqlite.c \
-+		sqlite3.lib $(LIBTCL) $(THREADLIB)
-+
-+TEST_EXTENSION = $(SHPREFIX)testloadext.$(SO)
-+$(TEST_EXTENSION): $(TOP)/src/test_loadext.c
-+	$(MKSHLIB) $(TOP)/src/test_loadext.c /Fe$(TEST_EXTENSION)
-+
-+extensiontest: testfixture$(EXE) $(TEST_EXTENSION)
-+	testfixture$(EXE) $(TOP)/test/loadext.test
-+
-+# Rules used to build documentation
-+#
-+arch.html:	$(TOP)/www/arch.tcl
-+	tclsh $(TOP)/www/arch.tcl >arch.html
-+
-+autoinc.html:	$(TOP)/www/autoinc.tcl
-+	tclsh $(TOP)/www/autoinc.tcl >autoinc.html
-+
-+c_interface.html:	$(TOP)/www/c_interface.tcl
-+	tclsh $(TOP)/www/c_interface.tcl >c_interface.html
-+
-+capi3.html:	$(TOP)/www/capi3.tcl
-+	tclsh $(TOP)/www/capi3.tcl >capi3.html
-+
-+capi3ref.html:	$(TOP)/www/capi3ref.tcl
-+	tclsh $(TOP)/www/capi3ref.tcl >capi3ref.html
-+
-+changes.html:	$(TOP)/www/changes.tcl
-+	tclsh $(TOP)/www/changes.tcl >changes.html
-+
-+compile.html:	$(TOP)/www/compile.tcl
-+	tclsh $(TOP)/www/compile.tcl >compile.html
-+
-+copyright.html:	$(TOP)/www/copyright.tcl
-+	tclsh $(TOP)/www/copyright.tcl >copyright.html
-+
-+copyright-release.html:	$(TOP)/www/copyright-release.html
-+	copy $(TOP)/www/copyright-release.html .
-+
-+copyright-release.pdf:	$(TOP)/www/copyright-release.pdf
-+	copy $(TOP)/www/copyright-release.pdf .
-+
-+common.tcl:	$(TOP)/www/common.tcl
-+	copy $(TOP)/www/common.tcl .
-+
-+conflict.html:	$(TOP)/www/conflict.tcl
-+	tclsh $(TOP)/www/conflict.tcl >conflict.html
-+
-+datatypes.html:	$(TOP)/www/datatypes.tcl
-+	tclsh $(TOP)/www/datatypes.tcl >datatypes.html
-+
-+datatype3.html:	$(TOP)/www/datatype3.tcl
-+	tclsh $(TOP)/www/datatype3.tcl >datatype3.html
-+
-+different.html:	$(TOP)/www/different.tcl
-+	tclsh $(TOP)/www/different.tcl >different.html
-+
-+docs.html:	$(TOP)/www/docs.tcl
-+	tclsh $(TOP)/www/docs.tcl >docs.html
-+
-+download.html:	$(TOP)/www/download.tcl
-+	mkdir -p doc
-+	tclsh $(TOP)/www/download.tcl >download.html
-+
-+faq.html:	$(TOP)/www/faq.tcl
-+	tclsh $(TOP)/www/faq.tcl >faq.html
-+
-+fileformat.html:	$(TOP)/www/fileformat.tcl
-+	tclsh $(TOP)/www/fileformat.tcl >fileformat.html
-+
-+formatchng.html:	$(TOP)/www/formatchng.tcl
-+	tclsh $(TOP)/www/formatchng.tcl >formatchng.html
-+
-+index.html:	$(TOP)/www/index.tcl last_change
-+	tclsh $(TOP)/www/index.tcl >index.html
-+
-+lang.html:	$(TOP)/www/lang.tcl
-+	tclsh $(TOP)/www/lang.tcl doc >lang.html
-+
-+pragma.html:	$(TOP)/www/pragma.tcl
-+	tclsh $(TOP)/www/pragma.tcl >pragma.html
-+
-+lockingv3.html:	$(TOP)/www/lockingv3.tcl
-+	tclsh $(TOP)/www/lockingv3.tcl >lockingv3.html
-+
-+sharedcache.html: $(TOP)/www/sharedcache.tcl
-+	tclsh $(TOP)/www/sharedcache.tcl >sharedcache.html
-+
-+mingw.html:	$(TOP)/www/mingw.tcl
-+	tclsh $(TOP)/www/mingw.tcl >mingw.html
-+
-+nulls.html:	$(TOP)/www/nulls.tcl
-+	tclsh $(TOP)/www/nulls.tcl >nulls.html
-+
-+oldnews.html:	$(TOP)/www/oldnews.tcl
-+	tclsh $(TOP)/www/oldnews.tcl >oldnews.html
-+
-+omitted.html:	$(TOP)/www/omitted.tcl
-+	tclsh $(TOP)/www/omitted.tcl >omitted.html
-+
-+opcode.html:	$(TOP)/www/opcode.tcl $(TOP)/src/vdbe.c
-+	tclsh $(TOP)/www/opcode.tcl $(TOP)/src/vdbe.c >opcode.html
-+
-+optimizer.html:	$(TOP)/www/optimizer.tcl
-+	tclsh $(TOP)/www/optimizer.tcl >optimizer.html
-+
-+optoverview.html:	$(TOP)/www/optoverview.tcl
-+	tclsh $(TOP)/www/optoverview.tcl >optoverview.html
-+
-+quickstart.html:	$(TOP)/www/quickstart.tcl
-+	tclsh $(TOP)/www/quickstart.tcl >quickstart.html
-+
-+speed.html:	$(TOP)/www/speed.tcl
-+	tclsh $(TOP)/www/speed.tcl >speed.html
-+
-+sqlite.html:	$(TOP)/www/sqlite.tcl
-+	tclsh $(TOP)/www/sqlite.tcl >sqlite.html
-+
-+support.html:	$(TOP)/www/support.tcl
-+	tclsh $(TOP)/www/support.tcl >support.html
-+
-+tclsqlite.html:	$(TOP)/www/tclsqlite.tcl
-+	tclsh $(TOP)/www/tclsqlite.tcl >tclsqlite.html
-+
-+vdbe.html:	$(TOP)/www/vdbe.tcl
-+	tclsh $(TOP)/www/vdbe.tcl >vdbe.html
-+
-+version3.html:	$(TOP)/www/version3.tcl
-+	tclsh $(TOP)/www/version3.tcl >version3.html
-+
-+whentouse.html:	$(TOP)/www/whentouse.tcl
-+	tclsh $(TOP)/www/whentouse.tcl >whentouse.html
-+
-+
-+# Files to be published on the website.
-+#
-+DOC = \
-+  arch.html \
-+  autoinc.html \
-+  c_interface.html \
-+  capi3.html \
-+  capi3ref.html \
-+  changes.html \
-+  compile.html \
-+  copyright.html \
-+  copyright-release.html \
-+  copyright-release.pdf \
-+  conflict.html \
-+  datatypes.html \
-+  datatype3.html \
-+  different.html \
-+  docs.html \
-+  download.html \
-+  faq.html \
-+  fileformat.html \
-+  formatchng.html \
-+  index.html \
-+  lang.html \
-+  lockingv3.html \
-+  mingw.html \
-+  nulls.html \
-+  oldnews.html \
-+  omitted.html \
-+  opcode.html \
-+  optimizer.html \
-+  optoverview.html \
-+  pragma.html \
-+  quickstart.html \
-+  sharedcache.html \
-+  speed.html \
-+  sqlite.html \
-+  support.html \
-+  tclsqlite.html \
-+  vdbe.html \
-+  version3.html \
-+  whentouse.html
-+
-+doc:	common.tcl $(DOC)
-+	mkdir -p doc
-+	ren $(DOC) doc
-+	copy $(TOP)/www/*.gif $(TOP)/art/*.gif doc
-+
-+# Standard install and cleanup targets
-+#
-+install:	sqlite3 sqlite3.lib sqlite3.h
-+	copy sqlite3 $(BINDIR)
-+	copy sqlite3.lib $(LIBDIR)
-+	copy sqlite3.h $(INCDIR)
-+
-+clean:	
-+	-del *~ *.obj *.ilk *.pdb sqlite3.exe sqlite3.lib sqlite3.h opcodes.* 2>nul
-+	-del lemon.exe lempar.c parse.* sqlite*.tar.gz mkkeywordhash.exe keywordhash.h 2>nul
-+	-del *.da *.bb *.bbg gmon.out 2>nul
-+	-rd /s /q tsrc 2>nul
-+	-del testloadext.dll 2>nul
---- /dev/null	1969-12-31 16:00:00.000000000 -0800
-+++ update_ver.cmd	2006-11-23 07:09:03.334906700 -0800
-@@ -0,0 +1,4 @@
-+ at echo off
-+for /f %%i in ( ..\VERSION ) do set VERSION=%%i
-+for /f "usebackq" %%i in ( `cmd /c sed "s/[^0-9]/ /g" ^< ..\VERSION ^| nawk "{printf \"%%d%%03d%%03d\",$1,$2,$3}"` ) do set VERS_NUM=%%i
-+sed -e s/--VERS--/%VERSION%/ -e s/--VERSION-NUMBER--/%VERS_NUM%/ %1
diff --git a/src/win32/patches/wx.sed b/src/win32/patches/wx.sed
deleted file mode 100644
index 3d33c13..0000000
--- a/src/win32/patches/wx.sed
+++ /dev/null
@@ -1,9 +0,0 @@
-s%config.gcc%config.mingw32%
-s%\\\(.\)%/\1%g
-s%ranlib%mingw32-ranlib%
-s%windres%mingw32-windres%
-s%ar rc%mingw32-ar rc%
-s%makefile\.gcc%makefile\.mingw32%
-s%if exist \([^ ][^ ]*\) del \1%if [ -e \1 ]; then rm \1; fi%
-s%if not exist \([^ ][^ ]*\) mkdir \1%if [ ! -e \1 ]; then mkdir \1; fi%
-s%if not exist \([^ ][^ ]*\) copy \([^ ][^ ]*\) \1%if [ ! -e \1 ]; then cp \2 \1; fi%
diff --git a/src/win32/patches/wx1.patch b/src/win32/patches/wx1.patch
deleted file mode 100644
index 268497f..0000000
--- a/src/win32/patches/wx1.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- build/msw/config.gcc	Sun Feb  5 13:37:26 2006
-+++ build/msw/config.mingw32	Mon Jun 26 16:54:42 2006
-@@ -11,10 +11,10 @@
- # -------------------------------------------------------------------------
- 
- # C compiler 
--CC = gcc
-+CC = mingw32-gcc
- 
- # C++ compiler 
--CXX = g++
-+CXX = mingw32-g++
- 
- # Standard flags for CC 
- CFLAGS = 
-@@ -23,10 +23,10 @@
- CXXFLAGS = 
- 
- # Standard preprocessor flags (common for CC and CXX) 
--CPPFLAGS = 
-+CPPFLAGS = -I../../../zlib
- 
- # Standard linker flags 
--LDFLAGS = 
-+LDFLAGS = -L../../../zlib
- 
- # The C preprocessor 
- CPP = $(CC) -E
-@@ -44,7 +44,7 @@
- MSLU = 0
- 
- # Type of compiled binaries [debug,release]
--BUILD = debug
-+BUILD = release
- 
- # Should debugging info be included in the executables? The default value
- # "default" means that debug info will be included if BUILD=debug
diff --git a/src/win32/patches/wx2.patch b/src/win32/patches/wx2.patch
deleted file mode 100644
index f074d3d..0000000
--- a/src/win32/patches/wx2.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- ../release/wxWidgets-2.6.3/include/wx/string.h	2005-12-15 11:26:27.000000000 -0800
-+++ ./include/wx/string.h	2006-07-31 20:50:32.000000000 -0700
-@@ -229,7 +229,7 @@
- #endif
-   // VC++ free must take place in same DLL as allocation when using non dll
-   // run-time library (e.g. Multithreaded instead of Multithreaded DLL)
--#if defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
-+#if 1 || defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
-   void  Unlock() { if ( !IsEmpty() && --nRefs == 0) Free();  }
-   // we must not inline deallocation since allocation is not inlined
-   void  Free();
---- ../release/wxWidgets-2.6.3/src/common/string.cpp	2005-11-30 05:30:08.000000000 -0800
-+++ ./src/common/string.cpp	2006-07-31 20:48:53.000000000 -0700
-@@ -172,7 +172,7 @@
- // wxStringData class deallocation
- // ===========================================================================
- 
--#if defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
-+#if 1 || defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
- #  pragma message (__FILE__ ": building with Multithreaded non DLL runtime has a performance impact on wxString!")
- void wxStringData::Free()
- {
diff --git a/src/win32/patches/wxWidgets.patch b/src/win32/patches/wxWidgets.patch
deleted file mode 100644
index 64afc4d..0000000
--- a/src/win32/patches/wxWidgets.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-diff -ur wxWidgets-2.8.7-rel/build/msw/config.gcc wxWidgets-2.8.7/build/msw/config.gcc
---- build/msw/config.mingw32	2007-11-21 13:42:45.000000000 +0100
-+++ build/msw/config.mingw32	2008-03-11 15:45:30.000000000 +0100
-@@ -11,10 +11,10 @@
- # -------------------------------------------------------------------------
- 
- # C compiler 
--CC := gcc
-+CC := mingw32-gcc
- 
- # C++ compiler 
--CXX := g++
-+CXX := mingw32-g++
- 
- # Standard flags for CC 
- CFLAGS := 
-@@ -23,10 +23,10 @@
- CXXFLAGS := 
- 
- # Standard preprocessor flags (common for CC and CXX) 
--CPPFLAGS := 
-+CPPFLAGS := -I../../../zlib
- 
- # Standard linker flags 
--LDFLAGS := 
-+LDFLAGS := -L../../../zlib
- 
- # The C preprocessor 
- CPP := $(CC) -E
-@@ -44,7 +44,7 @@
- MSLU := 0
- 
- # Type of compiled binaries [debug,release]
--BUILD := debug
-+BUILD := release
- 
- # Should debugging info be included in the executables? The default value
- # "default" means that debug info will be included if BUILD=debug
-@@ -131,4 +131,3 @@
- #     "3" ...... this is for Mingw 2.0 or newer (comes with gcc3)
- #     "2.95" ... for Mingw 1.1 or any of the older versions [3,2.95]
- GCC_VERSION := 3
--
-diff -ur wxWidgets-2.8.7-rel/include/wx/string.h wxWidgets-2.8.7/include/wx/string.h
---- include/wx/string.h	2007-11-21 13:41:54.000000000 +0100
-+++ include/wx/string.h	2008-03-11 15:50:58.000000000 +0100
-@@ -235,7 +235,7 @@
- #endif
-   // VC++ free must take place in same DLL as allocation when using non dll
-   // run-time library (e.g. Multithreaded instead of Multithreaded DLL)
--#if defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
-+#if 1 || defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
-   void  Unlock() { if ( !IsEmpty() && --nRefs == 0) Free();  }
-   // we must not inline deallocation since allocation is not inlined
-   void  Free();
-diff -ur wxWidgets-2.8.7-rel/src/common/string.cpp wxWidgets-2.8.7/src/common/string.cpp
---- src/common/string.cpp	2007-11-21 13:41:57.000000000 +0100
-+++ src/common/string.cpp	2008-03-11 15:53:17.000000000 +0100
-@@ -140,7 +140,7 @@
- // wxStringData class deallocation
- // ===========================================================================
- 
--#if defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
-+#if 1 || defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
- #  pragma message (__FILE__ ": building with Multithreaded non DLL runtime has a performance impact on wxString!")
- void wxStringData::Free()
- {
diff --git a/src/win32/patches/zlib.patch b/src/win32/patches/zlib.patch
deleted file mode 100644
index 6b51f49..0000000
--- a/src/win32/patches/zlib.patch
+++ /dev/null
@@ -1,150 +0,0 @@
---- /dev/null	Sun Jun 25 06:11:31 2006
-+++ win32/Makefile.mingw32	Sun Jun 25 06:11:06 2006
-@@ -0,0 +1,147 @@
-+# Makefile for zlib, derived from Makefile.dj2.
-+# Modified for mingw32 by C. Spieler, 6/16/98.
-+# Updated for zlib 1.2.x by Christian Spieler and Cosmin Truta, Mar-2003.
-+# Last updated: 1-Aug-2003.
-+# Tested under Cygwin and MinGW.
-+
-+# Copyright (C) 1995-2003 Jean-loup Gailly.
-+# For conditions of distribution and use, see copyright notice in zlib.h
-+
-+# To compile, or to compile and test, type:
-+#
-+#   make -fmakefile.gcc;  make test testdll -fmakefile.gcc
-+#
-+# To use the asm code, type:
-+#   cp contrib/asm?86/match.S ./match.S
-+#   make LOC=-DASMV OBJA=match.o -fmakefile.gcc
-+#
-+# To install libz.a, zconf.h and zlib.h in the system directories, type:
-+#
-+#   make install -fmakefile.gcc
-+
-+# Note:
-+# If the platform is *not* MinGW (e.g. it is Cygwin or UWIN),
-+# the DLL name should be changed from "zlib1.dll".
-+
-+STATICLIB = libz.a
-+SHAREDLIB = zlib1.dll
-+IMPLIB    = libzdll.a
-+
-+PREFIX = /usr/local
-+EXEC_PREFIX = $(prefix)
-+
-+INCLUDE_PATH = $(PREFIX)/include
-+LIBRARY_PATH = $(PREFIX)/lib
-+BIN_PATH = $(PREFIX)/bin
-+
-+#LOC = -DASMV
-+#LOC = -DDEBUG -g
-+
-+CC = mingw32-gcc
-+CFLAGS = $(LOC) -O3 -Wall
-+
-+AS = $(CC)
-+ASFLAGS = $(LOC) -Wall
-+
-+LD = $(CC)
-+LDFLAGS = $(LOC) -s
-+
-+AR = mingw32-ar
-+ARFLAGS = rcs
-+
-+RC = mingw32-windres
-+RCFLAGS = --define GCC_WINDRES
-+
-+CP = cp -fp
-+# If GNU install is available, replace $(CP) with install.
-+INSTALL = $(CP)
-+RM = rm -f
-+
-+OBJS = adler32.o compress.o crc32.o deflate.o gzio.o infback.o \
-+       inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o
-+OBJA =
-+
-+all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) example.exe minigzip.exe example_d.exe minigzip_d.exe
-+
-+test: example.exe minigzip.exe
-+	./example.exe
-+	echo hello world | ./minigzip.exe | ./minigzip.exe -d
-+
-+testdll: example_d.exe minigzip_d.exe
-+	./example_d.exe
-+	echo hello world | ./minigzip_d.exe | ./minigzip_d.exe -d
-+
-+.c.o:
-+	$(CC) $(CFLAGS) -c -o $@ $<
-+
-+.S.o:
-+	$(AS) $(ASFLAGS) -c -o $@ $<
-+
-+$(STATICLIB): $(OBJS) $(OBJA)
-+	$(AR) $(ARFLAGS) $@ $(OBJS) $(OBJA)
-+
-+$(IMPLIB): $(SHAREDLIB)
-+
-+$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlibrc.o
-+	mingw32-dllwrap --dlltool-name mingw32-dlltool --driver-name $(CC) --def win32/zlib.def \
-+	  --implib $(IMPLIB) -o $@ $(OBJS) $(OBJA) zlibrc.o
-+	mingw32-strip $@
-+
-+example.exe: example.o $(STATICLIB)
-+	$(LD) $(LDFLAGS) -o $@ example.o $(STATICLIB)
-+
-+minigzip.exe: minigzip.o $(STATICLIB)
-+	$(LD) $(LDFLAGS) -o $@ minigzip.o $(STATICLIB)
-+
-+example_d.exe: example.o $(IMPLIB)
-+	$(LD) $(LDFLAGS) -o $@ example.o $(IMPLIB)
-+
-+minigzip_d.exe: minigzip.o $(IMPLIB)
-+	$(LD) $(LDFLAGS) -o $@ minigzip.o $(IMPLIB)
-+
-+zlibrc.o: win32/zlib1.rc
-+	$(RC) $(RCFLAGS) -o $@ win32/zlib1.rc
-+
-+
-+# INCLUDE_PATH and LIBRARY_PATH must be set.
-+
-+.PHONY: install uninstall clean
-+
-+install: zlib.h zconf.h $(STATICLIB) $(SHAREDLIB) $(IMPLIB)
-+	- at if test ! -e $(INCLUDE_PATH); then mkdir $(INCLUDE_PATH); fi
-+	- at if test ! -e $(LIBRARY_PATH); then mkdir $(LIBRARY_PATH); fi
-+	- at if test ! -e $(BIN_PATH); then mkdir $(BIN_PATH); fi
-+	-$(INSTALL) zlib.h $(INCLUDE_PATH)
-+	-$(INSTALL) zconf.h $(INCLUDE_PATH)
-+	-$(INSTALL) $(STATICLIB) $(LIBRARY_PATH)
-+	-$(INSTALL) $(IMPLIB) $(LIBRARY_PATH)
-+	-$(INSTALL) $(SHAREDLIB) $(BIN_PATH)
-+
-+uninstall:
-+	-$(RM) $(INCLUDE_PATH)/zlib.h
-+	-$(RM) $(INCLUDE_PATH)/zconf.h
-+	-$(RM) $(LIBRARY_PATH)/$(STATICLIB)
-+	-$(RM) $(LIBRARY_PATH)/$(IMPLIB)
-+
-+clean:
-+	-$(RM) $(STATICLIB)
-+	-$(RM) $(SHAREDLIB)
-+	-$(RM) $(IMPLIB)
-+	-$(RM) *.o
-+	-$(RM) *.exe
-+	-$(RM) foo.gz
-+
-+adler32.o: zlib.h zconf.h
-+compress.o: zlib.h zconf.h
-+crc32.o: crc32.h zlib.h zconf.h
-+deflate.o: deflate.h zutil.h zlib.h zconf.h
-+example.o: zlib.h zconf.h
-+gzio.o: zutil.h zlib.h zconf.h
-+inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
-+inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
-+infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
-+inftrees.o: zutil.h zlib.h zconf.h inftrees.h
-+minigzip.o: zlib.h zconf.h
-+trees.o: deflate.h zutil.h zlib.h zconf.h trees.h
-+uncompr.o: zlib.h zconf.h
-+zutil.o: zutil.h zlib.h zconf.h
diff --git a/src/win32/pebuilder/Makefile.in b/src/win32/pebuilder/Makefile.in
deleted file mode 100644
index 075b421..0000000
--- a/src/win32/pebuilder/Makefile.in
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# Makefile to build the BartPE plugin
-# 
-#
-#     D. Scott Barninger, Nov 2004
-#
-
-srcdir =	.
-VPATH = 	.
-.PATH:		.
-
-# one up
-basedir = ..
-# top dir
-topdir = ../../..
-# this dir relative to top dir
-thisdir = src/win32/pebuilder
-
-first_rule: all
-
-dummy:
-
-all: pebuilder zip
-
-pebuilder:
-	mkdir -p bacula/files
-	cp -f ../baculafd/bacula-fd.conf bacula/files/
-	cp -f ../console/bconsole.conf bacula/files/
-	cp -f ../wx-console/wx-console.conf bacula/files/
-	cp -f ../baculafd/Release/bacula-fd.exe bacula/files/
-	cp -f ../console/Release/bconsole.exe bacula/files/
-	cp -f ../wx-console/Release/wx-console.exe bacula/files/
-	cp -f ../../../../depkgs-win32/pthreads/pthreadVCE.dll bacula/files/
-	cp -f c:/windows/system32/msvcr71.dll bacula/files
-	cp -f ../../../LICENSE bacula/files/
-
-zip: pebuilder
-	zip -r ../winbacula-bartpe- at VERSION@.zip bacula README
-
-depend:
-	
-
-#-------------------------------------------------------------------------
-
-
-install:
-
-uninstall:
-
-
-clean:
-	rm -rf bacula/files
-
-# clean for distribution
-distclean: clean
diff --git a/src/win32/pebuilder/README b/src/win32/pebuilder/README
deleted file mode 100644
index 228e96e..0000000
--- a/src/win32/pebuilder/README
+++ /dev/null
@@ -1,13 +0,0 @@
-Bacula plugin for BartPE
-http://www.nu2.nu/pebuilder/
-Wed Nov 10 2004
-Copyright 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
-Licensed under the GNU GPL v2
-
-Copy the bacula plugin folder to the plugins directory of your 
-BartPE build directory. Edit the config files in the files directory 
-to suit your bacula installation.
-
-Build your BartPE disk according to the  instructions at 
-http://www.nu2.nu/pebuilder/#build along with whatever other plugins 
-you want. Be sure that 'Bacula Client' is enabled on the plugin selection screen.
diff --git a/src/win32/pebuilder/bacula/bacula.inf b/src/win32/pebuilder/bacula/bacula.inf
deleted file mode 100644
index c57fb44..0000000
--- a/src/win32/pebuilder/bacula/bacula.inf
+++ /dev/null
@@ -1,37 +0,0 @@
-; PE Builder v3 plug-in INF file for bacula
-; Copyright (C) 2004-2006 Free Software Foundation Europe e.V.
-
-; Thu Dec 09 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
-; ASSIGNMENT OF COPYRIGHT
-; FOR VALUE RECEIVED, D. Scott Barninger hereby sells, transfers and 
-; assigns unto Kern Sibbald, his successors, assigns and personal representatives, 
-; all right, title and interest in and to the copyright in this software.
-; D. Scott Barninger warrants good title to said copyright, that it is 
-; free of all liens, encumbrances or any known claims against said copyright.
-
-; licensed under the GNU GPL v2
-
-[Version]
-Signature= "$Windows NT$"
-
-[PEBuilder]
-Name="Bacula Client"
-Enable=1
-
-[WinntDirectories]
-a="Programs\bacula",3
-
-[SourceDisksFiles]
-files\bacula-fd.exe=a,,1
-files\bacula-fd.conf=a,,1
-files\bconsole.exe=a,,1
-files\bconsole.conf=a,,1
-files\License.txt=a,,1
-files\pthreadVCE.dll=a,,1
-files\msvcr71.dll=a,,1
-files\wx-console.exe=a,,1
-files\wx-console.conf=a,,1
-files\msvcr71.dll=a,,1
-
-[Append]
-nu2menu.xml, bacula_nu2menu.xml
diff --git a/src/win32/pebuilder/bacula/bacula_nu2menu.xml b/src/win32/pebuilder/bacula/bacula_nu2menu.xml
deleted file mode 100644
index 7b41bda..0000000
--- a/src/win32/pebuilder/bacula/bacula_nu2menu.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<!-- Nu2Menu entry -->
-<!-- Copyright (C) 2004-2006 Free Software Foundation Europe e.V.
-
-<!-- Thu Dec 09 2004 D. Scott Barninger <barninger at fairfieldcomputers.com> -->
-<!-- ASSIGNMENT OF COPYRIGHT -->
-<!-- FOR VALUE RECEIVED, D. Scott Barninger hereby sells, transfers and  -->
-<!-- assigns unto Kern Sibbald, his successors, assigns and personal representatives, --> 
-<!-- all right, title and interest in and to the copyright in this software. -->
-<!-- D. Scott Barninger warrants good title to said copyright, that it is  -->
-<!-- free of all liens, encumbrances or any known claims against said copyright. -->
-
-<!-- licensed under the GNU GPL v2 -->
-<NU2MENU>
-        <MENU ID="Programs">                    
-                <MITEM TYPE="ITEM" DISABLED="@Not(@FileExists(@GetProgramDrive()\Programs\bacula\bacula-fd.exe))" CMD="RUN" FUNC="@Null(@ChangeDir(@GetProgramDrive()\Programs\bacula))@GetProgramDrive()\Programs\bacula\bacula-fd.exe /install">Install Bacula Client Service</MITEM>
-                <MITEM TYPE="ITEM" CMD="RUN" FUNC="net start bacula">Start Bacula Client Service</MITEM>
-                <MITEM TYPE="ITEM" DISABLED="@Not(@FileExists(@GetProgramDrive()\Programs\bacula\wx-console.exe))" CMD="RUN" FUNC="@Null(@ChangeDir(@GetProgramDrive()\Programs\bacula))@GetProgramDrive()\Programs\bacula\wx-console.exe -w b:\">Bacula WX-Console</MITEM>
-        </MENU>
-</NU2MENU>
diff --git a/src/win32/scripts/Makefile b/src/win32/scripts/Makefile
deleted file mode 100644
index a0f844e..0000000
--- a/src/win32/scripts/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-include ../Makefile.inc
-
-##########################################################################
-
-BSLEEP_OBJS = \
-	$(OBJDIR)/bsleep.o
-
-ALL_OBJS = \
-	$(BSLEEP_OBJS)
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all:	$(BINDIR)/bsleep.exe
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(call clean_obj,$(ALL_OBJS))
-	$(call clean_exe,$(BINDIR)/bsleep.exe)
-	$(ECHO_CMD)rm -rf $(OBJDIRS)
-
-#
-# Rules
-#
-
-$(BINDIR)/bsleep.exe: $(BSLEEP_OBJS)
-	$(call link_conapp)
-
-include ../Makefile.rules
diff --git a/src/win32/scripts/bsleep.c b/src/win32/scripts/bsleep.c
deleted file mode 100644
index 4fd6cd6..0000000
--- a/src/win32/scripts/bsleep.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <windows.h>
-#include <stdio.h>
-
-int
-main(int argc, const char ** argv)
-{
-   int   nsecs;
-
-   if (argc != 2)
-   {
-      fputs("usage: bsleep <n>\n    n = number of seconds\n", stderr);
-      exit(1);
-   }
-
-   if (sscanf(argv[1], "%d", &nsecs) != 1)
-   {
-      fputs("sleep: incorrect argument, must be number of seconds to sleep\n", stderr);
-      exit(1);
-   }
-
-   Sleep(nsecs * 1000);
-   exit(0);
-}
diff --git a/src/win32/scripts/bsleep.vcproj b/src/win32/scripts/bsleep.vcproj
deleted file mode 100644
index 9d9ad1e..0000000
--- a/src/win32/scripts/bsleep.vcproj
+++ /dev/null
@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="bsleep"
-	ProjectGUID="{0F56AEB0-14DA-4A80-8962-1F85A17339D0}"
-	RootNamespace="bsleep"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-				DisableSpecificWarnings="4996"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="0"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-				DisableSpecificWarnings="4996"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\bsleep.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/scripts/disk-changer.cmd b/src/win32/scripts/disk-changer.cmd
deleted file mode 100644
index 4deb4e9..0000000
--- a/src/win32/scripts/disk-changer.cmd
+++ /dev/null
@@ -1,201 +0,0 @@
- at ECHO off
-setlocal ENABLEDELAYEDEXPANSION
-REM
-REM
-REM Bacula interface to virtual autoloader using disk storage
-REM
-REM  $Id: disk-changer.in,v 1.3 2006/07/30 16:00:32 kerns Exp $
-REM
-REM  If you set in your Device resource
-REM
-REM  Changer Command = "disk-changer %c %o %S %a %d"
-REM    you will have the following input to this script:
-REM
-REM  So Bacula will always call with all the following arguments, even though
-REM    in some cases, not all are used.
-REM
-REM  disk-changer "changer-device" "command" "slot" "archive-device" "drive-index"
-REM                      %1           %2       %3          %4             %5
-REM
-REM By default the autochanger has 10 Volumes and 1 Drive.
-REM
-REM Note: For this script to work, you *must" specify
-REM    Device Type = File 
-REM in each of the Devices associated with your AutoChanger resource.
-REM
-REM changer-device is the name of a file that overrides the default
-REM   volumes and drives.  It may have:
-REM       maxslot=n   where n is one based (default 10)
-REM       maxdrive=m  where m is zero based (default 1 -- i.e. 2 drives)
-REM  
-REM   This code can also simulate barcodes. You simply put
-REM   a list of the slots and barcodes in the "base" directory/barcodes.
-REM   See below for the base directory definition.  Example of a 
-REM   barcodes file:
-REM      C:\TEMP\bacula\barcodes
-REM      1:Vol001
-REM      2:Vol002
-REM      ...
-REM 
-REM archive-device is the name of the base directory where you want the
-REM  Volumes stored appended with \drive0 for the first drive; \drive1
-REM  for the second drive, ... For example, you might use
-REM  C:\Temp\bacula\drive0  Note: you must not have a trailing slash, and
-REM  the string (e.g. \drive0) must be unique, and it must not match
-REM  any other part of the directory name. These restrictions could be
-REM  easily removed by any clever script jockey.
-REM
-REM  Full example: disk-changer C:\Temp\bacula\conf load 1 C:\Temp\bacula\drive0 0
-REM
-REM The Volumes will be created with names slot1, slot2, slot3, ... maxslot in the
-REM  base directory. In the above example the base directory is C:\Temp\bacula.
-REM  However, as with tapes, their Bacula Volume names will be stored inside the
-REM  Volume label. In addition to the Volumes (e.g. C:\Temp\bacula\slot1, 
-REM  C:\Temp\bacula\slot3, ...) this script will create a C:\Temp\bacula\loadedn
-REM  file to keep track of what Slot is loaded. You should not change this file.
-REM
-
-SET dbgfile=%CD%\disk-changer.log
-
-REM to turn on logging, uncomment the following line
-IF NOT EXIST %dbgfile% COPY nul %dbgfile% >nul
-
-REM
-REM check parameter count on commandline
-REM
-REM Check for special cases where only 2 arguments are needed, 
-REM  all others are a minimum of 5
-REM
-IF "%1" EQU "" goto :param_count_invalid
-IF "%2" EQU "" goto :param_count_invalid
-IF "%2" EQU "list" goto :param_count_valid
-IF "%2" EQU "slots" goto :param_count_valid
-IF "%3" EQU "" goto :param_count_invalid
-IF "%4" EQU "" goto :param_count_invalid
-IF "%5" EQU "" goto :param_count_invalid
-GOTO :param_count_valid
-
-:param_count_invalid
-   echo Insufficient number of arguments given.
-   IF "%2" EQU "" (
-      echo   At least two arguments must be specified.
-   ) else echo   Command expected 5 arguments.
-:usage
-   ECHO.
-   ECHO usage: disk-changer ctl-device command [slot archive-device drive-index]
-   ECHO        Valid commands are: unload, load, list, loaded, and slots.
-   EXIT /B 1
-
-:param_count_valid
-
-REM Setup arguments
-SET ctl=%1
-SET cmd=%2
-SET slot=%3
-SET device=%4
-SET drive=%5
-
-REM set defaults
-SET maxdrive=1
-SET maxslot=10
-
-SET ctl=%ctl:/=\%
-SET ctl=%ctl:\\=\%
-
-SET device=%device:/=\%
-SET device=%device:\\=\%
-
-REM Pull in conf file
-IF EXIST %ctl% CALL %ctl%
-
-FOR %%i IN ( %ctl% ) DO SET dirname=%%~dpi
-IF NOT EXIST %dirname%nul (
-   ECHO ERROR: Autochanger directory "%dirname%" does not exist.
-   ECHO        You must create it.
-   EXIT /b 1
-)
-
-CALL :debug "Parms: %ctl% %cmd% %slot% %device% %drive%"
-IF "%cmd%" EQU "unload" GOTO :cmdUnload
-IF "%cmd%" EQU "load" GOTO :cmdLoad
-IF "%cmd%" EQU "list" GOTO :cmdList
-IF "%cmd%" EQU "loaded" GOTO :cmdLoaded
-IF "%cmd%" EQU "slots" GOTO :cmdSlots
-GOTO :cmdUnknown
-
-:cmdUnload
-   CALL :debug "Doing disk -f %ctl% unload %slot% %device% %drive%"
-   IF NOT EXIST %dirname%loaded%drive% ECHO 0 >%dirname%loaded%drive%
-   FOR /f %%i IN ( %dirname%loaded%drive% ) DO SET ld=%%i
-
-   IF "%slot%" EQU "%ld%" ( 
-      CALL :debug "Unloaded slot %ld% from drive %drive%"
-      ECHO 0 >%dirname%loaded%drive%
-      DEL %dirname%%device% >nul 2>nul
-      SET rtn=0
-   ) ELSE (
-      ECHO Storage Element %slot% is Already Full
-      CALL :debug "Storage Element %slot% is Already Full"
-      SET rtn=1
-   )
-   GOTO :cmdExit
-
-:cmdLoad
-   CALL :debug "Doing disk -f %ctl% load %slot% %device% %drive%"
-   SET ld=0
-   IF NOT EXIST %dirname%loaded%drive% ECHO 0 >%dirname%loaded%drive%
-   FOR /f %%i IN ( %dirname%loaded%drive% ) DO SET ld=%%i
-   IF %ld% EQU 0 (
-      IF NOT EXIST %dirname%slot%slot% COPY nul %dirname%slot%slot% >nul
-      DEL %device%
-      fsutil hardlink create %device% %dirname%slot%slot% >nul 2>&1
-      SET rtn=%ERRORLEVEL%
-      IF !rtn! EQU 0 (
-         ECHO %slot% >%dirname%loaded%drive%
-         CALL :debug "Loaded slot %slot% into drive %drive%"
-      ) ELSE (
-         CALL :debug "Create hardlink failed, return = !rtn!"
-      )
-   ) ELSE (
-      ECHO Drive %drive% Full - Storage element %ld% loaded
-      CALL :debug "Drive %drive% Full - Storage element %ld% loaded"
-   )
-   GOTO :cmdExit
-
-:cmdList
-   CALL :debug "Doing disk -f %ctl% -- to list volumes"
-   IF EXIST %dirname%barcodes (
-      TYPE %dirname%barcodes 
-   ) ELSE (
-      FOR /l %%i IN ( 1, 1, %maxslot% ) DO ECHO %%i:
-   )
-   SET rtn=0
-   GOTO :cmdExit
-
-:cmdLoaded
-   CALL :debug "Doing disk -f %ctl% %drive% -- to find what is loaded"
-   IF EXIST %dirname%loaded%drive% ( TYPE %dirname%loaded%drive% ) ELSE ECHO 0
-   SET rtn=0
-   GOTO :cmdExit
-
-:cmdSlots
-   CALL :debug "Doing disk -f %ctl% -- to get count of slots"
-   ECHO %maxslot%
-   SET rtn=0
-   GOTO :cmdExit
-
-:cmdExit
-   EXIT /b %rtn%
-
-:cmdUnknown
-   ECHO '%cmd%' is an invalid command.
-   GOTO :usage
-
-REM
-REM log whats done
-REM
-:debug
-   IF NOT EXIST %dbgfile% GOTO :EOF
-   FOR /f "usebackq tokens=2-4,5-7 delims=/:. " %%i IN ( '%DATE% %TIME%' ) do SET TIMESTAMP=%%k%%i%%j-%%l:%%m:%%n
-   ECHO %TIMESTAMP% %* >> %dbgfile%
-   GOTO :EOF
diff --git a/src/win32/scripts/dvd-handler.cmd b/src/win32/scripts/dvd-handler.cmd
deleted file mode 100644
index 2f21e7e..0000000
--- a/src/win32/scripts/dvd-handler.cmd
+++ /dev/null
@@ -1,387 +0,0 @@
- at ECHO off
-REM 
-REM  Check the free space available on a writable DVD
-REM  Should always exit with 0 status, otherwise it indicates a serious error.
-REM  (wrong number of arguments, Python exception...)
-REM 
-REM   called:  dvd-handler <dvd-device-name> operation args
-REM 
-REM   operations used by Bacula:
-REM 
-REM    free   (no arguments)
-REM       Scan the device and report the available space. It returns:
-REM       Prints on the first output line the free space available in 
-REM       bytes.
-REM       If an error occurs, prints a negative number (-errno), followed,
-REM       on the second line, by an error message.
-REM 
-REM    write  op filename
-REM        Write a part file to disk.
-REM        This operation needs two additional arguments.
-REM        The first (op) indicates to
-REM           0 -- append
-REM           1 -- first write to a blank disk
-REM           2 -- blank or truncate a disk
-REM 
-REM        The second is the filename to write
-REM 
-REM   operations available but not used by Bacula:
-REM 
-REM    test      Scan the device and report the information found.
-REM              This operation needs no further arguments.
-REM    prepare   Prepare a DVD+/-RW for being used by Bacula.
-REM              Note: This is only useful if you already have some
-REM              non-Bacula data on a medium, and you want to use
-REM              it with Bacula. Don't run this on blank media, it
-REM              is useless.
-REM 
-REM  
-REM  $Id: dvd-handler.in,v 1.11 2006/08/30 16:19:30 kerns Exp $
-REM 
-
-setlocal ENABLEDELAYEDEXPANSION
-SET PATH=%PATH%;@bin_dir_cmd@
-REM  Configurable values:
-
-SET dvdrwmediainfo=dvd+rw-mediainfo.exe
-SET growcmd=growisofs.exe
-SET dvdrwformat=dvd+rw-format.exe
-SET dd=dd.exe
-SET margin=10485760
-
-REM Comment the following line if you want the tray to be reloaded
-REM when writing ends.
-SET growcmd=%growcmd% -use-the-force-luke^^^^^=notray
-
-REM  end of configurable values
-
-IF "%1" == "" GOTO :usage
-IF "%2" == "" GOTO :usage
-
-CALL :init %1
-
-IF "%2" == "free" (
-   CALL :free
-   ECHO !ERRORLEVEL!
-   ECHO No Error reported.
-) ELSE IF "%2" == "prepare" (
-   CALL :prepare
-   ECHO Medium prepared successfully.
-) ELSE IF "%2" == "test" (
-   IF %freespace_collected% EQU 0 CALL :collect_freespace
-   IF %mediumtype_collected% EQU 0 CALL :collect_mediumtype
-   ECHO Class disk, initialized with device %device%
-   ECHO  type = '!disktype!' mode='!diskmode!' status = '!diskstatus!'
-   ECHO  next_session = !next_session! capacity = !capacity!
-   ECHO  Hardware device is '!hardwaredevice!'
-   ECHO  growcmd = '!growcmd!'
-   ECHO  growparams = '!growparams!'
-   ECHO.
-   SET empty_disk=false
-   CALL :is_blank
-   IF !ERRORLEVEL! EQU 1 SET empty_disk=true
-   SET rewritable=false
-   CALL :is_RW
-   IF !ERRORLEVEL! EQU 1 SET rewritable=true
-   SET plus_RW_disk=false
-   CALL :is_plus_RW
-   IF !ERRORLEVEL! EQU 1 SET plus_RW_disk=true
-   SET minus_RW_disk=false
-   CALL :is_minus_RW
-   IF !ERRORLEVEL! EQU 1 SET minus_RW_disk=true
-   SET restricted_overwrite_disk=false
-   CALL :is_restricted_overwrite
-   IF !ERRORLEVEL! EQU 1 SET restricted_overwrite_disk=true
-   SET blank_disk=false
-   CALL :is_blank
-   IF !ERRORLEVEL! EQU 1 SET blank_disk=true
-   ECHO Empty disk: !empty_disk!  Blank Disk: !blank_disk!  ReWritable disk: !rewritable!
-   ECHO Plus RW: !plus_RW_disk!  Minus RW: !minus_RW_disk!  Restricted Overwrite: !restricted_overwrite_disk!
-   CALL :free
-   ECHO Free space: !ERRORLEVEL!
-) ELSE IF "%2" == "write" (
-   IF "%3" == "" GOTO :usage
-   IF "%4" == "" GOTO :usage
-   CALL :write %3 %4
-   ECHO Part file %4 successfully written to disk.
-) ELSE (
-   ECHO No operation - use test, free, prepare or write.
-   ECHO THIS MIGHT BE A CASE OF DEBUGGING BACULA OR AN ERROR!
-)
-EXIT /b 0
-
-REM ##########################################################################
-REM
-REM  The rest of this file is a set of subroutines that return DVD disk 
-REM  information.
-REM
-REM  Status information about the device and the disk loaded is collected 
-REM  only when asked for (for example dvd-freespace doesn't need to know the 
-REM  media type, and dvd-writepart doesn't not always need to know the free 
-REM  space).
-REM
-REM  The following subroutines are implemented:
-REM  init       we need that...
-REM  is_empty   Set ERRORLEVEL to TRUE if the disk is empty, blank... 
-REM              this needs more work, especially concerning non-RW media 
-REM              and blank vs. no filesystem considerations. Here, we 
-REM              should also look for other filesystems - probably we don't
-REM              want to silently overwrite UDF or ext2 or anything not 
-REM              mentioned in fstab...
-REM              (NB: I don't think it is a problem)
-REM  is_RW       Set ERRORLEVEL to TRUE if the disk is RW (DVD-RW or DVD+RW)
-REM  is_plus_RW  Set ERRORLEVEL to TRUE if the disk is DVD+RW
-REM  is_minus_RW Set ERRORLEVEL to TRUE if the disk is DVD-RW
-REM  is_blank    Set ERRORLEVEL to TRUE if the disk is blank
-REM  free        Returns the available free space.
-REM  write       Writes one part file to disk, either starting a new file
-REM              system on disk, or appending to it.
-REM              This method should also prepare a blank disk so that a
-REM              certain part of the disk is used to allow detection of a
-REM              used disk by all / more disk drives.
-REM  blank       Blank the device
-REM 
-REM ##########################################################################
-
-:init
-SET device=%1
-SET disktype=none
-SET diskmode=none
-SET diskstatus=none
-SET hardwaredevice=none
-SET pid=0
-SET next_session=-1
-SET capacity=-1
-
-SET freespace_collected=0
-SET mediumtype_collected=0
-
-SET growcmd=%growcmd% -quiet -use-the-force-luke^^^=4gms
-
-SET growparams=-A "Bacula Data" -input-charset=default -iso-level 3 -pad
-SET growparams=%growparams% -p "dvd-handler / growisofs" -sysid "BACULADATA" -R
-GOTO :EOF
-
-:collect_freespace
-SET next_session=0
-SET capacity=0
-FOR /f "delims== tokens=1*" %%i in ( '%growcmd% -F %device%' ) DO (
-   IF "%%i" == "next_session" ( 
-      SET next_session=%%j
-   ) ELSE IF "%%i" == "capacity" (
-      SET capacity=%%j
-   ) ELSE IF "%%j" == "" (
-      SET result=!result! %%i
-   ) ELSE (
-      SET RESULT=!result! %%i=%%j
-   )
-)
-SET status=%ERRORLEVEL%
-IF %STATUS% NEQ 0 (
-   SET /a STATUS=STATUS ^& 0x7F
-   IF !STATUS! EQU 112 (
-      REM Kludge to force dvd-handler to return a free space of 0
-      next_session = 1
-      capacity = 1
-      freespace_collected = 1
-      GOTO :EOF
-   ) ELSE (
-      ECHO growisofs returned with an error !STATUS!. Please check you are using a patched version of dvd+rw-tools.
-      EXIT !STATUS!
-   )
-)
-
-IF %next_session% EQU 0 IF %capacity% EQU 0 (
-   ECHO Cannot get next_session and capacity from growisofs.
-   ECHO Returned: %result:|=^|%
-   EXIT 1
-)
-SET freespace_collected=1
-GOTO :EOF
-
-:collect_mediumtype
-SET hardwaredevice=
-SET disktype=
-SET diskmode=
-SET diskstatus=
-SET lasterror=
-FOR /f "delims=: tokens=1,2 usebackq" %%i in ( `"%dvdrwmediainfo%" %device%` ) DO (
-   IF "%%i" == "INQUIRY" FOR /f "tokens=*" %%k in ( "%%j" ) DO SET hardwaredevice=%%k
-   IF "%%i" == " Mounted Media" FOR /f "tokens=1,2* delims=, " %%k in ( "%%j" ) DO (
-      SET disktype=%%l
-      SET diskmode=%%m
-   )
-   IF "%%i" == " Disc status" FOR /f "tokens=*" %%k in ( "%%j" ) DO SET diskstatus=%%k
-)
-
-IF NOT DEFINED disktype (
-   ECHO Media type not found in %dvdrwmediainfo% output
-   EXIT 1
-)
-
-IF "%disktype%" == "DVD-RW" IF NOT DEFINED diskmode (
-   ECHO Media mode not found for DVD-RW in %dvdrwmediainfo% output
-   EXIT 1
-)
-
-IF NOT DEFINED diskstatus (
-   ECHO Disc status not found in %dvdrwmediainfo% output
-   EXIT 1
-)
-
-SET mediumtype_collected=1
-GOTO :EOF
-
-:is_empty
-IF %freespace_collected% EQU 0 CALL :collect_freespace
-IF %next_session% EQU 0 ( EXIT /b 1 ) ELSE EXIT /b 0
-
-:is_RW
-IF %mediumtype_collected% EQU 0 CALL :collect_mediumtype
-IF %disktype% == "DVD-RW" EXIT /b 1
-IF %disktype% == "DVD+RW" EXIT /b 1
-IF %disktype% == "DVD-RAM" EXIT /b 1
-EXIT /b 0
-
-:is_plus_RW
-IF %mediumtype_collected% EQU 0 CALL :collect_mediumtype
-IF "%disktype%" == "DVD+RW" EXIT /b 1
-EXIT /b 0
-
-:is_minus_RW
-IF %mediumtype_collected% EQU 0 CALL :collect_mediumtype
-IF "%disktype%" == "DVD-RW" EXIT /b 1
-EXIT /b 0
-      
-:is_restricted_overwrite
-IF %mediumtype_collected% EQU 0 CALL :collect_mediumtype
-IF "%diskmode%" == "Restricted Overwrite" EXIT /b 1
-EXIT /b 0
-
-:is_blank
-IF %mediumtype_collected% EQU 0 CALL :collect_mediumtype
-IF "%diskstatus%" == "blank" EXIT /b 1
-EXIT /b 0
-
-:free
-IF %freespace_collected% EQU 0 CALL :collect_freespace
-FOR /f %%i in ( 'expr64 "capacity - next_session - margin"' ) DO SET fr=%%i
-expr64 /q "fr < 0" && ( EXIT /b 0 ) || EXIT /b %fr%
-
-REM %1 - newvol, %2 - partfile
-:write
-REM Blank DVD+RW when there is no data on it
-CALL :is_plus_RW
-SET tmpvar=%ERRORLEVEL%
-CALL :is_blank
-SET /a tmpvar=tmpvar + ERRORLEVEL
-IF %1 EQU 1 IF %tmpvar% EQU 2 (
-   ECHO DVD+RW looks brand-new, blank it to fix some DVD-writers bugs.
-   CALL :blank
-   ECHO Done, now writing the part file.
-)
-CALL :is_minus_RW
-IF %ERRORLEVEL% NEQ 0 IF %1 NEQ 0 (
-   CALL :is_restricted_overwrite
-   IF !ERRORLEVEL! EQU 0 (
-      ECHO DVD-RW is in %diskmode% mode, reformating it to Restricted Overwrite
-      CALL :reformat_minus_RW
-      ECHO Done, now writing the part file.
-   )
-)
-if %1 NEQ 0 (
-   REM Ignore any existing iso9660 filesystem - used for truncate
-   if %1 EQU 2 (
-      SET cmd_opts= -use-the-force-luke^^^=tty -Z
-   ) ELSE (
-      SET cmd_opts= -Z
-   )
-) ELSE (
-   SET cmd_opts= -M
-)
-ECHO Running %growcmd% %growparams% %cmd_opts% %device% %2
-%growcmd% %growparams% %cmd_opts% %device% %2
-IF %ERRORLEVEL% NEQ 0 (
-   ECHO Exited with status !ERRORLEVEL!
-   EXIT !ERRORLEVEL!
-)
-GOTO :EOF
-
-:prepare
-CALL :is_RW
-IF %ERRORLEVEL% EQU 0 (
-   ECHO I won't prepare a non-rewritable medium
-   EXIT /b 1
-)
-
-REM Blank DVD+RW when there is no data on it
-CALL :is_plus_RW
-SET result=%ERRORLEVEL%
-CALL :is_blank
-SET /a result=result + ERRORLEVEL
-IF %result% EQU 2 (
-   ECHO DVD+RW looks brand-new, blank it to fix some DVD-writers bugs.
-   CALL :blank
-   GOTO :EOF
-)
-
-CALL :is_minus_RW
-IF %ERRORLEVEL% EQU 1 (
-   CALL :is_restricted_overwrite
-   IF !ERRORLEVEL! EQU 0 (
-      ECHO DVD-RW is in %diskmode% mode, reformating it to Restricted Overwrite
-      CALL :reformat_minus_RW
-      GOTO :EOF
-   )
-)
-CALL :blank
-GOTO :EOF
-
-:blank
-ECHO Running %growcmd% -Z %device% =/dev/zero
-%growcmd% -Z %device% =/dev/zero
-IF %ERRORLEVEL% NEQ 0 (
-   ECHO Exited with status !ERRORLEVEL!
-   EXIT !ERRORLEVEL!
-)
-GOTO :EOF
-
-:reformat_minus_RW
-ECHO Running %dvdrwformat% -force %device%
-%dvdrwformat% -force %device%
-IF %ERRORLEVEL% NEQ 0 (
-   ECHO Exited with status !ERRORLEVEL!
-   EXIT !ERRORLEVEL!
-)
-GOTO :EOF
-
-REM  class disk ends here.
-
-:usage
-ECHO Wrong number of arguments.
-ECHO.
-ECHO Usage:
-ECHO.
-ECHO dvd-handler DVD-DRIVE test
-ECHO dvd-handler DVD-DRIVE free
-ECHO dvd-handler DVD-DRIVE write APPEND FILE
-ECHO dvd-handler DVD-DRIVE blank
-ECHO.
-ECHO where DVD-DRIVE is the drive letter of the DVD burner like D:
-ECHO.
-ECHO Operations:
-ECHO test      Scan the device and report the information found.
-ECHO           This operation needs no further arguments.
-ECHO free      Scan the device and report the available space.
-ECHO write     Write a part file to disk.
-ECHO           This operation needs two additional arguments.
-ECHO           The first indicates to append (0), restart the
-ECHO           disk (1) or restart existing disk (2). The second
-ECHO           is the file to write.
-ECHO prepare   Prepare a DVD+/-RW for being used by Bacula.
-ECHO           Note: This is only useful if you already have some
-ECHO           non-Bacula data on a medium, and you want to use
-ECHO           it with Bacula. Don't run this on blank media, it
-ECHO           is useless.
-
-EXIT /b 1
diff --git a/src/win32/scripts/mtx-changer.cmd b/src/win32/scripts/mtx-changer.cmd
deleted file mode 100644
index 8cc2c81..0000000
--- a/src/win32/scripts/mtx-changer.cmd
+++ /dev/null
@@ -1,189 +0,0 @@
- at echo off
-REM
-REM
-REM Bacula interface to mtx autoloader
-REM
-REM  $Id: mtx-changer.cmd 3718 2006-12-01 08:45:40Z robertnelson $
-REM
-REM  If you set in your Device resource
-REM
-REM  Changer Command = "mtx-changer %c %o %S %a %d"
-REM    you will have the following input to this script:
-REM
-REM  Bacula will always call with all the following arguments, even though
-REM    in some cases, not all are used.
-REM
-REM  mtx-changer "changer-device" "command" "slot" "archive-device" "drive-index"
-REM                     %1           %2       %3          %4             %5
-REM
-REM  for example:
-REM
-REM  mtx-changer Changer0 load 1 Tape0 0
-REM 
-REM  will request to load the first cartidge into drive 0, where
-REM   the changer device is Changer0, and the read/write device
-REM   is Tape0.
-REM
-REM  If you need to an offline, refer to the drive as %4
-REM    e.g.   mt -f %4 offline
-REM
-REM  Many changers need an offline after the unload. Also many
-REM   changers need a sleep 60 after the mtx load.
-REM
-REM  N.B. If you change the script, take care to return either 
-REM   the mtx exit code or a 0. If the script exits with a non-zero
-REM   exit code, Bacula will assume the request failed.
-REM
-
-SET MTX="@bin_dir_cmd@\mtx.exe"
-SET MT="@bin_dir_cmd@\mt.exe"
-SET working_dir=@working_dir_cmd@
-
-SET dbgfile="%working_dir%\mtx.log"
-
-REM to turn on logging, uncomment the following line
-REM copy nul "%working_dir%\mtx.log"
-
-REM
-REM check parameter count on commandline
-REM
-REM Check for special cases where only 2 arguments are needed, 
-REM  all others are a minimum of 5
-REM
-IF "%1" EQU "" goto :param_count_invalid
-IF "%2" EQU "" goto :param_count_invalid
-IF "%2" EQU "list" goto :param_count_valid
-IF "%2" EQU "slots" goto :param_count_valid
-IF "%3" EQU "" goto :param_count_invalid
-IF "%4" EQU "" goto :param_count_invalid
-IF "%5" EQU "" goto :param_count_invalid
-GOTO :param_count_valid
-
-:param_count_invalid
-   echo Insufficient number of arguments given.
-   IF "%2" EQU "" (
-      echo   At least two arguments must be specified.
-   ) else echo   Command expected 5 arguments.
-:usage
-   ECHO.
-   ECHO usage: mtx-changer ctl-device command [slot archive-device drive-index]
-   ECHO        Valid commands are: unload, load, list, loaded, and slots.
-   EXIT /B 1
-
-:param_count_valid
-
-REM Setup arguments
-SET ctl=%1
-SET cmd=%2
-SET slot=%3
-SET device=%4
-SET drive=%5
-
-CALL :debug "Parms: %ctl% %cmd% %slot% %device% %drive%"
-IF "%cmd%" EQU "unload" GOTO :cmdUnload
-IF "%cmd%" EQU "load" GOTO :cmdLoad
-IF "%cmd%" EQU "list" GOTO :cmdList
-IF "%cmd%" EQU "loaded" GOTO :cmdLoaded
-IF "%cmd%" EQU "slots" GOTO :cmdSlots
-GOTO :cmdUnknown
-
-:cmdUnload
-   CALL :debug "Doing mtx -f %ctl% unload %slot% %drive%"
-   %MT% -f %device% eject
-   %MTX% -f %ctl% unload %slot% %drive%
-   SET rtn=%ERRORLEVEL%
-   GOTO :cmdExit
-
-:cmdLoad
-   CALL :debug "Doing mtx -f %ctl% load %slot% %drive%"
-   %MTX% -f %ctl% load %slot% %drive%
-   SET rtn=%ERRORLEVEL%
-   IF ERRORLEVEL 1 GOTO :cmdExit
-REM %MT% -f %device% load
-REM bsleep 5
-   CALL :wait_for_drive %device%
-   REM Force block size to 0 for variable
-   %MT% -f %device% setblk 0
-   GOTO :cmdExit
-
-:cmdList
-   CALL :debug "Doing mtx -f %ctl% -- to list volumes"
-   CALL :make_temp_file
-REM Enable the following if you are using barcodes and need an inventory
-REM   %MTX% -f %ctl% inventory
-   %MTX% -f %ctl% status >%TMPFILE%
-   SET rtn=%ERRORLEVEL%
-   IF ERRORLEVEL 1 GOTO :cmdExit
-   FOR /F "usebackq tokens=3,6 delims==: " %%i in ( `findstr /R /C:" *Storage Element [0-9]*:.*Full" %TMPFILE%` ) do echo %%i:%%j
-   FOR /F "usebackq tokens=7,10" %%i in ( `findstr /R /C:"^Data Transfer Element [0-9]*:Full (Storage Element [0-9]" %TMPFILE%` ) do echo %%i:%%j
-   DEL /F %TMPFILE% >nul 2>&1
-REM
-REM If you have a VXA PacketLoader and the above does not work, try
-REM  turning it off and enabling the following line.
-REM   %MTX% -f %ctl% status | grep " *Storage Element [0-9]*:.*Full" | sed "s/*Storage Element //" | sed "s/Full :VolumeTag=//"
-
-   GOTO :cmdExit
-
-:cmdLoaded
-   CALL :debug "Doing mtx -f %ctl% %drive% -- to find what is loaded"
-   CALL :make_temp_file
-   %MTX% -f %ctl% status >%TMPFILE%
-   SET rtn=%ERRORLEVEL%
-   IF ERRORLEVEL 1 GOTO :cmdExit
-   FOR /F "usebackq tokens=7" %%i in ( `findstr /R /C:"^Data Transfer Element %drive%:Full" %TMPFILE%` ) do echo %%i
-   findstr /R /C:"^Data Transfer Element %drive%:Empty" %TMPFILE% >nul && echo 0
-   DEL /F %TMPFILE% >nul 2>&1
-   GOTO :cmdExit
-
-:cmdSlots
-   CALL :debug "Doing mtx -f %ctl% -- to get count of slots"
-   CALL :make_temp_file
-   %MTX% -f %ctl% status >%TMPFILE%
-   SET rtn=%ERRORLEVEL%
-   IF ERRORLEVEL 1 GOTO :cmdExit
-   FOR /F "usebackq tokens=5" %%i in ( `findstr /R /C:" *Storage Changer" %TMPFILE%` ) do echo %%i
-   DEL /F %TMPFILE% >nul 2>&1
-   GOTO :cmdExit
-
-:cmdExit
-   EXIT /B %rtn%
-
-:cmdUnknown
-   ECHO '%cmd%' is an invalid command.
-   GOTO :usage
-
-REM
-REM log whats done
-REM
-:debug
-   IF NOT EXIST %dbgfile% GOTO :EOF
-   FOR /F "usebackq tokens=2-4,5-7 delims=/:. " %%i in ( '%DATE% %TIME%' ) do SET TIMESTAMP=%%k%%i%%j-%%l:%%m:%%n
-   ECHO %TIMESTAMP% %*>> %dbgfile%
-   GOTO :EOF
-
-REM
-REM Create a temporary file
-REM
-:make_temp_file
-   SET TMPFILE="%working_dir%\mtx.tmp"
-   IF EXIST %TMPFILE% (
-      ECHO Temp file security problem on: %TMPFILE%
-      EXIT /B 1
-   )
-   GOTO :EOF
-
-REM
-REM The purpose of this function to wait a maximum 
-REM   time for the drive. It will return as soon as 
-REM   the drive is ready, or after waiting a maximum 
-REM   of 300 seconds.
-REM
-:wait_for_drive
-   FOR /L %%i IN ( 1, 1, 300 ) DO (
-      %MT% -f %1 status | findstr ONLINE >NUL 2>&1
-      IF %ERRORLEVEL%==0 GOTO :EOF
-      CALL :debug "Device %1 - not ready, retrying..."
-      bsleep 1
-   )
-   CALL :debug "Device %1 - not ready, timed out..."
-   GOTO :EOF
diff --git a/src/win32/stored/Makefile b/src/win32/stored/Makefile
deleted file mode 100644
index 5b8399d..0000000
--- a/src/win32/stored/Makefile
+++ /dev/null
@@ -1,163 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-# Configuration
-
-include ../Makefile.inc
-
-INCLUDES = \
-        -I. \
-        -I$(MAINDIR)/src/stored \
-        $(INCLUDE_DDK) \
-        $(INCLUDE_PTHREADS) \
-        $(INCLUDE_BACULA) \
-        $(INCLUDE_ZLIB) \
-        $(INCLUDE_OPENSSL) \
-        $(INCLUDE_ICONS)
-
-DEFINES = \
-        -DUSING_DLL \
-        -DWINVER=0x500 \
-        $(HAVES)
-
-#       -DHAVE_TRAY_MONITOR \
-
-
-vpath %.c $(MAINDIR)/src/stored $(BUILDDIR)/libwin32
-vpath %.cpp $(MAINDIR)/src/stored $(BUILDDIR)/libwin32
-
-##########################################################################
-
-COMMON_OBJS = \
-        $(OBJDIR)/acquire.o \
-        $(OBJDIR)/ansi_label.o \
-        $(OBJDIR)/autochanger.o \
-        $(OBJDIR)/block.o \
-        $(OBJDIR)/butil.o \
-        $(OBJDIR)/dev.o \
-        $(OBJDIR)/device.o \
-        $(OBJDIR)/dvd.o \
-        $(OBJDIR)/ebcdic.o \
-        $(OBJDIR)/label.o \
-        $(OBJDIR)/lock.o \
-        $(OBJDIR)/match_bsr.o \
-        $(OBJDIR)/mount.o \
-        $(OBJDIR)/parse_bsr.o \
-        $(OBJDIR)/read_record.o \
-        $(OBJDIR)/record.o \
-        $(OBJDIR)/reserve.o \
-        $(OBJDIR)/scan.o \
-        $(OBJDIR)/spool.o \
-        $(OBJDIR)/stored_conf.o \
-        $(OBJDIR)/vol_mgr.o \
-        $(OBJDIR)/wait.o \
-        $(OBJDIR)/mtops.o
-
-# bacula-sd
-SD_OBJS = \
-        $(OBJDIR)/stored.o \
-        $(OBJDIR)/append.o \
-        $(OBJDIR)/askdir.o \
-        $(OBJDIR)/authenticate.o \
-        $(OBJDIR)/dircmd.o \
-        $(OBJDIR)/fd_cmds.o \
-        $(OBJDIR)/job.o \
-        $(OBJDIR)/mac.o \
-        $(OBJDIR)/pythonsd.o \
-        $(OBJDIR)/read.o \
-        $(OBJDIR)/sd_plugins.o \
-        $(OBJDIR)/status.o
-
-# bextract
-BEXTRACT_OBJS = \
-        $(OBJDIR)/bextract.o \
-        $(OBJDIR)/pythonsd.o
-
-OBJS_WIN = \
-        $(OBJDIR)/aboutDialog.o \
-        $(OBJDIR)/service.o \
-        $(OBJDIR)/statusDialog.o \
-        $(OBJDIR)/main.o \
-        $(OBJDIR)/bacula.res
-
-#       $(OBJDIR)/trayMonitor.o \
-
-
-ALL_OBJS = \
-        $(COMMON_OBJS) \
-        $(SD_OBJS) \
-        $(BEXTRACT_OBJS) \
-        $(OBJS_WIN) \
-        $(OBJDIR)/bcopy.o \
-        $(OBJDIR)/bls.o \
-        $(OBJDIR)/btape.o \
-        $(OBJDIR)/bscan.o
-
-LIBS_STORED = \
-        $(LIBS_PTHREADS) \
-        $(LIBS_NETWORK) \
-        -lole32 \
-        -loleaut32 \
-        -luuid \
-        -lcomctl32
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all:    $(BINDIR)/bacula-sd.exe $(BINDIR)/bcopy.exe $(BINDIR)/bextract.exe \
-        $(BINDIR)/bls.exe $(BINDIR)/bscan.exe $(BINDIR)/btape.exe
-
-clean:
-        @echo "Cleaning `pwd`"
-        $(call clean_obj,$(ALL_OBJS))
-        $(call clean_exe,$(BINDIR)/bacula-sd.exe)
-        $(call clean_exe,$(BINDIR)/bcopy.exe)
-        $(call clean_exe,$(BINDIR)/bextract.exe)
-        $(call clean_exe,$(BINDIR)/bls.exe)
-        $(call clean_exe,$(BINDIR)/bscan.exe)
-        $(call clean_exe,$(BINDIR)/btape.exe)
-        $(ECHO_CMD)rm -rf $(OBJDIRS)
-
-realclean: clean
-        rm -f tags bacula-sd.conf
-
-#
-# Rules
-#
-
-$(BINDIR)/bacula-sd.exe: $(SD_OBJS) $(COMMON_OBJS) $(OBJS_WIN) $(LIBS_BACULA)
-        $(call link_winapp,$(LIBS_STORED))
-
-$(BINDIR)/btape.exe: $(OBJDIR)/btape.o $(COMMON_OBJS) $(LIBS_BACULA)
-        $(call link_conapp,$(LIBS_STORED))
-
-$(BINDIR)/bls.exe: $(OBJDIR)/bls.o $(COMMON_OBJS) $(LIBS_BACULA)
-        $(call link_conapp,$(LIBS_STORED))
-
-$(BINDIR)/bextract.exe: $(BEXTRACT_OBJS) $(COMMON_OBJS) $(LIBS_BACULA)
-        $(call link_conapp,$(LIBS_STORED) $(LIBS_ZLIB))
-
-$(BINDIR)/bscan.exe: $(OBJDIR)/bscan.o $(COMMON_OBJS) $(LIBS_CATS) $(LIBS_BACULA)
-        $(call link_conapp,$(LIBS_STORED))
-
-$(BINDIR)/bcopy.exe: $(OBJDIR)/bcopy.o $(COMMON_OBJS) $(LIBS_BACULA)
-        $(call link_conapp,$(LIBS_STORED))
-
-$(OBJDIR)/mtops.o: mtops.cpp
-        @echo "Compiling $@"
-        $(call checkdir,$@)
-        $(ECHO_CMD)$(CXX) $(CFLAGS) $(INCLUDE_DDK) -I../../stored -c $< -o $@
-
-$(OBJDIR)/winres.res:     baculasd/winres.rc
-        @echo "Compiling $@"
-        $(call checkdir,$@)
-        $(ECHO_CMD)$(WINDRES) $(INCLUDE_ICONS) -I baculasd -O coff $< -o $@
-
-include ../Makefile.rules
diff --git a/src/win32/stored/bacula.rc b/src/win32/stored/bacula.rc
deleted file mode 100644
index 92b889c..0000000
--- a/src/win32/stored/bacula.rc
+++ /dev/null
@@ -1 +0,0 @@
-#include "../libwin32/bacula.rc"
diff --git a/src/win32/stored/baculasd.vcproj b/src/win32/stored/baculasd.vcproj
deleted file mode 100644
index a9de8f2..0000000
--- a/src/win32/stored/baculasd.vcproj
+++ /dev/null
@@ -1,396 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="baculasd"
-	ProjectGUID="{F5F063F8-11A1-475A-82E2-19759BB40B25}"
-	RootNamespace="baculasd"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Debug/baculasd.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVCE.lib zlib.lib wsock32.lib comctl32.lib atlsd.lib"
-				OutputFile="$(OutDir)/bacula-sd.exe"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				IgnoreDefaultLibraryNames="msvcrt"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug/baculasd.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="0"
-			UseOfATL="1"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Release/baculasd.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0501;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-				AdditionalIncludeDirectories=""
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVCE.lib zlib.lib wsock32.lib comctl32.lib atls.lib"
-				OutputFile="$(OutDir)\bacula-sd.exe"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				DelayLoadDLLs="$(NOINHERIT)"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release/baculasd.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\mtops.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\status.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\stored.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\winabout.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\winmain.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\winservice.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\winstat.cpp"
-				>
-			</File>
-			<File
-				RelativePath=".\wintray.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\..\stored\block.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\bsr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\dev.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\protos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\record.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\reserve.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\stored.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\stored_conf.h"
-				>
-			</File>
-			<File
-				RelativePath=".\winabout.h"
-				>
-			</File>
-			<File
-				RelativePath=".\winbacula.h"
-				>
-			</File>
-			<File
-				RelativePath=".\winres.h"
-				>
-			</File>
-			<File
-				RelativePath=".\winservice.h"
-				>
-			</File>
-			<File
-				RelativePath=".\winstat.h"
-				>
-			</File>
-			<File
-				RelativePath=".\wintray.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\bacula-sd.manifest"
-				>
-			</File>
-			<File
-				RelativePath=".\bacula.bmp"
-				>
-			</File>
-			<File
-				RelativePath=".\bacula.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\error.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\idle.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\running.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\warn.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\winres.rc"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/stored/bcopy/bcopy.vcproj b/src/win32/stored/bcopy/bcopy.vcproj
deleted file mode 100644
index e721e2f..0000000
--- a/src/win32/stored/bcopy/bcopy.vcproj
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="bcopy"
-	ProjectGUID="{614CE916-0972-4126-9392-CD9FC0ADD7DE}"
-	RootNamespace="bcopy"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atlsd.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atls.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\stored\bcopy.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/stored/bextract/bextract.vcproj b/src/win32/stored/bextract/bextract.vcproj
deleted file mode 100644
index 8a17343..0000000
--- a/src/win32/stored/bextract/bextract.vcproj
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="bextract"
-	ProjectGUID="{6A7AA493-E46C-4994-B8D6-AA6C9C19C9BA}"
-	RootNamespace="bextract"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;USING_DLL;HAVE_WIN32;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib zlib.lib pthreadVCE.lib atlsd.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				IgnoreDefaultLibraryNames="msvcrt"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;USING_DLL;HAVE_WIN32;WIN32_VSS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib zlib.lib pthreadVCE.lib atls.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\stored\bextract.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/stored/bls/bls.vcproj b/src/win32/stored/bls/bls.vcproj
deleted file mode 100644
index 1a07d41..0000000
--- a/src/win32/stored/bls/bls.vcproj
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="bls"
-	ProjectGUID="{F8AF7D74-2918-422B-A7B6-4D98566B7160}"
-	RootNamespace="bls"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atlsd.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atls.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\stored\bls.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/stored/bscan/bscan.vcproj b/src/win32/stored/bscan/bscan.vcproj
deleted file mode 100644
index 15caf4b..0000000
--- a/src/win32/stored/bscan/bscan.vcproj
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="bscan"
-	ProjectGUID="{56EADEDB-FBED-4758-8B54-7B0B47ABDABF}"
-	RootNamespace="bscan"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="bacula_cats.lib wsock32.lib pthreadVCE.lib atlsd.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib;$(SolutionDir)$(ConfigurationName)"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="bacula_cats.lib wsock32.lib pthreadVCE.lib atls.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib;$(SolutionDir)$(ConfigurationName)"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\stored\bscan.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/stored/btape/btape.vcproj b/src/win32/stored/btape/btape.vcproj
deleted file mode 100644
index 14ed030..0000000
--- a/src/win32/stored/btape/btape.vcproj
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="btape"
-	ProjectGUID="{496415E0-AF44-4AD8-8C99-91B837DDF469}"
-	RootNamespace="btape"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atlsd.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atls.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\stored\btape.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/stored/main.cpp b/src/win32/stored/main.cpp
deleted file mode 100644
index a39c61b..0000000
--- a/src/win32/stored/main.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- */
-
-#include "who.h"
-#include "../libwin32/main.cpp"
diff --git a/src/win32/stored/mtops.cpp b/src/win32/stored/mtops.cpp
deleted file mode 100644
index 2eeeafa..0000000
--- a/src/win32/stored/mtops.cpp
+++ /dev/null
@@ -1,1175 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2006-2008 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.
-*/
-/*
- * mtops.cpp - Emulate the Linux st (scsi tape) driver on Microsoft Windows.
- *
- * Author: Robert Nelson, May, 2006 <robertn at the-nelsons.org>
- *
- * Version $Id$
- *
- * This file was contributed to the Bacula project by Robert Nelson.
- *
- * Robert Nelson has been granted a perpetual, worldwide,
- * non-exclusive, no-charge, royalty-free, irrevocable copyright
- * license to reproduce, prepare derivative works of, publicly
- * display, publicly perform, sublicense, and distribute the original
- * work contributed by Robert Nelson to the Bacula project in source 
- * or object form.
- *
- * If you wish to license contributions from Robert Nelson
- * under an alternate open source license please contact
- * Robert Nelson <robertn at the-nelsons.org>.
- */
-
-#include <stdarg.h>
-#include <stddef.h>
-
-#include "bacula.h"                   /* pull in global headers */
-#include "stored.h"                   /* pull in Storage Deamon headers */
-
-#include "sys/mtio.h"
-#if defined(_MSC_VER)
-#include <winioctl.h>
-#else
-#include <ntddstor.h>
-#endif
-#include <ntddscsi.h>
-
-//
-// SCSI bus status codes.
-//
-
-#define SCSISTAT_GOOD                  0x00
-#define SCSISTAT_CHECK_CONDITION       0x02
-#define SCSISTAT_CONDITION_MET         0x04
-#define SCSISTAT_BUSY                  0x08
-#define SCSISTAT_INTERMEDIATE          0x10
-#define SCSISTAT_INTERMEDIATE_COND_MET 0x14
-#define SCSISTAT_RESERVATION_CONFLICT  0x18
-#define SCSISTAT_COMMAND_TERMINATED    0x22
-#define SCSISTAT_QUEUE_FULL            0x28
-
-inline   SHORT  Read16BitSigned(const unsigned char *pValue)
-{
-   return (SHORT)(((USHORT)pValue[0] << 8) | (USHORT)pValue[1]);
-}
-
-inline   USHORT  Read16BitUnsigned(const unsigned char *pValue)
-{
-   return (((USHORT)pValue[0] << 8) | (USHORT)pValue[1]);
-}
-
-inline   LONG  Read24BitSigned(const unsigned char *pValue)
-{
-   return ((LONG)(((ULONG)pValue[0] << 16) | ((ULONG)pValue[1] << 8) |
-                   (ULONG)pValue[2])) << 8 >> 8;
-}
-
-inline   ULONG  Read24BitUnsigned(const unsigned char *pValue)
-{
-   return ((ULONG)pValue[0] << 16) | ((ULONG)pValue[1] << 8) | (ULONG)pValue[2];
-}
-
-inline   LONG  Read32BitSigned(const unsigned char *pValue)
-{
-   return (LONG)(((ULONG)pValue[0] << 24) | ((ULONG)pValue[1] << 16) |
-                 ((ULONG)pValue[2] << 8) |   (ULONG)pValue[3]);
-}
-
-inline   ULONG  Read32BitUnsigned(const unsigned char *pValue)
-{
-   return (((ULONG)pValue[0] << 24) | ((ULONG)pValue[1] << 16) |
-           ((ULONG)pValue[2] << 8) | (ULONG)pValue[3]);
-}
-
-inline   LONGLONG  Read64BitSigned(const unsigned char *pValue)
-{
-   return (LONGLONG)(((ULONGLONG)pValue[0] << 56) | ((ULONGLONG)pValue[1] << 48) |
-                     ((ULONGLONG)pValue[2] << 40) | ((ULONGLONG)pValue[3] << 32) |
-                     ((ULONGLONG)pValue[4] << 24) | ((ULONGLONG)pValue[5] << 16) |
-                     ((ULONGLONG)pValue[6] <<  8) |  (ULONGLONG)pValue[7]);
-}
-
-inline   ULONGLONG  Read64BitUnsigned(const unsigned char *pValue)
-{
-   return (LONGLONG)(((ULONGLONG)pValue[0] << 56) | ((ULONGLONG)pValue[1] << 48) |
-                     ((ULONGLONG)pValue[2] << 40) | ((ULONGLONG)pValue[3] << 32) |
-                     ((ULONGLONG)pValue[4] << 24) | ((ULONGLONG)pValue[5] << 16) |
-                     ((ULONGLONG)pValue[6] <<  8) | (ULONGLONG)pValue[7]);
-}
-
-typedef  struct   _TAPE_POSITION_INFO
-{
-   UCHAR       AtPartitionStart:1;
-   UCHAR       AtPartitionEnd:1;
-   UCHAR       PartitionBlockValid:1;
-   UCHAR       FileSetValid:1;
-   UCHAR       :4;
-   UCHAR       Reserved1[3];
-   ULONG       Partition;
-   ULONGLONG   BlockNumber;
-   ULONGLONG   FileNumber;
-   ULONGLONG   SetNumber;
-}  TAPE_POSITION_INFO, *PTAPE_POSITION_INFO;
-
-typedef  struct   _TAPE_HANDLE_INFO
-{
-   HANDLE      OSHandle;
-   bool        bEOD;
-   bool        bEOF;
-   bool        bEOT;
-   bool        bBlockValid;
-   ULONG       FeaturesLow;
-   ULONG       FeaturesHigh;
-   ULONG       ulFile;
-   ULONGLONG   ullFileStart;
-
-}  TAPE_HANDLE_INFO, *PTAPE_HANDLE_INFO;
-
-TAPE_HANDLE_INFO TapeHandleTable[] =
-{
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE },
-   { INVALID_HANDLE_VALUE }
-};
-
-#define  NUMBER_HANDLE_ENTRIES      (sizeof(TapeHandleTable) / sizeof(TapeHandleTable[0]))
-
-static DWORD GetTapePositionInfo(HANDLE hDevice, PTAPE_POSITION_INFO TapePositionInfo);
-static DWORD GetDensityBlockSize(HANDLE hDevice, DWORD *pdwDensity, DWORD *pdwBlockSize);
-
-static int tape_get(int fd, struct mtget *mt_get);
-static int tape_op(int fd, struct mtop *mt_com);
-static int tape_pos(int fd, struct mtpos *mt_pos);
-
-int
-win32_tape_open(const char *file, int flags, ...)
-{
-   HANDLE hDevice = INVALID_HANDLE_VALUE;
-   char szDeviceName[256] = "\\\\.\\";
-   int  idxFile;
-   DWORD dwResult;
-
-   for (idxFile = 0; idxFile < (int)NUMBER_HANDLE_ENTRIES; idxFile++) {
-      if (TapeHandleTable[idxFile].OSHandle == INVALID_HANDLE_VALUE) {
-         break;
-      }
-   }
-
-   if (idxFile >= (int)NUMBER_HANDLE_ENTRIES) {
-      return EMFILE;
-   }
-
-   memset(&TapeHandleTable[idxFile], 0, sizeof(TapeHandleTable[idxFile]));
-
-   if (!IsPathSeparator(file[0])) {
-       bstrncpy(&szDeviceName[4], file, sizeof(szDeviceName) - 4);
-   } else {
-       bstrncpy(&szDeviceName[0], file, sizeof(szDeviceName));
-   }
-
-   hDevice = CreateFile(szDeviceName, FILE_ALL_ACCESS, 0, NULL, OPEN_EXISTING, 0, NULL);
-
-   if (hDevice != INVALID_HANDLE_VALUE) {
-      PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[idxFile];
-
-      memset(pHandleInfo, 0, sizeof(*pHandleInfo));
-
-      pHandleInfo->OSHandle = hDevice;
-
-      TAPE_GET_DRIVE_PARAMETERS  TapeDriveParameters;
-      DWORD    dwSize = sizeof(TapeDriveParameters);
-
-      dwResult = GetTapeParameters(pHandleInfo->OSHandle, GET_TAPE_DRIVE_INFORMATION, &dwSize, &TapeDriveParameters);
-      if (dwResult == NO_ERROR) {
-         pHandleInfo->FeaturesLow = TapeDriveParameters.FeaturesLow;
-         pHandleInfo->FeaturesHigh = TapeDriveParameters.FeaturesHigh;
-      }
-
-      TAPE_POSITION_INFO TapePositionInfo;
-
-      dwResult =  GetTapePositionInfo(pHandleInfo->OSHandle, &TapePositionInfo);
-
-      if (dwResult == NO_ERROR) {
-         if (TapePositionInfo.AtPartitionStart || TapePositionInfo.AtPartitionEnd ||
-             (TapePositionInfo.PartitionBlockValid && TapePositionInfo.BlockNumber == 0)) {
-            pHandleInfo->ulFile = 0;
-            pHandleInfo->bBlockValid = true;
-            pHandleInfo->ullFileStart = 0;
-         } else if (TapePositionInfo.FileSetValid) {
-            pHandleInfo->ulFile = (ULONG)TapePositionInfo.FileNumber;
-         }
-      }
-   } else {
-      DWORD dwError = GetLastError();
-
-      switch (dwError) {
-      case ERROR_FILE_NOT_FOUND:
-      case ERROR_PATH_NOT_FOUND:
-         errno = ENOENT;
-         break;
-
-      case ERROR_TOO_MANY_OPEN_FILES:
-         errno = EMFILE;
-         break;
-
-      default:
-      case ERROR_ACCESS_DENIED:
-      case ERROR_SHARING_VIOLATION:
-      case ERROR_LOCK_VIOLATION:
-      case ERROR_INVALID_NAME:
-         errno = EACCES;
-         break;
-
-      case ERROR_FILE_EXISTS:
-         errno = EEXIST;
-         break;
-
-      case ERROR_INVALID_PARAMETER:
-         errno = EINVAL;
-         break;
-      }
-
-      return(int) -1;
-   }
-
-   return (int)idxFile + 3;
-}
-
-ssize_t
-win32_read(int fd, void *buffer, size_t count)
-{
-   return read(fd, buffer, count);
-}
-
-ssize_t
-win32_write(int fd, const void *buffer, size_t count)
-{
-   return write(fd, buffer, count);
-}
-
-int
-win32_ioctl(int d, unsigned long int req, ...)
-{
-   return -1;
-}
-
-ssize_t
-win32_tape_read(int fd, void *buffer, size_t count)
-{
-   if (buffer == NULL) {
-      errno = EINVAL;
-      return -1;
-   }
-
-   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-       TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE)
-   {
-      errno = EBADF;
-      return -1;
-   }
-
-   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-
-   DWORD bytes_read;
-   BOOL bResult;
-
-   bResult = ReadFile(pHandleInfo->OSHandle, buffer, count, &bytes_read, NULL);
-
-   if (bResult) {
-      pHandleInfo->bEOF = false;
-      pHandleInfo->bEOT = false;
-      pHandleInfo->bEOD = false;
-      return bytes_read;
-   } else {
-      int iReturnValue = 0;
-      DWORD last_error = GetLastError();
-
-      switch (last_error) {
-
-      case ERROR_FILEMARK_DETECTED:
-         pHandleInfo->bEOF = true;
-         break;
-
-      case ERROR_END_OF_MEDIA:
-         pHandleInfo->bEOT = true;
-         break;
-
-      case ERROR_NO_MEDIA_IN_DRIVE:
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-         pHandleInfo->bEOD = false;
-         errno = ENOMEDIUM;
-         iReturnValue = -1;
-         break;
-
-      case ERROR_NO_DATA_DETECTED:
-         pHandleInfo->bEOD = true;
-         break;
-
-      case ERROR_INVALID_HANDLE:
-      case ERROR_ACCESS_DENIED:
-      case ERROR_LOCK_VIOLATION:
-         errno = EBADF;
-         iReturnValue = -1;
-         break;
-
-      default:
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-         pHandleInfo->bEOD = false;
-         errno = EIO;
-         iReturnValue = -1;
-      }
-
-      return iReturnValue;
-   }
-}
-
-ssize_t
-win32_tape_write(int fd, const void *buffer, size_t count)
-{
-   if (buffer == NULL) {
-      errno = EINVAL;
-      return -1;
-   }
-
-   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE)
-   {
-      errno = EBADF;
-      return -1;
-   }
-
-   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-
-   DWORD bytes_written;
-   BOOL bResult;
-
-   bResult = WriteFile(pHandleInfo->OSHandle, buffer, count, &bytes_written, NULL);
-
-   if (bResult) {
-      pHandleInfo->bEOF = false;
-      pHandleInfo->bEOT = false;
-      return bytes_written;
-   } else {
-      DWORD last_error = GetLastError();
-
-      switch (last_error) {
-      case ERROR_END_OF_MEDIA:
-      case ERROR_DISK_FULL:
-         pHandleInfo->bEOT = true;
-         errno = ENOSPC;
-         break;
-
-      case ERROR_NO_MEDIA_IN_DRIVE:
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-         pHandleInfo->bEOD = false;
-         errno = ENOMEDIUM;
-         break;
-
-      case ERROR_INVALID_HANDLE:
-      case ERROR_ACCESS_DENIED:
-         errno = EBADF;
-         break;
-
-      default:
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-         pHandleInfo->bEOD = false;
-         errno = EIO;
-         break;
-      }
-      return -1;
-   }
-}
-
-int
-win32_tape_close(int fd)
-{
-   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-      TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE) {
-      errno = EBADF;
-      return -1;
-   }
-
-   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-
-   if (!CloseHandle(pHandleInfo->OSHandle)) {
-      pHandleInfo->OSHandle = INVALID_HANDLE_VALUE;
-      errno = EBADF;
-      return -1;
-   }
-
-   pHandleInfo->OSHandle = INVALID_HANDLE_VALUE;
-
-   return 0;
-}
-
-int
-win32_tape_ioctl(int fd, unsigned long int request, ...)
-{
-   va_list argp;
-   int result;
-
-   va_start(argp, request);
-
-   switch (request) {
-   case MTIOCTOP:
-      result = tape_op(fd, va_arg(argp, mtop *));
-      break;
-
-   case MTIOCGET:
-      result = tape_get(fd, va_arg(argp, mtget *));
-      break;
-
-   case MTIOCPOS:
-      result = tape_pos(fd, va_arg(argp, mtpos *));
-      break;
-
-   default:
-      errno = ENOTTY;
-      result = -1;
-      break;
-   }
-
-   va_end(argp);
-
-   return result;
-}
-
-static int tape_op(int fd, struct mtop *mt_com)
-{
-   DWORD result = NO_ERROR;
-   int   index;
-
-   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-       TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE)
-   {
-      errno = EBADF;
-      return -1;
-   }
-
-   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-
-   switch (mt_com->mt_op)
-   {
-   case MTRESET:
-   case MTNOP:
-   case MTSETDRVBUFFER:
-      break;
-
-   default:
-   case MTRAS1:
-   case MTRAS2:
-   case MTRAS3:
-   case MTSETDENSITY:
-      errno = ENOTTY;
-      result = (DWORD)-1;
-      break;
-
-   case MTFSF:
-      for (index = 0; index < mt_com->mt_count; index++) {
-         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, 1, 0, FALSE);
-         if (result == NO_ERROR) {
-            pHandleInfo->ulFile++;
-            pHandleInfo->bEOF = true;
-            pHandleInfo->bEOT = false;
-         }
-      }
-      break;
-
-   case MTBSF:
-      for (index = 0; index < mt_com->mt_count; index++) {
-         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, (DWORD)-1, ~0, FALSE);
-         if (result == NO_ERROR) {
-            pHandleInfo->ulFile--;
-            pHandleInfo->bBlockValid = false;
-            pHandleInfo->bEOD = false;
-            pHandleInfo->bEOF = false;
-            pHandleInfo->bEOT = false;
-         }
-      }
-      break;
-
-   case MTFSR:
-      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_RELATIVE_BLOCKS, 0, mt_com->mt_count, 0, FALSE);
-      if (result == NO_ERROR) {
-         pHandleInfo->bEOD = false;
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-      } else if (result == ERROR_FILEMARK_DETECTED) {
-         pHandleInfo->bEOF = true;
-      }
-      break;
-
-   case MTBSR:
-      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_RELATIVE_BLOCKS, 0, -mt_com->mt_count, ~0, FALSE);
-      if (result == NO_ERROR) {
-         pHandleInfo->bEOD = false;
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-      } else if (result == ERROR_FILEMARK_DETECTED) {
-         pHandleInfo->ulFile--;
-         pHandleInfo->bBlockValid = false;
-         pHandleInfo->bEOD = false;
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-      }
-      break;
-
-   case MTWEOF:
-      result = WriteTapemark(pHandleInfo->OSHandle, TAPE_FILEMARKS, mt_com->mt_count, FALSE);
-      if (result == NO_ERROR) {
-         pHandleInfo->bEOF = true;
-         pHandleInfo->bEOT = false;
-         pHandleInfo->ulFile += mt_com->mt_count;
-         pHandleInfo->bBlockValid = true;
-         pHandleInfo->ullFileStart = 0;
-      }
-      break;
-
-   case MTREW:
-      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_REWIND, 0, 0, 0, FALSE);
-      if (result == NO_ERROR) {
-         pHandleInfo->bEOD = false;
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-         pHandleInfo->ulFile = 0;
-         pHandleInfo->bBlockValid = true;
-         pHandleInfo->ullFileStart = 0;
-      }
-      break;
-
-   case MTOFFL:
-      result = PrepareTape(pHandleInfo->OSHandle, TAPE_UNLOAD, FALSE);
-      if (result == NO_ERROR) {
-         pHandleInfo->bEOD = false;
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-         pHandleInfo->ulFile = 0;
-         pHandleInfo->ullFileStart = 0;
-      }
-      break;
-
-   case MTRETEN:
-      result = PrepareTape(pHandleInfo->OSHandle, TAPE_TENSION, FALSE);
-      if (result == NO_ERROR) {
-         pHandleInfo->bEOD = false;
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-         pHandleInfo->ulFile = 0;
-         pHandleInfo->bBlockValid = true;
-         pHandleInfo->ullFileStart = 0;
-      }
-      break;
-
-   case MTBSFM:
-      for (index = 0; index < mt_com->mt_count; index++) {
-         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, (DWORD)-1, ~0, FALSE);
-         if (result == NO_ERROR) {
-            result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, 1, 0, FALSE);
-            pHandleInfo->bEOD = false;
-            pHandleInfo->bEOF = false;
-            pHandleInfo->bEOT = false;
-         }
-      }
-      break;
-
-   case MTFSFM:
-      for (index = 0; index < mt_com->mt_count; index++) {
-         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, mt_com->mt_count, 0, FALSE);
-         if (result == NO_ERROR) {
-            result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, (DWORD)-1, ~0, FALSE);
-            pHandleInfo->bEOD = false;
-            pHandleInfo->bEOF = false;
-            pHandleInfo->bEOT = false;
-         }
-      }
-      break;
-
-   case MTEOM:
-      for ( ; ; ) {
-         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_FILEMARKS, 0, 1, 0, FALSE);
-         if (result != NO_ERROR) {
-            pHandleInfo->bEOF = false;
-
-            if (result == ERROR_END_OF_MEDIA) {
-               pHandleInfo->bEOD = true;
-               pHandleInfo->bEOT = true;
-               return 0;
-            }
-            if (result == ERROR_NO_DATA_DETECTED) {
-               pHandleInfo->bEOD = true;
-               pHandleInfo->bEOT = false;
-               return 0;
-            }
-            break;
-         } else {
-            pHandleInfo->bEOF = true;
-            pHandleInfo->ulFile++;
-         }
-      }
-      break;
-
-   case MTERASE:
-      result = EraseTape(pHandleInfo->OSHandle, TAPE_ERASE_LONG, FALSE);
-      if (result == NO_ERROR) {
-         pHandleInfo->bEOD = true;
-         pHandleInfo->bEOF = false;
-         pHandleInfo->bEOT = false;
-         pHandleInfo->ulFile = 0;
-         pHandleInfo->bBlockValid = true;
-         pHandleInfo->ullFileStart = 0;
-      }
-      break;
-
-   case MTSETBLK:
-      {
-         TAPE_SET_MEDIA_PARAMETERS  SetMediaParameters;
-
-         SetMediaParameters.BlockSize = mt_com->mt_count;
-         result = SetTapeParameters(pHandleInfo->OSHandle, SET_TAPE_MEDIA_INFORMATION, &SetMediaParameters);
-      }
-      break;
-
-   case MTSEEK:
-      {
-         TAPE_POSITION_INFO   TapePositionInfo;
-
-         result = SetTapePosition(pHandleInfo->OSHandle, TAPE_ABSOLUTE_BLOCK, 0, mt_com->mt_count, 0, FALSE);
-
-         memset(&TapePositionInfo, 0, sizeof(TapePositionInfo));
-         DWORD dwPosResult = GetTapePositionInfo(pHandleInfo->OSHandle, &TapePositionInfo);
-         if (dwPosResult == NO_ERROR && TapePositionInfo.FileSetValid) {
-            pHandleInfo->ulFile = (ULONG)TapePositionInfo.FileNumber;
-         } else {
-            pHandleInfo->ulFile = ~0U;
-         }
-      }
-      break;
-
-   case MTTELL:
-      {
-         DWORD partition;
-         DWORD offset;
-         DWORD offsetHi;
-
-         result = GetTapePosition(pHandleInfo->OSHandle, TAPE_ABSOLUTE_BLOCK, &partition, &offset, &offsetHi);
-         if (result == NO_ERROR) {
-            return offset;
-         }
-      }
-      break;
-
-   case MTFSS:
-      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_SETMARKS, 0, mt_com->mt_count, 0, FALSE);
-      break;
-
-   case MTBSS:
-      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_SPACE_SETMARKS, 0, -mt_com->mt_count, ~0, FALSE);
-      break;
-
-   case MTWSM:
-      result = WriteTapemark(pHandleInfo->OSHandle, TAPE_SETMARKS, mt_com->mt_count, FALSE);
-      break;
-
-   case MTLOCK:
-      result = PrepareTape(pHandleInfo->OSHandle, TAPE_LOCK, FALSE);
-      break;
-
-   case MTUNLOCK:
-      result = PrepareTape(pHandleInfo->OSHandle, TAPE_UNLOCK, FALSE);
-      break;
-
-   case MTLOAD:
-      result = PrepareTape(pHandleInfo->OSHandle, TAPE_LOAD, FALSE);
-      break;
-
-   case MTUNLOAD:
-      result = PrepareTape(pHandleInfo->OSHandle, TAPE_UNLOAD, FALSE);
-      break;
-
-   case MTCOMPRESSION:
-      {
-         TAPE_GET_DRIVE_PARAMETERS  GetDriveParameters;
-         TAPE_SET_DRIVE_PARAMETERS  SetDriveParameters;
-         DWORD                      size;
-
-         size = sizeof(GetDriveParameters);
-
-         result = GetTapeParameters(pHandleInfo->OSHandle, GET_TAPE_DRIVE_INFORMATION, &size, &GetDriveParameters);
-
-         if (result == NO_ERROR)
-         {
-            SetDriveParameters.ECC = GetDriveParameters.ECC;
-            SetDriveParameters.Compression = (BOOLEAN)mt_com->mt_count;
-            SetDriveParameters.DataPadding = GetDriveParameters.DataPadding;
-            SetDriveParameters.ReportSetmarks = GetDriveParameters.ReportSetmarks;
-            SetDriveParameters.EOTWarningZoneSize = GetDriveParameters.EOTWarningZoneSize;
-
-            result = SetTapeParameters(pHandleInfo->OSHandle, SET_TAPE_DRIVE_INFORMATION, &SetDriveParameters);
-         }
-      }
-      break;
-
-   case MTSETPART:
-      result = SetTapePosition(pHandleInfo->OSHandle, TAPE_LOGICAL_BLOCK, mt_com->mt_count, 0, 0, FALSE);
-      break;
-
-   case MTMKPART:
-      if (mt_com->mt_count == 0)
-      {
-         result = CreateTapePartition(pHandleInfo->OSHandle, TAPE_INITIATOR_PARTITIONS, 1, 0);
-      }
-      else
-      {
-         result = CreateTapePartition(pHandleInfo->OSHandle, TAPE_INITIATOR_PARTITIONS, 2, mt_com->mt_count);
-      }
-      break;
-   }
-
-   if ((result == NO_ERROR && pHandleInfo->bEOF) || 
-       (result == ERROR_FILEMARK_DETECTED && mt_com->mt_op == MTFSR)) {
-
-      TAPE_POSITION_INFO TapePositionInfo;
-
-      if (GetTapePositionInfo(pHandleInfo->OSHandle, &TapePositionInfo) == NO_ERROR) {
-         pHandleInfo->bBlockValid = true;
-         pHandleInfo->ullFileStart = TapePositionInfo.BlockNumber;
-      }
-   }
-
-   switch (result) {
-   case NO_ERROR:
-   case (DWORD)-1:   /* Error has already been translated into errno */
-      break;
-
-   default:
-   case ERROR_FILEMARK_DETECTED:
-      errno = EIO;
-      break;
-
-   case ERROR_END_OF_MEDIA:
-      pHandleInfo->bEOT = true;
-      errno = EIO;
-      break;
-
-   case ERROR_NO_DATA_DETECTED:
-      pHandleInfo->bEOD = true;
-      errno = EIO;
-      break;
-
-   case ERROR_NO_MEDIA_IN_DRIVE:
-      pHandleInfo->bEOF = false;
-      pHandleInfo->bEOT = false;
-      pHandleInfo->bEOD = false;
-      errno = ENOMEDIUM;
-      break;
-
-   case ERROR_INVALID_HANDLE:
-   case ERROR_ACCESS_DENIED:
-   case ERROR_LOCK_VIOLATION:
-      errno = EBADF;
-      break;
-   }
-
-   return result == NO_ERROR ? 0 : -1;
-}
-
-static int tape_get(int fd, struct mtget *mt_get)
-{
-   TAPE_POSITION_INFO pos_info;
-   BOOL result;
-
-   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-       TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE) {
-      errno = EBADF;
-      return -1;
-   }
-
-   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-
-   if (GetTapePositionInfo(pHandleInfo->OSHandle, &pos_info) != NO_ERROR) {
-      return -1;
-   }
-
-   DWORD density = 0;
-   DWORD blocksize = 0;
-
-   result = GetDensityBlockSize(pHandleInfo->OSHandle, &density, &blocksize);
-
-   if (result != NO_ERROR) {
-      TAPE_GET_DRIVE_PARAMETERS drive_params;
-      DWORD size;
-
-      size = sizeof(drive_params);
-
-      result = GetTapeParameters(pHandleInfo->OSHandle, GET_TAPE_DRIVE_INFORMATION, &size, &drive_params);
-
-      if (result == NO_ERROR) {
-         blocksize = drive_params.DefaultBlockSize;
-      }
-   }
-
-   mt_get->mt_type = MT_ISSCSI2;
-
-   // Partition #
-   mt_get->mt_resid = pos_info.PartitionBlockValid ? pos_info.Partition : (ULONG)-1;
-
-   // Density / Block Size
-   mt_get->mt_dsreg = ((density << MT_ST_DENSITY_SHIFT) & MT_ST_DENSITY_MASK) |
-                      ((blocksize << MT_ST_BLKSIZE_SHIFT) & MT_ST_BLKSIZE_MASK);
-
-   mt_get->mt_gstat = 0x00010000;  /* Immediate report mode.*/
-
-   if (pHandleInfo->bEOF) {
-      mt_get->mt_gstat |= 0x80000000;     // GMT_EOF
-   }
-
-   if (pos_info.PartitionBlockValid && pos_info.BlockNumber == 0) {
-      mt_get->mt_gstat |= 0x40000000;     // GMT_BOT
-   }
-
-   if (pHandleInfo->bEOT) {
-      mt_get->mt_gstat |= 0x20000000;     // GMT_EOT
-   }
-
-   if (pHandleInfo->bEOD) {
-      mt_get->mt_gstat |= 0x08000000;     // GMT_EOD
-   }
-
-   TAPE_GET_MEDIA_PARAMETERS  media_params;
-   DWORD size = sizeof(media_params);
-   
-   result = GetTapeParameters(pHandleInfo->OSHandle, GET_TAPE_MEDIA_INFORMATION, &size, &media_params);
-
-   if (result == NO_ERROR && media_params.WriteProtected) {
-      mt_get->mt_gstat |= 0x04000000;     // GMT_WR_PROT
-   }
-
-   result = GetTapeStatus(pHandleInfo->OSHandle);
-
-   if (result != NO_ERROR) {
-      if (result == ERROR_NO_MEDIA_IN_DRIVE) {
-         mt_get->mt_gstat |= 0x00040000;  // GMT_DR_OPEN
-      }
-   } else {
-      mt_get->mt_gstat |= 0x01000000;     // GMT_ONLINE
-   }
-
-   // Recovered Error Count
-   mt_get->mt_erreg = 0;
-
-   // File Number
-   mt_get->mt_fileno = (__daddr_t)pHandleInfo->ulFile;
-
-   // Block Number
-   mt_get->mt_blkno = (__daddr_t)(pHandleInfo->bBlockValid ? pos_info.BlockNumber - pHandleInfo->ullFileStart : (ULONGLONG)-1);
-
-   return 0;
-}
-
-#define  SERVICEACTION_SHORT_FORM_BLOCKID             0
-#define  SERVICEACTION_SHORT_FORM_VENDOR_SPECIFIC     1
-#define  SERVICEACTION_LONG_FORM                      6
-#define  SERVICEACTION_EXTENDED_FORM                  8
-
-
-typedef  struct   _SCSI_READ_POSITION_SHORT_BUFFER
-{
-   UCHAR    :1;
-   UCHAR    PERR:1;
-   UCHAR    BPU:1;
-   UCHAR    :1;
-   UCHAR    BYCU:1;
-   UCHAR    BCU:1;
-   UCHAR    EOP:1;
-   UCHAR    BOP:1;
-   UCHAR    Partition;
-   UCHAR    Reserved1[2];
-   UCHAR    FirstBlock[4];
-   UCHAR    LastBlock[4];
-   UCHAR    Reserved2;
-   UCHAR    NumberBufferBlocks[3];
-   UCHAR    NumberBufferBytes[4];
-}  SCSI_READ_POSITION_SHORT_BUFFER, *PSCSI_READ_POSITION_SHORT_BUFFER;
-
-typedef  struct   _SCSI_READ_POSITION_LONG_BUFFER
-{
-   UCHAR    :2;
-   UCHAR    BPU:1;
-   UCHAR    MPU:1;
-   UCHAR    :2;
-   UCHAR    EOP:1;
-   UCHAR    BOP:1;
-   UCHAR    Reserved3[3];
-   UCHAR    Partition[4];
-   UCHAR    BlockNumber[8];
-   UCHAR    FileNumber[8];
-   UCHAR    SetNumber[8];
-}  SCSI_READ_POSITION_LONG_BUFFER, *PSCSI_READ_POSITION_LONG_BUFFER;
-
-typedef  struct   _SCSI_READ_POSITION_EXTENDED_BUFFER
-{
-   UCHAR    :1;
-   UCHAR    PERR:1;
-   UCHAR    LOPU:1;
-   UCHAR    :1;
-   UCHAR    BYCU:1;
-   UCHAR    LOCU:1;
-   UCHAR    EOP:1;
-   UCHAR    BOP:1;
-   UCHAR    Partition;
-   UCHAR    AdditionalLength[2];
-   UCHAR    Reserved1;
-   UCHAR    NumberBufferObjects[3];
-   UCHAR    FirstLogicalObject[8];
-   UCHAR    LastLogicalObject[8];
-   UCHAR    NumberBufferObjectBytes[8];
-}  SCSI_READ_POSITION_EXTENDED_BUFFER, *PSCSI_READ_POSITION_EXTENDED_BUFFER;
-
-typedef union _READ_POSITION_RESULT {
-   SCSI_READ_POSITION_SHORT_BUFFER     ShortBuffer;
-   SCSI_READ_POSITION_LONG_BUFFER      LongBuffer;
-   SCSI_READ_POSITION_EXTENDED_BUFFER  ExtendedBuffer;
-}  READ_POSITION_RESULT, *PREAD_POSITION_RESULT;
-
-static DWORD GetTapePositionInfo(HANDLE hDevice, PTAPE_POSITION_INFO TapePositionInfo)
-{
-   PSCSI_PASS_THROUGH   ScsiPassThrough;
-   BOOL                 bResult;
-   DWORD                dwBytesReturned;
-
-   const DWORD dwBufferSize = sizeof(SCSI_PASS_THROUGH) + sizeof(READ_POSITION_RESULT) + 28;
-
-   memset(TapePositionInfo, 0, sizeof(*TapePositionInfo));
-
-   ScsiPassThrough = (PSCSI_PASS_THROUGH)malloc(dwBufferSize);
-
-   for (int pass = 0; pass < 2; pass++)
-   {
-      memset(ScsiPassThrough, 0, dwBufferSize);
-
-      ScsiPassThrough->Length = sizeof(SCSI_PASS_THROUGH);
-
-      ScsiPassThrough->CdbLength = 10;
-      ScsiPassThrough->SenseInfoLength = 28;
-      ScsiPassThrough->DataIn = 1;
-      ScsiPassThrough->DataTransferLength = sizeof(SCSI_READ_POSITION_LONG_BUFFER);
-      ScsiPassThrough->TimeOutValue = 1000;
-      ScsiPassThrough->DataBufferOffset = sizeof(SCSI_PASS_THROUGH) + 28;
-      ScsiPassThrough->SenseInfoOffset = sizeof(SCSI_PASS_THROUGH);
-
-      ScsiPassThrough->Cdb[0] = 0x34;  // READ POSITION
-
-      switch (pass)
-      {
-      case 0:
-         ScsiPassThrough->Cdb[1] = SERVICEACTION_LONG_FORM;
-         break;
-
-      case 1:
-         ScsiPassThrough->Cdb[1] = SERVICEACTION_SHORT_FORM_BLOCKID;
-         break;
-      }
-
-      bResult = DeviceIoControl( hDevice, 
-                                 IOCTL_SCSI_PASS_THROUGH, 
-                                 ScsiPassThrough, sizeof(SCSI_PASS_THROUGH), 
-                                 ScsiPassThrough, dwBufferSize, 
-                                 &dwBytesReturned, 
-                                 NULL);
-
-      if (bResult && dwBytesReturned >= (offsetof(SCSI_PASS_THROUGH, ScsiStatus) + sizeof(ScsiPassThrough->ScsiStatus))) {
-         if (ScsiPassThrough->ScsiStatus == SCSISTAT_GOOD) {
-            PREAD_POSITION_RESULT   pPosResult = (PREAD_POSITION_RESULT)((PUCHAR)ScsiPassThrough + ScsiPassThrough->DataBufferOffset);
-
-            switch (pass)
-            {
-            case 0:     // SERVICEACTION_LONG_FORM
-               {
-                  TapePositionInfo->AtPartitionStart = pPosResult->LongBuffer.BOP;
-                  TapePositionInfo->AtPartitionEnd = pPosResult->LongBuffer.EOP;
-
-                  if (!TapePositionInfo->PartitionBlockValid) {
-                     TapePositionInfo->PartitionBlockValid = !pPosResult->LongBuffer.BPU;
-
-                     if (TapePositionInfo->PartitionBlockValid) {
-                        TapePositionInfo->Partition =   Read32BitUnsigned(pPosResult->LongBuffer.Partition);
-                        TapePositionInfo->BlockNumber = Read64BitUnsigned(pPosResult->LongBuffer.BlockNumber);
-                     }
-                  }
-
-                  TapePositionInfo->FileSetValid = !pPosResult->LongBuffer.MPU;
-                  if (TapePositionInfo->FileSetValid) {
-                     TapePositionInfo->FileNumber =  Read64BitUnsigned(pPosResult->LongBuffer.FileNumber);
-                     TapePositionInfo->SetNumber =   Read64BitUnsigned(pPosResult->LongBuffer.SetNumber);
-                  }
-               }
-               break;
-
-            case 1:     // SERVICEACTION_SHORT_FORM_BLOCKID
-               {
-                  // pPosResult->ShortBuffer.PERR;
-                  // pPosResult->ShortBuffer.BYCU;
-                  // pPosResult->ShortBuffer.BCU;
-                  TapePositionInfo->AtPartitionStart = pPosResult->ShortBuffer.BOP;
-                  TapePositionInfo->AtPartitionEnd = pPosResult->ShortBuffer.EOP;
-
-                  if (!TapePositionInfo->PartitionBlockValid) {
-                     TapePositionInfo->PartitionBlockValid = !pPosResult->ShortBuffer.BPU;
-
-                     if (TapePositionInfo->PartitionBlockValid) {
-                        TapePositionInfo->Partition =   pPosResult->ShortBuffer.Partition;
-                        TapePositionInfo->BlockNumber = Read32BitUnsigned(pPosResult->ShortBuffer.FirstBlock);
-                     }
-                  }
-                  // Read32BitsUnsigned(pPosResult->ShortBuffer.LastBlock);
-                  // Read24BitsUnsigned(pPosResult->ShortBuffer.NumberBufferBlocks);
-                  // Read32BitsUnsigned(pPosResult->ShortBuffer.NumberBufferBytes);
-               }
-               break;
-            }
-         }
-      }
-   }
-   free(ScsiPassThrough);
-
-   return NO_ERROR;
-}
-
-static DWORD GetDensityBlockSize(HANDLE hDevice, DWORD *pdwDensity, DWORD *pdwBlockSize)
-{
-   DWORD             dwBufferSize = sizeof(GET_MEDIA_TYPES) + 5 * sizeof(DEVICE_MEDIA_INFO);
-   GET_MEDIA_TYPES * pGetMediaTypes = (GET_MEDIA_TYPES *)malloc(dwBufferSize);
-   BOOL              bResult;
-   DWORD             dwResult;
-
-   if (pGetMediaTypes == NULL) {
-      return ERROR_OUTOFMEMORY;
-   }
-
-   do {
-      DWORD          dwBytesReturned;
-      
-      bResult = DeviceIoControl( hDevice, 
-                                 IOCTL_STORAGE_GET_MEDIA_TYPES_EX, 
-                                 NULL, 0, 
-                                 (LPVOID)pGetMediaTypes, dwBufferSize, 
-                                 &dwBytesReturned, 
-                                 NULL);
-
-      if (!bResult) {
-         dwResult = GetLastError();
-
-         if (dwResult != ERROR_INSUFFICIENT_BUFFER) {
-            free(pGetMediaTypes);
-            return dwResult;
-         }
-
-         dwBufferSize += 6 * sizeof(DEVICE_MEDIA_INFO);
-
-         GET_MEDIA_TYPES * pNewBuffer = (GET_MEDIA_TYPES *)realloc(pGetMediaTypes, dwBufferSize);
-
-         if (pNewBuffer != pGetMediaTypes) {
-            free(pGetMediaTypes);
-
-            if (pNewBuffer == NULL) {
-               return ERROR_OUTOFMEMORY;
-            }
-
-            pGetMediaTypes = pNewBuffer;
-         }
-      }
-   } while (!bResult);
-
-   if (pGetMediaTypes->DeviceType != FILE_DEVICE_TAPE) {
-      free(pGetMediaTypes);
-      return ERROR_BAD_DEVICE;
-   }
-
-   for (DWORD idxMedia = 0; idxMedia < pGetMediaTypes->MediaInfoCount; idxMedia++) {
-
-      if (pGetMediaTypes->MediaInfo[idxMedia].DeviceSpecific.TapeInfo.MediaCharacteristics & MEDIA_CURRENTLY_MOUNTED) {
-
-         if (pGetMediaTypes->MediaInfo[idxMedia].DeviceSpecific.TapeInfo.BusType == BusTypeScsi) {
-            *pdwDensity = pGetMediaTypes->MediaInfo[idxMedia].DeviceSpecific.TapeInfo.BusSpecificData.ScsiInformation.DensityCode;
-         } else {
-            *pdwDensity = 0;
-         }
-
-         *pdwBlockSize = pGetMediaTypes->MediaInfo[idxMedia].DeviceSpecific.TapeInfo.CurrentBlockSize;
-
-         free(pGetMediaTypes);
-
-         return NO_ERROR;
-      }
-   }
-
-   free(pGetMediaTypes);
-
-   return ERROR_NO_MEDIA_IN_DRIVE;
-}
-
-static int tape_pos(int fd, struct mtpos *mt_pos)
-{
-   DWORD partition;
-   DWORD offset;
-   DWORD offsetHi;
-   BOOL result;
-
-   if (fd < 3 || fd >= (int)(NUMBER_HANDLE_ENTRIES + 3) || 
-       TapeHandleTable[fd - 3].OSHandle == INVALID_HANDLE_VALUE) {
-      errno = EBADF;
-      return -1;
-   }
-
-   PTAPE_HANDLE_INFO    pHandleInfo = &TapeHandleTable[fd - 3];
-
-   result = GetTapePosition(pHandleInfo->OSHandle, TAPE_ABSOLUTE_BLOCK, &partition, &offset, &offsetHi);
-   if (result == NO_ERROR) {
-      mt_pos->mt_blkno = offset;
-      return 0;
-   }
-
-   return -1;
-}
diff --git a/src/win32/stored/postest/postest.cpp b/src/win32/stored/postest/postest.cpp
deleted file mode 100644
index 597691a..0000000
--- a/src/win32/stored/postest/postest.cpp
+++ /dev/null
@@ -1,299 +0,0 @@
-#ifdef HAVE_WIN32
-#include <windows.h>
-typedef int __daddr_t;
-#else
-#define tape_open open
-#define tape_write write
-#define tape_ioctl ioctl
-#define tape_close close
-
-typedef  unsigned char  UCHAR, *PUCHAR;
-typedef  unsigned int   UINT, *PUINT;
-typedef  unsigned long  ULONG, *PULONG;
-typedef  unsigned long long   ULONGLONG, *PULONGLONG;
-#endif
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <malloc.h>
-#include <sys/mtio.h>
-#include <errno.h>
-#include <string.h>
-
-char *szCommands[] =
-{
-   "MTRESET",
-   "MTFSF",
-   "MTBSF",
-   "MTFSR",
-   "MTBSR",
-   "MTWEOF",
-   "MTREW",
-   "MTOFFL",
-   "MTNOP",
-   "MTRETEN",
-   "MTBSFM",
-   "MTFSFM ",
-   "MTEOM",
-   "MTERASE",
-   "MTRAS1",
-   "MTRAS2",
-   "MTRAS3",
-   "UNKNOWN_17",
-   "UNKNOWN_18",
-   "UNKNOWN_19",
-   "MTSETBLK",
-   "MTSETDENSITY",
-   "MTSEEK",
-   "MTTELL",
-   "MTSETDRVBUFFER",
-   "MTFSS",
-   "MTBSS",
-   "MTWSM",
-   "MTLOCK",
-   "MTUNLOCK",
-   "MTLOAD",
-   "MTUNLOAD",
-   "MTCOMPRESSION",
-   "MTSETPART",
-   "MTMKPART",
-};
-
-#define NUMBER_COMMANDS (sizeof(szCommands) / sizeof(szCommands[0]))
-
-typedef  struct _SCRIPT_ENTRY {
-   short       Command;
-   int         Count;
-   PUCHAR      pszDescription;
-   ULONG       ExpectedFile;
-   ULONGLONG   ExpectedBlock;
-}  SCRIPT_ENTRY, *PSCRIPT_ENTRY;
-
-SCRIPT_ENTRY   TestScript[] = 
-{
-   { MTREW, 1, 0, 0 },
-   { MTFSF, 2, 0, 0 },
-   { MTBSR, 1, 0, 0 },
-   { MTBSR, 3, 0, 0 },
-   { MTFSR, 6, 0, 0 },
-   { MTREW, 1, 0, 0 },
-   { MTFSF, 3, 0, 0 },
-   { MTFSR, 8, 0, 0 },
-   { MTFSF, 1, 0, 0 },
-   { MTBSF, 1, 0, 0 }
-};
-
-#define SCRIPT_LENGTH (sizeof(TestScript) / sizeof(TestScript[0]))
-
-void printpos(int fd, ULONG ulFile, ULONG ulBlock);
-
-void
-run_script(int fd, PSCRIPT_ENTRY entries, size_t count)
-{
-   mtop  op;
-
-   for (size_t idxScript = 0; idxScript < count; idxScript++)
-   {
-      PSCRIPT_ENTRY   pEntry = &entries[idxScript];
-
-      fprintf(stderr, "%s %d: ", szCommands[pEntry->Command], pEntry->Count);
-
-      op.mt_op = pEntry->Command;
-      op.mt_count = pEntry->Count;
-
-      int iResult = tape_ioctl(fd, MTIOCTOP, &op);
-
-      if (iResult >= 0)
-      {
-         printpos(fd, pEntry->ExpectedFile, (ULONG)pEntry->ExpectedBlock);
-      }
-      else
-      {
-         fprintf(stderr, "tape_ioctl returned %d, error = %s\n", errno, strerror(errno));
-      }
-   }
-}
-
-void
-weof(int fd)
-{
-   mtop   op;
-
-   op.mt_op = MTWEOF;
-   op.mt_count = 1;
-
-   if (tape_ioctl(fd, MTIOCTOP, &op) != 0)
-   {
-      fprintf(stderr, "tape_ioctl return error %d - %s", errno, strerror(errno));
-   }
-}
-
-void
-wdata(int fd, ULONG ulBufferNumber, void *pBuffer, size_t size)
-{
-   ((PUCHAR)pBuffer)[0] = (UCHAR)ulBufferNumber;
-   ((PUCHAR)pBuffer)[1] = (UCHAR)(ulBufferNumber >> 8);
-   ((PUCHAR)pBuffer)[2] = (UCHAR)(ulBufferNumber >> 16);
-   ((PUCHAR)pBuffer)[3] = (UCHAR)(ulBufferNumber >> 24);
-
-   UCHAR    ucChar = (UCHAR)ulBufferNumber;
-   UCHAR    ucIncrement = (UCHAR)(ulBufferNumber >> 8);
-
-   if (ucIncrement == 0)
-   {
-      ucIncrement++;
-   }
-
-   for (size_t index = 4; index < size; index++)
-   {
-      ((PUCHAR)pBuffer)[index] = ucChar;
-      ucChar += ucIncrement;
-   }
-
-   
-   if (tape_write(fd, pBuffer, (UINT)size) < 0)
-   {
-      fprintf(stderr, "tape_write returned error %d - %s", errno, strerror(errno));
-   }
-}
-
-void
-printpos(int fd, ULONG ulExpectedFile, ULONG ulExpectedBlock)
-{
-   mtget  st;
-
-   tape_ioctl(fd, MTIOCGET, &st);
-   if (tape_ioctl(fd, MTIOCGET, &st) != 0)
-   {
-      fprintf(stderr, "tape_ioctl(MTIOCGET) returned error %d - %s\n", errno, strerror(errno));
-   }
-
-   mtpos pos;
-
-   if (tape_ioctl(fd, MTIOCPOS, &pos) != 0)
-   {
-      fprintf(stderr, "tape_ioctl(MTIOCPOS) returned error %d - %s\n", errno, strerror(errno));
-   }
-
-   fprintf( stderr, "File = %d s/b %d, Block = %d, s/b %d, Absolute = %d, Flags =%s%s%s%s%s%s%s%s\n", 
-      st.mt_fileno, ulExpectedFile, st.mt_blkno, ulExpectedBlock, pos.mt_blkno, 
-      GMT_EOF(st.mt_gstat) ? " EOF" : "",
-      GMT_BOT(st.mt_gstat) ? " BOT" : "",
-      GMT_EOT(st.mt_gstat) ? " EOT" : "",
-      GMT_EOD(st.mt_gstat) ? " EOD" : "",
-      GMT_WR_PROT(st.mt_gstat) ? " WR_PROT" : "",
-      GMT_ONLINE(st.mt_gstat) ? " ONLINE" : "",
-      GMT_DR_OPEN(st.mt_gstat) ? " DR_OPEN" : "",
-      GMT_IM_REP_EN(st.mt_gstat) ? " IM_REP_EN" : "");
-}
-
-void
-rewind(int fd)
-{
-   mtop  op;
-
-   op.mt_op = MTREW;
-   op.mt_count = 1;
-
-   if (tape_ioctl(fd, MTIOCTOP, &op) != 0)
-   {
-      fprintf(stderr, "tape_ioctl return error %d - %s", errno, strerror(errno));
-   }
-}
-
-#define  BLOCK_SIZE  32768
-
-int
-main(int argc, char **argv)
-{
-   PUCHAR pBuffer;
-   ULONG ulBlockNumber = 0;
-   ULONG filenumber = 0;
-   int index;
-
-   OSDependentInit();
-
-   int fd = tape_open(argv[1], O_RDWR, 0);
-
-   if (fd == -1)
-   {
-      fprintf(stderr, "tape_open return error %d - %s", errno, strerror(errno));
-      exit(1);
-   }
-   pBuffer = (PUCHAR)malloc(BLOCK_SIZE);
-
-   rewind(fd);
-
-   printpos(fd, 0, 0);
-
-   fprintf(stderr, "file = %d, first block = %d\n", filenumber, ulBlockNumber);
-
-   for (index = 0; index < 10; index++)
-   {
-      wdata(fd, ulBlockNumber++, pBuffer, BLOCK_SIZE);
-   }
-
-   weof(fd);
-   filenumber++;
-   ulBlockNumber++;
-
-   fprintf(stderr, "file = %d, first block = %d\n", filenumber, ulBlockNumber);
-
-   for (index = 0; index < 5; index++)
-   {
-      wdata(fd, ulBlockNumber++, pBuffer, BLOCK_SIZE);
-   }
-
-   weof(fd);
-   filenumber++;
-   ulBlockNumber++;
-
-   fprintf(stderr, "file = %d, first block = %d\n", filenumber, ulBlockNumber);
-
-      for (index = 0; index < 11; index++)
-   {
-      wdata(fd, ulBlockNumber++, pBuffer, BLOCK_SIZE);
-   }
-
-   weof(fd);
-   filenumber++;
-   ulBlockNumber++;
-
-   fprintf(stderr, "file = %d, first block = %d\n", filenumber, ulBlockNumber);
-
-   for (index = 0; index < 8; index++)
-   {
-      wdata(fd, ulBlockNumber++, pBuffer, BLOCK_SIZE);
-   }
-
-   weof(fd);
-   filenumber++;
-   ulBlockNumber++;
-
-   fprintf(stderr, "file = %d, first block = %d\n", filenumber, ulBlockNumber);
-   for (index = 0; index < 12; index++)
-   {
-      wdata(fd, ulBlockNumber++, pBuffer, BLOCK_SIZE);
-   }
-
-   weof(fd);
-   filenumber++;
-   ulBlockNumber++;
-
-   fprintf(stderr, "file = %d, first block = %d\n", filenumber, ulBlockNumber);
-   for (index = 0; index < 7; index++)
-   {
-      wdata(fd, ulBlockNumber++, pBuffer, BLOCK_SIZE);
-   }
-
-   weof(fd);
-   filenumber++;
-   ulBlockNumber++;
-
-   run_script(fd, TestScript, SCRIPT_LENGTH);
-   tape_close(fd);
-   free(pBuffer);
-   return 0;
-}
diff --git a/src/win32/stored/postest/postest.vcproj b/src/win32/stored/postest/postest.vcproj
deleted file mode 100644
index 345f195..0000000
--- a/src/win32/stored/postest/postest.vcproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="postest"
-	ProjectGUID="{208D3989-794B-47A2-9D04-D7AEE1524078}"
-	RootNamespace="postest"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVCE.lib wsock32.lib atlsd.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../../depkgs-win32/pthreads/debug"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="pthreadVCE.lib wsock32.lib atls.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="../../../../../depkgs-win32/pthreads/debug"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath=".\postest.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/stored/service.cpp b/src/win32/stored/service.cpp
deleted file mode 100644
index e108c65..0000000
--- a/src/win32/stored/service.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- */
-
-#include "who.h"
-#include "../libwin32/service.cpp"
diff --git a/src/win32/stored/storelib/storelib.vcproj b/src/win32/stored/storelib/storelib.vcproj
deleted file mode 100644
index d33e4ea..0000000
--- a/src/win32/stored/storelib/storelib.vcproj
+++ /dev/null
@@ -1,827 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="storelib"
-	ProjectGUID="{CAD30B43-D93B-47D5-9161-6A3E9BADCC1D}"
-	RootNamespace="storelib"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Debug/baculasd.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../../../../depkgs-msvc/include;../../..;../../../stored"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;_USE_32BIT_TIME_T;USING_DLL;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Debug/baculasd.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			UseOfATL="1"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TypeLibraryName=".\Release/baculasd.tlb"
-				HeaderFileName=""
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../compat;../../../../../depkgs-msvc/include;../../..;../../../stored"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;WIN32_VSS;_WIN32_WINNT=0x0501;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-				AdditionalIncludeDirectories=""
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile=".\Release/baculasd.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\stored\acquire.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\ansi_label.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\append.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\askdir.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\authenticate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\autochanger.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\block.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\butil.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\dev.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\device.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\dircmd.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\dvd.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\ebcdic.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\fd_cmds.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\job.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\label.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\mac.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\match_bsr.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\mount.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\mtops.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\$(InputName)1.obj"
-						XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\parse_bsr.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\pythonsd.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\read.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\read_record.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\record.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\reserve.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\scan.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\spool.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\stored_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\wait.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\..\stored\block.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\bsr.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\dev.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\protos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\record.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\reserve.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\stored.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\stored\stored_conf.h"
-				>
-			</File>
-			<File
-				RelativePath=".\winservice.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/stored/trayMonitor.cpp b/src/win32/stored/trayMonitor.cpp
deleted file mode 100644
index 3ccdc1e..0000000
--- a/src/win32/stored/trayMonitor.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- */
-
-#include "who.h"
-#include "../libwin32/trayMonitor.cpp"
diff --git a/src/win32/stored/who.h b/src/win32/stored/who.h
deleted file mode 100644
index 3600320..0000000
--- a/src/win32/stored/who.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2007-2007 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, which is 
-   listed 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.
-*/
-/*
- * Kern Sibbald, August 2007
- *
- * Version $Id$
- *
- * This file is pulled in by certain generic routines in libwin32
- *   to define the names of the daemon that is being built.
- */
-
-#define APP_NAME "Bacula-sd"
-#define LC_APP_NAME "bacula-sd"
-#define APP_DESC "Bacula Storage Service"
-
-#define terminate_app(x) terminate_stored(x)
-extern void terminate_stored(int sig);
-
-#define VSSInit()
diff --git a/src/win32/tools/Makefile b/src/win32/tools/Makefile
deleted file mode 100644
index a575712..0000000
--- a/src/win32/tools/Makefile
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-include ../Makefile.inc
-
-INCLUDES = \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_ZLIB) \
-	$(INCLUDE_OPENSSL) \
-	$(INCLUDE_ICONS)
-
-DEFINES = \
-	-DUSING_DLL \
-	-DUSING_CATS \
-	$(HAVES)
-
-LDFLAGS:=$(LDFLAGS) -lstdc++
-
-vpath %.c $(MAINDIR)/src/tools $(MAINDIR)/src/dird
-vpath %.cpp $(MAINDIR)/src/tools $(MAINDIR)/src/dird
-
-##########################################################################
-
-DIRCONF_OBJS = \
-	$(OBJDIR)/dird_conf.o \
-	$(OBJDIR)/run_conf.o \
-	$(OBJDIR)/inc_conf.o
-
-ALL_OBJS = \
-	$(DIRCONF_OBJS) \
-	$(OBJDIR)/bsmtp.o \
-	$(OBJDIR)/dbcheck.o \
-	$(OBJDIR)/scsilist.o \
-	$(OBJDIR)/ScsiDeviceList.o \
-	$(OBJDIR)/fstype.o \
-	$(OBJDIR)/drivetype.o \
-	$(OBJDIR)/testfind.o \
-	$(OBJDIR)/testls.o \
-	$(OBJDIR)/bregex.o \
-	$(OBJDIR)/bwild.o
-
-##########################################################################
-
-# Targets
-
-.PHONY: all clean bsmtp
-
-all: \
-	$(BINDIR)/bsmtp.exe $(BINDIR)/dbcheck.exe  $(BINDIR)/scsilist.exe \
-	$(BINDIR)/drivetype.exe $(BINDIR)/fstype.exe \
-	$(BINDIR)/testfind.exe $(BINDIR)/testls.exe \
-	$(BINDIR)/bregex.exe $(BINDIR)/bwild.exe
-
-bsmtp: \
-	$(BINDIR)/bsmtp.exe
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(call clean_obj,$(ALL_OBJS))
-	$(call clean_exe,$(BINDIR)/bsmtp.exe)
-	$(call clean_exe,$(BINDIR)/dbcheck.exe)
-	$(call clean_exe,$(BINDIR)/scsilist.exe)
-	$(call clean_exe,$(BINDIR)/drivetype.exe)
-	$(call clean_exe,$(BINDIR)/fstype.exe)
-	$(call clean_exe,$(BINDIR)/testfind.exe)
-	$(call clean_exe,$(BINDIR)/testls.exe)
-	$(call clean_exe,$(BINDIR)/bregex.exe)
-	$(call clean_exe,$(BINDIR)/bwild.exe)
-	$(ECHO_CMD)rm -rf $(OBJDIRS)
-
-#
-# Rules
-#
-
-$(BINDIR)/bsmtp.exe: $(OBJDIR)/bsmtp.o $(LIBS_BACULA)
-	$(call link_conapp,-lws2_32)
-
-$(BINDIR)/dbcheck.exe: $(OBJDIR)/dbcheck.o $(DIRCONF_OBJS) $(LIBS_BACULA) $(LIBS_CATS)
-	$(call link_conapp,)
-
-$(BINDIR)/scsilist.exe: $(OBJDIR)/scsilist.o $(OBJDIR)/ScsiDeviceList.o $(LIBS_BACULA)
-	$(call link_conapp,)
-
-$(BINDIR)/drivetype.exe: $(OBJDIR)/drivetype.o $(LIBS_BACULA)
-	$(call link_conapp,)
-
-$(BINDIR)/fstype.exe: $(OBJDIR)/fstype.o $(LIBS_BACULA)
-	$(call link_conapp,)
-
-$(BINDIR)/testfind.exe: $(OBJDIR)/testfind.o $(DIRCONF_OBJS) $(LIBS_BACULA)
-	$(call link_conapp,)
-
-$(BINDIR)/testls.exe: $(OBJDIR)/testls.o $(LIBS_BACULA)
-	$(call link_conapp,)
-
-$(BINDIR)/bregex.exe: $(OBJDIR)/bregex.o $(LIBS_BACULA)
-	$(call link_conapp,)
-
-$(BINDIR)/bwild.exe: $(OBJDIR)/bwild.o $(LIBS_BACULA)
-	$(call link_conapp,)
-
-include ../Makefile.rules
diff --git a/src/win32/tools/ScsiDeviceList.cpp b/src/win32/tools/ScsiDeviceList.cpp
deleted file mode 100644
index fcaecba..0000000
--- a/src/win32/tools/ScsiDeviceList.cpp
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * ScsiDeviceList.cpp - Class which provides information on installed devices.
- *
- * Author: Robert Nelson, August, 2006 <robertn at the-nelsons.org>
- *
- * Version $Id$
- *
- * This file was contributed to the Bacula project by Robert Nelson.
- *
- * Robert Nelson has been granted a perpetual, worldwide,
- * non-exclusive, no-charge, royalty-free, irrevocable copyright
- * license to reproduce, prepare derivative works of, publicly
- * display, publicly perform, sublicense, and distribute the original
- * work contributed by Robert Nelson to the Bacula project in source 
- * or object form.
- *
- * If you wish to license contributions from Robert Nelson
- * under an alternate open source license please contact
- * Robert Nelson <robertn at the-nelsons.org>.
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2006-2006 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.
-*/
-
-#if defined(_MSC_VER) && defined(_DEBUG)
-#include <afx.h>
-#else
-#include <windows.h>
-#endif
-
-#include <stdio.h>
-#include <tchar.h>
-
-#include "ScsiDeviceList.h"
-
-#if defined(_MSC_VER) && defined(_DEBUG)
-#define  new   DEBUG_NEW
-#endif
-
-TCHAR    CScsiDeviceList::c_ScsiPath[] = _T("HARDWARE\\DEVICEMAP\\Scsi");
-
-LPCTSTR  CScsiDeviceList::c_lpszFormatList[] =
-{
-   _T("Logical Unit Id %d"),
-   _T("Target Id %d"),
-   _T("Scsi Bus %d"),
-   _T("Scsi Port %d")
-};
-
-LPCTSTR  CScsiDeviceListEntry::c_DeviceTypes[] =
-{
-   _T("Unknown"),
-   _T("CDRom"),
-   _T("Changer"),
-   _T("Disk"),
-   _T("Tape")
-};
-
-CScsiDeviceListEntry::CScsiDeviceListEntry(const CScsiDeviceListEntry &other)
-{
-   m_eDeviceType = other.m_eDeviceType;
-
-   m_lpszIdentifier = other.m_lpszIdentifier != NULL ? _tcsdup(other.m_lpszIdentifier) : NULL;
-
-   m_lpszDeviceName = other.m_lpszDeviceName != NULL ? _tcsdup(other.m_lpszDeviceName) : NULL;
-
-   m_dwDeviceId = other.m_dwDeviceId;
-   _tcscpy(m_szDevicePath, other.m_szDevicePath);
-}
-
-CScsiDeviceListEntry::CScsiDeviceListEntry(void)
-{
-   m_eDeviceType = Unknown;
-   m_lpszIdentifier = NULL;
-   m_lpszDeviceName = NULL;
-   m_dwDeviceId = 0;
-   m_szDevicePath[0] = _T('\0');
-}
-
-CScsiDeviceListEntry::~CScsiDeviceListEntry(void)
-{
-   if (m_lpszIdentifier != NULL)
-   {
-      free(m_lpszIdentifier);
-   }
-
-   if (m_lpszDeviceName != NULL)
-   {
-      free(m_lpszDeviceName);
-   }
-}
-
-bool
-CScsiDeviceList::Populate()
-{
-   this->clear();
-
-   HKEY  hScsiKey;
-
-   _tcscpy(m_szLastKey, _T("\\Scsi"));
-   m_dwLastKeyLength = 5;
-
-   m_lLastError = RegOpenKeyEx(  HKEY_LOCAL_MACHINE, 
-                                 c_ScsiPath, 
-                                 0, 
-                                 KEY_READ, 
-                                 &hScsiKey);
-
-   if (m_lLastError != ERROR_SUCCESS) {
-      _tcscpy(m_szLastOperation, _T("Opening key "));
-      _tcscpy(m_szLastKey, c_ScsiPath);
-      return false;
-   }
-
-   if (!ProcessKey(hScsiKey, c_MaxKeyDepth - 1, 0)) {
-      return false;
-   }
-
-#if defined(_DEBUG)
-   _fputtc(_T('\n'), stderr);
-#endif
-
-   return true;
-}
-
-bool
-CScsiDeviceList::ProcessKey(HKEY hKey, int iLevel, DWORD dwDeviceId)
-{
-#if defined(_DEBUG)
-   switch (iLevel)
-   {
-   case 3:
-      _ftprintf(  stderr, 
-                  _T("%-64s\n"), 
-                  &m_szLastKey[1]);
-      break;
-
-   case 2:
-      _ftprintf(  stderr, 
-                  _T("%-64s%d\n"), 
-                  &m_szLastKey[1], 
-                  dwDeviceId & 0xFF);
-      break;
-
-   case 1:
-      _ftprintf(  stderr, 
-                  _T("%-64s%d:%d\n"), 
-                  &m_szLastKey[1], 
-                  (dwDeviceId >>  8) & 0xFF,
-                   dwDeviceId        & 0xFF);
-      break;
-
-   case 0:
-      _ftprintf(  stderr, 
-                  _T("%-64s%d:%d:%d\n"), 
-                  &m_szLastKey[1], 
-                  (dwDeviceId >>  16) & 0xFF,
-                  (dwDeviceId >>  8) & 0xFF,
-                   dwDeviceId        & 0xFF);
-      break;
-   }
-#endif
-
-   for (int idxSubkey = 0; ; idxSubkey++) {
-
-      TCHAR szSubkeyName[c_MaxSubkeyLength + 1];
-      DWORD dwLength;
-
-      dwLength = sizeof(szSubkeyName);
-
-      m_lLastError = RegEnumKeyEx(  hKey, 
-                                    idxSubkey, 
-                                    szSubkeyName, 
-                                    &dwLength, 
-                                    NULL, 
-                                    NULL, 
-                                    NULL, 
-                                    NULL);
-
-      if (m_lLastError == ERROR_NO_MORE_ITEMS) {
-         break;
-      } else  if (m_lLastError == ERROR_MORE_DATA) {
-#if defined(_DEBUG)
-         _tcscpy(m_szLastOperation, _T("Enumerating subkeys of "));
-         PrintLastError();
-#endif
-         // Subkey name is too long
-         continue;
-      } else if (m_lLastError != ERROR_SUCCESS) {
-         // Unexpected Error
-         _tcscpy(m_szLastOperation, _T("Enumerating subkeys of "));
-         return false;
-      }
-
-      int   iValue;
-
-      if (_stscanf(szSubkeyName, c_lpszFormatList[iLevel], &iValue) != 1) {
-         // Ignore this subkey, it is probably Initiator Id n
-         continue;
-      }
-
-      m_szLastKey[m_dwLastKeyLength++] = _T('\\');
-
-      DWORD dwSubkeyLength = (DWORD)_tcslen(szSubkeyName);
-      memcpy(&m_szLastKey[m_dwLastKeyLength], szSubkeyName, (dwSubkeyLength + 1) * sizeof(TCHAR));
-      m_dwLastKeyLength += dwSubkeyLength;
-
-      HKEY  hSubkey;
-
-      m_lLastError = RegOpenKeyEx(hKey, szSubkeyName, 0, KEY_READ, &hSubkey);
-
-      if (m_lLastError != ERROR_SUCCESS) {
-         _tcscpy(m_szLastOperation, _T("Opening key "));
-         return false;
-      }
-
-      if (iLevel == 0) {
-#if defined(_DEBUG)
-         _ftprintf(  stderr, 
-                     _T("%-64s%d:%d:%d:%d\n"), 
-                     &m_szLastKey[1], 
-                     (dwDeviceId >> 16) & 0xFF,
-                     (dwDeviceId >>  8) & 0xFF,
-                      dwDeviceId        & 0xFF,
-                      iValue);
-#endif
-
-         ProcessValues(hSubkey, (dwDeviceId << 8) | iValue);
-      } else {
-         if (!ProcessKey(hSubkey, iLevel - 1, (dwDeviceId << 8) | iValue)) {
-            return false;
-         }
-      }
-
-      m_dwLastKeyLength -= dwSubkeyLength;
-      m_dwLastKeyLength--;
-      m_szLastKey[m_dwLastKeyLength] = _T('\0');
-   }
-
-   return true;
-}
-
-bool
-CScsiDeviceList::ProcessValues(HKEY hKey, DWORD dwDeviceId)
-{
-   CScsiDeviceListEntry    EntryTemplate;
-   DWORD                   dwType;
-   DWORD                   dwSize;
-   TCHAR                   szValue[c_MaxValueLength + 1];
-
-   this->push_back(EntryTemplate);
-   CScsiDeviceListEntry &  entry = this->back();
-
-   dwSize = sizeof(szValue);
-
-   m_lLastError = RegQueryValueEx(  hKey, 
-                                    _T("Identifier"), 
-                                    NULL, 
-                                    &dwType, 
-                                    (LPBYTE)&szValue[0], 
-                                    &dwSize);
-
-   if (m_lLastError == ERROR_SUCCESS) {
-      entry.m_lpszIdentifier = _tcsdup(szValue);
-   } else {
-#if defined(_DEBUG)
-      _tcscpy(m_szLastOperation, _T("Reading value "));
-      PrintLastError(_T("Identifier"));
-#endif
-   }
-
-   dwSize = sizeof(szValue);
-
-   m_lLastError = RegQueryValueEx(  hKey, 
-                                    _T("DeviceName"), 
-                                    NULL, 
-                                    &dwType, 
-                                    (LPBYTE)&szValue[0], 
-                                    &dwSize);
-
-   if (m_lLastError == ERROR_SUCCESS) {
-      entry.m_lpszDeviceName = _tcsdup(szValue);
-   } else {
-#if defined(_DEBUG)
-      _tcscpy(m_szLastOperation, _T("Reading value "));
-      PrintLastError(_T("DeviceName"));
-#endif
-   }
-
-   dwSize = sizeof(szValue);
-
-   m_lLastError = RegQueryValueEx(  hKey, 
-                                    _T("Type"), 
-                                    NULL, 
-                                    &dwType, 
-                                    (LPBYTE)&szValue[0], 
-                                    &dwSize);
-
-   if (m_lLastError == ERROR_SUCCESS) {
-      if (_tcscmp(_T("CdRomPeripheral"), szValue) == 0) {
-         entry.m_eDeviceType = CScsiDeviceListEntry::CDRom;
-      } else if (_tcscmp(_T("DiskPeripheral"), szValue) == 0) {
-         entry.m_eDeviceType = CScsiDeviceListEntry::Disk;
-      } else if (_tcscmp(_T("MediumChangerPeripheral"), szValue) == 0) {
-         entry.m_eDeviceType = CScsiDeviceListEntry::Changer;
-      } else if (_tcscmp(_T("TapePeripheral"), szValue) == 0) {
-         entry.m_eDeviceType = CScsiDeviceListEntry::Tape;
-      }
-   } else {
-#if defined(_DEBUG)
-      _tcscpy(m_szLastOperation, _T("Reading value "));
-      PrintLastError(_T("Type"));
-#endif
-   }
-
-   entry.m_dwDeviceId = dwDeviceId;
-
-   return true;
-}
-
-void
-CScsiDeviceList::PrintLastError(LPTSTR lpszName)
-{
-   LPTSTR   lpszMessage = NULL;
-
-   _fputts(_T("Error: "), stderr);
-   _fputts(m_szLastOperation, stderr);
-   _fputtc(_T('"'), stderr);
-   _fputts(lpszName != NULL ? lpszName : m_szLastKey, stderr);
-   _fputts(_T("\" - "), stderr);
-
-   FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, 
-                  NULL, m_lLastError, 0, (LPTSTR)&lpszMessage, 0, NULL);
-
-   if (lpszMessage != NULL) {
-      _fputts(lpszMessage, stderr);
-      LocalFree(lpszMessage);
-   }
-}
diff --git a/src/win32/tools/ScsiDeviceList.h b/src/win32/tools/ScsiDeviceList.h
deleted file mode 100644
index ce88981..0000000
--- a/src/win32/tools/ScsiDeviceList.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * ScsiDeviceList.cpp - Class which provides information on installed devices.
- *
- * Author: Robert Nelson, August, 2006 <robertn at the-nelsons.org>
- *
- * Version $Id$
- *
- * This file was contributed to the Bacula project by Robert Nelson.
- *
- * Robert Nelson has been granted a perpetual, worldwide,
- * non-exclusive, no-charge, royalty-free, irrevocable copyright
- * license to reproduce, prepare derivative works of, publicly
- * display, publicly perform, sublicense, and distribute the original
- * work contributed by Robert Nelson to the Bacula project in source 
- * or object form.
- *
- * If you wish to license contributions from Robert Nelson
- * under an alternate open source license please contact
- * Robert Nelson <robertn at the-nelsons.org>.
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2006-2006 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.
-*/
-
-#pragma once
-#include "vector"
-
-class CScsiDeviceListEntry
-{
-   friend class CScsiDeviceList;
-
-   static LPCTSTR    c_DeviceTypes[];
-   static const int  c_MaxDevicePathLength = 16;      // :255:255:255:255
-
-public:
-   enum DeviceType { Unknown, CDRom, Changer, Disk, Tape };
-
-   CScsiDeviceListEntry(void);
-   CScsiDeviceListEntry(const CScsiDeviceListEntry &other);
-   ~CScsiDeviceListEntry(void);
-
-   inline CScsiDeviceListEntry &operator =(const CScsiDeviceListEntry &other);
-
-   inline DeviceType GetType() { return m_eDeviceType; }
-   inline LPCTSTR    GetTypeName() { return c_DeviceTypes[m_eDeviceType]; }
-   inline LPCTSTR    GetIdentifier() { return m_lpszIdentifier != NULL ? m_lpszIdentifier : _T(""); }
-   inline LPCTSTR    GetDeviceName() { return m_lpszDeviceName != NULL ? m_lpszDeviceName : _T(""); }
-   inline LPCTSTR    GetDevicePath();
-
-private:
-   DeviceType  m_eDeviceType;
-   LPTSTR      m_lpszIdentifier;
-   LPTSTR      m_lpszDeviceName;
-   DWORD       m_dwDeviceId;
-   TCHAR       m_szDevicePath[c_MaxDevicePathLength + 1];
-};
-
-CScsiDeviceListEntry &
-CScsiDeviceListEntry::operator =(const CScsiDeviceListEntry &other)
-{
-   m_eDeviceType = other.m_eDeviceType;
-
-   if (m_lpszIdentifier != NULL)
-   {
-      free(m_lpszIdentifier);
-   }
-   m_lpszIdentifier = other.m_lpszIdentifier != NULL ? _tcsdup(other.m_lpszIdentifier) : NULL;
-
-   if (m_lpszDeviceName != NULL)
-   {
-      free(m_lpszDeviceName);
-   }
-   m_lpszDeviceName = other.m_lpszDeviceName != NULL ? _tcsdup(other.m_lpszDeviceName) : NULL;
-
-   m_dwDeviceId = other.m_dwDeviceId;
-   _tcscpy(m_szDevicePath, other.m_szDevicePath);
-
-   return *this;
-}
-
-LPCTSTR
-CScsiDeviceListEntry::GetDevicePath()
-{
-   if (m_szDevicePath[0] == _T('\0'))
-   {
-      _sntprintf( m_szDevicePath, c_MaxDevicePathLength, 
-                  _T("%d:%d:%d:%d"), 
-                  (m_dwDeviceId >> 24) & 0xFF,
-                  (m_dwDeviceId >> 16) & 0xFF,
-                  (m_dwDeviceId >>  8) & 0xFF,
-                  m_dwDeviceId        & 0xFF);
-      m_szDevicePath[c_MaxDevicePathLength] = _T('\0');
-   }
-
-   return m_szDevicePath;
-}
-
-class CScsiDeviceList :
-   public std::vector<CScsiDeviceListEntry>
-{
-   static TCHAR         c_ScsiPath[];
-   static LPCTSTR       c_lpszFormatList[];
-
-// \\Scsi\\Scsi Port 255\\Scsi Bus 255\\Target Id 255\\Logical Unit Id 255
-// 1 4   1 13           1 12          1 13           1 19 = 66
-   static const int     c_MaxKeyPathLength = 66;
-
-// Logical Unit Id 255
-   static const int     c_MaxSubkeyLength = 19;
-
-// Identifier = 28, DeviceName = 10+, Type = 23
-   static const int     c_MaxValueLength = 30;
-
-// Adapter \\ Bus \\ Target \\ LUN
-   static const int     c_MaxKeyDepth = 4;
-
-public:
-   inline   CScsiDeviceList(void);
-   inline   ~CScsiDeviceList(void);
-
-   bool     Populate();
-   void     PrintLastError(LPTSTR lpszName = NULL);
-
-protected:
-   bool     ProcessKey(HKEY hKey, int iLevel, DWORD dwDeviceId);
-   bool     ProcessValues(HKEY hKey, DWORD dwDeviceId);
-
-private:
-   TCHAR    m_szLastOperation[80 + 1]; // Max length "Enumerating subkeys of "
-   TCHAR    m_szLastKey[c_MaxKeyPathLength + 1];
-   DWORD    m_dwLastKeyLength;
-   LONG     m_lLastError;
-};
-
-CScsiDeviceList::CScsiDeviceList(void)
-{
-   m_szLastOperation[0] = _T('\0');
-   m_szLastKey[0] = _T('\0');
-   m_dwLastKeyLength = 0;
-   m_lLastError = 0;
-}
-
-CScsiDeviceList::~CScsiDeviceList(void)
-{
-}
diff --git a/src/win32/tools/bsmtp/bsmtp.vcproj b/src/win32/tools/bsmtp/bsmtp.vcproj
deleted file mode 100644
index 97fb96b..0000000
--- a/src/win32/tools/bsmtp/bsmtp.vcproj
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="bsmtp"
-	ProjectGUID="{AB67F297-8491-4515-8E52-BFF5340EC242}"
-	RootNamespace="bsmtp"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="..\..\debug"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ws2_32.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="..\..\release"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\tools\bsmtp.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/tools/dbcheck/dbcheck.vcproj b/src/win32/tools/dbcheck/dbcheck.vcproj
deleted file mode 100644
index d847d39..0000000
--- a/src/win32/tools/dbcheck/dbcheck.vcproj
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="dbcheck"
-	ProjectGUID="{85696E20-777A-41F6-BC00-2E7AB375B171}"
-	RootNamespace="dbcheck"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="bacula_cats.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="..\..\debug"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../compat;../../..;../../stored;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="bacula_cats.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="..\..\release"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\tools\dbcheck.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\dird\dird_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\dird\inc_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\dird\run_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\..\dird\dird_conf.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/tools/drivetype/drivetype.vcproj b/src/win32/tools/drivetype/drivetype.vcproj
deleted file mode 100644
index cbd8568..0000000
--- a/src/win32/tools/drivetype/drivetype.vcproj
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="drivetype"
-	ProjectGUID="{E5BC5B2E-976D-4DED-AA07-5DD52BF2163F}"
-	RootNamespace="drivetype"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;WIN32_VSS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atlsd.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;WIN32_VSS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atls.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\tools\drivetype.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/tools/fstype/fstype.vcproj b/src/win32/tools/fstype/fstype.vcproj
deleted file mode 100644
index 6a52b0f..0000000
--- a/src/win32/tools/fstype/fstype.vcproj
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="fstype"
-	ProjectGUID="{AAF33ADD-A4F9-4BCA-B7F9-0C35C843CC7E}"
-	RootNamespace="fstype"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;WIN32_VSS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atlsd.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;WIN32_VSS;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atls.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\tools\fstype.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/tools/scsilist.cpp b/src/win32/tools/scsilist.cpp
deleted file mode 100644
index 7b9f3ec..0000000
--- a/src/win32/tools/scsilist.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * scsilist.cpp - Outputs the contents of a ScsiDeviceList.
- *
- * Author: Robert Nelson, August, 2006 <robertn at the-nelsons.org>
- *
- * Version $Id$
- *
- * This file was contributed to the Bacula project by Robert Nelson.
- *
- * Robert Nelson has been granted a perpetual, worldwide,
- * non-exclusive, no-charge, royalty-free, irrevocable copyright
- * license to reproduce, prepare derivative works of, publicly
- * display, publicly perform, sublicense, and distribute the original
- * work contributed by Robert Nelson to the Bacula project in source 
- * or object form.
- *
- * If you wish to license contributions from Robert Nelson
- * under an alternate open source license please contact
- * Robert Nelson <robertn at the-nelsons.org>.
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2006-2006 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.
-*/
-
-#if defined(_MSC_VER) && defined(_DEBUG)
-#include <afx.h>
-#else
-#include <windows.h>
-#endif
-
-#include <stdio.h>
-#include <tchar.h>
-#include <conio.h>
-
-#include "ScsiDeviceList.h"
-
-#if defined(_MSC_VER) && defined(_DEBUG)
-#define  new   DEBUG_NEW
-#endif
-
-int _tmain(int argc, _TCHAR* argv[])
-{
-#if defined(_MSC_VER) && defined(_DEBUG)
-   CMemoryState InitialMemState, FinalMemState, DiffMemState;
-
-   InitialMemState.Checkpoint();
-
-   {
-#endif
-
-   CScsiDeviceList   DeviceList;
-
-   if (!DeviceList.Populate())
-   {
-      DeviceList.PrintLastError();
-      return 1;
-   }
-
-#define  HEADING \
-   _T("Device                        Type     Physical     Name\n") \
-   _T("======                        ====     ========     ====\n")
-
-   _fputts(HEADING, stdout);
-
-   for (DWORD index = 0; index < DeviceList.size(); index++) {
-
-      CScsiDeviceListEntry &entry = DeviceList[index];
-
-      if (entry.GetType() != CScsiDeviceListEntry::Disk) {
-
-         _tprintf(_T("%-28s  %-7s  %-11s  %-27s\n"), 
-                  entry.GetIdentifier(),
-                  entry.GetTypeName(),
-                  entry.GetDevicePath(),
-                  entry.GetDeviceName());
-      }
-   }
-
-#if defined(_MSC_VER) && defined(_DEBUG)
-   }
-
-   InitialMemState.DumpAllObjectsSince();
-
-   FinalMemState.Checkpoint();
-   DiffMemState.Difference(InitialMemState, FinalMemState);
-   DiffMemState.DumpStatistics();
-#endif
-
-   if (argc > 1 && _tcsnicmp(argv[1], _T("/pause"), sizeof(_T("/pause")) - sizeof(TCHAR)) == 0) {
-      _fputts(_T("\nPress any key to continue\n"), stderr);
-      _getch();
-   }
-
-   return 0;
-}
diff --git a/src/win32/tools/scsilist/scsilist.vcproj b/src/win32/tools/scsilist/scsilist.vcproj
deleted file mode 100644
index 3afa5ca..0000000
--- a/src/win32/tools/scsilist/scsilist.vcproj
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="scsilist"
-	ProjectGUID="{56D8C233-610E-4EE4-A73A-72CEF1C6A33A}"
-	RootNamespace="scsilist"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WINVER=0x0400;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="4"
-				Detect64BitPortabilityProblems="true"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="0"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfMFC="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				PreprocessorDefinitions="WINVER=0x0400;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				Detect64BitPortabilityProblems="true"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="advapi32.lib"
-				LinkIncremental="0"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\ScsiDeviceList.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\scsilist.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\ScsiDeviceList.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/tools/testfind/testfind.vcproj b/src/win32/tools/testfind/testfind.vcproj
deleted file mode 100644
index e94d458..0000000
--- a/src/win32/tools/testfind/testfind.vcproj
+++ /dev/null
@@ -1,289 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="testfind"
-	ProjectGUID="{558838F9-D792-4F56-AAB2-99C03687C5FF}"
-	RootNamespace="testfind"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atlsd.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atls.lib"
-				LinkIncremental="0"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\dird\dird_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\dird\inc_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\dird\run_conf.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\tools\testfind.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/tools/testls/testls.vcproj b/src/win32/tools/testls/testls.vcproj
deleted file mode 100644
index a56303c..0000000
--- a/src/win32/tools/testls/testls.vcproj
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="testls"
-	ProjectGUID="{28FB58CE-AB8C-4C60-83DA-BC1BFCC59BFF}"
-	RootNamespace="testls"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="_DEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atlsd.lib"
-				LinkIncremental="0"
-				SuppressStartupBanner="true"
-				AdditionalLibraryDirectories="../../../../../depkgs-msvc/lib"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			UseOfATL="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="4"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="../../..;../../compat;../../../../../depkgs-msvc/include"
-				PreprocessorDefinitions="NDEBUG;_CONSOLE;HAVE_WIN32;USING_DLL;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				BrowseInformation="1"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="wsock32.lib pthreadVCE.lib atls.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories=""../../../../../depkgs-msvc/lib""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\..\tools\testls.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						CompileAs="2"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/win32_installer/ConfigPage1.nsh b/src/win32/win32_installer/ConfigPage1.nsh
deleted file mode 100644
index 2a16fb5..0000000
--- a/src/win32/win32_installer/ConfigPage1.nsh
+++ /dev/null
@@ -1,294 +0,0 @@
-Function EnterConfigPage1
-  ${If} $AutomaticInstall = 1
-    Abort
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsFileAndStorage}
-
-  ${If} $R0 = 0
-    Abort
-  ${EndIf}
-
-  FileOpen $R5 "$PLUGINSDIR\ConfigPage1.ini" w
-
-  StrCpy $R6 1  ; Field Number
-  StrCpy $R7 0  ; Top
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    IntOp $R8 $R7 + 52
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Client"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 12
-
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigClientName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=158$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Port"$\r$\nLeft=172$\r$\nTop=$R7$\r$\nRight=188$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigClientPort$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=218$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Max Jobs"$\r$\nLeft=238$\r$\nTop=$R7$\r$\nRight=270$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigClientMaxJobs$\r$\nLeft=274$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigClientPassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 14
-
-    IntOp $R8 $R7 + 10
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigClientInstallService$\r$\nText="Install as service"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=118$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigClientStartService$\r$\nText="Start after install"$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=260$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-  ${Endif}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    IntOp $R8 $R7 + 52
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Storage"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 12
-    
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigStorageName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=158$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Port"$\r$\nLeft=172$\r$\nTop=$R7$\r$\nRight=188$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigStoragePort$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=218$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Max Jobs"$\r$\nLeft=238$\r$\nTop=$R7$\r$\nRight=270$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigStorageMaxJobs$\r$\nLeft=274$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigStoragePassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 14
-
-    IntOp $R8 $R7 + 10
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigStorageInstallService$\r$\nText="Install as service"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=118$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigStorageStartService$\r$\nText="Start after install"$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=260$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-  ${Endif}
-
-  IntOp $R6 $R6 - 1
-
-  FileWrite $R5 "[Settings]$\r$\nNumFields=$R6$\r$\n"
-
-  FileClose $R5
-
-  !insertmacro MUI_HEADER_TEXT "$(TITLE_ConfigPage1)" "$(SUBTITLE_ConfigPage1)"
-  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ConfigPage1.ini"
-  Pop $HDLG ;HWND of dialog
-
-  ; Initialize Controls
-
-  StrCpy $R6 1  ; Field Number
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 2
-
-    ; Client Name
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Client Port Number
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 5 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Max Jobs
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 3 0
-
-    IntOp $R6 $R6 + 5
-  ${Endif}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 2
-
-    ; Storage Name
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Storage Port Number
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 5 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Max Jobs
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 3 0
-
-    IntOp $R6 $R6 + 5
-  ${Endif}
-
-  !insertmacro MUI_INSTALLOPTIONS_SHOW
-
-  ; Process results
-
-  StrCpy $R6 3
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientName "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientPort "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientMaxJobs "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientPassword "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientInstallService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientStartService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 3
-  ${Endif}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageName "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStoragePort "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageMaxJobs "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStoragePassword "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageInstallService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageStartService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 3
-  ${Endif}
-FunctionEnd
-
-Function LeaveConfigPage1
-  StrCpy $R6 5
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1024
-    ${OrIf} $R0 > 65535
-      MessageBox MB_OK "Port must be between 1024 and 65535 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1
-    ${OrIf} $R0 > 99
-      MessageBox MB_OK "Max Jobs must be between 1 and 99 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 9
-  ${Endif}
-  
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1024
-    ${OrIf} $R0 > 65535
-      MessageBox MB_OK "Port must be between 1024 and 65535 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1
-    ${OrIf} $R0 > 99
-      MessageBox MB_OK "Max Jobs must be between 1 and 99 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 9
-  ${Endif}
-FunctionEnd
diff --git a/src/win32/win32_installer/ConfigPage2.nsh b/src/win32/win32_installer/ConfigPage2.nsh
deleted file mode 100644
index ed7c5f5..0000000
--- a/src/win32/win32_installer/ConfigPage2.nsh
+++ /dev/null
@@ -1,455 +0,0 @@
-Function EnterConfigPage2
-  IntOp $R0 $NewComponents & ${ComponentsRequiringUserConfig}
-
-  ${If} $R0 = 0
-    Abort
-  ${EndIf}
-
-  FileOpen $R5 "$PLUGINSDIR\ConfigPage2.ini" w
-
-  StrCpy $R6 1  ; Field Number
-  StrCpy $R7 0  ; Top
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    ${If} $AutomaticInstall = 1
-      IntOp $R8 $R7 + 54
-    ${Else}
-      IntOp $R8 $R7 + 92
-    ${EndIf}
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Director"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R8 $R7 + 54
-    ${Else}
-      IntOp $R8 $R7 + 26
-    ${EndIf}
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Enter Director Information"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-  ${EndIf}
-
-  IntOp $R6 $R6 + 1
-  IntOp $R7 $R7 + 12
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    ${If} "$ConfigDirectorName" == ""
-      StrCpy $ConfigDirectorName "$HostName-dir"
-    ${EndIf}
-    ${If} "$ConfigDirectorPassword" == ""
-      StrCpy $ConfigDirectorPassword "$LocalDirectorPassword"
-    ${EndIf}
-  ${Else}
-    ${If} "$ConfigDirectorName" == "$HostName-dir"
-      StrCpy $ConfigDirectorName ""
-    ${EndIf}
-    ${If} "$ConfigDirectorPassword" == "$LocalDirectorPassword"
-      StrCpy $ConfigDirectorPassword ""
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="DIR Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=60$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorName$\r$\nLeft=60$\r$\nTop=$R7$\r$\nRight=158$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-      ${If} $R0 <> 0
-        IntOp $R7 $R7 + 2
-        IntOp $R8 $R8 - 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="DIR Port"$\r$\nLeft=172$\r$\nTop=$R7$\r$\nRight=188$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-        IntOp $R7 $R7 - 2
-
-        IntOp $R8 $R8 + 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigDirectorPort$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=218$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-
-      IntOp $R0 $NewComponents & ${ComponentDirector}
-      ${If} $R0 <> 0
-        IntOp $R7 $R7 + 2
-        IntOp $R8 $R8 - 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Max Jobs"$\r$\nLeft=238$\r$\nTop=$R7$\r$\nRight=270$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-        IntOp $R7 $R7 - 2
-
-        IntOp $R8 $R8 + 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigDirectorMaxJobs$\r$\nLeft=274$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-    ${EndIf}
-
-    IntOp $R7 $R7 + 14
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-  ${If} $R0 <> 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R7 $R7 + 2
-      IntOp $R8 $R7 + 8
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="DIR Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=60$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-      IntOp $R8 $R8 + 2
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorPassword$\r$\nLeft=60$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 14
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    IntOp $R7 $R7 + 2
-    IntOp $R8 $R7 + 8
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Mail Server"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=48$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-    IntOp $R8 $R8 + 2
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorMailServer$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-    IntOp $R8 $R7 + 8
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Mail Address"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=48$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-    IntOp $R8 $R8 + 2
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorMailAddress$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-    IntOp $R8 $R7 + 8
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Database"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-    IntOp $R8 $R8 + 2
-
-    ${If} $ConfigDirectorDB = 0
-      ${If} $MySQLPath != ""
-        StrCpy $ConfigDirectorDB 1
-      ${ElseIf} $PostgreSQLPath != ""
-        StrCpy $ConfigDirectorDB 2
-      ${Else}
-        StrCpy $ConfigDirectorDB 3
-      ${EndIf}
-    ${EndIf}
-
-    ${If} $ConfigDirectorDB = 1
-      StrCpy $R9 1
-    ${Else}
-      StrCpy $R9 0
-    ${EndIf}
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="RadioButton"$\r$\nState=$R9$\r$\nText="MySQL"$\r$\nFlags="GROUP"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=90$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-
-    ${If} $ConfigDirectorDB = 2
-      StrCpy $R9 1
-    ${Else}
-      StrCpy $R9 0
-    ${EndIf}
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="RadioButton"$\r$\nState=$R9$\r$\nText="PostgreSQL"$\r$\nFlags="NOTABSTOP"$\r$\nLeft=94$\r$\nTop=$R7$\r$\nRight=146$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-
-    ${If} $ConfigDirectorDB = 3
-      StrCpy $R9 1
-    ${Else}
-      StrCpy $R9 0
-    ${EndIf}
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="RadioButton"$\r$\nState=$R9$\r$\nText="Sqlite"$\r$\nFlags="NOTABSTOP"$\r$\nLeft=150$\r$\nTop=$R7$\r$\nRight=182$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 12
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R8 $R7 + 10
-      FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigDirectorInstallService$\r$\nText="Install as service"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=118$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigDirectorStartService$\r$\nText="Start after install"$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=260$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 12
-    ${EndIf}
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R7 $R7 + 2
-      IntOp $R8 $R7 + 8
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="DIR Address"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=60$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-      IntOp $R8 $R8 + 2
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorAddress$\r$\nLeft=60$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 14
-      IntOp $R8 $R7 + 8
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R7 $R7 + 4
-
-  ${If} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsFileAndStorageAndDirector}
-    IntOp $R0 0 & 0
-    ${If} $R0 <> 0
-      IntOp $R8 $R7 + 42
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Monitor"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 12
-
-      IntOp $R8 $R7 + 8
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-
-      IntOp $R8 $R8 + 2
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigMonitorName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=150$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 16
-      IntOp $R8 $R7 + 8
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-      IntOp $R8 $R8 + 2
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigMonitorPassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 20
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R6 $R6 - 1
-  FileWrite $R5 "[Settings]$\r$\nNumFields=$R6$\r$\n"
-
-  FileClose $R5
-
-  IntOp $R0 $NewComponents & ${ComponentsFileAndStorage}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 1
-    !insertmacro MUI_HEADER_TEXT "$(TITLE_ConfigPage1)" "$(SUBTITLE_ConfigPage1)"
-  ${Else}
-    !insertmacro MUI_HEADER_TEXT "$(TITLE_ConfigPage2)" "$(SUBTITLE_ConfigPage2)"
-  ${EndIf}
-
-  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ConfigPage2.ini"
-  Pop $HDLG ;HWND of dialog
-
-  ; Initialize Controls
-  StrCpy $R6 2  ; Field Number
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 0
-    ; Name
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        ; Port Number
-        !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-        SendMessage $HCTL ${EM_LIMITTEXT} 5 0
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-
-      IntOp $R0 $NewComponents & ${ComponentDirector}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        ; Max Jobs
-        !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-        SendMessage $HCTL ${EM_LIMITTEXT} 3 0
-
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-  ${If} $R0 <> 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 9
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${EndIf}
-
-  ${If} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsFileAndStorageAndDirector}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-      !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-      SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${EndIf}
-
-  !insertmacro MUI_INSTALLOPTIONS_SHOW
-
-  ; Process results
-
-  StrCpy $R6 2
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorName "ConfigPage2.ini" "Field $R6" "State"
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorPort "ConfigPage2.ini" "Field $R6" "State"
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-
-      IntOp $R0 $NewComponents & ${ComponentDirector}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorMaxJobs "ConfigPage2.ini" "Field $R6" "State"
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-  ${If} $R0 <> 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorPassword "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorMailServer "ConfigPage2.ini" "Field $R6" "State"
-    IntOp $R6 $R6 + 2
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorMailAddress "ConfigPage2.ini" "Field $R6" "State"
-    IntOp $R6 $R6 + 2
-    !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ConfigPage2.ini" "Field $R6" "State"
-    ${If} $R5 = 1
-      StrCpy $ConfigDirectorDB 1
-    ${Endif}
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ConfigPage2.ini" "Field $R6" "State"
-    ${If} $R5 = 1
-      StrCpy $ConfigDirectorDB 2
-    ${Endif}
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ConfigPage2.ini" "Field $R6" "State"
-    ${If} $R5 = 1
-      StrCpy $ConfigDirectorDB 3
-    ${Endif}
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorInstallService "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorStartService "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorAddress "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${EndIf}
-
-  ${If} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsFileAndStorageAndDirector}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigMonitorName "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 2
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigMonitorPassword "ConfigPage2.ini" "Field $R6" "State"
-    ${EndIf}
-  ${EndIf}
-FunctionEnd
-
-Function LeaveConfigPage2
-  ${If} $AutomaticInstall = 0
-    StrCpy $R6 4
-
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage2.ini" "Field $R6" "State"
-      ${If} $R0 < 1024
-      ${OrIf} $R0 > 65535
-        MessageBox MB_OK "Port must be between 1024 and 65535 inclusive."
-        Abort
-      ${EndIf}
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-
-    IntOp $R0 $NewComponents & ${ComponentDirector}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage2.ini" "Field $R6" "State"
-      ${If} $R0 < 1
-      ${OrIf} $R0 > 99
-        MessageBox MB_OK "Max Jobs must be between 1 and 99 inclusive."
-        Abort
-      ${EndIf}
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${EndIf}
-FunctionEnd
diff --git a/src/win32/win32_installer/DumpLog.nsh b/src/win32/win32_installer/DumpLog.nsh
deleted file mode 100644
index c450044..0000000
--- a/src/win32/win32_installer/DumpLog.nsh
+++ /dev/null
@@ -1,46 +0,0 @@
-!define LVM_GETITEMCOUNT 0x1004
-!define LVM_GETITEMTEXT 0x102D
-
-Function DumpLog
-  Exch $5
-  Push $0
-  Push $1
-  Push $2
-  Push $3
-  Push $4
-  Push $6
-
-  FindWindow $0 "#32770" "" $HWNDPARENT
-  GetDlgItem $0 $0 1016
-  StrCmp $0 0 error
-  FileOpen $5 $5 "w"
-  StrCmp $5 0 error
-    SendMessage $0 ${LVM_GETITEMCOUNT} 0 0 $6
-    System::Alloc ${NSIS_MAX_STRLEN}
-    Pop $3
-    StrCpy $2 0
-    System::Call "*(i, i, i, i, i, i, i, i, i) i \
-      (0, 0, 0, 0, 0, r3, ${NSIS_MAX_STRLEN}) .r1"
-    loop: StrCmp $2 $6 done
-      System::Call "User32::SendMessageA(i, i, i, i) i \
-        ($0, ${LVM_GETITEMTEXT}, $2, r1)"
-      System::Call "*$3(&t${NSIS_MAX_STRLEN} .r4)"
-      FileWrite $5 "$4$\r$\n"
-      IntOp $2 $2 + 1
-      Goto loop
-    done:
-      FileClose $5
-      System::Free $1
-      System::Free $3
-      Goto exit
-  error:
-    MessageBox MB_OK error
-  exit:
-    Pop $6
-    Pop $4
-    Pop $3
-    Pop $2
-    Pop $1
-    Pop $0
-    Exch $5
-FunctionEnd
diff --git a/src/win32/win32_installer/InstallType.ini b/src/win32/win32_installer/InstallType.ini
deleted file mode 100644
index 73fb8d9..0000000
--- a/src/win32/win32_installer/InstallType.ini
+++ /dev/null
@@ -1,56 +0,0 @@
-;
-; Note: certain text in this file is overwritten by the code in
-;   InstallType.nsh
-;
-
-[Settings]
-NumFields=6
-
-[Field 1]
-Type=Label
-Text=This is a new installation.  Please choose the installation type.
-Left=0
-Right=300
-Top=0
-Bottom=28
-
-[Field 2]
-Type=GroupBox
-Text=Installation Type
-Left=0
-Right=300
-Top=32
-Bottom=136
-
-[Field 3]
-Type=RadioButton
-Text=Automatic
-State=1
-Left=6
-Right=52
-Top=44
-Bottom=54
-
-[Field 4]
-Type=RadioButton
-Text=Custom (not recommended)
-Left=6
-Right=252
-Top=90
-Bottom=100
-
-[Field 5]
-Type=Label
-Text=The software will be installed in the default directory "Program Files\\Bacula".  The configuration files will be generated using defaults applicable to most installations.
-Left=17
-Right=295
-Top=58
-Bottom=86
-
-[Field 6]
-Type=Label
-Text=You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work.
-Left=17
-Right=295
-Top=104
-Bottom=132
diff --git a/src/win32/win32_installer/InstallType.nsh b/src/win32/win32_installer/InstallType.nsh
deleted file mode 100644
index e4a9711..0000000
--- a/src/win32/win32_installer/InstallType.nsh
+++ /dev/null
@@ -1,93 +0,0 @@
-Function EnterInstallType
-  Push $R0
-  Push $R1
-  Push $R2
-
-  ; Check if this is an upgrade by looking for an uninstaller configured 
-  ; in the registry.
-  ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString"
-
-  ${If} "$R0" != ""
-    ; Check registry for new installer
-    ReadRegStr $R1 HKLM "Software\Bacula" "InstallLocation"
-    ${If} "$R1" != ""
-      ; New Installer 
-      StrCpy $OldInstallDir $R1
-      StrCpy $InstallType ${UpgradeInstall}
-
-      SetShellVarContext all
-
-      StrCpy $R1 "$APPDATA\Bacula"
-      StrCpy $R2 "$INSTDIR\Doc"
-
-      ReadRegDWORD $PreviousComponents HKLM "Software\Bacula" "Components"
-
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 1" "Text" "A previous installation has been found in $OldInstallDir.  Please choose the installation type for any additional components you select."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The configuration files for additional components will be generated using defaults applicable to most installations."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
-
-      ReadRegDWORD $ConfigDirectorDB HKLM Software\Bacula Database
-
-      ${If} $ConfigDirectorDB = 0
-        IntOp $R0 $PreviousComponents & ${ComponentDirector}
-        ${If} $R0 <> 0
-          StrCpy $ConfigDirectorDB 1
-        ${EndIf}
-      ${EndIf}
-    ${Else}
-      ; Processing Upgrade - Get Install Directory
-      ${StrRep} $R0 $R0 '"' ''
-      ${GetParent} $R0 $OldInstallDir
-
-      ; Old Installer 
-      StrCpy $InstallType ${MigrateInstall}
-      StrCpy $R1 "$OldInstallDir\bin"
-      StrCpy $R2 "$OldInstallDir\Doc"
-
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 1" "Text" "An old installation has been found in $OldInstallDir.  The Configuration will be migrated.  Please choose the installation type for any additional components you select."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The software will be installed in the default directory $\"C:\Program Files\Bacula$\".  The configuration files for additional components will be generated using defaults applicable to most installations."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
-    ${EndIf}
-  ${Else}
-    ; New Install
-    StrCpy $InstallType ${NewInstall}
-    WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The software will be installed in the default directory $\"C:\Program Files\Bacula$\".  The configuration files will be generated using defaults applicable to most installations."
-    WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
-  ${EndIf}
-
-  ${If} $InstallType <> ${NewInstall}
-  ${AndIf} $PreviousComponents = 0
-    ${If} ${FileExists} "$R1\bacula-fd.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentFile}
-    ${EndIf}
-    ${If} ${FileExists} "$R1\bconsole.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentTextConsole}
-    ${EndIf}
-    ${If} ${FileExists} "$R1\bat.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentBatConsole}
-    ${EndIf}
-    ${If} ${FileExists} "$R2\main.pdf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentPDFDocs}
-    ${EndIf}
-  ${EndIf}
-
-  !InsertMacro MUI_HEADER_TEXT "$(TITLE_InstallType)" "$(SUBTITLE_InstallType)"
-  !InsertMacro MUI_INSTALLOPTIONS_INITDIALOG "InstallType.ini"
-  Pop $HDLG ;HWND of dialog
-
-  !insertmacro MUI_INSTALLOPTIONS_SHOW
-
-  ; Process Results
-
-  !insertmacro MUI_INSTALLOPTIONS_READ $R0 "InstallType.ini" "Field 3" "State"
-
-  ${If} $R0 = 1
-    StrCpy $AutomaticInstall 1
-  ${Else}
-    StrCpy $AutomaticInstall 0
-  ${EndIf}
-
-  Pop $R2
-  Pop $R1
-  Pop $R0
-FunctionEnd
diff --git a/src/win32/win32_installer/Makefile b/src/win32/win32_installer/Makefile
deleted file mode 100644
index e41d5ba..0000000
--- a/src/win32/win32_installer/Makefile
+++ /dev/null
@@ -1,147 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-#
-
-include ../Makefile.inc
-
-VERSION := $(shell sed -ne 's/.*[ \t]VERSION[ \t][ \t]*"\(.*\)"/\1/p' < ../../version.h)
-
-DEFINES := \
-	-DVERSION=$(VERSION) \
-	-DOUT_DIR=..\\release32 \
-	-DSRC_DIR=release32 \
-	-DBUILD_TOOLS=MinGW32 \
-	-DWINVER=32 \
-	-DBUILD_BAT=$(BUILD_BAT)
-
-INSTALL_EXE := $(BUILDDIR)/release32/winbacula-$(VERSION).exe
-
-BACULABINARIES := \
-	bacula.dll \
-	exchange-fd.dll \
-	bacula-fd.exe \
-	bconsole.exe \
-	bsleep.exe \
-	bsmtp.exe \
-
-ifeq ($(bat),no)
-	BACULA_BINARIES=$(BACULABINARIES)
-	HELP=
-else
-	BACULA_BINARIES=$(BACULABINARIES) bat.exe bacula-tray-monitor.exe
-	HELP=help
-endif
-
-DEPKGS_BINARIES := \
-	libeay32.dll \
-	pthreadGCE.dll \
-	ssleay32.dll \
-	zlib1.dll \
-	openssl.exe \
-	sed.exe \
-	expr64.exe \
-	snooze.exe \
-	mkisofs.exe \
-	growisofs.exe \
-	QtCore4.dll \
-	QtGui4.dll \
-	libgcc_s_dw2-1.dll
-
-NONGCC_BINARIES :=
-
-NONGCC_LIBRARIES := 
-
-MINGW_BINARIES := \
-	mingwm10.dll
-
-SCRIPT_FILES := 
-
-CAT_FILES := 
-
-DIRD_FILES := 
-
-SSL_FILES := \
-	openssl.cnf
-
-DOC_FILES := \
-	docs/manuals/en/console/console.pdf \
-	docs/manuals/en/main/main.pdf \
-	docs/manuals/en/misc/misc.pdf \
-	docs/manuals/en/problems/problems.pdf \
-	docs/manuals/en/utility/utility.pdf
-
-##########################################################################
-
-# Targets
-
-.PHONY: all clean installer
-
-all:	      $(HELP) $(INSTALL_EXE)
-
-installer:    $(HELP) $(INSTALL_EXE)
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(CMD_ECHO)-rm -f $(INSTALL_EXE)
-	$(CMD_ECHO)-rm -rf release32
-
-help:
-	rm -rf release32/help
-	mkdir -p release32/help
-	cp -f $(BINDIR)/help/* release32/help/
-
-
-#
-# Rules
-#
-
-define Convert_Binary
-release32/$$(notdir $(1)): $(1)
-	$$(call checkdir,$$@)
-	$(ECHO_CMD)cp -f $$^ $$@ ; \
-	$(STAB2CV) $$@
-endef
-
-define Copy_Binary
-release32/$$(notdir $(1)): $(1)
-	$$(call checkdir,$$@)
-	$(ECHO_CMD)cp -f $$^ $$@
-endef
-
-define Copy_Docs
-release32/$(1): $(DOCDIR)/$(1)
-	$$(call checkdir,$$@)
-	$(ECHO_CMD)cp -f $$^ $$(dir $$@)
-endef
-
-$(foreach file,$(addprefix $(DEPKGS)/bin/, $(DEPKGS_BINARIES)),$(eval $(call Convert_Binary,$(file))))
-
-$(foreach file,$(addprefix $(DEPKGS)/bin/, $(NONGCC_BINARIES)),$(eval $(call Copy_Binary,$(file))))
-
-$(foreach file,$(addprefix $(DEPKGS)/lib/, $(NONGCC_LIBRARIES)),$(eval $(call Copy_Binary,$(file))))
-
-$(foreach file,$(addprefix $(BINDIR)/, $(BACULA_BINARIES)),$(eval $(call Convert_Binary,$(file))))
-
-$(foreach file,$(addprefix $(MINGW_DLLDIR)/, $(MINGW_BINARIES)),$(eval $(call Copy_Binary,$(file))))
-
-$(foreach file,$(addprefix $(DEPKGS)/ssl/, $(SSL_FILES)),$(eval $(call Copy_Binary,$(file))))
-
-$(foreach file,$(addprefix ../scripts/, $(SCRIPT_FILES)),$(eval $(call Copy_Binary,$(file))))
-
-$(foreach file,$(addprefix ../cats/, $(CAT_FILES)),$(eval $(call Copy_Binary,$(file))))
-
-$(foreach file,$(addprefix ../../dird/, $(DIRD_FILES)),$(eval $(call Copy_Binary,$(file))))
-
-$(foreach file,$(DOC_FILES),$(eval $(call Copy_Docs,$(file))))
-
-
-
-$(INSTALL_EXE): winbacula.nsi $(addprefix release32/,$(BACULA_BINARIES) $(SCRIPT_FILES) $(CAT_FILES) $(DEPKGS_BINARIES) $(NONGCC_BINARIES) $(NONGCC_LIBRARIES) $(MINGW_BINARIES) $(SSL_FILES) $(DIRD_FILES) $(DOC_FILES))
-	NSISDIR=$(NSIS_DIR) \
-	echo "$(NSIS_DIR)/makensis -V3 $(DEFINES) winbacula.nsi"
-	$(NSIS_DIR)/makensis -V3 $(DEFINES) winbacula.nsi
-
-include $(BUILDDIR)/Makefile.rules
diff --git a/src/win32/win32_installer/Readme.txt b/src/win32/win32_installer/Readme.txt
deleted file mode 100755
index 156788e..0000000
--- a/src/win32/win32_installer/Readme.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-Bacula - Windows Version Disclaimer
-===================================
-
-Please note, only the Win32 Client (File daemon) is supported, and the other
-components (Director, Storage daemon, their utilities) are not provided
-because they have not been ported.  If you want these components, either build
-them yourself or ask Bacula Systems about them.
-
-
-Bacula - Windows Version Notes
-==============================
-
-These notes highlight how the Windows version of Bacula differs from the 
-other versions.  It also provides any notes additional to the documentation.
-
-For detailed documentation on using, configuring and troubleshooting Bacula,
-please consult the installed documentation or the online documentation at
-http://www.bacula.org/?page=documentation.
-
-
-Start Menu Items
-----------------
-A number of menu items have been created in the Start menu under All Programs
-in the Bacula submenu.  They may be selected to edit the configuration files,
-view the documentation or run one of the console or utility programs.  The 
-choices available will vary depending on the options you chose to install.
-
-
-File Locations
---------------
-Everything is installed in the directory 
-"C:\Program Files\Bacula" unless a different directory was selected during
-installation. 
-
-
-Code Page Problems
--------------------
-Please note that Bacula expects the contents of the configuration files to be 
-written in UTF-8 format. Some translations of "Application Data" have accented
-characters, and apparently the installer writes this translated data in the
-standard Windows code page coding.  This occurs for the Working Directory, and 
-when it happens the daemon will not start since Bacula cannot find the directory.
-The workaround is to manually edit the appropriate conf file and ensure that it
-is written out in UTF-8 format.
-
-The conf files can be edited with any UTF-8 compatible editor, or on most 
-modern Windows machines, you can edit them with notepad, then choose UTF-8
-output encoding before saving them.
diff --git a/src/win32/win32_installer/Start.bat b/src/win32/win32_installer/Start.bat
deleted file mode 100644
index 9d297aa..0000000
--- a/src/win32/win32_installer/Start.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-rem
-rem Bacula start file for Win95/98/Me
-rem
-cd c:\Program Files\Bacula
-c:\Program Files\Bacula\bacula-fd /service -c c:\Program Files\Bacula\bacula-fd.conf
diff --git a/src/win32/win32_installer/Stop.bat b/src/win32/win32_installer/Stop.bat
deleted file mode 100644
index 6330d95..0000000
--- a/src/win32/win32_installer/Stop.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-rem
-rem Bacula stop file for Win95/98/Me
-rem
-cd c:\Program Files\Bacula
-c:\Program Files\Bacula\bacula-fd /kill
diff --git a/src/win32/win32_installer/WriteTemplates.ini b/src/win32/win32_installer/WriteTemplates.ini
deleted file mode 100644
index 3b3631c..0000000
--- a/src/win32/win32_installer/WriteTemplates.ini
+++ /dev/null
@@ -1,30 +0,0 @@
-[Settings]
-NumFields=3
-CancelEnabled=0
-BackEnabled=0
-
-[Field 1]
-Type="Label"
-Text="A Template of the Client resource can be generated that contains the information about this Client.  This template can then be copied to the Director computer and included in the Director's configuration file."
-Left=7
-Right=293
-Top=6
-Bottom=32
-
-[Field 2]
-Type="CheckBox"
-Text="Save Client template in:"
-Left=6
-Right=240
-Top=38
-Bottom=48
-
-[Field 3]
-Type="FileRequest"
-State="Client.conf"
-Flags=
-Filter=Configuration Files|*.conf|All Files|*.*
-Left=16
-Right=288
-Top=50
-Bottom=62
diff --git a/src/win32/win32_installer/bacula-dir.conf.in b/src/win32/win32_installer/bacula-dir.conf.in
deleted file mode 100644
index c42f225..0000000
--- a/src/win32/win32_installer/bacula-dir.conf.in
+++ /dev/null
@@ -1,380 +0,0 @@
-#
-# Default Bacula Director Configuration file
-#
-#  The only thing that MUST be changed is to add one or more
-#   file or directory names in the Include directive of the
-#   FileSet resource.
-#
-#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@ @DISTVER@
-#
-#  You might also want to change the default email address
-#   from root to your address.  See the "mail" and "operator"
-#   directives in the Messages resource.
-#
-
-Director {                            # define myself
-  Name = @director_name@
-  DIRport = @director_port@                # where we listen for UA connections
-  QueryFile = "@bin_dir@\\query.sql"
-  WorkingDirectory = "@working_dir@"
-  PidDirectory = "@working_dir@"
-  Maximum Concurrent Jobs = @director_maxjobs@
-  Password = "@director_password@"         # Console password
-  Messages = Daemon
-}
-
-JobDefs {
-  Name = "DefaultJob"
-  Type = Backup
-  Level = Incremental
-  Client = @client_name@
-  FileSet = "Test Set"
-  Schedule = "WeeklyCycle"
-  Storage = File
-  Messages = Standard
-  Pool = Default
-  Priority = 10
-}
-
-
-#
-# Define the main nightly save backup job
-#   By default, this job will back up to disk in C:/tmp
-Job {
-  Name = "Client1"
-  JobDefs = "DefaultJob"
-  Write Bootstrap = "@working_dir@\\Client1.bsr"
-}
-
-#Job {
-#  Name = "Client2"
-#  Client = @client_name at 2
-#  JobDefs = "DefaultJob"
-#  Write Bootstrap = "@working_dir@\\Client2.bsr"
-#}
-
-# Backup the catalog database (after the nightly save)
-Job {
-  Name = "BackupCatalog"
-  JobDefs = "DefaultJob"
-  Level = Full
-  FileSet="Catalog"
-  Schedule = "WeeklyCycleAfterBackup"
-  # This creates an ASCII copy of the catalog
-  RunBeforeJob = "\"@bin_dir@\\make_catalog_backup\" bacula bacula"
-  # This deletes the copy of the catalog
-  RunAfterJob  = "\"@bin_dir@\\delete_catalog_backup\""
-  Write Bootstrap = "@working_dir@\\BackupCatalog.bsr"
-  Priority = 11                   # run after main backup
-}
-
-#
-# Standard Restore template, to be changed by Console program
-#  Only one such job is needed for all Jobs/Clients/Storage ...
-#
-Job {
-  Name = "RestoreFiles"
-  Type = Restore
-  Client=@client_name@
-  FileSet="Test Set"
-  Storage = File
-  Pool = Default
-  Messages = Standard
-  Where = "C:\\tmp\\bacula-restores"
-}
-
-#
-# Note: Windows path separators do NOT work correctly in FileSets.
-#
-# List of files to be backed up
-FileSet {
-  Name = "Test Set"
-  Include {
-    Options {
-      signature = MD5
-      ignore case = yes
-    }
-#    
-#  Put your list of files here, preceded by 'File =', one per line
-#    or include an external list with:
-#
-#    File = <file-name
-#
-#  Note: C:/ backs up everything on drive C.
-#    if you have other drives such as D:/
-#    you will probably want to add them too.
-#
-#  By default this is defined to point to the Bacula 
-#    directory to give a reasonable FileSet to backup to
-#    disk storage during initial testing.
-#
-    File = "@BUILD_DIR@"
-  }
-
-#
-# If you backup the root directory, the following excluded
-#   files can be useful
-#
-  Exclude {
-    File = C:/Temp
-    File = C:/tmp
-  }
-}
-
-#
-# This is an example which will backup all the hard drives of a Windows System.
-#
-FileSet {
-  Name = "Windows Full Set"
-  Enable VSS = yes
-  Include {
-    Options {
-      Signature = MD5
-      Exclude = yes
-      IgnoreCase = yes
-      EnhancedWild = yes
-      DriveType = fixed
-
-      # Exclude directories full of lots and lots of useless little files
-      WildDir = "[A-Z]:/Documents and Settings/*/Cookies"
-      WildDir = "[A-Z]:/Documents and Settings/*/Recent"
-      WildDir = "[A-Z]:/Documents and Settings/*/{Local Settings,LOCALS~1}/History"
-      WildDir = "[A-Z]:/Documents and Settings/*/{Local Settings,LOCALS~1}/Temp"
-      WildDir = "[A-Z]:/Documents and Settings/*/{Local Settings,LOCALS~1}/Temporary Internet Files"
-
-      # Exclude directories full of lots and lots of useless little files
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/Cookies"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/Recent"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/{Local Settings,LOCALS~1}/History"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/{Local Settings,LOCALS~1}/Temp"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/{Local Settings,LOCALS~1}/Temporary Internet Files"
-
-      # Exclude directories full of lots and lots of useless little files
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/Cookies"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/Recent"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/{Local Settings,LOCALS~1}/History"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/{Local Settings,LOCALS~1}/Temp"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/{Local Settings,LOCALS~1}/Temporary Internet Files"
-
-      # Some random bits of Windows we want to ignore
-      WildDir = "[A-Z]:/{WINNT,Windows}/Prefetch"
-      WildDir = "[A-Z]:/{WINNT,Windows}/msdownld.tmp"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Internet Logs"
-      WildDir = "[A-Z]:/{WINNT,Windows}/$Nt*Uninstall*"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Downloaded Installations"
-
-      # Temporary directories & files
-      WildDir = "[A-Z]:/{WINNT,Windows}/Temp"
-      WildDir = "[A-Z]:/Temp"
-      WildFile = "*.tmp"
-      WildDir = "[A-Z]:/tmp"
-
-      # Fast Find
-      WildFile = "[A-Z]:/ffastun*"
-
-      # System Restore
-      WildDir = "[A-Z]:/System Volume Information"
-
-      # Windows Update
-      WildDir = "[A-Z]:/WUTemp"
-
-      # Recycle bins
-      WildDir = "[A-Z]:/RECYCLE[DR]"
-
-      # Swap files
-      WildFile = "[A-Z]:/pagefile.sys"
-      WildFile = "[A-Z]:/hiberfil.sys"
-
-      # These are programs and are easier to reinstall than restore from
-      # backup
-      WildDir = "[A-Z]:/cygwin"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/Java"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/Java Web Start"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/JavaSoft"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/Microsoft Office"
-    }
-
-    File = "C:/"
-    File = "D:/"
-    File = "E:/"
-    File = "F:/"
-    File = "G:/"
-    File = "H:/"
-    File = "I:/"
-    File = "J:/"
-    File = "K:/"
-    File = "L:/"
-    File = "M:/"
-    File = "N:/"
-    File = "O:/"
-    File = "P:/"
-    File = "Q:/"
-    File = "R:/"
-    File = "S:/"
-    File = "T:/"
-    File = "U:/"
-    File = "V:/"
-    File = "W:/"
-    File = "X:/"
-    File = "Y:/"
-    File = "Z:/"
-  }
-}
-
-#
-# When to do the backups, full backup on first sunday of the month,
-#  differential (i.e. incremental since full) every other sunday,
-#  and incremental backups other days
-Schedule {
-  Name = "WeeklyCycle"
-  Run = Full 1st sun at 23:05
-  Run = Differential 2nd-5th sun at 23:05
-  Run = Incremental mon-sat at 23:05
-}
-
-# This schedule does the catalog. It starts after the WeeklyCycle
-Schedule {
-  Name = "WeeklyCycleAfterBackup"
-  Run = Full sun-sat at 23:10
-}
-
-# This is the backup of the catalog
-FileSet {
-  Name = "Catalog"
-  Include {
-    Options {
-      signature = MD5
-    }
-    File = "@working_dir@\\bacula.sql"
-  }
-}
-
-# Client (File Services) to backup
-Client {
-  Name = @client_name@
-  Address = @client_address@
-  FDPort = @client_port@
-  Catalog = MyCatalog
-  Password = "@client_password@"      # password for FileDaemon
-  File Retention = 30 days            # 30 days
-  Job Retention = 6 months            # six months
-  AutoPrune = yes                     # Prune expired Jobs/Files
-}
-
-#
-# Second Client (File Services) to backup
-#  You should change Name, Address, and Password before using
-#
-#Client {
-#  Name = @client_name at 2
-#  Address = @client_address at 2
-#  FDPort = @client_port@
-#  Catalog = MyCatalog
-#  Password = "@client_password at 2"     # password for FileDaemon 2
-#  File Retention = 30 days            # 30 days
-#  Job Retention = 6 months            # six months
-#  AutoPrune = yes                     # Prune expired Jobs/Files
-#}
-
-
-# Definition of file storage device
-Storage {
-  Name = File
-# Do not use "localhost" here
-  Address = @storage_address@                # N.B. Use a fully qualified name here
-  SDPort = @storage_port@
-  Password = "@storage_password@"
-  Device = FileStorage
-  Media Type = File
-}
-
-
-
-# Definition of DDS tape storage device
-#Storage {
-#  Name = DDS-4    
-#  Do not use "localhost" here
-#  Address = @storage_address@                # N.B. Use a fully qualified name here
-#  SDPort = @storage_port@
-#  Password = "@storage_password@"          # password for Storage daemon
-#  Device = DDS-4                      # must be same as Device in Storage daemon
-#  Media Type = DDS-4                  # must be same as MediaType in Storage daemon
-#  Autochanger = yes                   # enable for autochanger device
-#}
-
-# Definition of 8mm tape storage device
-#Storage {
-#  Name = "8mmDrive"
-#  Do not use "localhost" here
-#  Address = @storage_address@                # N.B. Use a fully qualified name here
-#  SDPort = @storage_port@
-#  Password = "@storage_password@"
-#  Device = "Exabyte 8mm"
-#  MediaType = "8mm"
-#}
-
-
-# Generic catalog service
-Catalog {
-  Name = MyCatalog
-  dbname = bacula; user = bacula; password = ""
-}
-
-# Reasonable message delivery -- send most everything to email address
-#  and to the console
-Messages {
-  Name = Standard
-#
-# NOTE! If you send to two email or more email addresses, you will need
-#  to replace the %r in the from field (-f part) with a single valid
-#  email address in both the mailcommand and the operatorcommand.
-#
-  mailcommand = "\"@bin_dir@\\bsmtp\" -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
-  operatorcommand = "\"@bin_dir@\\bsmtp\" -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed for %j\" %r"
-  mail = @job_email@ = all, !skipped            
-  operator = @job_email@ = mount
-  console = all, !skipped, !saved
-#
-# WARNING! the following will create a file that you must cycle from
-#          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
-}
-
-
-#
-# Message delivery for daemon messages (no job).
-Messages {
-  Name = Daemon
-  mailcommand = "\"@bin_dir@\\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
-}
-
-
-
-# Default pool definition
-Pool {
-  Name = Default
-  Pool Type = Backup
-  Recycle = yes                       # Bacula can automatically recycle Volumes
-  AutoPrune = yes                     # Prune expired volumes
-  Volume Retention = 365 days         # one year
-}
-
-# Scratch pool definition
-Pool {
-  Name = Scratch
-  Pool Type = Backup
-}
-
-#
-# Restricted console used by tray-monitor to get the status of the director
-#
-Console {
-  Name = @monitor_name@
-  Password = "@monitor_password@"
-  CommandACL = status, .status
-}
diff --git a/src/win32/win32_installer/bacula-fd.conf.in b/src/win32/win32_installer/bacula-fd.conf.in
deleted file mode 100644
index 5d4c7f9..0000000
--- a/src/win32/win32_installer/bacula-fd.conf.in
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Default  Bacula File Daemon Configuration file
-#
-#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@ @DISTVER@
-#
-# There is not much to change here except perhaps the
-# File daemon Name
-#
-
-#
-# "Global" File daemon configuration specifications
-#
-FileDaemon {                            # this is me
-  Name = @client_name@
-  FDport = @client_port@                # where we listen for the director
-  WorkingDirectory = "@working_dir@"
-  Pid Directory = "@working_dir@"
-# Plugin Directory = "@fdplugins_dir@"
-  Maximum Concurrent Jobs = @client_maxjobs@
-}
-
-#
-# List Directors who are permitted to contact this File daemon
-#
-Director {
-  Name = @director_name@
-  Password = "@client_password@"
-}
-
-#
-# Restricted Director, used by tray-monitor to get the
-#   status of the file daemon
-#
-Director {
-  Name = @monitor_name@
-  Password = "@monitor_password@"
-  Monitor = yes
-}
-
-# Send all messages except skipped files back to Director
-Messages {
-  Name = Standard
-  director = @director_name@ = all, !skipped, !restored
-}
diff --git a/src/win32/win32_installer/bacula-logo.bmp b/src/win32/win32_installer/bacula-logo.bmp
deleted file mode 100644
index 9a9cf97..0000000
Binary files a/src/win32/win32_installer/bacula-logo.bmp and /dev/null differ
diff --git a/src/win32/win32_installer/bacula-sd.conf.in b/src/win32/win32_installer/bacula-sd.conf.in
deleted file mode 100644
index 9e66212..0000000
--- a/src/win32/win32_installer/bacula-sd.conf.in
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# Default Bacula Storage Daemon Configuration file
-#
-#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@ @DISTVER@
-#
-# You may need to change the name of your tape drive
-#   on the "Archive Device" directive in the Device
-#   resource.  If you change the Name and/or the 
-#   "Media Type" in the Device resource, please ensure
-#   that bacula-dir.conf has corresponding changes.
-#
-
-Storage {                             # definition of myself
-  Name = @storage_name@
-  SDPort = @storage_port@                  # Director's port      
-  WorkingDirectory = "@working_dir@"
-  Pid Directory = "@working_dir@"
-  Maximum Concurrent Jobs = @storage_maxjobs@
-}
-
-#
-# List Directors who are permitted to contact Storage daemon
-#
-Director {
-  Name = @director_name@
-  Password = "@storage_password@"
-}
-
-#
-# Restricted Director, used by tray-monitor to get the
-#   status of the storage daemon
-#
-Director {
-  Name = @monitor_name@
-  Password = "@monitor_password@"
-  Monitor = yes
-}
-
-#
-# Devices supported by this Storage daemon
-# To connect, the Director's bacula-dir.conf must have the
-#  same Name and MediaType. 
-#
-
-Device {
-  Name = FileStorage
-  Media Type = File
-  Archive Device = "C:\\Tmp"
-  LabelMedia = yes                   # lets Bacula label unlabeled media
-  Random Access = Yes
-  AutomaticMount = yes               # when device opened, read it
-  RemovableMedia = no
-  AlwaysOpen = no
-}
-
-#
-# An autochanger device with two drives
-#
-#Autochanger {
-#  Name = Autochanger
-#  Device = Drive-1
-#  Device = Drive-2
-#  Changer Command = "mtx-changer %c %o %S %a %d"
-#  Changer Device = Changer0
-#}
-
-#Device {
-#  Name = Drive-1                      #
-#  Drive Index = 0
-#  Media Type = DLT-8000
-#  Device Type = Tape
-#  Archive Device = Tape0
-#  AutomaticMount = yes               # when device opened, read it
-#  AlwaysOpen = yes
-#  RemovableMedia = yes
-#  RandomAccess = no
-#  AutoChanger = yes
-#  Alert Command = "tapeinfo -f %c | findstr TapeAlert"
-#}
-
-#Device {
-#  Name = Drive-2                      #
-#  Drive Index = 1
-#  Media Type = DLT-8000
-#  Device Type = Tape
-#  Archive Device = Tape1
-#  AutomaticMount = yes               # when device opened, read it
-#  AlwaysOpen = yes
-#  RemovableMedia = yes
-#  RandomAccess = no
-#  AutoChanger = yes
-#  Alert Command = "tapeinfo -f %c | findstr TapeAlert"
-#}
-
-#
-#Device {
-#  Name = DDS-4                        # 
-#  Media Type = DDS-4
-#  Device Type = Tape
-#  Archive Device = Tape0
-#  AutomaticMount = yes               # when device opened, read it
-#  AlwaysOpen = yes
-#  RemovableMedia = yes
-#  RandomAccess = no
-#  Alert Command = "tapeinfo -f %c | findstr TapeAlert"
-#}
-
-# 
-# Send all messages to the Director, 
-# mount messages also are sent to the email address
-#
-Messages {
-  Name = Standard
-  director = @director_name@ = all
-}
diff --git a/src/win32/win32_installer/bat.conf.in b/src/win32/win32_installer/bat.conf.in
deleted file mode 100644
index 7f0b5f1..0000000
--- a/src/win32/win32_installer/bat.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula Administration Tool (bat) Configuration File
-#
-
-Director {
-  Name = @director_name@
-  DIRport = @director_port@
-  address = @director_address@
-  Password = "@director_password@"
-}
diff --git a/src/win32/win32_installer/bconsole.conf.in b/src/win32/win32_installer/bconsole.conf.in
deleted file mode 100644
index 4f60389..0000000
--- a/src/win32/win32_installer/bconsole.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula User Agent (or Console) Configuration File
-#
-
-Director {
-  Name = @director_name@
-  DIRport = @director_port@
-  address = @director_address@
-  Password = "@director_password@"
-}
diff --git a/src/win32/win32_installer/build-installer.cmd b/src/win32/win32_installer/build-installer.cmd
deleted file mode 100644
index 5d77a9f..0000000
--- a/src/win32/win32_installer/build-installer.cmd
+++ /dev/null
@@ -1,70 +0,0 @@
- at ECHO OFF
-SETLOCAL
-
-SET CWD=%CD%
-CD %1..\..\..
-SET TOP_DIR=%CD%
-CD %CWD%
-SET DEPKG_DIR=%TOP_DIR%\depkgs-msvc
-SET DOCS_DIR=%TOP_DIR%\docs\manual
-
-SET BACULA_DLLS=bacula.dll cats_mysql.dll cats_postgresql.dll cats_sqlite3.dll
-SET BACULA_EXES=bacula-dir.exe bacula-fd.exe bacula-sd.exe bconsole.exe wx-console.exe
-SET BACULA_TOOLS=bcopy.exe bextract.exe bls.exe bscan.exe bsleep.exe bsmtp.exe btape.exe dbcheck.exe scsilist.exe
-
-SET DEP_DLLS=libeay32.dll pthreadVCE.dll ssleay32.dll zlib1.dll zlib1.dll.manifest wxbase28_vc_bacula.dll wxmsw28_core_vc_bacula.dll libmysql.dll libpq.dll comerr32.dll libintl-2.dll libiconv-2.dll krb5_32.dll
-SET DEP_EXES=openssl.exe loaderinfo.exe mt.exe mtx.exe scsitape.exe sed.exe tapeinfo.exe sqlite3.exe sqlite3.exe.manifest expr64.exe snooze.exe mkisofs.exe growisofs.exe dvd-ram-control.exe dvd+rw-booktype.exe dvd+rw-format.exe dvd+rw-mediainfo.exe
-
-SET SCRIPTS=mtx-changer.cmd disk-changer.cmd dvd-handler.cmd
-
-SET CATS_MYSQL_CMD=create_mysql_database.cmd drop_mysql_database.cmd make_mysql_tables.cmd drop_mysql_tables.cmd grant_mysql_privileges.cmd
-SET CATS_MYSQL_SQL=make_mysql_tables.sql drop_mysql_tables.sql grant_mysql_privileges.sql
-SET CATS_PGSQL_CMD=create_postgresql_database.cmd drop_postgresql_database.cmd make_postgresql_tables.cmd drop_postgresql_tables.cmd grant_postgresql_privileges.cmd
-SET CATS_PGSQL_SQL=create_postgresql_database.sql make_postgresql_tables.sql drop_postgresql_tables.sql grant_postgresql_privileges.sql
-SET CATS_SQLITE_CMD=create_sqlite3_database.cmd drop_sqlite3_database.cmd make_sqlite3_tables.cmd drop_sqlite3_tables.cmd grant_sqlite3_privileges.cmd
-SET CATS_SQLITE_SQL=make_sqlite3_tables.sql
-SET CATS_CATALOG=make_mysql_catalog_backup.cmd make_postgresql_catalog_backup.cmd make_sqlite3_catalog_backup.cmd delete_catalog_backup.cmd
-SET DIRD_FILES=query.sql
-SET SSL_FILES=openssl.cnf
-
-SET DOC_PDF_FILES=%DOCS_DIR%\bacula.pdf %DOCS_DIR%\bacula\*.html %DOCS_DIR%\bacula\*.png %DOCS_DIR%\bacula\*.css
-SET DOC_HTML_FILES=%DOCS_DIR%\bacula\*.html %DOCS_DIR%\bacula\*.png %DOCS_DIR%\bacula\*.css
-
-FOR %%i in ( %BACULA_DLLS% )     DO XCOPY %1%2\%%i %1installer\%2\ /y
-FOR %%i in ( %BACULA_EXES% )     DO XCOPY %1%2\%%i %1installer\%2\ /y
-FOR %%i in ( %BACULA_TOOLS% )    DO XCOPY %1%2\%%i %1installer\%2\ /y
-
-FOR %%i in ( %DEP_DLLS% )        DO XCOPY %DEPKG_DIR%\bin\%%i %1installer\%2\ /y
-FOR %%i in ( %DEP_EXES% )        DO XCOPY %DEPKG_DIR%\bin\%%i %1installer\%2\ /y
-
-FOR %%i in ( %SCRIPTS% )         DO XCOPY %1scripts\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_MYSQL_CMD% )  DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_MYSQL_SQL% )  DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_PGSQL_CMD% )  DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_PGSQL_SQL% )  DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_SQLITE_CMD% ) DO XCOPY %1cats\%%i %1installer\%2\ /y
-FOR %%i in ( %CATS_SQLITE_SQL% ) DO XCOPY %1cats\%%i %1installer\%2\ /y
-
-FOR %%i in ( %CATS_CATALOG% )    DO XCOPY %1cats\%%i %1installer\%2\ /y
-
-FOR %%i in ( %DIRD_FILES% )      DO XCOPY %1..\dird\%%i %1installer\%2\ /y
-FOR %%i in ( %SSL_FILES% )       DO XCOPY %DEPKG_DIR%\%%i %1installer\%2\ /y
-
-FOR %%i in ( %DOC_PDF_FILES% )   DO XCOPY %%i %1installer\%2\manual\ /y
-
-FOR %%i in ( %DOC_HTML_FILES% )  DO XCOPY %%i %1installer\%2\manual\bacula\ /y
-
-XCOPY %4\x86\Microsoft.VC80.CRT\msvcm80.dll %1installer\%2\ /y
-XCOPY %4\x86\Microsoft.VC80.CRT\msvcp80.dll %1installer\%2\ /y
-XCOPY %4\x86\Microsoft.VC80.CRT\msvcr80.dll %1installer\%2\ /y
-XCOPY %4\x86\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest %1installer\%2\ /y
-XCOPY %4\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT\msvcm80d.dll %1installer\%2\ /y
-XCOPY %4\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT\msvcp80d.dll %1installer\%2\ /y
-XCOPY %4\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT\msvcr80d.dll %1installer\%2\ /y
-XCOPY %4\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT\Microsoft.VC80.DebugCRT.manifest %1installer\%2\ /y
-
-PATH %DEPKG_DIR%\nsis;%DEPKG_DIR%\tools;%PATH%
-
-FOR /F %%i IN ( 'sed -ne "s/.*[ \t]VERSION[ \t][ \t]*\x22\(.*\)\x22/\1/p" ^< ..\..\version.h' ) DO @SET VERSION=%%i 
-makensis /V3 /DVERSION=%VERSION% /DSRC_DIR=%1installer\%2 /DOUT_DIR=%1%2 /DBUILD_TOOLS=%3 winbacula.nsi
-EXIT /B %ERRORLEVEL%
diff --git a/src/win32/win32_installer/bwx-console.conf.in b/src/win32/win32_installer/bwx-console.conf.in
deleted file mode 100644
index 4f60389..0000000
--- a/src/win32/win32_installer/bwx-console.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula User Agent (or Console) Configuration File
-#
-
-Director {
-  Name = @director_name@
-  DIRport = @director_port@
-  address = @director_address@
-  Password = "@director_password@"
-}
diff --git a/src/win32/win32_installer/client.conf.in b/src/win32/win32_installer/client.conf.in
deleted file mode 100644
index 5f2abe4..0000000
--- a/src/win32/win32_installer/client.conf.in
+++ /dev/null
@@ -1,11 +0,0 @@
-# Client (File Services) to backup
-Client {
-  Name = @client_name@
-  Address = @client_address@
-  FDPort = @client_port@
-  Catalog = MyCatalog
-  Password = "@client_password@"      # password for FileDaemon
-  File Retention = 30 days            # 30 days
-  Job Retention = 6 months            # six months
-  AutoPrune = yes                     # Prune expired Jobs/Files
-}
diff --git a/src/win32/win32_installer/installer.vcproj b/src/win32/win32_installer/installer.vcproj
deleted file mode 100644
index 18ddc6e..0000000
--- a/src/win32/win32_installer/installer.vcproj
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="installer"
-	ProjectGUID="{6D1B0964-FB32-4916-A61C-49D7F715EAD8}"
-	RootNamespace="installer"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="0"
-			>
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="build-installer $(SolutionDir) $(ConfigurationName) VC8_DEBUG "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				ReBuildCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe&#x0D;&#x0A;build-installer $(SolutionDir) $(ConfigurationName) VC8_DEBUG "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				CleanCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe"
-				Output=""
-				PreprocessorDefinitions="VERSION=$(VERSION);DOC_DIR=..\..\..\..\docs;BUILD_TOOLS=VC8_DEBUG;VC_REDIST_DIR=$(VCInstallDir)redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT;DEPKGS_BIN=..\..\..\..\depkgs-msvc\bin;BACULA_BIN=..\$(ConfigurationName);CATS_DIR=..\cats;SCRIPT_DIR=..\scripts"
-				IncludeSearchPath=""
-				ForcedIncludes=""
-				AssemblySearchPath=""
-				ForcedUsingAssemblies=""
-				CompileAsManaged=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="0"
-			>
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="build-installer $(SolutionDir) $(ConfigurationName) VC8 "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				ReBuildCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe&#x0D;&#x0A;build-installer $(SolutionDir) $(ConfigurationName) VC8 "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				CleanCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe"
-				Output=""
-				PreprocessorDefinitions=""
-				IncludeSearchPath=""
-				ForcedIncludes=""
-				AssemblySearchPath=""
-				ForcedUsingAssemblies=""
-				CompileAsManaged=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath=".\resource.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\Dialogs.rc"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath=".\bacula-dir.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\bacula-fd.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\bacula-sd.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\bconsole.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\build-installer.cmd"
-			>
-		</File>
-		<File
-			RelativePath=".\client.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\ConfigPage1.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\ConfigPage2.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\DumpLog.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\InstallType.ini"
-			>
-		</File>
-		<File
-			RelativePath=".\InstallType.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\Readme.txt"
-			>
-		</File>
-		<File
-			RelativePath=".\storage.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\winbacula.nsi"
-			>
-		</File>
-		<File
-			RelativePath=".\WriteTemplates.ini"
-			>
-		</File>
-		<File
-			RelativePath=".\wx-console.conf.in"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/win32_installer/storage.conf.in b/src/win32/win32_installer/storage.conf.in
deleted file mode 100644
index 5928815..0000000
--- a/src/win32/win32_installer/storage.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-# Definition of file storage device
-Storage {
-  Name = File
-# Do not use "localhost" here    
-  Address = @storage_address@                # N.B. Use a fully qualified name here
-  SDPort = @storage_port@
-  Password = "@storage_password@"
-  Device = FileStorage
-  Media Type = File
-}
diff --git a/src/win32/win32_installer/tray-monitor.conf.in b/src/win32/win32_installer/tray-monitor.conf.in
deleted file mode 100644
index a981225..0000000
--- a/src/win32/win32_installer/tray-monitor.conf.in
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Bacula Tray Monitor Configuration File
-#
-
-Monitor {
-  Name = @monitor_name@
-  Password = "@mon_password@"         # password for the Directors   
-  RefreshInterval = 30 seconds
-}
-   
-Client {
-  Name = @client_name@
-  Address = localhost
-  FDPort = @client_port@
-  Password = "@monitor_password@"
-}
-
-#Storage {
-#  Name = @basename at -sd
-#  Address = @hostname@
-#  SDPort = @sd_port@
-#  Password = "@mon_sd_password@"          # password for StorageDaemon
-#}
-#
-#Director {
-#  Name = @basename at -dir
-#  DIRport = @dir_port@
-#  address = @hostname@
-#}
-#
diff --git a/src/win32/win32_installer/winbacula.nsi b/src/win32/win32_installer/winbacula.nsi
deleted file mode 100644
index 761138c..0000000
--- a/src/win32/win32_installer/winbacula.nsi
+++ /dev/null
@@ -1,1029 +0,0 @@
-; winbacula.nsi
-;
-; Began as a version written by Michel Meyers (michel at tcnnet.dyndns.org)
-;
-; Adapted by Kern Sibbald for native Win32 Bacula
-;    added a number of elements from Christopher Hull's installer
-;
-; D. Scott Barninger Nov 13 2004
-; added configuration editing for bconsole.conf and bwx-console.conf
-; better explanation in dialog boxes for editing config files
-; added Start Menu items
-; fix uninstall of config files to do all not just bacula-fd.conf
-;
-; D. Scott Barninger Dec 05 2004
-; added specification of default permissions for bacula-fd.conf
-;   - thanks to Jamie Ffolliott for pointing me at cacls
-; added removal of working-dir files if user selects to remove config
-; uninstall is now 100% clean
-;
-; D. Scott Barninger Apr 17 2005
-; 1.36.3 release docs update
-; add pdf manual and menu shortcut
-;
-; Robert Nelson May 15 2006
-; Added server installs and implemented Microsoft install locations
-; Use LogicLib.nsh
-; Added Bacula-SD and Bacula-DIR
-; Replaced ParameterGiven with standard GetOptions
-;
-; Kern Sibbald October 2010
-; Remove server installs
-; Install into single bacula directory
-;  (i.e. undo a large part of what Robert Nelson did)
-;
-;
-; Command line options:
-;
-; /service    - 
-; /start
-;
-; netsh firewall add portopening protocol=tcp port=9102 name="Bacula-FD"
-
-
-!define PRODUCT "Bacula"
-
-;
-; Include the Modern UI
-;
-
-!include "MUI.nsh"
-!include "LogicLib.nsh"
-!include "FileFunc.nsh"
-!include "Sections.nsh"
-!include "StrFunc.nsh"
-!include "WinMessages.nsh"
-;
-; Basics
-;
-Name "Bacula"
-OutFile "${OUT_DIR}\bacula-win${WINVER}-${VERSION}.exe"
-SetCompressor lzma
-
-InstallDir "C:\Program Files\Bacula"
-InstallDirRegKey HKLM "Software\Bacula" "InstallLocation"
-
-InstType "Client"
-;InstType "Server"
-;InstType "Full"
-
-!insertmacro GetParent
-
-${StrCase}
-${StrRep}
-${StrTok}
-${StrTrimNewLines}
-
-;
-; Pull in pages
-;
-
-!define      MUI_COMPONENTSPAGE_SMALLDESC
-
-!define      MUI_HEADERIMAGE
-!define      MUI_BGCOLOR                739AB9
-!define      MUI_HEADERIMAGE_BITMAP     "bacula-logo.bmp"
-
-!InsertMacro MUI_PAGE_WELCOME
-!InsertMacro MUI_PAGE_LICENSE "..\..\..\LICENSE"
-Page custom EnterInstallType
-!define      MUI_PAGE_CUSTOMFUNCTION_SHOW PageComponentsShow
-!InsertMacro MUI_PAGE_COMPONENTS
-!define      MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
-!InsertMacro MUI_PAGE_DIRECTORY
-Page custom EnterConfigPage1 LeaveConfigPage1
-Page custom EnterConfigPage2 LeaveConfigPage2
-!Define      MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveInstallPage
-!InsertMacro MUI_PAGE_INSTFILES
-Page custom EnterWriteTemplates
-!Define      MUI_FINISHPAGE_SHOWREADME $INSTDIR\Readme.txt
-!InsertMacro MUI_PAGE_FINISH
-
-!InsertMacro MUI_UNPAGE_WELCOME
-!InsertMacro MUI_UNPAGE_CONFIRM
-!InsertMacro MUI_UNPAGE_INSTFILES
-!InsertMacro MUI_UNPAGE_FINISH
-
-!define      MUI_ABORTWARNING
-
-!InsertMacro MUI_LANGUAGE "English"
-
-!InsertMacro GetParameters
-!InsertMacro GetOptions
-
-DirText "Setup will install Bacula ${VERSION} to the directory specified below. To install in a different folder, click Browse and select another folder."
-
-!InsertMacro MUI_RESERVEFILE_INSTALLOPTIONS
-;
-; Global Variables
-;
-Var OptService
-Var OptStart
-Var OptSilent
-
-Var CommonFilesDone
-
-Var OsIsNT
-
-Var HostName
-
-Var ConfigClientName
-Var ConfigClientPort
-Var ConfigClientMaxJobs
-Var ConfigClientPassword
-Var ConfigClientInstallService
-Var ConfigClientStartService
-
-Var ConfigStorageName
-Var ConfigStoragePort
-Var ConfigStorageMaxJobs
-Var ConfigStoragePassword
-Var ConfigStorageInstallService
-Var ConfigStorageStartService
-
-Var ConfigDirectorName
-Var ConfigDirectorPort
-Var ConfigDirectorMaxJobs
-Var ConfigDirectorPassword
-Var ConfigDirectorAddress
-Var ConfigDirectorMailServer
-Var ConfigDirectorMailAddress
-Var ConfigDirectorDB
-Var ConfigDirectorInstallService
-Var ConfigDirectorStartService
-
-Var ConfigMonitorName
-Var ConfigMonitorPassword
-
-Var LocalDirectorPassword
-Var LocalHostAddress
-
-Var MySQLPath
-Var MySQLVersion
-Var PostgreSQLPath
-Var PostgreSQLVersion
-
-Var AutomaticInstall
-Var InstallType
-
-!define NewInstall      0
-!define UpgradeInstall  1
-!define MigrateInstall  2
-
-Var OldInstallDir
-Var PreviousComponents
-Var NewComponents
-
-; Bit 0 = File Service
-;     1 = Storage Service
-;     2 = Director Service
-;     3 = Command Console
-;     4 = Bat Console
-;     5 = wxWidgits Console
-;     6 = Documentation (PDF)
-;     7 = Documentation (HTML)
-;    10 = Tray Monitor
-
-!define ComponentFile                   1
-!define ComponentStorage                2
-!define ComponentDirector               4
-!define ComponentTextConsole            8
-!define ComponentBatConsole             16
-!define ComponentGUIConsole             32
-!define ComponentPDFDocs                64
-!define ComponentHTMLDocs               128
-!define ComponentTrayMonitor            1024
-
-!define ComponentsRequiringUserConfig           63
-!define ComponentsFileAndStorage                3
-!define ComponentsFileAndStorageAndDirector     7
-!define ComponentsDirectorAndTextGuiConsoles    60
-!define ComponentsTextAndGuiConsoles            56
-
-Var HDLG
-Var HCTL
-
-Function .onInit
-  Push $R0
-  Push $R1
-
-  ; Process Command Line Options
-  StrCpy $OptService 1
-  StrCpy $OptStart 1
-  StrCpy $OptSilent 0
-  StrCpy $CommonFilesDone 0
-  StrCpy $OsIsNT 0
-  StrCpy $AutomaticInstall 0
-  StrCpy $InstallType ${NewInstall}
-  StrCpy $OldInstallDir ""
-  StrCpy $PreviousComponents 0
-  StrCpy $NewComponents 0
-  StrCpy $MySQLPath ""
-  StrCpy $MySQLVersion ""
-  StrCpy $PostgreSQLPath ""
-  StrCpy $PostgreSQLVersion ""
-  StrCpy $LocalDirectorPassword ""
-
-  ${GetParameters} $R0
-
-  ClearErrors
-  ${GetOptions} $R0 "/noservice" $R1
-  IfErrors +2
-    StrCpy $OptService 0
-
-  ClearErrors
-  ${GetOptions} $R0 "/nostart" $R1
-  IfErrors +2
-    StrCpy $OptStart 0
-
-  IfSilent 0 +2
-    StrCpy $OptSilent 1
-
-  ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  ${If} $R0 != ""
-    StrCpy $OsIsNT 1
-  ${EndIf}
-
-  Call GetComputerName
-  Pop $HostName
-
-  Call GetHostName
-  Pop $LocalHostAddress
-
-  Call GetUserName
-
-  ; Configuration Defaults
-
-  StrCpy $ConfigClientName               "$HostName-fd"
-  StrCpy $ConfigClientPort               9102
-  StrCpy $ConfigClientMaxJobs            10
-  ;StrCpy $ConfigClientPassword
-  StrCpy $ConfigClientInstallService     "$OptService"
-  StrCpy $ConfigClientStartService       "$OptStart"
-
-  StrCpy $ConfigDirectorPort             9101
-
-  StrCpy $ConfigMonitorName              "$HostName-mon"
-  ;StrCpy $ConfigMonitorPassword
-
-; PLUGINSDIR refers to temporary helper programs and not Bacula plugins!
-  InitPluginsDir
-  File "/oname=$PLUGINSDIR\openssl.exe"  "${SRC_DIR}\openssl.exe"
-  File "/oname=$PLUGINSDIR\libeay32.dll" "${SRC_DIR}\libeay32.dll"
-  File "/oname=$PLUGINSDIR\ssleay32.dll" "${SRC_DIR}\ssleay32.dll"
-  File "/oname=$PLUGINSDIR\sed.exe"      "${SRC_DIR}\sed.exe"
-
-  !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"
-  !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "WriteTemplates.ini"
-
-  SetPluginUnload alwaysoff
-
-; Set client password
-  nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
-  pop $R0
-  ${If} $R0 = 0
-   FileOpen $R1 "$PLUGINSDIR\pw.txt" r
-   IfErrors +4
-     FileRead $R1 $R0
-     ${StrTrimNewLines} $ConfigClientPassword $R0
-     FileClose $R1
-  ${EndIf}
-
-  SetPluginUnload manual
-
-; Set monitor password
-  nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
-  pop $R0
-  ${If} $R0 = 0
-   FileOpen $R1 "$PLUGINSDIR\pw.txt" r
-   IfErrors +4
-     FileRead $R1 $R0
-     ${StrTrimNewLines} $ConfigMonitorPassword $R0
-     FileClose $R1
-  ${EndIf}
-
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-Function .onSelChange
-  Call UpdateComponentUI
-FunctionEnd
-
-Function InstallCommonFiles
-  ${If} $CommonFilesDone = 0
-    SetOutPath "$INSTDIR"
-    File "Readme.txt"
-
-    SetOutPath "$INSTDIR"
-!if "${BUILD_TOOLS}" == "MinGW32"
-    File "${SRC_DIR}\mingwm10.dll"
-    File "${SRC_DIR}\pthreadGCE.dll"
-    File "${SRC_DIR}\zlib1.dll"
-    File "${SRC_DIR}\ssleay32.dll"
-    File "${SRC_DIR}\libeay32.dll"
-!endif
-!if "${BUILD_TOOLS}" == "MinGW64"
-    File "${SRC_DIR}\pthreadGCE.dll"
-    File "${SRC_DIR}\cryptoeay32-0.9.8.dll"
-    File "${SRC_DIR}\ssleay32-0.9.8.dll"
-    File "${SRC_DIR}\zlib1.dll"
-!endif
-    File "${SRC_DIR}\bacula.dll"
-
-    File "/oname=$INSTDIR\openssl.cnf" "${SRC_DIR}\openssl.cnf"
-    File "${SRC_DIR}\openssl.exe"
-    File "${SRC_DIR}\bsleep.exe"
-    File "${SRC_DIR}\bsmtp.exe"
-    File "${SRC_DIR}\expr64.exe"
-    File "${SRC_DIR}\snooze.exe"
-
-    CreateShortCut "$SMPROGRAMS\Bacula\Documentation\View Readme.lnk" "write.exe" '"$INSTDIR\Readme.txt"'
-
-    StrCpy $CommonFilesDone 1
-  ${EndIf}
-FunctionEnd
-
-Section "-Initialize"
-
-  WriteRegStr   HKLM Software\Bacula InstallLocation "$INSTDIR"
-
-  Call GetSelectedComponents
-  Pop $R2
-  WriteRegDWORD HKLM Software\Bacula Components $R2
-
-  ; remove start menu items
-  SetShellVarContext all
-
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\Configuration\*"
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\Documentation\*"
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
-  RMDir "$SMPROGRAMS\Bacula\Configuration"
-  RMDir "$SMPROGRAMS\Bacula\Documentation"
-  RMDir "$SMPROGRAMS\Bacula"
-  CreateDirectory "$SMPROGRAMS\Bacula"
-  CreateDirectory "$SMPROGRAMS\Bacula\Configuration"
-  CreateDirectory "$SMPROGRAMS\Bacula\Documentation"
-
-  CreateDirectory "$INSTDIR"
-  CreateDirectory "$INSTDIR\working"
-
-  SetOutPath "$INSTDIR"
-  File "..\..\..\LICENSE"
-  Delete /REBOOTOK "$INSTDIR\License.txt"
-
-; Output a series of SED commands to configure the .conf file(s)
-  FileOpen $R1 $PLUGINSDIR\config.sed w
-  FileWrite $R1 "s;@VERSION@;${VERSION};g$\r$\n"
-  FileWrite $R1 "s;@DATE@;${__DATE__};g$\r$\n"
-  FileWrite $R1 "s;@DISTNAME@;Windows;g$\r$\n"
-
-  StrCpy $R2 ${BUILD_TOOLS}
-
-  Call GetHostName
-  Exch $R3
-  Pop $R3
-
-  FileWrite $R1 "s;@DISTVER@;$R2;g$\r$\n"
-
-  ${StrRep} $R2 "$INSTDIR\working" "\" "\\\\"
-  FileWrite $R1 's;@working_dir@;$R2;g$\r$\n'
-  ${StrRep} $R2 "$INSTDIR\working" "\" "\\"
-  FileWrite $R1 's;@working_dir_cmd@;$R2;g$\r$\n'
-
-; ${StrRep} $R2 "$INSTDIR" "\" "\\\\"
-; FileWrite $R1 's;@bin_dir@;$R2;g$\r$\n'
-; ${StrRep} $R2 "$INSTDIR" "\" "\\"
-; FileWrite $R1 's;@bin_dir_cmd@;$R2;g$\r$\n'
-
-  ${StrRep} $R2 "$INSTDIR\plugins" "\" "\\\\"
-  FileWrite $R1 's;@fdplugins_dir@;$R2;g$\r$\n'
-
-  ${StrRep} $R2 "$INSTDIR" "\" "/"
-  FileWrite $R1 "s;@BUILD_DIR@;$R2;g$\r$\n"
-
-  FileWrite $R1 "s;@client_address@;$LocalHostAddress;g$\r$\n"
-
-  ${If} "$ConfigClientName" != ""
-    FileWrite $R1 "s;@client_name@;$ConfigClientName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigClientPort" != ""
-    FileWrite $R1 "s;@client_port@;$ConfigClientPort;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigClientMaxJobs" != ""
-    FileWrite $R1 "s;@client_maxjobs@;$ConfigClientMaxJobs;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigClientPassword" != ""
-    FileWrite $R1 "s;@client_password@;$ConfigClientPassword;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorName" != ""
-    FileWrite $R1 "s;@director_name@;$ConfigDirectorName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorPort" != ""
-    FileWrite $R1 "s;@director_port@;$ConfigDirectorPort;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorPassword" != ""
-    FileWrite $R1 "s;@director_password@;$ConfigDirectorPassword;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorAddress" != ""
-    FileWrite $R1 "s;@director_address@;$ConfigDirectorAddress;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigMonitorName" != ""
-    FileWrite $R1 "s;@monitor_name@;$ConfigMonitorName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigMonitorPassword" != ""
-    FileWrite $R1 "s;@monitor_password@;$ConfigMonitorPassword;g$\r$\n"
-  ${EndIf}
-
-  FileClose $R1
-
-  ${If} ${FileExists} "$OldInstallDir\bacula-fd.exe"
-    nsExec::ExecToLog '"$OldInstallDir\bacula-fd.exe" /kill'     ; Shutdown any bacula that could be running
-    Sleep 3000
-    nsExec::ExecToLog '"$OldInstallDir\bacula-fd.exe" /remove'   ; Remove existing service
-  ${EndIf}
-
-SectionEnd
-
-
-SectionGroup "Client" SecGroupClient
-
-Section "File Service" SecFileDaemon
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR\plugins"
-  File "${SRC_DIR}\exchange-fd.dll"
-
-  SetOutPath "$INSTDIR"
-
-  File "${SRC_DIR}\bacula-fd.exe"
-
-  File "/oname=$PLUGINSDIR\bacula-fd.conf" "bacula-fd.conf.in"
-
-  StrCpy $0 "$INSTDIR"
-  StrCpy $1 bacula-fd.conf
-  Call ConfigEditAndCopy
-
-  StrCpy $0 bacula-fd
-  StrCpy $1 "File Service"
-  StrCpy $2 $ConfigClientInstallService
-  StrCpy $3 $ConfigClientStartService
-
-  Call InstallDaemon
-
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Client Configuration.lnk" "write.exe" '"$INSTDIR\bacula-fd.conf"'
-SectionEnd
-
-SectionGroupEnd
-
-SectionGroup "Consoles" SecGroupConsoles
-
-Section "Command Console" SecConsole
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR"
-
-  File "${SRC_DIR}\bconsole.exe"
-  Call InstallCommonFiles
-
-  File "/oname=$PLUGINSDIR\bconsole.conf" "bconsole.conf.in"
-  StrCpy $0 "$INSTDIR"
-  StrCpy $1 bconsole.conf
-  Call ConfigEditAndCopy
-
-  CreateShortCut "$SMPROGRAMS\Bacula\bconsole.lnk" "$INSTDIR\bconsole.exe" '-c "$INSTDIR\bconsole.conf"' "$INSTDIR\bconsole.exe" 0
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Command Console Configuration.lnk" "write.exe" '"$INSTDIR\bconsole.conf"'
-
-SectionEnd
-
-Section "Bat Console" SecBatConsole
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR"
-
-!if "${BUILD_BAT}" == "yes"
-  Call InstallCommonFiles
-  File "${SRC_DIR}\QtCore4.dll"
-  File "${SRC_DIR}\QtGui4.dll"
-  File "${SRC_DIR}\libgcc_s_dw2-1.dll"
-
-  File "${SRC_DIR}\bat.exe"
-
-  File "/oname=$PLUGINSDIR\bat.conf" "bat.conf.in"
-  StrCpy $0 "$INSTDIR"
-  StrCpy $1 bat.conf
-  Call ConfigEditAndCopy
-
-  SetOutPath "$INSTDIR\help"
-  File "${SRC_DIR}\help\*"
-  SetOutPath "$INSTDIR"
-   
-
-  ; Create Start Menu entry
-  CreateShortCut "$SMPROGRAMS\Bacula\Bat.lnk" "$INSTDIR\bat.exe" '-c "$INSTDIR\bat.conf"' "$INSTDIR\bat.exe" 0
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Bat Configuration.lnk" "write.exe" '"$INSTDIR\bat.conf"'
-!endif
-
-SectionEnd
-
-Section "Bacula Tray Monitor" SecTrayMonitor
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR"
-
-!if "${BUILD_BAT}" == "yes"
-  Call InstallCommonFiles
-  File "${SRC_DIR}\QtCore4.dll"
-  File "${SRC_DIR}\QtGui4.dll"
-  File "${SRC_DIR}\libgcc_s_dw2-1.dll"
-
-  File "${SRC_DIR}\bacula-tray-monitor.exe"
-
-  File "/oname=$PLUGINSDIR\tray-monitor.conf" "tray-monitor.conf.in"
-  StrCpy $0 "$INSTDIR"
-  StrCpy $1 tray-monitor.conf
-  Call ConfigEditAndCopy
-
-  ; Create Start Menu entry
-  CreateShortCut "$SMPROGRAMS\Bacula\TrayMonitor.lnk" "$INSTDIR\bacula-tray-monitor.exe" '-c "$INSTDIR\tray-monitor.conf"' "$INSTDIR\bacula-tray-monitor.exe" 0
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Tray Monitor Configuration.lnk" "write.exe" '"$INSTDIR\tray-monitor.conf"'
-!endif
-
-SectionEnd
-
-; Deleted because wxconsole is deprecated
-;Section "Graphical Console" SecWxConsole
-;  SectionIn 1 2 3
-  
-;  SetOutPath "$INSTDIR"
-;
-;SectionEnd
-
-SectionGroupEnd
-
-SectionGroup "Documentation" SecGroupDocumentation
-
-Section "Documentation (Acrobat Format)" SecDocPdf
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR\doc"
-  CreateDirectory "$INSTDIR\doc"
-
-  File "${SRC_DIR}\docs\manuals\en\console\console.pdf"
-  File "${SRC_DIR}\docs\manuals\en\misc\misc.pdf"
-  File "${SRC_DIR}\docs\manuals\en\main\main.pdf"
-  File "${SRC_DIR}\docs\manuals\en\utility\utility.pdf"
-  File "${SRC_DIR}\docs\manuals\en\problems\problems.pdf"
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Console.lnk" '"$INSTDIR\doc\console.pdf"'
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Main.lnk" '"$INSTDIR\doc\main.pdf"'
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Misc.lnk" '"$INSTDIR\doc\misc.pdf"'
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Utility.lnk" '"$INSTDIR\doc\utility.pdf"'
-  CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Problems.lnk" '"$INSTDIR\doc\problems.pdf"'
-  SetOutPath "$INSTDIR"
-SectionEnd
-
-;Section "Documentation (HTML Format)" SecDocHtml
-;  SectionIn 3
-
-; SetOutPath "$INSTDIR\doc"
-; CreateDirectory "$INSTDIR\doc"
-
-; File "${SRC_DIR}\manual\bacula\*.html"
-; File "${SRC_DIR}\manual\bacula\*.png"
-; File "${SRC_DIR}\manual\bacula\*.css"
-; CreateShortCut "$SMPROGRAMS\Bacula\Documentation\Manual (HTML).lnk" '"$INSTDIR\doc\index.html"'
-;SectionEnd
-
-SectionGroupEnd
-
-Section "-Finish"
-  Push $R0
-
-  ${If} $OsIsNT = 1
-;   nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'
-  ${EndIf}
-
-  ; Write the uninstall keys for Windows & create Start Menu entry
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "InstallLocation" "$INSTDIR"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayVersion" "${VERSION}"
-  ${StrTok} $R0 "${VERSION}" "." 0 0
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMajor" $R0
-  ${StrTok} $R0 "${VERSION}" "." 1 0
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMinor" $R0
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoModify" 1
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoRepair" 1
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLUpdateInfo" "http://www.bacula.org"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLInfoAbout" "http://www.bacula.org"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "HelpLink" "http://www.bacula.org?page=support"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
-  WriteUninstaller "$INSTDIR\Uninstall.exe"
-  CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
-  Pop $R0
-SectionEnd
-
-; Extra Page descriptions
-
-LangString DESC_SecFileDaemon ${LANG_ENGLISH} "Install Bacula File Daemon on this system."
-LangString DESC_SecConsole ${LANG_ENGLISH} "Install command console program on this system."
-LangString DESC_SecBatConsole ${LANG_ENGLISH} "Install Bat graphical console program on this system."
-LangString DESC_SecTrayMonitor ${LANG_ENGLISH} "Install Tray Monitor graphical program on this system."
-
-LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"
-LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."
-
-LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"
-LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."
-
-LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"
-LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."
-
-LangString TITLE_WriteTemplates ${LANG_ENGLISH} "Create Templates"
-LangString SUBTITLE_WriteTemplates ${LANG_ENGLISH} "Create a resource template for inclusion in the Director's configuration file."
-
-!InsertMacro MUI_FUNCTION_DESCRIPTION_BEGIN
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecFileDaemon} $(DESC_SecFileDaemon)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecBatConsole} $(DESC_SecBatConsole)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecTrayMonitor} $(DESC_SecTrayMonitor)
-!InsertMacro MUI_FUNCTION_DESCRIPTION_END
-
-; Uninstall section
-
-UninstallText "This will uninstall Bacula. Click Uninstall to continue."
-
-Section "Uninstall"
-  ; Shutdown any baculum that could be running
-  nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /kill'
-  Sleep 3000
-
-; ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"
-  ; Remove bacula service
-  nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /remove'
-  nsExec::ExecToLog '"$INSTDIR\plugins\exchange-fd.dll" /remove'
-  
-  ; remove registry keys
-  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
-  DeleteRegKey HKLM "Software\Bacula"
-
-  ; remove start menu items
-  SetShellVarContext all
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
-  RMDir "$SMPROGRAMS\Bacula"
-
-  ; remove files and uninstaller (preserving config for now)
-  Delete /REBOOTOK "$INSTDIR\doc\*"
-  Delete /REBOOTOK "$INSTDIR\*"
-  Delete /REBOOTOK "$INSTDIR\help\*"
-
-  ; Check for existing installation
-  IfSilent +2
-    MessageBox MB_YESNO|MB_ICONQUESTION \
-    "Would you like to delete the current configuration files and the working state file?" IDNO NoDel
-
-
-    Delete /REBOOTOK "$INSTDIR\*"
-    Delete /REBOOTOK "$INSTDIR\working\*"
-    Delete /REBOOTOK "$INSTDIR\plugins\*"
-    Delete /REBOOTOK "$PLUGINSDIR\bacula-*.conf"
-    Delete /REBOOTOK "$PLUGINSDIR\*console.conf"
-    Delete /REBOOTOK "$PLUGINSDIR\*conf.in"
-    Delete /REBOOTOK "$PLUGINSDIR\openssl.exe"
-    Delete /REBOOTOK "$PLUGINSDIR\libeay32.dll"
-    Delete /REBOOTOK "$PLUGINSDIR\ssleay32.dll"
-    Delete /REBOOTOK "$PLUGINSDIR\sed.exe"    
-    Delete /REBOOTOK "$PLUGINSDIR\pw.txt"     
-    Delete /REBOOTOK "$PLUGINSDIR\*.sed" 
-    Delete /REBOOTOK "$PLUGINSDIR\*.cmd"    
-    Delete /REBOOTOK "$PLUGINSDIR\*.sql"    
-    RMDir "$INSTDIR\plugins"
-    RMDir "$INSTDIR\working"
-    RMDir "$INSTDIR"
-NoDel:
-
-  ; remove directories used
-  RMDir "$INSTDIR\doc"
-  RMDir "$INSTDIR\help"
-  RMDir "$INSTDIR"
-SectionEnd
-
-;
-; $0 - Service Name (ie Bacula-FD)
-; $1 - Service Description (ie Bacula File Daemon)
-; $2 - Install as Service
-; $3 - Start Service now
-;
-Function InstallDaemon
-  Call InstallCommonFiles
-
-  WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2
-  
-  ${If} $2 = 1
-    nsExec::ExecToLog '"$INSTDIR\$0.exe" /kill'
-    sleep 3000
-    nsExec::ExecToLog '"$INSTDIR\$0.exe" /remove'
-    nsExec::ExecToLog '"$INSTDIR\$0.exe" /install -c "$INSTDIR\$0.conf"'
-
-    ${If} $OsIsNT <> 1
-      File "Start.bat"
-      File "Stop.bat"
-    ${EndIf}
-
-    ; Start the service?
-
-    ${If} $3 = 1  
-      ${If} $OsIsNT = 1
-        nsExec::ExecToLog 'net start $0'
-      ${Else}
-        Exec '"$INSTDIR\$0.exe" /service -c "$INSTDIR\$0.conf"'
-      ${EndIf}
-    ${EndIf}
-  ${Else}
-    CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\$0.exe" '-c "$INSTDIR\$0.conf"' "$INSTDIR\$0.exe" 0
-  ${EndIf}
-FunctionEnd
-
-Function GetComputerName
-  Push $R0
-  Push $R1
-  Push $R2
-
-  System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"
-
-  ${StrCase} $R0 $R0 "L"
-
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-!define ComputerNameDnsFullyQualified   3
-
-Function GetHostName
-  Push $R0
-  Push $R1
-  Push $R2
-
-  ${If} $OsIsNT = 1
-    System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
-    ${If} $R2 = 0
-      Pop $R2
-      DetailPrint "GetComputerNameExA failed - LastError = $R2"
-      Call GetComputerName
-      Pop $R0
-    ${Else}
-      Pop $R2
-    ${EndIf}
-  ${Else}
-    Call GetComputerName
-    Pop $R0
-  ${EndIf}
-
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-!define NameUserPrincipal 8
-
-Function GetUserName
-  Push $R0
-  Push $R1
-  Push $R2
-
-  ${If} $OsIsNT = 1
-    System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
-    ${If} $R2 = 0
-      Pop $R2
-      DetailPrint "GetUserNameExA failed - LastError = $R2"
-      Pop $R0
-      StrCpy $R0 ""
-    ${Else}
-      Pop $R2
-    ${EndIf}
-  ${Else}
-      StrCpy $R0 ""
-  ${EndIf}
-
-  ${If} $R0 == ""
-    System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
-    ${If} $R2 = 0
-      Pop $R2
-      DetailPrint "GetUserNameA failed - LastError = $R2"
-      StrCpy $R0 ""
-    ${Else}
-      Pop $R2
-    ${EndIf}
-  ${EndIf}
-
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-Function ConfigEditAndCopy
-  Push $R1
-
-  ${If} ${FileExists} "$0\$1"
-    StrCpy $R1 ".new"
-  ${Else}
-    StrCpy $R1 ""
-  ${EndIf}
-
-  nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'
-  CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"
-
-  Pop $R1
-FunctionEnd
-
-Function GetSelectedComponents
-  Push $R0
-  StrCpy $R0 0
-  ${If} ${SectionIsSelected} ${SecFileDaemon}
-    IntOp $R0 $R0 | ${ComponentFile}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecConsole}
-    IntOp $R0 $R0 | ${ComponentTextConsole}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecBatConsole}
-    IntOp $R0 $R0 | ${ComponentBatConsole}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecTrayMonitor}
-    IntOp $R0 $R0 | ${ComponentTrayMonitor}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecDocPdf}
-    IntOp $R0 $R0 | ${ComponentPDFDocs}
-  ${EndIf}
-  Exch $R0
-FunctionEnd
-
-Function PageComponentsShow
-  Call SelectPreviousComponents
-  Call UpdateComponentUI
-FunctionEnd
-
-Function PageDirectoryPre
-  ${If} $AutomaticInstall = 1
-  ${OrIf} $InstallType = ${UpgradeInstall}
-    Abort
-  ${EndIf}
-FunctionEnd
-
-Function LeaveInstallPage
-  Push "$INSTDIR\install.log"
-  Call DumpLog
-FunctionEnd
-
-Function EnterWriteTemplates
-  Push $R0
-  Push $R1
-
-  Call GetSelectedComponents
-  Pop $R0
-
-  IntOp $R0 $R0 & ${ComponentDirector}
-  IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}
-
-  ${If} $R0 <> 0
-  ${OrIf} $R1 = 0
-    Pop $R1
-    Pop $R0
-    Abort
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 = 0
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 0
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags DISABLED
-    DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
-  ${Else}
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 1
-    DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State "C:\$ConfigClientName.conf"
-  ${EndIf}
-
-
-  !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"
-  !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"
-
-  !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State
-  ${If} $R0 <> 0
-    File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"
-
-    nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\client.conf.in"'
-    !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 3" State
-    ${If} $R0 != ""
-      CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"
-    ${EndIf}
-  ${EndIf}
-
-
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-Function SelectPreviousComponents
-  ${If} $InstallType <> ${NewInstall}
-    IntOp $R1 $PreviousComponents & ${ComponentFile}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecFileDaemon}
-      !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecFileDaemon}
-      !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentTextConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecConsole}
-      !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecConsole}
-      !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentBatConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecBatConsole}
-      !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecBatConsole}
-      !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentTrayMonitor}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecTrayMonitor}
-      !InsertMacro SetSectionFlag ${SecTrayMonitor} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecTrayMonitor}
-      !InsertMacro ClearSectionFlag ${SecTrayMonitor} ${SF_RO}
-    ${EndIf}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecDocPdf}
-      !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecDocPdf}
-      !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_RO}
-    ${EndIf}
-  ${EndIf}
-FunctionEnd
-
-Function UpdateComponentUI
-  Push $R0
-  Push $R1
-
-  Call GetSelectedComponents
-  Pop $R0
-
-  IntOp $R1 $R0 ^ $PreviousComponents
-  IntOp $NewComponents $R0 & $R1
-
-  ${If} $InstallType <> ${NewInstall}
-    IntOp $R1 $NewComponents & ${ComponentFile}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentTextConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}
-    ${EndIf}
-   IntOp $R1 $NewComponents & ${ComponentBatConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentTrayMonitor}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecTrayMonitor} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecTrayMonitor} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentPDFDocs}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecDocPdf} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecDocPdf} ${SF_BOLD}
-    ${EndIf}
-  ${EndIf}
-
-  GetDlgItem $R0 $HWNDPARENT 1
-
-  IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}
-  ${If} $R1 = 0
-    SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"
-  ${Else}
-    SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"
-  ${EndIf}
-
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-!include "InstallType.nsh"
-!include "ConfigPage1.nsh"
-!include "ConfigPage2.nsh"
-!include "DumpLog.nsh"
diff --git a/src/win32/win64_installer/ConfigPage1.nsh b/src/win32/win64_installer/ConfigPage1.nsh
deleted file mode 100644
index 2a16fb5..0000000
--- a/src/win32/win64_installer/ConfigPage1.nsh
+++ /dev/null
@@ -1,294 +0,0 @@
-Function EnterConfigPage1
-  ${If} $AutomaticInstall = 1
-    Abort
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsFileAndStorage}
-
-  ${If} $R0 = 0
-    Abort
-  ${EndIf}
-
-  FileOpen $R5 "$PLUGINSDIR\ConfigPage1.ini" w
-
-  StrCpy $R6 1  ; Field Number
-  StrCpy $R7 0  ; Top
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    IntOp $R8 $R7 + 52
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Client"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 12
-
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigClientName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=158$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Port"$\r$\nLeft=172$\r$\nTop=$R7$\r$\nRight=188$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigClientPort$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=218$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Max Jobs"$\r$\nLeft=238$\r$\nTop=$R7$\r$\nRight=270$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigClientMaxJobs$\r$\nLeft=274$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigClientPassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 14
-
-    IntOp $R8 $R7 + 10
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigClientInstallService$\r$\nText="Install as service"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=118$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigClientStartService$\r$\nText="Start after install"$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=260$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-  ${Endif}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    IntOp $R8 $R7 + 52
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Storage"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 12
-    
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigStorageName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=158$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Port"$\r$\nLeft=172$\r$\nTop=$R7$\r$\nRight=188$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigStoragePort$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=218$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 2
-
-    IntOp $R8 $R8 - 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Max Jobs"$\r$\nLeft=238$\r$\nTop=$R7$\r$\nRight=270$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigStorageMaxJobs$\r$\nLeft=274$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigStoragePassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 14
-
-    IntOp $R8 $R7 + 10
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigStorageInstallService$\r$\nText="Install as service"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=118$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigStorageStartService$\r$\nText="Start after install"$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=260$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-  ${Endif}
-
-  IntOp $R6 $R6 - 1
-
-  FileWrite $R5 "[Settings]$\r$\nNumFields=$R6$\r$\n"
-
-  FileClose $R5
-
-  !insertmacro MUI_HEADER_TEXT "$(TITLE_ConfigPage1)" "$(SUBTITLE_ConfigPage1)"
-  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ConfigPage1.ini"
-  Pop $HDLG ;HWND of dialog
-
-  ; Initialize Controls
-
-  StrCpy $R6 1  ; Field Number
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 2
-
-    ; Client Name
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Client Port Number
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 5 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Max Jobs
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 3 0
-
-    IntOp $R6 $R6 + 5
-  ${Endif}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 2
-
-    ; Storage Name
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Storage Port Number
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 5 0
-
-    IntOp $R6 $R6 + 2
-
-    ; Max Jobs
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage1.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 3 0
-
-    IntOp $R6 $R6 + 5
-  ${Endif}
-
-  !insertmacro MUI_INSTALLOPTIONS_SHOW
-
-  ; Process results
-
-  StrCpy $R6 3
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientName "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientPort "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientMaxJobs "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientPassword "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientInstallService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigClientStartService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 3
-  ${Endif}
-
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageName "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStoragePort "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageMaxJobs "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStoragePassword "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageInstallService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 1
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigStorageStartService "ConfigPage1.ini" "Field $R6" "State"
-
-    IntOp $R6 $R6 + 3
-  ${Endif}
-FunctionEnd
-
-Function LeaveConfigPage1
-  StrCpy $R6 5
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1024
-    ${OrIf} $R0 > 65535
-      MessageBox MB_OK "Port must be between 1024 and 65535 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1
-    ${OrIf} $R0 > 99
-      MessageBox MB_OK "Max Jobs must be between 1 and 99 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 9
-  ${Endif}
-  
-  IntOp $R0 $NewComponents & ${ComponentStorage}
-  ${If} $R0 <> 0
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1024
-    ${OrIf} $R0 > 65535
-      MessageBox MB_OK "Port must be between 1024 and 65535 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 2
-
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage1.ini" "Field $R6" "State"
-    ${If} $R0 < 1
-    ${OrIf} $R0 > 99
-      MessageBox MB_OK "Max Jobs must be between 1 and 99 inclusive."
-      Abort
-    ${EndIf}
-
-    IntOp $R6 $R6 + 9
-  ${Endif}
-FunctionEnd
diff --git a/src/win32/win64_installer/ConfigPage2.nsh b/src/win32/win64_installer/ConfigPage2.nsh
deleted file mode 100644
index ed7c5f5..0000000
--- a/src/win32/win64_installer/ConfigPage2.nsh
+++ /dev/null
@@ -1,455 +0,0 @@
-Function EnterConfigPage2
-  IntOp $R0 $NewComponents & ${ComponentsRequiringUserConfig}
-
-  ${If} $R0 = 0
-    Abort
-  ${EndIf}
-
-  FileOpen $R5 "$PLUGINSDIR\ConfigPage2.ini" w
-
-  StrCpy $R6 1  ; Field Number
-  StrCpy $R7 0  ; Top
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    ${If} $AutomaticInstall = 1
-      IntOp $R8 $R7 + 54
-    ${Else}
-      IntOp $R8 $R7 + 92
-    ${EndIf}
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Director"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R8 $R7 + 54
-    ${Else}
-      IntOp $R8 $R7 + 26
-    ${EndIf}
-    FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Enter Director Information"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-  ${EndIf}
-
-  IntOp $R6 $R6 + 1
-  IntOp $R7 $R7 + 12
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    ${If} "$ConfigDirectorName" == ""
-      StrCpy $ConfigDirectorName "$HostName-dir"
-    ${EndIf}
-    ${If} "$ConfigDirectorPassword" == ""
-      StrCpy $ConfigDirectorPassword "$LocalDirectorPassword"
-    ${EndIf}
-  ${Else}
-    ${If} "$ConfigDirectorName" == "$HostName-dir"
-      StrCpy $ConfigDirectorName ""
-    ${EndIf}
-    ${If} "$ConfigDirectorPassword" == "$LocalDirectorPassword"
-      StrCpy $ConfigDirectorPassword ""
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R8 $R7 + 8
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="DIR Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=60$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-
-    IntOp $R8 $R8 + 2
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorName$\r$\nLeft=60$\r$\nTop=$R7$\r$\nRight=158$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-      ${If} $R0 <> 0
-        IntOp $R7 $R7 + 2
-        IntOp $R8 $R8 - 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="DIR Port"$\r$\nLeft=172$\r$\nTop=$R7$\r$\nRight=188$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-        IntOp $R7 $R7 - 2
-
-        IntOp $R8 $R8 + 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigDirectorPort$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=218$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-
-      IntOp $R0 $NewComponents & ${ComponentDirector}
-      ${If} $R0 <> 0
-        IntOp $R7 $R7 + 2
-        IntOp $R8 $R8 - 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Max Jobs"$\r$\nLeft=238$\r$\nTop=$R7$\r$\nRight=270$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-        IntOp $R7 $R7 - 2
-
-        IntOp $R8 $R8 + 2
-        FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nFlags="ONLY_NUMBERS"$\r$\nState=$ConfigDirectorMaxJobs$\r$\nLeft=274$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-    ${EndIf}
-
-    IntOp $R7 $R7 + 14
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-  ${If} $R0 <> 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R7 $R7 + 2
-      IntOp $R8 $R7 + 8
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="DIR Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=60$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-      IntOp $R8 $R8 + 2
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorPassword$\r$\nLeft=60$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 14
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    IntOp $R7 $R7 + 2
-    IntOp $R8 $R7 + 8
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Mail Server"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=48$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-    IntOp $R8 $R8 + 2
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorMailServer$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-    IntOp $R8 $R7 + 8
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Mail Address"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=48$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-    IntOp $R8 $R8 + 2
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorMailAddress$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 16
-    IntOp $R8 $R7 + 8
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Database"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 - 2
-    IntOp $R8 $R8 + 2
-
-    ${If} $ConfigDirectorDB = 0
-      ${If} $MySQLPath != ""
-        StrCpy $ConfigDirectorDB 1
-      ${ElseIf} $PostgreSQLPath != ""
-        StrCpy $ConfigDirectorDB 2
-      ${Else}
-        StrCpy $ConfigDirectorDB 3
-      ${EndIf}
-    ${EndIf}
-
-    ${If} $ConfigDirectorDB = 1
-      StrCpy $R9 1
-    ${Else}
-      StrCpy $R9 0
-    ${EndIf}
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="RadioButton"$\r$\nState=$R9$\r$\nText="MySQL"$\r$\nFlags="GROUP"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=90$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-
-    ${If} $ConfigDirectorDB = 2
-      StrCpy $R9 1
-    ${Else}
-      StrCpy $R9 0
-    ${EndIf}
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="RadioButton"$\r$\nState=$R9$\r$\nText="PostgreSQL"$\r$\nFlags="NOTABSTOP"$\r$\nLeft=94$\r$\nTop=$R7$\r$\nRight=146$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-
-    ${If} $ConfigDirectorDB = 3
-      StrCpy $R9 1
-    ${Else}
-      StrCpy $R9 0
-    ${EndIf}
-
-    FileWrite $R5 '[Field $R6]$\r$\nType="RadioButton"$\r$\nState=$R9$\r$\nText="Sqlite"$\r$\nFlags="NOTABSTOP"$\r$\nLeft=150$\r$\nTop=$R7$\r$\nRight=182$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-    IntOp $R6 $R6 + 1
-    IntOp $R7 $R7 + 12
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R8 $R7 + 10
-      FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigDirectorInstallService$\r$\nText="Install as service"$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=118$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Checkbox"$\r$\nState=$ConfigDirectorStartService$\r$\nText="Start after install"$\r$\nLeft=190$\r$\nTop=$R7$\r$\nRight=260$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 12
-    ${EndIf}
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R7 $R7 + 2
-      IntOp $R8 $R7 + 8
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="DIR Address"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=60$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-      IntOp $R8 $R8 + 2
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigDirectorAddress$\r$\nLeft=60$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 14
-      IntOp $R8 $R7 + 8
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R7 $R7 + 4
-
-  ${If} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsFileAndStorageAndDirector}
-    IntOp $R0 0 & 0
-    ${If} $R0 <> 0
-      IntOp $R8 $R7 + 42
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="GroupBox"$\r$\nText="Monitor"$\r$\nLeft=0$\r$\nTop=$R7$\r$\nRight=300$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 12
-
-      IntOp $R8 $R7 + 8
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Name"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=26$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-
-      IntOp $R8 $R8 + 2
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigMonitorName$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=150$\r$\nBottom=$R8$\r$\n$\r$\n'
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 16
-      IntOp $R8 $R7 + 8
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Label"$\r$\nText="Password"$\r$\nLeft=6$\r$\nTop=$R7$\r$\nRight=38$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 - 2
-      IntOp $R8 $R8 + 2
-
-      FileWrite $R5 '[Field $R6]$\r$\nType="Text"$\r$\nState=$ConfigMonitorPassword$\r$\nLeft=50$\r$\nTop=$R7$\r$\nRight=294$\r$\nBottom=$R8$\r$\n$\r$\n'
-
-      IntOp $R6 $R6 + 1
-      IntOp $R7 $R7 + 20
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R6 $R6 - 1
-  FileWrite $R5 "[Settings]$\r$\nNumFields=$R6$\r$\n"
-
-  FileClose $R5
-
-  IntOp $R0 $NewComponents & ${ComponentsFileAndStorage}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 1
-    !insertmacro MUI_HEADER_TEXT "$(TITLE_ConfigPage1)" "$(SUBTITLE_ConfigPage1)"
-  ${Else}
-    !insertmacro MUI_HEADER_TEXT "$(TITLE_ConfigPage2)" "$(SUBTITLE_ConfigPage2)"
-  ${EndIf}
-
-  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ConfigPage2.ini"
-  Pop $HDLG ;HWND of dialog
-
-  ; Initialize Controls
-  StrCpy $R6 2  ; Field Number
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 0
-    ; Name
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-    SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        ; Port Number
-        !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-        SendMessage $HCTL ${EM_LIMITTEXT} 5 0
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-
-      IntOp $R0 $NewComponents & ${ComponentDirector}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        ; Max Jobs
-        !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-        SendMessage $HCTL ${EM_LIMITTEXT} 3 0
-
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-  ${If} $R0 <> 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 9
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${EndIf}
-
-  ${If} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsFileAndStorageAndDirector}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-      !insertmacro MUI_INSTALLOPTIONS_READ $HCTL "ConfigPage2.ini" "Field $R6" "HWND"
-      SendMessage $HCTL ${EM_LIMITTEXT} 30 0
-      IntOp $R6 $R6 + 2
-    ${EndIf}
-  ${EndIf}
-
-  !insertmacro MUI_INSTALLOPTIONS_SHOW
-
-  ; Process results
-
-  StrCpy $R6 2
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 = 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorName "ConfigPage2.ini" "Field $R6" "State"
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorPort "ConfigPage2.ini" "Field $R6" "State"
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-
-      IntOp $R0 $NewComponents & ${ComponentDirector}
-      ${If} $R0 <> 0
-        IntOp $R6 $R6 + 1
-        !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorMaxJobs "ConfigPage2.ini" "Field $R6" "State"
-        IntOp $R6 $R6 + 1
-      ${EndIf}
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-  ${If} $R0 <> 0
-  ${OrIf} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorPassword "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentDirector}
-  ${If} $R0 <> 0
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorMailServer "ConfigPage2.ini" "Field $R6" "State"
-    IntOp $R6 $R6 + 2
-    !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorMailAddress "ConfigPage2.ini" "Field $R6" "State"
-    IntOp $R6 $R6 + 2
-    !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ConfigPage2.ini" "Field $R6" "State"
-    ${If} $R5 = 1
-      StrCpy $ConfigDirectorDB 1
-    ${Endif}
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ConfigPage2.ini" "Field $R6" "State"
-    ${If} $R5 = 1
-      StrCpy $ConfigDirectorDB 2
-    ${Endif}
-    IntOp $R6 $R6 + 1
-    !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ConfigPage2.ini" "Field $R6" "State"
-    ${If} $R5 = 1
-      StrCpy $ConfigDirectorDB 3
-    ${Endif}
-    IntOp $R6 $R6 + 1
-
-    ${If} $AutomaticInstall = 0
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorInstallService "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorStartService "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${Else}
-    IntOp $R0 $NewComponents & ${ComponentsTextAndGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigDirectorAddress "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${EndIf}
-
-  ${If} $AutomaticInstall = 0
-    IntOp $R0 $NewComponents & ${ComponentsFileAndStorageAndDirector}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 2
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigMonitorName "ConfigPage2.ini" "Field $R6" "State"
-      IntOp $R6 $R6 + 2
-      !insertmacro MUI_INSTALLOPTIONS_READ $ConfigMonitorPassword "ConfigPage2.ini" "Field $R6" "State"
-    ${EndIf}
-  ${EndIf}
-FunctionEnd
-
-Function LeaveConfigPage2
-  ${If} $AutomaticInstall = 0
-    StrCpy $R6 4
-
-    IntOp $R0 $NewComponents & ${ComponentsDirectorAndTextGuiConsoles}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage2.ini" "Field $R6" "State"
-      ${If} $R0 < 1024
-      ${OrIf} $R0 > 65535
-        MessageBox MB_OK "Port must be between 1024 and 65535 inclusive."
-        Abort
-      ${EndIf}
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-
-    IntOp $R0 $NewComponents & ${ComponentDirector}
-    ${If} $R0 <> 0
-      IntOp $R6 $R6 + 1
-      !insertmacro MUI_INSTALLOPTIONS_READ $R0 "ConfigPage2.ini" "Field $R6" "State"
-      ${If} $R0 < 1
-      ${OrIf} $R0 > 99
-        MessageBox MB_OK "Max Jobs must be between 1 and 99 inclusive."
-        Abort
-      ${EndIf}
-      IntOp $R6 $R6 + 1
-    ${EndIf}
-  ${EndIf}
-FunctionEnd
diff --git a/src/win32/win64_installer/DumpLog.nsh b/src/win32/win64_installer/DumpLog.nsh
deleted file mode 100644
index c450044..0000000
--- a/src/win32/win64_installer/DumpLog.nsh
+++ /dev/null
@@ -1,46 +0,0 @@
-!define LVM_GETITEMCOUNT 0x1004
-!define LVM_GETITEMTEXT 0x102D
-
-Function DumpLog
-  Exch $5
-  Push $0
-  Push $1
-  Push $2
-  Push $3
-  Push $4
-  Push $6
-
-  FindWindow $0 "#32770" "" $HWNDPARENT
-  GetDlgItem $0 $0 1016
-  StrCmp $0 0 error
-  FileOpen $5 $5 "w"
-  StrCmp $5 0 error
-    SendMessage $0 ${LVM_GETITEMCOUNT} 0 0 $6
-    System::Alloc ${NSIS_MAX_STRLEN}
-    Pop $3
-    StrCpy $2 0
-    System::Call "*(i, i, i, i, i, i, i, i, i) i \
-      (0, 0, 0, 0, 0, r3, ${NSIS_MAX_STRLEN}) .r1"
-    loop: StrCmp $2 $6 done
-      System::Call "User32::SendMessageA(i, i, i, i) i \
-        ($0, ${LVM_GETITEMTEXT}, $2, r1)"
-      System::Call "*$3(&t${NSIS_MAX_STRLEN} .r4)"
-      FileWrite $5 "$4$\r$\n"
-      IntOp $2 $2 + 1
-      Goto loop
-    done:
-      FileClose $5
-      System::Free $1
-      System::Free $3
-      Goto exit
-  error:
-    MessageBox MB_OK error
-  exit:
-    Pop $6
-    Pop $4
-    Pop $3
-    Pop $2
-    Pop $1
-    Pop $0
-    Exch $5
-FunctionEnd
diff --git a/src/win32/win64_installer/InstallType.ini b/src/win32/win64_installer/InstallType.ini
deleted file mode 100644
index 73fb8d9..0000000
--- a/src/win32/win64_installer/InstallType.ini
+++ /dev/null
@@ -1,56 +0,0 @@
-;
-; Note: certain text in this file is overwritten by the code in
-;   InstallType.nsh
-;
-
-[Settings]
-NumFields=6
-
-[Field 1]
-Type=Label
-Text=This is a new installation.  Please choose the installation type.
-Left=0
-Right=300
-Top=0
-Bottom=28
-
-[Field 2]
-Type=GroupBox
-Text=Installation Type
-Left=0
-Right=300
-Top=32
-Bottom=136
-
-[Field 3]
-Type=RadioButton
-Text=Automatic
-State=1
-Left=6
-Right=52
-Top=44
-Bottom=54
-
-[Field 4]
-Type=RadioButton
-Text=Custom (not recommended)
-Left=6
-Right=252
-Top=90
-Bottom=100
-
-[Field 5]
-Type=Label
-Text=The software will be installed in the default directory "Program Files\\Bacula".  The configuration files will be generated using defaults applicable to most installations.
-Left=17
-Right=295
-Top=58
-Bottom=86
-
-[Field 6]
-Type=Label
-Text=You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work.
-Left=17
-Right=295
-Top=104
-Bottom=132
diff --git a/src/win32/win64_installer/InstallType.nsh b/src/win32/win64_installer/InstallType.nsh
deleted file mode 100644
index a9ddf8c..0000000
--- a/src/win32/win64_installer/InstallType.nsh
+++ /dev/null
@@ -1,102 +0,0 @@
-Function EnterInstallType
-  Push $R0
-  Push $R1
-  Push $R2
-
-  ; Check if this is an upgrade by looking for an uninstaller configured 
-  ; in the registry.
-  ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString"
-
-  ${If} "$R0" != ""
-    ; Check registry for new installer
-    ReadRegStr $R1 HKLM "Software\Bacula" "InstallLocation"
-    ${If} "$R1" != ""
-      ; New Installer 
-      StrCpy $OldInstallDir $R1
-      StrCpy $InstallType ${UpgradeInstall}
-
-      SetShellVarContext all
-
-      StrCpy $R1 "$APPDATA\Bacula"
-      StrCpy $R2 "$INSTDIR\Doc"
-
-      ReadRegDWORD $PreviousComponents HKLM "Software\Bacula" "Components"
-
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 1" "Text" "A previous installation has been found in $OldInstallDir.  Please choose the installation type for any additional components you select."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The configuration files for additional components will be generated using defaults applicable to most installations."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
-
-      ReadRegDWORD $ConfigDirectorDB HKLM Software\Bacula Database
-
-      ${If} $ConfigDirectorDB = 0
-        IntOp $R0 $PreviousComponents & ${ComponentDirector}
-        ${If} $R0 <> 0
-          StrCpy $ConfigDirectorDB 1
-        ${EndIf}
-      ${EndIf}
-    ${Else}
-      ; Processing Upgrade - Get Install Directory
-      ${StrRep} $R0 $R0 '"' ''
-      ${GetParent} $R0 $OldInstallDir
-
-      ; Old Installer 
-      StrCpy $InstallType ${MigrateInstall}
-      StrCpy $R1 "$OldInstallDir\bin"
-      StrCpy $R2 "$OldInstallDir\Doc"
-
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 1" "Text" "An old installation has been found in $OldInstallDir.  The Configuration will be migrated.  Please choose the installation type for any additional components you select."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The software will be installed in the default directory $\"C:\Program Files\Bacula$\".  The configuration files for additional components will be generated using defaults applicable to most installations."
-      WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
-    ${EndIf}
-  ${Else}
-    ; New Install
-    StrCpy $InstallType ${NewInstall}
-    WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 5" "Text" "The software will be installed in the default directory $\"C:\Program Files\Bacula$\".  The configuration files will be generated using defaults applicable to most installations."
-    WriteINIStr "$PLUGINSDIR\InstallType.ini" "Field 6" "Text" "You have more options, but you will have to manually edit your bacula-fd.conf file before Bacula will work."
-  ${EndIf}
-
-  ${If} $InstallType <> ${NewInstall}
-  ${AndIf} $PreviousComponents = 0
-    ${If} ${FileExists} "$R1\bacula-fd.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentFile}
-    ${EndIf}
-    ${If} ${FileExists} "$R1\bconsole.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentTextConsole}
-    ${EndIf}
-    ${If} ${FileExists} "$R1\bat.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentBatConsole}
-    ${EndIf}
-    ${If} ${FileExists} "$R1\wx-console.conf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentGUIConsole}
-    ${EndIf}
-    ${If} ${FileExists} "$R2\main.pdf"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentPDFDocs}
-    ${EndIf}
-    ${If} ${FileExists} "$R2\bacula\bacula.html"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentHTMLDocs}
-    ${EndIf}
-    ${If} ${FileExists} "$R2\bacula.html"
-      IntOp $PreviousComponents $PreviousComponents | ${ComponentHTMLDocs}
-    ${EndIf}
-  ${EndIf}
-
-  !InsertMacro MUI_HEADER_TEXT "$(TITLE_InstallType)" "$(SUBTITLE_InstallType)"
-  !InsertMacro MUI_INSTALLOPTIONS_INITDIALOG "InstallType.ini"
-  Pop $HDLG ;HWND of dialog
-
-  !insertmacro MUI_INSTALLOPTIONS_SHOW
-
-  ; Process Results
-
-  !insertmacro MUI_INSTALLOPTIONS_READ $R0 "InstallType.ini" "Field 3" "State"
-
-  ${If} $R0 = 1
-    StrCpy $AutomaticInstall 1
-  ${Else}
-    StrCpy $AutomaticInstall 0
-  ${EndIf}
-
-  Pop $R2
-  Pop $R1
-  Pop $R0
-FunctionEnd
diff --git a/src/win32/win64_installer/Makefile b/src/win32/win64_installer/Makefile
deleted file mode 100644
index dccd2dc..0000000
--- a/src/win32/win64_installer/Makefile
+++ /dev/null
@@ -1,176 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Eric Bollengier, March 2009 
-#    based on work by Robert Nelson
-#
-
-include ../Makefile.inc
-
-VERSION := $(shell sed -ne 's/.*[ \t]VERSION[ \t][ \t]*"\(.*\)"/\1/p' < ../../version.h)
-
-DEFINES := \
-	-DVERSION=$(VERSION) \
-	-DOUT_DIR=..\\release64 \
-	-DSRC_DIR=release64 \
-	-DWINVER=64 \
-	-DBUILD_TOOLS=MinGW64 \
-
-INSTALL_EXE := $(BUILDDIR)/release64/winbacula-$(VERSION).exe
-
-BACULA_BINARIES := \
-	bacula.dll \
-	exchange-fd.dll \
-	bsleep.exe \
-	bsmtp.exe \
-	bconsole.exe \
-	bacula-fd.exe
-
-DEPKGS32_BINARIES := \
-	sed.exe \
-	expr64.exe \
-	snooze.exe
-
-DEPKGS_BINARIES := \
-	openssl.exe \
-	cryptoeay32-0.9.8.dll \
-	ssleay32-0.9.8.dll \
-	pthreadGCE.dll \
-	zlib1.dll
-
-NONGCC_BINARIES := \
-	libmysql.dll
-
-NONGCC_LIBRARIES := \
-	libpq.dll
-
-MINGW_BINARIES := \
-	mingwm10.dll
-
-SCRIPT_FILES := \
-	mtx-changer.cmd \
-	disk-changer.cmd \
-	dvd-handler.cmd
-
-CAT_FILES := \
-	create_mysql_database.cmd \
-	drop_mysql_database.cmd \
-	make_mysql_tables.cmd \
-	make_mysql_tables.sql \
-	drop_mysql_tables.cmd \
-	drop_mysql_tables.sql \
-	grant_mysql_privileges.cmd \
-	grant_mysql_privileges.sql \
-	make_mysql_catalog_backup.cmd \
-	create_postgresql_database.cmd \
-	create_postgresql_database.sql \
-	drop_postgresql_database.cmd \
-	make_postgresql_tables.cmd \
-	make_postgresql_tables.sql \
-	drop_postgresql_tables.cmd \
-	drop_postgresql_tables.sql \
-	grant_postgresql_privileges.cmd \
-	grant_postgresql_privileges.sql \
-	make_postgresql_catalog_backup.cmd \
-	create_sqlite3_database.cmd \
-	drop_sqlite3_database.cmd \
-	make_sqlite3_tables.cmd \
-	make_sqlite3_tables.sql \
-	drop_sqlite3_tables.cmd \
-	grant_sqlite3_privileges.cmd \
-	make_sqlite3_catalog_backup.cmd \
-	delete_catalog_backup.cmd
-
-DIRD_FILES := \
-	query.sql
-
-SSL_FILES := \
-	openssl.cnf
-
-DOC_FILES := \
-	docs/manuals/en/console/console.pdf \
-	docs/manuals/en/main/main.pdf \
-	docs/manuals/en/misc/misc.pdf \
-	docs/manuals/en/problems/problems.pdf \
-	docs/manuals/en/utility/utility.pdf
-
-##########################################################################
-
-# Targets
-
-.PHONY: all clean installer
-
-all:		$(INSTALL_EXE)
-
-installer:	$(INSTALL_EXE)
-
-clean:
-	@echo "Cleaning `pwd`"
-	$(CMD_ECHO)-rm -f $(INSTALL_EXE)
-	$(CMD_ECHO)-rm -rf release64
-
-#
-# Rules
-#
-
-define Convert_Binary
-release64/$$(notdir $(1)): $(1)
-	$$(call checkdir,$$@)
-	$(ECHO_CMD)cp -f $$^ $$@ ; \
-	$(STAB2CV) $$@
-endef
-
-define Copy_Binary
-release64/$$(notdir $(1)): $(1)
-	$$(call checkdir,$$@)
-	$(ECHO_CMD)cp -f $$^ $$@
-endef
-
-define Copy_Docs
-release64/$(1): $(DOCDIR)/$(1)
-	$$(call checkdir,$$@)
-	$(ECHO_CMD)cp -f $$^ $$(dir $$@)
-endef
-
-$(foreach file,$(addprefix $(DEPKGS32)/bin/, $(DEPKGS32_BINARIES)),$(eval $(call Convert_Binary,$(file))))
-
-$(foreach file,$(addprefix $(DEPKGS)/bin/, $(DEPKGS_BINARIES)),$(eval $(call Convert_Binary,$(file))))
-
-#$(foreach file,$(addprefix $(DEPKGS)/bin/, $(NONGCC_BINARIES)),$(eval $(call Copy_Binary,$(file))))
-
-#$(foreach file,$(addprefix $(DEPKGS)/lib/, $(NONGCC_LIBRARIES)),$(eval $(call Copy_Binary,$(file))))
-
-$(foreach file,$(addprefix $(BINDIR)/, $(BACULA_BINARIES)),$(eval $(call Convert_Binary,$(file))))
-
-#$(foreach file,$(addprefix $(MINGW_DLLDIR)/, $(MINGW_BINARIES)),$(eval $(call Copy_Binary,$(file))))
-
-$(foreach file,$(addprefix $(DEPKGS32)/ssl/, $(SSL_FILES)),$(eval $(call Copy_Binary,$(file))))
-
-#$(foreach file,$(addprefix ../scripts/, $(SCRIPT_FILES)),$(eval $(call Copy_Binary,$(file))))
-
-#$(foreach file,$(addprefix ../cats/, $(CAT_FILES)),$(eval $(call Copy_Binary,$(file))))
-
-#$(foreach file,$(addprefix ../../dird/, $(DIRD_FILES)),$(eval $(call Copy_Binary,$(file))))
-
-#$(foreach file,$(DOC_FILES),$(eval $(call Copy_Docs,$(file))))
-
-$(INSTALL_EXE): winbacula.nsi $(addprefix release64/,$(BACULA_BINARIES) $(DEPKGS_BINARIES) $(DEPKGS32_BINARIES) $(SSL_FILES) )
-	cp -f ../release32/bat.exe release64
-	cp -f ../release32/bacula-tray-monitor.exe release64
-	cp -f ../win32_installer/release32/QtCore4.dll release64
-	cp -f ../win32_installer/release32/QtGui4.dll release64
-	cp -f ../win32_installer/release32/libgcc_s_dw2-1.dll release64
-	cp -f ../win32_installer/release32/mingwm10.dll release64
-	cp -f ../win32_installer/release32/ssleay32.dll release64
-	cp -f ../win32_installer/release32/libeay32.dll release64
-	cp -f ../win32_installer/release32/zlib1.dll release64/zlib132.dll
-	cp -f ../release32/bacula.dll release64/bacula32.dll
-	cp -f ../win32_installer/release32/pthreadGCE.dll release64/pthreadGCE32.dll
-	rm -rf release64/help
-	mkdir -p release64/help
-	cp -f ../win32_installer/release32/help/* release64/help/
-	NSISDIR=$(NSIS_DIR) \
-	$(NSIS_DIR)/makensis -V3 $(DEFINES) winbacula.nsi
-
-include $(BUILDDIR)/Makefile.rules
diff --git a/src/win32/win64_installer/Readme.txt b/src/win32/win64_installer/Readme.txt
deleted file mode 100755
index 670a395..0000000
--- a/src/win32/win64_installer/Readme.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-Bacula - Windows Version Disclaimer
-===================================
-
-Please note, only the Win64 Client (File daemon) is supported.
-The other components (Director, Storage daemon,
-their utilities) are not provided because they have not been ported.
-If you need these components, you can either build them yourself or
-ask Bacula Systems.
-
-Note: the Win64 Client can only be installed on 64 bit Windows Operating
-systems.
-
-
-Bacula - Windows Version Notes
-==============================
-
-These notes highlight how the Windows version of Bacula differs from the 
-other versions.  It also provides any notes additional to the documentation.
-
-For detailed documentation on using, configuring and troubleshooting Bacula,
-please consult the installed documentation or the online documentation at
-http://www.bacula.org/?page=documentation.
-
-
-Start Menu Items
-----------------
-A number of menu items have been created in the Start menu under All Programs
-in the Bacula submenu.  They may be selected to edit the configuration files,
-view the documentation or run one of the console or utility programs.  The 
-choices available will vary depending on the options you chose to install.
-
-
-File Locations
---------------
-Everything is installed in the directory 
-"C:\Program Files\Bacula" unless a different directory was selected during
-installation. Note: due to a bug in the NSIS installer we are using, on 
-64 bit machines appears to install Bacula in "C:\Program Files (x86)\Bacula".
-
-Code Page Problems
--------------------
-Please note that Bacula expects the contents of the configuration files to be 
-written in UTF-8 format. Some translations of "Application Data" have accented
-characters, and apparently the installer writes this translated data in the
-standard Windows code page coding.  This occurs for the Working Directory, and 
-when it happens the daemon will not start since Bacula cannot find the directory.
-The workaround is to manually edit the appropriate conf file and ensure that it
-is written out in UTF-8 format.
-
-The conf files can be edited with any UTF-8 compatible editor, or on most 
-modern Windows machines, you can edit them with notepad, then choose UTF-8
-output encoding before saving them.
diff --git a/src/win32/win64_installer/Start.bat b/src/win32/win64_installer/Start.bat
deleted file mode 100644
index 0b61f7e..0000000
--- a/src/win32/win64_installer/Start.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-rem
-rem Bacula start file for Win95/98/Me
-rem
-cd c:\bacula\bin
-c:\bacula\bin\bacula-fd.exe /service -c c:\bacula\bin\bacula-fd.conf
diff --git a/src/win32/win64_installer/Stop.bat b/src/win32/win64_installer/Stop.bat
deleted file mode 100644
index 3b1d0e5..0000000
--- a/src/win32/win64_installer/Stop.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-rem
-rem Bacula stop file for Win95/98/Me
-rem
-cd c:\bacula\bin
-c:\bacula\bin\bacula-fd.exe /kill
diff --git a/src/win32/win64_installer/WriteTemplates.ini b/src/win32/win64_installer/WriteTemplates.ini
deleted file mode 100644
index 3b3631c..0000000
--- a/src/win32/win64_installer/WriteTemplates.ini
+++ /dev/null
@@ -1,30 +0,0 @@
-[Settings]
-NumFields=3
-CancelEnabled=0
-BackEnabled=0
-
-[Field 1]
-Type="Label"
-Text="A Template of the Client resource can be generated that contains the information about this Client.  This template can then be copied to the Director computer and included in the Director's configuration file."
-Left=7
-Right=293
-Top=6
-Bottom=32
-
-[Field 2]
-Type="CheckBox"
-Text="Save Client template in:"
-Left=6
-Right=240
-Top=38
-Bottom=48
-
-[Field 3]
-Type="FileRequest"
-State="Client.conf"
-Flags=
-Filter=Configuration Files|*.conf|All Files|*.*
-Left=16
-Right=288
-Top=50
-Bottom=62
diff --git a/src/win32/win64_installer/bacula-dir.conf.in b/src/win32/win64_installer/bacula-dir.conf.in
deleted file mode 100644
index c42f225..0000000
--- a/src/win32/win64_installer/bacula-dir.conf.in
+++ /dev/null
@@ -1,380 +0,0 @@
-#
-# Default Bacula Director Configuration file
-#
-#  The only thing that MUST be changed is to add one or more
-#   file or directory names in the Include directive of the
-#   FileSet resource.
-#
-#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@ @DISTVER@
-#
-#  You might also want to change the default email address
-#   from root to your address.  See the "mail" and "operator"
-#   directives in the Messages resource.
-#
-
-Director {                            # define myself
-  Name = @director_name@
-  DIRport = @director_port@                # where we listen for UA connections
-  QueryFile = "@bin_dir@\\query.sql"
-  WorkingDirectory = "@working_dir@"
-  PidDirectory = "@working_dir@"
-  Maximum Concurrent Jobs = @director_maxjobs@
-  Password = "@director_password@"         # Console password
-  Messages = Daemon
-}
-
-JobDefs {
-  Name = "DefaultJob"
-  Type = Backup
-  Level = Incremental
-  Client = @client_name@
-  FileSet = "Test Set"
-  Schedule = "WeeklyCycle"
-  Storage = File
-  Messages = Standard
-  Pool = Default
-  Priority = 10
-}
-
-
-#
-# Define the main nightly save backup job
-#   By default, this job will back up to disk in C:/tmp
-Job {
-  Name = "Client1"
-  JobDefs = "DefaultJob"
-  Write Bootstrap = "@working_dir@\\Client1.bsr"
-}
-
-#Job {
-#  Name = "Client2"
-#  Client = @client_name at 2
-#  JobDefs = "DefaultJob"
-#  Write Bootstrap = "@working_dir@\\Client2.bsr"
-#}
-
-# Backup the catalog database (after the nightly save)
-Job {
-  Name = "BackupCatalog"
-  JobDefs = "DefaultJob"
-  Level = Full
-  FileSet="Catalog"
-  Schedule = "WeeklyCycleAfterBackup"
-  # This creates an ASCII copy of the catalog
-  RunBeforeJob = "\"@bin_dir@\\make_catalog_backup\" bacula bacula"
-  # This deletes the copy of the catalog
-  RunAfterJob  = "\"@bin_dir@\\delete_catalog_backup\""
-  Write Bootstrap = "@working_dir@\\BackupCatalog.bsr"
-  Priority = 11                   # run after main backup
-}
-
-#
-# Standard Restore template, to be changed by Console program
-#  Only one such job is needed for all Jobs/Clients/Storage ...
-#
-Job {
-  Name = "RestoreFiles"
-  Type = Restore
-  Client=@client_name@
-  FileSet="Test Set"
-  Storage = File
-  Pool = Default
-  Messages = Standard
-  Where = "C:\\tmp\\bacula-restores"
-}
-
-#
-# Note: Windows path separators do NOT work correctly in FileSets.
-#
-# List of files to be backed up
-FileSet {
-  Name = "Test Set"
-  Include {
-    Options {
-      signature = MD5
-      ignore case = yes
-    }
-#    
-#  Put your list of files here, preceded by 'File =', one per line
-#    or include an external list with:
-#
-#    File = <file-name
-#
-#  Note: C:/ backs up everything on drive C.
-#    if you have other drives such as D:/
-#    you will probably want to add them too.
-#
-#  By default this is defined to point to the Bacula 
-#    directory to give a reasonable FileSet to backup to
-#    disk storage during initial testing.
-#
-    File = "@BUILD_DIR@"
-  }
-
-#
-# If you backup the root directory, the following excluded
-#   files can be useful
-#
-  Exclude {
-    File = C:/Temp
-    File = C:/tmp
-  }
-}
-
-#
-# This is an example which will backup all the hard drives of a Windows System.
-#
-FileSet {
-  Name = "Windows Full Set"
-  Enable VSS = yes
-  Include {
-    Options {
-      Signature = MD5
-      Exclude = yes
-      IgnoreCase = yes
-      EnhancedWild = yes
-      DriveType = fixed
-
-      # Exclude directories full of lots and lots of useless little files
-      WildDir = "[A-Z]:/Documents and Settings/*/Cookies"
-      WildDir = "[A-Z]:/Documents and Settings/*/Recent"
-      WildDir = "[A-Z]:/Documents and Settings/*/{Local Settings,LOCALS~1}/History"
-      WildDir = "[A-Z]:/Documents and Settings/*/{Local Settings,LOCALS~1}/Temp"
-      WildDir = "[A-Z]:/Documents and Settings/*/{Local Settings,LOCALS~1}/Temporary Internet Files"
-
-      # Exclude directories full of lots and lots of useless little files
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/Cookies"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/Recent"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/{Local Settings,LOCALS~1}/History"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/{Local Settings,LOCALS~1}/Temp"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Profiles/*/{Local Settings,LOCALS~1}/Temporary Internet Files"
-
-      # Exclude directories full of lots and lots of useless little files
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/Cookies"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/Recent"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/{Local Settings,LOCALS~1}/History"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/{Local Settings,LOCALS~1}/Temp"
-      WildDir = "[A-Z]:/{WINNT,Windows}/system32/config/systemprofile/{Local Settings,LOCALS~1}/Temporary Internet Files"
-
-      # Some random bits of Windows we want to ignore
-      WildDir = "[A-Z]:/{WINNT,Windows}/Prefetch"
-      WildDir = "[A-Z]:/{WINNT,Windows}/msdownld.tmp"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Internet Logs"
-      WildDir = "[A-Z]:/{WINNT,Windows}/$Nt*Uninstall*"
-      WildDir = "[A-Z]:/{WINNT,Windows}/Downloaded Installations"
-
-      # Temporary directories & files
-      WildDir = "[A-Z]:/{WINNT,Windows}/Temp"
-      WildDir = "[A-Z]:/Temp"
-      WildFile = "*.tmp"
-      WildDir = "[A-Z]:/tmp"
-
-      # Fast Find
-      WildFile = "[A-Z]:/ffastun*"
-
-      # System Restore
-      WildDir = "[A-Z]:/System Volume Information"
-
-      # Windows Update
-      WildDir = "[A-Z]:/WUTemp"
-
-      # Recycle bins
-      WildDir = "[A-Z]:/RECYCLE[DR]"
-
-      # Swap files
-      WildFile = "[A-Z]:/pagefile.sys"
-      WildFile = "[A-Z]:/hiberfil.sys"
-
-      # These are programs and are easier to reinstall than restore from
-      # backup
-      WildDir = "[A-Z]:/cygwin"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/Java"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/Java Web Start"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/JavaSoft"
-      WildDir = "[A-Z]:/{Program Files,PROGRA~1}/Microsoft Office"
-    }
-
-    File = "C:/"
-    File = "D:/"
-    File = "E:/"
-    File = "F:/"
-    File = "G:/"
-    File = "H:/"
-    File = "I:/"
-    File = "J:/"
-    File = "K:/"
-    File = "L:/"
-    File = "M:/"
-    File = "N:/"
-    File = "O:/"
-    File = "P:/"
-    File = "Q:/"
-    File = "R:/"
-    File = "S:/"
-    File = "T:/"
-    File = "U:/"
-    File = "V:/"
-    File = "W:/"
-    File = "X:/"
-    File = "Y:/"
-    File = "Z:/"
-  }
-}
-
-#
-# When to do the backups, full backup on first sunday of the month,
-#  differential (i.e. incremental since full) every other sunday,
-#  and incremental backups other days
-Schedule {
-  Name = "WeeklyCycle"
-  Run = Full 1st sun at 23:05
-  Run = Differential 2nd-5th sun at 23:05
-  Run = Incremental mon-sat at 23:05
-}
-
-# This schedule does the catalog. It starts after the WeeklyCycle
-Schedule {
-  Name = "WeeklyCycleAfterBackup"
-  Run = Full sun-sat at 23:10
-}
-
-# This is the backup of the catalog
-FileSet {
-  Name = "Catalog"
-  Include {
-    Options {
-      signature = MD5
-    }
-    File = "@working_dir@\\bacula.sql"
-  }
-}
-
-# Client (File Services) to backup
-Client {
-  Name = @client_name@
-  Address = @client_address@
-  FDPort = @client_port@
-  Catalog = MyCatalog
-  Password = "@client_password@"      # password for FileDaemon
-  File Retention = 30 days            # 30 days
-  Job Retention = 6 months            # six months
-  AutoPrune = yes                     # Prune expired Jobs/Files
-}
-
-#
-# Second Client (File Services) to backup
-#  You should change Name, Address, and Password before using
-#
-#Client {
-#  Name = @client_name at 2
-#  Address = @client_address at 2
-#  FDPort = @client_port@
-#  Catalog = MyCatalog
-#  Password = "@client_password at 2"     # password for FileDaemon 2
-#  File Retention = 30 days            # 30 days
-#  Job Retention = 6 months            # six months
-#  AutoPrune = yes                     # Prune expired Jobs/Files
-#}
-
-
-# Definition of file storage device
-Storage {
-  Name = File
-# Do not use "localhost" here
-  Address = @storage_address@                # N.B. Use a fully qualified name here
-  SDPort = @storage_port@
-  Password = "@storage_password@"
-  Device = FileStorage
-  Media Type = File
-}
-
-
-
-# Definition of DDS tape storage device
-#Storage {
-#  Name = DDS-4    
-#  Do not use "localhost" here
-#  Address = @storage_address@                # N.B. Use a fully qualified name here
-#  SDPort = @storage_port@
-#  Password = "@storage_password@"          # password for Storage daemon
-#  Device = DDS-4                      # must be same as Device in Storage daemon
-#  Media Type = DDS-4                  # must be same as MediaType in Storage daemon
-#  Autochanger = yes                   # enable for autochanger device
-#}
-
-# Definition of 8mm tape storage device
-#Storage {
-#  Name = "8mmDrive"
-#  Do not use "localhost" here
-#  Address = @storage_address@                # N.B. Use a fully qualified name here
-#  SDPort = @storage_port@
-#  Password = "@storage_password@"
-#  Device = "Exabyte 8mm"
-#  MediaType = "8mm"
-#}
-
-
-# Generic catalog service
-Catalog {
-  Name = MyCatalog
-  dbname = bacula; user = bacula; password = ""
-}
-
-# Reasonable message delivery -- send most everything to email address
-#  and to the console
-Messages {
-  Name = Standard
-#
-# NOTE! If you send to two email or more email addresses, you will need
-#  to replace the %r in the from field (-f part) with a single valid
-#  email address in both the mailcommand and the operatorcommand.
-#
-  mailcommand = "\"@bin_dir@\\bsmtp\" -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
-  operatorcommand = "\"@bin_dir@\\bsmtp\" -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed for %j\" %r"
-  mail = @job_email@ = all, !skipped            
-  operator = @job_email@ = mount
-  console = all, !skipped, !saved
-#
-# WARNING! the following will create a file that you must cycle from
-#          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
-}
-
-
-#
-# Message delivery for daemon messages (no job).
-Messages {
-  Name = Daemon
-  mailcommand = "\"@bin_dir@\\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
-}
-
-
-
-# Default pool definition
-Pool {
-  Name = Default
-  Pool Type = Backup
-  Recycle = yes                       # Bacula can automatically recycle Volumes
-  AutoPrune = yes                     # Prune expired volumes
-  Volume Retention = 365 days         # one year
-}
-
-# Scratch pool definition
-Pool {
-  Name = Scratch
-  Pool Type = Backup
-}
-
-#
-# Restricted console used by tray-monitor to get the status of the director
-#
-Console {
-  Name = @monitor_name@
-  Password = "@monitor_password@"
-  CommandACL = status, .status
-}
diff --git a/src/win32/win64_installer/bacula-fd.conf.in b/src/win32/win64_installer/bacula-fd.conf.in
deleted file mode 100644
index 5d4c7f9..0000000
--- a/src/win32/win64_installer/bacula-fd.conf.in
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Default  Bacula File Daemon Configuration file
-#
-#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@ @DISTVER@
-#
-# There is not much to change here except perhaps the
-# File daemon Name
-#
-
-#
-# "Global" File daemon configuration specifications
-#
-FileDaemon {                            # this is me
-  Name = @client_name@
-  FDport = @client_port@                # where we listen for the director
-  WorkingDirectory = "@working_dir@"
-  Pid Directory = "@working_dir@"
-# Plugin Directory = "@fdplugins_dir@"
-  Maximum Concurrent Jobs = @client_maxjobs@
-}
-
-#
-# List Directors who are permitted to contact this File daemon
-#
-Director {
-  Name = @director_name@
-  Password = "@client_password@"
-}
-
-#
-# Restricted Director, used by tray-monitor to get the
-#   status of the file daemon
-#
-Director {
-  Name = @monitor_name@
-  Password = "@monitor_password@"
-  Monitor = yes
-}
-
-# Send all messages except skipped files back to Director
-Messages {
-  Name = Standard
-  director = @director_name@ = all, !skipped, !restored
-}
diff --git a/src/win32/win64_installer/bacula-logo.bmp b/src/win32/win64_installer/bacula-logo.bmp
deleted file mode 100644
index 9a9cf97..0000000
Binary files a/src/win32/win64_installer/bacula-logo.bmp and /dev/null differ
diff --git a/src/win32/win64_installer/bacula-sd.conf.in b/src/win32/win64_installer/bacula-sd.conf.in
deleted file mode 100644
index 9e66212..0000000
--- a/src/win32/win64_installer/bacula-sd.conf.in
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# Default Bacula Storage Daemon Configuration file
-#
-#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@ @DISTVER@
-#
-# You may need to change the name of your tape drive
-#   on the "Archive Device" directive in the Device
-#   resource.  If you change the Name and/or the 
-#   "Media Type" in the Device resource, please ensure
-#   that bacula-dir.conf has corresponding changes.
-#
-
-Storage {                             # definition of myself
-  Name = @storage_name@
-  SDPort = @storage_port@                  # Director's port      
-  WorkingDirectory = "@working_dir@"
-  Pid Directory = "@working_dir@"
-  Maximum Concurrent Jobs = @storage_maxjobs@
-}
-
-#
-# List Directors who are permitted to contact Storage daemon
-#
-Director {
-  Name = @director_name@
-  Password = "@storage_password@"
-}
-
-#
-# Restricted Director, used by tray-monitor to get the
-#   status of the storage daemon
-#
-Director {
-  Name = @monitor_name@
-  Password = "@monitor_password@"
-  Monitor = yes
-}
-
-#
-# Devices supported by this Storage daemon
-# To connect, the Director's bacula-dir.conf must have the
-#  same Name and MediaType. 
-#
-
-Device {
-  Name = FileStorage
-  Media Type = File
-  Archive Device = "C:\\Tmp"
-  LabelMedia = yes                   # lets Bacula label unlabeled media
-  Random Access = Yes
-  AutomaticMount = yes               # when device opened, read it
-  RemovableMedia = no
-  AlwaysOpen = no
-}
-
-#
-# An autochanger device with two drives
-#
-#Autochanger {
-#  Name = Autochanger
-#  Device = Drive-1
-#  Device = Drive-2
-#  Changer Command = "mtx-changer %c %o %S %a %d"
-#  Changer Device = Changer0
-#}
-
-#Device {
-#  Name = Drive-1                      #
-#  Drive Index = 0
-#  Media Type = DLT-8000
-#  Device Type = Tape
-#  Archive Device = Tape0
-#  AutomaticMount = yes               # when device opened, read it
-#  AlwaysOpen = yes
-#  RemovableMedia = yes
-#  RandomAccess = no
-#  AutoChanger = yes
-#  Alert Command = "tapeinfo -f %c | findstr TapeAlert"
-#}
-
-#Device {
-#  Name = Drive-2                      #
-#  Drive Index = 1
-#  Media Type = DLT-8000
-#  Device Type = Tape
-#  Archive Device = Tape1
-#  AutomaticMount = yes               # when device opened, read it
-#  AlwaysOpen = yes
-#  RemovableMedia = yes
-#  RandomAccess = no
-#  AutoChanger = yes
-#  Alert Command = "tapeinfo -f %c | findstr TapeAlert"
-#}
-
-#
-#Device {
-#  Name = DDS-4                        # 
-#  Media Type = DDS-4
-#  Device Type = Tape
-#  Archive Device = Tape0
-#  AutomaticMount = yes               # when device opened, read it
-#  AlwaysOpen = yes
-#  RemovableMedia = yes
-#  RandomAccess = no
-#  Alert Command = "tapeinfo -f %c | findstr TapeAlert"
-#}
-
-# 
-# Send all messages to the Director, 
-# mount messages also are sent to the email address
-#
-Messages {
-  Name = Standard
-  director = @director_name@ = all
-}
diff --git a/src/win32/win64_installer/bat.conf.in b/src/win32/win64_installer/bat.conf.in
deleted file mode 100644
index 7f0b5f1..0000000
--- a/src/win32/win64_installer/bat.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula Administration Tool (bat) Configuration File
-#
-
-Director {
-  Name = @director_name@
-  DIRport = @director_port@
-  address = @director_address@
-  Password = "@director_password@"
-}
diff --git a/src/win32/win64_installer/bconsole.conf.in b/src/win32/win64_installer/bconsole.conf.in
deleted file mode 100644
index 4f60389..0000000
--- a/src/win32/win64_installer/bconsole.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula User Agent (or Console) Configuration File
-#
-
-Director {
-  Name = @director_name@
-  DIRport = @director_port@
-  address = @director_address@
-  Password = "@director_password@"
-}
diff --git a/src/win32/win64_installer/bwx-console.conf.in b/src/win32/win64_installer/bwx-console.conf.in
deleted file mode 100644
index 4f60389..0000000
--- a/src/win32/win64_installer/bwx-console.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula User Agent (or Console) Configuration File
-#
-
-Director {
-  Name = @director_name@
-  DIRport = @director_port@
-  address = @director_address@
-  Password = "@director_password@"
-}
diff --git a/src/win32/win64_installer/client.conf.in b/src/win32/win64_installer/client.conf.in
deleted file mode 100644
index 5f2abe4..0000000
--- a/src/win32/win64_installer/client.conf.in
+++ /dev/null
@@ -1,11 +0,0 @@
-# Client (File Services) to backup
-Client {
-  Name = @client_name@
-  Address = @client_address@
-  FDPort = @client_port@
-  Catalog = MyCatalog
-  Password = "@client_password@"      # password for FileDaemon
-  File Retention = 30 days            # 30 days
-  Job Retention = 6 months            # six months
-  AutoPrune = yes                     # Prune expired Jobs/Files
-}
diff --git a/src/win32/win64_installer/installer.vcproj b/src/win32/win64_installer/installer.vcproj
deleted file mode 100644
index 18ddc6e..0000000
--- a/src/win32/win64_installer/installer.vcproj
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8.00"
-	Name="installer"
-	ProjectGUID="{6D1B0964-FB32-4916-A61C-49D7F715EAD8}"
-	RootNamespace="installer"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="0"
-			>
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="build-installer $(SolutionDir) $(ConfigurationName) VC8_DEBUG "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				ReBuildCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe&#x0D;&#x0A;build-installer $(SolutionDir) $(ConfigurationName) VC8_DEBUG "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				CleanCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe"
-				Output=""
-				PreprocessorDefinitions="VERSION=$(VERSION);DOC_DIR=..\..\..\..\docs;BUILD_TOOLS=VC8_DEBUG;VC_REDIST_DIR=$(VCInstallDir)redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT;DEPKGS_BIN=..\..\..\..\depkgs-msvc\bin;BACULA_BIN=..\$(ConfigurationName);CATS_DIR=..\cats;SCRIPT_DIR=..\scripts"
-				IncludeSearchPath=""
-				ForcedIncludes=""
-				AssemblySearchPath=""
-				ForcedUsingAssemblies=""
-				CompileAsManaged=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="0"
-			>
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="build-installer $(SolutionDir) $(ConfigurationName) VC8 "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				ReBuildCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe&#x0D;&#x0A;build-installer $(SolutionDir) $(ConfigurationName) VC8 "$(VCInstallDir)redist"&#x0D;&#x0A;"
-				CleanCommandLine="del $(SolutionDir)$(ConfigurationName)\winbacula-*.exe"
-				Output=""
-				PreprocessorDefinitions=""
-				IncludeSearchPath=""
-				ForcedIncludes=""
-				AssemblySearchPath=""
-				ForcedUsingAssemblies=""
-				CompileAsManaged=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath=".\resource.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\Dialogs.rc"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath=".\bacula-dir.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\bacula-fd.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\bacula-sd.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\bconsole.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\build-installer.cmd"
-			>
-		</File>
-		<File
-			RelativePath=".\client.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\ConfigPage1.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\ConfigPage2.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\DumpLog.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\InstallType.ini"
-			>
-		</File>
-		<File
-			RelativePath=".\InstallType.nsh"
-			>
-		</File>
-		<File
-			RelativePath=".\Readme.txt"
-			>
-		</File>
-		<File
-			RelativePath=".\storage.conf.in"
-			>
-		</File>
-		<File
-			RelativePath=".\winbacula.nsi"
-			>
-		</File>
-		<File
-			RelativePath=".\WriteTemplates.ini"
-			>
-		</File>
-		<File
-			RelativePath=".\wx-console.conf.in"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/src/win32/win64_installer/storage.conf.in b/src/win32/win64_installer/storage.conf.in
deleted file mode 100644
index 5928815..0000000
--- a/src/win32/win64_installer/storage.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-# Definition of file storage device
-Storage {
-  Name = File
-# Do not use "localhost" here    
-  Address = @storage_address@                # N.B. Use a fully qualified name here
-  SDPort = @storage_port@
-  Password = "@storage_password@"
-  Device = FileStorage
-  Media Type = File
-}
diff --git a/src/win32/win64_installer/tray-monitor.conf.in b/src/win32/win64_installer/tray-monitor.conf.in
deleted file mode 100644
index a981225..0000000
--- a/src/win32/win64_installer/tray-monitor.conf.in
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Bacula Tray Monitor Configuration File
-#
-
-Monitor {
-  Name = @monitor_name@
-  Password = "@mon_password@"         # password for the Directors   
-  RefreshInterval = 30 seconds
-}
-   
-Client {
-  Name = @client_name@
-  Address = localhost
-  FDPort = @client_port@
-  Password = "@monitor_password@"
-}
-
-#Storage {
-#  Name = @basename at -sd
-#  Address = @hostname@
-#  SDPort = @sd_port@
-#  Password = "@mon_sd_password@"          # password for StorageDaemon
-#}
-#
-#Director {
-#  Name = @basename at -dir
-#  DIRport = @dir_port@
-#  address = @hostname@
-#}
-#
diff --git a/src/win32/win64_installer/winbacula.nsi b/src/win32/win64_installer/winbacula.nsi
deleted file mode 100644
index f9c1bbb..0000000
--- a/src/win32/win64_installer/winbacula.nsi
+++ /dev/null
@@ -1,993 +0,0 @@
-; winbacula.nsi
-;
-; Began as a version written by Michel Meyers (michel at tcnnet.dyndns.org)
-;
-; Adapted by Kern Sibbald for native Win32 Bacula
-;    added a number of elements from Christopher Hull's installer
-;
-; D. Scott Barninger Nov 13 2004
-; added configuration editing for bconsole.conf and bwx-console.conf
-; better explanation in dialog boxes for editing config files
-; added Start Menu items
-; fix uninstall of config files to do all not just bacula-fd.conf
-;
-; D. Scott Barninger Dec 05 2004
-; added specification of default permissions for bacula-fd.conf
-;   - thanks to Jamie Ffolliott for pointing me at cacls
-; added removal of working-dir files if user selects to remove config
-; uninstall is now 100% clean
-;
-; D. Scott Barninger Apr 17 2005
-; 1.36.3 release docs update
-; add pdf manual and menu shortcut
-;
-; Robert Nelson May 15 2006
-; Added server installs and implemented Microsoft install locations
-; Use LogicLib.nsh
-; Added Bacula-SD and Bacula-DIR
-; Replaced ParameterGiven with standard GetOptions
-;
-; Kern Sibbald October 2008
-; Remove server installs
-; Install into single bacula directory
-;  (i.e. undo a large part of what Robert Nelson did)
-;
-; Eric Bollengier March 2009
-; Updated to handle Win64 installation
-;
-; Kern Sibbald April 2009
-; Correct some Win64 install problems
-; It is mind boggling how many lines of this insane scripting language
-;   have been written with absolutely no comments
-;
-; Command line options:
-;
-; /service    - 
-; /start
-;
-; netsh firewall add portopening protocol=tcp port=9102 name="Bacula-FD"
-
-
-!define PRODUCT "Bacula"
-
-;
-; Include the Modern UI
-;
-
-!include "MUI.nsh"
-!include "LogicLib.nsh"
-!include "FileFunc.nsh"
-!include "Sections.nsh"
-!include "StrFunc.nsh"
-!include "WinMessages.nsh"
-;
-; Basics
-;
-Name "Bacula"
-OutFile "${OUT_DIR}\bacula-win${WINVER}-${VERSION}.exe"
-SetCompressor lzma
-
-InstallDir "C:\Program Files\Bacula"
-InstallDirRegKey HKLM "Software\Bacula" "InstallLocation"
-
-InstType "Client"
-;InstType "Server"
-;InstType "Full"
-
-!insertmacro GetParent
-
-${StrCase}
-${StrRep}
-${StrTok}
-${StrTrimNewLines}
-
-;
-; Pull in pages
-;
-
-!define      MUI_COMPONENTSPAGE_SMALLDESC
-
-!define      MUI_HEADERIMAGE
-!define      MUI_BGCOLOR                739AB9
-!define      MUI_HEADERIMAGE_BITMAP     "bacula-logo.bmp"
-
-!InsertMacro MUI_PAGE_WELCOME
-!InsertMacro MUI_PAGE_LICENSE "..\..\..\LICENSE"
-Page custom EnterInstallType
-!define      MUI_PAGE_CUSTOMFUNCTION_SHOW PageComponentsShow
-!InsertMacro MUI_PAGE_COMPONENTS
-!define      MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
-!InsertMacro MUI_PAGE_DIRECTORY
-Page custom EnterConfigPage1 LeaveConfigPage1
-Page custom EnterConfigPage2 LeaveConfigPage2
-!Define      MUI_PAGE_CUSTOMFUNCTION_LEAVE LeaveInstallPage
-!InsertMacro MUI_PAGE_INSTFILES
-Page custom EnterWriteTemplates
-!Define      MUI_FINISHPAGE_SHOWREADME $INSTDIR\Readme.txt
-!InsertMacro MUI_PAGE_FINISH
-
-!InsertMacro MUI_UNPAGE_WELCOME
-!InsertMacro MUI_UNPAGE_CONFIRM
-!InsertMacro MUI_UNPAGE_INSTFILES
-!InsertMacro MUI_UNPAGE_FINISH
-
-!define      MUI_ABORTWARNING
-
-!InsertMacro MUI_LANGUAGE "English"
-
-!InsertMacro GetParameters
-!InsertMacro GetOptions
-
-DirText "Setup will install Bacula ${VERSION} to the directory specified below. To install in a different folder, click Browse and select another folder."
-
-!InsertMacro MUI_RESERVEFILE_INSTALLOPTIONS
-;
-; Global Variables
-;
-Var OptService
-Var OptStart
-Var OptSilent
-
-Var CommonFilesDone
-
-Var OsIsNT
-
-Var HostName
-
-Var ConfigClientName
-Var ConfigClientPort
-Var ConfigClientMaxJobs
-Var ConfigClientPassword
-Var ConfigClientInstallService
-Var ConfigClientStartService
-
-Var ConfigStorageName
-Var ConfigStoragePort
-Var ConfigStorageMaxJobs
-Var ConfigStoragePassword
-Var ConfigStorageInstallService
-Var ConfigStorageStartService
-
-Var ConfigDirectorName
-Var ConfigDirectorPort
-Var ConfigDirectorMaxJobs
-Var ConfigDirectorPassword
-Var ConfigDirectorAddress
-Var ConfigDirectorMailServer
-Var ConfigDirectorMailAddress
-Var ConfigDirectorDB
-Var ConfigDirectorInstallService
-Var ConfigDirectorStartService
-
-Var ConfigMonitorName
-Var ConfigMonitorPassword
-
-Var LocalDirectorPassword
-Var LocalHostAddress
-
-Var MySQLPath
-Var MySQLVersion
-Var PostgreSQLPath
-Var PostgreSQLVersion
-
-Var AutomaticInstall
-Var InstallType
-
-!define NewInstall      0
-!define UpgradeInstall  1
-!define MigrateInstall  2
-
-Var OldInstallDir
-Var PreviousComponents
-Var NewComponents
-
-; Bit 0 = File Service
-;     1 = Storage Service
-;     2 = Director Service
-;     3 = Command Console
-;     4 = Bat Console
-;     5 = wxWidgits Console
-;     6 = Documentation (PDF)
-;     7 = Documentation (HTML)
-;    10 = Tray Monitor
-
-!define ComponentFile                   1
-!define ComponentStorage                2
-!define ComponentDirector               4
-!define ComponentTextConsole            8
-!define ComponentBatConsole             16
-!define ComponentGUIConsole             32
-!define ComponentPDFDocs                64
-!define ComponentHTMLDocs               128
-!define ComponentTrayMonitor            1024
-
-!define ComponentsRequiringUserConfig           63
-!define ComponentsFileAndStorage                3
-!define ComponentsFileAndStorageAndDirector     7
-!define ComponentsDirectorAndTextGuiConsoles    60
-!define ComponentsTextAndGuiConsoles            56
-
-Var HDLG
-Var HCTL
-
-Function .onInit
-  Push $R0
-  Push $R1
-
-  ; Process Command Line Options
-  StrCpy $OptService 1
-  StrCpy $OptStart 1
-  StrCpy $OptSilent 0
-  StrCpy $CommonFilesDone 0
-  StrCpy $OsIsNT 0
-  StrCpy $AutomaticInstall 0
-  StrCpy $InstallType ${NewInstall}
-  StrCpy $OldInstallDir ""
-  StrCpy $PreviousComponents 0
-  StrCpy $NewComponents 0
-  StrCpy $MySQLPath ""
-  StrCpy $MySQLVersion ""
-  StrCpy $PostgreSQLPath ""
-  StrCpy $PostgreSQLVersion ""
-  StrCpy $LocalDirectorPassword ""
-
-  ${GetParameters} $R0
-
-  ClearErrors
-  ${GetOptions} $R0 "/noservice" $R1
-  IfErrors +2
-    StrCpy $OptService 0
-
-  ClearErrors
-  ${GetOptions} $R0 "/nostart" $R1
-  IfErrors +2
-    StrCpy $OptStart 0
-
-  IfSilent 0 +2
-    StrCpy $OptSilent 1
-
-  ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  ${If} $R0 != ""
-    StrCpy $OsIsNT 1
-  ${EndIf}
-
-  Call GetComputerName
-  Pop $HostName
-
-  Call GetHostName
-  Pop $LocalHostAddress
-
-  Call GetUserName
-
-  ; Configuration Defaults
-
-  StrCpy $ConfigClientName               "$HostName-fd"
-  StrCpy $ConfigClientPort               9102
-  StrCpy $ConfigClientMaxJobs            10
-  ;StrCpy $ConfigClientPassword
-  StrCpy $ConfigClientInstallService     "$OptService"
-  StrCpy $ConfigClientStartService       "$OptStart"
-
-  StrCpy $ConfigDirectorPort             9101
-
-  StrCpy $ConfigMonitorName              "$HostName-mon"
-  ;StrCpy $ConfigMonitorPassword
-
-; PLUGINSDIR refers to temporary helper programs and not Bacula plugins!
-  InitPluginsDir
-  File "/oname=$PLUGINSDIR\openssl.exe"  "${SRC_DIR}\openssl.exe"
-  File "/oname=$PLUGINSDIR\ssleay32-0.9.8.dll" "${SRC_DIR}\ssleay32-0.9.8.dll"
-  File "/oname=$PLUGINSDIR\cryptoeay32-0.9.8.dll" "${SRC_DIR}\cryptoeay32-0.9.8.dll"        
-;  File "/oname=$PLUGINSDIR\libeay32.dll" "${SRC_DIR}\libeay32.dll"
-;  File "/oname=$PLUGINSDIR\ssleay32.dll" "${SRC_DIR}\ssleay32.dll"
-  File "/oname=$PLUGINSDIR\sed.exe"      "${SRC_DIR}\sed.exe"
-
-  !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "InstallType.ini"
-  !InsertMacro MUI_INSTALLOPTIONS_EXTRACT "WriteTemplates.ini"
-
-  SetPluginUnload alwaysoff
-
-; Set client password
-  nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
-  pop $R0
-  ${If} $R0 = 0
-   FileOpen $R1 "$PLUGINSDIR\pw.txt" r
-   IfErrors +4
-     FileRead $R1 $R0
-     ${StrTrimNewLines} $ConfigClientPassword $R0
-     FileClose $R1
-  ${EndIf}
-
-  SetPluginUnload manual
-
-; Set monitor password
-  nsExec::Exec '"$PLUGINSDIR\openssl.exe" rand -base64 -out $PLUGINSDIR\pw.txt 33'
-  pop $R0
-  ${If} $R0 = 0
-   FileOpen $R1 "$PLUGINSDIR\pw.txt" r
-   IfErrors +4
-     FileRead $R1 $R0
-     ${StrTrimNewLines} $ConfigMonitorPassword $R0
-     FileClose $R1
-  ${EndIf}
-
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-Function .onSelChange
-  Call UpdateComponentUI
-FunctionEnd
-
-Function InstallCommonFiles
-  ${If} $CommonFilesDone = 0
-    SetOutPath "$INSTDIR"
-    File "Readme.txt"
-
-    SetOutPath "$INSTDIR"
-!if "${BUILD_TOOLS}" == "MinGW32"
-    File "${SRC_DIR}\mingwm10.dll"
-    File "${SRC_DIR}\pthreadGCE.dll"
-    File "${SRC_DIR}\zlib1.dll"
-    File "${SRC_DIR}\ssleay32.dll"
-    File "${SRC_DIR}\libeay32.dll"
-!endif
-!if "${BUILD_TOOLS}" == "MinGW64"
-    File "${SRC_DIR}\pthreadGCE.dll"
-    File "${SRC_DIR}\cryptoeay32-0.9.8.dll"
-    File "${SRC_DIR}\ssleay32-0.9.8.dll"
-    File "${SRC_DIR}\zlib1.dll"
-!endif
-    File "${SRC_DIR}\bacula.dll"
-    File "/oname=$INSTDIR\openssl.cnf" "${SRC_DIR}\openssl.cnf"
-    File "${SRC_DIR}\openssl.exe"
-    File "${SRC_DIR}\bsleep.exe"
-    File "${SRC_DIR}\bsmtp.exe"
-    File "${SRC_DIR}\expr64.exe"
-    File "${SRC_DIR}\snooze.exe"
-
-    CreateShortCut "$SMPROGRAMS\Bacula\Documentation\View Readme.lnk" "write.exe" '"$INSTDIR\Readme.txt"'
-
-    StrCpy $CommonFilesDone 1
-  ${EndIf}
-FunctionEnd
-
-Section "-Initialize"
-
-  WriteRegStr   HKLM Software\Bacula InstallLocation "$INSTDIR"
-
-  Call GetSelectedComponents
-  Pop $R2
-  WriteRegDWORD HKLM Software\Bacula Components $R2
-
-  ; remove start menu items
-  SetShellVarContext all
-
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\Configuration\*"
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\Documentation\*"
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
-  RMDir "$SMPROGRAMS\Bacula\Configuration"
-  RMDir "$SMPROGRAMS\Bacula\Documentation"
-  RMDir "$SMPROGRAMS\Bacula"
-  CreateDirectory "$SMPROGRAMS\Bacula"
-  CreateDirectory "$SMPROGRAMS\Bacula\Configuration"
-  CreateDirectory "$SMPROGRAMS\Bacula\Documentation"
-
-  CreateDirectory "$INSTDIR"
-  CreateDirectory "$INSTDIR\working"
-
-  SetOutPath "$INSTDIR"
-  File "..\..\..\LICENSE"
-  Delete /REBOOTOK "$INSTDIR\License.txt"
-
-; Output a series of SED commands to configure the .conf file(s)
-  FileOpen $R1 $PLUGINSDIR\config.sed w
-  FileWrite $R1 "s;@VERSION@;${VERSION};g$\r$\n"
-  FileWrite $R1 "s;@DATE@;${__DATE__};g$\r$\n"
-  FileWrite $R1 "s;@DISTNAME@;Windows;g$\r$\n"
-
-  StrCpy $R2 ${BUILD_TOOLS}
-
-  Call GetHostName
-  Exch $R3
-  Pop $R3
-
-  FileWrite $R1 "s;@DISTVER@;$R2;g$\r$\n"
-
-  ${StrRep} $R2 "$INSTDIR\working" "\" "\\\\"
-  FileWrite $R1 's;@working_dir@;$R2;g$\r$\n'
-  ${StrRep} $R2 "$INSTDIR\working" "\" "\\"
-  FileWrite $R1 's;@working_dir_cmd@;$R2;g$\r$\n'
-
-  ${StrRep} $R2 "$INSTDIR" "\" "\\\\"
-  FileWrite $R1 's;@bin_dir@;$R2;g$\r$\n'
-  ${StrRep} $R2 "$INSTDIR" "\" "\\"
-  FileWrite $R1 's;@bin_dir_cmd@;$R2;g$\r$\n'
-
-  ${StrRep} $R2 "$INSTDIR\plugins" "\" "\\\\"
-  FileWrite $R1 's;@fdplugins_dir@;$R2;g$\r$\n'
-
-  ${StrRep} $R2 "$INSTDIR" "\" "/"
-  FileWrite $R1 "s;@BUILD_DIR@;$R2;g$\r$\n"
-
-  FileWrite $R1 "s;@client_address@;$LocalHostAddress;g$\r$\n"
-
-  ${If} "$ConfigClientName" != ""
-    FileWrite $R1 "s;@client_name@;$ConfigClientName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigClientPort" != ""
-    FileWrite $R1 "s;@client_port@;$ConfigClientPort;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigClientMaxJobs" != ""
-    FileWrite $R1 "s;@client_maxjobs@;$ConfigClientMaxJobs;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigClientPassword" != ""
-    FileWrite $R1 "s;@client_password@;$ConfigClientPassword;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorName" != ""
-    FileWrite $R1 "s;@director_name@;$ConfigDirectorName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorPort" != ""
-    FileWrite $R1 "s;@director_port@;$ConfigDirectorPort;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorPassword" != ""
-    FileWrite $R1 "s;@director_password@;$ConfigDirectorPassword;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigDirectorAddress" != ""
-    FileWrite $R1 "s;@director_address@;$ConfigDirectorAddress;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigMonitorName" != ""
-    FileWrite $R1 "s;@monitor_name@;$ConfigMonitorName;g$\r$\n"
-  ${EndIf}
-  ${If} "$ConfigMonitorPassword" != ""
-    FileWrite $R1 "s;@monitor_password@;$ConfigMonitorPassword;g$\r$\n"
-  ${EndIf}
-
-  FileClose $R1
-
-  ${If} ${FileExists} "$OldInstallDir\bacula-fd.exe"
-    nsExec::ExecToLog '"$OldInstallDir\bacula-fd.exe" /kill'     ; Shutdown any bacula that could be running
-    Sleep 3000
-    nsExec::ExecToLog '"$OldInstallDir\bacula-fd.exe" /remove'   ; Remove existing service
-  ${EndIf}
-
-SectionEnd
-
-SectionGroup "Client" SecGroupClient
-
-Section "File Service" SecFileDaemon
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR\plugins"
-  File "${SRC_DIR}\exchange-fd.dll"
-
-  SetOutPath "$INSTDIR"
-
-  File "${SRC_DIR}\bacula-fd.exe"
-
-  File "/oname=$PLUGINSDIR\bacula-fd.conf" "bacula-fd.conf.in"
-
-  StrCpy $0 "$INSTDIR"
-  StrCpy $1 bacula-fd.conf
-  Call ConfigEditAndCopy
-
-  StrCpy $0 bacula-fd
-  StrCpy $1 "File Service"
-  StrCpy $2 $ConfigClientInstallService
-  StrCpy $3 $ConfigClientStartService
-
-  Call InstallDaemon
-
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Client Configuration.lnk" "write.exe" '"$INSTDIR\bacula-fd.conf"'
-SectionEnd
-
-SectionGroupEnd
-
-SectionGroup "Consoles" SecGroupConsoles
-
-Section "Command Console" SecConsole
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR"
-
-  File "${SRC_DIR}\bconsole.exe"
-  Call InstallCommonFiles
-
-  File "/oname=$PLUGINSDIR\bconsole.conf" "bconsole.conf.in"
-  StrCpy $0 "$INSTDIR"
-  StrCpy $1 bconsole.conf
-  Call ConfigEditAndCopy
-
-  CreateShortCut "$SMPROGRAMS\Bacula\bconsole.lnk" "$INSTDIR\bconsole.exe" '-c "$INSTDIR\bconsole.conf"' "$INSTDIR\bconsole.exe" 0
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Command Console Configuration.lnk" "write.exe" '"$INSTDIR\bconsole.conf"'
-
-SectionEnd
-
-Section "Bat Console" SecBatConsole
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR\bin32"
-
-  Call InstallCommonFiles
-  File "${SRC_DIR}\QtCore4.dll"
-  File "${SRC_DIR}\QtGui4.dll"
-  File "${SRC_DIR}\libgcc_s_dw2-1.dll"
-  File "${SRC_DIR}\mingwm10.dll"
-  File "${SRC_DIR}\ssleay32.dll"
-  File "${SRC_DIR}\libeay32.dll"
-  File "${SRC_DIR}\bat.exe"
-  File "/oname=$INSTDIR\bin32\bacula.dll" "${SRC_DIR}\bacula32.dll"
-  File "/oname=$INSTDIR\bin32\pthreadGCE.dll" "${SRC_DIR}\pthreadGCE32.dll"
-  File "/oname=$INSTDIR\bin32\zlib1.dll" "${SRC_DIR}\zlib132.dll"
-
-  File "/oname=$PLUGINSDIR\bat.conf" "bat.conf.in"
-  StrCpy $0 "$INSTDIR\bin32"
-  StrCpy $1 bat.conf
-  Call ConfigEditAndCopy
-
-  SetOutPath "$INSTDIR\help"
-  File "${SRC_DIR}\help\*"
-  SetOutPath "$INSTDIR"
-
-
-  ; Create Start Menu entry
-  CreateShortCut "$SMPROGRAMS\Bacula\Bat.lnk" "$INSTDIR\bin32\bat.exe" '-c "$INSTDIR\bin32\bat.conf"' "$INSTDIR\bin32\bat.exe" 0
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Bat Configuration.lnk" "write.exe" '"$INSTDIR\bin32\bat.conf"'
-  SetOutPath "$INSTDIR"
-SectionEnd
-
-Section "Tray Monitor" SecTrayMonitor
-  SectionIn 1 2 3
-
-  SetOutPath "$INSTDIR\bin32"
-
-  Call InstallCommonFiles
-  File "${SRC_DIR}\QtCore4.dll"
-  File "${SRC_DIR}\QtGui4.dll"
-  File "${SRC_DIR}\libgcc_s_dw2-1.dll"
-  File "${SRC_DIR}\mingwm10.dll"
-  File "${SRC_DIR}\ssleay32.dll"
-  File "${SRC_DIR}\libeay32.dll"
-  File "${SRC_DIR}\bacula-tray-monitor.exe"
-  File "/oname=$INSTDIR\bin32\bacula.dll" "${SRC_DIR}\bacula32.dll"
-  File "/oname=$INSTDIR\bin32\pthreadGCE.dll" "${SRC_DIR}\pthreadGCE32.dll"
-  File "/oname=$INSTDIR\bin32\zlib1.dll" "${SRC_DIR}\zlib132.dll"
-
-  File "/oname=$PLUGINSDIR\tray-monitor.conf" "tray-monitor.conf.in"
-  StrCpy $0 "$INSTDIR\bin32"
-  StrCpy $1 tray-monitor.conf
-  Call ConfigEditAndCopy
-
-  ; Create Start Menu entry
-  CreateShortCut "$SMPROGRAMS\Bacula\TrayMonitor.lnk" "$INSTDIR\bin32\bacula-tray-monitor.exe" '-c "$INSTDIR\bin32\tray-monitor.conf"' "$INSTDIR\bin32\bacula-tray-monitor.exe" 0
-  CreateShortCut "$SMPROGRAMS\Bacula\Configuration\Edit Tray Monitor Configuration.lnk" "write.exe" '"$INSTDIR\bin32\tray-monitor.conf"'
-  SetOutPath "$INSTDIR"
-
-SectionEnd
-
-; Deleted because wxconsole is deprecated
-;Section "Graphical Console" SecWxConsole
-;  SectionIn 1 2 3
-  
-;  SetOutPath "$INSTDIR"
-;
-;SectionEnd
-
-SectionGroupEnd
-
-
-Section "-Finish"
-  Push $R0
-
-  ${If} $OsIsNT = 1
-;   nsExec::ExecToLog 'cmd.exe /C echo Y|cacls "$INSTDIR" /T /G SYSTEM:F Administrators:F'
-  ${EndIf}
-
-  ; Write the uninstall keys for Windows & create Start Menu entry
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayName" "Bacula"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "InstallLocation" "$INSTDIR"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "DisplayVersion" "${VERSION}"
-  ${StrTok} $R0 "${VERSION}" "." 0 0
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMajor" $R0
-  ${StrTok} $R0 "${VERSION}" "." 1 0
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "VersionMinor" $R0
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoModify" 1
-  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "NoRepair" 1
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLUpdateInfo" "http://www.bacula.org"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "URLInfoAbout" "http://www.bacula.org"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "HelpLink" "http://www.bacula.org?page=support"
-  WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula" "UninstallString" '"$INSTDIR\uninstall.exe"'
-  WriteUninstaller "$INSTDIR\Uninstall.exe"
-  CreateShortCut "$SMPROGRAMS\Bacula\Uninstall Bacula.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
-  Pop $R0
-SectionEnd
-
-; Extra Page descriptions
-
-LangString DESC_SecFileDaemon ${LANG_ENGLISH} "Install Bacula File Daemon on this system."
-LangString DESC_SecConsole ${LANG_ENGLISH} "Install command console program on this system."
-LangString DESC_SecBatConsole ${LANG_ENGLISH} "Install Bat graphical console program on this system."
-LangString DESC_SecTrayMonitor ${LANG_ENGLISH} "Install Tray Monitor graphical program on this system."
-
-LangString TITLE_ConfigPage1 ${LANG_ENGLISH} "Configuration"
-LangString SUBTITLE_ConfigPage1 ${LANG_ENGLISH} "Set installation configuration."
-
-LangString TITLE_ConfigPage2 ${LANG_ENGLISH} "Configuration (continued)"
-LangString SUBTITLE_ConfigPage2 ${LANG_ENGLISH} "Set installation configuration."
-
-LangString TITLE_InstallType ${LANG_ENGLISH} "Installation Type"
-LangString SUBTITLE_InstallType ${LANG_ENGLISH} "Choose installation type."
-
-LangString TITLE_WriteTemplates ${LANG_ENGLISH} "Create Templates"
-LangString SUBTITLE_WriteTemplates ${LANG_ENGLISH} "Create a resource template for inclusion in the Director's configuration file."
-
-!InsertMacro MUI_FUNCTION_DESCRIPTION_BEGIN
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecFileDaemon} $(DESC_SecFileDaemon)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecConsole} $(DESC_SecConsole)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecBatConsole} $(DESC_SecBatConsole)
-  !InsertMacro MUI_DESCRIPTION_TEXT ${SecTrayMonitor} $(DESC_SecTrayMonitor)
-!InsertMacro MUI_FUNCTION_DESCRIPTION_END
-
-; Uninstall section
-
-UninstallText "This will uninstall Bacula. Click Uninstall to continue."
-
-Section "Uninstall"
-  ; Shutdown any baculum that could be running
-  nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /kill'
-  Sleep 3000
-
-; ReadRegDWORD $R0 HKLM "Software\Bacula" "Service_Bacula-fd"
-  ; Remove bacula service
-  nsExec::ExecToLog '"$INSTDIR\bacula-fd.exe" /remove'
-  nsExec::ExecToLog '"$INSTDIR\plugins\exchange-fd.dll" /remove'
-  
-  ; remove registry keys
-  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bacula"
-  DeleteRegKey HKLM "Software\Bacula"
-
-  ; remove start menu items
-  SetShellVarContext all
-  Delete /REBOOTOK "$SMPROGRAMS\Bacula\*"
-  RMDir "$SMPROGRAMS\Bacula"
-
-  ; remove files and uninstaller (preserving config for now)
-  Delete /REBOOTOK "$INSTDIR\doc\*"
-  Delete /REBOOTOK "$INSTDIR\*"
-  Delete /REBOOTOK "$INSTDIR\help\*"
-
-  ; Check for existing installation
-  MessageBox MB_YESNO|MB_ICONQUESTION \
-  "Would you like to delete the current configuration files and the working state file?" IDNO NoDel
-    Delete /REBOOTOK "$INSTDIR\*"
-    Delete /REBOOTOK "$INSTDIR\bin32\*"
-    Delete /REBOOTOK "$INSTDIR\working\*"
-    Delete /REBOOTOK "$INSTDIR\plugins\*"
-    Delete /REBOOTOK "$PLUGINSDIR\bacula-*.conf"
-    Delete /REBOOTOK "$PLUGINSDIR\*console.conf"
-    Delete /REBOOTOK "$PLUGINSDIR\*conf.in"
-    Delete /REBOOTOK "$PLUGINSDIR\openssl.exe"
-    Delete /REBOOTOK "$PLUGINSDIR\libeay32.dll"
-    Delete /REBOOTOK "$PLUGINSDIR\ssleay32.dll"
-    Delete /REBOOTOK "$PLUGINSDIR\sed.exe"    
-    Delete /REBOOTOK "$PLUGINSDIR\pw.txt"     
-    Delete /REBOOTOK "$PLUGINSDIR\*.sed" 
-    Delete /REBOOTOK "$PLUGINSDIR\*.cmd"    
-    Delete /REBOOTOK "$PLUGINSDIR\*.sql"    
-    RMDir "$INSTDIR\plugins"
-    RMDir "$INSTDIR\working"
-    RMDir "$INSTDIR\bin32"
-    RMDir "$INSTDIR"
-NoDel:
-
-  ; remove directories used
-  RMDir "$INSTDIR\doc"
-  RMDir "$INSTDIR\help"
-  RMDir "$INSTDIR"
-SectionEnd
-
-;
-; $0 - Service Name (ie Bacula-FD)
-; $1 - Service Description (ie Bacula File Daemon)
-; $2 - Install as Service
-; $3 - Start Service now
-;
-Function InstallDaemon
-  Call InstallCommonFiles
-
-  WriteRegDWORD HKLM "Software\Bacula" "Service_$0" $2
-  
-  ${If} $2 = 1
-    nsExec::ExecToLog '"$INSTDIR\$0.exe" /kill'
-    sleep 3000
-    nsExec::ExecToLog '"$INSTDIR\$0.exe" /remove'
-    nsExec::ExecToLog '"$INSTDIR\$0.exe" /install -c "$INSTDIR\$0.conf"'
-
-    ${If} $OsIsNT <> 1
-      File "Start.bat"
-      File "Stop.bat"
-    ${EndIf}
-
-    ; Start the service?
-
-    ${If} $3 = 1  
-      ${If} $OsIsNT = 1
-        nsExec::ExecToLog 'net start $0'
-      ${Else}
-        Exec '"$INSTDIR\$0.exe" /service -c "$INSTDIR\$0.conf"'
-      ${EndIf}
-    ${EndIf}
-  ${Else}
-    CreateShortCut "$SMPROGRAMS\Bacula\Start $1.lnk" "$INSTDIR\$0.exe" '-c "$INSTDIR\$0.conf"' "$INSTDIR\$0.exe" 0
-  ${EndIf}
-FunctionEnd
-
-Function GetComputerName
-  Push $R0
-  Push $R1
-  Push $R2
-
-  System::Call "kernel32::GetComputerNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2"
-
-  ${StrCase} $R0 $R0 "L"
-
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-!define ComputerNameDnsFullyQualified   3
-
-Function GetHostName
-  Push $R0
-  Push $R1
-  Push $R2
-
-  ${If} $OsIsNT = 1
-    System::Call "kernel32::GetComputerNameExA(i ${ComputerNameDnsFullyQualified}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
-    ${If} $R2 = 0
-      Pop $R2
-      DetailPrint "GetComputerNameExA failed - LastError = $R2"
-      Call GetComputerName
-      Pop $R0
-    ${Else}
-      Pop $R2
-    ${EndIf}
-  ${Else}
-    Call GetComputerName
-    Pop $R0
-  ${EndIf}
-
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-!define NameUserPrincipal 8
-
-Function GetUserName
-  Push $R0
-  Push $R1
-  Push $R2
-
-  ${If} $OsIsNT = 1
-    System::Call "secur32::GetUserNameExA(i ${NameUserPrincipal}, t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
-    ${If} $R2 = 0
-      Pop $R2
-      DetailPrint "GetUserNameExA failed - LastError = $R2"
-      Pop $R0
-      StrCpy $R0 ""
-    ${Else}
-      Pop $R2
-    ${EndIf}
-  ${Else}
-      StrCpy $R0 ""
-  ${EndIf}
-
-  ${If} $R0 == ""
-    System::Call "advapi32::GetUserNameA(t .R0, *i ${NSIS_MAX_STRLEN} R1) i.R2 ?e"
-    ${If} $R2 = 0
-      Pop $R2
-      DetailPrint "GetUserNameA failed - LastError = $R2"
-      StrCpy $R0 ""
-    ${Else}
-      Pop $R2
-    ${EndIf}
-  ${EndIf}
-
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-Function ConfigEditAndCopy
-  Push $R1
-
-  ${If} ${FileExists} "$0\$1"
-    StrCpy $R1 ".new"
-  ${Else}
-    StrCpy $R1 ""
-  ${EndIf}
-
-  nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\$1"'
-  CopyFiles "$PLUGINSDIR\$1" "$0\$1$R1"
-
-  Pop $R1
-FunctionEnd
-
-Function GetSelectedComponents
-  Push $R0
-  StrCpy $R0 0
-  ${If} ${SectionIsSelected} ${SecFileDaemon}
-    IntOp $R0 $R0 | ${ComponentFile}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecConsole}
-    IntOp $R0 $R0 | ${ComponentTextConsole}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecBatConsole}
-    IntOp $R0 $R0 | ${ComponentBatConsole}
-  ${EndIf}
-  ${If} ${SectionIsSelected} ${SecTrayMonitor}
-    IntOp $R0 $R0 | ${ComponentTrayMonitor}
-  ${EndIf}
-  Exch $R0
-FunctionEnd
-
-Function PageComponentsShow
-
-  Call SelectPreviousComponents
-  Call UpdateComponentUI
-FunctionEnd
-
-Function PageDirectoryPre
-  ${If} $AutomaticInstall = 1
-  ${OrIf} $InstallType = ${UpgradeInstall}
-    Abort
-  ${EndIf}
-FunctionEnd
-
-Function LeaveInstallPage
-  Push "$INSTDIR\install.log"
-  Call DumpLog
-FunctionEnd
-
-Function EnterWriteTemplates
-  Push $R0
-  Push $R1
-
-  Call GetSelectedComponents
-  Pop $R0
-
-  IntOp $R0 $R0 & ${ComponentDirector}
-  IntOp $R1 $NewComponents & ${ComponentsFileAndStorage}
-
-  ${If} $R0 <> 0
-  ${OrIf} $R1 = 0
-    Pop $R1
-    Pop $R0
-    Abort
-  ${EndIf}
-
-  IntOp $R0 $NewComponents & ${ComponentFile}
-  ${If} $R0 = 0
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 0
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags DISABLED
-    DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" Flags REQ_SAVE|FILE_EXPLORER|WARN_IF_EXIST|DISABLED
-  ${Else}
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" State 1
-    DeleteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 2" Flags
-    WriteINIStr "$PLUGINSDIR\WriteTemplates.ini" "Field 3" State "C:\$ConfigClientName.conf"
-  ${EndIf}
-
-
-  !InsertMacro MUI_HEADER_TEXT "$(TITLE_WriteTemplates)" "$(SUBTITLE_WriteTemplates)"
-  !InsertMacro MUI_INSTALLOPTIONS_DISPLAY "WriteTemplates.ini"
-
-  !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 2" State
-  ${If} $R0 <> 0
-    File "/oname=$PLUGINSDIR\client.conf.in" "client.conf.in"
-
-    nsExec::ExecToLog '$PLUGINSDIR\sed.exe -f "$PLUGINSDIR\config.sed" -i.bak "$PLUGINSDIR\client.conf.in"'
-    !InsertMacro MUI_INSTALLOPTIONS_READ $R0 "WriteTemplates.ini" "Field 3" State
-    ${If} $R0 != ""
-      CopyFiles "$PLUGINSDIR\client.conf.in" "$R0"
-    ${EndIf}
-  ${EndIf}
-
-
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-Function SelectPreviousComponents
-  ${If} $InstallType <> ${NewInstall}
-    IntOp $R1 $PreviousComponents & ${ComponentFile}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecFileDaemon}
-      !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecFileDaemon}
-      !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentTextConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecConsole}
-      !InsertMacro SetSectionFlag ${SecConsole} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecConsole}
-      !InsertMacro ClearSectionFlag ${SecConsole} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentBatConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecBatConsole}
-      !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecBatConsole}
-      !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_RO}
-    ${EndIf}
-    IntOp $R1 $PreviousComponents & ${ComponentTrayMonitor}
-    ${If} $R1 <> 0
-      !InsertMacro SelectSection ${SecTrayMonitor}
-      !InsertMacro SetSectionFlag ${SecTrayMonitor} ${SF_RO}
-    ${Else}
-      !InsertMacro UnselectSection ${SecTrayMonitor}
-      !InsertMacro ClearSectionFlag ${SecTrayMonitor} ${SF_RO}
-    ${EndIf}
-  ${EndIf}
-FunctionEnd
-
-Function UpdateComponentUI
-  Push $R0
-  Push $R1
-
-  Call GetSelectedComponents
-  Pop $R0
-
-  IntOp $R1 $R0 ^ $PreviousComponents
-  IntOp $NewComponents $R0 & $R1
-
-  ${If} $InstallType <> ${NewInstall}
-    IntOp $R1 $NewComponents & ${ComponentFile}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecFileDaemon} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecFileDaemon} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentTextConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecConsole} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecConsole} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentBatConsole}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecBatConsole} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecBatConsole} ${SF_BOLD}
-    ${EndIf}
-    IntOp $R1 $NewComponents & ${ComponentTrayMonitor}
-    ${If} $R1 <> 0
-      !InsertMacro SetSectionFlag ${SecTrayMonitor} ${SF_BOLD}
-    ${Else}
-      !InsertMacro ClearSectionFlag ${SecTrayMonitor} ${SF_BOLD}
-    ${EndIf}
-  ${EndIf}
-
-  GetDlgItem $R0 $HWNDPARENT 1
-
-  IntOp $R1 $NewComponents & ${ComponentsRequiringUserConfig}
-  ${If} $R1 = 0
-    SendMessage $R0 ${WM_SETTEXT} 0 "STR:Install"
-  ${Else}
-    SendMessage $R0 ${WM_SETTEXT} 0 "STR:&Next >"
-  ${EndIf}
-
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-!include "InstallType.nsh"
-!include "ConfigPage1.nsh"
-!include "ConfigPage2.nsh"
-!include "DumpLog.nsh"
diff --git a/src/win32/winapi.h b/src/win32/winapi.h
deleted file mode 100644
index b4027dc..0000000
--- a/src/win32/winapi.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   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.
-   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.
-*/
-/*
- * Windows APIs that are different for each system.
- *   We use pointers to the entry points so that a
- *   single binary will run on all Windows systems.
- *
- *     Kern Sibbald MMIII
- */
-
-#ifndef __WINAPI_H
-#define __WINAPI_H
-
-#if defined(HAVE_WIN32)
-/*
- * Commented out native.h include statement, which is not distributed with the
- * free version of VC++, and which is not used in bacula.
- * 
- * #if !defined(HAVE_MINGW) // native.h not present on mingw
- * #include <native.h>
- * #endif
- */
-#include <windef.h>
-
-#ifndef POOLMEM
-typedef char POOLMEM;
-#endif
-
-// unicode enabling of win 32 needs some defines and functions
-
-// using an average of 3 bytes per character is probably fine in
-// practice but I believe that Windows actually uses UTF-16 encoding
-// as opposed to UCS2 which means characters 0x10000-0x10ffff are
-// valid and result in 4 byte UTF-8 encodings.
-#define MAX_PATH_UTF8    MAX_PATH*4  // strict upper bound on UTF-16 to UTF-8 conversion
-
-// from
-// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/getfileattributesex.asp
-// In the ANSI version of this function, the name is limited to
-// MAX_PATH characters. To extend this limit to 32,767 wide
-// characters, call the Unicode version of the function and prepend
-// "\\?\" 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);
-
-// init with win9x, but maybe set to NT in InitWinAPI
-extern DWORD DLL_IMP_EXP g_platform_id;
-extern DWORD DLL_IMP_EXP g_MinorVersion;
-extern DWORD DLL_IMP_EXP g_MajorVersion;
-
-/* In ADVAPI32.DLL */
-typedef BOOL (WINAPI * t_OpenProcessToken)(HANDLE, DWORD, PHANDLE);
-typedef BOOL (WINAPI * t_AdjustTokenPrivileges)(HANDLE, BOOL,
-          PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD);
-typedef BOOL (WINAPI * t_LookupPrivilegeValue)(LPCTSTR, LPCTSTR, PLUID);
-
-extern t_OpenProcessToken      DLL_IMP_EXP p_OpenProcessToken;
-extern t_AdjustTokenPrivileges DLL_IMP_EXP p_AdjustTokenPrivileges;
-extern t_LookupPrivilegeValue  DLL_IMP_EXP p_LookupPrivilegeValue;
-
-/* In MSVCRT.DLL */
-typedef int (__cdecl * t_wunlink) (const wchar_t *);
-typedef int (__cdecl * t_wmkdir) (const wchar_t *);
-typedef int (__cdecl * t_wopen)  (const wchar_t *, int, ...);
-
-extern t_wunlink   DLL_IMP_EXP p_wunlink;
-extern t_wmkdir    DLL_IMP_EXP p_wmkdir;
-
-/* In KERNEL32.DLL */
-typedef BOOL (WINAPI * t_GetFileAttributesExA)(LPCSTR, GET_FILEEX_INFO_LEVELS,
-       LPVOID);
-typedef BOOL (WINAPI * t_GetFileAttributesExW)(LPCWSTR, GET_FILEEX_INFO_LEVELS,
-       LPVOID);
-
-typedef DWORD (WINAPI * t_GetFileAttributesA)(LPCSTR);
-typedef DWORD (WINAPI * t_GetFileAttributesW)(LPCWSTR);
-typedef BOOL (WINAPI * t_SetFileAttributesA)(LPCSTR, DWORD);
-typedef BOOL (WINAPI * t_SetFileAttributesW)(LPCWSTR, DWORD);
-
-typedef HANDLE (WINAPI * t_CreateFileA) (LPCSTR, DWORD ,DWORD, LPSECURITY_ATTRIBUTES,
-        DWORD , DWORD, HANDLE);
-typedef HANDLE (WINAPI * t_CreateFileW) (LPCWSTR, DWORD ,DWORD, LPSECURITY_ATTRIBUTES,
-        DWORD , DWORD, HANDLE);
-
-typedef BOOL (WINAPI * t_CreateDirectoryA) (LPCSTR, LPSECURITY_ATTRIBUTES);
-typedef BOOL (WINAPI * t_CreateDirectoryW) (LPCWSTR, LPSECURITY_ATTRIBUTES);
-
-typedef BOOL (WINAPI * t_SetProcessShutdownParameters)(DWORD, DWORD);
-typedef BOOL (WINAPI * t_BackupRead)(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
-typedef BOOL (WINAPI * t_BackupWrite)(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
-
-typedef int (WINAPI * t_WideCharToMultiByte) (UINT CodePage, DWORD , LPCWSTR, int,
-                                              LPSTR, int, LPCSTR, LPBOOL);
-
-typedef int (WINAPI * t_MultiByteToWideChar) (UINT, DWORD, LPCSTR, int, LPWSTR, int);
-typedef HANDLE (WINAPI * t_FindFirstFileA) (LPCSTR, LPWIN32_FIND_DATAA);
-typedef HANDLE (WINAPI * t_FindFirstFileW) (LPCWSTR, LPWIN32_FIND_DATAW);
-
-typedef BOOL (WINAPI * t_FindNextFileA) (HANDLE, LPWIN32_FIND_DATAA);
-typedef BOOL (WINAPI * t_FindNextFileW) (HANDLE, LPWIN32_FIND_DATAW);
-
-typedef BOOL (WINAPI * t_SetCurrentDirectoryA) (LPCSTR);
-typedef BOOL (WINAPI * t_SetCurrentDirectoryW) (LPCWSTR);
-
-typedef DWORD (WINAPI * t_GetCurrentDirectoryA) (DWORD, LPSTR);
-typedef DWORD (WINAPI * t_GetCurrentDirectoryW) (DWORD, LPWSTR);
-
-typedef BOOL (WINAPI * t_GetVolumePathNameW) (LPCWSTR, LPWSTR, DWORD);
-typedef BOOL (WINAPI * t_GetVolumeNameForVolumeMountPointW) (LPCWSTR, LPWSTR, DWORD);
-
-typedef BOOL (WINAPI * t_AttachConsole) (DWORD);
-
-typedef BOOL (WINAPI *t_CreateProcessA) (
-   LPCSTR,
-   LPSTR,
-   LPSECURITY_ATTRIBUTES,
-   LPSECURITY_ATTRIBUTES,
-   BOOL,
-   DWORD,
-   PVOID,
-   LPCSTR,
-   LPSTARTUPINFOA,
-   LPPROCESS_INFORMATION);
-typedef BOOL (WINAPI *t_CreateProcessW) (
-   LPCWSTR,
-   LPWSTR,
-   LPSECURITY_ATTRIBUTES,
-   LPSECURITY_ATTRIBUTES,
-   BOOL,
-   DWORD,
-   PVOID,
-   LPCWSTR,
-   LPSTARTUPINFOW,
-   LPPROCESS_INFORMATION);
-
-extern t_CreateProcessA DLL_IMP_EXP p_CreateProcessA;
-extern t_CreateProcessW DLL_IMP_EXP p_CreateProcessW;
-
-extern t_GetFileAttributesA   DLL_IMP_EXP p_GetFileAttributesA;
-extern t_GetFileAttributesW   DLL_IMP_EXP p_GetFileAttributesW;
-
-extern t_GetFileAttributesExA   DLL_IMP_EXP p_GetFileAttributesExA;
-extern t_GetFileAttributesExW   DLL_IMP_EXP p_GetFileAttributesExW;
-
-extern t_SetFileAttributesA   DLL_IMP_EXP p_SetFileAttributesA;
-extern t_SetFileAttributesW   DLL_IMP_EXP p_SetFileAttributesW;
-
-extern t_CreateFileA   DLL_IMP_EXP p_CreateFileA;
-extern t_CreateFileW   DLL_IMP_EXP p_CreateFileW;
-
-extern t_CreateDirectoryA   DLL_IMP_EXP p_CreateDirectoryA;
-extern t_CreateDirectoryW   DLL_IMP_EXP p_CreateDirectoryW;
-
-extern t_SetProcessShutdownParameters DLL_IMP_EXP p_SetProcessShutdownParameters;
-extern t_BackupRead         DLL_IMP_EXP p_BackupRead;
-extern t_BackupWrite        DLL_IMP_EXP p_BackupWrite;
-
-extern t_WideCharToMultiByte DLL_IMP_EXP p_WideCharToMultiByte;
-extern t_MultiByteToWideChar DLL_IMP_EXP p_MultiByteToWideChar;
-
-extern t_FindFirstFileA DLL_IMP_EXP p_FindFirstFileA;
-extern t_FindFirstFileW DLL_IMP_EXP p_FindFirstFileW;
-
-extern t_FindNextFileA DLL_IMP_EXP p_FindNextFileA;
-extern t_FindNextFileW DLL_IMP_EXP p_FindNextFileW;
-
-extern t_SetCurrentDirectoryA DLL_IMP_EXP p_SetCurrentDirectoryA;
-extern t_SetCurrentDirectoryW DLL_IMP_EXP p_SetCurrentDirectoryW;
-
-extern t_GetCurrentDirectoryA DLL_IMP_EXP p_GetCurrentDirectoryA;
-extern t_GetCurrentDirectoryW DLL_IMP_EXP p_GetCurrentDirectoryW;
-
-extern t_GetVolumePathNameW DLL_IMP_EXP p_GetVolumePathNameW;
-extern t_GetVolumeNameForVolumeMountPointW DLL_IMP_EXP p_GetVolumeNameForVolumeMountPointW;
-
-extern t_AttachConsole DLL_IMP_EXP p_AttachConsole;
-
-void InitWinAPIWrapper();
-
-/* In SHFolder.dll on older systems, and now Shell32.dll */
-typedef BOOL (WINAPI * t_SHGetFolderPath)(HWND, int, HANDLE, DWORD, LPTSTR);
-extern t_SHGetFolderPath  DLL_IMP_EXP p_SHGetFolderPath;
-
-#endif
-
-#endif /* __WINAPI_H */
diff --git a/src/win32/wx-console/Makefile b/src/win32/wx-console/Makefile
deleted file mode 100755
index 561d019..0000000
--- a/src/win32/wx-console/Makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-# Makefile for win32 bacula executables
-# Using MinGW cross-compiler on GNU/Linux
-#
-#  Written by Robert Nelson, June 2006
-# 
-
-include ../Makefile.inc
-
-INCLUDES = \
-	-I../../wx-console \
-	$(INCLUDE_BACULA) \
-	$(INCLUDE_WX) \
-	$(INCLUDE_PTHREADS) \
-	$(INCLUDE_OPENSSL) \
-	$(INCLUDE_ICONS)
-
-DEFINES = \
-	-DUSING_DLL \
-	-DHAVE_WXCONSOLE \
-	-D__WXMSW__ \
-	-DWXUSINGDLL \
-	-D_STAT_H \
-	-D_STAT_DEFINED \
-	$(HAVES)
-
-vpath %.c $(MAINDIR)/src/wx-console
-vpath %.cpp $(MAINDIR)/src/wx-console
-vpath %.rc $(MAINDIR)/src/wx-console
-
-##########################################################################
-
-# Files in $(MAINDIR)/src/wx-console
-
-CONSOLE_OBJS = \
-	$(OBJDIR)/authenticate.o \
-	$(OBJDIR)/console_conf.o \
-	$(OBJDIR)/console_thread.o \
-	$(OBJDIR)/main.o \
-	$(OBJDIR)/wxbconfigfileeditor.o \
-	$(OBJDIR)/wxbconfigpanel.o \
-	$(OBJDIR)/wxbhistorytextctrl.o \
-	$(OBJDIR)/wxblistctrl.o \
-	$(OBJDIR)/wxbmainframe.o \
-	$(OBJDIR)/wxbrestorepanel.o \
-	$(OBJDIR)/wxbtableparser.o \
-	$(OBJDIR)/wxbtreectrl.o \
-	$(OBJDIR)/wxbutils.o \
-	$(OBJDIR)/wx-console_private.res
-
-ALL_OBJS = $(CONSOLE_OBJS)
-
-CONSOLE_LIBS = \
-	$(LIBS_WX) \
-	$(LIBS_NETWORK) \
-	-lcomctl32 \
-	-lole32 \
-	-loleaut32 \
-	-luuid
-
-######################################################################
-
-# Targets
-
-.PHONY: all clean
-
-all: $(BINDIR)/bwx-console.exe
-
-clean:
-	$(call clean_obj,$(ALL_OBJS))
-	$(call clean_exe,$(BINDIR)/bwx-console.exe)
-	$(call clean_exe,$(BINDIR)/wx-console.exe)
-	$(ECHO_CMD)rm -rf $(OBJDIRS)
-
-#
-# Rules
-#
-
-$(BINDIR)/bwx-console.exe: $(CONSOLE_OBJS) $(LIBS_BACULA)
-	$(call link_winapp,$(CONSOLE_LIBS))
-
-$(OBJDIR)/wx-console_private.res: wx-console_private.rc
-	@echo "Compiling $@"
-	$(call checkdir,$@)
-	$(ECHO_CMD)$(WINDRES) $(INCLUDE_ICONS) -I$(MAINDIR)/src/wx-console -O coff $< -o $@
-
-include ../Makefile.rules
diff --git a/src/win32/wx-console/bwx-console.manifest b/src/win32/wx-console/bwx-console.manifest
deleted file mode 100644
index b8e5f55..0000000
--- a/src/win32/wx-console/bwx-console.manifest
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
-  <assemblyIdentity 
-    version="1.0.0.0" 
-    processorArchitecture="X86" 
-    name="Bacula.BWX-Console" 
-    type="win32" /> 
-  <description>Bacula bwx-console for Win32</description> 
-  <dependency> 
-    <dependentAssembly> 
-      <assemblyIdentity 
-        type="win32" 
-        name="Microsoft.Windows.Common-Controls" 
-        version="6.0.0.0" 
-        processorArchitecture="X86" 
-        publicKeyToken="6595b64144ccf1df" 
-        language="*" /> 
-    </dependentAssembly> 
-  </dependency> 
-</assembly> 
-
diff --git a/src/win32/wx-console/w32api.h b/src/win32/wx-console/w32api.h
deleted file mode 100644
index d509c18..0000000
--- a/src/win32/wx-console/w32api.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef _W32API_H_
-#define _W32API_H_
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
-
-#define __W32API_VERSION 2.4
-#define __W32API_MAJOR_VERSION 2
-#define __W32API_MINOR_VERSION 4
-
-#endif /* ndef _W32API_H_ */
diff --git a/src/win32/wx-console/wx-console.vcproj b/src/win32/wx-console/wx-console.vcproj
deleted file mode 100644
index bab6aca..0000000
--- a/src/win32/wx-console/wx-console.vcproj
+++ /dev/null
@@ -1,352 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-        ProjectType="Visual C++"
-        Version="8.00"
-        Name="wx-console"
-        ProjectGUID="{9BA8E10D-0D82-4B25-8543-DE34641FBC10}"
-        RootNamespace="wx-console"
-        >
-        <Platforms>
-                <Platform
-                        Name="Win32"
-                />
-        </Platforms>
-        <ToolFiles>
-        </ToolFiles>
-        <Configurations>
-                <Configuration
-                        Name="Debug|Win32"
-                        OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-                        IntermediateDirectory="$(ConfigurationName)"
-                        ConfigurationType="1"
-                        CharacterSet="2"
-                        DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;$(TargetPath)"
-                        >
-                        <Tool
-                                Name="VCPreBuildEventTool"
-                        />
-                        <Tool
-                                Name="VCCustomBuildTool"
-                        />
-                        <Tool
-                                Name="VCXMLDataGeneratorTool"
-                        />
-                        <Tool
-                                Name="VCWebServiceProxyGeneratorTool"
-                        />
-                        <Tool
-                                Name="VCMIDLTool"
-                        />
-                        <Tool
-                                Name="VCCLCompilerTool"
-                                Optimization="0"
-                                AdditionalIncludeDirectories="../compat;../../../../depkgs-msvc/include;../..;../../../../depkgs-msvc/lib/wx_dll/msw"
-                                PreprocessorDefinitions="WIN32;_WINDOWS;wxUSE_GUI;WXUSINGDLL;__WXMSW__;_CONSOLE;HAVE_WIN32;HAVE_WXCONSOLE;USING_DLL;_STAT_H;_STAT_DEFINED;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-                                MinimalRebuild="true"
-                                BasicRuntimeChecks="3"
-                                RuntimeLibrary="3"
-                                UsePrecompiledHeader="0"
-                                BrowseInformation="1"
-                                WarningLevel="3"
-                                SuppressStartupBanner="true"
-                                Detect64BitPortabilityProblems="false"
-                                DebugInformationFormat="4"
-                        />
-                        <Tool
-                                Name="VCManagedResourceCompilerTool"
-                        />
-                        <Tool
-                                Name="VCResourceCompilerTool"
-                        />
-                        <Tool
-                                Name="VCPreLinkEventTool"
-                        />
-                        <Tool
-                                Name="VCLinkerTool"
-                                AdditionalDependencies="wxmsw28_core.lib wxbase27.lib pthreadVCE.lib zlib.lib wsock32.lib comctl32.lib rpcrt4.lib atlsd.lib"
-                                LinkIncremental="2"
-                                AdditionalLibraryDirectories="../../../../depkgs-msvc/lib;../../../../depkgs-msvc/lib/wx_dll"
-                                GenerateDebugInformation="true"
-                                SubSystem="2"
-                                TargetMachine="1"
-                        />
-                        <Tool
-                                Name="VCALinkTool"
-                        />
-                        <Tool
-                                Name="VCManifestTool"
-                        />
-                        <Tool
-                                Name="VCXDCMakeTool"
-                        />
-                        <Tool
-                                Name="VCBscMakeTool"
-                        />
-                        <Tool
-                                Name="VCFxCopTool"
-                        />
-                        <Tool
-                                Name="VCAppVerifierTool"
-                        />
-                        <Tool
-                                Name="VCWebDeploymentTool"
-                        />
-                        <Tool
-                                Name="VCPostBuildEventTool"
-                        />
-                </Configuration>
-                <Configuration
-                        Name="Release|Win32"
-                        OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-                        IntermediateDirectory="$(ConfigurationName)"
-                        ConfigurationType="1"
-                        CharacterSet="2"
-                        DeleteExtensionsOnClean="*.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;$(TargetPath)"
-                        WholeProgramOptimization="1"
-                        >
-                        <Tool
-                                Name="VCPreBuildEventTool"
-                        />
-                        <Tool
-                                Name="VCCustomBuildTool"
-                        />
-                        <Tool
-                                Name="VCXMLDataGeneratorTool"
-                        />
-                        <Tool
-                                Name="VCWebServiceProxyGeneratorTool"
-                        />
-                        <Tool
-                                Name="VCMIDLTool"
-                        />
-                        <Tool
-                                Name="VCCLCompilerTool"
-                                AdditionalIncludeDirectories="../compat;../../../../depkgs-msvc/include;../..;../../../../depkgs-msvc\lib\wx_dll\msw"
-                                PreprocessorDefinitions="NDEBUG;_WINDOWS;wxUSE_GUI;WXUSINGDLL;__WXMSW__;HAVE_WIN32;HAVE_WXCONSOLE;USING_DLL;_STAT_H;_STAT_DEFINED;_USE_32BIT_TIME_T;_WIN32_WINNT=0x0500;_CRT_SECURE_NO_DEPRECATE"
-                                RuntimeLibrary="2"
-                                UsePrecompiledHeader="0"
-                                BrowseInformation="1"
-                                WarningLevel="3"
-                                Detect64BitPortabilityProblems="false"
-                                DebugInformationFormat="3"
-                        />
-                        <Tool
-                                Name="VCManagedResourceCompilerTool"
-                        />
-                        <Tool
-                                Name="VCResourceCompilerTool"
-                        />
-                        <Tool
-                                Name="VCPreLinkEventTool"
-                        />
-                        <Tool
-                                Name="VCLinkerTool"
-                                AdditionalDependencies="wxmsw28_core.lib wxbase27.lib pthreadVCE.lib zlib.lib wsock32.lib comctl32.lib rpcrt4.lib atls.lib"
-                                LinkIncremental="0"
-                                AdditionalLibraryDirectories=""../../../../depkgs-msvc/lib";"../../../../depkgs-msvc/lib/wx_dll""
-                                IgnoreDefaultLibraryNames=""
-                                GenerateDebugInformation="true"
-                                SubSystem="2"
-                                OptimizeReferences="2"
-                                EnableCOMDATFolding="2"
-                                TargetMachine="1"
-                        />
-                        <Tool
-                                Name="VCALinkTool"
-                        />
-                        <Tool
-                                Name="VCManifestTool"
-                        />
-                        <Tool
-                                Name="VCXDCMakeTool"
-                        />
-                        <Tool
-                                Name="VCBscMakeTool"
-                        />
-                        <Tool
-                                Name="VCFxCopTool"
-                        />
-                        <Tool
-                                Name="VCAppVerifierTool"
-                        />
-                        <Tool
-                                Name="VCWebDeploymentTool"
-                        />
-                        <Tool
-                                Name="VCPostBuildEventTool"
-                        />
-                </Configuration>
-        </Configurations>
-        <References>
-        </References>
-        <Files>
-                <Filter
-                        Name="Header Files"
-                        Filter="h;hpp;hxx;hm;inl;inc;xsd"
-                        UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-                        >
-                        <File
-                                RelativePath="..\..\wx-console\console_conf.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\console_thread.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\csprint.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath=".\w32api.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wx-console_private.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbconfigfileeditor.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbconfigpanel.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbhistorytextctrl.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxblistctrl.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbmainframe.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbrestorepanel.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbtableparser.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbtreectrl.h"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbutils.h"
-                                >
-                        </File>
-                </Filter>
-                <Filter
-                        Name="Resource Files"
-                        Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-                        UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-                        >
-                        <File
-                                RelativePath=".\wx-console.manifest"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wx-console_private.rc"
-                                >
-                        </File>
-                </Filter>
-                <Filter
-                        Name="Source Files"
-                        Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-                        UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-                        >
-                        <File
-                                RelativePath="..\..\wx-console\authenticate.c"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="VCCLCompilerTool"
-                                                CompileAs="2"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="VCCLCompilerTool"
-                                                CompileAs="2"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\console_conf.c"
-                                >
-                                <FileConfiguration
-                                        Name="Debug|Win32"
-                                        >
-                                        <Tool
-                                                Name="VCCLCompilerTool"
-                                                CompileAs="2"
-                                        />
-                                </FileConfiguration>
-                                <FileConfiguration
-                                        Name="Release|Win32"
-                                        >
-                                        <Tool
-                                                Name="VCCLCompilerTool"
-                                                CompileAs="2"
-                                        />
-                                </FileConfiguration>
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\console_thread.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\main.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbconfigfileeditor.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbconfigpanel.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbhistorytextctrl.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxblistctrl.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbmainframe.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbrestorepanel.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbtableparser.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbtreectrl.cpp"
-                                >
-                        </File>
-                        <File
-                                RelativePath="..\..\wx-console\wxbutils.cpp"
-                                >
-                        </File>
-                </Filter>
-        </Files>
-        <Globals>
-        </Globals>
-</VisualStudioProject>
diff --git a/src/wx-console/BUILD b/src/wx-console/BUILD
deleted file mode 100644
index b8d0dd4..0000000
--- a/src/wx-console/BUILD
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Windows/cygwin compiling notes:
- - Download latest depkgs-win32 code.
- - See <bacula-source>/src/win32/README.win32
-
-GTK/Linux (and *nix) compiling notes:
- - Download www.wxwidgets.org wxWidgets code version 2.4.2
- - Build and install the above using --disable-universal configure
-    option.
- - Use ./configure --enable-bwx-console for the Bacula build
-   It will then be built and installed automatically with the
-   other programs.
- - Edit the bwx-console.conf in the current directory to have the
-   correct values for your Director (name, IP address, password).
diff --git a/src/wx-console/CHANGELOG b/src/wx-console/CHANGELOG
deleted file mode 100644
index 9e0467a..0000000
--- a/src/wx-console/CHANGELOG
+++ /dev/null
@@ -1,252 +0,0 @@
-05-05-2005 :
- - Fix a problem when link count for a file is greater than 99 (bug #304).
- - Add a workaround for a problem when displaying Unicode filenames with
-   non-Unicode wxWidgets.
-
-04-05-2005 :
- - Remember the last window position and size.
-
-03-05-2005 :
- - Fix compilation warnings with wxWidgets 2.6.0.
- - Fix wxChoice height problem under wxGTK-2.6.0 (GTK+-2.0).
-
-26-04-2005 :
- - Improve error handling when reading configuration file.
- - Fixes compile error with unicode-enabled wxWidgets.
-
-25-04-2005 :
- - Fixes to make bwx-console compatible with wxWidgets 2.6.0.
-
-24-03-2005 :
- - wxbMainFrame : Fix a bug with GTK+-1.2 which caused bwx-console to crash
-   when starting.
- - wxbRestorePanel : Fix a major bug which caused bwx-console to enter in an
-   infinite loop which allocate a lot of memory and could make the system crash.
-
-10-03-2005 :
- - wxbMainFrame : Fix bug #0000221 (Debian 292517)
-
-13-08-2004 :
- - wxbHistoryTextCtrl : Fixed Win32 build error
- - general : implemented command completion and interactive help.
-
-06-08-2004 :
- - wxbRestorePanel : now parsing '+' sent by the director when building
-     tree.
- - wxbRestorePanel : implemented .backups client=xxx (2.1)
- - wxbRestorePanel : implemented the director modification showing
-     jobid when a job is started.
-
-28-07-2004 :
- - wxbRestorePanel : implemented restore before=<Date> parameter.
-
-17-07-2004 :
- - wxbRestorePanel & wxbHistoryTextCtrl : Fixed unsigned comparisons.
- - wxbRestorePanel : Fixed problem when the newly created job is not
-    at the end of the list.
-
-16-07-2004 :
- - wxbRestorePanel : Fixed crash when an error occurs while querying
-    restore list (reported by Dan Langille).
-
-15-07-2004 :
- - wxbMainFrame : When an unexpected question is in this format 
-    (***? (yes/mod/no):), a list is shown to choose one of these 
-    possibilities.
- - wxbRestorePanel : Fixed crash when there is no backup available
-     (fresh install) 
- - wxbHistoryTextCtrl : Created a new text control that keep an history
-     of typed commands.
-
-14-07-2004 :
- - wxbMainFrame : Fixed config file problem when changing the default
-     configuration file (Linux)
-
-03-07-2004 :
- - wxbConfigPanel : Fixed ?: operator cast problem with gcc 2.95.
-
-25-06-2004 :
- - wxbRestorePanel : Fix file size truncated if >100mb.
-
-14-06-2004 :
- - wxbConfigPanel : fixed tests
-
-22-05-2004 :
- - wxbUtils : Created this class, containing general functions like
-    WaitForEnd
-
-21-05-2004 :
- - wxbRestorePanel : Added functions to get/set working status
-
-17-05-2004 :
- - wxbRestorePanel : Implemented refresh buttons
-
-15-05-2004 :
- - wxbRestorePanel : The user can now mark/unmark a range of files selected
-     with shift-click or multiple files selected with ctl-click, by
-     right-clicking or using buttons.
- - wxbRestorePanel : Added buttons to mark/unmark directories/files.
- - wxbRestorePanel : Added buttons to force to refresh the whole tree/list
-
-14-05-2004 :
- - wxbMainFrame : Fixed various reconnecting and disconnecting problems.
- - console_thread : The user can now choose the director to use
-    when there's multiple directors in the configuration file.
- - wxbRestorePanel : List's columns are now resized correctly in the
-     first directory.
-
-13-05-2004 :
- - wxbRestorePanel : Width adjustments between the tree view window
-     and the file view window are now possible.
-
-10-05-2004 :
- - wxbTableParser : wxHashMap replaced by wxArray
-
-09-05-2004 :
- - wxbMainFrame : reconnecting/disconnecting implemented
- - wxbMainFrame : Added menus to allow the user to change his config
-      file, and to edit it.
-
-08-05-2004 :
- - wxbMainFrame : The user can now choose his configuration file,
-      and his choice is stored in a wxConfig (registry under Win32,
-      file under Linux)...
- - wxbConfigFileEditor : Created a small text editor
-
-07-05-2004 :
- - console_thread : Added support for the new parse_config which
-      returns a status code.
- - wxbMainFrame/console_thread : A command line parameter now
-      allows the user to choose his config file.
-
-06-05-2004 :
- - wxbMainFrame : Corrected font bug in GTK+ 1.2
- - console_thread : Added support for Mac OS X configuration
-      file location.
-
-02-05-2004 :
- - wxbMainFrame : Corrected incorrect casting of thread event
-      functions (reported by Aristedes Maniatis)
- - wxbRestorePanel : Corrected incorrect casting of event
-      functions (reported by Aristedes Maniatis)
-
-01-05-2004 :
- - wxbRestorePanel : Corrected a problem when you double-clicked an 
-      a folder in the list, the list was then refreshed two times
-      (instead of one) in the new directory
- - wxbRestorePanel : Improved configuration panels' look
- - wxbRestorePanel : Added titles to configuration panels
- - wxbMainFrame : If the connection drops unexpectedly, it should say 
-   it lost the connection to the Director and then wait for you to
-   either manually exit or (when it becomes possible) reconnect.
- - wxbMainFrame : corrected segmentation faults when exiting
-     (to be verified)
- - wxbMainFrame : the user can quit however the state is
-
-30-04-2004 :
- - wxbRestorePanel : Added "Cancel" button to cancel restore at
-     all state of restore process.
- - wxbMainFrame : Added "Send" button
- - wxbRestorePanel (first configure) : Changed defaults values when
-     Job Name changes
- - wxbRestorePanel (first configure) : corrected problem when bad
-     parameters are chosen
- - wxbRestorePanel : Checking more carefully which job we just have run
- - wxbRestorePanel : Using wxStopWatch instead of GetTicks to manage
-     timeouts.
- - wxbMainFrame : Added "Command: " in front of the command window
-     so that the user knows he can type into the command line
-     (thanks to Kern)
- - wxbMainFrame : Fixed 100% CPU usage in GTK : added buffering when
-     receiving data to print to the console (thanks to Phil)
- - wxbRestorePanel : Fixed 100% CPU usage in GTK : added sleeps between
-     Yields.
-
-29-04-2004 :
- - wxbRestorePanel : Modified the way a restore is started : much
-     more parameters are modifiable.
- - wxbConfigPanel : Created a generic panel which can be used
-     to setup configuration parameters (for example when restoring)
-
-27-04-2004 :
- - wxbMainFrame : others panels are locked when a command is ran
-     directly by typing in the console.
- - wxbRestorePanel : Updated update interval of the progress bar
-     when restoring
-     
-26-04-2004 :
- - Corrected a bug in Windows which causes bwx-console to crash when
-     typing quit before exiting the application.
-
-25-04-2004 :
- - general : status text is more often used
- - wxbRestorePanel : restore aborted if there's no client or no fileset
- - wxbRestorePanel : corrected problem if one double clicks on a
-     directory X in the left "tree" window when the directory is 
-     not yet open, instead of selecting the directory and everything 
-     below, it opens the directory and nothing is selected.
- - wxbRestorePanel : first client is selected when restore
-     mode starts.
- - wxbRestorePanel : when the director is building tree, 
-     changes are made to the status in the gauge.
- - wxbRestorePanel : Cursor set to hourglass when working
- - wxbMainFrame : Automatically scrolling to the bottom of 
-     console text control.
-
-24-04-2004 :
- - wxbMainFrame : When starting bwx-console, the initial key 
-      input focus is set into the command window.
- - wxbMainFrame : the user is now prompted when an 
-      unexpected "question" is asked).
- - wxbRestorePanel : configure is allowed to change fileset
- - wxbRestorePanel : using dot commands (.clients, .filesets)
- - console_thread : implemented prompt and heartbeat messages
-
-23-04-2004 :
- - general : Don't concatenate lines in csprint, but in wxbDataParser
-         (necessary for dot commands)
-
-22-04-2004 :
- - wxbRestorePanel : improved restore appearance
- - wxbRestorePanel : configure is allowed to change client
-
-19-04-2004 :
- - wxbRestorePanel : Locked configure items until first 
-   configuration is received
- - wxbRestorePanel : Removed estimate, which slows the restore
-   process
-
-18-04-2004 :
- - wxbRestorePanel : wxTreeCtrl::GetParent changed in 
-   GetItemParent (thanks to Luca Berra)
- - wxbRestorePanel : The user can now change a part of restore
-    configuration
-
-17-04-2004 :
- - wxbRestorePanel modified to use wxbDataParsers
- - created wxbDataTokenizer, which fetches commands results
- - modified the way data is passed to panel (no Prints anymore,
-   but wxbDataParsers)
- - win32 : Makefile.in corrected to use ressource file
- - win32 : bwx-console is now compatible with MinGW.
- - wxbPanel/wxbMainFrame : Added a locking function (for example, 
-   the user can't type something in the console when a restore
-   is in progress)
-
-16-04-2004 :
- - wxbRestorePanel : Allow the user to change the status by 
-   double-clicking on the check mark
-
-15-04-2004 :
- - project renamed in bwx-console
- - console_thread : Uses bwx-console.conf instead of console.conf
- - wxbRestorePanel : Change the marked state without redoing a dir
-
-12-04-2004 :
- - The source code is now better documented
- - wxbRestorePanel : Check if a client was selected before
-   entering choose mode
- - The source code is now right idented (3 spaces by level)
- - Copyrights changed to Kern Sibbald and John Walker
- - wxbPanel : super-class access rights problem corrected
- - wxbRestorePanel : Added "nice" images to indicate restore status
diff --git a/src/wx-console/Makefile.in b/src/wx-console/Makefile.in
deleted file mode 100644
index 78fae6f..0000000
--- a/src/wx-console/Makefile.in
+++ /dev/null
@@ -1,148 +0,0 @@
-#
-#  Version $Id$
-#
- at MCOMMON@
-
-srcdir =	.
-VPATH = 	.
-.PATH:		.
-
-# one up
-basedir = ..
-# top dir
-topdir = ../..
-# this dir relative to top dir
-thisdir = src/wx-console
-
-DEBUG=@DEBUG@
-
-first_rule: all
-dummy:
-
-#
-CONSSRCS = main.cpp console_thread.cpp authenticate.c console_conf.c wxbrestorepanel.cpp \
-	     wxbmainframe.cpp wxbtableparser.cpp wxbtreectrl.cpp wxblistctrl.cpp wxbutils.cpp \
-	     wxbconfigpanel.cpp wxbconfigfileeditor.cpp wxbhistorytextctrl.cpp
-CONSOBJS = main.o console_thread.o authenticate.o console_conf.o wxbrestorepanel.o \
-	     wxbmainframe.o wxbtableparser.o wxbtreectrl.o wxblistctrl.o wxbutils.o \
-	     wxbconfigpanel.o wxbconfigfileeditor.o wxbhistorytextctrl.o
-
-win32 = bwx-console_private.res
-
-WIN32RES = $(@WIN32@)
-
-macosx = bwx-console.app
-
-MACOSXAPP = $(@MACOSX@)
-
-# these are the objects that are changed by the .configure process
-EXTRAOBJS = @OBJLIST@
-
-macosx_cppflags = -DHAVE_MACOSX -DNO_GCC_PRAGMA
-
-_cppflags = 
-
-# wx-config generated by configure
-CONS_CPPFLAGS=-DHAVE_WXCONSOLE @WXCONS_CPPFLAGS@ $(@MACOSX at _cppflags)
-CONS_LDFLAGS=@WXCONS_LDFLAGS@
-
-
-.SUFFIXES:     .cpp .c .o
-.PHONY:
-.DONTCARE:
-
-# inference rules
-.c.o:
-	@echo "Compiling $<"
-	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(CONS_CPPFLAGS) $(CONS_INC) \
- -I$(srcdir) -I$(basedir) $(DINCLUDE) $(WCFLAGS) $(CFLAGS) $<
-
-.cpp.o:
-	@echo "Compiling $<"
-	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(CONS_CPPFLAGS) $(CONS_INC) \
- -I$(srcdir) -I$(basedir) $(DINCLUDE) $(WCFLAGS) $(CFLAGS) $<
-
-
-#-------------------------------------------------------------------------
-all: Makefile bwx-console $(MACOSXAPP)
-	@echo "==== Make of wx-console is good ===="
-	@echo " "
-
-# Mac OS X application bundle
-# See http://216.239.59.104/search?q=cache:a61SGKgoHSQJ:wiki.wxwidgets.org/wiki.pl%3FWxMac_Issues+wxmac+%22application+bundle%22&hl=fr
-
-bwx-console.app: bwx-console
-	-mkdir bwx-console.app	  
-	-mkdir bwx-console.app/Contents
-	-mkdir bwx-console.app/Contents/MacOS
-	-mkdir bwx-console.app/Contents/Resources
-	-mkdir bwx-console.app/Contents/Resources/English.lproj
-	echo -n 'APPL????' > bwx-console.app/Contents/PkgInfo
-	mv bwx-console bwx-console.app/Contents/MacOS/bwx-console
-	cp bwx-console.conf /Library/Preferences/org.bacula.wxconsole.conf
-
-bwx-console: Makefile $(CONSOBJS) @WIN32@ ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
-	$(LIBTOOL_LINK) $(CXX) $(CONSOBJS) $(WIN32RES) -o $@ -L../lib $(CONS_LDFLAGS) \
-	  -lbaccfg -lbac $(LIBS) $(OPENSSL_LIBS)
-
-win32: bwx-console_private.res
-	
-
-bwx-console_private.res: bwx-console_private.rc 
-	windres.exe -i bwx-console_private.rc -I rc -o bwx-console_private.res -O coff 
-
-libtool-clean:
-	@$(RMF) -r .libs _libs
-
-clean:	libtool-clean
-	@$(RMF) $(CONSOBJS) bwx-console $(WIN32RES)
-
-distclean: clean
-	$(RMF) Makefile
-
-Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
-	cd $(topdir) \
-	  && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-install: all
-	@if test -f ${DESTDIR}${sbindir}/wx-console; then \
-	   echo " "; \
-	   echo "Warning!!!  ${DESTDIR}${sbindir}/wx-console found."; \
-	   echo " wx-console has been renamed bwx-console, so wx-console"; \
-	   echo " is no longer used, and you might want to delete it."; \
-	   echo " "; \
-	fi
-	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) bwx-console $(DESTDIR)$(sbindir)/bwx-console
-	@srcconf=bwx-console.conf; \
-	if  test -f ${DESTDIR}${sysconfdir}/$$srcconf; then \
-	   destconf=$$srcconf.new; \
-	   echo "  ==> Found existing $$srcconf, installing new conf file as $$destconf"; \
-	else \
-	   destconf=$$srcconf; \
-	fi; \
-	echo "${INSTALL_CONFIG} $$srcconf ${DESTDIR}${sysconfdir}/$$destconf"; \
-	${INSTALL_CONFIG} $$srcconf ${DESTDIR}${sysconfdir}/$$destconf
-
-uninstall:
-	(cd $(DESTDIR)$(sbindir); $(RMF) bwx-console)
-	(cd $(DESTDIR)$(sysconfdir); $(RMF) bwx-console.conf bwx-console.conf.new)
-
-# Semi-automatic generation of dependencies:
-# Use gcc -MM because X11 `makedepend' doesn't work on all systems
-# and it also includes system headers.
-# `semi'-automatic since dependencies are generated at distribution time.
-
-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) $(CONS_CPPFLAGS) -I$(srcdir) -I$(basedir) $(CONSSRCS) >> Makefile
-	@if test -f Makefile ; then \
-	    $(RMF) Makefile.bak; \
-	else \
-	   $(MV) Makefile.bak Makefile; \
-	   echo " ===== Something went wrong in make depend ====="; \
-	fi
-
-# -----------------------------------------------------------------------
-# DO NOT DELETE: nice dependency list follows
diff --git a/src/wx-console/TODO b/src/wx-console/TODO
deleted file mode 100644
index ee388f9..0000000
--- a/src/wx-console/TODO
+++ /dev/null
@@ -1,92 +0,0 @@
-BUGS
-----
-
-Reported by Thorsten (May 15 2005 4:23 PM):
-During my work (I used vs.net 2003) I noticed a few smaller glitches, but don't know if the problems lie within wx-console or the wxWindows library:
-- start wx-console -> enter quit -> memory leaks
-- start wx-xonsole in debug mode -> drawing error (empty console screen), one click to a scrollbar -> text is back (fixed, t.engel)
-- after "quit" of console -> director claims unexpected communication interruption
-
-
-Old TODO list
--------------
-
-general : Show nice messages boxes when errors occurs.
-   
-wxbRestorePanel : list jobs and list jobid=# will probably crash if there
-   is nothing to show (db error or empty table)
-   
-GTK2 : The console control is not scrolled correctly (wxGTK bug)
-
-Win32 : Crash when quitting while trying to connect
-
-Mac OS X : "You must first get a unique identifier for your application, 
-  a so called creator, a four letter constant. All you need to know about
-  this step is at http://developer.apple.com/dev/cftype/" (wxWiki)
-  To be modified in Makefile.in wx-console target
-  
-Mac OS X : Ask kern for the status of this distribution (who is
-  the package releaser ?)
-
-wxbRestorePanel : Add images in add/remove/refresh buttons
-
-wxbRestorePanel : disable controls when working or (better) queue events
-  (see commented out code in wxbrestorepanel (marked with EVTQUEUE))
-
-wxbMainFrame : When exiting using menu, a messagebox is shown to ask the
-  user if he want to quit because the connection is lost. (doesn't
-  happen on Linux)
-
-wxbUtils : add clients, jobs, filesets, pools... list, merge patch file (wxbnewutils.patch)
-
-general : do not show some commands results (for example .help)
-
-general : add a tab containing messages
-
-wxbConfigFileEditor : create a more precise editor, with something like
-   a tree structure
-
-wxbRestorePanel : When cancelling, check for commands results
-
-wxbRestorePanel : Add a way to cancel restore when building tree
-   (needs director modifications)
-
-wxbMainFrame : set focus to type control when clicking on console
-
-wxbConfigPanel : Create a dialog for selecting dates and paths.
-
-wxbMainFrame : use more often status text
-   
-wxbRestorePanel : Use ".default job=RestoreFiles" to get defaults parameters
-	when changing a restore parameter fails.
-
-wxbDataParser : Add a boolean in the constructor to avoid storing data which 
-    will not be used.
-
-wxbRestorePanel : Check if commands ran successfully (cd, mark, mods...).
-
-GTK : Improve look
-
-wxblistctrl/wxbtreectrl : Find why events are not forwarded correctly 
-  to parent' parent, and correct bad actual implementation.
-   (remove handler parameter in wxTreeCtrl/wxListCtrl constructor)
-
-Win32 : find out why I had to modify string.cpp and string.h
-  + In include/wx/string.h, replace line 195 by
-      #if defined(__VISUALC__) // && defined(_MT) && !defined(_DLL)
-  + In src/common/string.cpp, replace line 167 by
-      #if defined(__VISUALC__) // && defined(_MT) && !defined(_DLL)
-
-mingw : correct findlib stat blocks and block size
-        (Note : nothing to do with wx-console)
-
-wxbRestorePanel : The + only appears when one selects a directory, 
-   to indicate it has subdirectories
-
-wxbRestorePanel : Add a timeout when waiting for commands results
-
-bacula-dir : correct director to handle correctly + marked status
-   (In fact there is a bug in the director : If you mark a directory
-   (not a file), and then unmark it, its parents keep the "+" status.)
-
-general : make a good documentation with snapshots
diff --git a/src/wx-console/authenticate.c b/src/wx-console/authenticate.c
deleted file mode 100644
index 5f9c27d..0000000
--- a/src/wx-console/authenticate.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2001-2007 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.
-*/
-/*
- *
- *   Bacula UA authentication. Provides authentication with
- *     the Director.
- *
- *     Kern Sibbald, June MMI
- *
- *    This routine runs as a thread and must be thread reentrant.
- *
- *  Basic tasks done here:
- *
- */
-
-/* _("...") macro returns a wxChar*, so if we need a char*, we need to convert it with:
- * wxString(_("...")).mb_str(*wxConvCurrent) */
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-#include "console_conf.h"
-#include "jcr.h"
-
-#include <wx/intl.h>
-
-#include "csprint.h"
-
-void senditf(char *fmt, ...);
-void sendit(char *buf);
-
-/* Commands sent to Director */
-static char hello[]    = "Hello %s calling\n";
-
-/* Response from Director */
-static char OKhello[]   = "1000 OK:";
-
-/* Forward referenced functions */
-
-/*
- * Authenticate Director
- */
-int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons)
-{
-   BSOCK *dir = jcr->dir_bsock;
-   int tls_local_need = BNET_TLS_NONE;
-   int tls_remote_need = BNET_TLS_NONE;
-   int compatible = true;
-   char bashed_name[MAX_NAME_LENGTH];
-   char *password;
-   TLS_CONTEXT *tls_ctx = NULL;
-
-   /*
-    * Send my name to the Director then do authentication
-    */
-   if (cons) {
-      bstrncpy(bashed_name, cons->hdr.name, sizeof(bashed_name));
-      bash_spaces(bashed_name);
-      password = cons->password;
-      /* TLS Requirement */
-      if (cons->tls_enable) {
-         if (cons->tls_require) {
-            tls_local_need = BNET_TLS_REQUIRED;
-         } else {
-            tls_local_need = BNET_TLS_OK;
-         }
-      }
-
-      tls_ctx = cons->tls_ctx;
-   } else {
-      bstrncpy(bashed_name, "*UserAgent*", sizeof(bashed_name));
-      password = director->password;
-      /* TLS Requirement */
-      if (director->tls_enable) {
-         if (director->tls_require) {
-            tls_local_need = BNET_TLS_REQUIRED;
-         } else {
-            tls_local_need = BNET_TLS_OK;
-         }
-      }
-
-      tls_ctx = director->tls_ctx;
-   }
-
-
-   /* Timeout Hello after 5 mins */
-   btimer_t *tid = start_bsock_timer(dir, 60 * 5);
-   bnet_fsend(dir, hello, bashed_name);
-
-   if (!cram_md5_respond(dir, password, &tls_remote_need, &compatible) ||
-       !cram_md5_challenge(dir, password, tls_local_need, compatible)) {
-      goto bail_out;
-   }
-
-   /* Verify that the remote host is willing to meet our TLS requirements */
-   if (tls_remote_need < tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {
-      csprint(_("Authorization problem: Remote server did not advertise required TLS support.\n"));
-      goto bail_out;
-   }
-
-   /* Verify that we are willing to meet the remote host's requirements */
-   if (tls_remote_need > tls_local_need && tls_local_need != BNET_TLS_OK && tls_remote_need != BNET_TLS_OK) {
-      csprint(_("Authorization problem: Remote server requires TLS.\n"));
-      goto bail_out;
-   }
-
-   /* Is TLS Enabled? */
-   if (have_tls) {
-      if (tls_local_need >= BNET_TLS_OK && tls_remote_need >= BNET_TLS_OK) {
-         /* Engage TLS! Full Speed Ahead! */
-         if (!bnet_tls_client(tls_ctx, dir, NULL)) {
-            csprint(_("TLS negotiation failed\n"));
-            goto bail_out;
-         }
-      }
-   }
-
-   Dmsg1(6, ">dird: %s", dir->msg);
-   if (bnet_recv(dir) <= 0) {
-      csprint(_("Bad response to Hello command: ERR="), CS_DATA);
-      csprint(bnet_strerror(dir), CS_DATA);
-      csprint("\n", CS_DATA);
-      goto bail_out;
-   }
-   Dmsg1(10, "<dird: %s", dir->msg);
-   if (strncmp(dir->msg, OKhello, sizeof(OKhello)-1) != 0) {
-      csprint(_("Director rejected Hello command\n"), CS_DATA);
-      goto bail_out;
-   } else {
-      csprint(dir->msg, CS_DATA);
-   }
-   stop_bsock_timer(tid);
-   return 1;
-
-bail_out:
-   stop_bsock_timer(tid);
-   csprint( _("Director authorization problem.\nMost likely the passwords do not agree.\nIf you are using TLS, there may have been a certificate validation error during the TLS handshake.\nPlease see " MANUAL_AUTH_URL " for help.\n"));
-   return 0;
-
-}
diff --git a/src/wx-console/bwx-console.conf.in b/src/wx-console/bwx-console.conf.in
deleted file mode 100644
index 08016a1..0000000
--- a/src/wx-console/bwx-console.conf.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Bacula User Agent (or Console) Configuration File
-#
-
-Director {
-  Name = @basename at -dir
-  DIRport = @dir_port@
-  address = @hostname@
-  Password = "@dir_password@"
-}
diff --git a/src/wx-console/bwx-console.ico b/src/wx-console/bwx-console.ico
deleted file mode 100644
index 2310c5d..0000000
Binary files a/src/wx-console/bwx-console.ico and /dev/null differ
diff --git a/src/wx-console/console_conf.c b/src/wx-console/console_conf.c
deleted file mode 100644
index 953b651..0000000
--- a/src/wx-console/console_conf.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2000-2008 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.
-*/
-/*
- *   Main configuration file parser for Bacula User Agent
- *    some parts may be split into separate files such as
- *    the schedule configuration (sch_config.c).
- *
- *   Note, the configuration file parser consists of three parts
- *
- *   1. The generic lexical scanner in lib/lex.c and lib/lex.h
- *
- *   2. The generic config  scanner in lib/parse_config.c and
- * lib/parse_config.h.
- * These files contain the parser code, some utility
- * routines, and the common store routines (name, int,
- * string).
- *
- *   3. The daemon specific file, which contains the Resource
- * definitions as well as any specific store routines
- * for the resource records.
- *
- *     Kern Sibbald, January MM, September MM
- */
-
-/* _("...") macro returns a wxChar*, so if we need a char*, we need to convert it with:
- * wxString(_("...")).mb_str(*wxConvCurrent) */
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-#include "console_conf.h"
-
-#include <wx/intl.h>
-
-/* Define the first and last resource ID record
- * types. Note, these should be unique for each
- * daemon though not a requirement.
- */
-int32_t r_first = R_FIRST;
-int32_t r_last  = R_LAST;
-static RES *sres_head[R_LAST - R_FIRST + 1];
-RES **res_head = sres_head;
-
-/* Forward referenced subroutines */
-
-
-/* We build the current resource here as we are
- * scanning the resource configuration definition,
- * then move it to allocated memory when the resource
- * scan is complete.
- */
-#if defined(_MSC_VER)
-extern "C" { // work around visual compiler mangling variables
-    URES res_all;
-}
-#else
-URES res_all;
-#endif
-int32_t res_all_size = sizeof(res_all);
-
-/* Definition of records permitted within each
- * resource with the routine to process the record
- * information.
- */
-
-/*  Console "globals" */
-static RES_ITEM cons_items[] = {
-   {"name",        store_name,     ITEM(res_cons.hdr.name), 0, ITEM_REQUIRED, 0},
-   {"description", store_str,      ITEM(res_cons.hdr.desc), 0, 0, 0},
-   {"rcfile",      store_dir,      ITEM(res_cons.rc_file), 0, 0, 0},
-   {"historyfile", store_dir,      ITEM(res_cons.hist_file), 0, 0, 0},
-   {"password",    store_password, ITEM(res_cons.password), 0, ITEM_REQUIRED, 0},
-   {"tlsenable",      store_bool,    ITEM(res_cons.tls_enable), 1, 0, 0},
-   {"tlsrequire",     store_bool,    ITEM(res_cons.tls_require), 1, 0, 0},
-   {"tlscacertificatefile", store_dir, ITEM(res_cons.tls_ca_certfile), 0, 0, 0},
-   {"tlscacertificatedir", store_dir,  ITEM(res_cons.tls_ca_certdir), 0, 0, 0},
-   {"tlscertificate", store_dir,       ITEM(res_cons.tls_certfile), 0, 0, 0},
-   {"tlskey",         store_dir,       ITEM(res_cons.tls_keyfile), 0, 0, 0},
-   {NULL, NULL, {0}, 0, 0, 0}
-};
-
-
-/*  Director's that we can contact */
-static RES_ITEM dir_items[] = {
-   {"name",        store_name,     ITEM(res_dir.hdr.name), 0, ITEM_REQUIRED, 0},
-   {"description", store_str,      ITEM(res_dir.hdr.desc), 0, 0, 0},
-   {"dirport",     store_pint32,   ITEM(res_dir.DIRport),  0, ITEM_DEFAULT, 9101},
-   {"address",     store_str,      ITEM(res_dir.address),  0, 0, 0},
-   {"password",    store_password, ITEM(res_dir.password), 0, ITEM_REQUIRED, 0},
-   {"tlsenable",      store_bool,    ITEM(res_dir.tls_enable), 1, 0, 0},
-   {"tlsrequire",     store_bool,    ITEM(res_dir.tls_require), 1, 0, 0},
-   {"tlscacertificatefile", store_dir, ITEM(res_dir.tls_ca_certfile), 0, 0, 0},
-   {"tlscacertificatedir", store_dir,  ITEM(res_dir.tls_ca_certdir), 0, 0, 0},
-   {"tlscertificate", store_dir,       ITEM(res_dir.tls_certfile), 0, 0, 0},
-   {"tlskey",         store_dir,       ITEM(res_dir.tls_keyfile), 0, 0, 0},
-   {NULL, NULL, {0}, 0, 0, 0}
-};
-
-/*
- * This is the master resource definition.
- * It must have one item for each of the resources.
- */
-RES_TABLE resources[] = {
-   {"console",       cons_items,  R_CONSOLE},
-   {"director",      dir_items,   R_DIRECTOR},
-   {NULL,        NULL,    0}
-};
-
-
-/* Dump contents of resource */
-void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fmt, ...), void *sock)
-{
-   URES *res = (URES *)reshdr;
-   int recurse = 1;
-
-   if (res == NULL) {
-      printf(wxString(_("No record for %d %s\n")).mb_str(*wxConvCurrent), type, res_to_str(type));
-      return;
-   }
-   if (type < 0) {            /* no recursion */
-      type = - type;
-      recurse = 0;
-   }
-   switch (type) {
-   case R_CONSOLE:
-      printf(wxString(_("Console: name=%s rcfile=%s histfile=%s\n")).mb_str(*wxConvCurrent), reshdr->name,
-             res->res_cons.rc_file, res->res_cons.hist_file);
-      break;
-   case R_DIRECTOR:
-      printf(wxString(_("Director: name=%s address=%s DIRport=%d\n")).mb_str(*wxConvCurrent), reshdr->name,
-             res->res_dir.address, res->res_dir.DIRport);
-      break;
-   default:
-      printf(wxString(_("Unknown resource type %d\n")).mb_str(*wxConvCurrent), type);
-   }
-   if (recurse && res->res_dir.hdr.next) {
-      dump_resource(type, res->res_dir.hdr.next, sendit, sock);
-   }
-}
-
-/*
- * Free memory of resource.
- * NB, we don't need to worry about freeing any references
- * to other resources as they will be freed when that
- * resource chain is traversed.  Mainly we worry about freeing
- * allocated strings (names).
- */
-void free_resource(RES *sres, int type)
-{
-   RES *nres;
-   URES *res = (URES *)sres;
-
-   if (res == NULL)
-      return;
-
-   /* common stuff -- free the resource name */
-   nres = (RES *)res->res_dir.hdr.next;
-   if (res->res_dir.hdr.name) {
-      bfree(res->res_dir.hdr.name);
-   }
-   if (res->res_dir.hdr.desc) {
-      bfree(res->res_dir.hdr.desc);
-   }
-
-   switch (type) {
-   case R_CONSOLE:
-      if (res->res_cons.rc_file) {
-         bfree(res->res_cons.rc_file);
-      }
-      if (res->res_cons.hist_file) {
-         bfree(res->res_cons.hist_file);
-      }
-      if (res->res_cons.tls_ctx) { 
-         free_tls_context(res->res_cons.tls_ctx);
-      }
-      if (res->res_cons.tls_ca_certfile) {
-         bfree(res->res_cons.tls_ca_certfile);
-      }
-      if (res->res_cons.tls_ca_certdir) {
-         bfree(res->res_cons.tls_ca_certdir);
-      }
-      if (res->res_cons.tls_certfile) {
-         bfree(res->res_cons.tls_certfile);
-      }
-      if (res->res_cons.tls_keyfile) {
-         bfree(res->res_cons.tls_keyfile);
-      }
-   case R_DIRECTOR:
-      if (res->res_dir.address) {
-         bfree(res->res_dir.address);
-      }
-      if (res->res_dir.tls_ctx) { 
-         free_tls_context(res->res_dir.tls_ctx);
-      }
-      if (res->res_dir.tls_ca_certfile) {
-         bfree(res->res_dir.tls_ca_certfile);
-      }
-      if (res->res_dir.tls_ca_certdir) {
-         bfree(res->res_dir.tls_ca_certdir);
-      }
-      if (res->res_dir.tls_certfile) {
-         bfree(res->res_dir.tls_certfile);
-      }
-      if (res->res_dir.tls_keyfile) {
-         bfree(res->res_dir.tls_keyfile);
-      }
-      break;
-   default:
-         printf(wxString(_("Unknown resource type %d\n")).mb_str(*wxConvCurrent), type);
-      }
-   /* Common stuff again -- free the resource, recurse to next one */
-   bfree(res);
-   if (nres) {
-      free_resource(nres, type);
-   }
-}
-
-/* Save the new resource by chaining it into the head list for
- * the resource. If this is pass 2, we update any resource
- * pointers (currently only in the Job resource).
- */
-void save_resource(int type, RES_ITEM *items, int pass)
-{
-   URES *res;
-   int rindex = type - r_first;
-   int i, size;
-   int error = 0;
-
-   /*
-    * Ensure that all required items are present
-    */
-   for (i=0; items[i].name; i++) {
-      if (items[i].flags & ITEM_REQUIRED) {
-       if (!bit_is_set(i, res_all.res_dir.hdr.item_present)) {
-               Emsg2(M_ABORT, 0, wxString(_("%s item is required in %s resource, but not found.\n")).mb_str(*wxConvCurrent),
-       items[i].name, resources[rindex]);
-        }
-      }
-   }
-
-   /* During pass 2, we looked up pointers to all the resources
-    * referrenced in the current resource, , now we
-    * must copy their address from the static record to the allocated
-    * record.
-    */
-   if (pass == 2) {
-      switch (type) {
-      /* Resources not containing a resource */
-      case R_CONSOLE:
-      case R_DIRECTOR:
-         break;
-
-      default:
-         Emsg1(M_ERROR, 0, wxString(_("Unknown resource type %d\n")).mb_str(*wxConvCurrent), type);
-         error = 1;
-         break;
-      }
-      /* Note, the resoure name was already saved during pass 1,
-       * so here, we can just release it.
-       */
-      if (res_all.res_dir.hdr.name) {
-         bfree(res_all.res_dir.hdr.name);
-         res_all.res_dir.hdr.name = NULL;
-      }
-      if (res_all.res_dir.hdr.desc) {
-         bfree(res_all.res_dir.hdr.desc);
-         res_all.res_dir.hdr.desc = NULL;
-      }
-      return;
-   }
-
-   /* The following code is only executed during pass 1 */
-   switch (type) {
-   case R_CONSOLE:
-      size = sizeof(CONRES);
-      break;
-   case R_DIRECTOR:
-      size = sizeof(DIRRES);
-      break;
-   default:
-      printf(wxString(_("Unknown resource type %d\n")).mb_str(*wxConvCurrent), type);
-      error = 1;
-      size = 1;
-      break;
-   }
-   /* Common */
-   if (!error) {
-      res = (URES *)bmalloc(size);
-      memcpy(res, &res_all, size);
-      if (!res_head[rindex]) {
-         res_head[rindex] = (RES *)res; /* store first entry */
-      } else {
-         RES *next, *last;
-         for (last=next=res_head[rindex]; next; next=next->next) {
-            last = next;
-            if (strcmp(next->name, res->res_dir.hdr.name) == 0) {
-               Emsg2(M_ERROR_TERM, 0,
-                   wxString(_("Attempt to define second %s resource named \"%s\" is not permitted.\n")).mb_str(*wxConvCurrent),
-                   resources[rindex].name, res->res_dir.hdr.name);
-            }
-         }
-         last->next = (RES *)res;
-            Dmsg2(90, "Inserting %s res: %s\n", res_to_str(type),
-                  res->res_dir.hdr.name);
-      }
-   }
-}
-
-bool parse_wxcons_config(CONFIG *config, const char *configfile, LEX_ERROR_HANDLER *scan_error)
-{
-   config->init(configfile, scan_error, M_ERROR_TERM, (void *)&res_all, res_all_size,
-      r_first, r_last, resources, res_head);
-   return config->parse_config();
-}
diff --git a/src/wx-console/console_conf.h b/src/wx-console/console_conf.h
deleted file mode 100644
index ef4b3e7..0000000
--- a/src/wx-console/console_conf.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2000-2006 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.
-*/
-
-#ifndef CONSOLECONF_H
-#define CONSOLECONF_H
-
-#include "bacula.h"
-#include "jcr.h"
-
-/*
- * Resource codes -- they must be sequential for indexing
- */
-#define R_FIRST                       1001
-
-#define R_CONSOLE                     1001
-#define R_DIRECTOR                    1002
-
-#define R_LAST                        R_DIRECTOR
-
-/*
- * Some resource attributes
- */
-#define R_NAME                        1020
-#define R_ADDRESS                     1021
-#define R_PASSWORD                    1022
-#define R_TYPE                        1023
-#define R_BACKUP                      1024
-
-
-/* Definition of the contents of each Resource */
-
-/* Console "globals" */
-struct CONRES {
-   RES   hdr;
-   char *rc_file;                     /* startup file */
-   char *hist_file;                   /* command history file */
-   char *password;                    /* UA server password */
-   bool tls_enable;                   /* Enable TLS on all connections */
-   bool tls_require;                  /* Require TLS on all connections */
-   char *tls_ca_certfile;             /* TLS CA Certificate File */
-   char *tls_ca_certdir;              /* TLS CA Certificate Directory */
-   char *tls_certfile;                /* TLS Client Certificate File */
-   char *tls_keyfile;                 /* TLS Client Key File */
-
-   TLS_CONTEXT *tls_ctx;              /* Shared TLS Context */
-};
-
-/* Director */
-struct DIRRES {
-   RES   hdr;
-   uint32_t DIRport;                  /* UA server port */
-   char *address;                     /* UA server address */
-   char *password;                    /* UA server password */
-   bool tls_enable;                   /* Enable TLS on all connections */
-   bool tls_require;                  /* Require TLS on all connections */
-   char *tls_ca_certfile;             /* TLS CA Certificate File */
-   char *tls_ca_certdir;              /* TLS CA Certificate Directory */
-   char *tls_certfile;                /* TLS Client Certificate File */
-   char *tls_keyfile;                 /* TLS Client Key File */
-
-   TLS_CONTEXT *tls_ctx;              /* Shared TLS Context */
-};
-
-
-/* Define the Union of all the above
- * resource structure definitions.
- */
-union u_res {
-   DIRRES res_dir;
-   CONRES res_cons;
-   RES hdr;
-};
-
-typedef union u_res URES;
-
-#endif // CONSOLECONF_H
diff --git a/src/wx-console/console_thread.cpp b/src/wx-console/console_thread.cpp
deleted file mode 100644
index 50fef34..0000000
--- a/src/wx-console/console_thread.cpp
+++ /dev/null
@@ -1,563 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
- *
- *    Interaction thread between director and the GUI
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-
-// http://66.102.9.104/search?q=cache:Djc1mPF3hRoJ:cvs.sourceforge.net/viewcvs.py/audacity/audacity-src/src/AudioIO.cpp%3Frev%3D1.102+macos+x+wxthread&hl=fr
-
-/* _("...") macro returns a wxChar*, so if we need a char*, we need to convert it with:
- * wxString(_("...")).mb_str(*wxConvCurrent) */
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-#include "console_conf.h"
-
-#include "console_thread.h" // class's header file
-
-#include <wx/wxprec.h>
-
-#include <wx/thread.h>
-#include <wx/file.h>
-
-#include "csprint.h"
-
-#ifdef HAVE_WIN32
-char OK_msg[]   = "2000 OK\n";
-char TERM_msg[] = "2999 Terminate\n";
-#endif
-
-/* Imported functions */
-int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons);
-bool parse_wxcons_config(CONFIG *config, const char *cfgfile, LEX_ERROR_HANDLER *scan_error);
-
-bool console_thread::inited = false;
-bool console_thread::configloaded = false;
-wxString console_thread::working_dir = wxT(".");
-
-int numdir = 0;
-static CONFIG *config = NULL;
-static void scan_err(const char *file, int line, LEX *lc, const char *msg, ...);
-
-
-/*
- * Call-back for reading a passphrase for an encrypted PEM file
- * This function uses getpass(), which uses a static buffer and is NOT thread-safe.
- */
-static int tls_pem_callback(char *buf, int size, const void *userdata)
-{
-#if defined(HAVE_TLS) && !defined(HAVE_WIN32)
-   const char *prompt = (const char *) userdata;
-   char *passwd;
-
-   passwd = getpass(prompt);
-   bstrncpy(buf, passwd, size);
-   return (strlen(buf));
-#else
-   buf[0] = 0;
-   return 0;
-#endif
-}
-
-
-/*
- * Make a quick check to see that we have all the
- * resources needed.
- */
-static int check_resources()
-{
-   int xOK = true;
-   DIRRES *director;
-
-   LockRes();
-
-   numdir = 0;
-   foreach_res(director, R_DIRECTOR) {
-      numdir++;
-      /* tls_require implies tls_enable */
-      if (director->tls_require) {
-         if (have_tls) {
-            director->tls_enable = true;
-         } else {
-            Jmsg(NULL, M_FATAL, 0, wxString(_("TLS required but not configured in Bacula.\n")).mb_str(*wxConvCurrent));
-            xOK = false;
-            continue;
-         }
-      }
-
-      if ((!director->tls_ca_certfile && !director->tls_ca_certdir) && director->tls_enable) {
-         Jmsg(NULL, M_FATAL, 0, wxString(_("Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for Director \"%s\" in config file.\nAt least one CA certificate store is required.\n")).mb_str(*wxConvCurrent),
-                             director->hdr.name);
-         xOK = false;
-      }
-   }
-   
-   if (numdir == 0) {
-      Jmsg(NULL, M_FATAL, 0, wxString(_("No Director resource defined in config file.\nWithout that I don't how to speak to the Director :-(\n")).mb_str(*wxConvCurrent));
-      xOK = false;
-   }
-
-   CONRES *cons;
-   /* Loop over Consoles */
-   foreach_res(cons, R_CONSOLE) {
-      /* tls_require implies tls_enable */
-      if (cons->tls_require) {
-         if (have_tls) {
-            cons->tls_enable = true;
-         } else {
-            Jmsg(NULL, M_FATAL, 0, wxString(_("TLS required but not configured in Bacula.\n")).mb_str(*wxConvCurrent));
-            xOK = false;
-            continue;
-         }
-      }
-
-      if ((!cons->tls_ca_certfile && !cons->tls_ca_certdir) && cons->tls_enable) {
-         Jmsg(NULL, M_FATAL, 0, wxString(_("Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for Console \"%s\" in config file.\n")).mb_str(*wxConvCurrent),
-                             cons->hdr.name);
-         xOK = false;
-      }
-   }
-   UnlockRes();
-   return xOK;
-}
-
-
-void console_thread::SetWorkingDirectory(wxString w_dir) {
-   if (IsPathSeparator(w_dir.Last())) {
-      console_thread::working_dir = w_dir.Mid(0, w_dir.Length()-1);
-   }
-   else {
-      console_thread::working_dir = w_dir;
-   }
-}
-
-void console_thread::InitLib() 
-{
-   if (WSA_Init() != 0) {
-      csprint(_("Error while initializing windows sockets...\n"));
-      inited = false;
-      return;
-   }
-   
-   init_stack_dump();
-   my_name_is(0, NULL, "bwx-console");
-   working_directory = (const char*) console_thread::working_dir.GetData();
-   
-   inited = true;
-}
-
-void console_thread::FreeLib() 
-{
-   if (inited) {
-      if (WSACleanup() != 0) {
-         csprint(_("Error while cleaning up windows sockets...\n"));
-      }
-   }
-}
-
-wxString errmsg;
-
-/*
- * Format a scanner error message
- */
-static void scan_err(const char *file, int line, LEX *lc, const char *msg, ...)
-{
-   va_list arg_ptr;
-   char buf[MAXSTRING];
-   char more[MAXSTRING];
-   wxString err;
-   
-   va_start(arg_ptr, msg);
-   bvsnprintf(buf, sizeof(buf), msg, arg_ptr);
-   va_end(arg_ptr);
-
-   if (lc->line_no > lc->begin_line_no) {
-      bsnprintf(more, sizeof(more),
-                wxString(_("Problem probably begins at line %d.\n")).mb_str(*wxConvCurrent), lc->begin_line_no);
-   } else {
-      more[0] = 0;
-   }
-
-   err.Format(_("Config error: %s\n            : line %d, col %d of file %s\n%s\n%s"),
-      buf, lc->line_no, lc->col_no, lc->fname, lc->line, more);
-     
-   errmsg << err; 
-}
-
-wxString console_thread::LoadConfig(wxString configfile) 
-{
-   if (!inited) {
-      InitLib();
-      if (!inited)
-         return _("Error while initializing library.");
-   }
-   
-   if (config) {
-      config->free_resources();
-      free(config);
-   }          
-   
-   MSGS* msgs = (MSGS *)bmalloc(sizeof(MSGS));
-   memset(msgs, 0, sizeof(MSGS));
-   for (int i=1; i<=M_MAX; i++) {
-      add_msg_dest(msgs, MD_STDOUT, i, NULL, NULL);
-//    add_msg_dest(msgs, MD_SYSLOG, i, NULL, NULL);
-      add_msg_dest(msgs, MD_CONSOLE, i, NULL, NULL);
-   }
-   
-   init_msg(NULL, msgs);
-   //init_console_msg(console_thread::working_dir.mb_str(*wxConvCurrent));
-
-   errmsg = wxT("");
-   config = new_config_parser();
-   if (!parse_wxcons_config(config, configfile.mb_str(*wxConvCurrent), &scan_err)) {
-      configloaded = false;
-      term_msg();
-      return errmsg;
-   }
-   
-   if (init_crypto() != 0) {
-      Jmsg(NULL, M_ERROR_TERM, 0, wxString(_("Cryptographic library initialization failed.\n")).mb_str(*wxConvCurrent));
-   }
-
-   if (!check_resources()) {
-      Jmsg(NULL, M_ERROR_TERM, 0, wxString(_("Please correct configuration file.\n")).mb_str(*wxConvCurrent));
-   }
-
-   term_msg();
-   wxRemoveFile(console_thread::working_dir + wxT("/bwx-console.conmsg"));
-   init_msg(NULL, NULL);
-   
-   configloaded = true;
-   
-   return wxT("");
-}
-
-// class constructor
-console_thread::console_thread() {
-   UA_sock = NULL;
-   choosingdirector = false;
-}
-
-// class destructor
-console_thread::~console_thread() {
-   if (UA_sock) {
-      UA_sock->signal(BNET_TERMINATE); /* send EOF */
-      UA_sock->close();
-      UA_sock = NULL;
-   }
-}
-
-/*
- * Thread entry point
- */
-void* console_thread::Entry() {
-#ifndef HAVE_WIN32
-   /* It seems we must redefine the locale on each thread on wxGTK. 
-    * On Win32 it makes bwx-console crash. */
-   wxLocale m_locale;
-   m_locale.Init();
-   m_locale.AddCatalog(wxT("bacula"));
-   wxLocale::AddCatalogLookupPathPrefix(wxT(LOCALEDIR));
-#endif
-
-   DIRRES* dir;
-   if (!inited) {
-      csprint(_("Error : Library not initialized\n"));
-      csprint(NULL, CS_END);
-      csprint(NULL, CS_DISCONNECTED);
-      csprint(NULL, CS_TERMINATED);
-#ifdef HAVE_WIN32
-      Exit();
-#endif
-      return NULL;
-   }
-   
-   if (!configloaded) {
-      csprint(_("Error : No configuration file loaded\n"));
-      csprint(NULL, CS_END);
-      csprint(NULL, CS_DISCONNECTED);
-      csprint(NULL, CS_TERMINATED);
-#ifdef HAVE_WIN32
-      Exit();
-#endif
-      return NULL;
-   }
-   
-   csprint(_("Connecting...\n"));
-  
-   int count = 0;
-   DIRRES* res[16]; /* Maximum 16 directors */
-   
-   LockRes();
-   foreach_res(dir, R_DIRECTOR) {
-      res[count] = dir;
-      count++;
-      if (count == 16) {
-         break;
-      }
-   }
-   UnlockRes();
-   
-   if (count == 0) {
-      csprint(_("Error : No director defined in config file.\n"));
-      csprint(NULL, CS_END);
-      csprint(NULL, CS_DISCONNECTED);
-      csprint(NULL, CS_TERMINATED);
-#ifdef HAVE_WIN32
-      Exit();
-#endif
-      return NULL;
-   } else if (count == 1) {
-      directorchoosen = 1;
-   } else {
-      while (true) {
-         csprint(_("Multiple directors found in your config file.\n"));
-         for (int i = 0; i < count; i++) {
-            if (i < 9) {
-               csprint(wxString(wxT("    ")) << (i+1) << wxT(": ") << wxString(res[i]->hdr.name,*wxConvCurrent) << wxT("\n"));
-            }
-            else {
-               csprint(wxString(wxT("   ")) <<  (i+1) << wxT(": ") << wxString(res[i]->hdr.name,*wxConvCurrent) << wxT("\n"));
-            }
-         }
-         csprint(wxString::Format(_("Please choose a director (1-%d): "), count), CS_DATA);
-         csprint(NULL, CS_PROMPT);
-         choosingdirector = true;
-         directorchoosen = -1;
-         while(directorchoosen == -1) {
-            bmicrosleep(0, 2000);
-            Yield();
-         }      
-         choosingdirector = false;
-         if (directorchoosen != 0) {
-            break;
-         }
-      }
-   }
-   dir = res[directorchoosen-1];
-
-   memset(&jcr, 0, sizeof(jcr));
-   
-   jcr.dequeuing_msgs = 1; /* TODO: catch messages */
-
-   LockRes();
-   /* If cons==NULL, default console will be used */
-   CONRES *cons = (CONRES *)GetNextRes(R_CONSOLE, (RES *)NULL);
-   UnlockRes();
-
-   char buf[1024];
-   /* Initialize Console TLS context */
-   if (cons && (cons->tls_enable || cons->tls_require)) {
-      /* Generate passphrase prompt */
-      bsnprintf(buf, sizeof(buf), wxString(_("Passphrase for Console \"%s\" TLS private key: ")).mb_str(*wxConvCurrent), cons->hdr.name);
-
-      /* Initialize TLS context:
-       * Args: CA certfile, CA certdir, Certfile, Keyfile,
-       * Keyfile PEM Callback, Keyfile CB Userdata, DHfile, Verify Peer */
-      cons->tls_ctx = new_tls_context(cons->tls_ca_certfile,
-         cons->tls_ca_certdir, cons->tls_certfile,
-         cons->tls_keyfile, tls_pem_callback, &buf, NULL, true);
-
-      if (!cons->tls_ctx) {
-         bsnprintf(buf, sizeof(buf), wxString(_("Failed to initialize TLS context for Console \"%s\".\n")).mb_str(*wxConvCurrent),
-            dir->hdr.name);
-         csprint(buf);
-         return NULL;
-      }
-
-   }
-
-   /* Initialize Director TLS context */
-   if (dir->tls_enable || dir->tls_require) {
-      /* Generate passphrase prompt */
-      bsnprintf(buf, sizeof(buf), wxString(_("Passphrase for Director \"%s\" TLS private key: ")).mb_str(*wxConvCurrent), dir->hdr.name);
-
-      /* Initialize TLS context:
-       * Args: CA certfile, CA certdir, Certfile, Keyfile,
-       * Keyfile PEM Callback, Keyfile CB Userdata, DHfile, Verify Peer */
-      dir->tls_ctx = new_tls_context(dir->tls_ca_certfile,
-         dir->tls_ca_certdir, dir->tls_certfile,
-         dir->tls_keyfile, tls_pem_callback, &buf, NULL, true);
-
-      if (!dir->tls_ctx) {
-         bsnprintf(buf, sizeof(buf), wxString(_("Failed to initialize TLS context for Director \"%s\".\n")).mb_str(*wxConvCurrent),
-            dir->hdr.name);
-         csprint(buf);
-         return NULL;
-      }
-   }
-
-
-   UA_sock = bnet_connect(&jcr, 3, 3, 0, wxString(_("Director daemon")).mb_str(*wxConvCurrent),
-      dir->address, NULL, dir->DIRport, 0);
-      
-   if (UA_sock == NULL) {
-      csprint(_("Failed to connect to the director\n"));
-      csprint(NULL, CS_END);
-      csprint(NULL, CS_DISCONNECTED);
-      csprint(NULL, CS_TERMINATED);
-#ifdef HAVE_WIN32
-      Exit();
-#endif
-      return NULL;
-   }
-
-   csprint(_("Connected\n"));
-
-   jcr.dir_bsock = UA_sock;
-   if (!authenticate_director(&jcr, dir, cons)) {
-      csprint("ERR=");
-      csprint(UA_sock->msg);
-      csprint(NULL, CS_END);
-      csprint(NULL, CS_DISCONNECTED);
-      csprint(NULL, CS_TERMINATED);
-#ifdef HAVE_WIN32
-      Exit();
-#endif
-      return NULL;
-   }
-   
-   csprint(NULL, CS_CONNECTED);
-   
-   Write("autodisplay on\n");
-   Write(".messages\n");
-
-   int stat;
-
-   int last_is_eod = 0; /* Last packet received is BNET_EOD */
-   int do_not_forward_eod = 0; /* Last packet received/sent is .messages, so don't forward EOD. (so bwx-console don't show the prompt again) */
-
-   /* main loop */
-   while(!TestDestroy()) {   /* Tests if thread has been ended */
-      stat = UA_sock->wait_data(10);
-      if (stat == 0) {
-         if (last_is_eod) {
-            Write(".messages\n");
-            do_not_forward_eod = 1;
-         }
-         continue;
-      }
-      
-      last_is_eod = 0;
-      if ((stat = UA_sock->recv()) >= 0) {
-         if (do_not_forward_eod) { /* .messages got data: remove the prompt */
-            csprint(NULL, CS_REMOVEPROMPT);
-         }
-         csprint(UA_sock->msg);
-      }
-      else if (stat == BNET_SIGNAL) {
-         if (UA_sock->msglen == BNET_SUB_PROMPT) {
-            csprint(NULL, CS_PROMPT);
-         } else if (UA_sock->msglen == BNET_EOD) {
-            last_is_eod = 1;
-            if (!do_not_forward_eod)
-               csprint(NULL, CS_END);
-         } else if (UA_sock->msglen == BNET_HEARTBEAT) {
-            UA_sock->signal(BNET_HB_RESPONSE);
-            csprint(_("<< Heartbeat signal received, answered. >>\n"), CS_DEBUG);
-         } else if (UA_sock->msglen == BNET_START_SELECT ||
-                    UA_sock->msglen == BNET_END_SELECT) {
-           /* Ignore start/end selections for now */
-         } else {
-            csprint(_("<< Unexpected signal received : "), CS_DEBUG);
-            csprint(bnet_sig_to_ascii(UA_sock), CS_DEBUG);
-            csprint(">>\n", CS_DEBUG);
-         }
-      }
-      else { /* BNET_HARDEOF || BNET_ERROR */
-         csprint(NULL, CS_END);
-         break;
-      }
-           
-      if (UA_sock->is_stop()) {
-         csprint(NULL, CS_END);
-         break;            /* error or term */
-      }
-      
-      do_not_forward_eod = 0;
-   }
-   
-   csprint(NULL, CS_DISCONNECTED);
-
-   csprint(_("Connection terminated\n"));
-   
-   UA_sock = NULL;
-
-   csprint(NULL, CS_TERMINATED);
-
-#ifdef HAVE_WIN32
-   Exit();
-#endif
-   
-   return NULL;
-}
-
-void console_thread::Write(const char* str) 
-{
-   if (UA_sock) {
-      UA_sock->msglen = (int32_t)strlen(str);
-      pm_strcpy(&UA_sock->msg, str);
-      UA_sock->send();
-   } else if (choosingdirector) {
-//      wxString number = str;
-//      number.RemoveLast(); /* Removes \n */
-      long val;
-      
-//      if (number.ToLong(&val)) {
-      val = atol(str);
-      if (val) {
-         directorchoosen = (int)val;
-      } else {
-         directorchoosen = 0;
-      }
-   }
-}
-
-void console_thread::Delete() {
-   Write("quit\n");
-   if (UA_sock) {
-      UA_sock->signal(BNET_TERMINATE); /* send EOF */
-      UA_sock->close();
-      UA_sock = NULL;
-      /*csprint(NULL, CS_END);
-      csprint(NULL, CS_DISCONNECTED);
-      csprint(NULL, CS_TERMINATED);*/
-   }
-}
diff --git a/src/wx-console/console_thread.h b/src/wx-console/console_thread.h
deleted file mode 100644
index 069d2b7..0000000
--- a/src/wx-console/console_thread.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- *
- *    Interaction thread between director and the GUI
- *
- *    Nicolas Boichat, April-May 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-#ifndef CONSOLE_THREAD_H
-#define CONSOLE_THREAD_H
-
-#ifndef ENABLE_NLS
-#undef setlocale
-#undef textdomain
-#undef bindtextdomain
-#endif
-
-
-#include <wx/wxprec.h>
-
-#include <wx/string.h>
-#include <wx/thread.h> // inheriting class's header file
-#include <wx/intl.h> /* We need to have _ and N_ defined by wxWidgets before Bacula tries to redefine them */
-#include "bacula.h"
-#include "jcr.h"
-
-/**
- * Console thread, does interaction between bacula routines and the GUI
- */
-class console_thread : public wxThread
-{
-   public:
-      // class constructor
-      console_thread();
-      // class destructor
-      ~console_thread();
-
-      void* Entry();
-      void Write(const char* str);
-      virtual void Delete();
-
-      static void InitLib();
-      static void FreeLib();
-      static wxString LoadConfig(wxString configfile);
-      static void SetWorkingDirectory(wxString w_dir);
-   private:
-      static bool inited;
-      static bool configloaded;
-
-      bool choosingdirector;
-
-      static wxString working_dir;
-
-      int directorchoosen;
-
-      BSOCK* UA_sock;
-      JCR jcr;
-};
-
-int pm_cst_strcpy(POOLMEM **pm, const char *str);
-
-#endif // CONSOLE_THREAD_H
diff --git a/src/wx-console/csprint.h b/src/wx-console/csprint.h
deleted file mode 100644
index 349806a..0000000
--- a/src/wx-console/csprint.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *
- *    csprint header file, used by console_thread to send events back to the GUI.
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-#ifndef CSPRINT_H
-#define CSPRINT_H
-
-#define CS_DATA          1 /* data has been received */
-#define CS_END           2 /* no data to receive anymore */
-#define CS_PROMPT        3 /* prompt signal received */
-#define CS_CONNECTED     4 /* the socket is now connected */
-#define CS_DISCONNECTED  5 /* the socket is now disconnected */
-
-#define CS_REMOVEPROMPT  6 /* remove the prompt (#), when automatic messages are comming */
-
-#define CS_DEBUG        10 /* used to print debug messages */
-#define CS_TERMINATED   99 /* used to signal that the thread is terminated */
-
-/* function called by console_thread to send events back to the GUI */
-class wxString;
-
-void csprint(const char* str, int status=CS_DATA);
-void csprint(wxString str, int status=CS_DATA);
-
-#endif
diff --git a/src/wx-console/main.cpp b/src/wx-console/main.cpp
deleted file mode 100644
index 04045e2..0000000
--- a/src/wx-console/main.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
- *
- *    Bacula bwx-console application
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-
-
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-
-#include <wx/wxprec.h>
-#include <wx/config.h>
-#include <wx/intl.h>
-#include "wxbmainframe.h"
-#include "csprint.h"
-
-
-/* Dummy functions */
-int generate_daemon_event(JCR *jcr, const char *event) { return 1; }
-int generate_job_event(JCR *jcr, const char *event) { return 1; }
-
-
-// ----------------------------------------------------------------------------
-// resources
-// ----------------------------------------------------------------------------
-
-class MyApp : public wxApp
-{
-public:
-   virtual bool OnInit();
-};
-
-// ============================================================================
-// implementation
-// ============================================================================
-
-IMPLEMENT_APP(MyApp)
-
-// ----------------------------------------------------------------------------
-// the application class
-// ----------------------------------------------------------------------------
-
-// 'Main program' equivalent: the program execution "starts" here
-bool MyApp::OnInit()
-{
-   /* wxWidgets internationalisation */
-   wxLocale m_locale;
-   m_locale.Init();
-   m_locale.AddCatalog(wxT("bacula"));
-   wxLocale::AddCatalogLookupPathPrefix(wxT(LOCALEDIR));
-
-   long posx, posy, sizex, sizey;
-   int displayx, displayy;
-   OSDependentInit();
-   wxConfig::Get()->Read(wxT("/Position/X"), &posx, 50);
-   wxConfig::Get()->Read(wxT("/Position/Y"), &posy, 50);
-   wxConfig::Get()->Read(wxT("/Size/Width"), &sizex, 780);
-   wxConfig::Get()->Read(wxT("/Size/Height"), &sizey, 500);
-   
-   wxDisplaySize(&displayx, &displayy);
-   
-   /* Check if we are on the screen... */
-   if ((posx+sizex > displayx) || (posy+sizey > displayy)) {
-      /* Try to move the top-left corner first */
-      posx = 50;
-      posy = 50;
-      if ((posx+sizex > displayx) || (posy+sizey > displayy)) {
-         posx = 25;
-         posy = 25;
-         sizex = displayx - 50;
-         sizey = displayy - 50;
-      }
-   }
-
-   wxbMainFrame *frame = wxbMainFrame::CreateInstance(_("Bacula bwx-console"),
-                         wxPoint(posx, posy), wxSize(sizex, sizey));
-
-   frame->Show(TRUE);
-
-   frame->Print(wxString::Format(_("Welcome to bacula bwx-console %s (%s)!\n"), wxT(VERSION), wxT(BDATE)), CS_DEBUG);
-
-   frame->StartConsoleThread(wxT(""));
-   
-   return TRUE;
-}
diff --git a/src/wx-console/marked.xpm b/src/wx-console/marked.xpm
deleted file mode 100644
index 7aac244..0000000
--- a/src/wx-console/marked.xpm
+++ /dev/null
@@ -1,39 +0,0 @@
-/* XPM */
-static char *marked_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 16 1",
-"  c Gray0",
-". c #bf0000",
-"X c #00bf00",
-"o c #bfbf00",
-"O c #0000bf",
-"+ c #bf00bf",
-"@ c #00bfbf",
-"# c None",
-"$ c #808080",
-"% c Red",
-"& c Green",
-"* c Yellow",
-"= c Blue",
-"- c Magenta",
-"; c Cyan",
-": c Gray100",
-/* pixels */
-"################",
-"################",
-"################",
-"################",
-"############&&&#",
-"###########&&&##",
-"#########&&&&###",
-"########&&&&####",
-"##&&&##&&&&#####",
-"###&&&&&&&######",
-"####&&&&&#######",
-"#####&&&########",
-"######&#########",
-"################",
-"################",
-"################"
-};
-
diff --git a/src/wx-console/partmarked.xpm b/src/wx-console/partmarked.xpm
deleted file mode 100644
index 23e1818..0000000
--- a/src/wx-console/partmarked.xpm
+++ /dev/null
@@ -1,39 +0,0 @@
-/* XPM */
-static char *partmarked_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 16 1",
-"  c Gray0",
-". c #bf0000",
-"X c #00bf00",
-"o c #bfbf00",
-"O c #0000bf",
-"+ c #bf00bf",
-"@ c #00bfbf",
-"# c None",
-"$ c #808080",
-"% c Red",
-"& c Green",
-"* c Yellow",
-"= c Blue",
-"- c Magenta",
-"; c Cyan",
-": c Gray100",
-/* pixels */
-"################",
-"################",
-"################",
-"##%%%######%%%##",
-"###%%%####%%%###",
-"####%%%##%%%####",
-"#####%%%%%%#####",
-"######%%%%######",
-"######%%%%######",
-"#####%%%%%%#####",
-"####%%%##%%%####",
-"###%%%####%%%#&&",
-"##%%%######%%&&#",
-"########&&##&&##",
-"#########&&&&###",
-"##########&&####"
-};
-
diff --git a/src/wx-console/unmarked.xpm b/src/wx-console/unmarked.xpm
deleted file mode 100644
index fc624bc..0000000
--- a/src/wx-console/unmarked.xpm
+++ /dev/null
@@ -1,39 +0,0 @@
-/* XPM */
-static char *unmarked_xpm[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 16 1",
-"  c Gray0",
-". c #bf0000",
-"X c #00bf00",
-"o c #bfbf00",
-"O c #0000bf",
-"+ c #bf00bf",
-"@ c #00bfbf",
-"# c None",
-"$ c #808080",
-"% c Red",
-"& c Green",
-"* c Yellow",
-"= c Blue",
-"- c Magenta",
-"; c Cyan",
-": c Gray100",
-/* pixels */
-"################",
-"################",
-"################",
-"##%%%######%%%##",
-"###%%%####%%%###",
-"####%%%##%%%####",
-"#####%%%%%%#####",
-"######%%%%######",
-"######%%%%######",
-"#####%%%%%%#####",
-"####%%%##%%%####",
-"###%%%####%%%###",
-"##%%%######%%%##",
-"################",
-"################",
-"################"
-};
-
diff --git a/src/wx-console/wx-console_private.h b/src/wx-console/wx-console_private.h
deleted file mode 100644
index 841bad7..0000000
--- a/src/wx-console/wx-console_private.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// THIS FILE WILL BE OVERWRITTEN BY DEV-C++!
-// DO NOT EDIT!
-
-#ifndef BACULA-WX-GUI_PRIVATE_H
-#define BACULA-WX-GUI_PRIVATE_H
-
-// VERSION DEFINITIONS
-#define VER_STRING	"0.1.1.1"
-#define VER_MAJOR	0
-#define VER_MINOR	1
-#define VER_RELEASE	1
-#define VER_BUILD	1
-#define COMPANY_NAME	""
-#define FILE_VERSION	""
-#define FILE_DESCRIPTION	"Developed using the Dev-C++ IDE"
-#define INTERNAL_NAME	""
-#define LEGAL_COPYRIGHT	""
-#define LEGAL_TRADEMARKS	""
-#define ORIGINAL_FILENAME	""
-#define PRODUCT_NAME	""
-#define PRODUCT_VERSION	""
-
-#endif //BACULA-WX-GUI_PRIVATE_H
diff --git a/src/wx-console/wx-console_private.rc b/src/wx-console/wx-console_private.rc
deleted file mode 100644
index ca0cd0b..0000000
--- a/src/wx-console/wx-console_private.rc
+++ /dev/null
@@ -1,8 +0,0 @@
-
-A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "bwx-console.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// RT_MANIFEST
-//
-CREATEPROCESS_MANIFEST_RESOURCE_ID     RT_MANIFEST    "bwx-console.manifest"
diff --git a/src/wx-console/wxbconfigfileeditor.cpp b/src/wx-console/wxbconfigfileeditor.cpp
deleted file mode 100644
index 97b570d..0000000
--- a/src/wx-console/wxbconfigfileeditor.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- *
- *    Configuration file editor
- *
- *    Nicolas Boichat, May 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-#include "wxbconfigfileeditor.h"
-#include <wx/file.h>
-#include <wx/filename.h>
-
-
-enum
-{
-   Save = 1,
-   Quit = 2
-};
-
-BEGIN_EVENT_TABLE(wxbConfigFileEditor, wxDialog)
-   EVT_BUTTON(Save, wxbConfigFileEditor::OnSave)
-   EVT_BUTTON(Quit, wxbConfigFileEditor::OnQuit)
-#ifdef HAVE_WIN32
-   EVT_PAINT (      wxbConfigFileEditor::OnPaint)
-#endif
-END_EVENT_TABLE()
-
-wxbConfigFileEditor::wxbConfigFileEditor(wxWindow* parent, wxString filename):
-      wxDialog(parent, -1, _("Config file editor"), wxDefaultPosition, wxSize(500, 300),
-                   wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) {
-   this->filename = filename;
-   
-   wxString strbuf;
-
-   wxFileName filen(filename);
-   
-   if (!filen.FileExists()) {
-      strbuf << wxT("#\n");
-      strbuf << _("# Bacula bwx-console Configuration File\n");
-      strbuf << wxT("#\n");
-      strbuf << wxT("\n");
-      strbuf << wxT("Director {\n");
-      strbuf << wxT("  Name = <hostname>-dir\n");
-      strbuf << wxT("  DIRport = 9101\n");
-      strbuf << wxT("  address = <hostname>\n");
-      strbuf << wxT("  Password = \"<dir_password>\"\n");
-      strbuf << wxT("}\n");
-   }
-   else {
-      wxFile file(filename);
-      char buffer[2049];
-      off_t len;
-      while ((len = file.Read(buffer, 2048)) > -1) {
-         buffer[len] = 0;
-         strbuf << wxString(buffer,wxConvUTF8);
-         if (file.Eof())
-            break;
-      }
-      file.Close();
-   }
-
-   textCtrl = new wxTextCtrl(this,-1,strbuf,wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_RICH2 | wxTE_DONTWRAP);
-   wxFont font(10, wxMODERN, wxNORMAL, wxNORMAL);
-#if defined __WXGTK12__ && !defined __WXGTK20__ // Fix for "chinese" fonts under gtk+ 1.2
-   font.SetDefaultEncoding(wxFONTENCODING_ISO8859_1);
-#endif
-   textCtrl->SetDefaultStyle(wxTextAttr(*wxBLACK, wxNullColour, font));
-   textCtrl->SetStyle(0, textCtrl->GetLastPosition(), wxTextAttr(*wxBLACK, wxNullColour, font));
-
-   wxFlexGridSizer *mainSizer = new wxFlexGridSizer(2, 1, 0, 0);
-   mainSizer->AddGrowableCol(0);
-   mainSizer->AddGrowableRow(0);
-   
-   wxBoxSizer *bottomsizer = new wxBoxSizer(wxHORIZONTAL);
-   bottomsizer->Add(new wxButton(this, Save, _("Save and close")), 0, wxALL, 10);
-   bottomsizer->Add(new wxButton(this, Quit, _("Close without saving")), 0, wxALL, 10);
-   
-   mainSizer->Add(textCtrl, 1, wxEXPAND);
-   mainSizer->Add(bottomsizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL);
-   
-   this->SetSizer(mainSizer);
-
-   firstpaint = true;
-}
-
-wxbConfigFileEditor::~wxbConfigFileEditor() {
-   
-}
-
-/* Kludge for Win32, so the text control is not completely selected. */
-void wxbConfigFileEditor::OnPaint(wxPaintEvent& event) {
-   wxPaintDC dc(this);
-
-   if (firstpaint) {
-      firstpaint = false;
-      textCtrl->SetSelection(0, 0);
-   }
-}
-
-void wxbConfigFileEditor::OnSave(wxCommandEvent& event) {
-   wxFile file(filename, wxFile::write);
-   if (!file.IsOpened()) {
-      wxMessageBox(wxString::Format(_("Unable to write to %s\n"), filename.c_str()),
-                        _("Error while saving"),
-                        wxOK | wxICON_ERROR, this);
-      EndModal(wxCANCEL);
-      return;
-   }
-   
-   file.Write(textCtrl->GetValue(),wxConvLocal);
-   
-   file.Flush();
-   file.Close();
-   
-   EndModal(wxOK);
-}
-
-void wxbConfigFileEditor::OnQuit(wxCommandEvent& event) {
-   EndModal(wxCANCEL);
-}
diff --git a/src/wx-console/wxbconfigfileeditor.h b/src/wx-console/wxbconfigfileeditor.h
deleted file mode 100644
index 3fb86dd..0000000
--- a/src/wx-console/wxbconfigfileeditor.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *
- *    Configuration file editor
- *
- *    Nicolas Boichat, May 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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 "wx/wxprec.h"
-#include "wx/wx.h"
-#include <wx/dialog.h>
-
-#include <wx/textctrl.h>
-
-class wxbConfigFileEditor : public wxDialog {
-public:
-        wxbConfigFileEditor(wxWindow* parent, wxString filename);
-        virtual ~wxbConfigFileEditor();
-private:
-   wxString filename;
-
-   wxTextCtrl* textCtrl;
-
-   bool firstpaint;
-
-   void OnSave(wxCommandEvent& event);
-   void OnQuit(wxCommandEvent& event);
-   void OnPaint(wxPaintEvent& event);
-
-   DECLARE_EVENT_TABLE()
-};
diff --git a/src/wx-console/wxbconfigpanel.cpp b/src/wx-console/wxbconfigpanel.cpp
deleted file mode 100644
index 02cc9df..0000000
--- a/src/wx-console/wxbconfigpanel.cpp
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
- *
- *   Config panel, used to specify parameters (for example clients, filesets... in restore)
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-#include "wxbconfigpanel.h"
-#include <wx/arrimpl.cpp>
-
-
-WX_DEFINE_OBJARRAY(wxbConfig);
-
-/* Create a new config parameter */
-wxbConfigParam::wxbConfigParam(wxString title, wxWindowID id, wxbConfigType type, wxString value) {
-   this->title = title;
-   this->id = id;
-   this->type = type;
-   this->value = value;
-   this->values = NULL;
-   this->nvalues = 0;
-   this->choicectrl = NULL;
-   this->textctrl = NULL;
-   this->statictext = NULL;
-}
-
-wxbConfigParam::wxbConfigParam(wxString title, wxWindowID id, wxbConfigType type, int n, wxString* values) {
-   this->title = title;
-   this->id = id;
-   this->type = type;
-   this->values = new wxString[n];
-   for (int i = 0; i < n; i++) {
-      this->values[i] = values[i];
-   }
-   this->nvalues = n;
-   this->choicectrl = NULL;
-   this->textctrl = NULL;
-   this->statictext = NULL;
-}
-
-wxbConfigParam::~wxbConfigParam() {
-   if (values) delete[] values;
-   if (choicectrl) delete choicectrl;
-   if (textctrl) delete textctrl;
-   if (statictext) delete statictext;
-}
-  
-void wxbConfigParam::AddControl(wxWindow* parent, wxSizer* sizer) {
-   sizer->Add(new wxStaticText(parent, -1, title + wxT(": "), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT), 0, wxALIGN_CENTER_VERTICAL);
-   switch (type) {
-   case text:
-      statictext = new wxStaticText(parent, -1, value, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
-      sizer->Add(statictext, 1, wxEXPAND | wxADJUST_MINSIZE);
-      break;
-   case modifiableText:
-      textctrl = new wxTextCtrl(parent, id, value, wxDefaultPosition, wxDefaultSize);
-      sizer->Add(textctrl, 1, wxEXPAND | wxADJUST_MINSIZE);
-      break;
-   case choice:
-#if defined __WXGTK20__ /* Choices are taller under GTK+-2.0 */
-      wxSize size = wxSize(150, 25);
-#else
-      wxSize size = wxSize(150, 20);
-#endif
-      choicectrl = new wxChoice(parent, id, wxDefaultPosition, size, nvalues, values);
-      sizer->Add(choicectrl, 1, wxEXPAND);
-      break;
-   }
-}
-
-wxString wxbConfigParam::GetTitle() {
-   return title;
-}
-
-wxString wxbConfigParam::GetValue() {
-   switch (type) {
-   case text:
-      return (statictext != NULL) ? statictext->GetLabel() : wxString(wxT(""));
-      break;
-   case modifiableText:
-      return (textctrl != NULL) ? textctrl->GetValue() : wxString(wxT(""));      
-      break;
-   case choice:
-      return (choicectrl != NULL) ? choicectrl->GetStringSelection() : wxString(wxT(""));
-      break;      
-   }
-   return wxT("");
-}
-
-void wxbConfigParam::SetValue(wxString str) {
-   switch (type) {
-   case text:
-      if (statictext)
-         statictext->SetLabel(str);
-      break;
-   case modifiableText:
-      if (textctrl)
-         textctrl->SetValue(str);      
-      break;
-   case choice:
-      if (choicectrl) {
-         int k;
-         for (k = 0; k < (int)choicectrl->GetCount(); k++) {
-            if (str == choicectrl->GetString(k)) {
-               choicectrl->SetSelection(k);
-               break;
-            }
-         }
-         if (k == (int)choicectrl->GetCount()) { // Should never happen
-            choicectrl->Append(str);
-            choicectrl->SetSelection(k);
-         }
-      }
-      break;      
-   }
-}
-
-int wxbConfigParam::GetIndex() {
-   if (choicectrl) {
-      return choicectrl->GetSelection();
-   }
-   return -1;
-}
-
-int wxbConfigParam::GetCount() {
-   if (choicectrl) {
-      return choicectrl->GetCount();
-   }
-   return -1;
-}
-   
-
-void wxbConfigParam::SetIndex(int ind) {
-   if (choicectrl) {
-      choicectrl->SetSelection(ind);
-   }
-}
-
-void wxbConfigParam::Clear() {
-   if (choicectrl) {
-      choicectrl->Clear();
-   }
-}
-
-void wxbConfigParam::Add(wxString value) {
-   if (choicectrl) {
-      choicectrl->Append(value);
-   }
-}
-
-/* Creates a new config panel, config must be allocated with new */
-wxbConfigPanel::wxbConfigPanel(wxWindow* parent, wxbConfig* config, wxString title,
-      wxWindowID ok, wxWindowID cancel, wxWindowID apply): wxPanel(parent) {
-
-   this->config = config;
-
-   wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL);
-   
-   mainSizer->Add(
-      new wxStaticText(this, -1, title, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER),
-            0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5);
-
-   wxFlexGridSizer* cfgSizer = new wxFlexGridSizer(config->GetCount()+1, 2, 8, 5);
-   unsigned int i;
-   for (i = 0; i < config->GetCount(); i++) {
-      (*config)[i].AddControl(this, cfgSizer);
-   }
-   mainSizer->Add(cfgSizer, 1, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL, 5);
-   
-   wxBoxSizer* restoreBottomSizer = new wxBoxSizer(wxHORIZONTAL);
-   
-   cfgOk = new wxButton(this, ok, _("OK"), wxDefaultPosition, wxSize(70, 25));
-   restoreBottomSizer->Add(cfgOk, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
-
-   if (apply != -1) {
-      cfgApply = new wxButton(this, apply, _("Apply"), wxDefaultPosition, wxSize(70, 25));
-      restoreBottomSizer->Add(cfgApply, 1, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 10);
-   }
-   else {
-      cfgApply = NULL;
-   }
-
-   cfgCancel = new wxButton(this, cancel, _("Cancel"), wxDefaultPosition, wxSize(70, 25));
-   restoreBottomSizer->Add(cfgCancel, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, 10);
-   
-   mainSizer->Add(restoreBottomSizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL, 5);
-   
-   SetSizer(mainSizer);
-   mainSizer->SetSizeHints(this);
-   
-   last = 0;
-}
-
-wxbConfigPanel::~wxbConfigPanel() {
-   delete config;
-}
-   
-void wxbConfigPanel::SetRowString(const wxChar* title, wxString value) {
-   int i;
-   if ((i = FindRow(title)) > -1) {
-      (*config)[i].SetValue(value);
-   }
-}
-
-wxString wxbConfigPanel::GetRowString(const wxChar* title) {
-   int i;
-   if ((i = FindRow(title)) > -1) {
-      return (*config)[i].GetValue();
-   }
-   return wxT("");
-}
-
-void wxbConfigPanel::SetRowSelection(const wxChar* title, int ind) {
-   int i;
-   if ((i = FindRow(title)) > -1) {
-      (*config)[i].SetIndex(ind);
-   }
-}
-
-int wxbConfigPanel::GetRowSelection(const wxChar* title) {
-   int i;
-   if ((i = FindRow(title)) > -1) {
-      return (*config)[i].GetIndex();
-   }
-   return -1;
-}
-
-void wxbConfigPanel::ClearRowChoices(const wxChar* title) {
-   int i;
-   if ((i = FindRow(title)) > -1) {
-      (*config)[i].Clear();
-   }  
-}
-
-void wxbConfigPanel::AddRowChoice(const wxChar* title, wxString value) {
-   int i;
-   if ((i = FindRow(title)) > -1) {
-      (*config)[i].Add(value);
-   }  
-}
-
-int wxbConfigPanel::FindRow(const wxChar* title) {
-   unsigned int i;
-   
-   for (i = last; i < config->GetCount(); i++) {
-      if ((*config)[i].GetTitle() == title) {
-         last = i;
-         return i;
-      }
-   }
-   
-   for (i = 0; i < last; i++) {
-      if ((*config)[i].GetTitle() == title) {
-         last = i;
-         return i;
-      }
-   }
-   
-   last = 0;
-   return -1;
-}
-
-int wxbConfigPanel::GetRowCount(const wxChar* title)
-{
-   int i;
-   if ((i = FindRow(title)) > -1) {
-      return (*config)[i].GetCount();
-   }  
-
-   return -1;
-}
-
-void wxbConfigPanel::EnableApply(bool enable) {
-   cfgOk->Enable(!enable);
-   if (cfgApply) cfgApply->Enable(enable);
-}
diff --git a/src/wx-console/wxbconfigpanel.h b/src/wx-console/wxbconfigpanel.h
deleted file mode 100644
index a9afb41..0000000
--- a/src/wx-console/wxbconfigpanel.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
- *
- *   Config panel, used to specify parameters (for example clients, filesets... in restore)
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-
-#ifndef WXBCONFIGPANEL_H
-#define WXBCONFIGPANEL_H
-
-#include "wxbutils.h"
-#include <wx/panel.h>
-#include <wx/choice.h>
-#include <wx/stattext.h>
-#include <wx/textctrl.h>
-
-#include <wx/dynarray.h>
-
-enum wxbConfigType {
-   text,
-   modifiableText,
-   choice
-};
-
-class wxbConfigParam {
-   public:
-      /* Create a new config parameter */
-      wxbConfigParam(wxString title, wxWindowID id, wxbConfigType type, wxString value);
-      wxbConfigParam(wxString title, wxWindowID id, wxbConfigType type, int n, wxString values[]);
-     ~wxbConfigParam();
-
-     void AddControl(wxWindow* parent, wxSizer* sizer);
-
-     wxString GetValue();
-     void SetValue(wxString str);
-
-     int GetIndex();
-     void SetIndex(int ind);
-
-     void Clear();
-     void Add(wxString value);
-     int GetCount();
-
-     wxString GetTitle();
-
-   private:
-      wxString value;
-      wxString* values;
-      int nvalues;
-
-      wxString title;
-
-      wxWindowID id;
-
-      wxbConfigType type;
-
-      wxChoice* choicectrl;
-      wxTextCtrl* textctrl;
-      wxStaticText* statictext;
-};
-
-WX_DECLARE_OBJARRAY(wxbConfigParam, wxbConfig);
-
-class wxbConfigPanel : public wxPanel {
-public:
-   /* Creates a new config panel, config must be allocated with new */
-        wxbConfigPanel(wxWindow* parent, wxbConfig* config, wxString title, wxWindowID ok, wxWindowID cancel, wxWindowID apply = -1);
-        ~wxbConfigPanel();
-
-   void SetRowString(const wxChar* title, wxString value);
-   wxString GetRowString(const wxChar* title);
-   int GetRowSelection(const wxChar* title);
-   void SetRowSelection(const wxChar* title, int ind);
-
-   void ClearRowChoices(const wxChar* title);
-   void AddRowChoice(const wxChar* title, wxString value);
-   int GetRowCount(const wxChar* title);
-
-   /* If enable is true, enables apply button, and disables ok button */
-   void EnableApply(bool enable = true);
-
-private:
-   /* Keep the last index accessed, for optimization */
-   unsigned int last;
-
-   wxbConfig* config;
-   wxButton* cfgOk;
-   wxButton* cfgCancel;
-   wxButton* cfgApply;
-
-   int FindRow(const wxChar* title);
-};
-
-#endif
diff --git a/src/wx-console/wxbhistorytextctrl.cpp b/src/wx-console/wxbhistorytextctrl.cpp
deleted file mode 100644
index 619a220..0000000
--- a/src/wx-console/wxbhistorytextctrl.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- *
- *   Text control with an history of commands typed
- *
- *    Nicolas Boichat, July 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-#include "wxbhistorytextctrl.h"
-
-BEGIN_EVENT_TABLE(wxbHistoryTextCtrl, wxTextCtrl)
-   EVT_KEY_DOWN(wxbHistoryTextCtrl::OnKeyDown)
-   EVT_KEY_UP(wxbHistoryTextCtrl::OnKeyUp)
-END_EVENT_TABLE()
-
-wxbHistoryTextCtrl::wxbHistoryTextCtrl(wxStaticText* help, 
-      wxWindow* parent, wxWindowID id, 
-      const wxString& value, const wxPoint& pos, 
-      const wxSize& size , 
-      const wxValidator& validator, 
-      const wxString& name): 
-         wxTextCtrl(parent, id, value, pos, size, 
-            wxTE_PROCESS_ENTER, validator, name) {
-   this->help = help;
-   index = 0;
-   history.Add(wxT(""));
-}
-
-void wxbHistoryTextCtrl::AddCommand(wxString cmd, wxString description) {
-   commands[cmd] = description;
-}
-
-void wxbHistoryTextCtrl::ClearCommandList() {
-   commands.clear();
-}
-
-void wxbHistoryTextCtrl::HistoryAdd(wxString cmd) {
-   if (cmd == wxT("")) return;
-   index = history.Count();
-   history[index-1] = cmd;
-   history.Add(wxT(""));
-}
-
-void wxbHistoryTextCtrl::SetValue(const wxString& value) {
-   if (value == wxT("")) {
-      help->SetLabel(_("Type your command below:"));
-   }
-   wxTextCtrl::SetValue(value);
-}
-
-void wxbHistoryTextCtrl::OnKeyDown(wxKeyEvent& event) {
-   if (event.m_keyCode == WXK_TAB) {
-
-   }
-   else {
-      event.Skip();
-   }
-}
-
-void wxbHistoryTextCtrl::OnKeyUp(wxKeyEvent& event) {
-   if (event.m_keyCode == WXK_UP) {
-      if (index > 0) {
-         if (index == ((int)history.Count()-1)) {
-            history[index] = GetValue();
-         }
-         index--;
-         SetValue(history[index]);
-         SetInsertionPointEnd();
-      }
-   }
-   else if (event.m_keyCode == WXK_DOWN) {
-      if (index < ((int)history.Count()-1)) {
-         index++;
-         SetValue(history[index]);
-         SetInsertionPointEnd();
-      }      
-   }
-   else if (GetValue() != wxT("")) {
-      wxbCommands::iterator it;
-      wxString key;
-      wxString helptext = _("Unknown command.");
-      int found = 0;      
-      for( it = commands.begin(); it != commands.end(); ++it ) {         
-         if (it->first.Find(GetValue()) == 0) {
-            found++;
-            if (found > 2) {
-               helptext += wxT(" ") + it->first;
-            }
-            else if (found > 1) {
-               helptext = _("Possible completions: ") + key + wxT(" ") + it->first;
-            }
-            else { // (found == 1)
-               helptext = it->first + wxT(": ") + it->second;
-               key = it->first;
-            }
-         }
-         else if (GetValue().Find(it->first) == 0) {
-            helptext = it->first + wxT(": ") + it->second;
-            found = 0;
-            break;
-         }
-      }
-      
-      help->SetLabel(helptext);
-            
-      if (event.m_keyCode == WXK_TAB) {
-         if (found == 1) {
-            SetValue(key);
-            SetInsertionPointEnd();
-         }
-      }
-      else {
-         event.Skip();
-      }
-   }
-   else {
-      help->SetLabel(_("Type your command below:"));
-      event.Skip();
-   }
-}
diff --git a/src/wx-console/wxbhistorytextctrl.h b/src/wx-console/wxbhistorytextctrl.h
deleted file mode 100644
index 882f19a..0000000
--- a/src/wx-console/wxbhistorytextctrl.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- *
- *   Text control with an history of commands typed
- *
- *    Nicolas Boichat, July 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-#ifndef WXBHISTORYTEXTCTRL
-#define WXBHISTORYTEXTCTRL
-
-#include "wx/wxprec.h"
-
-#ifndef WX_PRECOMP
-   #include "wx/wx.h"
-#endif
-
-#include <wx/treectrl.h>
-#include <wx/hashmap.h>
-
-WX_DECLARE_STRING_HASH_MAP( wxString, wxbCommands );
-
-class wxbHistoryTextCtrl: public wxTextCtrl {
-   public:
-      wxbHistoryTextCtrl(wxStaticText* help, wxWindow* parent, wxWindowID id,
-         const wxString& value = wxT(""), const wxPoint& pos = wxDefaultPosition,
-         const wxSize& size = wxDefaultSize,
-         const wxValidator& validator = wxDefaultValidator,
-         const wxString& name = wxTextCtrlNameStr);
-
-      void HistoryAdd(wxString cmd);
-
-      void AddCommand(wxString cmd, wxString description);
-      void ClearCommandList();
-
-      virtual void SetValue(const wxString& value);
-   private:
-      wxArrayString history;
-      wxbCommands commands;
-      int index;
-      wxStaticText* help;
-
-      void OnKeyUp(wxKeyEvent& event);
-      void OnKeyDown(wxKeyEvent& event);
-
-      DECLARE_EVENT_TABLE();
-};
-
-#endif //WXBHISTORYTEXTCTRL
diff --git a/src/wx-console/wxblistctrl.cpp b/src/wx-console/wxblistctrl.cpp
deleted file mode 100644
index 7f0c417..0000000
--- a/src/wx-console/wxblistctrl.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- *
- *   Custom tree control, which send "tree marked" events when the user right-
- *   click on a item, or double-click on a mark.
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-
-#include "wxblistctrl.h"
-#include "csprint.h"
-#include "wxbmainframe.h"
-
-BEGIN_EVENT_TABLE(wxbListCtrl, wxListCtrl)
-   EVT_LEFT_DCLICK(wxbListCtrl::OnDoubleClicked)
-   EVT_RIGHT_DOWN(wxbListCtrl::OnRightClicked)
-END_EVENT_TABLE()
-
-DEFINE_LOCAL_EVENT_TYPE(wxbLIST_MARKED_EVENT)
-
-wxbListCtrl::wxbListCtrl(
-      wxWindow* parent, wxEvtHandler* handler, wxWindowID id, const wxPoint& pos, const wxSize& size): 
-            wxListCtrl(parent, id, pos, size, wxLC_REPORT | wxSUNKEN_BORDER) {
-   this->handler = handler;
-}
-
-wxbListCtrl::~wxbListCtrl() {}
-
-/* 
- * Send mark event if the user double-clicked on the icon.
- */
-void wxbListCtrl::OnDoubleClicked(wxMouseEvent& event) {
-   if (event.GetX() < GetColumnWidth(0)) {
-      wxbListMarkedEvent evt(GetId());
-
-      handler->ProcessEvent(evt);
-      
-      //No Skip : we don't want to go in this directory (if it is a directory)
-   }
-   else {
-      event.Skip();
-   }
-}
-
-/* 
- * Send mark event if the user right clicked on an item.
- */
-void wxbListCtrl::OnRightClicked(wxMouseEvent& event) {
-   wxbListMarkedEvent evt(GetId());
-
-   handler->ProcessEvent(evt);
-}
-
-/* Customized tree event, used for marking events */
-
-wxbListMarkedEvent::wxbListMarkedEvent(int id): wxEvent(id, wxbLIST_MARKED_EVENT) {}
-
-wxbListMarkedEvent::~wxbListMarkedEvent() {}
-
-wxbListMarkedEvent::wxbListMarkedEvent(const wxbListMarkedEvent& te): wxEvent(te) {}
-
-wxEvent *wxbListMarkedEvent::Clone() const {
-   return new wxbListMarkedEvent(*(this));
-}
diff --git a/src/wx-console/wxblistctrl.h b/src/wx-console/wxblistctrl.h
deleted file mode 100644
index 7d2aac4..0000000
--- a/src/wx-console/wxblistctrl.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *
- *   Custom list control, which send "list marked" events when the user right-
- *   click on a item, or double-click on a mark.
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-#ifndef WXBLISTCTRL_H
-#define WXBLISTCTRL_H
-
-#include "wx/wxprec.h"
-
-#ifndef WX_PRECOMP
-   #include "wx/wx.h"
-#endif
-
-#include <wx/listctrl.h>
-
-BEGIN_DECLARE_EVENT_TYPES()
-   DECLARE_LOCAL_EVENT_TYPE(wxbLIST_MARKED_EVENT,       1)
-END_DECLARE_EVENT_TYPES()
-
-/* Customized list event, used for marking events */
-class wxbListMarkedEvent: public wxEvent {
-   public:
-      wxbListMarkedEvent(int id);
-      ~wxbListMarkedEvent();
-      wxbListMarkedEvent(const wxbListMarkedEvent& te);
-      virtual wxEvent *Clone() const;
-
-};
-
-typedef void (wxEvtHandler::*wxListMarkedEventFunction)(wxbListMarkedEvent&);
-
-#define EVT_LIST_MARKED_EVENT(id, fn) \
-    DECLARE_EVENT_TABLE_ENTRY( \
-        wxbLIST_MARKED_EVENT, id, wxID_ANY, \
-        (wxObjectEventFunction)(wxEventFunction)(wxListMarkedEventFunction)&fn, \
-        (wxObject *) NULL \
-    ),
-
-/* Customized list, which transmit double clicks on images */
-class wxbListCtrl: public wxListCtrl {
-   public:
-      wxbListCtrl(wxWindow* parent, wxEvtHandler* handler, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
-      ~wxbListCtrl();
-
-   private:
-      void OnDoubleClicked(wxMouseEvent& event);
-      void OnRightClicked(wxMouseEvent& event);
-
-      wxEvtHandler* handler;
-
-      DECLARE_EVENT_TABLE();
-};
-
-#endif // WXBTREECTRL_H
diff --git a/src/wx-console/wxbmainframe.cpp b/src/wx-console/wxbmainframe.cpp
deleted file mode 100644
index a25b2a9..0000000
--- a/src/wx-console/wxbmainframe.cpp
+++ /dev/null
@@ -1,875 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2007 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.
-*/
-/*
- *
- *   Main frame
- *
- *    Nicolas Boichat, July 2004
- *
- *    Version $Id$
- */
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-
-#include "wxbmainframe.h" // class's header file
-
-#include "wxbrestorepanel.h"
-
-#include "wxbconfigfileeditor.h"
-
-#include "csprint.h"
-
-#include "wxwin16x16.xpm"
-
-#include <wx/arrimpl.cpp>
-
-#include <wx/stattext.h>
-#include <wx/statline.h>
-#include <wx/config.h>
-
-#include <wx/filename.h>
-
-#undef Yield /* MinGW defines Yield */
-
-// ----------------------------------------------------------------------------
-// event tables and other macros for wxWindows
-// ----------------------------------------------------------------------------
-
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// IDs for the controls and the menu commands
-enum
-{
-   // menu items
-   Minimal_Quit = 1,
-
-   // it is important for the id corresponding to the "About" command to have
-   // this standard value as otherwise it won't be handled properly under Mac
-   // (where it is special and put into the "Apple" menu)
-   Minimal_About = wxID_ABOUT,
-   
-   ChangeConfigFile = 2,
-   EditConfigFile = 3,
-   MenuConnect = 4,
-   MenuDisconnect = 5,
-   TypeText = 6,
-   SendButton = 7,
-   Thread = 8
-};
-
-/*
- *   wxbTHREAD_EVENT declaration, used by csprint
- */
-
-DEFINE_EVENT_TYPE(wxbTHREAD_EVENT)
-
-typedef void (wxEvtHandler::*wxThreadEventFunction)(wxbThreadEvent&);
-
-#define EVT_THREAD_EVENT(id, fn) \
-    DECLARE_EVENT_TABLE_ENTRY( \
-        wxbTHREAD_EVENT, id, wxID_ANY, \
-        (wxObjectEventFunction)(wxEventFunction)(wxThreadEventFunction)&fn, \
-        (wxObject *) NULL \
-    ),
-
-// the event tables connect the wxWindows events with the functions (event
-// handlers) which process them. It can be also done at run-time, but for the
-// simple menu events like this the static method is much simpler.
-BEGIN_EVENT_TABLE(wxbMainFrame, wxFrame)
-   EVT_MENU(Minimal_Quit,  wxbMainFrame::OnQuit)
-   EVT_MENU(Minimal_About, wxbMainFrame::OnAbout)
-   EVT_MENU(ChangeConfigFile, wxbMainFrame::OnChangeConfig)
-   EVT_MENU(EditConfigFile, wxbMainFrame::OnEditConfig)
-   EVT_MENU(MenuConnect, wxbMainFrame::OnConnect)
-   EVT_MENU(MenuDisconnect, wxbMainFrame::OnDisconnect)
-   EVT_TEXT_ENTER(TypeText, wxbMainFrame::OnEnter)
-   EVT_THREAD_EVENT(Thread, wxbMainFrame::OnPrint)
-   EVT_BUTTON(SendButton, wxbMainFrame::OnEnter)
-END_EVENT_TABLE()
-
-// ----------------------------------------------------------------------------
-// wxbThreadEvent
-// ----------------------------------------------------------------------------
-
-/*
- *  wxbThreadEvent constructor
- */
-wxbThreadEvent::wxbThreadEvent(int id): wxEvent(id, wxbTHREAD_EVENT) {
-   m_eventObject = NULL;
-}
-
-/*
- *  wxbThreadEvent destructor
- */
-wxbThreadEvent::~wxbThreadEvent()
-{
-   if (m_eventObject != NULL) {
-      delete m_eventObject;
-   }
-}
-
-/*
- *  wxbThreadEvent copy constructor
- */
-wxbThreadEvent::wxbThreadEvent(const wxbThreadEvent& te)
-{
-   this->m_eventType = te.m_eventType;
-   this->m_id = te.m_id;
-   if (te.m_eventObject != NULL) {
-      this->m_eventObject = new wxbPrintObject(*((wxbPrintObject*)te.m_eventObject));
-   }
-   else {
-      this->m_eventObject = NULL;
-   }
-   this->m_skipped = te.m_skipped;
-   this->m_timeStamp = te.m_timeStamp;
-}
-
-/*
- *  Must be implemented (abstract in wxEvent)
- */
-wxEvent* wxbThreadEvent::Clone() const
-{
-   return new wxbThreadEvent(*this);
-}
-
-/*
- *  Gets the wxbPrintObject attached to this event, containing data sent by director
- */
-wxbPrintObject* wxbThreadEvent::GetEventPrintObject()
-{
-   return (wxbPrintObject*)m_eventObject;
-}
-
-/*
- *  Sets the wxbPrintObject attached to this event
- */
-void wxbThreadEvent::SetEventPrintObject(wxbPrintObject* object)
-{
-   m_eventObject = (wxObject*)object;
-}
-
-// ----------------------------------------------------------------------------
-// main frame
-// ----------------------------------------------------------------------------
-
-wxbMainFrame *wxbMainFrame::frame = NULL;
-
-/*
- *  Singleton constructor
- */
-wxbMainFrame* wxbMainFrame::CreateInstance(const wxString& title, const wxPoint& pos, const wxSize& size, long style)
-{
-   frame = new wxbMainFrame(title, pos, size, style);
-   return frame;
-}
-
-/*
- *  Returns singleton instance
- */
-wxbMainFrame* wxbMainFrame::GetInstance()
-{
-   return frame;
-}
-
-/*
- *  Private destructor
- */
-wxbMainFrame::~wxbMainFrame()
-{
-   wxConfig::Get()->Write(wxT("/Position/X"), (long)GetPosition().x);
-   wxConfig::Get()->Write(wxT("/Position/Y"), (long)GetPosition().y);
-   wxConfig::Get()->Write(wxT("/Size/Width"), (long)GetSize().GetWidth());
-   wxConfig::Get()->Write(wxT("/Size/Height"), (long)GetSize().GetHeight());
-
-   if (ct != NULL) { // && (!ct->IsRunning())
-      ct->Delete();
-   }
-   frame = NULL;
-}
-
-/*
- *  Private constructor
- */
-wxbMainFrame::wxbMainFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style)
-      : wxFrame(NULL, -1, title, pos, size, style)
-{
-   lockedbyconsole = false;
-   
-   ct = NULL;
-   
-   promptparser = NULL;
-
-   // set the frame icon
-   SetIcon(wxIcon(wxwin16x16_xpm));
-
-#if wxUSE_MENUS
-   // create a menu bar
-   menuFile = new wxMenu;
-
-   // the "About" item should be in the help menu
-   wxMenu *helpMenu = new wxMenu;
-   helpMenu->Append(Minimal_About, _("&About...\tF1"), _("Show about dialog"));
-
-   menuFile->Append(MenuConnect, _("Connect"), _("Connect to the director"));
-   menuFile->Append(MenuDisconnect, _("Disconnect"), _("Disconnect of the director"));
-   menuFile->AppendSeparator();
-   menuFile->Append(ChangeConfigFile, _("Change of configuration file"), _("Change your default configuration file"));
-   menuFile->Append(EditConfigFile, _("Edit your configuration file"), _("Edit your configuration file"));
-   menuFile->AppendSeparator();
-   menuFile->Append(Minimal_Quit, _("E&xit\tAlt-X"), _("Quit this program"));
-
-   // now append the freshly created menu to the menu bar...
-   wxMenuBar *menuBar = new wxMenuBar();
-   menuBar->Append(menuFile, _("&File"));
-   menuBar->Append(helpMenu, _("&Help"));
-
-   // ... and attach this menu bar to the frame
-   SetMenuBar(menuBar);
-#endif // wxUSE_MENUS
-
-   CreateStatusBar(1);
-   
-   SetStatusText(wxString::Format(_("Welcome to bacula bwx-console %s (%s)!\n"), wxT(VERSION), wxT(BDATE)));
-
-   wxPanel* global = new wxPanel(this, -1);
-
-   notebook = new wxNotebook(global, -1);
-
-   /* Console */
-
-   wxPanel* consolePanel = new wxPanel(notebook, -1);
-   notebook->AddPage(consolePanel, _("Console"));
-
-   consoleCtrl = new wxTextCtrl(consolePanel,-1,wxT(""),wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY | wxTE_RICH);
-   wxFont font(10, wxMODERN, wxNORMAL, wxNORMAL);
-#if defined __WXGTK12__ && !defined __WXGTK20__ // Fix for "chinese" fonts under gtk+ 1.2
-   font.SetDefaultEncoding(wxFONTENCODING_ISO8859_1);
-   consoleCtrl->SetDefaultStyle(wxTextAttr(*wxBLACK, wxNullColour, font));
-   Print(_("Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"), CS_DEBUG);
-#else 
-   consoleCtrl->SetDefaultStyle(wxTextAttr(*wxBLACK, wxNullColour, font));
-#if (wxUSE_UNICODE == 0) && __WXGTK20__
-   Print(_("Warning : There is a problem with wxWidgets for GTK+ 2.0 without Unicode support when handling non-ASCII filenames: Every non-ASCII character in such filenames will be replaced by an interrogation mark.\nIf this behaviour disturbs you, please build bwx-console against a Unicode version of wxWidgets for GTK+ 2.0.\n---\n"), CS_DEBUG);   
-#endif
-#endif
-
-   helpCtrl = new wxStaticText(consolePanel, -1, _("Type your command below:"));
-
-   wxFlexGridSizer *consoleSizer = new wxFlexGridSizer(4, 1, 0, 0);
-   consoleSizer->AddGrowableCol(0);
-   consoleSizer->AddGrowableRow(0);
-
-   typeCtrl = new wxbHistoryTextCtrl(helpCtrl, consolePanel,TypeText,wxT(""),wxDefaultPosition,wxSize(200,20));
-   sendButton = new wxButton(consolePanel, SendButton, _("Send"));
-   
-   wxFlexGridSizer *typeSizer = new wxFlexGridSizer(1, 2, 0, 0);
-   typeSizer->AddGrowableCol(0);
-   typeSizer->AddGrowableRow(0);
-
-   //typeSizer->Add(new wxStaticText(consolePanel, -1, _("Command: ")), 0, wxALIGN_CENTER | wxALL, 0);
-   typeSizer->Add(typeCtrl, 1, wxEXPAND | wxALL, 0);
-   typeSizer->Add(sendButton, 1, wxEXPAND | wxLEFT, 5);
-
-   consoleSizer->Add(consoleCtrl, 1, wxEXPAND | wxALL, 0);
-   consoleSizer->Add(new wxStaticLine(consolePanel, -1), 0, wxEXPAND | wxALL, 0);
-   consoleSizer->Add(helpCtrl, 1, wxEXPAND | wxALL, 2);
-   consoleSizer->Add(typeSizer, 0, wxEXPAND | wxALL, 2);
-
-   consolePanel->SetAutoLayout( TRUE );
-   consolePanel->SetSizer( consoleSizer );
-   consoleSizer->SetSizeHints( consolePanel );
-
-   // Creates the list of panels which are included in notebook, and that need to receive director information
-
-   panels = new wxbPanel* [2];
-   panels[0] = new wxbRestorePanel(notebook);
-   panels[1] = NULL;
-
-   for (int i = 0; panels[i] != NULL; i++) {
-      notebook->AddPage(panels[i], panels[i]->GetTitle());
-   }
-
-   wxBoxSizer* globalSizer = new wxBoxSizer(wxHORIZONTAL);
-
-#if wxCHECK_VERSION(2, 6, 0)
-   globalSizer->Add(notebook, 1, wxEXPAND, 0);
-#else
-   globalSizer->Add(new wxNotebookSizer(notebook), 1, wxEXPAND, 0);
-#endif
-
-   global->SetSizer( globalSizer );
-   globalSizer->SetSizeHints( global );
-
-   wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
-
-   sizer->Add(global, 1, wxEXPAND | wxALL, 0);
-   SetAutoLayout(true);
-   SetSizer( sizer );
-   sizer->SetSizeHints( this );
-   this->SetSize(size);
-   EnableConsole(false);
-   
-   consoleBuffer = wxT("");
-   
-   configfile = wxT("");
-}
-
-/*
- *  Starts the thread interacting with the director
- *  If config is not empty, uses this config file.
- */
-void wxbMainFrame::StartConsoleThread(const wxString& config) {
-   menuFile->Enable(MenuConnect, false);
-   menuFile->Enable(MenuDisconnect, false);
-   menuFile->Enable(ChangeConfigFile, false);
-   menuFile->Enable(EditConfigFile, false);
-
-   if (ct != NULL) {
-      ct->Delete();
-      ct = NULL;
-      wxTheApp->Yield();
-   }
-   if (promptparser == NULL) {
-      promptparser = new wxbPromptParser();      
-   }
-   
-   if (config == wxT("")) {
-      configfile = wxT("");
-      
-      if (((wxTheApp->argc % 2) != 1)) {
-         Print(_("Error while parsing command line arguments, using defaults.\n"), CS_DEBUG);
-         Print(_("Usage: bwx-console [-c configfile] [-w tmp]\n"), CS_DEBUG);
-      }
-      else {
-         for (int c = 1; c < wxTheApp->argc; c += 2) {
-            if ((wxTheApp->argc >= c+2) && (wxString(wxTheApp->argv[c]) == wxT("-c"))) {
-               configfile = wxTheApp->argv[c+1];
-            }
-            if ((wxTheApp->argc >= c+2) && (wxString(wxTheApp->argv[c]) == wxT("-w"))) {
-               console_thread::SetWorkingDirectory(wxTheApp->argv[c+1]);
-            }
-            if (wxTheApp->argv[c][0] != '-') {
-               Print(_("Error while parsing command line arguments, using defaults.\n"), CS_DEBUG);
-               Print(_("Usage: bwx-console [-c configfile] [-w tmp]\n"), CS_DEBUG);
-               break;
-            }
-         }
-      }
-      
-      if (configfile == wxT("")) {
-         wxConfig::Set(new wxConfig(wxT("bwx-console"), wxT("bacula")));
-         if (!wxConfig::Get()->Read(wxT("/ConfigFile"), &configfile)) {
-#ifdef HAVE_MACOSX
-            wxFileName filename(::wxGetHomeDir());
-            filename.MakeAbsolute();
-            configfile = filename.GetLongPath();
-            if (!IsPathSeparator(configfile.Last())) {
-               configfile += '/';
-            }
-            configfile += L"Library/Preferences/org.bacula.wxconsole.conf";
-#else
-            wxFileName filename(::wxGetCwd(), wxT("bwx-console.conf"));
-            filename.MakeAbsolute();
-            configfile = filename.GetLongPath();
-#ifdef HAVE_WIN32
-            configfile.Replace(wxT("\\"), wxT("/"));
-#endif //HAVE_WIN32
-#endif //HAVE_MACOSX
-            wxConfig::Get()->Write(wxT("/ConfigFile"), configfile);
-   
-            int answer = wxMessageBox(
-                              wxString::Format(_(
-                              "It seems that it is the first time you run bwx-console.\nThis file (%s) has been choosen as default configuration file.\nDo you want to edit it? (if you click No you will have to select another file)"),
-                              configfile.c_str()),
-                              _("First run"),
-                              wxYES_NO | wxICON_QUESTION, this);
-            if (answer == wxYES) {
-               wxbConfigFileEditor(this, configfile).ShowModal();
-            }
-         }
-      }
-   }
-   else {
-      configfile = config;
-   }
-   
-   wxString err = console_thread::LoadConfig(configfile);
-   
-   while (err != wxT("")) {
-      int answer = wxMessageBox(
-                        wxString::Format(_(
-                           "Unable to read %s\nError: %s\nDo you want to choose another one? (Press no to edit this file)"),
-                           configfile.c_str(), err.c_str()),
-                        _("Unable to read configuration file"),
-                        wxYES_NO | wxCANCEL | wxICON_ERROR, this);
-      if (answer == wxNO) {
-         wxbConfigFileEditor(this, configfile).ShowModal();
-         err = console_thread::LoadConfig(configfile);
-      }
-      else if (answer == wxCANCEL) {
-         frame = NULL;
-         Close(true);
-         return;
-      }
-      else { // (answer == wxYES)
-         configfile = wxFileSelector(_("Please choose a configuration file to use"));
-         if ( !configfile.empty() ) {
-            err = console_thread::LoadConfig(configfile);
-         }
-         else {
-            frame = NULL;
-            Close(true);
-            return;
-         }
-      }
-      
-      if ((err == wxT("")) && (config == wxT(""))) {
-         answer = wxMessageBox(
-                           _("This configuration file has been successfully read, use it as default?"),
-                           _("Configuration file read successfully"),
-                           wxYES_NO | wxICON_QUESTION, this);
-         if (answer == wxYES) {
-              wxConfigBase::Get()->Write(wxT("/ConfigFile"), configfile);
-         }
-         break;
-      }
-   }
-   
-   // former was csprint
-   Print(wxString::Format(_("Using this configuration file: %s\n"), configfile.c_str()), CS_DEBUG);
-   
-   ct = new console_thread();
-   ct->Create();
-   ct->Run();
-   SetStatusText(_("Connecting to the director..."));
-}
-
-/* Register a new wxbDataParser */
-void wxbMainFrame::Register(wxbDataParser* dp) {
-   parsers.Add(dp);
-}
-   
-/* Unregister a wxbDataParser */
-void wxbMainFrame::Unregister(wxbDataParser* dp) {
-   int index;
-   if ((index = parsers.Index(dp)) != wxNOT_FOUND) {
-      parsers.RemoveAt(index);
-   }
-   else {
-      Print(_("Failed to unregister a data parser !"), CS_DEBUG);
-   }
-}
-
-// event handlers
-
-void wxbMainFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
-{
-   Print(_("Quitting.\n"), CS_DEBUG);
-   if (ct != NULL) {
-      ct->Delete();
-      ct = NULL;
-      wxTheApp->Yield();
-   }
-   console_thread::FreeLib();
-   frame = NULL;
-   wxTheApp->Yield();
-   Close(TRUE);
-}
-
-void wxbMainFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
-{
-   wxString msg;
-   msg.Printf(_("Welcome to Bacula bwx-console.\n"
-     "Written by Nicolas Boichat <nicolas at boichat.ch>\n"
-     "Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"));
-
-   wxMessageBox(msg, _("About Bacula bwx-console"), wxOK | wxICON_INFORMATION, this);
-}
-
-void wxbMainFrame::OnChangeConfig(wxCommandEvent& event) {
-   wxString oriconfigfile;
-   wxConfig::Get()->Read(wxT("/ConfigFile"), &oriconfigfile);
-   wxString configfile = wxFileSelector(_("Please choose your default configuration file"));
-   if ( !configfile.empty() ) {
-      if (oriconfigfile != configfile) {
-         int answer = wxMessageBox(
-                           _("Use this configuration file as default?"),
-                           _("Configuration file"),
-                           wxYES_NO | wxICON_QUESTION, this);
-         if (answer == wxYES) {
-              wxConfigBase::Get()->Write(wxT("/ConfigFile"), configfile);
-              wxConfigBase::Get()->Flush();
-              StartConsoleThread(wxT(""));
-              return;
-         }
-      }
-   
-      StartConsoleThread(configfile);
-   }
-}
-
-void wxbMainFrame::OnEditConfig(wxCommandEvent& event) {
-   wxString configfile;
-   wxConfig::Get()->Read(wxT("/ConfigFile"), &configfile);
-   int stat = wxbConfigFileEditor(this, configfile).ShowModal();
-   if (stat == wxOK) {
-      StartConsoleThread(configfile);
-   }
-}
-
-void wxbMainFrame::OnConnect(wxCommandEvent& event) {
-   StartConsoleThread(configfile);
-}
-
-void wxbMainFrame::OnDisconnect(wxCommandEvent& event) {
-   if (ct != NULL) {
-      ct->Delete();
-      ct = NULL;
-   }
-}
-
-void wxbMainFrame::OnEnter(wxCommandEvent& WXUNUSED(event))
-{
-   lockedbyconsole = true;
-   DisablePanels();
-   typeCtrl->HistoryAdd(typeCtrl->GetValue());
-   wxString str = typeCtrl->GetValue() + wxT("\n");
-   Send(str);
-}
-
-/*
- *  Called when data is arriving from director
- */
-void wxbMainFrame::OnPrint(wxbThreadEvent& event) {
-   wxbPrintObject* po = event.GetEventPrintObject();
-
-   Print(po->str, po->status);
-}
-
-/*
- *  Prints data received from director to the console, and forwards it to the panels
- */
-void wxbMainFrame::Print(wxString str, int status)
-{
-   if (lockedbyconsole) {
-      EnableConsole(false);
-   }
-   
-   if (status == CS_REMOVEPROMPT) {
-      if (consoleCtrl->GetLastPosition() > 0) {
-         consoleCtrl->Remove(consoleCtrl->GetLastPosition()-1, consoleCtrl->GetLastPosition()+1);
-      }
-      return;
-   }
-   
-   if (status == CS_TERMINATED) {
-      consoleCtrl->AppendText(consoleBuffer);
-      consoleBuffer = wxT("");
-      SetStatusText(_("Console thread terminated."));
-#ifdef HAVE_WIN32
-      consoleCtrl->PageDown();
-#else
-      consoleCtrl->ScrollLines(1);
-#endif
-      ct = NULL;
-      DisablePanels();
-      int answer = wxMessageBox( _("Connection to the director lost. Quit program?"), 
-                                 _("Connection lost"),
-                        wxYES_NO | wxICON_EXCLAMATION, this);
-      if (answer == wxYES) {
-         frame = NULL;
-         Close(true);
-      }
-      menuFile->Enable(MenuConnect, true);
-      menuFile->SetLabel(MenuConnect, _("Connect"));
-      menuFile->SetHelpString(MenuConnect, _("Connect to the director"));
-      menuFile->Enable(MenuDisconnect, false);
-      menuFile->Enable(ChangeConfigFile, true);
-      menuFile->Enable(EditConfigFile, true);
-      return;
-   }
-   
-   if (status == CS_CONNECTED) {
-      SetStatusText(_("Connected to the director."));
-      typeCtrl->ClearCommandList();
-      bool parsed = false;
-      int retries = 3;
-      wxbDataTokenizer* dt = wxbUtils::WaitForEnd(wxT(".help"), true);
-      while (true) {
-         int i, j;
-         wxString str;
-         for (i = 0; i < (int)dt->GetCount(); i++) {
-            str = (*dt)[i];
-            str.RemoveLast();
-            if ((j = str.Find(' ')) > -1) {
-               typeCtrl->AddCommand(str.Mid(0, j), str.Mid(j+1));
-               parsed = true;
-            }
-         }
-         retries--;
-         if ((parsed) || (!retries))
-            break;
-         dt = wxbUtils::WaitForEnd(wxT(""), true);
-      }
-      EnablePanels();
-      menuFile->Enable(MenuConnect, true);
-      menuFile->SetLabel(MenuConnect, _("Reconnect"));
-      menuFile->SetHelpString(MenuConnect, _("Reconnect to the director"));
-      menuFile->Enable(MenuDisconnect, true);
-      menuFile->Enable(ChangeConfigFile, true);
-      menuFile->Enable(EditConfigFile, true);
-      return;
-   }
-   if (status == CS_DISCONNECTED) {
-      consoleCtrl->AppendText(consoleBuffer);
-      consoleBuffer = wxT("");
-#ifdef HAVE_WIN32
-      consoleCtrl->PageDown();
-#else
-      consoleCtrl->ScrollLines(1);
-#endif
-      SetStatusText(_("Disconnected of the director."));
-      DisablePanels();
-      return;
-   }
-      
-   // CS_DEBUG is often sent by panels, 
-   // and resend it to them would sometimes cause infinite loops
-   
-   /* One promptcaught is normal, so we must have two true Print values to be
-    * sure that the prompt has effectively been caught.
-    */
-   int promptcaught = -1;
-   
-   if (status != CS_DEBUG) {
-      for (unsigned int i = 0; i < parsers.GetCount(); i++) {
-         promptcaught += parsers[i]->Print(str, status) ? 1 : 0;
-      }
-         
-      if ((status == CS_PROMPT) && (promptcaught < 1) && (promptparser->isPrompt())) {
-         Print(_("Unexpected question has been received.\n"), CS_DEBUG);
-//         Print(wxString("(") << promptparser->getIntroString() << "/-/" << promptparser->getQuestionString() << ")\n", CS_DEBUG);
-         
-         wxString message;
-         if (promptparser->getIntroString() != wxT("")) {
-            message << promptparser->getIntroString() << wxT("\n");
-         }
-         message << promptparser->getQuestionString();
-         
-         if (promptparser->getChoices()) {
-            wxString *choices = new wxString[promptparser->getChoices()->GetCount()];
-            int *numbers = new int[promptparser->getChoices()->GetCount()];
-            int n = 0;
-            
-            for (unsigned int i = 0; i < promptparser->getChoices()->GetCount(); i++) {
-               if ((*promptparser->getChoices())[i] != wxT("")) {
-                  choices[n] = (*promptparser->getChoices())[i];
-                  numbers[n] = i;
-                  n++;
-               }
-            }
-            
-            int res = ::wxGetSingleChoiceIndex(message,
-               _("bwx-console: unexpected director's question."), n, choices, this);
-            if (res == -1) { //Cancel pressed
-               Send(wxT(".\n"));
-            }
-            else {
-               if (promptparser->isNumericalChoice()) {
-                  Send(wxString() << numbers[res] << wxT("\n"));
-               }
-               else {
-                  Send(wxString() << choices[res] << wxT("\n"));
-               }
-            }
-            delete[] choices;
-            delete[] numbers;
-         }
-         else {
-            Send(::wxGetTextFromUser(message,
-               _("bwx-console: unexpected director's question."),
-               wxT(""), this) + wxT("\n"));
-         }
-      }
-   }
-      
-   if (status == CS_END) {
-      if (lockedbyconsole) {
-         EnablePanels();
-         lockedbyconsole = false;
-      }
-      str = wxT("#");
-   }
-
-   if (status == CS_DEBUG) {
-      consoleCtrl->AppendText(consoleBuffer);
-      consoleBuffer = wxT("");
-#ifdef HAVE_WIN32
-      consoleCtrl->PageDown();
-#else
-      consoleCtrl->ScrollLines(1);
-#endif
-      consoleCtrl->SetDefaultStyle(wxTextAttr(wxColour(0, 128, 0)));
-   }
-   else {
-      consoleCtrl->SetDefaultStyle(wxTextAttr(*wxBLACK));
-   }
-   consoleBuffer << wxbUtils::ConvertToPrintable(str);
-   if (status == CS_PROMPT) {
-      if (lockedbyconsole) {
-         EnableConsole(true);
-      }
-      //consoleBuffer << wxT("<P>");
-   }
-   
-   if ((status == CS_END) || (status == CS_PROMPT) || (str.Find(wxT("\n")) > -1)) {
-      consoleCtrl->AppendText(consoleBuffer);
-      consoleBuffer = wxT("");
-
-#ifdef HAVE_WIN32
-      consoleCtrl->PageDown();
-#else
-      consoleCtrl->ScrollLines(1);
-#endif
-   }
-   
-   //consoleCtrl->ShowPosition(consoleCtrl->GetLastPosition());
-   
-   /*if (status != CS_DEBUG) {
-      consoleCtrl->AppendText("@");
-   }*/
-   //consoleCtrl->SetInsertionPointEnd();
-}
-
-/*
- *  Sends data to the director
- */
-void wxbMainFrame::Send(wxString str)
-{
-   if (ct != NULL) {
-      /* wxString may contain everything in UNICODE
-       * -> convert to UTF-8 and send to director
-       */
-      ct->Write (str.mb_str(wxConvUTF8));
-      typeCtrl->SetValue(wxT(""));
-      consoleCtrl->SetDefaultStyle(wxTextAttr(*wxRED));
-      consoleCtrl->AppendText(wxbUtils::ConvertToPrintable(str));      
-      //consoleCtrl->PageDown();
-   }
-   
-/*   if ((consoleCtrl->GetNumberOfLines()-1) > nlines) {
-      nlines = consoleCtrl->GetNumberOfLines()-1;
-   }
-   
-   consoleCtrl->ShowPosition(nlines);*/
-}
-
-/* Enable panels */
-void wxbMainFrame::EnablePanels() {
-   for (int i = 0; panels[i] != NULL; i++) {
-      panels[i]->EnablePanel(true);
-   }
-   EnableConsole(true);
-}
-
-/* Disable panels, except the one passed as parameter */
-void wxbMainFrame::DisablePanels(void* except) {
-   for (int i = 0; panels[i] != NULL; i++) {
-      if (panels[i] != except) {
-         panels[i]->EnablePanel(false);
-      }
-      else {
-         panels[i]->EnablePanel(true);
-      }
-   }
-   if (this != except) {
-      EnableConsole(false);
-   }
-}
-
-/* Enable or disable console typing */
-void wxbMainFrame::EnableConsole(bool enable) {
-   typeCtrl->Enable(enable);
-   sendButton->Enable(enable);
-   if (enable) {
-      typeCtrl->SetFocus();
-   }
-}
-
-/*
- *  Used by csprint, which is called by console thread.
- *
- *  In GTK and perhaps X11, only the main thread is allowed to interact with
- *  graphical components, so by firing an event, the main loop will call OnPrint.
- *
- *  Calling OnPrint directly from console thread produces "unexpected async replies".
- */
-void firePrintEvent(wxString str, int status)
-{
-   wxbPrintObject* po = new wxbPrintObject(str, status);
-
-   wxbThreadEvent evt(Thread);
-   evt.SetEventPrintObject(po);
-   
-   if (wxbMainFrame::GetInstance()) {
-      wxbMainFrame::GetInstance()->AddPendingEvent(evt);
-   }
-}
-
-//wxString csBuffer; /* Temporary buffer for receiving data from console thread */
-
-/*
- *  Called by console thread, this function forwards data line by line and end
- *  signals to the GUI.
- */
-
-void csprint(wxString str, int status)
-{
-   firePrintEvent(str, status);  
-}
-
-
-void csprint(const char* str, int status)
-{
-   if (str != 0) {
-      firePrintEvent(wxString(str,wxConvUTF8), status);      
-   }
-   else {
-      firePrintEvent(wxT(""), status);
-   }
-}
diff --git a/src/wx-console/wxbmainframe.h b/src/wx-console/wxbmainframe.h
deleted file mode 100644
index 55165f2..0000000
--- a/src/wx-console/wxbmainframe.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- *
- *   Main frame header file
- *
- *    Nicolas Boichat, July 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-#ifndef WXBMAINFRAME_H
-#define WXBMAINFRAME_H
-
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
-   #pragma hdrstop
-#endif
-
-// for all others, include the necessary headers (this file is usually all you
-// need because it includes almost all "standard" wxWindows headers)
-#ifndef WX_PRECOMP
-   #include "wx/wx.h"
-#endif
-
-#include <wx/textctrl.h>
-#include <wx/tokenzr.h>
-#include <wx/notebook.h>
-
-#include <wx/dynarray.h>
-
-#include "console_thread.h"
-
-#include "wxbutils.h"
-
-#include "wxbhistorytextctrl.h"
-
-WX_DEFINE_ARRAY(wxbDataParser*, wxbDataParsers);
-
-// ----------------------------------------------------------------------------
-// wxbPrintObject - Used by wxbThreadEvent to contain data sent by director
-// ----------------------------------------------------------------------------
-
-class wxbPrintObject: public wxObject {
-   public:
-      wxString str;
-      int status;
-      wxbPrintObject(wxString str, int status): wxObject() {
-         this->str = str;
-         this->status = status;
-      }
-
-      wxbPrintObject(const wxbPrintObject& pe) {
-         this->str = pe.str;
-         this->status = pe.status;
-      }
-};
-
-// ----------------------------------------------------------------------------
-// wxbThreadEvent - Event used by wxbTHREAD_EVENT
-// ----------------------------------------------------------------------------
-
-DECLARE_LOCAL_EVENT_TYPE(wxbTHREAD_EVENT, -1)
-
-class wxbThreadEvent: public wxEvent {
-   public:
-      wxbThreadEvent(int id);
-      ~wxbThreadEvent();
-      wxbThreadEvent(const wxbThreadEvent& te);
-      virtual wxEvent *Clone() const;
-      wxbPrintObject* GetEventPrintObject();
-      void SetEventPrintObject(wxbPrintObject* object);
-};
-
-// Define a new frame type: this is going to be our main frame
-class wxbMainFrame : public wxFrame
-{
-public:
-   /* this class is a singleton */
-   static wxbMainFrame* CreateInstance(const wxString& title, const wxPoint& pos, const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);
-   static wxbMainFrame* GetInstance();
-
-   /* event handlers (these functions should _not_ be virtual) */
-   void OnQuit(wxCommandEvent& event);
-   void OnAbout(wxCommandEvent& event);
-   void OnChangeConfig(wxCommandEvent& event);
-   void OnEditConfig(wxCommandEvent& event);
-   void OnConnect(wxCommandEvent& event);
-   void OnDisconnect(wxCommandEvent& event);
-   void OnEnter(wxCommandEvent& event);
-   void OnPrint(wxbThreadEvent& event);
-
-   /* Enable and disable panels */
-   void EnablePanels();
-   void DisablePanels(void* except = NULL);
-
-   void EnableConsole(bool enable = true);
-
-   /*
-    *  Prints data received from director to the console,
-    *  and forwards it to the panels
-    */
-   void Print(wxString str, int status);
-
-   /* Sends data to the director */
-   void Send(wxString str);
-
-   /*
-    *  Starts the thread interacting with the director
-    *  If config is not empty, uses this config file.
-    */
-   void StartConsoleThread(const wxString& config);
-
-   /* Register a new wxbDataParser */
-   void Register(wxbDataParser* dp);
-
-   /* Unregister a wxbDataParser */
-   void Unregister(wxbDataParser* dp);
-
-   console_thread* ct; /* thread interacting with the director */
-
-private:
-   /* private constructor, singleton */
-   wxbMainFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style);
-   ~wxbMainFrame();
-
-   static wxbMainFrame *frame; /* this */
-
-   wxMenu *menuFile;
-
-   wxNotebook *notebook; /* main notebook */
-   wxTextCtrl *consoleCtrl; /* wxTextCtrl containing graphical console */
-   wxStaticText *helpCtrl; /* wxStaticText showing help messages */
-   wxbHistoryTextCtrl *typeCtrl; /* wxbHistoryTextCtrl for console user input */
-   wxButton *sendButton; /* wxButton used to send data */
-
-   wxbPanel **panels; /* panels array, contained in the notebook */
-   wxbDataParsers parsers; /* Data parsers, which need to receive director informations */
-
-   wxbPromptParser* promptparser; /* prompt parser catching uncatched questions */
-
-   bool lockedbyconsole; /* true if the panels have been locked by something typed in the console */
-
-   wxString configfile; /* configfile used */
-
-   wxString consoleBuffer; /* Buffer used to print in the console line by line */
-
-   // any class wishing to process wxWindows events must use this macro
-   DECLARE_EVENT_TABLE()
-};
-
-#endif // WXBMAINFRAME_H
diff --git a/src/wx-console/wxbrestorepanel.cpp b/src/wx-console/wxbrestorepanel.cpp
deleted file mode 100644
index 31b459d..0000000
--- a/src/wx-console/wxbrestorepanel.cpp
+++ /dev/null
@@ -1,2463 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
- *
- *   wxbPanel for restoring files
- *
- *    Nicolas Boichat, April-July 2004
- *
- *    Version $Id$
- */
-
-/* Note concerning "done" output (modifiable marked with +)
-Run Restore job
-+JobName:    RestoreFiles
-Bootstrap:  /var/lib/bacula/restore.bsr
-+Where:      /tmp/bacula-restores
-+Replace:    always
-+FileSet:    Full Set
-+Client:     tom-fd
-+Storage:    File
-+When:       2004-04-18 01:18:56
-+Priority:   10
-OK to run? (yes/mod/no):mod
-Parameters to modify:
-     1: Level (not appropriate)
-     2: Storage (automatic ?)
-     3: Job (no)
-     4: FileSet (yes)
-     5: Client (yes : "The defined Client resources are:\n\t1: velours-fd\n\t2: tom-fd\nSelect Client (File daemon) resource (1-2):")
-     6: When (yes : "Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now):")
-     7: Priority (yes : "Enter new Priority: (positive integer)")
-     8: Bootstrap (?)
-     9: Where (yes : "Please enter path prefix for restore (/ for none):")
-    10: Replace (yes : "Replace:\n 1: always\n 2: ifnewer\n 3: ifolder\n 4: never\n 
-          Select replace option (1-4):")
-    11: JobId (no)
-Select parameter to modify (1-11):
-       */
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-
-#include "wxbrestorepanel.h"
-#include "wxbmainframe.h"
-#include "csprint.h"
-#include <wx/choice.h>
-#include <wx/datetime.h>
-#include <wx/timer.h>
-#include "unmarked.xpm"
-#include "marked.xpm"
-#include "partmarked.xpm"
-#include <wx/imaglist.h>
-#include <wx/listimpl.cpp>
-
-/* A macro named Yield is defined under MinGW */
-#undef Yield
-
-WX_DEFINE_LIST(wxbEventList);
-
-/*
- *  Class which is stored in the tree and in the list to keep informations
- *  about the element.
- */
-class wxbTreeItemData : public wxTreeItemData {
-   public:
-      wxbTreeItemData(wxString path, wxString name, int marked, long listid = -1);
-      ~wxbTreeItemData();
-      wxString GetPath();
-      wxString GetName();
-      
-      int GetMarked();
-      void SetMarked(int marked);
-      
-      long GetListId();
-   private:
-      wxString* path; /* Full path */
-      wxString* name; /* File name */
-      int marked; /* 0 - Not Marked, 1 - Marked, 2 - Some file under is marked */
-      long listid; /* list ID : >-1 if this data is in the list (and/or on the tree) */
-};
-
-wxbTreeItemData::wxbTreeItemData(wxString path, wxString name, int marked, long listid): wxTreeItemData() {
-   this->path = new wxString(path);
-   this->name = new wxString(name);
-   this->marked = marked;
-   this->listid = listid;
-}
-
-wxbTreeItemData::~wxbTreeItemData() {
-   delete path;
-   delete name;
-}
-
-int wxbTreeItemData::GetMarked() {
-   return marked;
-}
-
-void wxbTreeItemData::SetMarked(int marked) {
-   this->marked = marked;
-}
-
-long wxbTreeItemData::GetListId() {
-   return listid;
-}
-
-wxString wxbTreeItemData::GetPath() {
-   return *path;
-}
-
-wxString wxbTreeItemData::GetName() {
-   return *name;
-}
-
-// ----------------------------------------------------------------------------
-// event tables and other macros for wxWindows
-// ----------------------------------------------------------------------------
-
-enum
-{
-   RestoreStart = 1,
-   RestoreCancel = 2,
-   TreeCtrl = 3,
-   ListCtrl = 4,
-   ConfigOk = 5,
-   ConfigApply = 6,
-   ConfigCancel = 7,
-   ConfigWhere = 8,
-   ConfigReplace = 9,
-   ConfigWhen = 10,
-   ConfigPriority = 11,
-   ConfigClient = 12,
-   ConfigFileset = 13,
-   ConfigStorage = 14,
-   ConfigJobName = 15,
-   ConfigPool = 16,
-   TreeAdd = 17,
-   TreeRemove = 18,
-   TreeRefresh = 19,
-   ListAdd = 20,
-   ListRemove = 21,
-   ListRefresh = 22
-};
-
-BEGIN_EVENT_TABLE(wxbRestorePanel, wxPanel)
-   EVT_BUTTON(RestoreStart, wxbRestorePanel::OnStart)
-   EVT_BUTTON(RestoreCancel, wxbRestorePanel::OnCancel)
-   
-   EVT_TREE_SEL_CHANGING(TreeCtrl, wxbRestorePanel::OnTreeChanging)
-   EVT_TREE_SEL_CHANGED(TreeCtrl, wxbRestorePanel::OnTreeChanged)
-   EVT_TREE_ITEM_EXPANDING(TreeCtrl, wxbRestorePanel::OnTreeExpanding)
-   EVT_TREE_MARKED_EVENT(TreeCtrl, wxbRestorePanel::OnTreeMarked)
-   EVT_BUTTON(TreeAdd, wxbRestorePanel::OnTreeAdd)
-   EVT_BUTTON(TreeRemove, wxbRestorePanel::OnTreeRemove)
-   EVT_BUTTON(TreeRefresh, wxbRestorePanel::OnTreeRefresh)
-
-   EVT_LIST_ITEM_ACTIVATED(ListCtrl, wxbRestorePanel::OnListActivated)
-   EVT_LIST_MARKED_EVENT(ListCtrl, wxbRestorePanel::OnListMarked)
-   EVT_LIST_ITEM_SELECTED(ListCtrl, wxbRestorePanel::OnListChanged)
-   EVT_LIST_ITEM_DESELECTED(ListCtrl, wxbRestorePanel::OnListChanged)
-   EVT_BUTTON(ListAdd, wxbRestorePanel::OnListAdd)
-   EVT_BUTTON(ListRemove, wxbRestorePanel::OnListRemove)
-   EVT_BUTTON(ListRefresh, wxbRestorePanel::OnListRefresh)
-  
-   EVT_TEXT(ConfigWhere, wxbRestorePanel::OnConfigUpdated)
-   EVT_TEXT(ConfigWhen, wxbRestorePanel::OnConfigUpdated)
-   EVT_TEXT(ConfigPriority, wxbRestorePanel::OnConfigUpdated)
-   EVT_CHOICE(ConfigWhen, wxbRestorePanel::OnConfigUpdated)
-   EVT_CHOICE(ConfigReplace, wxbRestorePanel::OnConfigUpdated)
-   EVT_CHOICE(ConfigClient, wxbRestorePanel::OnConfigUpdated)
-   EVT_CHOICE(ConfigFileset, wxbRestorePanel::OnConfigUpdated)
-   EVT_CHOICE(ConfigStorage, wxbRestorePanel::OnConfigUpdated)
-   EVT_CHOICE(ConfigJobName, wxbRestorePanel::OnConfigUpdated)
-   EVT_CHOICE(ConfigPool, wxbRestorePanel::OnConfigUpdated)
-   
-   EVT_BUTTON(ConfigOk, wxbRestorePanel::OnConfigOk)
-   EVT_BUTTON(ConfigApply, wxbRestorePanel::OnConfigApply)
-   EVT_BUTTON(ConfigCancel, wxbRestorePanel::OnConfigCancel)
-END_EVENT_TABLE()
-
-/*
- *  wxbRestorePanel constructor
- */
-wxbRestorePanel::wxbRestorePanel(wxWindow* parent): wxbPanel(parent) 
-{
-   //pendingEvents = new wxbEventList(); //EVTQUEUE
-   //processing = false; //EVTQUEUE
-   SetWorking(false);
-   
-   imagelist = new wxImageList(16, 16, TRUE, 3);
-   imagelist->Add(wxIcon(unmarked_xpm));
-   imagelist->Add(wxIcon(marked_xpm));
-   imagelist->Add(wxIcon(partmarked_xpm));
-
-   wxFlexGridSizer* mainSizer = new wxFlexGridSizer(3, 1, 10, 10);
-   mainSizer->AddGrowableCol(0);
-   mainSizer->AddGrowableRow(1);
-
-   wxFlexGridSizer *firstSizer = new wxFlexGridSizer(1, 2, 10, 10);
-
-   firstSizer->AddGrowableCol(0);
-   firstSizer->AddGrowableRow(0);
-
-   start = new wxButton(this, RestoreStart, _("Enter restore mode"), wxDefaultPosition, wxSize(150, 30));
-   firstSizer->Add(start, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 10);
-
-   cancel = new wxButton(this, RestoreCancel, _("Cancel restore"), wxDefaultPosition, wxSize(150, 30));
-   firstSizer->Add(cancel, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_RIGHT, 10);
-
-   wxString elist[1];
-
-/*   clientChoice = new wxChoice(this, ClientChoice, wxDefaultPosition, wxSize(150, 30), 0, elist);
-   firstSizer->Add(clientChoice, 1, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 10);
-
-   jobChoice = new wxChoice(this, -1, wxDefaultPosition, wxSize(150, 30), 0, elist);
-   firstSizer->Add(jobChoice, 1, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 10);*/
-
-   mainSizer->Add(firstSizer, 1, wxEXPAND, 10);
-
-   treelistPanel = new wxSplitterWindow(this);
-
-   wxPanel* treePanel = new wxPanel(treelistPanel);
-   wxFlexGridSizer *treeSizer = new wxFlexGridSizer(2, 1, 0, 0);
-   treeSizer->AddGrowableCol(0);
-   treeSizer->AddGrowableRow(0);
-
-   tree = new wxbTreeCtrl(treePanel, this, TreeCtrl, wxDefaultPosition, wxSize(200,50));  
-   tree->SetImageList(imagelist);
-   
-   treeSizer->Add(tree, 1, wxEXPAND, 0);
-   
-   wxBoxSizer *treeCtrlSizer = new wxBoxSizer(wxHORIZONTAL);
-   treeadd = new wxButton(treePanel, TreeAdd, _("Add"), wxDefaultPosition, wxSize(60, 25));
-   treeCtrlSizer->Add(treeadd, 0, wxLEFT | wxRIGHT, 3);
-   treeremove = new wxButton(treePanel, TreeRemove, _("Remove"), wxDefaultPosition, wxSize(60, 25));
-   treeCtrlSizer->Add(treeremove, 0, wxLEFT | wxRIGHT, 3);
-   treerefresh = new wxButton(treePanel, TreeRefresh, _("Refresh"), wxDefaultPosition, wxSize(60, 25));
-   treeCtrlSizer->Add(treerefresh, 0, wxLEFT | wxRIGHT, 3);
-   
-   treeSizer->Add(treeCtrlSizer, 1, wxALIGN_CENTER_HORIZONTAL, 0);
-   
-   treePanel->SetSizer(treeSizer);
-   
-   wxPanel* listPanel = new wxPanel(treelistPanel);
-   wxFlexGridSizer *listSizer = new wxFlexGridSizer(2, 1, 0, 0);
-   listSizer->AddGrowableCol(0);
-   listSizer->AddGrowableRow(0);
-   
-   list = new wxbListCtrl(listPanel, this, ListCtrl, wxDefaultPosition, wxSize(200,50));
-   //treelistSizer->Add(list, 1, wxEXPAND, 10);
-
-   list->SetImageList(imagelist, wxIMAGE_LIST_SMALL);
-
-   wxListItem info;
-   info.SetMask(wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT);
-   info.SetText(_("M"));
-   info.SetAlign(wxLIST_FORMAT_CENTER);
-   list->InsertColumn(0, info);
-   
-   info.SetText(_("Filename"));
-   info.SetAlign(wxLIST_FORMAT_LEFT);
-   list->InsertColumn(1, info);
-
-   info.SetText(_("Size"));
-   info.SetAlign(wxLIST_FORMAT_RIGHT);   
-   list->InsertColumn(2, info);
-
-   info.SetText(_("Date"));
-   info.SetAlign(wxLIST_FORMAT_LEFT);
-   list->InsertColumn(3, info);
-
-   info.SetText(_("Perm."));
-   info.SetAlign(wxLIST_FORMAT_LEFT);
-   list->InsertColumn(4, info);
-   
-   info.SetText(_("User"));
-   info.SetAlign(wxLIST_FORMAT_RIGHT);
-   list->InsertColumn(5, info);
-   
-   info.SetText(_("Group"));
-   info.SetAlign(wxLIST_FORMAT_RIGHT);
-   list->InsertColumn(6, info);
-    
-   listSizer->Add(list, 1, wxEXPAND, 0);
-   
-   wxBoxSizer *listCtrlSizer = new wxBoxSizer(wxHORIZONTAL);
-   listadd = new wxButton(listPanel, ListAdd, _("Add"), wxDefaultPosition, wxSize(60, 25));
-   listCtrlSizer->Add(listadd, 0, wxLEFT | wxRIGHT, 5);
-   listremove = new wxButton(listPanel, ListRemove, _("Remove"), wxDefaultPosition, wxSize(60, 25));
-   listCtrlSizer->Add(listremove, 0, wxLEFT | wxRIGHT, 5);
-   listrefresh = new wxButton(listPanel, ListRefresh, _("Refresh"), wxDefaultPosition, wxSize(60, 25));
-   listCtrlSizer->Add(listrefresh, 0, wxLEFT | wxRIGHT, 5);
-   
-   listSizer->Add(listCtrlSizer, 1, wxALIGN_CENTER_HORIZONTAL, 0);
-   
-   listPanel->SetSizer(listSizer);
-   
-   treelistPanel->SplitVertically(treePanel, listPanel, 210);
-   
-   treelistPanel->SetMinimumPaneSize(210);
-     
-   treelistPanel->Show(false);
-   
-   wxbConfig* config = new wxbConfig();
-   config->Add(new wxbConfigParam(_("Job Name"), ConfigJobName, choice, 0, elist));
-   config->Add(new wxbConfigParam(_("Client"), ConfigClient, choice, 0, elist));
-   config->Add(new wxbConfigParam(_("Fileset"), ConfigFileset, choice, 0, elist));
-   config->Add(new wxbConfigParam(_("Pool"), ConfigPool, choice, 0, elist));
-   config->Add(new wxbConfigParam(_("Storage"), ConfigStorage, choice, 0, elist));
-   config->Add(new wxbConfigParam(_("Before"), ConfigWhen, choice, 0, elist));
-   
-   configPanel = new wxbConfigPanel(this, config, _("Please configure parameters concerning files to restore :"), RestoreStart, RestoreCancel, -1);
-   
-   configPanel->Show(true);
-   configPanel->Enable(false);
-   
-   config = new wxbConfig();
-   config->Add(new wxbConfigParam(_("Job Name"), -1, text, wxT("")));
-   config->Add(new wxbConfigParam(_("Bootstrap"), -1, text, wxT("")));
-   config->Add(new wxbConfigParam(_("Where"), ConfigWhere, modifiableText, wxT("")));
-   wxString erlist[] = {_("always"), _("if newer"), _("if older"), _("never")};
-   config->Add(new wxbConfigParam(_("Replace"), ConfigReplace, choice, 4, erlist));
-   config->Add(new wxbConfigParam(_("Fileset"), ConfigFileset, choice, 0, erlist));
-   config->Add(new wxbConfigParam(_("Client"), ConfigClient, choice, 0, erlist));
-   config->Add(new wxbConfigParam(_("Storage"), ConfigStorage, choice, 0, erlist));
-   config->Add(new wxbConfigParam(_("When"), ConfigWhen, modifiableText, wxT("")));
-   config->Add(new wxbConfigParam(_("Priority"), ConfigPriority, modifiableText, wxT("")));
-   
-   restorePanel = new wxbConfigPanel(this, config, _("Please configure parameters concerning files restoration :"), ConfigOk, ConfigCancel, ConfigApply);
-    
-   restorePanel->Show(false);
-   
-   centerSizer = new wxBoxSizer(wxHORIZONTAL);
-   //centerSizer->Add(treelistPanel, 1, wxEXPAND | wxADJUST_MINSIZE);
-      
-   mainSizer->Add(centerSizer, 1, wxEXPAND, 10);
-
-   gauge = new wxGauge(this, -1, 1, wxDefaultPosition, wxSize(200,20));
-
-   mainSizer->Add(gauge, 1, wxEXPAND, 5);
-   gauge->SetValue(0);
-   gauge->Enable(false);
-
-   SetSizer(mainSizer);
-   mainSizer->SetSizeHints(this);
-
-   SetStatus(disabled);
-
-   for (int i = 0; i < 7; i++) {
-      list->SetColumnWidth(i, 70);
-   }
-
-   SetCursor(*wxSTANDARD_CURSOR);
-
-   markWhenCommandDone = false;
-   
-   cancelled = 0;
-}
-
-/*
- *  wxbRestorePanel destructor
- */
-wxbRestorePanel::~wxbRestorePanel() 
-{
-   delete imagelist;
-}
-
-/*----------------------------------------------------------------------------
-   wxbPanel overloadings
-  ----------------------------------------------------------------------------*/
-
-wxString wxbRestorePanel::GetTitle() 
-{
-   return _("Restore");
-}
-
-void wxbRestorePanel::EnablePanel(bool enable) 
-{
-   if (enable) {
-      if (status == disabled) {
-         SetStatus(activable);
-      }
-   } else {
-      SetStatus(disabled);
-   }
-}
-
-/*----------------------------------------------------------------------------
-   Commands called by events handler
-  ----------------------------------------------------------------------------*/
-
-/* The main button has been clicked */
-void wxbRestorePanel::CmdStart() 
-{
-   unsigned int i;
-   if (status == activable) {
-      wxbMainFrame::GetInstance()->SetStatusText(_("Getting parameters list."));
-      wxbDataTokenizer* dt = wxbUtils::WaitForEnd(wxT(".clients\n"), true, false);
-      wxString str;
-
-      configPanel->ClearRowChoices(_("Client"));
-      restorePanel->ClearRowChoices(_("Client"));
-      
-      if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(_("Error : no clients returned by the director."));
-         return;
-      }
-      
-      for (i = 0; i < dt->GetCount(); i++) {
-         str = (*dt)[i];
-         str.RemoveLast();
-         configPanel->AddRowChoice(_("Client"), str);
-         restorePanel->AddRowChoice(_("Client"), str);
-      }
-          
-      delete dt;
-      
-      if (cancelled) {
-         cancelled = 2;
-         return;
-      }
-      
-      dt = wxbUtils::WaitForEnd(wxT(".filesets\n"), true, false);
-      
-      configPanel->ClearRowChoices(_("Fileset"));
-      restorePanel->ClearRowChoices(_("Fileset"));
-    
-      if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(_("Error : no filesets returned by the director."));
-         return;
-      }
-      
-      for (i = 0; i < dt->GetCount(); i++) {
-         str = (*dt)[i];
-         str.RemoveLast();
-         configPanel->AddRowChoice(_("Fileset"), str);
-         restorePanel->AddRowChoice(_("Fileset"), str);
-      }
-      
-      delete dt;
-      
-      if (cancelled) {
-         cancelled = 2;
-         return;
-      }
-      
-      dt = wxbUtils::WaitForEnd(wxT(".storage\n"), true, false);
-    
-      configPanel->ClearRowChoices(_("Storage"));
-      restorePanel->ClearRowChoices(_("Storage"));
-    
-      if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(_("Error : no storage returned by the director."));
-         return;
-      }
-      
-      for (i = 0; i < dt->GetCount(); i++) {
-         str = (*dt)[i];
-         str.RemoveLast();
-         configPanel->AddRowChoice(_("Storage"), str);
-         restorePanel->AddRowChoice(_("Storage"), str);
-      }
-      
-      delete dt;
-      
-      if (cancelled) {
-         cancelled = 2;
-         return;
-      }
-      
-      dt = wxbUtils::WaitForEnd(wxT(".jobs\n"), true, false);
-    
-      configPanel->ClearRowChoices(_("Job Name"));
-    
-      if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(_("Error : no jobs returned by the director."));
-         return;
-      }
-      
-      for (i = 0; i < dt->GetCount(); i++) {
-         str = (*dt)[i];
-         str.RemoveLast();
-         configPanel->AddRowChoice(_("Job Name"), str);
-      }
-      
-      configPanel->SetRowString(_("Job Name"), _("RestoreFiles"));
-      
-      delete dt;
-      
-      if (cancelled) {
-         cancelled = 2;
-         return;
-      }
-      
-      dt = wxbUtils::WaitForEnd(wxT(".pools\n"), true, false);
-    
-      configPanel->ClearRowChoices(_("Pool"));
-    
-      if (dt->GetCount() == 0) {
-         wxbMainFrame::GetInstance()->SetStatusText(_("Error : no jobs returned by the director."));
-         return;
-      }
-      
-      for (i = 0; i < dt->GetCount(); i++) {
-         str = (*dt)[i];
-         str.RemoveLast();
-         configPanel->AddRowChoice(_("Pool"), str);
-      }
-         
-      delete dt; 
-      
-      if (cancelled) {
-         cancelled = 2;
-         return;
-      }
-
-      SetStatus(entered);
-
-      UpdateFirstConfig();
-           
-      wxbMainFrame::GetInstance()->SetStatusText(_("Please configure your restore parameters."));
-   }
-   else if (status == entered) {
-#ifdef xxx
-      if (clientChoice->GetStringSelection().Length() < 1) {
-         wxbMainFrame::GetInstance()->SetStatusText(_("Please select a client."));
-         return;
-      }
-      if (jobChoice->GetStringSelection().Length() < 1) {
-         wxbMainFrame::GetInstance()->SetStatusText(_("Please select a restore date."));
-         return;
-      }
-#endif
-
-      wxbMainFrame::GetInstance()->SetStatusText(_("Building restore tree..."));
-      
-      SetStatus(choosing);
-      
-      wxbTableParser* tableparser = new wxbTableParser();
-      wxbDataTokenizer* dt = new wxbDataTokenizer(false);
-      
-/*
- * The following line was removed from  ::GetInstance below because
- *  it does not work with multiple pools -- KES 5Oct05 see bug #433  
- *       wxT("\" pool=\"") << configPanel->GetRowString(wxT("Pool")) <<
- */
-      wxbMainFrame::GetInstance()->Send(wxString(wxT("restore")) <<
-         wxT(" client=\"") << configPanel->GetRowString(wxT("Client")) <<
-         wxT("\" fileset=\"") << configPanel->GetRowString(wxT("Fileset")) <<
-         wxT("\" storage=\"") << configPanel->GetRowString(wxT("Storage")) <<
-         wxT("\" before=\"") << configPanel->GetRowString(wxT("Before")) <<
-         wxT("\" select\n"));
-
-#ifdef xxx
-      wxbUtils::WaitForPrompt("6\n");
-      WaitForEnd();
-
-      wxbPromptParser *pp = wxbUtils::WaitForPrompt(wxString() << configPanel->GetRowString(wxT("Before")) << "\n", true);
-
-      int client = pp->getChoices()->Index(configPanel->GetRowString(wxT("Client")));
-      if (client == wxNOT_FOUND) {
-         wxbMainFrame::GetInstance()->SetStatusText("Failed to find the selected client.");
-         return;
-      }
-      delete pp;
-      
-      wxbMainFrame::GetInstance()->Send(wxString() << configPanel->GetRowString(wxT("Before")) << "\n");
-#endif
-   
-      while (!tableparser->hasFinished() && !dt->hasFinished()) {
-         wxTheApp->Yield(true);
-         wxbUtils::MilliSleep(100);
-      }
-      
-      wxString str;
-
-      if (dt->hasFinished() && !tableparser->hasFinished()) {
-         str = wxT("");
-         if (dt->GetCount() > 1) {
-            str = (*dt)[dt->GetCount()-2];
-            str.RemoveLast();
-         }
-         wxbMainFrame::GetInstance()->SetStatusText(wxString(_("Error while starting restore: ")) << str);
-         delete dt;
-         delete tableparser;
-         SetStatus(finished);
-         return;
-      }
-           
-      int tot = 0;
-      long l;
-      
-      for (i = 0; i < tableparser->GetCount(); i++) {
-         str = (*tableparser)[i][2];
-         str.Replace(wxT(","), wxT(""));
-         if (str.ToLong(&l)) {
-            tot += l;
-         }
-      }
-           
-      gauge->SetValue(0);
-      gauge->SetRange(tot);
-      
-#ifdef xxx
-      wxbMainFrame::GetInstance()->Print(
-               wxString("[") << tot << "]", CS_DEBUG);
-#endif
-      
-      wxDateTime base = wxDateTime::Now();
-      wxDateTime newdate;
-      int done = 0;
-      int willdo = 0;
-      unsigned int lastindex = 0;
-      
-      int var = 0;
-      
-      int i1, i2;
-      
-      while (true) {
-         newdate = wxDateTime::Now();
-         if (newdate.Subtract(base).GetMilliseconds() > 10 ) {
-            base = newdate;
-            for (; lastindex < dt->GetCount(); lastindex++) {
-               if (((i1 = (*dt)[lastindex].Find(wxT("Building directory tree for JobId "))) >= 0) && 
-                     ((i2 = (*dt)[lastindex].Find(wxT(" ..."))) > 0)) {
-                  str = (*dt)[lastindex].Mid(i1+34, i2-(i1+34));
-                  for (i = 0; i < tableparser->GetCount(); i++) {
-                     if (str == (*tableparser)[i][0]) {
-                        str = (*tableparser)[i][2];
-                        str.Replace(wxT(","), wxT(""));
-                        if (str.ToLong(&l)) {
-                           done += willdo;
-                           willdo += l;
-                           var = (willdo-done)/50;
-                           gauge->SetValue(done);
-                           wxTheApp->Yield(true);
-                        }
-                        break;
-                     }
-                  }
-               }
-               else if ((*dt)[lastindex] == wxT("+")) {
-                  gauge->SetValue(gauge->GetValue()+var);
-                  wxTheApp->Yield(true);
-               }
-            }
-            
-                       
-            if (dt->hasFinished()) {
-               break;
-            }
-         }
-         wxTheApp->Yield(true);
-         wxbUtils::MilliSleep(1);
-      }
-
-      gauge->SetValue(tot);
-      wxTheApp->Yield(true);
-      gauge->SetValue(0);
-      
-      delete dt;
-      delete tableparser;
-
-      if (cancelled) {
-         cancelled = 2;
-         return;
-      }
-
-      wxbUtils::WaitForEnd(wxT("unmark *\n"));
-      wxTreeItemId root = tree->AddRoot(configPanel->GetRowString(_("Client")), -1, -1, new wxbTreeItemData(wxT("/"), configPanel->GetRowString(_("Client")), 0));
-      currentTreeItem = root;
-      tree->Refresh();
-      tree->SelectItem(root);
-      CmdList(root);
-      wxbMainFrame::GetInstance()->SetStatusText(_("Right click on a file or on a directory, or double-click on its mark to add it to the restore list."));
-      tree->Expand(root);
-   }
-   else if (status == choosing) {
-      EnableConfig(false);
-      
-      totfilemessages = 0;
-      wxbDataTokenizer* dt;
-           
-      int j;
-      
-      dt = new wxbDataTokenizer(true);
-      wxbPromptParser* promptparser = wxbUtils::WaitForPrompt(wxT("done\n"), true);
-
-      while (!promptparser->getChoices() || (promptparser->getChoices()->Index(wxT("mod")) < 0)) {
-         wxbMainFrame::GetInstance()->Print(_("Unexpected question has been received.\n"), CS_DEBUG);
-         
-         wxString message;
-         if (promptparser->getIntroString() != wxT("")) {
-            message << promptparser->getIntroString() << wxT("\n");
-         }
-         message << promptparser->getQuestionString();
-         
-         if (promptparser->getChoices()) {
-            wxString *choices = new wxString[promptparser->getChoices()->GetCount()];
-            int *numbers = new int[promptparser->getChoices()->GetCount()];
-            int n = 0;
-            
-            for (unsigned int i = 0; i < promptparser->getChoices()->GetCount(); i++) {
-               if ((*promptparser->getChoices())[i] != wxT("")) {
-                  choices[n] = (*promptparser->getChoices())[i];
-                  numbers[n] = i;
-                  n++;
-               }
-            }
-            
-            int res = ::wxGetSingleChoiceIndex(message,
-               _("bwx-console: unexpected restore question."), n, choices, this);
-            if (res == -1) {
-               delete promptparser;
-               promptparser = wxbUtils::WaitForPrompt(wxT(".\n"), true);
-            }
-            else {
-               if (promptparser->isNumericalChoice()) {
-                  delete promptparser;
-                  promptparser = wxbUtils::WaitForPrompt(wxString() << numbers[res] << wxT("\n"), true);
-               }
-               else {
-                  delete promptparser;
-                  promptparser = wxbUtils::WaitForPrompt(wxString() << choices[res] << wxT("\n"), true);
-               }
-            }
-            delete[] choices;
-            delete[] numbers;
-         }
-         else {
-            delete promptparser;
-            
-            promptparser = wxbUtils::WaitForPrompt(::wxGetTextFromUser(message,
-               _("bwx-console: unexpected restore question."),
-               wxT(""), this) + wxT("\n"));
-         }
-      }
-      printf("promptparser->getChoices()=%ld", (long)promptparser->getChoices());
-      
-      delete promptparser;
-
-      SetStatus(configuring);
-
-      for (i = 0; i < dt->GetCount(); i++) {
-         if ((j = (*dt)[i].Find(_(" files selected to be restored."))) > -1) {
-            (*dt)[i].Mid(0, j).ToLong(&totfilemessages);
-            break;
-         }
-
-         if ((j = (*dt)[i].Find(_(" file selected to be restored."))) > -1) {
-            (*dt)[i].Mid(0, j).ToLong(&totfilemessages);
-            break;
-         }
-      }
-      
-      wxbMainFrame::GetInstance()->SetStatusText(
-         wxString::Format(_("Please configure your restore (%ld files selected to be restored)..."), totfilemessages));
-      
-      UpdateSecondConfig(dt);
-      
-      delete dt;
-      
-      EnableConfig(true);
-      restorePanel->EnableApply(false);
-
-      if (totfilemessages == 0) {
-         wxbMainFrame::GetInstance()->Print(_("Restore failed : no file selected.\n"), CS_DEBUG);
-         wxbMainFrame::GetInstance()->SetStatusText(_("Restore failed : no file selected."));
-         SetStatus(finished);
-         return;
-      }
-   }
-   else if (status == configuring) {
-      cancel->Enable(false);
-      jobid = wxT("");
-      EnableConfig(false);
-    
-      wxbMainFrame::GetInstance()->SetStatusText(_("Restoring, please wait..."));
-    
-      wxbDataTokenizer* dt;
-    
-      SetStatus(restoring);
-      dt = wxbUtils::WaitForEnd(wxT("yes\n"), true);
-
-      gauge->SetValue(0);
-      gauge->SetRange(totfilemessages);
-
-      int j;
-            
-      for (i = 0; i < dt->GetCount(); i++) {
-         if ((j = (*dt)[i].Find(_("Job queued. JobId="))) > -1) {
-            jobid = (*dt)[i].Mid(j+19);
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore queued, jobid=") + jobid);
-            break;
-         }
-
-         if ((j = (*dt)[i].Find(_("Job failed."))) > -1) {
-            wxbMainFrame::GetInstance()->Print(_("Restore failed, please look at messages.\n"), CS_DEBUG);
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore failed, please look at messages in console."));
-            return;
-         }
-      }
-      
-      if (jobid == wxT("")) {
-         wxbMainFrame::GetInstance()->Print(_("Failed to retrieve jobid.\n"), CS_DEBUG);
-         wxbMainFrame::GetInstance()->SetStatusText(_("Failed to retrieve jobid.\n"));
-         return;         
-      }
-
-      wxDateTime currenttime;
-      
-      dt = wxbUtils::WaitForEnd(wxT("time\n"), true);
-      wxStringTokenizer ttkz((*dt)[0], wxT(" "), wxTOKEN_STRTOK);
-      if ((currenttime.ParseDate(ttkz.GetNextToken()) == NULL) || // Date
-           (currenttime.ParseTime(ttkz.GetNextToken()) == NULL)) { // Time
-         currenttime.SetYear(1990); // If parsing fails, set currenttime to a dummy date
-      }
-      else {
-         currenttime -= wxTimeSpan::Seconds(30); //Adding a 30" tolerance
-      }
-      delete dt;
-    
-      wxDateTime scheduledtime;
-      wxStringTokenizer stkz(restorePanel->GetRowString(_("When")), wxT(" "), wxTOKEN_STRTOK);
-      
-      if ((scheduledtime.ParseDate(stkz.GetNextToken()) == NULL) || // Date
-           (scheduledtime.ParseTime(stkz.GetNextToken()) == NULL)) { // Time
-         scheduledtime.SetYear(2090); // If parsing fails, set scheduledtime to a dummy date
-      }
-
-      if (scheduledtime.Subtract(currenttime).IsLongerThan(wxTimeSpan::Seconds(150))) {
-         wxbMainFrame::GetInstance()->Print(_("Restore is scheduled to run. bwx-console will not wait for its completion.\n"), CS_DEBUG);
-         wxbMainFrame::GetInstance()->SetStatusText(_("Restore is scheduled to run. bwx-console will not wait for its completion."));
-         SetStatus(finished);
-         return;
-      }
-
-      wxString cmd = wxString(wxT("list jobid=")) + jobid;
-
-      wxbTableParser* tableparser;
-      
-      long filemessages = 0;
-      
-      bool ended = false;
-      bool waitforever = false;
-      
-      char status = '?';
-
-      wxStopWatch sw;
-      
-      wxbUtils::WaitForEnd(wxT("autodisplay off\n"));
-      wxbUtils::WaitForEnd(wxT("gui on\n"));
-      while (true) {
-         tableparser = wxbUtils::CreateAndWaitForParser(cmd);
-         ended = false;
-         status = (*tableparser)[0][7].GetChar(0);
-         switch (status) {
-         case JS_Created:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job created, but not yet running."));
-            waitforever = false;
-            break;
-         case JS_Running:
-            wxbMainFrame::GetInstance()->SetStatusText(
-               wxString::Format(_("Restore job running, please wait (%ld of %ld files restored)..."), filemessages, totfilemessages));
-            waitforever = true;
-            break;
-         case JS_Terminated:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job terminated successfully."));
-            wxbMainFrame::GetInstance()->Print(_("Restore job terminated successfully.\n"), CS_DEBUG);
-            waitforever = false;
-            ended = true;
-            break;
-         case JS_ErrorTerminated:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job terminated in error, see messages in console."));
-            wxbMainFrame::GetInstance()->Print(_("Restore job terminated in error, see messages.\n"), CS_DEBUG);
-            waitforever = false;
-            ended = true;
-            break;
-         case JS_Error:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job reported a non-fatal error."));
-            waitforever = false;
-            break;
-         case JS_FatalError:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job reported a fatal error."));
-            waitforever = false;
-            ended = true;
-            break;
-         case JS_Canceled:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job cancelled by user."));
-            wxbMainFrame::GetInstance()->Print(_("Restore job cancelled by user.\n"), CS_DEBUG);
-            waitforever = false;
-            ended = true;
-            break;
-         case JS_WaitFD:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job is waiting on File daemon."));
-            waitforever = false;
-            break;
-         case JS_WaitMedia:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job is waiting for new media."));
-            waitforever = false;
-            break;
-         case JS_WaitStoreRes:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job is waiting for storage resource."));
-            waitforever = false;
-            break;
-         case JS_WaitJobRes:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job is waiting for job resource."));
-            waitforever = false;
-            break;
-         case JS_WaitClientRes:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job is waiting for Client resource."));
-            waitforever = false;
-            break;
-         case JS_WaitMaxJobs:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job is waiting for maximum jobs."));
-            waitforever = false;
-            break;
-         case JS_WaitStartTime:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job is waiting for start time."));
-            waitforever = false;
-            break;
-         case JS_WaitPriority:
-            wxbMainFrame::GetInstance()->SetStatusText(_("Restore job is waiting for higher priority jobs to finish."));
-            waitforever = false;
-            break;
-         }
-         delete tableparser;
-         
-         dt = wxbUtils::WaitForEnd(wxT(".messages\n"), true);
-                  
-         for (unsigned int i = 0; i < dt->GetCount(); i++) {
-            wxStringTokenizer tkz((*dt)[i], wxT(" "), wxTOKEN_STRTOK);
-   
-            wxDateTime datetime;
-   
-            //   Date    Time   name:   perm      ?   user   grp      size    date     time
-            //04-Apr-2004 17:19 Tom-fd: -rwx------   1 nicolas  None     514967 2004-03-20 20:03:42  filename
-   
-            if (datetime.ParseDate(tkz.GetNextToken()) != NULL) { // Date
-               if (datetime.ParseTime(tkz.GetNextToken()) != NULL) { // Time
-                  if (tkz.GetNextToken().Last() == ':') { // name:
-                  tkz.GetNextToken(); // perm
-                  tkz.GetNextToken(); // ?
-                  tkz.GetNextToken(); // user
-                  tkz.GetNextToken(); // grp
-                  tkz.GetNextToken(); // size
-                  if (datetime.ParseDate(tkz.GetNextToken()) != NULL) { //date
-                        if (datetime.ParseTime(tkz.GetNextToken()) != NULL) { //time
-                           filemessages++;
-                           //wxbMainFrame::GetInstance()->Print(wxString("(") << filemessages << ")", CS_DEBUG);
-                           gauge->SetValue(filemessages);
-                        }
-                     }
-                  }
-               }
-            }
-         }
-         
-         delete dt;
-         
-         wxStopWatch sw2;
-         while (sw2.Time() < 10000) {  
-            wxTheApp->Yield(true);
-            wxbUtils::MilliSleep(100);
-         }
-         
-         if (ended) {
-            break;
-         }
-         
-         if ((!waitforever) && (sw.Time() > 60000)) {
-            wxbMainFrame::GetInstance()->Print(_("The restore job has not been started within one minute, bwx-console will not wait for its completion anymore.\n"), CS_DEBUG);
-            wxbMainFrame::GetInstance()->SetStatusText(_("The restore job has not been started within one minute, bwx-console will not wait for its completion anymore."));
-            break;
-         }
-      }
-      wxbUtils::WaitForEnd(wxT("autodisplay on\n"));
-      wxbUtils::WaitForEnd(wxT(".messages\n"));
-
-      gauge->SetValue(totfilemessages);
-
-      if (status == JS_Terminated) {
-         wxbMainFrame::GetInstance()->Print(_("Restore done successfully.\n"), CS_DEBUG);
-         wxbMainFrame::GetInstance()->SetStatusText(_("Restore done successfully."));
-      }
-      SetStatus(finished);
-   }
-}
-
-/* The cancel button has been clicked */
-void wxbRestorePanel::CmdCancel() {
-   cancelled = 1;
-   
-   if (status == restoring) {
-      if (jobid != wxT("")) {
-         wxbMainFrame::GetInstance()->Send(wxString(wxT("cancel job=")) << jobid << wxT("\n"));
-      }
-      cancel->Enable(true);
-      return;
-   }
-   
-   wxStopWatch sw;
-   while ((IsWorking()) && (cancelled != 2)) {
-      wxTheApp->Yield(true);
-      wxbUtils::MilliSleep(100);
-      if (sw.Time() > 30000) { /* 30 seconds timeout */
-         if (status == choosing) {
-            wxbMainFrame::GetInstance()->Send(wxT("quit\n"));
-         }
-         else if (status == configuring) {
-            wxbMainFrame::GetInstance()->Send(wxT("no\n"));
-         }
-         else if (status == restoring) {
-            
-         }
-         SetStatus(finished);
-         wxbUtils::MilliSleep(1000);
-         return;
-      }
-   }
-   
-   switch (status) {
-   case choosing:
-      wxbMainFrame::GetInstance()->Send(wxT("quit\n"));
-      break;
-   case configuring:
-      wxbMainFrame::GetInstance()->Send(wxT("no\n"));
-      break;
-   default:
-      break;
-   }
-   wxbUtils::MilliSleep(1000);
-   SetStatus(finished);
-}
-
-/* Apply configuration changes */
-
-/*   1: Level (not appropriate)
- *   2: Storage (yes)
- *   3: Job (no)
- *   4: FileSet (yes)
- *   5: Client (yes)
- *   6: When (yes : "Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now):")
- *   7: Priority (yes : "Enter new Priority: (positive integer)")
- *   8: Bootstrap (?)
- *   9: Where (yes : "Please enter path prefix for restore (/ for none):")
- *  10: Replace (yes : "Replace:\n 1: always\n 2: ifnewer\n 3: ifolder\n 4: never\n 
- *         Select replace option (1-4):")
- *  11: JobId (no)
- */
-
-void wxbRestorePanel::CmdConfigApply() 
-{
-   if (cfgUpdated == 0) return;
-   
-   wxbMainFrame::GetInstance()->SetStatusText(_("Applying restore configuration changes..."));
-   
-   EnableConfig(false);
-   
-   wxbDataTokenizer* dt = NULL;
-   
-   bool failed = false;
-   
-   while (cfgUpdated > 0) {
-      if (cancelled) {
-         cancelled = 2;
-         return;
-      }
-      wxString def; //String to send if can't use our data
-      if ((cfgUpdated >> ConfigWhere) & 1) {
-         wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
-         wxbUtils::WaitForPrompt(wxT("9\n"));
-         dt = new wxbDataTokenizer(true);
-         wxbUtils::WaitForPrompt(restorePanel->GetRowString(_("Where")) + wxT("\n"));
-         def = wxT("/tmp");
-         cfgUpdated = cfgUpdated & (~(1 << ConfigWhere));
-      }
-      else if ((cfgUpdated >> ConfigReplace) & 1) {
-         wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
-         wxbUtils::WaitForPrompt(wxT("11\n"));
-         dt = new wxbDataTokenizer(true);
-         wxbUtils::WaitForPrompt(wxString() << (restorePanel->GetRowSelection(_("Replace"))+1) << wxT("\n"));
-         def = wxT("1");
-         cfgUpdated = cfgUpdated & (~(1 << ConfigReplace));
-      }
-      else if ((cfgUpdated >> ConfigWhen) & 1) {
-         wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
-         wxbUtils::WaitForPrompt(wxT("6\n"));
-         dt = new wxbDataTokenizer(true);
-         wxbUtils::WaitForPrompt(restorePanel->GetRowString(wxT("When")) + wxT("\n"));
-         def = wxT("");
-         cfgUpdated = cfgUpdated & (~(1 << ConfigWhen));
-      }
-      else if ((cfgUpdated >> ConfigPriority) & 1) {
-         wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
-         wxbUtils::WaitForPrompt(wxT("7\n"));
-         dt = new wxbDataTokenizer(true);
-         wxbUtils::WaitForPrompt(restorePanel->GetRowString(_("Priority")) + wxT("\n"));
-         def = wxT("10");
-         cfgUpdated = cfgUpdated & (~(1 << ConfigPriority));
-      }
-      else if ((cfgUpdated >> ConfigClient) & 1) {
-         if (restorePanel->GetRowCount(_("Client")) > 1) {
-            wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
-            wxbPromptParser *pp = wxbUtils::WaitForPrompt(wxT("5\n"), true);
-            int client = pp->getChoices()->Index(restorePanel->GetRowString(_("Client")));
-            if (client == wxNOT_FOUND) {
-               wxbMainFrame::GetInstance()->SetStatusText(_("Failed to find the selected client."));
-               failed = true;
-               client = 1;
-            }
-            delete pp;
-            dt = new wxbDataTokenizer(true);
-            wxbUtils::WaitForPrompt(wxString() << client << wxT("\n"));
-            def = wxT("1");
-            cfgUpdated = cfgUpdated & (~(1 << ConfigClient));
-         } else {
-            cfgUpdated = cfgUpdated & (~(1 << ConfigClient));
-            continue;
-         }
-      }
-      else if ((cfgUpdated >> ConfigFileset) & 1) {
-         if (restorePanel->GetRowCount(_("Fileset")) > 1) {
-            wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
-            wxbPromptParser *pp = wxbUtils::WaitForPrompt(wxT("4\n"), true);
-            int fileset = pp->getChoices()->Index(restorePanel->GetRowString(_("Fileset")));
-            if (fileset == wxNOT_FOUND) {
-               wxbMainFrame::GetInstance()->SetStatusText(_("Failed to find the selected fileset."));
-               failed = true;
-               fileset = 1;
-            }
-            delete pp;
-            dt = new wxbDataTokenizer(true);
-            wxbUtils::WaitForPrompt(wxString() << fileset << wxT("\n"));
-            def = wxT("1");
-            cfgUpdated = cfgUpdated & (~(1 << ConfigFileset));
-         } else {
-            cfgUpdated = cfgUpdated & (~(1 << ConfigFileset));
-            continue;
-         }
-      }
-      else if ((cfgUpdated >> ConfigStorage) & 1) {
-         if (restorePanel->GetRowCount(_("Storage")) > 1) {
-            wxbUtils::WaitForPrompt(wxT("mod\n")); /* TODO: check results */
-            wxbPromptParser *pp = wxbUtils::WaitForPrompt(wxT("2\n"), true);
-            int storage = pp->getChoices()->Index(restorePanel->GetRowString(_("Storage")));
-            if (storage == wxNOT_FOUND) {
-               wxbMainFrame::GetInstance()->SetStatusText(_("Failed to find the selected storage."));
-               failed = true;
-               storage = 1;
-            }
-            delete pp;
-            dt = new wxbDataTokenizer(true);
-            wxbUtils::WaitForPrompt(wxString() << storage << wxT("\n"));
-            def = wxT("1");
-            cfgUpdated = cfgUpdated & (~(1 << ConfigStorage));
-         } else {
-            cfgUpdated = cfgUpdated & (~(1 << ConfigStorage));
-            continue;
-         }
-      }
-      else {
-         cfgUpdated = 0;
-         break;
-      }
-                 
-      unsigned int i;
-      for (i = 0; i < dt->GetCount(); i++) {
-         if ((*dt)[i].Find(_("Run Restore job")) == 0) {
-            break;
-         }
-      }
-      
-      if (i != 0 && i == dt->GetCount()) {
-         delete dt;   
-         dt = wxbUtils::WaitForEnd(def + wxT("\n"), true);
-         failed = true;
-      }
-   }
-   UpdateSecondConfig(dt); /* TODO: Check result */
-   
-   EnableConfig(true);
-   restorePanel->EnableApply(false);
-
-   if (!failed) {
-      wxbMainFrame::GetInstance()->SetStatusText(_("Restore configuration changes were applied."));
-   }
-
-   delete dt;
-}
-
-/* Cancel restore */
-void wxbRestorePanel::CmdConfigCancel() {
-   wxbUtils::WaitForEnd(wxT("no\n"));
-   wxbMainFrame::GetInstance()->Print(_("Restore cancelled.\n"), CS_DEBUG);
-   wxbMainFrame::GetInstance()->SetStatusText(_("Restore cancelled."));
-   SetStatus(finished);
-}
-
-/* List jobs for a specified client and fileset */
-void wxbRestorePanel::CmdListJobs() {
-   if (status == entered) {
-      configPanel->ClearRowChoices(_("Before"));
-      /*wxbUtils::WaitForPrompt("query\n");
-      wxbUtils::WaitForPrompt("6\n");*/
-      wxbTableParser* tableparser = new wxbTableParser(false);
-      wxbDataTokenizer* dt = wxbUtils::WaitForEnd(
-         wxString(wxT(".backups client=\"")) + configPanel->GetRowString(_("Client")) + 
-                  wxT("\" fileset=\"") + configPanel->GetRowString(_("Fileset")) + wxT("\"\n"), true);
-
-      while (!tableparser->hasFinished()) {
-         wxTheApp->Yield(true);
-         wxbUtils::MilliSleep(100);
-      }
-         
-      if (!tableparser->GetCount() == 0) {
-         for (unsigned int i = 0; i < dt->Count(); i++) {
-            if ((*dt)[i].Find(_("No results to list.")) == 0) {
-               configPanel->AddRowChoice(_("Before"),
-                  _("No backup found for this client."));
-               configPanel->SetRowSelection(_("Before"), 0);
-               configPanel->EnableApply(true); // Enabling the not existing apply button disables the ok button.
-               delete tableparser;
-               delete dt;
-               return;
-            }
-            else if (((*dt)[i].Find(_("ERROR")) > -1) || 
-                  ((*dt)[i].Find(_("Query failed")) > -1)) {
-               configPanel->AddRowChoice(_("Before"),
-                  _("Cannot get previous backups list, see console."));
-               configPanel->SetRowSelection(_("Before"), 0);
-               configPanel->EnableApply(true); // Enabling the not existing apply button disables the ok button.
-               delete tableparser;
-               delete dt;
-               return;
-            }
-         }
-      }
-      
-      delete dt;
-
-      wxDateTime lastdatetime = (time_t) 0;
-      for (int i = tableparser->GetCount()-1; i > -1; i--) {
-         wxString str = (*tableparser)[i][3];
-         wxDateTime datetime;
-         const wxChar* chr;
-         if ( ( (chr = datetime.ParseDate(str.GetData()) ) != NULL ) && ( datetime.ParseTime(++chr) != NULL ) && ! lastdatetime.IsEqualTo(datetime) ) {
-            lastdatetime = datetime;
-            datetime += wxTimeSpan::Seconds(1);
-            configPanel->AddRowChoice(_("Before"),
-               datetime.Format(wxT("%Y-%m-%d %H:%M:%S")));
-         }
-      }
-           
-      delete tableparser;
-
-      configPanel->SetRowSelection(_("Before"), 0);
-      configPanel->EnableApply(false); // Disabling the not existing apply button enables the ok button.
-   }
-}
-
-/* List files and directories for a specified tree item */
-void wxbRestorePanel::CmdList(wxTreeItemId item) {
-   if (status == choosing) {
-      list->DeleteAllItems();
-
-      if (!item.IsOk()) {
-         return;
-      }
-      UpdateTreeItem(item, true, false);
-    
-      if (list->GetItemCount() >= 1) {
-         int firstwidth = list->GetSize().GetWidth(); 
-         for (int i = 2; i < 7; i++) {
-            list->SetColumnWidth(i, wxLIST_AUTOSIZE);
-            firstwidth -= list->GetColumnWidth(i);
-         }
-       
-         list->SetColumnWidth(0, 18);
-         firstwidth -= 18;
-         list->SetColumnWidth(1, wxLIST_AUTOSIZE);
-         if (list->GetColumnWidth(1) < firstwidth) {
-            list->SetColumnWidth(1, firstwidth-25);
-         }
-      }
-   }
-}
-
-/* Mark a treeitem (directory) or a listitem (file or directory) */
-void wxbRestorePanel::CmdMark(wxTreeItemId treeitem, long* listitems, int listsize, int state) {
-   if (status == choosing) {
-      wxbTreeItemData** itemdata;
-      int itemdatasize = 0;
-      if (listsize == 0) {
-         itemdata = new wxbTreeItemData*[1];
-         itemdatasize = 1;
-      }
-      else {
-         itemdata = new wxbTreeItemData*[listsize];
-         itemdatasize = listsize;
-      }
-      
-      if (listitems != NULL) {
-         for (int i = 0; i < itemdatasize; i++) {
-            itemdata[i] = (wxbTreeItemData*)list->GetItemData(listitems[i]);
-         }
-      }
-      else if (treeitem.IsOk()) {
-         itemdata[0] = (wxbTreeItemData*)tree->GetItemData(treeitem);
-      }
-      else {
-         delete[] itemdata;
-         return;
-      }
-
-      if (itemdata[0] == NULL) { //Should never happen
-         delete[] itemdata;
-         return;
-      }
-
-      wxString dir = itemdata[0]->GetPath();
-      wxString file;
-
-      if (dir != wxT("/")) {
-         if (IsPathSeparator(dir.GetChar(dir.Length()-1))) {
-            dir.RemoveLast();
-         }
-
-         int i = dir.Find('/', TRUE);
-         if (i == -1) {
-            file = dir;
-            dir = wxT("/");
-         }
-         else { /* first dir below root */
-            file = dir.Mid(i+1);
-            dir = dir.Mid(0, i+1);
-         }
-      }
-      else {
-         dir = wxT("/");
-         file = wxT("*");
-      }
-
-      if (state == -1) {
-         bool marked = false;
-         bool unmarked = false;
-         state = 0;
-         for (int i = 0; i < itemdatasize; i++) {
-            switch(itemdata[i]->GetMarked()) {
-            case 0:
-               unmarked = true;
-               break;
-            case 1:
-               marked = true;
-               break;
-            case 2:
-               marked = true;
-               unmarked = true;
-               break;
-            default:
-               break;
-            }
-            if (marked && unmarked)
-               break;
-         }
-         if (marked) {
-            if (unmarked) {
-               state = 1;
-            }
-            else {
-               state = 0;
-            }
-         }
-         else {
-            state = 1;
-         }
-      }
-
-      wxbUtils::WaitForEnd(wxString(wxT("cd \"")) << dir << wxT("\"\n"));
-      wxbUtils::WaitForEnd(wxString((state==1) ? wxT("mark") : wxT("unmark")) << wxT(" \"") << file << wxT("\"\n"));
-
-      /* TODO: Check commands results */
-
-      /*if ((dir == "/") && (file == "*")) {
-            itemdata->SetMarked((itemdata->GetMarked() == 1) ? 0 : 1);
-      }*/
-
-      if (listitems == NULL) { /* tree item state changed */
-         SetTreeItemState(treeitem, state);
-         /*treeitem = tree->GetSelection();
-         UpdateTree(treeitem, true);
-         treeitem = tree->GetItemParent(treeitem);*/
-      }
-      else {
-         for (int i = 0; i < itemdatasize; i++) {
-            SetListItemState(listitems[i], state);
-         }
-         listadd->Enable(state == 0);
-         listremove->Enable(state == 1);
-         /*UpdateTree(treeitem, (tree->GetSelection() == treeitem));
-         treeitem = tree->GetItemParent(treeitem);*/
-      }
-
-      /*while (treeitem.IsOk()) {
-         WaitForList(treeitem, false);
-         treeitem = tree->GetItemParent(treeitem);
-      }*/
-      
-      delete[] itemdata;
-   }
-}
-
-/*----------------------------------------------------------------------------
-   General functions
-  ----------------------------------------------------------------------------*/
-
-/* Run a dir command, and waits until result is fully received. */
-void wxbRestorePanel::UpdateTreeItem(wxTreeItemId item, bool updatelist, bool recurse)
-{
-//   this->updatelist = updatelist;
-   wxbDataTokenizer* dt;
-
-   dt = wxbUtils::WaitForEnd(wxString(wxT("cd \"")) << 
-      static_cast<wxbTreeItemData*>(tree->GetItemData(item))
-         ->GetPath() << wxT("\"\n"), false);
-
-   /* TODO: check command result */
-   
-   //delete dt;
-
-   status = listing;
-
-   if (updatelist)
-      list->DeleteAllItems();
-   dt = wxbUtils::WaitForEnd(wxT(".dir\n"), true);
-   
-   wxString str;
-   
-   for (unsigned int i = 0; i < dt->GetCount(); i++) {
-      str = (*dt)[i];
-      
-      if (str.Find(wxT("cwd is:")) == 0) { // Sometimes cd command result "infiltrate" into listings.
-         break;
-      }
-
-      str.RemoveLast();
-
-      wxbDirEntry entry;
-      
-      if (!ParseList(str, &entry))
-            break;
-
-      wxTreeItemId treeid;
-
-      if (IsPathSeparator(entry.fullname.GetChar(entry.fullname.Length()-1))) {
-         wxString itemStr;
-
-#if wxCHECK_VERSION(2, 6, 0)
-         wxTreeItemIdValue cookie;
-#else
-         long cookie;
-#endif
-         
-         treeid = tree->GetFirstChild(item, cookie);
-
-         bool updated = false;
-
-         while (treeid.IsOk()) {
-            itemStr = ((wxbTreeItemData*)tree->GetItemData(treeid))->GetName();
-            if (entry.filename == itemStr) {
-               if (static_cast<wxbTreeItemData*>(tree->GetItemData(treeid))->GetMarked() != entry.marked) {
-                  tree->SetItemImage(treeid, entry.marked, wxTreeItemIcon_Normal);
-                  tree->SetItemImage(treeid, entry.marked, wxTreeItemIcon_Selected);
-                  static_cast<wxbTreeItemData*>(tree->GetItemData(treeid))->SetMarked(entry.marked);
-               }
-               if ((recurse) && (tree->IsExpanded(treeid))) {
-                  UpdateTreeItem(treeid, false, true);
-               }
-               updated = true;
-               break;
-            }
-            treeid = tree->GetNextChild(item, cookie);
-         }
-
-         if (!updated) {
-            treeid = tree->AppendItem(item, wxbUtils::ConvertToPrintable(entry.filename), entry.marked, entry.marked, new wxbTreeItemData(entry.fullname, entry.filename, entry.marked));
-         }
-      }
-
-      if (updatelist) {
-         long ind = list->InsertItem(list->GetItemCount(), entry.marked);
-         wxbTreeItemData* data = new wxbTreeItemData(entry.fullname, entry.filename, entry.marked, ind);
-         data->SetId(treeid);
-         list->SetItemData(ind, (long)data);
-         list->SetItem(ind, 1, wxbUtils::ConvertToPrintable(entry.filename));
-         list->SetItem(ind, 2, entry.size);
-         list->SetItem(ind, 3, entry.date);
-         list->SetItem(ind, 4, entry.perm);
-         list->SetItem(ind, 5, entry.user);
-         list->SetItem(ind, 6, entry.group);
-      }
-   }
-   
-   delete dt;
-   
-   tree->Refresh();
-   status = choosing;
-}
-
-/* Parse .dir command results, returns true if the result has been stored in entry, false otherwise. */
-int wxbRestorePanel::ParseList(wxString line, wxbDirEntry* entry) 
-{
-   /* See ls_output in dird/ua_tree.c */
-   //-rw-r-----,1,root,root,41575,2005-10-18 18:21:36, ,/usr/var/bacula/working/bacula.sql
-
-   wxStringTokenizer tkz(line, wxT(","));
-   
-   if (!tkz.HasMoreTokens())
-      return false;
-   entry->perm = tkz.GetNextToken();
-   
-   if (!tkz.HasMoreTokens())
-      return false;
-   entry->nlink = tkz.GetNextToken();
-   
-   if (!tkz.HasMoreTokens())
-      return false;
-   entry->user = tkz.GetNextToken();
-   
-   if (!tkz.HasMoreTokens())
-      return false;
-   entry->group = tkz.GetNextToken();
-   
-   if (!tkz.HasMoreTokens())
-      return false;
-   entry->size = tkz.GetNextToken();
-   
-   if (!tkz.HasMoreTokens())
-      return false;
-   entry->date = tkz.GetNextToken();
-   
-   if (!tkz.HasMoreTokens())
-      return false;
-   wxString marked = tkz.GetNextToken();
-   if (marked == wxT("*")) {
-      entry->marked = 1;
-   }
-   else if (marked == wxT("+")) {
-      entry->marked = 2;
-   }
-   else {
-      entry->marked = 0;
-   }
-   
-   if (!tkz.HasMoreTokens())
-      return false;
-   entry->fullname = tkz.GetString();
-   
-   /* Get only the filename (cut path by finding the last '/') */
-   if (IsPathSeparator(entry->fullname.GetChar(entry->fullname.Length()-1))) {
-      wxString tmp = entry->fullname;
-      tmp.RemoveLast();
-      entry->filename = entry->fullname.Mid(tmp.Find('/', true)+1);
-   }
-   else {
-      entry->filename = entry->fullname.Mid(entry->fullname.Find('/', true)+1);
-   }
-
-   return true;
-}
-
-/* Sets a list item state, and update its parents and children if it is a directory */
-void wxbRestorePanel::SetListItemState(long listitem, int newstate) 
-{
-   wxbTreeItemData* itemdata = (wxbTreeItemData*)list->GetItemData(listitem);
-   
-   wxTreeItemId treeitem;
-   
-   itemdata->SetMarked(newstate);
-   list->SetItemImage(listitem, newstate, 0); /* TODO: Find what these ints are for */
-   list->SetItemImage(listitem, newstate, 1);
-      
-   if ((treeitem = itemdata->GetId()).IsOk()) {
-      SetTreeItemState(treeitem, newstate);
-   }
-   else {
-      UpdateTreeItemState(tree->GetSelection());
-   }
-}
-
-/* Sets a tree item state, and update its children, parents and list (if necessary) */
-void wxbRestorePanel::SetTreeItemState(wxTreeItemId item, int newstate) {
-#if wxCHECK_VERSION(2, 6, 0)
-   wxTreeItemIdValue cookie;
-#else
-   long cookie;
-#endif
-   wxTreeItemId currentChild = tree->GetFirstChild(item, cookie);
-
-   wxbTreeItemData* itemdata;
-
-   while (currentChild.IsOk()) {
-      itemdata = (wxbTreeItemData*)tree->GetItemData(currentChild);
-      int state = itemdata->GetMarked();
-      
-      if (state != newstate) {
-         itemdata->SetMarked(newstate);
-         tree->SetItemImage(currentChild, newstate, wxTreeItemIcon_Normal);
-         tree->SetItemImage(currentChild, newstate, wxTreeItemIcon_Selected);
-      }
-      
-      currentChild = tree->GetNextChild(item, cookie);
-   }
-     
-   itemdata = (wxbTreeItemData*)tree->GetItemData(item);  
-   itemdata->SetMarked(newstate);
-   tree->SetItemImage(item, newstate, wxTreeItemIcon_Normal);
-   tree->SetItemImage(item, newstate, wxTreeItemIcon_Selected);
-   tree->Refresh();
-   
-   if (tree->GetSelection() == item) {
-      for (long i = 0; i < list->GetItemCount(); i++) {
-         list->SetItemImage(i, newstate, 0); /* TODO: Find what these ints are for */
-         list->SetItemImage(i, newstate, 1);
-      }
-   }
-   
-   UpdateTreeItemState(tree->GetItemParent(item));
-}
-
-/* Update a tree item state, and its parents' state */
-void wxbRestorePanel::UpdateTreeItemState(wxTreeItemId item) {  
-   if (!item.IsOk()) {
-      return;
-   }
-   
-   int state = 0;
-       
-#if wxCHECK_VERSION(2, 6, 0)
-   wxTreeItemIdValue cookie;
-#else
-   long cookie;
-#endif
-   wxTreeItemId currentChild = tree->GetFirstChild(item, cookie);
-
-   bool onechildmarked = false;
-   bool onechildunmarked = false;
-
-   while (currentChild.IsOk()) {
-      state = ((wxbTreeItemData*)tree->GetItemData(currentChild))->GetMarked();
-      switch (state) {
-      case 0:
-         onechildunmarked = true;
-         break;
-      case 1:
-         onechildmarked = true;
-         break;
-      case 2:
-         onechildmarked = true;
-         onechildunmarked = true;
-         break;
-      }
-      
-      if (onechildmarked && onechildunmarked) {
-         break;
-      }
-      
-      currentChild = tree->GetNextChild(item, cookie);
-   }
-   
-   if (tree->GetSelection() == item) {
-      for (long i = 0; i < list->GetItemCount(); i++) {
-         state = ((wxbTreeItemData*)list->GetItemData(i))->GetMarked();
-         
-         switch (state) {
-         case 0:
-            onechildunmarked = true;
-            break;
-         case 1:
-            onechildmarked = true;
-            break;
-         case 2:
-            onechildmarked = true;
-            onechildunmarked = true;
-            break;
-         }
-         
-         if (onechildmarked && onechildunmarked) {
-            break;
-         }
-      }
-   }
-   
-   state = 0;
-   
-   if (onechildmarked && onechildunmarked) {
-      state = 2;
-   }
-   else if (onechildmarked) {
-      state = 1;
-   }
-   else if (onechildunmarked) {
-      state = 0;
-   }
-   else { // no child, don't change anything
-      UpdateTreeItemState(tree->GetItemParent(item));
-      return;
-   }
-   
-   wxbTreeItemData* itemdata = (wxbTreeItemData*)tree->GetItemData(item);
-      
-   itemdata->SetMarked(state);
-   tree->SetItemImage(item, state, wxTreeItemIcon_Normal);
-   tree->SetItemImage(item, state, wxTreeItemIcon_Selected);
-   
-   UpdateTreeItemState(tree->GetItemParent(item));
-}
-
-/* Refresh the whole tree. */
-void wxbRestorePanel::RefreshTree() {
-   /* Save current selection */
-   wxArrayString current;
-   
-   wxTreeItemId item = currentTreeItem;
-   
-   while ((item.IsOk()) && (item != tree->GetRootItem())) {
-      current.Add(tree->GetItemText(item));
-      item = tree->GetItemParent(item);
-   }
-
-   /* Update the tree */
-   UpdateTreeItem(tree->GetRootItem(), false, true);
-
-   /* Reselect the former selected item */   
-   item = tree->GetRootItem();
-   
-   if (current.Count() == 0) {
-      tree->SelectItem(item);
-      return;
-   }
-   
-   bool match;
-   
-   for (int i = current.Count()-1; i >= 0; i--) {
-#if wxCHECK_VERSION(2, 6, 0)
-      wxTreeItemIdValue cookie;
-#else
-      long cookie;
-#endif
-      wxTreeItemId currentChild = tree->GetFirstChild(item, cookie);
-      
-      match = false;
-      
-      while (currentChild.IsOk()) {
-         if (((wxbTreeItemData*)tree->GetItemData(currentChild))->GetName() == current[i]) {
-            item = currentChild;
-            match = true;
-            break;
-         }
-   
-         currentChild = tree->GetNextChild(item, cookie);
-      }
-      
-      if (!match) break;
-   }
-   
-   UpdateTreeItem(item, true, false); /* Update the list */
-   
-   tree->SelectItem(item);
-}
-
-void wxbRestorePanel::RefreshList() {
-   if (currentTreeItem.IsOk()) {
-      UpdateTreeItem(currentTreeItem, true, false); /* Update the list */
-   }
-}
-
-/* Update first config, adapting settings to the job name selected */
-void wxbRestorePanel::UpdateFirstConfig() {
-   configPanel->Enable(false);
-   wxbDataTokenizer* dt = wxbUtils::WaitForEnd(wxString(wxT(".defaults job=")) + configPanel->GetRowString(_("Job Name")) + wxT("\n"), true, false);
-   /* job=RestoreFiles
-    * pool=Default
-    * messages=Standard
-    * client=***
-    * storage=File
-    * where=/tmp/bacula-restores
-    * level=0
-    * type=Restore
-    * fileset=***
-    */
-   
-   wxString name, str;
-   unsigned int i;
-   int j;
-   wxString client;
-   bool dolistjobs = false;
-   
-   for (i = 0; i < dt->GetCount(); i++) {
-      str = (*dt)[i];
-      if ((j = str.Find('=')) > -1) {
-         name = str.Mid(0, j);
-         if (name == wxT("pool")) {
-            configPanel->SetRowString(_("Pool"), str.Mid(j+1));
-         }
-         else if (name == wxT("client")) {
-            str = str.Mid(j+1);
-            if ((str != configPanel->GetRowString(_("Client"))) ||
-                  (configPanel->GetRowString(_("Before"))) == wxT("")) {
-               configPanel->SetRowString(_("Client"), str);
-               dolistjobs = true;
-            }
-         }
-         else if (name == wxT("storage")) {
-            configPanel->SetRowString(_("Storage"), str.Mid(j+1));
-         }
-         else if (name == wxT("fileset")) {
-            str = str.Mid(j+1);
-            if ((str != configPanel->GetRowString(_("Fileset"))) ||
-                  (configPanel->GetRowString(_("Before"))) == wxT("")) {
-               configPanel->SetRowString(_("Fileset"), str);
-               dolistjobs = true;
-            }
-         }
-      }
-   }
-      
-   delete dt;
-   
-   if (dolistjobs) {
-      //wxTheApp->Yield(false);
-      CmdListJobs();
-   }
-   configPanel->Enable(true);
-}
-
-/* 
- * Update second config.
- * 
- * Run Restore job
- * JobName:    RestoreFiles
- * Bootstrap:  /var/lib/bacula/restore.bsr
- * Where:      /tmp/bacula-restores
- * Replace:    always
- * FileSet:    Full Set
- * Client:     tom-fd
- * Storage:    File
- * When:       2004-04-18 01:18:56
- * Priority:   10
- * OK to run? (yes/mod/no):
- * 
- */
-bool wxbRestorePanel::UpdateSecondConfig(wxbDataTokenizer* dt) {
-   unsigned int i;
-   for (i = 0; i < dt->GetCount(); i++) {
-      if ((*dt)[i].Find(_("Run Restore job")) == 0)
-         break;
-   }
-   
-   if ((i + 10) > dt->GetCount()) {
-      return false;
-   }
-   
-   int k;
-   
-   if ((k = (*dt)[++i].Find(_("JobName:"))) != 0) return false;
-   restorePanel->SetRowString(_("Job Name"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(_("Bootstrap:"))) != 0) return false;
-   restorePanel->SetRowString(_("Bootstrap"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(_("Where:"))) != 0) return false;
-   restorePanel->SetRowString(_("Where"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   
-   if ((k = (*dt)[++i].Find(_("Replace:"))) != 0) return false;
-   wxString str = (*dt)[i].Mid(10).Trim(false).RemoveLast();
-   if (str == _("always")) restorePanel->SetRowSelection(_("Replace"), 0);
-   else if (str == _("ifnewer")) restorePanel->SetRowSelection(_("Replace"), 1);
-   else if (str == _("ifolder")) restorePanel->SetRowSelection(_("Replace"), 2);
-   else if (str == _("never")) restorePanel->SetRowSelection(_("Replace"), 3);
-   else restorePanel->SetRowSelection(_("Replace"), 0);
-
-   if ((k = (*dt)[++i].Find(_("FileSet:"))) != 0) return false;
-   restorePanel->SetRowString(_("Fileset"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(_("Client:"))) != 0) return false;
-   restorePanel->SetRowString(_("Client"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(_("Storage:"))) != 0) return false;
-   restorePanel->SetRowString(_("Storage"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   if ((k = (*dt)[++i].Find(_("When:"))) != 0) return false;
-   restorePanel->SetRowString(_("When"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   i++;        /* Skip catalog field */
-   if ((k = (*dt)[++i].Find(_("Priority:"))) != 0) return false;
-   restorePanel->SetRowString(_("Priority"), (*dt)[i].Mid(10).Trim(false).RemoveLast());
-   cfgUpdated = 0;
-   
-   restorePanel->Layout();
-   
-   return true;
-}
-
-/*----------------------------------------------------------------------------
-   Status function
-  ----------------------------------------------------------------------------*/
-
-/* Set current status by enabling/disabling components */
-void wxbRestorePanel::SetStatus(status_enum newstatus) {
-   switch (newstatus) {
-   case disabled:
-      centerSizer->Remove(configPanel);
-      centerSizer->Remove(restorePanel);
-      centerSizer->Remove(treelistPanel);
-      treelistPanel->Show(false);
-      restorePanel->Show(false);
-      centerSizer->Add(configPanel, 1, wxEXPAND);
-      configPanel->Show(true);
-      configPanel->Layout();
-      centerSizer->Layout();
-      this->Layout();
-      start->SetLabel(_("Enter restore mode"));
-      start->Enable(false);
-      configPanel->Enable(false);
-      tree->Enable(false);
-      list->Enable(false);
-      gauge->Enable(false);
-      cancel->Enable(false);
-      cfgUpdated = 0;
-      cancelled = 0;
-      break;
-   case finished:
-      centerSizer->Remove(configPanel);
-      centerSizer->Remove(restorePanel);
-      centerSizer->Remove(treelistPanel);
-      treelistPanel->Show(false);
-      restorePanel->Show(false);
-      centerSizer->Add(configPanel, 1, wxEXPAND);
-      configPanel->Show(true);
-      configPanel->Layout();
-      centerSizer->Layout();
-      this->Layout();
-      tree->DeleteAllItems();
-      list->DeleteAllItems();
-      configPanel->ClearRowChoices(_("Client"));
-      configPanel->ClearRowChoices(_("Before"));
-      wxbMainFrame::GetInstance()->EnablePanels();
-      newstatus = activable;
-   case activable:
-      cancelled = 0;
-      start->SetLabel(_("Enter restore mode"));
-      start->Enable(true);
-      configPanel->Enable(false);
-      tree->Enable(false);
-      list->Enable(false);
-      gauge->Enable(false);
-      cancel->Enable(false);
-      cfgUpdated = 0;
-      break;
-   case entered:
-      wxbMainFrame::GetInstance()->DisablePanels(this);
-      gauge->SetValue(0);
-      start->Enable(false);
-      //start->SetLabel(_("Choose files to restore"));
-      configPanel->Enable(true);
-      tree->Enable(false);
-      list->Enable(false);
-      cancel->Enable(true);
-      cfgUpdated = 0;
-      break;
-   case listing:
-      break;
-   case choosing:
-      start->Enable(true);
-      start->SetLabel(_("Restore"));
-      centerSizer->Remove(configPanel);
-      configPanel->Show(false);
-      centerSizer->Add(treelistPanel, 1, wxEXPAND);
-      treelistPanel->Show(true);
-      treelistPanel->Layout();
-      centerSizer->Layout();
-      this->Layout();
-      tree->Enable(true);
-      list->Enable(true);
-      SetWorking(false);
-      break;
-   case configuring:
-      start->Enable(false);
-      configPanel->Enable(false);
-      tree->Enable(false);
-      list->Enable(false);
-      centerSizer->Remove(treelistPanel);
-      treelistPanel->Show(false);
-      centerSizer->Add(restorePanel, 1, wxEXPAND);
-      restorePanel->Show(true);
-      restorePanel->Layout();
-      centerSizer->Layout();
-      this->Layout();
-      restorePanel->EnableApply(false);
-      cancel->Enable(true);
-      break;
-   case restoring:
-      start->SetLabel(_("Restoring..."));
-      gauge->Enable(true);
-      gauge->SetValue(0);
-      start->Enable(false);
-      configPanel->Enable(false);
-      tree->Enable(false);
-      list->Enable(false);
-      SetWorking(true);
-      break;
-   }
-   status = newstatus;
-}
-
-/*----------------------------------------------------------------------------
-   UI related
-  ----------------------------------------------------------------------------*/
-
-void wxbRestorePanel::SetWorking(bool working) {
-   this->working = working;
-   if (working) {
-      SetCursor(*wxHOURGLASS_CURSOR);
-//      SetEvtHandlerEnabled(false); //EVTQUEUE
-   }
-//   else if (!processing) { /* Empty event queue if we aren't already doing this */ //EVTQUEUE
-   else {
-//      processing = true; //EVTQUEUE
-      SetCursor(*wxSTANDARD_CURSOR);
-//      SetEvtHandlerEnabled(true); //EVTQUEUE
-/*      wxNode *node = pendingEvents->First(); //EVTQUEUE
-      while ( node ) {
-         wxEvent *event = (wxEvent *)node->Data();
-         delete node;
-   
-         wxEvtHandler::ProcessEvent(*event);
-         delete event;
-   
-         node = pendingEvents->First();
-      }
-      processing = false;*/
-   }
-}
-
-bool wxbRestorePanel::IsWorking() {
-   return this->working;
-}
-
-void wxbRestorePanel::EnableConfig(bool enable) {
-   restorePanel->Enable(enable);
-}
-
-/*----------------------------------------------------------------------------
-   Event handling
-  ----------------------------------------------------------------------------*/
-
-
-//EVTQUEUE
-/*
-bool wxbRestorePanel::ProcessEvent(wxEvent& event) {
-   if (IsWorking() || processing) {
-      wxEvent *eventCopy = event.Clone();
-      
-      pendingEvents->Append(eventCopy);
-      return TRUE;
-   }
-   else {
-      return wxEvtHandler::ProcessEvent(event);
-   }
-}
-*/
-
-void wxbRestorePanel::OnCancel(wxCommandEvent& event) {
-   cancel->Enable(false);
-   SetCursor(*wxHOURGLASS_CURSOR);
-   CmdCancel();
-   SetCursor(*wxSTANDARD_CURSOR);
-}
-
-void wxbRestorePanel::OnStart(wxCommandEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
-   SetWorking(true);
-   CmdStart();
-   SetWorking(false);
-}
-
-void wxbRestorePanel::OnTreeChanging(wxTreeEvent& event) {
-   if (IsWorking()) {
-      event.Veto();
-   }
-}
-
-void wxbRestorePanel::OnTreeExpanding(wxTreeEvent& event) {
-   if (IsWorking()) {
-      event.Veto();
-      return;
-   }
-   //working = true;
-   //CmdList(event.GetItem());
-   if (tree->GetSelection() != event.GetItem()) {
-      tree->SelectItem(event.GetItem());
-   }
-   //working = false;
-}
-
-void wxbRestorePanel::OnTreeChanged(wxTreeEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
-   if (currentTreeItem == event.GetItem()) {
-      return;
-   }
-   treeadd->Enable(false);
-   treeremove->Enable(false);
-   treerefresh->Enable(false);
-   markWhenCommandDone = false;
-   SetWorking(true);
-   currentTreeItem = event.GetItem();
-   CmdList(event.GetItem());
-   if (markWhenCommandDone) {
-      CmdMark(event.GetItem(), NULL, 0);
-      tree->Refresh();
-   }
-   SetWorking(false);
-   if (event.GetItem().IsOk()) {
-      int status = ((wxbTreeItemData*)tree->GetItemData(event.GetItem()))->GetMarked();
-      treeadd->Enable(status != 1);
-      treeremove->Enable(status != 0);
-   }
-   treerefresh->Enable(true);
-}
-
-void wxbRestorePanel::OnTreeMarked(wxbTreeMarkedEvent& event) {
-   if (IsWorking()) {
-      if (tree->GetSelection() == event.GetItem()) {
-         markWhenCommandDone = !markWhenCommandDone;
-      }
-      return;
-   }
-   SetWorking(true);
-   markWhenCommandDone = false;
-   CmdMark(event.GetItem(), NULL, 0);
-   if (markWhenCommandDone) {
-      CmdMark(event.GetItem(), NULL, 0);
-      tree->Refresh();
-   }
-   tree->Refresh();
-   SetWorking(false);
-   if (event.GetItem().IsOk()) {
-      int status = ((wxbTreeItemData*)tree->GetItemData(event.GetItem()))->GetMarked();
-      treeadd->Enable(status != 1);
-      treeremove->Enable(status != 0);
-   }
-}
-
-void wxbRestorePanel::OnTreeAdd(wxCommandEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
-   
-   if (currentTreeItem.IsOk()) {
-      SetWorking(true);
-      CmdMark(currentTreeItem, NULL, 0, 1);
-      tree->Refresh();
-      treeadd->Enable(0);
-      treeremove->Enable(1);
-      SetWorking(false);
-   }
-}
-
-void wxbRestorePanel::OnTreeRemove(wxCommandEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
-   
-   if (currentTreeItem.IsOk()) {
-      SetWorking(true);
-      CmdMark(currentTreeItem, NULL, 0, 0);
-      tree->Refresh();
-      treeadd->Enable(1);
-      treeremove->Enable(0);
-      SetWorking(false);
-   }
-}
-
-void wxbRestorePanel::OnTreeRefresh(wxCommandEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
-   
-   SetWorking(true);
-   RefreshTree();
-   SetWorking(false);
-}
-
-void wxbRestorePanel::OnListMarked(wxbListMarkedEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
-   
-   if (list->GetSelectedItemCount() == 0) {
-      return;
-   }
-   
-   SetWorking(true);  
-   
-   long* items = new long[list->GetSelectedItemCount()];
-   
-   int num = 0;
-   
-   long item = list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-   while (item != -1) {
-      items[num] = item;
-      num++;
-      item = list->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-   }
-   
-   CmdMark(wxTreeItemId(), items, num);
-   
-   delete[] items;
-   
-   wxListEvent listevt;
-   
-   OnListChanged(listevt);
-   
-   event.Skip();
-   tree->Refresh();
-   SetWorking(false);
-}
-
-void wxbRestorePanel::OnListActivated(wxListEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
-   SetWorking(true);
-   long item = event.GetIndex();
-//   long item = list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED);
-   if (item > -1) {
-      wxbTreeItemData* itemdata = (wxbTreeItemData*)list->GetItemData(item);
-      wxString name = itemdata->GetName();
-      event.Skip();
-
-      wxString itemStr;
-
-#if wxCHECK_VERSION(2, 6, 0)
-      wxTreeItemIdValue cookie;
-#else
-      long cookie;
-#endif
-
-      if (IsPathSeparator(name.GetChar(name.Length()-1))) {
-         wxTreeItemId currentChild = tree->GetFirstChild(currentTreeItem, cookie);
-
-         while (currentChild.IsOk()) {
-            wxString name2 = ((wxbTreeItemData*)tree->GetItemData(currentChild))->GetName();
-            if (name2 == name) {
-               //tree->UnselectAll();
-               SetWorking(false);
-               tree->Expand(currentTreeItem);
-               tree->SelectItem(currentChild);
-               //tree->Refresh();
-               return;
-            }
-            currentChild = tree->GetNextChild(currentTreeItem, cookie);
-         }
-      }
-   }
-   SetWorking(false);
-}
-
-void wxbRestorePanel::OnListChanged(wxListEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
- 
-   listadd->Enable(false);
-   listremove->Enable(false);
-   
-   bool marked = false;
-   bool unmarked = false;
-   
-   long item = list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-   while (item != -1) {
-      switch (((wxbTreeItemData*)list->GetItemData(item))->GetMarked()) {
-      case 0:
-         unmarked = true;
-         break;
-      case 1:
-         marked = true;
-         break;
-      case 2:
-         marked = true;
-         unmarked = true;
-         break;
-      default:
-         break;
-         // Should never happen
-      }
-      if (marked && unmarked) break;
-      item = list->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-   }
-   
-   listadd->Enable(unmarked);
-   listremove->Enable(marked);
-}
-
-void wxbRestorePanel::OnListAdd(wxCommandEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
-   
-   SetWorking(true);
-   
-   long* items = new long[list->GetSelectedItemCount()];
-   
-   int num = 0;
-   
-   long item = list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-   while (item != -1) {
-      items[num] = item;
-      num++;
-      item = list->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-   }
-     
-   CmdMark(wxTreeItemId(), items, num, 1);
-   
-   delete[] items;
-   
-   tree->Refresh();
-   SetWorking(false);
-   
-   listadd->Enable(false);
-   listremove->Enable(true);
-}
-
-void wxbRestorePanel::OnListRemove(wxCommandEvent& event) {
-   if (IsWorking()) {
-      return;
-   }
-   
-   SetWorking(true);
-   
-   long* items = new long[list->GetSelectedItemCount()];
-   
-   int num = 0;
-   
-   long item = list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-   while (item != -1) {
-      items[num] = item;
-      num++;
-      item = list->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
-   }
-     
-   CmdMark(wxTreeItemId(), items, num, 0);
-   
-   delete[] items;
-   
-   tree->Refresh();
-   SetWorking(false);
-   
-   listadd->Enable(true);
-   listremove->Enable(false);
-}
-
-void wxbRestorePanel::OnListRefresh(wxCommandEvent& event) 
-{
-   if (IsWorking()) {
-      return;
-   }
-   
-   SetWorking(true);
-   RefreshList();
-   SetWorking(false);
-}
-
-void wxbRestorePanel::OnConfigUpdated(wxCommandEvent& event) 
-{
-   if (status == entered) {
-      if (event.GetId() == ConfigJobName) {
-         if (IsWorking()) {
-            return;
-         }
-         SetWorking(true);
-         UpdateFirstConfig();
-         SetWorking(false);
-      }
-      else if ((event.GetId() == ConfigClient) || (event.GetId() == ConfigFileset)) {
-         if (IsWorking()) {
-            return;
-         }
-         SetWorking(true);
-         configPanel->Enable(false);
-         CmdListJobs();
-         configPanel->Enable(true);
-         SetWorking(false);
-      }
-      cfgUpdated = cfgUpdated | (1 << event.GetId());
-   }
-   else if (status == configuring) {
-      restorePanel->EnableApply(true);
-      cfgUpdated = cfgUpdated | (1 << event.GetId());
-   }
-}
-
-void wxbRestorePanel::OnConfigOk(wxCommandEvent& WXUNUSED(event)) {
-   if (status != configuring) return;
-   if (IsWorking()) {
-      return;
-   }
-   SetWorking(true);
-   CmdStart();
-   SetWorking(false);
-}
-
-void wxbRestorePanel::OnConfigApply(wxCommandEvent& WXUNUSED(event)) {
-   if (status != configuring) return;
-   if (IsWorking()) {
-      return;
-   }
-   SetWorking(true);
-   CmdConfigApply();
-   if (cfgUpdated == 0) {
-      restorePanel->EnableApply(false);
-   }
-   SetWorking(false);  
-}
-
-void wxbRestorePanel::OnConfigCancel(wxCommandEvent& WXUNUSED(event)) {
-   if (status != configuring) return;
-   if (IsWorking()) {
-      return;
-   }
-   SetWorking(true);
-   CmdConfigCancel();
-   SetWorking(false);
-}
diff --git a/src/wx-console/wxbrestorepanel.h b/src/wx-console/wxbrestorepanel.h
deleted file mode 100644
index fe714cc..0000000
--- a/src/wx-console/wxbrestorepanel.h
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- *
- *   wxbPanel for restoring files
- *
- *    Nicolas Boichat, April-May 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-#ifndef WXBRESTOREPANEL_H
-#define WXBRESTOREPANEL_H
-
-#include "wx/wxprec.h"
-
-#ifndef WX_PRECOMP
-   #include "wx/wx.h"
-#endif
-
-#include "wxbtableparser.h"
-
-#include <wx/thread.h>
-#include <wx/listctrl.h>
-#include <wx/treectrl.h>
-#include <wx/gauge.h>
-#include <wx/stattext.h>
-#include <wx/splitter.h>
-
-#include "wxbutils.h"
-
-#include "wxbconfigpanel.h"
-#include "wxbtreectrl.h"
-#include "wxblistctrl.h"
-
-WX_DECLARE_LIST(wxEvent, wxbEventList);
-
-/* Class for storing directory entries (results from dir commands). */
-class wxbDirEntry {
-public:
-   wxString perm;
-   wxString nlink;
-   wxString user;
-   wxString group;
-   wxString size;
-   wxString date;
-   int marked; /* 0 - Not Marked, 1 - Marked, 2 - Some file under is marked */
-   wxString fullname; /* full name with path */
-   wxString filename; /* only filename, no path */
-};
-
-/*
- * wxbPanel for restoring files
- */
-class wxbRestorePanel : public wxbPanel
-{
-   public:
-      wxbRestorePanel(wxWindow* parent);
-      ~wxbRestorePanel();
-
-      /* wxbPanel overloadings */
-      virtual wxString GetTitle();
-      virtual void EnablePanel(bool enable = true);
-
-   private:
-/* Commands called by events handler */
-
-      /* The main button has been clicked */
-      void CmdStart();
-
-      /* The cancel button has been clicked */
-      void CmdCancel();
-
-      /* Apply configuration changes */
-      void CmdConfigApply();
-
-      /* Cancel restore */
-      void CmdConfigCancel();
-
-       /* List jobs for a specified client */
-      void CmdListJobs();
-
-      /* List files and directories for a specified tree item */
-      void CmdList(wxTreeItemId item);
-
-      /* Mark a treeitem (directory) or several listitems (file or directory),
-       * state defines if it should mark (1), unmark (0), or switch state (-1) */
-      void CmdMark(wxTreeItemId treeitem, long* listitems, int listsize, int state = -1);
-
-/* General functions and variables */
-      //bool ended; /* The last command send has finished */
-
-      //long filemessages; /* When restoring, number of files restored */
-      long totfilemessages; /* When restoring, number of files to be restored */
-      wxString jobid;
-
-      /* Run a dir command, and waits until result is fully received.
-       * If recurse is true, update the children too. */
-      void UpdateTreeItem(wxTreeItemId item, bool updatelist, bool recurse);
-
-      /* Parse dir command results. */
-      int ParseList(wxString line, wxbDirEntry* entry);
-
-      /* Sets a list item state, and update its parents and children if it is a directory */
-      void SetListItemState(long listitem, int newstate);
-
-      /* Sets a tree item state, and update its children, parents and list (if necessary) */
-      void SetTreeItemState(wxTreeItemId item, int newstate);
-
-      /* Update a tree item parents' state */
-      void UpdateTreeItemState(wxTreeItemId item);
-
-      /* Refresh the whole tree. */
-      void RefreshTree();
-
-      /* Refresh file list */
-      void RefreshList();
-
-      /* Update first config, adapting settings to the job name selected */
-      void UpdateFirstConfig();
-
-      /* Update second config */
-      bool UpdateSecondConfig(wxbDataTokenizer* dt);
-
-/* Status related */
-      enum status_enum
-      {
-         disabled,    // The panel is not activatable
-         activable,   // The panel is activable, but not activated
-         entered,     // The panel is activated
-         choosing,    // The user is choosing files to restore
-         listing,     // Dir listing is in progress
-         configuring, // The user is configuring restore process
-         restoring,   // Bacula is restoring files
-         finished     // Retore done (state will change in activable)
-      };
-
-      status_enum status;
-
-      /* Cancelled status :
-       *  - 0 - !cancelled
-       *  - 1 - will be cancelled
-       *  - 2 - has been cancelled */
-      int cancelled;
-
-      /* Set current status by enabling/disabling components */
-      void SetStatus(status_enum newstatus);
-
-/* UI related */
-      bool working; // A command is running, discard GUI events
-      void SetWorking(bool working);
-      bool IsWorking();
-      bool markWhenCommandDone; //If an item should be (un)marked after the current listing/marking is done
-      wxTreeItemId currentTreeItem; // Currently selected tree item
-
-      /* Enable or disable config controls status */
-      void EnableConfig(bool enable);
-
-/* Event handling */
-//      wxbEventList* pendingEvents; /* Stores event sent while working */ //EVTQUEUE
-//      bool processing; /* True if pendingEvents is being processed */ //EVTQUEUE
-
-//      virtual void AddPendingEvent(wxEvent& event);
-//      virtual bool ProcessEvent(wxEvent& event); //EVTQUEUE
-
-      void OnStart(wxCommandEvent& event);
-      void OnCancel(wxCommandEvent& event);
-
-      void OnTreeChanging(wxTreeEvent& event);
-      void OnTreeExpanding(wxTreeEvent& event);
-      void OnTreeChanged(wxTreeEvent& event);
-      void OnTreeMarked(wxbTreeMarkedEvent& event);
-      void OnTreeAdd(wxCommandEvent& event);
-      void OnTreeRemove(wxCommandEvent& event);
-      void OnTreeRefresh(wxCommandEvent& event);
-
-      void OnListMarked(wxbListMarkedEvent& event);
-      void OnListActivated(wxListEvent& event);
-      void OnListChanged(wxListEvent& event);
-      void OnListAdd(wxCommandEvent& event);
-      void OnListRemove(wxCommandEvent& event);
-      void OnListRefresh(wxCommandEvent& event);
-
-      void OnConfigUpdated(wxCommandEvent& event);
-      void OnConfigOk(wxCommandEvent& WXUNUSED(event));
-      void OnConfigApply(wxCommandEvent& WXUNUSED(event));
-      void OnConfigCancel(wxCommandEvent& WXUNUSED(event));
-
-/* Components */
-      wxBoxSizer *centerSizer; /* Center sizer */
-      wxSplitterWindow *treelistPanel; /* Panel which contains tree and list */
-      wxbConfigPanel *configPanel; /* Panel which contains initial restore options */
-      wxbConfigPanel *restorePanel; /* Panel which contains final restore options */
-
-      wxImageList* imagelist; //image list for tree and list
-
-      wxButton* start;
-      wxButton* cancel;
-
-      wxbTreeCtrl* tree;
-      wxButton* treeadd;
-      wxButton* treeremove;
-      wxButton* treerefresh;
-
-      wxbListCtrl* list;
-      wxButton* listadd;
-      wxButton* listremove;
-      wxButton* listrefresh;
-
-      wxGauge* gauge;
-
-      long cfgUpdated; //keeps which config fields have been updated
-
-      friend class wxbSplitterWindow;
-
-      DECLARE_EVENT_TABLE();
-};
-
-#endif // WXBRESTOREPANEL_H
diff --git a/src/wx-console/wxbtableparser.cpp b/src/wx-console/wxbtableparser.cpp
deleted file mode 100644
index f8f6ade..0000000
--- a/src/wx-console/wxbtableparser.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- *
- *   Class used to parse tables received from director in this format :
- *
- *  +---------+---------+-------------------+
- *  | Header1 | Header2 | ...               |
- *  +---------+---------+-------------------+
- *  |  Data11 | Data12  | ...               |
- *  |  ....   | ...     | ...               |
- *  +---------+---------+-------------------+
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2009 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.
-*/
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-
-#include "wxbtableparser.h" // class's header file
-
-#include "csprint.h"
-
-#include <wx/tokenzr.h>
-
-#include "wxbmainframe.h"
-
-#include <wx/arrimpl.cpp>
-
-WX_DEFINE_OBJARRAY(wxbTable);
-
-wxbArrayString::wxbArrayString(int n) : wxArrayString(), wxObject() {
-   Alloc(n);
-}
-
-wxbArrayString::~wxbArrayString() {
-   
-}
-
-/*
- *   wxbTableParser constructor
- */
-wxbTableParser::wxbTableParser(bool header) : wxbTable(), wxbDataParser(true) {
-   separatorNum = header ? 0 : 2;
-   tableHeader = wxbArrayString();
-}
-
-/*
- *   wxbTableParser destructor
- */
-wxbTableParser::~wxbTableParser() {
-
-}
-
-/*
- *   Returns table header as an array of wxStrings.
- */
-const wxbArrayString& wxbTableParser::GetHeader() {
-   return tableHeader;
-}
-
-/*
- *   Receives data to analyse.
- */
-bool wxbTableParser::Analyse(wxString str, int status) {
-   if ((status == CS_END) && (separatorNum > 0)) {
-      separatorNum = 3;
-   }
-
-   if (separatorNum == 3) return false;
-
-   if (str.Length() > 4) {
-      if ((str.GetChar(0) == '+') && (str.GetChar(str.Length()-2) == '+') && (str.GetChar(str.Length()-1) == '\n')) {
-         separatorNum++;
-         return false;
-      }
-
-      if ((str.GetChar(0) == '|') && (str.GetChar(str.Length()-2) == '|') && (str.GetChar(str.Length()-1) == '\n')) {
-         str.RemoveLast();
-         wxStringTokenizer tkz(str, wxT("|"), wxTOKEN_STRTOK);
-
-         if (separatorNum == 1) {
-            while ( tkz.HasMoreTokens() ) {
-               tableHeader.Add(tkz.GetNextToken().Trim(true).Trim(false));
-            }
-         }
-         else if (separatorNum == 2) {
-            wxbArrayString tablerow(tableHeader.GetCount());
-            while ( tkz.HasMoreTokens() ) {
-               tablerow.Add(tkz.GetNextToken().Trim(true).Trim(false));
-            }
-            Add(tablerow);
-         }
-      }
-   }
-   return false;
-}
-
-/*
- *   Return true table parsing has finished.
- */
-bool wxbTableParser::hasFinished() {
-   return (separatorNum == 3);
-}
diff --git a/src/wx-console/wxbtableparser.h b/src/wx-console/wxbtableparser.h
deleted file mode 100644
index 3950f13..0000000
--- a/src/wx-console/wxbtableparser.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- *
- *   Class used to parse tables received from director in this format :
- *
- *  +---------+---------+-------------------+
- *  | Header1 | Header2 | ...               |
- *  +---------+---------+-------------------+
- *  |  Data11 | Data12  | ...               |
- *  |  ....   |  ...    | ...               |
- *  +---------+---------+-------------------+
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2009 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.
-*/
-
-#ifndef WXBTABLEPARSER_H
-#define WXBTABLEPARSER_H
-
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
-   #pragma hdrstop
-#endif
-
-// for all others, include the necessary headers (this file is usually all you
-// need because it includes almost all "standard" wxWindows headers)
-#ifndef WX_PRECOMP
-   #include "wx/wx.h"
-#endif
-
-#include "wxbutils.h"
-
-#include <wx/dynarray.h>
-
-/*
- * Allow the use of Object Array (auto-deletion, object returned as themselves
- * and not as pointers)
- */
-class wxbArrayString: public wxArrayString, public wxObject {
-   public:
-      wxbArrayString(int n = 2000);
-      virtual ~wxbArrayString();
-};
-
-WX_DECLARE_OBJARRAY( wxbArrayString, wxbTable );
-
-/*
- * Class used to parse tables received from director. Data can be accessed with
- * the operator [].
- *
- * Example : wxString elem = parser[3][2]; fetches column 2 of element 3.
- */
-class wxbTableParser: public wxbTable, public wxbDataParser
-{
-   public:
-      wxbTableParser(bool header = true);
-      virtual ~wxbTableParser();
-
-      /*
-       *   Receives data to analyse.
-       */
-      virtual bool Analyse(wxString str, int status);
-
-      /*
-       *   Return true table parsing has finished.
-       */
-      bool hasFinished();
-
-      /*
-       *   Returns table header as an array of wxStrings.
-       */
-      const wxbArrayString& GetHeader();
-   private:
-      wxbArrayString tableHeader;
-
-      /*
-       * 0 - Table has not begun
-       * 1 - first +--+ line obtained, header will follow
-       * 2 - second +--+ line obtained, data will follow
-       * 3 - last +--+ line obtained, table parsing has finished
-       */
-      int separatorNum;
-};
-
-#endif // WXBTABLEPARSER_H
diff --git a/src/wx-console/wxbtreectrl.cpp b/src/wx-console/wxbtreectrl.cpp
deleted file mode 100644
index 6794488..0000000
--- a/src/wx-console/wxbtreectrl.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- *
- *   Custom tree control, which send "tree marked" events when the user right-
- *   click on a item, or double-click on a mark.
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-
-#include "wxbtreectrl.h"
-
-#include "csprint.h"
-#include "wxbmainframe.h"
-
-BEGIN_EVENT_TABLE(wxbTreeCtrl, wxTreeCtrl)
-   EVT_LEFT_DCLICK(wxbTreeCtrl::OnDoubleClicked)
-   EVT_RIGHT_DOWN(wxbTreeCtrl::OnRightClicked)
-END_EVENT_TABLE()
-
-DEFINE_LOCAL_EVENT_TYPE(wxbTREE_MARKED_EVENT)
-
-wxbTreeCtrl::wxbTreeCtrl(
-      wxWindow* parent, wxEvtHandler* handler, wxWindowID id, const wxPoint& pos, const wxSize& size): 
-            wxTreeCtrl(parent, id, pos, size, wxSUNKEN_BORDER | wxTR_HAS_BUTTONS) {
-   this->handler = handler;
-}
-
-wxbTreeCtrl::~wxbTreeCtrl() {}
-
-/* 
- * Send mark event if the user double-clicked on the icon.
- */
-void wxbTreeCtrl::OnDoubleClicked(wxMouseEvent& event) {
-   int flags;
-   wxTreeItemId treeid = HitTest(event.GetPosition(), flags);
-   if ((flags & wxTREE_HITTEST_ONITEMICON) && (treeid.IsOk())) {
-      wxbTreeMarkedEvent evt(GetId(), treeid);
-
-      handler->ProcessEvent(evt);
-      
-      //No Skip : we don't want this item to be collapsed or expanded
-   }
-   else {
-      event.Skip();
-   }
-}
-
-/* 
- * Send mark event if the user right clicked on an item.
- */
-void wxbTreeCtrl::OnRightClicked(wxMouseEvent& event) {
-   int flags;
-   wxTreeItemId treeid = HitTest(event.GetPosition(), flags);
-   if (treeid.IsOk()) {
-      wxbTreeMarkedEvent evt(GetId(), treeid);
-
-      handler->ProcessEvent(evt);
-   }
-   event.Skip();
-}
-
-/* Customized tree event, used for marking events */
-
-wxbTreeMarkedEvent::wxbTreeMarkedEvent(int id, wxTreeItemId& item): wxEvent(id, wxbTREE_MARKED_EVENT) {
-   this->item = item;
-}
-
-wxbTreeMarkedEvent::~wxbTreeMarkedEvent() {}
-
-wxbTreeMarkedEvent::wxbTreeMarkedEvent(const wxbTreeMarkedEvent& te): wxEvent(te) {
-   this->item = te.item;
-}
-
-wxEvent *wxbTreeMarkedEvent::Clone() const {
-   return new wxbTreeMarkedEvent(*(this));
-}
-
-wxTreeItemId wxbTreeMarkedEvent::GetItem() {
-   return item;
-}
diff --git a/src/wx-console/wxbtreectrl.h b/src/wx-console/wxbtreectrl.h
deleted file mode 100644
index 4edf5b2..0000000
--- a/src/wx-console/wxbtreectrl.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- *
- *   Custom tree control, which send "tree marked" events when the user right-
- *   click on a item, or double-click on a mark.
- *
- *    Nicolas Boichat, April 2004
- *
- *    Version $Id$
- */
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2006 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.
-*/
-
-#ifndef WXBTREECTRL_H
-#define WXBTREECTRL_H
-
-#include "wx/wxprec.h"
-
-#ifndef WX_PRECOMP
-   #include "wx/wx.h"
-#endif
-
-#include <wx/treectrl.h>
-
-BEGIN_DECLARE_EVENT_TYPES()
-   DECLARE_LOCAL_EVENT_TYPE(wxbTREE_MARKED_EVENT,       618)
-END_DECLARE_EVENT_TYPES()
-
-/* Customized tree event, used for marking events */
-class wxbTreeMarkedEvent: public wxEvent {
-   public:
-      wxbTreeMarkedEvent(int id, wxTreeItemId& item);
-      ~wxbTreeMarkedEvent();
-      wxbTreeMarkedEvent(const wxbTreeMarkedEvent& te);
-      virtual wxEvent *Clone() const;
-
-      wxTreeItemId GetItem();
-   private:
-      wxTreeItemId item;
-};
-
-typedef void (wxEvtHandler::*wxTreeMarkedEventFunction)(wxbTreeMarkedEvent&);
-
-#define EVT_TREE_MARKED_EVENT(id, fn) \
-    DECLARE_EVENT_TABLE_ENTRY( \
-        wxbTREE_MARKED_EVENT, id, wxID_ANY, \
-        (wxObjectEventFunction)(wxEventFunction)(wxTreeMarkedEventFunction)&fn, \
-        (wxObject *) NULL \
-    ),
-
-/* Customized tree, which transmit double clicks on images */
-class wxbTreeCtrl: public wxTreeCtrl {
-   public:
-      wxbTreeCtrl(wxWindow* parent, wxEvtHandler* handler, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
-      ~wxbTreeCtrl();
-
-   private:
-      void OnDoubleClicked(wxMouseEvent& event);
-      void OnRightClicked(wxMouseEvent& event);
-
-      wxEvtHandler* handler;
-
-      DECLARE_EVENT_TABLE();
-};
-
-#endif // WXBTREECTRL_H
diff --git a/src/wx-console/wxbutils.cpp b/src/wx-console/wxbutils.cpp
deleted file mode 100644
index c454afc..0000000
--- a/src/wx-console/wxbutils.cpp
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
- *
- *   wxbDataParser, class that receives and analyses data
- *
- *    Nicolas Boichat, April-July 2004
- *
- *    Version $Id$
- */
-
-/*  Windows debug builds set _DEBUG which is used by wxWidgets to select their
- *  debug memory allocator.  Unfortunately it conflicts with Bacula's SmartAlloc.
- * So we turn _DEBUG off since we aren't interested in things it enables.
- */
-
-#undef _DEBUG
-
-#include "bacula.h"
-#include "wxbutils.h"
-#include "wxbmainframe.h"
-#include "csprint.h"
-#include "wxbtableparser.h"
-
-/* A macro named Yield is defined under MinGW */
-#undef Yield
-
-bool wxbUtils::inited = false;
-
-wxString wxbUtils::ConvertToPrintable(wxString& str) {
-   /* FIXME : Unicode support should be added to fix this problem */
-#if (wxUSE_UNICODE == 0) && __WXGTK20__
-   wxString strnew(str);
-   /* Convert the string to something printable without unicode */
-   for (unsigned int i = 0; i < strnew.Length(); i++) {
-      /* If the character is not ASCII, print a ? */
-      if (((unsigned char)strnew[i] > (unsigned char)127)) {
-         strnew[i] = '?';
-      }
-   }
-   return strnew;
-#else
-   return str;
-#endif   
-}
-
-/* Sleeps during milliseconds (wrapper for wxUsleep (2.4) or wxMilliSleep (2.6)) */
-void wxbUtils::MilliSleep(unsigned long milliseconds) {
-#if wxCHECK_VERSION(2, 6, 0)
-   ::wxMilliSleep(milliseconds);
-#else
-   ::wxUsleep(milliseconds);
-#endif
-}
-
-/* Initialization */
-void wxbUtils::Init() {
-   inited = true;
-}
-
-/* Reset state */
-void wxbUtils::Reset() {
-   inited = false;
-}
-
-/* Parse a table in tableParser */
-wxbTableParser* wxbUtils::CreateAndWaitForParser(wxString cmd) {
-   wxbTableParser* tableParser = new wxbTableParser();
-
-   wxbMainFrame::GetInstance()->Send(cmd);
-
-   //time_t base = wxDateTime::Now().GetTicks();
-   while (!tableParser->hasFinished()) {
-      //innerThread->Yield();
-      wxTheApp->Yield(true);
-      wxbUtils::MilliSleep(100);
-      //if (base+15 < wxDateTime::Now().GetTicks()) break;
-   }
-   return tableParser;
-}
-
-/* Run a command, and waits until prompt result is fully received,
- * if keepresults is true, returns a valid pointer to a wxbPromptParser
- * containing the data. */
-wxbPromptParser* wxbUtils::WaitForPrompt(wxString cmd, bool keepresults) {
-   wxbPromptParser* promptParser = new wxbPromptParser();
-   
-   wxbMainFrame::GetInstance()->Send(cmd);
-    
-   //time_t base = wxDateTime::Now().GetTicks();
-   while (!promptParser->hasFinished()) {
-      //innerThread->Yield();
-      wxTheApp->Yield(true);
-      wxbUtils::MilliSleep(100);
-      //if (base+15 < wxDateTime::Now().GetTicks()) break;
-   }
-     
-   if (keepresults) {
-      return promptParser;
-   }
-   else {
-      delete promptParser;
-      return NULL;
-   }  
-}
-
-/* Run a command, and waits until result is fully received. */
-wxbDataTokenizer* wxbUtils::WaitForEnd(wxString cmd, bool keepresults, bool linebyline) {
-   wxbDataTokenizer* datatokenizer = new wxbDataTokenizer(linebyline);
-
-   wxbMainFrame::GetInstance()->Send(cmd);
-   
-   //wxbMainFrame::GetInstance()->Print("(<WFE)", CS_DEBUG);
-   
-   //time_t base = wxDateTime::Now().GetTicks();
-   while (!datatokenizer->hasFinished()) {
-      //innerThread->Yield();
-      wxTheApp->Yield(true);
-      wxbUtils::MilliSleep(100);
-      //if (base+15 < wxDateTime::Now().GetTicks()) break;
-   }
-   
-   //wxbMainFrame::GetInstance()->Print("(>WFE)", CS_DEBUG);
-   
-   if (keepresults) {
-      return datatokenizer;
-   }
-   else {
-      delete datatokenizer;
-      return NULL;
-   }
-}
-
-
-/* Creates a new wxbDataParser, and register it in wxbMainFrame */
-wxbDataParser::wxbDataParser(bool lineanalysis) {
-   wxbMainFrame::GetInstance()->Register(this);
-   this->lineanalysis = lineanalysis;
-//   buffer = "";
-}
-
-/* Destroy a wxbDataParser, and unregister it in wxbMainFrame */
-wxbDataParser::~wxbDataParser() {
-   wxbMainFrame::GetInstance()->Unregister(this);
-}
-
-/*
- * Receives director information, forwarded by wxbMainFrame, and sends it
- * line by line to the virtual function Analyse.
- */
-bool wxbDataParser::Print(wxString str, int status) {
-   bool ret = false;
-   if (lineanalysis) {
-      bool allnewline = true;
-      for (unsigned int i = 0; i < str.Length(); i++) {
-         if (!(allnewline = (str.GetChar(i) == '\n')))
-            break;
-      }
-   
-      if (allnewline) {
-         ret = Analyse(buffer << wxT("\n"), CS_DATA);
-         buffer = wxT("");
-         for (unsigned int i = 1; i < str.Length(); i++) {
-            ret = Analyse(wxT("\n"), status);
-         }
-      }
-      else {
-         wxStringTokenizer tkz(str, wxT("\n"), 
-            (wxStringTokenizerMode)(wxTOKEN_RET_DELIMS | wxTOKEN_RET_EMPTY | wxTOKEN_RET_EMPTY_ALL));
-   
-         while ( tkz.HasMoreTokens() ) {
-            buffer << tkz.GetNextToken();
-            if (buffer.Length() != 0) {
-               if ((buffer.GetChar(buffer.Length()-1) == '\n') ||
-                  (buffer.GetChar(buffer.Length()-1) == '\r')) {
-                  ret = Analyse(buffer, status);
-                  buffer = wxT("");
-               }
-            }
-         }
-      }
-   
-      if (buffer == wxT("$ ")) { // Restore console
-         ret = Analyse(buffer, status);
-         buffer = wxT("");
-      }
-   
-      if (status != CS_DATA) {
-         if (buffer.Length() != 0) {
-            ret = Analyse(buffer, CS_DATA);
-         }
-         buffer = wxT("");
-         ret = Analyse(wxT(""), status);
-      }
-   }
-   else {
-      ret = Analyse(wxString(str), status);
-   }
-   return ret;
-}
-
-/* Creates a new wxbDataTokenizer */
-wxbDataTokenizer::wxbDataTokenizer(bool linebyline): wxbDataParser(linebyline), wxArrayString() {
-   finished = false;
-}
-
-/* Destroy a wxbDataTokenizer */
-wxbDataTokenizer::~wxbDataTokenizer() {
-
-}
-
-/*
- *   Receives director information, forwarded by wxbMainFrame.
- */
-bool wxbDataTokenizer::Analyse(wxString str, int status) {
-   finished = ((status == CS_END) || (status == CS_PROMPT) || (status == CS_DISCONNECTED));
-
-   if (str != wxT("")) {
-      Add(str);
-   }
-   return false;
-}
-
-/* Returns true if the last signal received was an end signal, 
- * indicating that no more data is available */
-bool wxbDataTokenizer::hasFinished() {
-   return finished;
-}
-
-/* Creates a new wxbDataTokenizer */
-wxbPromptParser::wxbPromptParser(): wxbDataParser(false) {
-   finished = false;
-   prompt = false;
-   introStr = wxT("");
-   choices = NULL;
-   numerical = false;
-   questionStr = wxT("");
-}
-
-/* Destroy a wxbDataTokenizer */
-wxbPromptParser::~wxbPromptParser() {
-   if (choices) {
-      delete choices;
-   }
-}
-
-/*
- *   Receives director information, forwarded by wxbMainFrame.
- */
-bool wxbPromptParser::Analyse(wxString str, int status) {
-   if (status == CS_DATA) {
-      if (finished || prompt) { /* New question */
-         finished = false;
-         prompt = false;
-         if (choices) {
-            delete choices;
-            choices = NULL;
-            numerical = false;
-         }
-         questionStr = wxT("");
-         introStr = wxT("");
-      }
-      int i;
-      long num;
-      
-      if (((i = str.Find(wxT(": "))) > 0) && (str.Mid(0, i).Trim(false).ToLong(&num))) { /* List element */
-         if (!choices) {
-            choices = new wxArrayString();
-            choices->Add(wxT("")); /* index 0 is never used by multiple choice questions */
-            numerical = true;
-         }
-         
-         if ((long)choices->GetCount() != num) { /* new choice has begun */
-            delete choices;
-            choices = new wxArrayString();
-            choices->Add(wxT(""), num); /* fill until this number */
-            numerical = true;
-         }
-         
-         choices->Add(str.Mid(i+2).RemoveLast());
-      }
-      else if (!choices) { /* Introduction, no list received yet */
-         introStr << questionStr;
-         questionStr = wxString(str);
-      }
-      else { /* List receveived, get the question now */
-         introStr << questionStr;
-         questionStr = wxString(str);
-      }
-   }
-   else {
-      finished = ((status == CS_PROMPT) || (status == CS_END) || (status == CS_DISCONNECTED));
-      if (prompt = ((status == CS_PROMPT) && (questionStr != wxT("$ ")))) { // && (str.Find(": ") == str.Length())
-         if (introStr.Last() == '\n') {
-            introStr.RemoveLast();
-         }
-         if ((introStr != wxT("")) && (questionStr == wxT(""))) {
-            questionStr = introStr;
-            introStr = wxT("");
-         }
-         
-         if ((!choices) && (questionStr.Find(wxT("(yes/mod/no)")) > -1)) {
-            choices = new wxArrayString();
-            choices->Add(wxT("yes"));
-            choices->Add(wxT("mod"));
-            choices->Add(wxT("no"));
-            numerical = false;
-         }
-         return true;
-      }
-      else { /* ended or (dis)connected */
-         if (choices) {
-            delete choices;
-            choices = NULL;
-            numerical = false;
-         }
-         questionStr = wxT("");
-         introStr = wxT("");
-      }
-   }
-   return false;
-}
-
-/* Returns true if the last signal received was an prompt signal, 
- * indicating that the answer must be sent */
-bool wxbPromptParser::hasFinished() {
-   return finished;
-}
-
-/* Returns true if the last message received is a prompt message */
-bool wxbPromptParser::isPrompt() {
-   return prompt;
-}
-
-/* Returns multiple choice question's introduction */
-wxString wxbPromptParser::getIntroString() {
-   return introStr;
-}
-
-/* Returns question string */
-wxString wxbPromptParser::getQuestionString() {
-   return questionStr;
-}
-
-/* Returns a wxArrayString containing the indexed choices we have
- * to answer the question, or NULL if this question is not a multiple
- * choice one. */
-wxArrayString* wxbPromptParser::getChoices() {
-   return choices;
-}
-
-/* Returns true if the expected answer to the choice list is a number,
- * false if it is a string (for example yes/mod/no). */
-bool wxbPromptParser::isNumericalChoice() {
-   return numerical;
-}
diff --git a/src/wx-console/wxbutils.h b/src/wx-console/wxbutils.h
deleted file mode 100644
index 9443b46..0000000
--- a/src/wx-console/wxbutils.h
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
-   Bacula® - The Network Backup Solution
-
-   Copyright (C) 2004-2008 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.
-*/
-/*
- *
- *   wxbDataParser, class that receives and analyses data
- *   wxbPanel, main frame's notebook panels
- *
- *    Nicolas Boichat, April-July 2004
- *
- *   Version $Id$
- */
-
-#ifndef WXBUTILS_H
-#define WXBUTILS_H
-
-#include "wx/wxprec.h"
-
-#ifndef WX_PRECOMP
-   #include "wx/wx.h"
-#endif
-
-class wxbTableParser;
-class wxbDataParser;
-class wxbDataTokenizer;
-class wxbPromptParser;
-
-/*
- *  General functions
- */
-class wxbUtils
-{
-   public:
-      /* Initialization */
-      static void Init();
-
-      /* Reset state */
-      static void Reset();
-
-      /* Parse a table in tableParser */
-      static wxbTableParser* CreateAndWaitForParser(wxString cmd);
-
-      /* Run a command, and waits until result is fully received,
-       * if keepresults is true, returns a valid pointer to a wxbDataTokenizer
-       * containing the data. */
-      static wxbDataTokenizer* WaitForEnd(wxString cmd, bool keepresults = false, bool linebyline = true);
-
-      /* Run a command, and waits until prompt result is fully received,
-       * if keepresults is true, returns a valid pointer to a wxbPromptParser
-       * containing the data. */
-      static wxbPromptParser* WaitForPrompt(wxString cmd, bool keepresults = false);
-      
-      /* Sleeps during milliseconds (wrapper for wxUsleep (2.4) or wxMilliSleep (2.6)) */
-      static void MilliSleep(unsigned long milliseconds);
-      
-      static wxString ConvertToPrintable(wxString& str);
-      
-   private:
-      static bool inited;
-};
-
-/*
- *  abstract class that can receive director information.
- */
-class wxbDataParser
-{
-   public:
-      /* Creates a new wxbDataParser, and register it in wxbMainFrame
-       * lineanalysis : indicate if date is to be analysed line by line (true)
-       * or packet by packet (false).
-       */
-      wxbDataParser(bool lineanalysis);
-
-      /* Destroy a wxbDataParser, and unregister it in wxbMainFrame */
-      virtual ~wxbDataParser();
-
-      /*
-       * Receives director information, forwarded by wxbMainFrame, and sends it
-       * line by line to the virtual function Analyse.
-       *
-       * Returns true if status == CS_PROMPT and the message has been parsed
-       * correctly.
-       */
-      bool Print(wxString str, int status);
-
-      /*
-       *   Receives data to analyse.
-       */
-      virtual bool Analyse(wxString str, int status) = 0;
-   private:
-      bool lineanalysis;
-      wxString buffer;
-};
-
-/*
- *  abstract panel that can receive director information.
- */
-class wxbPanel : public wxPanel
-{
-   public:
-      wxbPanel(wxWindow* parent) : wxPanel(parent) {}
-
-      /*
-       *   Tab title in the notebook.
-       */
-      virtual wxString GetTitle() = 0;
-
-      /*
-       *   Enable or disable this panel
-       */
-      virtual void EnablePanel(bool enable = true) = 0;
-};
-
-/*
- *  Receives director information, and splits it by line.
- *
- * datatokenizer[0] retrieves first line
- */
-class wxbDataTokenizer: public wxbDataParser, public wxArrayString
-{
-   public:
-      /* Creates a new wxbDataTokenizer */
-      wxbDataTokenizer(bool linebyline);
-
-      /* Destroy a wxbDataTokenizer */
-      virtual ~wxbDataTokenizer();
-
-      /*
-       *   Receives data to analyse.
-       */
-      virtual bool Analyse(wxString str, int status);
-
-      /* Returns true if the last signal received was an end signal,
-       * indicating that no more data is available */
-      bool hasFinished();
-
-   private:
-      bool finished;
-};
-
-/*
- *  Receives director information, and check if the last messages are questions.
- */
-class wxbPromptParser: public wxbDataParser
-{
-   public:
-      /* Creates a new wxbDataTokenizer */
-      wxbPromptParser();
-
-      /* Destroy a wxbDataTokenizer */
-      virtual ~wxbPromptParser();
-
-      /*
-       *   Receives data to analyse.
-       */
-      virtual bool Analyse(wxString str, int status);
-
-      /* Returns true if the last signal received was an prompt signal,
-       * or an end signal */
-      bool hasFinished();
-
-      /* Returns true if the last message received is a prompt message */
-      bool isPrompt();
-
-      /* Returns multiple choice question's introduction */
-      wxString getIntroString();
-
-      /* Returns question string */
-      wxString getQuestionString();
-
-      /* Returns a wxArrayString containing the indexed choices we have
-       * to answer the question, or NULL if this question is not a multiple
-       * choice one. */
-      wxArrayString* getChoices();
-
-      /* Returns true if the expected answer to the choice list is a number,
-       * false if it is a string (for example yes/mod/no). */
-      bool isNumericalChoice();
-
-   private:
-      bool finished;
-      bool prompt;
-      bool numerical;
-      wxString introStr;
-      wxArrayString* choices;
-      wxString questionStr;
-};
-
-#endif // WXBUTILS_H
diff --git a/src/wx-console/wxwin16x16.xpm b/src/wx-console/wxwin16x16.xpm
deleted file mode 100644
index 9964e69..0000000
--- a/src/wx-console/wxwin16x16.xpm
+++ /dev/null
@@ -1,25 +0,0 @@
-/* XPM */
-static char *wxwin16x16_xpm[] = {
-"16 16 6 1",
-" 	c None",
-".	c #000000",
-"X	c #000084",
-"o	c #FFFFFF",
-"O	c #FFFF00",
-"+	c #FF0000",
-"                ",
-"                ",
-"                ",
-"    .......     ",
-"    .XXXXX.     ",
-"    .oXXXX.     ",
-"    .oXXX.......",
-".....oXXX.OOOOO.",
-".+++.XXXX.oOOOO.",
-".o++......oOOOO.",
-".o++++.  .oOOOO.",
-".o++++.  .OOOOO.",
-".+++++.  .......",
-".......         ",
-"                ",
-"                "};
diff --git a/unaccepted-projects b/unaccepted-projects
deleted file mode 100644
index f9757d4..0000000
--- a/unaccepted-projects
+++ /dev/null
@@ -1,32 +0,0 @@
-  
-  This file contains Feature Requests that either were not
-  accepted because the project manager veto'ed them (not Bacula
-  philosophy, impossible to implement, ...) or that did not have
-  adequate support by the Bacula community.
-
-Item 1:   Allow Jobdefs to inherit from other Jobdefs
-   Origin: Darien Hager <darien at etelos.com>
-   Date:   10 April 2007
-   Status: Initial Request
-
-   What:   Allow JobDefs to inherit/modify settings from other JobDefs
-
-   Why:    Makes setting up jobs much easier for situations with many  
-clients doing similar work
-
-   Notes:
-
-Example: User has several JobDefs which all need Messages=standard,  
-Type=Backup, and settings for "Rerun Failed Levels" and "Max * Time".  
-This feature would allow those "common" properties to be within a  
-single JobDef which each child JobDefs inherits from, before the  
-final Job definitions sets further specifics such as Client.
-
-Currently the documentation leaves open the possibility that this can  
-be done, but tests with Bacula 2.0.1 suggest that JobDefs entries  
-cannot themselves have a JobDefs property.
-
-Technical caveat: Should probably include rudimentary checks against  
-a cyclic relationship, such as a limit to the number of allowed layers.
-
-See also: "Job Groups or hierarchy" Feb 6 2007

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